From fc6b946b1020ddff4fe2b01c9e439680cbda6b47 Mon Sep 17 00:00:00 2001
From: luohairen <3399054449@qq.com>
Date: 星期三, 04 十二月 2024 09:32:53 +0800
Subject: [PATCH] 分角色展示项目计划,实现不同角色的功能

---
 business/src/main/java/com/ycl/service/impl/ProjectPlanExamineRecordServiceImpl.java |   42 +++++++++----
 business/src/main/resources/mapper/ProjectInfoMapper.xml                             |    3 +
 business/src/main/java/com/ycl/controller/ProjectPlanInfoController.java             |   11 ++-
 business/src/main/java/com/ycl/service/ProjectPlanInfoService.java                   |    4 +
 business/src/main/java/com/ycl/domain/vo/DepartmentApprovalResponseVO.java           |    2 
 business/src/main/resources/mapper/ProjectPlanExamineRecordMapper.xml                |    7 ++
 business/src/main/java/com/ycl/mapper/ProjectInfoMapper.java                         |    2 
 business/src/main/java/com/ycl/domain/form/ProjectPlanExamineRecordForm.java         |    2 
 business/src/main/java/com/ycl/domain/form/ProjectPlanInfoForm.java                  |    2 
 business/src/main/java/com/ycl/domain/entity/ProjectPlanInfo.java                    |    4 +
 business/src/main/java/com/ycl/service/impl/ProjectPlanInfoServiceImpl.java          |   51 +++++++++++++----
 business/src/main/java/com/ycl/service/impl/ProjectInfoServiceImpl.java              |    3 
 business/src/main/java/com/ycl/service/impl/ProjectProcessServiceImpl.java           |    3 
 13 files changed, 103 insertions(+), 33 deletions(-)

diff --git a/business/src/main/java/com/ycl/controller/ProjectPlanInfoController.java b/business/src/main/java/com/ycl/controller/ProjectPlanInfoController.java
index 7bc3652..d34158a 100644
--- a/business/src/main/java/com/ycl/controller/ProjectPlanInfoController.java
+++ b/business/src/main/java/com/ycl/controller/ProjectPlanInfoController.java
@@ -89,9 +89,14 @@
         return projectPlanInfoService.addPlanInfo(request);
     }
 
