From 103f10ed038b7398633b919f0efc5486f1e30267 Mon Sep 17 00:00:00 2001
From: gongchunyi <deslre0381@gmail.com>
Date: 星期一, 22 六月 2026 21:18:27 +0800
Subject: [PATCH] feat: 交付日期修改为入库日期起始

---
 src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java |   68 ++++++++++-----------------------
 1 files changed, 21 insertions(+), 47 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 e1ae53b..faaae71 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;
@@ -822,7 +823,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);
@@ -1167,7 +1172,7 @@
     @Transactional(readOnly = true)
     public String generateSalesContractNo() {
         LocalDate currentDate = LocalDate.now();
-        String datePart = currentDate.format(DateTimeFormatter.BASIC_ISO_DATE);
+        String datePart = currentDate.format(DateTimeFormatter.ofPattern("yyMMdd"));
         String lockKey = LOCK_PREFIX + datePart;
         String lockValue = Thread.currentThread().getId() + "-" + System.nanoTime(); // 鍞竴鏍囪瘑閿佹寔鏈夎��
 
@@ -1905,7 +1910,11 @@
             BigDecimal stockedQty = item.getStockedQuantity() == null ? BigDecimal.ZERO : item.getStockedQuantity();
             return orderQty.compareTo(BigDecimal.ZERO) <= 0 || stockedQty.compareTo(orderQty) >= 0;
         });
-        ledger.setStockStatus(allStocked ? 2 : (hasStocked ? 1 : 0));
+        int newStockStatus = allStocked ? 2 : (hasStocked ? 1 : 0);
+        if (newStockStatus > 0 && ledger.getDeliveryDate() == null) {
+            ledger.setDeliveryDate(LocalDate.now().plusDays(7));
+        }
+        ledger.setStockStatus(newStockStatus);
         baseMapper.updateById(ledger);
     }
 
@@ -2070,7 +2079,11 @@
             return sq != null && sq.compareTo(BigDecimal.ZERO) > 0;
         });
         boolean allLinesFull = ledgerAllProducts.stream().allMatch(p -> Objects.equals(p.getProductStockStatus(), 2));
-        salesLedger.setStockStatus(allLinesFull ? 2 : (anyInbound ? 1 : 0));
+        int newStockStatus = allLinesFull ? 2 : (anyInbound ? 1 : 0);
+        if (newStockStatus > 0 && salesLedger.getDeliveryDate() == null) {
+            salesLedger.setDeliveryDate(LocalDate.now().plusDays(7));
+        }
+        salesLedger.setStockStatus(newStockStatus);
         baseMapper.updateById(salesLedger);
     }
 
@@ -2621,7 +2634,6 @@
                 ledger.setStockStatus(allInbound ? 2 : (anyInbound ? 1 : 0));
                 ledger.setDeliveryStatus(allShipped ? 5 : 1);
 //            ledger.setReviewStatus(1);
-                ledger.setOrderStatus(1);
 
                 Long entryUserId = StringUtils.hasText(ledger.getEntryPerson()) ? Long.parseLong(ledger.getEntryPerson()) : 1L;
                 Long entryDeptId = 1L;
@@ -2975,7 +2987,6 @@
                         }
                         ledger.setStockStatus(allInbound ? 2 : (anyInbound ? 1 : 0));
                         ledger.setDeliveryStatus(allShipped ? 5 : 1);
-                        ledger.setOrderStatus(1);
 
                         Long entryUserId = StringUtils.hasText(ledger.getEntryPerson()) ? Long.parseLong(ledger.getEntryPerson()) : 1L;
                         Long entryDeptId = 1L;
@@ -4157,30 +4168,6 @@
         );
     }
 
-    @Override
-    @Transactional(rollbackFor = Exception.class)
-    public void markOrderCompleted(List<Long> ids) {
-        if (CollectionUtils.isEmpty(ids)) {
-            throw new ServiceException("璇烽�夋嫨瑕佹爣璁板畬鎴愮殑璁㈠崟");
-        }
-        for (Long id : ids) {
-            SalesLedger ledger = salesLedgerMapper.selectById(id);
-            if (ledger == null) {
-                throw new ServiceException("璁㈠崟涓嶅瓨鍦紝鏃犳硶鏍囪瀹屾垚");
-            }
-            if (ledger.getReviewStatus() == null || ledger.getReviewStatus() != 1) {
-                throw new ServiceException("璁㈠崟" + ledger.getSalesContractNo() + "涓嶆槸宸插鏍哥姸鎬侊紝鏃犳硶鏍囪瀹屾垚");
-            }
-            if (ledger.getOrderStatus() != null && ledger.getOrderStatus() == 1) {
-                throw new ServiceException("璁㈠崟" + ledger.getSalesContractNo() + "宸插畬鎴愶紝鏃犻渶閲嶅鏍囪");
-            }
-        }
-        salesLedgerMapper.update(null,
-                Wrappers.<SalesLedger>lambdaUpdate()
-                        .in(SalesLedger::getId, ids)
-                        .set(SalesLedger::getOrderStatus, 1)
-        );
-    }
 
     @Override
     public void incrementPrintCount(Long id, String printType) {
@@ -4246,9 +4233,7 @@
             if (salesLedgerDto.getReviewStatus() != null) {
                 queryWrapper.eq(SalesLedger::getReviewStatus, salesLedgerDto.getReviewStatus());
             }
-            if (salesLedgerDto.getOrderStatus() != null) {
-                queryWrapper.eq(SalesLedger::getOrderStatus, salesLedgerDto.getOrderStatus());
-            }
+
             if (salesLedgerDto.getReviewStatusList() != null && !salesLedgerDto.getReviewStatusList().isEmpty()) {
                 queryWrapper.and(w -> w.in(SalesLedger::getReviewStatus, salesLedgerDto.getReviewStatusList())
                         .or().isNull(SalesLedger::getReviewStatus));
@@ -4281,7 +4266,7 @@
                 ledgerDto.setDeliveryStatusText(getDeliveryStatusText(ledger.getDeliveryStatus()));
                 ledgerDto.setStockStatusText(getStockStatusText(ledger.getStockStatus()));
                 ledgerDto.setReviewStatusText(getReviewStatusText(ledger.getReviewStatus()));
-                ledgerDto.setOrderStatusText(getOrderStatusText(ledger.getOrderStatus()));
+
                 ledgerExportList.add(ledgerDto);
 
                 // 鏌ヨ璇ュ彴璐︾殑浜у搧鍒楄〃
@@ -4469,7 +4454,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());
@@ -4515,7 +4500,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());
@@ -4689,15 +4674,4 @@
         }
     }
 
-    private String getOrderStatusText(Integer status) {
-        if (status == null || status == 0) return "杩涜涓�";
-        switch (status) {
-            case 0:
-                return "杩涜涓�";
-            case 1:
-                return "宸插畬鎴�";
-            default:
-                return "杩涜涓�";
-        }
-    }
 }

--
Gitblit v1.9.3