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/TErpClinicWarehousingServiceImpl.java | 91 +++++++++++++++++++++++++++++++++++++++++----
1 files changed, 82 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..1af98b4 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;
@@ -217,7 +220,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 +271,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());
@@ -358,20 +363,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 +451,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 +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).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 +512,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