From b37eac632faf7f26b6f947d8b6792db8828fba6f Mon Sep 17 00:00:00 2001
From: xiangpei <xiangpei@timesnew.cn>
Date: 星期三, 26 二月 2025 21:57:47 +0800
Subject: [PATCH] 工程管理

---
 business/src/main/java/com/ycl/service/impl/ProjectProcessServiceImpl.java |   95 +++++++++++++++++++++++++++++++++++++----------
 1 files changed, 74 insertions(+), 21 deletions(-)

diff --git a/business/src/main/java/com/ycl/service/impl/ProjectProcessServiceImpl.java b/business/src/main/java/com/ycl/service/impl/ProjectProcessServiceImpl.java
index 72b764c..b8bd222 100644
--- a/business/src/main/java/com/ycl/service/impl/ProjectProcessServiceImpl.java
+++ b/business/src/main/java/com/ycl/service/impl/ProjectProcessServiceImpl.java
@@ -89,6 +89,7 @@
     private final ISysDeptService deptService;
     private final ProcessLogService processLogService;
     private final ISysDictTypeService dictTypeService;
+    private final ProcessConfigInfoService processConfigInfoService;
 
     /**
      * 鍒嗛〉鏌ヨ
@@ -139,7 +140,7 @@
             }
         }
         ProjectInfo project = new LambdaQueryChainWrapper<>(projectInfoMapper)
-                .select(ProjectInfo::getCreateBy)
+                .select(ProjectInfo::getProjectOwnerUnit)
                 .eq(ProjectInfo::getId, form.getProjectId())
                 .one();
         if (Objects.isNull(project)) {
@@ -202,8 +203,6 @@
         SysUser sysUser = SecurityUtils.getLoginUser().getUser();
         identityService.setAuthenticatedUserId(sysUser.getUserId().toString());
         variables.put(ProcessConstants.PROCESS_INITIATOR, sysUser.getUserId());
-        //娴嬭瘯瀹圭己
-        variables.put("miss", true);
         // 灏嗚椤圭洰鐨勭敵璇蜂汉锛堜笟涓绘柟锛変綔涓烘祦绋嬩腑鏌愪簺鐜妭鐨勫鐞嗕汉
         variables.put(ProcessConstants.DATA_LAUNCH, "dept:" + createBy);
         ProcessInstance processInstance = runtimeService.startProcessInstanceById(processDefId, projectId + "", variables);
@@ -305,9 +304,15 @@
                 .active()
                 .includeProcessVariables()
                 .orderByTaskCreateTime().desc();
-
+        List<String> insIds = baseMapper.getNormalInsIds();
+        if (CollectionUtils.isEmpty(insIds)) {
+            result.data(new ArrayList<>()).total(0L);
+            return;
+        } else {
+            taskQuery.processInstanceIdIn(insIds);
+        }
         if (StringUtils.isNotBlank(taskName)) {
-            taskQuery.processDefinitionNameLike(taskName);
+            taskQuery.taskNameLike(taskName);
         }
         if (!SecurityUtils.getLoginUser().getUser().isAdmin()) {
             taskQuery
@@ -406,13 +411,48 @@
             if (processLogService.taskIsHangup(task.getId(), task.getProcessInstanceId())) {
                 taskVO.setTaskStatus(TaskStatusEnum.HANGUP);
             }
+
+            // 璁$畻鍔炵悊鏃堕棿
+            ProcessCoding processCoding = processCodingService.getByTaskId(task.getId());
+            if (processCoding != null) {
+                if (StringUtils.isNotBlank(processCoding.getOvertime())) {
+                    Long overtime = getTime(processCoding.getOvertime());
+                    long durationTime = 0l;
+                    if (Objects.nonNull(processCoding.getStartTaskTime())) {
+                        durationTime = ((new Date()).getTime() - processCoding.getStartTaskTime().getTime()) / 1000;
+                    } else {
+                        taskVO.setRemainingTime("鏈缃姙鐞嗘椂闂�");
+                    }
+                    if (overtime > durationTime) {
+                        taskVO.setRemainingTime((overtime - durationTime) / 3600 + "灏忔椂");
+                    } else {
+                        taskVO.setRemainingTime("宸茶秴鏃�");
+                    }
+                } else {
+                    taskVO.setRemainingTime("-");
+                }
+            }
             this.distinctVo(taskVO);
             vos.add(taskVO);
         }
-        if (vos.size() < pageSize) {
-            result.total(vos.size());
-        }
         result.put("taskList", vos);
+    }
+
+    private Long getTime(String timeStr) {
+        Long time = null;
+        if (StringUtils.isNotBlank(timeStr)) {
+            String[] timeArr = timeStr.split("-");
+            // 瑙f瀽澶╂暟鍜屽皬鏃舵暟
+            int days = Integer.parseInt(timeArr[0]);
+            int hours = 0;
+            if (timeArr.length > 1) {
+                hours = Integer.parseInt(timeArr[1]);
+            }
+            time = (days * 24L + hours) * 3600L;
+//            //鍒�-绉�
+//            time= (days * 60L) + hours;
+        }
+        return time;
     }
 
     @Override
@@ -606,7 +646,7 @@
         jsonData.setAfterHandlerIds(afterHandlerIds);
         jsonData.setAfterHandlerType(form.getPeopleType());
         // 鍙戝竷杞姙浜嬩欢
-        publisher.publishEvent(new TaskLogEvent(this, null,SecurityUtils.getUserId(), form.getProjectId(), form.getProcessInsId(), task.getId(), task.getName(),ProcessLogEventTypeEnum.DELEGATE, jsonData));
+        publisher.publishEvent(new TaskLogEvent(this, null, SecurityUtils.getUserId(), form.getProjectId(), form.getProcessInsId(), task.getId(), task.getName(), ProcessLogEventTypeEnum.DELEGATE, jsonData));
 
         return Result.ok("杞姙鎴愬姛");
     }
@@ -617,7 +657,7 @@
         Task task = taskService.createTaskQuery().taskId(form.getTaskId()).processInstanceId(form.getProcessInsId()).singleResult();
         if (Objects.nonNull(task)) {
             // 娣诲姞璺宠繃鏃ュ織
-            publisher.publishEvent(new TaskLogEvent(this, null,SecurityUtils.getUserId(), form.getProjectId(), form.getProcessInsId(), form.getTaskId(), task.getName(),ProcessLogEventTypeEnum.JUMP, new JumpData(form.getDesc())));
+            publisher.publishEvent(new TaskLogEvent(this, null, SecurityUtils.getUserId(), form.getProjectId(), form.getProcessInsId(), form.getTaskId(), task.getName(), ProcessLogEventTypeEnum.JUMP, new JumpData(form.getDesc())));
             // 鏌ュ嚭璇ヤ换鍔$粦瀹氱殑琛ㄥ崟
 
             Map<String, Object> data = new HashMap<>(1);
@@ -661,7 +701,7 @@
         }
         dataList.add(jsonData);
         //娣诲姞鐫e姙鏃ュ織
-        publisher.publishEvent(new TaskLogEvent(this, processLog.getId(), processLog.getUserId(), form.getProjectId(), form.getProcessInsId(), form.getTaskId(), task.getName(),ProcessLogEventTypeEnum.SUPERVISE, dataList));
+        publisher.publishEvent(new TaskLogEvent(this, processLog.getId(), processLog.getUserId(), form.getProjectId(), form.getProcessInsId(), form.getTaskId(), task.getName(), ProcessLogEventTypeEnum.SUPERVISE, dataList));
         return Result.ok("鎿嶄綔鎴愬姛");
     }
 
@@ -691,7 +731,7 @@
                 task.getName(),
                 ProcessLogEventTypeEnum.HANGUP,
                 new HangupData(form.getReason())
-                ));
+        ));
         return Result.ok("鎿嶄綔鎴愬姛");
     }
 
@@ -747,11 +787,11 @@
                 newV.put(task.getTaskDefinitionKey() + "&" + key, form.getVariables().get(key));
                 //瀛楀吀閲屾湁灏辨斁鍏ユ祦绋嬪彉閲忎腑
                 if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(dictList) && dictList.contains(key)) {
-                    processVariables.put(key,form.getVariables().get(key));
+                    processVariables.put(key, form.getVariables().get(key));
                 }
             }
         }
-        if( !processVariables.isEmpty() ) {
+        if (!processVariables.isEmpty()) {
             taskService.setVariables(form.getTaskId(), processVariables);
         }
 
@@ -788,7 +828,7 @@
                 .desc();
 
         if (StringUtils.isNotBlank(taskName)) {
-            taskQuery.processDefinitionNameLike(taskName);
+            taskQuery.taskNameLike(taskName);
         }
         result.total(taskQuery.count());
         List<Task> taskList = taskQuery.listPage(pageSize * (pageNum - 1), pageSize);
@@ -880,7 +920,7 @@
                         SysUser sysUser = sysUserService.selectUserById(Long.parseLong(userTask.getAssignee()));
                         if (Objects.nonNull(sysUser)) {
                             handlerIds.add(sysUser.getUserId());
-                            handlerNames.add(sysUser.getNickName());
+                            handlerNames.add(this.getUserShowName(sysUser));
                             if (Objects.nonNull(sysUser.getDept())) {
                                 handlerUnitIds.add(sysUser.getDept().getDeptId());
                                 handlerUnitNames.add(sysUser.getDept().getDeptName());
@@ -928,7 +968,7 @@
                     SysUser handlerUser = sysUserService.selectUserById(handlerUserId);
                     if (Objects.nonNull(handlerUser)) {
                         handlerIds.add(handlerUserId);
-                        handlerNames.add(handlerUser.getNickName());
+                        handlerNames.add(this.getUserShowName(handlerUser));
                         vo.setActualHandlerUserId(historicTasks.get(0).getAssignee());
                         vo.setActualHandlerUserName(handlerUser.getNickName());
                     }
@@ -962,6 +1002,9 @@
      */
     private List<CustomerTaskVO> getFinishedProcessTaskInfo(List<UserTask> userTasks, String processInsId, String processDefId) {
         HistoricProcessInstance hisProcess = historyService.createHistoricProcessInstanceQuery().processInstanceId(processInsId).singleResult();
+        if (Objects.isNull(hisProcess)) {
+            return new ArrayList<>();
+        }
         List<CustomerTaskVO> vos = userTasks.stream().map(userTask -> {
             CustomerTaskVO vo = new CustomerTaskVO();
             vo.setProcessInsId(hisProcess.getId());
@@ -1058,7 +1101,7 @@
                 SysUser sysUser = sysUserService.selectUserById(Long.parseLong(identityLink.getUserId()));
                 if (Objects.nonNull(sysUser)) {
                     taskVO.getHandlerId().add(sysUser.getUserId());
-                    taskVO.getHandlerName().add(sysUser.getNickName());
+                    taskVO.getHandlerName().add(this.getUserShowName(sysUser));
                     if (Objects.nonNull(sysUser.getDept())) {
                         taskVO.getHandlerUnitId().add(sysUser.getDept().getDeptId());
                         taskVO.getHandlerUnitName().add(sysUser.getDept().getDeptName());
@@ -1246,9 +1289,9 @@
                 SysUser handlerUser = sysUserService.selectUserById(handlerUserId);
                 if (Objects.nonNull(handlerUser)) {
                     vo.getHandlerId().add(handlerUserId);
-                    vo.getHandlerName().add(handlerUser.getNickName());
+                    vo.getHandlerName().add(this.getUserShowName(handlerUser));
                     vo.setActualHandlerUserId(hisTask.getAssignee());
-                    vo.setActualHandlerUserName(handlerUser.getNickName());
+                    vo.setActualHandlerUserName(this.getUserShowName(handlerUser));
                 }
                 vo.setTaskDefinitionKey(hisTask.getTaskDefinitionKey());
                 this.setPromoterAndHandler(vo, hisTask.getIdentityLinks());
@@ -1259,6 +1302,16 @@
         }).collect(Collectors.toList());
         result.data(vos);
         return vos;
+    }
+
+    /**
+     * 鐢ㄦ埛鍚嶇О鍚庨潰璺熺數璇濆彿鐮�
+     *
+     * @param user
+     * @return
+     */
+    private String getUserShowName(SysUser user) {
+        return user.getNickName() + (StringUtils.isNotBlank(user.getPhonenumber()) ? "(" + user.getPhonenumber() + ")" : "");
     }
 
     /**
@@ -1835,7 +1888,7 @@
                 return user.getUserId() + "";
             }).collect(Collectors.joining("銆�")));
             taskVO.setPromoterName(userList.stream().map(user -> {
-                return user.getNickName();
+                return this.getUserShowName(user);
             }).collect(Collectors.joining("銆�")));
             taskVO.setPromoterUnitId(userList.stream().filter(user -> Objects.nonNull(user.getDept())).map(user -> {
                 return user.getDept().getDeptId() + "";

--
Gitblit v1.8.0