Kaynağa Gözat

修改看板生产完成数量统计

fgd 1 yıl önce
ebeveyn
işleme
d3ad81da83

+ 41 - 26
sd-business/src/main/java/com/sd/business/service/board/impl/DailyBoardServiceImpl.java

@@ -19,6 +19,7 @@ import com.sd.business.entity.order.po.OrderInfo;
 import com.sd.business.entity.order.po.OrderSku;
 import com.sd.business.entity.outbound.po.OutboundOrder;
 import com.sd.business.entity.production.po.ProductionTask;
+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;
@@ -29,7 +30,7 @@ import com.sd.business.service.in.InOutStorageService;
 import com.sd.business.service.order.OrderService;
 import com.sd.business.service.order.OrderSkuService;
 import com.sd.business.service.outbound.OutboundOrderService;
-import com.sd.business.service.production.ProductionTaskService;
+import com.sd.business.service.production.ProductionWorkOrderService;
 import com.sd.business.service.sku.SkuSpecService;
 import com.sd.business.service.statement.StatementOfAccountService;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -58,7 +59,7 @@ public class DailyBoardServiceImpl implements DailyBoardService {
     private OrderService orderService;
 
     @Autowired
-    private ProductionTaskService productionTaskService;
+    private ProductionWorkOrderService productionWorkOrderService;
 
     @Autowired
     private OutboundOrderService outboundOrderService;
@@ -127,7 +128,7 @@ public class DailyBoardServiceImpl implements DailyBoardService {
         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<ProductionTask>> taskMap = productionTaskService.mapKGroup(ProductionTask::getOrderId, q -> q.between(ProductionTask::getCompleteTime, beginDate, endDate));
+        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));
@@ -166,9 +167,9 @@ public class DailyBoardServiceImpl implements DailyBoardService {
         for (OrderInfo orderInfo : orderInfoList) {
             // 获取当前订单sku
             List<OrderSku> orderSkus = map.get(orderInfo.getId());
-            List<ProductionTask> productionTaskList = taskMap.getOrDefault(orderInfo.getId(), Collections.emptyList());
+            List<ProductionWorkOrder> productionWorkOrderList = taskMap.getOrDefault(orderInfo.getId(), Collections.emptyList());
             List<OutboundOrder> outboundOrderList = outboundOrderMap.getOrDefault(orderInfo.getWlnCode(), Collections.emptyList());
-            if (productionTaskList.isEmpty() && outboundOrderList.isEmpty()) {
+            if (productionWorkOrderList.isEmpty() && outboundOrderList.isEmpty()) {
                 continue;
             }
             List<String> skuKeyList = new ArrayList<>();
@@ -196,10 +197,12 @@ public class DailyBoardServiceImpl implements DailyBoardService {
                     return tempOrderBomDifferenceVo;
                 });
                 // mes数量
-                BigDecimal mesCount = productionTaskList.stream()
+                List<ProductionWorkOrder> workOrderList = productionWorkOrderList.stream()
                         .filter(item -> Objects.equals(item.getSkuSpecId(), orderSkuId))
-                        .map(ProductionTask::getCompleteQuantity)
-                        .reduce(BigDecimal.ZERO, BigDecimal::add);
+                        .filter(item -> Objects.equals(item.getStatus(), 3))
+                        .collect(Collectors.toList());
+                BigDecimal mesCount = new BigDecimal(workOrderList.size());
+
                 // 万里牛数量
                 BigDecimal wlnCount = outboundOrderList.stream()
                         .filter(item -> {
@@ -369,7 +372,7 @@ public class DailyBoardServiceImpl implements DailyBoardService {
         departmentIds.add(department.getId());
 
         // 查询今日出库单出库数据
-        Map<Long, List<ProductionTask>> taskMap = productionTaskService.mapKGroup(ProductionTask::getOrderId, q -> q.between(ProductionTask::getCompleteTime, beginDate, endDate));
+        Map<Long, List<ProductionWorkOrder>> taskMap = productionWorkOrderService.mapKGroup(ProductionWorkOrder::getOrderId, q -> q.between(ProductionWorkOrder::getCompleteTime, beginDate, endDate));
         if (ObjectUtil.isEmpty(taskMap)) {
             return vo;
         }
@@ -385,6 +388,7 @@ public class DailyBoardServiceImpl implements DailyBoardService {
         // 获取订单sku列表
         List<Long> orderIds = orderList.stream().map(BaseIdPo::getId).collect(Collectors.toList());
         List<OrderSku> orderSkuList = orderSkuService.list(q -> q.in(OrderSku::getOrderId, orderIds));
+        Map<Long, OrderSku> orderSkuMap = orderSkuList.stream().collect(Collectors.toMap(BaseIdPo::getId, Function.identity()));
         // 获取今日订单bom列表
         List<Long> bomSpecIds = orderSkuList.stream().map(OrderSku::getBomSpecId).collect(Collectors.toList());
         Map<Long, BomSpecBo> bomSpecBoMap = skuSpecService.getBomSpecBoByIdList(bomSpecIds);
@@ -397,13 +401,17 @@ public class DailyBoardServiceImpl implements DailyBoardService {
         for (OrderInfo orderInfo : orderList) {
             BigDecimal quantity = BigDecimal.ZERO;
             // 当前订单出库数据
-            List<ProductionTask> productionTaskList = taskMap.get(orderInfo.getId());
+            List<ProductionWorkOrder> productionWorkOrderList = taskMap.get(orderInfo.getId());
             // 出库单中主材bom
             List<DailyBoardOutStorageBomVo> outStorageBomVoList = new ArrayList<>();
-            for (ProductionTask productionTask : productionTaskList) {
-                BomSpecBo bomSpecBo = bomSpecBoMap.get(productionTask.getBomSpecId());
+            for (ProductionWorkOrder productionWorkOrder : productionWorkOrderList) {
+                OrderSku orderSku = orderSkuMap.get(productionWorkOrder.getOrderSkuId());
+                if (orderSku == null) {
+                    continue;
+                }
+                BomSpecBo bomSpecBo = bomSpecBoMap.get(orderSku.getBomSpecId());
                 if (bomSpecBo == null) {
-                    quantity = quantity.add(productionTask.getCompleteQuantity());
+                    quantity = quantity.add(new BigDecimal(1));
                     continue;
                 }
                 if (Objects.equals(bomSpecBo.getClassifyParentId(), 1L)) {
@@ -411,9 +419,9 @@ public class DailyBoardServiceImpl implements DailyBoardService {
                     bomVo.setBomSpecId(bomSpecBo.getBomSpecId());
                     bomVo.setBomSpecCode(bomSpecBo.getBomSpecCode());
                     bomVo.setBomSpecName(bomSpecBo.getBomSpecName());
-                    bomVo.setQuantity(productionTask.getCompleteQuantity());
+                    bomVo.setQuantity(new BigDecimal(1));
                     outStorageBomVoList.add(bomVo);
-                    quantity = quantity.add(productionTask.getCompleteQuantity());
+                    quantity = quantity.add(new BigDecimal(1));
                 }
             }
             // 保存bom数量
@@ -477,7 +485,7 @@ public class DailyBoardServiceImpl implements DailyBoardService {
         Date beginDate = DateUtil.beginOfDay(dto.getBeginDate());
         Date endDate = DateUtil.endOfDay(dto.getEndDate());
         // 查询今日出库单出库数据
-        Map<Long, List<ProductionTask>> taskMap = productionTaskService.mapKGroup(ProductionTask::getOrderId, q -> q.between(ProductionTask::getCompleteTime, beginDate, endDate));
+        Map<Long, List<ProductionWorkOrder>> taskMap = productionWorkOrderService.mapKGroup(ProductionWorkOrder::getOrderId, q -> q.between(ProductionWorkOrder::getCompleteTime, beginDate, endDate));
         if (ObjectUtil.isEmpty(taskMap)) {
             return vo;
         }
@@ -493,6 +501,7 @@ public class DailyBoardServiceImpl implements DailyBoardService {
         // 获取订单sku列表
         List<Long> orderIds = orderList.stream().map(BaseIdPo::getId).collect(Collectors.toList());
         List<OrderSku> orderSkuList = orderSkuService.list(q -> q.in(OrderSku::getOrderId, orderIds));
+        Map<Long, OrderSku> orderSkuMap = orderSkuList.stream().collect(Collectors.toMap(BaseIdPo::getId, Function.identity()));
         // 获取今日订单bom列表
         List<Long> bomSpecIds = orderSkuList.stream().map(OrderSku::getBomSpecId).collect(Collectors.toList());
         Map<Long, BomSpecBo> bomSpecBoMap = skuSpecService.getBomSpecBoByIdList(bomSpecIds);
@@ -501,19 +510,24 @@ public class DailyBoardServiceImpl implements DailyBoardService {
         for (OrderInfo orderInfo : orderList) {
             BigDecimal quantity = BigDecimal.ZERO;
             // 当前订单出库数据
-            List<ProductionTask> productionTaskList = taskMap.get(orderInfo.getId());
+            List<ProductionWorkOrder> productionWorkOrderList = taskMap.get(orderInfo.getId());
             // 出库单中主材bom
             List<DailyBoardOutStorageBomVo> outStorageBomVoList = new ArrayList<>();
-            for (ProductionTask productionTask : productionTaskList) {
-                BomSpecBo bomSpecBo = bomSpecBoMap.get(productionTask.getBomSpecId());
-                if (Objects.equals(bomSpecBo.getClassifyParentId(), 1L)) {
+            for (ProductionWorkOrder productionWorkOrder : productionWorkOrderList) {
+                OrderSku orderSku = orderSkuMap.get(productionWorkOrder.getOrderSkuId());
+                if (orderSku == null) {
+                    continue;
+                }
+                Long bomSpecId = orderSku.getBomSpecId();
+                BomSpecBo bomSpecBo = bomSpecBoMap.get(bomSpecId);
+                if (Objects.equals(bomSpecBo.getClassifyParentId(), 1L) && Objects.equals(productionWorkOrder.getStatus(), 3)) {
                     DailyBoardOutStorageBomVo bomVo = new DailyBoardOutStorageBomVo();
                     bomVo.setBomSpecId(bomSpecBo.getBomSpecId());
                     bomVo.setBomSpecCode(bomSpecBo.getBomSpecCode());
                     bomVo.setBomSpecName(bomSpecBo.getBomSpecName());
-                    bomVo.setQuantity(productionTask.getCompleteQuantity());
+                    bomVo.setQuantity(new BigDecimal(1));
                     outStorageBomVoList.add(bomVo);
-                    quantity = quantity.add(productionTask.getCompleteQuantity());
+                    quantity = quantity.add(new BigDecimal(1));
                 }
             }
             // 保存bom数量
@@ -542,12 +556,12 @@ public class DailyBoardServiceImpl implements DailyBoardService {
         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());
         // 查询今日生成完成任务
-        List<ProductionTask> productionTaskList = productionTaskService.list(q -> q.between(ProductionTask::getCompleteTime, beginDate, endDate));
+        List<ProductionWorkOrder> productionWorkOrderList = productionWorkOrderService.list(q -> q.between(ProductionWorkOrder::getCompleteTime, beginDate, endDate));
         long productionOrderCount;
-        if (productionTaskList.isEmpty()) {
+        if (productionWorkOrderList.isEmpty()) {
             productionOrderCount = 0L;
         } else {
-            List<Long> orderIds = productionTaskList.stream().map(ProductionTask::getOrderId).collect(Collectors.toList());
+            List<Long> orderIds = productionWorkOrderList.stream().map(ProductionWorkOrder::getOrderId).collect(Collectors.toList());
             productionOrderCount = orderService.count(q -> q.in(OrderInfo::getDepartmentId, departmentIds).in(BaseIdPo::getId, orderIds));
         }
 
@@ -565,7 +579,8 @@ public class DailyBoardServiceImpl implements DailyBoardService {
         }
 
         // 查询bom总数
-        BigDecimal productionBomQuantity = productionTaskList.stream().map(ProductionTask::getCompleteQuantity).reduce(BigDecimal.ZERO, BigDecimal::add);
+        List<ProductionWorkOrder> workOrderList = productionWorkOrderList.stream().filter(item -> Objects.equals(item.getStatus(), 3)).collect(Collectors.toList());
+        BigDecimal productionBomQuantity = new BigDecimal(workOrderList.size());
         BigDecimal outboundBomQuantity = outboundOrderList.stream().map(OutboundOrder::getQuantity).reduce(BigDecimal.ZERO, BigDecimal::add);
 
         if (ObjectUtil.notEqual(productionBomQuantity, outboundBomQuantity)) {