Ver Fonte

feat: 查询关联积分包的可分配积分值-改为新的方法

lixuesong há 1 ano atrás
pai
commit
156d9ed5d4

+ 7 - 7
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/controller/WmDeptTaskController.java

@@ -15,9 +15,9 @@ import com.qunzhixinxi.hnqz.admin.entity.vo.WmTaskVO;
 import com.qunzhixinxi.hnqz.admin.enums.DelEnum;
 import com.qunzhixinxi.hnqz.admin.enums.EnableEnum;
 import com.qunzhixinxi.hnqz.admin.enums.ReportEnum;
-import com.qunzhixinxi.hnqz.admin.mapper.WmScorePackageMapper;
 import com.qunzhixinxi.hnqz.admin.service.SysUserService;
 import com.qunzhixinxi.hnqz.admin.service.WmDeptTaskService;
+import com.qunzhixinxi.hnqz.admin.service.WmScorePackageService;
 import com.qunzhixinxi.hnqz.admin.service.WmTaskService;
 import com.qunzhixinxi.hnqz.admin.service.WmTaskTypeService;
 import com.qunzhixinxi.hnqz.common.core.util.R;
@@ -37,6 +37,7 @@ import java.util.List;
 import java.util.Map;
 import java.util.Set;
 import java.util.stream.Collectors;
+import java.util.stream.Stream;
 
 /**
  * 企业任务控制器
@@ -49,7 +50,7 @@ import java.util.stream.Collectors;
 @AllArgsConstructor
 public class WmDeptTaskController {
 
-    private final WmScorePackageMapper wmScorePackageMapper;
+    private final WmScorePackageService wmScorePackageService;
     private final WmDeptTaskService wmDeptTaskService;
     private final WmTaskService wmTaskService;
     private final WmTaskTypeService wmTaskTypeService;
@@ -64,10 +65,7 @@ public class WmDeptTaskController {
     public R<?> listRelatedEntPackage() {
         Integer deptId = SecurityUtils.getUser().getDeptId();
 
-        WmScorePackage queryPackage = new WmScorePackage();
-        queryPackage.setDeptId(String.valueOf(deptId));
-        queryPackage.setTypeid("0,1,2");
-        List<WmScorePackage> packageList = wmScorePackageMapper.getScorePackagekfpjf(queryPackage);
+        List<WmScorePackage> packageList = wmScorePackageService.getScorePackagekfpjf(deptId, new String[]{"0", "1", "2"});
 
         List<Map<String, String>> results = new ArrayList<>();
         if (CollUtil.isNotEmpty(packageList)) {
@@ -75,6 +73,8 @@ public class WmDeptTaskController {
                 Map<String, String> result = new HashMap<>();
                 result.put("id", wmScorePackage.getId());
                 result.put("scorePackageName", wmScorePackage.getScorePackageName());
+                result.put("score", String.valueOf(wmScorePackage.getScore()));
+                result.put("kfpjf", String.valueOf(wmScorePackage.getKfpjf()));
                 results.add(result);
             });
         }
@@ -104,7 +104,7 @@ public class WmDeptTaskController {
         if (StrUtil.isNotBlank(scorePackageName)) {
             queryWrapper.like(WmScorePackage::getScorePackageName, scorePackageName);
         }
-        List<WmScorePackage> relatedPackages = wmScorePackageMapper.selectList(queryWrapper);
+        List<WmScorePackage> relatedPackages = wmScorePackageService.list(queryWrapper);
         if (CollUtil.isEmpty(relatedPackages)) {
             return R.ok(page);
         }

+ 9 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/WmScorePackageService.java

@@ -212,4 +212,13 @@ public interface WmScorePackageService extends IService<WmScorePackage> {
 	 * @return {@link Boolean} 结果
 	 */
 	Boolean terminatePackageForDept(String packageId, UpmsType.TerminatePackageType terminatePackageType);
+
+	/**
+	 * 获取指定企业下积分包的可分配积分值
+	 *
+	 * @param deptId 企业id
+	 * @param typeIds 企业类型
+	 * @return 结果
+	 */
+	List<WmScorePackage> getScorePackagekfpjf(Integer deptId, String[] typeIds);
 }

+ 3 - 3
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/impl/WmDeptTaskServiceImpl.java

@@ -72,7 +72,7 @@ public class WmDeptTaskServiceImpl implements WmDeptTaskService {
             throw new RuntimeException("当前企业未开启该任务!");
         }
         String[] taskTypeIds = rules.get(0).getRule().getTaskTypeIds();
