From 2330e34c1d0f8a3c58a729eaee8e9987f612d83d Mon Sep 17 00:00:00 2001
From: xiangpei <xiangpei@timesnew.cn>
Date: 星期四, 12 十二月 2024 10:51:27 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 business/src/main/java/com/ycl/domain/query/PlanQuery.java                            |    6 ++
 business/src/main/java/com/ycl/controller/ProjectPlanInfoController.java              |    2 
 start/src/main/resources/application.yml                                              |    4 +
 business/src/main/resources/mapper/ProjectPlanExamineRecordMapper.xml                 |    2 
 business/src/main/resources/mapper/PlanMapper.xml                                     |   42 ++++++++-----
 business/src/main/java/com/ycl/service/impl/ProjectPlanRecordServiceImpl.java         |    3 
 business/src/main/java/com/ycl/domain/vo/ProjectPlanResponseVO.java                   |    3 
 common/src/main/java/com/ycl/common/enums/business/ProjectStatusEnum.java             |    9 +++
 business/src/main/java/com/ycl/service/impl/ProjectPlanInfoServiceImpl.java           |   28 ++++++---
 business/src/main/java/com/ycl/service/impl/ProjectInfoServiceImpl.java               |   17 +++++
 business/src/main/java/com/ycl/service/impl/PlanServiceImpl.java                      |   10 +++
 common/src/main/java/com/ycl/common/enums/business/ProjectTypeEnum.java               |    9 +++
 business/src/main/java/com/ycl/service/impl/ProjectPlanProgressReportServiceImpl.java |   18 ++++--
 13 files changed, 118 insertions(+), 35 deletions(-)

diff --git a/business/src/main/java/com/ycl/controller/ProjectPlanInfoController.java b/business/src/main/java/com/ycl/controller/ProjectPlanInfoController.java
index 4711d1b..2ec3caf 100644
--- a/business/src/main/java/com/ycl/controller/ProjectPlanInfoController.java
+++ b/business/src/main/java/com/ycl/controller/ProjectPlanInfoController.java
@@ -90,7 +90,7 @@
     }
 
     @PostMapping("/resubmitPlanInfo")
-    public Result resubmitPlanInfo(@RequestBody ProjectPlanInfoForm form) {
+    public Result resubmitPlanInfo(@RequestBody @Validated(Add.class) ProjectPlanInfoForm form) {
         return projectPlanInfoService.resubmitPlanInfo(form);
     }
 
diff --git a/business/src/main/java/com/ycl/domain/query/PlanQuery.java b/business/src/main/java/com/ycl/domain/query/PlanQuery.java
index b75fc38..78d9857 100644
--- a/business/src/main/java/com/ycl/domain/query/PlanQuery.java
+++ b/business/src/main/java/com/ycl/domain/query/PlanQuery.java
@@ -13,5 +13,11 @@
 @Data
 @ApiModel(value = "Plan鏌ヨ鍙傛暟", description = "椤圭洰璁″垝琛ㄦ煡璇㈠弬鏁�")
 public class PlanQuery extends AbsQuery {
+    private String projectName;
+    private String projectCode;
+    private Integer reportStatus;
+    private Integer yearStatus;
+    private Integer seasonStatus;
+    private Integer monthStatus;
 }
 
diff --git a/business/src/main/java/com/ycl/domain/vo/ProjectPlanResponseVO.java b/business/src/main/java/com/ycl/domain/vo/ProjectPlanResponseVO.java
index e5ed1df..038caec 100644
--- a/business/src/main/java/com/ycl/domain/vo/ProjectPlanResponseVO.java
+++ b/business/src/main/java/com/ycl/domain/vo/ProjectPlanResponseVO.java
@@ -13,10 +13,11 @@
     private Integer reportStatus;
     private String projectCode;
     private String projectType;
-    private Integer projectPhase;
+    private String projectPhase;
     private Integer monthStatus;
     private Integer seasonStatus;
     private Integer yearStatus;
     private String projectStatus;
     private String investType;
+    private String projectColorCode;
 }
