From fa173d9bf7653ee926930e8a5091ceaee7caa7bd Mon Sep 17 00:00:00 2001 From: liujie <1793218484@qq.com> Date: 星期二, 02 九月 2025 15:35:54 +0800 Subject: [PATCH] 供应商erp --- ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TErpSupplierWarehousingServiceImpl.java | 131 +++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 129 insertions(+), 2 deletions(-) diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TErpSupplierWarehousingServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TErpSupplierWarehousingServiceImpl.java index a03c6e5..2bd5f36 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TErpSupplierWarehousingServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TErpSupplierWarehousingServiceImpl.java @@ -1,10 +1,28 @@ package com.ruoyi.system.service.impl; -import com.ruoyi.system.model.TErpSupplierWarehousing; -import com.ruoyi.system.mapper.TErpSupplierWarehousingMapper; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.ruoyi.common.basic.PageInfo; +import com.ruoyi.common.core.domain.entity.SysUser; +import com.ruoyi.system.mapper.*; +import com.ruoyi.system.model.*; +import com.ruoyi.system.query.TErpGoodsQuery; +import com.ruoyi.system.query.TErpGoodsWarehouseQuery; import com.ruoyi.system.service.TErpSupplierWarehousingService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.ruoyi.system.vo.TErpGoodsVO; +import com.ruoyi.system.vo.TErpGoodsWarehouseLastVO; +import com.ruoyi.system.vo.TErpGoodsWarehouseRecordLastVO; +import com.ruoyi.system.vo.TErpGoodsWarehouseVO; import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.math.BigDecimal; +import java.math.RoundingMode; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; /** * <p> @@ -17,4 +35,113 @@ @Service public class TErpSupplierWarehousingServiceImpl extends ServiceImpl<TErpSupplierWarehousingMapper, TErpSupplierWarehousing> implements TErpSupplierWarehousingService { + @Resource + private TErpGoodsTypeMapper erpGoodsTypeMapper; + + @Resource + private TErpSupplierWarehousingMapper erpSupplierWarehousingMapper; + + @Resource + private TErpGoodsMapper erpGoodsMapper; + + @Resource + private TErpSupplierOutboundGoodsMapper erpSupplierOutboundGoodsMapper; + + @Resource + private TErpSupplierWarehousingBatchMapper erpSupplierWarehousingBatchMapper; + + @Resource + private TCrmWarehouseMapper crmWarehouseMapper; + + + @Override + public PageInfo<TErpGoodsVO> pageList(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())); + tErpGoodsVO.setTypeName(tErpGoodsVO.getTypeName()); + } + } + pageInfo.setRecords(list); + return pageInfo; + } + + @Override + public List<TErpGoodsWarehouseLastVO> detail(String id, String warehouseName, SysUser user) { + + + TErpGoods goods = erpGoodsMapper.selectById(id); + List<TCrmWarehouse> tCrmWarehouses = crmWarehouseMapper.selectList(new LambdaQueryWrapper<TCrmWarehouse>().eq(warehouseName != null && !warehouseName.isEmpty(), TCrmWarehouse::getWarehouseName, warehouseName)); + if(tCrmWarehouses.isEmpty()){ + return Collections.emptyList(); + } + List<TErpSupplierWarehousing> tErpSupplierWarehousings = erpSupplierWarehousingMapper.selectList(new LambdaQueryWrapper<TErpSupplierWarehousing>().in(TErpSupplierWarehousing::getWarehouseId, tCrmWarehouses.stream().map(TCrmWarehouse::getId).collect(Collectors.toList())).eq(TErpSupplierWarehousing::getSupplierId, user.getUserId()).eq(TErpSupplierWarehousing::getGoodsId, id)); + if(tErpSupplierWarehousings.isEmpty()){ + return Collections.emptyList(); + } + + // 出库详情 + List<TErpSupplierOutboundGoods> tErpSupplierOutboundGoods = erpSupplierOutboundGoodsMapper.selectList(new LambdaQueryWrapper<TErpSupplierOutboundGoods>().in(TErpSupplierOutboundGoods::getWarehousingId, tErpSupplierWarehousings.stream().map(TErpSupplierWarehousing::getId).collect(Collectors.toList()))); + + // 入库批次 + List<TErpSupplierWarehousingBatch> tErpSupplierWarehousingBatches = erpSupplierWarehousingBatchMapper.selectList(new LambdaQueryWrapper<TErpSupplierWarehousingBatch>().in(!tErpSupplierWarehousings.isEmpty(), TErpSupplierWarehousingBatch::getWarehousingId, tErpSupplierWarehousings.stream().map(TErpSupplierWarehousing::getId).collect(Collectors.toList()))); + + ArrayList<TErpGoodsWarehouseLastVO> tErpGoodsWarehouseLastVOS = new ArrayList<>(); + + // 通过WarehouseId分组 + + Map<String, List<TErpSupplierWarehousing>> collect = tErpSupplierWarehousings.stream().collect(Collectors.groupingBy(TErpSupplierWarehousing::getWarehouseId)); + for (Map.Entry<String, List<TErpSupplierWarehousing>> entry : collect.entrySet()) { + TErpGoodsWarehouseLastVO tErpGoodsWarehouseLastVO = new TErpGoodsWarehouseLastVO(); + // 获取key + String houseId = entry.getKey(); + List<TErpSupplierWarehousing> list = entry.getValue(); + tErpGoodsWarehouseLastVO.setHouseId( houseId); + tCrmWarehouses.stream().filter(t -> t.getId().equals(houseId)).findFirst().ifPresent(t -> tErpGoodsWarehouseLastVO.setHouseName(t.getWarehouseName())); + List<String> warehousingIds = list.stream().map(TErpSupplierWarehousing::getId).collect(Collectors.toList()); + + // 当前仓库的入库批次信息 + List<TErpSupplierWarehousingBatch> warehousingBatchesList = tErpSupplierWarehousingBatches.stream().filter(t -> warehousingIds.contains(t.getWarehousingId())).collect(Collectors.toList()); + ArrayList<TErpGoodsWarehouseVO> tErpGoodsWarehouseVOS = new ArrayList<>(); + for (TErpSupplierWarehousingBatch tErpSupplierWarehousingBatch : warehousingBatchesList) { + TErpSupplierWarehousing tErpSupplierWarehousing = list.stream().filter(e -> e.getId().equals(tErpSupplierWarehousingBatch.getWarehousingId())).findFirst().get(); + TErpGoodsWarehouseVO tErpGoodsWarehouseVO = new TErpGoodsWarehouseVO(); + tErpGoodsWarehouseVO.setBatchNumber(tErpSupplierWarehousingBatch.getBatchNumber()); + tErpGoodsWarehouseVO.setProductionDate(tErpSupplierWarehousingBatch.getProductionDate()); + tErpGoodsWarehouseVO.setExpiryDate(tErpSupplierWarehousingBatch.getExpiryDate()); + TErpSupplierOutboundGoods tErpSupplierOutboundGoods1 = tErpSupplierOutboundGoods.stream().filter(t -> t.getWarehousingBatchId().equals(tErpSupplierWarehousingBatch.getId())).findFirst().orElse(null); + if(tErpSupplierOutboundGoods1!=null){ + tErpGoodsWarehouseVO.setNowNum(tErpSupplierWarehousingBatch.getWarehousingNumber()-tErpSupplierOutboundGoods1.getOutboundCount()); + }else { + tErpGoodsWarehouseVO.setNowNum(tErpSupplierWarehousingBatch.getWarehousingNumber()); + } + + tErpGoodsWarehouseVO.setUnitAmount(new BigDecimal(tErpSupplierWarehousing.getUnitAmount()*tErpGoodsWarehouseVO.getNowNum()).setScale(2, RoundingMode.HALF_UP).doubleValue()); + tErpGoodsWarehouseVOS.add(tErpGoodsWarehouseVO); + } + tErpGoodsWarehouseLastVO.setAllNum(tErpGoodsWarehouseVOS.stream().mapToInt(TErpGoodsWarehouseVO::getNowNum).sum()); + tErpGoodsWarehouseLastVO.setAllTotalPrice(tErpGoodsWarehouseVOS.stream().mapToDouble(TErpGoodsWarehouseVO::getUnitAmount).sum()); + tErpGoodsWarehouseLastVO.setList(tErpGoodsWarehouseVOS); + tErpGoodsWarehouseLastVO.setWarningInventory(goods.getWarningInventory()); + tErpGoodsWarehouseLastVOS.add(tErpGoodsWarehouseLastVO); + + } + return tErpGoodsWarehouseLastVOS; + } + + @Override + public PageInfo<TErpGoodsWarehouseRecordLastVO> pageWarehouseList(TErpGoodsWarehouseQuery query, SysUser user) { + + PageInfo<TErpGoodsWarehouseRecordLastVO> pageInfo = new PageInfo<>(query.getPageNum(), query.getPageSize()); + List<TErpGoodsWarehouseRecordLastVO> list = this.baseMapper.pageWarehouseList(query,pageInfo,user); + + return null; + } } -- Gitblit v1.7.1