|
@@ -1942,8 +1942,61 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
|
|
this.baseMapper.updateBatchNumberByBorrow(batchnumber, processoperationequid, joboutputmaterialid);
|
|
this.baseMapper.updateBatchNumberByBorrow(batchnumber, processoperationequid, joboutputmaterialid);
|
|
|
|
|
|
|
|
|
|
- //被借调作业=该在制品的作业输出物料ID对应所有后道工序作业中计划开工时间最晚的,剩余开工卷数>0的作业
|
|
|
|
|
|
+ //分配被借调作业明细=备料在制品所有后道作业明细中计划加工卷数-已开工卷数-已借调卷数>0的作业明细中,
|
|
|
|
+ // 优先取已取消卷数>已借调卷数,并且计划开工时间最晚的一个作业明细,
|
|
|
|
+ // 如果没有已取消卷数>已借调卷数的作业明细,则取计划开工时间最晚的一个作业明细
|
|
|
|
+
|
|
|
|
+ //查询被借调作业明细的信息
|
|
|
|
+ ApsProcessOperationProcessEquDo borrowOperationEqu = apsProcessOperationProcessEquService.getById(processoperationequid);
|
|
|
|
+ //查询被借调作业的信息
|
|
ApsProcessOperationDo needBorrowOperation = apsProcessOperationDao.selectNeedBorrowOperation(joboutputmaterialid);
|
|
ApsProcessOperationDo needBorrowOperation = apsProcessOperationDao.selectNeedBorrowOperation(joboutputmaterialid);
|
|
|
|
+ List<ApsProcessOperationProcessEquDo> apsProcessOperationProcessEquDoList = apsProcessOperationProcessEquService.list(new QueryWrapper<ApsProcessOperationProcessEquDo>().lambda().eq(ApsProcessOperationProcessEquDo::getPreviousprocessesids, borrowOperationEqu));
|
|
|
|
+ //所有后道作业明细中计划加工卷数-已开工卷数-已借调卷数>0的作业明细
|
|
|
|
+ List<ApsProcessOperationProcessEquDo> collect1 = apsProcessOperationProcessEquDoList.stream().filter(item -> (item.getPlanprocessrall() - item.getStartingroll() - item.getSecondroll()) > 0).collect(Collectors.toList());
|
|
|
|
+ //优先取已取消卷数>已借调卷数
|
|
|
|
+ List<ApsProcessOperationProcessEquDo> collect = apsProcessOperationProcessEquDoList.stream().filter(item -> (item.getCancelroll() > item.getSecondroll())).collect(Collectors.toList());
|
|
|
|
+ ApsProcessOperationProcessEquDo needBorrowOperationEqu = null;
|
|
|
|
+ if (ObjectUtil.isNotEmpty(collect)) {
|
|
|
|
+ //并且计划开工时间最晚的一个作业明细
|
|
|
|
+ needBorrowOperationEqu = collect.stream().sorted(Comparator.comparing(ApsProcessOperationProcessEquDo::getPlanstartdate).reversed()).findFirst().orElse(null);
|
|
|
|
+ } else {
|
|
|
|
+ //如果没有已取消卷数>已借调卷数的作业明细,则取计划开工时间最晚的一个作业明细
|
|
|
|
+ needBorrowOperationEqu = collect1.stream().sorted(Comparator.comparing(ApsProcessOperationProcessEquDo::getPlanstartdate).reversed()).findFirst().orElse(null);
|
|
|
|
+ }
|
|
|
|
+ if (ObjectUtil.isNotEmpty(needBorrowOperationEqu)) {
|
|
|
|
+ //更新明细的已借调卷数
|
|
|
|
+ //更新工序作业的一借调卷数
|
|
|
|
+ Integer secondroll = needBorrowOperationEqu.getSecondroll() + 1;
|
|
|
|
+ ApsProcessOperationProcessEquDo needUpdateProcessEqu = new ApsProcessOperationProcessEquDo();
|
|
|
|
+ needUpdateProcessEqu.setId(needBorrowOperationEqu.getId());
|
|
|
|
+ needUpdateProcessEqu.setSecondroll(secondroll);
|
|
|
|
+ apsProcessOperationProcessEquService.updateById(needUpdateProcessEqu);
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 已借调卷数=已借调卷数+1
|
|
|
|
+ * 如果已借调卷数>已取消卷数,
|
|
|
|
+ * 临时计算本次取消卷数=1
|
|
|
|
+ * 根据被借调作业明细的本次取消卷数取消和更新作业明细,参见【取消和更新作业明细】
|
|
|
|
+ */
|
|
|
|
+ if (secondroll > needBorrowOperationEqu.getCancelroll()) {
|
|
|
|
+ needBorrowOperationEqu.setSecondroll(secondroll);
|
|
|
|
+ R r = apsProcessOperationService.cancelProcessOperationEqu(1, needBorrowOperation, needBorrowOperationEqu)
|
|
|
|
+ if (!r.getCode().equals("200")) {
|
|
|
|
+ throw new CustomException(r.getMsg());
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 更新被借调作业
|
|
|
|
+ * 已借调卷数=已借调卷数+1,
|
|
|
|
+ * 如果已借调卷数>已取消卷数,
|
|
|
|
+ * 临时计算本次取消卷数=1
|
|
|
|
+ * 已取消卷数=已取消卷数+本次取消卷数
|
|
|
|
+ * 根据被借调作业的本次取消卷数取消和更新该工序作业,参见【取消和更新工序作业】
|
|
|
|
+ */
|
|
if (ObjectUtil.isNotEmpty(needBorrowOperation)) {
|
|
if (ObjectUtil.isNotEmpty(needBorrowOperation)) {
|
|
//更新工序作业的一借调卷数
|
|
//更新工序作业的一借调卷数
|
|
Integer secondroll = needBorrowOperation.getSecondroll() + 1;
|
|
Integer secondroll = needBorrowOperation.getSecondroll() + 1;
|