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/TErpGoodsServiceImpl.java | 562 +++++++++++++++++++++++++++++++++++++++++++++++++++----
1 files changed, 513 insertions(+), 49 deletions(-)
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TErpGoodsServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TErpGoodsServiceImpl.java
index cf8d384..c5a4451 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TErpGoodsServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TErpGoodsServiceImpl.java
@@ -2,26 +2,30 @@
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
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.CodeGenerateUtils;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.uuid.IdUtils;
import com.ruoyi.system.dto.InventoryDto;
import com.ruoyi.system.dto.InventoryGoodsDto;
import com.ruoyi.system.mapper.*;
import com.ruoyi.system.model.*;
-import com.ruoyi.system.query.TErpGoodsInventoryQuery;
-import com.ruoyi.system.query.TErpGoodsQuery;
+import com.ruoyi.system.query.*;
import com.ruoyi.system.service.TErpGoodsService;
import com.ruoyi.system.service.TErpSupplierInventoryGoodsService;
-import com.ruoyi.system.vo.TErpGoodsInventoryVO;
-import com.ruoyi.system.vo.TErpGoodsVO;
+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;
import java.time.LocalDateTime;
+import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
import java.util.List;
@@ -42,35 +46,44 @@
private TErpGoodsTypeMapper erpGoodsTypeMapper;
@Resource
+ private TErpGoodsMapper erpGoodsMapper;
+
+ @Resource
private TErpGoodsUnitMapper erpGoodsUnitMapper;
@Resource
private TErpSupplierInventoryMapper erpSupplierInventoryMapper;
+
@Resource
private TErpClinicInventoryMapper erpClinicInventoryMapper;
@Resource
private TErpSupplierInventoryGoodsMapper erpSupplierInventoryGoodsMapper;
+
@Resource
private TErpClinicInventoryGoodsMapper erpClinicInventoryGoodsMapper;
@Resource
private TErpSupplierWarehousingMapper erpSupplierWarehousingMapper;
+
@Resource
private TErpClinicWarehousingMapper erpClinicWarehousingMapper;
@Resource
private TErpSupplierWarehousingBatchMapper erpSupplierWarehousingBatchMapper;
+
@Resource
private TErpClinicWarehousingBatchMapper erpClinicWarehousingBatchMapper;
@Resource
private TErpSupplierOutboundMapper erpSupplierOutboundMapper;
+
@Resource
private TErpClinicOutboundMapper erpClinicOutboundMapper;
@Resource
private TErpSupplierOutboundGoodsMapper erpSupplierOutboundGoodsMapper;
+
@Resource
private TErpClinicOutboundGoodsMapper erpClinicOutboundGoodsMapper;
@@ -79,6 +92,10 @@
@Resource
private TCrmSupplierMapper crmSupplierMapper;
+
+ @Resource
+ private TErpProcurementMapper erpProcurementMapper;
+
@Override
@@ -95,9 +112,57 @@
typeList.stream().filter(t -> t.getId().equals(tErpGoodsVO.getTypeId())).findFirst().ifPresent(t -> tErpGoodsVO.setTypeName(t.getTypeName()));
}
}
+ List<String> collect = list.stream().filter(e -> e.getGoodsSource() == 1).map(TErpGoods::getSupplierClinicId).collect(Collectors.toList());
+ if (!collect.isEmpty()) {
+ List<TCrmSupplier> crmClinics = crmSupplierMapper.selectBatchIds(collect);
+ for (TErpGoodsVO tErpGoodsVO : list) {
+ crmClinics.stream().filter(t -> t.getId().equals(tErpGoodsVO.getSupplierClinicId())).findFirst().ifPresent(t -> tErpGoodsVO.setSupplierName(t.getSupplierName()));
+ }
+ }
pageInfo.setRecords(list);
return pageInfo;
+ }
+ @Override
+ public PageInfo<TErpGoodsVO> pageList1(TErpGoodsQuery query, SysUser user) {
+ PageInfo<TErpGoodsVO> pageInfo = new PageInfo<>(query.getPageNum(), query.getPageSize());
+ List<TErpGoodsVO> list = this.baseMapper.pageList(query, pageInfo, user);
+ if (list.isEmpty()) {
+ return pageInfo;
+ }
+ List<String> typeIds = list.stream().map(TErpGoods::getTypeId).collect(Collectors.toList());
+ if (!typeIds.isEmpty()) {
+ List<TErpGoodsType> typeList = erpGoodsTypeMapper.selectBatchIds(typeIds);
+ for (TErpGoodsVO tErpGoodsVO : list) {
+ typeList.stream().filter(t -> t.getId().equals(tErpGoodsVO.getTypeId())).findFirst().ifPresent(t -> tErpGoodsVO.setTypeName(t.getTypeName()));
+ }
+ }
+
+ pageInfo.setRecords(list);
+ return pageInfo;
+ }
+
+ @Override
+ public PageInfo<TErpGoodsVO> pageAdminList(TErpGoodsAdminQuery query) {
+ PageInfo<TErpGoodsVO> pageInfo = new PageInfo<>(query.getPageNum(), query.getPageSize());
+ List<TErpGoodsVO> list = this.baseMapper.pageAdminList(query, pageInfo);
+ if (list.isEmpty()) {
+ return pageInfo;
+ }
+ List<String> typeIds = list.stream().map(TErpGoods::getTypeId).collect(Collectors.toList());
+ if (!typeIds.isEmpty()) {
+ List<TErpGoodsType> typeList = erpGoodsTypeMapper.selectBatchIds(typeIds);
+ for (TErpGoodsVO tErpGoodsVO : list) {
+ typeList.stream().filter(t -> t.getId().equals(tErpGoodsVO.getTypeId())).findFirst().ifPresent(t -> tErpGoodsVO.setTypeName(t.getTypeName()));
+ }
+ }
+ pageInfo.setRecords( list);
+ return pageInfo;
+ }
+
+ @Override
+ public List<TErpGoods> pageAddList(Page<TErpGoods> tErpGoodsPage, String clinicSupplierId, PageAddListQuery query) {
+ return this.baseMapper.pageAddList(tErpGoodsPage, clinicSupplierId, query);
}
@Override
@@ -132,12 +197,19 @@
}
@Override
- public boolean isExit(String goodsIdCode, String quasiNumber) {
- Long size = this.baseMapper.selectCount(new LambdaQueryWrapper<>(TErpGoods.class).eq(TErpGoods::getGoodsIdCode, goodsIdCode).or().eq(TErpGoods::getQuasiNumber, quasiNumber));
+ public boolean isExit(String goodsIdCode, String quasiNumber,String id) {
+ Long size = this.baseMapper.selectCount(new LambdaQueryWrapper<>(TErpGoods.class).eq(TErpGoods::getGoodsSource,1).ne(id!=null,TErpGoods::getId, id).and(q -> q.eq(TErpGoods::getGoodsIdCode, goodsIdCode).or().eq(TErpGoods::getQuasiNumber, quasiNumber)));
if (size > 0) {
return true;
}
-
+ return false;
+ }
+ @Override
+ public boolean isExitOne(String goodsIdCode, String quasiNumber,String id) {
+ Long size = this.baseMapper.selectCount(new LambdaQueryWrapper<>(TErpGoods.class).eq(TErpGoods::getGoodsSource,1).ne(id!=null,TErpGoods::getId, id).and(q -> q.eq(TErpGoods::getQuasiNumber, quasiNumber)));
+ if (size > 0) {
+ return true;
+ }
return false;
}
@@ -319,6 +391,136 @@
}
@Override
+ public Page<TErpGoods> warehouseGoodsPageList(TClinicGoodsWarehouseQuery query, SysUser user, String supplierClinicId) {
+ LambdaQueryWrapper<TErpGoods> wrapper = new LambdaQueryWrapper<>();
+ wrapper.eq(BaseModel::getDisabled,0);
+ wrapper.eq(TErpGoods::getSupplierClinicId,supplierClinicId).eq(TErpGoods::getGoodsSource,2);
+ if(query.getGoodsName()!=null && !query.getGoodsName().isEmpty()){
+ wrapper.like(TErpGoods::getGoodsName,query.getGoodsName());
+ }
+ if(query.getGoodsIdCode()!=null && !query.getGoodsIdCode().isEmpty()){
+ wrapper.eq(TErpGoods::getGoodsIdCode,query.getGoodsIdCode());
+ }
+ if(query.getQuasiNumber()!=null && !query.getQuasiNumber().isEmpty()){
+ wrapper.eq(TErpGoods::getQuasiNumber,query.getQuasiNumber());
+ }
+ if(query.getTypeId()!=null && !query.getTypeId().isEmpty()){
+ wrapper.eq(TErpGoods::getTypeId,query.getTypeId());
+ }
+ wrapper.orderByDesc(BaseModel::getCreateTime);
+ Page<TErpGoods> page = this.page(new Page<>(query.getPageNum(), query.getPageSize()), wrapper);
+ List<TErpGoods> records = page.getRecords();
+ if(records.isEmpty()){
+ return page;
+ }
+ List<String> packingUnitId = records.stream().map(TErpGoods::getPackingUnitId).collect(Collectors.toList());
+ if(!packingUnitId.isEmpty()){
+ List<TErpGoodsUnit> tErpGoodsUnits = erpGoodsUnitMapper.selectBatchIds(packingUnitId);
+ for (TErpGoods tErpGoods : records) {
+ tErpGoodsUnits.stream().filter(t -> t.getId().equals(tErpGoods.getPackingUnitId())).findFirst().ifPresent(t -> tErpGoods.setPackingUnitName(t.getUnitName()));
+ }
+ }
+
+ List<String> typeIds = records.stream().map(TErpGoods::getTypeId).collect(Collectors.toList());
+ if(!typeIds.isEmpty()){
+ List<TErpGoodsType> tErpGoodsTypes = erpGoodsTypeMapper.selectBatchIds(typeIds);
+ for (TErpGoods tErpGoods : records) {
+ tErpGoodsTypes.stream().filter(t -> t.getId().equals(tErpGoods.getTypeId())).findFirst().ifPresent(t -> tErpGoods.setTypeName(t.getTypeName()));
+ }
+ }
+ page.setRecords( records);
+ return page;
+ }
+
+ @Override
+ public WarehouseGoodsDetailVo warehouseGoodsDetail(String id) {
+ WarehouseGoodsDetailVo warehouseGoodsDetailVo = new WarehouseGoodsDetailVo();
+ TErpClinicWarehousing tErpClinicWarehousing = erpClinicWarehousingMapper.selectById(id);
+ warehouseGoodsDetailVo.setCreateTime(tErpClinicWarehousing.getCreateTime());
+ warehouseGoodsDetailVo.setCreateBy(tErpClinicWarehousing.getCreateBy());
+ if(tErpClinicWarehousing.getType()==1){
+ TErpProcurement tErpProcurement = erpProcurementMapper.selectById(tErpClinicWarehousing.getProcurementId());
+ warehouseGoodsDetailVo.setInventoryNumber(tErpProcurement.getProcurementCode());
+ }
+ if(tErpClinicWarehousing.getType()==2){
+ TErpClinicInventory tErpClinicInventory = erpClinicInventoryMapper.selectById(tErpClinicWarehousing.getInventoryId());
+ warehouseGoodsDetailVo.setInventoryNumber(tErpClinicInventory.getInventoryNumber());
+ }
+
+ List<TErpClinicWarehousingBatch> tErpClinicWarehousingBatches = erpClinicWarehousingBatchMapper.selectList(new LambdaQueryWrapper<TErpClinicWarehousingBatch>().eq(TErpClinicWarehousingBatch::getWarehousingId, id));
+ for (TErpClinicWarehousingBatch tErpClinicWarehousingBatch : tErpClinicWarehousingBatches) {
+ String goodsId = tErpClinicWarehousingBatch.getGoodsId();
+ TErpGoods tErpGoods = erpGoodsMapper.selectById(goodsId);
+ tErpClinicWarehousingBatch.setGoodsName(tErpGoods.getGoodsName());
+ String packingUnitId = tErpGoods.getPackingUnitId();
+ TErpGoodsUnit tErpGoodsUnit = erpGoodsUnitMapper.selectById(packingUnitId);
+ if(tErpGoodsUnit!=null){
+ tErpClinicWarehousingBatch.setUnitName(tErpGoodsUnit.getUnitName());
+ }
+
+ }
+
+ warehouseGoodsDetailVo.setList(tErpClinicWarehousingBatches);
+ return warehouseGoodsDetailVo;
+ }
+
+ @Override
+ public OutboundGoodsDetailVo outboundGoodsDetail(String id) {
+ OutboundGoodsDetailVo outboundGoodsDetailVo = new OutboundGoodsDetailVo();
+ TErpClinicOutbound tErpClinicOutbound = erpClinicOutboundMapper.selectById(id);
+ outboundGoodsDetailVo.setCreateTime(tErpClinicOutbound.getCreateTime());
+ outboundGoodsDetailVo.setCreateBy(tErpClinicOutbound.getCreateBy());
+ outboundGoodsDetailVo.setOutboundType(tErpClinicOutbound.getOutboundType());
+ outboundGoodsDetailVo.setOrderNumber(tErpClinicOutbound.getOrderNumber());
+ outboundGoodsDetailVo.setOutboundReason(tErpClinicOutbound.getOutboundReason());
+ if(tErpClinicOutbound.getOutboundType()==6){
+ TErpClinicInventory tErpClinicInventory = erpClinicInventoryMapper.selectById(tErpClinicOutbound.getInventoryId());
+ outboundGoodsDetailVo.setInventoryNumber(tErpClinicInventory.getInventoryNumber());
+ }
+ ArrayList<OutboundGoodsDetailNextVo> tErpClinicOutboundGoods1 = new ArrayList<>();
+ List<TErpClinicOutboundGoods> tErpClinicOutboundGoods = erpClinicOutboundGoodsMapper.selectList(new LambdaQueryWrapper<TErpClinicOutboundGoods>().eq(TErpClinicOutboundGoods::getOutboundId, id));
+ for (TErpClinicOutboundGoods outboundGoods : tErpClinicOutboundGoods) {
+ TErpClinicWarehousing tErpClinicWarehousing = erpClinicWarehousingMapper.selectById(outboundGoods.getWarehousingId());
+ TErpClinicWarehousingBatch tErpClinicWarehousingBatch = erpClinicWarehousingBatchMapper.selectById(outboundGoods.getWarehousingBatchId());
+
+ OutboundGoodsDetailNextVo outboundGoodsDetailNextVo = new OutboundGoodsDetailNextVo();
+ outboundGoodsDetailNextVo.setWarehouseNo(tErpClinicWarehousing.getWarehouseNo());
+
+ outboundGoodsDetailNextVo.setGoodsId(outboundGoods.getGoodsId());
+ TErpGoods goods = erpGoodsMapper.getGoodsById(outboundGoods.getGoodsId());
+ outboundGoodsDetailNextVo.setGoodsName(goods.getGoodsName());
+
+ outboundGoodsDetailNextVo.setTypeId(goods.getTypeId());
+ TErpGoodsType tErpGoodsType = erpGoodsTypeMapper.selectById(goods.getTypeId());
+ outboundGoodsDetailNextVo.setTypeName(tErpGoodsType.getTypeName());
+ outboundGoodsDetailNextVo.setQuasiNumber(goods.getQuasiNumber());
+ outboundGoodsDetailNextVo.setBatchNumber(tErpClinicWarehousingBatch.getBatchNumber());
+ TErpGoodsUnit tErpGoodsUnit = erpGoodsUnitMapper.selectById(goods.getPackingUnitId());
+ outboundGoodsDetailNextVo.setUnitName(tErpGoodsUnit.getUnitName());
+
+
+ List<TErpClinicOutboundGoods> tErpClinicOutboundGoods2 = erpClinicOutboundGoodsMapper.selectList(new LambdaQueryWrapper<TErpClinicOutboundGoods>().eq(TErpClinicOutboundGoods::getWarehousingBatchId, outboundGoods.getWarehousingBatchId()));
+ int sum = tErpClinicOutboundGoods2.stream().mapToInt(TErpClinicOutboundGoods::getOutboundCount).sum();
+
+ int count = tErpClinicWarehousingBatch.getWarehousingNumber() - sum;
+ outboundGoodsDetailNextVo.setSurplusCount(count);
+
+ outboundGoodsDetailNextVo.setUnitAmount(tErpClinicWarehousingBatch.getUnitAmount());
+ if(outboundGoodsDetailNextVo.getUnitAmount()==null){
+ outboundGoodsDetailNextVo.setUnitAmount(tErpClinicWarehousingBatch.getSalesAmount());
+ }
+ outboundGoodsDetailNextVo.setOutboundCount(outboundGoods.getOutboundCount());
+ outboundGoodsDetailNextVo.setExpiryDate(tErpClinicWarehousingBatch.getExpiryDate());
+ outboundGoodsDetailNextVo.setTotalAmount(outboundGoodsDetailNextVo.getUnitAmount().multiply(new BigDecimal(outboundGoods.getOutboundCount())));
+ tErpClinicOutboundGoods1.add(outboundGoodsDetailNextVo);
+
+ }
+ outboundGoodsDetailVo.setList(tErpClinicOutboundGoods1);
+ return outboundGoodsDetailVo;
+ }
+
+ @Override
+ @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED)
public void inventoryGoods(InventoryDto dto, SysUser user) {
Integer roleType = user.getRoleType();
String supplierClinicId = null;
@@ -337,11 +539,38 @@
supplierClinicId =crmClinic.getId();
}
TErpSupplierInventory tErpSupplierInventory = new TErpSupplierInventory();
- String s = DateUtils.dateTimeNow();
- tErpSupplierInventory.setInventoryNumber("P" + s);
+ TErpSupplierInventory last1 = erpSupplierInventoryMapper.selectOne(new LambdaQueryWrapper<TErpSupplierInventory>().orderByDesc(BaseModel::getCreateTime).orderByDesc(TErpSupplierInventory::getInventoryNumber).last("limit 1"));
+ if(last1==null){
+ tErpSupplierInventory.setInventoryNumber("P" + DateUtils.dateTimeNow()+"00001");
+ }else {
+ String lastProcurementCode = last1.getInventoryNumber();
+ String datePart = "P" + 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
+ }
+ tErpSupplierInventory.setInventoryNumber(datePart + String.format("%05d", number));
+ } catch (NumberFormatException e) {
+ // 如果解析失败,默认从00001开始
+ tErpSupplierInventory.setInventoryNumber(datePart + "00001");
+ }
+ }
+
+
tErpSupplierInventory.setWarehouseId(dto.getWarehouseId());
tErpSupplierInventory.setSupplierId(supplierClinicId);
- erpSupplierInventoryMapper.insert(tErpSupplierInventory);
+ try {
+ erpSupplierInventoryMapper.insert(tErpSupplierInventory);
+ }catch (Exception e){
+ throw new RuntimeException("网络繁忙,请重试");
+
+ }
List<InventoryGoodsDto> dtos = dto.getDtos();
for (InventoryGoodsDto inventoryGoodsDto : dtos) {
@@ -360,13 +589,37 @@
tErpSupplierWarehousing.setGoodsId(tErpSupplierWarehousing1.getGoodsId());
tErpSupplierWarehousing.setGoodsName(erpGoods.getGoodsName());
tErpSupplierWarehousing.setGoodsCount(inventoryGoodsDto.getInventoryCount() - inventoryGoodsDto.getNum());
- tErpSupplierWarehousing.setUnitAmount(erpGoods.getSalesAmount());
- tErpSupplierWarehousing.setTotalPrice(erpGoods.getSalesAmount().multiply(new BigDecimal(tErpSupplierWarehousing.getGoodsCount())));
+ tErpSupplierWarehousing.setUnitAmount(tErpSupplierWarehousing1.getUnitAmount());
+ tErpSupplierWarehousing.setTotalPrice(tErpSupplierWarehousing1.getUnitAmount().multiply(new BigDecimal(tErpSupplierWarehousing.getGoodsCount())));
// 当前年月日时分秒
- String time = DateUtils.dateTimeNow();
- tErpSupplierWarehousing.setWarehouseNo("G" + time);
+ TErpSupplierWarehousing last = erpSupplierWarehousingMapper.selectOne(new LambdaQueryWrapper<TErpSupplierWarehousing>().orderByDesc(BaseModel::getCreateTime).orderByDesc(TErpSupplierWarehousing::getWarehouseNo).last("LIMIT 1"));
+ if(last==null){
+ tErpSupplierWarehousing.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
+ }
+ tErpSupplierWarehousing.setWarehouseNo(datePart + String.format("%05d", number));
+ } catch (NumberFormatException e) {
+ // 如果解析失败,默认从00001开始
+ tErpSupplierWarehousing.setWarehouseNo(datePart + "00001");
+ }
+ }
tErpSupplierWarehousing.setType(2);
- erpSupplierWarehousingMapper.insert(tErpSupplierWarehousing);
+ try {
+ erpSupplierWarehousingMapper.insert(tErpSupplierWarehousing);
+ }catch (Exception e){
+ throw new RuntimeException("网络繁忙,请重试");
+ }
// 添加批次信息
TErpSupplierWarehousingBatch tErpSupplierWarehousingBatch1 = new TErpSupplierWarehousingBatch();
@@ -390,16 +643,93 @@
erpSupplierInventoryGoodsMapper.insert(tErpSupplierInventoryGoods);
} else {
+ int i =1;
+ TErpSupplierWarehousingBatch tErpSupplierWarehousingBatch1 = erpSupplierWarehousingBatchMapper.selectById(inventoryGoodsDto.getId());
+ String warehousingId1 = tErpSupplierWarehousingBatch1.getWarehousingId();
+ TErpSupplierWarehousing tErpSupplierWarehousing2 = erpSupplierWarehousingMapper.selectById(warehousingId1);
+
+ if(inventoryGoodsDto.getDamagedCount()!=null && inventoryGoodsDto.getDamagedCount()>0){
+ TErpSupplierOutbound tErpSupplierOutbound = new TErpSupplierOutbound();
+ tErpSupplierOutbound.setWarehouseId(dto.getWarehouseId());
+ tErpSupplierOutbound.setSupplierId(supplierClinicId);
+ tErpSupplierOutbound.setOutboundType(1);
+ TErpSupplierOutbound last = erpSupplierOutboundMapper.selectOne(new LambdaQueryWrapper<TErpSupplierOutbound>().orderByDesc(BaseModel::getCreateTime).last("limit 1"));
+ if(last==null){
+ tErpSupplierOutbound.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
+ }
+ tErpSupplierOutbound.setOutboundNumber(datePart + String.format("%05d", number));
+ } catch (NumberFormatException e) {
+ // 如果解析失败,默认从00001开始
+ tErpSupplierOutbound.setOutboundNumber(datePart + "00001");
+ }
+ }
+ int count = inventoryGoodsDto.getDamagedCount();
+ tErpSupplierOutbound.setTotalMoney(tErpSupplierWarehousing1.getUnitAmount().multiply(new BigDecimal(count)));
+ tErpSupplierOutbound.setGoodsId(tErpSupplierWarehousing2.getGoodsId());
+ try {
+ erpSupplierOutboundMapper.insert(tErpSupplierOutbound);
+ }catch (Exception e){
+ throw new RuntimeException("网络繁忙,请重试");
+
+ }
+ TErpSupplierOutboundGoods tErpSupplierOutboundGoods = new TErpSupplierOutboundGoods();
+ tErpSupplierOutboundGoods.setOutboundId(tErpSupplierOutbound.getId());
+ tErpSupplierOutboundGoods.setWarehousingId(tErpSupplierWarehousing1.getId());
+ tErpSupplierOutboundGoods.setWarehousingBatchId(tErpSupplierWarehousingBatch.getId());
+ tErpSupplierOutboundGoods.setOutboundCount(count);
+ tErpSupplierOutboundGoods.setTotalPrice(tErpSupplierWarehousing1.getUnitAmount().multiply(new BigDecimal(count)));
+ erpSupplierOutboundGoodsMapper.insert(tErpSupplierOutboundGoods);
+ i=2;
+ }
TErpSupplierOutbound tErpSupplierOutbound = new TErpSupplierOutbound();
tErpSupplierOutbound.setWarehouseId(dto.getWarehouseId());
tErpSupplierOutbound.setSupplierId(supplierClinicId);
tErpSupplierOutbound.setOutboundType(6);
- tErpSupplierOutbound.setOutboundNumber("G" + s);
+ TErpSupplierOutbound last = erpSupplierOutboundMapper.selectOne(new LambdaQueryWrapper<TErpSupplierOutbound>().orderByDesc(BaseModel::getCreateTime).last("limit 1"));
+ if(last==null){
+ tErpSupplierOutbound.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+=i;
+ } else {
+ number = 2; // 达到99999后重置为00002
+ }
+ tErpSupplierOutbound.setOutboundNumber(datePart + String.format("%05d", number));
+ } catch (NumberFormatException e) {
+ // 如果解析失败,默认从00001开始
+ tErpSupplierOutbound.setOutboundNumber(datePart + "00001");
+ }
+ }
int count = inventoryGoodsDto.getNum() - inventoryGoodsDto.getInventoryCount();
- tErpSupplierOutbound.setTotalMoney(erpGoods.getSalesAmount().multiply(new BigDecimal(count)));
- erpSupplierOutboundMapper.insert(tErpSupplierOutbound);
+ tErpSupplierOutbound.setTotalMoney(tErpSupplierWarehousing1.getUnitAmount().multiply(new BigDecimal(count)));
+ tErpSupplierOutbound.setGoodsId(tErpSupplierWarehousing2.getGoodsId());
+ try {
+ erpSupplierOutboundMapper.insert(tErpSupplierOutbound);
+ }catch (Exception e){
+ throw new RuntimeException("网络繁忙,请重试");
+ }
+
TErpSupplierOutboundGoods tErpSupplierOutboundGoods = new TErpSupplierOutboundGoods();
@@ -407,7 +737,7 @@
tErpSupplierOutboundGoods.setWarehousingId(tErpSupplierWarehousing1.getId());
tErpSupplierOutboundGoods.setWarehousingBatchId(tErpSupplierWarehousingBatch.getId());
tErpSupplierOutboundGoods.setOutboundCount(count);
- tErpSupplierOutboundGoods.setTotalPrice(erpGoods.getSalesAmount().multiply(new BigDecimal(count)));
+ tErpSupplierOutboundGoods.setTotalPrice(tErpSupplierWarehousing1.getUnitAmount().multiply(new BigDecimal(count)));
erpSupplierOutboundGoodsMapper.insert(tErpSupplierOutboundGoods);
@@ -427,6 +757,7 @@
}
@Override
+ @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED)
public void inventoryGoods1(InventoryDto dto, SysUser user) {
Integer roleType = user.getRoleType();
String supplierClinicId = null;
@@ -445,10 +776,36 @@
supplierClinicId =crmClinic.getId();
}
TErpClinicInventory tErpSupplierInventory = new TErpClinicInventory();
- String s = DateUtils.dateTimeNow();
- tErpSupplierInventory.setInventoryNumber("P" + s);
+ TErpClinicInventory last = erpClinicInventoryMapper.selectOne(new LambdaQueryWrapper<TErpClinicInventory>().orderByDesc(BaseModel::getCreateTime).orderByDesc(TErpClinicInventory::getInventoryNumber).last("limit 1"));
+ if(last==null){
+ tErpSupplierInventory.setInventoryNumber("P" + DateUtils.dateTimeNow()+"00001");
+ }else {
+ String lastProcurementCode = last.getInventoryNumber();
+ String datePart = "P" + 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
+ }
+ tErpSupplierInventory.setInventoryNumber(datePart + String.format("%05d", number));
+ } catch (NumberFormatException e) {
+ // 如果解析失败,默认从00001开始
+ tErpSupplierInventory.setInventoryNumber(datePart + "00001");
+ }
+ }
+
tErpSupplierInventory.setClinicId(supplierClinicId);
- erpClinicInventoryMapper.insert(tErpSupplierInventory);
+ try {
+ erpClinicInventoryMapper.insert(tErpSupplierInventory);
+
+ }catch (Exception e){
+ throw new RuntimeException("网络繁忙,请重试");
+ }
+
List<InventoryGoodsDto> dtos = dto.getDtos();
for (InventoryGoodsDto inventoryGoodsDto : dtos) {
@@ -457,76 +814,183 @@
TErpClinicWarehousingBatch tErpSupplierWarehousingBatch = erpClinicWarehousingBatchMapper.selectById(inventoryGoodsDto.getId());
String warehousingId = tErpSupplierWarehousingBatch.getWarehousingId();
TErpClinicWarehousing tErpSupplierWarehousing1 = erpClinicWarehousingMapper.selectById(warehousingId);
- TErpGoods erpGoods = this.getById(tErpSupplierWarehousing1.getGoodsId());
+ TErpGoods erpGoods = this.getById(tErpSupplierWarehousingBatch.getGoodsId());
// 盘点是盘亏盘盈 赢
if (inventoryGoodsDto.getNum() < inventoryGoodsDto.getInventoryCount()) {
// 添加入库信息
tErpSupplierWarehousing.setClinicId(supplierClinicId);
- tErpSupplierWarehousing.setGoodsId(tErpSupplierWarehousing1.getGoodsId());
- tErpSupplierWarehousing.setGoodsName(erpGoods.getGoodsName());
- tErpSupplierWarehousing.setPurchaseCount(inventoryGoodsDto.getInventoryCount() - inventoryGoodsDto.getNum());
- tErpSupplierWarehousing.setUnitAmount(erpGoods.getSalesAmount());
- tErpSupplierWarehousing.setTotalPrice(erpGoods.getSalesAmount().multiply(new BigDecimal(tErpSupplierWarehousing.getPurchaseCount())));
+// tErpSupplierWarehousing.setGoodsId(tErpSupplierWarehousing1.getGoodsId());
+// tErpSupplierWarehousing.setGoodsName(erpGoods.getGoodsName());
+// tErpSupplierWarehousing.setPurchaseCount(inventoryGoodsDto.getInventoryCount() - inventoryGoodsDto.getNum());
+// tErpSupplierWarehousing.setUnitAmount(erpGoods.getSalesAmount());
+ tErpSupplierWarehousing.setTotalPrice(tErpSupplierWarehousingBatch.getUnitAmount().multiply(new BigDecimal(inventoryGoodsDto.getInventoryCount() - inventoryGoodsDto.getNum())));
// 当前年月日时分秒
- String time = DateUtils.dateTimeNow();
- tErpSupplierWarehousing.setWarehouseNo("G" + time);
+ TErpClinicWarehousing last1 = erpClinicWarehousingMapper.selectOne(new LambdaQueryWrapper<TErpClinicWarehousing>().orderByDesc(BaseModel::getCreateTime).orderByDesc(TErpClinicWarehousing::getWarehouseNo).last("limit 1"));
+ if(last1==null){
+ tErpSupplierWarehousing.setWarehouseNo("G" + DateUtils.dateTimeNow()+"00001");
+ }else {
+ String lastProcurementCode = last1.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
+ }
+ tErpSupplierWarehousing.setWarehouseNo(datePart + String.format("%05d", number));
+ } catch (NumberFormatException e) {
+ // 如果解析失败,默认从00001开始
+ tErpSupplierWarehousing.setWarehouseNo(datePart + "00001");
+ }
+
+ }
tErpSupplierWarehousing.setType(2);
- erpClinicWarehousingMapper.insert(tErpSupplierWarehousing);
+ tErpSupplierWarehousing.setInventoryId(tErpSupplierInventory.getId());
+ if(erpGoods.getGoodsSource()==1){
+ TCrmSupplier supplier = crmSupplierMapper.selectById(erpGoods.getSupplierClinicId());
+ tErpSupplierWarehousing.setSupplierName(supplier.getSupplierName());
+ }else {
+ tErpSupplierWarehousing.setSupplierName(erpGoods.getSupplierName());
+ }
+ try {
+ erpClinicWarehousingMapper.insert(tErpSupplierWarehousing);
+ }catch (Exception e){
+ throw new RuntimeException("网络繁忙,请重试");
+ }
// 添加批次信息
- TErpSupplierWarehousingBatch tErpSupplierWarehousingBatch1 = new TErpSupplierWarehousingBatch();
+ TErpClinicWarehousingBatch tErpSupplierWarehousingBatch1 = new TErpClinicWarehousingBatch();
tErpSupplierWarehousingBatch1.setWarehousingId(tErpSupplierWarehousing.getId());
- tErpSupplierWarehousingBatch1.setWarehousingNumber(tErpSupplierWarehousing.getPurchaseCount());
+ tErpSupplierWarehousingBatch1.setWarehousingNumber(inventoryGoodsDto.getInventoryCount() - inventoryGoodsDto.getNum());
tErpSupplierWarehousingBatch1.setBatchNumber(tErpSupplierWarehousingBatch.getBatchNumber());
tErpSupplierWarehousingBatch1.setProductionDate(tErpSupplierWarehousingBatch.getProductionDate());
tErpSupplierWarehousingBatch1.setExpiryDate(tErpSupplierWarehousingBatch.getExpiryDate());
- erpSupplierWarehousingBatchMapper.insert(tErpSupplierWarehousingBatch1);
+ tErpSupplierWarehousingBatch1.setGoodsId(tErpSupplierWarehousingBatch.getGoodsId());
+ tErpSupplierWarehousingBatch1.setQuasiNumber(tErpSupplierWarehousingBatch.getQuasiNumber());
+ tErpSupplierWarehousingBatch1.setPurchaseCount(tErpSupplierWarehousingBatch.getPurchaseCount());
+ tErpSupplierWarehousingBatch1.setSalesAmount(tErpSupplierWarehousingBatch.getSalesAmount());
+ tErpSupplierWarehousingBatch1.setUnitAmount(tErpSupplierWarehousingBatch.getUnitAmount());
+ erpClinicWarehousingBatchMapper.insert(tErpSupplierWarehousingBatch1);
// 添加盘点信息
- TErpSupplierInventoryGoods tErpSupplierInventoryGoods = new TErpSupplierInventoryGoods();
+ TErpClinicInventoryGoods tErpSupplierInventoryGoods = new TErpClinicInventoryGoods();
tErpSupplierInventoryGoods.setInventoryId(tErpSupplierInventory.getId());
tErpSupplierInventoryGoods.setWarehousingId(tErpSupplierWarehousing.getId());
tErpSupplierInventoryGoods.setWarehousingBatchId(tErpSupplierWarehousingBatch1.getId());
tErpSupplierInventoryGoods.setInventoryCount(inventoryGoodsDto.getInventoryCount());
tErpSupplierInventoryGoods.setDamagedCount(inventoryGoodsDto.getDamagedCount());
tErpSupplierInventoryGoods.setInventoryType(1);
- tErpSupplierInventoryGoods.setGoodsId(tErpSupplierWarehousing1.getGoodsId());
- erpSupplierInventoryGoodsMapper.insert(tErpSupplierInventoryGoods);
+ tErpSupplierInventoryGoods.setGoodsId(tErpSupplierWarehousingBatch.getGoodsId());
+ erpClinicInventoryGoodsMapper.insert(tErpSupplierInventoryGoods);
} else {
+ int i=1;
+ if(inventoryGoodsDto.getDamagedCount()!=null && inventoryGoodsDto.getDamagedCount()>0){
+ TErpClinicOutbound tErpSupplierOutbound = new TErpClinicOutbound();
+// tErpSupplierOutbound.setWarehouseId(dto.getWarehouseId());
+// tErpSupplierOutbound.setSupplierId(supplierClinicId);
+ tErpSupplierOutbound.setOutboundType(1);
+ TErpClinicOutbound last2 = erpClinicOutboundMapper.selectOne(new LambdaQueryWrapper<TErpClinicOutbound>().orderByDesc(BaseModel::getCreateTime).orderByDesc(TErpClinicOutbound::getOutboundNumber).last("limit 1"));
+ if(last2==null){
+
+ tErpSupplierOutbound.setOutboundNumber("G" + DateUtils.dateTimeNow()+"00001");
+ }else {
+ String lastProcurementCode = last2.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
+ }
+ tErpSupplierOutbound.setOutboundNumber(datePart + String.format("%05d", number));
+ } catch (NumberFormatException e) {
+ // 如果解析失败,默认从00001开始
+ tErpSupplierOutbound.setOutboundNumber(datePart + "00001");
+ }
+ }
+ int count = inventoryGoodsDto.getDamagedCount();
+ tErpSupplierOutbound.setTotalMoney(erpGoods.getSalesAmount().multiply(new BigDecimal(count)));
+ tErpSupplierOutbound.setInventoryId(tErpSupplierInventory.getId());
+ try {
+ erpClinicOutboundMapper.insert(tErpSupplierOutbound);
+ }catch (Exception e){
+ throw new RuntimeException("网络繁忙,请重试");
+ }
- TErpSupplierOutbound tErpSupplierOutbound = new TErpSupplierOutbound();
- tErpSupplierOutbound.setWarehouseId(dto.getWarehouseId());
- tErpSupplierOutbound.setSupplierId(supplierClinicId);
+ TErpClinicOutboundGoods tErpSupplierOutboundGoods = new TErpClinicOutboundGoods();
+ tErpSupplierOutboundGoods.setOutboundId(tErpSupplierOutbound.getId());
+ tErpSupplierOutboundGoods.setWarehousingId(tErpSupplierWarehousing1.getId());
+ tErpSupplierOutboundGoods.setWarehousingBatchId(tErpSupplierWarehousingBatch.getId());
+ tErpSupplierOutboundGoods.setOutboundCount(count);
+ tErpSupplierOutboundGoods.setTotalPrice(erpGoods.getSalesAmount().multiply(new BigDecimal(count)));
+ erpClinicOutboundGoodsMapper.insert(tErpSupplierOutboundGoods);
+ i=2;
+ }
+ TErpClinicOutbound tErpSupplierOutbound = new TErpClinicOutbound();
+// tErpSupplierOutbound.setWarehouseId(dto.getWarehouseId());
+// tErpSupplierOutbound.setSupplierId(supplierClinicId);
tErpSupplierOutbound.setOutboundType(6);
- tErpSupplierOutbound.setOutboundNumber("G" + s);
+ TErpClinicOutbound last4 = erpClinicOutboundMapper.selectOne(new LambdaQueryWrapper<TErpClinicOutbound>().orderByDesc(BaseModel::getCreateTime).orderByDesc(TErpClinicOutbound::getOutboundNumber).last("limit 1"));
+ if(last4==null){
+ tErpSupplierOutbound.setOutboundNumber("G" + DateUtils.dateTimeNow()+"00001");
+ }else {
+ String lastProcurementCode = last4.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+=i;
+ } else {
+ number = 2; // 达到99999后重置为00002
+ }
+ tErpSupplierOutbound.setOutboundNumber(datePart + String.format("%05d", number));
+ } catch (NumberFormatException e) {
+ // 如果解析失败,默认从00001开始
+ tErpSupplierOutbound.setOutboundNumber(datePart + "00001");
+ }
+
+ }
int count = inventoryGoodsDto.getNum() - inventoryGoodsDto.getInventoryCount();
- tErpSupplierOutbound.setTotalMoney(erpGoods.getSalesAmount().multiply(new BigDecimal(count)));
- erpSupplierOutboundMapper.insert(tErpSupplierOutbound);
+ tErpSupplierOutbound.setTotalMoney(tErpSupplierWarehousingBatch.getSalesAmount().multiply(new BigDecimal(count)));
+ tErpSupplierOutbound.setInventoryId(tErpSupplierInventory.getId());
+ try {
+ erpClinicOutboundMapper.insert(tErpSupplierOutbound);
+ }catch (Exception e){
+ throw new RuntimeException("网络繁忙,请重试");
+ }
- TErpSupplierOutboundGoods tErpSupplierOutboundGoods = new TErpSupplierOutboundGoods();
+ TErpClinicOutboundGoods tErpSupplierOutboundGoods = new TErpClinicOutboundGoods();
tErpSupplierOutboundGoods.setOutboundId(tErpSupplierOutbound.getId());
tErpSupplierOutboundGoods.setWarehousingId(tErpSupplierWarehousing1.getId());
tErpSupplierOutboundGoods.setWarehousingBatchId(tErpSupplierWarehousingBatch.getId());
tErpSupplierOutboundGoods.setOutboundCount(count);
- tErpSupplierOutboundGoods.setTotalPrice(erpGoods.getSalesAmount().multiply(new BigDecimal(count)));
- erpSupplierOutboundGoodsMapper.insert(tErpSupplierOutboundGoods);
+ tErpSupplierOutboundGoods.setTotalPrice(tErpSupplierWarehousingBatch.getSalesAmount().multiply(new BigDecimal(count)));
+ erpClinicOutboundGoodsMapper.insert(tErpSupplierOutboundGoods);
// 添加盘点信息
- TErpSupplierInventoryGoods tErpSupplierInventoryGoods = new TErpSupplierInventoryGoods();
+ TErpClinicInventoryGoods tErpSupplierInventoryGoods = new TErpClinicInventoryGoods();
tErpSupplierInventoryGoods.setInventoryId(tErpSupplierInventory.getId());
tErpSupplierInventoryGoods.setWarehousingId(tErpSupplierOutbound.getId());
tErpSupplierInventoryGoods.setWarehousingBatchId(tErpSupplierOutboundGoods.getId());
tErpSupplierInventoryGoods.setInventoryCount(inventoryGoodsDto.getInventoryCount());
tErpSupplierInventoryGoods.setDamagedCount(inventoryGoodsDto.getDamagedCount());
tErpSupplierInventoryGoods.setInventoryType(2);
- tErpSupplierInventoryGoods.setGoodsId(tErpSupplierWarehousing1.getGoodsId());
- erpSupplierInventoryGoodsMapper.insert(tErpSupplierInventoryGoods);
+ tErpSupplierInventoryGoods.setGoodsId(tErpSupplierWarehousingBatch.getGoodsId());
+ erpClinicInventoryGoodsMapper.insert(tErpSupplierInventoryGoods);
}
}
--
Gitblit v1.7.1