|
@@ -79,6 +79,8 @@ public class BizLotController extends BaseController {
|
|
|
@Resource
|
|
|
private IBizProcessInspecionService bizProcessInspecionService;
|
|
|
@Resource
|
|
|
+ private IBizDayworkAuxiliaryItemService bizDayworkAuxiliaryItemsService;
|
|
|
+ @Resource
|
|
|
HttpServletRequest request;
|
|
|
|
|
|
/**
|
|
@@ -539,6 +541,8 @@ public class BizLotController extends BaseController {
|
|
|
turnitem.setDayworkId(newDaywork.getId());
|
|
|
turnitem.setLotId(l.getId());
|
|
|
turnitem.setId(null);
|
|
|
+ turnitem.setFromLotId(bizLot.getId());
|
|
|
+ turnitem.setIsSplitHistory(1);
|
|
|
newDaywork.setTemporaryProcessQualifiedNum(l.getQualifiedNum());
|
|
|
|
|
|
items.subList(1, items.size()).forEach(e -> {
|
|
@@ -581,6 +585,8 @@ public class BizLotController extends BaseController {
|
|
|
latestItem.setDayworkId(newDaywork.getId());
|
|
|
latestItem.setId(snowflakeIdWorker.nextId());
|
|
|
latestItem.setLotId(l.getId());
|
|
|
+ latestItem.setFromLotId(bizLot.getId());
|
|
|
+ latestItem.setIsSplitHistory(1);
|
|
|
if (latestItem.getStatus().equals("3")) {
|
|
|
newDaywork.setTemporaryProcessQualifiedNum(l.getQualifiedNum());
|
|
|
}
|
|
@@ -630,12 +636,16 @@ public class BizLotController extends BaseController {
|
|
|
if ("0".equals(latestItem.getStatus())) {
|
|
|
// 假设最新报工是状态未开始开始的产品数量
|
|
|
latestItem.setProdNum(l.getLotNumber());
|
|
|
+ latestItem.setIsSplitHistory(1);
|
|
|
+ latestItem.setFromLotId(latestItem.getFromLotId().equals(0L) ? bizLot.getId(): latestItem.getFromLotId());
|
|
|
bizDayworkItems.add(latestItem);
|
|
|
} else if (Arrays.asList("4", "5", "7").contains(latestItem.getStatus())) {
|
|
|
// 假设最新是周转,只改周转数量
|
|
|
latestItem.setProdNum(l.getQualifiedNum());
|
|
|
bizDaywork.setTemporaryProcessQualifiedNum(l.getQualifiedNum());
|
|
|
latestItem.setQualifiedNum(l.getQualifiedNum());
|
|
|
+ latestItem.setIsSplitHistory(1);
|
|
|
+ latestItem.setFromLotId(latestItem.getFromLotId().equals(0L) ? bizLot.getId(): latestItem.getFromLotId());
|
|
|
if (latestItem.getStatus().equals("3")) {
|
|
|
bizDaywork.setTemporaryProcessQualifiedNum(l.getQualifiedNum());
|
|
|
}
|
|
@@ -643,14 +653,22 @@ public class BizLotController extends BaseController {
|
|
|
} else {
|
|
|
// 删除多的报工,只保留第一条并将状态改成最大的状态。
|
|
|
List<BizDayworkItem> currentItems = baseDayworkItems.stream().filter(v -> v.getTechnologicalProcessDetailId().equals(latestItem.getTechnologicalProcessDetailId())).sorted(Comparator.comparing(BizDayworkItem::getCreateTime)).collect(Collectors.toList());
|
|
|
+ currentItems.forEach(v -> {
|
|
|
+ v.setIsSplitHistory(1);
|
|
|
+ v.setFromLotId(v.getFromLotId().equals(0L) ? bizLot.getId(): v.getFromLotId());
|
|
|
+ });
|
|
|
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()));
|
|
|
}
|
|
|
+ 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());
|
|
|
+ historyDayworkItem.forEach(v -> {
|
|
|
+ v.setIsSplitHistory(1);
|
|
|
+ v.setFromLotId(v.getFromLotId().equals(0L) ? bizLot.getId(): v.getFromLotId());
|
|
|
+ });
|
|
|
}
|
|
|
});
|
|
|
}
|
|
@@ -693,23 +711,29 @@ public class BizLotController extends BaseController {
|
|
|
lotIds.add(fromLot.getId());
|
|
|
// 判断分批之后有没有新报工/新发出单/新质检 假设有则不能修改
|
|
|
// 判断分批后是否重新绑定载具 重新绑定载具就不能还原
|
|
|
+ // 判断分批后有辅助报工 有则无法还原
|
|
|
List<BizDaywork> bizDayworks = bizDayworkService.query().in("lot_id", lotIds).list();
|
|
|
List<BizDayworkItem> bizDayworkItems = bizDayworkItemService.query().in("daywork_id", bizDayworks.isEmpty() ? Collections.singletonList(0L) : bizDayworks.stream().map(BizDaywork::getId).collect(Collectors.toList())).list();
|
|
|
- if (bizDayworkItems.stream().anyMatch(v -> v.getIsSplitHistory().equals(0))) {
|
|
|
+ Date splitDate = bizLotList.stream().max(Comparator.comparing(BizLot::getCreateTime)).orElse(new BizLot()).getCreateTime();
|
|
|
+ if (bizDayworkItems.stream().anyMatch(v -> v.getIsSplitHistory().equals(0)) || bizDayworkItems.stream().anyMatch(v -> v.getUpdateTime() != null && v.getUpdateTime().compareTo(splitDate) > 0)) {
|
|
|
return error("分批后有新报工,无法退回");
|
|
|
}
|
|
|
- Date splitDate = bizLotList.stream().max(Comparator.comparing(BizLot::getCreateTime)).get().getCreateTime();
|
|
|
List<BizProcessInspecion> bizProcessInspecions = bizProcessInspecionService.query().in("daywork_id", bizDayworks.isEmpty() ? Collections.singletonList(0L) : bizDayworks.stream().map(BizDaywork::getId).collect(Collectors.toList())).list();
|
|
|
if (bizProcessInspecions.stream().anyMatch(v -> v.getCreateTime().compareTo(splitDate) > 0)) {
|
|
|
return error("分批之后有新质检,无法退回");
|
|
|
}
|
|
|
List<BizDayworkCarrier> bizDayworkCarriers = dayworkCarrierService.query().in("daywork_id", bizDayworks.isEmpty() ? Collections.singletonList(0L) : bizDayworks.stream().map(BizDaywork::getId).collect(Collectors.toList())).eq("is_changed", 0).list();
|
|
|
if (bizDayworkCarriers.stream().anyMatch(v -> v.getCreateTime().compareTo(splitDate) > 0)) {
|
|
|
- return error("分批之后重新绑定了载具无法退回");
|
|
|
+ return error("分批之后重新绑定了载具,无法退回");
|
|
|
+ }
|
|
|
+ // 判断是否有新的辅助报工
|
|
|
+ List<BizDayworkAuxiliaryItem> bizDayworkAuxiliaryItems = bizDayworkAuxiliaryItemsService.query().in("daywork_id", bizDayworks.isEmpty() ? Collections.singletonList(0L) : bizDayworks.stream().map(BizDaywork::getId).collect(Collectors.toList())).list();
|
|
|
+ if (bizDayworkAuxiliaryItems.stream().anyMatch(v -> v.getCreateTime().compareTo(splitDate) > 0 || v.getUpdateTime().compareTo(splitDate) > 0)) {
|
|
|
+ return error("分批之后修改了辅助报工,无法退回");
|
|
|
}
|
|
|
// 以上检测都通过则返回可以退回的批次列表
|
|
|
bizLotList.add(fromLot);
|
|
|
- return success(bizLot);
|
|
|
+ return success(bizLotList);
|
|
|
}
|
|
|
|
|
|
@Log(title = "还原分批", businessType = BusinessType.UPDATE)
|
|
@@ -726,32 +750,54 @@ public class BizLotController extends BaseController {
|
|
|
if (fromBizLot == null) {
|
|
|
return error("未查询到母批次,请联系管理员");
|
|
|
}
|
|
|
- BizDaywork fromDaywork = bizDayworks.stream().filter(v -> v.getLotId().equals(fromBizLot.getId())).findFirst().orElse(null);
|
|
|
- if (fromDaywork == null) {
|
|
|
- return error("未查到母批次报工,请联系管理员");
|
|
|
- }
|
|
|
- List<BizDayworkItem> fromDayworkItems = bizDayworkItems.stream().filter(v -> v.getDayworkId().equals(fromDaywork.getId())).sorted(Comparator.comparing(BizDayworkItem::getCreateTime)).collect(Collectors.toList());
|
|
|
- List<BizDayworkCarrier> fromDayworkCarriers = bizDayworkCarriers.stream().filter(v -> v.getDayworkId().equals(fromDaywork.getId())).collect(Collectors.toList());
|
|
|
- List<BizQuickDayworkNextInfo> fromQuickInfo = bizQuickDayworkNextInfos.stream().filter(v -> fromDayworkItems.stream().anyMatch(t -> t.getId().equals(v.getDayworkItemId()))).collect(Collectors.toList());
|
|
|
fromBizLot.setSplitCount(fromBizLot.getSplitCount() - 1);
|
|
|
fromBizLot.setProductionQuantity(bizLotList.stream().mapToInt(BizLot::getProductionQuantity).sum());
|
|
|
- // 删除子批次
|
|
|
List<BizLot> childLot = bizLotList.stream().filter(v -> !v.getId().equals(fromBizLot.getId())).collect(Collectors.toList());
|
|
|
List<BizDaywork> childDaywork = bizDayworks.stream().filter(v -> childLot.stream().anyMatch(e -> e.getId().equals(v.getLotId()))).collect(Collectors.toList());
|
|
|
List<BizDayworkItem> childDayworkItems = bizDayworkItems.stream().filter(v -> childDaywork.stream().anyMatch(e -> e.getId().equals(v.getDayworkId()))).collect(Collectors.toList());
|
|
|
- List<BizDayworkCarrier> childCarrierList = bizDayworkCarriers.stream().filter(v -> childDaywork.stream().allMatch(e-> e.getId().equals(v.getDayworkId()))).collect(Collectors.toList());
|
|
|
+ List<BizDayworkItem> childLatest = new ArrayList<>();
|
|
|
+ childDaywork.forEach(l -> {
|
|
|
+ List<BizDayworkItem> items = childDayworkItems.stream().filter(v -> v.getDayworkId().equals(l.getId())).sorted(Comparator.comparing(BizDayworkItem::getCreateTime).reversed()).collect(Collectors.toList());
|
|
|
+ if (!items.isEmpty()) {
|
|
|
+ childLatest.add(items.get(0));
|
|
|
+ }
|
|
|
+ });
|
|
|
+ List<BizDayworkCarrier> childCarrierList = bizDayworkCarriers.stream().filter(v -> childDaywork.stream().allMatch(e -> e.getId().equals(v.getDayworkId()))).collect(Collectors.toList());
|
|
|
List<BizQuickDayworkNextInfo> childQuickItem = bizQuickDayworkNextInfos.stream().filter(v -> childDayworkItems.stream().anyMatch(t -> t.getId().equals(v.getDayworkItemId()))).collect(Collectors.toList());
|
|
|
List<BizFurnaceNoInfo> childFurnaceNoInfo = bizFurnaceNoInfos.stream().filter(v -> childDaywork.stream().anyMatch(t -> t.getId().equals(v.getDayworkId()))).collect(Collectors.toList());
|
|
|
- // 将母批次的最新报工明细中的合格数改为总合格数
|
|
|
-// fromDaywork.set
|
|
|
-
|
|
|
// 将母批次的报工投产数量改为总的报工投产数量
|
|
|
+ BizDaywork fromDaywork = bizDayworks.stream().filter(v -> v.getLotId().equals(fromBizLot.getId())).findFirst().orElse(null);
|
|
|
+ if (fromDaywork == null) {
|
|
|
+ return error("未查到母批次报工,请联系管理员");
|
|
|
+ }
|
|
|
+// fromDaywork.setProductionQuantity(bizDayworks.stream().mapToInt(BizDaywork::getProductionQuantity).sum());
|
|
|
+ fromDaywork.setProcessQualifiedNum(bizDayworks.stream().mapToInt(BizDaywork::getProcessQualifiedNum).sum());
|
|
|
+ fromDaywork.setTemporaryProcessQualifiedNum(bizDayworks.stream().mapToInt(BizDaywork::getTemporaryProcessQualifiedNum).sum());
|
|
|
+ // 将母批次的最新报工明细中的合格数改为总合格数
|
|
|
+ List<BizDayworkItem> fromDayworkItems = bizDayworkItems.stream().filter(v -> v.getDayworkId().equals(fromDaywork.getId())).sorted(Comparator.comparing(BizDayworkItem::getCreateTime)).collect(Collectors.toList());
|
|
|
+ // 获取最新一条报工然后合并prodNum和qualityNumber
|
|
|
+ BizDayworkItem latestItem = fromDayworkItems.isEmpty() ? null : fromDayworkItems.get(0);
|
|
|
+ List<BizDayworkCarrier> fromDayworkCarriers = bizDayworkCarriers.stream().filter(v -> v.getDayworkId().equals(fromDaywork.getId())).collect(Collectors.toList());
|
|
|
+ List<BizQuickDayworkNextInfo> fromQuickInfo = bizQuickDayworkNextInfos.stream().filter(v -> fromDayworkItems.stream().anyMatch(t -> t.getId().equals(v.getDayworkItemId()))).collect(Collectors.toList());
|
|
|
+ if (latestItem != null) {
|
|
|
+ latestItem.setProdNum(latestItem.getProdNum() + childLatest.stream().mapToInt(BizDayworkItem::getProdNum).sum());
|
|
|
+ latestItem.setQualifiedNum(latestItem.getQualifiedNum() + childLatest.stream().mapToInt(BizDayworkItem::getQualifiedNum).sum());
|
|
|
+ }
|
|
|
+ bizLotService.updateById(fromBizLot);
|
|
|
+ bizDayworkService.updateById(fromDaywork);
|
|
|
+ bizDayworkItemService.updateById(latestItem);
|
|
|
+ // 删除子批次
|
|
|
+ bizLotService.removeBatchByIds(childLot);
|
|
|
// 删除子批次的报工
|
|
|
+ bizDayworkService.removeBatchByIds(childDaywork);
|
|
|
// 删除子批次的报工明细
|
|
|
+ bizDayworkItemService.removeBatchByIds(childDayworkItems);
|
|
|
// 删除子批次快速报工记录
|
|
|
+ bizQuickDayworkNextInfoService.removeBatchByIds(childQuickItem);
|
|
|
// 删除子批次绑定的载具
|
|
|
+ dayworkCarrierService.removeBatchByIds(childCarrierList);
|
|
|
// 删除子批次的炉号
|
|
|
-
|
|
|
+ bizFurnaceNoInfoService.removeBatchByIds(childFurnaceNoInfo);
|
|
|
return success();
|
|
|
}
|
|
|
}
|