|
@@ -37,6 +37,7 @@ import org.springframework.transaction.annotation.Transactional;
|
|
|
import java.math.BigDecimal;
|
|
|
import java.math.RoundingMode;
|
|
|
import java.text.SimpleDateFormat;
|
|
|
+import java.time.LocalDateTime;
|
|
|
import java.time.ZoneId;
|
|
|
import java.util.*;
|
|
|
import java.util.concurrent.TimeUnit;
|
|
@@ -497,7 +498,8 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
|
|
|
String idStrs = CollUtil.join(hasIds, "','");
|
|
|
idStrs = "'" + idStrs + "'";
|
|
|
// 查询存在未锁定的作业坯料计划
|
|
|
- List<ApsBlankOrderVo> fbNotLock = apsBlankOrderDao.getFbNotLock(idStrs,tenantId);
|
|
|
+// List<ApsBlankOrderVo> fbNotLock = apsBlankOrderDao.getFbNotLock(idStrs,tenantId);
|
|
|
+ List<ApsBlankOrderVo> fbNotLock = apsBlankOrderDao.getOrdersHasNotLockProcess(idStrs,tenantId);
|
|
|
if (fbNotLock != null && fbNotLock.size() > 0) {
|
|
|
apsBlankOrders.addAll(fbNotLock);
|
|
|
}
|
|
@@ -720,6 +722,8 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
|
|
|
// 获取所有订单工序
|
|
|
List<ApsProcessOperationDo> operationDos = apsProcessOperationService.list(new LambdaQueryWrapper<ApsProcessOperationDo>()
|
|
|
.eq(ApsProcessOperationDo::getBlankid, apsBlankOrderVo.getId()));
|
|
|
+ // 锁定的合并工序缓存
|
|
|
+ Map<String,ProductionProcesses> lockHbPp = new HashMap<>();
|
|
|
// 转换工序模型数据
|
|
|
for (ApsProcessOperationDo operationDo : operationDos) {
|
|
|
ProductionProcesses processes = new ProductionProcesses();
|
|
@@ -824,13 +828,86 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
|
|
|
}
|
|
|
|
|
|
if (SaveConstans.ProcessWay.PROCESS_WAY_MERGE.equals(productprocess)) {
|
|
|
- // 合并生产工序
|
|
|
- ApsProcessOperationVo processOperationVo = new ApsProcessOperationVo();
|
|
|
- BeanUtil.copyProperties(operationDo, processOperationVo);
|
|
|
- processOperationVo.setProduceOrder(produceOrder);
|
|
|
- processOperationVo.setDeliverydate(apsBlankOrderVo.getDeliverydate());
|
|
|
- processOperationVo.setApsBlankOrderVo(apsBlankOrderVo);
|
|
|
- processOperationMs.add(processOperationVo);
|
|
|
+ // 锁定的作业
|
|
|
+ if(LOCKMARK_Y.equals(operationDo.getLockmark())){
|
|
|
+// List<ApsProcessOperationProcessEquDo> popes = processOperationProcessEquService.list(new LambdaQueryWrapper<ApsProcessOperationProcessEquDo>()
|
|
|
+// .eq(ApsProcessOperationProcessEquDo::getProcessid, operationDo.getId()));
|
|
|
+ List<ApsProcessOperationProcessEquDo> popes = apsBlankOrderDao.getGroupProcessOperationProcessEqus(operationDo.getId());
|
|
|
+ if(popes != null && popes.size()>0){
|
|
|
+ for (ApsProcessOperationProcessEquDo pope : popes) {
|
|
|
+ // 已存在的合并工序则添加上下道工序
|
|
|
+ if(lockHbPp.containsKey(pope.getProcessdeviceid())){
|
|
|
+ ProductionProcesses processes1 = lockHbPp.get(pope.getProcessdeviceid());
|
|
|
+ // 上道工序
|
|
|
+ if (StringUtils.isNotBlank(operationDo.getPreviousprocessid())) {
|
|
|
+ List<String> pres = new ArrayList<>();
|
|
|
+ pres.addAll(Arrays.asList(operationDo.getPreviousprocessid().split(",")));
|
|
|
+ pres.addAll(processes1.getPreviousProcessesIds());
|
|
|
+ processes1.setPreviousProcessesIds(pres);
|
|
|
+ }
|
|
|
+ // 下道工序
|
|
|
+ if (StringUtils.isNotBlank(operationDo.getNextprocessid())) {
|
|
|
+ List<String> nexts = new ArrayList<>();
|
|
|
+ nexts.addAll(Arrays.asList(operationDo.getNextprocessid().split(",")));
|
|
|
+ nexts.addAll(processes1.getNextProcessesIds());
|
|
|
+ processes1.setNextProcessesIds(nexts);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 不存在此合并工序则新增一个合并作业
|
|
|
+ else{
|
|
|
+ ProductionProcesses processeshb = new ProductionProcesses();
|
|
|
+ // 模型ID
|
|
|
+ processeshb.setId(SecurityUtil.getUUID());
|
|
|
+ // 业务表主键ID
|
|
|
+ List<String> bss = new ArrayList<>();
|
|
|
+ bss.add(operationDo.getId());
|
|
|
+ processeshb.setBsProcessesId(bss);
|
|
|
+ List<String> opeqs = new ArrayList<>();
|
|
|
+ opeqs.add(pope.getProcessdeviceid());
|
|
|
+ processeshb.setOptionalEquipments(opeqs);
|
|
|
+ // 批次
|
|
|
+ processeshb.setProducePcNum(operationDo.getPlanprocessrall());
|
|
|
+ processeshb.setProcessType(operationDo.getProcess());
|
|
|
+ // 单次加工时长
|
|
|
+ processeshb.setUnitProduceTime(operationDo.getOnceprocessmin().intValue());
|
|
|
+ processeshb.setProduceTime(operationDo.getOnceprocessmin().intValue());
|
|
|
+ if (operationDo.getMinflowwaitmin() != null) {
|
|
|
+ processeshb.setMinWaitTime(operationDo.getMinflowwaitmin().intValue());
|
|
|
+ }
|
|
|
+ if (operationDo.getMaxflowwaitmin() != null) {
|
|
|
+ processeshb.setMaxWaitTime(operationDo.getMaxflowwaitmin().intValue());
|
|
|
+ }
|
|
|
+ processes.setIfLock(true);
|
|
|
+ processes.setEquipmentId(pope.getProcessdeviceid());
|
|
|
+ processes.setStartTime(pope.getPlanstartdate().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime());
|
|
|
+ processes.setEndTime(pope.getPlanenddate().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime());
|
|
|
+ // 上道工序
|
|
|
+ if (StringUtils.isNotBlank(operationDo.getPreviousprocessid())) {
|
|
|
+ List<String> pres = new ArrayList<>();
|
|
|
+ pres.addAll(Arrays.asList(operationDo.getPreviousprocessid().split(",")));
|
|
|
+ processes.setPreviousProcessesIds(pres);
|
|
|
+ }
|
|
|
+ // 下道工序
|
|
|
+ if (StringUtils.isNotBlank(operationDo.getNextprocessid())) {
|
|
|
+ List<String> nexts = new ArrayList<>();
|
|
|
+ nexts.addAll(Arrays.asList(operationDo.getNextprocessid().split(",")));
|
|
|
+ processes.setNextProcessesIds(nexts);
|
|
|
+ }
|
|
|
+
|
|
|
+ lockHbPp.put(pope.getProcessdeviceid(),processes);
|
|
|
+ processesList.add(processes);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }else{
|
|
|
+ // 合并生产工序
|
|
|
+ ApsProcessOperationVo processOperationVo = new ApsProcessOperationVo();
|
|
|
+ BeanUtil.copyProperties(operationDo, processOperationVo);
|
|
|
+ processOperationVo.setProduceOrder(produceOrder);
|
|
|
+ processOperationVo.setDeliverydate(produceOrder.getDeliveryDate());
|
|
|
+ processOperationVo.setApsBlankOrderVo(apsBlankOrderVo);
|
|
|
+ processOperationMs.add(processOperationVo);
|
|
|
+ }
|
|
|
} else {
|
|
|
// 非合并生产工序
|
|
|
|
|
@@ -876,6 +953,18 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
|
|
|
}
|
|
|
processes.setPrepressworkmin(operationDo.getPrepressworkmin() == null ? null : operationDo.getPrepressworkmin().intValue());
|
|
|
processes.setCutfinishmin(operationDo.getCutfinishmin() == null ? null : operationDo.getCutfinishmin().intValue());
|
|
|
+ // 锁定的作业加上锁定标识
|
|
|
+ if(LOCKMARK_Y.equals(operationDo.getLockmark())){
|
|
|
+ ApsProcessOperationProcessEquDo processEquServiceOne = processOperationProcessEquService.getOne(new LambdaQueryWrapper<ApsProcessOperationProcessEquDo>()
|
|
|
+ .eq(ApsProcessOperationProcessEquDo::getProcessid, operationDo.getId()));
|
|
|
+ processes.setIfLock(true);
|
|
|
+ processes.setEquipmentId(processEquServiceOne.getProcessdeviceid());
|
|
|
+ List<String> opeqs = new ArrayList<>();
|
|
|
+ opeqs.add(processEquServiceOne.getProcessdeviceid());
|
|
|
+ processes.setOptionalEquipments(opeqs);
|
|
|
+ processes.setStartTime(processEquServiceOne.getPlanstartdate().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime());
|
|
|
+ processes.setEndTime(processEquServiceOne.getPlanenddate().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime());
|
|
|
+ }
|
|
|
processesList.add(processes);
|
|
|
}
|
|
|
}
|