From c8e080d65e26158ea62c98548a11e9aa75c2112e Mon Sep 17 00:00:00 2001 From: liujie <1793218484@qq.com> Date: 星期五, 26 九月 2025 18:18:13 +0800 Subject: [PATCH] 诊所erp --- ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TErpGoodsServiceImpl.java | 187 ++++++++++++++++++++++++++++++++++++++++------ 1 files changed, 161 insertions(+), 26 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..075277f 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,8 +2,10 @@ 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.DateUtils; import com.ruoyi.common.utils.uuid.IdUtils; @@ -11,17 +13,18 @@ import com.ruoyi.system.dto.InventoryGoodsDto; import com.ruoyi.system.mapper.*; import com.ruoyi.system.model.*; +import com.ruoyi.system.query.TClinicGoodsWarehouseQuery; import com.ruoyi.system.query.TErpGoodsInventoryQuery; import com.ruoyi.system.query.TErpGoodsQuery; 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 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; @@ -40,6 +43,9 @@ @Resource private TErpGoodsTypeMapper erpGoodsTypeMapper; + + @Resource + private TErpGoodsMapper erpGoodsMapper; @Resource private TErpGoodsUnitMapper erpGoodsUnitMapper; @@ -95,6 +101,31 @@ 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; @@ -132,12 +163,11 @@ } @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).ne(id!=null,TErpGoods::getId, id).eq(TErpGoods::getGoodsIdCode, goodsIdCode).or().eq(TErpGoods::getQuasiNumber, quasiNumber)); if (size > 0) { return true; } - return false; } @@ -319,6 +349,104 @@ } @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); + 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){ + 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); + String packingUnitId = tErpGoods.getPackingUnitId(); + TErpGoodsUnit tErpGoodsUnit = erpGoodsUnitMapper.selectById(packingUnitId); + 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()); + 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.selectById(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.getPurchaseCount() - sum; + outboundGoodsDetailNextVo.setSurplusCount(count); + + outboundGoodsDetailNextVo.setUnitAmount(tErpClinicWarehousingBatch.getUnitAmount()); + 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 public void inventoryGoods(InventoryDto dto, SysUser user) { Integer roleType = user.getRoleType(); String supplierClinicId = null; @@ -457,76 +585,83 @@ 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(erpGoods.getSalesAmount().multiply(new BigDecimal(inventoryGoodsDto.getInventoryCount() - inventoryGoodsDto.getNum()))); // 当前年月日时分秒 String time = DateUtils.dateTimeNow(); tErpSupplierWarehousing.setWarehouseNo("G" + time); tErpSupplierWarehousing.setType(2); + tErpSupplierWarehousing.setInventoryId(tErpSupplierInventory.getId()); erpClinicWarehousingMapper.insert(tErpSupplierWarehousing); // 添加批次信息 - 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 { - TErpSupplierOutbound tErpSupplierOutbound = new TErpSupplierOutbound(); - tErpSupplierOutbound.setWarehouseId(dto.getWarehouseId()); - tErpSupplierOutbound.setSupplierId(supplierClinicId); + TErpClinicOutbound tErpSupplierOutbound = new TErpClinicOutbound(); +// tErpSupplierOutbound.setWarehouseId(dto.getWarehouseId()); +// tErpSupplierOutbound.setSupplierId(supplierClinicId); tErpSupplierOutbound.setOutboundType(6); tErpSupplierOutbound.setOutboundNumber("G" + s); int count = inventoryGoodsDto.getNum() - inventoryGoodsDto.getInventoryCount(); tErpSupplierOutbound.setTotalMoney(erpGoods.getSalesAmount().multiply(new BigDecimal(count))); - erpSupplierOutboundMapper.insert(tErpSupplierOutbound); + tErpSupplierOutbound.setInventoryId(tErpSupplierInventory.getId()); + erpClinicOutboundMapper.insert(tErpSupplierOutbound); - 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); + 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