From 6518050093fe8f36b603a7fef9d4683813a91645 Mon Sep 17 00:00:00 2001
From: chenhj <1263187585@qq.com>
Date: 星期三, 22 四月 2026 14:57:30 +0800
Subject: [PATCH] 修复循环依赖

---
 src/main/java/com/ruoyi/approve/service/impl/ApproveNodeServiceImpl.java                  |   44 ++++++++++++++++++++-
 src/main/java/com/ruoyi/basic/service/impl/ReturnVisitReminderService.java                |    6 +-
 src/main/java/com/ruoyi/projectManagement/service/impl/handle/InfoStageHandleService.java |    4 +
 src/main/java/com/ruoyi/purchase/service/IPurchaseLedgerService.java                      |    4 +
 src/main/java/com/ruoyi/basic/service/impl/CustomerFollowUpFileServiceImpl.java           |   20 +++++++---
 src/main/java/com/ruoyi/projectManagement/service/impl/PlanServiceImpl.java               |    4 +
 src/main/java/com/ruoyi/basic/service/impl/CustomerPrivateServiceImpl.java                |    3 -
 src/main/java/com/ruoyi/project/common/CaptchaController.java                             |    8 ++--
 8 files changed, 72 insertions(+), 21 deletions(-)

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 410d17b..7cbf63e 100644
--- a/src/main/java/com/ruoyi/approve/service/impl/ApproveNodeServiceImpl.java
+++ b/src/main/java/com/ruoyi/approve/service/impl/ApproveNodeServiceImpl.java
@@ -23,7 +23,14 @@
 import com.ruoyi.project.system.service.ISysNoticeService;
 import com.ruoyi.purchase.mapper.PurchaseLedgerMapper;
 import com.ruoyi.purchase.pojo.PurchaseLedger;
-import com.ruoyi.purchase.service.impl.PurchaseLedgerServiceImpl;
+import com.ruoyi.quality.mapper.QualityInspectMapper;
+import com.ruoyi.quality.mapper.QualityInspectParamMapper;
+import com.ruoyi.quality.mapper.QualityTestStandardMapper;
+import com.ruoyi.quality.mapper.QualityTestStandardParamMapper;
+import com.ruoyi.quality.pojo.QualityInspect;
+import com.ruoyi.quality.pojo.QualityInspectParam;
+import com.ruoyi.quality.pojo.QualityTestStandard;
+import com.ruoyi.quality.pojo.QualityTestStandardParam;
 import com.ruoyi.sales.mapper.CommonFileMapper;
 import com.ruoyi.sales.mapper.SalesLedgerProductMapper;
 import com.ruoyi.sales.mapper.SalesQuotationMapper;
@@ -61,7 +68,10 @@
     private final CommonFileServiceImpl commonFileService;
     private final StockUtils stockUtils;
     private final SalesLedgerProductMapper salesLedgerProductMapper;
