|
@@ -1,24 +1,30 @@
|
|
|
package com.rongwei.bscommon.sys.service.impl;
|
|
|
|
|
|
import cn.hutool.core.bean.BeanUtil;
|
|
|
+import cn.hutool.core.date.DateField;
|
|
|
+import cn.hutool.core.date.DateUtil;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
|
|
import com.rongwei.bscommon.sys.dao.ApsBlankOrderDao;
|
|
|
+import com.rongwei.bscommon.sys.fegin.RwApsServer;
|
|
|
import com.rongwei.bscommon.sys.service.ApsBlankOrderService;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
import com.rongwei.bscommon.sys.service.ApsProcessOperationService;
|
|
|
+import com.rongwei.bscommon.sys.service.ApsProductionOrderService;
|
|
|
import com.rongwei.bscommon.sys.service.AspCheckItemsService;
|
|
|
-import com.rongwei.bsentity.domain.ApsBlankOrderDo;
|
|
|
-import com.rongwei.bsentity.domain.ApsProcessOperationDo;
|
|
|
-import com.rongwei.bsentity.domain.AspCheckItemsDo;
|
|
|
+import com.rongwei.bsentity.domain.*;
|
|
|
import com.rongwei.bsentity.vo.*;
|
|
|
+import com.rongwei.rwcommon.utils.SecurityUtil;
|
|
|
import com.rongwei.rwcommon.utils.StringUtils;
|
|
|
import com.rongwei.safecommon.utils.SaveConstans;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
-import java.util.ArrayList;
|
|
|
-import java.util.Arrays;
|
|
|
-import java.util.List;
|
|
|
+import java.math.BigDecimal;
|
|
|
+import java.time.ZoneId;
|
|
|
+import java.util.*;
|
|
|
+import java.util.stream.Collectors;
|
|
|
+import java.util.stream.Stream;
|
|
|
|
|
|
/**
|
|
|
* <p>
|
|
@@ -35,6 +41,96 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
|
|
|
private ApsProcessOperationService apsProcessOperationService;
|
|
|
@Autowired
|
|
|
private AspCheckItemsService aspCheckItemsService;
|
|
|
+ @Autowired
|
|
|
+ private ApsBlankOrderDao apsBlankOrderDao;
|
|
|
+ @Autowired
|
|
|
+ private RwApsServer rwApsServer;
|
|
|
+ @Autowired
|
|
|
+ private ApsProcessOperationProcessEquServiceImpl processOperationProcessEquService;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 订单批量排程
|
|
|
+ * @param apsPlanVo
|
|
|
+ */
|
|
|
+ public void apsScheduling(ApsPlanVo apsPlanVo){
|
|
|
+ // 设置批量排程默认开始时间(当前时间向后移8小时)
|
|
|
+ if(apsPlanVo.getApsPlanStartDate() == null){
|
|
|
+ apsPlanVo.setApsPlanStartDate(DateUtil.date().offset(DateField.HOUR,8));
|
|
|
+ }
|
|
|
+ List<ApsBlankOrderVo> apsBlankOrders = new ArrayList<>();
|
|
|
+ if(apsPlanVo.getApsProductionOrders() != null){
|
|
|
+ for (ApsProductionOrderDo apsProductionOrder : apsPlanVo.getApsProductionOrders()) {
|
|
|
+ List<ApsBlankOrderVo> byOrderId = apsBlankOrderDao.getByOrderId(apsProductionOrder.getId());
|
|
|
+ if(byOrderId != null && byOrderId.size()>0){
|
|
|
+ apsBlankOrders.addAll(byOrderId);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ apsPlanVo.setApsBlankOrderDos(apsBlankOrders);
|
|
|
+ // 模型转换
|
|
|
+ ProductionScheduleVo productionScheduleVo = apsPlanModelSet(apsPlanVo);
|
|
|
+ // APS平台排程接口调用
|
|
|
+ ProductionScheduleRetVo productionScheduleRetVo = rwApsServer.productionSchedule(productionScheduleVo);
|
|
|
+ // 排程结果保存
|
|
|
+ List<ApsProcessOperationProcessEquDo> apsProcessOperationProcessEquDos = new ArrayList<>();
|
|
|
+ // 作业ID集合
|
|
|
+ List<String> zyIds = new ArrayList<>();
|
|
|
+ if(productionScheduleRetVo.getProcesses() != null && productionScheduleRetVo.getProcesses().size()>0){
|
|
|
+ for (ProductionProcesses process : productionScheduleRetVo.getProcesses()) {
|
|
|
+ // 非合并生产工序
|
|
|
+ if(process.getAluminumCoils() == null){
|
|
|
+ ApsProcessOperationProcessEquDo apsProcessOperationProcessEqu = new ApsProcessOperationProcessEquDo();
|
|
|
+ apsProcessOperationProcessEqu.setId(SecurityUtil.getUUID());
|
|
|
+ apsProcessOperationProcessEqu.setProcessid(process.getId());
|
|
|
+ apsProcessOperationProcessEqu.setProcessdeviceid(process.getEquipment().getId());
|
|
|
+ apsProcessOperationProcessEqu.setProcessdevice(process.getEquipment().getEquipmentName());
|
|
|
+ apsProcessOperationProcessEqu.setProcessworkshopid(process.getEquipment().getWorkshop());
|
|
|
+ apsProcessOperationProcessEqu.setProcessworkshop(process.getEquipment().getWorkshopname());
|
|
|
+ apsProcessOperationProcessEqu.setPlanstartdate(Date.from(process.getStartTime().atZone(ZoneId.systemDefault()).toInstant()));
|
|
|
+ apsProcessOperationProcessEqu.setPlanenddate(Date.from(process.getEndTime().atZone(ZoneId.systemDefault()).toInstant()));
|
|
|
+ apsProcessOperationProcessEqu.setPlanprocessrall(process.getProducePcNum());
|
|
|
+ apsProcessOperationProcessEquDos.add(apsProcessOperationProcessEqu);
|
|
|
+ zyIds.add(process.getId());
|
|
|
+ }
|
|
|
+ // 合并生产工序
|
|
|
+ else {
|
|
|
+ // 保存到明细表
|
|
|
+ Map<String,List<AluminumCoil>> bsAl = new HashMap<>();
|
|
|
+ for (AluminumCoil aluminumCoil : process.getAluminumCoils()) {
|
|
|
+ if(bsAl.containsKey(aluminumCoil.getBsId())){
|
|
|
+ bsAl.get(aluminumCoil.getBsId()).add(aluminumCoil);
|
|
|
+ }else{
|
|
|
+ List<AluminumCoil> coils = new ArrayList<>();
|
|
|
+ coils.add(aluminumCoil);
|
|
|
+ bsAl.put(aluminumCoil.getBsId(),coils);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ bsAl.forEach((k,v)->{
|
|
|
+ ApsProcessOperationProcessEquDo apsProcessOperationProcessEqu = new ApsProcessOperationProcessEquDo();
|
|
|
+ apsProcessOperationProcessEqu.setId(SecurityUtil.getUUID());
|
|
|
+ apsProcessOperationProcessEqu.setProcessid(k);
|
|
|
+ apsProcessOperationProcessEqu.setProcessdeviceid(process.getEquipment().getId());
|
|
|
+ apsProcessOperationProcessEqu.setProcessdevice(process.getEquipment().getEquipmentName());
|
|
|
+ apsProcessOperationProcessEqu.setProcessworkshopid(process.getEquipment().getWorkshop());
|
|
|
+ apsProcessOperationProcessEqu.setProcessworkshop(process.getEquipment().getWorkshopname());
|
|
|
+ apsProcessOperationProcessEqu.setPlanstartdate(Date.from(process.getStartTime().atZone(ZoneId.systemDefault()).toInstant()));
|
|
|
+ apsProcessOperationProcessEqu.setPlanenddate(Date.from(process.getEndTime().atZone(ZoneId.systemDefault()).toInstant()));
|
|
|
+ apsProcessOperationProcessEqu.setPlanprocessrall(v.size());
|
|
|
+ apsProcessOperationProcessEquDos.add(apsProcessOperationProcessEqu);
|
|
|
+ zyIds.add(k);
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if(apsProcessOperationProcessEquDos != null && apsProcessOperationProcessEquDos.size()>0){
|
|
|
+ // 先删除所有作业的明细
|
|
|
+ if (zyIds != null && zyIds.size()>0){
|
|
|
+ processOperationProcessEquService.remove(new LambdaUpdateWrapper<ApsProcessOperationProcessEquDo>().in(ApsProcessOperationProcessEquDo::getProcessid,zyIds));
|
|
|
+ }
|
|
|
+ // 再保存新数据
|
|
|
+ processOperationProcessEquService.saveBatch(apsProcessOperationProcessEquDos);
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
/**
|
|
|
* 原始订单表数据转换APS平台模型数据
|
|
@@ -47,6 +143,14 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
|
|
|
ProductionScheduleVo productionScheduleVo = new ProductionScheduleVo();
|
|
|
// 排程计划开始时间
|
|
|
productionScheduleVo.setApsPlanStartDate(apsPlanVo.getApsPlanStartDate());
|
|
|
+ productionScheduleVo.setProductionScheduleId("批量排程");
|
|
|
+ productionScheduleVo.setPlanSeconds(10);
|
|
|
+ // 所有设备
|
|
|
+ List<AspCheckItemsDo> eqs = aspCheckItemsService.list(new LambdaQueryWrapper<>());
|
|
|
+ Map<String,AspCheckItemsDo> eqMaps = new HashMap<>();
|
|
|
+ for (AspCheckItemsDo eq : eqs) {
|
|
|
+ eqMaps.put(eq.getId(),eq);
|
|
|
+ }
|
|
|
// 排程计划设备集合
|
|
|
List<Equipment> equipmentList = new ArrayList<>();
|
|
|
// 排程计划工序任务集合
|
|
@@ -72,6 +176,8 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
|
|
|
ApsProcessOperationVo processOperationVo = new ApsProcessOperationVo();
|
|
|
BeanUtil.copyProperties(operationDo,processOperationVo);
|
|
|
processOperationVo.setProduceOrder(produceOrder);
|
|
|
+ processOperationVo.setDeliverydate(apsBlankOrderVo.getDeliverydate());
|
|
|
+ processOperationVo.setApsBlankOrderVo(apsBlankOrderVo);
|
|
|
processOperationMs.add(processOperationVo);
|
|
|
}else {
|
|
|
// 非合并生产工序
|
|
@@ -79,7 +185,7 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
|
|
|
if(StringUtils.isNotBlank(operationDo.getCanchoosedeviceid())){
|
|
|
String[] sbIds = operationDo.getCanchoosedeviceid().split(",");
|
|
|
for (String equIds : sbIds) {
|
|
|
- AspCheckItemsDo checkItemsD = aspCheckItemsService.getById(equIds);
|
|
|
+ AspCheckItemsDo checkItemsD = eqMaps.get(equIds);
|
|
|
Equipment equipment = new Equipment();
|
|
|
equipment.setBsEquipmentId(equIds);
|
|
|
equipment.setId(equIds);
|
|
@@ -95,6 +201,12 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
|
|
|
processes.setBsProcessesId(operationDo.getId());
|
|
|
// 工序任务可选设备
|
|
|
processes.setOptionalEquipments(optionalEquipments);
|
|
|
+ // 批次
|
|
|
+ processes.setProducePcNum(operationDo.getPlanprocessrall());
|
|
|
+ // 单次加工时长
|
|
|
+ processes.setUnitProduceTime(operationDo.getPlanoncetime().intValue());
|
|
|
+ processes.setProduceTime(processes.getUnitProduceTime()*processes.getProducePcNum());
|
|
|
+
|
|
|
// 上道工序
|
|
|
if(StringUtils.isNotBlank(operationDo.getPreviousprocess())){
|
|
|
processes.setPreviousProcessesIds(Arrays.asList(operationDo.getPreviousprocess().split(",")));
|
|
@@ -109,7 +221,7 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
|
|
|
}
|
|
|
}
|
|
|
// 合并生产工序
|
|
|
- List<ProductionProcesses> productionProcesses = mergeProcesses(processOperationMs);
|
|
|
+ List<ProductionProcesses> productionProcesses = mergeProcesses(processOperationMs,eqMaps);
|
|
|
processesList.addAll(productionProcesses);
|
|
|
|
|
|
productionScheduleVo.setProcesses(processesList);
|
|
@@ -122,9 +234,217 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
|
|
|
* @param processOperationMs
|
|
|
* @return
|
|
|
*/
|
|
|
- private List<ProductionProcesses> mergeProcesses(List<ApsProcessOperationVo> processOperationMs){
|
|
|
+ private List<ProductionProcesses> mergeProcesses(List<ApsProcessOperationVo> processOperationMs,Map<String,AspCheckItemsDo> eqMaps){
|
|
|
+ // 最终的合并工序
|
|
|
List<ProductionProcesses> processesList = new ArrayList<>();
|
|
|
+ if(processOperationMs != null && processOperationMs.size()>0){
|
|
|
+ // 按照期望交货期排序
|
|
|
+ processOperationMs.sort(Comparator.comparing(ApsProcessOperationVo::getDeliverydate));
|
|
|
+ // 获取所有设备,并按已存在最晚完工时间排序
|
|
|
+ String allSelEqs = null;
|
|
|
+ for (ApsProcessOperationVo processOperationM : processOperationMs) {
|
|
|
+ if(StringUtils.isNotBlank(processOperationM.getCanchoosedeviceid())){
|
|
|
+ String[] sbIds = processOperationM.getCanchoosedeviceid().split(",");
|
|
|
+ for (String equIds : sbIds) {
|
|
|
+ if(allSelEqs == null){
|
|
|
+ allSelEqs = "'"+equIds+"'";
|
|
|
+ }else{
|
|
|
+ if(!allSelEqs.contains(equIds)){
|
|
|
+ allSelEqs = allSelEqs + ",'"+equIds+"'";
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 设备排序
|
|
|
+ List<AspCheckItemsDo> aspCheckItemsDos = apsBlankOrderDao.eqAscs(allSelEqs);
|
|
|
+ Map<String,AspCheckItemsDo> aspCheckItemMap = new HashMap<>();
|
|
|
+ for (AspCheckItemsDo aspCheckItemsDo : aspCheckItemsDos) {
|
|
|
+ aspCheckItemMap.put(aspCheckItemsDo.getId(),aspCheckItemsDo);
|
|
|
+ }
|
|
|
+ // 记录最后选择的设备序号
|
|
|
+ Integer m = 0;
|
|
|
+ for (ApsProcessOperationVo processOperationM : processOperationMs) {
|
|
|
+ // 作业加工卷数
|
|
|
+ int planprocessrall = processOperationM.getPlanprocessrall();
|
|
|
+ if(planprocessrall<=0){
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ Boolean a = true;
|
|
|
+ long timestart = DateUtil.date().getTime();
|
|
|
+
|
|
|
+ while (a){
|
|
|
+ int lastnum = planprocessrall;
|
|
|
+
|
|
|
+ // 首先看已合并生产的设备是否还有余量继续排产
|
|
|
+ for (ProductionProcesses processes : processesList) {
|
|
|
+ // 加工设备
|
|
|
+ String eq = processes.getOptionalEquipments().get(0);
|
|
|
+ AspCheckItemsDo aspCheckItem = aspCheckItemMap.get(eq);
|
|
|
+
|
|
|
+ // 合金和合金状态要一致
|
|
|
+ if(processes.getAluminumCoils().get(0).getVolumeMetal().equals(processOperationM.getMetal())
|
|
|
+ && processes.getAluminumCoils().get(0).getVolumeMetalstate().equals(processOperationM.getMetalstate())){
|
|
|
+ // 宽度不超过50mm,厚度不超过0.05mm,重量不超过1吨
|
|
|
+ boolean bol = true;
|
|
|
+ BigDecimal totalWidth = null;
|
|
|
+ BigDecimal totalWeight = null;
|
|
|
+ for (AluminumCoil aluminumCoil : processes.getAluminumCoils()) {
|
|
|
+ // 宽度不超过50mm
|
|
|
+ if(aluminumCoil.getVolumeWidth().subtract(processOperationM.getProwidth()).abs().compareTo(new BigDecimal("50"))>0){
|
|
|
+ bol = false;
|
|
|
+ }
|
|
|
+ // 厚度不超过0.05mm
|
|
|
+ if(aluminumCoil.getVolumeThickness().subtract(processOperationM.getThickness()).abs().compareTo(new BigDecimal("0.05"))>0){
|
|
|
+ bol = false;
|
|
|
+ }
|
|
|
+ // 重量不超过1吨
|
|
|
+ if(aluminumCoil.getVolumeWeight().subtract(processOperationM.getSinglerollweight()).abs().compareTo(new BigDecimal("1"))>0){
|
|
|
+ bol = false;
|
|
|
+ }
|
|
|
+ if(totalWidth == null){
|
|
|
+ totalWidth = aluminumCoil.getVolumeWidth();
|
|
|
+ }else{
|
|
|
+ totalWidth = totalWidth.add(aluminumCoil.getVolumeWidth());
|
|
|
+ }
|
|
|
+ if(totalWeight == null){
|
|
|
+ totalWeight = aluminumCoil.getVolumeWeight();
|
|
|
+ }else{
|
|
|
+ totalWeight = totalWeight.add(aluminumCoil.getVolumeWeight());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if(bol){
|
|
|
+ Integer sy = 0;
|
|
|
+ for (int j=1;j<=planprocessrall;j++){
|
|
|
+ // 宽度余量
|
|
|
+ if(aspCheckItem.getEquipmentwidth().subtract(totalWidth).compareTo(processOperationM.getProwidth().multiply(new BigDecimal(j)))<0){
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ // 重量余量
|
|
|
+ if(aspCheckItem.getEquipmentbearing().subtract(totalWeight).compareTo(processOperationM.getSinglerollweight().multiply(new BigDecimal(j)))<0){
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ sy = j;
|
|
|
+ }
|
|
|
+ if(sy>0){
|
|
|
+ lastnum = planprocessrall - sy;
|
|
|
+ for (int j=1;j<=sy;j++){
|
|
|
+ AluminumCoil aluminumCoil = new AluminumCoil();
|
|
|
+ aluminumCoil.setBsId(processOperationM.getId());
|
|
|
+ aluminumCoil.setVolumeWidth(processOperationM.getProwidth());
|
|
|
+ aluminumCoil.setVolumeThickness(processOperationM.getThickness());
|
|
|
+ aluminumCoil.setVolumeWeight(processOperationM.getSinglerollweight());
|
|
|
+ aluminumCoil.setVolumeMetal(processOperationM.getMetal());
|
|
|
+ aluminumCoil.setVolumeMetalstate(processOperationM.getMetalstate());
|
|
|
+ processes.getAluminumCoils().add(aluminumCoil);
|
|
|
+ }
|
|
|
|
|
|
+ // 上道工序
|
|
|
+ if(StringUtils.isNotBlank(processOperationM.getPreviousprocess())){
|
|
|
+ processes.getPreviousProcessesIds().addAll(Arrays.asList(processOperationM.getPreviousprocess().split(",")));
|
|
|
+ }
|
|
|
+ // 下道工序
|
|
|
+ if(StringUtils.isNotBlank(processOperationM.getNextprocess())){
|
|
|
+ processes.getNextProcessesIds().addAll(Arrays.asList(processOperationM.getNextprocess().split(",")));
|
|
|
+ }
|
|
|
+ // 单次加工时长
|
|
|
+ if(processes.getUnitProduceTime() == null){
|
|
|
+ processes.setUnitProduceTime(processOperationM.getPlanoncetime().intValue());
|
|
|
+ processes.setProduceTime(processOperationM.getPlanoncetime().intValue());
|
|
|
+ }
|
|
|
+ // 加工时长取最大值
|
|
|
+ else{
|
|
|
+ if(processes.getUnitProduceTime()<processOperationM.getPlanoncetime().intValue()){
|
|
|
+ processes.setUnitProduceTime(processOperationM.getPlanoncetime().intValue());
|
|
|
+ processes.setProduceTime(processOperationM.getPlanoncetime().intValue());
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 剩余的料卷
|
|
|
+ if(lastnum>0){
|
|
|
+ if(m == aspCheckItemsDos.size()-1){
|
|
|
+ m = -1;
|
|
|
+ }
|
|
|
+ int haslast = 0;
|
|
|
+ for(int i=m+1;i<aspCheckItemsDos.size();i++){
|
|
|
+ if(haslast == lastnum){
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ AspCheckItemsDo aspCheckItem = aspCheckItemsDos.get(i);
|
|
|
+ // 选择的设备要在可选设备的范围内
|
|
|
+ if(processOperationM.getCanchoosedeviceid().contains(aspCheckItem.getId())){
|
|
|
+ // 单卷宽度不能超过设备宽度并且单卷重不能超过设备的承重
|
|
|
+ if(processOperationM.getProwidth().compareTo(aspCheckItem.getEquipmentwidth())<0
|
|
|
+ && processOperationM.getSinglerollweight().compareTo(aspCheckItem.getEquipmentbearing())<0){
|
|
|
+ for(int n=1;n<=lastnum;n++){
|
|
|
+ // 宽度余量
|
|
|
+ if(aspCheckItem.getEquipmentwidth().compareTo(processOperationM.getProwidth().multiply(new BigDecimal(n)))<0){
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ // 重量余量
|
|
|
+ if(aspCheckItem.getEquipmentbearing().compareTo(processOperationM.getSinglerollweight().multiply(new BigDecimal(n)))<0){
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ haslast = n;
|
|
|
+ }
|
|
|
+ if(haslast>0){
|
|
|
+ ProductionProcesses processes = new ProductionProcesses();
|
|
|
+ processes.setId(processOperationM.getId());
|
|
|
+ processes.setOptionalEquipments(Arrays.asList(new String[]{aspCheckItem.getId()}));
|
|
|
+ // 坯料计划订单
|
|
|
+ ProduceOrder produceOrder = new ProduceOrder(processOperationM.getApsBlankOrderVo().getId(),processOperationM.getApsBlankOrderVo().getMaterialname(),processOperationM.getApsBlankOrderVo().getDeliverydate());
|
|
|
+ processes.setProduceOrder(Arrays.asList(new ProduceOrder[]{produceOrder}));
|
|
|
+
|
|
|
+ processes.setAluminumCoils(new ArrayList<>());
|
|
|
+ for (int j=1;j<=haslast;j++){
|
|
|
+ AluminumCoil aluminumCoil = new AluminumCoil();
|
|
|
+ aluminumCoil.setBsId(processOperationM.getId());
|
|
|
+ aluminumCoil.setVolumeWidth(processOperationM.getProwidth());
|
|
|
+ aluminumCoil.setVolumeThickness(processOperationM.getThickness());
|
|
|
+ aluminumCoil.setVolumeWeight(processOperationM.getSinglerollweight());
|
|
|
+ aluminumCoil.setVolumeMetal(processOperationM.getMetal());
|
|
|
+ aluminumCoil.setVolumeMetalstate(processOperationM.getMetalstate());
|
|
|
+ processes.getAluminumCoils().add(aluminumCoil);
|
|
|
+ }
|
|
|
+ // 批次
|
|
|
+ processes.setProducePcNum(1);
|
|
|
+ // 单次加工时长
|
|
|
+ processes.setUnitProduceTime(processOperationM.getPlanoncetime().intValue());
|
|
|
+ processes.setProduceTime(processOperationM.getPlanoncetime().intValue());
|
|
|
+ // 上道工序
|
|
|
+ if(StringUtils.isNotBlank(processOperationM.getPreviousprocess())){
|
|
|
+ processes.setPreviousProcessesIds(Arrays.asList(processOperationM.getPreviousprocess().split(",")));
|
|
|
+ }
|
|
|
+ // 下道工序
|
|
|
+ if(StringUtils.isNotBlank(processOperationM.getNextprocess())){
|
|
|
+ processes.setNextProcessesIds(Arrays.asList(processOperationM.getNextprocess().split(",")));
|
|
|
+ }
|
|
|
+ processesList.add(processes);
|
|
|
+
|
|
|
+ lastnum = lastnum - haslast;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if(lastnum == 0){
|
|
|
+ a = false;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 循环超过2秒则强制退出防止内存溢出
|
|
|
+ /*long timeend = DateUtil.date().getTime();
|
|
|
+ if(timeend-timestart>3000){
|
|
|
+ a = false;
|
|
|
+ }*/
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
return processesList;
|
|
|
}
|
|
|
|