From b82302273a3c11efe9430600e5c3cb64ddf285ce Mon Sep 17 00:00:00 2001
From: gongchunyi <deslre0381@gmail.com>
Date: 星期四, 12 二月 2026 10:40:19 +0800
Subject: [PATCH] fix: 采购台账、发货审批附件查询错误

---
 src/main/java/com/ruoyi/approve/service/impl/ApproveProcessServiceImpl.java |  212 +++++++++++++++++++++++++++++++++++++++++------------
 1 files changed, 164 insertions(+), 48 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 48a3e9f..a624661 100644
--- a/src/main/java/com/ruoyi/approve/service/impl/ApproveProcessServiceImpl.java
+++ b/src/main/java/com/ruoyi/approve/service/impl/ApproveProcessServiceImpl.java
@@ -3,6 +3,7 @@
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 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.mapper.ApproveNodeMapper;
@@ -24,8 +25,13 @@
 import com.ruoyi.project.system.mapper.SysDeptMapper;
 import com.ruoyi.project.system.mapper.SysUserMapper;
 import com.ruoyi.project.system.service.ISysNoticeService;
+import com.ruoyi.purchase.mapper.PurchaseLedgerMapper;
+import com.ruoyi.purchase.pojo.PurchaseLedger;
 import com.ruoyi.sales.mapper.CommonFileMapper;
+import com.ruoyi.sales.mapper.ShippingInfoMapper;
 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;
@@ -49,21 +55,30 @@
 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");
 
-    private final StringRedisTemplate redisTemplate;
-
-    private final DailyRedisCounter dailyRedisCounter;
-
-    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 ISysNoticeService sysNoticeService;
+    @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;
 
     @Override
     public void addApprove(ApproveProcessVO approveProcessVO) throws Exception {
@@ -123,11 +138,17 @@
         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);
+        if (approveProcess.getApproveType()==8){
+            sysNoticeService.simpleNoticeByUser(approveProcessType(approveProcess.getApproveType()),
+                    approveProcess.getApproveId() + "娴佺▼缂栧彿鐨勫鎵归渶瑕佹偍瀹℃牳!!!!!",
+                    Arrays.asList(Long.valueOf(id)),
+                    "/safeProduction/safeWorkApproval?approveType=" + approveProcess.getApproveType() + "&approveId=" + approveProcess.getApproveId());
+        }else {
+            sysNoticeService.simpleNoticeByUser(approveProcessType(approveProcess.getApproveType()),
+                    approveProcess.getApproveId() + "娴佺▼缂栧彿鐨勫鎵归渶瑕佹偍瀹℃牳!!!!!",
+                    Arrays.asList(Long.valueOf(id)),
+                    "/collaborativeApproval/approvalProcess?approveType=" + approveProcess.getApproveType() + "&approveId=" + approveProcess.getApproveId());
+        }
     }
 
     @Override
@@ -140,32 +161,117 @@
         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();
+
         for (ApproveProcess record : records) {
-            List<CommonFile> commonFiles = commonFileMapper.selectList(new LambdaQueryWrapper<CommonFile>()
-                    .eq(CommonFile::getCommonId, record.getId())
-                    .eq(CommonFile::getType, FileNameType.ApproveProcess.getValue()));
-            record.setCommonFileList(commonFiles);
+            List<CommonFile> allFiles = new ArrayList<>();
+
+            //  閲囪喘瀹℃壒鏌ヨ
+            if (record.getApproveType() == 5) {
+                String contractNo = record.getApproveReason();
+                PurchaseLedger ledger = purchaseLedgerMapper.selectOne(new LambdaQueryWrapper<PurchaseLedger>()
+                        .eq(PurchaseLedger::getPurchaseContractNumber, contractNo)
+                        .last("limit 1"));
+
+                if (ledger != null) {
+                    allFiles = commonFileMapper.selectList(new LambdaQueryWrapper<CommonFile>()
+                            .eq(CommonFile::getCommonId, ledger.getId())
+                            .eq(CommonFile::getType, FileNameType.PURCHASE.getValue()));
+                }
+            }
+
+            //  鍙戣揣瀹℃壒鏌ヨ
+            else if (record.getApproveType() == 7) {
+                String reason = record.getApproveReason(); // 鏍煎紡涓� "xx:...-..."
+                if (StringUtils.hasText(reason) && reason.contains(":")) {
+                    // 鎻愬彇鍐掑彿鍚庨潰鐨勫彂璐у崟鍙�
+                    String shippingNo = reason.split(":")[1];
+                    // 鏍规嵁鍙戣揣鍗曞彿鏌ヨ鍙戣揣鍙拌处璁板綍
+                    ShippingInfo shippingInfo = shippingInfoMapper.selectOne(new LambdaQueryWrapper<ShippingInfo>()
+                            .eq(ShippingInfo::getShippingNo, shippingNo)
+                            .last("limit 1"));
+                    if (shippingInfo != null) {
+                        // 浣跨敤鍙戣揣鍙拌处鐨� 閿�鍞彴璐D 鍘绘煡闄勪欢
+                        allFiles = commonFileMapper.selectList(new LambdaQueryWrapper<CommonFile>()
+                                .eq(CommonFile::getCommonId, shippingInfo.getSalesLedgerId())
+                                .eq(CommonFile::getType, FileNameType.SALE.getValue()));
+                    }
+                }
+            }
+
+            //  鏌ヨ瀹℃壒鍗曡嚜韬殑闄勪欢
+            else {
+                allFiles = commonFileMapper.selectList(new LambdaQueryWrapper<CommonFile>()
+                        .eq(CommonFile::getCommonId, record.getId())
+                        .eq(CommonFile::getType, FileNameType.ApproveProcess.getValue()));
+            }
+
+            record.setCommonFileList(allFiles);
         }
         return approveProcessIPage;
     }
 