-    private final PurchaseLedgerServiceImpl purchaseLedgerServiceImpl;
+    private final QualityInspectMapper qualityInspectMapper;
+    private final QualityTestStandardMapper qualityTestStandardMapper;
+    private final QualityTestStandardParamMapper qualityTestStandardParamMapper;
+    private final QualityInspectParamMapper qualityInspectParamMapper;
 
 
     public ApproveProcess getApproveById(String id) {
@@ -182,7 +192,7 @@
                     for (SalesLedgerProduct salesLedgerProduct : salesLedgerProducts) {
                         // 璐ㄦ
                         if (salesLedgerProduct.getIsChecked()) {
-                            purchaseLedgerServiceImpl.addQualityInspect(purchaseLedger, salesLedgerProduct);
+                            addQualityInspect(purchaseLedger, salesLedgerProduct);
                         } else {
                             //鐩存帴鍏ュ簱
                             stockUtils.addStock(salesLedgerProduct.getProductModelId(), salesLedgerProduct.getQuantity(), StockInQualifiedRecordTypeEnum.PURCHASE_STOCK_IN.getCode(), purchaseLedger.getId());
@@ -310,4 +320,32 @@
         return null;
     }
 
+    private void addQualityInspect(PurchaseLedger purchaseLedger, SalesLedgerProduct saleProduct) {
+        QualityInspect qualityInspect = new QualityInspect();
+        qualityInspect.setInspectType(0);
+        qualityInspect.setSupplier(purchaseLedger.getSupplierName());
+        qualityInspect.setPurchaseLedgerId(purchaseLedger.getId());
+        qualityInspect.setProductId(saleProduct.getProductId());
+        qualityInspect.setProductName(saleProduct.getProductCategory());
+        qualityInspect.setModel(saleProduct.getSpecificationModel());
+        qualityInspect.setProductModelId(saleProduct.getProductModelId());
+        qualityInspect.setUnit(saleProduct.getUnit());
+        qualityInspect.setQuantity(saleProduct.getQuantity());
+        qualityInspectMapper.insert(qualityInspect);
+        List<QualityTestStandard> qualityTestStandard = qualityTestStandardMapper.getQualityTestStandardByProductId(saleProduct.getProductId(), 0,null);
+        if (qualityTestStandard.size()>0){
+            qualityInspect.setTestStandardId(qualityTestStandard.get(0).getId());
+            qualityInspectMapper.updateById(qualityInspect);
+            qualityTestStandardParamMapper.selectList(Wrappers.<QualityTestStandardParam>lambdaQuery()
+                            .eq(QualityTestStandardParam::getTestStandardId,qualityTestStandard.get(0).getId()))
+                    .forEach(qualityTestStandardParam -> {
+                        QualityInspectParam param = new QualityInspectParam();
+                        com.ruoyi.common.utils.bean.BeanUtils.copyProperties(qualityTestStandardParam, param);
+                        param.setId(null);
+                        param.setInspectId(qualityInspect.getId());
+                        qualityInspectParamMapper.insert(param);
+                    });
+        }
+    }
+
 }
diff --git a/src/main/java/com/ruoyi/basic/service/impl/CustomerFollowUpFileServiceImpl.java b/src/main/java/com/ruoyi/basic/service/impl/CustomerFollowUpFileServiceImpl.java
index 1cc612d..cb915c4 100644
--- a/src/main/java/com/ruoyi/basic/service/impl/CustomerFollowUpFileServiceImpl.java
+++ b/src/main/java/com/ruoyi/basic/service/impl/CustomerFollowUpFileServiceImpl.java
@@ -2,15 +2,14 @@
 
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.google.common.collect.Lists;
 import com.ruoyi.basic.mapper.CustomerFollowUpFileMapper;
 import com.ruoyi.basic.pojo.CustomerFollowUpFile;
 import com.ruoyi.basic.service.CustomerFollowUpFileService;
-import com.ruoyi.basic.service.CustomerFollowUpService;
 import com.ruoyi.common.vo.SimpleFileVo;
 import lombok.RequiredArgsConstructor;
-import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
 
 import java.util.*;
@@ -31,9 +30,7 @@
 @RequiredArgsConstructor
 public class CustomerFollowUpFileServiceImpl extends ServiceImpl<CustomerFollowUpFileMapper, CustomerFollowUpFile> implements CustomerFollowUpFileService {
 
-    @Lazy
-    private final CustomerFollowUpService customerFollowUpService;
-
+    private final CustomerFollowUpFileMapper customerFollowUpFileMapper;
 
     @Override
     public <T> void fillAttachment(List<T> list, Function<T, String> getAttachmentIds, BiConsumer<T, List<SimpleFileVo>> setAttachmentList) {
@@ -50,7 +47,7 @@
         List<CustomerFollowUpFile> followUpFilesByIds = new ArrayList<>();
         Lists.partition(Lists.newArrayList(ids), 999).forEach(it -> {
             followUpFilesByIds.addAll(
-                    customerFollowUpService.getFollowUpFilesByIds(it)
+                    getFollowUpFilesByIds(it)
             );
         });
         if (CollUtil.isEmpty(followUpFilesByIds)) {
@@ -72,4 +69,15 @@
             }
         });
     }
