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/TErpGoodsServiceImpl.java |  291 ++++++++++++++++++++++++++++++++++++++++++++++++++++------
 1 files changed, 261 insertions(+), 30 deletions(-)

diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TErpGoodsServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TErpGoodsServiceImpl.java
index 00bf92e..5993bcd 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TErpGoodsServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TErpGoodsServiceImpl.java
@@ -7,6 +7,7 @@
 import com.ruoyi.common.basic.PageInfo;
 import com.ruoyi.common.core.domain.BaseModel;
 import com.ruoyi.common.core.domain.entity.SysUser;
+import com.ruoyi.common.utils.CodeGenerateUtils;
 import com.ruoyi.common.utils.DateUtils;
 import com.ruoyi.common.utils.uuid.IdUtils;
 import com.ruoyi.system.dto.InventoryDto;
@@ -198,6 +199,14 @@
     @Override
     public boolean isExit(String goodsIdCode, String quasiNumber,String id) {
         Long size = this.baseMapper.selectCount(new LambdaQueryWrapper<>(TErpGoods.class).eq(TErpGoods::getGoodsSource,1).ne(id!=null,TErpGoods::getId, id).and(q -> q.eq(TErpGoods::getGoodsIdCode, goodsIdCode).or().eq(TErpGoods::getQuasiNumber, quasiNumber)));
+        if (size > 0) {
+            return true;
+        }
+        return false;
+    }
+    @Override
+    public boolean isExitOne(String goodsIdCode, String quasiNumber,String id) {
+        Long size = this.baseMapper.selectCount(new LambdaQueryWrapper<>(TErpGoods.class).eq(TErpGoods::getGoodsSource,1).ne(id!=null,TErpGoods::getId, id).and(q -> q.eq(TErpGoods::getQuasiNumber, quasiNumber)));
         if (size > 0) {
             return true;
         }
@@ -411,6 +420,14 @@
                 tErpGoodsUnits.stream().filter(t -> t.getId().equals(tErpGoods.getPackingUnitId())).findFirst().ifPresent(t -> tErpGoods.setPackingUnitName(t.getUnitName()));
             }
         }
+
+        List<String> typeIds = records.stream().map(TErpGoods::getTypeId).collect(Collectors.toList());
+        if(!typeIds.isEmpty()){
+            List<TErpGoodsType> tErpGoodsTypes = erpGoodsTypeMapper.selectBatchIds(typeIds);
+            for (TErpGoods tErpGoods : records) {
+                tErpGoodsTypes.stream().filter(t -> t.getId().equals(tErpGoods.getTypeId())).findFirst().ifPresent(t -> tErpGoods.setTypeName(t.getTypeName()));
+            }
+        }
         page.setRecords( records);
         return page;
     }
@@ -425,14 +442,21 @@
             TErpProcurement tErpProcurement = erpProcurementMapper.selectById(tErpClinicWarehousing.getProcurementId());
             warehouseGoodsDetailVo.setInventoryNumber(tErpProcurement.getProcurementCode());
         }
+        if(tErpClinicWarehousing.getType()==2){
+            TErpClinicInventory tErpClinicInventory = erpClinicInventoryMapper.selectById(tErpClinicWarehousing.getInventoryId());
+            warehouseGoodsDetailVo.setInventoryNumber(tErpClinicInventory.getInventoryNumber());
+        }
 
         List<TErpClinicWarehousingBatch> tErpClinicWarehousingBatches = erpClinicWarehousingBatchMapper.selectList(new LambdaQueryWrapper<TErpClinicWarehousingBatch>().eq(TErpClinicWarehousingBatch::getWarehousingId, id));
         for (TErpClinicWarehousingBatch tErpClinicWarehousingBatch : tErpClinicWarehousingBatches) {
             String goodsId = tErpClinicWarehousingBatch.getGoodsId();
             TErpGoods tErpGoods = erpGoodsMapper.selectById(goodsId);
+            tErpClinicWarehousingBatch.setGoodsName(tErpGoods.getGoodsName());
             String packingUnitId = tErpGoods.getPackingUnitId();
             TErpGoodsUnit tErpGoodsUnit = erpGoodsUnitMapper.selectById(packingUnitId);
-            tErpClinicWarehousingBatch.setUnitName(tErpGoodsUnit.getUnitName());
+            if(tErpGoodsUnit!=null){
+                tErpClinicWarehousingBatch.setUnitName(tErpGoodsUnit.getUnitName());
+            }
 
         }
 
