From ae6fd06555845067b72a0b094126c858275a5bd9 Mon Sep 17 00:00:00 2001
From: fuliqi <fuliqi@qq.com>
Date: 星期五, 29 十一月 2024 06:54:04 +0800
Subject: [PATCH] 项目分类查询、异常项目

---
 business/src/main/resources/mapper/ProjectInfoMapper.xml                    |   14 ++++--
 business/src/main/java/com/ycl/domain/entity/ProjectInfo.java               |    6 +-
 business/src/main/java/com/ycl/controller/ProjectInfoController.java        |    1 
 business/src/main/java/com/ycl/domain/vo/ProjectVO.java                     |    2 +
 business/src/main/java/com/ycl/service/impl/ProjectInfoServiceImpl.java     |   23 +++++++++++
 common/src/main/java/com/ycl/common/enums/business/ProjectCategoryEnum.java |   51 +++++++++++++++++++++++++
 business/src/main/java/com/ycl/domain/vo/ProjectInfoVO.java                 |    2 
 business/src/main/java/com/ycl/domain/query/ProjectInfoQuery.java           |    2 +
 8 files changed, 92 insertions(+), 9 deletions(-)

diff --git a/business/src/main/java/com/ycl/controller/ProjectInfoController.java b/business/src/main/java/com/ycl/controller/ProjectInfoController.java
index f66bcc0..768ed26 100644
--- a/business/src/main/java/com/ycl/controller/ProjectInfoController.java
+++ b/business/src/main/java/com/ycl/controller/ProjectInfoController.java
@@ -120,4 +120,5 @@
     ) throws IOException {
         OutputExcelUtils.export(response, "瀵煎叆妯℃澘", "椤圭洰淇℃伅", null, ProjectExcelTemplate.class ,fieldList);
     }
+
 }
diff --git a/business/src/main/java/com/ycl/domain/entity/ProjectInfo.java b/business/src/main/java/com/ycl/domain/entity/ProjectInfo.java
index d5eec5c..2029fa3 100644
--- a/business/src/main/java/com/ycl/domain/entity/ProjectInfo.java
+++ b/business/src/main/java/com/ycl/domain/entity/ProjectInfo.java
@@ -49,9 +49,9 @@
     /** 鎶曡祫绫诲埆锛�0浼佷笟鎶曡祫锛�1鏀垮簻鎶曡祫锛�2澶栧晢鎶曡祫锛�3澧冨鎶曡祫锛� */
     private String investType;
 
-    @TableField("project_phase")
-    /** 椤圭洰闃舵(0鍌ㄥ瑙勫垝闃舵,  1椤圭洰鍓嶆湡闃舵,  2瀹炴柦闃舵,  3绔e伐鎶曠敤闃舵) */
-    private String projectPhase;
+//    @TableField("project_phase")
+//    /** 椤圭洰闃舵(0鍌ㄥ瑙勫垝闃舵,  1椤圭洰鍓嶆湡闃舵,  2瀹炴柦闃舵,  3绔e伐鎶曠敤闃舵) */
+//    private String projectPhase;
 
     @TableField("tag")
     /** 鏍囩 */
diff --git a/business/src/main/java/com/ycl/domain/query/ProjectInfoQuery.java b/business/src/main/java/com/ycl/domain/query/ProjectInfoQuery.java
index 334a8db..d3247c9 100644
--- a/business/src/main/java/com/ycl/domain/query/ProjectInfoQuery.java
+++ b/business/src/main/java/com/ycl/domain/query/ProjectInfoQuery.java
@@ -47,5 +47,7 @@
     private Date projectStartTime;
     @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private Date projectEndTime;
+    //浠庢湁娌℃湁娴佺▼鍒ゆ柇鏄瓨鍌ㄨ繕鏄棭鏈�
+    private String reserveOrPrevious;
 }
 
diff --git a/business/src/main/java/com/ycl/domain/vo/ProjectInfoVO.java b/business/src/main/java/com/ycl/domain/vo/ProjectInfoVO.java
index ee82745..1f73b75 100644
--- a/business/src/main/java/com/ycl/domain/vo/ProjectInfoVO.java
+++ b/business/src/main/java/com/ycl/domain/vo/ProjectInfoVO.java
@@ -159,7 +159,7 @@
 
     @ApiModelProperty("鏂囦欢")
     private List<File> fileList;
-
+    private Long processId;
     private ProjectInvestmentInfoVO projectInvestmentInfo;
     private ProjectInvestmentFundingVO projectInvestmentFunding;
     private ProjectUnitRegistrationInfoVO projectUnitRegistrationInfo;
