From f20fad8125774e487e133e909b323b43bd11db24 Mon Sep 17 00:00:00 2001
From: zxl <763096477@qq.com>
Date: 星期一, 03 三月 2025 20:40:15 +0800
Subject: [PATCH] Merge branch 'master' into dev

---
 business/src/main/java/com/ycl/domain/vo/IndexCustomerTaskVO.java          |    2 
 business/src/main/resources/mapper/ProjectProcessMapper.xml                |   10 ++++-
 business/src/main/java/com/ycl/controller/HiddenAdminController.java       |    2 
 business/src/main/java/com/ycl/domain/vo/ProjectEngineeringVO.java         |   17 ++++++++
 business/src/main/java/com/ycl/service/impl/ProjectProcessServiceImpl.java |   52 ++++++++++++++++++--------
 business/src/main/java/com/ycl/service/impl/FlowTaskServiceImpl.java       |   36 +++++++++--------
 6 files changed, 81 insertions(+), 38 deletions(-)

diff --git a/business/src/main/java/com/ycl/controller/HiddenAdminController.java b/business/src/main/java/com/ycl/controller/HiddenAdminController.java
index eab2ef2..ffd4d08 100644
--- a/business/src/main/java/com/ycl/controller/HiddenAdminController.java
+++ b/business/src/main/java/com/ycl/controller/HiddenAdminController.java
@@ -70,7 +70,7 @@
 
     @GetMapping("/page")
     @ApiOperation(value = "鍒嗛〉", notes = "鍒嗛〉")
-    @PreAuthorize("@ss.hasPermi('hiddenAdmin:page')")
+//    @PreAuthorize("@ss.hasPermi('hiddenAdmin:page')")
     public Result page(HiddenAdminQuery query) {
         return hiddenAdminService.page(query);
     }
diff --git a/business/src/main/java/com/ycl/domain/vo/IndexCustomerTaskVO.java b/business/src/main/java/com/ycl/domain/vo/IndexCustomerTaskVO.java
index 1cf1825..49ded56 100644
--- a/business/src/main/java/com/ycl/domain/vo/IndexCustomerTaskVO.java
+++ b/business/src/main/java/com/ycl/domain/vo/IndexCustomerTaskVO.java
@@ -19,7 +19,7 @@
     /**
      * 椤圭洰id
      */
-    private Long projectId;
+    private String projectId;
 
     /**
      * 椤圭洰鍚嶇О
diff --git a/business/src/main/java/com/ycl/domain/vo/ProjectEngineeringVO.java b/business/src/main/java/com/ycl/domain/vo/ProjectEngineeringVO.java
index 059d654..e5cf83d 100644
--- a/business/src/main/java/com/ycl/domain/vo/ProjectEngineeringVO.java
+++ b/business/src/main/java/com/ycl/domain/vo/ProjectEngineeringVO.java
@@ -35,6 +35,21 @@
     @ApiModelProperty("宸ョ▼鍚嶇О")
     private String projectName;
 
+    @ApiModelProperty("娴佺▼瀹炰緥id")
+    private String processInsId;
+
+    @ApiModelProperty("娴佺▼瀹氫箟id")
+    private String processDefId;
+
+    @ApiModelProperty("鍙戝竷id")
+    private String deployId;
+
+    @ApiModelProperty("娴佺▼鍚嶇О")
+    private String flowableProcessName;
+
+    @ApiModelProperty("娴佺▼鏄惁鎸傝捣/鏆傚仠")
+    private boolean suspended;
+
     /** 椤圭洰鎺ㄨ繘绫诲瀷 */
     @ApiModelProperty("椤圭洰鎺ㄨ繘绫诲瀷")
     private String projectType;
@@ -77,7 +92,7 @@
     private String unitName;
 
     /** 宸ョ▼鍒楄〃 */
-    @ApiModelProperty("宸ョ▼鍒楄〃")
+    @ApiModelProperty("瀛愬伐绋嬪垪琛�")
     private List<ProjectEngineeringVO> children = new ArrayList<ProjectEngineeringVO>();
 
     public static ProjectEngineeringVO getVoByEntity(@NonNull ProjectEngineering entity, ProjectEngineeringVO vo) {
diff --git a/business/src/main/java/com/ycl/service/impl/FlowTaskServiceImpl.java b/business/src/main/java/com/ycl/service/impl/FlowTaskServiceImpl.java
index 8c3ec5f..fd94884 100644
--- a/business/src/main/java/com/ycl/service/impl/FlowTaskServiceImpl.java
+++ b/business/src/main/java/com/ycl/service/impl/FlowTaskServiceImpl.java
@@ -155,28 +155,18 @@
             return AjaxResult.error("椤圭洰娴佺▼鏈粦瀹�");
         }
 
