|
@@ -24,6 +24,7 @@ import org.slf4j.LoggerFactory;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
+
|
|
|
import java.math.BigDecimal;
|
|
|
import java.time.ZoneId;
|
|
|
import java.util.*;
|
|
@@ -68,16 +69,17 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
|
|
|
|
|
|
/**
|
|
|
* 取消订单排程
|
|
|
+ *
|
|
|
* @param apsProductionOrderIds
|
|
|
*/
|
|
|
@Override
|
|
|
- public void orderApsCancel(List<String> apsProductionOrderIds) throws Exception{
|
|
|
- if(apsProductionOrderIds != null && apsProductionOrderIds.size()>0){
|
|
|
+ public void orderApsCancel(List<String> apsProductionOrderIds) throws Exception {
|
|
|
+ if (apsProductionOrderIds != null && apsProductionOrderIds.size() > 0) {
|
|
|
List<ApsBlankOrderDo> blankOrderDos = this.list(new LambdaQueryWrapper<ApsBlankOrderDo>().in(ApsBlankOrderDo::getProductionorderid, apsProductionOrderIds));
|
|
|
- if(blankOrderDos != null && blankOrderDos.size()>0){
|
|
|
+ if (blankOrderDos != null && blankOrderDos.size() > 0) {
|
|
|
List<String> blankids = blankOrderDos.stream().map(ApsBlankOrderDo::getId).collect(Collectors.toList());
|
|
|
// 删除已排程的工序作业
|
|
|
- processOperationProcessEquService.remove(new LambdaQueryWrapper<ApsProcessOperationProcessEquDo>().in(ApsProcessOperationProcessEquDo::getBlankid,blankids));
|
|
|
+ processOperationProcessEquService.remove(new LambdaQueryWrapper<ApsProcessOperationProcessEquDo>().in(ApsProcessOperationProcessEquDo::getBlankid, blankids));
|
|
|
// 更新订单的排程状态
|
|
|
List<ApsProductionOrderDo> productionOrderDos = new ArrayList<>();
|
|
|
for (String apsProductionOrderId : apsProductionOrderIds) {
|
|
@@ -86,7 +88,7 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
|
|
|
productionOrderDo.setSchedulstatus(SaveConstans.SchedulstatusTyep.SCHEDULSTATUS_TOSCHEDULE);
|
|
|
productionOrderDos.add(productionOrderDo);
|
|
|
}
|
|
|
- if(productionOrderDos != null && productionOrderDos.size()>0){
|
|
|
+ if (productionOrderDos != null && productionOrderDos.size() > 0) {
|
|
|
apsProductionOrderService.updateBatchById(productionOrderDos);
|
|
|
}
|
|
|
// 更新坯料计划的锁定状态
|
|
@@ -103,13 +105,14 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
|
|
|
|
|
|
/**
|
|
|
* 锁定、解锁
|
|
|
+ *
|
|
|
* @param orderLockVo
|
|
|
* @throws Exception
|
|
|
*/
|
|
|
@Override
|
|
|
public void orderLock(OrderLockVo orderLockVo) throws Exception {
|
|
|
- if(StringUtils.isNotBlank(orderLockVo.getLockMark())){
|
|
|
- if(orderLockVo.getBlackOrderId() != null && orderLockVo.getBlackOrderId().size()>0){
|
|
|
+ if (StringUtils.isNotBlank(orderLockVo.getLockMark())) {
|
|
|
+ if (orderLockVo.getBlackOrderId() != null && orderLockVo.getBlackOrderId().size() > 0) {
|
|
|
// 组装待更新坯料计划实体
|
|
|
List<ApsBlankOrderDo> blankOrderDos = new ArrayList<>();
|
|
|
List<String> blankids = new ArrayList<>();
|
|
@@ -121,13 +124,13 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
|
|
|
blankids.add(id);
|
|
|
}
|
|
|
// 坯料计划锁定标识更新
|
|
|
- if(blankOrderDos != null && blankOrderDos.size()>0){
|
|
|
+ if (blankOrderDos != null && blankOrderDos.size() > 0) {
|
|
|
this.updateBatchById(blankOrderDos);
|
|
|
}
|
|
|
// 工序作业锁定标识更新
|
|
|
- apsProcessOperationService.update(new LambdaQueryWrapper<ApsProcessOperationDo>().in(ApsProcessOperationDo::getBlankid,blankids));
|
|
|
+ apsProcessOperationService.update(new LambdaQueryWrapper<ApsProcessOperationDo>().in(ApsProcessOperationDo::getBlankid, blankids));
|
|
|
// 工序作业排程计划锁定
|
|
|
- processOperationProcessEquService.update(new LambdaQueryWrapper<ApsProcessOperationProcessEquDo>().in(ApsProcessOperationProcessEquDo::getBlankid,blankids));
|
|
|
+ processOperationProcessEquService.update(new LambdaQueryWrapper<ApsProcessOperationProcessEquDo>().in(ApsProcessOperationProcessEquDo::getBlankid, blankids));
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -137,51 +140,65 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
|
|
|
* 所有待发布的未锁定的订单重新排程
|
|
|
*/
|
|
|
@Override
|
|
|
- public void apsReScheduling() throws Exception{
|
|
|
+ public void apsReScheduling() throws Exception {
|
|
|
List<ApsBlankOrderVo> notLockOrders = apsBlankOrderDao.getNotLockOrders();
|
|
|
blankOrderAps(notLockOrders);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 订单批量排程
|
|
|
+ *
|
|
|
* @param apsPlanVo
|
|
|
*/
|
|
|
- public void apsScheduling(ApsPlanVo apsPlanVo) throws Exception{
|
|
|
+ public void apsScheduling(ApsPlanVo apsPlanVo) throws Exception {
|
|
|
List<ApsBlankOrderVo> apsBlankOrders = new ArrayList<>();
|
|
|
- if(apsPlanVo.getApsProductionOrders() != null){
|
|
|
+ if (apsPlanVo.getApsProductionOrders() != null) {
|
|
|
for (ApsProductionOrderDo apsProductionOrder : apsPlanVo.getApsProductionOrders()) {
|
|
|
List<ApsBlankOrderVo> byOrderId = apsBlankOrderDao.getByOrderId(apsProductionOrder.getId());
|
|
|
- if(byOrderId != null && byOrderId.size()>0){
|
|
|
+ if (byOrderId != null && byOrderId.size() > 0) {
|
|
|
apsBlankOrders.addAll(byOrderId);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- if(apsPlanVo.getApsBlankOrderDos() != null && apsPlanVo.getApsBlankOrderDos().size()>0){
|
|
|
+ if (apsPlanVo.getApsBlankOrderDos() != null && apsPlanVo.getApsBlankOrderDos().size() > 0) {
|
|
|
apsBlankOrders.addAll(apsPlanVo.getApsBlankOrderDos());
|
|
|
}
|
|
|
- blankOrderAps(apsBlankOrders);
|
|
|
+ //去重
|
|
|
+ Set<String> blankIds = new HashSet<>();
|
|
|
+ //去重后的坯料计划集合
|
|
|
+ List<ApsBlankOrderVo> resBlankList = new LinkedList<>();
|
|
|
+ for (ApsBlankOrderVo apsBlankOrder : apsBlankOrders) {
|
|
|
+ String id = apsBlankOrder.getId();
|
|
|
+ if (blankIds.contains(id)) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ blankIds.add(id);
|
|
|
+ resBlankList.add(apsBlankOrder);
|
|
|
+ }
|
|
|
+ blankOrderAps(resBlankList);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 生产订单排程
|
|
|
+ *
|
|
|
* @param apsBlankOrders
|
|
|
*/
|
|
|
@Override
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
- public void blankOrderAps(List<ApsBlankOrderVo> apsBlankOrders){
|
|
|
+ public void blankOrderAps(List<ApsBlankOrderVo> apsBlankOrders) {
|
|
|
assert apsBlankOrders != null : "排程订单不能为空";
|
|
|
// 合并待发布未锁定的订单一起排程
|
|
|
List<String> hasIds = apsBlankOrders.stream().map(v -> v.getId()).collect(Collectors.toList());
|
|
|
String idStrs = CollUtil.join(hasIds, "','");
|
|
|
- idStrs = "'"+idStrs+"'";
|
|
|
+ idStrs = "'" + idStrs + "'";
|
|
|
// 查询待发布未锁定的所有坯料计划
|
|
|
List<ApsBlankOrderVo> fbNotLock = apsBlankOrderDao.getFbNotLock(idStrs);
|
|
|
- if(fbNotLock != null && fbNotLock.size()>0){
|
|
|
+ if (fbNotLock != null && fbNotLock.size() > 0) {
|
|
|
apsBlankOrders.addAll(fbNotLock);
|
|
|
}
|
|
|
// 先删除所有作业的明细
|
|
|
- List<String> blankids = apsBlankOrders.stream().map(v->v.getId()).collect(Collectors.toList());
|
|
|
- processOperationProcessEquService.remove(new LambdaUpdateWrapper<ApsProcessOperationProcessEquDo>().in(ApsProcessOperationProcessEquDo::getBlankid,blankids));
|
|
|
+ List<String> blankids = apsBlankOrders.stream().map(v -> v.getId()).collect(Collectors.toList());
|
|
|
+ processOperationProcessEquService.remove(new LambdaUpdateWrapper<ApsProcessOperationProcessEquDo>().in(ApsProcessOperationProcessEquDo::getBlankid, blankids));
|
|
|
// 模型转换
|
|
|
ProductionScheduleVo productionScheduleVo = apsPlanModelSet(apsBlankOrders);
|
|
|
/*if(1 == 1){
|
|
@@ -189,18 +206,18 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
|
|
|
}*/
|
|
|
JSONConfig jsonConfig = JSONConfig.create();
|
|
|
jsonConfig.setDateFormat("yyyy-MM-dd HH:mm:ss");
|
|
|
- System.out.println("排程数据:" + JSONUtil.toJsonStr(productionScheduleVo,jsonConfig));
|
|
|
- logger.info("排程数据:" + JSONUtil.toJsonStr(productionScheduleVo,jsonConfig));
|
|
|
+ System.out.println("排程数据:" + JSONUtil.toJsonStr(productionScheduleVo, jsonConfig));
|
|
|
+ logger.info("排程数据:" + JSONUtil.toJsonStr(productionScheduleVo, jsonConfig));
|
|
|
// APS平台排程接口调用
|
|
|
ProductionScheduleRetVo productionScheduleRetVo = rwApsServer.productionSchedule(productionScheduleVo);
|
|
|
// 排程结果保存
|
|
|
List<ApsProcessOperationProcessEquDo> apsProcessOperationProcessEquDos = new ArrayList<>();
|
|
|
// 最后节点集合
|
|
|
List<ProductionProcesses> lastProcess = new ArrayList<>();
|
|
|
- if(productionScheduleRetVo.getProcesses() != null && productionScheduleRetVo.getProcesses().size()>0){
|
|
|
+ if (productionScheduleRetVo.getProcesses() != null && productionScheduleRetVo.getProcesses().size() > 0) {
|
|
|
for (ProductionProcesses process : productionScheduleRetVo.getProcesses()) {
|
|
|
// 非合并生产工序
|
|
|
- if(process.getAluminumCoils() == null){
|
|
|
+ if (process.getAluminumCoils() == null) {
|
|
|
ApsProcessOperationProcessEquDo apsProcessOperationProcessEqu = new ApsProcessOperationProcessEquDo();
|
|
|
apsProcessOperationProcessEqu.setId(SecurityUtil.getUUID());
|
|
|
apsProcessOperationProcessEqu.setProcessid(process.getId());
|
|
@@ -220,17 +237,17 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
|
|
|
// 合并生产工序
|
|
|
else {
|
|
|
// 保存到明细表
|
|
|
- Map<String,List<AluminumCoil>> bsAl = new HashMap<>();
|
|
|
+ Map<String, List<AluminumCoil>> bsAl = new HashMap<>();
|
|
|
for (AluminumCoil aluminumCoil : process.getAluminumCoils()) {
|
|
|
- if(bsAl.containsKey(aluminumCoil.getBsId())){
|
|
|
+ if (bsAl.containsKey(aluminumCoil.getBsId())) {
|
|
|
bsAl.get(aluminumCoil.getBsId()).add(aluminumCoil);
|
|
|
- }else{
|
|
|
+ } else {
|
|
|
List<AluminumCoil> coils = new ArrayList<>();
|
|
|
coils.add(aluminumCoil);
|
|
|
- bsAl.put(aluminumCoil.getBsId(),coils);
|
|
|
+ bsAl.put(aluminumCoil.getBsId(), coils);
|
|
|
}
|
|
|
}
|
|
|
- bsAl.forEach((k,v)->{
|
|
|
+ bsAl.forEach((k, v) -> {
|
|
|
ApsProcessOperationProcessEquDo apsProcessOperationProcessEqu = new ApsProcessOperationProcessEquDo();
|
|
|
apsProcessOperationProcessEqu.setId(SecurityUtil.getUUID());
|
|
|
apsProcessOperationProcessEqu.setProcessid(k);
|
|
@@ -250,42 +267,42 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
|
|
|
}
|
|
|
|
|
|
// 是否为最后一个节点
|
|
|
- if(process.getNextProcessesIds() == null || process.getNextProcessesIds().size() == 0){
|
|
|
+ if (process.getNextProcessesIds() == null || process.getNextProcessesIds().size() == 0) {
|
|
|
lastProcess.add(process);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- if(apsProcessOperationProcessEquDos != null && apsProcessOperationProcessEquDos.size()>0){
|
|
|
+ if (apsProcessOperationProcessEquDos != null && apsProcessOperationProcessEquDos.size() > 0) {
|
|
|
// 再保存新数据
|
|
|
processOperationProcessEquService.saveBatch(apsProcessOperationProcessEquDos);
|
|
|
// 回写订单排程交货期
|
|
|
- Map<String,Date> orderDeliveryTime = new HashMap<>();
|
|
|
+ Map<String, Date> orderDeliveryTime = new HashMap<>();
|
|
|
for (ProductionProcesses process : lastProcess) {
|
|
|
List<ProduceOrder> produceOrder = process.getProduceOrder();
|
|
|
- if(produceOrder != null && produceOrder.size()>0){
|
|
|
+ if (produceOrder != null && produceOrder.size() > 0) {
|
|
|
for (ProduceOrder order : produceOrder) {
|
|
|
Date endDate = Date.from(process.getEndTime().atZone(ZoneId.systemDefault()).toInstant());
|
|
|
ApsBlankOrderDo blankOrder = this.getById(order.getId());
|
|
|
- if(orderDeliveryTime.containsKey(blankOrder.getProductionorderid())){
|
|
|
+ if (orderDeliveryTime.containsKey(blankOrder.getProductionorderid())) {
|
|
|
// 对比取最大值
|
|
|
- if(endDate.compareTo(orderDeliveryTime.get(blankOrder.getProductionorderid()))>0){
|
|
|
- orderDeliveryTime.put(blankOrder.getProductionorderid(),endDate);
|
|
|
+ if (endDate.compareTo(orderDeliveryTime.get(blankOrder.getProductionorderid())) > 0) {
|
|
|
+ orderDeliveryTime.put(blankOrder.getProductionorderid(), endDate);
|
|
|
}
|
|
|
- }else{
|
|
|
- orderDeliveryTime.put(blankOrder.getProductionorderid(),endDate);
|
|
|
+ } else {
|
|
|
+ orderDeliveryTime.put(blankOrder.getProductionorderid(), endDate);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
// 更新订单的排程交货期、排程状态
|
|
|
- if(orderDeliveryTime.size()>0){
|
|
|
- orderDeliveryTime.forEach((k,v)->{
|
|
|
+ if (orderDeliveryTime.size() > 0) {
|
|
|
+ orderDeliveryTime.forEach((k, v) -> {
|
|
|
ApsProductionOrderDo productionOrderDo = apsProductionOrderService.getById(k);
|
|
|
ApsProductionOrderDo apsProductionOrderDo = new ApsProductionOrderDo();
|
|
|
apsProductionOrderDo.setId(k);
|
|
|
apsProductionOrderDo.setScheduledeliverydate(v);
|
|
|
- if(productionOrderDo.getDeliverytime() != null && productionOrderDo.getDeliverytime()>0 && v != null){
|
|
|
- apsProductionOrderDo.setScheduledeliverydate(DateUtil.offsetHour(v,productionOrderDo.getDeliverytime()));
|
|
|
+ if (productionOrderDo.getDeliverytime() != null && productionOrderDo.getDeliverytime() > 0 && v != null) {
|
|
|
+ apsProductionOrderDo.setScheduledeliverydate(DateUtil.offsetHour(v, productionOrderDo.getDeliverytime()));
|
|
|
}
|
|
|
// 排程状态更新为待发布
|
|
|
apsProductionOrderDo.setSchedulstatus(SaveConstans.SchedulstatusTyep.SCHEDULSTATUS_TORELEASE);
|
|
@@ -298,40 +315,41 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
|
|
|
|
|
|
/**
|
|
|
* 原始订单表数据转换APS平台模型数据
|
|
|
+ *
|
|
|
* @param apsBlankOrders
|
|
|
* @return
|
|
|
*/
|
|
|
@Override
|
|
|
- public ProductionScheduleVo apsPlanModelSet(List<ApsBlankOrderVo> apsBlankOrders){
|
|
|
+ public ProductionScheduleVo apsPlanModelSet(List<ApsBlankOrderVo> apsBlankOrders) {
|
|
|
ProductionScheduleVo productionScheduleVo = new ProductionScheduleVo();
|
|
|
productionScheduleVo.setProductionScheduleId("批量排程");
|
|
|
List<ApsScheduleConfigDo> apsConfigs = apsScheduleConfigService.list();
|
|
|
- if (apsConfigs != null && apsConfigs.size()>0){
|
|
|
+ if (apsConfigs != null && apsConfigs.size() > 0) {
|
|
|
ApsScheduleConfigDo apsScheduleConfig = apsConfigs.get(0);
|
|
|
productionScheduleVo.setPlanSeconds(apsScheduleConfig.getScheduleruntime());
|
|
|
- Map<String,Integer> roamTime = new HashMap<>();
|
|
|
- roamTime.put("WORKSHOP_IN",apsScheduleConfig.getWorkshopin());
|
|
|
- roamTime.put("WORKSHOP_CROSS",apsScheduleConfig.getWorkshopcross());
|
|
|
+ Map<String, Integer> roamTime = new HashMap<>();
|
|
|
+ roamTime.put("WORKSHOP_IN", apsScheduleConfig.getWorkshopin());
|
|
|
+ roamTime.put("WORKSHOP_CROSS", apsScheduleConfig.getWorkshopcross());
|
|
|
productionScheduleVo.setRoamTime(roamTime);
|
|
|
// 排程计划开始时间
|
|
|
int a = 8;
|
|
|
- if(apsScheduleConfig.getStartschedulerun() != null){
|
|
|
+ if (apsScheduleConfig.getStartschedulerun() != null) {
|
|
|
a = apsScheduleConfig.getStartschedulerun();
|
|
|
}
|
|
|
- if(apsScheduleConfig.getApsplanstartdate() != null){
|
|
|
+ if (apsScheduleConfig.getApsplanstartdate() != null) {
|
|
|
productionScheduleVo.setApsPlanStartDate(apsScheduleConfig.getApsplanstartdate());
|
|
|
- }else{
|
|
|
- productionScheduleVo.setApsPlanStartDate(DateUtil.date().offset(DateField.HOUR,a));
|
|
|
+ } else {
|
|
|
+ productionScheduleVo.setApsPlanStartDate(DateUtil.date().offset(DateField.HOUR, a));
|
|
|
}
|
|
|
- }else{
|
|
|
+ } else {
|
|
|
throw new CustomException("排程参数缺失");
|
|
|
}
|
|
|
|
|
|
// 所有设备
|
|
|
List<AspCheckItemsDo> eqs = aspCheckItemsService.list(new LambdaQueryWrapper<>());
|
|
|
- Map<String,AspCheckItemsDo> eqMaps = new HashMap<>();
|
|
|
+ Map<String, AspCheckItemsDo> eqMaps = new HashMap<>();
|
|
|
for (AspCheckItemsDo eq : eqs) {
|
|
|
- eqMaps.put(eq.getId(),eq);
|
|
|
+ eqMaps.put(eq.getId(), eq);
|
|
|
}
|
|
|
// 排程计划设备集合
|
|
|
List<Equipment> equipmentList = new ArrayList<>();
|
|
@@ -339,10 +357,10 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
|
|
|
List<ProductionProcesses> processesList = new ArrayList<>();
|
|
|
// 待合并生产的订单工序
|
|
|
List<ApsProcessOperationVo> processOperationMs = new ArrayList<>();
|
|
|
- if(apsBlankOrders != null && apsBlankOrders.size()>0){
|
|
|
+ if (apsBlankOrders != null && apsBlankOrders.size() > 0) {
|
|
|
for (ApsBlankOrderVo apsBlankOrderVo : apsBlankOrders) {
|
|
|
// 坯料计划订单
|
|
|
- ProduceOrder produceOrder = new ProduceOrder(apsBlankOrderVo.getId(),apsBlankOrderVo.getMaterialname(),apsBlankOrderVo.getDeliverydate());
|
|
|
+ ProduceOrder produceOrder = new ProduceOrder(apsBlankOrderVo.getId(), apsBlankOrderVo.getMaterialname(), apsBlankOrderVo.getDeliverydate());
|
|
|
// 获取所有订单工序
|
|
|
List<ApsProcessOperationDo> operationDos = apsProcessOperationService.list(new LambdaQueryWrapper<ApsProcessOperationDo>()
|
|
|
.eq(ApsProcessOperationDo::getBlankid, apsBlankOrderVo.getId()));
|
|
@@ -355,15 +373,15 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
|
|
|
String productprocess = operationDo.getProcessway();
|
|
|
// 设备列表
|
|
|
List<String> optionalEquipments = new ArrayList<>();
|
|
|
- if(StringUtils.isNotBlank(operationDo.getCanchoosedeviceid())){
|
|
|
+ if (StringUtils.isNotBlank(operationDo.getCanchoosedeviceid())) {
|
|
|
String[] sbIds = operationDo.getCanchoosedeviceid().split(",");
|
|
|
for (String equIds : sbIds) {
|
|
|
AspCheckItemsDo checkItemsD = eqMaps.get(equIds);
|
|
|
- if(checkItemsD != null){
|
|
|
+ if (checkItemsD != null) {
|
|
|
optionalEquipments.add(equIds);
|
|
|
List<Equipment> eqpts = equipmentList.stream().filter(v -> v.getId().equals(equIds)).collect(Collectors.toList());
|
|
|
// 设备集合里不存在时新增
|
|
|
- if(eqpts == null || eqpts.size() == 0){
|
|
|
+ if (eqpts == null || eqpts.size() == 0) {
|
|
|
Equipment equipment = new Equipment();
|
|
|
equipment.setBsEquipmentId(equIds);
|
|
|
equipment.setId(equIds);
|
|
@@ -375,10 +393,10 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
|
|
|
// 查询设备锁定的已排程的时间段
|
|
|
List<ApsProcessOperationProcessEquDo> processEqus = processOperationProcessEquService.list(new LambdaQueryWrapper<ApsProcessOperationProcessEquDo>()
|
|
|
.eq(ApsProcessOperationProcessEquDo::getProcessdeviceid, equIds)
|
|
|
- .ge(ApsProcessOperationProcessEquDo::getPlanstartdate,productionScheduleVo.getApsPlanStartDate())
|
|
|
+ .ge(ApsProcessOperationProcessEquDo::getPlanstartdate, productionScheduleVo.getApsPlanStartDate())
|
|
|
.orderByAsc(ApsProcessOperationProcessEquDo::getPlanstartdate)
|
|
|
);
|
|
|
- if(processEqus != null && processEqus.size()>0){
|
|
|
+ if (processEqus != null && processEqus.size() > 0) {
|
|
|
List<EquipmentRunTime> equipmentRunTimes = new ArrayList<>();
|
|
|
for (ApsProcessOperationProcessEquDo equs : processEqus) {
|
|
|
EquipmentRunTime er = new EquipmentRunTime();
|
|
@@ -394,15 +412,15 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- if(SaveConstans.ProcessWay.PROCESS_WAY_MERGE.equals(productprocess)){
|
|
|
+ if (SaveConstans.ProcessWay.PROCESS_WAY_MERGE.equals(productprocess)) {
|
|
|
// 合并生产工序
|
|
|
ApsProcessOperationVo processOperationVo = new ApsProcessOperationVo();
|
|
|
- BeanUtil.copyProperties(operationDo,processOperationVo);
|
|
|
+ BeanUtil.copyProperties(operationDo, processOperationVo);
|
|
|
processOperationVo.setProduceOrder(produceOrder);
|
|
|
processOperationVo.setDeliverydate(apsBlankOrderVo.getDeliverydate());
|
|
|
processOperationVo.setApsBlankOrderVo(apsBlankOrderVo);
|
|
|
processOperationMs.add(processOperationVo);
|
|
|
- }else {
|
|
|
+ } else {
|
|
|
// 非合并生产工序
|
|
|
|
|
|
// 模型ID
|
|
@@ -418,31 +436,31 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
|
|
|
processes.setProcessType(operationDo.getProcess());
|
|
|
// 单次加工时长
|
|
|
processes.setUnitProduceTime(operationDo.getOnceprocessmin().intValue());
|
|
|
- processes.setProduceTime(processes.getUnitProduceTime()*processes.getProducePcNum());
|
|
|
- if(operationDo.getMinflowwaitmin() != null){
|
|
|
+ processes.setProduceTime(processes.getUnitProduceTime() * processes.getProducePcNum());
|
|
|
+ if (operationDo.getMinflowwaitmin() != null) {
|
|
|
processes.setMinWaitTime(operationDo.getMinflowwaitmin().intValue());
|
|
|
}
|
|
|
- if(operationDo.getMaxflowwaitmin() != null){
|
|
|
+ if (operationDo.getMaxflowwaitmin() != null) {
|
|
|
processes.setMaxWaitTime(operationDo.getMaxflowwaitmin().intValue());
|
|
|
}
|
|
|
// 上道工序
|
|
|
- if(StringUtils.isNotBlank(operationDo.getPreviousprocessid())){
|
|
|
+ if (StringUtils.isNotBlank(operationDo.getPreviousprocessid())) {
|
|
|
processes.setPreviousProcessesIds(Arrays.asList(operationDo.getPreviousprocessid().split(",")));
|
|
|
}
|
|
|
// 下道工序
|
|
|
- if(StringUtils.isNotBlank(operationDo.getNextprocessid())){
|
|
|
+ if (StringUtils.isNotBlank(operationDo.getNextprocessid())) {
|
|
|
processes.setNextProcessesIds(Arrays.asList(operationDo.getNextprocessid().split(",")));
|
|
|
}
|
|
|
// 连续生产标识设置
|
|
|
// 铸轧
|
|
|
- if("铸轧".equals(processes.getProcessType())){
|
|
|
+ if ("铸轧".equals(processes.getProcessType())) {
|
|
|
// 合金+宽度
|
|
|
- processes.setSeriesProduceMark(operationDo.getMetal()+"^_^"+operationDo.getProwidth());
|
|
|
+ processes.setSeriesProduceMark(operationDo.getMetal() + "^_^" + operationDo.getProwidth());
|
|
|
}
|
|
|
// 冷轧
|
|
|
- else if("冷轧".equals(processes.getProcessType())){
|
|
|
+ else if ("冷轧".equals(processes.getProcessType())) {
|
|
|
// 合金+输入物料+宽度
|
|
|
- processes.setSeriesProduceMark(operationDo.getMetal()+"^_^"+operationDo.getPlaninput()+"^_^"+operationDo.getProwidth());
|
|
|
+ processes.setSeriesProduceMark(operationDo.getMetal() + "^_^" + operationDo.getPlaninput() + "^_^" + operationDo.getProwidth());
|
|
|
}
|
|
|
|
|
|
processesList.add(processes);
|
|
@@ -451,7 +469,7 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
|
|
|
}
|
|
|
}
|
|
|
// 合并生产工序
|
|
|
- List<ProductionProcesses> productionProcesses = mergeProcesses(processOperationMs,eqMaps);
|
|
|
+ List<ProductionProcesses> productionProcesses = mergeProcesses(processOperationMs, eqMaps);
|
|
|
processesList.addAll(productionProcesses);
|
|
|
|
|
|
productionScheduleVo.setProcesses(processesList);
|
|
@@ -461,26 +479,27 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
|
|
|
|
|
|
/**
|
|
|
* 合并生产工序
|
|
|
+ *
|
|
|
* @param processOperationMs
|
|
|
* @return
|
|
|
*/
|
|
|
- private List<ProductionProcesses> mergeProcesses(List<ApsProcessOperationVo> processOperationMs,Map<String,AspCheckItemsDo> eqMaps){
|
|
|
+ private List<ProductionProcesses> mergeProcesses(List<ApsProcessOperationVo> processOperationMs, Map<String, AspCheckItemsDo> eqMaps) {
|
|
|
// 最终的合并工序
|
|
|
List<ProductionProcesses> processesList = new ArrayList<>();
|
|
|
- if(processOperationMs != null && processOperationMs.size()>0){
|
|
|
+ if (processOperationMs != null && processOperationMs.size() > 0) {
|
|
|
// 按照期望交货期排序
|
|
|
processOperationMs.sort(Comparator.comparing(ApsProcessOperationVo::getDeliverydate));
|
|
|
// 获取所有设备,并按已存在最晚完工时间排序
|
|
|
String allSelEqs = null;
|
|
|
for (ApsProcessOperationVo processOperationM : processOperationMs) {
|
|
|
- if(StringUtils.isNotBlank(processOperationM.getCanchoosedeviceid())){
|
|
|
+ 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+"'";
|
|
|
+ if (allSelEqs == null) {
|
|
|
+ allSelEqs = "'" + equIds + "'";
|
|
|
+ } else {
|
|
|
+ if (!allSelEqs.contains(equIds)) {
|
|
|
+ allSelEqs = allSelEqs + ",'" + equIds + "'";
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -489,40 +508,40 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
|
|
|
// 设备排序
|
|
|
List<AspCheckItemsDo> aspCheckItemsDos = apsBlankOrderDao.eqAscs(allSelEqs);
|
|
|
// 记录当前设备已排程个数
|
|
|
- Map<String,Integer> aspCheckItemUse = new HashMap<>();
|
|
|
- Map<String,AspCheckItemsDo> aspCheckItemMap = new HashMap<>();
|
|
|
+ Map<String, Integer> aspCheckItemUse = new HashMap<>();
|
|
|
+ Map<String, AspCheckItemsDo> aspCheckItemMap = new HashMap<>();
|
|
|
for (AspCheckItemsDo aspCheckItemsDo : aspCheckItemsDos) {
|
|
|
- aspCheckItemMap.put(aspCheckItemsDo.getId(),aspCheckItemsDo);
|
|
|
- aspCheckItemUse.put(aspCheckItemsDo.getId(),0);
|
|
|
+ aspCheckItemMap.put(aspCheckItemsDo.getId(), aspCheckItemsDo);
|
|
|
+ aspCheckItemUse.put(aspCheckItemsDo.getId(), 0);
|
|
|
}
|
|
|
for (ApsProcessOperationVo processOperationM : processOperationMs) {
|
|
|
// 首先查看是否有可以合并的已存在的工序
|
|
|
- hasProcessmerge(processesList,processOperationM,aspCheckItemMap);
|
|
|
+ hasProcessmerge(processesList, processOperationM, aspCheckItemMap);
|
|
|
// 剩下作业加工卷数,启用新的作业
|
|
|
int planprocessrall = processOperationM.getPlanprocessrall();
|
|
|
- if(planprocessrall<=0){
|
|
|
+ if (planprocessrall <= 0) {
|
|
|
continue;
|
|
|
}
|
|
|
Boolean a = true;
|
|
|
- while (a){
|
|
|
+ while (a) {
|
|
|
int lastnum = processOperationM.getPlanprocessrall();
|
|
|
// 剩余的料卷
|
|
|
- if(lastnum>0){
|
|
|
+ if (lastnum > 0) {
|
|
|
Integer minUse = null;
|
|
|
int haslast = 0;
|
|
|
AspCheckItemsDo aspCheckItem = null;
|
|
|
- for(int i=0;i<aspCheckItemsDos.size();i++){
|
|
|
+ for (int i = 0; i < aspCheckItemsDos.size(); i++) {
|
|
|
// 选择的设备要在可选设备的范围内
|
|
|
- if(processOperationM.getCanchoosedeviceid().contains(aspCheckItemsDos.get(i).getId())){
|
|
|
+ if (processOperationM.getCanchoosedeviceid().contains(aspCheckItemsDos.get(i).getId())) {
|
|
|
// 单卷宽度不能超过设备宽度并且单卷重不能超过设备的承重
|
|
|
- if(processOperationM.getProwidth().compareTo(aspCheckItemsDos.get(i).getEquipmentwidth())<0
|
|
|
- && processOperationM.getSinglerollweight().compareTo(aspCheckItemsDos.get(i).getEquipmentbearing())<0){
|
|
|
+ if (processOperationM.getProwidth().compareTo(aspCheckItemsDos.get(i).getEquipmentwidth()) < 0
|
|
|
+ && processOperationM.getSinglerollweight().compareTo(aspCheckItemsDos.get(i).getEquipmentbearing()) < 0) {
|
|
|
// 获取使用次数最小的可选设备
|
|
|
- if(aspCheckItem == null){
|
|
|
+ if (aspCheckItem == null) {
|
|
|
minUse = aspCheckItemUse.get(aspCheckItemsDos.get(i).getId());
|
|
|
aspCheckItem = aspCheckItemsDos.get(i);
|
|
|
- }else{
|
|
|
- if(minUse>aspCheckItemUse.get(aspCheckItemsDos.get(i).getId())){
|
|
|
+ } else {
|
|
|
+ if (minUse > aspCheckItemUse.get(aspCheckItemsDos.get(i).getId())) {
|
|
|
minUse = aspCheckItemUse.get(aspCheckItemsDos.get(i).getId());
|
|
|
aspCheckItem = aspCheckItemsDos.get(i);
|
|
|
}
|
|
@@ -531,24 +550,24 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
|
|
|
}
|
|
|
}
|
|
|
// 新增工序作业
|
|
|
- if(aspCheckItem != null){
|
|
|
+ if (aspCheckItem != null) {
|
|
|
// 选择的设备要在可选设备的范围内
|
|
|
- if(processOperationM.getCanchoosedeviceid().contains(aspCheckItem.getId())){
|
|
|
+ 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 (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){
|
|
|
+ if (aspCheckItem.getEquipmentwidth().compareTo(processOperationM.getProwidth().multiply(new BigDecimal(n))) < 0) {
|
|
|
break;
|
|
|
}
|
|
|
// 重量余量
|
|
|
- if(aspCheckItem.getEquipmentbearing().compareTo(processOperationM.getSinglerollweight().multiply(new BigDecimal(n)))<0){
|
|
|
+ if (aspCheckItem.getEquipmentbearing().compareTo(processOperationM.getSinglerollweight().multiply(new BigDecimal(n))) < 0) {
|
|
|
break;
|
|
|
}
|
|
|
haslast = n;
|
|
|
}
|
|
|
- if(haslast>0){
|
|
|
+ if (haslast > 0) {
|
|
|
ProductionProcesses processes = new ProductionProcesses();
|
|
|
processes.setId(SecurityUtil.getUUID());
|
|
|
List<String> bss = new ArrayList<>();
|
|
@@ -557,13 +576,13 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
|
|
|
processes.setProcessType(processOperationM.getProcess());
|
|
|
processes.setOptionalEquipments(Arrays.asList(new String[]{aspCheckItem.getId()}));
|
|
|
// 坯料计划订单
|
|
|
- ProduceOrder produceOrder = new ProduceOrder(processOperationM.getApsBlankOrderVo().getId(),processOperationM.getApsBlankOrderVo().getMaterialname(),processOperationM.getApsBlankOrderVo().getDeliverydate());
|
|
|
+ ProduceOrder produceOrder = new ProduceOrder(processOperationM.getApsBlankOrderVo().getId(), processOperationM.getApsBlankOrderVo().getMaterialname(), processOperationM.getApsBlankOrderVo().getDeliverydate());
|
|
|
List<ProduceOrder> produceOrders = new ArrayList<>();
|
|
|
produceOrders.add(produceOrder);
|
|
|
processes.setProduceOrder(produceOrders);
|
|
|
|
|
|
processes.setAluminumCoils(new ArrayList<>());
|
|
|
- for (int j=1;j<=haslast;j++){
|
|
|
+ for (int j = 1; j <= haslast; j++) {
|
|
|
AluminumCoil aluminumCoil = new AluminumCoil();
|
|
|
aluminumCoil.setBsId(processOperationM.getId());
|
|
|
aluminumCoil.setBlankid(processOperationM.getBlankid());
|
|
@@ -577,11 +596,11 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
|
|
|
// 批次
|
|
|
processes.setProducePcNum(1);
|
|
|
// 最小等待时长
|
|
|
- if(processOperationM.getMinflowwaitmin() != null){
|
|
|
+ if (processOperationM.getMinflowwaitmin() != null) {
|
|
|
processes.setMinWaitTime(processOperationM.getMinflowwaitmin().intValue());
|
|
|
}
|
|
|
// 最大等待时长
|
|
|
- if(processOperationM.getMaxflowwaitmin() != null){
|
|
|
+ if (processOperationM.getMaxflowwaitmin() != null) {
|
|
|
processes.setMaxWaitTime(processOperationM.getMaxflowwaitmin().intValue());
|
|
|
}
|
|
|
// 合并加工的为瓶颈工序
|
|
@@ -590,18 +609,18 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
|
|
|
processes.setUnitProduceTime(processOperationM.getOnceprocessmin().intValue());
|
|
|
processes.setProduceTime(processOperationM.getOnceprocessmin().intValue());
|
|
|
// 上道工序
|
|
|
- if(StringUtils.isNotBlank(processOperationM.getPreviousprocessid())){
|
|
|
+ if (StringUtils.isNotBlank(processOperationM.getPreviousprocessid())) {
|
|
|
processes.setPreviousProcessesIds(new ArrayList<>(Arrays.asList(processOperationM.getPreviousprocessid().split(","))));
|
|
|
}
|
|
|
// 下道工序
|
|
|
- if(StringUtils.isNotBlank(processOperationM.getNextprocessid())){
|
|
|
+ if (StringUtils.isNotBlank(processOperationM.getNextprocessid())) {
|
|
|
processes.setNextProcessesIds(new ArrayList<>(Arrays.asList(processOperationM.getNextprocessid().split(","))));
|
|
|
}
|
|
|
processesList.add(processes);
|
|
|
|
|
|
lastnum = lastnum - haslast;
|
|
|
// 更新设备使用次数
|
|
|
- aspCheckItemUse.put(aspCheckItem.getId(),aspCheckItemUse.get(aspCheckItem.getId())+1);
|
|
|
+ aspCheckItemUse.put(aspCheckItem.getId(), aspCheckItemUse.get(aspCheckItem.getId()) + 1);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -609,7 +628,7 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
|
|
|
}
|
|
|
// 重新设置计划加工卷数
|
|
|
processOperationM.setPlanprocessrall(lastnum);
|
|
|
- if(lastnum <= 0){
|
|
|
+ if (lastnum <= 0) {
|
|
|
a = false;
|
|
|
}
|
|
|
}
|
|
@@ -620,11 +639,12 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
|
|
|
|
|
|
/**
|
|
|
* 查看是否有可以合并的已存在的工序
|
|
|
+ *
|
|
|
* @param processesList
|
|
|
* @param processOperationM
|
|
|
* @param aspCheckItemMap
|
|
|
*/
|
|
|
- private void hasProcessmerge(List<ProductionProcesses> processesList,ApsProcessOperationVo processOperationM,Map<String,AspCheckItemsDo> aspCheckItemMap){
|
|
|
+ private void hasProcessmerge(List<ProductionProcesses> processesList, ApsProcessOperationVo processOperationM, Map<String, AspCheckItemsDo> aspCheckItemMap) {
|
|
|
// 首先看已合并生产的设备是否还有余量继续排产
|
|
|
for (ProductionProcesses processes : processesList) {
|
|
|
// 加工设备
|
|
@@ -632,8 +652,8 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
|
|
|
AspCheckItemsDo aspCheckItem = aspCheckItemMap.get(eq);
|
|
|
|
|
|
// 工序类型一致,合金和合金状态要一致
|
|
|
- if(processes.getProcessType().equals(processOperationM.getProcess()) && processes.getAluminumCoils().get(0).getVolumeMetal().equals(processOperationM.getMetal())
|
|
|
- && processes.getAluminumCoils().get(0).getVolumeMetalstate().equals(processOperationM.getMetalstate())){
|
|
|
+ if (processes.getProcessType().equals(processOperationM.getProcess()) && 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;
|
|
@@ -642,7 +662,7 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
|
|
|
BigDecimal knum = null;
|
|
|
BigDecimal hnum = null;
|
|
|
BigDecimal znum = null;
|
|
|
- if(SaveConstans.ProcessType.PROCESS_TYPE_CHENTUI.equals(processes.getProcessType())){
|
|
|
+ if (SaveConstans.ProcessType.PROCESS_TYPE_CHENTUI.equals(processes.getProcessType())) {
|
|
|
knum = new BigDecimal("50");
|
|
|
hnum = new BigDecimal("0.05");
|
|
|
znum = new BigDecimal("1");
|
|
@@ -651,51 +671,51 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
|
|
|
hnum = new BigDecimal("0.08");
|
|
|
znum = new BigDecimal("1");
|
|
|
}
|
|
|
- if(knum == null || hnum == null || znum == null){
|
|
|
+ if (knum == null || hnum == null || znum == null) {
|
|
|
continue;
|
|
|
}
|
|
|
|
|
|
for (AluminumCoil aluminumCoil : processes.getAluminumCoils()) {
|
|
|
// 宽度不超过50mm
|
|
|
- if(aluminumCoil.getVolumeWidth().subtract(processOperationM.getProwidth()).abs().compareTo(knum)>0){
|
|
|
+ if (aluminumCoil.getVolumeWidth().subtract(processOperationM.getProwidth()).abs().compareTo(knum) > 0) {
|
|
|
bol = false;
|
|
|
}
|
|
|
// 厚度不超过0.05mm
|
|
|
- if(aluminumCoil.getVolumeThickness().subtract(processOperationM.getThickness()).abs().compareTo(hnum)>0){
|
|
|
+ if (aluminumCoil.getVolumeThickness().subtract(processOperationM.getThickness()).abs().compareTo(hnum) > 0) {
|
|
|
bol = false;
|
|
|
}
|
|
|
// 重量不超过1吨
|
|
|
- if(aluminumCoil.getVolumeWeight().subtract(processOperationM.getSinglerollweight()).abs().compareTo(znum)>0){
|
|
|
+ if (aluminumCoil.getVolumeWeight().subtract(processOperationM.getSinglerollweight()).abs().compareTo(znum) > 0) {
|
|
|
bol = false;
|
|
|
}
|
|
|
- if(totalWidth == null){
|
|
|
+ if (totalWidth == null) {
|
|
|
totalWidth = aluminumCoil.getVolumeWidth();
|
|
|
- }else{
|
|
|
+ } else {
|
|
|
totalWidth = totalWidth.add(aluminumCoil.getVolumeWidth());
|
|
|
}
|
|
|
- if(totalWeight == null){
|
|
|
+ if (totalWeight == null) {
|
|
|
totalWeight = aluminumCoil.getVolumeWeight();
|
|
|
- }else{
|
|
|
+ } else {
|
|
|
totalWeight = totalWeight.add(aluminumCoil.getVolumeWeight());
|
|
|
}
|
|
|
}
|
|
|
- if(bol){
|
|
|
+ if (bol) {
|
|
|
Integer sy = 0;
|
|
|
- for (int j=1;j<=processOperationM.getPlanprocessrall();j++){
|
|
|
+ for (int j = 1; j <= processOperationM.getPlanprocessrall(); j++) {
|
|
|
// 宽度余量
|
|
|
- if(aspCheckItem.getEquipmentwidth().subtract(totalWidth).compareTo(processOperationM.getProwidth().multiply(new BigDecimal(j)))<0){
|
|
|
+ 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){
|
|
|
+ if (aspCheckItem.getEquipmentbearing().subtract(totalWeight).compareTo(processOperationM.getSinglerollweight().multiply(new BigDecimal(j))) < 0) {
|
|
|
break;
|
|
|
}
|
|
|
sy = j;
|
|
|
}
|
|
|
- if(sy>0){
|
|
|
+ if (sy > 0) {
|
|
|
// 更新计划加工卷数
|
|
|
processOperationM.setPlanprocessrall(processOperationM.getPlanprocessrall() - sy);
|
|
|
- for (int j=1;j<=sy;j++){
|
|
|
+ for (int j = 1; j <= sy; j++) {
|
|
|
AluminumCoil aluminumCoil = new AluminumCoil();
|
|
|
aluminumCoil.setBsId(processOperationM.getId());
|
|
|
aluminumCoil.setBlankid(processOperationM.getBlankid());
|
|
@@ -708,40 +728,40 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
|
|
|
}
|
|
|
|
|
|
// 上道工序
|
|
|
- if(StringUtils.isNotBlank(processOperationM.getPreviousprocessid())){
|
|
|
- if(processes.getPreviousProcessesIds() == null){
|
|
|
+ if (StringUtils.isNotBlank(processOperationM.getPreviousprocessid())) {
|
|
|
+ if (processes.getPreviousProcessesIds() == null) {
|
|
|
List<String> list = new ArrayList<>();
|
|
|
list.addAll(Arrays.asList(processOperationM.getPreviousprocessid().split(",")));
|
|
|
processes.setPreviousProcessesIds(list);
|
|
|
- }else{
|
|
|
+ } else {
|
|
|
processes.getPreviousProcessesIds().addAll(new ArrayList<>(Arrays.asList(processOperationM.getPreviousprocessid().split(","))));
|
|
|
}
|
|
|
}
|
|
|
// 下道工序
|
|
|
- if(StringUtils.isNotBlank(processOperationM.getNextprocessid())){
|
|
|
- if(processes.getNextProcessesIds() == null){
|
|
|
+ if (StringUtils.isNotBlank(processOperationM.getNextprocessid())) {
|
|
|
+ if (processes.getNextProcessesIds() == null) {
|
|
|
List<String> list = new ArrayList<>();
|
|
|
list.addAll(Arrays.asList(processOperationM.getNextprocessid().split(",")));
|
|
|
processes.setNextProcessesIds(list);
|
|
|
- }else{
|
|
|
+ } else {
|
|
|
processes.getNextProcessesIds().addAll(new ArrayList<>(Arrays.asList(processOperationM.getNextprocessid().split(","))));
|
|
|
}
|
|
|
}
|
|
|
// 所属订单
|
|
|
List<ProduceOrder> produceOrders = processes.getProduceOrder().stream().filter(v ->
|
|
|
v.getId().equals(processOperationM.getApsBlankOrderVo().getId())).collect(Collectors.toList());
|
|
|
- if(produceOrders == null || produceOrders.size() == 0){
|
|
|
- ProduceOrder produceOrder = new ProduceOrder(processOperationM.getApsBlankOrderVo().getId(),processOperationM.getApsBlankOrderVo().getMaterialname(),processOperationM.getApsBlankOrderVo().getDeliverydate());
|
|
|
+ if (produceOrders == null || produceOrders.size() == 0) {
|
|
|
+ ProduceOrder produceOrder = new ProduceOrder(processOperationM.getApsBlankOrderVo().getId(), processOperationM.getApsBlankOrderVo().getMaterialname(), processOperationM.getApsBlankOrderVo().getDeliverydate());
|
|
|
processes.getProduceOrder().add(produceOrder);
|
|
|
}
|
|
|
// 单次加工时长
|
|
|
- if(processes.getUnitProduceTime() == null){
|
|
|
+ if (processes.getUnitProduceTime() == null) {
|
|
|
processes.setUnitProduceTime(processOperationM.getOnceprocessmin().intValue());
|
|
|
processes.setProduceTime(processOperationM.getOnceprocessmin().intValue());
|
|
|
}
|
|
|
// 加工时长取最大值
|
|
|
- else{
|
|
|
- if(processes.getUnitProduceTime()<processOperationM.getOnceprocessmin().intValue()){
|
|
|
+ else {
|
|
|
+ if (processes.getUnitProduceTime() < processOperationM.getOnceprocessmin().intValue()) {
|
|
|
processes.setUnitProduceTime(processOperationM.getOnceprocessmin().intValue());
|
|
|
processes.setProduceTime(processOperationM.getOnceprocessmin().intValue());
|
|
|
}
|