|
@@ -4,6 +4,7 @@ import cn.hutool.core.bean.BeanUtil;
|
|
|
import cn.hutool.core.collection.CollUtil;
|
|
|
import cn.hutool.core.date.DateField;
|
|
|
import cn.hutool.core.date.DateUtil;
|
|
|
+import cn.hutool.core.util.ObjectUtil;
|
|
|
import cn.hutool.json.JSONConfig;
|
|
|
import cn.hutool.json.JSONUtil;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
@@ -72,6 +73,7 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
|
|
|
private ApsProductDetailService apsProductDetailService;
|
|
|
@Autowired
|
|
|
private ApsProductDetailDao apsProductDetailDao;
|
|
|
+
|
|
|
@Override
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
public void test() {
|
|
@@ -100,44 +102,39 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
|
|
|
}
|
|
|
// 校验取消的订单中是否存在已加工的工序作业
|
|
|
List<String> startWorkOrderNo = apsProcessOperationDao.getStartWorkById(apsProductionOrderIds);
|
|
|
- if (!startWorkOrderNo.isEmpty()){
|
|
|
- throw new CustomException(CollUtil.join(startWorkOrderNo, ",")+" 以上客户所对应的订单存在已开工的坯料计划,不可以取消排程=!");
|
|
|
+ if (!startWorkOrderNo.isEmpty()) {
|
|
|
+ throw new CustomException(CollUtil.join(startWorkOrderNo, ",") + " 以上客户所对应的订单存在已开工的坯料计划,不可以取消排程=!");
|
|
|
}
|
|
|
List<String> blankids = blankOrderDos.stream().map(ApsBlankOrderDo::getId).collect(Collectors.toList());
|
|
|
- // 删除工序作业和工序作业明备份数据
|
|
|
- apsProcessOperationBackupDao.deletedByBlankId(blankids);
|
|
|
- apsProcessOperationProcessEquBackupDao.deletedByBlankId(blankids);
|
|
|
- // 更工序作业生产状态=待排程,是否锁定=否,
|
|
|
- apsProcessOperationService.remove(new LambdaQueryWrapper<ApsProcessOperationDo>().in(ApsProcessOperationDo::getBlankid,blankids));
|
|
|
- // 清空作业明细
|
|
|
- processOperationProcessEquService.remove(new LambdaQueryWrapper<ApsProcessOperationProcessEquDo>().in(ApsProcessOperationProcessEquDo::getBlankid, blankids));
|
|
|
- // 更新订单的排程状态
|
|
|
- List<ApsProductionOrderDo> productionOrderDos = new ArrayList<>();
|
|
|
- for (String apsProductionOrderId : apsProductionOrderIds) {
|
|
|
- ApsProductionOrderDo productionOrderDo = new ApsProductionOrderDo();
|
|
|
- productionOrderDo.setId(apsProductionOrderId);
|
|
|
- productionOrderDo.setSchedulstatus(SaveConstans.SchedulstatusTyep.SCHEDULSTATUS_TOSCHEDULE);
|
|
|
- productionOrderDo.setScheduledeliverydate(null);
|
|
|
- productionOrderDo.setProductionstatus(TO_BE_SCHEDULED);
|
|
|
- productionOrderDos.add(productionOrderDo);
|
|
|
+ //清除排程备份和状态修改
|
|
|
+ deleteBackup(blankids, apsProductionOrderIds);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void blankApsCancel(List<String> apsBlankIds) {
|
|
|
+ if (ObjectUtil.isEmpty(apsBlankIds)) {
|
|
|
+ log.debug("坯料计划排程取消参数为空");
|
|
|
+ return;
|
|
|
}
|
|
|
- // 更新生产订单的状态
|
|
|
- apsProductionOrderService.updateBatchById(productionOrderDos);
|
|
|
- // 更新坯料计划的状态
|
|
|
- this.baseMapper.cancelSchedulingUpdate(blankids);
|
|
|
- // 更新坯料计划产品明细的的生产状态
|
|
|
- apsProductDetailDao.updateProductstatus(apsProductionOrderIds);
|
|
|
+ //获取订单ID
|
|
|
+ List<ApsBlankOrderDo> blankOrderDoList = this.list(new QueryWrapper<ApsBlankOrderDo>().lambda().in(ApsBlankOrderDo::getId, apsBlankIds));
|
|
|
+ Set<String> orderIds = blankOrderDoList.stream().map(ApsBlankOrderDo::getProductionorderid).collect(Collectors.toSet());
|
|
|
+
|
|
|
+ //清除排程备份
|
|
|
+ deleteBackup(apsBlankIds, new ArrayList<>(orderIds));
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 锁定、解锁
|
|
|
+ *
|
|
|
* @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<>();
|
|
@@ -149,13 +146,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));
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -165,7 +162,7 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
|
|
|
* 所有待发布的未锁定的订单重新排程
|
|
|
*/
|
|
|
@Override
|
|
|
- public void apsReScheduling() throws Exception{
|
|
|
+ public void apsReScheduling() throws Exception {
|
|
|
//获取当前用户的所属工厂
|
|
|
SysUserVo currentUser = CXCommonUtils.getCurrentUser();
|
|
|
String tenantId = currentUser.getOrganizationDoList().get(0).getFullpid().split(",")[1];
|
|
@@ -178,14 +175,15 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
|
|
|
|
|
|
/**
|
|
|
* 订单批量排程
|
|
|
+ *
|
|
|
* @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);
|
|
|
}
|
|
|
}
|
|
@@ -198,40 +196,41 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
|
|
|
|
|
|
/**
|
|
|
* 生产订单排程
|
|
|
+ *
|
|
|
* @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);
|
|
|
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());
|
|
@@ -252,17 +251,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);
|
|
@@ -283,42 +282,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);
|
|
@@ -352,12 +351,12 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
|
|
|
apsProcessOperationProcessEquBackupDao.deletedByBlankId(blankIdList);
|
|
|
//增加备份
|
|
|
List<List<String>> partition1 = Lists.partition(apsProcessOperationIds, 500);
|
|
|
- partition1.forEach(data->{
|
|
|
+ partition1.forEach(data -> {
|
|
|
apsProcessOperationBackupDao.processOperationBackup(apsProcessOperationIds,
|
|
|
currentUser == null ? null : currentUser.getId(), currentUser == null ? null : currentUser.getName());
|
|
|
});
|
|
|
List<List<ApsProcessOperationProcessEquDo>> partition = Lists.partition(apsProcessOperationProcessEquDos, 100);
|
|
|
- partition.forEach(data->{
|
|
|
+ partition.forEach(data -> {
|
|
|
apsProcessOperationProcessEquBackupDao.processOperationEquBackup(apsProcessOperationProcessEquDos,
|
|
|
currentUser == null ? null : currentUser.getId(), currentUser == null ? null : currentUser.getName());
|
|
|
});
|
|
@@ -384,23 +383,23 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
|
|
|
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<>();
|
|
@@ -408,10 +407,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()));
|
|
@@ -424,15 +423,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);
|
|
@@ -444,10 +443,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();
|
|
@@ -463,15 +462,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
|
|
@@ -487,31 +486,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);
|
|
@@ -520,7 +519,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);
|
|
@@ -530,26 +529,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 + "'";
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -557,22 +557,22 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
|
|
|
}
|
|
|
// 设备排序
|
|
|
List<AspCheckItemsDo> aspCheckItemsDos = apsBlankOrderDao.eqAscs(allSelEqs);
|
|
|
- Map<String,AspCheckItemsDo> aspCheckItemMap = new HashMap<>();
|
|
|
+ Map<String, AspCheckItemsDo> aspCheckItemMap = new HashMap<>();
|
|
|
for (AspCheckItemsDo aspCheckItemsDo : aspCheckItemsDos) {
|
|
|
- aspCheckItemMap.put(aspCheckItemsDo.getId(),aspCheckItemsDo);
|
|
|
+ aspCheckItemMap.put(aspCheckItemsDo.getId(), aspCheckItemsDo);
|
|
|
}
|
|
|
// 记录最后选择的设备序号
|
|
|
Integer m = 0;
|
|
|
for (ApsProcessOperationVo processOperationM : processOperationMs) {
|
|
|
// 作业加工卷数
|
|
|
int planprocessrall = processOperationM.getPlanprocessrall();
|
|
|
- if(planprocessrall<=0){
|
|
|
+ if (planprocessrall <= 0) {
|
|
|
continue;
|
|
|
}
|
|
|
Boolean a = true;
|
|
|
long timestart = DateUtil.date().getTime();
|
|
|
|
|
|
- while (a){
|
|
|
+ while (a) {
|
|
|
int lastnum = processOperationM.getPlanprocessrall();
|
|
|
|
|
|
// 首先看已合并生产的设备是否还有余量继续排产
|
|
@@ -582,8 +582,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;
|
|
@@ -592,7 +592,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");
|
|
@@ -601,50 +601,50 @@ 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<=planprocessrall;j++){
|
|
|
+ for (int j = 1; j <= planprocessrall; 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) {
|
|
|
lastnum = planprocessrall - 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());
|
|
@@ -657,40 +657,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());
|
|
|
}
|
|
@@ -702,33 +702,33 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
|
|
|
}
|
|
|
|
|
|
// 剩余的料卷
|
|
|
- if(lastnum>0){
|
|
|
- if(m == aspCheckItemsDos.size()-1){
|
|
|
+ if (lastnum > 0) {
|
|
|
+ if (m == aspCheckItemsDos.size() - 1) {
|
|
|
m = -1;
|
|
|
}
|
|
|
int haslast = 0;
|
|
|
- for(int i=m+1;i<aspCheckItemsDos.size();i++){
|
|
|
- if(lastnum <= 0){
|
|
|
+ for (int i = m + 1; i < aspCheckItemsDos.size(); i++) {
|
|
|
+ if (lastnum <= 0) {
|
|
|
break;
|
|
|
}
|
|
|
AspCheckItemsDo aspCheckItem = aspCheckItemsDos.get(i);
|
|
|
// 选择的设备要在可选设备的范围内
|
|
|
- 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<>();
|
|
@@ -737,13 +737,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());
|
|
@@ -757,11 +757,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());
|
|
|
}
|
|
|
// 合并加工的为瓶颈工序
|
|
@@ -770,11 +770,11 @@ 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);
|
|
@@ -789,7 +789,7 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
|
|
|
}
|
|
|
}
|
|
|
processOperationM.setPlanprocessrall(lastnum);
|
|
|
- if(lastnum <= 0){
|
|
|
+ if (lastnum <= 0) {
|
|
|
a = false;
|
|
|
}
|
|
|
|
|
@@ -830,8 +830,43 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
|
|
|
|
|
|
/**
|
|
|
* 物理删除排程备份(工序作业备份【aps_process_operation_backup】、加工设备备份【aps_process_operation_process_equ_backup】)
|
|
|
+ * 更新状态
|
|
|
*/
|
|
|
- private void deleteBackup(){
|
|
|
-
|
|
|
+ private void deleteBackup(List<String> blankids, List<String> apsProductionOrderIds) {
|
|
|
+ // 删除工序作业和工序作业明备份数据
|
|
|
+ apsProcessOperationBackupDao.deletedByBlankId(blankids);
|
|
|
+ apsProcessOperationProcessEquBackupDao.deletedByBlankId(blankids);
|
|
|
+ // 更工序作业生产状态=待排程,是否锁定=否,
|
|
|
+ apsProcessOperationService.remove(new LambdaQueryWrapper<ApsProcessOperationDo>().in(ApsProcessOperationDo::getBlankid, blankids));
|
|
|
+ // 清空作业明细
|
|
|
+ processOperationProcessEquService.remove(new LambdaQueryWrapper<ApsProcessOperationProcessEquDo>().in(ApsProcessOperationProcessEquDo::getBlankid, blankids));
|
|
|
+ // 更新订单的排程状态
|
|
|
+ List<ApsProductionOrderDo> productionOrderDos = new ArrayList<>();
|
|
|
+ for (String apsProductionOrderId : apsProductionOrderIds) {
|
|
|
+ ApsProductionOrderDo productionOrderDo = new ApsProductionOrderDo();
|
|
|
+ productionOrderDo.setId(apsProductionOrderId);
|
|
|
+ productionOrderDo.setSchedulstatus(SaveConstans.SchedulstatusTyep.SCHEDULSTATUS_TOSCHEDULE);
|
|
|
+ productionOrderDo.setScheduledeliverydate(null);
|
|
|
+ productionOrderDo.setProductionstatus(TO_BE_SCHEDULED);
|
|
|
+ productionOrderDos.add(productionOrderDo);
|
|
|
+ }
|
|
|
+ // 更新生产订单的状态
|
|
|
+ apsProductionOrderService.updateBatchById(productionOrderDos);
|
|
|
+ // 更新坯料计划的状态
|
|
|
+ this.baseMapper.cancelSchedulingUpdate(blankids);
|
|
|
+ //获取坯料计划用到的产品明细ID
|
|
|
+ String idStrs = CollUtil.join(blankids, "','");
|
|
|
+ idStrs = "'" + idStrs + "'";
|
|
|
+ List<String> productIdList = this.baseMapper.selectOutputProductIdList(idStrs);
|
|
|
+ List<ApsProductDetailDo> productDetailDoList = new LinkedList<>();
|
|
|
+ for (String productId : productIdList) {
|
|
|
+ ApsProductDetailDo apsProductDetailDo = new ApsProductDetailDo();
|
|
|
+ apsProductDetailDo.setId(productId);
|
|
|
+ apsProductDetailDo.setProductstatus(TO_BE_SCHEDULED);
|
|
|
+ productDetailDoList.add(apsProductDetailDo);
|
|
|
+ }
|
|
|
+ // 更新坯料计划产品明细的的生产状态
|
|
|
+ apsProductDetailService.updateBatchById(productDetailDoList);
|
|
|
+// apsProductDetailDao.updateProductstatus(apsProductionOrderIds);
|
|
|
}
|
|
|
}
|