From 59099ec96f7a2da11df4b0b1593092b0aff38e90 Mon Sep 17 00:00:00 2001
From: liujie <1793218484@qq.com>
Date: 星期四, 23 十月 2025 13:45:52 +0800
Subject: [PATCH] 修改bug
---
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TErpClinicWarehousingServiceImpl.java | 89 ++++++++++++++++++++++++++++++++++++++++++--
1 files changed, 84 insertions(+), 5 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..c43fcec 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;
@@ -42,6 +45,7 @@
@Resource
private TCrmClinicMapper crmClinicMapper;
+
@Resource
private TErpClinicInventoryGoodsMapper erpClinicInventoryGoodsMapper;
@@ -294,6 +298,20 @@
tErpGoodsVO.setTypeName(tErpGoodsVO.getTypeName());
}
}
+ List<String> unitIds = list.stream().map(TErpGoods::getPackingUnitId).collect(Collectors.toList());
+ if (!unitIds.isEmpty()) {
+ List<TErpGoodsUnit> unitList = erpGoodsUnitMapper.selectBatchIds(unitIds);
+ for (TErpGoodsVO tErpGoodsVO : list) {
+ unitList.stream().filter(t -> t.getId().equals(tErpGoodsVO.getPackingUnitId())).findFirst().ifPresent(t -> tErpGoodsVO.setPackingUnitName(t.getUnitName()));
+ }
+ }
+ List<String> supplierIds = list.stream().map(TErpGoods::getSupplierClinicId).collect(Collectors.toList());
+ if (!supplierIds.isEmpty()) {
+ List<TCrmSupplier> supplierClinicList = crmSupplierMapper.selectBatchIds(supplierIds);
+ for (TErpGoodsVO tErpGoodsVO : list) {
+ supplierClinicList.stream().filter(t -> tErpGoodsVO.getGoodsSource()==1 && t.getId().equals(tErpGoodsVO.getSupplierClinicId())).findFirst().ifPresent(t -> tErpGoodsVO.setSupplierName(t.getSupplierName()));
+ }
+ }
pageInfo.setRecords(list);
return pageInfo;
}
@@ -360,6 +378,7 @@
}
@Override
+ @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED)
public void warehouseGoods(WarehouseGoodsDto dtos, SysUser user, String supplierClinicId) {
// dtos根据供应商分组
@@ -375,12 +394,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).orderByDesc(TErpClinicWarehousing::getWarehouseNo).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 +478,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).orderByDesc(TErpClinicOutbound::getOutboundNumber).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()) {
@@ -452,7 +527,11 @@
tErpClinicOutboundGoods1.setWarehousingId(tErpClinicWarehousingBatch.getWarehousingId());
tErpClinicOutboundGoods1.setWarehousingBatchId(batchId);
tErpClinicOutboundGoods1.setOutboundCount(outboundGoodsNextDto.getNum());
- tErpClinicOutboundGoods1.setTotalPrice(tErpClinicWarehousingBatch.getUnitAmount().multiply(BigDecimal.valueOf(outboundGoodsNextDto.getNum())));
+ if(tErpClinicWarehousingBatch.getUnitAmount()==null){
+ tErpClinicOutboundGoods1.setTotalPrice(tErpClinicWarehousingBatch.getSalesAmount().multiply(BigDecimal.valueOf(outboundGoodsNextDto.getNum())));
+ }else {
+ tErpClinicOutboundGoods1.setTotalPrice(tErpClinicWarehousingBatch.getUnitAmount().multiply(BigDecimal.valueOf(outboundGoodsNextDto.getNum())));
+ }
tErpClinicOutboundGoods1.setGoodsId(tErpClinicWarehousingBatch.getGoodsId());
tErpClinicOutboundGoods.add(tErpClinicOutboundGoods1);
erpClinicOutboundGoodsMapper.insert(tErpClinicOutboundGoods1);
--
Gitblit v1.7.1