|
@@ -53,11 +53,36 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
|
|
|
private ApsProductionOrderService apsProductionOrderService;
|
|
|
|
|
|
/**
|
|
|
- *
|
|
|
- * @param apsBlankOrders
|
|
|
+ * 锁定、解锁
|
|
|
+ * @param orderLockVo
|
|
|
+ * @throws Exception
|
|
|
*/
|
|
|
- private void apsCheck(List<ApsBlankOrderVo> apsBlankOrders){
|
|
|
+ @Override
|
|
|
+ public void orderLock(OrderLockVo orderLockVo) throws Exception {
|
|
|
+ if(StringUtils.isNotBlank(orderLockVo.getLockMark())){
|
|
|
+ if(orderLockVo.getBlackOrderId() != null && orderLockVo.getBlackOrderId().size()>0){
|
|
|
+ List<ApsBlankOrderDo> blankOrderDos = new ArrayList<>();
|
|
|
+ for (String id : orderLockVo.getBlackOrderId()) {
|
|
|
+ ApsBlankOrderDo blankOrderDo = new ApsBlankOrderDo();
|
|
|
+ blankOrderDo.setId(id);
|
|
|
+ blankOrderDo.setLockmark(orderLockVo.getLockMark());
|
|
|
+ blankOrderDos.add(blankOrderDo);
|
|
|
+ }
|
|
|
+ if(blankOrderDos != null && blankOrderDos.size()>0){
|
|
|
+ this.updateBatchById(blankOrderDos);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
+ /**
|
|
|
+ * 重新排程
|
|
|
+ * 所有待发布的未锁定的订单重新排程
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public void apsReScheduling() throws Exception{
|
|
|
+ List<ApsBlankOrderVo> notLockOrders = apsBlankOrderDao.getNotLockOrders();
|
|
|
+ blankOrderAps(notLockOrders);
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -65,10 +90,6 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
|
|
|
* @param apsPlanVo
|
|
|
*/
|
|
|
public void apsScheduling(ApsPlanVo apsPlanVo) throws Exception{
|
|
|
- // 设置批量排程默认开始时间(当前时间向后移8小时)
|
|
|
- if(apsPlanVo.getApsPlanStartDate() == null){
|
|
|
- apsPlanVo.setApsPlanStartDate(DateUtil.date().offset(DateField.HOUR,8));
|
|
|
- }
|
|
|
List<ApsBlankOrderVo> apsBlankOrders = new ArrayList<>();
|
|
|
if(apsPlanVo.getApsProductionOrders() != null){
|
|
|
for (ApsProductionOrderDo apsProductionOrder : apsPlanVo.getApsProductionOrders()) {
|
|
@@ -79,8 +100,17 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
|
|
|
}
|
|
|
}
|
|
|
apsPlanVo.setApsBlankOrderDos(apsBlankOrders);
|
|
|
+ blankOrderAps(apsBlankOrders);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 生产订单排程
|
|
|
+ * @param apsBlankOrders
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public void blankOrderAps(List<ApsBlankOrderVo> apsBlankOrders){
|
|
|
// 模型转换
|
|
|
- ProductionScheduleVo productionScheduleVo = apsPlanModelSet(apsPlanVo);
|
|
|
+ ProductionScheduleVo productionScheduleVo = apsPlanModelSet(apsBlankOrders);
|
|
|
System.out.println("排程数据:" + JSONUtil.toJsonStr(productionScheduleVo));
|
|
|
// APS平台排程接口调用
|
|
|
ProductionScheduleRetVo productionScheduleRetVo = rwApsServer.productionSchedule(productionScheduleVo);
|
|
@@ -188,16 +218,13 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
|
|
|
|
|
|
/**
|
|
|
* 原始订单表数据转换APS平台模型数据
|
|
|
- * @param apsPlanVo
|
|
|
+ * @param apsBlankOrders
|
|
|
* @return
|
|
|
*/
|
|
|
@Override
|
|
|
- public ProductionScheduleVo apsPlanModelSet(ApsPlanVo apsPlanVo){
|
|
|
- List<ApsBlankOrderVo> apsBlankOrders = apsPlanVo.getApsBlankOrderDos();
|
|
|
+ public ProductionScheduleVo apsPlanModelSet(List<ApsBlankOrderVo> apsBlankOrders){
|
|
|
ProductionScheduleVo productionScheduleVo = new ProductionScheduleVo();
|
|
|
- // 排程计划开始时间
|
|
|
productionScheduleVo.setProductionScheduleId("批量排程");
|
|
|
- productionScheduleVo.setApsPlanStartDate(apsPlanVo.getApsPlanStartDate());
|
|
|
List<ApsScheduleConfigDo> apsConfigs = apsScheduleConfigService.list();
|
|
|
if (apsConfigs != null && apsConfigs.size()>0){
|
|
|
ApsScheduleConfigDo apsScheduleConfig = apsConfigs.get(0);
|
|
@@ -209,6 +236,12 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
|
|
|
roamTime.put("WORKSHOP_IN",apsScheduleConfig.getWorkshopin());
|
|
|
roamTime.put("WORKSHOP_CROSS",apsScheduleConfig.getWorkshopcross());
|
|
|
productionScheduleVo.setRoamTime(roamTime);
|
|
|
+ // 排程计划开始时间
|
|
|
+ int a = 8;
|
|
|
+ if(apsScheduleConfig.getStartschedulerun() != null){
|
|
|
+ a = apsScheduleConfig.getStartschedulerun();
|
|
|
+ }
|
|
|
+ productionScheduleVo.setApsPlanStartDate(DateUtil.date().offset(DateField.HOUR,a));
|
|
|
}else{
|
|
|
throw new CustomException("排程参数缺失");
|
|
|
}
|
|
@@ -258,16 +291,20 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
|
|
|
equipment.setWorkshopname(checkItemsD.getUsedeptname());
|
|
|
equipment.setFactoryid(checkItemsD.getTenantid());
|
|
|
equipment.setFactory(checkItemsD.getOwnedfactory());
|
|
|
- // 查询设备已排程的时间段
|
|
|
+ // 查询设备锁定的已排程的时间段
|
|
|
List<ApsProcessOperationProcessEquDo> processEqus = processOperationProcessEquService.list(new LambdaQueryWrapper<ApsProcessOperationProcessEquDo>()
|
|
|
- .eq(ApsProcessOperationProcessEquDo::getProcessdeviceid, equIds).ge(ApsProcessOperationProcessEquDo::getPlanstartdate,DateUtil.date()));
|
|
|
+ .eq(ApsProcessOperationProcessEquDo::getProcessdeviceid, equIds)
|
|
|
+ .ge(ApsProcessOperationProcessEquDo::getPlanstartdate,productionScheduleVo.getApsPlanStartDate())
|
|
|
+ .eq(ApsProcessOperationProcessEquDo::getLockmark,SaveConstans.LockmarkType.LOCKMARK_Y));
|
|
|
if(processEqus != null && processEqus.size()>0){
|
|
|
List<EquipmentRunTime> equipmentRunTimes = new ArrayList<>();
|
|
|
for (ApsProcessOperationProcessEquDo equs : processEqus) {
|
|
|
EquipmentRunTime er = new EquipmentRunTime();
|
|
|
er.setStartRunTime(equs.getPlanstartdate().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime());
|
|
|
er.setEndRunTime(equs.getPlanenddate().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime());
|
|
|
+ equipmentRunTimes.add(er);
|
|
|
}
|
|
|
+ equipment.setEquipmentRunTimes(equipmentRunTimes);
|
|
|
}
|
|
|
equipmentList.add(equipment);
|
|
|
}
|
|
@@ -308,6 +345,18 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
|
|
|
if(StringUtils.isNotBlank(operationDo.getNextprocessid())){
|
|
|
processes.setNextProcessesIds(Arrays.asList(operationDo.getNextprocessid().split(",")));
|
|
|
}
|
|
|
+ // 连续生产标识设置
|
|
|
+ // 铸轧
|
|
|
+ if("铸轧".equals(processes.getProcessType())){
|
|
|
+ // 合金+宽度
|
|
|
+ processes.setSeriesProduceMark(operationDo.getMetal()+"^_^"+operationDo.getProwidth());
|
|
|
+ }
|
|
|
+ // 冷轧
|
|
|
+ else if("冷轧".equals(processes.getProcessType())){
|
|
|
+ // 合金+输入物料+宽度
|
|
|
+ processes.setSeriesProduceMark(operationDo.getMetal()+"^_^"+operationDo.getPlaninput()+"^_^"+operationDo.getProwidth());
|
|
|
+ }
|
|
|
+
|
|
|
processesList.add(processes);
|
|
|
}
|
|
|
}
|