-    @PostMapping("/savePlanInfo")
-    public Result savePlanInfo(@RequestBody ProjectPlanInfo item) {
-        return projectPlanInfoService.savePlanInfo(item);
+    @PostMapping("/resubmitPlanInfo")
+    public Result resubmitPlanInfo(@RequestBody ProjectPlanInfoForm form) {
+        return projectPlanInfoService.resubmitPlanInfo(form);
+    }
+
+    @PostMapping("/savePlanInfo/{planRecordId}")
+    public Result savePlanInfo(@RequestBody ProjectPlanInfo item, @PathVariable("planRecordId") Integer planRecordId) {
+        return projectPlanInfoService.savePlanInfo(item, planRecordId);
     }
 
     @PostMapping("/delayPlanInfo")
diff --git a/business/src/main/java/com/ycl/domain/entity/ProjectPlanInfo.java b/business/src/main/java/com/ycl/domain/entity/ProjectPlanInfo.java
index f82e768..e7bd034 100644
--- a/business/src/main/java/com/ycl/domain/entity/ProjectPlanInfo.java
+++ b/business/src/main/java/com/ycl/domain/entity/ProjectPlanInfo.java
@@ -31,6 +31,10 @@
     /** 浜嬮」鍚嶇О */
     private String title;
 
+    @TableField("plan_status")
+    /** 鐘舵��(鏈鏍革細0锛屽凡椹冲洖锛�1锛屽凡閫氳繃锛�2) */
+    private Integer planStatus;
+
     @TableField("progress_status")
     /** 鐘舵��(0锛氭湭瀹屾垚锛�1锛氬緟瀹℃牳锛�2锛氬凡椹冲洖锛�3锛氬凡瀹屾垚) */
     private Integer progressStatus;
diff --git a/business/src/main/java/com/ycl/domain/form/ProjectPlanExamineRecordForm.java b/business/src/main/java/com/ycl/domain/form/ProjectPlanExamineRecordForm.java
index 4ba11d6..5eede94 100644
--- a/business/src/main/java/com/ycl/domain/form/ProjectPlanExamineRecordForm.java
+++ b/business/src/main/java/com/ycl/domain/form/ProjectPlanExamineRecordForm.java
@@ -27,6 +27,8 @@
     @ApiModelProperty("椤圭洰璁″垝璁板綍id")
     private Long projectPlanRecordId;
 
+    private Long projectPlanInfoId;
+
     @NotNull(message = "涓婄骇閮ㄩ棬瀹℃牳浜轰笉鑳戒负绌�", groups = {Add.class, Update.class})
     @ApiModelProperty("涓婄骇閮ㄩ棬瀹℃牳浜�")
     private Long departmentUserId;
diff --git a/business/src/main/java/com/ycl/domain/form/ProjectPlanInfoForm.java b/business/src/main/java/com/ycl/domain/form/ProjectPlanInfoForm.java
index 34d7de3..4210731 100644
--- a/business/src/main/java/com/ycl/domain/form/ProjectPlanInfoForm.java
+++ b/business/src/main/java/com/ycl/domain/form/ProjectPlanInfoForm.java
@@ -33,6 +33,8 @@
     @ApiModelProperty("浜嬮」鍚嶇О")
     private String title;
 
+    private Integer planStatus;
+
     @NotNull(message = "鐘舵��(0锛氭湭瀹屾垚锛�1锛氬緟瀹℃牳锛�2锛氬凡椹冲洖锛�3锛氬凡瀹屾垚)涓嶈兘涓虹┖", groups = {Add.class, Update.class})
     @ApiModelProperty("鐘舵��(0锛氭湭瀹屾垚锛�1锛氬緟瀹℃牳锛�2锛氬凡椹冲洖锛�3锛氬凡瀹屾垚)")
     private Integer progressStatus;
diff --git a/business/src/main/java/com/ycl/domain/vo/DepartmentApprovalResponseVO.java b/business/src/main/java/com/ycl/domain/vo/DepartmentApprovalResponseVO.java
index 3b642ee..158fc20 100644
--- a/business/src/main/java/com/ycl/domain/vo/DepartmentApprovalResponseVO.java
+++ b/business/src/main/java/com/ycl/domain/vo/DepartmentApprovalResponseVO.java
@@ -12,6 +12,7 @@
 @NoArgsConstructor
 public class DepartmentApprovalResponseVO {
     private Long id;
+    private Long projectPlanInfoId;
     private String title;
     private Integer departmentExamine;
     private String departmentApproval;
@@ -21,4 +22,5 @@
     private String manageApprovalReply;
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     private Date gmtCreate;
+    private Integer planStatus;
 }
diff --git a/business/src/main/java/com/ycl/mapper/ProjectInfoMapper.java b/business/src/main/java/com/ycl/mapper/ProjectInfoMapper.java
index 34e9092..0a1b711 100644
--- a/business/src/main/java/com/ycl/mapper/ProjectInfoMapper.java
+++ b/business/src/main/java/com/ycl/mapper/ProjectInfoMapper.java
@@ -36,4 +36,6 @@
     List<ProjectVO> homeCount();
 
     List<ProjectVO> selectProjectDetailByIds(@Param("dataIdList") List<Long> dataIdList);
+
+    ProjectInfo queryById(Integer recordId);
 }
diff --git a/business/src/main/java/com/ycl/service/ProjectPlanInfoService.java b/business/src/main/java/com/ycl/service/ProjectPlanInfoService.java
index 66aa756..add3abb 100644
--- a/business/src/main/java/com/ycl/service/ProjectPlanInfoService.java
+++ b/business/src/main/java/com/ycl/service/ProjectPlanInfoService.java
@@ -75,11 +75,13 @@
      * 淇濆瓨璁″垝椤�
      * @return
      */
-    Result savePlanInfo(ProjectPlanInfo item);
+    Result savePlanInfo(ProjectPlanInfo item, Integer planRecordId);
 
     /**
      * 寤舵湡
      * @return
      */
     Result delayPlanInfo(ProjectPlanInfoForm request);
+
+    Result resubmitPlanInfo(ProjectPlanInfoForm form);
 }
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 b865b20..8fbb6ef 100644
--- a/business/src/main/java/com/ycl/service/impl/ProjectInfoServiceImpl.java
+++ b/business/src/main/java/com/ycl/service/impl/ProjectInfoServiceImpl.java
@@ -1,7 +1,8 @@
 package com.ycl.service.impl;
 
-import cn.hutool.core.collection.CollUtil;
+
 import com.alibaba.excel.EasyExcel;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
