package com.ruoyi.warehouseBusiness.component.impl; import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.ruoyi.warehouseBusiness.component.CalculationWarehouseService; import com.ruoyi.warehouseBusiness.domain.TWarehouseBills; import com.ruoyi.warehouseBusiness.domain.TWarehousebillsitems; import com.ruoyi.warehouseBusiness.domain.enums.WarehouseTypeEnum; import com.ruoyi.warehouseBusiness.mapper.TWarehousebillsitemsMapper; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; import java.math.BigDecimal; import java.util.List; import java.util.Objects; /** * @author caifc * @date 2021-11-23 18:52 */ @Slf4j @Component @AllArgsConstructor public class CalculationWarehouseServiceImpl implements CalculationWarehouseService { private final TWarehousebillsitemsMapper warehousebillsitemsMapper; /** * 仓库查询库存总帐 * * @param warehouseBills 主表数据 * @return 状态 */ @Override public void calculationBillStatus(TWarehouseBills warehouseBills) { List warehousebillsitems = warehousebillsitemsMapper.selectItemsStatusByPid(warehouseBills.getfId()); // 如果没有明细则是未xxx if (CollectionUtils.isEmpty(warehousebillsitems)) { warehouseBills.setfItemsStatus(1L); } else { // 代表有明细数据 long count; // 判断是否货权转移 if (WarehouseTypeEnum.HQZY.getType().equals(warehouseBills.getfBilltype())) { count = warehousebillsitems.stream().filter(item -> !Objects.equals(item.getfBillstatus(), 6L) ).count(); } else { count = warehousebillsitems.stream().filter(item -> Objects.equals(item.getfBillstatus(), 40L)) .count(); } // 如果明细中不存在已经操作库存总帐的则判定xx中 if (Objects.equals((long) warehousebillsitems.size(), count)) { warehouseBills.setfItemsStatus(4L); } else { // 最终判定 已经xxx warehouseBills.setfItemsStatus(2L); } } } /** * 仓库计算明细件数、毛重、净重总和 * * @param warehouseBills 仓库数据 */ @Override public void calculationWarehouseQuantity(TWarehouseBills warehouseBills) { TWarehousebillsitems warehousebillsitems = new TWarehousebillsitems(); warehousebillsitems.setfPid(warehouseBills.getfId()); List warehousebillsitemsList = warehousebillsitemsMapper.selectTWarehousebillsitemsList(warehousebillsitems); // 存在明细数据 if (CollectionUtils.isNotEmpty(warehousebillsitemsList)) { Long qty = 0L; BigDecimal netweight = BigDecimal.ZERO; BigDecimal grossweight = BigDecimal.ZERO; Long planQty = 0L; BigDecimal planNetweight = BigDecimal.ZERO; BigDecimal planGrossweight = BigDecimal.ZERO; for (TWarehousebillsitems li : warehousebillsitemsList) { qty += li.getfQty(); planQty += li.getfPlanqty(); netweight = netweight.add(li.getfNetweight()); planNetweight = planNetweight.add(li.getfPlannetweight()); planGrossweight = planGrossweight.add(li.getfPlangrossweight()); } warehouseBills.setfPlanqty(planQty); warehouseBills.setfPlannetweight(planNetweight); warehouseBills.setfPlangrossweight(planGrossweight); warehouseBills.setfQty(qty); warehouseBills.setfNetweight(netweight); warehouseBills.setfGrossweight(grossweight); } } }