ezhizao_zx 1 жил өмнө
parent
commit
514a2a92bc

+ 1 - 1
src/main/java/cn/ezhizao/project/business/controller/BizCarrierController.java

@@ -30,7 +30,7 @@ public class BizCarrierController extends BaseController {
 
 
     @GetMapping("/list")
     @GetMapping("/list")
     public TableDataInfo list(BizCarrier data) throws NoSuchFieldException, IllegalAccessException, JsonProcessingException {
     public TableDataInfo list(BizCarrier data) throws NoSuchFieldException, IllegalAccessException, JsonProcessingException {
-//        startPage();
+        startPage();
         List<BizCarrier> list = iBizCarrierService.getList(data);
         List<BizCarrier> list = iBizCarrierService.getList(data);
         return getDataTable(list);
         return getDataTable(list);
     }
     }

+ 81 - 27
src/main/java/cn/ezhizao/project/business/controller/BizLotController.java

@@ -15,6 +15,8 @@ import cn.ezhizao.framework.web.domain.AjaxResult;
 import cn.ezhizao.framework.web.page.TableDataInfo;
 import cn.ezhizao.framework.web.page.TableDataInfo;
 import cn.ezhizao.project.business.domain.*;
 import cn.ezhizao.project.business.domain.*;
 import cn.ezhizao.project.business.service.*;
 import cn.ezhizao.project.business.service.*;
+import cn.ezhizao.project.system.domain.SysDept;
+import cn.ezhizao.project.system.mapper.SysDeptMapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.transaction.annotation.Transactional;
@@ -69,6 +71,8 @@ public class BizLotController extends BaseController
     IBizDayworkCarrierService dayworkCarrierService;
     IBizDayworkCarrierService dayworkCarrierService;
     @Resource
     @Resource
     IBizCarrierService carrierService;
     IBizCarrierService carrierService;
+    @Resource
+    SysDeptMapper deptMapper;
 
 
     @Resource
     @Resource
     private IBizCarrierCategoryService bizCarrierCategoryService;
     private IBizCarrierCategoryService bizCarrierCategoryService;
@@ -309,17 +313,20 @@ public class BizLotController extends BaseController
         lot.setProductCode(product.getProductCode());
         lot.setProductCode(product.getProductCode());
         lot.setProductDescription(product.getDescription());
         lot.setProductDescription(product.getDescription());
         // 计划单号
         // 计划单号
-        BizProductionPlanDetail productionPlanDetail = bizProductionPlanDetailService.getById(lot.getProductionPlanDetailId());
-        lot.setProductionPlanNo(productionPlanDetail.getProductionPlanNo());
-        // 下达日期
-        lot.setIssueDate(productionPlanDetail.getIssueDate());
+        if (lot.getProductionPlanDetailId() != null) {
+            BizProductionPlanDetail productionPlanDetail = bizProductionPlanDetailService.getById(lot.getProductionPlanDetailId());
+            lot.setProductionPlanNo(productionPlanDetail.getProductionPlanNo());
+            // 下达日期
+            lot.setIssueDate(productionPlanDetail.getIssueDate());
+        }
         // 当前工段
         // 当前工段
         BizDaywork bizDaywork = bizDayworkService.query().eq("lot_id", bizLot.getId()).one();
         BizDaywork bizDaywork = bizDayworkService.query().eq("lot_id", bizLot.getId()).one();
         BizDayworkItem conditions = new BizDayworkItem();
         BizDayworkItem conditions = new BizDayworkItem();
         conditions.setLotId(lot.getId());
         conditions.setLotId(lot.getId());
         List<BizDayworkItem> dayworkItemList = bizDayworkItemService.getList(conditions);
         List<BizDayworkItem> dayworkItemList = bizDayworkItemService.getList(conditions);
         BizDayworkItem dayworkItem = dayworkItemList.stream().sorted(Comparator.comparing(BizDayworkItem::getCreateTime).reversed()).collect(Collectors.toList()).stream().findFirst().orElse(new BizDayworkItem());
         BizDayworkItem dayworkItem = dayworkItemList.stream().sorted(Comparator.comparing(BizDayworkItem::getCreateTime).reversed()).collect(Collectors.toList()).stream().findFirst().orElse(new BizDayworkItem());
-        lot.setCurrentDept(dayworkItem.getDeptName());
+        SysDept dept = deptMapper.selectDeptById(dayworkItem.getDeptId());
+        lot.setCurrentDept(dept!= null ? dept.getDeptName() : null);
         // 当前批次对应箱号
         // 当前批次对应箱号
         List<BizDayworkCarrier> dayworkCarriers = dayworkCarrierService.query().in("daywork_id", dayworkItemList.isEmpty() ? Collections.singletonList("0") : dayworkItemList.stream().map(v -> v.getDayworkId()).collect(Collectors.toList())).eq("is_changed", 0).list();
         List<BizDayworkCarrier> dayworkCarriers = dayworkCarrierService.query().in("daywork_id", dayworkItemList.isEmpty() ? Collections.singletonList("0") : dayworkItemList.stream().map(v -> v.getDayworkId()).collect(Collectors.toList())).eq("is_changed", 0).list();
         List<BizCarrier> carriers = new ArrayList<>();
         List<BizCarrier> carriers = new ArrayList<>();
@@ -357,9 +364,10 @@ public class BizLotController extends BaseController
         List<BizDaywork> bizDayworks = new ArrayList<>();
         List<BizDaywork> bizDayworks = new ArrayList<>();
         List<BizDayworkItem> bizDayworkItems = new ArrayList<>();
         List<BizDayworkItem> bizDayworkItems = new ArrayList<>();
         List<BizDayworkCarrier> newDayworkCarriers = new ArrayList<>();
         List<BizDayworkCarrier> newDayworkCarriers = new ArrayList<>();
+        List<BizDayworkItem> delDayworkItems = new ArrayList<>();
         // 判断绑定箱是否重复
         // 判断绑定箱是否重复
         List<Long> carrierIds = new ArrayList<>();
         List<Long> carrierIds = new ArrayList<>();
-        sparateList.stream().filter(v -> !v.getId().equals(bizLot.getId())).forEach(x -> carrierIds.addAll(x.getCarriers().stream().map(BizCarrier::getId).collect(Collectors.toList())));
+        sparateList.stream().filter(v -> !bizLot.getId().equals(v.getId())).forEach(x -> carrierIds.addAll(x.getCarriers().stream().map(BizCarrier::getId).collect(Collectors.toList())));
         List<BizCarrier> carriers = carrierService.query().in("id", carrierIds.isEmpty() ? Collections.singletonList("0"): carrierIds).list();
         List<BizCarrier> carriers = carrierService.query().in("id", carrierIds.isEmpty() ? Collections.singletonList("0"): carrierIds).list();
         List<BizDayworkCarrier> dayworkCarriers = dayworkCarrierService.query().in("carrier_id", carrierIds.isEmpty() ? Collections.singletonList("0"): carrierIds).eq("is_changed", 0).list();
         List<BizDayworkCarrier> dayworkCarriers = dayworkCarrierService.query().in("carrier_id", carrierIds.isEmpty() ? Collections.singletonList("0"): carrierIds).eq("is_changed", 0).list();
 
 
@@ -377,31 +385,56 @@ public class BizLotController extends BaseController
         List<BizDayworkItem> baseDayworkItems = bizDayworkItemService.getList(new BizDayworkItem().setLotId(bizLot.getId()));
         List<BizDayworkItem> baseDayworkItems = bizDayworkItemService.getList(new BizDayworkItem().setLotId(bizLot.getId()));
         if (baseDayworks.size() > 0) {
         if (baseDayworks.size() > 0) {
             sparateList.forEach(l -> {
             sparateList.forEach(l -> {
+                l.setQualifiedNum(l.getLotNumber());
                 if (l.getId() == null) {
                 if (l.getId() == null) {
+                    l.setId(snowflakeIdWorker.nextId());
                     // 分批复制报工详情
                     // 分批复制报工详情
                     List<BizDaywork> newDayworks = new ArrayList<>();
                     List<BizDaywork> newDayworks = new ArrayList<>();
                     baseDayworks.forEach(v -> {
                     baseDayworks.forEach(v -> {
                         BizDaywork newDaywork = new BizDaywork(v);
                         BizDaywork newDaywork = new BizDaywork(v);
-                        v.setId(snowflakeIdWorker.nextId());
-                        v.setProcessQualifiedNum(l.getProdNum());
-                        newDaywork.setProcessQualifiedNum(l.getProdNum());
+                        newDaywork.setId(snowflakeIdWorker.nextId());
+                        newDaywork.setProcessQualifiedNum(l.getLotNumber());
+                        newDaywork.setTemporaryProcessQualifiedNum(l.getLotNumber());
+                        newDaywork.setId(snowflakeIdWorker.nextId());
+                        newDaywork.setLotId(l.getId());
                         List<BizDayworkItem> items = baseDayworkItems.stream().filter(e -> e.getDayworkId().equals(v.getId())).sorted(Comparator.comparing(BizDayworkItem::getCreateTime).reversed()).collect(Collectors.toList());
                         List<BizDayworkItem> items = baseDayworkItems.stream().filter(e -> e.getDayworkId().equals(v.getId())).sorted(Comparator.comparing(BizDayworkItem::getCreateTime).reversed()).collect(Collectors.toList());
                         // 最后一个报工是周转 修改周转数量为分批数
                         // 最后一个报工是周转 修改周转数量为分批数
                         if(items.size() > 0 && Arrays.asList("4", "7", "5").contains( items.get(0).getStatus())) {
                         if(items.size() > 0 && Arrays.asList("4", "7", "5").contains( items.get(0).getStatus())) {
-                            BizDayworkItem item = new BizDayworkItem(items.get(0));
-                            item.setProdNum(l.getProdNum());
-                            item.setQualifiedNum(l.getProdNum());
-                            item.setDayworkId(newDaywork.getId());
-                            item.setId(null);
-                            bizDayworkItems.add(item);
+                            BizDayworkItem turnitem = new BizDayworkItem(items.get(0));
+                            turnitem.setProdNum(l.getLotNumber());
+                            turnitem.setQualifiedNum(l.getQualifiedNum());
+                            turnitem.setDayworkId(newDaywork.getId());
+                            turnitem.setLotId(l.getId());
+                            turnitem.setId(null);
+                            bizDayworkItems.add(turnitem);
+                            items.subList(1, items.size()).forEach(e -> {
+                                BizDayworkItem item = new BizDayworkItem(e);
+                                item.setDayworkId(newDaywork.getId());
+                                item.setLotId(l.getId());
+                                item.setId(null);
+                                bizDayworkItems.add(item);
+                            });
+                        } else {
+                            // 最后一个报工不是周转
+                            // 获取最后一个报工工序的第一个报工,删除其他然后修改状态为最大的那个
+                            List<BizDayworkItem> currentItems = items.stream().filter(e -> e.getTechnologicalProcessDetailId().equals(items.get(0).getTechnologicalProcessDetailId())).sorted(Comparator.comparing(BizDayworkItem::getCreateTime)).collect(Collectors.toList());
+                            List<BizDayworkItem> copyItems = items.stream().filter(e -> currentItems.stream().noneMatch(t -> t.getId().equals(e.getId()))).collect(Collectors.toList());
+                            copyItems.forEach(e -> {
+                                BizDayworkItem item = new BizDayworkItem(e);
+                                item.setDayworkId(newDaywork.getId());
+                                item.setLotId(l.getId());
+                                item.setId(null);
+                                bizDayworkItems.add(item);
+                            });
+                            BizDayworkItem latestItem = currentItems.get(0);
+                            latestItem.setStatus(currentItems.stream().max(Comparator.comparing(BizDayworkItem::getStatus)).orElse(new BizDayworkItem()).getStatus());
+                            latestItem.setProdNum(l.getLotNumber());
+                            latestItem.setQualifiedNum(l.getQualifiedNum());
+                            latestItem.setDayworkId(newDaywork.getId());
+                            latestItem.setId(null);
+                            latestItem.setLotId(l.getId());
+                            bizDayworkItems.add(latestItem);
                         }
                         }
-                        // 最后一个报工不是周转
-                        items.subList(1, items.size()).forEach(e -> {
-                            BizDayworkItem item = new BizDayworkItem(e);
-                            item.setDayworkId(newDaywork.getId());
-                            item.setId(null);
-                            bizDayworkItems.add(item);
-                        });
                         // 判断最后一个报工是那种情况
                         // 判断最后一个报工是那种情况
                         newDayworks.add(newDaywork);
                         newDayworks.add(newDaywork);
                         // 关联载具
                         // 关联载具
@@ -422,16 +455,35 @@ public class BizLotController extends BaseController
                     });
                     });
                     bizDayworks.addAll(newDayworks);
                     bizDayworks.addAll(newDayworks);
                 } else {
                 } else {
+                    BizDaywork bizDaywork = baseDayworks.isEmpty() ? null : baseDayworks.get(0);
+                    if (bizDaywork != null) {
+                        bizDaywork.setProductionQuantity(l.getLotNumber());
+                        bizDaywork.setProcessQualifiedNum(l.getLotNumber());
+                        bizDaywork.setTemporaryProcessQualifiedNum(l.getLotNumber());
+                        bizDayworks.add(bizDaywork);
+                    }
                     // 本批将当前报工数量改成分批后的数量
                     // 本批将当前报工数量改成分批后的数量
                     // 获取最新报工信息
                     // 获取最新报工信息
-                    BizDayworkItem latestItem = baseDayworkItems.stream().filter(v -> v.getDayworkId().equals(l.getId())).max(Comparator.comparing(BizDayworkItem::getCreateTime)).orElse(new BizDayworkItem());
-                    // 假设最新报工是状态未开始开始的产品数量
+                    BizDayworkItem latestItem = baseDayworkItems.stream().filter(v -> v.getDayworkId().equals(baseDayworks.get(0).getId())).max(Comparator.comparing(BizDayworkItem::getCreateTime)).orElse(new BizDayworkItem());
                     if ("0".equals(latestItem.getStatus())) {
                     if ("0".equals(latestItem.getStatus())) {
-                        latestItem.setProdNum(l.getProdNum());
+                        // 假设最新报工是状态未开始开始的产品数量
+                        latestItem.setProdNum(l.getLotNumber());
+                        bizDayworkItems.add(latestItem);
                     } else if (Arrays.asList("4", "5", "7").contains(latestItem.getStatus())) {
                     } else if (Arrays.asList("4", "5", "7").contains(latestItem.getStatus())) {
-                        latestItem.setProdNum(l.getProdNum());
+                        // 假设最新是周转,只改周转数量
+                        latestItem.setProdNum(l.getLotNumber());
+                        latestItem.setQualifiedNum(l.getLotNumber());
+                        bizDayworkItems.add(latestItem);
+                    } else {
+                        // 删除多的报工,只保留第一条并将状态改成最大的状态。
+                        List<BizDayworkItem> currentItems = baseDayworkItems.stream().filter(v -> v.getTechnologicalProcessDetailId().equals(latestItem.getTechnologicalProcessId())).sorted(Comparator.comparing(BizDayworkItem::getCreateTime)).collect(Collectors.toList());
+                        BizDayworkItem updateItem = currentItems.get(0);
+                        updateItem.setStatus(currentItems.stream().max(Comparator.comparing(BizDayworkItem::getStatus)).orElse(new BizDayworkItem()).getStatus());
+                        updateItem.setProdNum(l.getLotNumber());
+                        updateItem.setQualifiedNum(l.getQualifiedNum());
+                        bizDayworkItems.add(updateItem);
+                        delDayworkItems.addAll(currentItems.stream().filter(e -> currentItems.stream().noneMatch(t -> t.getId().equals(e.getId()))).collect(Collectors.toList()));
                     }
                     }
-                    // 假设最新是周转,只改周转数量
                 }
                 }
             });
             });
         }
         }
@@ -439,8 +491,10 @@ public class BizLotController extends BaseController
         return toAjax(
         return toAjax(
                 bizLotService.saveOrUpdateBatch(sparateList) &&
                 bizLotService.saveOrUpdateBatch(sparateList) &&
                         (bizDayworks.isEmpty() || bizDayworkService.saveOrUpdateBatch(bizDayworks)) &&
                         (bizDayworks.isEmpty() || bizDayworkService.saveOrUpdateBatch(bizDayworks)) &&
+                        (delDayworkItems.isEmpty() || bizDayworkItemService.removeBatchByIds(delDayworkItems)) &&
                         (bizDayworkItems.isEmpty() || bizDayworkItemService.saveOrUpdateBatch(bizDayworkItems)) &&
                         (bizDayworkItems.isEmpty() || bizDayworkItemService.saveOrUpdateBatch(bizDayworkItems)) &&
                         (newDayworkCarriers.isEmpty() || dayworkCarrierService.saveBatch(newDayworkCarriers))
                         (newDayworkCarriers.isEmpty() || dayworkCarrierService.saveBatch(newDayworkCarriers))
         );
         );
+//        return toAjax(true);
     }
     }
 }
 }

+ 3 - 0
src/main/java/cn/ezhizao/project/business/domain/BizLot.java

@@ -200,4 +200,7 @@ public class BizLot extends BaseEntity {
     @TableField(exist = false)
     @TableField(exist = false)
     private String latestLotCode;
     private String latestLotCode;
 
 
+    @TableField(exist = false)
+    private Integer lotNumber;
+
 }
 }