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 | 106 ++++++++++++++++++++++++++++++++++++++++++++++++----
1 files changed, 97 insertions(+), 9 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 587e81a..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;
@@ -217,7 +221,9 @@
inventoryDetailVo.setGoodsName(goods.getGoodsName());
TErpGoodsUnit tErpGoodsUnit = erpGoodsUnitMapper.selectById(goods.getPackingUnitId());
- inventoryDetailVo.setUnitName(tErpGoodsUnit.getUnitName());
+ if(tErpGoodsUnit!=null){
+ inventoryDetailVo.setUnitName(tErpGoodsUnit.getUnitName());
+ }
inventoryDetailVo.setWarehouseNo(tErpSupplierWarehousing.getWarehouseNo());
TErpClinicOutboundGoods outboundGoods = erpClinicOutboundGoodsMapper.selectById(tErpSupplierInventoryGood.getWarehousingBatchId());
@@ -266,8 +272,8 @@
.last("LIMIT 1"));
supplierClinicId = crmClinic.getId();
}
- // 获取当前时间后9个月的时间
- LocalDateTime nineMonthLater = LocalDateTime.now().plusMonths(9);
+ // 获取当前时间后1个月的时间
+ LocalDateTime nineMonthLater = LocalDateTime.now().plusMonths(1);
PageInfo<ValidityPeriodWarningVo> pageInfo = new PageInfo<>(query.getPageNum(), query.getPageSize());
@@ -290,6 +296,20 @@
for (TErpGoodsVO tErpGoodsVO : list) {
typeList.stream().filter(t -> t.getId().equals(tErpGoodsVO.getTypeId())).findFirst().ifPresent(t -> tErpGoodsVO.setTypeName(t.getTypeName()));
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);
@@ -358,20 +378,56 @@
}
@Override
+ @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED)
public void warehouseGoods(WarehouseGoodsDto dtos, SysUser user, String supplierClinicId) {
// dtos根据供应商分组
// Map<String, List<clinicWarehouseGoodsDto>> collect = dtos.stream().collect(Collectors.groupingBy(clinicWarehouseGoodsDto::getSupplierId));
// for (Map.Entry<String, List<clinicWarehouseGoodsDto>> stringListEntry : collect.entrySet()) {
+ if(dtos.getStatus()==null || dtos.getStatus()!=1 ){
+ // 草稿-》正式 移除所有草稿
+ this.baseMapper.delete(new LambdaQueryWrapper<TErpClinicWarehousing>().eq(TErpClinicWarehousing::getClinicId,supplierClinicId).eq(TErpClinicWarehousing::getStatus,1));
+ }
+
+
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());
- this.save(tErpClinicWarehousing);
+ tErpClinicWarehousing.setWarehousingType(2);
+ try {
+ this.save(tErpClinicWarehousing);
+ }catch (Exception e){
+ throw new RuntimeException("网络繁忙,请重试");
+
+ }
+
BigDecimal totalPrice = new BigDecimal(0);
ArrayList<String> names = new ArrayList<>();
@@ -410,7 +466,7 @@
}
- totalPrice = totalPrice.add(dto.getSalesAmount().multiply(new BigDecimal(dto.getPurchaseCount())));
+ totalPrice = totalPrice.add(dto.getUnitAmount().multiply(new BigDecimal(dto.getPurchaseCount())));
}
tErpClinicWarehousing.setTotalPrice(totalPrice);
String name = names.stream().collect(Collectors.joining(","));
@@ -422,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()) {
@@ -443,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