From 72aaf45389cd09c206ee1b90f0c7f5bf59782930 Mon Sep 17 00:00:00 2001
From: xuhy <3313886187@qq.com>
Date: 星期三, 22 十月 2025 18:27:49 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TErpProcurementServiceImpl.java |   65 +++++++++++++++++++++++++++++---
 1 files changed, 59 insertions(+), 6 deletions(-)

diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TErpProcurementServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TErpProcurementServiceImpl.java
index dc26d97..6b1e2eb 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TErpProcurementServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TErpProcurementServiceImpl.java
@@ -459,7 +459,7 @@
 
 
             // 获取上一条最新的数据
-            TErpProcurement tErpProcurement1 = this.baseMapper.selectOne(new QueryWrapper<TErpProcurement>().orderByDesc("create_time").last("limit 1"));
+            TErpProcurement tErpProcurement1 = this.baseMapper.selectOne(new QueryWrapper<TErpProcurement>().orderByDesc("create_time").orderByDesc("procurement_code").last("limit 1"));
             if(tErpProcurement1==null){
                 tErpProcurement.setProcurementCode("C" + DateUtils.dateTimeNow()+"00001");
             }else {
@@ -467,8 +467,8 @@
                 String datePart = "C" + DateUtils.dateTimeNow();
 
                 // 直接获取后五位数字并+1,不考虑是否同一天
-                String numberPart = lastProcurementCode.substring(Math.max(0, lastProcurementCode.length() - 5));
                 try {
+                    String numberPart = lastProcurementCode.substring(Math.max(0, lastProcurementCode.length() - 5));
                     int number = Integer.parseInt(numberPart);
                     if (number < 99999) {
                         number++;
@@ -606,8 +606,34 @@
                         tErpSupplierOutbound.setOutboundType(7);
                         //TODO 确定这个是采购价还是销售价格
                         tErpSupplierOutbound.setTotalMoney(tErpProcurementGoods.getPurchasePrice().multiply(new BigDecimal(purchaseCount)));
-                        tErpSupplierOutbound.setOutboundNumber("G" + DateUtils.dateTimeNow());
-                        erpSupplierOutboundMapper.insert(tErpSupplierOutbound);
+
+                        TErpSupplierOutbound last = erpSupplierOutboundMapper.selectOne(new LambdaQueryWrapper<TErpSupplierOutbound>().orderByDesc(BaseModel::getCreateTime).orderByDesc(TErpSupplierOutbound::getOutboundNumber).last("limit 1"));
+                        if(last==null){
+                            tErpSupplierOutbound.setOutboundNumber("G" + DateUtils.dateTimeNow()+"00001");
+                        }else {
+                            String lastProcurementCode = last.getOutboundNumber();
+                            String datePart = "G" + DateUtils.dateTimeNow();
+
+                            // 直接获取后五位数字并+1,不考虑是否同一天
+                            try {
+                                String numberPart = lastProcurementCode.substring(Math.max(0, lastProcurementCode.length() - 5));
+                                int number = Integer.parseInt(numberPart);
+                                if (number < 99999) {
+                                    number++;
+                                } else {
+                                    number = 2; // 达到99999后重置为00002
+                                }
+                                tErpSupplierOutbound.setOutboundNumber(datePart + String.format("%05d", number));
+                            } catch (NumberFormatException e) {
+                                // 如果解析失败,默认从00001开始
+                                tErpSupplierOutbound.setOutboundNumber(datePart + "00001");
+                            }
+                        }
+                        try {
+                            erpSupplierOutboundMapper.insert(tErpSupplierOutbound);
+                        }catch (Exception e){
+                            throw new RuntimeException("网络繁忙,请重试");
+                        }
 
                         TErpSupplierOutboundGoods tErpSupplierOutboundGoods = new TErpSupplierOutboundGoods();
                         tErpSupplierOutboundGoods.setOutboundId(tErpSupplierOutbound.getId());
@@ -629,8 +655,35 @@
                         tErpSupplierOutbound.setOutboundType(7);
                         //TODO 确定这个是采购价还是销售价格
                         tErpSupplierOutbound.setTotalMoney(tErpProcurementGoods.getPurchasePrice().multiply(new BigDecimal(purchaseCount)));
-                        tErpSupplierOutbound.setOutboundNumber("G" + DateUtils.dateTimeNow());
-                        erpSupplierOutboundMapper.insert(tErpSupplierOutbound);
+                        TErpSupplierOutbound last = erpSupplierOutboundMapper.selectOne(new LambdaQueryWrapper<TErpSupplierOutbound>().orderByDesc(BaseModel::getCreateTime).orderByDesc(TErpSupplierOutbound::getOutboundNumber).last("limit 1"));
+                        if(last==null){
+                            tErpSupplierOutbound.setOutboundNumber("G" + DateUtils.dateTimeNow()+"00001");
+                        }else {
+                            String lastProcurementCode = last.getOutboundNumber();
+                            String datePart = "G" + DateUtils.dateTimeNow();
+
+                            // 直接获取后五位数字并+1,不考虑是否同一天
+                            try {
+                                String numberPart = lastProcurementCode.substring(Math.max(0, lastProcurementCode.length() - 5));
+                                int number = Integer.parseInt(numberPart);
+                                if (number < 99999) {
+                                    number++;
+                                } else {
+                                    number = 2; // 达到99999后重置为00002
+                                }
+                                tErpSupplierOutbound.setOutboundNumber(datePart + String.format("%05d", number));
+                            } catch (NumberFormatException e) {
+                                // 如果解析失败,默认从00001开始
+                                tErpSupplierOutbound.setOutboundNumber(datePart + "00001");
+                            }
+                        }
+
+                        try {
+
+                            erpSupplierOutboundMapper.insert(tErpSupplierOutbound);
+                        }catch (Exception e){
+                            throw new RuntimeException("网络繁忙,请重试");
+                        }
 
                         TErpSupplierOutboundGoods tErpSupplierOutboundGoods = new TErpSupplierOutboundGoods();
                         tErpSupplierOutboundGoods.setOutboundId(tErpSupplierOutbound.getId());

--
Gitblit v1.7.1