|
@@ -20,6 +20,7 @@ import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
import java.math.BigDecimal;
|
|
import java.math.BigDecimal;
|
|
|
|
+import java.time.LocalDateTime;
|
|
import java.time.ZoneId;
|
|
import java.time.ZoneId;
|
|
import java.util.*;
|
|
import java.util.*;
|
|
import java.util.stream.Collectors;
|
|
import java.util.stream.Collectors;
|
|
@@ -48,6 +49,16 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
|
|
private ApsProcessOperationProcessEquServiceImpl processOperationProcessEquService;
|
|
private ApsProcessOperationProcessEquServiceImpl processOperationProcessEquService;
|
|
@Autowired
|
|
@Autowired
|
|
private ApsScheduleConfigService apsScheduleConfigService;
|
|
private ApsScheduleConfigService apsScheduleConfigService;
|
|
|
|
+ @Autowired
|
|
|
|
+ private ApsProductionOrderService apsProductionOrderService;
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ *
|
|
|
|
+ * @param apsBlankOrders
|
|
|
|
+ */
|
|
|
|
+ private void apsCheck(List<ApsBlankOrderVo> apsBlankOrders){
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
|
|
/**
|
|
/**
|
|
* 订单批量排程
|
|
* 订单批量排程
|
|
@@ -77,6 +88,8 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
|
|
List<ApsProcessOperationProcessEquDo> apsProcessOperationProcessEquDos = new ArrayList<>();
|
|
List<ApsProcessOperationProcessEquDo> apsProcessOperationProcessEquDos = new ArrayList<>();
|
|
// 作业ID集合
|
|
// 作业ID集合
|
|
List<String> zyIds = new ArrayList<>();
|
|
List<String> zyIds = new ArrayList<>();
|
|
|
|
+ // 最后节点集合
|
|
|
|
+ List<ProductionProcesses> lastProcess = new ArrayList<>();
|
|
if(productionScheduleRetVo.getProcesses() != null && productionScheduleRetVo.getProcesses().size()>0){
|
|
if(productionScheduleRetVo.getProcesses() != null && productionScheduleRetVo.getProcesses().size()>0){
|
|
for (ProductionProcesses process : productionScheduleRetVo.getProcesses()) {
|
|
for (ProductionProcesses process : productionScheduleRetVo.getProcesses()) {
|
|
// 非合并生产工序
|
|
// 非合并生产工序
|
|
@@ -93,7 +106,7 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
|
|
apsProcessOperationProcessEqu.setPlanenddate(Date.from(process.getEndTime().atZone(ZoneId.systemDefault()).toInstant()));
|
|
apsProcessOperationProcessEqu.setPlanenddate(Date.from(process.getEndTime().atZone(ZoneId.systemDefault()).toInstant()));
|
|
apsProcessOperationProcessEqu.setPlanprocessrall(process.getProducePcNum());
|
|
apsProcessOperationProcessEqu.setPlanprocessrall(process.getProducePcNum());
|
|
apsProcessOperationProcessEquDos.add(apsProcessOperationProcessEqu);
|
|
apsProcessOperationProcessEquDos.add(apsProcessOperationProcessEqu);
|
|
- zyIds.add(process.getId());
|
|
|
|
|
|
+ zyIds.addAll(process.getBsProcessesId());
|
|
}
|
|
}
|
|
// 合并生产工序
|
|
// 合并生产工序
|
|
else {
|
|
else {
|
|
@@ -124,6 +137,11 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
|
|
zyIds.add(k);
|
|
zyIds.add(k);
|
|
});
|
|
});
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ // 是否为最后一个节点
|
|
|
|
+ if(process.getNextProcessesIds() == null || process.getNextProcessesIds().size() == 0){
|
|
|
|
+ lastProcess.add(process);
|
|
|
|
+ }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if(apsProcessOperationProcessEquDos != null && apsProcessOperationProcessEquDos.size()>0){
|
|
if(apsProcessOperationProcessEquDos != null && apsProcessOperationProcessEquDos.size()>0){
|
|
@@ -133,6 +151,35 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
|
|
}
|
|
}
|
|
// 再保存新数据
|
|
// 再保存新数据
|
|
processOperationProcessEquService.saveBatch(apsProcessOperationProcessEquDos);
|
|
processOperationProcessEquService.saveBatch(apsProcessOperationProcessEquDos);
|
|
|
|
+
|
|
|
|
+ // 回写订单排程交货期
|
|
|
|
+ Map<String,Date> orderDeliveryTime = new HashMap<>();
|
|
|
|
+ for (ProductionProcesses process : lastProcess) {
|
|
|
|
+ List<ProduceOrder> produceOrder = process.getProduceOrder();
|
|
|
|
+ if(produceOrder != null && produceOrder.size()>0){
|
|
|
|
+ for (ProduceOrder order : produceOrder) {
|
|
|
|
+ Date endDate = Date.from(process.getEndTime().atZone(ZoneId.systemDefault()).toInstant());
|
|
|
|
+ ApsBlankOrderDo blankOrder = this.getById(order.getId());
|
|
|
|
+ if(orderDeliveryTime.containsKey(blankOrder.getProductionorderid())){
|
|
|
|
+ // 对比取最大值
|
|
|
|
+ if(endDate.compareTo(orderDeliveryTime.get(blankOrder.getProductionorderid()))>0){
|
|
|
|
+ orderDeliveryTime.put(blankOrder.getProductionorderid(),endDate);
|
|
|
|
+ }
|
|
|
|
+ }else{
|
|
|
|
+ orderDeliveryTime.put(blankOrder.getProductionorderid(),endDate);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ // 更新订单的排程交货期
|
|
|
|
+ if(orderDeliveryTime.size()>0){
|
|
|
|
+ orderDeliveryTime.forEach((k,v)->{
|
|
|
|
+ ApsProductionOrderDo apsProductionOrderDo = new ApsProductionOrderDo();
|
|
|
|
+ apsProductionOrderDo.setId(k);
|
|
|
|
+ apsProductionOrderDo.setScheduledeliverydate(v);
|
|
|
|
+ apsProductionOrderService.updateById(apsProductionOrderDo);
|
|
|
|
+ });
|
|
|
|
+ }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
@@ -195,16 +242,33 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
|
|
String[] sbIds = operationDo.getCanchoosedeviceid().split(",");
|
|
String[] sbIds = operationDo.getCanchoosedeviceid().split(",");
|
|
for (String equIds : sbIds) {
|
|
for (String equIds : sbIds) {
|
|
AspCheckItemsDo checkItemsD = eqMaps.get(equIds);
|
|
AspCheckItemsDo checkItemsD = eqMaps.get(equIds);
|
|
- Equipment equipment = new Equipment();
|
|
|
|
- equipment.setBsEquipmentId(equIds);
|
|
|
|
- equipment.setId(equIds);
|
|
|
|
- equipment.setEquipmentName(checkItemsD.getCheckitemname());
|
|
|
|
- equipment.setWorkshopid(checkItemsD.getUsedeptid());
|
|
|
|
- equipment.setWorkshopname(checkItemsD.getUsedeptname());
|
|
|
|
- equipment.setFactoryid(checkItemsD.getTenantid());
|
|
|
|
- equipment.setFactory(checkItemsD.getOwnedfactory());
|
|
|
|
- optionalEquipments.add(equIds);
|
|
|
|
- equipmentList.add(equipment);
|
|
|
|
|
|
+ if(checkItemsD != null){
|
|
|
|
+ optionalEquipments.add(equIds);
|
|
|
|
+ List<Equipment> eqpts = equipmentList.stream().filter(v -> v.getId().equals(equIds)).collect(Collectors.toList());
|
|
|
|
+ // 设备集合里不存在时新增
|
|
|
|
+ if(eqpts == null || eqpts.size() == 0){
|
|
|
|
+ Equipment equipment = new Equipment();
|
|
|
|
+ equipment.setBsEquipmentId(equIds);
|
|
|
|
+ equipment.setId(equIds);
|
|
|
|
+ equipment.setEquipmentName(checkItemsD.getCheckitemname());
|
|
|
|
+ equipment.setWorkshopid(checkItemsD.getUsedeptid());
|
|
|
|
+ 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()));
|
|
|
|
+ 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());
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ equipmentList.add(equipment);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
@@ -222,7 +286,9 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
|
|
// 模型ID
|
|
// 模型ID
|
|
processes.setId(operationDo.getId());
|
|
processes.setId(operationDo.getId());
|
|
// 业务表主键ID
|
|
// 业务表主键ID
|
|
- processes.setBsProcessesId(operationDo.getId());
|
|
|
|
|
|
+ List<String> bss = new ArrayList<>();
|
|
|
|
+ bss.add(operationDo.getId());
|
|
|
|
+ processes.setBsProcessesId(bss);
|
|
// 工序任务可选设备
|
|
// 工序任务可选设备
|
|
processes.setOptionalEquipments(optionalEquipments);
|
|
processes.setOptionalEquipments(optionalEquipments);
|
|
// 批次
|
|
// 批次
|
|
@@ -412,7 +478,7 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
|
|
processes.setProduceTime(processOperationM.getOnceprocessmin().intValue());
|
|
processes.setProduceTime(processOperationM.getOnceprocessmin().intValue());
|
|
}
|
|
}
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+ processes.getBsProcessesId().add(processOperationM.getId());
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -447,7 +513,10 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
|
|
}
|
|
}
|
|
if(haslast>0){
|
|
if(haslast>0){
|
|
ProductionProcesses processes = new ProductionProcesses();
|
|
ProductionProcesses processes = new ProductionProcesses();
|
|
- processes.setId(processOperationM.getId());
|
|
|
|
|
|
+ processes.setId(SecurityUtil.getUUID());
|
|
|
|
+ List<String> bss = new ArrayList<>();
|
|
|
|
+ bss.add(processOperationM.getId());
|
|
|
|
+ processes.setBsProcessesId(bss);
|
|
processes.setProcessType(processOperationM.getProcess());
|
|
processes.setProcessType(processOperationM.getProcess());
|
|
processes.setOptionalEquipments(Arrays.asList(new String[]{aspCheckItem.getId()}));
|
|
processes.setOptionalEquipments(Arrays.asList(new String[]{aspCheckItem.getId()}));
|
|
// 坯料计划订单
|
|
// 坯料计划订单
|