diff --git a/business/src/main/java/com/ycl/service/impl/PlanServiceImpl.java b/business/src/main/java/com/ycl/service/impl/PlanServiceImpl.java
index 092592c..5b307f2 100644
--- a/business/src/main/java/com/ycl/service/impl/PlanServiceImpl.java
+++ b/business/src/main/java/com/ycl/service/impl/PlanServiceImpl.java
@@ -2,6 +2,8 @@
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.ycl.common.base.Result;
+import com.ycl.common.enums.business.ProjectStatusEnum;
+import com.ycl.common.enums.business.ProjectTypeEnum;
 import com.ycl.domain.entity.Plan;
 import com.ycl.domain.vo.ProjectPlanResponseVO;
 import com.ycl.framework.utils.PageUtil;
@@ -90,6 +92,14 @@
     public Result page(PlanQuery query) {
         IPage<ProjectPlanResponseVO> page = PageUtil.getPage(query, ProjectPlanResponseVO.class);
         baseMapper.getPage(page, query);
+        // 瀵瑰垎椤靛悗鐨勫睘鎬ц繘琛屽鐞�
+        List<ProjectPlanResponseVO> records = page.getRecords();
+        for (ProjectPlanResponseVO record : records) {
+            record.setProjectType(ProjectTypeEnum.getDescByType(record.getProjectType()));
+            record.setProjectStatus(ProjectStatusEnum.getDescByType(record.getProjectStatus()));
+            record.setProjectColorCode("green");
+        }
+
         return Result.ok().data(page.getRecords()).total(page.getTotal());
     }
 
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 21740bb..afe0041 100644
--- a/business/src/main/java/com/ycl/service/impl/ProjectInfoServiceImpl.java
+++ b/business/src/main/java/com/ycl/service/impl/ProjectInfoServiceImpl.java
@@ -24,6 +24,7 @@
 import com.ycl.domain.entity.*;
 import com.ycl.domain.excel.ProjectExcelTemplate;
 import com.ycl.domain.form.DocumentInfoForm;
+import com.ycl.domain.form.PlanForm;
 import com.ycl.domain.form.ProjectInfoForm;
 import com.ycl.domain.query.ProjectExportQuery;
 import com.ycl.domain.query.ProjectInfoQuery;
@@ -70,6 +71,7 @@
     private final ProjectUnitRegistrationInfoMapper unitRegistrationInfoMapper;
     private final FileService fileService;
     private final FileMapper fileMapper;
