|
@@ -182,19 +182,7 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
|
|
|
logger.error("所选坯料计划:{}存在冲突", blankIds);
|
|
|
return R.error("请先解决排程冲突在发布");
|
|
|
}
|
|
|
- // 判断是否存在已发布的工序作业
|
|
|
- List<ApsBlankOrderDo> apsBlankOrderDos = this.baseMapper.selectBatchIds(blankIds);
|
|
|
- List<String> searchCondition = new ArrayList<String>() {{
|
|
|
- add("30");
|
|
|
- add("20");
|
|
|
- add("10");
|
|
|
- }};
|
|
|
- List<ApsBlankOrderDo> collect1 = apsBlankOrderDos.stream().filter(info -> !searchCondition.contains(info.getProductstatus())).collect(Collectors.toList());
|
|
|
- if (!collect1.isEmpty()) {
|
|
|
- logger.error("存在已开工的坯料计划:{}", collect1);
|
|
|
- return R.error("存在已开工的坯料计划");
|
|
|
- }
|
|
|
- // 如果 订单排程交货期>承诺交货期 抛出异常信息
|
|
|
+ // 如果 订单排程交货期>承诺交货期 抛出异常信息
|
|
|
List<ApsProductionOrderDo> dataByBlankId = apsProcessOperationDao.getDataByBlankId(blankIds);
|
|
|
if (!dataByBlankId.isEmpty()) {
|
|
|
String collect = dataByBlankId.stream()
|
|
@@ -211,38 +199,57 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
|
|
|
log.error("当前坯料计划不存在工序作业明细");
|
|
|
return R.error("无法根据坯料计划找到工序作业明细");
|
|
|
}
|
|
|
- // 判断是否存在强制冲突不为空的数据
|
|
|
+ // 判断是否存在强制冲突不为空的数据
|
|
|
boolean b = processOperationProcessEquDos.stream().anyMatch(info -> StringUtils.isNotBlank(info.getConflictdes()));
|
|
|
if (b) {
|
|
|
log.error("存在强制冲突无法发布");
|
|
|
return R.error("请先解决冲突在发布");
|
|
|
}
|
|
|
- // 更新坯料计划的生产状态为已发布
|
|
|
- this.update(new LambdaUpdateWrapper<ApsBlankOrderDo>().in(ApsBlankOrderDo::getId, blankIds)
|
|
|
- .set(ApsBlankOrderDo::getProductstatus, "30")
|
|
|
- .set(ApsBlankOrderDo::getSchedulingstatus, PUBLISHED)
|
|
|
- .set(ApsBlankOrderDo::getLockmark, LOCKMARK_Y));
|
|
|
- // 更新坯料计划对应工序作业的状态为待开工
|
|
|
- apsProcessOperationService.update(new LambdaUpdateWrapper<ApsProcessOperationDo>()
|
|
|
- .in(ApsProcessOperationDo::getBlankid, blankIds)
|
|
|
- .set(ApsProcessOperationDo::getProcessstatus, "30")
|
|
|
- .set(ApsProcessOperationDo::getLockmark, LOCKMARK_Y)
|
|
|
- .set(ApsProcessOperationDo::getWorkstatus, JOBSTATUS_TO_BE_START));
|
|
|
- // 更新坯料计划对应产品明细的生产状态为待开工
|
|
|
- apsProductDetailDao.updateProductStatusByBlankId(blankIds, "30");
|
|
|
- // 更新工序作业明细的生产状态为待开工
|
|
|
- processOperationProcessEquService.update(new LambdaUpdateWrapper<ApsProcessOperationProcessEquDo>()
|
|
|
- .in(ApsProcessOperationProcessEquDo::getId, processOperationProcessEquDos.stream().map(ApsProcessOperationProcessEquDo::getId).collect(Collectors.toList()))
|
|
|
- .set(ApsProcessOperationProcessEquDo::getLockmark, LOCKMARK_Y)
|
|
|
- .set(ApsProcessOperationProcessEquDo::getWorkstatus, JOBSTATUS_TO_BE_START)
|
|
|
- );
|
|
|
- List<String> collect = apsBlankOrderDos.stream().map(ApsBlankOrderDo::getProductionorderid).distinct().collect(Collectors.toList());
|
|
|
- // 更新工序作业的状态
|
|
|
- apsProcessOperationDao.publish(collect);
|
|
|
- // 更新订单表的生产状态
|
|
|
+ List<String> productionOrderIds = new ArrayList<>();
|
|
|
blankIds.forEach(blankId -> {
|
|
|
- processOperationProcessEquService.updateOrder(blankId);
|
|
|
+ // 更新工序作业生产状态
|
|
|
+ apsProcessOperationService.update(new LambdaUpdateWrapper<ApsProcessOperationDo>()
|
|
|
+ .eq(ApsProcessOperationDo::getBlankid, blankId)
|
|
|
+ .eq(ApsProcessOperationDo::getProcessstatus,TO_BE_PUBLISHED)
|
|
|
+ .set(ApsProcessOperationDo::getProcessstatus,TO_BE_STARTED)
|
|
|
+ .set(ApsProcessOperationDo::getLockmark, LOCKMARK_Y));
|
|
|
+ // 工序作业信息
|
|
|
+ List<ApsProcessOperationDo> processOperationDos = apsProcessOperationService.list(new LambdaQueryWrapper<ApsProcessOperationDo>()
|
|
|
+ .eq(ApsProcessOperationDo::getBlankid, blankId).orderByDesc(ApsProcessOperationDo::getProcessstatus));
|
|
|
+ // 坯料计划排程状态
|
|
|
+ String schedulingstatus;
|
|
|
+ // 坯料计划生产状态
|
|
|
+ String producttStatus;
|
|
|
+ if (processOperationDos.get(0).getProcessstatus().equals(TO_BE_PUBLISHED)) {
|
|
|
+ schedulingstatus = SCHEDULSTATUS_TORELEASE;
|
|
|
+ producttStatus = TO_BE_PUBLISHED;
|
|
|
+ } else if (processOperationDos.get(0).getProcessstatus().equals(TO_BE_SCHEDULED)) {
|
|
|
+ schedulingstatus = SCHEDULSTATUS_TOSCHEDULE;
|
|
|
+ producttStatus = TO_BE_SCHEDULED;
|
|
|
+ } else {
|
|
|
+ schedulingstatus = SCHEDULSTATUS_HASRELEASE;
|
|
|
+ List<String> processStatusList = processOperationDos.stream()
|
|
|
+ .map(ApsProcessOperationDo::getProcessstatus)
|
|
|
+ .distinct()
|
|
|
+ .collect(Collectors.toList());
|
|
|
+ if (processOperationDos.get(0).getProcessstatus().equals(TO_BE_STARTED)) {
|
|
|
+ producttStatus = TO_BE_STARTED;
|
|
|
+ } else if (processStatusList.size() == 1 && processStatusList.get(0).equals(COMPLETED)) {
|
|
|
+ producttStatus = COMPLETED;
|
|
|
+ } else {
|
|
|
+ producttStatus = PROCESSING;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ ApsBlankOrderDo blankOrderDo = this.getById(blankId);
|
|
|
+ productionOrderIds.add(blankOrderDo.getProductionorderid());
|
|
|
+ this.update(new LambdaUpdateWrapper<ApsBlankOrderDo>().eq(ApsBlankOrderDo::getId, blankId)
|
|
|
+ .set(ApsBlankOrderDo::getProductstatus, producttStatus)
|
|
|
+ .set(ApsBlankOrderDo::getSchedulingstatus, schedulingstatus));
|
|
|
});
|
|
|
+ // 更新产品明细的生产状态
|
|
|
+ apsProductDetailDao.publishCancel(blankIds);
|
|
|
+ // 更新订单的生产状态
|
|
|
+ apsProcessOperationDao.publishCancel(productionOrderIds);
|
|
|
// 根据坯料ID 删除 备份数据
|
|
|
ApsUtils.clearBackup(null);
|
|
|
return R.ok();
|