Bladeren bron

fake logic; hard to really implement w/o table refactor due to query perf concern

dengjia 2 weken geleden
bovenliggende
commit
2531e15c88

+ 33 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/controller/task/WmTaskController.java

@@ -20,7 +20,9 @@ import com.qunzhixinxi.hnqz.admin.api.dto.SysCheckChainNodeCheckHistoryDTO;
 import com.qunzhixinxi.hnqz.admin.api.dto.WmTaskDTO;
 import com.qunzhixinxi.hnqz.admin.api.entity.SysDept;
 import com.qunzhixinxi.hnqz.admin.api.entity.SysFile;
+import com.qunzhixinxi.hnqz.admin.api.entity.SysNotice;
 import com.qunzhixinxi.hnqz.admin.api.entity.SysUser;
+import com.qunzhixinxi.hnqz.admin.api.entity.SysUserRole;
 import com.qunzhixinxi.hnqz.admin.api.entity.WmReportOpt;
 import com.qunzhixinxi.hnqz.admin.config.UpmsConfig;
 import com.qunzhixinxi.hnqz.admin.api.entity.AuditEntity;
@@ -44,6 +46,8 @@ import com.qunzhixinxi.hnqz.admin.manager.SysCheckChainManager;
 import com.qunzhixinxi.hnqz.admin.mapper.WmTaskMapper;
 import com.qunzhixinxi.hnqz.admin.service.SysDeptService;
 import com.qunzhixinxi.hnqz.admin.service.SysFileService;
+import com.qunzhixinxi.hnqz.admin.service.SysNoticeService;
+import com.qunzhixinxi.hnqz.admin.service.SysUserRoleService;
 import com.qunzhixinxi.hnqz.admin.service.SysUserService;
 import com.qunzhixinxi.hnqz.admin.service.WmDaAgentService;
 import com.qunzhixinxi.hnqz.admin.service.WmDaDistributionService;
@@ -141,6 +145,8 @@ public class WmTaskController {
     private final RedisTemplate<String, String> redisTemplate;
     private final UpmsConfig upmsConfig;
     private final SysCheckChainManager checkChainManager;
+    private final SysNoticeService noticeService;
+    private final SysUserRoleService userRoleService;
 
     /**
      * 分页查询
@@ -693,6 +699,33 @@ public class WmTaskController {
             if ("1".equals(wmScorePackage.getPackageFinishStatus())) {
                 wmScorePackage.setPackageAuditStatus("1");
             }
+            if (wmScorePackage.getRelationScoreId() != null) {
+                Long taskScoreSum = wmTaskService.list(Wrappers.<WmTask>lambdaQuery()
+                    .eq(WmTask::getScorePackageId, wmScorePackage.getRelationScoreId())
+                    .eq(WmTask::getTaskStatus, "3")
+                    .eq(WmTask::getDelFlag, "0"))
+                    .stream().mapToLong(WmTask::getScore).sum();
+                if (taskScoreSum / 9 > wmScorePackage.getScore() / 10) {
+                    List<Integer> userIds = userRoleService.list(Wrappers.<SysUserRole>lambdaQuery().eq(SysUserRole::getRoleId, 4)) // 区域管理员
+                        .stream().mapToInt(SysUserRole::getUserId).boxed().collect(Collectors.toList());
+                    WmScorePackage area2csoPackage = wmScorePackageService.getById(wmScorePackage.getRelationScoreId());
+                    SysUser user = sysUserService.getOne(Wrappers.<SysUser>lambdaQuery()
+                        .eq(SysUser::getDeptId, area2csoPackage.getSendPackageDeptId())
+                        .in(SysUser::getUserId, userIds)
+                    );
+
+                    if (user != null) {
+                        SysNotice notice = new SysNotice();
+                        notice.setTitle(String.format("【%s】进度已达90%", wmScorePackage.getScorePackageName()));
+                        notice.setContent(String.format("总积分【%d】;已通过任务积分【%d】。", wmScorePackage.getScore(), taskScoreSum));
+                        notice.setUserId(user.getUserId());
+                        notice.setReadFlag(false);
+                        notice.setCreateBy("admin");
+                        notice.setCreateTime(LocalDateTime.now());
+                        noticeService.save(notice);
+                    }
+                }
+            }
         }
 
         return R.ok(wmScorePackageService.updateById(wmScorePackage));