-        Map<String, Object> processVariables = new HashMap<>();
-        //鏌ュ嚭瀛楀吀涓渶瑕佹敞鍏ョ殑瀛楁淇℃伅
+        // 鏌ュ嚭瀛楀吀涓渶瑕佹敞鍏ョ殑瀛楁淇℃伅
         List<String> dictList = sysDictDService.selectDictDataByType("flow_variables").stream().map(SysDictData::getDictValue).collect(Collectors.toList());
         Map<String, Object> newV = new HashMap<>(2);
         if (!org.springframework.util.CollectionUtils.isEmpty(variables)) {
             for (String key : variables.keySet()) {
                 newV.put(task.getTaskDefinitionKey() + "&" + key, variables.get(key));
-                //瀛楀吀閲屾湁灏辨斁鍏ユ祦绋嬪彉閲忎腑
+                // 瀛楀吀閲屾湁灏变笉鍋氬鐞�
                 if (!CollectionUtils.isEmpty(dictList) && dictList.contains(key)) {
-                    if ("money".equals(key)) {
-                        // 涓囧厓杞厓
-                        Object w = variables.get(key);
-                        BigDecimal y = new BigDecimal(w.toString()).multiply(new BigDecimal(10000));
-                        processVariables.put(key, y);
-                    } else {
-                        processVariables.put(key,variables.get(key));
-                    }
+                    newV.put(key,variables.get(key));
                 }
             }
         }
