From 4655d854b2652ac138cde15b8acdd7f6e324d812 Mon Sep 17 00:00:00 2001
From: xiangpei <xiangpei@timesnew.cn>
Date: 星期三, 27 十一月 2024 02:38:16 +0800
Subject: [PATCH] 流程信息配置功能、项目关联流程功能

---
 business/src/main/java/com/ycl/service/impl/ProcessConfigInfoServiceImpl.java |   57 +++++++++++++++++++++++++++++++++++++++++++--------------
 1 files changed, 43 insertions(+), 14 deletions(-)

diff --git a/business/src/main/java/com/ycl/service/impl/ProcessConfigInfoServiceImpl.java b/business/src/main/java/com/ycl/service/impl/ProcessConfigInfoServiceImpl.java
index 327e8f2..5d39aaf 100644
--- a/business/src/main/java/com/ycl/service/impl/ProcessConfigInfoServiceImpl.java
+++ b/business/src/main/java/com/ycl/service/impl/ProcessConfigInfoServiceImpl.java
@@ -1,24 +1,28 @@
 package com.ycl.service.impl;
 
-import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
 import com.baomidou.mybatisplus.extension.conditions.update.LambdaUpdateChainWrapper;
+import com.github.pagehelper.PageInfo;
+import com.ycl.domain.dto.FlowProcDefDto;
+import com.ycl.domain.dto.FlowProcDefWithConfigDto;
 import com.ycl.domain.entity.ProcessConfigInfo;
+import com.ycl.domain.entity.SysForm;
+import com.ycl.domain.query.ProcessConfigInfoQuery;
+import com.ycl.mapper.FlowDeployMapper;
 import com.ycl.mapper.ProcessConfigInfoMapper;
+import com.ycl.service.ISysDeployFormService;
 import com.ycl.service.ProcessConfigInfoService;
 import com.ycl.common.base.Result;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ycl.domain.form.ProcessConfigInfoForm;
 import com.ycl.domain.vo.ProcessConfigInfoVO;
-import com.ycl.domain.query.ProcessConfigInfoQuery;
 import org.springframework.stereotype.Service;
 import lombok.RequiredArgsConstructor;
-import com.ycl.framework.utils.PageUtil;
 import org.springframework.beans.BeanUtils;
-import org.springframework.util.Assert;
 
-import java.util.List;
-import java.util.Objects;
+import java.util.*;
+import java.util.function.BinaryOperator;
+import java.util.function.Function;
 import java.util.stream.Collectors;
 
 /**
@@ -32,6 +36,8 @@
 public class ProcessConfigInfoServiceImpl extends ServiceImpl<ProcessConfigInfoMapper, ProcessConfigInfo> implements ProcessConfigInfoService {
 
     private final ProcessConfigInfoMapper processConfigInfoMapper;
+    private final ISysDeployFormService sysDeployFormService;
+    private final FlowDeployMapper flowDeployMapper;
 
     /**
      * 娣诲姞
@@ -42,16 +48,16 @@
     public Result save(ProcessConfigInfoForm form) {
         // 鏍规嵁閮ㄧ讲id鍜岀増鏈彿鏌ヨ鏄惁淇濆瓨杩囷紝鏈夊氨淇敼锛屾病鏈夊氨鏂板
         ProcessConfigInfo entity = new LambdaQueryChainWrapper<>(baseMapper)
-                .eq(ProcessConfigInfo::getDeployId, form.getDeployId())
-                .eq(ProcessConfigInfo::getDeployVersion, form.getDeployVersion())
+                .eq(ProcessConfigInfo::getProcessDefId, form.getProcessDefId())
+                .eq(ProcessConfigInfo::getProcessDefVersion, form.getProcessDefVersion())
                 .one();
         if (Objects.isNull(entity)) {
             entity = ProcessConfigInfoForm.getEntityByForm(form, null);
             baseMapper.insert(entity);
         } else {
             new LambdaUpdateChainWrapper<>(baseMapper)
-                    .eq(ProcessConfigInfo::getDeployId, form.getDeployId())
-                    .eq(ProcessConfigInfo::getDeployVersion, form.getDeployVersion())
+                    .eq(ProcessConfigInfo::getProcessDefId, form.getProcessDefId())
+                    .eq(ProcessConfigInfo::getProcessDefVersion, form.getProcessDefVersion())
                     .set(ProcessConfigInfo::getProjectType, form.getProjectType())
                     .set(ProcessConfigInfo::getFundType, form.getFundType())
                     .set(ProcessConfigInfo::getInvestType, form.getInvestType())
@@ -63,14 +69,13 @@
 
     /**
      * 鏍规嵁id鏌ユ壘
-     * @param deployId
      * @return
      */
     @Override
-    public Result detail(String deployId, Integer deployVersion) {
+    public Result detail(String processDefId, Integer processDefVersion) {
         ProcessConfigInfo entity = new LambdaQueryChainWrapper<>(baseMapper)
-                .eq(ProcessConfigInfo::getDeployId, deployId)
-                .eq(ProcessConfigInfo::getDeployVersion, deployVersion)
+                .eq(ProcessConfigInfo::getProcessDefId, processDefId)
+                .eq(ProcessConfigInfo::getProcessDefVersion, processDefVersion)
                 .one();
         ProcessConfigInfoVO vo = new ProcessConfigInfoVO();
         if (Objects.isNull(entity)) {
@@ -81,4 +86,28 @@
         return Result.ok().data(vo);
     }
 
+
+    @Override
+    public Result list(ProcessConfigInfoQuery query) {
+        List<FlowProcDefWithConfigDto> dataList = flowDeployMapper.selectDeployListWithConfig(query);
+
+        // 鏍规嵁 processDefId 鍒嗙粍锛屽苟鍙栨瘡缁勪腑 鐗堟湰鍙� 鏈�澶х殑閭d竴涓�
+        Map<String, FlowProcDefWithConfigDto> groupedByProcessDefId = dataList.stream()
+                .collect(Collectors.toMap(
+                        FlowProcDefWithConfigDto::getProcessDefId, // keyMapper: 鎻愬彇 processDefId 浣滀负閿�
+                        Function.identity(),                      // valueMapper: 鐩存帴浣跨敤瀵硅薄浣滀负鍊�
+                        BinaryOperator.maxBy(Comparator.comparingInt(FlowProcDefWithConfigDto::getProcessDefVersion)) // mergeFunction: 姣旇緝 processDefVersion锛屽彇鏈�澶х殑
+                ));
+        List<FlowProcDefWithConfigDto> resultList = new ArrayList<>(groupedByProcessDefId.values());
+
+        // 鍔犺浇鎸傝〃鍗�
+        for (FlowProcDefWithConfigDto procDef : resultList) {
+            SysForm sysForm = sysDeployFormService.selectSysDeployFormByDeployId(procDef.getDeploymentId());
+            if (Objects.nonNull(sysForm)) {
+                procDef.setFormName(sysForm.getFormName());
+                procDef.setFormId(sysForm.getFormId());
+            }
+        }
+        return Result.ok().data(resultList);
+    }
 }

--
Gitblit v1.8.0