|
@@ -1,19 +1,14 @@
|
|
|
package com.rongwei.bscommon.sys.service.impl;
|
|
|
|
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
import com.google.common.collect.Lists;
|
|
|
import com.rongwei.bscommon.sys.dao.ApsProcessOperationDao;
|
|
|
import com.rongwei.bscommon.sys.dao.ApsProcessOperationProcessEquDao;
|
|
|
-import com.rongwei.bscommon.sys.service.ApsBlankOrderService;
|
|
|
-import com.rongwei.bscommon.sys.service.ApsProcessOperationProcessEquService;
|
|
|
-import com.rongwei.bscommon.sys.service.ApsProcessOperationService;
|
|
|
-import com.rongwei.bscommon.sys.service.ApsProductionOrderService;
|
|
|
-import com.rongwei.bsentity.domain.ApsBlankOrderDo;
|
|
|
-import com.rongwei.bsentity.domain.ApsProcessOperationDo;
|
|
|
-import com.rongwei.bsentity.domain.ApsProcessOperationProcessEquDo;
|
|
|
-
|
|
|
-import com.rongwei.bsentity.domain.ApsProductionOrderDo;
|
|
|
+import com.rongwei.bscommon.sys.service.*;
|
|
|
+import com.rongwei.bsentity.domain.*;
|
|
|
+
|
|
|
import com.rongwei.bsentity.vo.CommonUpdateProductionStatusReq;
|
|
|
import com.rongwei.bsentity.vo.ProcessIdRelationVo;
|
|
|
import com.rongwei.rwcommon.base.R;
|
|
@@ -24,7 +19,9 @@ import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
|
+import java.util.LinkedList;
|
|
|
import java.util.List;
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
|
*
|
|
@@ -41,6 +38,8 @@ public class ApsProcessOperationProcessEquServiceImpl extends ServiceImpl<ApsPro
|
|
|
private ApsBlankOrderService apsBlankOrderService;
|
|
|
@Autowired
|
|
|
private ApsProductionOrderService apsProductionOrderService;
|
|
|
+ @Autowired
|
|
|
+ private ApsProductDetailService apsProductDetailService;
|
|
|
|
|
|
/**
|
|
|
* 更新工序的待加工批次号信息
|
|
@@ -88,12 +87,16 @@ public class ApsProcessOperationProcessEquServiceImpl extends ServiceImpl<ApsPro
|
|
|
public R updateProductionStatus(CommonUpdateProductionStatusReq request) {
|
|
|
|
|
|
//根据粒度顺序
|
|
|
+ //作业明细->工序作业
|
|
|
if (ObjectUtil.isNotEmpty(request.getProcessOperationEquId())) {
|
|
|
updateProcess(request.getProcessOperationEquId());
|
|
|
}
|
|
|
+ //工序作业->坯料计划
|
|
|
+ //工序作业->订单
|
|
|
if (ObjectUtil.isNotEmpty(request.getProcessOperationId())) {
|
|
|
updateBlank(request.getProcessOperationId());
|
|
|
}
|
|
|
+ //坯料计划->产品明细
|
|
|
if (ObjectUtil.isNotEmpty(request.getBlankId())) {
|
|
|
updateOrder(request.getBlankId());
|
|
|
}
|
|
@@ -104,10 +107,25 @@ public class ApsProcessOperationProcessEquServiceImpl extends ServiceImpl<ApsPro
|
|
|
}
|
|
|
|
|
|
private void updateProcess(String processOperationEquId) {
|
|
|
+ String processOperationId = updateProcessByProcessEquId(processOperationEquId);
|
|
|
+
|
|
|
+ if(ObjectUtil.isEmpty(processOperationId)){
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ //更新坯料计划
|
|
|
+ updateBlank(processOperationId);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 从作业明细表中的任意一个子表ID开始,自动计算更新工序作业的状态,完成后返回其中一个工序作业的ID(不一定要用)
|
|
|
+ * @param processOperationEquId
|
|
|
+ */
|
|
|
+ public String updateProcessByProcessEquId(String processOperationEquId) {
|
|
|
//查询所有子表明细的最小生产状态和工序作业ID
|
|
|
CommonUpdateProductionStatusReq one = this.baseMapper.selectEquMinStatus(processOperationEquId);
|
|
|
if(ObjectUtil.isEmpty(one)){
|
|
|
- return;
|
|
|
+ return "";
|
|
|
}
|
|
|
//工序作业ID
|
|
|
String processId = one.getProcessOperationId();
|
|
@@ -158,8 +176,7 @@ public class ApsProcessOperationProcessEquServiceImpl extends ServiceImpl<ApsPro
|
|
|
apsProcessOperationDo.setId(processId);
|
|
|
apsProcessOperationService.updateById(apsProcessOperationDo);
|
|
|
|
|
|
- //更新坯料计划
|
|
|
- updateBlank(one.getProcessOperationId());
|
|
|
+ return one.getProcessOperationId();
|
|
|
}
|
|
|
|
|
|
private void updateBlank(String processOperationId) {
|
|
@@ -174,6 +191,41 @@ public class ApsProcessOperationProcessEquServiceImpl extends ServiceImpl<ApsPro
|
|
|
apsBlankOrderDo.setProductstatus(two.getProductionStatus());
|
|
|
apsBlankOrderService.updateById(apsBlankOrderDo);
|
|
|
|
|
|
+ //更新产品明细的生产状态
|
|
|
+ //查询订单的所有产品明细
|
|
|
+ //订单ID
|
|
|
+ String orderId = two.getOrderId();
|
|
|
+ List<ApsProductDetailDo> list = apsProductDetailService.list(new QueryWrapper<ApsProductDetailDo>().lambda().eq(ApsProductDetailDo::getMainid, orderId));
|
|
|
+ if(list.size() > 0) {
|
|
|
+ List<String> productIdList = list.stream().map(ApsProductDetailDo::getId).collect(Collectors.toList());
|
|
|
+ //查找产品的最新坯料状态
|
|
|
+ List<ApsProductDetailDo> productDetailDoList = apsProcessOperationProcessEquDao.selectNeedUpdate(productIdList);
|
|
|
+ //需要更新的数组
|
|
|
+ List<ApsProductDetailDo> needUpdateList = new LinkedList<>();
|
|
|
+
|
|
|
+ for (ApsProductDetailDo apsProductDetailDo : productDetailDoList) {
|
|
|
+ //对比当前生产状态判断是否需要更新
|
|
|
+ for (ApsProductDetailDo productDetailDo : list) {
|
|
|
+ //同一产品明细
|
|
|
+ if(apsProductDetailDo.getId().equals(productDetailDo.getId())){
|
|
|
+ //比较状态
|
|
|
+ if(!apsProductDetailDo.getProductstatus().equals(productDetailDo.getProductstatus())){
|
|
|
+ //不相等则更新
|
|
|
+ ApsProductDetailDo needUpdate = new ApsProductDetailDo();
|
|
|
+ needUpdate.setId(apsProductDetailDo.getId());
|
|
|
+ needUpdate.setProductstatus(apsProductDetailDo.getProductstatus());
|
|
|
+
|
|
|
+ needUpdateList.add(needUpdate);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if(needUpdateList.size()>0){
|
|
|
+ apsProductDetailService.updateBatchById(needUpdateList);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
//更新订单
|
|
|
updateOrder(two.getBlankId());
|
|
|
}
|
|
@@ -188,6 +240,15 @@ public class ApsProcessOperationProcessEquServiceImpl extends ServiceImpl<ApsPro
|
|
|
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);
|
|
|
}
|
|
|
}
|