Parcourir la source

每日看板调整

fgd il y a 1 an
Parent
commit
cfae0c2de5

+ 149 - 167
sd-business/src/main/java/com/sd/business/service/board/impl/DailyBoardServiceImpl.java

@@ -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()));