排产相关-sjx

master
sunjianxi 8 hours ago
parent 293334ea29
commit 7ed953325e
  1. 4
      blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/mapper/EquipResourceMapper.xml
  2. 2
      blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/mapper/YieldOrderMapper.xml
  3. 2
      blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/service/impl/EquipResourceServiceImpl.java
  4. 59
      blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/service/impl/WorkOrderServiceImpl.java

@ -51,8 +51,8 @@
FROM
MES_EQUIP_RESOURCE a
WHERE
CRAFT_ID = '27'
AND id > ( SELECT max( id ) FROM MES_EQUIP_RESOURCE WHERE is_used = '1' AND CRAFT_ID = '27' ) order by date_time,start_time
CRAFT_ID = '27' and START_TIME > SYSDATE
AND id > nvl(( SELECT max( id ) FROM MES_EQUIP_RESOURCE WHERE is_used = '1' AND CRAFT_ID = '27' ),0) order by date_time,start_time
</select>
</mapper>

@ -87,7 +87,7 @@
<select id="selectCommonCraftOrderList" resultMap="yieldOrderResultMap">
SELECT
b.*
distinct b.*
FROM
MES_YIELD_ORDER_CRAFT a
LEFT JOIN MES_YIELD_ORDER b ON a.YO_ID = b.ID

