From 714ec3cc8e9c0ab12660c1371e832b7dc5532964 Mon Sep 17 00:00:00 2001
From: liyong <18434998025@163.com>
Date: 星期一, 25 五月 2026 15:44:00 +0800
Subject: [PATCH] feat(approve): 添加销售审批功能并优化相关服务

---
 src/main/java/com/ruoyi/approve/service/impl/ApproveNodeServiceImpl.java      |   18 ++++-
 src/main/java/com/ruoyi/approve/service/impl/ApproveProcessServiceImpl.java   |   33 ++++++-----
 src/main/java/com/ruoyi/sales/service/impl/SalesLedgerProductServiceImpl.java |    3 
 src/main/java/com/ruoyi/approve/pojo/ApproveProcess.java                      |    2 
 src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java        |   63 ++++++++------------
 src/main/java/com/ruoyi/approve/bean/vo/ApproveProcessVO.java                 |    4 
 src/main/java/com/ruoyi/projectManagement/service/impl/InfoServiceImpl.java   |    3 
 src/main/java/com/ruoyi/sales/service/ISalesLedgerService.java                |    3 
 8 files changed, 64 insertions(+), 65 deletions(-)

diff --git a/src/main/java/com/ruoyi/approve/bean/vo/ApproveProcessVO.java b/src/main/java/com/ruoyi/approve/bean/vo/ApproveProcessVO.java
index cff6d32..91d19c7 100644
--- a/src/main/java/com/ruoyi/approve/bean/vo/ApproveProcessVO.java
+++ b/src/main/java/com/ruoyi/approve/bean/vo/ApproveProcessVO.java
@@ -2,12 +2,10 @@
 
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.ruoyi.framework.aspectj.lang.annotation.Excel;
-import com.ruoyi.sales.pojo.CommonFile;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import org.springframework.format.annotation.DateTimeFormat;
 
-import javax.validation.constraints.NotBlank;
 import java.math.BigDecimal;
 import java.util.Date;
 import java.util.List;
@@ -47,6 +45,8 @@
      */
     private String approveReason;
 
+    private Long recordId;
+
     @Excel(name = "寮�濮嬫椂闂�", dateFormat = "yyyy-MM-dd",width = 30)
     @JsonFormat(pattern = "yyyy-MM-dd")
     @ApiModelProperty(value = "寮�濮嬫椂闂�")
diff --git a/src/main/java/com/ruoyi/approve/pojo/ApproveProcess.java b/src/main/java/com/ruoyi/approve/pojo/ApproveProcess.java
index 3eff8d7..89e0c3e 100644
--- a/src/main/java/com/ruoyi/approve/pojo/ApproveProcess.java
+++ b/src/main/java/com/ruoyi/approve/pojo/ApproveProcess.java
@@ -78,6 +78,8 @@
     @ApiModelProperty(value = "鐢宠鍘熷洜")
     @Excel(name = "瀹℃壒浜嬬敱")
     private String approveReason;
