|
@@ -66,11 +66,11 @@ public class ApsProcessOperationProcessEquServiceImpl extends ServiceImpl<ApsPro
|
|
|
* @param ids
|
|
|
* @param batchNumn
|
|
|
*/
|
|
|
- public void updateBachmaterialprocessByIds(List<String> ids, String batchNumn,String nextprocessesids) {
|
|
|
+ public void updateBachmaterialprocessByIds(List<String> ids, String batchNumn, String nextprocessesids) {
|
|
|
if (StringUtils.isNotBlank(batchNumn)) {
|
|
|
apsProcessOperationProcessEquDao.updateBachmaterialprocessByIds(ids, batchNumn,
|
|
|
- StringUtils.isBlank(nextprocessesids)?null:Arrays.asList(nextprocessesids.split(","))
|
|
|
- );
|
|
|
+ StringUtils.isBlank(nextprocessesids) ? null : Arrays.asList(nextprocessesids.split(","))
|
|
|
+ );
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -150,63 +150,104 @@ public class ApsProcessOperationProcessEquServiceImpl extends ServiceImpl<ApsPro
|
|
|
* @param processOperationEquId
|
|
|
*/
|
|
|
public String updateProcessByProcessEquId(String processOperationEquId) {
|
|
|
- //查询所有子表明细的最小生产状态和工序作业ID
|
|
|
- CommonUpdateProductionStatusReq one = this.baseMapper.selectEquMinStatus(processOperationEquId);
|
|
|
- if (ObjectUtil.isEmpty(one)) {
|
|
|
- return "";
|
|
|
- }
|
|
|
- //工序作业ID
|
|
|
- String processId = one.getProcessOperationId();
|
|
|
+ ApsProcessOperationProcessEquDo apsProcessOperationProcessEquDo = apsProcessOperationProcessEquDao.selectById(processOperationEquId);
|
|
|
+ ApsProcessOperationDo apsProcessOperationDo = apsProcessOperationService.getById(apsProcessOperationProcessEquDo.getProcessid());
|
|
|
|
|
|
- //计算工序作业的完工状态
|
|
|
- /**
|
|
|
- * 如果没有作业明细,并且未完工卷数=0,或者有作业明细,并且所有作业明细完工状态=已完工,则=已完工
|
|
|
- * 如果没有作业明细,并且未完工卷数>0,或者有作业明细,并且任一作业明细完工状态=未完工,则=未完工
|
|
|
- */
|
|
|
- ApsProcessOperationDo apsProcessOperationDo = new ApsProcessOperationDo();
|
|
|
- //更新工序作业的完工状态
|
|
|
- apsProcessOperationDo.setClosestatus(one.getProductionStatus());
|
|
|
- //查询工序作业信息
|
|
|
- ApsProcessOperationDo processOperationDo = apsProcessOperationService.getById(processId);
|
|
|
- //已开工卷数
|
|
|
- Integer startingroll = processOperationDo.getStartingroll();
|
|
|
- //计划加工卷数
|
|
|
- Integer planprocessrall = processOperationDo.getPlanprocessrall();
|
|
|
- //未完工卷数
|
|
|
- Integer unfinishroll = planprocessrall - startingroll;
|
|
|
- //计算作业状态
|
|
|
+ ApsProcessOperationDo needUpdateProcessOperation = new ApsProcessOperationDo();
|
|
|
+ needUpdateProcessOperation.setId(apsProcessOperationDo.getId());
|
|
|
+ //剩余待报工卷数=未完工卷数-输入已取消卷数-已取消卷数
|
|
|
+ int needReportRoll = needUpdateProcessOperation.getUnfinishroll() - apsProcessOperationDo.getInputunqualifiedroll() - apsProcessOperationDo.getCancelroll();
|
|
|
+ if (needReportRoll <= 0) {
|
|
|
+ needReportRoll = 0;
|
|
|
+ }
|
|
|
+ needUpdateProcessOperation.setLeavewaitjobroll(needReportRoll);
|
|
|
/**
|
|
|
- * 如果已开工卷数=0,则=待开工;
|
|
|
- * 如果已开工卷数>0,并且完工状态=未完工,则=加工中;(先更新完工状态)
|
|
|
- * 如果未完工卷数=0,并且完工状态=已完工,则=已完工(先更新完工状态)
|
|
|
+ * 如果剩余待报工卷数=0,则完工状态=已完工,实际完工时间=当前时间
|
|
|
+ * 如果剩余待报工卷数>0,则完工状态=未完工
|
|
|
+ *
|
|
|
+ * 如果完工状态=未完工,并且已开工卷数=0,则作业状态=待开工;
|
|
|
+ * 如果完工状态=未完工,并且已开工卷数>0,则作业状态=加工中;
|
|
|
+ * 如果完工状态=已完工,则作业状态=已完工
|
|
|
+ * 生产状态=作业状态
|
|
|
*/
|
|
|
- if (startingroll <= 0) {
|
|
|
- apsProcessOperationDo.setWorkstatus("待开工");
|
|
|
- //容错修正
|
|
|
- apsProcessOperationDo.setStartingroll(0);
|
|
|
- }
|
|
|
- if (startingroll > 0 && apsProcessOperationDo.getClosestatus().equals("未完工")) {
|
|
|
- apsProcessOperationDo.setWorkstatus("加工中");
|
|
|
- }
|
|
|
- if (unfinishroll <= 0 && apsProcessOperationDo.getClosestatus().equals("已完工")) {
|
|
|
- apsProcessOperationDo.setWorkstatus("已完工");
|
|
|
- }
|
|
|
+ if (needReportRoll <= 0) {
|
|
|
+ needUpdateProcessOperation.setClosestatus("已完工");
|
|
|
+ needUpdateProcessOperation.setActualfinishdate(DateUtil.date());
|
|
|
+ needUpdateProcessOperation.setWorkstatus("已完工");
|
|
|
+ needUpdateProcessOperation.setProcessstatus(COMPLETED);
|
|
|
+ }
|
|
|
+ if (needReportRoll > 0) {
|
|
|
+ needUpdateProcessOperation.setClosestatus("未完工");
|
|
|
+ if (apsProcessOperationDo.getStartingroll() == 0) {
|
|
|
+ needUpdateProcessOperation.setWorkstatus("待开工");
|
|
|
+ needUpdateProcessOperation.setProcessstatus(TO_BE_STARTED);
|
|
|
+ } else {
|
|
|
+ needUpdateProcessOperation.setWorkstatus("加工中");
|
|
|
+ needUpdateProcessOperation.setProcessstatus(PROCESSING);
|
|
|
+ }
|
|
|
|
|
|
- //更新工序作业的生产状态
|
|
|
- //开工和报工检验后,生产状态=作业状态(先更新作业状态)
|
|
|
- if (apsProcessOperationDo.getWorkstatus().equals("待开工")) {
|
|
|
- apsProcessOperationDo.setProcessstatus(TO_BE_STARTED);
|
|
|
}
|
|
|
- if (apsProcessOperationDo.getWorkstatus().equals("加工中")) {
|
|
|
- apsProcessOperationDo.setProcessstatus(PROCESSING);
|
|
|
- }
|
|
|
- if (apsProcessOperationDo.getWorkstatus().equals("已完工")) {
|
|
|
- apsProcessOperationDo.setProcessstatus(COMPLETED);
|
|
|
- }
|
|
|
- apsProcessOperationDo.setId(processId);
|
|
|
- apsProcessOperationService.updateById(apsProcessOperationDo);
|
|
|
|
|
|
- return one.getProcessOperationId();
|
|
|
+ apsProcessOperationService.updateById(needUpdateProcessOperation);
|
|
|
+
|
|
|
+// //查询所有子表明细的最小生产状态和工序作业ID
|
|
|
+// CommonUpdateProductionStatusReq one = this.baseMapper.selectEquMinStatus(processOperationEquId);
|
|
|
+// if (ObjectUtil.isEmpty(one)) {
|
|
|
+// return "";
|
|
|
+// }
|
|
|
+// //工序作业ID
|
|
|
+// String processId = one.getProcessOperationId();
|
|
|
+//
|
|
|
+// //计算工序作业的完工状态
|
|
|
+// /**
|
|
|
+// * 如果没有作业明细,并且未完工卷数=0,或者有作业明细,并且所有作业明细完工状态=已完工,则=已完工
|
|
|
+// * 如果没有作业明细,并且未完工卷数>0,或者有作业明细,并且任一作业明细完工状态=未完工,则=未完工
|
|
|
+// */
|
|
|
+// ApsProcessOperationDo apsProcessOperationDo = new ApsProcessOperationDo();
|
|
|
+// //更新工序作业的完工状态
|
|
|
+// apsProcessOperationDo.setClosestatus(one.getProductionStatus());
|
|
|
+// //查询工序作业信息
|
|
|
+// ApsProcessOperationDo processOperationDo = apsProcessOperationService.getById(processId);
|
|
|
+// //已开工卷数
|
|
|
+// Integer startingroll = processOperationDo.getStartingroll();
|
|
|
+// //计划加工卷数
|
|
|
+// Integer planprocessrall = processOperationDo.getPlanprocessrall();
|
|
|
+// //未完工卷数
|
|
|
+// Integer unfinishroll = planprocessrall - startingroll;
|
|
|
+// //计算作业状态
|
|
|
+// /**
|
|
|
+// * 如果已开工卷数=0,则=待开工;
|
|
|
+// * 如果已开工卷数>0,并且完工状态=未完工,则=加工中;(先更新完工状态)
|
|
|
+// * 如果未完工卷数=0,并且完工状态=已完工,则=已完工(先更新完工状态)
|
|
|
+// */
|
|
|
+// if (startingroll <= 0) {
|
|
|
+// apsProcessOperationDo.setWorkstatus("待开工");
|
|
|
+// //容错修正
|
|
|
+// apsProcessOperationDo.setStartingroll(0);
|
|
|
+// }
|
|
|
+// if (startingroll > 0 && apsProcessOperationDo.getClosestatus().equals("未完工")) {
|
|
|
+// apsProcessOperationDo.setWorkstatus("加工中");
|
|
|
+// }
|
|
|
+// if (unfinishroll <= 0 && apsProcessOperationDo.getClosestatus().equals("已完工")) {
|
|
|
+// apsProcessOperationDo.setWorkstatus("已完工");
|
|
|
+// }
|
|
|
+//
|
|
|
+// //更新工序作业的生产状态
|
|
|
+// //开工和报工检验后,生产状态=作业状态(先更新作业状态)
|
|
|
+// if (apsProcessOperationDo.getWorkstatus().equals("待开工")) {
|
|
|
+// apsProcessOperationDo.setProcessstatus(TO_BE_STARTED);
|
|
|
+// }
|
|
|
+// if (apsProcessOperationDo.getWorkstatus().equals("加工中")) {
|
|
|
+// apsProcessOperationDo.setProcessstatus(PROCESSING);
|
|
|
+// }
|
|
|
+// if (apsProcessOperationDo.getWorkstatus().equals("已完工")) {
|
|
|
+// apsProcessOperationDo.setProcessstatus(COMPLETED);
|
|
|
+// }
|
|
|
+// apsProcessOperationDo.setId(processId);
|
|
|
+// apsProcessOperationService.updateById(apsProcessOperationDo);
|
|
|
+//
|
|
|
+// return one.getProcessOperationId();
|
|
|
+ return apsProcessOperationDo.getId();
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -239,11 +280,11 @@ public class ApsProcessOperationProcessEquServiceImpl extends ServiceImpl<ApsPro
|
|
|
log.error("无法获取到工序作业明细");
|
|
|
return R.error("无法获取到工序作业明细");
|
|
|
}
|
|
|
- if(apsProcessOperationProcessEquDos.size()!=changingWiresVos.size()){
|
|
|
+ if (apsProcessOperationProcessEquDos.size() != changingWiresVos.size()) {
|
|
|
log.error("本次换线操作存在无法获取作业明细的数据");
|
|
|
return R.error("本次换线操作存在无法获取作业明细的数据!请联系系统管理员");
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
// 校验是否存在已完工的工序作业
|
|
|
boolean hasCompletedWork = apsProcessOperationProcessEquDos.stream()
|
|
|
.anyMatch(info -> JOBSTATUS_TO_BE_END.equals(info.getWorkstatus()));
|