@@ -512,11 +536,38 @@
             supplierClinicId =crmClinic.getId();
         }
         TErpSupplierInventory tErpSupplierInventory = new TErpSupplierInventory();
-        String s = DateUtils.dateTimeNow();
-        tErpSupplierInventory.setInventoryNumber("P" + s);
+        TErpSupplierInventory last1 = erpSupplierInventoryMapper.selectOne(new LambdaQueryWrapper<TErpSupplierInventory>().orderByDesc(BaseModel::getCreateTime).orderByDesc(TErpSupplierInventory::getInventoryNumber).last("limit 1"));
+        if(last1==null){
+            tErpSupplierInventory.setInventoryNumber("P" + DateUtils.dateTimeNow()+"00001");
+        }else {
+            String lastProcurementCode = last1.getInventoryNumber();
+            String datePart = "P" + 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
+                }
+                tErpSupplierInventory.setInventoryNumber(datePart + String.format("%05d", number));
+            } catch (NumberFormatException e) {
+                // 如果解析失败,默认从00001开始
+                tErpSupplierInventory.setInventoryNumber(datePart + "00001");
+            }
+        }
+
+
         tErpSupplierInventory.setWarehouseId(dto.getWarehouseId());
         tErpSupplierInventory.setSupplierId(supplierClinicId);
-        erpSupplierInventoryMapper.insert(tErpSupplierInventory);
+        try {
+            erpSupplierInventoryMapper.insert(tErpSupplierInventory);
+        }catch (Exception e){
+            throw new RuntimeException("网络繁忙,请重试");
+
+        }
 
         List<InventoryGoodsDto> dtos = dto.getDtos();
         for (InventoryGoodsDto inventoryGoodsDto : dtos) {
@@ -538,10 +589,34 @@
                 tErpSupplierWarehousing.setUnitAmount(tErpSupplierWarehousing1.getUnitAmount());
                 tErpSupplierWarehousing.setTotalPrice(tErpSupplierWarehousing1.getUnitAmount().multiply(new BigDecimal(tErpSupplierWarehousing.getGoodsCount())));
                 // 当前年月日时分秒
-                String time = DateUtils.dateTimeNow();
-                tErpSupplierWarehousing.setWarehouseNo("G" + time);
+                TErpSupplierWarehousing last = erpSupplierWarehousingMapper.selectOne(new LambdaQueryWrapper<TErpSupplierWarehousing>().orderByDesc(BaseModel::getCreateTime).orderByDesc(TErpSupplierWarehousing::getWarehouseNo).last("LIMIT 1"));
+                if(last==null){
+                    tErpSupplierWarehousing.setWarehouseNo("G"+DateUtils.dateTimeNow()+"00001");
+                }else {
+                    String lastProcurementCode = last.getWarehouseNo();
+                    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
+                        }
+                        tErpSupplierWarehousing.setWarehouseNo(datePart + String.format("%05d", number));
+                    } catch (NumberFormatException e) {
+                        // 如果解析失败,默认从00001开始
+                        tErpSupplierWarehousing.setWarehouseNo(datePart + "00001");
+                    }
+                }
                 tErpSupplierWarehousing.setType(2);
-                erpSupplierWarehousingMapper.insert(tErpSupplierWarehousing);
+                try {
+                    erpSupplierWarehousingMapper.insert(tErpSupplierWarehousing);
+                }catch (Exception e){
+                    throw new RuntimeException("网络繁忙,请重试");
+                }
 
                 // 添加批次信息
                 TErpSupplierWarehousingBatch tErpSupplierWarehousingBatch1 = new TErpSupplierWarehousingBatch();
@@ -565,7 +640,7 @@
                 erpSupplierInventoryGoodsMapper.insert(tErpSupplierInventoryGoods);
 
             } else {
-
+                int i =1;
                 TErpSupplierWarehousingBatch tErpSupplierWarehousingBatch1 = erpSupplierWarehousingBatchMapper.selectById(inventoryGoodsDto.getId());
                 String warehousingId1 = tErpSupplierWarehousingBatch1.getWarehousingId();
                 TErpSupplierWarehousing tErpSupplierWarehousing2 = erpSupplierWarehousingMapper.selectById(warehousingId1);
@@ -575,13 +650,37 @@
                     tErpSupplierOutbound.setWarehouseId(dto.getWarehouseId());
                     tErpSupplierOutbound.setSupplierId(supplierClinicId);
                     tErpSupplierOutbound.setOutboundType(1);
-                    tErpSupplierOutbound.setOutboundNumber("G" + s);
+                    TErpSupplierOutbound last = erpSupplierOutboundMapper.selectOne(new LambdaQueryWrapper<TErpSupplierOutbound>().orderByDesc(BaseModel::getCreateTime).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");
+                        }
+                    }
                     int count = inventoryGoodsDto.getDamagedCount();
                     tErpSupplierOutbound.setTotalMoney(tErpSupplierWarehousing1.getUnitAmount().multiply(new BigDecimal(count)));
                     tErpSupplierOutbound.setGoodsId(tErpSupplierWarehousing2.getGoodsId());
