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") 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; 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; 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; 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; } 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); } 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); } 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; 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()); // 项目计划项ID 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 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("重新上报成功"); } } 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; 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> 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">