From 4635770544e2d57416ad88a8983ee293919f5fec Mon Sep 17 00:00:00 2001
From: liyong <18434998025@163.com>
Date: 星期一, 25 五月 2026 09:25:36 +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 | 125 +++++++++++++++++++++--------------------
1 files changed, 65 insertions(+), 60 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 9f505aa..c356708 100644
--- a/src/main/java/com/ruoyi/approve/service/impl/ApproveProcessServiceImpl.java
+++ b/src/main/java/com/ruoyi/approve/service/impl/ApproveProcessServiceImpl.java
@@ -1,7 +1,6 @@
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;
@@ -48,15 +47,12 @@
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
-import java.time.format.DateTimeFormatter;
import java.util.*;
import java.util.stream.Collectors;
@Service
@RequiredArgsConstructor
public class ApproveProcessServiceImpl extends ServiceImpl<ApproveProcessMapper, ApproveProcess> implements IApproveProcessService {
- private static final DateTimeFormatter DATE_FORMAT = DateTimeFormatter.ofPattern("yyyyMMdd");
-
private final SysDeptMapper sysDeptMapper;
private final IApproveNodeService approveNodeService;
private final SysUserMapper sysUserMapper;
@@ -68,6 +64,7 @@
private final ShippingInfoMapper shippingInfoMapper;
private final ApproveNodeMapper approveNodeMapper;
private final ApproveProcessConfigNodeService approveProcessConfigNodeService;
+ private final ApproveBusinessStatusService approveBusinessStatusService;
private final FileUtil fileUtil;
private final ApproveProcessConfigNodeMapper approveProcessConfigNodeMapper;
@@ -75,70 +72,36 @@
public void addApprove(ApproveProcessVO approveProcessVO) throws Exception {
SysUser sysUser = SecurityUtils.getLoginUser().getUser();
SysDept sysDept = sysDeptMapper.selectDeptById(SecurityUtils.getLoginUser().getCurrentDeptId());
- List<ApproveProcessConfigNodeVo> list = approveProcessConfigNodeService.listNode(approveProcessVO.getApproveType());
+ if (sysDept == null) throw new RuntimeException("閮ㄩ棬涓嶅瓨鍦�");
+ if (sysUser == null) throw new RuntimeException("鐢宠浜轰笉瀛樺湪");
+
+ List<ApproveProcessConfigNodeVo> list = Optional.ofNullable(approveProcessConfigNodeService.listNode(approveProcessVO.getApproveType()))
+ .orElse(Collections.emptyList());
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);
+ approveBusinessStatusService.syncBusinessStatus(approveProcessVO.getApproveType(), approveProcessVO.getApproveReason(), 2);
return;
}
+
List<SysUser> sysUsers = sysUserMapper.selectUserByIds(nodeIds);
if (CollectionUtils.isEmpty(sysUsers)) throw new RuntimeException("瀹℃牳鐢ㄦ埛涓嶅瓨鍦�");
- if (sysDept == null) throw new RuntimeException("閮ㄩ棬涓嶅瓨鍦�");
- if (sysUser == null) throw new RuntimeException("鐢宠浜轰笉瀛樺湪");
-// String today = LocalDate.now().format(DATE_FORMAT);
-// Long approveId = dailyRedisCounter.incrementAndGetByDb();
-// String formattedCount = String.format("%03d", approveId);
-// //娴佺▼ ID
-// String approveID = today + formattedCount;
- SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
- ApproveProcess approveProcess = new ApproveProcess();
- String no = OrderUtils.countTodayByCreateTime(approveProcessMapper, "", "approve_id");
- approveProcess.setApproveId(no);
- approveProcess.setApproveUser(sysUser.getUserId());
- approveProcess.setApproveUserName(sysUser.getNickName());
- approveProcess.setApproveDeptId(sysDept.getDeptId());
- approveProcess.setApproveUserIds(nodeIds.stream().map(String::valueOf).collect(Collectors.joining(",")));
- approveProcess.setApproveDeptName(sysDept.getDeptName());
- approveProcess.setApproveUserNames(sysUsers.stream().map(SysUser::getNickName).collect(Collectors.joining(",")));
- approveProcess.setApproveTime(StringUtils.isEmpty(approveProcessVO.getApproveTime()) ? new Date() : dateFormat.parse(approveProcessVO.getApproveTime()));
- approveProcess.setApproveReason(approveProcessVO.getApproveReason());
- approveProcess.setDeviceRepairId(approveProcessVO.getDeviceRepairId());
- approveProcess.setMaintenancePrice(approveProcessVO.getMaintenancePrice());
- approveProcess.setPrice(approveProcessVO.getPrice());
- approveProcess.setStartDate(approveProcessVO.getStartDate());
- approveProcess.setEndDate(approveProcessVO.getEndDate());
- approveProcess.setApproveStatus(0);
- approveProcess.setApproveDelete(0);
- approveProcess.setApproveType(approveProcessVO.getApproveType());
- approveProcess.setCreateTime(LocalDateTime.now());
- approveProcess.setTenantId(approveProcessVO.getApproveDeptId());
- approveProcess.setApproveUserCurrentId(nodeIds.get(0));
- approveProcess.setApproveUserCurrentName(sysUsers
- .stream()
- .filter(SysUser -> SysUser.getUserId().equals(nodeIds.get(0)))
- .collect(Collectors.toList())
- .get(0)
- .getNickName());
- // 璁剧疆鐘舵�佷负閲嶆柊鎻愪氦
- if (approveProcessVO.getId() != null) {
- ApproveProcess approveProcess1 = approveProcessMapper.selectById(approveProcessVO.getId());
- approveProcess1.setApproveStatus(4);
- approveProcessMapper.updateById(approveProcess1);
- }
+
+ // 鏈夊鏍镐汉鏃讹紝鎸夋甯稿崗鍚屽鎵规祦绋嬪垱寤哄鎵逛富琛ㄣ�佸鎵硅妭鐐瑰苟閫氱煡棣栦釜瀹℃牳浜恒��
+ ApproveProcess approveProcess = buildApproveProcess(approveProcessVO, sysUser, sysDept, nodeIds, sysUsers, 0);
+ markResubmitted(approveProcessVO);
save(approveProcess);
//鍒濆鍖栧鎵硅妭鐐�
String nodeIdStr = nodeIds.stream()
.map(String::valueOf)
.collect(Collectors.joining(","));
- approveNodeService.initApproveNodes(nodeIdStr, no, approveProcessVO.getApproveDeptId());
+ approveNodeService.initApproveNodes(nodeIdStr, approveProcess.getApproveId(), approveProcessVO.getApproveDeptId());
// 闄勪欢缁戝畾
- fileUtil.saveStorageAttachment(ApplicationTypeEnum.FILE, RecordTypeEnum.APPROVE_PROCESS, approveProcess.getId(), approveProcessVO.getStorageBlobDTOList());
+ fileUtil.saveStorageAttachment(ApplicationTypeEnum.FILE, RecordTypeEnum.APPROVE_PROCESS, approveProcess.getId(), approveProcessVO.getStorageBlobDTOS());
/*娑堟伅閫氱煡*/
Long id = nodeIds.getFirst();
if (approveProcess.getApproveType() == 8) {
@@ -154,14 +117,56 @@
}
}
- private void autoPassPurchaseApproveIfNoApprover(ApproveProcessVO approveProcessVO) {
- if (!Objects.equals(approveProcessVO.getApproveType(), 5)
- || !StringUtils.hasText(approveProcessVO.getApproveReason())) {
- throw new RuntimeException("瀹℃牳鐢ㄦ埛涓嶅瓨鍦�");
+ private ApproveProcess buildApproveProcess(ApproveProcessVO approveProcessVO, SysUser sysUser, SysDept sysDept,
+ List<Long> nodeIds, List<SysUser> sysUsers, Integer approveStatus) throws Exception {
+ SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
+ ApproveProcess approveProcess = new ApproveProcess();
+ String no = OrderUtils.countTodayByCreateTime(approveProcessMapper, "", "approve_id");
+ approveProcess.setApproveId(no);
+ approveProcess.setApproveUser(sysUser.getUserId());
+ approveProcess.setApproveUserName(sysUser.getNickName());
+ approveProcess.setApproveDeptId(sysDept.getDeptId());
+ approveProcess.setApproveDeptName(sysDept.getDeptName());
+ approveProcess.setApproveUserIds(nodeIds.stream().map(String::valueOf).collect(Collectors.joining(",")));
+ approveProcess.setApproveUserNames(sysUsers.stream().map(SysUser::getNickName).collect(Collectors.joining(",")));
+ approveProcess.setApproveTime(StringUtils.isEmpty(approveProcessVO.getApproveTime()) ? new Date() : dateFormat.parse(approveProcessVO.getApproveTime()));
+ approveProcess.setApproveReason(approveProcessVO.getApproveReason());
+ approveProcess.setDeviceRepairId(approveProcessVO.getDeviceRepairId());
+ approveProcess.setMaintenancePrice(approveProcessVO.getMaintenancePrice());
+ approveProcess.setPrice(approveProcessVO.getPrice());
+ approveProcess.setStartDate(approveProcessVO.getStartDate());
+ approveProcess.setEndDate(approveProcessVO.getEndDate());
+ approveProcess.setStartDateTime(approveProcessVO.getStartDateTime());
+ approveProcess.setEndDateTime(approveProcessVO.getEndDateTime());
+ approveProcess.setApproveStatus(approveStatus);
+ approveProcess.setApproveDelete(0);
+ approveProcess.setApproveType(approveProcessVO.getApproveType());
+ approveProcess.setCreateTime(LocalDateTime.now());
+ approveProcess.setTenantId(approveProcessVO.getApproveDeptId());
+ if (!CollectionUtils.isEmpty(nodeIds)) {
+ SysUser currentUser = sysUsers.stream()
+ .filter(user -> user.getUserId().equals(nodeIds.get(0)))
+ .findFirst()
+ .orElseThrow(() -> new RuntimeException("瀹℃牳鐢ㄦ埛涓嶅瓨鍦�"));
+ approveProcess.setApproveUserCurrentId(currentUser.getUserId());
+ approveProcess.setApproveUserCurrentName(currentUser.getNickName());
}
- purchaseLedgerMapper.update(null, new LambdaUpdateWrapper<PurchaseLedger>()
- .eq(PurchaseLedger::getPurchaseContractNumber, approveProcessVO.getApproveReason())
- .set(PurchaseLedger::getApprovalStatus, 3));
+ if (approveStatus.equals(2) || approveStatus.equals(3) || approveStatus.equals(4)) {
+ approveProcess.setApproveOverTime(new Date());
+ }
+ return approveProcess;
+ }
+
+ private void markResubmitted(ApproveProcessVO approveProcessVO) {
+ if (approveProcessVO.getId() == null) {
+ return;
+ }
+ ApproveProcess approveProcess = approveProcessMapper.selectById(approveProcessVO.getId());
+ if (approveProcess == null) {
+ return;
+ }
+ approveProcess.setApproveStatus(4);
+ approveProcessMapper.updateById(approveProcess);
}
@Override
--
Gitblit v1.9.3