From dc658c83dcb919df1b263dc9cd10a228e7a234ec Mon Sep 17 00:00:00 2001
From: gongchunyi <deslre0381@gmail.com>
Date: 星期三, 24 六月 2026 14:39:45 +0800
Subject: [PATCH] fix: 反审核重复新增

---
 src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java |   59 +++++++++++++++++++----------------------------------------
 1 files changed, 19 insertions(+), 40 deletions(-)

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 ec49c7d..b1304b9 100644
--- a/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java
+++ b/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java
@@ -27,6 +27,7 @@
 import com.ruoyi.common.exception.ServiceException;
 import com.ruoyi.common.exception.base.BaseException;
 import com.ruoyi.common.utils.*;
+import com.ruoyi.common.utils.excel.ExcelUtils;
 import com.ruoyi.common.utils.poi.ExcelUtil;
 import com.ruoyi.framework.security.LoginUser;
 import com.ruoyi.other.mapper.TempFileMapper;
@@ -273,8 +274,12 @@
             if (!bindList.isEmpty()) {
                 List<Integer> processIds = bindList.stream().map(SalesLedgerProductProcessBind::getSalesLedgerProductProcessId).collect(Collectors.toList());
                 Map<Integer, Integer> processQuantityMap = bindList.stream().collect(Collectors.toMap(SalesLedgerProductProcessBind::getSalesLedgerProductProcessId, SalesLedgerProductProcessBind::getQuantity, (a, b) -> a));
+                Map<Integer, BigDecimal> processAmountMap = bindList.stream().collect(Collectors.toMap(SalesLedgerProductProcessBind::getSalesLedgerProductProcessId, SalesLedgerProductProcessBind::getAmount, (a, b) -> a));
                 List<SalesLedgerProductProcess> processList = salesLedgerProductProcessService.listByIds(processIds);
-                processList.forEach(p -> p.setQuantity(processQuantityMap.get(p.getId())));
+                processList.forEach(p -> {
+                    p.setQuantity(processQuantityMap.get(p.getId()));
+                    if (processAmountMap.get(p.getId()) != null) p.setUnitPrice(processAmountMap.get(p.getId()));
+                });
                 product.setSalesProductProcessList(processList);
             }
             ProductModel productModel = productModelMap.get(product.getProductModelId());
@@ -651,6 +656,7 @@
                                         SalesLedgerProductProcess p = new SalesLedgerProductProcess();
                                         p.setId(process.getId());
                                         p.setQuantity(processQty.intValue());
+                                        p.setUnitPrice(process.getUnitPrice());
                                         processList.add(p);
                                         extraProcessAmountPerPiece = extraProcessAmountPerPiece.add(defaultDecimal(process.getUnitPrice()).multiply(processQty));
                                     }
@@ -822,7 +828,11 @@
             record.setSalesLedgerProcessRouteId(route.getId());
             Integer isCompleted = inputRecord != null && inputRecord.getIsCompleted() != null ? inputRecord.getIsCompleted() : 0;
             record.setIsCompleted(isCompleted);
-            record.setCompletedTime(Objects.equals(isCompleted, 1) ? LocalDateTime.now() : null);
+            if (Objects.equals(isCompleted, 1)) {
+                record.setCompletedTime(inputRecord != null && inputRecord.getCompletedTime() != null ? inputRecord.getCompletedTime() : LocalDateTime.now());
+            } else {
+                record.setCompletedTime(null);
+            }
             routeRecordList.add(record);
         }
         salesLedgerProcessRouteRecordService.saveBatch(routeRecordList);
@@ -3077,6 +3087,7 @@
             SalesLedgerProductProcess bind = new SalesLedgerProductProcess();
             bind.setId(process.getId());
             bind.setQuantity(entry.getValue());
+            bind.setUnitPrice(process.getUnitPrice());
             result.add(bind);
         }
         return result;
@@ -3917,43 +3928,10 @@
             // 5. 鍙栨秷瀹℃壒娴佺▼
             cancelApproveProcesses(id, originalLedger.getSalesContractNo());
 
