|
@@ -12,6 +12,7 @@ import com.rongwei.bsentity.vo.CommonUpdateProductionStatusReq;
|
|
import com.rongwei.bsentity.vo.OptionalEquipmentVo;
|
|
import com.rongwei.bsentity.vo.OptionalEquipmentVo;
|
|
import com.rongwei.bsentity.vo.ProcessIdRelationVo;
|
|
import com.rongwei.bsentity.vo.ProcessIdRelationVo;
|
|
import com.rongwei.rwcommon.base.R;
|
|
import com.rongwei.rwcommon.base.R;
|
|
|
|
+import com.rongwei.safecommon.utils.SaveConstans;
|
|
import org.slf4j.Logger;
|
|
import org.slf4j.Logger;
|
|
import org.slf4j.LoggerFactory;
|
|
import org.slf4j.LoggerFactory;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
@@ -187,6 +188,7 @@ public class ApsProcessOperationProcessEquServiceImpl extends ServiceImpl<ApsPro
|
|
|
|
|
|
/**
|
|
/**
|
|
* 换线作业
|
|
* 换线作业
|
|
|
|
+ *
|
|
* @param changingWiresVos
|
|
* @param changingWiresVos
|
|
* @return
|
|
* @return
|
|
*/
|
|
*/
|
|
@@ -197,20 +199,21 @@ public class ApsProcessOperationProcessEquServiceImpl extends ServiceImpl<ApsPro
|
|
|
|
|
|
/**
|
|
/**
|
|
* 根据工序作业明细 获取可选设备
|
|
* 根据工序作业明细 获取可选设备
|
|
|
|
+ *
|
|
* @param operationJobDetailsId
|
|
* @param operationJobDetailsId
|
|
* @return
|
|
* @return
|
|
*/
|
|
*/
|
|
@Override
|
|
@Override
|
|
public R getOptionalEquipment(List<String> operationJobDetailsId) {
|
|
public R getOptionalEquipment(List<String> operationJobDetailsId) {
|
|
- if(operationJobDetailsId.isEmpty()){
|
|
|
|
|
|
+ if (operationJobDetailsId.isEmpty()) {
|
|
log.error("工序作业明细必选");
|
|
log.error("工序作业明细必选");
|
|
return R.error("工序作业明细必选");
|
|
return R.error("工序作业明细必选");
|
|
}
|
|
}
|
|
- log.debug("根据工序作业明细:{},获取可选设备",operationJobDetailsId);
|
|
|
|
|
|
+ log.debug("根据工序作业明细:{},获取可选设备", operationJobDetailsId);
|
|
// 防止工序作业ID重复
|
|
// 防止工序作业ID重复
|
|
- operationJobDetailsId= operationJobDetailsId.stream().distinct().collect(Collectors.toList());
|
|
|
|
|
|
+ operationJobDetailsId = operationJobDetailsId.stream().distinct().collect(Collectors.toList());
|
|
List<OptionalEquipmentVo> optionalEquipment = this.baseMapper.getOptionalEquipmentById(operationJobDetailsId);
|
|
List<OptionalEquipmentVo> optionalEquipment = this.baseMapper.getOptionalEquipmentById(operationJobDetailsId);
|
|
- if(optionalEquipment.isEmpty()){
|
|
|
|
|
|
+ if (optionalEquipment.isEmpty()) {
|
|
log.error("当前所选作业不存在共同的加工设备");
|
|
log.error("当前所选作业不存在共同的加工设备");
|
|
return R.error("没有可共用的加工设备,无法合并换线");
|
|
return R.error("没有可共用的加工设备,无法合并换线");
|
|
}
|
|
}
|
|
@@ -221,32 +224,52 @@ public class ApsProcessOperationProcessEquServiceImpl extends ServiceImpl<ApsPro
|
|
//查询此工序的所属订单ID
|
|
//查询此工序的所属订单ID
|
|
String orderId = this.baseMapper.selectOrderIdByProcessOperationId(processOperationId);
|
|
String orderId = this.baseMapper.selectOrderIdByProcessOperationId(processOperationId);
|
|
|
|
|
|
- //查询此工序所属订单的所有坯料计划的最小生产状态和坯料计划ID
|
|
|
|
- List<CommonUpdateProductionStatusReq> twoList = this.baseMapper.selectProcessMinStatusList(orderId);
|
|
|
|
|
|
+ //查询此工序所属订单的所有坯料计划的最小生产状态、最大生产状态和坯料计划ID
|
|
|
|
+ List<CommonUpdateProductionStatusReq> twoList = this.baseMapper.selectProcessMinAndmaxStatusList(orderId);
|
|
|
|
+ //根据最小生产状态和最大生产状态,判断当前最新的生产状态,等待更新
|
|
|
|
+ for (CommonUpdateProductionStatusReq commonUpdateProductionStatusReq : twoList) {
|
|
|
|
+ setProductStatusByMinAndMax(commonUpdateProductionStatusReq);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
|
|
//查询此坯料计划目前的生产状态信息
|
|
//查询此坯料计划目前的生产状态信息
|
|
List<ApsBlankOrderDo> list = apsBlankOrderService.list(new QueryWrapper<ApsBlankOrderDo>().lambda().eq(ApsBlankOrderDo::getProductionorderid, orderId));
|
|
List<ApsBlankOrderDo> list = apsBlankOrderService.list(new QueryWrapper<ApsBlankOrderDo>().lambda().eq(ApsBlankOrderDo::getProductionorderid, orderId));
|
|
|
|
|
|
- if (twoList.size() <= 0 || list.size() <= 0){
|
|
|
|
|
|
+ if (twoList.size() <= 0 || list.size() <= 0) {
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
List<ApsBlankOrderDo> needUpdateList = new LinkedList<>();
|
|
List<ApsBlankOrderDo> needUpdateList = new LinkedList<>();
|
|
for (CommonUpdateProductionStatusReq two : twoList) {
|
|
for (CommonUpdateProductionStatusReq two : twoList) {
|
|
- for (ApsBlankOrderDo apsBlankOrderDo : list) {
|
|
|
|
- //如果不为空,并且状态不同
|
|
|
|
- if(ObjectUtil.isNotEmpty(two.getBlankId()) && two.getBlankId().equals(apsBlankOrderDo.getId())
|
|
|
|
- && ObjectUtil.isNotEmpty(two.getProductionStatus()) && ObjectUtil.isNotEmpty(apsBlankOrderDo.getProductstatus())
|
|
|
|
- && !two.getProductionStatus().equals(apsBlankOrderDo.getProductstatus())){
|
|
|
|
- //更新坯料计划的生产状态
|
|
|
|
- ApsBlankOrderDo blankOrderDo = new ApsBlankOrderDo();
|
|
|
|
- blankOrderDo.setId(two.getBlankId());
|
|
|
|
- blankOrderDo.setProductstatus(two.getProductionStatus());
|
|
|
|
- needUpdateList.add(blankOrderDo);
|
|
|
|
|
|
+ if (ObjectUtil.isNotEmpty(two.getProductionStatus())) {
|
|
|
|
+ for (ApsBlankOrderDo apsBlankOrderDo : list) {
|
|
|
|
+ //如果不为空,并且状态不同
|
|
|
|
+ if (ObjectUtil.isNotEmpty(two.getBlankId()) && two.getBlankId().equals(apsBlankOrderDo.getId())
|
|
|
|
+ && ObjectUtil.isNotEmpty(two.getProductionStatus()) && ObjectUtil.isNotEmpty(apsBlankOrderDo.getProductstatus())
|
|
|
|
+ && !two.getProductionStatus().equals(apsBlankOrderDo.getProductstatus())) {
|
|
|
|
+ //更新坯料计划的生产状态
|
|
|
|
+ ApsBlankOrderDo blankOrderDo = new ApsBlankOrderDo();
|
|
|
|
+ blankOrderDo.setId(two.getBlankId());
|
|
|
|
+ blankOrderDo.setProductstatus(two.getProductionStatus());
|
|
|
|
+ //更新坯料计划的排程状态
|
|
|
|
+ /**
|
|
|
|
+ * 如果生产状态=待排程,则排程状态=待排程
|
|
|
|
+ * 如果生产状态=待发布,则排程状态=待发布
|
|
|
|
+ * 如果生产状态=待开工或加工中或已完工,则排程状态=已发布
|
|
|
|
+ */
|
|
|
|
+ if (two.getProductionStatus().equals(TO_BE_SCHEDULED)) {
|
|
|
|
+ blankOrderDo.setSchedulingstatus(SaveConstans.SchedulingStatus.TO_BE_SCHEDULED);
|
|
|
|
+ } else if (two.getProductionStatus().equals(TO_BE_PUBLISHED)) {
|
|
|
|
+ blankOrderDo.setSchedulingstatus(SaveConstans.SchedulingStatus.TO_BE_PUBLISHED);
|
|
|
|
+ } else {
|
|
|
|
+ blankOrderDo.setSchedulingstatus(SaveConstans.SchedulingStatus.PUBLISHED);
|
|
|
|
+ }
|
|
|
|
+ needUpdateList.add(blankOrderDo);
|
|
|
|
+ }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
//更新坯料计划
|
|
//更新坯料计划
|
|
- if(needUpdateList.size()>0){
|
|
|
|
|
|
+ if (needUpdateList.size() > 0) {
|
|
apsBlankOrderService.updateBatchById(needUpdateList);
|
|
apsBlankOrderService.updateBatchById(needUpdateList);
|
|
}
|
|
}
|
|
|
|
|
|
@@ -254,27 +277,59 @@ public class ApsProcessOperationProcessEquServiceImpl extends ServiceImpl<ApsPro
|
|
updateOrder(twoList.get(0).getBlankId());
|
|
updateOrder(twoList.get(0).getBlankId());
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ private void setProductStatusByMinAndMax(CommonUpdateProductionStatusReq item) {
|
|
|
|
+ //根据最小生产状态和最大生产状态,判断当前最新的生产状态,等待更新
|
|
|
|
+ String maxProductionStatus = item.getMaxProductionStatus();
|
|
|
|
+ String minProductionStatus = item.getMinProductionStatus();
|
|
|
|
+ if(ObjectUtil.isEmpty(maxProductionStatus) || ObjectUtil.isEmpty(minProductionStatus)){
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+ /*
|
|
|
|
+ * 如果作业最大生产状态=待排程,则生产状态=待排程
|
|
|
|
+ * 如果作业最大生产状态=待发布,则生产状态=待发布
|
|
|
|
+ * 如果作业最大生产状态=待开工,则生产状态=待开工
|
|
|
|
+ * 如果作业最大生产状态=加工中或已完工,并且作业最小生产状态<已完工,则生产状态=加工中
|
|
|
|
+ * 如果作业最大生产状态=作业最小生产状态=已完工,则生产状态=已完工
|
|
|
|
+ */
|
|
|
|
+ //如果作业最大生产状态=待排程,则生产状态=待排程
|
|
|
|
+ if (maxProductionStatus.equals(TO_BE_SCHEDULED)) {
|
|
|
|
+ item.setProductionStatus(TO_BE_SCHEDULED);
|
|
|
|
+ }
|
|
|
|
+ //如果作业最大生产状态=待发布,则生产状态=待发布
|
|
|
|
+ if (maxProductionStatus.equals(TO_BE_PUBLISHED)) {
|
|
|
|
+ item.setProductionStatus(TO_BE_PUBLISHED);
|
|
|
|
+ }
|
|
|
|
+ //如果作业最大生产状态=待开工,则生产状态=待开工
|
|
|
|
+ if (maxProductionStatus.equals(TO_BE_STARTED)) {
|
|
|
|
+ item.setProductionStatus(TO_BE_STARTED);
|
|
|
|
+ }
|
|
|
|
+ //如果作业最大生产状态=加工中或已完工,并且作业最小生产状态<已完工(50),则生产状态=加工中
|
|
|
|
+ if ((maxProductionStatus.equals(PROCESSING) || maxProductionStatus.equals(COMPLETED)) && Integer.parseInt(minProductionStatus) < Integer.parseInt(COMPLETED)) {
|
|
|
|
+ item.setProductionStatus(PROCESSING);
|
|
|
|
+ }
|
|
|
|
+ //如果作业最大生产状态=作业最小生产状态=已完工,则生产状态=已完工
|
|
|
|
+ if (minProductionStatus.equals(maxProductionStatus) && minProductionStatus.equals(COMPLETED)) {
|
|
|
|
+ item.setProductionStatus(COMPLETED);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
|
|
private void updateOrder(String blankId) {
|
|
private void updateOrder(String blankId) {
|
|
//查询此坯料计划的所属订单的最小生产状态和订单ID
|
|
//查询此坯料计划的所属订单的最小生产状态和订单ID
|
|
- CommonUpdateProductionStatusReq three = this.baseMapper.selectBlankMinStatus(blankId);
|
|
|
|
|
|
+ CommonUpdateProductionStatusReq three = this.baseMapper.selectBlankMinAndMaxStatus(blankId);
|
|
if (ObjectUtil.isEmpty(three)) {
|
|
if (ObjectUtil.isEmpty(three)) {
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
- //更新订单
|
|
|
|
- ApsProductionOrderDo apsProductionOrderDo = new ApsProductionOrderDo();
|
|
|
|
- apsProductionOrderDo.setId(three.getOrderId());
|
|
|
|
- apsProductionOrderDo.setProductionstatus(three.getProductionStatus());
|
|
|
|
-// if (three.getProductionStatus().equals("10")) {
|
|
|
|
-// apsProductionOrderDo.setSchedulstatus("待排程");
|
|
|
|
-// }
|
|
|
|
-// if (three.getProductionStatus().equals("20")) {
|
|
|
|
-// apsProductionOrderDo.setSchedulstatus("待发布");
|
|
|
|
-// }
|
|
|
|
-// if ("30,40,50".contains(three.getProductionStatus())) {
|
|
|
|
-// apsProductionOrderDo.setSchedulstatus("已发布");
|
|
|
|
-// }
|
|
|
|
- apsProductionOrderService.updateById(apsProductionOrderDo);
|
|
|
|
|
|
+ //根据最小生产状态和最大生产状态,判断当前最新的生产状态,等待更新
|
|
|
|
+ setProductStatusByMinAndMax(three);
|
|
|
|
+
|
|
|
|
+ if (ObjectUtil.isNotEmpty(three.getProductionStatus())) {
|
|
|
|
+ //更新订单
|
|
|
|
+ ApsProductionOrderDo apsProductionOrderDo = new ApsProductionOrderDo();
|
|
|
|
+ apsProductionOrderDo.setId(three.getOrderId());
|
|
|
|
+ apsProductionOrderDo.setProductionstatus(three.getProductionStatus());
|
|
|
|
+ apsProductionOrderService.updateById(apsProductionOrderDo);
|
|
|
|
+ }
|
|
|
|
|
|
//更新产品明细的生产状态
|
|
//更新产品明细的生产状态
|
|
//订单ID
|
|
//订单ID
|
|
@@ -287,21 +342,27 @@ public class ApsProcessOperationProcessEquServiceImpl extends ServiceImpl<ApsPro
|
|
if (list.size() > 0) {
|
|
if (list.size() > 0) {
|
|
List<String> productIdList = list.stream().map(ApsProductDetailDo::getId).collect(Collectors.toList());
|
|
List<String> productIdList = list.stream().map(ApsProductDetailDo::getId).collect(Collectors.toList());
|
|
//查找产品的最新坯料状态
|
|
//查找产品的最新坯料状态
|
|
- List<ApsProductDetailDo> productDetailDoList = apsProcessOperationProcessEquDao.selectNeedUpdate(productIdList);
|
|
|
|
|
|
+ List<CommonUpdateProductionStatusReq> four = apsProcessOperationProcessEquDao.selectNeedUpdate(productIdList);
|
|
|
|
+ //根据最小生产状态和最大生产状态,判断当前最新的生产状态,等待更新
|
|
|
|
+ for (CommonUpdateProductionStatusReq commonUpdateProductionStatusReq : four) {
|
|
|
|
+ setProductStatusByMinAndMax(commonUpdateProductionStatusReq);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
//需要更新的数组
|
|
//需要更新的数组
|
|
List<ApsProductDetailDo> needUpdateList = new LinkedList<>();
|
|
List<ApsProductDetailDo> needUpdateList = new LinkedList<>();
|
|
|
|
|
|
- for (ApsProductDetailDo apsProductDetailDo : productDetailDoList) {
|
|
|
|
|
|
+ for (CommonUpdateProductionStatusReq vo : four) {
|
|
//对比当前生产状态判断是否需要更新
|
|
//对比当前生产状态判断是否需要更新
|
|
for (ApsProductDetailDo productDetailDo : list) {
|
|
for (ApsProductDetailDo productDetailDo : list) {
|
|
//同一产品明细
|
|
//同一产品明细
|
|
- if (apsProductDetailDo.getId().equals(productDetailDo.getId())) {
|
|
|
|
|
|
+ if (vo.getProductDetailId().equals(productDetailDo.getId())) {
|
|
//比较状态
|
|
//比较状态
|
|
- if (apsProductDetailDo.getProductstatus() != null && !apsProductDetailDo.getProductstatus().equals(productDetailDo.getProductstatus())) {
|
|
|
|
|
|
+ if (vo.getProductionStatus() != null && !vo.getProductionStatus().equals(productDetailDo.getProductstatus())) {
|
|
//不相等则更新
|
|
//不相等则更新
|
|
ApsProductDetailDo needUpdate = new ApsProductDetailDo();
|
|
ApsProductDetailDo needUpdate = new ApsProductDetailDo();
|
|
- needUpdate.setId(apsProductDetailDo.getId());
|
|
|
|
- needUpdate.setProductstatus(apsProductDetailDo.getProductstatus());
|
|
|
|
|
|
+ needUpdate.setId(vo.getProductDetailId());
|
|
|
|
+ needUpdate.setProductstatus(vo.getProductionStatus());
|
|
|
|
|
|
needUpdateList.add(needUpdate);
|
|
needUpdateList.add(needUpdate);
|
|
}
|
|
}
|