Jelajahi Sumber

针对异常批次做了相关调整,见 BizDayworkController 266行

ezhizao 1 tahun lalu
induk
melakukan
0a581fec37

+ 67 - 7
src/main/java/cn/ezhizao/project/business/product/controller/BizDayworkController.java

@@ -160,6 +160,7 @@ public class BizDayworkController extends BaseController {
         List<BizDayworkItem> allDayworkItems = new ArrayList<>();
         List<BizLot> lotList = new ArrayList<>();
         if (!myDayworkItems.isEmpty()) {
+            /*
             // 将报工记录中的daywork_id,整个到一个List集合中,用于后续的查询
             List<Long> dayworkIds = myDayworkItems.stream()
                     .map(BizDayworkItem::getDayworkId)
@@ -181,6 +182,8 @@ public class BizDayworkController extends BaseController {
             //获取所有lotId
             List<Long> allLotsIdList = dayworks.stream().map(BizDaywork::getLotId).collect(Collectors.toList());
             lotList = bizLotService.query().in("id", allLotsIdList.isEmpty()? Collections.singletonList(0L) : dayworks.stream().map(BizDaywork::getLotId).collect(Collectors.toList())).list();
+            */
+            setAllDayworkItemsAndLots(myDayworkItems, keywords, dayworks, allDayworkItems, lotList, lots);
         }
 
 
@@ -188,6 +191,7 @@ public class BizDayworkController extends BaseController {
         List<BizDaywork> dayworkList = new ArrayList<>();
         // 对之前获取到的 daywork 集合进行过滤,将符合条件的daywork,添加到dayworkList集合中
         for (BizDaywork item : dayworks) {
+            /*
             //添加批次单批量
             item.setOneLotQuantity(lotList.stream().filter(v -> v.getId().equals(item.getLotId())).collect(Collectors.toList()).get(0).getProductionQuantity());
             //拿到批次是否批废信息
@@ -214,6 +218,8 @@ public class BizDayworkController extends BaseController {
                 item.setDayworkItemList(currentMyDayworkItems);
                 dayworkList.add(item);
             }
+            */
+            dayworkListAddItem(dayworkList, item, lotList, allDayworkItems, myDayworkItems);
         }
 
         // 如果有报工数据
@@ -257,14 +263,13 @@ public class BizDayworkController extends BaseController {
             }
 
             /* ****************************** 获取与 daywork 相关的所有批次,为了获取每个批次中的投产数 ****************************** */
-            List<Long> allLotIds = dayworkList.stream().map(BizDaywork::getLotId).collect(Collectors.toList());
-
-            List<BizLot> allLots = bizLotService.query().in("id", allLotIds).list();
-
+            // 直接通过daywork中的 technological_process_id 组成的集合,获取到对应的批次工艺工序清单,解决【正常】与【异常】冲突的问题
+            List<Long> allTechnologicalProcessIds = dayworkList.stream().map(BizDaywork::getTechnologicalProcessId).collect(Collectors.toList());
             List<BizLotTechnologicalProcess> allLotTechnologicalProcesses = bizLotTechnologicalProcessService.query()
-                    .in("lot_id", allLotIds)
+                    .in("id", allTechnologicalProcessIds)
                     .eq("is_stop", 0)
                     .list();
+
             List<Long> allWastRecyclingIds = allLotTechnologicalProcesses.stream().map(BizLotTechnologicalProcess::getId).collect(Collectors.toList());
             List<BizLotTechnologicalProcessDetail> allLotTechnologicalDetails = new ArrayList<>();
             if (!allWastRecyclingIds.isEmpty()) {
@@ -280,7 +285,10 @@ public class BizDayworkController extends BaseController {
                     .list();
             //查询计划单下所有的报工记录
             List<BizDayworkItem> totalDayworkItemList = bizDayworkItemService.query().eq("production_plan_detail_id", productionPlanDetailId).list();
+
             // 循环最终要展示的 daywork 集合,根据每个daywork,精确赋予相关数据
+            List<Long> allLotIds = dayworkList.stream().map(BizDaywork::getLotId).collect(Collectors.toList());
+            List<BizLot> allLots = bizLotService.query().in("id", allLotIds).list();
             for (BizDaywork daywork : dayworkList) {
                 //把批次的lot投产数量加到daywork里
                 allLots.stream().filter(l -> l.getId().equals(daywork.getLotId()))
@@ -553,9 +561,61 @@ public class BizDayworkController extends BaseController {
 
     }
 
+    private void setAllDayworkItemsAndLots(List<BizDayworkItem> myDayworkItems, String keywords, List<BizDaywork> dayworks, List<BizDayworkItem> allDayworkItems, List<BizLot> lotList, List<BizLot> lots) {
+        List<Long> dayworkIds = myDayworkItems.stream()
+                .map(BizDayworkItem::getDayworkId)
+                .collect(Collectors.toList());
+        // 再根据整合后报工明细中对应的 daywork_id 的集合,获取到对应的 daywork 集合
+        if (keywords.isEmpty())
+            dayworks = bizDayworkService.query().in("id", dayworkIds).list();
+        else if (!lots.isEmpty()) {
+            List<Long> lotIds = lots.stream().map(BizLot::getId).collect(Collectors.toList());
+            dayworks = bizDayworkService.query()
+                    .in("id", dayworkIds)
+                    .in("lot_id", lotIds)
+                    .list();
+        }
+        // 根据得到的 daywork 集合,将 daywork_id 整合到集合中
+        List<Long> allDayworkIdList = dayworks.stream().map(BizDaywork::getId).collect(Collectors.toList());
+        // 再根据得到的daywork_id集合,获取所有的报工明细
+        allDayworkItems = bizDayworkItemService.query().in("daywork_id", allDayworkIdList.isEmpty() ? Collections.singletonList(0L) : dayworks.stream().map(BizDaywork::getId).collect(Collectors.toList())).list();
+        //获取所有lotId
+        List<Long> allLotsIdList = dayworks.stream().map(BizDaywork::getLotId).collect(Collectors.toList());
+        lotList = bizLotService.query().in("id", allLotsIdList.isEmpty()? Collections.singletonList(0L) : dayworks.stream().map(BizDaywork::getLotId).collect(Collectors.toList())).list();
+    }
+
+    private void dayworkListAddItem(List<BizDaywork> dayworkList, BizDaywork daywork, List<BizLot> lotList, List<BizDayworkItem> allDayworkItems, List<BizDayworkItem> myDayworkItems){
+        //添加批次单批量
+        daywork.setOneLotQuantity(lotList.stream().filter(v -> v.getId().equals(daywork.getLotId())).collect(Collectors.toList()).get(0).getProductionQuantity());
+        //拿到批次是否批废信息
+        daywork.setIsWaste(lotList.stream().filter(v -> v.getId().equals(daywork.getLotId())).collect(Collectors.toList()).get(0).getIsWaste());
+        // 根据当前的dayworkId,获取相应的daywork_item集合,并根据创建日期进行倒叙排序
+        List<BizDayworkItem> currentDayworkItems = allDayworkItems.stream()
+                .filter(di -> di.getDayworkId().equals(daywork.getId()))
+                .sorted(Comparator.comparing(BizDayworkItem::getCreateTime).reversed())
+                .collect(Collectors.toList());
+        // 获取最后一条报工明细
+        BizDayworkItem latest = currentDayworkItems.get(0);
+        String status = currentDayworkItems.stream().filter(v -> v.getTechnologicalProcessDetailId().equals(latest.getTechnologicalProcessDetailId()))
+                .collect(Collectors.toList())
+                .get(0)
+                .getStatus();
+        // 状态 == 5 时,说明已经进入周转中,那么该条daywork,将不再页面中显示,所以,通过对status的值的判断,添加到daywork集合中
+        if (Integer.parseInt(status) < 5) {
+            // 获取当前操作者自己的报工记录
+            List<BizDayworkItem> currentMyDayworkItems = myDayworkItems.stream()
+                    .filter(di -> di.getDayworkId().equals(daywork.getId()))
+                    .sorted(Comparator.comparing(BizDayworkItem::getCreateTime))
+                    .collect(Collectors.toList());
+            // 将获取到的 day_work_item 集合,赋值给daywork中的相对应属性
+            daywork.setDayworkItemList(currentMyDayworkItems);
+            dayworkList.add(daywork);
+        }
+    }
+
     /**
-     * @param bizDaywork
-     * @return
+     * @param bizDaywork 查询条件
+     * @return AjaxResult
      */
     @GetMapping("/selectProcessList")
     public AjaxResult selectProcessList(BizDaywork bizDaywork) {