自动分派逻辑修改

liweidong
李涛 3 days ago
parent 5fc3bc4c54
commit be945fe471
  1. 107
      blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/impl/YieldOrderCraftServiceImpl.java

@ -1,6 +1,7 @@
package org.springblade.desk.order.service.impl;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.nacos.common.utils.CollectionUtils;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
@ -218,68 +219,60 @@ public class YieldOrderCraftServiceImpl extends BaseServiceImpl<YieldOrderCraftM
}
//如果匹配到了作业单位,则直接停止
if (dispatchCraftList != null && dispatchCraftList.size() > 0) {
return;
}
// 厂内优先
if (workCenter.getLimitType().equals(WorkCenter.LIMIT_TYPE_PRIOR)) {
log.info("自动分派,流程卡号:{},优先厂内", yieldOrder.getCardNo());
dispatchCraftList = this.bindWorkCenter(workCenter.getId(), workCenterMap, hostAbilityId, craftAbilityMap, craftKeys, yieldOrder, null);
}
//如果匹配到了作业单位,则直接停止
if (dispatchCraftList != null && dispatchCraftList.size() > 0) {
return;
}
//外协优先
if (oemCustomer.getLimitType().equals(WorkCenter.LIMIT_TYPE_PRIOR)) {
log.info("自动分派,流程卡号:{},优先外协", yieldOrder.getCardNo());
dispatchCraftList = this.bindOem(oemCustomer, hostAbilityId, craftAbilityMap, craftKeys, yieldOrder, null);
}
if (CollectionUtils.isEmpty(dispatchCraftList)) {
// 厂内优先
if (workCenter.getLimitType().equals(WorkCenter.LIMIT_TYPE_PRIOR)) {
log.info("自动分派,流程卡号:{},优先厂内", yieldOrder.getCardNo());
dispatchCraftList = this.bindWorkCenter(workCenter.getId(), workCenterMap, hostAbilityId, craftAbilityMap, craftKeys, yieldOrder, null);
}
//如果匹配到了作业单位,则直接停止
if (dispatchCraftList != null && dispatchCraftList.size() > 0) {
return;
}
//如果匹配到了作业单位,则直接停止
if (CollectionUtils.isEmpty(dispatchCraftList)) {
//外协优先
if (oemCustomer.getLimitType().equals(WorkCenter.LIMIT_TYPE_PRIOR)) {
log.info("自动分派,流程卡号:{},优先外协", yieldOrder.getCardNo());
dispatchCraftList = this.bindOem(oemCustomer, hostAbilityId, craftAbilityMap, craftKeys, yieldOrder, null);
}
// 开始根据分派比例分派
Long facTotalNum = 0L;
YieldOrderAssignCount facCapacity = dailyAssignService.queryCount(hostAbilityId, BsAssignEntity.IN_FACTORY);
if (facCapacity != null) {
facTotalNum = facCapacity.getTotalNum();
}
// 获取厂外已经分派的总量
Long oemTotalNum = 0L;
YieldOrderAssignCount oemCapacity = dailyAssignService.queryCount(hostAbilityId, BsAssignEntity.OUTSOURCE);
if (oemCapacity != null) {
oemTotalNum = oemCapacity.getTotalNum();
}
//如果匹配到了作业单位,则直接停止
if (CollectionUtils.isEmpty(dispatchCraftList)) {
// 开始根据分派比例分派
Long facTotalNum = 0L;
YieldOrderAssignCount facCapacity = dailyAssignService.queryCount(hostAbilityId, BsAssignEntity.IN_FACTORY);
if (facCapacity != null) {
facTotalNum = facCapacity.getTotalNum();
}
// 获取厂外已经分派的总量
Long oemTotalNum = 0L;
YieldOrderAssignCount oemCapacity = dailyAssignService.queryCount(hostAbilityId, BsAssignEntity.OUTSOURCE);
if (oemCapacity != null) {
oemTotalNum = oemCapacity.getTotalNum();
}
//日分派总量
Long totalNum = facTotalNum + oemTotalNum;
// 厂内分派比列
Double rate = 0D;
if (totalNum > 0) {
rate = Double.valueOf(facTotalNum) / Double.valueOf(totalNum) * 100;
}
log.info("自动分派,流程卡号:{},分派总量:{},厂内分派比列:{}", yieldOrder.getCardNo(), totalNum, rate);
//日分派总量
Long totalNum = facTotalNum + oemTotalNum;
// 厂内分派比列
Double rate = 0D;
if (totalNum > 0) {
rate = Double.valueOf(facTotalNum) / Double.valueOf(totalNum) * 100;
}
log.info("自动分派,流程卡号:{},分派总量:{},厂内分派比列:{}", yieldOrder.getCardNo(), totalNum, rate);
// 如果厂内占比大于已经设置的比列,则直接分派外协
if (rate <= Double.parseDouble(craftAbility.getInRate())) {
log.info("{}自动分派按照比例分派给厂内:{},分派比例:{} 应分比例:{}", yieldOrder.getCardNo(), workCenter.getWcName(), rate, craftAbility.getInRate());
dispatchCraftList = this.bindWorkCenter(workCenter.getId(), workCenterMap, hostAbilityId, craftAbilityMap, craftKeys, yieldOrder, null);
}
// 如果厂内占比大于已经设置的比列,则直接分派外协
if (rate <= Double.parseDouble(craftAbility.getInRate())) {
log.info("{}自动分派按照比例分派给厂内:{},分派比例:{} 应分比例:{}", yieldOrder.getCardNo(), workCenter.getWcName(), rate, craftAbility.getInRate());
dispatchCraftList = this.bindWorkCenter(workCenter.getId(), workCenterMap, hostAbilityId, craftAbilityMap, craftKeys, yieldOrder, null);
}
//如果匹配到了作业单位,则直接停止
if (dispatchCraftList != null && !dispatchCraftList.isEmpty()) {
return;
//如果匹配到了作业单位,则直接停止
if (CollectionUtils.isEmpty(dispatchCraftList)) {
// 外协
log.info("{}自动分派按照比例分派给外协:{},分派比例:{} 应分比例:{}", yieldOrder.getCardNo(), oemCustomer.getOcName(), rate, craftAbility.getInRate());
dispatchCraftList = this.bindOem(oemCustomer, hostAbilityId, craftAbilityMap, craftKeys, yieldOrder, null);
}
}
}
}
// 外协
log.info("{}自动分派按照比例分派给外协:{},分派比例:{} 应分比例:{}", yieldOrder.getCardNo(), oemCustomer.getOcName(), rate, craftAbility.getInRate());
dispatchCraftList = this.bindOem(oemCustomer, hostAbilityId, craftAbilityMap, craftKeys, yieldOrder, null);
}
} else {
if (Boolean.TRUE.equals(factor)) {
@ -295,7 +288,7 @@ public class YieldOrderCraftServiceImpl extends BaseServiceImpl<YieldOrderCraftM
}
}
if (dispatchCraftList == null || dispatchCraftList.size() == 0) {
if (dispatchCraftList == null || dispatchCraftList.isEmpty()) {
throw new ServiceException("自动分派失败,未找到合适的班组或者供应商!");
}

Loading…
Cancel
Save