排产开发-sjx

liweidong
sunjianxi 4 weeks ago
parent a69cc135ed
commit 2be4bac696
  1. 57
      blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/service/impl/WorkOrderServiceImpl.java

@ -674,7 +674,7 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
equipWrapper.eq(EquipResourceEntity::getPeriod, equipResource.getPeriod());
equipWrapper.ne(BaseEntity::getId,equipResource.getId());
List<EquipResourceEntity> otherResourceList = equipResourceService.list(equipWrapper);
BigDecimal rate = equipResource.getRestCapacity().divide(equipResource.getTotalCapacity(), 2, RoundingMode.HALF_UP);
BigDecimal rate = equipResource.getRestCapacity().divide(equipResource.getTotalCapacity(), 4, RoundingMode.HALF_UP);
for(EquipResourceEntity otherResource : otherResourceList){
otherResource.setRestCapacity(otherResource.getTotalCapacity().multiply(rate).setScale(0, RoundingMode.FLOOR));
otherResource.setIsUsed("1");
@ -881,10 +881,8 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
workOrderList.add(workOrder);
if(order.getYieldType() == YieldOrderEnum.YIELD_TYPE_3.getCode()){
StGlassCakeOutDTO glassDto = new StGlassCakeOutDTO();
glassDto.setPrintMark("1".equals(part.getIsPrint()) ? false : true);
glassDto.setPowderWeight(part.getPowderWeight().toString());
glassDto.setMaterialNo(part.getMaterial());
glassDto.setThickness(part.getFormingThickness().toString());
glassDto.setCardNo(workOrder.getCardNo());
glassDto.setWoCode(workOrder.getWoCode());
glassCakeOutList.add(glassDto);
}
@ -1100,15 +1098,15 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
public void checkSchedulingOrder(List<YieldOrderEntity> list) {
//判断待排产优先级,1级所有1级往后订单重新排产,2级订单重新排4/5级订单
List<Integer> priorityList = list.stream().map(YieldOrderEntity::getPriorityAps).collect(Collectors.toList());
if (priorityList.contains(1)) {
if (priorityList.contains(YieldOrderEnum.PRIORITY_APS_CRITICAL.getCode())) {
//查询所有非一级的待生产订单
List<YieldOrderEntity> schedulingOrderList = yieldOrderService.list(Wrappers.<YieldOrderEntity>lambdaQuery().ne(YieldOrderEntity::getPriorityAps, 1).eq(YieldOrderEntity::getStatus, 4));
List<YieldOrderEntity> schedulingOrderList = yieldOrderService.list(Wrappers.<YieldOrderEntity>lambdaQuery().ne(YieldOrderEntity::getPriorityAps, 1).in(BaseEntity::getStatus, YieldOrderEnum.STATUS_APS.getCode(),YieldOrderEnum.STATUS_PROCESS_WAITING.getCode()));
//校验已排产订单资源占用情况
checkResource(schedulingOrderList);
}
if (priorityList.contains(2)) {
if (priorityList.contains(YieldOrderEnum.PRIORITY_APS_HIGH.getCode())) {
//查询4/5级的待生产订单
List<YieldOrderEntity> schedulingOrderList = yieldOrderService.list(Wrappers.<YieldOrderEntity>lambdaQuery().in(YieldOrderEntity::getPriorityAps, Arrays.asList("4", "5")).eq(YieldOrderEntity::getStatus, 4));
List<YieldOrderEntity> schedulingOrderList = yieldOrderService.list(Wrappers.<YieldOrderEntity>lambdaQuery().in(YieldOrderEntity::getPriorityAps, Arrays.asList("4", "5")).in(BaseEntity::getStatus, YieldOrderEnum.STATUS_APS.getCode(),YieldOrderEnum.STATUS_PROCESS_WAITING.getCode()));
checkResource(schedulingOrderList);
}
}
@ -1116,9 +1114,11 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
public void checkResource(List<YieldOrderEntity> list) {
if (CollectionUtils.isNotEmpty(list)) {
//根据订单查询设备资源
for (YieldOrderEntity yieldOrder : list) {
for (YieldOrderEntity order : list) {
BigDecimal sumCapacity = order.getYieldType() == YieldOrderEnum.YIELD_TYPE_1.getCode() ? order.getYpArea().multiply(BigDecimal.valueOf(order.getYpQty())) : BigDecimal.valueOf(order.getYpQty());
//查询相关车间订单
WorkOrderEntity workOrder = this.getOne(Wrappers.<WorkOrderEntity>lambdaQuery().eq(WorkOrderEntity::getYoId, yieldOrder.getId()));
WorkOrderEntity workOrder = this.getOne(Wrappers.<WorkOrderEntity>lambdaQuery().eq(WorkOrderEntity::getYoId, order.getId()));
if (workOrder != null) {
List<WorkPlanEntity> schedulingPlanList = workPlanService.list(Wrappers.<WorkPlanEntity>lambdaQuery().eq(WorkPlanEntity::getWoId, workOrder.getId()));
if (CollectionUtils.isNotEmpty(schedulingPlanList)) {
@ -1127,12 +1127,30 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
if (workPlan.getEquipResourceId() != null) {
EquipResourceEntity equipResource = equipResourceService.getById(workPlan.getEquipResourceId());
equipResource.setIsUsed("0");
equipResource.setRestCapacity(equipResource.getRestCapacity().add(BigDecimal.valueOf(workPlan.getHourQuota())));
LambdaUpdateWrapper<EquipResourceEntity> updateWrapper = new LambdaUpdateWrapper<>();
equipResource.setRestCapacity(equipResource.getRestCapacity().add(sumCapacity));
equipResourceService.updateById(equipResource);
//同一个设备可能有多个工艺能力,同一时间只能做一个工艺能力的零件,所以需要把当前设备所有工艺能力的剩余产能都更新调
LambdaQueryWrapper<EquipResourceEntity> equipWrapper = new LambdaQueryWrapper<>();
equipWrapper.eq(EquipResourceEntity::getEquipCode, equipResource.getEquipCode());
equipWrapper.eq(EquipResourceEntity::getDateTime, equipResource.getDateTime());
equipWrapper.eq(EquipResourceEntity::getPeriod, equipResource.getPeriod());
equipWrapper.ne(BaseEntity::getId,equipResource.getId());
List<EquipResourceEntity> otherResourceList = equipResourceService.list(equipWrapper);
BigDecimal rate = equipResource.getRestCapacity().divide(equipResource.getTotalCapacity(), 4, RoundingMode.HALF_UP);
for(EquipResourceEntity otherResource : otherResourceList){
otherResource.setRestCapacity(otherResource.getTotalCapacity().multiply(rate).setScale(0, RoundingMode.FLOOR));
otherResource.setIsUsed("0");
otherResource.setGlassCode(null);
equipResourceService.updateById(otherResource);
}
//该设备后续所有开始时间小于当前结束时间的时间段都变为不可用
LambdaUpdateWrapper<EquipResourceEntity> updateWrapper = new LambdaUpdateWrapper();
updateWrapper.lt(EquipResourceEntity::getStartTime, equipResource.getEndTime());
updateWrapper.gt(EquipResourceEntity::getStartTime, equipResource.getStartTime());
updateWrapper.eq(EquipResourceEntity::getEquipCode, equipResource.getEquipCode());
updateWrapper.eq(EquipResourceEntity::getDateTime, equipResource.getDateTime());
updateWrapper.eq(EquipResourceEntity::getPeriod, equipResource.getPeriod());
equipResourceService.update(equipResource, updateWrapper);
EquipResourceEntity equipResource1 = new EquipResourceEntity();
equipResource1.setIsUsed("0");
equipResourceService.update(equipResource1, updateWrapper);
}
//还原人力资源
@ -1153,8 +1171,8 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
this.deleteLogic(Arrays.asList(workOrder.getId()));
}
yieldOrder.setStatus(YieldOrderEnum.STATUS_APS.getCode());
yieldOrderService.updateById(yieldOrder);
order.setStatus(YieldOrderEnum.STATUS_APS.getCode());
yieldOrderService.updateById(order);
}
}
@ -1593,11 +1611,12 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
equipWrapper.eq(EquipResourceEntity::getPeriod, equipResource.getPeriod());
equipWrapper.ne(BaseEntity::getId,equipResource.getId());
List<EquipResourceEntity> otherResourceList = equipResourceService.list(equipWrapper);
BigDecimal rate = equipResource.getRestCapacity().divide(equipResource.getTotalCapacity(), 2, RoundingMode.HALF_UP);
BigDecimal rate = equipResource.getRestCapacity().divide(equipResource.getTotalCapacity(), 4, RoundingMode.HALF_UP);
for(EquipResourceEntity otherResource : otherResourceList){
otherResource.setRestCapacity(otherResource.getTotalCapacity().multiply(rate).setScale(0, RoundingMode.FLOOR));
equipResourceService.updateById(otherResource);
}
isSameFurnace = true;
prevProcessEnd = workPlan.getPlanEndTime();
}

Loading…
Cancel
Save