+    //涓氬姟id
+    private Long recordId;
 
     /**
      * 褰撳墠瀹℃壒鐢ㄦ埛ID
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 af042d4..2f3a8a0 100644
--- a/src/main/java/com/ruoyi/approve/service/impl/ApproveNodeServiceImpl.java
+++ b/src/main/java/com/ruoyi/approve/service/impl/ApproveNodeServiceImpl.java
@@ -3,7 +3,6 @@
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 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;
@@ -15,7 +14,6 @@
 import com.ruoyi.common.enums.StockInQualifiedRecordTypeEnum;
 import com.ruoyi.common.utils.SecurityUtils;
 import com.ruoyi.device.mapper.DeviceRepairMapper;
-import com.ruoyi.device.pojo.DeviceRepair;
 import com.ruoyi.other.service.impl.TempFileServiceImpl;
 import com.ruoyi.procurementrecord.utils.StockUtils;
 import com.ruoyi.project.system.domain.SysUser;
@@ -40,6 +38,7 @@
 import com.ruoyi.sales.pojo.SalesQuotation;
 import com.ruoyi.sales.pojo.ShippingInfo;
 import com.ruoyi.sales.service.impl.CommonFileServiceImpl;
+import com.ruoyi.sales.service.impl.SalesLedgerProductServiceImpl;
 import lombok.RequiredArgsConstructor;
 import org.springframework.stereotype.Service;
 import org.springframework.util.CollectionUtils;
@@ -72,6 +71,7 @@
     private final QualityTestStandardMapper qualityTestStandardMapper;
     private final QualityTestStandardParamMapper qualityTestStandardParamMapper;
     private final QualityInspectParamMapper qualityInspectParamMapper;
+    private final SalesLedgerProductServiceImpl salesLedgerProductServiceImpl;
 
 
     public ApproveProcess getApproveById(String id) {
@@ -230,6 +230,12 @@
             }
 
         }
+        //閿�鍞鎵规垚鍔熶箣鍚庢坊鍔犵敓浜ф暟鎹�
+        if (approveProcess.getApproveType().equals(9)) {
+            List<SalesLedgerProduct> salesLedgerProducts = salesLedgerProductMapper.selectList(new LambdaQueryWrapper<SalesLedgerProduct>()
+                    .eq(SalesLedgerProduct::getSalesLedgerId, approveProcess.getRecordId()));
+            salesLedgerProducts.forEach(salesLedgerProductServiceImpl::addProductionData);
+        }
         // 缁戝畾闄勪欢
         if (!CollectionUtils.isEmpty(approveNode.getTempFileIds()) && approveNode.getApproveNodeStatus() == 1) {
             tempFileService.migrateTempFilesToFormal(approveNode.getId(), approveNode.getTempFileIds(), FileNameType.ApproveNode.getValue());
@@ -304,6 +310,8 @@
                 return "鍙戣揣瀹℃壒";
             case 8:
                 return "鍗遍櫓浣滀笟瀹℃壒";
+            case 9:
+                return "閿�鍞鎵�";
         }
         return null;
     }
@@ -320,12 +328,12 @@
         qualityInspect.setUnit(saleProduct.getUnit());
         qualityInspect.setQuantity(saleProduct.getQuantity());
         qualityInspectMapper.insert(qualityInspect);
-        List<QualityTestStandard> qualityTestStandard = qualityTestStandardMapper.getQualityTestStandardByProductId(saleProduct.getProductId(), 0,null);
-        if (qualityTestStandard.size()>0){
+        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()))
+                            .eq(QualityTestStandardParam::getTestStandardId, qualityTestStandard.get(0).getId()))
                     .forEach(qualityTestStandardParam -> {
                         QualityInspectParam param = new QualityInspectParam();
                         com.ruoyi.common.utils.bean.BeanUtils.copyProperties(qualityTestStandardParam, param);
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 221f591..f6af037 100644
--- a/src/main/java/com/ruoyi/approve/service/impl/ApproveProcessServiceImpl.java
+++ b/src/main/java/com/ruoyi/approve/service/impl/ApproveProcessServiceImpl.java
@@ -71,11 +71,11 @@
     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<ApproveProcessConfigNodeVo> list = approveProcessConfigNodeService.listNode(approveProcessVO.getApproveType());
         List<Long> nodeIds = list.stream()
                 .map(ApproveProcessConfigNodeVo::getApproverId)
                 .collect(Collectors.toList());
-        if(list.isEmpty()) {
+        if (list.isEmpty()) {
             throw new RuntimeException("娴佺▼涓嶅瓨鍦�");
         }
         List<SysUser> sysUsers = sysUserMapper.selectUserByIds(nodeIds);
@@ -89,7 +89,7 @@
 //        String approveID = today + formattedCount;
         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.setApproveId(no);
         approveProcess.setApproveUser(sysUser.getUserId());
         approveProcess.setApproveUserName(sysUser.getNickName());
@@ -97,9 +97,10 @@
         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()) ? 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.setRecordId(approveProcessVO.getRecordId());
         approveProcess.setMaintenancePrice(approveProcessVO.getMaintenancePrice());
         approveProcess.setPrice(approveProcessVO.getPrice());
         approveProcess.setStartDate(approveProcessVO.getStartDate());
@@ -132,12 +133,12 @@
         tempFileService.migrateTempFilesToFormal(approveProcess.getId(), approveProcessVO.getTempFileIds(), FileNameType.ApproveProcess.getValue());
         /*娑堟伅閫氱煡*/
         Long id = nodeIds.get(0);
