|
@@ -1905,13 +1905,12 @@ public class ApsProcessOperationServiceImpl extends ServiceImpl<ApsProcessOperat
|
|
|
}
|
|
|
|
|
|
/*
|
|
|
- 取消工序作业
|
|
|
+ 取消和更新工序作业
|
|
|
*/
|
|
|
@Override
|
|
|
@Transactional
|
|
|
public R cancelProcessOperation(CancelProcessOperationVo cancelProcessOperationVo) {
|
|
|
List<ApsProcessOperationOutMaterDo> apsProcessOperationOutMaterDoList = new ArrayList<>();
|
|
|
- List<ApsProcessOperationProcessEquDo> apsProcessOperationProcessEquDoList = new ArrayList<>();
|
|
|
try {
|
|
|
String craftrouteid = cancelProcessOperationVo.getCraftrouteid();
|
|
|
Integer curcancelroll = cancelProcessOperationVo.getCurcancelroll();//作业本次取消卷数
|
|
@@ -2017,9 +2016,8 @@ public class ApsProcessOperationServiceImpl extends ServiceImpl<ApsProcessOperat
|
|
|
}
|
|
|
|
|
|
//本道作业所有后道工序
|
|
|
- List<ApsProcessOperationDo> apsProcessOperationDos = new ArrayList<>();
|
|
|
if (StringUtils.isNotBlank(apsProcessOperationDo.getNextprocessid())) {
|
|
|
- apsProcessOperationDos = apsProcessOperationDao.getNextProcessOperations(apsProcessOperationDo.getNextprocessid().replace(",", "','"));
|
|
|
+ List<ApsProcessOperationDo> apsProcessOperationDos = apsProcessOperationDao.getNextProcessOperations(apsProcessOperationDo.getNextprocessid().replace(",", "','"));
|
|
|
for (ApsProcessOperationDo processOperationDo : apsProcessOperationDos) {
|
|
|
CancelProcessOperationVo cancelProcessOperationVo1 = new CancelProcessOperationVo();
|
|
|
cancelProcessOperationVo1.setCraftrouteid(craftrouteid);
|
|
@@ -2033,50 +2031,9 @@ public class ApsProcessOperationServiceImpl extends ServiceImpl<ApsProcessOperat
|
|
|
|
|
|
//本道工序的作业明细
|
|
|
List<ApsProcessOperationProcessEquDo> apsProcessOperationProcessEquDos = apsProcessOperationDao.getProcessOperationProcessEqus(apsProcessOperationDo.getId());
|
|
|
+ R cancelEqu = R.ok();
|
|
|
if (cancelProcessOperationVo.getUpdatecuropration()) {
|
|
|
- Integer equWaitCancelRoll = curcancelroll;//明细的待分配取消卷数
|
|
|
- Integer curEquCancelRoll = 0;//作业明细本次取消卷数
|
|
|
- for (ApsProcessOperationProcessEquDo processOperationProcessEquDo : apsProcessOperationProcessEquDos) {
|
|
|
- Integer tempRoll = processOperationProcessEquDo.getPlanprocessrall() - processOperationProcessEquDo.getStartingroll() - processOperationProcessEquDo.getCancelroll();
|
|
|
- if (tempRoll <= 0) {
|
|
|
- continue;
|
|
|
- }
|
|
|
- if (equWaitCancelRoll > 0) {
|
|
|
- if (tempRoll >= equWaitCancelRoll) {
|
|
|
- curEquCancelRoll = equWaitCancelRoll;
|
|
|
- } else {
|
|
|
- curEquCancelRoll = tempRoll;
|
|
|
- }
|
|
|
- processOperationProcessEquDo.setCancelroll(processOperationProcessEquDo.getCancelroll() + curEquCancelRoll);
|
|
|
- if (processOperationProcessEquDo.getPlanprocessrall() == processOperationProcessEquDo.getCancelroll()) {
|
|
|
- processOperationProcessEquDo.setProcessdevice("");
|
|
|
- processOperationProcessEquDo.setProcessdeviceid("");
|
|
|
- } else if (processOperationProcessEquDo.getPlanprocessrall() > processOperationProcessEquDo.getCancelroll()) {
|
|
|
- BigDecimal addMinute = apsProcessOperationDo.getOnceprocessmin().multiply(new BigDecimal(60)).multiply(new BigDecimal(processOperationProcessEquDo.getPlanprocessrall() - processOperationProcessEquDo.getCancelroll()));//秒向上取整
|
|
|
- Calendar calendar = Calendar.getInstance();
|
|
|
- calendar.setTime(processOperationProcessEquDo.getPlanstartdate());
|
|
|
- calendar.add(Calendar.SECOND, addMinute.setScale(0, RoundingMode.UP).intValue());
|
|
|
- processOperationProcessEquDo.setPlanenddate(calendar.getTime());
|
|
|
- }
|
|
|
- if (processOperationProcessEquDo.getPlanprocessrall() - processOperationProcessEquDo.getReportroll() - processOperationProcessEquDo.getCancelroll() == 0) {
|
|
|
- processOperationProcessEquDo.setClosestatus(SaveConstans.CloseStatus.COMPLETED);
|
|
|
- processOperationProcessEquDo.setActualfinishdate(DateUtil.date());
|
|
|
- processOperationProcessEquDo.setWorkstatus(SaveConstans.JobStatus.JOBSTATUS_TO_BE_END);
|
|
|
- } else if (processOperationProcessEquDo.getPlanprocessrall() - processOperationProcessEquDo.getReportroll() - processOperationProcessEquDo.getCancelroll() > 0) {
|
|
|
- processOperationProcessEquDo.setClosestatus(SaveConstans.CloseStatus.UNFINISHED);
|
|
|
- if (processOperationProcessEquDo.getStartingroll() == 0) {
|
|
|
- processOperationProcessEquDo.setWorkstatus(SaveConstans.JobStatus.JOBSTATUS_TO_BE_START);
|
|
|
- } else {
|
|
|
- processOperationProcessEquDo.setWorkstatus(SaveConstans.JobStatus.JOBSTATUS_TO_BE_STARTING);
|
|
|
- }
|
|
|
- }
|
|
|
- } else {
|
|
|
- break;
|
|
|
- }
|
|
|
- equWaitCancelRoll = equWaitCancelRoll - curEquCancelRoll;
|
|
|
-
|
|
|
- apsProcessOperationProcessEquDoList.add(processOperationProcessEquDo);
|
|
|
- }
|
|
|
+ cancelEqu = cancelProcessOperationEqu(curcancelroll, apsProcessOperationDo, apsProcessOperationProcessEquDos);
|
|
|
}
|
|
|
|
|
|
//作业计划开工时间=所有作业明细最早计划开工时间
|
|
@@ -2091,17 +2048,13 @@ public class ApsProcessOperationServiceImpl extends ServiceImpl<ApsProcessOperat
|
|
|
|
|
|
boolean bool1 = apsProcessOperationService.saveOrUpdate(apsProcessOperationDo);
|
|
|
boolean bool2 = apsProcessOperationOutMaterService.saveOrUpdateBatch(apsProcessOperationOutMaterDoList);
|
|
|
- boolean bool3 = true;
|
|
|
- if (apsProcessOperationProcessEquDoList.size() > 0) {
|
|
|
- bool3 = apsProcessOperationProcessEquService.saveOrUpdateBatch(apsProcessOperationProcessEquDoList);
|
|
|
- }
|
|
|
|
|
|
//更新状态
|
|
|
CommonUpdateProductionStatusReq req = new CommonUpdateProductionStatusReq();
|
|
|
req.setProcessOperationId(apsProcessOperationDo.getId());
|
|
|
apsProcessOperationProcessEquService.updateProductionStatus(req);
|
|
|
|
|
|
- if (bool1 && bool2 && bool3) {
|
|
|
+ if (bool1 && bool2 && cancelEqu.getCode() == "200") {
|
|
|
String blanckId = apsProcessOperationDo.getBlankid();
|
|
|
List<String> blankIds = Arrays.asList(blanckId.split(","));
|
|
|
List<ApsProcessOperationDo> apsProcessOperationList = apsProcessOperationService.getBaseMapper().selectList(new QueryWrapper<ApsProcessOperationDo>().lambda().eq(ApsProcessOperationDo::getBlankid, blanckId));
|
|
@@ -2138,6 +2091,70 @@ public class ApsProcessOperationServiceImpl extends ServiceImpl<ApsProcessOperat
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ /*
|
|
|
+ 分配和取消作业明细
|
|
|
+ curcancelroll:明细的待分配取消卷数
|
|
|
+ apsProcessOperationDo:作业
|
|
|
+ apsProcessOperationProcessEquDos:作业的所有作业明细
|
|
|
+ */
|
|
|
+ @Transactional
|
|
|
+ public R cancelProcessOperationEqu(Integer curcancelroll, ApsProcessOperationDo apsProcessOperationDo, List<ApsProcessOperationProcessEquDo> apsProcessOperationProcessEquDos) {
|
|
|
+ List<ApsProcessOperationProcessEquDo> apsProcessOperationProcessEquDoList = new ArrayList<>();
|
|
|
+ Integer equWaitCancelRoll = curcancelroll;//明细的待分配取消卷数
|
|
|
+ Integer curEquCancelRoll = 0;//作业明细本次取消卷数
|
|
|
+ for (ApsProcessOperationProcessEquDo processOperationProcessEquDo : apsProcessOperationProcessEquDos) {
|
|
|
+ Integer tempRoll = processOperationProcessEquDo.getPlanprocessrall() - processOperationProcessEquDo.getStartingroll() - processOperationProcessEquDo.getCancelroll();
|
|
|
+ if (tempRoll <= 0) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ if (equWaitCancelRoll > 0) {
|
|
|
+ if (tempRoll >= equWaitCancelRoll) {
|
|
|
+ curEquCancelRoll = equWaitCancelRoll;
|
|
|
+ } else {
|
|
|
+ curEquCancelRoll = tempRoll;
|
|
|
+ }
|
|
|
+ processOperationProcessEquDo.setCancelroll(processOperationProcessEquDo.getCancelroll() + curEquCancelRoll);
|
|
|
+ if (processOperationProcessEquDo.getPlanprocessrall() == processOperationProcessEquDo.getCancelroll()) {
|
|
|
+ processOperationProcessEquDo.setProcessdevice("");
|
|
|
+ processOperationProcessEquDo.setProcessdeviceid("");
|
|
|
+ } else if (processOperationProcessEquDo.getPlanprocessrall() > processOperationProcessEquDo.getCancelroll()) {
|
|
|
+ BigDecimal addMinute = apsProcessOperationDo.getOnceprocessmin().multiply(new BigDecimal(60)).multiply(new BigDecimal(processOperationProcessEquDo.getPlanprocessrall() - processOperationProcessEquDo.getCancelroll()));//秒向上取整
|
|
|
+ Calendar calendar = Calendar.getInstance();
|
|
|
+ calendar.setTime(processOperationProcessEquDo.getPlanstartdate());
|
|
|
+ calendar.add(Calendar.SECOND, addMinute.setScale(0, RoundingMode.UP).intValue());
|
|
|
+ processOperationProcessEquDo.setPlanenddate(calendar.getTime());
|
|
|
+ }
|
|
|
+ if (processOperationProcessEquDo.getPlanprocessrall() - processOperationProcessEquDo.getReportroll() - processOperationProcessEquDo.getCancelroll() == 0) {
|
|
|
+ processOperationProcessEquDo.setClosestatus(SaveConstans.CloseStatus.COMPLETED);
|
|
|
+ processOperationProcessEquDo.setActualfinishdate(DateUtil.date());
|
|
|
+ processOperationProcessEquDo.setWorkstatus(SaveConstans.JobStatus.JOBSTATUS_TO_BE_END);
|
|
|
+ } else if (processOperationProcessEquDo.getPlanprocessrall() - processOperationProcessEquDo.getReportroll() - processOperationProcessEquDo.getCancelroll() > 0) {
|
|
|
+ processOperationProcessEquDo.setClosestatus(SaveConstans.CloseStatus.UNFINISHED);
|
|
|
+ if (processOperationProcessEquDo.getStartingroll() == 0) {
|
|
|
+ processOperationProcessEquDo.setWorkstatus(SaveConstans.JobStatus.JOBSTATUS_TO_BE_START);
|
|
|
+ } else {
|
|
|
+ processOperationProcessEquDo.setWorkstatus(SaveConstans.JobStatus.JOBSTATUS_TO_BE_STARTING);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ equWaitCancelRoll = equWaitCancelRoll - curEquCancelRoll;
|
|
|
+
|
|
|
+ apsProcessOperationProcessEquDoList.add(processOperationProcessEquDo);
|
|
|
+ }
|
|
|
+
|
|
|
+ boolean bool = true;
|
|
|
+ if (apsProcessOperationProcessEquDoList.size() > 0) {
|
|
|
+ bool = apsProcessOperationProcessEquService.saveOrUpdateBatch(apsProcessOperationProcessEquDoList);
|
|
|
+ }
|
|
|
+ if (bool) {
|
|
|
+ return R.ok();
|
|
|
+ } else {
|
|
|
+ return R.error();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
//获取输入已取消卷数
|
|
|
private Integer getInputCancelRoll(Integer planPrecessRoll, Integer cancelRoll, ApsProcessOperationOutMaterDo outMaterDo) {
|
|
|
Integer inputCancelRoll = 0;
|