-        //娣诲姞娴佺▼鍙橀噺
-        if(!processVariables.isEmpty()) taskService.setVariables(taskId,processVariables);
         taskService.addComment(taskId, task.getProcessInstanceId(), FlowComment.SUBMIT.getType(), "瀹屾垚鎻愪氦");
         if (DelegationState.PENDING.equals(task.getDelegationState())) {
             taskService.resolveTask(taskId, newV);
@@ -1282,8 +1272,14 @@
             if (node.getCurrent()) {
                 return Boolean.TRUE;
             }
-            HistoricTaskInstance beforeTask = historyService.createHistoricTaskInstanceQuery().processInstanceId(finalProcessInsId).finished().taskDefinitionKey(node.getBeforeNodeDefId()).singleResult();
-            return Objects.nonNull(beforeTask);
+            List<HistoricTaskInstance> beforeTasks = historyService.createHistoricTaskInstanceQuery()
+                    .processInstanceId(finalProcessInsId)
+                    .finished()
+                    .taskDefinitionKey(node.getBeforeNodeDefId())
+                    .orderByTaskCreateTime()
+                    .desc()
+                    .list();
+            return CollectionUtils.isNotEmpty(beforeTasks) && Objects.nonNull(beforeTasks.get(0));
         }).collect(Collectors.toList());
         List<DoFormDetailVO> vos = beforeNodes.stream().map(node -> {
             if (node.getCurrent()) {
@@ -1354,8 +1350,14 @@
                 if (node.getCurrent()) {
                     return Boolean.TRUE;
                 }
-                HistoricTaskInstance beforeTask = historyService.createHistoricTaskInstanceQuery().processInstanceId(task.getProcessInstanceId()).finished().taskDefinitionKey(node.getBeforeNodeDefId()).singleResult();
-                return Objects.nonNull(beforeTask);
+                List<HistoricTaskInstance> beforeTaskList = historyService.createHistoricTaskInstanceQuery()
+                        .processInstanceId(task.getProcessInstanceId())
+                        .finished()
+                        .taskDefinitionKey(node.getBeforeNodeDefId())
+                        .orderByTaskCreateTime()
+                        .desc()
+                        .list();
+                return CollectionUtils.isNotEmpty(beforeTaskList) && Objects.nonNull(beforeTaskList.get(0));
             }).collect(Collectors.toList());
             List<DoFormDetailVO> vos = dataList.stream().map(node -> {
                 if (node.getCurrent()) {
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 61a8123..d7c41ac 100644
--- a/business/src/main/java/com/ycl/service/impl/ProjectProcessServiceImpl.java
+++ b/business/src/main/java/com/ycl/service/impl/ProjectProcessServiceImpl.java
@@ -19,9 +19,7 @@
 import com.ycl.domain.entity.*;
 import com.ycl.domain.form.*;
 import com.ycl.domain.json.*;
-import com.ycl.domain.vo.CustomerTaskVO;
-import com.ycl.domain.vo.IndexCustomerTaskVO;
-import com.ycl.domain.vo.ProjectProcessDetailVO;
+import com.ycl.domain.vo.*;
 import com.ycl.event.event.TaskLogEvent;
 import com.ycl.mapper.ProjectEngineeringMapper;
 import com.ycl.mapper.ProjectInfoMapper;
@@ -29,7 +27,6 @@
 import com.ycl.service.*;
 import com.ycl.common.base.Result;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.ycl.domain.vo.ProjectProcessVO;
 import com.ycl.domain.query.ProjectProcessQuery;
 import com.ycl.service.common.TaskCommonService;
 import com.ycl.system.service.ISysDeptService;
@@ -105,9 +102,20 @@
         IPage<ProjectProcessVO> page = PageUtil.getPage(query, ProjectProcessVO.class);
         baseMapper.getPage(query, page);
         for (ProjectProcessVO vo : page.getRecords()) {
-            vo.setChildren(TreeUtil.treeForProjectEng(baseMapper.getEngineeringList(vo.getId())));
+            List<ProjectEngineeringVO> childList = baseMapper.getEngineeringList(vo.getId());
+            childList.stream().forEach(child -> {
+                if (StringUtils.isNotBlank(child.getProcessDefId())) {
+                    ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery().processDefinitionId(child.getProcessDefId()).singleResult();
+                    if (Objects.nonNull(processDefinition)) {
+                        child.setSuspended(processDefinition.isSuspended());
+                        child.setFlowableProcessName(processDefinition.getName() + "(v" + processDefinition.getVersion() + ")");
+                        child.setDeployId(processDefinition.getDeploymentId());
+                    }
+                }
+            });
+            vo.setChildren(TreeUtil.treeForProjectEng(childList));
             vo.setStatus(vo.getProjectStatus());
-            if (Objects.nonNull(vo.getProcessDefId())) {
+            if (StringUtils.isNotBlank(vo.getProcessDefId())) {
                 ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery().processDefinitionId(vo.getProcessDefId()).singleResult();
                 if (Objects.nonNull(processDefinition)) {
                     vo.setSuspended(processDefinition.isSuspended());
@@ -148,7 +156,6 @@
         Long unitId = null;
         if (ProjectProcessTypeEnum.PROJECT.equals(form.getProjectType())) {
             ProjectInfo project = new LambdaQueryChainWrapper<>(projectInfoMapper)
-                    .select(ProjectInfo::getProjectOwnerUnit)
                     .eq(ProjectInfo::getId, form.getProjectId())
                     .one();
             if (Objects.isNull(project)) {
@@ -157,7 +164,6 @@
             unitId = project.getProjectOwnerUnit();
         } else if (ProjectProcessTypeEnum.ENGINEERING.equals(form.getProjectType())) {
             ProjectEngineering projectEngineering = new LambdaQueryChainWrapper<>(projectEngineeringMapper)
-                    .select(ProjectEngineering::getDepartment)
                     .eq(ProjectEngineering::getId, form.getProjectId())
                     .one();
             if (Objects.isNull(projectEngineering)) {
@@ -188,7 +194,6 @@
         Long unitId = null;
         if (ProjectProcessTypeEnum.PROJECT.equals(form.getProjectType())) {
             ProjectInfo project = new LambdaQueryChainWrapper<>(projectInfoMapper)
-                    .select(ProjectInfo::getProjectOwnerUnit)
                     .eq(ProjectInfo::getId, form.getProjectId())
                     .one();
             if (Objects.isNull(project)) {
@@ -197,7 +202,6 @@
             unitId = project.getProjectOwnerUnit();
         } else if (ProjectProcessTypeEnum.ENGINEERING.equals(form.getProjectType())) {
             ProjectEngineering projectEngineering = new LambdaQueryChainWrapper<>(projectEngineeringMapper)
-                    .select(ProjectEngineering::getDepartment)
                     .eq(ProjectEngineering::getId, form.getProjectId())
                     .one();
             if (Objects.isNull(projectEngineering)) {
@@ -243,6 +247,7 @@
         variables.put(ProcessConstants.PROCESS_INITIATOR, sysUser.getUserId());
         // 灏嗚椤圭洰鐨勭敵璇蜂汉锛堜笟涓绘柟锛変綔涓烘祦绋嬩腑鏌愪簺鐜妭鐨勫鐞嗕汉
         variables.put(ProcessConstants.DATA_LAUNCH, "dept:" + createBy);
+        variables.put("a", 1);
         ProcessInstance processInstance = runtimeService.startProcessInstanceById(processDefId, projectId + "", variables);
         return processInstance.getId();
     }
@@ -394,13 +399,28 @@
             taskVO.setTaskDefinitionKey(task.getTaskDefinitionKey());
 
             // 娴佺▼椤圭洰淇℃伅
-            ProjectInfo project = baseMapper.getProjectInfo(task.getProcessInstanceId());
-            if (Objects.nonNull(project)) {
-                taskVO.setProjectId(project.getId());
-                taskVO.setProjectName(project.getProjectName());
-            } else {
-                continue;
+            ProjectProcess projectProcess = new LambdaQueryChainWrapper<>(baseMapper)
+                    .eq(ProjectProcess::getProcessInsId, task.getProcessInstanceId())
+                    .one();
+            String projectId = "";
+            String projectName = "";
+            if (Objects.nonNull(projectProcess)) {
+                if (projectProcess.getProjectType().equals(ProjectProcessTypeEnum.PROJECT)) {
+                    ProjectInfo project = projectInfoMapper.selectById(projectProcess.getProjectId());
+                    if (Objects.nonNull(project)) {
+                        projectId = projectProcess.getProjectId();
+                        projectName = project.getProjectName();
+                    }
+                } else if (projectProcess.getProjectType().equals(ProjectProcessTypeEnum.ENGINEERING)) {
+                    ProjectEngineering engineering = projectEngineeringMapper.selectById(projectProcess.getProjectId());
+                    if (Objects.nonNull(engineering)) {
+                        projectId = projectProcess.getProjectId();
+                        projectName = engineering.getProjectName();
+                    }
+                }
             }
+            taskVO.setProjectId(projectId);
+            taskVO.setProjectName(projectName);
 
             // 娴佺▼鍙戣捣浜轰俊鎭�
             this.setPromoterInfo(taskVO);
diff --git a/business/src/main/resources/mapper/ProjectProcessMapper.xml b/business/src/main/resources/mapper/ProjectProcessMapper.xml
index e4f8bdc..5008916 100644
--- a/business/src/main/resources/mapper/ProjectProcessMapper.xml
+++ b/business/src/main/resources/mapper/ProjectProcessMapper.xml
@@ -77,6 +77,8 @@
         <result column="parent_id" property="parent" />
         <result column="project_owner_unit_name" property="projectOwnerUnitName" />
         <result column="competent_department_name" property="competentDepartmentName" />
+        <result column="process_ins_id" property="processInsId" />
+        <result column="process_def_id" property="processDefId" />
     </resultMap>
 
     <select id="getProjectEngineeringList" parameterType="string" resultMap="EngineeringMap">
@@ -111,9 +113,11 @@
         SELECT
             TT.id, TT.project_info_id, TT.project_name, TT.project_type, TT.investment_amount, TT.status, TT.unit, TT.department, TT.parent_id, TT.year, TT.gmt_create,
             (SELECT  SD.dept_name FROM sys_dept SD WHERE SD.dept_id = TT.unit) AS project_owner_unit_name,
-            (SELECT  SD.dept_name FROM sys_dept SD WHERE SD.dept_id = TT.department) AS competent_department_name
+            (SELECT  SD.dept_name FROM sys_dept SD WHERE SD.dept_id = TT.department) AS competent_department_name,
+            TPP.process_ins_id, TPP.process_def_id
         FROM
             temp_table TT
+                LEFT JOIN t_project_process TPP ON TPP.project_id = TT.id AND TPP.deleted = 0 AND TPP.project_type = 'ENGINEERING'
         ORDER BY
             TT.gmt_create DESC
     </select>
@@ -169,7 +173,9 @@
 
 
     <select id="getNormalInsIds" resultType="string">
-        SELECT TPP.process_ins_id FROM t_project_info TPI INNER JOIN t_project_process TPP ON TPI.id = TPP.project_id AND TPI.deleted = 0
+        SELECT TPP.process_ins_id FROM t_project_info TPI INNER JOIN t_project_process TPP ON TPI.id = TPP.project_id AND TPI.deleted = 0 AND TPP.project_type = 'PROJECT'
+        UNION ALL
+        SELECT TPP.process_ins_id FROM t_project_engineering TPE INNER JOIN t_project_process TPP ON TPE.id = TPP.project_id AND TPE.deleted = 0 AND TPP.project_type = 'ENGINEERING'
     </select>
 
 </mapper>

--
Gitblit v1.8.0