-        if (approveProcess.getApproveType()==8){
+        if (approveProcess.getApproveType() == 8) {
             sysNoticeService.simpleNoticeByUser(approveProcessType(approveProcess.getApproveType()),
                     approveProcess.getApproveId() + "娴佺▼缂栧彿鐨勫鎵归渶瑕佹偍瀹℃牳!!!!!",
                     Collections.singletonList(id),
                     "/safeProduction/safeWorkApproval?approveType=" + approveProcess.getApproveType() + "&approveId=" + approveProcess.getApproveId());
-        }else {
+        } else {
             sysNoticeService.simpleNoticeByUser(approveProcessType(approveProcess.getApproveType()),
                     approveProcess.getApproveId() + "娴佺▼缂栧彿鐨勫鎵归渶瑕佹偍瀹℃牳!!!!!",
                     Collections.singletonList(id),
@@ -274,9 +275,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,8 +285,8 @@
     @Override
     public ApproveProcess getApproveById(String id) {
         ApproveProcess one = approveProcessMapper.selectList(Wrappers.<ApproveProcess>lambdaQuery()
-                .eq(ApproveProcess::getApproveId,id)
-                .eq(ApproveProcess::getApproveDelete,0)).get(0);
+                .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())));
@@ -334,12 +335,12 @@
         approveNodeService.initApproveNodes(approveGetAndUpdateVo.getApproveUserIds(), approveProcess.getApproveId(), approveProcess.getTenantId());
         /*娑堟伅閫氱煡*/
         Long id = configNodeIds.get(0);
-        if (approveProcess.getApproveType()==8){
+        if (approveProcess.getApproveType() == 8) {
             sysNoticeService.simpleNoticeByUser(approveProcessType(approveProcess.getApproveType()),
                     approveProcess.getApproveId() + "娴佺▼缂栧彿鐨勫鎵归渶瑕佹偍瀹℃牳!!!!!",
                     Collections.singletonList(id),
                     "/safeProduction/safeWorkApproval?approveType=" + approveProcess.getApproveType() + "&approveId=" + approveProcess.getApproveId());
-        }else {
+        } else {
             sysNoticeService.simpleNoticeByUser(approveProcessType(approveProcess.getApproveType()),
                     approveProcess.getApproveId() + "娴佺▼缂栧彿鐨勫鎵归渶瑕佹偍瀹℃牳!!!!!",
                     Collections.singletonList(id),
@@ -399,12 +400,12 @@
         tempFileService.migrateTempFilesToFormal(approve.getId(), approveGetAndUpdateVo.getTempFileIds(), FileNameType.ApproveProcess.getValue());
         /*娑堟伅閫氱煡*/
         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)),
@@ -433,6 +434,8 @@
                 return "鍙戣揣瀹℃壒";
             case 8:
                 return "鍗遍櫓浣滀笟瀹℃壒";
+            case 9:
+                return "閿�鍞鎵�";
         }
         return null;
     }
diff --git a/src/main/java/com/ruoyi/projectManagement/service/impl/InfoServiceImpl.java b/src/main/java/com/ruoyi/projectManagement/service/impl/InfoServiceImpl.java
index 85d1e88..871de3a 100644
--- a/src/main/java/com/ruoyi/projectManagement/service/impl/InfoServiceImpl.java
+++ b/src/main/java/com/ruoyi/projectManagement/service/impl/InfoServiceImpl.java
@@ -24,7 +24,6 @@
 import lombok.SneakyThrows;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
