Selaa lähdekoodia

fix:事务边界

shc 8 kuukautta sitten
vanhempi
commit
577a91fd24

+ 2 - 32
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/controller/ApiController.java

@@ -1395,37 +1395,7 @@ public class ApiController {
         R<?> r = null;
         String locationId = null;
         try {
-            String temp32 = wmTaskContent.getTemp32();
-            if (JSONUtil.isJsonArray(temp32)) {
-                locationId = wmTaskContent.getTemp24();
-                JSONArray array = JSONUtil.parseArray(temp32);
-
-                AtomicInteger score = new AtomicInteger();
-                String finalRegion = region;
-                array.forEach(item -> {
-
-                    cn.hutool.json.JSONObject jsonObject = JSONUtil.parseObj(item);
-
-                    String packageId = jsonObject.getStr("packageId");
-                    wmTaskContent.setTemp32(packageId);
-                    String drugIds = jsonObject.getStr("drugIds");
-                    wmTaskContent.setTemp17(drugIds);
-
-                    R<?> r1 = wmTaskContentService.saveTaskContent(wmTaskContent, ipAddr, finalRegion);
-                    Map<String, String> data = (Map<String, String>) r1.getData();
-                    String s = data.get("score");
-                    if (CharSequenceUtil.isNotBlank(s)) {
-                        score.addAndGet(Integer.parseInt(s));
-                    }
-
-                });
-                Map<String, String> res = new HashMap<>(1);
-                res.put("score", String.valueOf(score.get()));
-                r = R.ok(res);
-
-            } else {
-                r = wmTaskContentService.saveTaskContent(wmTaskContent, ipAddr, region);
-            }
+            r = wmTaskContentService.saveTaskContent(wmTaskContent, ipAddr, region);
         } catch (Exception e) {
             log.error("", e);
             return R.failed(e.getMessage());
@@ -2966,7 +2936,7 @@ public class ApiController {
                 Double distance = wmDaHospital.getDistance();
                 String dis;
 
-                if(distance == null){
+                if (distance == null) {
                     dis = "--m";
                 } else {
                     if (distance < 1.00) {

+ 2 - 1
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/WmTaskContentService.java

@@ -7,6 +7,7 @@ import com.qunzhixinxi.hnqz.admin.api.entity.WmTaskContent;
 import com.qunzhixinxi.hnqz.common.core.util.R;
 
 import java.util.List;
+import java.util.Map;
 
 /**
  * 任务内容表
@@ -22,7 +23,7 @@ public interface WmTaskContentService extends IService<WmTaskContent> {
 	 * @param wmTaskContent 任务内容
 	 * @return 保存结果
 	 */
-	R<?> saveTaskContent(WmTaskContent wmTaskContent, String ip, String region);
+	R<Map<String, String>> saveTaskContent(WmTaskContent wmTaskContent, String ip, String region);
 
 	/**
 	 * 获取任务类型校验规则

+ 250 - 203
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/impl/WmTaskContentServiceImpl.java

@@ -6,6 +6,7 @@ import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.core.util.ArrayUtil;
 import cn.hutool.core.util.StrUtil;
+import cn.hutool.json.JSONArray;
 import cn.hutool.json.JSONUtil;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
@@ -555,269 +556,315 @@ public class WmTaskContentServiceImpl extends ServiceImpl<WmTaskContentMapper, W
      * 53	基础拜访
      * 64	线上学术会议
      *
-     * @param wmTaskContent 任务内容
+     * @param wmTaskContent1 任务内容
      * @return 保存结果
      */
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public R<?> saveTaskContent(WmTaskContent wmTaskContent, String ip, String region) {
+    public R<Map<String, String>> saveTaskContent(WmTaskContent wmTaskContent1, String ip, String region) {
 
-        // 获取积分包
-        WmScorePackage tWmScorePackage = this.checkPackage(wmTaskContent.getTemp32());
+        List<WmTaskContent> contents;
 
-        // 校验
-        HnqzUser user = SecurityUtils.getUser();
-        UserVO sysU = sysUserService.selectUserVoById(user.getId());
+        // 判断积分包参数情况
+        String temp32 = wmTaskContent1.getTemp32();
 
-        // 校验超过60周岁,不能做任务
-        Map<String, String> checkResult = sysUserService.checkSixtyYearsOld(sysU);
-        if (CollUtil.isNotEmpty(checkResult) && checkResult.containsKey("OVER")) {
-            throw new RuntimeException(checkResult.get("OVER"));
-        }
+        if (JSONUtil.isJsonArray(temp32)) {
 
-        List<WmScorePackageStatus> statusList = checkPackageStatus(sysU.getUserId(), tWmScorePackage.getId());
+            // 用于硬拷贝
+            String jsonStr = JSONUtil.toJsonStr(wmTaskContent1);
 
-        // 查询任务类型启用状态
-        List<WmTaskSubmissionPercentRule> rules = wmTaskSubmissionPercentRuleService.list(Wrappers.<WmTaskSubmissionPercentRule>lambdaQuery()
-                .eq(WmTaskSubmissionPercentRule::getDeptId, user.getDeptId())
-                .eq(WmTaskSubmissionPercentRule::getSubCategory, UpmsType.TaskSubCategory2.TASK_TYPE_CONFIG));
-        if (CollUtil.isEmpty(rules)) {
-            throw new RuntimeException("当前企业未开启该任务!");
-        }
-        String[] taskTypeIds = rules.get(0).getRule().getTaskTypeIds();
-        if (!ArrayUtil.contains(taskTypeIds, wmTaskContent.getTemp30())) {
-            throw new RuntimeException("当前企业未开启该任务!");
-        }
 
-        // 检验分值 3W
-        this.limitScore(sysU.getUserId(), sysU.getDeptId(), tWmScorePackage.getPackageType1());
+            JSONArray array = JSONUtil.parseArray(temp32);
+            contents = new ArrayList<>(array.size());
 
-        // 校验任务个数
-        String taskTypeIdStr = wmTaskContent.getTemp30().trim();
+            array.forEach(item -> {
 
-        if (!StrUtil.equalsAny(taskTypeIdStr, "8", "9", "10", "11")) {
-            Integer pId = Integer.valueOf(tWmScorePackage.getId());
-            Map<String, List<WmPackageTaskTypeQty>> qtyList = packageTaskTypeQtyService.listPkgTaskTypeQtyByPkgIds(Collections.singletonList(pId)).stream().collect(Collectors.groupingBy(WmPackageTaskTypeQty::getTaskTypeName));
+                WmTaskContent content = JSONUtil.toBean(jsonStr, WmTaskContent.class);
 
-            Map<String, WmTaskType> taskTypeMap = wmTaskTypeService.list(Wrappers.<WmTaskType>lambdaQuery().lt(WmTaskType::getId, "100")).stream().collect(Collectors.toMap(WmTaskType::getId, Function.identity()));
+                cn.hutool.json.JSONObject jsonObject = JSONUtil.parseObj(item);
 
-            WmTaskType taskType = taskTypeMap.get(taskTypeIdStr);
+                String packageId = jsonObject.getStr("packageId");
+                content.setTemp32(packageId);
+                String drugIds = jsonObject.getStr("drugIds");
+                content.setTemp17(drugIds);
 
-            List<WmPackageTaskTypeQty> packageTaskTypeQtyList = qtyList.get(taskType.getTaskTypeName());
+                contents.add(content);
+            });
 
-            if (CollUtil.isEmpty(packageTaskTypeQtyList)) {
-                throw new RuntimeException("当前积分包拆解结果中该服务类型数量为:0,不能提交!");
-            } else {
 
-                // 获取任务类型比较数据
-                Integer count = wmTaskMapper.selectCount(Wrappers.<WmTask>lambdaQuery()
-                        .in(WmTask::getTaskStatus, 1, 2, 3)
-                        .eq(WmTask::getTaskTypeId, taskTypeIdStr).eq(WmTask::getScorePackageId, pId.toString()));
+        } else {
 
-                Integer qty = packageTaskTypeQtyList.get(0).getQty();
+            contents = Collections.singletonList(wmTaskContent1);
+        }
 
-                if (qty - count <= 0) {
-                    // throw new RuntimeException(tWmScorePackage.getScorePackageName() + "可做数量:" + qty + ",已用:" + count + ",剩余:0,不能提交!");
-                    throw new RuntimeException("【" + tWmScorePackage.getScorePackageName() + "】不含此项服务剩余次数,不能提交!");
-                }
+
+        int total = 0;
+        for (WmTaskContent wmTaskContent : contents) {
+
+            // 获取积分包
+            WmScorePackage tWmScorePackage = this.checkPackage(wmTaskContent.getTemp32());
+
+            // 校验
+            HnqzUser user = SecurityUtils.getUser();
+            UserVO sysU = sysUserService.selectUserVoById(user.getId());
+
+            // 校验超过60周岁,不能做任务
+            Map<String, String> checkResult = sysUserService.checkSixtyYearsOld(sysU);
+            if (CollUtil.isNotEmpty(checkResult) && checkResult.containsKey("OVER")) {
+                throw new RuntimeException(checkResult.get("OVER"));
             }
 
-        }
+            List<WmScorePackageStatus> statusList = checkPackageStatus(sysU.getUserId(), tWmScorePackage.getId());
 
+            // 查询任务类型启用状态
+            List<WmTaskSubmissionPercentRule> rules = wmTaskSubmissionPercentRuleService.list(Wrappers.<WmTaskSubmissionPercentRule>lambdaQuery()
+                    .eq(WmTaskSubmissionPercentRule::getDeptId, user.getDeptId())
+                    .eq(WmTaskSubmissionPercentRule::getSubCategory, UpmsType.TaskSubCategory2.TASK_TYPE_CONFIG));
+            if (CollUtil.isEmpty(rules)) {
+                throw new RuntimeException("当前企业未开启该任务!");
+            }
+            String[] taskTypeIds = rules.get(0).getRule().getTaskTypeIds();
+            if (!ArrayUtil.contains(taskTypeIds, wmTaskContent.getTemp30())) {
+                throw new RuntimeException("当前企业未开启该任务!");
+            }
 
-        // 获取校验规则
-        // List<WmTaskSubmissionRule.SubmissionRule> taskSubmissionRule = this.getTaskSubmissionRule(wmTaskContent.getTemp30(), tWmScorePackage.getRelatedService());
+            // 检验分值 3W
+            this.limitScore(sysU.getUserId(), sysU.getDeptId(), tWmScorePackage.getPackageType1());
 
+            // 校验任务个数
+            String taskTypeIdStr = wmTaskContent.getTemp30().trim();
 
-        // 校验提交数据
-        // this.checkTaskContent(tWmScorePackage, wmTaskContent, sysU.getUserId(), taskSubmissionRule);
+            if (!StrUtil.equalsAny(taskTypeIdStr, "8", "9", "10", "11")) {
+                Integer pId = Integer.valueOf(tWmScorePackage.getId());
+                Map<String, List<WmPackageTaskTypeQty>> qtyList = packageTaskTypeQtyService.listPkgTaskTypeQtyByPkgIds(Collections.singletonList(pId)).stream().collect(Collectors.groupingBy(WmPackageTaskTypeQty::getTaskTypeName));
 
-        Map<String, String> resultMap = new HashMap<>();
-        WmScorePackageStatus scorePackageStatus = statusList.get(0);
-        int score = 0;
-        if (this.save(wmTaskContent)) {
-            if (null != sysU) {
-                WmTask wmTask = new WmTask();
-                wmTask.setRemoteIp(ip);
-                wmTask.setIp2region(region);
-                wmTask.setTaskFrom("1");
-                LocalDateTime localDateTime = LocalDateTime.now();
-                wmTask.setUpdateTime(localDateTime);
-                // 任务提交人
-                wmTask.setTaskUserId(String.valueOf(sysU.getUserId()));
-                // 调研时间
-                wmTask.setLookintoDate(localDateTime);
-                wmTask.setDrugEntId(tWmScorePackage.getDrugEntId());
-                wmTask.setTaskTypeId(wmTaskContent.getTemp30());
-
-                WmTaskType wmTaskType = new WmTaskType();
-                wmTaskType.setRuleId(tWmScorePackage.getRuleId());
-                WmTaskType wmTaskType1 = wmTaskTypeService.getById(wmTaskContent.getTemp30());
-                wmTaskType.setTaskTypeName(wmTaskType1.getTaskTypeName());
-                score = wmTaskTypeService.getWmTaskTypeByEnt(wmTaskType);
-
-                // 校验任务类型是否启用
-                WmTaskType _baseTaskType = wmTaskTypeService.getById(wmTaskContent.getTemp30());
-                WmTaskType queryTaskType = new WmTaskType();
-                queryTaskType.setRuleId(tWmScorePackage.getRuleId());
-                queryTaskType.setTaskTypeName(_baseTaskType.getTaskTypeName());
-                queryTaskType.setDelFlag("0");
-                List<WmTaskType> deptTaskTypes = wmTaskTypeService.list(Wrappers.query(queryTaskType));
-                if (CollUtil.isEmpty(deptTaskTypes)) {
-                    throw new RuntimeException(_baseTaskType.getTaskTypeName() + "任务类型不存在");
-                }
-                if (EnableEnum.DISABLE.val().equals(deptTaskTypes.get(0).getEnableFlag())) {
-                    throw new RuntimeException(_baseTaskType.getTaskTypeName() + "任务类型已停用");
-                }
+                Map<String, WmTaskType> taskTypeMap = wmTaskTypeService.list(Wrappers.<WmTaskType>lambdaQuery().lt(WmTaskType::getId, "100")).stream().collect(Collectors.toMap(WmTaskType::getId, Function.identity()));
 
-                log.info("获取任务得分:{}", score);
+                WmTaskType taskType = taskTypeMap.get(taskTypeIdStr);
 
-                if (score < 0) {
-                    return R.failed("获取任务积分失败");
-                }
-                wmTask.setScore(score);
+                List<WmPackageTaskTypeQty> packageTaskTypeQtyList = qtyList.get(taskType.getTaskTypeName());
 
-                resultMap.put("score", tWmScorePackage.getPackageType1());
-                log.warn("获取积分包ID:{}", tWmScorePackage);
+                if (CollUtil.isEmpty(packageTaskTypeQtyList)) {
+                    throw new RuntimeException("当前积分包拆解结果中该服务类型数量为:0,不能提交!");
+                } else {
 
-                wmTask.setScorePackageId(tWmScorePackage.getId());
-                wmTask.setTaskRuleId(tWmScorePackage.getTaskRuleId());
+                    // 获取任务类型比较数据
+                    Integer count = wmTaskMapper.selectCount(Wrappers.<WmTask>lambdaQuery()
+                            .in(WmTask::getTaskStatus, 1, 2, 3)
+                            .eq(WmTask::getTaskTypeId, taskTypeIdStr).eq(WmTask::getScorePackageId, pId.toString()));
 
-                wmTask.setTaskContentId(String.valueOf(wmTaskContent.getId()));
+                    Integer qty = packageTaskTypeQtyList.get(0).getQty();
 
-                if (HnqzUtils.isZbRole(sysU.getRoleList(), 5)) {
-                    wmTask.setTaskUserType("5");
+                    if (qty - count <= 0) {
+                        // throw new RuntimeException(tWmScorePackage.getScorePackageName() + "可做数量:" + qty + ",已用:" + count + ",剩余:0,不能提交!");
+                        throw new RuntimeException("【" + tWmScorePackage.getScorePackageName() + "】不含此项服务剩余次数,不能提交!");
+                    }
                 }
 
-                wmTask.setCreateTime(localDateTime);
+            }
+
 
-                if (HnqzUtils.isZbRole(sysU.getRoleList(), 6)) {
-                    wmTask.setTaskUserType("6");
-                }
+            // 获取校验规则
+            // List<WmTaskSubmissionRule.SubmissionRule> taskSubmissionRule = this.getTaskSubmissionRule(wmTaskContent.getTemp30(), tWmScorePackage.getRelatedService());
+
+
+            // 校验提交数据
+            // this.checkTaskContent(tWmScorePackage, wmTaskContent, sysU.getUserId(), taskSubmissionRule);
+
+            Map<String, String> resultMap = new HashMap<>();
+            WmScorePackageStatus scorePackageStatus = statusList.get(0);
+            int score = 0;
+            if (this.save(wmTaskContent)) {
+                if (null != sysU) {
+                    WmTask wmTask = new WmTask();
+                    wmTask.setRemoteIp(ip);
+                    wmTask.setIp2region(region);
+                    wmTask.setTaskFrom("1");
+                    LocalDateTime localDateTime = LocalDateTime.now();
+                    wmTask.setUpdateTime(localDateTime);
+                    // 任务提交人
+                    wmTask.setTaskUserId(String.valueOf(sysU.getUserId()));
+                    // 调研时间
+                    wmTask.setLookintoDate(localDateTime);
+                    wmTask.setDrugEntId(tWmScorePackage.getDrugEntId());
+                    wmTask.setTaskTypeId(wmTaskContent.getTemp30());
+
+                    WmTaskType wmTaskType = new WmTaskType();
+                    wmTaskType.setRuleId(tWmScorePackage.getRuleId());
+                    WmTaskType wmTaskType1 = wmTaskTypeService.getById(wmTaskContent.getTemp30());
+                    wmTaskType.setTaskTypeName(wmTaskType1.getTaskTypeName());
+                    score = wmTaskTypeService.getWmTaskTypeByEnt(wmTaskType);
+
+                    // 校验任务类型是否启用
+                    WmTaskType _baseTaskType = wmTaskTypeService.getById(wmTaskContent.getTemp30());
+                    WmTaskType queryTaskType = new WmTaskType();
+                    queryTaskType.setRuleId(tWmScorePackage.getRuleId());
+                    queryTaskType.setTaskTypeName(_baseTaskType.getTaskTypeName());
+                    queryTaskType.setDelFlag("0");
+                    List<WmTaskType> deptTaskTypes = wmTaskTypeService.list(Wrappers.query(queryTaskType));
+                    if (CollUtil.isEmpty(deptTaskTypes)) {
+                        throw new RuntimeException(_baseTaskType.getTaskTypeName() + "任务类型不存在");
+                    }
+                    if (EnableEnum.DISABLE.val().equals(deptTaskTypes.get(0).getEnableFlag())) {
+                        throw new RuntimeException(_baseTaskType.getTaskTypeName() + "任务类型已停用");
+                    }
 
-                wmTask.setDeptId(sysU.getDeptId() + "");
-                wmTask.setSubmitStatus("0");
+                    log.info("获取任务得分:{}", score);
 
-                // 不需要平台管理员审核的直接提交上级审核  taskStatus = 2 已提交 否则 taskStatus = 1 待提交
-                wmTask.setRealFlag("0");
-                wmTask.setTaskStatus("2");
+                    if (score < 0) {
+                        throw new RuntimeException("获取任务积分失败");
+                        // return R.failed("获取任务积分失败");
+                    }
+                    wmTask.setScore(score);
 
-                wmTask.setTaskNumber(taskSequence.nextNo());
-                // 保存任务
-                boolean isSave = wmTaskService.save(wmTask);
+                    resultMap.put("score", tWmScorePackage.getPackageType1());
+                    log.warn("获取积分包ID:{}", tWmScorePackage);
 
+                    wmTask.setScorePackageId(tWmScorePackage.getId());
+                    wmTask.setTaskRuleId(tWmScorePackage.getTaskRuleId());
 
-                // 判断任务是否完成
-                if (isSave) {
-                    WmScorePackage wmScorePackage1 = wmScorePackageService.getById(tWmScorePackage.getId());
-                    if (null != wmScorePackage1) {
-                        WmTask taskQuery = new WmTask();
-                        taskQuery.setScorePackageId(tWmScorePackage.getId());
-                        QueryWrapper<WmTask> taskQueryWrapper = Wrappers.query(taskQuery);
+                    wmTask.setTaskContentId(String.valueOf(wmTaskContent.getId()));
 
-                        // 查询出 审核通过和审核中的任务
-                        taskQueryWrapper.lambda()
-                                .ne(WmTask::getTaskStatus, "4")
-                                .eq(WmTask::getRealFlag, "0");
-//								.ne(WmTask::getRealFlag, "1");
-                        List<WmTask> wmTaskList = wmTaskService.list(taskQueryWrapper);
+                    if (HnqzUtils.isZbRole(sysU.getRoleList(), 5)) {
+                        wmTask.setTaskUserType("5");
+                    }
 
-                        // 判断定量还是定额 1- 定额   2-定量
-                        if (StrUtil.equals(PackageTypeEnum.TYPE1_SCOTE_PACKAGE.val(), wmScorePackage1.getPackageType1())) {
+                    wmTask.setCreateTime(localDateTime);
 
-                            int totalCount = 0;
-                            for (WmTask wmtask : wmTaskList) {
-                                totalCount += wmtask.getScore();
-                            }
+                    if (HnqzUtils.isZbRole(sysU.getRoleList(), 6)) {
+                        wmTask.setTaskUserType("6");
+                    }
 
-                            if (totalCount >= wmScorePackage1.getScore()) {
-                                wmScorePackage1.setTaskAddFlag("0");
-                                scorePackageStatus.setTaskAddFlag("0");
-                                wmScorePackageStatusService.updateById(scorePackageStatus);
-                            }
-                            resultMap.put("type", "1");
-                        } else if (StrUtil.equals(PackageTypeEnum.TYPE1_SCORE_AND_TASK_PACKAGE.val(), wmScorePackage1.getPackageType1())) {
-                            // 多人积分包处理
-                            int totalCount = 0;
-                            for (WmTask wmtask : wmTaskList) {
-                                totalCount += wmtask.getScore();
-                            }
+                    wmTask.setDeptId(sysU.getDeptId() + "");
+                    wmTask.setSubmitStatus("0");
 
-                            if (totalCount >= wmScorePackage1.getScore()) {
-                                wmScorePackage1.setTaskAddFlag("0");
-                                List<WmScorePackageStatus> packageStatusList = wmScorePackageStatusService.list(Wrappers.<WmScorePackageStatus>lambdaQuery()
-                                        .eq(WmScorePackageStatus::getStatus, "2")
-                                        .eq(WmScorePackageStatus::getTaskAddFlag, "1")
-                                        .eq(WmScorePackageStatus::getPackageId, tWmScorePackage.getId()));
-                                if (CollUtil.isNotEmpty(packageStatusList)) {
-                                    packageStatusList.forEach(packageStatus -> {
-                                        WmScorePackageStatus updatePackageStatus = new WmScorePackageStatus();
-                                        updatePackageStatus.setId(packageStatus.getId());
-                                        updatePackageStatus.setTaskAddFlag("0");
-                                        updatePackageStatus.setUpdateTime(LocalDateTime.now());
-                                        wmScorePackageStatusService.updateById(updatePackageStatus);
-                                    });
+                    // 不需要平台管理员审核的直接提交上级审核  taskStatus = 2 已提交 否则 taskStatus = 1 待提交
+                    wmTask.setRealFlag("0");
+                    wmTask.setTaskStatus("2");
+
+                    wmTask.setTaskNumber(taskSequence.nextNo());
+                    // 保存任务
+                    boolean isSave = wmTaskService.save(wmTask);
+
+
+                    // 判断任务是否完成
+                    if (isSave) {
+                        WmScorePackage wmScorePackage1 = wmScorePackageService.getById(tWmScorePackage.getId());
+                        if (null != wmScorePackage1) {
+                            WmTask taskQuery = new WmTask();
+                            taskQuery.setScorePackageId(tWmScorePackage.getId());
+                            QueryWrapper<WmTask> taskQueryWrapper = Wrappers.query(taskQuery);
+
+                            // 查询出 审核通过和审核中的任务
+                            taskQueryWrapper.lambda()
+                                    .ne(WmTask::getTaskStatus, "4")
+                                    .eq(WmTask::getRealFlag, "0");
+//								.ne(WmTask::getRealFlag, "1");
+                            List<WmTask> wmTaskList = wmTaskService.list(taskQueryWrapper);
+
+                            // 判断定量还是定额 1- 定额   2-定量
+                            if (StrUtil.equals(PackageTypeEnum.TYPE1_SCOTE_PACKAGE.val(), wmScorePackage1.getPackageType1())) {
+
+                                int totalCount = 0;
+                                for (WmTask wmtask : wmTaskList) {
+                                    totalCount += wmtask.getScore();
                                 }
-                            }
-                            resultMap.put("type", "1");
-                        } else if ("2".equals(wmScorePackage1.getPackageType1()) || "3".equals(wmScorePackage1.getPackageType1())) {
-                            score = 0;
-
-                            List<WmTask> userTaskList = wmTaskList.stream().filter(item ->
-                                    item.getTaskUserId().equals(sysU.getUserId() + "")).collect(Collectors.toList());
-
-                            if (userTaskList.size() >= scorePackageStatus.getTaskNum()) {
-                                scorePackageStatus.setTaskAddFlag("0");
-                                wmScorePackageStatusService.updateById(scorePackageStatus);
-
-                                // 改变大包状态
-                                WmScorePackageStatus queryAll = new WmScorePackageStatus();
-                                queryAll.setPackageId(tWmScorePackage.getId());
-                                queryAll.setStatus("2");
-                                queryAll.setTaskAddFlag("0");
-                                List<WmScorePackageStatus> statusAll = wmScorePackageStatusService.
-                                        list(Wrappers.query(queryAll));
-                                if (new BigDecimal(wmScorePackage1.getUserNum())
-                                        .compareTo(new BigDecimal(statusAll.size())) <= 0) {
+
+                                if (totalCount >= wmScorePackage1.getScore()) {
                                     wmScorePackage1.setTaskAddFlag("0");
+                                    scorePackageStatus.setTaskAddFlag("0");
+                                    wmScorePackageStatusService.updateById(scorePackageStatus);
+                                }
+                                resultMap.put("type", "1");
+                            } else if (StrUtil.equals(PackageTypeEnum.TYPE1_SCORE_AND_TASK_PACKAGE.val(), wmScorePackage1.getPackageType1())) {
+                                // 多人积分包处理
+                                int totalCount = 0;
+                                for (WmTask wmtask : wmTaskList) {
+                                    totalCount += wmtask.getScore();
+                                }
+
+                                if (totalCount >= wmScorePackage1.getScore()) {
+                                    wmScorePackage1.setTaskAddFlag("0");
+                                    List<WmScorePackageStatus> packageStatusList = wmScorePackageStatusService.list(Wrappers.<WmScorePackageStatus>lambdaQuery()
+                                            .eq(WmScorePackageStatus::getStatus, "2")
+                                            .eq(WmScorePackageStatus::getTaskAddFlag, "1")
+                                            .eq(WmScorePackageStatus::getPackageId, tWmScorePackage.getId()));
+                                    if (CollUtil.isNotEmpty(packageStatusList)) {
+                                        packageStatusList.forEach(packageStatus -> {
+                                            WmScorePackageStatus updatePackageStatus = new WmScorePackageStatus();
+                                            updatePackageStatus.setId(packageStatus.getId());
+                                            updatePackageStatus.setTaskAddFlag("0");
+                                            updatePackageStatus.setUpdateTime(LocalDateTime.now());
+                                            wmScorePackageStatusService.updateById(updatePackageStatus);
+                                        });
+                                    }
+                                }
+                                resultMap.put("type", "1");
+                            } else if ("2".equals(wmScorePackage1.getPackageType1()) || "3".equals(wmScorePackage1.getPackageType1())) {
+                                score = 0;
+
+                                List<WmTask> userTaskList = wmTaskList.stream().filter(item ->
+                                        item.getTaskUserId().equals(sysU.getUserId() + "")).collect(Collectors.toList());
+
+                                if (userTaskList.size() >= scorePackageStatus.getTaskNum()) {
+                                    scorePackageStatus.setTaskAddFlag("0");
+                                    wmScorePackageStatusService.updateById(scorePackageStatus);
+
+                                    // 改变大包状态
+                                    WmScorePackageStatus queryAll = new WmScorePackageStatus();
+                                    queryAll.setPackageId(tWmScorePackage.getId());
+                                    queryAll.setStatus("2");
+                                    queryAll.setTaskAddFlag("0");
+                                    List<WmScorePackageStatus> statusAll = wmScorePackageStatusService.
+                                            list(Wrappers.query(queryAll));
+                                    if (new BigDecimal(wmScorePackage1.getUserNum())
+                                            .compareTo(new BigDecimal(statusAll.size())) <= 0) {
+                                        wmScorePackage1.setTaskAddFlag("0");
+                                    }
                                 }
+
+                                resultMap.put("type", "2");
                             }
 
-                            resultMap.put("type", "2");
+                            wmScorePackage1.setIsConduct("1");
+                            wmScorePackageService.updateById(wmScorePackage1);
+
                         }
 
-                        wmScorePackage1.setIsConduct("1");
-                        wmScorePackageService.updateById(wmScorePackage1);
+                    } else {
+                        throw new RuntimeException("任务保存失败");
+                    }
 
+                    // 保存打卡记录
+                    if ("51".equals(wmTaskContent.getTemp30()) || "52".equals(wmTaskContent.getTemp30()) || "53".equals(wmTaskContent.getTemp30())) {
+                        WmUserSign wmUserSign = new WmUserSign();
+                        wmUserSign.setSignEntType(wmTaskContent.getTemp8());
+                        wmUserSign.setSignEntId(wmTaskContent.getTemp9());
+                        wmUserSign.setSignEntName(wmTaskContent.getTemp10());
+                        wmUserSign.setLatitude(wmTaskContent.getTemp11());
+                        wmUserSign.setLongitude(wmTaskContent.getTemp12());
+                        // wmUserSign.setSignUserid(wmTaskContent.getTemp25());
+                        wmUserSign.setSignUserid(SecurityUtils.getUser().getId().toString());
+                        // wmUserSign.setSignEntName(wmTaskContent.getTemp7());
+
+                        wmUserSign.setSignDate(localDateTime);
+                        wmUserSignMapper.insert(wmUserSign);
                     }
 
-                } else {
-                    return R.failed("任务保存失败");
+                    // 推送任务h5截图
+                    applicationEventPublisher.publishEvent(new TaskInfoImgEvent(wmTask.getId()));
                 }
+            }
 
-                // 保存打卡记录
-                if ("51".equals(wmTaskContent.getTemp30()) || "52".equals(wmTaskContent.getTemp30()) || "53".equals(wmTaskContent.getTemp30())) {
-                    WmUserSign wmUserSign = new WmUserSign();
-                    wmUserSign.setSignEntType(wmTaskContent.getTemp8());
-                    wmUserSign.setSignEntId(wmTaskContent.getTemp9());
-                    wmUserSign.setSignEntName(wmTaskContent.getTemp10());
-                    wmUserSign.setLatitude(wmTaskContent.getTemp11());
-                    wmUserSign.setLongitude(wmTaskContent.getTemp12());
-                    // wmUserSign.setSignUserid(wmTaskContent.getTemp25());
-                    wmUserSign.setSignUserid(SecurityUtils.getUser().getId().toString());
-                    // wmUserSign.setSignEntName(wmTaskContent.getTemp7());
-
-                    wmUserSign.setSignDate(localDateTime);
-                    wmUserSignMapper.insert(wmUserSign);
-                }
+            total += score;
+
+            resultMap.put("score", String.valueOf(score));
 
-                // 推送任务h5截图
-                applicationEventPublisher.publishEvent(new TaskInfoImgEvent(wmTask.getId()));
-            }
         }
 
-        resultMap.put("score", String.valueOf(score));
-        return R.ok(resultMap);
+        Map<String, String> score = new HashMap<>(1);
+        score.put("score", String.valueOf(total));
+        return R.ok(score);
     }