+
+    private List<CustomerFollowUpFile> getFollowUpFilesByIds(Collection<Long> fileIds) {
+        if (fileIds == null || fileIds.isEmpty()) {
+            return new ArrayList<>(0);
+        }
+
+        LambdaQueryWrapper<CustomerFollowUpFile> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.in(CustomerFollowUpFile::getId, fileIds)
+                .select(CustomerFollowUpFile::getId, CustomerFollowUpFile::getFileUrl, CustomerFollowUpFile::getFileName);
+        return customerFollowUpFileMapper.selectList(queryWrapper);
+    }
 }
diff --git a/src/main/java/com/ruoyi/basic/service/impl/CustomerPrivateServiceImpl.java b/src/main/java/com/ruoyi/basic/service/impl/CustomerPrivateServiceImpl.java
index ae0ab05..4521155 100644
--- a/src/main/java/com/ruoyi/basic/service/impl/CustomerPrivateServiceImpl.java
+++ b/src/main/java/com/ruoyi/basic/service/impl/CustomerPrivateServiceImpl.java
@@ -49,7 +49,6 @@
     private final SalesLedgerMapper salesLedgerMapper;
 
     private final CustomerPrivateMapper customerPrivateMapper;
-    private final CustomerPrivateService customerPrivateService;
 
 
     @Override