-            // 6. 閲嶆柊鐢熸垚锛氬垱寤烘柊鍙拌处鍓湰
+            // 6. 閲嶆柊鐢熸垚锛氭澶勪笉鐩存帴鍦ㄥ悗绔叆搴擄紝鑰屾槸杩斿洖鍘熷崟鎹甀D缁欏墠绔�
+            // 鍓嶇鎷垮埌ID鍚庝細鑾峰彇鍘熷崟鎹鎯呭苟璺宠浆鍒版柊澧為〉闈紙甯﹀叆棰勫~鏁版嵁锛夛紝鐢辩敤鎴峰湪椤甸潰涓婄紪杈戝悗缁熶竴鏂板锛屼互閬垮厤鏁版嵁閲嶅鐢熸垚
             if (dto.getCounterReviewType() == 2) {
-                SalesLedger newLedger = new SalesLedger();
-                BeanUtils.copyProperties(originalLedger, newLedger);
-                newLedger.setId(null);
-                newLedger.setSalesContractNo(generateSalesContractNo());
-                newLedger.setDeliveryStatus(1);
-                newLedger.setStockStatus(0);
-                newLedger.setReviewStatus(0);
-                newLedger.setCounterReviewTime(null);
-                newLedger.setCounterReviewPerson(null);
-                newLedger.setCounterReviewPersonId(null);
-                newLedger.setCounterReviewType(null);
-                newLedger.setCounterReviewDesc(null);
-                salesLedgerMapper.insert(newLedger);
-
-                // 澶嶅埗浜у搧鍒版柊鍙拌处
-                List<SalesLedgerProduct> originalProducts = salesLedgerProductMapper.selectList(
-                        Wrappers.<SalesLedgerProduct>lambdaQuery()
-                                .eq(SalesLedgerProduct::getSalesLedgerId, id)
-                );
-                for (SalesLedgerProduct originalProduct : originalProducts) {
-                    SalesLedgerProduct newProduct = new SalesLedgerProduct();
-                    BeanUtils.copyProperties(originalProduct, newProduct);
-                    newProduct.setId(null);
-                    newProduct.setSalesLedgerId(newLedger.getId());
-                    newProduct.setStockedQuantity(BigDecimal.ZERO);
-                    newProduct.setShippedQuantity(BigDecimal.ZERO);
-                    newProduct.setUnqualifiedStockedQuantity(BigDecimal.ZERO);
-                    newProduct.setUnqualifiedShippedQuantity(BigDecimal.ZERO);
-                    newProduct.setReturnQuality(BigDecimal.ZERO);
-                    newProduct.setAvailableQuality(newProduct.getQuantity().subtract(newProduct.getReturnQuality()));
-                    newProduct.setProductStockStatus(0);
-                    newProduct.fillRemainingQuantity();
-                    salesLedgerProductMapper.insert(newProduct);
-                }
-                newLedgerIds.add(newLedger.getId());
+                newLedgerIds.add(id);
             }
         }
         return newLedgerIds;
@@ -4441,7 +4419,7 @@
                 sheetMap.put("宸ヨ壓璺嚎", sheetData);
             }
 
-            com.ruoyi.common.utils.excel.ExcelUtils.exportManySheet(response, "閿�鍞彴璐﹀伐鑹鸿矾绾垮鍑�", sheetMap);
+            ExcelUtils.exportManySheet(response, "閿�鍞彴璐﹀伐鑹鸿矾绾垮鍑�", sheetMap);
         } catch (Exception e) {
             log.error("瀵煎嚭鍞悗鍙拌处宸ヨ壓璺嚎澶辫触", e);
             throw new ServiceException("瀵煎嚭鍞悗鍙拌处宸ヨ壓璺嚎澶辫触锛�" + e.getMessage());
@@ -4487,7 +4465,7 @@
 
     private List<Object> buildProcessRouteRow(SalesLedger salesLedger, SalesLedgerProduct product, SalesLedgerProcessRouteRecord route) {
         List<Object> row = new ArrayList<>();
-        row.add(salesLedger.getEntryDate() == null ? "" : DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, salesLedger.getEntryDate()));
+        row.add(route.getCompletedTime() == null ? "" : route.getCompletedTime().format(java.time.format.DateTimeFormatter.ofPattern("yyyy-MM-dd")));
         row.add(salesLedger.getSalesContractNo());
         row.add(salesLedger.getCustomerName());
         row.add(product == null ? "" : product.getSpecificationModel());
@@ -4662,3 +4640,4 @@
     }
 
 }
+

--
Gitblit v1.9.3