From 9cbad80abaabd430de6a9739fb2c898d3b10193a Mon Sep 17 00:00:00 2001 From: 青城 <1662047068@qq.com> Date: 星期四, 10 七月 2025 16:58:24 +0800 Subject: [PATCH] 协调审批对接修改后 --- src/main/java/com/ruoyi/approve/service/impl/ApproveProcessServiceImpl.java | 64 ++++++++++++++------ src/main/java/com/ruoyi/approve/pojo/ApproveProcess.java | 5 + src/main/java/com/ruoyi/approve/mapper/ApproveProcessMapper.java | 1 src/main/java/com/ruoyi/approve/vo/ApproveProcessVO.java | 2 src/main/java/com/ruoyi/approve/service/IApproveProcessService.java | 7 ++ src/main/resources/mapper/approve/ApproveProcessMapper.xml | 8 ++ src/main/java/com/ruoyi/approve/service/impl/ApproveNodeServiceImpl.java | 55 ++++++++++++++++- src/main/java/com/ruoyi/approve/utils/DailyRedisCounter.java | 1 src/main/java/com/ruoyi/approve/controller/ApproveProcessController.java | 6 +- src/main/java/com/ruoyi/approve/controller/ApproveNodeController.java | 17 +---- src/main/java/com/ruoyi/approve/pojo/ApproveNode.java | 2 src/main/java/com/ruoyi/approve/vo/ApproveNodeVo.java | 2 src/main/java/com/ruoyi/approve/service/IApproveNodeService.java | 6 + 13 files changed, 131 insertions(+), 45 deletions(-) diff --git a/src/main/java/com/ruoyi/approve/controller/ApproveNodeController.java b/src/main/java/com/ruoyi/approve/controller/ApproveNodeController.java index 41cc7c0..dd1d057 100644 --- a/src/main/java/com/ruoyi/approve/controller/ApproveNodeController.java +++ b/src/main/java/com/ruoyi/approve/controller/ApproveNodeController.java @@ -15,11 +15,11 @@ /** * 娴佺▼鐘舵�佽鎯� - * @param id 娴佺▼瀹℃壒id approve_id + * @param id 娴佺▼瀹℃壒缂栧彿 approve_id * @return */ - @GetMapping("/details") - public AjaxResult details(@PathVariable String id) { + @GetMapping("/details/{id}") + public AjaxResult details(@PathVariable("id") String id) { return AjaxResult.success(approveNodeService.details(id)); } @@ -34,15 +34,6 @@ return AjaxResult.success(); } - /** - * 鍒濆鍖栧鎵硅妭鐐� - * @param id - * @return - */ - @PostMapping("/init") - public AjaxResult init(String id) { - approveNodeService.initApproveNodes(id); - return AjaxResult.success(); - } + } diff --git a/src/main/java/com/ruoyi/approve/controller/ApproveProcessController.java b/src/main/java/com/ruoyi/approve/controller/ApproveProcessController.java index 119ed01..5ae9a7c 100644 --- a/src/main/java/com/ruoyi/approve/controller/ApproveProcessController.java +++ b/src/main/java/com/ruoyi/approve/controller/ApproveProcessController.java @@ -91,8 +91,8 @@ * @return */ @GetMapping("/list") - public AjaxResult list(Page page) { - return AjaxResult.success(approveProcessService.listAll(page)); + public AjaxResult list(Page page,String id) { + return AjaxResult.success(approveProcessService.listAll(page,id)); } /** @@ -100,7 +100,7 @@ * @param ids * @return */ - @RequestMapping ("/deleteIds") + @DeleteMapping("/deleteIds") public AjaxResult deleteIds(@RequestBody Long[] ids) { if (ids == null || ids.length == 0) { return AjaxResult.warn("鍙傛暟涓嶈兘涓虹┖"); diff --git a/src/main/java/com/ruoyi/approve/mapper/ApproveProcessMapper.java b/src/main/java/com/ruoyi/approve/mapper/ApproveProcessMapper.java index b05a5f1..7e2aba7 100644 --- a/src/main/java/com/ruoyi/approve/mapper/ApproveProcessMapper.java +++ b/src/main/java/com/ruoyi/approve/mapper/ApproveProcessMapper.java @@ -13,6 +13,7 @@ @Mapper public interface ApproveProcessMapper extends BaseMapper<ApproveProcess> { + void updateApproveDeptId(ApproveProcess approveProcess); } diff --git a/src/main/java/com/ruoyi/approve/pojo/ApproveNode.java b/src/main/java/com/ruoyi/approve/pojo/ApproveNode.java index 3aa8e58..a634b23 100644 --- a/src/main/java/com/ruoyi/approve/pojo/ApproveNode.java +++ b/src/main/java/com/ruoyi/approve/pojo/ApproveNode.java @@ -69,7 +69,7 @@ private String approveNodeReason; /** - * 瀹℃壒鑺傜偣澶囨敞 + * 瀹℃壒鑺傜偣澶囨敞 (鏄惁鍒板綋鍓嶈妭鐐癸細0鍚︼紝1鏄紙榛樿0锛�) */ private String approveNodeRemark; diff --git a/src/main/java/com/ruoyi/approve/pojo/ApproveProcess.java b/src/main/java/com/ruoyi/approve/pojo/ApproveProcess.java index 138c964..468d1a4 100644 --- a/src/main/java/com/ruoyi/approve/pojo/ApproveProcess.java +++ b/src/main/java/com/ruoyi/approve/pojo/ApproveProcess.java @@ -31,6 +31,11 @@ private Long approveUser; /** + * 褰撳墠鐢宠浜哄鍚� + */ + private String approveUserName; + + /** * 鐢宠閮ㄩ棬id */ private Long approveDeptId; diff --git a/src/main/java/com/ruoyi/approve/service/IApproveNodeService.java b/src/main/java/com/ruoyi/approve/service/IApproveNodeService.java index d6e9c66..0c2b554 100644 --- a/src/main/java/com/ruoyi/approve/service/IApproveNodeService.java +++ b/src/main/java/com/ruoyi/approve/service/IApproveNodeService.java @@ -8,7 +8,11 @@ public interface IApproveNodeService extends IService<ApproveNode> { - void initApproveNodes(String id); + /** + * 鍒濆鍖� + * @param id 娴佺▼缂栧彿 + */ + void initApproveNodes(String id,int delFlag); /** * 璇︽儏 * @param id diff --git a/src/main/java/com/ruoyi/approve/service/IApproveProcessService.java b/src/main/java/com/ruoyi/approve/service/IApproveProcessService.java index 6b1cf82..5a5f781 100644 --- a/src/main/java/com/ruoyi/approve/service/IApproveProcessService.java +++ b/src/main/java/com/ruoyi/approve/service/IApproveProcessService.java @@ -24,12 +24,17 @@ */ List<SysDept> selectDeptListByDeptIds(Long[] deptIds); - IPage<ApproveProcess> listAll(Page page); + IPage<ApproveProcess> listAll(Page page,String id); void delApprove(Long[] ids); void updateByApproveId(ApproveGetAndUpdateVo approveGetAndUpdateVo); + /** + * 鏍规嵁娴佺▼缂栧彿杩涜鏌ユ壘 + * @param id + * @return + */ ApproveProcess getApproveById(String id); /** diff --git a/src/main/java/com/ruoyi/approve/service/impl/ApproveNodeServiceImpl.java b/src/main/java/com/ruoyi/approve/service/impl/ApproveNodeServiceImpl.java index 81af66c..5201305 100644 --- a/src/main/java/com/ruoyi/approve/service/impl/ApproveNodeServiceImpl.java +++ b/src/main/java/com/ruoyi/approve/service/impl/ApproveNodeServiceImpl.java @@ -30,13 +30,14 @@ @Override - public void initApproveNodes(String id) { + public void initApproveNodes(String id,int deleteFlag) { //绉熸埛id Long tenantId = SecurityUtils.getLoginUser().getTenantId(); ApproveProcess approve = approveProcessService.getApproveById(id); String[] names = approve.getApproveUserNames().split(","); Long approveId = approve.getId(); + for (int i = 0; i < names.length; i++) { ApproveNode approveNode = new ApproveNode(); approveNode.setApproveProcessId(approveId); @@ -45,7 +46,12 @@ approveNode.setApproveNodeTime(new Date()); approveNode.setApproveNodeStatus(0); approveNode.setTenantId(tenantId); - approveNode.setDeleteFlag(0); + approveNode.setDeleteFlag(deleteFlag); + approveNode.setApproveNodeReason(null); + approveNode.setApproveNodeRemark("0"); + if(i==0){ + approveNode.setApproveNodeRemark("1"); + } approveNodeMapper.insert(approveNode); } } @@ -57,6 +63,8 @@ LambdaQueryWrapper<ApproveNode> queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(ApproveNode::getApproveProcessId, approveId); + queryWrapper.eq(ApproveNode::getDeleteFlag, 0); + List<ApproveNode> list = list(queryWrapper); // 鎸夌収 approveNodeOrder 瀛楁鍗囧簭鎺掑簭 list.sort(Comparator.comparingInt(ApproveNode::getApproveNodeOrder)); @@ -73,21 +81,58 @@ ApproveProcess approveProcess = approveProcessService.getBaseMapper().selectById(approveProcessId); approveProcess.setApproveOverTime(new Date()); approveProcess.setApproveStatus(3); + //璁剧疆褰撳墠瀹℃壒浜轰负绗竴涓� + approveProcess.setApproveUserCurrentId(Long.valueOf(approveProcess.getApproveUserIds().split(",")[0])); + approveProcess.setApproveUserCurrentName(approveProcess.getApproveUserNames().split(",")[0]); approveProcessService.saveOrUpdate(approveProcess); //瀹℃壒鑺傜偣鐘舵�佹敼鍙� - initApproveNodes(approveProcess.getApproveId()); + updateApproveNodes(approveProcess.getApproveId(),1); + initApproveNodes(approveProcess.getApproveId(),0); return; } - //鏇存柊瀹℃壒娴佺▼ + //鏇存柊瀹℃壒娴佺▼ 褰撳墠瀹℃壒浜轰慨鏀� approveProcessService.updateApproveProcessStatus(approveNode); - //瀹℃壒娴佺▼褰撳墠瀹℃壒浜轰慨鏀� + //瀹℃壒娴佺▼ 鑺傜偣鐘舵�佹敼鍙� ApproveNode node = getById(approveNode.getId()); + node.setApproveNodeRemark("0"); node.setApproveNodeTime(new Date()); + node.setApproveNodeReason(approveNode.getApproveNodeReason()); node.setApproveNodeStatus(approveNode.getApproveNodeStatus()); approveNodeMapper.updateById(node); + + //涓嬩竴涓妭鐐圭姸鎬佹敼鍙� + ApproveNode node1 = approveNodeMapper.selectById(approveNode.getId()); + Long approveProcessId = node1.getApproveProcessId(); + ApproveProcess approveProcess = approveProcessService.getBaseMapper().selectById(approveProcessId); + int length = approveProcess.getApproveUserIds().split(",").length; + + //姝ゆ椂鏄渶鍚庝竴涓妭鐐逛簡 + if (length==node.getApproveNodeOrder()){ + return; + } + + LambdaQueryWrapper<ApproveNode> queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(ApproveNode::getApproveNodeOrder, node.getApproveNodeOrder()+1); + queryWrapper.eq(ApproveNode::getApproveProcessId, node.getApproveProcessId()); + queryWrapper.eq(ApproveNode::getDeleteFlag, 0); + ApproveNode nextNode = getOne(queryWrapper); + nextNode.setApproveNodeRemark("1"); + approveNodeMapper.updateById(nextNode); + } + + private void updateApproveNodes(String id, int delFlag) { + ApproveProcess approve = approveProcessService.getApproveById(id); + Long approveId = approve.getId(); + LambdaQueryWrapper<ApproveNode> queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(ApproveNode::getApproveProcessId, approveId); + List<ApproveNode> list = list(queryWrapper); + for (ApproveNode approveNode : list) { + approveNode.setDeleteFlag(delFlag); + approveNodeMapper.updateById(approveNode); + } } } diff --git a/src/main/java/com/ruoyi/approve/service/impl/ApproveProcessServiceImpl.java b/src/main/java/com/ruoyi/approve/service/impl/ApproveProcessServiceImpl.java index a07be20..dd04916 100644 --- a/src/main/java/com/ruoyi/approve/service/impl/ApproveProcessServiceImpl.java +++ b/src/main/java/com/ruoyi/approve/service/impl/ApproveProcessServiceImpl.java @@ -13,7 +13,9 @@ import com.ruoyi.approve.vo.ApproveGetAndUpdateVo; import com.ruoyi.approve.vo.ApproveNodeVo; import com.ruoyi.approve.vo.ApproveProcessVO; +import com.ruoyi.basic.pojo.Customer; import com.ruoyi.common.utils.SecurityUtils; +import com.ruoyi.common.utils.StringUtils; import com.ruoyi.project.system.domain.SysDept; import com.ruoyi.project.system.domain.SysUser; import com.ruoyi.project.system.mapper.SysDeptMapper; @@ -27,10 +29,7 @@ import java.time.LocalDate; import java.time.format.DateTimeFormatter; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Date; -import java.util.List; +import java.util.*; @Service @RequiredArgsConstructor @@ -46,11 +45,14 @@ private final SysUserMapper sysUserMapper; private final ApproveProcessMapper approveProcessMapper; + @Override public void addApprove(ApproveProcessVO approveProcessVO) { Long userId = SecurityUtils.getUserId(); + String nickName = SecurityUtils.getLoginUser().getNickName(); //绉熸埛id Long tenantId = SecurityUtils.getLoginUser().getTenantId(); + String deptName = sysDeptMapper.selectDeptById(approveProcessVO.getApproveDeptId()).getDeptName(); String today = LocalDate.now().format(DATE_FORMAT); Long approveId = dailyRedisCounter.incrementAndGet("approveId"); @@ -59,17 +61,18 @@ String approveID = today + formattedCount; //瀹℃壒浜哄鍚嶅鐞� - String approverIds = approveProcessVO.getApproverIds(); + String approverIds = approveProcessVO.getApproveUserIds(); String[] idArray = approverIds.split(","); - String approverNames = getApproverNames(approveProcessVO.getApproverIds()); - String[] namdArray = approverIds.split(","); + String approverNames = getApproverNames(approveProcessVO.getApproveUserIds()); + String[] namdArray = approverNames.split(","); ApproveProcess approveProcess = new ApproveProcess(); approveProcess.setApproveId(approveID); approveProcess.setApproveUser(userId); + approveProcess.setApproveUserName(nickName); approveProcess.setApproveDeptId(approveProcessVO.getApproveDeptId()); - // approveProcess.setApproveDeptName(approveProcessVO.getDeptName()); - approveProcess.setApproveUserIds(approveProcessVO.getApproverIds()); + approveProcess.setApproveDeptName(deptName); + approveProcess.setApproveUserIds(approveProcessVO.getApproveUserIds()); approveProcess.setApproveUserNames(approverNames); approveProcess.setApproveUserCurrentId(Long.parseLong(idArray[0])); approveProcess.setApproveUserCurrentName(namdArray[0]); @@ -82,7 +85,7 @@ save(approveProcess); //鍒濆鍖栧鎵硅妭鐐� - approveNodeService.initApproveNodes(approveID); + approveNodeService.initApproveNodes(approveID,0); } private String getApproverNames(String approverIds) { @@ -91,13 +94,14 @@ Integer[] ids = Arrays.stream(idArray) .map(Integer::parseInt) .toArray(Integer[]::new); - String names = ""; - StringBuilder stringBuilder = new StringBuilder(); + List<String> names = new ArrayList<String>(); + for (Integer id : ids) { SysUser sysUser = sysUserMapper.selectUserById(id.longValue()); - names = stringBuilder + "," + sysUser.getUserName(); + names.add(sysUser.getNickName()); } - return names; + + return String.join(",", names); } @@ -112,9 +116,16 @@ } @Override - public IPage<ApproveProcess> listAll(Page page) { + public IPage<ApproveProcess> listAll(Page page,String id) { + // 1. 澶勭悊绌哄�煎満鏅紙鍙傛暟鏍¢獙锛� + if (page == null) { + page = Page.of(1, 10); // 榛樿绗�1椤碉紝姣忛〉10鏉℃暟鎹� + } LambdaQueryWrapper<ApproveProcess> queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(ApproveProcess::getApproveDelete, 0); + if (StringUtils.isNotBlank(id)) { + queryWrapper.like(ApproveProcess::getApproveId, id); + } return approveProcessMapper.selectPage(page, queryWrapper); } @@ -122,8 +133,10 @@ public void delApprove(Long[] ids) { for (Long id : ids) { LambdaQueryWrapper<ApproveProcess> queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(ApproveProcess::getApproveDelete, 1); - update(queryWrapper); + queryWrapper.eq(ApproveProcess::getApproveId, id); + ApproveProcess process = getOne(queryWrapper); + process.setApproveDelete(1); + saveOrUpdate(process); } } @@ -143,9 +156,16 @@ String[] idArray = approveProcess.getApproveUserIds().split(","); String[] nameArray = approveProcess.getApproveUserNames().split(","); + Integer noderOrder = approveNodeVo.getApproveNodeOrder(); - approveProcess.setApproveUserCurrentId(Long.parseLong(idArray[noderOrder])); - approveProcess.setApproveUserCurrentName(nameArray[noderOrder]); + //璁剧疆褰撳墠瀹℃壒浜� + if (noderOrder ==idArray.length){ + approveProcess.setApproveUserCurrentId(null); + approveProcess.setApproveUserCurrentName(null); + }else { + approveProcess.setApproveUserCurrentId(Long.parseLong(idArray[noderOrder])); + approveProcess.setApproveUserCurrentName(nameArray[noderOrder]); + } if(noderOrder.equals(1)){ if(approveNodeVo.getApproveNodeStatus() == 1){ @@ -155,12 +175,16 @@ if(noderOrder.equals(idArray.length)){ if(approveNodeVo.getApproveNodeStatus() == 1){ approveProcess.setApproveStatus(2); + approveProcess.setApproveOverTime(new Date()); } } - updateById(approveProcess); + // updateById(approveProcess); + approveProcessMapper.updateApproveDeptId(approveProcess); + } + @Override public void updateByApproveId(ApproveGetAndUpdateVo approveGetAndUpdateVo) { ApproveProcess approve = getApproveById(approveGetAndUpdateVo.getId()); diff --git a/src/main/java/com/ruoyi/approve/utils/DailyRedisCounter.java b/src/main/java/com/ruoyi/approve/utils/DailyRedisCounter.java index be00664..480671f 100644 --- a/src/main/java/com/ruoyi/approve/utils/DailyRedisCounter.java +++ b/src/main/java/com/ruoyi/approve/utils/DailyRedisCounter.java @@ -64,6 +64,7 @@ /** * 鐢熸垚Redis閿� + * 鏍煎紡 daily_counter:counterName:yyyyMMdd */ private String getKey(String counterName) { String today = LocalDate.now().format(DATE_FORMAT); diff --git a/src/main/java/com/ruoyi/approve/vo/ApproveNodeVo.java b/src/main/java/com/ruoyi/approve/vo/ApproveNodeVo.java index 3abc3d6..87dcb32 100644 --- a/src/main/java/com/ruoyi/approve/vo/ApproveNodeVo.java +++ b/src/main/java/com/ruoyi/approve/vo/ApproveNodeVo.java @@ -16,4 +16,6 @@ */ private Integer approveNodeStatus; + private String approveNodeReason; + } diff --git a/src/main/java/com/ruoyi/approve/vo/ApproveProcessVO.java b/src/main/java/com/ruoyi/approve/vo/ApproveProcessVO.java index a22a7ce..9162dcc 100644 --- a/src/main/java/com/ruoyi/approve/vo/ApproveProcessVO.java +++ b/src/main/java/com/ruoyi/approve/vo/ApproveProcessVO.java @@ -12,7 +12,7 @@ //閮ㄩ棬鍚嶇О //private String deptName; //瀹℃壒浜� ids - private String approverIds; + private String approveUserIds; //瀹℃壒浜哄悕绉� //private String approverNames; //瀹℃壒浜嬬敱 diff --git a/src/main/resources/mapper/approve/ApproveProcessMapper.xml b/src/main/resources/mapper/approve/ApproveProcessMapper.xml index da0d5f7..b7bb783 100644 --- a/src/main/resources/mapper/approve/ApproveProcessMapper.xml +++ b/src/main/resources/mapper/approve/ApproveProcessMapper.xml @@ -27,4 +27,12 @@ approve_user_names,approve_reason,approve_time,approve_over_time,approve_status, approve_delete,tenant_id,approve_type,approve_remark </sql> + <update id="updateApproveDeptId" parameterType="com.ruoyi.approve.pojo.ApproveProcess"> + update approve_process + set approve_user_current_id = #{approveUserCurrentId}, + approve_user_current_name = #{approveUserCurrentName}, + approve_status = #{approveStatus}, + approve_over_time = #{approveOverTime} + where id = #{id} + </update> </mapper> -- Gitblit v1.9.3