@ -99,7 +99,7 @@ public class EquipResourceServiceImpl extends BaseServiceImpl<EquipResourceMappe
@Override
public List<EquipResourceEntity> selectCommonCraftList() {
return null;
return baseMapper.selectCommonCraftList();
}
public void generateData(String day){

@ -114,6 +114,7 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
if (CollectionUtils.isNotEmpty(list)) {
//校验已排产订单
checkSchedulingOrder(list);
list = yieldOrderService.list(Wrappers.<YieldOrderEntity>lambdaQuery().eq(BaseEntity::getStatus, YieldOrderConst.STATUS_APS));
//初始化人员能力
List<PersonAbilityEntity> personAbilityEntityList = personAbilityService.list(Wrappers.<PersonAbilityEntity>lambdaQuery().isNotNull(PersonAbilityEntity::getWorkCenterId).isNotNull(PersonAbilityEntity::getProcessId).isNotNull(PersonAbilityEntity::getCraftId));
Map<String, PersonAbilityEntity> personAbilityMap = new HashMap<>();
@ -127,7 +128,7 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
mainProducerMap.put(item.getProcessId(), item.getMainProducer());
});
//计算cr值
// calculateCr(list);
//calculateCr(list);
//根据作业中心将订单分组,并根据优先级、cr值、订单需求数量、计划下达时间4个维度进行组内排序
Map<Long, List<YieldOrderEntity>> map =
list.stream()
@ -434,12 +435,11 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
public void allocateResources(List<YieldOrderEntity> list,Map<String, PersonAbilityEntity> personAbilityMap,Map<Long, String> mainProducerMap,Map<String,List<WorkPlanEntity>> planMap) {
for (YieldOrderEntity order : list) {
//是否可以排产
Boolean isSchecuding = true;
List<WorkPlanEntity> workPlanList = new ArrayList<>();
//查询所有工序
List<YieldOrderCraftEntity> craftList = yieldOrderCraftService.list(Wrappers.<YieldOrderCraftEntity>lambdaQuery().eq(YieldOrderCraftEntity::getYoId, order.getId()).orderByAsc(YieldOrderCraftEntity::getProcessNo));
List<YieldOrderCraftEntity> craftList = yieldOrderCraftService.list(Wrappers.<YieldOrderCraftEntity>lambdaQuery().eq(YieldOrderCraftEntity::getYoId, order.getId()).ne(YieldOrderCraftEntity::getCaId,27).orderByAsc(YieldOrderCraftEntity::getProcessNo));
List<Long> workCenterList = craftList.stream().filter(item -> item.getWorkCenterId() != null).map(YieldOrderCraftEntity::getWorkCenterId).collect(Collectors.toList());
if(workCenterList.size() != craftList.size()){
order.setErrorInfo("工序信息不完整,含有未匹配作业中心的工序");
@ -545,7 +545,10 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
// if(equipResource.getRestCapacity().divide(equipResource.getTotalCapacity(),2,RoundingMode.HALF_UP).compareTo(BigDecimal.valueOf(0.2)) < 0){
//
// }
equipResourceService.updateById(equipResource);
//同一个设备可能有多个工艺能力,同一时间只能做一个工艺能力的零件,所以需要把当前设备所有工艺能力的剩余产能都更新调
LambdaUpdateWrapper<EquipResourceEntity> equipWrapper = new LambdaUpdateWrapper<>();
equipWrapper.eq(EquipResourceEntity::getEquipCode,equipResource.getEquipCode());
equipResourceService.update(equipResource,equipWrapper);
//该设备后续所有开始时间小于当前结束时间的时间段都变为不可用
LambdaUpdateWrapper<EquipResourceEntity> updateWrapper = new LambdaUpdateWrapper();
updateWrapper.lt(EquipResourceEntity::getStartTime, equipResource.getEndTime());
@ -907,34 +910,36 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
for(YieldOrderEntity yieldOrder : list){
//查询相关车间订单
WorkOrderEntity workOrder = this.getOne(Wrappers.<WorkOrderEntity>lambdaQuery().eq(WorkOrderEntity::getYoId,yieldOrder.getId()));
List<WorkPlanEntity> schedulingPlanList = workPlanService.list(Wrappers.<WorkPlanEntity>lambdaQuery().eq(WorkPlanEntity::getWoId,workOrder.getId()));
if(CollectionUtils.isNotEmpty(schedulingPlanList)){
for(WorkPlanEntity workPlan : schedulingPlanList){
//还原设备资源
if(workPlan.getEquipResourceId() != null){
EquipResourceEntity equipResource = equipResourceService.getById(workPlan.getEquipResourceId());
equipResource.setIsUsed("0");
equipResource.setRestCapacity(equipResource.getRestCapacity().add(workPlan.getHourQuota()));
equipResourceService.updateById(equipResource);
if(workOrder != null){
List<WorkPlanEntity> schedulingPlanList = workPlanService.list(Wrappers.<WorkPlanEntity>lambdaQuery().eq(WorkPlanEntity::getWoId,workOrder.getId()));
if(CollectionUtils.isNotEmpty(schedulingPlanList)){
for(WorkPlanEntity workPlan : schedulingPlanList){
//还原设备资源
if(workPlan.getEquipResourceId() != null){
EquipResourceEntity equipResource = equipResourceService.getById(workPlan.getEquipResourceId());
equipResource.setIsUsed("0");
equipResource.setRestCapacity(equipResource.getRestCapacity().add(workPlan.getHourQuota()));
equipResourceService.updateById(equipResource);
}
//还原人力资源
if(workPlan.getPersonResourceIds() != null){
List<PersonResourceEntity> personResourceList = personResourceService.list(Wrappers.<PersonResourceEntity>lambdaQuery().in(BaseEntity::getId,workPlan.getPersonResourceIds().split(",")));
if(CollectionUtils.isNotEmpty(personResourceList)){
personResourceList.forEach(item ->{
item.setIsUsed("0");
personResourceService.updateById(item);
});
}
//还原人力资源
if(workPlan.getPersonResourceIds() != null){
List<PersonResourceEntity> personResourceList = personResourceService.list(Wrappers.<PersonResourceEntity>lambdaQuery().in(BaseEntity::getId,workPlan.getPersonResourceIds().split(",")));
if(CollectionUtils.isNotEmpty(personResourceList)){
personResourceList.forEach(item ->{
item.setIsUsed("0");
personResourceService.updateById(item);
});
}
}
workPlanService.deleteLogic(Arrays.asList(workPlan.getId()));
}
workPlan.setIsDeleted(1);
workPlanService.updateById(workPlan);
}
}
this.deleteLogic(Arrays.asList(workOrder.getId()));
}
workOrder.setIsDeleted(1);
this.updateById(workOrder);
yieldOrder.setStatus(3);
yieldOrderService.updateById(yieldOrder);

Loading…
Cancel
Save