-                    erpSupplierOutboundMapper.insert(tErpSupplierOutbound);
+                    try {
+                        erpSupplierOutboundMapper.insert(tErpSupplierOutbound);
+                    }catch (Exception e){
+                        throw new RuntimeException("网络繁忙,请重试");
 
-
+                    }
                     TErpSupplierOutboundGoods tErpSupplierOutboundGoods = new TErpSupplierOutboundGoods();
                     tErpSupplierOutboundGoods.setOutboundId(tErpSupplierOutbound.getId());
                     tErpSupplierOutboundGoods.setWarehousingId(tErpSupplierWarehousing1.getId());
@@ -589,6 +688,7 @@
                     tErpSupplierOutboundGoods.setOutboundCount(count);
                     tErpSupplierOutboundGoods.setTotalPrice(tErpSupplierWarehousing1.getUnitAmount().multiply(new BigDecimal(count)));
                     erpSupplierOutboundGoodsMapper.insert(tErpSupplierOutboundGoods);
+                    i=2;
                 }
 
 
@@ -596,11 +696,37 @@
                 tErpSupplierOutbound.setWarehouseId(dto.getWarehouseId());
                 tErpSupplierOutbound.setSupplierId(supplierClinicId);
                 tErpSupplierOutbound.setOutboundType(6);
-                tErpSupplierOutbound.setOutboundNumber("G" + s);
+                TErpSupplierOutbound last = erpSupplierOutboundMapper.selectOne(new LambdaQueryWrapper<TErpSupplierOutbound>().orderByDesc(BaseModel::getCreateTime).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+=i;
+                        } else {
+                            number = 2; // 达到99999后重置为00002
+                        }
+                        tErpSupplierOutbound.setOutboundNumber(datePart + String.format("%05d", number));
+                    } catch (NumberFormatException e) {
+                        // 如果解析失败,默认从00001开始
+                        tErpSupplierOutbound.setOutboundNumber(datePart + "00001");
+                    }
+                }
                 int count = inventoryGoodsDto.getNum() - inventoryGoodsDto.getInventoryCount();
                 tErpSupplierOutbound.setTotalMoney(tErpSupplierWarehousing1.getUnitAmount().multiply(new BigDecimal(count)));
                 tErpSupplierOutbound.setGoodsId(tErpSupplierWarehousing2.getGoodsId());
-                erpSupplierOutboundMapper.insert(tErpSupplierOutbound);
+                try {
+                    erpSupplierOutboundMapper.insert(tErpSupplierOutbound);
+                }catch (Exception e){
+                    throw new RuntimeException("网络繁忙,请重试");
+                }
+
 
 
                 TErpSupplierOutboundGoods tErpSupplierOutboundGoods = new TErpSupplierOutboundGoods();
@@ -628,6 +754,7 @@
 
     }
     @Override
+    @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED)
     public void inventoryGoods1(InventoryDto dto, SysUser user) {
         Integer roleType = user.getRoleType();
         String supplierClinicId = null;
@@ -646,10 +773,36 @@
             supplierClinicId =crmClinic.getId();
         }
         TErpClinicInventory tErpSupplierInventory = new TErpClinicInventory();
-        String s = DateUtils.dateTimeNow();
-        tErpSupplierInventory.setInventoryNumber("P" + s);
+        TErpClinicInventory last = erpClinicInventoryMapper.selectOne(new LambdaQueryWrapper<TErpClinicInventory>().orderByDesc(BaseModel::getCreateTime).orderByDesc(TErpClinicInventory::getInventoryNumber).last("limit 1"));
+        if(last==null){
+            tErpSupplierInventory.setInventoryNumber("P" + DateUtils.dateTimeNow()+"00001");
+        }else {
+            String lastProcurementCode = last.getInventoryNumber();
+            String datePart = "P" + 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
+                }
+                tErpSupplierInventory.setInventoryNumber(datePart + String.format("%05d", number));
+            } catch (NumberFormatException e) {
+                // 如果解析失败,默认从00001开始
+                tErpSupplierInventory.setInventoryNumber(datePart + "00001");
+            }
+        }
+
         tErpSupplierInventory.setClinicId(supplierClinicId);
