|
|
|
|
@ -119,12 +119,12 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO |
|
|
|
|
public void scheduling() { |
|
|
|
|
//查询待排产订单,状态是3
|
|
|
|
|
List<YieldOrderEntity> list = |
|
|
|
|
yieldOrderService.list(Wrappers.<YieldOrderEntity>lambdaQuery().in(BaseEntity::getStatus, YieldOrderEnum.STATUS_APS.getCategory(),YieldOrderEnum.STATUS_PROCESS_ERROR.getCategory()).isNotNull(YieldOrderEntity::getWorkCenterId).isNotNull(YieldOrderEntity::getReleaseDate)); |
|
|
|
|
yieldOrderService.list(Wrappers.<YieldOrderEntity>lambdaQuery().in(BaseEntity::getStatus, YieldOrderEnum.STATUS_APS.getCategory(),YieldOrderEnum.STATUS_PROCESS_ERROR.getCategory()).isNotNull(YieldOrderEntity::getWorkCenterId).isNotNull(YieldOrderEntity::getReleaseDate).isNotNull(YieldOrderEntity::getDemandDate)); |
|
|
|
|
log.info("待排产订单数量为:" + list.size()); |
|
|
|
|
if (CollectionUtils.isNotEmpty(list)) { |
|
|
|
|
//校验已排产订单
|
|
|
|
|
checkSchedulingOrder(list); |
|
|
|
|
list = yieldOrderService.list(Wrappers.<YieldOrderEntity>lambdaQuery().eq(BaseEntity::getStatus, YieldOrderEnum.STATUS_APS.getCategory()).isNotNull(YieldOrderEntity::getWorkCenterId).isNotNull(YieldOrderEntity::getReleaseDate)); |
|
|
|
|
list = yieldOrderService.list(Wrappers.<YieldOrderEntity>lambdaQuery().in(BaseEntity::getStatus, YieldOrderEnum.STATUS_APS.getCategory(),YieldOrderEnum.STATUS_PROCESS_ERROR.getCategory()).isNotNull(YieldOrderEntity::getWorkCenterId).isNotNull(YieldOrderEntity::getReleaseDate).isNotNull(YieldOrderEntity::getDemandDate)); |
|
|
|
|
//初始化人员能力
|
|
|
|
|
List<PersonAbilityEntity> personAbilityEntityList = personAbilityService.list(Wrappers.<PersonAbilityEntity>lambdaQuery().isNotNull(PersonAbilityEntity::getWorkCenterId).isNotNull(PersonAbilityEntity::getProcessId).isNotNull(PersonAbilityEntity::getCraftId)); |
|
|
|
|
Map<String, PersonAbilityEntity> personAbilityMap = new HashMap<>(); |
|
|
|
|
@ -182,12 +182,13 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public Map<String, List<WorkOrderDto>> schedulingBoard(WorkOrderDto workOrder) { |
|
|
|
|
public List<WorkOrderDto> schedulingBoard(WorkOrderDto workOrder) { |
|
|
|
|
List<WorkOrderDto> list = baseMapper.selectWorkOrderList(workOrder); |
|
|
|
|
Map<String, List<WorkOrderDto>> resultList = new HashMap<>(); |
|
|
|
|
//Map<String, List<WorkOrderDto>> resultList = new HashMap<>();
|
|
|
|
|
Map<String, List<WorkOrderDto>> woCodeGroup = list.stream().collect(Collectors.groupingBy(WorkOrderDto::getWoCode)); |
|
|
|
|
|
|
|
|
|
List<WorkOrderDto> resultList = new ArrayList<>(); |
|
|
|
|
for (Map.Entry<String, List<WorkOrderDto>> entry : woCodeGroup.entrySet()) { |
|
|
|
|
WorkOrderDto workOrderDto = new WorkOrderDto(); |
|
|
|
|
String woCode = entry.getKey(); |
|
|
|
|
List<WorkOrderDto> woList = entry.getValue(); |
|
|
|
|
|
|
|
|
|
@ -232,12 +233,13 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO |
|
|
|
|
|
|
|
|
|
mergedDto.setPlanStartTime(minStartTime); |
|
|
|
|
mergedDto.setPlanEndTime(maxEndTime); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
mergedProcessList.add(mergedDto); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
resultList.put(woCode, mergedProcessList); |
|
|
|
|
mergedProcessList.sort(Comparator.comparing(WorkOrderDto::getPlanStartTime)); |
|
|
|
|
workOrderDto.setWoCode(woCode); |
|
|
|
|
workOrderDto.setWorkOrderList(mergedProcessList); |
|
|
|
|
resultList.add(workOrderDto); |
|
|
|
|
//resultList.put(woCode, mergedProcessList);
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return resultList; |
|
|
|
|
@ -400,8 +402,7 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO |
|
|
|
|
String glassCodeStr = null; |
|
|
|
|
//烧结
|
|
|
|
|
if(sintMap.containsKey(craft.getPpsId())){ |
|
|
|
|
|
|
|
|
|
if("2".equals(order.getYieldType())){//烧结订单
|
|
|
|
|
if(order.getYieldType() == 2 || order.getYieldType() == 3){//烧结订单
|
|
|
|
|
//获取当前工序的所有温度曲线
|
|
|
|
|
List<SintTempCurveEntity> sintList = sintMap.get(craft.getPpsId()); |
|
|
|
|
List<List<String>> sintMaterialList = new ArrayList<>(); |
|
|
|
|
@ -430,12 +431,43 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO |
|
|
|
|
} |
|
|
|
|
//包含说明之前有过这个温度曲线的订单
|
|
|
|
|
if(sameFurnaceMap.containsKey(glassCodeStr)){ |
|
|
|
|
List<EquipResourceEntity> equipResourceList = sameFurnaceMap.get(glassCodeStr); |
|
|
|
|
//计算生产所需产能,需将m2换算成dm2
|
|
|
|
|
BigDecimal sumCapacity = order.getYpArea().multiply(BigDecimal.valueOf(order.getYpQty())); |
|
|
|
|
for(EquipResourceEntity equipResource : equipResourceList){ |
|
|
|
|
if(equipResource.getRestCapacity().compareTo(sumCapacity) > 0){ |
|
|
|
|
//生成车间订单
|
|
|
|
|
WorkPlanEntity workPlan = new WorkPlanEntity(); |
|
|
|
|
workPlan.setStartTime(equipResource.getStartTime()); |
|
|
|
|
if ("0".equals(equipResource.getEquipType())) { |
|
|
|
|
workPlan.setEndTime(equipResource.getStartTime().plusMinutes(equipResource.getStandardTime().longValue())); |
|
|
|
|
} else { |
|
|
|
|
workPlan.setEndTime(equipResource.getEndTime()); |
|
|
|
|
} |
|
|
|
|
workPlan.setWorkQty(order.getYpQty()); |
|
|
|
|
workPlan.setCaId(craft.getCaId()); |
|
|
|
|
workPlan.setPpsId(craft.getPpsId()); |
|
|
|
|
workPlan.setMakeTeam(equipResource.getTeamId()); |
|
|
|
|
workPlan.setWorkCenterId(craft.getWorkCenterId()); |
|
|
|
|
workPlan.setOrders(craft.getProcessNo()); |
|
|
|
|
workPlan.setWoId(order.getId()); |
|
|
|
|
workPlan.setOem("0"); |
|
|
|
|
workPlan.setTestQty(0); |
|
|
|
|
workPlan.setQualifiedQty(0); |
|
|
|
|
workPlan.setUnqualifiedQty(0); |
|
|
|
|
workPlan.setScrapQty(0); |
|
|
|
|
workPlan.setHourQuota(BigDecimal.valueOf(ChronoUnit.MINUTES.between(workPlan.getStartTime(), workPlan.getEndTime()))); |
|
|
|
|
workPlan.setEquipCode(equipResource.getEquipCode()); |
|
|
|
|
workPlan.setEquipName(equipResource.getEquipName()); |
|
|
|
|
workPlan.setEquipResourceId(equipResource.getId()); |
|
|
|
|
workPlanList.add(workPlan); |
|
|
|
|
|
|
|
|
|
equipResource.setRestCapacity(equipResource.getRestCapacity().subtract(sumCapacity)); |
|
|
|
|
equipResourceService.updateById(equipResource); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
}else if("3".equals(order.getYieldType())){//玻璃饼
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@ -498,7 +530,7 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO |
|
|
|
|
//生成车间订单
|
|
|
|
|
WorkPlanEntity workPlan = new WorkPlanEntity(); |
|
|
|
|
workPlan.setStartTime(equipResource.getStartTime()); |
|
|
|
|
if (entry.getKey() == 1) { |
|
|
|
|
if ("0".equals(equipResource.getEquipType())) { |
|
|
|
|
workPlan.setEndTime(equipResource.getStartTime().plusMinutes(equipResource.getStandardTime().longValue())); |
|
|
|
|
} else { |
|
|
|
|
workPlan.setEndTime(equipResource.getEndTime()); |
|
|
|
|
@ -581,6 +613,21 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO |
|
|
|
|
PersonAbilityEntity ability = personAbilityMap.get(craft.getWorkCenterId() + "-" + craft.getPpsId() + "-" + craft.getCaId()); |
|
|
|
|
//镀后检验和镀后接收先按半小时计算
|
|
|
|
|
if (ability != null) { |
|
|
|
|
|
|
|
|
|
/* if(ability.getWorkCenterId() != order.getWorkCenterId()){ |
|
|
|
|
prevProcessEnd = prevProcessEnd.plusMinutes(30); |
|
|
|
|
if ("0".equals(ability.getType())) { |
|
|
|
|
totalTime = totalTime.add(BigDecimal.valueOf(order.getYpQty()).multiply(ability.getStandardTime()).add(ability.getPrepareTime())); |
|
|
|
|
} else { |
|
|
|
|
totalTime = totalTime.add(ability.getStandardTime()).add(ability.getPrepareTime()); |
|
|
|
|
} |
|
|
|
|
}else{ |
|
|
|
|
if ("0".equals(ability.getType())) { |
|
|
|
|
totalTime = totalTime.add(BigDecimal.valueOf(order.getYpQty()).multiply(ability.getStandardTime()).add(ability.getPrepareTime())); |
|
|
|
|
} else { |
|
|
|
|
totalTime = totalTime.add(ability.getStandardTime()).add(ability.getPrepareTime()); |
|
|
|
|
} |
|
|
|
|
}*/ |
|
|
|
|
if ("镀后检验".equals(ability.getProcessName()) || "镀后接收".equals(ability.getProcessName())) { |
|
|
|
|
totalTime = BigDecimal.valueOf(30); |
|
|
|
|
workPlan.setStartTime(prevProcessEnd.plusMinutes(30)); |
|
|
|
|
@ -599,8 +646,15 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO |
|
|
|
|
totalTime = totalTime.add(ability.getStandardTime()).add(ability.getPrepareTime()); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
List<PersonResourceEntity> personResourceList = personResourceService.list(Wrappers.<PersonResourceEntity>lambdaQuery() |
|
|
|
|
.eq(PersonResourceEntity::getWorkCenterId, craft.getWorkCenterId()) |
|
|
|
|
.eq(PersonResourceEntity::getProcessId, craft.getPpsId()) |
|
|
|
|
.eq(PersonResourceEntity::getCraftId, craft.getCaId()) |
|
|
|
|
.le(PersonResourceEntity::getStartTime, prevProcessEnd) |
|
|
|
|
.ge(PersonResourceEntity::getEndTime, prevProcessEnd)); |
|
|
|
|
if(CollectionUtils.isNotEmpty(personResourceList)){ |
|
|
|
|
workPlan.setMakeTeam(personResourceList.get(0).getTeamId()); |
|
|
|
|
} |
|
|
|
|
//通过加锁的方式保证每次查询到的人力资源都是最新的
|
|
|
|
|
/*Long craftId = craft.getCaId(); |
|
|
|
|
Lock craftLock = getCraftLock(craftId); |
|
|
|
|
|