| | |
| | | import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
| | | import com.ruoyi.common.basic.PageInfo; |
| | | import com.ruoyi.common.core.domain.entity.SysUser; |
| | | import com.ruoyi.common.core.exception.ServiceException; |
| | | import com.ruoyi.common.utils.DateUtils; |
| | | import com.ruoyi.common.utils.uuid.IdUtils; |
| | | import com.ruoyi.system.dto.OutboundGoodsDto; |
| | | import com.ruoyi.system.dto.OutboundGoodsNextDto; |
| | | import com.ruoyi.system.dto.WarehousingGoodsDto; |
| | | import com.ruoyi.system.dto.WarehousingGoodsNextDto; |
| | | import com.ruoyi.system.mapper.*; |
| | |
| | | BigDecimal subtract = BigDecimal.ZERO; |
| | | List<TErpSupplierInventoryGoods> tErpSupplierInventoryGoodsList = tErpSupplierInventoryGoods.stream().filter(t -> t.getInventoryId().equals(pageInventoryListVo.getId())).collect(Collectors.toList()); |
| | | for (TErpSupplierInventoryGoods tErpSupplierInventoryGoods1 : tErpSupplierInventoryGoodsList) { |
| | | |
| | | |
| | | if(tErpSupplierInventoryGoods1!=null){ |
| | | // 盘盈 查入库 |
| | | if(tErpSupplierInventoryGoods1.getInventoryType()==1){ |
| | | TErpSupplierWarehousing tErpSupplierWarehousing = erpSupplierWarehousingMapper.selectById(tErpSupplierInventoryGoods1.getWarehousingId()); |
| | | List<TErpSupplierWarehousingBatch> tErpSupplierWarehousingBatches = erpSupplierWarehousingBatchMapper.selectList(new LambdaQueryWrapper<TErpSupplierWarehousingBatch>().eq(TErpSupplierWarehousingBatch::getWarehousingId, tErpSupplierWarehousing.getId())); |
| | | int sum = tErpSupplierWarehousingBatches.stream().mapToInt(TErpSupplierWarehousingBatch::getWarehousingNumber).sum(); |
| | | // List<TErpSupplierWarehousingBatch> tErpSupplierWarehousingBatches = erpSupplierWarehousingBatchMapper.selectList(new LambdaQueryWrapper<TErpSupplierWarehousingBatch>().eq(TErpSupplierWarehousingBatch::getWarehousingId, tErpSupplierWarehousing.getId())); |
| | | // int sum = tErpSupplierWarehousingBatches.stream().mapToInt(TErpSupplierWarehousingBatch::getWarehousingNumber).sum(); |
| | | String goodsId = tErpSupplierWarehousing.getGoodsId(); |
| | | TErpGoods goods = erpGoodsMapper.selectById(goodsId); |
| | | BigDecimal multiply = goods.getSalesAmount().multiply(new BigDecimal(sum)); |
| | | int count = tErpSupplierInventoryGoods1.getInventoryCount() - tErpSupplierInventoryGoods1.getDamagedCount(); |
| | | BigDecimal multiply = goods.getSalesAmount().multiply(new BigDecimal(count)); |
| | | add = add.add(multiply); |
| | | }else { |
| | | // 盘亏 查出库 |
| | | TErpSupplierOutbound tErpSupplierOutbound = erpSupplierOutboundMapper.selectById(tErpSupplierInventoryGoods1.getWarehousingId()); |
| | | |
| | | List<TErpSupplierOutboundGoods> tErpSupplierOutboundGoods = erpSupplierOutboundGoodsMapper.selectList(new LambdaQueryWrapper<TErpSupplierOutboundGoods>().eq(TErpSupplierOutboundGoods::getOutboundId, tErpSupplierOutbound.getId())); |
| | | int sum = tErpSupplierOutboundGoods.stream().mapToInt(TErpSupplierOutboundGoods::getOutboundCount).sum(); |
| | | String goodsId = tErpSupplierOutbound.getGoodsId(); |
| | | TErpGoods goods = erpGoodsMapper.selectById(goodsId); |
| | | BigDecimal multiply = goods.getSalesAmount().multiply(new BigDecimal(sum)); |
| | | subtract = subtract.add(multiply); |
| | | for (TErpSupplierOutboundGoods tErpSupplierOutboundGood : tErpSupplierOutboundGoods) { |
| | | TErpSupplierWarehousing tErpSupplierWarehousing = erpSupplierWarehousingMapper.selectById(tErpSupplierOutboundGood.getWarehousingId()); |
| | | String goodsId = tErpSupplierWarehousing.getGoodsId(); |
| | | TErpGoods goods = erpGoodsMapper.selectById(goodsId); |
| | | int count = tErpSupplierInventoryGoods1.getInventoryCount() - tErpSupplierInventoryGoods1.getDamagedCount(); |
| | | BigDecimal multiply = goods.getSalesAmount().multiply(new BigDecimal(count)); |
| | | add = add.add(multiply); |
| | | } |
| | | // int sum = tErpSupplierOutboundGoods.stream().mapToInt(TErpSupplierOutboundGoods::getOutboundCount).sum(); |
| | | // String goodsId = tErpSupplierOutbound.getGoodsId(); |
| | | // TErpGoods goods = erpGoodsMapper.selectById(goodsId); |
| | | // BigDecimal multiply = goods.getSalesAmount().multiply(new BigDecimal(sum)); |
| | | // subtract = subtract.add(multiply); |
| | | } |
| | | } |
| | | } |
| | | int size = tErpSupplierInventoryGoodsList.stream().map(TErpSupplierInventoryGoods::getGoodsId).collect(Collectors.toSet()).size(); |
| | | pageInventoryListVo.setNum(size); |
| | | pageInventoryListVo.setTotalPrice(add.subtract(subtract)); |
| | | pageInventoryListVo.setTotalPrice(add); |
| | | |
| | | } |
| | | |
| | |
| | | |
| | | return Collections.emptyList(); |
| | | } |
| | | |
| | | @Override |
| | | public void outbountGoods(OutboundGoodsDto dto, SysUser user) { |
| | | Integer roleType = user.getRoleType(); |
| | | String supplierClinicId = null; |
| | | if(roleType == 4){ |
| | | // 供应商 |
| | | TCrmSupplier crmSupplier = crmSupplierMapper.selectOne(Wrappers.lambdaQuery(TCrmSupplier.class) |
| | | .eq(TCrmSupplier::getUserId, user.getUserId()) |
| | | .last("LIMIT 1")); |
| | | supplierClinicId =crmSupplier.getId(); |
| | | } |
| | | if(roleType == 5){ |
| | | // 诊所 |
| | | TCrmClinic crmClinic = crmClinicMapper.selectOne(Wrappers.lambdaQuery(TCrmClinic.class) |
| | | .eq(TCrmClinic::getUserId, user.getUserId()) |
| | | .last("LIMIT 1")); |
| | | supplierClinicId =crmClinic.getId(); |
| | | } |
| | | BigDecimal add = new BigDecimal(0); |
| | | ArrayList<TErpSupplierOutboundGoods> arrayList = new ArrayList<>(); |
| | | // 1 判断库存是否足够 2添加出库记录 3添加出库子记录 |
| | | List<OutboundGoodsNextDto> outboundGoodsNextDtos = dto.getOutboundGoodsNextDtos(); |
| | | for (OutboundGoodsNextDto outboundGoodsNextDto : outboundGoodsNextDtos) { |
| | | TErpSupplierWarehousingBatch tErpSupplierWarehousingBatch = erpSupplierWarehousingBatchMapper.selectById(outboundGoodsNextDto.getBatchId()); |
| | | List<TErpSupplierOutboundGoods> tErpSupplierOutboundGoods = erpSupplierOutboundGoodsMapper.selectList(new LambdaQueryWrapper<TErpSupplierOutboundGoods>().eq(TErpSupplierOutboundGoods::getWarehousingBatchId, outboundGoodsNextDto.getBatchId())); |
| | | int sum = tErpSupplierOutboundGoods.stream().mapToInt(TErpSupplierOutboundGoods::getOutboundCount).sum(); |
| | | |
| | | int count = tErpSupplierWarehousingBatch.getWarehousingNumber() - sum; |
| | | if(count<outboundGoodsNextDto.getNum()){ |
| | | throw new ServiceException("批次号:"+tErpSupplierWarehousingBatch.getBatchNumber()+"库存不足"); |
| | | } |
| | | TErpSupplierWarehousing tErpSupplierWarehousing = erpSupplierWarehousingMapper.selectById(tErpSupplierWarehousingBatch.getWarehousingId()); |
| | | TErpGoods goods = erpGoodsMapper.selectById(tErpSupplierWarehousing.getGoodsId()); |
| | | BigDecimal multiply = goods.getSalesAmount().multiply(BigDecimal.valueOf(outboundGoodsNextDto.getNum())); |
| | | |
| | | TErpSupplierOutboundGoods tErpSupplierOutboundGoods1 = new TErpSupplierOutboundGoods(); |
| | | tErpSupplierOutboundGoods1.setWarehousingId(dto.getWarehouseId()); |
| | | tErpSupplierOutboundGoods1.setWarehousingBatchId(outboundGoodsNextDto.getBatchId()); |
| | | tErpSupplierOutboundGoods1.setOutboundCount(outboundGoodsNextDto.getNum()); |
| | | tErpSupplierOutboundGoods1.setTotalPrice(multiply); |
| | | arrayList.add(tErpSupplierOutboundGoods1); |
| | | add = add.add(multiply); |
| | | } |
| | | |
| | | TErpSupplierOutbound tErpSupplierOutbound = new TErpSupplierOutbound(); |
| | | tErpSupplierOutbound.setOutboundType(dto.getOutboundType()); |
| | | tErpSupplierOutbound.setOutboundReason(dto.getOutboundReason()); |
| | | tErpSupplierOutbound.setWarehouseId(dto.getWarehouseId()); |
| | | tErpSupplierOutbound.setSupplierId(supplierClinicId); |
| | | tErpSupplierOutbound.setTotalMoney(add); |
| | | String s = DateUtils.dateTimeNow(); |
| | | tErpSupplierOutbound.setOutboundNumber("G" + s); |
| | | erpSupplierOutboundMapper.insert(tErpSupplierOutbound); |
| | | |
| | | for (TErpSupplierOutboundGoods tErpSupplierOutboundGoods : arrayList) { |
| | | tErpSupplierOutboundGoods.setOutboundId(tErpSupplierOutbound.getId()); |
| | | erpSupplierOutboundGoodsMapper.insert(tErpSupplierOutboundGoods); |
| | | } |
| | | |
| | | |
| | | } |
| | | } |