From 2f80b7085c4eabce06d3491306b75eecc275275f Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期四, 30 四月 2026 17:31:57 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/dev_New_pro' into dev_New_pro
---
src/main/java/com/ruoyi/approve/service/impl/ApproveProcessServiceImpl.java | 65 ++++++++++++++++++++++++--------
1 files changed, 49 insertions(+), 16 deletions(-)
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 3a81f0a..85be19a 100644
--- a/src/main/java/com/ruoyi/approve/service/impl/ApproveProcessServiceImpl.java
+++ b/src/main/java/com/ruoyi/approve/service/impl/ApproveProcessServiceImpl.java
@@ -1,6 +1,7 @@
package com.ruoyi.approve.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
@@ -10,12 +11,17 @@
import com.ruoyi.approve.bean.vo.ApproveProcessConfigNodeVo;
import com.ruoyi.approve.bean.vo.ApproveProcessVO;
import com.ruoyi.approve.mapper.ApproveNodeMapper;
+import com.ruoyi.approve.mapper.ApproveProcessConfigNodeMapper;
import com.ruoyi.approve.mapper.ApproveProcessMapper;
import com.ruoyi.approve.pojo.ApproveNode;
import com.ruoyi.approve.pojo.ApproveProcess;
+import com.ruoyi.approve.pojo.ApproveProcessConfigNode;
import com.ruoyi.approve.service.ApproveProcessConfigNodeService;
import com.ruoyi.approve.service.IApproveNodeService;
import com.ruoyi.approve.service.IApproveProcessService;
+import com.ruoyi.approve.vo.ApproveProcessVo;
+import com.ruoyi.basic.enums.RecordTypeEnum;
+import com.ruoyi.basic.utils.FileUtil;
import com.ruoyi.common.enums.FileNameType;
import com.ruoyi.common.utils.OrderUtils;
import com.ruoyi.common.utils.SecurityUtils;
@@ -63,6 +69,8 @@
private final ShippingInfoMapper shippingInfoMapper;
private final ApproveNodeMapper approveNodeMapper;
private final ApproveProcessConfigNodeService approveProcessConfigNodeService;
+ private final FileUtil fileUtil;
+ private final ApproveProcessConfigNodeMapper approveProcessConfigNodeMapper;
@Override
public void addApprove(ApproveProcessVO approveProcessVO) throws Exception {
@@ -71,7 +79,15 @@
List<ApproveProcessConfigNodeVo> list = approveProcessConfigNodeService.listNode( approveProcessVO.getApproveType());
List<Long> nodeIds = list.stream()
.map(ApproveProcessConfigNodeVo::getApproverId)
+ .filter(Objects::nonNull)
.collect(Collectors.toList());
+ if(list.isEmpty()) {
+ throw new RuntimeException("娴佺▼涓嶅瓨鍦�");
+ }
+ if (CollectionUtils.isEmpty(nodeIds)) {
+ autoPassPurchaseApproveIfNoApprover(approveProcessVO);
+ return;
+ }
List<SysUser> sysUsers = sysUserMapper.selectUserByIds(nodeIds);
if (CollectionUtils.isEmpty(sysUsers)) throw new RuntimeException("瀹℃牳鐢ㄦ埛涓嶅瓨鍦�");
if (sysDept == null) throw new RuntimeException("閮ㄩ棬涓嶅瓨鍦�");
@@ -139,6 +155,16 @@
}
}
+ private void autoPassPurchaseApproveIfNoApprover(ApproveProcessVO approveProcessVO) {
+ if (!Objects.equals(approveProcessVO.getApproveType(), 5)
+ || !StringUtils.hasText(approveProcessVO.getApproveReason())) {
+ throw new RuntimeException("瀹℃牳鐢ㄦ埛涓嶅瓨鍦�");
+ }
+ purchaseLedgerMapper.update(null, new LambdaUpdateWrapper<PurchaseLedger>()
+ .eq(PurchaseLedger::getPurchaseContractNumber, approveProcessVO.getApproveReason())
+ .set(PurchaseLedger::getApprovalStatus, 3));
+ }
+
@Override
public List<SysDept> selectDeptListByDeptIds(Long[] deptIds) {
List<SysDept> sysDeptList = new ArrayList<SysDept>();
@@ -150,11 +176,11 @@
}
@Override
- public IPage<ApproveProcess> listAll(Page page, ApproveProcess approveProcess) {
- IPage<ApproveProcess> approveProcessIPage = approveProcessMapper.listPage(page, approveProcess);
- List<ApproveProcess> records = approveProcessIPage.getRecords();
+ public IPage<ApproveProcessVo> listAll(Page page, ApproveProcess approveProcess) {
+ IPage<ApproveProcessVo> approveProcessIPage = approveProcessMapper.listPage(page, approveProcess);
+ List<ApproveProcessVo> records = approveProcessIPage.getRecords();
- for (ApproveProcess record : records) {
+ for (ApproveProcessVo record : records) {
List<CommonFile> allFiles = new ArrayList<>();
// 閲囪喘瀹℃壒鏌ヨ
@@ -198,6 +224,7 @@
}
record.setCommonFileList(allFiles);
+ record.setStorageBlobVOs(fileUtil.getStorageBlobVOsByRecordTypeAndRecordId(RecordTypeEnum.APPROVE_PROCESS, record.getId()));
}
return approveProcessIPage;
}
@@ -294,17 +321,20 @@
.eq(ApproveProcess::getApproveReason, approveGetAndUpdateVo.getApproveReason())
.last("limit 1");
ApproveProcess approveProcess = approveProcessMapper.selectOne(approveProcessLambdaQueryWrapper);
- if (approveProcess == null) throw new RuntimeException("鈥�");
- String[] split = approveGetAndUpdateVo.getApproveUserIds().split(",");
- if (split.length == 0) {
- throw new RuntimeException("璇烽�夋嫨瀹℃壒浜�");
- }
- List<SysUser> sysUsers = sysUserMapper.selectUserByIds(Arrays.asList(split).stream().map(Long::parseLong).collect(Collectors.toList()));
+
+ if (approveProcess == null) throw new RuntimeException("璇烽�夋嫨瀹℃壒浜�");
+ //鏌ヨ瀹℃壒閰嶇疆
+ List<ApproveProcessConfigNode> approveProcessConfig = approveProcessConfigNodeMapper.selectList(new LambdaQueryWrapper<ApproveProcessConfigNode>().eq(ApproveProcessConfigNode::getApproveType, approveGetAndUpdateVo.getApproveType()));
+ List<Long> configNodeIds = approveProcessConfig.stream()
+ .sorted(Comparator.comparing(ApproveProcessConfigNode::getNodeOrder))
+ .map(ApproveProcessConfigNode::getApproverId)
+ .collect(Collectors.toList());
+ List<SysUser> sysUsers = sysUserMapper.selectUserByIds(configNodeIds);
if (CollectionUtils.isEmpty(sysUsers)) throw new RuntimeException("璇烽�夋嫨瀹℃壒浜�");
//瀹℃牳涓笉鍙互缂栬緫瀹℃牳浜�
if (approveProcess.getApproveStatus() != 1) {
- approveProcess.setApproveUserCurrentId(Long.parseLong(split[0]));
- approveProcess.setApproveUserCurrentName(sysUsers.stream().filter(user -> user.getUserId().equals(Long.parseLong(split[0]))).collect(Collectors.toList()).get(0).getNickName());
+ approveProcess.setApproveUserCurrentId(configNodeIds.get(0));
+ approveProcess.setApproveUserCurrentName(sysUsers.stream().filter(user -> user.getUserId().equals(configNodeIds.get(0))).collect(Collectors.toList()).get(0).getNickName());
}
if (approveGetAndUpdateVo.getApproveStatus() != null) {
approveProcess.setApproveStatus(approveGetAndUpdateVo.getApproveStatus());
@@ -316,21 +346,24 @@
LambdaQueryWrapper<ApproveNode> approveNodeLambdaQueryWrapper = new LambdaQueryWrapper<>();
approveNodeLambdaQueryWrapper.eq(ApproveNode::getApproveProcessId, approveProcess.getApproveId())
.eq(ApproveNode::getDeleteFlag, 0)
-// .eq(ApproveNode::getTenantId, SecurityUtils.getLoginUser().getTenantId())
.orderByAsc(ApproveNode::getApproveNodeOrder);
approveNodeMapper.delete(approveNodeLambdaQueryWrapper);
+ //鏌ヨ瀹℃壒閰嶇疆
+ approveGetAndUpdateVo.setApproveUserIds(configNodeIds.stream()
+ .map(String::valueOf)
+ .collect(Collectors.joining(",")));
approveNodeService.initApproveNodes(approveGetAndUpdateVo.getApproveUserIds(), approveProcess.getApproveId(), approveProcess.getTenantId());
/*娑堟伅閫氱煡*/
- String id = approveProcess.getApproveUserIds().split(",")[0];
+ Long id = configNodeIds.get(0);
if (approveProcess.getApproveType()==8){
sysNoticeService.simpleNoticeByUser(approveProcessType(approveProcess.getApproveType()),
approveProcess.getApproveId() + "娴佺▼缂栧彿鐨勫鎵归渶瑕佹偍瀹℃牳!!!!!",
- Arrays.asList(Long.valueOf(id)),
+ Collections.singletonList(id),
"/safeProduction/safeWorkApproval?approveType=" + approveProcess.getApproveType() + "&approveId=" + approveProcess.getApproveId());
}else {
sysNoticeService.simpleNoticeByUser(approveProcessType(approveProcess.getApproveType()),
approveProcess.getApproveId() + "娴佺▼缂栧彿鐨勫鎵归渶瑕佹偍瀹℃牳!!!!!",
- Arrays.asList(Long.valueOf(id)),
+ Collections.singletonList(id),
"/collaborativeApproval/approvalProcess?approveType=" + approveProcess.getApproveType() + "&approveId=" + approveProcess.getApproveId());
}
}
--
Gitblit v1.9.3