-import org.springframework.util.Assert;
 
 import java.util.List;
 import java.util.concurrent.CompletableFuture;
@@ -57,7 +56,7 @@
             contractInfoHandleService.save(infoId, saveInfoVo.getContractInfo());
         }
         if(saveInfoVo.getSalesLedgerProductList() != null){
-            salesLedgerService.handleSalesLedgerProducts(infoId, saveInfoVo.getSalesLedgerProductList(), SaleEnum.MANAGEMENT);
+            salesLedgerService.handleSalesLedgerProducts(infoId, saveInfoVo.getSalesLedgerProductList(), SaleEnum.MANAGEMENT,"");
         }
     }
 
diff --git a/src/main/java/com/ruoyi/sales/service/ISalesLedgerService.java b/src/main/java/com/ruoyi/sales/service/ISalesLedgerService.java
index eda9da4..043ceb2 100644
--- a/src/main/java/com/ruoyi/sales/service/ISalesLedgerService.java
+++ b/src/main/java/com/ruoyi/sales/service/ISalesLedgerService.java
@@ -3,7 +3,6 @@
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
-import com.ruoyi.aftersalesservice.pojo.AfterSalesService;
 import com.ruoyi.common.enums.SaleEnum;
 import com.ruoyi.framework.web.domain.AjaxResult;
 import com.ruoyi.sales.dto.LossProductModelDto;
@@ -35,7 +34,7 @@
     List<SalesLedgerProduct> getSalesLedgerProductListByRelateId(@NotNull Long relateId,@NotNull SaleEnum type);
     List<SalesLedgerProduct> getSalesLedgerProductListByIds(@Nullable List<Long> relateIds, @NotNull SaleEnum type);
 
-    void handleSalesLedgerProducts(Long salesLedgerId, List<SalesLedgerProduct> products, SaleEnum type);
+    void handleSalesLedgerProducts(Long salesLedgerId, List<SalesLedgerProduct> products, SaleEnum type,String contractNo);
 
     SalesLedgerDto getSalesLedgerWithProducts(SalesLedgerDto salesLedgerDto);
 
diff --git a/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerProductServiceImpl.java b/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerProductServiceImpl.java
index e4eb0f3..f11d734 100644
--- a/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerProductServiceImpl.java
+++ b/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerProductServiceImpl.java
@@ -81,7 +81,6 @@
     private ProductionProductInputMapper productionProductInputMapper;
     private QualityInspectMapper qualityInspectMapper;
     private ShippingInfoMapper shippingInfoMapper;
-    private ShippingInfoServiceImpl shippingInfoService;
 
     private StockUtils stockUtils;
 
@@ -167,7 +166,7 @@
         List<ShippingInfo> shippingInfos = shippingInfoMapper.selectList(new LambdaQueryWrapper<ShippingInfo>()
                 .in(ShippingInfo::getSalesLedgerProductId, Arrays.asList(ids)));
         if (!CollectionUtils.isEmpty(shippingInfos)) {
-            shippingInfoService.delete(shippingInfos.stream().map(ShippingInfo::getId).collect(Collectors.toList()));
+            shippingInfoMapper.deleteBatchIds(shippingInfos.stream().map(ShippingInfo::getId).collect(Collectors.toList()));
         }
 
         // 鍙兘灞炰簬澶氫釜涓昏〃
diff --git a/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java b/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java
index 3b0cc55..04554fd 100644
--- a/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java
+++ b/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java
@@ -9,8 +9,9 @@
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ruoyi.account.service.AccountIncomeService;
+import com.ruoyi.approve.bean.vo.ApproveProcessVO;
+import com.ruoyi.approve.service.IApproveProcessService;
 import com.ruoyi.basic.mapper.CustomerMapper;