-        erpClinicInventoryMapper.insert(tErpSupplierInventory);
+        try {
+            erpClinicInventoryMapper.insert(tErpSupplierInventory);
+
+        }catch (Exception e){
+            throw new RuntimeException("网络繁忙,请重试");
+        }
+
 
         List<InventoryGoodsDto> dtos = dto.getDtos();
         for (InventoryGoodsDto inventoryGoodsDto : dtos) {
@@ -660,8 +813,6 @@
             TErpClinicWarehousing tErpSupplierWarehousing1 = erpClinicWarehousingMapper.selectById(warehousingId);
             TErpGoods erpGoods = this.getById(tErpSupplierWarehousingBatch.getGoodsId());
 
-
-
             // 盘点是盘亏盘盈   赢
             if (inventoryGoodsDto.getNum() < inventoryGoodsDto.getInventoryCount()) {
                 // 添加入库信息
@@ -670,13 +821,43 @@
 //                tErpSupplierWarehousing.setGoodsName(erpGoods.getGoodsName());
 //                tErpSupplierWarehousing.setPurchaseCount(inventoryGoodsDto.getInventoryCount() - inventoryGoodsDto.getNum());
 //                tErpSupplierWarehousing.setUnitAmount(erpGoods.getSalesAmount());
-                tErpSupplierWarehousing.setTotalPrice(erpGoods.getSalesAmount().multiply(new BigDecimal(inventoryGoodsDto.getInventoryCount() - inventoryGoodsDto.getNum())));
+                tErpSupplierWarehousing.setTotalPrice(tErpSupplierWarehousingBatch.getUnitAmount().multiply(new BigDecimal(inventoryGoodsDto.getInventoryCount() - inventoryGoodsDto.getNum())));
                 // 当前年月日时分秒
-                String time = DateUtils.dateTimeNow();
-                tErpSupplierWarehousing.setWarehouseNo("G" + time);
+                TErpClinicWarehousing last1 = erpClinicWarehousingMapper.selectOne(new LambdaQueryWrapper<TErpClinicWarehousing>().orderByDesc(BaseModel::getCreateTime).orderByDesc(TErpClinicWarehousing::getWarehouseNo).last("limit 1"));
+                if(last1==null){
+                    tErpSupplierWarehousing.setWarehouseNo("G" + DateUtils.dateTimeNow()+"00001");
+                }else {
+                    String lastProcurementCode = last1.getWarehouseNo();
+                    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
+                        }
+                        tErpSupplierWarehousing.setWarehouseNo(datePart + String.format("%05d", number));
+                    } catch (NumberFormatException e) {
+                        // 如果解析失败,默认从00001开始
+                        tErpSupplierWarehousing.setWarehouseNo(datePart + "00001");
+                    }
+
+                }
                 tErpSupplierWarehousing.setType(2);
                 tErpSupplierWarehousing.setInventoryId(tErpSupplierInventory.getId());
-                erpClinicWarehousingMapper.insert(tErpSupplierWarehousing);
+                if(erpGoods.getGoodsSource()==1){
+                    TCrmSupplier supplier = crmSupplierMapper.selectById(erpGoods.getSupplierClinicId());
+                    tErpSupplierWarehousing.setSupplierName(supplier.getSupplierName());
+                }else {
+                    tErpSupplierWarehousing.setSupplierName(erpGoods.getSupplierName());
+                }
+                try {
+                    erpClinicWarehousingMapper.insert(tErpSupplierWarehousing);
+                }catch (Exception e){
+                    throw new RuntimeException("网络繁忙,请重试");
+                }
 
                 // 添加批次信息
                 TErpClinicWarehousingBatch tErpSupplierWarehousingBatch1 = new TErpClinicWarehousingBatch();
