|
@@ -288,7 +288,7 @@ public class ApsReportRecordsServiceImpl extends ServiceImpl<ApsReportRecordsDao
|
|
|
// 并且没有其他同设备同炉次的报工记录已经开工或报工,
|
|
|
// 则报工记录对应开工时间的月份,加工设备对应熔炉的该月该熔炉的炉次号减1
|
|
|
if (apsProcessOperationDo.getProcessway().equals("合并加工")) {
|
|
|
- List<ApsProcessOperationProcessEquDo> equDoMergeStartingList = this.baseMapper.selectOtherMergeProcessEquByHeat(equDo.getId(), equDo.getProcessdeviceid(), recordsDo.getHeatnumber());
|
|
|
+ List<ApsProcessOperationProcessEquDo> equDoMergeStartingList = this.baseMapper.selectOtherMergeProcessEquByHeat(equDo.getId(), equDo.getProcessdeviceid(), recordsDo.getHeatnumber(),DateUtil.format(recordsDo.getStartworktime(),"yyyy-MM"));
|
|
|
if (equDoMergeStartingList.size() <= 0) {
|
|
|
//炉号-1
|
|
|
//加工设备ID
|
|
@@ -401,6 +401,8 @@ public class ApsReportRecordsServiceImpl extends ServiceImpl<ApsReportRecordsDao
|
|
|
//当前工序作业明细的ID
|
|
|
String apsProcessOperationProcessEquDoId = apsProcessOperationProcessEquDo.getId();
|
|
|
//查询当前工序作业的作业明细的 加工设备 对应的其他工序作业的作业明细 并且待报工记录ID不为空
|
|
|
+ //合并加工的最开始开工时间
|
|
|
+ Date earlyMergeStartDate = null;
|
|
|
//如果当前工序作业不是合并加工
|
|
|
if (!apsProcessOperationDo.getProcessway().equals("合并加工")) {
|
|
|
int count = apsProcessOperationProcessEquDao.selectHaveOtherDeviceCount(processdeviceid, apsProcessOperationProcessEquDoId);
|
|
@@ -409,21 +411,28 @@ public class ApsReportRecordsServiceImpl extends ServiceImpl<ApsReportRecordsDao
|
|
|
return R.error("该设备当前加工中的作业还未报工,不能开工新的作业");
|
|
|
}
|
|
|
} else {
|
|
|
- List<ApsProcessOperationProcessEquDo> sameDeviceList = apsProcessOperationProcessEquDao.selectHaveOtherDevice(processdeviceid, apsProcessOperationProcessEquDoId);
|
|
|
+ List<ApsProcessOperationProcessEquDo> sameDeviceList = apsProcessOperationProcessEquDao.selectHaveOtherDevice1(processdeviceid, apsProcessOperationProcessEquDoId);
|
|
|
if (!sameDeviceList.isEmpty()) {
|
|
|
//判断被占用的是否都是合并加工的
|
|
|
// 如果作业的加工方式是合并加工,
|
|
|
// 并且工序作业明细加工设备已有其他作业明细正在加工(待报工记录ID不为空),
|
|
|
// 并且正在加工的作业明细同炉次(原计划开工时间相同)有其他作业明细已经报工,
|
|
|
// 则错误提示:正在加工的炉次还未报工完,不能开工新的炉次
|
|
|
- long count = sameDeviceList.stream().filter(item -> ObjectUtil.isNotEmpty(item.getOldplanstartdate()) && item.getOldplanstartdate().equals(apsProcessOperationProcessEquDo.getPlanstartdate())).count();
|
|
|
+// long count = sameDeviceList.stream().filter(item -> ObjectUtil.isNotEmpty(item.getOldplanstartdate()) && item.getOldplanstartdate().equals(apsProcessOperationProcessEquDo.getPlanstartdate())).count();
|
|
|
// List<String> processIdList = sameDeviceList.stream().map(ApsProcessOperationProcessEquDo::getProcessid).collect(Collectors.toList());
|
|
|
// List<ApsProcessOperationDo> apsProcessOperationDos = new ArrayList<>(apsProcessOperationService.listByIds(processIdList));
|
|
|
// long count = apsProcessOperationDos.stream().filter(item -> !item.getProcessway().equals("合并加工")).count();
|
|
|
- if (count > 0) {
|
|
|
- log.error("存在其他已占用设备:{},不为合并加工工序(原计划开工时间相同)的作业,计划开工时间:{}", processdeviceid, apsProcessOperationProcessEquDo.getPlanstartdate());
|
|
|
- return R.error("正在加工的炉次还未报工完,不能开工新的炉次");
|
|
|
+ ApsProcessOperationProcessEquDo startingEqu = sameDeviceList.get(0);
|
|
|
+ ApsReportRecordsDo startingRecord = this.baseMapper.getOneByEquId(startingEqu.getId());
|
|
|
+ earlyMergeStartDate = startingRecord.getStartworktime();
|
|
|
+ if (ObjectUtil.isNotEmpty(startingRecord)){
|
|
|
+ int count = apsProcessOperationProcessEquDao.selectHaveOtherDevice2(processdeviceid,startingRecord.getHeatnumber(),DateUtil.format(startingRecord.getStartworktime(),"yyyy-MM"));
|
|
|
+ if (count > 0) {
|
|
|
+ log.error("存在其他已占用设备:{},不为合并加工工序的作业,开工时间:{},炉号:{}", processdeviceid, startingRecord.getStartworktime(),startingRecord.getHeatnumber());
|
|
|
+ return R.error("正在加工的炉次还未报工完,不能开工新的炉次");
|
|
|
+ }
|
|
|
}
|
|
|
+
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -459,7 +468,11 @@ public class ApsReportRecordsServiceImpl extends ServiceImpl<ApsReportRecordsDao
|
|
|
apsReportRecordsDo.setChiefoperatorid(currentUser.getId());
|
|
|
apsReportRecordsDo.setChiefoperatorname(currentUser.getName());
|
|
|
//开工时间
|
|
|
- apsReportRecordsDo.setStartworktime(DateUtil.date());
|
|
|
+ if (ObjectUtil.isNotEmpty(earlyMergeStartDate)){
|
|
|
+ apsReportRecordsDo.setStartworktime(earlyMergeStartDate);
|
|
|
+ }else {
|
|
|
+ apsReportRecordsDo.setStartworktime(DateUtil.date());
|
|
|
+ }
|
|
|
// //报工时间
|
|
|
// apsReportRecordsDo.setReportworktime(DateUtil.date());
|
|
|
//报工状态
|
|
@@ -540,7 +553,7 @@ public class ApsReportRecordsServiceImpl extends ServiceImpl<ApsReportRecordsDao
|
|
|
//如果炉次号是新开的炉次号,则实际开工时间=报工记录的开工时间;
|
|
|
//如果炉次号是已开工的炉次号,则实际开工时间=该合并作业明细的实际开工时间;
|
|
|
if (createNewHeat) {
|
|
|
- if (ObjectUtil.isEmpty(apsReportRecordsDo.getStartworktime())) {
|
|
|
+ if (ObjectUtil.isNotEmpty(apsReportRecordsDo.getStartworktime())) {
|
|
|
startWorkTime = apsReportRecordsDo.getStartworktime();
|
|
|
}
|
|
|
} else {
|
|
@@ -1036,7 +1049,7 @@ public class ApsReportRecordsServiceImpl extends ServiceImpl<ApsReportRecordsDao
|
|
|
int needDoRoll = unfinishroll - apsProcessOperationProcessEquDo.getCancelroll();
|
|
|
if (needDoRoll <= 0) {
|
|
|
Date finishWorkTime = DateUtil.date();
|
|
|
- if (ObjectUtil.isEmpty(apsReportRecordsDo.getReportworktime())) {
|
|
|
+ if (ObjectUtil.isNotEmpty(apsReportRecordsDo.getReportworktime())) {
|
|
|
finishWorkTime = apsReportRecordsDo.getReportworktime();
|
|
|
}
|
|
|
processEquWrapper.set(ApsProcessOperationProcessEquDo::getClosestatus, "已完工")
|
|
@@ -1100,8 +1113,8 @@ public class ApsReportRecordsServiceImpl extends ServiceImpl<ApsReportRecordsDao
|
|
|
finishWorkTime = apsReportRecordsDo.getStartworktime();
|
|
|
}
|
|
|
processEquWrapper.set(ApsProcessOperationProcessEquDo::getActualfinishdate, finishWorkTime);
|
|
|
- processEquWrapper.set(ApsProcessOperationProcessEquDo::getPlanstartdate, DateUtil.offsetMinute(finishWorkTime, -1 * (int) DateUtil.between(apsProcessOperationProcessEquDo.getPlanenddate(), apsProcessOperationProcessEquDo.getPlanstartdate(), DateUnit.MINUTE)));
|
|
|
- processEquWrapper.set(ApsProcessOperationProcessEquDo::getPlanenddate, finishWorkTime);
|
|
|
+// processEquWrapper.set(ApsProcessOperationProcessEquDo::getPlanstartdate, DateUtil.offsetMinute(finishWorkTime, -1 * (int) DateUtil.between(apsProcessOperationProcessEquDo.getPlanenddate(), apsProcessOperationProcessEquDo.getPlanstartdate(), DateUnit.MINUTE)));
|
|
|
+// processEquWrapper.set(ApsProcessOperationProcessEquDo::getPlanenddate, finishWorkTime);
|
|
|
|
|
|
}
|
|
|
}
|
|
@@ -1912,7 +1925,7 @@ public class ApsReportRecordsServiceImpl extends ServiceImpl<ApsReportRecordsDao
|
|
|
//报工记录的开工时间=其他同炉次的作业的最早开工时间
|
|
|
//设置报工记录的开工时间不可编辑
|
|
|
if (apsProcessOperationDo.getProcessway().equals("合并加工")){
|
|
|
- String earlyTime = this.baseMapper.selectEarlyMergeByHeat(processequid,apsProcessOperationProcessEquDo.getProcessdeviceid(),apsReportRecordsDo.getHeatnumber());
|
|
|
+ String earlyTime = this.baseMapper.selectEarlyMergeByHeat(processequid,apsProcessOperationProcessEquDo.getProcessdeviceid(),apsReportRecordsDo.getHeatnumber(),DateUtil.format(apsReportRecordsDo.getStartworktime(),"yyyy-MM"));
|
|
|
if (ObjectUtil.isNotEmpty(earlyTime)){
|
|
|
res = earlyTime;
|
|
|
}
|