From ce531d3bb32f5221b35f9e24d027ef83450ebbc6 Mon Sep 17 00:00:00 2001
From: liujie <1793218484@qq.com>
Date: 星期二, 21 十月 2025 16:58:34 +0800
Subject: [PATCH] 修改bug

---
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TErpProcurementController.java |   32 ++++++++++++++++++++++++++++++--
 1 files changed, 30 insertions(+), 2 deletions(-)

diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TErpProcurementController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TErpProcurementController.java
index 40d0237..d171d60 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TErpProcurementController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TErpProcurementController.java
@@ -24,6 +24,7 @@
 import io.swagger.annotations.ApiOperation;
 import org.apache.poi.ss.formula.functions.T;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.*;
 
 import javax.validation.Valid;
@@ -267,6 +268,7 @@
 
     @ApiOperation(value = "采购详情入库")
     @PostMapping(value = "/updateStatusProcurement")
+    @Transactional(rollbackFor = Exception.class)
     public R<DetailProcurementVO> updateStatusProcurement(@RequestBody @Valid UpdateStatusProcurementLastDto dto) {
         SysUser user = tokenService.getLoginUser().getUser();
         Integer roleType = user.getRoleType();
@@ -308,9 +310,35 @@
 //        tErpClinicWarehousing.setUnitAmount(tErpProcurementGoods.getSalesAmount());
         tErpClinicWarehousing.setWarehousingType(1);
         tErpClinicWarehousing.setType(1);
-        tErpClinicWarehousing.setWarehouseNo("G"+ DateUtils.dateTimeNow());
+
+        TErpClinicWarehousing last = erpClinicWarehousingService.getOne(new LambdaQueryWrapper<TErpClinicWarehousing>().orderByDesc(BaseModel::getCreateTime).last("LIMIT 1"));
+        if(last==null){
+            tErpClinicWarehousing.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
+                }
+                tErpClinicWarehousing.setWarehouseNo(datePart + String.format("%05d", number));
+            } catch (NumberFormatException e) {
+                // 如果解析失败,默认从00001开始
+                tErpClinicWarehousing.setWarehouseNo(datePart + "00001");
+            }
+        }
         tErpClinicWarehousing.setProcurementId(erpProcurement.getId());
-        erpClinicWarehousingService.save(tErpClinicWarehousing);
+        try {
+            erpClinicWarehousingService.save(tErpClinicWarehousing);
+        }catch (Exception e){
+            throw new RuntimeException("网络繁忙,请重试");
+        }
         // goodsId分组
         for (UpdateStatusProcurementDto updateStatusProcurementDto : dto.getList()) {
             TErpProcurementGoods tErpProcurementGoods = list.stream().filter(t -> t.getId().equals(updateStatusProcurementDto.getId())).findFirst().get();

--
Gitblit v1.7.1