diff --git a/business/src/main/java/com/ycl/service/impl/ProjectPlanExamineRecordServiceImpl.java b/business/src/main/java/com/ycl/service/impl/ProjectPlanExamineRecordServiceImpl.java
index 381c0b0..a176a1c 100644
--- a/business/src/main/java/com/ycl/service/impl/ProjectPlanExamineRecordServiceImpl.java
+++ b/business/src/main/java/com/ycl/service/impl/ProjectPlanExamineRecordServiceImpl.java
@@ -4,10 +4,12 @@
 import com.baomidou.mybatisplus.extension.conditions.update.LambdaUpdateChainWrapper;
 import com.ycl.common.utils.SecurityUtils;
 import com.ycl.domain.entity.ProjectPlanExamineRecord;
+import com.ycl.domain.entity.ProjectPlanInfo;
 import com.ycl.domain.entity.ProjectPlanRecord;
 import com.ycl.domain.vo.DepartmentApprovalResponseVO;
 import com.ycl.domain.vo.ProjectProcessToDoVo;
 import com.ycl.mapper.ProjectPlanExamineRecordMapper;
+import com.ycl.mapper.ProjectPlanInfoMapper;
 import com.ycl.mapper.ProjectPlanRecordMapper;
 import com.ycl.service.ProjectPlanExamineRecordService;
 import com.ycl.common.base.Result;
@@ -37,6 +39,7 @@
 
     private final ProjectPlanExamineRecordMapper projectPlanExamineRecordMapper;
     private final ProjectPlanRecordMapper projectPlanRecordMapper;
