ezhizao_zx 4 сар өмнө
parent
commit
78516f9c51

+ 22 - 0
src/main/java/cn/ezhizao/project/business/controller/BizLotController.java

@@ -81,6 +81,8 @@ public class BizLotController extends BaseController {
     @Resource
     private IBizDayworkAuxiliaryItemService bizDayworkAuxiliaryItemsService;
     @Resource
+    private IBizDayworkItemRejectService bizDayworkItemRejectService;
+    @Resource
     HttpServletRequest request;
 
     /**
@@ -467,6 +469,8 @@ public class BizLotController extends BaseController {
         List<BizDayworkItem> delDayworkItems = new ArrayList<>();
         List<BizFurnaceNoInfo> furnaceNoInfos = new ArrayList<>();
         List<BizQuickDayworkNextInfo> quickDayworkNextInfos = new ArrayList<>();
+        List<BizDayworkItemReject> updateDayworkItemRejects = new ArrayList<>();
+        List<BizDayworkItemReject> removeDayworkItemRejects = new ArrayList<>();
         // 判断绑定箱是否重复
         List<Long> carrierIds = new ArrayList<>();
         sparateList.stream().filter(v -> !bizLot.getId().equals(v.getId())).forEach(x -> carrierIds.addAll(x.getCarriers().stream().map(BizCarrier::getId).collect(Collectors.toList())));
@@ -511,6 +515,8 @@ public class BizLotController extends BaseController {
         if (lastProcessItem.stream().noneMatch(v -> v.getStatus().compareTo("4") >= 0) && lastProcessItem.stream().anyMatch(v -> !v.getUserId().equals(lastProcessItem.get(0).getUserId()))) {
             return error("最后一道工序存在邀请报工,不能进行分批");
         }
+        List<BizDayworkItemReject> latestRejects = bizDayworkItemRejectService.query().in("daywork_item_id", lastProcessItem.isEmpty() ? Collections.singletonList(0L) : lastProcessItem.stream().map(BizDayworkItem::getId).collect(Collectors.toList())).list();
+        Map<String, List<BizDayworkItemReject>> rejectGroupByReason = latestRejects.stream().collect(Collectors.groupingBy(BizDayworkItemReject::getReason, Collectors.toList()));
         List<BizQuickDayworkNextInfo> oldQuickDayworkNextInfos = bizQuickDayworkNextInfoService.query().in("daywork_item_id", baseDayworkItems.isEmpty() ? Collections.singletonList(0L) : baseDayworkItems.stream().map(BizDayworkItem::getId).collect(Collectors.toList())).list();
         AtomicBoolean necessaryOfCarrier = new AtomicBoolean(true);
         if (baseDayworks.size() > 0) {
@@ -661,7 +667,21 @@ public class BizLotController extends BaseController {
                         updateItem.setStatus(currentItems.stream().max(Comparator.comparing(BizDayworkItem::getStatus)).orElse(new BizDayworkItem()).getStatus());
                         updateItem.setProdNum(l.getLotNumber());
                         updateItem.setQualifiedNum(l.getQualifiedNum());
+                        long rejectNum = latestRejects.stream().mapToLong(BizDayworkItemReject::getRejectNum).sum();
+                        updateItem.setRejectNum(Math.toIntExact(rejectNum));
                         bizDayworkItems.add(updateItem);
+                        rejectGroupByReason.forEach((k,v) -> {
+                            if (v.size() > 1) {
+                                BizDayworkItemReject b = v.get(0);
+                                b.setDayworkItemId(updateItem.getId());
+                                b.setRejectNum(v.stream().mapToLong(BizDayworkItemReject::getRejectNum).sum());
+                                updateDayworkItemRejects.add(b);
+                                removeDayworkItemRejects.addAll(v.stream().filter(e -> updateDayworkItemRejects.stream().noneMatch(t -> t.getId().equals(e.getId()))).collect(Collectors.toList()));
+                            } else {
+                                v.forEach(e -> e.setDayworkItemId(updateItem.getId()));
+                                updateDayworkItemRejects.addAll(v);
+                            }
+                        });
                         delDayworkItems.addAll(currentItems.stream().filter(e -> bizDayworkItems.stream().noneMatch(t -> t.getId().equals(e.getId()))).collect(Collectors.toList()));
                     }
                     List<BizDayworkItem> historyDayworkItem = baseDayworkItems.stream().filter(e -> e.getDayworkId().equals(baseDayworks.get(0).getId())).filter(e -> bizDayworkItems.stream().noneMatch(t -> t.getId().equals(e.getId()))).filter(e -> delDayworkItems.stream().noneMatch(t -> t.getId().equals(e.getId()))).collect(Collectors.toList());
@@ -684,6 +704,8 @@ public class BizLotController extends BaseController {
                         (newDayworkCarriers.isEmpty() || dayworkCarrierService.saveBatch(newDayworkCarriers)) &&
                         (furnaceNoInfos.isEmpty() || bizFurnaceNoInfoService.saveBatch(furnaceNoInfos)) &&
                         (quickDayworkNextInfos.isEmpty() || bizQuickDayworkNextInfoService.saveBatch(quickDayworkNextInfos)) &&
+                        (updateDayworkItemRejects.isEmpty() || bizDayworkItemRejectService.saveOrUpdateBatch(updateDayworkItemRejects)) &&
+                        (removeDayworkItemRejects.isEmpty() || bizDayworkItemRejectService.removeBatchByIds(removeDayworkItemRejects)) &&
                         bizLotService.saveOrUpdateBatch(sparateList)
         );
 //        return toAjax(true);