|
@@ -1,6 +1,8 @@
|
|
|
package com.rongwei.bscommon.sys.service.impl;
|
|
|
|
|
|
import cn.hutool.core.bean.BeanUtil;
|
|
|
+import cn.hutool.core.collection.CollUtil;
|
|
|
+import cn.hutool.core.collection.ListUtil;
|
|
|
import cn.hutool.core.date.DateField;
|
|
|
import cn.hutool.core.date.DateUtil;
|
|
|
import cn.hutool.json.JSONConfig;
|
|
@@ -166,6 +168,15 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
public void blankOrderAps(List<ApsBlankOrderVo> apsBlankOrders){
|
|
|
assert apsBlankOrders != null : "排程订单不能为空";
|
|
|
+ // 合并待发布未锁定的订单一起排程
|
|
|
+ List<String> hasIds = apsBlankOrders.stream().map(v -> v.getId()).collect(Collectors.toList());
|
|
|
+ String idStrs = CollUtil.join(hasIds, "','");
|
|
|
+ idStrs = "'"+idStrs+"'";
|
|
|
+ // 查询待发布未锁定的所有坯料计划
|
|
|
+ List<ApsBlankOrderVo> fbNotLock = apsBlankOrderDao.getFbNotLock(idStrs);
|
|
|
+ if(fbNotLock != null && fbNotLock.size()>0){
|
|
|
+ apsBlankOrders.addAll(fbNotLock);
|
|
|
+ }
|
|
|
// 先删除所有作业的明细
|
|
|
List<String> blankids = apsBlankOrders.stream().map(v->v.getId()).collect(Collectors.toList());
|
|
|
processOperationProcessEquService.remove(new LambdaUpdateWrapper<ApsProcessOperationProcessEquDo>().in(ApsProcessOperationProcessEquDo::getBlankid,blankids));
|
|
@@ -236,10 +247,8 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
|
|
|
}
|
|
|
}
|
|
|
if(apsProcessOperationProcessEquDos != null && apsProcessOperationProcessEquDos.size()>0){
|
|
|
-
|
|
|
// 再保存新数据
|
|
|
processOperationProcessEquService.saveBatch(apsProcessOperationProcessEquDos);
|
|
|
-
|
|
|
// 回写订单排程交货期
|
|
|
Map<String,Date> orderDeliveryTime = new HashMap<>();
|
|
|
for (ProductionProcesses process : lastProcess) {
|
|
@@ -357,7 +366,7 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
|
|
|
List<ApsProcessOperationProcessEquDo> processEqus = processOperationProcessEquService.list(new LambdaQueryWrapper<ApsProcessOperationProcessEquDo>()
|
|
|
.eq(ApsProcessOperationProcessEquDo::getProcessdeviceid, equIds)
|
|
|
.ge(ApsProcessOperationProcessEquDo::getPlanstartdate,productionScheduleVo.getApsPlanStartDate())
|
|
|
-// .eq(ApsProcessOperationProcessEquDo::getLockmark,SaveConstans.LockmarkType.LOCKMARK_Y)
|
|
|
+ .orderByAsc(ApsProcessOperationProcessEquDo::getPlanstartdate)
|
|
|
);
|
|
|
if(processEqus != null && processEqus.size()>0){
|
|
|
List<EquipmentRunTime> equipmentRunTimes = new ArrayList<>();
|
|
@@ -399,8 +408,12 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
|
|
|
// 单次加工时长
|
|
|
processes.setUnitProduceTime(operationDo.getOnceprocessmin().intValue());
|
|
|
processes.setProduceTime(processes.getUnitProduceTime()*processes.getProducePcNum());
|
|
|
- processes.setMinWaitTime(operationDo.getMinflowwaitmin().intValue());
|
|
|
- processes.setMaxWaitTime(operationDo.getMaxflowwaitmin().intValue());
|
|
|
+ if(operationDo.getMinflowwaitmin() != null){
|
|
|
+ processes.setMinWaitTime(operationDo.getMinflowwaitmin().intValue());
|
|
|
+ }
|
|
|
+ if(operationDo.getMaxflowwaitmin() != null){
|
|
|
+ processes.setMaxWaitTime(operationDo.getMaxflowwaitmin().intValue());
|
|
|
+ }
|
|
|
// 上道工序
|
|
|
if(StringUtils.isNotBlank(operationDo.getPreviousprocessid())){
|
|
|
processes.setPreviousProcessesIds(Arrays.asList(operationDo.getPreviousprocessid().split(",")));
|
|
@@ -655,9 +668,13 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
|
|
|
// 批次
|
|
|
processes.setProducePcNum(1);
|
|
|
// 最小等待时长
|
|
|
- processes.setMinWaitTime(processOperationM.getMinflowwaitmin().intValue());
|
|
|
+ if(processOperationM.getMinflowwaitmin() != null){
|
|
|
+ processes.setMinWaitTime(processOperationM.getMinflowwaitmin().intValue());
|
|
|
+ }
|
|
|
// 最大等待时长
|
|
|
- processes.setMaxWaitTime(processOperationM.getMaxflowwaitmin().intValue());
|
|
|
+ if(processOperationM.getMaxflowwaitmin() != null){
|
|
|
+ processes.setMaxWaitTime(processOperationM.getMaxflowwaitmin().intValue());
|
|
|
+ }
|
|
|
// 合并加工的为瓶颈工序
|
|
|
processes.setBottleneck(true);
|
|
|
// 单次加工时长
|