-import com.ruoyi.basic.mapper.ProductMapper;
 import com.ruoyi.basic.mapper.ProductModelMapper;
 import com.ruoyi.basic.pojo.Customer;
 import com.ruoyi.common.enums.FileNameType;
@@ -25,7 +26,6 @@
 import com.ruoyi.framework.web.domain.AjaxResult;
 import com.ruoyi.other.mapper.TempFileMapper;
 import com.ruoyi.other.pojo.TempFile;
-import com.ruoyi.production.mapper.*;
 import com.ruoyi.production.service.ProductionProductMainService;
 import com.ruoyi.project.system.domain.SysDept;
 import com.ruoyi.project.system.domain.SysUser;
@@ -33,7 +33,6 @@
 import com.ruoyi.project.system.mapper.SysUserMapper;
 import com.ruoyi.purchase.dto.SimpleReturnOrderGroupDto;
 import com.ruoyi.purchase.mapper.PurchaseReturnOrderProductsMapper;
-import com.ruoyi.quality.mapper.QualityInspectMapper;
 import com.ruoyi.sales.dto.*;
 import com.ruoyi.sales.mapper.*;
 import com.ruoyi.sales.pojo.*;
@@ -43,7 +42,6 @@
 import org.apache.commons.io.FilenameUtils;
 import org.jetbrains.annotations.Nullable;
 import org.springframework.beans.BeanUtils;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.data.redis.core.script.DefaultRedisScript;
@@ -94,40 +92,17 @@
     private final CommonFileServiceImpl commonFileService;
     private final ShippingInfoMapper shippingInfoMapper;
     private final InvoiceLedgerMapper invoiceLedgerMapper;
-    private final SalesLedgerSchedulingMapper salesLedgerSchedulingMapper;
-    private final SalesLedgerWorkMapper salesLedgerWorkMapper;
-    private final SalesLedgerProductionAccountingMapper salesLedgerProductionAccountingMapper;
     private final InvoiceRegistrationProductMapper invoiceRegistrationProductMapper;
     private final InvoiceRegistrationMapper invoiceRegistrationMapper;
-    private final ProductOrderMapper productOrderMapper;
-    private final ProcessRouteMapper processRouteMapper;
-    private final ProductProcessRouteMapper productProcessRouteMapper;
-    private final ProcessRouteItemMapper processRouteItemMapper;
-    private final ProductProcessRouteItemMapper productProcessRouteItemMapper;
-    private final ProductWorkOrderMapper productWorkOrderMapper;
-    private final ProductionProductMainMapper productionProductMainMapper;
-    private final ProductionProductOutputMapper productionProductOutputMapper;
-    private final ProductionProductInputMapper productionProductInputMapper;
-    private final QualityInspectMapper qualityInspectMapper;
     private final RedisTemplate<String, String> redisTemplate;
-    @Autowired
-    private SysDeptMapper sysDeptMapper;
+    private final IApproveProcessService approveProcessService;
+    private final SysDeptMapper sysDeptMapper;
     @Value("${file.upload-dir}")
     private String uploadDir;
