From 620bb4712a31791231c4381581f0f60088f079fe Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期三, 27 五月 2026 14:03:45 +0800
Subject: [PATCH] Merge branch 'refs/heads/dev_New_pro' into dev_宁夏_英泽防锈
---
src/main/java/com/ruoyi/approve/service/impl/ApproveProcessServiceImpl.java | 187 +++++++++++++++++++++++++++-------------------
1 files changed, 109 insertions(+), 78 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 3143391..41f71e8 100644
--- a/src/main/java/com/ruoyi/approve/service/impl/ApproveProcessServiceImpl.java
+++ b/src/main/java/com/ruoyi/approve/service/impl/ApproveProcessServiceImpl.java
@@ -6,24 +6,25 @@
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.ruoyi.approve.vo.ApproveProcessVo;
import com.ruoyi.approve.bean.vo.ApproveGetAndUpdateVo;
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.ApplicationTypeEnum;
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;
-import com.ruoyi.other.service.impl.TempFileServiceImpl;
import com.ruoyi.project.system.domain.SysDept;
import com.ruoyi.project.system.domain.SysNotice;
import com.ruoyi.project.system.domain.SysUser;
@@ -46,20 +47,16 @@
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;
private final ApproveProcessMapper approveProcessMapper;
- private final TempFileServiceImpl tempFileService;
private final CommonFileMapper commonFileMapper;
private final CommonFileServiceImpl commonFileService;
private final ISysNoticeService sysNoticeService;
@@ -67,81 +64,109 @@
private final ShippingInfoMapper shippingInfoMapper;
private final ApproveNodeMapper approveNodeMapper;
private final ApproveProcessConfigNodeService approveProcessConfigNodeService;
+ private final ApproveBusinessStatusService approveBusinessStatusService;
private final FileUtil fileUtil;
+ private final ApproveProcessConfigNodeMapper approveProcessConfigNodeMapper;
@Override
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());
- List<Long> nodeIds = list.stream()
- .map(ApproveProcessConfigNodeVo::getApproverId)
- .collect(Collectors.toList());
- 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;
+
+ 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 (CollectionUtils.isEmpty(nodeIds)) {
+ approveBusinessStatusService.syncBusinessStatus(approveProcessVO.getApproveType(), approveProcessVO.getApproveReason(), 2);
+ return;
+ }
+
+ List<SysUser> sysUsers = sysUserMapper.selectUserByIds(nodeIds);
+ if (CollectionUtils.isEmpty(sysUsers)) throw new RuntimeException("瀹℃牳鐢ㄦ埛涓嶅瓨鍦�");
+
+ // 鏈夊鏍镐汉鏃讹紝鎸夋甯稿崗鍚屽鎵规祦绋嬪垱寤哄鎵逛富琛ㄣ�佸鎵硅妭鐐瑰苟閫氱煡棣栦釜瀹℃牳浜恒��
+ 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, approveProcess.getApproveId(), approveProcessVO.getApproveDeptId());
+ // 闄勪欢缁戝畾
+ fileUtil.saveStorageAttachment(ApplicationTypeEnum.FILE, RecordTypeEnum.APPROVE_PROCESS, approveProcess.getId(), approveProcessVO.getStorageBlobDTOS());
+ /*娑堟伅閫氱煡*/
+ Long id = nodeIds.getFirst();
+ if (approveProcess.getApproveType() == 8) {
+ sysNoticeService.simpleNoticeByUser(approveProcessType(approveProcess.getApproveType()),
+ approveProcess.getApproveId() + "娴佺▼缂栧彿鐨勫鎵归渶瑕佹偍瀹℃牳!!!!!",
+ Collections.singletonList(id),
+ "/safeProduction/safeWorkApproval?approveType=" + approveProcess.getApproveType() + "&approveId=" + approveProcess.getApproveId());
+ } else {
+ sysNoticeService.simpleNoticeByUser(approveProcessType(approveProcess.getApproveType()),
+ approveProcess.getApproveId() + "娴佺▼缂栧彿鐨勫鎵归渶瑕佹偍瀹℃牳!!!!!",
+ Collections.singletonList(id),
+ "/collaborativeApproval/approvalProcess?approveType=" + approveProcess.getApproveType() + "&approveId=" + approveProcess.getApproveId());
+ }
+ }
+
+ 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");
+ String no = OrderUtils.countTodayByCreateTime(approveProcessMapper, "", "approve_id", approveProcess.getCreateTime() != null ? approveProcess.getCreateTime() : LocalDateTime.now());
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.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.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.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());
- 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);
+ 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());
}
- save(approveProcess);
- //鍒濆鍖栧鎵硅妭鐐�
- String nodeIdStr = nodeIds.stream()
- .map(String::valueOf)
- .collect(Collectors.joining(","));
- approveNodeService.initApproveNodes(nodeIdStr, no, approveProcessVO.getApproveDeptId());
- // 闄勪欢缁戝畾
- tempFileService.migrateTempFilesToFormal(approveProcess.getId(), approveProcessVO.getTempFileIds(), FileNameType.ApproveProcess.getValue());
- /*娑堟伅閫氱煡*/
- Long id = nodeIds.getFirst();
- if (approveProcess.getApproveType()==8){
- sysNoticeService.simpleNoticeByUser(approveProcessType(approveProcess.getApproveType()),
- approveProcess.getApproveId() + "娴佺▼缂栧彿鐨勫鎵归渶瑕佹偍瀹℃牳!!!!!",
- Collections.singletonList(id),
- "/safeProduction/safeWorkApproval?approveType=" + approveProcess.getApproveType() + "&approveId=" + approveProcess.getApproveId());
- }else {
- sysNoticeService.simpleNoticeByUser(approveProcessType(approveProcess.getApproveType()),
- approveProcess.getApproveId() + "娴佺▼缂栧彿鐨勫鎵归渶瑕佹偍瀹℃牳!!!!!",
- Collections.singletonList(id),
- "/collaborativeApproval/approvalProcess?approveType=" + approveProcess.getApproveType() + "&approveId=" + approveProcess.getApproveId());
+ 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
@@ -274,9 +299,9 @@
// 鍒犻櫎瀵瑰簲鐨勬秷鎭�氱煡
sysNoticeService.remove(new LambdaQueryWrapper<SysNotice>()
- .eq(SysNotice::getNoticeTitle, approveProcessType(latestProcess.getApproveType()))
- .eq(SysNotice::getSenderId, latestProcess.getApproveUser())
- .apply("CAST(notice_content AS CHAR) LIKE CONCAT('%', {0}, '%')", latestProcess.getApproveId()));
+ .eq(SysNotice::getNoticeTitle, approveProcessType(latestProcess.getApproveType()))
+ .eq(SysNotice::getSenderId, latestProcess.getApproveUser())
+ .apply("CAST(notice_content AS CHAR) LIKE CONCAT('%', {0}, '%')", latestProcess.getApproveId()));
}
}
@@ -284,11 +309,9 @@
@Override
public ApproveProcess getApproveById(String id) {
ApproveProcess one = approveProcessMapper.selectList(Wrappers.<ApproveProcess>lambdaQuery()
- .eq(ApproveProcess::getApproveId,id)
- .eq(ApproveProcess::getApproveDelete,0)).get(0);
- one.setCommonFileList(commonFileMapper.selectList(new LambdaQueryWrapper<CommonFile>()
- .eq(CommonFile::getCommonId, one.getId())
- .eq(CommonFile::getType, FileNameType.ApproveProcess.getValue())));
+ .eq(ApproveProcess::getApproveId, id)
+ .eq(ApproveProcess::getApproveDelete, 0)).get(0);
+ one.setStorageBlobVOS(fileUtil.getStorageBlobVOsByRecordTypeAndRecordId(RecordTypeEnum.APPROVE_PROCESS, one.getId()));
return one;
}
@@ -300,17 +323,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());
@@ -322,21 +348,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];
- if (approveProcess.getApproveType()==8){
+ 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 {
+ } else {
sysNoticeService.simpleNoticeByUser(approveProcessType(approveProcess.getApproveType()),
approveProcess.getApproveId() + "娴佺▼缂栧彿鐨勫鎵归渶瑕佹偍瀹℃牳!!!!!",
- Arrays.asList(Long.valueOf(id)),
+ Collections.singletonList(id),
"/collaborativeApproval/approvalProcess?approveType=" + approveProcess.getApproveType() + "&approveId=" + approveProcess.getApproveId());
}
}
@@ -390,15 +419,15 @@
// approveNodeMapper.updateById(approveNode);
// i++;
// }
- tempFileService.migrateTempFilesToFormal(approve.getId(), approveGetAndUpdateVo.getTempFileIds(), FileNameType.ApproveProcess.getValue());
+ fileUtil.saveStorageAttachment(ApplicationTypeEnum.FILE, RecordTypeEnum.APPROVE_PROCESS, approve.getId(), approveGetAndUpdateVo.getStorageBlobDTOS());
/*娑堟伅閫氱煡*/
String id = approve.getApproveUserIds().split(",")[0];
- if (approve.getApproveType()==8){
+ if (approve.getApproveType() == 8) {
sysNoticeService.simpleNoticeByUser(approveProcessType(approve.getApproveType()),
approve.getApproveId() + "娴佺▼缂栧彿鐨勫鎵归渶瑕佹偍瀹℃牳!!!!!",
Arrays.asList(Long.valueOf(id)),
"/safeProduction/safeWorkApproval?approveType=" + approve.getApproveType() + "&approveId=" + approve.getApproveId());
- }else {
+ } else {
sysNoticeService.simpleNoticeByUser(approveProcessType(approve.getApproveType()),
approve.getApproveId() + "娴佺▼缂栧彿鐨勫鎵归渶瑕佹偍瀹℃牳!!!!!",
Arrays.asList(Long.valueOf(id)),
@@ -427,6 +456,8 @@
return "鍙戣揣瀹℃壒";
case 8:
return "鍗遍櫓浣滀笟瀹℃壒";
+ case 9:
+ return "鍔炲叕鐢ㄥ搧瀹℃壒";
}
return null;
}
--
Gitblit v1.9.3