Переглянути джерело

Merge remote-tracking branch 'origin/master'

guoyujia 11 місяців тому
батько
коміт
1fba5a6279

+ 9 - 2
src/main/java/cn/ezhizao/project/business/controller/BizProductionPlanDetailController.java

@@ -269,8 +269,15 @@ public class BizProductionPlanDetailController extends BaseController {
                 for (int j = 0; j < currentDayworkIds.size(); j++) {
                     Long currentId = currentDayworkIds.get(j);
                     //拿到该批次最新工序步骤
-                    String latestProcessStepNumber = dayworkItemList.stream().filter(item -> item.getDayworkId().equals(currentId)).sorted(Comparator.comparing(BizDayworkItem::getProcessStepNumber).reversed()).collect(Collectors.toList()).get(0).getProcessStepNumber();
-                    List<String> latestStatus = dayworkItemList.stream().filter(item -> item.getDayworkId().equals(currentId) && item.getProcessStepNumber().equals(latestProcessStepNumber)).map(BizDayworkItem::getStatus).collect(Collectors.toList());
+                    BizDayworkItem item = dayworkItemList.stream().filter(v -> v.getDayworkId().equals(currentId)).max(Comparator.comparing(BizDayworkItem::getProcessStepNumber)).orElse(null);
+                    String latestProcessStepNumber;
+                    if (item != null) {
+                        latestProcessStepNumber = item.getProcessStepNumber();
+                    } else {
+                        latestProcessStepNumber = "";
+                    }
+//                    String latestProcessStepNumber = dayworkItemList.stream().filter(item -> item.getDayworkId().equals(currentId)).sorted(Comparator.comparing(BizDayworkItem::getProcessStepNumber).reversed()).collect(Collectors.toList()).get(0).getProcessStepNumber();
+                    List<String> latestStatus = dayworkItemList.stream().filter(v -> v.getDayworkId().equals(currentId) && v.getProcessStepNumber().equals(latestProcessStepNumber)).map(BizDayworkItem::getStatus).collect(Collectors.toList());
                     if (!latestStatus.contains("3") && !latestStatus.contains("4") && !latestStatus.contains("5") && !latestStatus.contains("7")) {
                         inProduction++;
                     }

+ 95 - 93
src/main/java/cn/ezhizao/project/business/service/impl/BizDayworkItemServiceImpl.java

@@ -166,54 +166,95 @@ public class BizDayworkItemServiceImpl extends ServiceImpl<BizDayworkItemMapper,
     public void updateDayworkItemForOutsource(List<BizOutsourcedOrderDetail> outsourcedOrderDetails,List<BizOutsourcedOrderDetail> oldOutsourcedOrderDetails) {
         //编辑发出单对dayworkItem进行操作
         List<Long> dayworkIds = outsourcedOrderDetails.stream().filter(item ->item.getProductionDeptId() ==null || item.getProductionDeptId() ==0 ).map(BizOutsourcedOrderDetail::getDayworkId).collect(Collectors.toList());
-        List<Long> outsourcedDetailIds = outsourcedOrderDetails.stream().filter(item ->item.getProductionDeptId() ==null || item.getProductionDeptId() ==0).map(BizOutsourcedOrderDetail::getId).collect(Collectors.toList());
-        List<Long> totalIds = new ArrayList<>();
-        totalIds.addAll(dayworkIds);
-        totalIds.addAll(oldOutsourcedOrderDetails.stream().filter(item ->item.getProductionDeptId() ==null || item.getProductionDeptId() ==0).map(BizOutsourcedOrderDetail::getDayworkId).collect(Collectors.toList()));
-        List<BizDayworkItem> dayworkItemList = getListByDayworkIds(totalIds.stream().distinct().collect(Collectors.toList()));
-        //如果是新增的外协明细,则拿到报工信息最新一条,如果is_wx = 0,则吧状态置为7
-        List<BizDayworkItem> needUpdateStatus = new ArrayList<>();
-        for (int i = 0; i < dayworkIds.size(); i++) {
-            Long dayworkId = dayworkIds.get(i);
-            BizDayworkItem bizDayworkItem = dayworkItemList.stream().filter(item -> item.getDayworkId().equals(dayworkId)).sorted(Comparator.comparing(BizDayworkItem::getCreateTime).reversed()).collect(Collectors.toList()).get(0);
-            if (bizDayworkItem.getIsWx() == 0) {
-                bizDayworkItem.setStatus("7");
-                needUpdateStatus.add(bizDayworkItem);
+        if (!dayworkIds.isEmpty()) {
+            List<Long> outsourcedDetailIds = outsourcedOrderDetails.stream().filter(item -> item.getProductionDeptId() == null || item.getProductionDeptId() == 0).map(BizOutsourcedOrderDetail::getId).collect(Collectors.toList());
+            List<Long> totalIds = new ArrayList<>();
+            totalIds.addAll(dayworkIds);
+            totalIds.addAll(oldOutsourcedOrderDetails.stream().filter(item -> item.getProductionDeptId() == null || item.getProductionDeptId() == 0).map(BizOutsourcedOrderDetail::getDayworkId).collect(Collectors.toList()));
+            List<BizDayworkItem> dayworkItemList = getListByDayworkIds(totalIds.stream().distinct().collect(Collectors.toList()));
+            //如果是新增的外协明细,则拿到报工信息最新一条,如果is_wx = 0,则吧状态置为7
+            List<BizDayworkItem> needUpdateStatus = new ArrayList<>();
+            for (int i = 0; i < dayworkIds.size(); i++) {
+                Long dayworkId = dayworkIds.get(i);
+                BizDayworkItem bizDayworkItem = dayworkItemList.stream().filter(item -> item.getDayworkId().equals(dayworkId)).sorted(Comparator.comparing(BizDayworkItem::getCreateTime).reversed()).collect(Collectors.toList()).get(0);
+                if (bizDayworkItem.getIsWx() == 0) {
+                    bizDayworkItem.setStatus("7");
+                    needUpdateStatus.add(bizDayworkItem);
+                }
             }
-        }
-        if (needUpdateStatus.size() > 0) {
-            updateBatchById(needUpdateStatus);
-        }
-        //判断dayworkItem需要删除、新增、修改
-        List<BizDayworkItem> needDeletedDayworkItem = new ArrayList<>();
-        List<BizDayworkItem> needAddedDayworkItem = new ArrayList<>();
-        List<BizDayworkItem> needUpdateDayworkItem = new ArrayList<>();
-        //通过明细id查到添加的dayworkItem
-        //通过外协发出单主表id查出原发出单的外协明细(页面删除外协明细)
-        List<Long> originalOutsourcedDetailIds = oldOutsourcedOrderDetails.stream().filter(item ->item.getProductionDeptId() ==null || item.getProductionDeptId() ==0).map(BizOutsourcedOrderDetail::getId).collect(Collectors.toList());
-        originalOutsourcedDetailIds.forEach(item ->{
-            //如果新的发出单明细没有不包含旧的,则查询出来dayworkItem然后删除
-            if (!outsourcedDetailIds.contains(item)){
-                needDeletedDayworkItem.addAll(dayworkItemList.stream().filter(info ->info.getOutsourceDetailId().equals(item)).collect(Collectors.toList()));
+            if (needUpdateStatus.size() > 0) {
+                updateBatchById(needUpdateStatus);
             }
-        });
-        outsourcedOrderDetails.stream().filter(item ->item.getProductionDeptId() ==null || item.getProductionDeptId() ==0).forEach(detail -> {
-            List<BizDayworkItem> originalDayworkItem = dayworkItemList.stream().filter(item -> item.getOutsourceDetailId().equals(detail.getId())).collect(Collectors.toList());
-            List<String> newProcessStepNumberList = detail.getProcesses().stream().map(BizOutsourcedOrderDetailProcess::getProcessStepNumber).collect(Collectors.toList());
-            //拿到最新的报工明细的工段
-            BizDayworkItem lastDayworkItem = dayworkItemList.stream().filter(item -> item.getDayworkId().equals(detail.getDayworkId())).sorted(Comparator.comparing(BizDayworkItem::getCreateTime).reversed()).collect(Collectors.toList()).get(0);
-            if(!originalDayworkItem.isEmpty()) {
-                //需要删除的报工明细
-                List<String> oldProcessStepNumberList = originalDayworkItem.stream().map(BizDayworkItem::getProcessStepNumber).collect(Collectors.toList());
-                originalDayworkItem.forEach(item ->{
-                        if(!newProcessStepNumberList.contains(item.getProcessStepNumber())) {
+            //判断dayworkItem需要删除、新增、修改
+            List<BizDayworkItem> needDeletedDayworkItem = new ArrayList<>();
+            List<BizDayworkItem> needAddedDayworkItem = new ArrayList<>();
+            List<BizDayworkItem> needUpdateDayworkItem = new ArrayList<>();
+            //通过明细id查到添加的dayworkItem
+            //通过外协发出单主表id查出原发出单的外协明细(页面删除外协明细)
+            List<Long> originalOutsourcedDetailIds = oldOutsourcedOrderDetails.stream().filter(item -> item.getProductionDeptId() == null || item.getProductionDeptId() == 0).map(BizOutsourcedOrderDetail::getId).collect(Collectors.toList());
+            originalOutsourcedDetailIds.forEach(item -> {
+                //如果新的发出单明细没有不包含旧的,则查询出来dayworkItem然后删除
+                if (!outsourcedDetailIds.contains(item)) {
+                    needDeletedDayworkItem.addAll(dayworkItemList.stream().filter(info -> info.getOutsourceDetailId().equals(item)).collect(Collectors.toList()));
+                }
+            });
+            outsourcedOrderDetails.stream().filter(item -> item.getProductionDeptId() == null || item.getProductionDeptId() == 0).forEach(detail -> {
+                List<BizDayworkItem> originalDayworkItem = dayworkItemList.stream().filter(item -> item.getOutsourceDetailId().equals(detail.getId())).collect(Collectors.toList());
+                List<String> newProcessStepNumberList = detail.getProcesses().stream().map(BizOutsourcedOrderDetailProcess::getProcessStepNumber).collect(Collectors.toList());
+                //拿到最新的报工明细的工段
+                BizDayworkItem lastDayworkItem = dayworkItemList.stream().filter(item -> item.getDayworkId().equals(detail.getDayworkId())).sorted(Comparator.comparing(BizDayworkItem::getCreateTime).reversed()).collect(Collectors.toList()).get(0);
+                if (!originalDayworkItem.isEmpty()) {
+                    //需要删除的报工明细
+                    List<String> oldProcessStepNumberList = originalDayworkItem.stream().map(BizDayworkItem::getProcessStepNumber).collect(Collectors.toList());
+                    originalDayworkItem.forEach(item -> {
+                        if (!newProcessStepNumberList.contains(item.getProcessStepNumber())) {
                             needDeletedDayworkItem.add(item);
                         }
                     });
-                //需要新增的报工明细
-                detail.getProcesses().forEach(process -> {
-                    //新的报工信息
-                    if(!oldProcessStepNumberList.contains(process.getProcessStepNumber())) {
+                    //需要新增的报工明细
+                    detail.getProcesses().forEach(process -> {
+                        //新的报工信息
+                        if (!oldProcessStepNumberList.contains(process.getProcessStepNumber())) {
+                            BizDayworkItem newBizDayworkItem = new BizDayworkItem();
+                            newBizDayworkItem.setDayworkId(detail.getDayworkId());
+                            newBizDayworkItem.setOutsourceDetailId(detail.getId());
+                            newBizDayworkItem.setLotId(detail.getLotId());
+                            newBizDayworkItem.setProcessId(process.getProcessId());
+                            newBizDayworkItem.setProcessStepNumber(process.getProcessStepNumber());
+                            newBizDayworkItem.setStatus("1");
+                            newBizDayworkItem.setProdNum(detail.getProductNum());
+                            newBizDayworkItem.setDeptId(lastDayworkItem.getDeptId());
+                            newBizDayworkItem.setDeptName(lastDayworkItem.getDeptName());
+                            newBizDayworkItem.setStartTime(new Date());
+                            newBizDayworkItem.setProductionPlanDetailId(lastDayworkItem.getProductionPlanDetailId());
+                            newBizDayworkItem.setTechnologicalProcessId(lastDayworkItem.getTechnologicalProcessId());
+                            newBizDayworkItem.setTechnologicalProcessDetailId(process.getTechnologicalProcessDetailId());
+                            newBizDayworkItem.setIsWx(1);
+                            needAddedDayworkItem.add(newBizDayworkItem);
+                        } else {
+                            //编辑报工信息
+                            BizDayworkItem newBizDayworkItem = new BizDayworkItem();
+                            newBizDayworkItem.setDayworkId(detail.getDayworkId());
+                            newBizDayworkItem.setOutsourceDetailId(detail.getId());
+                            newBizDayworkItem.setLotId(detail.getLotId());
+                            newBizDayworkItem.setProcessId(process.getProcessId());
+                            newBizDayworkItem.setProcessStepNumber(process.getProcessStepNumber());
+                            newBizDayworkItem.setStatus("1");
+                            newBizDayworkItem.setProdNum(detail.getProductNum());
+                            newBizDayworkItem.setDeptId(lastDayworkItem.getDeptId());
+                            newBizDayworkItem.setDeptName(lastDayworkItem.getDeptName());
+//                        newBizDayworkItem.setStartTime(new Date());
+                            newBizDayworkItem.setProductionPlanDetailId(lastDayworkItem.getProductionPlanDetailId());
+                            newBizDayworkItem.setTechnologicalProcessId(lastDayworkItem.getTechnologicalProcessId());
+                            newBizDayworkItem.setTechnologicalProcessDetailId(process.getTechnologicalProcessDetailId());
+                            newBizDayworkItem.setIsWx(1);
+                            needUpdateDayworkItem.add(newBizDayworkItem);
+                        }
+                    });
+                } else {
+                    //执行新增
+                    detail.getProcesses().forEach(process -> {
+                        //新的报工信息
                         BizDayworkItem newBizDayworkItem = new BizDayworkItem();
                         newBizDayworkItem.setDayworkId(detail.getDayworkId());
                         newBizDayworkItem.setOutsourceDetailId(detail.getId());
@@ -230,57 +271,18 @@ public class BizDayworkItemServiceImpl extends ServiceImpl<BizDayworkItemMapper,
                         newBizDayworkItem.setTechnologicalProcessDetailId(process.getTechnologicalProcessDetailId());
                         newBizDayworkItem.setIsWx(1);
                         needAddedDayworkItem.add(newBizDayworkItem);
-                    }else{
-                        //编辑报工信息
-                        BizDayworkItem newBizDayworkItem = new BizDayworkItem();
-                        newBizDayworkItem.setDayworkId(detail.getDayworkId());
-                        newBizDayworkItem.setOutsourceDetailId(detail.getId());
-                        newBizDayworkItem.setLotId(detail.getLotId());
-                        newBizDayworkItem.setProcessId(process.getProcessId());
-                        newBizDayworkItem.setProcessStepNumber(process.getProcessStepNumber());
-                        newBizDayworkItem.setStatus("1");
-                        newBizDayworkItem.setProdNum(detail.getProductNum());
-                        newBizDayworkItem.setDeptId(lastDayworkItem.getDeptId());
-                        newBizDayworkItem.setDeptName(lastDayworkItem.getDeptName());
-//                        newBizDayworkItem.setStartTime(new Date());
-                        newBizDayworkItem.setProductionPlanDetailId(lastDayworkItem.getProductionPlanDetailId());
-                        newBizDayworkItem.setTechnologicalProcessId(lastDayworkItem.getTechnologicalProcessId());
-                        newBizDayworkItem.setTechnologicalProcessDetailId(process.getTechnologicalProcessDetailId());
-                        newBizDayworkItem.setIsWx(1);
-                        needUpdateDayworkItem.add(newBizDayworkItem);
-                    }
-                });
-                }else{
-                //执行新增
-                detail.getProcesses().forEach(process -> {
-                    //新的报工信息
-                    BizDayworkItem newBizDayworkItem = new BizDayworkItem();
-                    newBizDayworkItem.setDayworkId(detail.getDayworkId());
-                    newBizDayworkItem.setOutsourceDetailId(detail.getId());
-                    newBizDayworkItem.setLotId(detail.getLotId());
-                    newBizDayworkItem.setProcessId(process.getProcessId());
-                    newBizDayworkItem.setProcessStepNumber(process.getProcessStepNumber());
-                    newBizDayworkItem.setStatus("1");
-                    newBizDayworkItem.setProdNum(detail.getProductNum());
-                    newBizDayworkItem.setDeptId(lastDayworkItem.getDeptId());
-                    newBizDayworkItem.setDeptName(lastDayworkItem.getDeptName());
-                    newBizDayworkItem.setStartTime(new Date());
-                    newBizDayworkItem.setProductionPlanDetailId(lastDayworkItem.getProductionPlanDetailId());
-                    newBizDayworkItem.setTechnologicalProcessId(lastDayworkItem.getTechnologicalProcessId());
-                    newBizDayworkItem.setTechnologicalProcessDetailId(process.getTechnologicalProcessDetailId());
-                    newBizDayworkItem.setIsWx(1);
-                    needAddedDayworkItem.add(newBizDayworkItem);
-                });
+                    });
+                }
+            });
+            if (!needDeletedDayworkItem.isEmpty()) {
+                removeBatchByIds(needDeletedDayworkItem);
+            }
+            if (!needAddedDayworkItem.isEmpty()) {
+                saveBatch(needAddedDayworkItem);
+            }
+            if (!needUpdateDayworkItem.isEmpty()) {
+                updateBatchById(needUpdateDayworkItem);
             }
-        });
-        if(!needDeletedDayworkItem.isEmpty()) {
-            removeBatchByIds(needDeletedDayworkItem);
-        }
-        if(!needAddedDayworkItem.isEmpty()){
-            saveBatch(needAddedDayworkItem);
-        }
-        if(!needUpdateDayworkItem.isEmpty()) {
-            updateBatchById(needUpdateDayworkItem);
         }
     }