-    @Autowired
-    private ProductModelMapper productModelMapper;
-
-    @Autowired
-    private ProductMapper productMapper;
-    @Autowired
-    private ProductStructureMapper productStructureMapper;
-    @Autowired
-    private ProductionProductMainService productionProductMainService;
-    @Autowired
-    private PurchaseReturnOrderProductsMapper purchaseReturnOrderProductsMapper;
-    ;
-    @Autowired
-    private SysUserMapper sysUserMapper;
+    private final ProductModelMapper productModelMapper;
+    private final ProductionProductMainService productionProductMainService;
+    private final PurchaseReturnOrderProductsMapper purchaseReturnOrderProductsMapper;
+    private final SysUserMapper sysUserMapper;
 
     @Override
     public List<SalesLedger> selectSalesLedgerList(SalesLedgerDto salesLedgerDto) {
@@ -154,7 +129,7 @@
             // 鏌ヨ閫�璐т俊鎭�
             List<Long> productIds = salesLedgerProducts.stream().map(SalesLedgerProduct::getId).collect(Collectors.toList());
             List<SimpleReturnOrderGroupDto> groupListByProductIds = new ArrayList<>();
-            if(CollectionUtils.isNotEmpty(productIds)){
+            if (CollectionUtils.isNotEmpty(productIds)) {
                 groupListByProductIds = purchaseReturnOrderProductsMapper.getReturnOrderGroupListByProductIds(productIds);
             }
             Map<Long, BigDecimal> returnOrderGroupDtoMap = groupListByProductIds.stream().collect(Collectors.toMap(SimpleReturnOrderGroupDto::getSalesLedgerProductId, SimpleReturnOrderGroupDto::getSumReturnQuantity));
@@ -615,7 +590,7 @@
             // 4. 澶勭悊瀛愯〃鏁版嵁
             List<SalesLedgerProduct> productList = salesLedgerDto.getProductData();
             if (productList != null && !productList.isEmpty()) {
-                handleSalesLedgerProducts(salesLedger.getId(), productList, EnumUtil.fromCode(SaleEnum.class, salesLedgerDto.getType()));
+                handleSalesLedgerProducts(salesLedger.getId(), productList, EnumUtil.fromCode(SaleEnum.class, salesLedgerDto.getType()), salesLedger.getSalesContractNo());
                 updateMainContractAmount(
                         salesLedger.getId(),
                         productList,
@@ -713,7 +688,7 @@
     // 鏂囦欢杩佺Щ鏂规硶
 
     @Override
-    public void handleSalesLedgerProducts(Long salesLedgerId, List<SalesLedgerProduct> products, SaleEnum type) {
+    public void handleSalesLedgerProducts(Long salesLedgerId, List<SalesLedgerProduct> products, SaleEnum type, String contractNo) {
         // 鎸塈D鍒嗙粍锛屽尯鍒嗘柊澧炲拰鏇存柊鐨勮褰�
         Map<Boolean, List<SalesLedgerProduct>> partitionedProducts = products.stream()
                 .peek(p -> p.setSalesLedgerId(salesLedgerId))
@@ -737,8 +712,22 @@
                 salesLedgerProduct.setNoInvoiceAmount(salesLedgerProduct.getTaxInclusiveTotalPrice());
                 salesLedgerProduct.setPendingInvoiceTotal(salesLedgerProduct.getTaxInclusiveTotalPrice());
                 salesLedgerProductMapper.insert(salesLedgerProduct);
+                //娣诲姞閿�鍞鎵�  瀹℃壒鎴愬姛涔嬪悗娣诲姞鐢熶骇鏁版嵁
+                ApproveProcessVO approveProcessVO = new ApproveProcessVO();
+                approveProcessVO.setApproveType(9);
+                approveProcessVO.setApproveDeptId(SecurityUtils.getDeptId()[0]);
+                approveProcessVO.setApproveReason(contractNo);
+                approveProcessVO.setRecordId(salesLedgerProduct.getId());
+                approveProcessVO.setApproveUser(SecurityUtils.getUserId());
+                approveProcessVO.setApproveTime(LocalDate.now().toString());
+                approveProcessVO.setApproveId(salesLedgerProduct.getId().toString());
+                try {
+                    approveProcessService.addApprove(approveProcessVO);
+                }catch (Exception e) {
+                    log.error("娣诲姞閿�鍞鎵瑰紓甯�", e);
+                }
                 // 娣诲姞鐢熶骇鏁版嵁
-                salesLedgerProductServiceImpl.addProductionData(salesLedgerProduct);
+//                salesLedgerProductServiceImpl.addProductionData(salesLedgerProduct);
             }
         }
     }

--
Gitblit v1.9.3