|
@@ -22,6 +22,7 @@ import com.sd.business.entity.production.po.ProductionWorkOrder;
|
|
|
import com.sd.business.entity.sku.po.SkuSpec;
|
|
|
import com.sd.business.entity.statement.po.StatementOfAccount;
|
|
|
import com.sd.business.service.board.DailyBoardService;
|
|
|
+import com.sd.business.service.bom.BomSpecService;
|
|
|
import com.sd.business.service.department.DepartmentService;
|
|
|
import com.sd.business.service.in.InOutStorageBomService;
|
|
|
import com.sd.business.service.in.InOutStorageService;
|
|
@@ -119,103 +120,105 @@ public class DailyBoardServiceImpl implements DailyBoardService {
|
|
|
public List<OrderBomDifferenceVo> getOrderBomDifferenceList(DailyBoardSelectDto dto) {
|
|
|
Date beginDate = DateUtil.beginOfDay(dto.getBeginDate());
|
|
|
Date endDate = DateUtil.endOfDay(dto.getEndDate());
|
|
|
+ // 差异Map
|
|
|
+ Map<Long, OrderBomDifferenceVo> differenceMap = new HashMap<>();
|
|
|
// 查询佰卓和实业的事业部id
|
|
|
List<Department> departmentList = departmentService.list(q -> q.like(Department::getName, "实业").or().eq(Department::getName, "佰卓").select(BaseIdPo::getId));
|
|
|
List<Long> departmentIds = departmentList.stream().map(BaseIdPo::getId).collect(Collectors.toList());
|
|
|
// 查询今日生成完成任务
|
|
|
Map<Long, List<ProductionWorkOrder>> taskMap = productionWorkOrderService.mapKGroup(ProductionWorkOrder::getOrderId, q -> q.between(ProductionWorkOrder::getCompleteTime, beginDate, endDate));
|
|
|
- // 查询今日出库单出库数据
|
|
|
- Map<String, List<OutboundOrder>> outboundOrderMap = outboundOrderService.mapKGroup(OutboundOrder::getOrderWlnCode,
|
|
|
- q -> q.between(OutboundOrder::getOutboundTime, beginDate, endDate));
|
|
|
|
|
|
- Set<String> orderWlnCodeSet = outboundOrderMap.keySet();
|
|
|
- // 订单id
|
|
|
+ // 查询出库单
|
|
|
+ List<OutboundOrder> outboundList = outboundOrderService.list(q -> q.between(OutboundOrder::getOutboundTime, beginDate, endDate));
|
|
|
+ Map<String, List<OutboundOrder>> outboundMap = outboundList.stream().collect(
|
|
|
+ Collectors.groupingBy(OutboundOrder::getOrderWlnCode));
|
|
|
+
|
|
|
+ // 查询今日订单
|
|
|
Set<Long> orderIds = new HashSet<>(taskMap.keySet());
|
|
|
- if (ObjectUtil.isNotEmpty(orderWlnCodeSet)) {
|
|
|
- // 出库单订单
|
|
|
- List<OrderInfo> outboundOrders = orderService.list(q -> q.in(OrderInfo::getWlnCode, orderWlnCodeSet).select(BaseIdPo::getId));
|
|
|
- List<Long> outboundOrderIds = outboundOrders.stream().map(BaseIdPo::getId).collect(Collectors.toList());
|
|
|
- orderIds.addAll(outboundOrderIds);
|
|
|
+ List<OrderInfo> orderInfoList = new ArrayList<>();
|
|
|
+ if (!orderIds.isEmpty()) {
|
|
|
+ orderInfoList = orderService.list(q -> q.eq(OrderInfo::getSource, 2)
|
|
|
+ .in(BaseIdPo::getId, orderIds)
|
|
|
+ .in(OrderInfo::getDepartmentId, departmentIds));
|
|
|
}
|
|
|
- if (ObjectUtil.isEmpty(orderIds)) {
|
|
|
+
|
|
|
+ Map<String, OrderInfo> orderInfoMap = orderInfoList.stream().collect(Collectors.toMap(OrderInfo::getWlnCode, Function.identity()));
|
|
|
+
|
|
|
+ Set<String> wlnCodeSet = new HashSet<>(outboundMap.keySet());
|
|
|
+ wlnCodeSet.addAll(orderInfoMap.keySet());
|
|
|
+ if (wlnCodeSet.isEmpty()) {
|
|
|
return Collections.emptyList();
|
|
|
}
|
|
|
|
|
|
- // 查询今日订单
|
|
|
- List<OrderInfo> orderInfoList = orderService.list(q -> q.eq(OrderInfo::getSource, 2)
|
|
|
- .in(BaseIdPo::getId, orderIds)
|
|
|
- .in(OrderInfo::getDepartmentId, departmentIds));
|
|
|
- if (ObjectUtil.isEmpty(orderInfoList)) {
|
|
|
- return Collections.emptyList();
|
|
|
+ // 万里牛sku信息
|
|
|
+ Set<String> skuSpecCodes = outboundList.stream().map(OutboundOrder::getSkuSpecCode).collect(Collectors.toSet());
|
|
|
+ Map<String, Long> outboundSkuSpecMap;
|
|
|
+ if (!skuSpecCodes.isEmpty()) {
|
|
|
+ outboundSkuSpecMap = skuSpecService.mapKV(SkuSpec::getCode, BaseIdPo::getId, q -> q.in(SkuSpec::getCode, skuSpecCodes));
|
|
|
+ } else {
|
|
|
+ outboundSkuSpecMap = new HashMap<>();
|
|
|
}
|
|
|
|
|
|
- // 获取今日订单sku列表
|
|
|
- List<OrderSku> orderSkuList = orderSkuService.list(q -> q.in(OrderSku::getOrderId, orderIds));
|
|
|
- Map<Long, List<OrderSku>> map = orderSkuList.stream().collect(Collectors.groupingBy(OrderSku::getOrderId));
|
|
|
- List<Long> skuSpecIds = orderSkuList.stream().map(OrderSku::getSkuSpecId).collect(Collectors.toList());
|
|
|
- Map<String, SkuSpec> skuSpecMap = skuSpecService.mapKEntity(SkuSpec::getCode, q -> q.in(SkuSpec::getId, skuSpecIds));
|
|
|
- // 获取今日订单bom列表
|
|
|
- List<Long> bomSpecIds = orderSkuList.stream().map(OrderSku::getBomSpecId).collect(Collectors.toList());
|
|
|
- Map<Long, BomSpecBo> bomSpecBoMap = skuSpecService.getBomSpecBoByIdList(bomSpecIds);
|
|
|
- Map<Long, OrderBomDifferenceVo> differenceMap = new HashMap<>();
|
|
|
+ // 查询所有sku规格
|
|
|
+ Set<Long> skuSpecIds = taskMap.values().stream().flatMap(Collection::stream).map(ProductionWorkOrder::getSkuSpecId).collect(Collectors.toSet());
|
|
|
+ skuSpecIds.addAll(outboundSkuSpecMap.values());
|
|
|
+ Map<Long, SkuSpec> skuSpecMap = skuSpecService.byIdsToMap(skuSpecIds);
|
|
|
+ // 查询sku关联bom
|
|
|
+ Set<Long> bomSpecIds = skuSpecMap.values().stream().map(SkuSpec::getBomSpecId).collect(Collectors.toSet());
|
|
|
+ Map<Long, BomSpecBo> bomSpecMap = skuSpecService.getBomSpecBoByIdList(bomSpecIds);
|
|
|
+
|
|
|
+ for (String wlnCode : wlnCodeSet) {
|
|
|
+ // 获取出库单的订单sku
|
|
|
+ List<OutboundOrder> outboundOrderList = outboundMap.get(wlnCode);
|
|
|
+ Map<Long, BigDecimal> outboundSkuMap = outboundOrderList.stream().collect(Collectors.toMap(item -> outboundSkuSpecMap.get(item.getSkuSpecCode()), OutboundOrder::getQuantity, BigDecimal::add));
|
|
|
+
|
|
|
+ // 获取生产sku
|
|
|
+ OrderInfo orderInfo = orderInfoMap.get(wlnCode);
|
|
|
+ List<ProductionWorkOrder> productionWorkOrderList;
|
|
|
+ if (orderInfo == null) {
|
|
|
+ productionWorkOrderList = Collections.emptyList();
|
|
|
+ } else {
|
|
|
+ productionWorkOrderList = taskMap.getOrDefault(orderInfo.getId(), Collections.emptyList());
|
|
|
+ }
|
|
|
+ Map<Long, BigDecimal> productionSkuMap = productionWorkOrderList.stream().collect(Collectors.toMap(ProductionWorkOrder::getSkuSpecId, item -> BigDecimal.ONE, BigDecimal::add));
|
|
|
|
|
|
- for (OrderInfo orderInfo : orderInfoList) {
|
|
|
- // 获取当前订单sku
|
|
|
- List<OrderSku> orderSkus = map.get(orderInfo.getId());
|
|
|
- List<ProductionWorkOrder> productionWorkOrderList = taskMap.getOrDefault(orderInfo.getId(), Collections.emptyList());
|
|
|
- List<OutboundOrder> outboundOrderList = outboundOrderMap.getOrDefault(orderInfo.getWlnCode(), Collections.emptyList());
|
|
|
- if (productionWorkOrderList.isEmpty() && outboundOrderList.isEmpty()) {
|
|
|
+ Set<Long> skuSpecIdSet = new HashSet<>(outboundSkuMap.keySet());
|
|
|
+ skuSpecIdSet.addAll(productionSkuMap.keySet());
|
|
|
+
|
|
|
+ if (skuSpecIdSet.isEmpty()) {
|
|
|
continue;
|
|
|
}
|
|
|
- List<String> skuKeyList = new ArrayList<>();
|
|
|
- for (OrderSku orderSku : orderSkus) {
|
|
|
- // 判断是否有重复sku
|
|
|
- Long skuSpecId = orderSku.getSkuSpecId();
|
|
|
- Long bomSpecId = orderSku.getBomSpecId();
|
|
|
- Integer printType = orderSku.getPrintType();
|
|
|
- String skuKey = skuSpecId + ":" + bomSpecId + ":" + printType;
|
|
|
- if (skuKeyList.contains(skuKey)) {
|
|
|
- continue;
|
|
|
+
|
|
|
+ for (Long skuSpecId : skuSpecIdSet) {
|
|
|
+ Long key = null;
|
|
|
+ SkuSpec skuSpec = skuSpecMap.get(skuSpecId);
|
|
|
+ if (skuSpec != null) {
|
|
|
+ key = skuSpec.getBomSpecId();
|
|
|
}
|
|
|
- skuKeyList.add(skuKey);
|
|
|
- Long orderSkuId = orderSku.getSkuSpecId();
|
|
|
- BomSpecBo bomSpecBo = bomSpecBoMap.get(orderSku.getBomSpecId());
|
|
|
- if (bomSpecBo != null && !Objects.equals(bomSpecBo.getClassifyParentId(), 1L)) {
|
|
|
+ BomSpecBo bomSpecBo = bomSpecMap.get(key);
|
|
|
+ if (bomSpecBo == null) {
|
|
|
+ key = null;
|
|
|
+ } else if (!Objects.equals(bomSpecBo.getClassifyParentId(), 1L)) {
|
|
|
continue;
|
|
|
}
|
|
|
- OrderBomDifferenceVo bomDifferenceVo = differenceMap.computeIfAbsent(orderSku.getBomSpecId(), item -> {
|
|
|
+
|
|
|
+ OrderBomDifferenceVo bomDifferenceVo = differenceMap.computeIfAbsent(key, item -> {
|
|
|
OrderBomDifferenceVo tempOrderBomDifferenceVo = new OrderBomDifferenceVo();
|
|
|
tempOrderBomDifferenceVo.setBomSpecCode(bomSpecBo == null ? "未绑定" : bomSpecBo.getBomSpecCode());
|
|
|
tempOrderBomDifferenceVo.setMesQuantity(BigDecimal.ZERO);
|
|
|
tempOrderBomDifferenceVo.setWlnQuantity(BigDecimal.ZERO);
|
|
|
- tempOrderBomDifferenceVo.setOrderWlnCodes(new ArrayList<>());
|
|
|
+ tempOrderBomDifferenceVo.setOrderWlnCodes(new HashSet<>());
|
|
|
return tempOrderBomDifferenceVo;
|
|
|
});
|
|
|
- // mes数量
|
|
|
- List<ProductionWorkOrder> workOrderList = productionWorkOrderList.stream()
|
|
|
- .filter(item -> Objects.equals(item.getSkuSpecId(), orderSkuId))
|
|
|
- .filter(item -> Objects.equals(item.getStatus(), 3))
|
|
|
- .collect(Collectors.toList());
|
|
|
- BigDecimal mesCount = new BigDecimal(workOrderList.size());
|
|
|
-
|
|
|
- // 万里牛数量
|
|
|
- BigDecimal wlnCount = outboundOrderList.stream()
|
|
|
- .filter(item -> {
|
|
|
- SkuSpec skuSpec = skuSpecMap.get(item.getSkuSpecCode());
|
|
|
- if (skuSpec == null) {
|
|
|
- return false;
|
|
|
- }
|
|
|
- return Objects.equals(skuSpec.getId(), orderSkuId);
|
|
|
- })
|
|
|
- .map(OutboundOrder::getQuantity)
|
|
|
- .reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
- bomDifferenceVo.setMesQuantity(bomDifferenceVo.getMesQuantity().add(mesCount));
|
|
|
- bomDifferenceVo.setWlnQuantity(bomDifferenceVo.getWlnQuantity().add(wlnCount));
|
|
|
- if (!ObjectUtil.equals(mesCount, wlnCount)) {
|
|
|
+ BigDecimal productionQuantity = productionSkuMap.getOrDefault(skuSpecId, BigDecimal.ZERO);
|
|
|
+ BigDecimal outboundQuantity = outboundSkuMap.getOrDefault(skuSpecId, BigDecimal.ZERO);
|
|
|
+ bomDifferenceVo.setMesQuantity(bomDifferenceVo.getMesQuantity().add(productionQuantity));
|
|
|
+ bomDifferenceVo.setWlnQuantity(bomDifferenceVo.getWlnQuantity().add(outboundQuantity));
|
|
|
+ if (!ObjectUtil.equals(productionQuantity, outboundQuantity)) {
|
|
|
// 新增差异订单号
|
|
|
- bomDifferenceVo.getOrderWlnCodes().add(orderInfo.getWlnCode());
|
|
|
+ bomDifferenceVo.getOrderWlnCodes().add(wlnCode);
|
|
|
}
|
|
|
- differenceMap.put(orderSku.getBomSpecId(), bomDifferenceVo);
|
|
|
+ differenceMap.put(skuSpecId, bomDifferenceVo);
|
|
|
}
|
|
|
}
|
|
|
// 筛选出有差异的bom数据
|
|
@@ -233,115 +236,94 @@ public class DailyBoardServiceImpl implements DailyBoardService {
|
|
|
vo.setSySumOrderCount(0);
|
|
|
Date beginDate = DateUtil.beginOfDay(dto.getBeginDate());
|
|
|
Date endDate = DateUtil.endOfDay(dto.getEndDate());
|
|
|
- // 查询佰卓和实业的事业部id
|
|
|
- Department department = departmentService.getOne(q -> q.eq(Department::getName, "佰卓").select(BaseIdPo::getId));
|
|
|
- List<Department> departmentList = departmentService.list(q -> q.like(Department::getName, "实业").select(BaseIdPo::getId));
|
|
|
- List<Long> departmentIds = departmentList.stream().map(BaseIdPo::getId).collect(Collectors.toList());
|
|
|
- departmentIds.add(department.getId());
|
|
|
|
|
|
// 查询今日出库单出库数据
|
|
|
- Map<String, List<OutboundOrder>> outboundOrderMap = outboundOrderService.mapKGroup(OutboundOrder::getOrderWlnCode,
|
|
|
- q -> q.between(OutboundOrder::getOutboundTime, beginDate, endDate));
|
|
|
+ List<OutboundOrder> outboundOrderMap = outboundOrderService.list(q -> q
|
|
|
+ .between(OutboundOrder::getOutboundTime, beginDate, endDate));
|
|
|
if (ObjectUtil.isEmpty(outboundOrderMap)) {
|
|
|
return vo;
|
|
|
}
|
|
|
- Set<String> wlnCodeList = outboundOrderMap.keySet();
|
|
|
- // 出库单相关的订单数据
|
|
|
- List<OrderInfo> orderList = orderService.list(q -> q
|
|
|
- .in(OrderInfo::getWlnCode, wlnCodeList)
|
|
|
- .in(OrderInfo::getDepartmentId, departmentIds));
|
|
|
- if (ObjectUtil.isEmpty(orderList)) {
|
|
|
- return vo;
|
|
|
- }
|
|
|
- vo.setSumOrderCount(orderList.size());
|
|
|
- // 获取订单sku列表
|
|
|
- List<Long> orderIds = orderList.stream().map(BaseIdPo::getId).collect(Collectors.toList());
|
|
|
- List<OrderSku> orderSkuList = orderSkuService.list(q -> q.in(OrderSku::getOrderId, orderIds));
|
|
|
- List<Long> skuSpecIds = orderSkuList.stream().map(OrderSku::getSkuSpecId).collect(Collectors.toList());
|
|
|
- List<SkuSpec> skuSpecList = skuSpecService.list(q -> q.in(SkuSpec::getId, skuSpecIds));
|
|
|
- Map<String, SkuSpec> skuSpecMap = skuSpecList.stream().collect(Collectors.toMap(SkuSpec::getCode, item -> item, (v1, v2) -> v2));
|
|
|
- // 获取今日订单bom列表
|
|
|
- List<Long> bomSpecIds = skuSpecList.stream().map(SkuSpec::getBomSpecId).collect(Collectors.toList());
|
|
|
- Map<Long, BomSpecBo> bomSpecBoMap = skuSpecService.getBomSpecBoByIdList(bomSpecIds);
|
|
|
|
|
|
- Map<Long, DailyBoardOutStorageBomVo> outStorageBomMap = new HashMap<>();
|
|
|
- Map<Long, DailyBoardOutStorageBomVo> bzOutStorageBomMap = new HashMap<>();
|
|
|
- Map<Long, DailyBoardOutStorageBomVo> syOutStorageBomMap = new HashMap<>();
|
|
|
- int bzCount = 0;
|
|
|
- int syCount = 0;
|
|
|
- for (OrderInfo orderInfo : orderList) {
|
|
|
- BigDecimal quantity = BigDecimal.ZERO;
|
|
|
- // 当前订单出库数据
|
|
|
- List<OutboundOrder> outboundOrderList = outboundOrderMap.get(orderInfo.getWlnCode());
|
|
|
- // 出库单中主材bom
|
|
|
- List<DailyBoardOutStorageBomVo> outStorageBomVoList = new ArrayList<>();
|
|
|
- for (OutboundOrder outboundOrder : outboundOrderList) {
|
|
|
- SkuSpec skuSpec = skuSpecMap.get(outboundOrder.getSkuSpecCode());
|
|
|
- if (skuSpec == null) {
|
|
|
- continue;
|
|
|
- }
|
|
|
- BomSpecBo bomSpecBo = bomSpecBoMap.get(skuSpec.getBomSpecId());
|
|
|
- if (bomSpecBo == null) {
|
|
|
- quantity = quantity.add(outboundOrder.getQuantity());
|
|
|
+ Set<String> skuSpecCodes = outboundOrderMap.stream().map(OutboundOrder::getSkuSpecCode).collect(Collectors.toSet());
|
|
|
+ Map<String, SkuSpec> skuSpecMap = skuSpecService.mapKEntity(SkuSpec::getCode, q -> q.in(SkuSpec::getCode, skuSpecCodes));
|
|
|
+ List<Long> bomSpecIds = skuSpecMap.values().stream().map(SkuSpec::getBomSpecId).collect(Collectors.toList());
|
|
|
+ Map<Long, BomSpecBo> bomSpecMap = skuSpecService.getBomSpecBoByIdList(bomSpecIds);
|
|
|
+
|
|
|
+ List<DailyBoardOutStorageBomVo> outStorageBomVoList = new ArrayList<>();
|
|
|
+ List<DailyBoardOutStorageBomVo> bzOutStorageBomVoList = new ArrayList<>();
|
|
|
+ List<DailyBoardOutStorageBomVo> syOutStorageBomVoList = new ArrayList<>();
|
|
|
+ Set<String> bzOrderCodes = new HashSet<>();
|
|
|
+ Set<String> syOrderCodes = new HashSet<>();
|
|
|
+ for (OutboundOrder outboundOrder : outboundOrderMap) {
|
|
|
+ SkuSpec skuSpec = skuSpecMap.get(outboundOrder.getSkuSpecCode());
|
|
|
+ BomSpecBo bomSpec = null;
|
|
|
+ if (skuSpec != null) {
|
|
|
+ bomSpec = bomSpecMap.get(skuSpec.getBomSpecId());
|
|
|
+ if (bomSpec != null && !Objects.equals(bomSpec.getClassifyParentId(), 1L)) {
|
|
|
continue;
|
|
|
}
|
|
|
- if (Objects.equals(bomSpecBo.getClassifyParentId(), 1L)) {
|
|
|
- DailyBoardOutStorageBomVo bomVo = new DailyBoardOutStorageBomVo();
|
|
|
- bomVo.setBomSpecId(bomSpecBo.getBomSpecId());
|
|
|
- bomVo.setBomSpecCode(bomSpecBo.getBomSpecCode());
|
|
|
- bomVo.setBomSpecName(bomSpecBo.getBomSpecName());
|
|
|
- bomVo.setQuantity(outboundOrder.getQuantity());
|
|
|
- outStorageBomVoList.add(bomVo);
|
|
|
- quantity = quantity.add(outboundOrder.getQuantity());
|
|
|
- }
|
|
|
}
|
|
|
- // 保存bom数量
|
|
|
- vo.setSumBomCount(vo.getSumBomCount().add(quantity));
|
|
|
-
|
|
|
- outStorageBomMap = Stream.concat(outStorageBomMap.values().stream(), outStorageBomVoList.stream())
|
|
|
- .collect(Collectors.toMap(
|
|
|
- DailyBoardOutStorageBomVo::getBomSpecId,
|
|
|
- Function.identity(),
|
|
|
- (v1, v2) -> {
|
|
|
- DailyBoardOutStorageBomVo tempVo = new DailyBoardOutStorageBomVo();
|
|
|
- BeanUtil.copyProperties(v1, tempVo);
|
|
|
- tempVo.setQuantity(v1.getQuantity().add(v2.getQuantity()));
|
|
|
- return tempVo;
|
|
|
- }
|
|
|
- ));
|
|
|
- // 佰卓订单
|
|
|
- if (ObjectUtil.equals(orderInfo.getDepartmentId(), department.getId())) {
|
|
|
- bzCount++;
|
|
|
- vo.setBzSumOrderCount(bzCount);
|
|
|
- bzOutStorageBomMap = Stream.concat(bzOutStorageBomMap.values().stream(), outStorageBomVoList.stream())
|
|
|
- .collect(Collectors.toMap(
|
|
|
- DailyBoardOutStorageBomVo::getBomSpecId,
|
|
|
- Function.identity(),
|
|
|
- (v1, v2) -> {
|
|
|
- DailyBoardOutStorageBomVo tempVo = new DailyBoardOutStorageBomVo();
|
|
|
- BeanUtil.copyProperties(v1, tempVo);
|
|
|
- tempVo.setQuantity(v1.getQuantity().add(v2.getQuantity()));
|
|
|
- return tempVo;
|
|
|
- }
|
|
|
- ));
|
|
|
- vo.setBzSumBomCount(vo.getBzSumBomCount().add(quantity));
|
|
|
+ // 判断是否是佰卓订单
|
|
|
+ boolean flag = Objects.equals(outboundOrder.getStorageCode(), "T007");
|
|
|
+ if (flag) {
|
|
|
+ bzOrderCodes.add(outboundOrder.getOrderWlnCode());
|
|
|
} else {
|
|
|
- syCount++;
|
|
|
- vo.setSySumOrderCount(syCount);
|
|
|
- syOutStorageBomMap = Stream.concat(syOutStorageBomMap.values().stream(), outStorageBomVoList.stream())
|
|
|
- .collect(Collectors.toMap(
|
|
|
- DailyBoardOutStorageBomVo::getBomSpecId,
|
|
|
- Function.identity(),
|
|
|
- (v1, v2) -> {
|
|
|
- DailyBoardOutStorageBomVo tempVo = new DailyBoardOutStorageBomVo();
|
|
|
- BeanUtil.copyProperties(v1, tempVo);
|
|
|
- tempVo.setQuantity(v1.getQuantity().add(v2.getQuantity()));
|
|
|
- return tempVo;
|
|
|
- }
|
|
|
- ));
|
|
|
- vo.setSySumBomCount(vo.getSySumBomCount().add(quantity));
|
|
|
+ syOrderCodes.add(outboundOrder.getOrderWlnCode());
|
|
|
+ }
|
|
|
+ DailyBoardOutStorageBomVo bomVo = new DailyBoardOutStorageBomVo();
|
|
|
+ if (bomSpec != null) {
|
|
|
+ bomVo.setBomSpecId(bomSpec.getBomSpecId());
|
|
|
+ bomVo.setBomSpecCode(bomSpec.getBomSpecCode());
|
|
|
+ bomVo.setBomSpecName(bomSpec.getBomSpecName());
|
|
|
+ }
|
|
|
+ bomVo.setQuantity(outboundOrder.getQuantity());
|
|
|
+ outStorageBomVoList.add(bomVo);
|
|
|
+ if (Objects.equals(outboundOrder.getStorageCode(), "T007")) {
|
|
|
+ bzOutStorageBomVoList.add(bomVo);
|
|
|
+ } else {
|
|
|
+ syOutStorageBomVoList.add(bomVo);
|
|
|
}
|
|
|
}
|
|
|
+ // 合并bom数据
|
|
|
+ Map<Long, DailyBoardOutStorageBomVo> outStorageBomMap = outStorageBomVoList.stream().collect(
|
|
|
+ Collectors.toMap(
|
|
|
+ DailyBoardOutStorageBomVo::getBomSpecId,
|
|
|
+ Function.identity(),
|
|
|
+ (v1, v2) -> {
|
|
|
+ DailyBoardOutStorageBomVo tempVo = new DailyBoardOutStorageBomVo();
|
|
|
+ BeanUtil.copyProperties(v1, tempVo);
|
|
|
+ tempVo.setQuantity(v1.getQuantity().add(v2.getQuantity()));
|
|
|
+ return tempVo;
|
|
|
+ }));
|
|
|
+
|
|
|
+ Map<Long, DailyBoardOutStorageBomVo> bzOutStorageBomMap = bzOutStorageBomVoList.stream().collect(
|
|
|
+ Collectors.toMap(
|
|
|
+ DailyBoardOutStorageBomVo::getBomSpecId,
|
|
|
+ Function.identity(),
|
|
|
+ (v1, v2) -> {
|
|
|
+ DailyBoardOutStorageBomVo tempVo = new DailyBoardOutStorageBomVo();
|
|
|
+ BeanUtil.copyProperties(v1, tempVo);
|
|
|
+ tempVo.setQuantity(v1.getQuantity().add(v2.getQuantity()));
|
|
|
+ return tempVo;
|
|
|
+ }));
|
|
|
+
|
|
|
+ Map<Long, DailyBoardOutStorageBomVo> syOutStorageBomMap = syOutStorageBomVoList.stream().collect(
|
|
|
+ Collectors.toMap(
|
|
|
+ DailyBoardOutStorageBomVo::getBomSpecId,
|
|
|
+ Function.identity(),
|
|
|
+ (v1, v2) -> {
|
|
|
+ DailyBoardOutStorageBomVo tempVo = new DailyBoardOutStorageBomVo();
|
|
|
+ BeanUtil.copyProperties(v1, tempVo);
|
|
|
+ tempVo.setQuantity(v1.getQuantity().add(v2.getQuantity()));
|
|
|
+ return tempVo;
|
|
|
+ }));
|
|
|
+
|
|
|
+ vo.setBzSumOrderCount(bzOrderCodes.size());
|
|
|
+ vo.setSySumOrderCount(syOrderCodes.size());
|
|
|
+ vo.setSumOrderCount(vo.getBzSumOrderCount() + vo.getSySumOrderCount());
|
|
|
+ vo.setSumBomCount(outStorageBomVoList.stream().map(DailyBoardOutStorageBomVo::getQuantity).reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
+ vo.setBzSumBomCount(bzOutStorageBomVoList.stream().map(DailyBoardOutStorageBomVo::getQuantity).reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
+ vo.setSySumBomCount(syOutStorageBomVoList.stream().map(DailyBoardOutStorageBomVo::getQuantity).reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
vo.setOutStorageBomList(new ArrayList<>(outStorageBomMap.values()));
|
|
|
vo.setBzOutStorageBomList(new ArrayList<>(bzOutStorageBomMap.values()));
|
|
|
vo.setSyOutStorageBomList(new ArrayList<>(syOutStorageBomMap.values()));
|