排产相关-sjx

develop-QA
sunjianxi 4 months ago
parent b2b374852d
commit 1ee4a0d4e0
  1. 31
      blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/service/impl/WorkOrderServiceImpl.java

@ -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));

Loading…
Cancel
Save