mirror of
http://192.168.1.205:9980/cf_devdept2/cf_imes_server.git
synced 2026-08-12 21:02:08 +08:00
排单加工方案切换逻辑更改
This commit is contained in:
+3
@@ -111,6 +111,7 @@ public class OrderController {
|
||||
|
||||
public static final String ORDER_PLATE_MODEL = "imes_order_plate_model";
|
||||
public static final String ORDER_PLATE_MODEL_COMPRESS = "imes_order_plate_model_compress";
|
||||
public static final String ORDER_PARTS_REMARK_MODEL = "imes_order_parts_remark_model";
|
||||
@PutMapping("/update")
|
||||
@Operation(summary = "更新生产单")
|
||||
@PreAuthorize("@ss.hasPermission('production:manager-list:edit')")
|
||||
@@ -231,6 +232,7 @@ public class OrderController {
|
||||
if (orderDO == null) {
|
||||
orderInputProcessor.deleteByOrderId(orderId, ORDER_PLATE_MODEL);
|
||||
orderInputProcessor.deleteByOrderId(orderId, ORDER_PLATE_MODEL_COMPRESS);
|
||||
orderInputProcessor.deleteByOrderId(orderId, ORDER_PARTS_REMARK_MODEL);
|
||||
}
|
||||
|
||||
Throwable cause = e.getCause();
|
||||
@@ -380,6 +382,7 @@ public class OrderController {
|
||||
Long deleteOrderId = orderDO.getId();
|
||||
orderInputProcessor.deleteByOrderId(deleteOrderId, ORDER_PLATE_MODEL);
|
||||
orderInputProcessor.deleteByOrderId(deleteOrderId, ORDER_PLATE_MODEL_COMPRESS);
|
||||
orderInputProcessor.deleteByOrderId(deleteOrderId, ORDER_PARTS_REMARK_MODEL);
|
||||
}
|
||||
|
||||
} finally {
|
||||
|
||||
+133
-66
@@ -673,7 +673,7 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
|
||||
|
||||
List<OptimizeBoardModelDO> optimizeBoardModelDOS = esUtils.getEsDocument(FIELD_PLAN_CONFIG_ID,FIELD_PLAN_ID,req.getPlanConfigId(), planId, ORDER_OPTIMIZE_PLATE_MODEL, OptimizeBoardModelDO.class);
|
||||
|
||||
List<Boolean> isLocks = new ArrayList<>();
|
||||
// List<Boolean> isLocks = new ArrayList<>();
|
||||
|
||||
// 查询原优化信息然后进行判断
|
||||
if(CollUtil.isNotEmpty(optimizeBoardModelDOS)){
|
||||
@@ -682,7 +682,7 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
|
||||
throw exception(THIS_PLAN_OPTIMIZE_DATA_ERROR);
|
||||
}
|
||||
|
||||
isLocks.addAll(optimizeBoardModelDOS.stream().map(OptimizeBoardModelDO::getIsLock).distinct().toList());
|
||||
// isLocks.addAll(optimizeBoardModelDOS.stream().map(OptimizeBoardModelDO::getIsLock).distinct().toList());
|
||||
|
||||
OptimizeBoardModelDO optimizeBoardModelDO = optimizeBoardModelDOS.get(0);
|
||||
|
||||
@@ -697,30 +697,30 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
|
||||
throw exception(THIS_PLAN_OPTIMIZE_IS_LOCK);
|
||||
}
|
||||
|
||||
esUtils.deleteEsDocument(FIELD_PLAN_ID,FIELD_PLAN_CONFIG_ID,planId,req.getPlanConfigId(),ORDER_OPTIMIZE_PLATE_MODEL);
|
||||
|
||||
}
|
||||
|
||||
|
||||
List<PlateDO> plateDOS = planItemMapper.selectOrderPlanPlateListByPlanId(planId,getUserOrganId());
|
||||
|
||||
AssertUtils.notEmpty(plateDOS,THIS_PLAN_PLATE_DATA_ERROR);
|
||||
if(CollUtil.isNotEmpty(plateDOS)) {
|
||||
|
||||
|
||||
if(processId != null && !planDO.getProcessId().equals(processId)) {
|
||||
|
||||
validatePlanStatus(planDO,isLocks);
|
||||
|
||||
planMapper.updateById(planDO.setProcessId(processId));
|
||||
|
||||
}
|
||||
|
||||
|
||||
plateDOS.forEach(f->{
|
||||
plateDOS.forEach(f -> {
|
||||
f.setIsOptimized(true);
|
||||
});
|
||||
|
||||
plateMapper.updateBatch(plateDOS);
|
||||
}
|
||||
|
||||
// 这个逻辑暂时先不用,等后面方案组逻辑完善后可加入
|
||||
// if(processId != null && !planDO.getProcessId().equals(processId)) {
|
||||
//
|
||||
// validatePlanStatus(planDO,isLocks);
|
||||
//
|
||||
// planMapper.updateById(planDO.setProcessId(processId));
|
||||
//
|
||||
// }
|
||||
|
||||
esUtils.deleteEsDocument(FIELD_PLAN_ID,FIELD_PLAN_CONFIG_ID,planId,req.getPlanConfigId(),ORDER_OPTIMIZE_PLATE_MODEL);
|
||||
|
||||
// 保存优化后的大板数据
|
||||
esUtils.saveEsDocument(ORDER_OPTIMIZE_PLATE_MODEL,req.getOptimizeBoardModelDOS());
|
||||
@@ -741,66 +741,106 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
|
||||
|
||||
List<SaveProcessSchemeModelDO> modelDOList = saveProcessSchemeReqVO.getModelDOList();
|
||||
|
||||
Long planId = modelDOList.stream().map(SaveProcessSchemeModelDO::getPlanId).distinct().toList().get(0);
|
||||
List<SaveProcessSchemeModelDO> schemeModelDOS = new ArrayList<>(modelDOList.stream().filter(Objects::nonNull).toList());
|
||||
|
||||
SaveProcessSchemeModelDO saveProcessSchemeModelDO = Optional.ofNullable(schemeModelDOS.get(0)).orElseThrow(() -> new ServiceException(THIS_PLAN_SCHEME_DATA_ERROR));
|
||||
|
||||
Long planId = Optional.ofNullable(saveProcessSchemeModelDO.getPlanId()).orElseThrow(() -> new ServiceException(THIS_PLAN_SCHEME_DATA_ERROR));
|
||||
|
||||
|
||||
PlanDO planDO = planMapper.selectById(planId);
|
||||
|
||||
AssertUtils.notEmpty(planDO,PLAN_NOT_EXISTS);
|
||||
|
||||
List<Long> planConfigIds = modelDOList.stream().map(SaveProcessSchemeModelDO::getPlanConfigId).distinct().toList();
|
||||
List<Long> planConfigIds = schemeModelDOS.stream().map(SaveProcessSchemeModelDO::getPlanConfigId).distinct().toList();
|
||||
|
||||
List<PlateDO> plateDOS = planItemMapper.selectOrderPlanPlateListByPlanId(planId,getUserOrganId());
|
||||
|
||||
AssertUtils.notEmpty(plateDOS,THIS_PLAN_PLATE_DATA_ERROR);
|
||||
|
||||
plateDOS.forEach(f->{
|
||||
if(CollUtil.isNotEmpty(plateDOS)) {
|
||||
|
||||
plateDOS.forEach(f -> {
|
||||
f.setIsOptimized(true);
|
||||
});
|
||||
|
||||
plateMapper.updateBatch(plateDOS);
|
||||
|
||||
|
||||
// 不能加非空判断,因为方案组里可能没有优化信息
|
||||
List<OptimizeBoardModelDO> optimizeBoardModelDOS = esUtils.getEsDocument(FIELD_PLAN_ID, planId, ORDER_OPTIMIZE_PLATE_MODEL, OptimizeBoardModelDO.class);
|
||||
|
||||
List<Boolean> isLocks = new ArrayList<>();
|
||||
|
||||
if(CollUtil.isNotEmpty(optimizeBoardModelDOS)){
|
||||
|
||||
optimizeBoardModelDOS.forEach(f->{
|
||||
|
||||
isLocks.add(Optional.ofNullable(f.getIsLock()).orElse(false));
|
||||
|
||||
modelDOList.add(SaveProcessSchemeModelDO.builder()
|
||||
.planConfigId(f.getPlanConfigId())
|
||||
.planName(f.getPlanConfigName())
|
||||
.plateNum(f.getPlaceBlockNumber())
|
||||
.goodsNum(f.getBoardCount())
|
||||
.isOptimized(true)
|
||||
.build());
|
||||
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
|
||||
// 如果方案组ID不相等,就删除旧的方案组信息,再保存新的加工方案组ID
|
||||
if(!planDO.getProcessId().equals(processId)){
|
||||
|
||||
validatePlanStatus(planDO,isLocks);
|
||||
// validatePlanStatus(planDO,isLocks);
|
||||
|
||||
if(planDO.getStatus().equals(PlanStatusEnum.OPENING.getStatus()) || planDO.getStatus().equals(PlanStatusEnum.OPENED.getStatus())){
|
||||
throw exception(THIS_PLAN_PLATE_IS_CUT);
|
||||
}
|
||||
|
||||
|
||||
// todo 是否全部执行的判断,需要等前端完善加工方案那边的逻辑后,再判断
|
||||
// Integer processSize = systemConfigApi.getProcessSizeByIds(Collections.singletonList(planDO.getProcessId())).getCheckedData();
|
||||
//
|
||||
// List<SaveProcessSchemeModelDO> processSchemeModelDOS = esUtils.getEsDocument(FIELD_PLAN_ID, planId, processSize, PLAN_PROCESS_SCHEME_OPTIMIZE_MODEL, SaveProcessSchemeModelDO.class);
|
||||
//
|
||||
// if(CollUtil.isNotEmpty(processSchemeModelDOS) && processSize == processSchemeModelDOS.size()){
|
||||
// throw exception(THIS_PLAN_SCHEME_OPTIMIZE_SIZE_ERROR);
|
||||
// }
|
||||
|
||||
planMapper.updateById(planDO.setProcessId(processId));
|
||||
|
||||
|
||||
// 修改方案组,删除全部的方案组的优化信息
|
||||
esUtils.deleteEsDocument(FIELD_PLAN_ID,planId,PLAN_PROCESS_SCHEME_OPTIMIZE_MODEL);
|
||||
|
||||
// 删除全部的生产优化信息
|
||||
esUtils.deleteEsDocument(FIELD_PLAN_ID,planId,ORDER_OPTIMIZE_PLATE_MODEL);
|
||||
|
||||
// 保存此时的方案组的优化信息
|
||||
esUtils.saveEsDocument(PLAN_PROCESS_SCHEME_OPTIMIZE_MODEL,schemeModelDOS);
|
||||
|
||||
return;
|
||||
|
||||
}
|
||||
|
||||
esUtils.deleteEsDocument(FIELD_PLAN_ID,FIELD_PLAN_CONFIG_ID,planId,planConfigIds,PLAN_PROCESS_SCHEME_OPTIMIZE_MODEL);
|
||||
|
||||
esUtils.saveEsDocument(PLAN_PROCESS_SCHEME_OPTIMIZE_MODEL,modelDOList);
|
||||
esUtils.saveEsDocument(PLAN_PROCESS_SCHEME_OPTIMIZE_MODEL,schemeModelDOS);
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
// // 不能加非空判断,因为方案组里可能没有优化信息
|
||||
// List<OptimizeBoardModelDO> optimizeBoardModelDOS = esUtils.getEsDocument(FIELD_PLAN_ID, planId, ORDER_OPTIMIZE_PLATE_MODEL, OptimizeBoardModelDO.class);
|
||||
//
|
||||
//// List<Boolean> isLocks = new ArrayList<>();
|
||||
//
|
||||
// if(CollUtil.isNotEmpty(optimizeBoardModelDOS)){
|
||||
//
|
||||
// optimizeBoardModelDOS.forEach(f->{
|
||||
//
|
||||
//// isLocks.add(Optional.ofNullable(f.getIsLock()).orElse(false));
|
||||
//
|
||||
// schemeModelDOS.add(SaveProcessSchemeModelDO.builder()
|
||||
// .planConfigId(f.getPlanConfigId())
|
||||
// .planName(f.getPlanConfigName())
|
||||
// .plateNum(f.getPlaceBlockNumber())
|
||||
// .goodsNum(f.getBoardCount())
|
||||
// .isOptimized(true)
|
||||
// .build());
|
||||
//
|
||||
// });
|
||||
//
|
||||
// }
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public PlanProcessSchemeList getProcessSchemeConfig(Long processId,Long planId) {
|
||||
|
||||
@@ -814,55 +854,82 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
|
||||
validatePlanExists(planId);
|
||||
|
||||
// 查询排单对应的方案组信息
|
||||
List<SaveProcessSchemeModelDO> saveProcessSchemeReqVOS = Optional.ofNullable(esUtils.getEsDocument(FIELD_PLAN_ID, planId, PLAN_PROCESS_SCHEME_OPTIMIZE_MODEL, SaveProcessSchemeModelDO.class)).orElse(new ArrayList<>());
|
||||
// List<SaveProcessSchemeModelDO> saveProcessSchemeReqVOS = Optional.ofNullable(esUtils.getEsDocument(FIELD_PLAN_ID, planId, PLAN_PROCESS_SCHEME_OPTIMIZE_MODEL, SaveProcessSchemeModelDO.class)).orElse(new ArrayList<>());
|
||||
|
||||
List<SaveProcessSchemeModelDO> saveProcessSchemeReqVOS = esUtils.getEsDocument(FIELD_PLAN_ID, planId, PLAN_PROCESS_SCHEME_OPTIMIZE_MODEL, SaveProcessSchemeModelDO.class);
|
||||
|
||||
|
||||
if(CollUtil.isNotEmpty(saveProcessSchemeReqVOS)){
|
||||
|
||||
// 查询排单对应的优化信息
|
||||
List<OptimizeBoardModelDO> optimizeBoardModelDOS = esUtils.getEsDocument(FIELD_PLAN_ID, planId, schemeDTOList.size(), ORDER_OPTIMIZE_PLATE_MODEL, OptimizeBoardModelDO.class);
|
||||
|
||||
|
||||
if (CollUtil.isNotEmpty(optimizeBoardModelDOS)) {
|
||||
|
||||
|
||||
if (CollUtil.isNotEmpty(saveProcessSchemeReqVOS)) {
|
||||
if(CollUtil.isNotEmpty(optimizeBoardModelDOS)){
|
||||
|
||||
saveProcessSchemeReqVOS.forEach(f -> {
|
||||
|
||||
List<OptimizeBoardModelDO> modelDOList = optimizeBoardModelDOS.stream().filter(o -> o.getPlanConfigId().equals(f.getPlanConfigId())).toList();
|
||||
if (CollUtil.isNotEmpty(modelDOList)) {
|
||||
|
||||
String jsonString = toJsonString(modelDOList.get(0));
|
||||
OptimizeBoardModelDO optimizeBoardModelDO = modelDOList.get(0);
|
||||
|
||||
String jsonString = toJsonString(optimizeBoardModelDO);
|
||||
|
||||
f.setPlanOptimize(jsonString);
|
||||
f.setGoodsNum(optimizeBoardModelDO.getBoardCount());
|
||||
}
|
||||
});
|
||||
} else {
|
||||
optimizeBoardModelDOS.forEach(f -> {
|
||||
|
||||
saveProcessSchemeReqVOS.add(SaveProcessSchemeModelDO.builder()
|
||||
.planConfigId(f.getPlanConfigId())
|
||||
.planName(f.getPlanConfigName())
|
||||
.planId(f.getPlanId())
|
||||
.plateNum(f.getPlaceBlockNumber())
|
||||
.goodsNum(f.getBoardCount())
|
||||
.planOptimize(toJsonString(f))
|
||||
.build());
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
planProcessSchemeList.setSaveProcessSchemeReqVOS(saveProcessSchemeReqVOS);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
return planProcessSchemeList;
|
||||
}
|
||||
|
||||
|
||||
|
||||
//
|
||||
// // 查询排单对应的优化信息
|
||||
// List<OptimizeBoardModelDO> optimizeBoardModelDOS = esUtils.getEsDocument(FIELD_PLAN_ID, planId, schemeDTOList.size(), ORDER_OPTIMIZE_PLATE_MODEL, OptimizeBoardModelDO.class);
|
||||
//
|
||||
//
|
||||
// if (CollUtil.isNotEmpty(optimizeBoardModelDOS)) {
|
||||
//
|
||||
//
|
||||
// if (CollUtil.isNotEmpty(saveProcessSchemeReqVOS)) {
|
||||
//
|
||||
// saveProcessSchemeReqVOS.forEach(f -> {
|
||||
//
|
||||
// List<OptimizeBoardModelDO> modelDOList = optimizeBoardModelDOS.stream().filter(o -> o.getPlanConfigId().equals(f.getPlanConfigId())).toList();
|
||||
// if (CollUtil.isNotEmpty(modelDOList)) {
|
||||
//
|
||||
// String jsonString = toJsonString(modelDOList.get(0));
|
||||
//
|
||||
// f.setPlanOptimize(jsonString);
|
||||
// }
|
||||
// });
|
||||
// } else {
|
||||
// optimizeBoardModelDOS.forEach(f -> {
|
||||
//
|
||||
// saveProcessSchemeReqVOS.add(SaveProcessSchemeModelDO.builder()
|
||||
// .planConfigId(f.getPlanConfigId())
|
||||
// .planName(f.getPlanConfigName())
|
||||
// .planId(f.getPlanId())
|
||||
// .plateNum(f.getPlaceBlockNumber())
|
||||
// .goodsNum(f.getBoardCount())
|
||||
// .planOptimize(toJsonString(f))
|
||||
// .build());
|
||||
//
|
||||
// });
|
||||
// }
|
||||
// }
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
|
||||
+2
-2
@@ -1252,7 +1252,7 @@ public class OrderServiceImpl implements OrderService {
|
||||
String orderPlateModeList = toJsonString(BeanUtils.toBean(orderModelDOs, OrderPlateList.class));
|
||||
orderModelCompressDO.setOrderModelZip(zipString(orderPlateModeList));
|
||||
|
||||
// 板材造型数据添加 大板分类ID,实际ID,优化信息(默认为 false)
|
||||
// 板材造型数据添加 大板分类ID,实际ID
|
||||
List<OrderGoodsPlateIds> orderGoodsPlateIds = BeanUtils.toBean(plateDO, OrderGoodsPlateIds.class);
|
||||
List<GoodsDO> finalGoodsDO = goodsDO;
|
||||
orderGoodsPlateIds.forEach(f->
|
||||
@@ -1261,7 +1261,7 @@ public class OrderServiceImpl implements OrderService {
|
||||
orderModelDOs.forEach(f->{
|
||||
f.setGoodsId(orderGoodsPlateIds.stream().filter(fo->fo.getId().equals(f.getPlateId())).map(OrderGoodsPlateIds::getActualGoodsId).toList().get(0));
|
||||
f.setPlateGoodsId(orderGoodsPlateIds.stream().filter(fo->fo.getId().equals(f.getPlateId())).map(OrderGoodsPlateIds::getGoodsId).toList().get(0));
|
||||
// f.setIsOptimized(false);
|
||||
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
+1
@@ -394,6 +394,7 @@
|
||||
|
||||
where opi.organ_id = #{organId}
|
||||
and opi.plan_id = #{planId}
|
||||
and op.is_optimized = false
|
||||
|
||||
|
||||
</select>
|
||||
|
||||
Reference in New Issue
Block a user