+    private final ProjectPlanInfoMapper projectPlanInfoMapper;
 
     /**
      * 娣诲姞
@@ -162,22 +165,33 @@
 
     @Override
     public Result saveExamine(ProjectPlanExamineRecordForm form) {
-        // 鍒ゆ柇锛屽鏋滈兘鍚屾剰锛屽垯鐩存帴鏇存柊瀹℃壒璁板綍
+        // 鏇存柊瀹℃壒璁板綍
+        ProjectPlanExamineRecord item = ProjectPlanExamineRecordForm.getEntityByForm(form, null);
+        item.setId(form.getId().longValue());
+        item.setDepartmentUserId(SecurityUtils.getUserId());
+        item.setManagerUserId(SecurityUtils.getUserId());
+        baseMapper.updateById(item);
+        Long projectPlanRecordId = baseMapper.selectById(item.getId()).getProjectPlanRecordId();
+        // 濡傛灉鍚屾剰锛岃鍒掗」鐘舵�佷负宸查�氳繃锛屽苟涓旀柊澧炰竴鏉¢」鐩繘搴﹀鏍歌褰曪紝鍚﹀垯涓哄凡椹冲洖
         if (null != form.getDepartmentExamine() && null != form.getManageExamine() && form.getDepartmentExamine() == 0 && form.getManageExamine() == 0) {
-            ProjectPlanExamineRecord projectPlanExamineRecord = ProjectPlanExamineRecordForm.getEntityByForm(form, null);
-            projectPlanExamineRecord.setId(form.getId().longValue());
-            projectPlanExamineRecord.setDepartmentUserId(SecurityUtils.getUserId());
-            projectPlanExamineRecord.setManagerUserId(SecurityUtils.getUserId());
-            baseMapper.updateById(projectPlanExamineRecord);
+            new LambdaUpdateChainWrapper<>(projectPlanInfoMapper)
+                    .eq(ProjectPlanInfo::getId, form.getProjectPlanInfoId())
+                    .set(ProjectPlanInfo::getPlanStatus, 2)
+                    .update();
+            // 鏂板椤圭洰杩涘害瀹℃牳璁板綍
+            ProjectPlanExamineRecord newItem = new ProjectPlanExamineRecord();
+            newItem.setProjectPlanRecordId(projectPlanRecordId); // 椤圭洰璁″垝璁板綍ID
+            newItem.setProjectPlanInfoId(item.getProjectPlanInfoId()); // 椤圭洰璁″垝椤笽D
+            newItem.setEventType(2); // 杩涘害涓婃姤
+            newItem.setDeleted(0); // 鏈垹闄�
+            baseMapper.insert(newItem);
+        }else{
+            new LambdaUpdateChainWrapper<>(projectPlanInfoMapper)
+                    .eq(ProjectPlanInfo::getId, form.getProjectPlanInfoId())
+                    .set(ProjectPlanInfo::getPlanStatus, 1)
+                    .update();
         }
-        // 鍚﹀垯锛屽皢椤圭洰璁板綍璁剧疆涓烘湭涓婃姤锛屽苟灏嗚褰曢�昏緫鍒犻櫎
-        new LambdaUpdateChainWrapper<>(projectPlanRecordMapper)
-                .eq(ProjectPlanRecord::getId, form.getProjectPlanRecordId())
-                .set(ProjectPlanRecord::getReportStatus, 1);
-        new LambdaUpdateChainWrapper<>(baseMapper)
-                .eq(ProjectPlanExamineRecord::getProjectPlanRecordId, form.getProjectPlanRecordId())
-                .remove();
-        return Result.ok("鍥炲鎴愬姛");
+        return Result.ok("瀹℃壒鎴愬姛");
     }
 
     @Override
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 5c0b5fa..b44304c 100644
--- a/business/src/main/java/com/ycl/service/impl/ProjectPlanInfoServiceImpl.java
+++ b/business/src/main/java/com/ycl/service/impl/ProjectPlanInfoServiceImpl.java
@@ -148,11 +148,12 @@
         request.getAddList().forEach(item -> {
             ProjectPlanInfo projectPlanInfo = new ProjectPlanInfo();
             projectPlanInfo.setProjectPlanRecordId(request.getProjectPlanRecordId().longValue());
-            projectPlanInfo.setTitle(item.getTitle());
-            projectPlanInfo.setProgressStatus(0);
-            projectPlanInfo.setStartTime(item.getStartTime());
-            projectPlanInfo.setEndTime(item.getEndTime());
-            projectPlanInfo.setDeleted(0);
+            projectPlanInfo.setTitle(item.getTitle()); // 璁″垝椤规爣棰�
+            projectPlanInfo.setPlanStatus(0); // 璁″垝椤圭姸鎬佷负鏈紑濮�
+            projectPlanInfo.setProgressStatus(0); // 璁″垝椤硅繘搴︿负鏈紑濮�
+            projectPlanInfo.setStartTime(item.getStartTime()); // 璁″垝椤瑰紑濮嬫椂闂�
+            projectPlanInfo.setEndTime(item.getEndTime()); // 璁″垝椤圭粨鏉熸椂闂�
+            projectPlanInfo.setDeleted(0);// 鏈垹闄�
             list.add(projectPlanInfo);
         });
         list.stream().forEach(i -> {
@@ -168,23 +169,25 @@
         // 鏂板涓�鏉″鏍歌褰�
         ProjectPlanExamineRecord item = new ProjectPlanExamineRecord();
         item.setProjectPlanRecordId(request.getProjectPlanRecordId().longValue());
-        item.setEventType(0);
-        item.setGmtCreate(new Date());
-        item.setDeleted(0);
+        item.setEventType(0); // 璁″垝涓婃姤
+        item.setGmtCreate(new Date());  // 鍒涘缓鏃堕棿
+        item.setDeleted(0); // 鏈垹闄�
         list.stream().forEach(i -> {
             item.setProjectPlanInfoId(i.getId().longValue());
             projectPlanExamineRecordMapper.insertOne(item);
-//            projectPlanExamineRecordMapper.insertOne(item);
         });
         return Result.ok("娣诲姞鎴愬姛");
     }
 
     @Override
-    public Result savePlanInfo(ProjectPlanInfo item) {
-        item.setProgressStatus(0);
+    public Result savePlanInfo(ProjectPlanInfo item, Integer planRecordId) {
+        item.setProjectPlanRecordId(planRecordId.longValue()); // 椤圭洰璁″垝璁板綍id
+        item.setProgressStatus(0); // 鏈紑濮�
+        item.setDeleted(0); // 鏈垹闄�
+        item.setPlanStatus(0); // 鏈鏍�
         // 鍒ゆ柇id鏄惁瀛樺湪锛屽瓨鍦ㄥ垯鏇存柊锛屼笉瀛樺湪鍒欐柊澧�
         if (item.getId() == null) {
-            baseMapper.insertOne(item);
+            baseMapper.insert(item);
         } else {
             new LambdaUpdateChainWrapper<>(baseMapper).eq(ProjectPlanInfo::getId, item.getId())
                     .set(ProjectPlanInfo::getTitle, item.getTitle())
@@ -216,4 +219,28 @@
         projectPlanExamineRecordMapper.insertOne(item);
         return Result.ok("寤舵湡鎴愬姛");
     }
+
+    @Override
+    public Result resubmitPlanInfo(ProjectPlanInfoForm form) {
+        // 鏇存柊閲嶆柊涓婃姤鍚庣殑鍐呭
+        new LambdaUpdateChainWrapper<>(baseMapper)
+                .eq(ProjectPlanInfo::getId, form.getId())
+                .set(ProjectPlanInfo::getTitle, form.getTitle())
+                .set(ProjectPlanInfo::getStartTime, form.getStartTime())
+                .set(ProjectPlanInfo::getEndTime, form.getEndTime())
+                .set(ProjectPlanInfo::getPlanStatus, 0) // 灏嗚璁″垝椤硅缃负鏈鏍哥殑鐘舵��
+                .update();
+
+        // 鏂板涓�鏉¤鍒掍笂鎶ョ殑瀹℃牳璁板綍
+        ProjectPlanExamineRecord item = new ProjectPlanExamineRecord();
+        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);
+        return Result.ok("閲嶆柊涓婃姤鎴愬姛");
+    }
 }
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 d2dd255..6291572 100644
--- a/business/src/main/java/com/ycl/service/impl/ProjectProcessServiceImpl.java
+++ b/business/src/main/java/com/ycl/service/impl/ProjectProcessServiceImpl.java
@@ -1,6 +1,6 @@
 package com.ycl.service.impl;
 
-import cn.hutool.core.collection.CollectionUtil;
+
 import com.alibaba.fastjson2.JSON;
 import com.alibaba.fastjson2.JSONObject;
 import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -34,6 +34,7 @@
 import org.apache.commons.lang3.StringUtils;
 import org.flowable.bpmn.model.*;
 import org.flowable.bpmn.model.Process;
+import org.flowable.common.engine.impl.util.CollectionUtil;
 import org.flowable.engine.*;
 import org.flowable.engine.history.HistoricProcessInstance;
 import org.flowable.engine.repository.ProcessDefinition;
diff --git a/business/src/main/resources/mapper/ProjectInfoMapper.xml b/business/src/main/resources/mapper/ProjectInfoMapper.xml
index 021bfeb..dc922e4 100644
--- a/business/src/main/resources/mapper/ProjectInfoMapper.xml
+++ b/business/src/main/resources/mapper/ProjectInfoMapper.xml
@@ -181,4 +181,7 @@
             </if>
         </where>
     </select>
+    <select id="queryById" resultType="com.ycl.domain.entity.ProjectInfo">
+        select * from t_project_info where id = #{id} and deleted = 0
+    </select>
 </mapper>
diff --git a/business/src/main/resources/mapper/ProjectPlanExamineRecordMapper.xml b/business/src/main/resources/mapper/ProjectPlanExamineRecordMapper.xml
index 930a9f2..379a5f0 100644
--- a/business/src/main/resources/mapper/ProjectPlanExamineRecordMapper.xml
+++ b/business/src/main/resources/mapper/ProjectPlanExamineRecordMapper.xml
@@ -143,6 +143,7 @@
     <select id="selectInfo" resultType="com.ycl.domain.vo.DepartmentApprovalResponseVO">
         SELECT
             ranked.id,
+            ppi.id AS project_plan_info_id,
             (SELECT title FROM t_project_plan_info WHERE id = ranked.project_plan_info_id) as title,
             ranked.department_examine,
             ranked.department_approval,
@@ -150,7 +151,8 @@
             ranked.manage_examine,
             ranked.manage_approval,
             ranked.manage_approval_reply,
-            ranked.gmt_create
+            ranked.gmt_create,
+            ppi.plan_status
         FROM (
                  SELECT
                      *,
@@ -158,6 +160,7 @@
                  FROM t_project_plan_examine_record AS pper
                  WHERE project_plan_record_id = #{projectPlanRecordId}
              ) AS ranked
+        LEFT JOIN t_project_plan_info ppi ON ranked.project_plan_info_id = ppi.id
         WHERE rn = 1 AND ranked.deleted = 0
         Order by gmt_create DESC
     </select>
@@ -176,6 +179,8 @@
         FROM t_project_plan_examine_record AS pper
         WHERE
             pper.project_plan_record_id = #{projectPlanRecordId}
+            AND pper.event_type = 0
+            AND pper.deleted = 0
         ORDER BY gmt_update DESC
     </select>
     <select id="todoList" resultMap="selectToDoResultMap">

--
Gitblit v1.8.0