diff --git a/business/src/main/java/com/ycl/domain/vo/ProjectVO.java b/business/src/main/java/com/ycl/domain/vo/ProjectVO.java
index 82e1bb6..119abd9 100644
--- a/business/src/main/java/com/ycl/domain/vo/ProjectVO.java
+++ b/business/src/main/java/com/ycl/domain/vo/ProjectVO.java
@@ -12,4 +12,6 @@
     private String projectColorCode;
     private List<Long> competentDepartmentList;
     private List<String> managementCentralizationList;
+
+    private Long processId;
 }
diff --git a/business/src/main/java/com/ycl/service/impl/ProjectInfoServiceImpl.java b/business/src/main/java/com/ycl/service/impl/ProjectInfoServiceImpl.java
index 8c29fb9..3adc8f2 100644
--- a/business/src/main/java/com/ycl/service/impl/ProjectInfoServiceImpl.java
+++ b/business/src/main/java/com/ycl/service/impl/ProjectInfoServiceImpl.java
@@ -1,10 +1,12 @@
 package com.ycl.service.impl;
 
+import cn.hutool.core.collection.CollUtil;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ycl.common.base.Result;
 import com.ycl.common.enums.business.FileTypeEnum;
+import com.ycl.common.enums.business.ProjectCategoryEnum;
 import com.ycl.common.utils.CopyUtils;
 import com.ycl.common.utils.DateUtils;
 import com.ycl.common.utils.SecurityUtils;
@@ -140,6 +142,24 @@
         if (query.getProjectEndTime() != null) {
             query.setProjectEndTime(DateUtils.getDayEnd(query.getProjectEndTime()));
         }
+        String projectCategory = query.getProjectCategory();
+        if (ProjectCategoryEnum.RESERVE.getType().equals(projectCategory)) {
+            query.setProjectStatus(ProjectCategoryEnum.RESERVE.getStatus());
+            query.setReserveOrPrevious(ProjectCategoryEnum.RESERVE.getCode());
+        } else if (ProjectCategoryEnum.PREVIOUS.getType().equals(projectCategory)) {
+            query.setProjectStatus(ProjectCategoryEnum.PREVIOUS.getStatus());
+            query.setReserveOrPrevious(ProjectCategoryEnum.PREVIOUS.getCode());
+        } else if (ProjectCategoryEnum.FINISH.getType().equals(projectCategory)) {
+            query.setProjectStatus(ProjectCategoryEnum.FINISH.getStatus());
+        } else if (ProjectCategoryEnum.EXCEPTION.getType().equals(projectCategory)) {
+            //TODO
+            //鍏堟煡鍑哄紓甯告祦绋嬫垨鑰呭紓甯歌繘搴︽垨鑰呭紓甯歌鍒掔殑projectId鍜屽紓甯哥绫�
+            //閫氳繃projectId鏌ュ嚭椤圭洰鏁版嵁
+            //琛ュ厖鐩稿簲鐨勫紓甯告暟鎹紙寮傚父绉嶇被銆佸紓甯告祦绋嬭妭鐐圭瓑锛�
+            List<ProjectVO> list = new ArrayList<>();
+            return Result.ok().data(list).total(0);
+        }
+
         IPage<ProjectInfoVO> page = PageUtil.getPage(query, ProjectInfoVO.class);
         baseMapper.getPage(page, query);
         List<ProjectInfoVO> records = page.getRecords();
@@ -149,6 +169,9 @@
                     vo.setProjectColorCode("green");
             ProjectVO projectVO = new ProjectVO();
             copyToProjectVO(vo,projectVO);
+            //缈昏瘧椤圭洰闃舵
+            String phase = ProjectCategoryEnum.getPhaseByProjectStatus(projectVO.getProjectStatus(), projectVO.getProcessId() != null);
+            projectVO.setProjectPhase(phase);
             list.add(projectVO);
         });
         return Result.ok().data(list).total(page.getTotal());
diff --git a/business/src/main/resources/mapper/ProjectInfoMapper.xml b/business/src/main/resources/mapper/ProjectInfoMapper.xml
index 251f0c0..0da2550 100644
--- a/business/src/main/resources/mapper/ProjectInfoMapper.xml
+++ b/business/src/main/resources/mapper/ProjectInfoMapper.xml
@@ -55,7 +55,7 @@
 
     <select id="getPage" resultMap="resultMap">
         SELECT