-        if (!ArrayUtil.contains(taskTypeIds, "61")) {
+        if (!ArrayUtil.contains(taskTypeIds, taskTypeId)) {
             throw new RuntimeException("当前企业未开启该任务!");
         }
 
@@ -151,7 +151,7 @@ public class WmDeptTaskServiceImpl implements WmDeptTaskService {
             throw new RuntimeException("当前企业未开启该任务!");
         }
         String[] taskTypeIds = rules.get(0).getRule().getTaskTypeIds();
-        if (!ArrayUtil.contains(taskTypeIds, "61")) {
+        if (!ArrayUtil.contains(taskTypeIds, taskTypeId)) {
             throw new RuntimeException("当前企业未开启该任务!");
         }
 
@@ -242,7 +242,7 @@ public class WmDeptTaskServiceImpl implements WmDeptTaskService {
             throw new RuntimeException("当前企业未开启该任务!");
         }
         String[] taskTypeIds = rules.get(0).getRule().getTaskTypeIds();
-        if (!ArrayUtil.contains(taskTypeIds, "61")) {
+        if (!ArrayUtil.contains(taskTypeIds, taskTypeId)) {
             throw new RuntimeException("当前企业未开启该任务!");
         }
 

+ 68 - 5
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/impl/WmScorePackageServiceImpl.java

@@ -542,11 +542,11 @@ public class WmScorePackageServiceImpl extends ServiceImpl<WmScorePackageMapper,
 			relatedService = sysDeptMapper.selectById(wmScorePackage.getRelatedService());
 		}
 		//查询分配给当前用户机构的积分包,deptid为当前用户,而且typeid=1或2
-		String deptId = SecurityUtils.getUser().getDeptId() + "";
-		wmScorePackage.setDeptId(deptId);
-		wmScorePackage.setTypeid("0,1,2");
-		wmScorePackage.setSendPackageDeptId(wmScorePackage.getRelatedService());
-		List<WmScorePackage> packageList = wmScorePackageMapper.getScorePackagekfpjf(wmScorePackage);
+		Integer deptId = SecurityUtils.getUser().getDeptId();
+//		wmScorePackage.setDeptId(deptId);
+//		wmScorePackage.setTypeid("0,1,2");
+//		wmScorePackage.setSendPackageDeptId(wmScorePackage.getRelatedService());
+		List<WmScorePackage> packageList = this.getScorePackagekfpjf(deptId, new String[]{"0", "1", "2"});
 
 		for (WmScorePackage wmScorePackage1 : packageList) {
 			List<WmScoreTaskType> taskTypelist = wmScoreTaskTypeMapper.getScoreTaskTypeByScoreId(wmScorePackage1.getId());
@@ -3173,4 +3173,67 @@ public class WmScorePackageServiceImpl extends ServiceImpl<WmScorePackageMapper,
 		newRechargeRecord.setCreateTime(now);
 		sysDeptRechargeRecordMapper.insert(newRechargeRecord);
 	}
+
+	/**
+	 * 获取指定企业下积分包的可分配积分值
+	 *
+	 * @param deptId  企业id
+	 * @param typeIds 企业类型
+	 * @return 结果
+	 */
+	@Override
+	public List<WmScorePackage> getScorePackagekfpjf(Integer deptId, String[] typeIds) {
+		// 查询企业下的积分包
+		List<WmScorePackage> packages = this.list(Wrappers.<WmScorePackage>lambdaQuery()
+				.eq(WmScorePackage::getDeptId, deptId)
+				.in(WmScorePackage::getTypeid, typeIds)
+				.eq(WmScorePackage::getDelFlag, DelEnum.NOT_DEL.val())
+				.eq(WmScorePackage::getEnableFlag, EnableEnum.ENABLE.val())
+				.eq(WmScorePackage::getOldPackage, "0"));
+
+		if (CollUtil.isNotEmpty(packages)) {
+			// 查询积分包的子包
+			Set<String> packageIdSet = packages.stream().map(WmScorePackage::getId).collect(Collectors.toSet());
+			List<WmScorePackage> subPackages = this.list(Wrappers.<WmScorePackage>lambdaQuery()
+					.in(WmScorePackage::getRelationScoreId, packageIdSet)
+					.eq(WmScorePackage::getDelFlag, DelEnum.NOT_DEL.val())
+					.eq(WmScorePackage::getEnableFlag, EnableEnum.ENABLE.val()));
+			Map<String, Integer> relatedPackageScoresMap = new HashMap<>();
+			if (CollUtil.isNotEmpty(subPackages)) {
+				// 已分配的积分
+				relatedPackageScoresMap = subPackages.stream()
+						.collect(Collectors.groupingBy(WmScorePackage::getRelationScoreId, Collectors.summingInt(WmScorePackage::getScore)));
+			}
+
+			// 查询积分包的任务
+			List<WmTask> tasks = wmTaskMapper.selectList(Wrappers.<WmTask>lambdaQuery()
+					.in(WmTask::getScorePackageId, packageIdSet)
+                    .eq(WmTask::getDelFlag, DelEnum.NOT_DEL.val())
+                    .eq(WmTask::getEnableFlag, EnableEnum.ENABLE.val())
+					.eq(WmTask::getTaskStatus, TaskStatusEnum.APPROVED.val()));
+			Map<String, Integer> relatedTaskScoresMap = new HashMap<>();
+			if (CollUtil.isNotEmpty(tasks)) {
+                // 已分配的积分
+                relatedTaskScoresMap = tasks.stream()
+                        .collect(Collectors.groupingBy(WmTask::getScorePackageId, Collectors.summingInt(WmTask::getScore)));
+            }
+
+			Map<String, Integer> finalRelatedPackageScoresMap = relatedPackageScoresMap;
+			Map<String, Integer> finalRelatedTaskScoresMap = relatedTaskScoresMap;
+			packages.forEach(pkg -> {
+				String packageId = pkg.getId();
+				// 统计可分配积分值
+                Integer kfpjf = pkg.getKfpjf();
+                if (finalRelatedPackageScoresMap.containsKey(packageId)) {
+                    kfpjf += finalRelatedPackageScoresMap.get(packageId);
+                }
+                if (finalRelatedTaskScoresMap.containsKey(packageId)) {
+                    kfpjf += finalRelatedTaskScoresMap.get(packageId);
+                }
+                pkg.setKfpjf(kfpjf);
+			});
+		}
+
+		return packages;
+	}
 }