From 68d4b9484a3d1874703d79d87f8015998213d9a8 Mon Sep 17 00:00:00 2001
From: zss <zss@example.com>
Date: 星期一, 12 一月 2026 14:35:00 +0800
Subject: [PATCH] 消息通知与协同审批联动
---
src/main/java/com/ruoyi/approve/service/impl/ApproveNodeServiceImpl.java | 57 ++++++++++++++++--
src/main/java/com/ruoyi/approve/service/impl/ApproveProcessServiceImpl.java | 32 ++++++++++
src/main/java/com/ruoyi/approve/mapper/ApproveNodeMapper.java | 2
src/main/java/com/ruoyi/approve/pojo/ApproveProcess.java | 4
src/main/java/com/ruoyi/approve/mapper/ApproveProcessMapper.java | 2
src/main/java/com/ruoyi/project/system/service/impl/SysNoticeServiceImpl.java | 21 +++---
src/main/java/com/ruoyi/project/system/service/ISysNoticeService.java | 10 +-
src/main/java/com/ruoyi/sales/mapper/CommonFileMapper.java | 2
8 files changed, 105 insertions(+), 25 deletions(-)
diff --git a/src/main/java/com/ruoyi/approve/mapper/ApproveNodeMapper.java b/src/main/java/com/ruoyi/approve/mapper/ApproveNodeMapper.java
index 648d04a..59cf69e 100644
--- a/src/main/java/com/ruoyi/approve/mapper/ApproveNodeMapper.java
+++ b/src/main/java/com/ruoyi/approve/mapper/ApproveNodeMapper.java
@@ -2,6 +2,7 @@
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.approve.pojo.ApproveNode;
+import org.apache.ibatis.annotations.Mapper;
/**
* @author Administrator
@@ -9,6 +10,7 @@
* @createDate 2025-07-08 16:50:15
* @Entity com.ruoyi.approve.pojo.ApproveNode
*/
+@Mapper
public interface ApproveNodeMapper extends BaseMapper<ApproveNode> {
}
diff --git a/src/main/java/com/ruoyi/approve/mapper/ApproveProcessMapper.java b/src/main/java/com/ruoyi/approve/mapper/ApproveProcessMapper.java
index 32c6be0..bddde19 100644
--- a/src/main/java/com/ruoyi/approve/mapper/ApproveProcessMapper.java
+++ b/src/main/java/com/ruoyi/approve/mapper/ApproveProcessMapper.java
@@ -4,6 +4,7 @@
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.approve.pojo.ApproveProcess;
+import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
/**
@@ -12,6 +13,7 @@
* @createDate 2025-07-08 16:44:05
* @Entity com.ruoyi.approve.pojo.ApproveProcess
*/
+@Mapper
public interface ApproveProcessMapper extends BaseMapper<ApproveProcess> {
IPage<ApproveProcess> listPage(Page page,@Param("req") ApproveProcess approveProcess);
diff --git a/src/main/java/com/ruoyi/approve/pojo/ApproveProcess.java b/src/main/java/com/ruoyi/approve/pojo/ApproveProcess.java
index 64177e8..e468919 100644
--- a/src/main/java/com/ruoyi/approve/pojo/ApproveProcess.java
+++ b/src/main/java/com/ruoyi/approve/pojo/ApproveProcess.java
@@ -24,7 +24,7 @@
@ApiModel
public class ApproveProcess{
/**
- *
+ *
*/
@TableId(type = IdType.AUTO)
private Long id;
@@ -168,4 +168,4 @@
private static final long serialVersionUID = 1L;
-}
\ No newline at end of file
+}
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 f5919de..09c94a7 100644
--- a/src/main/java/com/ruoyi/approve/service/impl/ApproveNodeServiceImpl.java
+++ b/src/main/java/com/ruoyi/approve/service/impl/ApproveNodeServiceImpl.java
@@ -2,12 +2,15 @@
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.approve.mapper.ApproveNodeMapper;
import com.ruoyi.approve.mapper.ApproveProcessMapper;
import com.ruoyi.approve.pojo.ApproveNode;
import com.ruoyi.approve.pojo.ApproveProcess;
import com.ruoyi.approve.service.IApproveNodeService;
+import com.ruoyi.approve.vo.ApproveProcessVO;
import com.ruoyi.common.enums.FileNameType;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.device.mapper.DeviceRepairMapper;
@@ -15,6 +18,7 @@
import com.ruoyi.other.service.impl.TempFileServiceImpl;
import com.ruoyi.project.system.domain.SysUser;
import com.ruoyi.project.system.mapper.SysUserMapper;
+import com.ruoyi.project.system.service.ISysNoticeService;
import com.ruoyi.sales.mapper.CommonFileMapper;
import com.ruoyi.sales.pojo.CommonFile;
import com.ruoyi.sales.service.impl.CommonFileServiceImpl;
@@ -25,6 +29,7 @@
import java.io.IOException;
import java.time.LocalDateTime;
+import java.util.Arrays;
import java.util.Comparator;
import java.util.Date;
import java.util.List;
@@ -42,6 +47,8 @@
@Autowired
private TempFileServiceImpl tempFileService;
+ @Autowired
+ private ISysNoticeService sysNoticeService;
@Autowired
private CommonFileMapper fileMapper;
@@ -146,15 +153,16 @@
approveProcessMapper.updateById(approveProcess);
DeviceRepair deviceRepair = deviceRepairMapper.selectById(approveProcess.getDeviceRepairId());
- if(deviceRepair == null) throw new RuntimeException("璁惧鎶ヤ慨涓嶅瓨鍦�");
- if(approveProcess.getApproveStatus().equals(2)){
- // 鍚屾剰
- deviceRepair.setStatus(1);
- }else if(approveProcess.getApproveStatus().equals(3)){
- // 鎷掔粷
- deviceRepair.setStatus(2);
+ if(ObjectUtils.isNotNull(deviceRepair)) {
+ if(approveProcess.getApproveStatus().equals(2)){
+ // 鍚屾剰
+ deviceRepair.setStatus(1);
+ }else if(approveProcess.getApproveStatus().equals(3)){
+ // 鎷掔粷
+ deviceRepair.setStatus(2);
+ }
+ deviceRepairMapper.updateById(deviceRepair);
}
- deviceRepairMapper.updateById(deviceRepair);
// 缁戝畾闄勪欢
if(!CollectionUtils.isEmpty(approveNode.getTempFileIds()) && approveNode.getApproveNodeStatus() == 1){
tempFileService.migrateTempFilesToFormal(approveNode.getId(), approveNode.getTempFileIds(), FileNameType.ApproveNode.getValue());
@@ -167,6 +175,18 @@
switch (approveNode.getApproveNodeStatus()){
case 1:
updateApproveProcessStatus(approveNode, Boolean.TRUE.equals(approveNode.getIsLast()) ? 2 : 1);
+ /*娑堟伅閫氱煡*/
+ Integer nodeOrder = approveNode.getApproveNodeOrder();
+ ApproveProcess approveProcess = approveProcessMapper.selectList(Wrappers.<ApproveProcess>lambdaQuery()
+ .eq(ApproveProcess::getApproveId, approveNode.getApproveProcessId())).get(0);
+ if (approveProcess.getApproveUserIds().split(",").length > nodeOrder){
+ String id = approveProcess.getApproveUserIds().split(",")[nodeOrder];
+ sysNoticeService.simpleNoticeByUser(approveProcessType(approveProcess.getApproveType()),
+ approveNode.getApproveProcessId()+"娴佺▼缂栧彿鐨勫鎵归渶瑕佹偍瀹℃牳!!!!!",
+ Arrays.asList(Long.valueOf(id)),
+ approveNode.getTenantId(),
+ "/collaborativeApproval/approvalProcess?approveType="+approveProcess.getApproveType()+"&approveId="+approveNode.getApproveProcessId());
+ }
break;
case 2:
updateApproveProcessStatus(approveNode, 3);
@@ -186,4 +206,25 @@
update(queryWrapper);
}
+ //瀹℃壒绫诲瀷鑾峰彇(涓庡墠绔〉闈㈠搴�)
+ private String approveProcessType(Integer approveType){
+ switch (approveType){
+ case 1:
+ return "鍏嚭绠$悊";
+ case 2:
+ return "璇峰亣绠$悊";
+ case 3:
+ return "鍑哄樊绠$悊";
+ case 4:
+ return "鎶ラ攢绠$悊";
+ case 5:
+ return "閲囪喘瀹℃壒";
+ case 6:
+ return "鎶ヤ环瀹℃壒";
+ case 7:
+ return "鍑哄簱瀹℃壒";
+ }
+ return null;
+ }
+
}
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 404d594..e7478a9 100644
--- a/src/main/java/com/ruoyi/approve/service/impl/ApproveProcessServiceImpl.java
+++ b/src/main/java/com/ruoyi/approve/service/impl/ApproveProcessServiceImpl.java
@@ -22,6 +22,7 @@
import com.ruoyi.project.system.domain.SysUser;
import com.ruoyi.project.system.mapper.SysDeptMapper;
import com.ruoyi.project.system.mapper.SysUserMapper;
+import com.ruoyi.project.system.service.ISysNoticeService;
import com.ruoyi.sales.mapper.CommonFileMapper;
import com.ruoyi.sales.pojo.CommonFile;
import lombok.AllArgsConstructor;
@@ -61,6 +62,7 @@
private final ApproveProcessMapper approveProcessMapper;
private final TempFileServiceImpl tempFileService;
private final CommonFileMapper commonFileMapper;
+ private final ISysNoticeService sysNoticeService;
@Override
public void addApprove(ApproveProcessVO approveProcessVO) throws Exception {
@@ -116,6 +118,13 @@
approveNodeService.initApproveNodes(approveProcessVO.getApproveUserIds(),approveID,approveProcessVO.getApproveDeptId());
// 闄勪欢缁戝畾
tempFileService.migrateTempFilesToFormal(approveProcess.getId(), approveProcessVO.getTempFileIds(), FileNameType.ApproveProcess.getValue());
+ /*娑堟伅閫氱煡*/
+ String id = approveProcessVO.getApproveUserIds().split(",")[0];
+ sysNoticeService.simpleNoticeByUser(approveProcessType(approveProcessVO.getApproveType()),
+ approveID+"娴佺▼缂栧彿鐨勫鎵归渶瑕佹偍瀹℃牳!!!!!",
+ Arrays.asList(Long.valueOf(id)),
+ approveProcessVO.getApproveDeptId(),
+ "/collaborativeApproval/approvalProcess?approveType="+approveProcessVO.getApproveType()+"&approveId="+approveID);
}
@Override
@@ -224,4 +233,27 @@
}
+ //瀹℃壒绫诲瀷鑾峰彇(涓庡墠绔〉闈㈠搴�)
+ private String approveProcessType(Integer approveType){
+ switch (approveType){
+ case 1:
+ return "鍏嚭绠$悊";
+ case 2:
+ return "璇峰亣绠$悊";
+ case 3:
+ return "鍑哄樊绠$悊";
+ case 4:
+ return "鎶ラ攢绠$悊";
+ case 5:
+ return "閲囪喘瀹℃壒";
+ case 6:
+ return "鎶ヤ环瀹℃壒";
+ case 7:
+ return "鍑哄簱瀹℃壒";
+ }
+ return null;
+ }
+
+
+
}
diff --git a/src/main/java/com/ruoyi/project/system/service/ISysNoticeService.java b/src/main/java/com/ruoyi/project/system/service/ISysNoticeService.java
index 8415fba..917d9aa 100644
--- a/src/main/java/com/ruoyi/project/system/service/ISysNoticeService.java
+++ b/src/main/java/com/ruoyi/project/system/service/ISysNoticeService.java
@@ -73,7 +73,7 @@
* @param needPushRoles 鍙戦�佺殑瑙掕壊
* @param jumpPath 璺宠浆鍦板潃
*/
- void simpleNoticeByRoles(final String title, final String message, final List<String> needPushRoles,
+ void simpleNoticeByRoles(final String title, final String message, final Long tenantId,final List<String> needPushRoles,
final String jumpPath);
/**
@@ -83,17 +83,17 @@
* @param needPerms 鍙戦�佺殑鏉冮檺鑰� 宸插寘鍚笂绾�
* @param jumpPath 璺宠浆鍦板潃
*/
- void simpleNoticeByPerms(final String title, final String message, final List<String> needPerms,
+ void simpleNoticeByPerms(final String title, final String message, final Long tenantId,final List<String> needPerms,
final String jumpPath);
/**
* 閫氳繃鎸囧畾浜哄彂閫佹彁閱�
* @param title 鏍囬
* @param message 娑堟伅
+ * @param tenantId 绉熸埛id
* @param jumpPath 璺宠浆鍦板潃
*/
- void simpleNoticeByUser(final String title, final String message, Long consigneeId,
- final String jumpPath);
+ void simpleNoticeByUser(final String title, final String message, final List<Long> consigneeId, final Long tenantId, final String jumpPath);
/**
* 閫氳繃鎵�鏈変汉 鍙戦�佹彁閱�
@@ -101,7 +101,7 @@
* @param message 娑堟伅
* @param jumpPath 璺宠浆鍦板潃
*/
- void simpleNoticeAll(final String title, final String message, final String jumpPath);
+ void simpleNoticeAll(final String title, final String message,final Long tenantId,final String jumpPath);
void insertBatch(final List<SysNotice> notices);
}
diff --git a/src/main/java/com/ruoyi/project/system/service/impl/SysNoticeServiceImpl.java b/src/main/java/com/ruoyi/project/system/service/impl/SysNoticeServiceImpl.java
index f600e91..79a5750 100644
--- a/src/main/java/com/ruoyi/project/system/service/impl/SysNoticeServiceImpl.java
+++ b/src/main/java/com/ruoyi/project/system/service/impl/SysNoticeServiceImpl.java
@@ -126,7 +126,7 @@
}
@Override
- public void simpleNoticeByRoles(final String title, String message, List<String> needPushRoles,
+ public void simpleNoticeByRoles(final String title, String message, Long tenantId, List<String> needPushRoles,
final String jumpPath) {
Long userId = SecurityUtils.getUserId();
if (StrUtil.isBlank(message) || CollectionUtils.isEmpty(needPushRoles)) {
@@ -136,34 +136,34 @@
rolesWithAdmin.add("绠$悊鍛�");
List<SysNotice> collect = rolesWithAdmin.stream()
.flatMap(it -> userMapper.getUserByRole(it).stream())
- .map(it -> convertSysNotice(title, message, it, jumpPath, userId))
+ .map(it -> convertSysNotice(title, message, it,tenantId, jumpPath, userId))
.collect(Collectors.toList());
sysNoticeService.insertBatch(collect);
}
@Override
- public void simpleNoticeByPerms(String title, String message, List<String> needPerms,
+ public void simpleNoticeByPerms(String title, String message, Long tenantId, List<String> needPerms,
String jumpPath) {
Long userId = SecurityUtils.getLoginUser().getUserId();
if (StrUtil.isBlank(message) || CollectionUtils.isEmpty(needPerms)) {
return;
}
- List<SysNotice> collect = userMapper.getUserByPerms(needPerms).stream().map(it -> convertSysNotice(title, message, it, jumpPath, userId)).collect(Collectors.toList());
+ List<SysNotice> collect = userMapper.getUserByPerms(needPerms).stream().map(it -> convertSysNotice(title, message, it,tenantId, jumpPath, userId)).collect(Collectors.toList());
sysNoticeService.insertBatch(collect);
}
@Override
- public void simpleNoticeByUser(String title, String message, Long consigneeId,
+ public void simpleNoticeByUser(String title, String message, List<Long> consigneeId, Long tenantId,
String jumpPath) {
Long userId = SecurityUtils.getLoginUser().getUserId();
- SysNotice sysNotice = convertSysNotice(title, message, consigneeId, jumpPath, userId);
- sysNoticeService.save(sysNotice);
+ List<SysNotice> sysNotices = consigneeId.stream().map(it -> convertSysNotice(title, message, it,tenantId, jumpPath, userId)).collect(Collectors.toList());
+ sysNoticeService.saveBatch(sysNotices);
}
@Override
- public void simpleNoticeAll(String title, String message, String jumpPath) {
+ public void simpleNoticeAll(String title, String message, Long tenantId,String jumpPath) {
Long userId = SecurityUtils.getLoginUser().getUserId();
- List<SysNotice> collect = userMapper.selectList(null).stream().map(it -> convertSysNotice(title, message, it.getUserId(), jumpPath, userId)).collect(Collectors.toList());
+ List<SysNotice> collect = userMapper.selectList(null).stream().map(it -> convertSysNotice(title, message, it.getUserId(),tenantId, jumpPath, userId)).collect(Collectors.toList());
sysNoticeService.saveBatch(collect);
}
@@ -179,7 +179,7 @@
}
- private SysNotice convertSysNotice(String title,String message,Long consigneeId,String jumpPath,Long currentUserId) {
+ private SysNotice convertSysNotice(String title,String message,Long consigneeId, Long tenantId,String jumpPath,Long currentUserId) {
SysNotice sysNotice = new SysNotice();
sysNotice.setNoticeType("1");
sysNotice.setNoticeTitle(title);//鏍囬
@@ -188,6 +188,7 @@
sysNotice.setConsigneeId(consigneeId);
sysNotice.setSenderId(currentUserId);
sysNotice.setJumpPath(jumpPath);
+ sysNotice.setTenantId(tenantId);
return sysNotice;
}
}
diff --git a/src/main/java/com/ruoyi/sales/mapper/CommonFileMapper.java b/src/main/java/com/ruoyi/sales/mapper/CommonFileMapper.java
index fa2fc39..69de996 100644
--- a/src/main/java/com/ruoyi/sales/mapper/CommonFileMapper.java
+++ b/src/main/java/com/ruoyi/sales/mapper/CommonFileMapper.java
@@ -3,6 +3,8 @@
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.sales.pojo.CommonFile;
+import org.apache.ibatis.annotations.Mapper;
+@Mapper
public interface CommonFileMapper extends BaseMapper<CommonFile> {
}
--
Gitblit v1.9.3