@@ -705,18 +886,42 @@
                 erpClinicInventoryGoodsMapper.insert(tErpSupplierInventoryGoods);
 
             } else {
-
-
+                int i=1;
                 if(inventoryGoodsDto.getDamagedCount()!=null && inventoryGoodsDto.getDamagedCount()>0){
                     TErpClinicOutbound tErpSupplierOutbound = new TErpClinicOutbound();
 //                tErpSupplierOutbound.setWarehouseId(dto.getWarehouseId());
 //                tErpSupplierOutbound.setSupplierId(supplierClinicId);
                     tErpSupplierOutbound.setOutboundType(1);
-                    tErpSupplierOutbound.setOutboundNumber("G" + s);
+                    TErpClinicOutbound last2 = erpClinicOutboundMapper.selectOne(new LambdaQueryWrapper<TErpClinicOutbound>().orderByDesc(BaseModel::getCreateTime).orderByDesc(TErpClinicOutbound::getOutboundNumber).last("limit 1"));
+                    if(last2==null){
+
+                        tErpSupplierOutbound.setOutboundNumber("G" + DateUtils.dateTimeNow()+"00001");
+                    }else {
+                        String lastProcurementCode = last2.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");
+                        }
+                    }
                     int count = inventoryGoodsDto.getDamagedCount();
                     tErpSupplierOutbound.setTotalMoney(erpGoods.getSalesAmount().multiply(new BigDecimal(count)));
                     tErpSupplierOutbound.setInventoryId(tErpSupplierInventory.getId());
-                    erpClinicOutboundMapper.insert(tErpSupplierOutbound);
+                    try {
+                        erpClinicOutboundMapper.insert(tErpSupplierOutbound);
+                    }catch (Exception e){
+                        throw new RuntimeException("网络繁忙,请重试");
+                    }
 
 
                     TErpClinicOutboundGoods tErpSupplierOutboundGoods = new TErpClinicOutboundGoods();
@@ -726,16 +931,42 @@
                     tErpSupplierOutboundGoods.setOutboundCount(count);
                     tErpSupplierOutboundGoods.setTotalPrice(erpGoods.getSalesAmount().multiply(new BigDecimal(count)));
                     erpClinicOutboundGoodsMapper.insert(tErpSupplierOutboundGoods);
+                    i=2;
                 }
                 TErpClinicOutbound tErpSupplierOutbound = new TErpClinicOutbound();
 //                tErpSupplierOutbound.setWarehouseId(dto.getWarehouseId());
 //                tErpSupplierOutbound.setSupplierId(supplierClinicId);
                 tErpSupplierOutbound.setOutboundType(6);
-                tErpSupplierOutbound.setOutboundNumber("G" + s);
+                TErpClinicOutbound last4 = erpClinicOutboundMapper.selectOne(new LambdaQueryWrapper<TErpClinicOutbound>().orderByDesc(BaseModel::getCreateTime).orderByDesc(TErpClinicOutbound::getOutboundNumber).last("limit 1"));
+                if(last4==null){
+                    tErpSupplierOutbound.setOutboundNumber("G" +  DateUtils.dateTimeNow()+"00001");
+                }else {
+                    String lastProcurementCode = last4.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+=i;
+                        } else {
+                            number = 2; // 达到99999后重置为00002
+                        }
+                        tErpSupplierOutbound.setOutboundNumber(datePart + String.format("%05d", number));
+                    } catch (NumberFormatException e) {
+                        // 如果解析失败,默认从00001开始
+                        tErpSupplierOutbound.setOutboundNumber(datePart + "00001");
+                    }
+
+                }
                 int count = inventoryGoodsDto.getNum() - inventoryGoodsDto.getInventoryCount();
-                tErpSupplierOutbound.setTotalMoney(erpGoods.getSalesAmount().multiply(new BigDecimal(count)));
+                tErpSupplierOutbound.setTotalMoney(tErpSupplierWarehousingBatch.getSalesAmount().multiply(new BigDecimal(count)));
                 tErpSupplierOutbound.setInventoryId(tErpSupplierInventory.getId());
-                erpClinicOutboundMapper.insert(tErpSupplierOutbound);
+                try {
+                    erpClinicOutboundMapper.insert(tErpSupplierOutbound);
+                }catch (Exception e){
+                    throw new RuntimeException("网络繁忙,请重试");
+                }
 
 
                 TErpClinicOutboundGoods tErpSupplierOutboundGoods = new TErpClinicOutboundGoods();
@@ -743,7 +974,7 @@
                 tErpSupplierOutboundGoods.setWarehousingId(tErpSupplierWarehousing1.getId());
                 tErpSupplierOutboundGoods.setWarehousingBatchId(tErpSupplierWarehousingBatch.getId());
                 tErpSupplierOutboundGoods.setOutboundCount(count);
-                tErpSupplierOutboundGoods.setTotalPrice(erpGoods.getSalesAmount().multiply(new BigDecimal(count)));
+                tErpSupplierOutboundGoods.setTotalPrice(tErpSupplierWarehousingBatch.getSalesAmount().multiply(new BigDecimal(count)));
                 erpClinicOutboundGoodsMapper.insert(tErpSupplierOutboundGoods);
 
 

--
Gitblit v1.7.1