@@ -89,7 +88,7 @@
     @Override
     public R importData(MultipartFile file) {
         try {
-            List<CustomerPrivate> existingList = customerPrivateService.list();
+            List<CustomerPrivate> existingList = customerPrivateMapper.selectList(null);
             java.util.Set<String> existingCustomerNames = existingList.stream()
                     .map(CustomerPrivate::getCustomerName)
                     .collect(Collectors.toSet());
diff --git a/src/main/java/com/ruoyi/basic/service/impl/ReturnVisitReminderService.java b/src/main/java/com/ruoyi/basic/service/impl/ReturnVisitReminderService.java
index 8f5f604..6139b9b 100644
--- a/src/main/java/com/ruoyi/basic/service/impl/ReturnVisitReminderService.java
+++ b/src/main/java/com/ruoyi/basic/service/impl/ReturnVisitReminderService.java
@@ -1,7 +1,7 @@
 package com.ruoyi.basic.service.impl;
 
+import com.ruoyi.basic.mapper.CustomerReturnVisitMapper;
 import com.ruoyi.basic.pojo.CustomerReturnVisit;
-import com.ruoyi.basic.service.CustomerReturnVisitService;
 import com.ruoyi.framework.redis.RedisCache;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
@@ -27,11 +27,11 @@
 
     private final RedisCache redisCache;
 
-    private final CustomerReturnVisitService customerReturnVisitService;
+    private final CustomerReturnVisitMapper customerReturnVisitMapper;
 
     @SuppressWarnings("unchecked")
     public void scheduleReminder(Long returnVisitId) {
-        CustomerReturnVisit returnVisit = customerReturnVisitService.getById(returnVisitId);
+        CustomerReturnVisit returnVisit = customerReturnVisitMapper.selectById(returnVisitId);
         if (returnVisit == null || returnVisit.getIsEnabled() == 0) {
             return;
         }
diff --git a/src/main/java/com/ruoyi/project/common/CaptchaController.java b/src/main/java/com/ruoyi/project/common/CaptchaController.java
index ef2f5fb..40255cb 100644
--- a/src/main/java/com/ruoyi/project/common/CaptchaController.java
+++ b/src/main/java/com/ruoyi/project/common/CaptchaController.java
@@ -10,7 +10,7 @@
 import com.ruoyi.project.system.service.ISysConfigService;
 import jakarta.annotation.Resource;
 import jakarta.servlet.http.HttpServletResponse;
-import lombok.AllArgsConstructor;
+import lombok.RequiredArgsConstructor;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.util.FastByteArrayOutputStream;
 import org.springframework.web.bind.annotation.GetMapping;
@@ -27,7 +27,7 @@
  * @author ruoyi
  */
 @RestController
-@AllArgsConstructor
+@RequiredArgsConstructor
 public class CaptchaController
 {
     @Resource(name = "captchaProducer")
@@ -36,13 +36,13 @@
     @Resource(name = "captchaProducerMath")
     private Producer captchaProducerMath;
 
-    private RedisCache redisCache;
+    private final RedisCache redisCache;
     
     // 楠岃瘉鐮佺被鍨�
     @Value("${ruoyi.captchaType}")
     private String captchaType;
     
-    private ISysConfigService configService;
+    private final ISysConfigService configService;
 
     /**
      * 鐢熸垚楠岃瘉鐮�
diff --git a/src/main/java/com/ruoyi/projectManagement/service/impl/PlanServiceImpl.java b/src/main/java/com/ruoyi/projectManagement/service/impl/PlanServiceImpl.java
index 8abcd29..5c8b7c6 100644
--- a/src/main/java/com/ruoyi/projectManagement/service/impl/PlanServiceImpl.java
+++ b/src/main/java/com/ruoyi/projectManagement/service/impl/PlanServiceImpl.java
@@ -16,6 +16,7 @@
 import com.ruoyi.projectManagement.vo.*;
 import lombok.RequiredArgsConstructor;
 import org.jetbrains.annotations.Nullable;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -41,7 +42,8 @@
     private final PlanNodeMapper planNodeMapper;
 
     @Lazy
-    private final PlanService planService;
+    @Autowired
+    private PlanService planService;
 
     @Override
     @Transactional(rollbackFor = Exception.class)
diff --git a/src/main/java/com/ruoyi/projectManagement/service/impl/handle/InfoStageHandleService.java b/src/main/java/com/ruoyi/projectManagement/service/impl/handle/InfoStageHandleService.java
index 31e5497..55a9065 100644
--- a/src/main/java/com/ruoyi/projectManagement/service/impl/handle/InfoStageHandleService.java
+++ b/src/main/java/com/ruoyi/projectManagement/service/impl/handle/InfoStageHandleService.java
@@ -17,6 +17,7 @@
 import com.ruoyi.projectManagement.vo.SaveInfoStageVo;
 import jakarta.validation.constraints.NotNull;
 import lombok.RequiredArgsConstructor;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Component;
 import org.springframework.transaction.annotation.Transactional;
@@ -37,7 +38,8 @@
     private final InfoHandleService infoHandleService;
     private final CustomerFollowUpFileService customerFollowUpFileService;
     @Lazy
-    private final InfoStageHandleService infoStageHandleService;
+    @Autowired
+    private InfoStageHandleService infoStageHandleService;
 
     @Transactional
     public void save(@NotNull SaveInfoStageVo saveInfoStageVo) {
diff --git a/src/main/java/com/ruoyi/purchase/service/IPurchaseLedgerService.java b/src/main/java/com/ruoyi/purchase/service/IPurchaseLedgerService.java
index 34d19b3..d09050e 100644
--- a/src/main/java/com/ruoyi/purchase/service/IPurchaseLedgerService.java
+++ b/src/main/java/com/ruoyi/purchase/service/IPurchaseLedgerService.java
@@ -7,9 +7,9 @@
 import com.ruoyi.purchase.dto.PurchaseLedgerDto;
 import com.ruoyi.purchase.pojo.PurchaseLedger;
 import com.ruoyi.sales.pojo.InvoiceRegistrationProduct;
+import com.ruoyi.sales.pojo.SalesLedgerProduct;
 import org.springframework.web.multipart.MultipartFile;
 
-import java.io.IOException;
 import java.util.List;
 
 /**
@@ -24,6 +24,8 @@
 
     int addOrEditPurchase(PurchaseLedgerDto purchaseLedgerDto) throws Exception;
 
+    void addQualityInspect(PurchaseLedger purchaseLedger, SalesLedgerProduct saleProduct);
+
     int deletePurchaseLedgerByIds(Long[] ids);
 
     PurchaseLedgerDto getPurchaseById(PurchaseLedgerDto purchaseLedgerDto);

--
Gitblit v1.9.3