-            TPI.*,
+            TPI.*,TPP.process_instance_id as processId,
             TPIF.total_investment  as TPIF_totalInvestment,
             TPIF.principal as TPIF_principal,TPIF.government_investment_total as TPIF_government_investment_total,TPIF.central_investment_total as TPIF_central_investment_total,
             TPIF.central_budget_investment as TPIF_central_budget_investment,TPIF.central_fiscal_investment as TPIF_central_fiscal_investment,
@@ -101,11 +101,9 @@
         LEFT JOIN t_project_investment_info TPII ON TPI.id = TPII.project_id and TPII.deleted = 0
         LEFT JOIN t_project_investment_policy_compliance TPIPC ON TPI.id = TPIPC.project_id and TPIPC.deleted = 0
         LEFT JOIN t_project_unit_registration_info TPURI ON TPI.id = TPURI.project_id and TPURI.deleted = 0
+        LEFT JOIN t_project_process TPP ON TPI.id = TPP.project_id and TPP.deleted = 0
         <where>
             TPI.deleted = 0
-            <if test="query.projectCategory !=null and query.projectCategory!=''">
-                and TPI.project_phase = #{query.projectCategory}
-            </if>
             <if test="query.projectName !=null and query.projectName!=''">
                 and TPI.project_name like concat('%',#{query.projectName},'%')
             </if>
@@ -145,8 +143,14 @@
             <if test="query.projectStartTime !=null and query.projectEndTime !=null">
                 and TPI.create_project_time between #{query.projectStartTime} and #{query.projectEndTime}
             </if>
+            <if test="query.reserveOrPrevious != null and query.reserveOrPrevious == 'reserve'">
+                and TPP.process_instance_id is null
+            </if>
+            <if test="query.reserveOrPrevious != null and query.reserveOrPrevious == 'previous'">
+                and TPP.process_instance_id is not null
+            </if>
         </where>
-        order by gmt_create
+        order by TPI.gmt_create
     </select>
 
 </mapper>
diff --git a/common/src/main/java/com/ycl/common/enums/business/ProjectCategoryEnum.java b/common/src/main/java/com/ycl/common/enums/business/ProjectCategoryEnum.java
new file mode 100644
index 0000000..f152d46
--- /dev/null
+++ b/common/src/main/java/com/ycl/common/enums/business/ProjectCategoryEnum.java
@@ -0,0 +1,51 @@
+package com.ycl.common.enums.business;
+
+import cn.hutool.core.util.ObjectUtil;
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+@Getter
+@AllArgsConstructor
+public enum ProjectCategoryEnum {
+
+    RESERVE("1", "pendding", "鍌ㄥ椤圭洰","reserve","鍌ㄥ瑙勫垝闃舵"),
+    PREVIOUS("2", "pendding","鍓嶆湡椤圭洰","previous","椤圭洰鍓嶆湡闃舵"),
+    IMPLEMENT("3", "working,stop","瀹炴柦椤圭洰","implement","瀹炴柦闃舵"),
+    FINISH("4", "finish","绔e伐椤圭洰","finish","绔e伐鎶曠敤闃舵"),
+    EXCEPTION("5", "","寮傚父椤圭洰","exception","");
+
+
+    private final String type;
+    private final String status;
+    private final String name;
+    private final String code;
+    private  final String desc;
+
+    //鍒ゆ柇浼犲叆鏁版嵁鏄惁瀛樺湪鍥涚椤圭洰鎺ㄨ繘鐘舵��
+    public static boolean isValidType(String type) {
+        for (ProjectCategoryEnum status : ProjectCategoryEnum.values()) {
+            if (status.getDesc().equals(type) && ObjectUtil.notEqual(type,ProjectCategoryEnum.EXCEPTION.getName())) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+    /**
+     * 鑾峰彇椤圭洰闃舵
+     * @param projectStatus
+     * @param hasProcess 鏄惁鍚姩娴佺▼
+     * @return
+     */
+    public static String getPhaseByProjectStatus(String projectStatus, boolean hasProcess) {
+        for (ProjectCategoryEnum projectCategoryEnum : ProjectCategoryEnum.values()) {
+            if (hasProcess && PREVIOUS.status.contains(projectStatus)) {
+                return PREVIOUS.desc;
+            }
+            if (projectCategoryEnum.status.contains(projectStatus)) {
+                return projectCategoryEnum.desc;
+            }
+        }
+        return null;
+    }
+}

--
Gitblit v1.8.0