+    private final PlanMapper planMapper;
 
     /**
      * 娣诲姞
@@ -86,6 +88,7 @@
         entity.setCreateBy(userId);
         entity.setUpdateBy(userId);
         baseMapper.insert(entity);
+        addPlan(entity.getId()); //娣诲姞璁″垝琛�
         //娣诲姞鏂囦欢
         List<File> fileList = form.getFileList();
         fileList.forEach(item -> {
@@ -94,6 +97,17 @@
         });
         fileService.saveBatch(fileList);
         return Result.ok("娣诲姞鎴愬姛").data(entity.getId());
+    }
+
+    public void addPlan(Long projectInfoId) {
+        Plan plan = new Plan();
+        plan.setProjectInfoId(projectInfoId);
+        plan.setReportStatus(1);
+        plan.setMonthStatus(1);
+        plan.setSeasonStatus(1);
+        plan.setYearStatus(1);
+        plan.setDeleted(0);
+        planMapper.insert(plan);
     }
 
     /**
@@ -390,6 +404,9 @@
         ProjectInfo projectInfo = baseMapper.selectById(recordId);
         // 鍒ゆ柇褰撳墠鐢ㄦ埛id鏄惁鍦ㄤ富绠″垪琛ㄤ腑
         String competentDepartment = projectInfo.getCompetentDepartment();
+        if (StringUtils.isEmpty(competentDepartment)){
+            return Result.ok().data(false);
+        }
         List<String> list = Arrays.asList(competentDepartment.split(","));
         // 鑾峰緱褰撳墠鐢ㄦ埛id
         Long userId = SecurityUtils.getUserId();
diff --git a/business/src/main/java/com/ycl/service/impl/ProjectPlanInfoServiceImpl.java b/business/src/main/java/com/ycl/service/impl/ProjectPlanInfoServiceImpl.java
index ac099d8..6e189bc 100644
--- a/business/src/main/java/com/ycl/service/impl/ProjectPlanInfoServiceImpl.java
+++ b/business/src/main/java/com/ycl/service/impl/ProjectPlanInfoServiceImpl.java
@@ -202,16 +202,28 @@
                 .set(ProjectPlanInfo::getStartTime, request.getStartTime())
                 .set(ProjectPlanInfo::getEndTime, request.getEndTime())
                 .update();
+        // 鏌ヨ鍑哄師鏉ョ殑瀹℃牳璁板綍
+        ProjectPlanExamineRecord item = new LambdaQueryChainWrapper<>(projectPlanExamineRecordMapper)
+                .eq(ProjectPlanExamineRecord::getProjectPlanInfoId, request.getId())
+                .eq(ProjectPlanExamineRecord::getProjectPlanRecordId, request.getProjectPlanRecordId())
+                .ne(ProjectPlanExamineRecord::getEventType, 2)
+                .eq(ProjectPlanExamineRecord::getDeleted, 0) // 鏈垹闄�
+                .orderByDesc(ProjectPlanExamineRecord::getGmtCreate)
+                .last("LIMIT 1")
+                .one();
         // 鏂板涓�鏉″鏍歌褰�
-        ProjectPlanExamineRecord item = new ProjectPlanExamineRecord();
-        item.setProjectPlanRecordId(request.getProjectPlanRecordId().longValue());
-        item.setProjectPlanInfoId(request.getId().longValue());
+//        item.setId(null);
+//        item.setEventType(1);
+//        item.setDelayStartTime(request.getStartTime());
+//        item.setDelayEndTime(request.getEndTime());
+//        item.setGmtCreate(null);
+//        item.setGmtUpdate(null);
+//        projectPlanExamineRecordMapper.insertOne(item);
+        // 鏇存柊鍘熸潵鐨勫鏍歌褰�
         item.setEventType(1);
         item.setDelayStartTime(request.getStartTime());
         item.setDelayEndTime(request.getEndTime());
-        item.setGmtCreate(new Date());
-        item.setDeleted(0);
-        projectPlanExamineRecordMapper.insertOne(item);
+        projectPlanExamineRecordMapper.updateById(item);
         return Result.ok("寤舵湡鎴愬姛");
     }
 
@@ -231,11 +243,9 @@
         item.setProjectPlanRecordId(form.getProjectPlanRecordId().longValue());
         item.setProjectPlanInfoId(form.getId().longValue());
         item.setEventType(0); // 璁″垝涓婃姤
-        item.setDelayStartTime(form.getStartTime());
-        item.setDelayEndTime(form.getEndTime());
         item.setGmtCreate(new Date());
         item.setDeleted(0); // 鏈垹闄�
-        projectPlanExamineRecordMapper.insertOne(item);
+        projectPlanExamineRecordMapper.insert(item);
         return Result.ok("閲嶆柊涓婃姤鎴愬姛");
     }
 }
diff --git a/business/src/main/java/com/ycl/service/impl/ProjectPlanProgressReportServiceImpl.java b/business/src/main/java/com/ycl/service/impl/ProjectPlanProgressReportServiceImpl.java
index 58300ba..a8f7e24 100644
--- a/business/src/main/java/com/ycl/service/impl/ProjectPlanProgressReportServiceImpl.java
+++ b/business/src/main/java/com/ycl/service/impl/ProjectPlanProgressReportServiceImpl.java
@@ -59,18 +59,24 @@
     @Transactional(rollbackFor = Exception.class)
     @Override
     public Result add(ProgressReportResponseVO form) {
-        ProjectPlanProgressReport projectPlanProgressReport = new ProjectPlanProgressReport();
-        projectPlanProgressReport.setProjectPlanInfoId(form.getId().longValue());
-        projectPlanProgressReport.setStartTime(form.getActualStartTime());
-        projectPlanProgressReport.setEndTime(form.getActualEndTime());
-        projectPlanProgressReport.setProgressStatus(form.getProgressStatusStr());
-        projectPlanProgressReport.setActualInvest(form.getActualInvest());
 
         // 鍒ゆ柇涓婃姤鐘舵��
         if (form.getProgressStatusInt() == 0) { // 鏈紑濮�  涓婃姤杩涘害
+            ProjectPlanProgressReport projectPlanProgressReport = new ProjectPlanProgressReport();
+            projectPlanProgressReport.setProjectPlanInfoId(form.getId().longValue());
+            projectPlanProgressReport.setStartTime(form.getActualStartTime());
+            projectPlanProgressReport.setEndTime(form.getActualEndTime());
+            projectPlanProgressReport.setProgressStatus(form.getProgressStatusStr());
+            projectPlanProgressReport.setActualInvest(form.getActualInvest());
             // 鏂板杩涘害涓婃姤鍐呭
             baseMapper.insert(projectPlanProgressReport);
         }else if (form.getProgressStatusInt() == 2) { // 宸查┏鍥�  閲嶆柊涓婃姤
+            ProjectPlanProgressReport projectPlanProgressReport = baseMapper.selectById(form.getProgressReportId());
+            projectPlanProgressReport.setProjectPlanInfoId(form.getId().longValue());
+            projectPlanProgressReport.setStartTime(form.getActualStartTime());
+            projectPlanProgressReport.setEndTime(form.getActualEndTime());
+            projectPlanProgressReport.setProgressStatus(form.getProgressStatusStr());
+            projectPlanProgressReport.setActualInvest(form.getActualInvest());
             // 鏇存柊杩涘害涓婃姤鍐呭
             baseMapper.updateById(projectPlanProgressReport);
         }
diff --git a/business/src/main/java/com/ycl/service/impl/ProjectPlanRecordServiceImpl.java b/business/src/main/java/com/ycl/service/impl/ProjectPlanRecordServiceImpl.java
index d4875bb..b4eb25f 100644
--- a/business/src/main/java/com/ycl/service/impl/ProjectPlanRecordServiceImpl.java
+++ b/business/src/main/java/com/ycl/service/impl/ProjectPlanRecordServiceImpl.java
@@ -55,8 +55,9 @@
     @Override
     public Result add(ProjectPlanRecordAddRequest request) {
         ProjectPlanRecord item = new ProjectPlanRecord();
+        Plan one = new LambdaQueryChainWrapper<>(planMapper).eq(Plan::getProjectInfoId, request.getProjectInfoId()).one();
         // 鏌ヨ椤圭洰璁″垝id
-        item.setPlanId(new LambdaQueryChainWrapper<>(planMapper).eq(Plan::getProjectInfoId, request.getProjectInfoId()).one().getId().longValue());
+        item.setPlanId(new LambdaQueryChainWrapper<>(planMapper).eq(Plan::getProjectInfoId, request.getProjectInfoId()).one().getId());
         // 鍒ゆ柇鏍囧織浣嶆槸鍚︿负0锛屽鏋滀负0锛屽垯涓烘湀搴﹁鍒掞紝1涓哄搴﹁鍒掞紝2涓哄勾搴﹁鍒�
         if (request.getPlanTimeFlag() == MONTH_FLAG) {
             // 鍒ゆ柇id鏄惁涓�0
diff --git a/business/src/main/resources/mapper/PlanMapper.xml b/business/src/main/resources/mapper/PlanMapper.xml
index b69243e..85d57c7 100644
--- a/business/src/main/resources/mapper/PlanMapper.xml
+++ b/business/src/main/resources/mapper/PlanMapper.xml
@@ -29,11 +29,6 @@
     </resultMap>
 
 
-
-
-
-
-
     <select id="getById" resultMap="BaseResultMap">
         SELECT
             TP.project_info_id,
@@ -59,19 +54,34 @@
             pi.project_code,
             pi.project_type,
             pi.project_phase,
-            IFNULL((select report_status from t_project_plan_record
-             WHERE plan_time_flag = 0 AND project_info_id = pi.id ORDER BY create_time DESC LIMIT 1),1) as month_status,
-            IFNULL((select report_status from t_project_plan_record
-             WHERE plan_time_flag = 1 AND project_info_id = pi.id ORDER BY create_time DESC LIMIT 1),1) as season_status,
-            IFNULL((select report_status from t_project_plan_record
-             WHERE plan_time_flag = 2 AND project_info_id = pi.id ORDER BY create_time DESC LIMIT 1),1) as year_status,
+            p.month_status,
+            p.season_status,
+            p.year_status,
             pi.project_status,
             pi.invest_type
-        FROM t_plan AS p
-            INNER JOIN t_project_info AS pi ON p.project_info_id = pi.id
-            INNER JOIN t_project_plan_record AS ppr ON p.id = ppr.plan_id
-        WHERE
-            p.deleted = 0
+        FROM t_project_info AS pi
+        LEFT JOIN t_plan AS p ON p.project_info_id = pi.id
+        <where>
+            pi.deleted = 0
+            <if test="query.projectName!= null and query.projectName!= ''">
+                AND pi.project_name LIKE CONCAT('%', #{query.projectName}, '%')
+            </if>
+            <if test="query.projectCode!= null and query.projectCode!= ''">
+                AND pi.project_code LIKE CONCAT('%', #{query.projectCode}, '%')
+            </if>
+            <if test="query.reportStatus!= null">
+                AND p.report_status = #{query.reportStatus}
+            </if>
+            <if test="query.monthStatus!= null">
+                AND p.month_status = #{query.monthStatus}
+            </if>
+            <if test="query.seasonStatus!= null">
+                AND p.season_status = #{query.seasonStatus}
+            </if>
+            <if test="query.yearStatus!= null">
+                AND p.year_status = #{query.yearStatus}
+            </if>
+        </where>
     </select>
 
 </mapper>
diff --git a/business/src/main/resources/mapper/ProjectPlanExamineRecordMapper.xml b/business/src/main/resources/mapper/ProjectPlanExamineRecordMapper.xml
index 379a5f0..414d5e7 100644
--- a/business/src/main/resources/mapper/ProjectPlanExamineRecordMapper.xml
+++ b/business/src/main/resources/mapper/ProjectPlanExamineRecordMapper.xml
@@ -179,7 +179,7 @@
         FROM t_project_plan_examine_record AS pper
         WHERE
             pper.project_plan_record_id = #{projectPlanRecordId}
-            AND pper.event_type = 0
+            AND pper.event_type != 2
             AND pper.deleted = 0
         ORDER BY gmt_update DESC
     </select>
diff --git a/common/src/main/java/com/ycl/common/enums/business/ProjectStatusEnum.java b/common/src/main/java/com/ycl/common/enums/business/ProjectStatusEnum.java
index 10e57fe..e597e37 100644
--- a/common/src/main/java/com/ycl/common/enums/business/ProjectStatusEnum.java
+++ b/common/src/main/java/com/ycl/common/enums/business/ProjectStatusEnum.java
@@ -27,4 +27,13 @@
         this.type = type;
         this.desc = desc;
     }
+
+    public static String getDescByType(String type) {
+        for (ProjectStatusEnum status : ProjectStatusEnum.values()) {
+            if (status.type.equals(type)) {
+                return status.desc;
+            }
+        }
+        return null; // 濡傛灉娌℃湁鎵惧埌瀵瑰簲鐨勭被鍨嬶紝鍙互杩斿洖 null 鎴栬�呮姏鍑哄紓甯�
+    }
 }
diff --git a/common/src/main/java/com/ycl/common/enums/business/ProjectTypeEnum.java b/common/src/main/java/com/ycl/common/enums/business/ProjectTypeEnum.java
index 2e1a9fa..d186a2e 100644
--- a/common/src/main/java/com/ycl/common/enums/business/ProjectTypeEnum.java
+++ b/common/src/main/java/com/ycl/common/enums/business/ProjectTypeEnum.java
@@ -29,4 +29,13 @@
         this.type = type;
         this.desc = desc;
     }
+
+    public static String getDescByType(String type) {
+        for (ProjectTypeEnum projectType : ProjectTypeEnum.values()) {
+            if (projectType.type.equals(type)) {
+                return projectType.desc;
+            }
+        }
+        return null; // 濡傛灉娌℃湁鎵惧埌瀵瑰簲鐨則ype锛屽彲浠ヨ繑鍥瀗ull鎴栨姏鍑哄紓甯�
+    }
 }
diff --git a/start/src/main/resources/application.yml b/start/src/main/resources/application.yml
index 4aab901..462aa1d 100644
--- a/start/src/main/resources/application.yml
+++ b/start/src/main/resources/application.yml
@@ -72,6 +72,10 @@
     restart:
       # 鐑儴缃插紑鍏�
       enabled: false
+  # 鏃ユ湡鏍煎紡
+  jackson:
+    date-format: yyyy-MM-dd HH:mm:ss
+    time-zone: GMT+8
 
 # token閰嶇疆
 token:

--
Gitblit v1.8.0