Min 1 年之前
父節點
當前提交
e509a6293c

+ 35 - 4
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/TaskController.java

@@ -108,7 +108,7 @@ public class TaskController {
         //当前用户
         User user = userMapper.selectById(userId);
         HttpRespMsg msg = new HttpRespMsg();
-
+        WxCorpInfo wxCorpInfo = wxCorpInfoService.getOne(new QueryWrapper<WxCorpInfo>().eq("company_id", user.getCompanyId()));
         //新建的任务,需要设置创建人,创建时间
         if (task.getId() == null) {
             task.setCreateDate(LocalDate.now());
@@ -217,6 +217,7 @@ public class TaskController {
         boolean needRecalculateProgress = false;
         List<String> msgRecepientList = new ArrayList<>();
         List<Task> needReOrderList = new ArrayList<>();
+        StringBuilder taskCommentString=new StringBuilder();
         //新建的任务需要计算排序
         if (task.getId() == null) {
             isNew = true;
@@ -256,15 +257,47 @@ public class TaskController {
             //计算需要移除的执行人
             List<Integer> ids = oldExeList.stream().filter(old->!task.getExecutorList().stream().anyMatch(newT->newT.getId()!=null&&newT.getId().equals(old.getId())))
                         .map(TaskExecutor::getId).collect(Collectors.toList());
+            List<TaskExecutor> hasRemoveExecutor = oldExeList.stream().filter(old -> !task.getExecutorList().stream().anyMatch(newT -> newT.getId() != null && newT.getId().equals(old.getId()))).collect(Collectors.toList());
+            if(hasRemoveExecutor.size()>0){
+                if(wxCorpInfo!=null&&wxCorpInfo.getSaasSyncContact()==1){
+                    taskCommentString.append(",移除了执行人["+hasRemoveExecutor.stream().map(h->"$userName="+h.getExecutorName()+"$").collect(Collectors.joining(","))+"]");
+                }else {
+                    taskCommentString.append(",移除了执行人["+hasRemoveExecutor.stream().map(TaskExecutor::getExecutorName).collect(Collectors.joining(","))+"]");
+                }
+
+            }
             if (ids.size() > 0) {
                 taskExecutorService.removeByIds(ids);
             }
             if (task.getExecutorList().size() > 0) {
                 task.getExecutorList().forEach(exe->exe.setTaskId(task.getId()));
+                //之前就存在的执行人数据
+                List<TaskExecutor> oldHas = task.getExecutorList().stream().filter(t -> t.getId() != null).collect(Collectors.toList());
                 taskExecutorService.saveOrUpdateBatch(task.getExecutorList());
                 //新增的执行人
                 msgRecepientList = task.getExecutorList().stream().filter(newT->!StringUtils.isEmpty(newT.getExecutorId()) && !oldExeList.stream().anyMatch(old->newT.getExecutorId().equals(old.getExecutorId())))
                         .map(TaskExecutor::getExecutorId).collect(Collectors.toList());
+                List<TaskExecutor> newAddExecutor = task.getExecutorList().stream().filter(newT -> !StringUtils.isEmpty(newT.getExecutorId()) && !oldExeList.stream().anyMatch(old -> newT.getExecutorId().equals(old.getExecutorId()))).collect(Collectors.toList());
+                if(newAddExecutor.size()>0){
+                    if(wxCorpInfo!=null&&wxCorpInfo.getSaasSyncContact()==1){
+                        taskCommentString.append(",新增了执行人["+newAddExecutor.stream().map(h->"$userName="+h.getExecutorName()+"$").collect(Collectors.joining(","))+"]");
+                    }else {
+                        taskCommentString.append(",新增了执行人["+newAddExecutor.stream().map(TaskExecutor::getExecutorName).collect(Collectors.joining(","))+"]");
+                    }
+                }
+                for (TaskExecutor oldHa : oldHas) {
+                    Optional<TaskExecutor> first = oldExeList.stream().filter(o -> o.getId().equals(oldHa.getId())).findFirst();
+                    if(first.isPresent()){
+                        if(!oldHa.getPlanHours().equals(first.get().getPlanHours())){
+                            if(wxCorpInfo!=null&&wxCorpInfo.getSaasSyncContact()==1){
+                                taskCommentString.append(",修改了执行人["+"$userName"+oldHa.getExecutorName()+"$"+"]计划工时为"+oldHa.getPlanHours()+"小时");
+                            }else {
+                                taskCommentString.append(",修改了执行人["+oldHa.getExecutorName()+"]计划工时为"+oldHa.getPlanHours()+"小时");
+                            }
+                        }
+                    }
+                }
+
             }
             if(task.getStartDate()==null){
                 taskMapper.updateStartDate(task.getId());
@@ -303,7 +336,7 @@ public class TaskController {
         comment.setUserName(user.getName());
         comment.setType(isNew?1:2);
         //comment.setContent(user.getName()+(isNew?"创建":"编辑")+"了任务");
-        comment.setContent(user.getName()+(isNew?MessageUtils.message("entry.create"):MessageUtils.message("entry.editedTask"))+MessageUtils.message("entry.task"));
+        comment.setContent(user.getName()+(isNew?MessageUtils.message("entry.create"):MessageUtils.message("entry.editedTask"))+MessageUtils.message("entry.task")+(isNew?"":taskCommentString.toString()));
         taskCommentMapper.insert(comment);
 
         //需要重新计算项目进度
@@ -328,8 +361,6 @@ public class TaskController {
                     companyDingdingService.sendNewTaskMsg(dingding, recpUserList.stream().map(User::getDingdingUserid).collect(Collectors.joining(",")),
                             task.getName(), endStr);
                 } else if (recpUserList.get(0).getCorpwxUserid() != null) {
-                    //企业微信用户
-                    WxCorpInfo wxCorpInfo = wxCorpInfoService.getOne(new QueryWrapper<WxCorpInfo>().eq("company_id", user.getCompanyId()));
                     String corpUid = recpUserList.stream().map(User::getCorpwxUserid).distinct().collect(Collectors.joining("|"));
                     JSONObject json=new JSONObject();
                     JSONArray dataJson=new JSONArray();