|
|
|
|
@ -333,6 +333,7 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO |
|
|
|
|
@Transactional(rollbackFor = Exception.class) |
|
|
|
|
public void allocateResources(List<YieldOrderEntity> list, Map<String, PersonAbilityEntity> personAbilityMap, Map<Long, String> mainProducerMap, Map<String, List<WorkPlanEntity>> planMap, Map<Long, String> processMap, Map<Long, List<SintTempCurveEntity>> sintMap) { |
|
|
|
|
List<WorkOrderEntity> workOrderList = new ArrayList<>(); |
|
|
|
|
Map<String,List<EquipResourceEntity>> sameFurnaceMap = new HashMap<>(); |
|
|
|
|
for (YieldOrderEntity order : list) { |
|
|
|
|
try { |
|
|
|
|
//是否可以排产
|
|
|
|
|
@ -398,7 +399,7 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO |
|
|
|
|
workPlanList.add(workPlan); |
|
|
|
|
}else{ |
|
|
|
|
if ("设备".equals(mainProducerMap.get(craft.getPpsId()))) { |
|
|
|
|
Map<String,List<EquipResourceEntity>> sameFurnaceMap = new HashMap<>(); |
|
|
|
|
|
|
|
|
|
String glassCodeStr = null; |
|
|
|
|
//烧结
|
|
|
|
|
if(sintMap.containsKey(craft.getPpsId())){ |
|
|
|
|
@ -430,10 +431,13 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
//包含说明之前有过这个温度曲线的订单
|
|
|
|
|
//根据当前时间查询包含玻璃粉牌号的设备资源
|
|
|
|
|
//List<EquipResourceEntity> equipResourceList = equipResourceService.list(Wrappers.<EquipResourceEntity>lambdaQuery().eq(EquipResourceEntity::getWorkCenterId))
|
|
|
|
|
if(sameFurnaceMap.containsKey(glassCodeStr)){ |
|
|
|
|
List<EquipResourceEntity> equipResourceList = sameFurnaceMap.get(glassCodeStr); |
|
|
|
|
//计算生产所需产能,需将m2换算成dm2
|
|
|
|
|
BigDecimal sumCapacity = order.getYpArea().multiply(BigDecimal.valueOf(order.getYpQty())); |
|
|
|
|
Boolean isSameFurnace = false; |
|
|
|
|
for(EquipResourceEntity equipResource : equipResourceList){ |
|
|
|
|
if(equipResource.getRestCapacity().compareTo(sumCapacity) > 0){ |
|
|
|
|
//生成车间订单
|
|
|
|
|
@ -464,7 +468,13 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO |
|
|
|
|
|
|
|
|
|
equipResource.setRestCapacity(equipResource.getRestCapacity().subtract(sumCapacity)); |
|
|
|
|
equipResourceService.updateById(equipResource); |
|
|
|
|
isSameFurnace = true; |
|
|
|
|
} |
|
|
|
|
break; |
|
|
|
|
} |
|
|
|
|
//同炉的话就不用走下面的匹配了,直接下一工序
|
|
|
|
|
if(isSameFurnace){ |
|
|
|
|
continue; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@ -555,6 +565,9 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO |
|
|
|
|
//更新剩余产能
|
|
|
|
|
equipResource.setRestCapacity(equipResource.getRestCapacity().subtract(capacity)); |
|
|
|
|
equipResource.setIsUsed("1"); |
|
|
|
|
/*if("2".equals(order.getYieldType()) || "3".equals(order.getYieldType())){ |
|
|
|
|
equipResource.setGlassCode(glassCodeStr); |
|
|
|
|
}*/ |
|
|
|
|
//如果剩余产能占总产能不足20%,则修改为已占用
|
|
|
|
|
// if(equipResource.getRestCapacity().divide(equipResource.getTotalCapacity(),2,RoundingMode.HALF_UP).compareTo(BigDecimal.valueOf(0.2)) < 0){
|
|
|
|
|
//
|
|
|
|
|
@ -575,6 +588,7 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO |
|
|
|
|
EquipResourceEntity equipResource1 = new EquipResourceEntity(); |
|
|
|
|
equipResource1.setIsUsed("1"); |
|
|
|
|
equipResourceService.update(equipResource1, updateWrapper); |
|
|
|
|
|
|
|
|
|
sameFurnaceList.add(equipResource); |
|
|
|
|
//当前工序的结束时间作为下一工序的开始时间
|
|
|
|
|
prevProcessEnd = workPlan.getEndTime(); |
|
|
|
|
@ -613,21 +627,6 @@ 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)); |
|
|
|
|
|