排产相关-sjx

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

@ -124,7 +124,7 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
if (CollectionUtils.isNotEmpty(list)) {
//校验已排产订单
checkSchedulingOrder(list);
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 = yieldOrderService.list(Wrappers.<YieldOrderEntity>lambdaQuery().in(BaseEntity::getStatus, YieldOrderEnum.STATUS_APS.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<>();
@ -333,7 +333,6 @@ 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 {
//是否可以排产
@ -432,9 +431,12 @@ 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);
List<EquipResourceEntity> equipResourceList = equipResourceService.list(Wrappers.<EquipResourceEntity>lambdaQuery()
.eq(EquipResourceEntity::getWorkCenterId,craft.getWorkCenterId())
.eq(EquipResourceEntity::getCraftId,craft.getCaId())
.ge(EquipResourceEntity::getStartTime,prevProcessEnd)
.eq(EquipResourceEntity::getGlassCode,glassCodeStr));
if(CollectionUtils.isNotEmpty(equipResourceList)){
//计算生产所需产能,需将m2换算成dm2
BigDecimal sumCapacity = order.getYpArea().multiply(BigDecimal.valueOf(order.getYpQty()));
Boolean isSameFurnace = false;
@ -527,7 +529,6 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
BigDecimal sumCapacity = order.getYpArea().multiply(BigDecimal.valueOf(order.getYpQty()));
//需要判断设备额定生产能力是否满足订单总产能,如果不满足,则需要把总产能进行拆分
List<BigDecimal> capacityList = capacitySplit(equipResourceMap, sumCapacity);
List<EquipResourceEntity> sameFurnaceList = new ArrayList<>();
for (BigDecimal capacity : capacityList) {
for (Map.Entry<LocalDateTime, List<EquipResourceEntity>> entry1 : equipResourceMap.entrySet()) {
Boolean isOccupied = false;
@ -565,9 +566,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())){
if(order.getYieldType() == 2 || order.getYieldType() == 3){
equipResource.setGlassCode(glassCodeStr);
}*/
}
//如果剩余产能占总产能不足20%,则修改为已占用
// if(equipResource.getRestCapacity().divide(equipResource.getTotalCapacity(),2,RoundingMode.HALF_UP).compareTo(BigDecimal.valueOf(0.2)) < 0){
//
@ -589,7 +590,6 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
equipResource1.setIsUsed("1");
equipResourceService.update(equipResource1, updateWrapper);
sameFurnaceList.add(equipResource);
//当前工序的结束时间作为下一工序的开始时间
prevProcessEnd = workPlan.getEndTime();
dateTime = workPlan.getEndTime();
@ -602,9 +602,7 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
}
}
}
if(sintMap.containsKey(craft.getPpsId()) && glassCodeStr != null && CollectionUtils.isNotEmpty(sameFurnaceList)){
sameFurnaceMap.put(glassCodeStr,sameFurnaceList);
}
}
if (!isSchecuding) {
break;
@ -645,7 +643,7 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
totalTime = totalTime.add(ability.getStandardTime()).add(ability.getPrepareTime());
}
}
List<PersonResourceEntity> personResourceList = personResourceService.list(Wrappers.<PersonResourceEntity>lambdaQuery()
/*List<PersonResourceEntity> personResourceList = personResourceService.list(Wrappers.<PersonResourceEntity>lambdaQuery()
.eq(PersonResourceEntity::getWorkCenterId, craft.getWorkCenterId())
.eq(PersonResourceEntity::getProcessId, craft.getPpsId())
.eq(PersonResourceEntity::getCraftId, craft.getCaId())
@ -653,7 +651,7 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
.ge(PersonResourceEntity::getEndTime, prevProcessEnd));
if(CollectionUtils.isNotEmpty(personResourceList)){
workPlan.setMakeTeam(personResourceList.get(0).getTeamId());
}
}*/
//通过加锁的方式保证每次查询到的人力资源都是最新的
/*Long craftId = craft.getCaId();
Lock craftLock = getCraftLock(craftId);

Loading…
Cancel
Save