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-system/src/main/java/com/ruoyi/system/service/impl/TErpClinicWarehousingServiceImpl.java | 68 ++++++++++++++++++++++++++++++++--
1 files changed, 64 insertions(+), 4 deletions(-)
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TErpClinicWarehousingServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TErpClinicWarehousingServiceImpl.java
index f3d7fa6..31b6874 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TErpClinicWarehousingServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TErpClinicWarehousingServiceImpl.java
@@ -4,6 +4,7 @@
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
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.DateUtils;
import com.ruoyi.system.dto.ClinicOutboundGoodsDto;
@@ -18,6 +19,8 @@
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.system.vo.*;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Propagation;
+import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.math.BigDecimal;
@@ -360,6 +363,7 @@
}
@Override
+ @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED)
public void warehouseGoods(WarehouseGoodsDto dtos, SysUser user, String supplierClinicId) {
// dtos根据供应商分组
@@ -375,12 +379,40 @@
TErpClinicWarehousing tErpClinicWarehousing = new TErpClinicWarehousing();
tErpClinicWarehousing.setClinicId(supplierClinicId);
tErpClinicWarehousing.setCreateId(user.getUserId().toString());
- tErpClinicWarehousing.setWarehouseNo("G" + DateUtils.dateTimeNow());
+
+ TErpClinicWarehousing last = this.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.setCreateTime(LocalDateTime.now());
tErpClinicWarehousing.setType(3);
tErpClinicWarehousing.setStatus(dtos.getStatus());
tErpClinicWarehousing.setWarehousingType(2);
- this.save(tErpClinicWarehousing);
+ try {
+ this.save(tErpClinicWarehousing);
+ }catch (Exception e){
+ throw new RuntimeException("网络繁忙,请重试");
+
+ }
+
BigDecimal totalPrice = new BigDecimal(0);
ArrayList<String> names = new ArrayList<>();
@@ -431,17 +463,45 @@
}
@Override
+ @Transactional(rollbackFor = Exception.class)
public void outboundGoods(ClinicOutboundGoodsDto dto, SysUser user, String supplierClinicId) {
TErpClinicOutbound tErpClinicOutbound = new TErpClinicOutbound();
tErpClinicOutbound.setClinicId(supplierClinicId);
tErpClinicOutbound.setCreateId(user.getUserId().toString());
- tErpClinicOutbound.setOutboundNumber("G" + DateUtils.dateTimeNow());
+ TErpClinicOutbound last = erpClinicOutboundMapper.selectOne(new LambdaQueryWrapper<TErpClinicOutbound>().orderByDesc(BaseModel::getCreateTime).last("limit 1"));
+ if(last==null){
+ tErpClinicOutbound.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
+ }
+ tErpClinicOutbound.setOutboundNumber(datePart + String.format("%05d", number));
+ } catch (NumberFormatException e) {
+ // 如果解析失败,默认从00001开始
+ tErpClinicOutbound.setOutboundNumber(datePart + "00001");
+ }
+ }
+
tErpClinicOutbound.setCreateTime(LocalDateTime.now());
tErpClinicOutbound.setOutboundType(dto.getOutboundType());
tErpClinicOutbound.setTotalMoney(dto.getTotalPrice());
tErpClinicOutbound.setOutboundReason(dto.getOutboundReason());
tErpClinicOutbound.setTypeNum(dto.getTypeNum());
- erpClinicOutboundMapper.insert(tErpClinicOutbound);
+ try {
+ erpClinicOutboundMapper.insert(tErpClinicOutbound);
+ }catch (Exception e){
+ throw new RuntimeException("网络繁忙,请重试");
+ }
+
List<TErpClinicOutboundGoods> tErpClinicOutboundGoods = new ArrayList<>();
for (OutboundGoodsNextDto outboundGoodsNextDto : dto.getOutboundGoodsNextDtos()) {
--
Gitblit v1.7.1