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