From 1ca5584d7e3200a9af65a099bd26d3593e2ba702 Mon Sep 17 00:00:00 2001
From: liyong <18434998025@163.com>
Date: 星期四, 07 五月 2026 14:36:08 +0800
Subject: [PATCH] 迁移pro
---
src/main/java/com/ruoyi/approve/service/impl/ApproveProcessServiceImpl.java | 204 +++++++++++++++++++++++++++------------------------
1 files changed, 108 insertions(+), 96 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 a624661..9f505aa 100644
--- a/src/main/java/com/ruoyi/approve/service/impl/ApproveProcessServiceImpl.java
+++ b/src/main/java/com/ruoyi/approve/service/impl/ApproveProcessServiceImpl.java
@@ -1,24 +1,31 @@
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;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+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.utils.DailyRedisCounter;
-import com.ruoyi.approve.vo.ApproveGetAndUpdateVo;
-import com.ruoyi.approve.vo.ApproveProcessVO;
+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;
@@ -32,80 +39,74 @@
import com.ruoyi.sales.pojo.CommonFile;
import com.ruoyi.sales.pojo.ShippingInfo;
import com.ruoyi.sales.service.impl.CommonFileServiceImpl;
-import lombok.AllArgsConstructor;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.BeanUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.context.annotation.Lazy;
-import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
import java.io.IOException;
-import java.text.ParseException;
import java.text.SimpleDateFormat;
-import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Date;
-import java.util.List;
+import java.util.*;
import java.util.stream.Collectors;
@Service
-//@RequiredArgsConstructor
+@RequiredArgsConstructor
public class ApproveProcessServiceImpl extends ServiceImpl<ApproveProcessMapper, ApproveProcess> implements IApproveProcessService {
private static final DateTimeFormatter DATE_FORMAT = DateTimeFormatter.ofPattern("yyyyMMdd");
- @Autowired
- private StringRedisTemplate redisTemplate;
- @Autowired
- private DailyRedisCounter dailyRedisCounter;
- @Autowired
- private SysDeptMapper sysDeptMapper;
- @Autowired
- private IApproveNodeService approveNodeService;
- @Autowired
- private SysUserMapper sysUserMapper;
- @Autowired
- private ApproveProcessMapper approveProcessMapper;
- @Autowired
- private TempFileServiceImpl tempFileService;
- @Autowired
- private CommonFileMapper commonFileMapper;
- @Autowired
- private CommonFileServiceImpl commonFileService;
- @Autowired
- private ISysNoticeService sysNoticeService;
+ private final SysDeptMapper sysDeptMapper;
+ private final IApproveNodeService approveNodeService;
+ private final SysUserMapper sysUserMapper;
+ private final ApproveProcessMapper approveProcessMapper;
+ private final CommonFileMapper commonFileMapper;
+ private final CommonFileServiceImpl commonFileService;
+ private final ISysNoticeService sysNoticeService;
+ private final PurchaseLedgerMapper purchaseLedgerMapper;
+ 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 {
- SysUser sysUser = sysUserMapper.selectUserById(approveProcessVO.getApproveUser());
- SysDept sysDept = sysDeptMapper.selectDeptById(approveProcessVO.getApproveDeptId());
- String[] split = approveProcessVO.getApproveUserIds().split(",");
- List<Long> longList = Arrays.stream(split)
- .map(Long::valueOf) // 灏嗘瘡涓� String 杞崲涓� Long
+ 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)
+ .filter(Objects::nonNull)
.collect(Collectors.toList());
- List<SysUser> sysUsers = sysUserMapper.selectUserByIds(longList);
+ 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("閮ㄩ棬涓嶅瓨鍦�");
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;
+// 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();
- approveProcess.setApproveId(approveID);
- approveProcess.setApproveUser(approveProcessVO.getApproveUser());
+ String no = OrderUtils.countTodayByCreateTime(approveProcessMapper, "", "approve_id");
+ approveProcess.setApproveId(no);
+ approveProcess.setApproveUser(sysUser.getUserId());
approveProcess.setApproveUserName(sysUser.getNickName());
- approveProcess.setApproveDeptId(approveProcessVO.getApproveDeptId());
+ 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()) ? null : 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());
@@ -117,11 +118,10 @@
approveProcess.setApproveType(approveProcessVO.getApproveType());
approveProcess.setCreateTime(LocalDateTime.now());
approveProcess.setTenantId(approveProcessVO.getApproveDeptId());
- approveProcess.setApproveUserIds(approveProcessVO.getApproveUserIds());
- approveProcess.setApproveUserCurrentId(longList.get(0));
+ approveProcess.setApproveUserCurrentId(nodeIds.get(0));
approveProcess.setApproveUserCurrentName(sysUsers
.stream()
- .filter(SysUser -> SysUser.getUserId().equals(longList.get(0)))
+ .filter(SysUser -> SysUser.getUserId().equals(nodeIds.get(0)))
.collect(Collectors.toList())
.get(0)
.getNickName());
@@ -133,22 +133,35 @@
}
save(approveProcess);
//鍒濆鍖栧鎵硅妭鐐�
- approveNodeService.initApproveNodes(approveProcessVO.getApproveUserIds(), approveID, approveProcessVO.getApproveDeptId());
+ 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());
+ fileUtil.saveStorageAttachment(ApplicationTypeEnum.FILE, RecordTypeEnum.APPROVE_PROCESS, approveProcess.getId(), approveProcessVO.getStorageBlobDTOList());
/*娑堟伅閫氱煡*/
- String id = approveProcessVO.getApproveUserIds().split(",")[0];
- if (approveProcess.getApproveType()==8){
+ Long id = nodeIds.getFirst();
+ 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());
}
+ }
+
+ 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
@@ -161,18 +174,12 @@
return sysDeptList;
}
- @Autowired
- private PurchaseLedgerMapper purchaseLedgerMapper;
-
- @Autowired
- private ShippingInfoMapper shippingInfoMapper;
-
@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<>();
// 閲囪喘瀹℃壒鏌ヨ
@@ -216,6 +223,7 @@
}
record.setCommonFileList(allFiles);
+ record.setStorageBlobVOs(fileUtil.getStorageBlobVOsByRecordTypeAndRecordId(RecordTypeEnum.APPROVE_PROCESS, record.getId()));
}
return approveProcessIPage;
}
@@ -286,9 +294,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()));
}
}
@@ -296,16 +304,12 @@
@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;
}
- @Autowired
- private ApproveNodeMapper approveNodeMapper;
// 鎶ヤ环瀹℃壒缂栬緫瀹℃牳浜�
public void updateApproveUser(ApproveGetAndUpdateVo approveGetAndUpdateVo) {
@@ -314,17 +318,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()));
+ //鏌ヨ瀹℃壒閰嶇疆
+ 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());
@@ -336,21 +343,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());
}
}
@@ -404,15 +414,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)),
@@ -441,6 +451,8 @@
return "鍙戣揣瀹℃壒";
case 8:
return "鍗遍櫓浣滀笟瀹℃壒";
+ case 9:
+ return "鍔炲叕鐢ㄥ搧瀹℃壒";
}
return null;
}
--
Gitblit v1.9.3