diff --git a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/controller/WorkOrderController.java b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/controller/WorkOrderController.java
index eeab7ea..2cbb6ac 100644
--- a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/controller/WorkOrderController.java
+++ b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/controller/WorkOrderController.java
@@ -51,6 +51,7 @@ import org.springblade.scheduling.scheduling.vo.WorkOrderVO;
import org.springblade.scheduling.scheduling.excel.WorkOrderExcel;
import org.springblade.scheduling.scheduling.service.IWorkOrderService;
import org.springblade.scheduling.scheduling.wrapper.WorkOrderWrapper;
+import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.web.bind.annotation.*;
@@ -72,6 +73,7 @@ public class WorkOrderController extends BladeController {
private final IWorkOrderService workOrderService;
+ private final StringRedisTemplate stringRedisTemplate;
/**
* 车间订单表 详情
diff --git a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/mapper/WorkOrderMapper.xml b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/mapper/WorkOrderMapper.xml
index 1bed6a7..9fdec58 100644
--- a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/mapper/WorkOrderMapper.xml
+++ b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/mapper/WorkOrderMapper.xml
@@ -204,10 +204,11 @@
LEFT JOIN MES_WORK_PLAN e ON c.NEXT_WP_ID = e.ID
LEFT JOIN BS_PROCESS_SET f ON e.PPS_ID = f.ID
LEFT JOIN BS_TEAM_SET g on c.MAKE_TEAM = g.ID
+ LEFT JOIN MES_WORK_PLAN h on h.wo_id = a.id
a.is_deleted = 0
- and (to_char(c.start_time,'YYYY-MM-DD') = #{startTime} or (c.start_time to_date(CONCAT(#{startTime},' 00:00:00'),'YYYY-MM-DD HH24:MI:SS') and c.end_time ]]> to_date(CONCAT(#{startTime},' 23:59:59'),'YYYY-MM-DD HH24:MI:SS')))
+ and (to_char(h.start_time,'YYYY-MM-DD') = #{startTime} or (h.start_time to_date(CONCAT(#{startTime},' 00:00:00'),'YYYY-MM-DD HH24:MI:SS') and h.end_time ]]> to_date(CONCAT(#{startTime},' 23:59:59'),'YYYY-MM-DD HH24:MI:SS')))
and a.wo_code = #{woCode}
@@ -219,7 +220,23 @@
and d.name = #{processName}
- order by a.WO_CODE,c.start_time
+ GROUP BY
+ a.WO_CODE,
+ a.CARD_NO,
+ a.PART_CODE,
+ b.PART_NAME,
+ a.BATCH_NO,
+ b.product_ident,
+ b.plate,
+ b.yp_area,
+ a.MAKE_QTY,
+ b.RELEASE_DATE,
+ d.name,
+ g.ts_name,
+ f.name,
+ a.PLAN_START_DATE,
+ a.PLAN_END_DATE,
+ b.DEMAND_DATE
diff --git a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/service/impl/WorkOrderServiceImpl.java b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/service/impl/WorkOrderServiceImpl.java
index e1643f0..caaf475 100644
--- a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/service/impl/WorkOrderServiceImpl.java
+++ b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/service/impl/WorkOrderServiceImpl.java
@@ -82,13 +82,13 @@ public class WorkOrderServiceImpl extends BaseServiceImpl CRAFT_LOCK_MAP = new ConcurrentHashMap<>();
// 获取工艺ID对应的锁(不存在则创建)
@@ -115,7 +115,7 @@ public class WorkOrderServiceImpl extends BaseServiceImpl list =
- yieldOrderService.list(Wrappers.lambdaQuery().eq(BaseEntity::getStatus, YieldOrderEnum.STATUS_APS.getCategory()).isNotNull(YieldOrderEntity::getWorkCenterId).isNotNull(YieldOrderEntity::getReleaseDate));
+ yieldOrderService.list(Wrappers.lambdaQuery().eq(BaseEntity::getStatus, YieldOrderEnum.STATUS_APS.getCategory()).isNotNull(YieldOrderEntity::getWorkCenterId).isNotNull(YieldOrderEntity::getReleaseDate));
log.info("待排产订单数量为:" + list.size());
if (CollectionUtils.isNotEmpty(list)) {
//校验已排产订单
@@ -154,23 +154,23 @@ public class WorkOrderServiceImpl extends BaseServiceImpl> planMap = dealCommonCraftOrders();
+ Map> planMap = dealCommonCraftOrders();
//多线程排产
ExecutorService threadPool = new ThreadPoolExecutor(
map.size(), map.size(), 0L, TimeUnit.MILLISECONDS,
new LinkedBlockingQueue<>(),
r -> new Thread(r, "scheduling-thread-" + System.currentTimeMillis()));
map.forEach((workcenter, orders) -> {
- threadPool.execute(() -> allocateResources(orders,personAbilityMap,mainProducerMap,planMap));
+ threadPool.execute(() -> allocateResources(orders, personAbilityMap, mainProducerMap, planMap));
});
}
}
@Override
- public Map> schedulingBoard(WorkOrderDto workOrder) {
+ public Map> schedulingBoard(WorkOrderDto workOrder) {
List list = baseMapper.selectWorkOrderList(workOrder);
- Map> resultList = new HashMap<>();
+ Map> resultList = new HashMap<>();
Map> woCodeGroup = list.stream().collect(Collectors.groupingBy(WorkOrderDto::getWoCode));
for (Map.Entry> entry : woCodeGroup.entrySet()) {
@@ -195,7 +195,7 @@ public class WorkOrderServiceImpl extends BaseServiceImpl workOrderEntityList) {
- List requestList = new ArrayList<>();
+ @Override
+ public void sendWorkOrderToOldMes(List workOrderEntityList) {
+ List requestList = new ArrayList<>();
- for (WorkOrderEntity workOrderEntity : workOrderEntityList) {
- JSONObject requestJson = new JSONObject();
+ for (WorkOrderEntity workOrderEntity : workOrderEntityList) {
+ JSONObject requestJson = new JSONObject();
- List workPlanList = workPlanService.list(Wrappers.lambdaQuery()
- .eq(WorkPlanEntity::getWoId, workOrderEntity.getId()));
+ List workPlanList = workPlanService.list(Wrappers.lambdaQuery()
+ .eq(WorkPlanEntity::getWoId, workOrderEntity.getId()));
- requestJson.put("workOrder", workOrderEntity);
- requestJson.put("workPlanList", workPlanList);
- requestList.add(requestJson);
- }
+ requestJson.put("workOrder", workOrderEntity);
+ requestJson.put("workPlanList", workPlanList);
+ requestList.add(requestJson);
+ }
- // 向旧MES推送排产结果数据
- String url = oldMesUrl + pushApsResult;
- try {
- HttpUtil.post(url, JSONObject.toJSONString(requestList));
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
+ // 向旧MES推送排产结果数据
+ String url = oldMesUrl + pushApsResult;
+ try {
+ HttpUtil.post(url, JSONObject.toJSONString(requestList));
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
@Override
public List schedulingCount(WorkOrderDto workOrder) {
- if(StringUtils.isNotEmpty(workOrder.getStartTime())){
+ if (StringUtils.isNotEmpty(workOrder.getStartTime())) {
workOrder.setStartTime(workOrder.getStartTime().concat(" 00:00:00"));
}
- if(StringUtils.isNotEmpty(workOrder.getEndTime())){
+ if (StringUtils.isNotEmpty(workOrder.getEndTime())) {
workOrder.setEndTime(workOrder.getEndTime().concat(" 23:59:59"));
}
List list = baseMapper.selectSchedulingCount(workOrder);
list.forEach(item -> {
- item.setSchedulingRate(String.format("%.2f", (double)item.getSchedulingCount()/item.getTotalCount()*100));
+ item.setSchedulingRate(String.format("%.2f", (double) item.getSchedulingCount() / item.getTotalCount() * 100));
});
return list;
}
@@ -291,26 +291,26 @@ public class WorkOrderServiceImpl extends BaseServiceImpl list) {
- //查询订单下的工序,计算cr值
- for (YieldOrderEntity entity : list) {
- List craftList = yieldOrderCraftService.list(Wrappers.lambdaQuery().eq(YieldOrderCraftEntity::getYoId, entity.getId()));
- //定义订单总工时
- BigDecimal total = new BigDecimal(0);
- for (YieldOrderCraftEntity craftEntity : craftList) {
- total = total.add(craftEntity.getHourQuota());
- }
- //换算成天
- total = total.divide(BigDecimal.valueOf(1440), 2, RoundingMode.HALF_UP);
- if(total.compareTo(new BigDecimal(0)) == 0){
+ //查询订单下的工序,计算cr值
+ for (YieldOrderEntity entity : list) {
+ List craftList = yieldOrderCraftService.list(Wrappers.lambdaQuery().eq(YieldOrderCraftEntity::getYoId, entity.getId()));
+ //定义订单总工时
+ BigDecimal total = new BigDecimal(0);
+ for (YieldOrderCraftEntity craftEntity : craftList) {
+ total = total.add(craftEntity.getHourQuota());
+ }
+ //换算成天
+ total = total.divide(BigDecimal.valueOf(1440), 2, RoundingMode.HALF_UP);
+ if (total.compareTo(new BigDecimal(0)) == 0) {
entity.setCrValue(new BigDecimal(0));
continue;
}
- //获取交期剩余天数
- BigDecimal restDays = new BigDecimal(TimeUnit.DAYS.convert(entity.getDemandDate().getTime() - DateUtil.now().getTime(), TimeUnit.MILLISECONDS));
- //计算cr值剩余交期天数/生产所需额定时长
- entity.setCrValue(restDays.divide(total, 2, RoundingMode.HALF_UP));
- }
- }
+ //获取交期剩余天数
+ BigDecimal restDays = new BigDecimal(TimeUnit.DAYS.convert(entity.getDemandDate().getTime() - DateUtil.now().getTime(), TimeUnit.MILLISECONDS));
+ //计算cr值剩余交期天数/生产所需额定时长
+ entity.setCrValue(restDays.divide(total, 2, RoundingMode.HALF_UP));
+ }
+ }
/**
@@ -321,8 +321,8 @@ public class WorkOrderServiceImpl extends BaseServiceImpl list,Map personAbilityMap,Map mainProducerMap,Map> planMap) {
+ @Transactional(rollbackFor = Exception.class)
+ public void allocateResources(List list, Map personAbilityMap, Map mainProducerMap, Map> planMap) {
List workOrderList = new ArrayList<>();
for (YieldOrderEntity order : list) {
try {
@@ -330,9 +330,9 @@ public class WorkOrderServiceImpl extends BaseServiceImpl workPlanList = new ArrayList<>();
//查询所有工序
- List craftList = yieldOrderCraftService.list(Wrappers.lambdaQuery().eq(YieldOrderCraftEntity::getYoId, order.getId()).ne(YieldOrderCraftEntity::getCaId,27).orderByAsc(YieldOrderCraftEntity::getProcessNo));
+ List craftList = yieldOrderCraftService.list(Wrappers.lambdaQuery().eq(YieldOrderCraftEntity::getYoId, order.getId()).ne(YieldOrderCraftEntity::getCaId, 27).orderByAsc(YieldOrderCraftEntity::getProcessNo));
List workCenterList = craftList.stream().filter(item -> item.getWorkCenterId() != null).map(YieldOrderCraftEntity::getWorkCenterId).collect(Collectors.toList());
- if(workCenterList.size() != craftList.size()){
+ if (workCenterList.size() != craftList.size()) {
order.setErrorInfo("工序信息不完整,含有未匹配作业中心的工序");
order.setStatus(YieldOrderEnum.STATUS_PROCESS_ERROR.getCategory());
yieldOrderService.updateById(order);
@@ -342,33 +342,33 @@ public class WorkOrderServiceImpl extends BaseServiceImpl 0 ? prevProcessEnd : workPlanList.get(workPlanList.size()-1).getEndTime();
+ prevProcessEnd = prevProcessEnd.compareTo(workPlanList.get(workPlanList.size() - 1).getEndTime()) > 0 ? prevProcessEnd : workPlanList.get(workPlanList.size() - 1).getEndTime();
}
for (int i = 0; i < craftList.size(); i++) {
YieldOrderCraftEntity craft = craftList.get(i);
if ("设备".equals(mainProducerMap.get(craft.getPpsId()))) {
//根据作业中心查询所有设备
- List equipAbilityList = equipAbilityService.list(Wrappers.lambdaQuery().in(EquipAbilityEntity::getWorkCenterId, craft.getWorkCenterId()).eq(EquipAbilityEntity::getCraftId,craft.getCaId()));
- if(CollectionUtils.isEmpty(equipAbilityList)){
+ List equipAbilityList = equipAbilityService.list(Wrappers.lambdaQuery().in(EquipAbilityEntity::getWorkCenterId, craft.getWorkCenterId()).eq(EquipAbilityEntity::getCraftId, craft.getCaId()));
+ if (CollectionUtils.isEmpty(equipAbilityList)) {
order.setErrorInfo("设备未匹配到对应的设备能力");
order.setStatus(YieldOrderEnum.STATUS_PROCESS_ERROR.getCategory());
yieldOrderService.updateById(order);
isSchecuding = false;
break;
}
- Map> equipAbilityMap = equipAbilityList.stream().collect(Collectors.groupingBy(EquipAbilityEntity::getEquipOrder));
+ Map> equipAbilityMap = equipAbilityList.stream().collect(Collectors.groupingBy(EquipAbilityEntity::getEquipOrder));
//匹配设备资源
//获取下一个整数点
LocalDateTime dateTime = getNextIntegerTime(prevProcessEnd);
- for(Map.Entry> entry : equipAbilityMap.entrySet()){
+ for (Map.Entry> entry : equipAbilityMap.entrySet()) {
//根据时间点获取所有设备资源
- List equipResourceList = equipResourceService.list(Wrappers.lambdaQuery().eq(EquipResourceEntity::getCraftId,craft.getCaId()).eq(EquipResourceEntity::getWorkCenterId,craft.getWorkCenterId()).ge(EquipResourceEntity::getStartTime, dateTime).eq(EquipResourceEntity::getIsUsed, 0).in(EquipResourceEntity::getEquipOrder, entry.getKey()));
- if(CollectionUtils.isEmpty(equipResourceList)){
+ List equipResourceList = equipResourceService.list(Wrappers.lambdaQuery().eq(EquipResourceEntity::getCraftId, craft.getCaId()).eq(EquipResourceEntity::getWorkCenterId, craft.getWorkCenterId()).ge(EquipResourceEntity::getStartTime, dateTime).eq(EquipResourceEntity::getIsUsed, 0).in(EquipResourceEntity::getEquipOrder, entry.getKey()));
+ if (CollectionUtils.isEmpty(equipResourceList)) {
order.setStatus(YieldOrderEnum.STATUS_PROCESS_ERROR.getCategory());
- order.setErrorInfo("工序:"+craft.getPpsId()+"未匹配到对应的设备资源");
+ order.setErrorInfo("工序:" + craft.getPpsId() + "未匹配到对应的设备资源");
yieldOrderService.updateById(order);
isSchecuding = false;
break;
@@ -394,9 +394,9 @@ public class WorkOrderServiceImpl extends BaseServiceImpl capacityList = capacitySplit(equipResourceMap,sumCapacity);
- for(BigDecimal capacity : capacityList){
- for(Map.Entry> entry1 : equipResourceMap.entrySet()){
+ List capacityList = capacitySplit(equipResourceMap, sumCapacity);
+ for (BigDecimal capacity : capacityList) {
+ for (Map.Entry> entry1 : equipResourceMap.entrySet()) {
Boolean isOccupied = false;
List resourceList = entry1.getValue();
for (EquipResourceEntity equipResource : resourceList) {
@@ -407,9 +407,9 @@ public class WorkOrderServiceImpl extends BaseServiceImpl equipWrapper = new LambdaUpdateWrapper<>();
- equipWrapper.eq(EquipResourceEntity::getEquipCode,equipResource.getEquipCode());
- equipWrapper.eq(EquipResourceEntity::getDateTime,equipResource.getDateTime());
- equipWrapper.eq(EquipResourceEntity::getPeriod,equipResource.getPeriod());
- equipWrapper.eq(EquipResourceEntity::getStartTime,equipResource.getStartTime());
- equipWrapper.eq(EquipResourceEntity::getEndTime,equipResource.getEndTime());
- equipResourceService.update(equipResource,equipWrapper);
+ equipWrapper.eq(EquipResourceEntity::getEquipCode, equipResource.getEquipCode());
+ equipWrapper.eq(EquipResourceEntity::getDateTime, equipResource.getDateTime());
+ equipWrapper.eq(EquipResourceEntity::getPeriod, equipResource.getPeriod());
+ equipWrapper.eq(EquipResourceEntity::getStartTime, equipResource.getStartTime());
+ equipWrapper.eq(EquipResourceEntity::getEndTime, equipResource.getEndTime());
+ equipResourceService.update(equipResource, equipWrapper);
//该设备后续所有开始时间小于当前结束时间的时间段都变为不可用
LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper();
updateWrapper.lt(EquipResourceEntity::getStartTime, equipResource.getEndTime());
updateWrapper.gt(EquipResourceEntity::getStartTime, equipResource.getStartTime());
- updateWrapper.eq(EquipResourceEntity::getEquipCode,equipResource.getEquipCode());
+ updateWrapper.eq(EquipResourceEntity::getEquipCode, equipResource.getEquipCode());
EquipResourceEntity equipResource1 = new EquipResourceEntity();
equipResource1.setIsUsed("1");
equipResourceService.update(equipResource1, updateWrapper);
@@ -465,7 +465,7 @@ public class WorkOrderServiceImpl extends BaseServiceImpl list) {
//根据作业中心分组
- Map> workPlanMap = list.stream().collect(Collectors.groupingBy(WorkPlanEntity::getWorkCenterId));
- for(Map.Entry> entry : workPlanMap.entrySet()){
+ Map> workPlanMap = list.stream().collect(Collectors.groupingBy(WorkPlanEntity::getWorkCenterId));
+ for (Map.Entry> entry : workPlanMap.entrySet()) {
List workPlanList = entry.getValue();
int startIndex = -1;
int endIndex = -1;
- for(int i =0;i0;i--){
- if(workPlanList.get(i).getEndTime() != null){
+ for (int i = workPlanList.size() - 1; i > 0; i--) {
+ if (workPlanList.get(i).getEndTime() != null) {
endIndex = i;
break;
}
}
- if(startIndex != -1){
+ if (startIndex != -1) {
// 向前推算(锚点之前的计划:从锚点前一个开始,依次往前)
for (int i = startIndex - 1; i >= 0; i--) {
WorkPlanEntity current = workPlanList.get(i);
@@ -729,7 +729,7 @@ public class WorkOrderServiceImpl extends BaseServiceImpl capacitySplit(Map> map,BigDecimal sumCapacity){
+ public List capacitySplit(Map> map, BigDecimal sumCapacity) {
List equipResourceList1 = map.values().stream().flatMap(List::stream).collect(Collectors.toList());
- BigDecimal maxRestCapacity = equipResourceList1.stream().filter(entity -> entity.getRestCapacity().compareTo(BigDecimal.ZERO) >= 0).map(EquipResourceEntity::getRestCapacity).max(BigDecimal::compareTo).orElseThrow(() -> new IllegalArgumentException("列表中无有效的 restCapacity 数值"));;
+ BigDecimal maxRestCapacity = equipResourceList1.stream().filter(entity -> entity.getRestCapacity().compareTo(BigDecimal.ZERO) >= 0).map(EquipResourceEntity::getRestCapacity).max(BigDecimal::compareTo).orElseThrow(() -> new IllegalArgumentException("列表中无有效的 restCapacity 数值"));
+ ;
List capacityList = new ArrayList<>();
- if(sumCapacity.compareTo(maxRestCapacity) > 0){
+ if (sumCapacity.compareTo(maxRestCapacity) > 0) {
// 计算商(fullCount)和余数(remainder):divideAndRemainder返回[商, 余数]
BigDecimal[] divideResult = sumCapacity.divideAndRemainder(maxRestCapacity);
BigDecimal fullCountBig = divideResult[0]; // 商(如11/2=5)
@@ -785,11 +786,13 @@ public class WorkOrderServiceImpl extends BaseServiceImpl dt.format(dateTimeFormatter))
.orElse(null);
}
- public void checkSchedulingOrder(List list){
+
+ public void checkSchedulingOrder(List list) {
//判断待排产优先级,1级所有1级往后订单重新排产,2级订单重新排4/5级订单
List priorityList = list.stream().map(YieldOrderEntity::getPriorityAps).collect(Collectors.toList());
- if(priorityList.contains(1)){
+ if (priorityList.contains(1)) {
//查询所有非一级的待生产订单
- List schedulingOrderList = yieldOrderService.list(Wrappers.lambdaQuery().ne(YieldOrderEntity::getPriorityAps,1).eq(YieldOrderEntity::getStatus,4));
+ List schedulingOrderList = yieldOrderService.list(Wrappers.lambdaQuery().ne(YieldOrderEntity::getPriorityAps, 1).eq(YieldOrderEntity::getStatus, 4));
//校验已排产订单资源占用情况
checkResource(schedulingOrderList);
}
- if(priorityList.contains(2)){
+ if (priorityList.contains(2)) {
//查询4/5级的待生产订单
- List schedulingOrderList = yieldOrderService.list(Wrappers.lambdaQuery().in(YieldOrderEntity::getPriorityAps,Arrays.asList("4","5")).eq(YieldOrderEntity::getStatus,4));
+ List schedulingOrderList = yieldOrderService.list(Wrappers.lambdaQuery().in(YieldOrderEntity::getPriorityAps, Arrays.asList("4", "5")).eq(YieldOrderEntity::getStatus, 4));
checkResource(schedulingOrderList);
}
}
- public void checkResource(List list){
- if(CollectionUtils.isNotEmpty(list)){
+ public void checkResource(List list) {
+ if (CollectionUtils.isNotEmpty(list)) {
//根据订单查询设备资源
- for(YieldOrderEntity yieldOrder : list){
+ for (YieldOrderEntity yieldOrder : list) {
//查询相关车间订单
- WorkOrderEntity workOrder = this.getOne(Wrappers.lambdaQuery().eq(WorkOrderEntity::getYoId,yieldOrder.getId()));
- if(workOrder != null){
- List schedulingPlanList = workPlanService.list(Wrappers.lambdaQuery().eq(WorkPlanEntity::getWoId,workOrder.getId()));
- if(CollectionUtils.isNotEmpty(schedulingPlanList)){
- for(WorkPlanEntity workPlan : schedulingPlanList){
+ WorkOrderEntity workOrder = this.getOne(Wrappers.lambdaQuery().eq(WorkOrderEntity::getYoId, yieldOrder.getId()));
+ if (workOrder != null) {
+ List schedulingPlanList = workPlanService.list(Wrappers.lambdaQuery().eq(WorkPlanEntity::getWoId, workOrder.getId()));
+ if (CollectionUtils.isNotEmpty(schedulingPlanList)) {
+ for (WorkPlanEntity workPlan : schedulingPlanList) {
//还原设备资源
- if(workPlan.getEquipResourceId() != null){
+ if (workPlan.getEquipResourceId() != null) {
EquipResourceEntity equipResource = equipResourceService.getById(workPlan.getEquipResourceId());
equipResource.setIsUsed("0");
equipResource.setRestCapacity(equipResource.getRestCapacity().add(workPlan.getHourQuota()));
LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>();
- updateWrapper.eq(EquipResourceEntity::getEquipCode,equipResource.getEquipCode());
- updateWrapper.eq(EquipResourceEntity::getDateTime,equipResource.getDateTime());
- updateWrapper.eq(EquipResourceEntity::getPeriod,equipResource.getPeriod());
- equipResourceService.update(equipResource,updateWrapper);
+ updateWrapper.eq(EquipResourceEntity::getEquipCode, equipResource.getEquipCode());
+ updateWrapper.eq(EquipResourceEntity::getDateTime, equipResource.getDateTime());
+ updateWrapper.eq(EquipResourceEntity::getPeriod, equipResource.getPeriod());
+ equipResourceService.update(equipResource, updateWrapper);
}
//还原人力资源
@@ -960,33 +964,33 @@ public class WorkOrderServiceImpl extends BaseServiceImpl> dealCommonCraftOrders(){
+ public Map> dealCommonCraftOrders() {
List commonCraftOrderList = yieldOrderService.selectCommonCraftOrderList();
- Map> planMap = new HashMap<>();
- if(CollectionUtils.isNotEmpty(commonCraftOrderList)){
+ Map> planMap = new HashMap<>();
+ if (CollectionUtils.isNotEmpty(commonCraftOrderList)) {
//对订单进行排序,每5个相同workCenterId的为一组,实现负载均衡
commonCraftOrderList = sortByWorkcenterIdPer5Group(commonCraftOrderList);
//对前置公共工序进行排产
//获取公共工序设备能力,根据工艺能力查询,写死ID是27
- EquipAbilityEntity equipAbility = equipAbilityService.getOne(Wrappers.lambdaQuery().eq(EquipAbilityEntity::getCraftId,27));
+ EquipAbilityEntity equipAbility = equipAbilityService.getOne(Wrappers.lambdaQuery().eq(EquipAbilityEntity::getCraftId, 27));
BigDecimal standardProcessAbility = equipAbility.getStandardProcessAbility();
//获取所有空闲的公共工序资源
List equipResourceList = equipResourceService.selectCommonCraftList();
- for(YieldOrderEntity order : commonCraftOrderList){
+ for (YieldOrderEntity order : commonCraftOrderList) {
List workPlanList = new ArrayList<>();
//获取相关工序
- YieldOrderCraftEntity craft = yieldOrderCraftService.getOne(Wrappers.lambdaQuery().eq(YieldOrderCraftEntity::getYoId,order.getId()).eq(YieldOrderCraftEntity::getCaId,equipAbility.getCraftId()));
- if(craft == null){
+ YieldOrderCraftEntity craft = yieldOrderCraftService.getOne(Wrappers.lambdaQuery().eq(YieldOrderCraftEntity::getYoId, order.getId()).eq(YieldOrderCraftEntity::getCaId, equipAbility.getCraftId()));
+ if (craft == null) {
continue;
}
//计算订单总产能
BigDecimal sumCapacity = order.getYpArea().multiply(BigDecimal.valueOf(100)).multiply(BigDecimal.valueOf(order.getYpQty()));
//计算需要占用几个时间段
- int period = sumCapacity.divide(standardProcessAbility,0, RoundingMode.CEILING).intValue();
+ int period = sumCapacity.divide(standardProcessAbility, 0, RoundingMode.CEILING).intValue();
- for(int i=0;i list){
- for(WorkPlanEntity workPlan : list){
+ public void restoreResource(List list) {
+ for (WorkPlanEntity workPlan : list) {
//还原设备资源
- if(workPlan.getEquipResourceId() != null){
+ if (workPlan.getEquipResourceId() != null) {
EquipResourceEntity equipResource = equipResourceService.getById(workPlan.getEquipResourceId());
equipResource.setIsUsed("0");
equipResource.setRestCapacity(equipResource.getRestCapacity().add(workPlan.getHourQuota()));
LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>();
- updateWrapper.eq(EquipResourceEntity::getEquipCode,equipResource.getEquipCode());
- updateWrapper.eq(EquipResourceEntity::getDateTime,equipResource.getDateTime());
- updateWrapper.eq(EquipResourceEntity::getPeriod,equipResource.getPeriod());
- equipResourceService.update(equipResource,updateWrapper);
+ updateWrapper.eq(EquipResourceEntity::getEquipCode, equipResource.getEquipCode());
+ updateWrapper.eq(EquipResourceEntity::getDateTime, equipResource.getDateTime());
+ updateWrapper.eq(EquipResourceEntity::getPeriod, equipResource.getPeriod());
+ equipResourceService.update(equipResource, updateWrapper);
}
//还原人力资源
- if(workPlan.getPersonResourceIds() != null){
- List personResourceList = personResourceService.list(Wrappers.lambdaQuery().in(BaseEntity::getId,workPlan.getPersonResourceIds().split(",")));
- if(CollectionUtils.isNotEmpty(personResourceList)){
- personResourceList.forEach(item ->{
+ if (workPlan.getPersonResourceIds() != null) {
+ List personResourceList = personResourceService.list(Wrappers.lambdaQuery().in(BaseEntity::getId, workPlan.getPersonResourceIds().split(",")));
+ if (CollectionUtils.isNotEmpty(personResourceList)) {
+ personResourceList.forEach(item -> {
item.setIsUsed("0");
personResourceService.updateById(item);
});
}
}
- if(workPlan.getId() != null){
+ if (workPlan.getId() != null) {
workPlanService.deleteLogic(Arrays.asList(workPlan.getId()));
}