From 8114cb3d085e64ad82ccb1274816831d131a8683 Mon Sep 17 00:00:00 2001
From: buhuazhen <hua100783@gmail.com>
Date: 星期二, 31 三月 2026 13:35:19 +0800
Subject: [PATCH] feat(sales): 按年月格式优化销售合同编号生成规则

---
 src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java |   33 ++++++++++++++++++---------------
 1 files changed, 18 insertions(+), 15 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 0e9f52f..96260b6 100644
--- a/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java
+++ b/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java
@@ -2,6 +2,7 @@
 
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.convert.Convert;
+import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.date.LocalDateTimeUtil;
 import cn.hutool.core.lang.Assert;
 import cn.hutool.core.util.StrUtil;
@@ -52,6 +53,7 @@
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Lazy;
 import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.data.redis.core.script.DefaultRedisScript;
 import org.springframework.stereotype.Service;
@@ -107,21 +109,8 @@
     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;
@@ -135,8 +124,9 @@
     @Autowired
     private ProductStructureMapper productStructureMapper;
     @Autowired
+    @Lazy
     private ProductionProductMainService productionProductMainService;
-    ;
+
     @Autowired
     private SysUserMapper sysUserMapper;
 
@@ -681,7 +671,7 @@
             salesLedger.setTenantId(customer.getTenantId());
             // 3. 鏂板鎴栨洿鏂颁富琛�
             if (salesLedger.getId() == null) {
-                String contractNo = generateSalesContractNo();
+                String contractNo = generateSalesContractNoBy8Date();
                 salesLedger.setSalesContractNo(contractNo);
                 salesLedgerMapper.insert(salesLedger);
             } else {
@@ -825,6 +815,19 @@
         return entity;
     }
 
+    public String generateSalesContractNoBy8Date(){
+        String yyMM = DateUtil.format(new Date(), "yyMM");
+        // 鏌ヨ涓�涓湀鏈夊灏戣鍗�
+        Date begin = DateUtil.beginOfMonth(new Date());
+        Date end = DateUtil.endOfMonth(new Date());
+        LambdaQueryWrapper<SalesLedger> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.between(SalesLedger::getEntryDate, begin, end);
+        long count = salesLedgerMapper.selectCount(queryWrapper);
+        return StrUtil.format("{}{:04d}", yyMM, count + 1);
+    }
+
+
+
     @Transactional(readOnly = true)
     public String generateSalesContractNo() {
         LocalDate currentDate = LocalDate.now();

--
Gitblit v1.9.3