-    @Override
-    public void delApprove(Long[] ids) {
-        ApproveProcess approveProcess;
+    public void delByIds(List<Long> ids) {
         for (Long approveId : ids) {
 
             //  閫昏緫鍒犻櫎瀹℃壒娴佺▼
             update(new UpdateWrapper<ApproveProcess>()
                     .lambda()
                     .set(ApproveProcess::getApproveDelete, 1)
-                    .eq(ApproveProcess::getApproveId, approveId));
+                    .eq(ApproveProcess::getId, approveId));
+            // 鍒犻櫎瀵瑰簲鐨勯檮浠�
+            commonFileService.deleteByBusinessId(approveId, FileNameType.ApproveProcess.getValue());
+            ApproveProcess approveProcess = approveProcessMapper.selectById(approveId);
 
             //  鍒犻櫎瀹℃壒鑺傜偣
-            approveNodeService.delApproveNodeByApproveId(approveId);
+            approveNodeService.delApproveNodeByApproveId(approveProcess.getApproveId());
+
+            //  鍙煡鏈�鏂颁竴鏉″鎵规祦绋�
+            ApproveProcess latestProcess = approveProcessMapper.selectOne(
+                    new LambdaQueryWrapper<ApproveProcess>()
+                            .eq(ApproveProcess::getApproveId, approveId)
+                            .orderByDesc(ApproveProcess::getCreateTime)
+                            .last("LIMIT 1"));
+
+            if (latestProcess == null) {
+                continue;
+            }
+
+
+            //  鍒犻櫎瀵瑰簲鐨勬秷鎭�氱煡
+            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()));
+        }
+
+    }
+
+    @Override
+    public void delApprove(List<Long> ids) {
+        for (Long approveId : ids) {
+            ApproveProcess approveProcess = approveProcessMapper.selectOne(new LambdaQueryWrapper<ApproveProcess>()
+                    .eq(ApproveProcess::getApproveId, approveId)
+                    .eq(ApproveProcess::getApproveDelete, 0)
+                    .last("LIMIT 1"));
+            //  閫昏緫鍒犻櫎瀹℃壒娴佺▼
+            update(new UpdateWrapper<ApproveProcess>()
+                    .lambda()
+                    .set(ApproveProcess::getApproveDelete, 1)
+                    .eq(ApproveProcess::getApproveId, approveId));
+            // 鍒犻櫎瀵瑰簲鐨勯檮浠�
+            commonFileService.deleteByBusinessId(approveProcess.getId(), FileNameType.ApproveProcess.getValue());
+            //  鍒犻櫎瀹℃壒鑺傜偣
+            approveNodeService.delApproveNodeByApproveId(approveId.toString());
 
             //  鍙煡鏈�鏂颁竴鏉″鎵规祦绋�
             ApproveProcess latestProcess = approveProcessMapper.selectOne(
@@ -189,19 +295,17 @@
 
     @Override
     public ApproveProcess getApproveById(String id) {
-        LambdaQueryWrapper<ApproveProcess> queryWrapper = new LambdaQueryWrapper<>();
-        queryWrapper.eq(ApproveProcess::getApproveId, id);
-        queryWrapper.eq(ApproveProcess::getApproveDelete, 0);
-        queryWrapper.eq(ApproveProcess::getTenantId, SecurityUtils.getLoginUser().getTenantId());
-        queryWrapper.last("limit 1");
-        ApproveProcess one = getOne(queryWrapper);
+        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())));
         return one;
     }
 
