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