-    private final ApproveNodeMapper approveNodeMapper;
+    @Autowired
+    private ApproveNodeMapper approveNodeMapper;
 
     // 鎶ヤ环瀹℃壒缂栬緫瀹℃牳浜�
     public void updateApproveUser(ApproveGetAndUpdateVo approveGetAndUpdateVo) {
@@ -232,17 +336,23 @@
         LambdaQueryWrapper<ApproveNode> approveNodeLambdaQueryWrapper = new LambdaQueryWrapper<>();
         approveNodeLambdaQueryWrapper.eq(ApproveNode::getApproveProcessId, approveProcess.getApproveId())
                 .eq(ApproveNode::getDeleteFlag, 0)
-                .eq(ApproveNode::getTenantId, SecurityUtils.getLoginUser().getTenantId())
+//                .eq(ApproveNode::getTenantId, SecurityUtils.getLoginUser().getTenantId())
                 .orderByAsc(ApproveNode::getApproveNodeOrder);
         approveNodeMapper.delete(approveNodeLambdaQueryWrapper);
         approveNodeService.initApproveNodes(approveGetAndUpdateVo.getApproveUserIds(), approveProcess.getApproveId(), approveProcess.getTenantId());
         /*娑堟伅閫氱煡*/
         String id = approveProcess.getApproveUserIds().split(",")[0];
-        sysNoticeService.simpleNoticeByUser(approveProcessType(approveProcess.getApproveType()),
-                approveProcess.getApproveId() + "娴佺▼缂栧彿鐨勫鎵归渶瑕佹偍瀹℃牳!!!!!",
-                Arrays.asList(Long.valueOf(id)),
-                approveProcess.getApproveDeptId(),
-                "/collaborativeApproval/approvalProcess?approveType=" + approveProcess.getApproveType() + "&approveId=" + approveProcess.getApproveId());
+        if (approveProcess.getApproveType()==8){
+            sysNoticeService.simpleNoticeByUser(approveProcessType(approveProcess.getApproveType()),
+                    approveProcess.getApproveId() + "娴佺▼缂栧彿鐨勫鎵归渶瑕佹偍瀹℃牳!!!!!",
+                    Arrays.asList(Long.valueOf(id)),
+                    "/safeProduction/safeWorkApproval?approveType=" + approveProcess.getApproveType() + "&approveId=" + approveProcess.getApproveId());
+        }else {
+            sysNoticeService.simpleNoticeByUser(approveProcessType(approveProcess.getApproveType()),
+                    approveProcess.getApproveId() + "娴佺▼缂栧彿鐨勫鎵归渶瑕佹偍瀹℃牳!!!!!",
+                    Arrays.asList(Long.valueOf(id)),
+                    "/collaborativeApproval/approvalProcess?approveType=" + approveProcess.getApproveType() + "&approveId=" + approveProcess.getApproveId());
+        }
     }
 
 
@@ -273,7 +383,7 @@
         LambdaQueryWrapper<ApproveNode> approveNodeLambdaQueryWrapper = new LambdaQueryWrapper<>();
         approveNodeLambdaQueryWrapper.eq(ApproveNode::getApproveProcessId, approve.getApproveId())
                 .eq(ApproveNode::getDeleteFlag, 0)
-                .eq(ApproveNode::getTenantId, SecurityUtils.getLoginUser().getTenantId())
+//                .eq(ApproveNode::getTenantId, SecurityUtils.getLoginUser().getTenantId())
                 .orderByAsc(ApproveNode::getApproveNodeOrder);
         approveNodeMapper.delete(approveNodeLambdaQueryWrapper);
         approveNodeService.initApproveNodes(approveGetAndUpdateVo.getApproveUserIds(), approve.getApproveId(), approve.getTenantId());
@@ -297,11 +407,17 @@
         tempFileService.migrateTempFilesToFormal(approve.getId(), approveGetAndUpdateVo.getTempFileIds(), FileNameType.ApproveProcess.getValue());
         /*娑堟伅閫氱煡*/
         String id = approve.getApproveUserIds().split(",")[0];
-        sysNoticeService.simpleNoticeByUser(approveProcessType(approve.getApproveType()),
-                approve.getApproveId() + "娴佺▼缂栧彿鐨勫鎵归渶瑕佹偍瀹℃牳!!!!!",
-                Arrays.asList(Long.valueOf(id)),
-                approve.getApproveDeptId(),
-                "/collaborativeApproval/approvalProcess?approveType=" + approve.getApproveType() + "&approveId=" + approve.getApproveId());
+        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 {
+            sysNoticeService.simpleNoticeByUser(approveProcessType(approve.getApproveType()),
+                    approve.getApproveId() + "娴佺▼缂栧彿鐨勫鎵归渶瑕佹偍瀹℃牳!!!!!",
+                    Arrays.asList(Long.valueOf(id)),
+                    "/collaborativeApproval/approvalProcess?approveType=" + approve.getApproveType() + "&approveId=" + approve.getApproveId());
+        }
 
     }
 
@@ -322,10 +438,10 @@
             case 6:
                 return "鎶ヤ环瀹℃壒";
             case 7:
-                return "鍑哄簱瀹℃壒";
+                return "鍙戣揣瀹℃壒";
+            case 8:
+                return "鍗遍櫓浣滀笟瀹℃壒";
         }
         return null;
     }
-
-
 }

--
Gitblit v1.9.3