|
@@ -1,8 +1,8 @@
|
|
|
package com.rongwei.bscommon.sys.service.impl;
|
|
|
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
|
|
import com.rongwei.bscommon.sys.service.ApsBlankOrderService;
|
|
|
-import com.rongwei.bscommon.sys.service.ApsProcessOperationService;
|
|
|
import com.rongwei.bscommon.sys.service.ApsReportRecordsService;
|
|
|
import com.rongwei.bscommon.sys.service.ReportCheckService;
|
|
|
import com.rongwei.bsentity.domain.*;
|
|
@@ -14,6 +14,7 @@ import org.slf4j.Logger;
|
|
|
import org.slf4j.LoggerFactory;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
+import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.Arrays;
|
|
@@ -36,7 +37,7 @@ public class ReportCheckServiceImpl implements ReportCheckService {
|
|
|
@Autowired
|
|
|
private ApsReportOutputServiceImpl apsReportOutputService;
|
|
|
@Autowired
|
|
|
- private ApsProcessOperationService apsProcessOperationService;
|
|
|
+ private ApsProcessOperationServiceImpl apsProcessOperationService;
|
|
|
@Autowired
|
|
|
private ApsBlankOrderService apsBlankOrderService;
|
|
|
@Autowired
|
|
@@ -62,6 +63,7 @@ public class ReportCheckServiceImpl implements ReportCheckService {
|
|
|
* @return
|
|
|
*/
|
|
|
@Override
|
|
|
+ @Transactional
|
|
|
public R updateRelevantInformation(String id) {
|
|
|
log.info("保存检验结果后更新相关信息");
|
|
|
if (StringUtil.isBlank(id)) {
|
|
@@ -74,9 +76,6 @@ public class ReportCheckServiceImpl implements ReportCheckService {
|
|
|
log.error("无法根据ID:{}获取到报工记录", id);
|
|
|
return R.error();
|
|
|
}
|
|
|
- // 更新待检验批次号
|
|
|
- reportRecordsDo.setNeedcheckbatchnumber("");
|
|
|
-
|
|
|
// 获取工序作业信息
|
|
|
ApsProcessOperationDo currentProcessOperationDo = apsProcessOperationService.getOne(new LambdaQueryWrapper<ApsProcessOperationDo>()
|
|
|
.eq(ApsProcessOperationDo::getId, reportRecordsDo.getProcessoperationid()).eq(BaseDo::getDeleted, NO_DELETED));
|
|
@@ -127,9 +126,9 @@ public class ReportCheckServiceImpl implements ReportCheckService {
|
|
|
|
|
|
String nextProcessId = currentProcessOperationDo.getNextprocessid();
|
|
|
// 获取当前工序对应的后道工序信息
|
|
|
- List<ApsProcessOperationDo> nextProcessOperationDo = new ArrayList<>();
|
|
|
+ List<ApsProcessOperationDo> nextProcessOperationDos = new ArrayList<>();
|
|
|
if (StringUtils.isNotBlank(nextProcessId)) {
|
|
|
- nextProcessOperationDo = apsProcessOperationService.list(new LambdaQueryWrapper<ApsProcessOperationDo>()
|
|
|
+ nextProcessOperationDos = apsProcessOperationService.list(new LambdaQueryWrapper<ApsProcessOperationDo>()
|
|
|
.in(ApsProcessOperationDo::getId, Arrays.asList(nextProcessId.split(",")))
|
|
|
.eq(BaseDo::getDeleted, NO_DELETED));
|
|
|
}
|
|
@@ -149,19 +148,38 @@ public class ReportCheckServiceImpl implements ReportCheckService {
|
|
|
currentProductionOrderDoDispose(productionOrderDo, unqualificationOutPutList);
|
|
|
// 在制品
|
|
|
updateArticlesProcessData(unqualificationOutPutList, qualifiedOutPutList, reportRecordsDo,
|
|
|
- apsWorkInProgressInventoryDos, nextProcessOperationDo, currentProcessOperationDo,
|
|
|
+ apsWorkInProgressInventoryDos, nextProcessOperationDos, currentProcessOperationDo,
|
|
|
operationOutMaterDoList);
|
|
|
// 获取所有待加工的批次号信息
|
|
|
String toBeProcessedBatchNum = apsWorkInProgressInventoryDos.stream().filter(info -> TO_BE_PROCESSED.equals(info.getWorkinprocessstatus()))
|
|
|
.map(ApsWorkInProgressInventoryDo::getBatchnumber).collect(Collectors.joining(","));
|
|
|
-
|
|
|
- //更新后续工具的待加工批次号信息
|
|
|
- apsProcessOperationService.updateBachmaterialprocessByIds
|
|
|
-
|
|
|
// if (!qualifiedOutPutList.isEmpty()) {
|
|
|
// // 获取后道工序的数据
|
|
|
// nextProcessDispose(nextProcessOperationDo, qualifiedOutPutList);
|
|
|
// }
|
|
|
+
|
|
|
+ /**********************执行数据更新操作*************************/
|
|
|
+ if (!nextProcessOperationDos.isEmpty() && StringUtils.isNotBlank(toBeProcessedBatchNum)) {
|
|
|
+ //更新后续工具的待加工批次号信息
|
|
|
+ apsProcessOperationService.updateBachmaterialprocessByIds(nextProcessOperationDos.stream()
|
|
|
+ .map(ApsProcessOperationDo::getId).collect(Collectors.toList()), toBeProcessedBatchNum);
|
|
|
+ }
|
|
|
+ //存在不合格批次信息时 更新更新报工记录对应订单的订单评审状态=待计划评审, 订单调整日期=今天
|
|
|
+ if (unqualifiedQuantity > 0) {
|
|
|
+ apsProductionOrderService.update(new LambdaUpdateWrapper<ApsProductionOrderDo>()
|
|
|
+ .eq(ApsProductionOrderDo::getId, productionOrderDo.getId())
|
|
|
+ .set(ApsProductionOrderDo::getChangedate, new Date())
|
|
|
+ .set(ApsProductionOrderDo::getAuditstatus, PENDING_PLAN_REVIEW)
|
|
|
+ );
|
|
|
+ }
|
|
|
+ // 更新当前工序的输出已检验卷数,不合格卷数,合格卷数
|
|
|
+ apsProcessOperationService.updateAboutCheckBatchNum(currentProcessOperationDo.getId(), inspectQuantity, qualifiedQuantity, unqualifiedQuantity);
|
|
|
+ // 更新在制品信息
|
|
|
+ apsWorkInProgressInventoryService.saveOrUpdateBatch(apsWorkInProgressInventoryDos);
|
|
|
+ // 更新当前报工记录的待检验批次号
|
|
|
+ apsReportRecordsService.update(new LambdaUpdateWrapper<ApsReportRecordsDo>().eq(ApsReportRecordsDo::getId, id)
|
|
|
+ .set(ApsReportRecordsDo::getNeedcheckbatchnumber, ""));
|
|
|
+
|
|
|
return R.ok();
|
|
|
}
|
|
|
|
|
@@ -186,13 +204,10 @@ public class ReportCheckServiceImpl implements ReportCheckService {
|
|
|
*/
|
|
|
public void currentProductionOrderDoDispose(ApsProductionOrderDo productionOrderDo, List<ApsReportOutputDo> unqualificationOutPutList) {
|
|
|
// 存在不合格的批次信息
|
|
|
- if (!unqualificationOutPutList.isEmpty()) {
|
|
|
- //更新报工记录对应订单的订单评审状态=待计划评审,
|
|
|
- productionOrderDo.setAuditstatus(PENDING_PLAN_REVIEW);
|
|
|
- // 订单调整日期=今天
|
|
|
- productionOrderDo.setChangedate(new Date());
|
|
|
- // 发送不合格提醒
|
|
|
+ if (unqualificationOutPutList.isEmpty()) {
|
|
|
+ return;
|
|
|
}
|
|
|
+ // TODO:XH add 2024/3/20 发送不合格提醒
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -205,16 +220,16 @@ public class ReportCheckServiceImpl implements ReportCheckService {
|
|
|
* @param nextProcessOperationDo 后道工序信息
|
|
|
* @return
|
|
|
*/
|
|
|
- public List<ApsWorkInProgressInventoryDo> updateArticlesProcessData(List<ApsReportOutputDo> unqualificationOutPutList,
|
|
|
- List<ApsReportOutputDo> qualifiedOutPutList,
|
|
|
- ApsReportRecordsDo apsReportRecordsDo,
|
|
|
- List<ApsWorkInProgressInventoryDo> apsWorkInProgressInventoryDos,
|
|
|
- List<ApsProcessOperationDo> nextProcessOperationDo,
|
|
|
- ApsProcessOperationDo processOperationDo,
|
|
|
- ApsProcessOperationOutMaterDo operationOutMaterDo) {
|
|
|
+ public void updateArticlesProcessData(List<ApsReportOutputDo> unqualificationOutPutList,
|
|
|
+ List<ApsReportOutputDo> qualifiedOutPutList,
|
|
|
+ ApsReportRecordsDo apsReportRecordsDo,
|
|
|
+ List<ApsWorkInProgressInventoryDo> apsWorkInProgressInventoryDos,
|
|
|
+ List<ApsProcessOperationDo> nextProcessOperationDo,
|
|
|
+ ApsProcessOperationDo processOperationDo,
|
|
|
+ ApsProcessOperationOutMaterDo operationOutMaterDo) {
|
|
|
|
|
|
if (apsWorkInProgressInventoryDos.isEmpty()) {
|
|
|
- return apsWorkInProgressInventoryDos;
|
|
|
+ return;
|
|
|
}
|
|
|
// 1.如果报工输出物料的是否合格=否,则在制品状态=备料中
|
|
|
List<String> unqualificationNum = unqualificationOutPutList.stream().map(ApsReportOutputDo::getOutputnumber).collect(Collectors.toList());
|
|
@@ -222,30 +237,33 @@ public class ReportCheckServiceImpl implements ReportCheckService {
|
|
|
if (unqualificationNum.contains(info.getBatchnumber())) {
|
|
|
info.setWorkinprocessstatus(PREPARING_MATERIAL);
|
|
|
}
|
|
|
-
|
|
|
});
|
|
|
|
|
|
/**
|
|
|
- * 1如果报工输出物料的是否合格=是,并且报工输出物料对应工序作业输出物料的输出合格卷数<=计划成品卷数,则从在制品库存删除该在制品
|
|
|
- * 2如果报工输出物料的是否合格=是,并且报工输出物料有对应后道工序作业,并且报工输出物料对应工序作业输出物料的输出合格卷数>计划成品卷数+报工输出物料对应所有后道工序作业的计划加工卷数,则在制品状态=备料中;
|
|
|
- * 3如果报工输出物料的是否合格=是,并且报工输出物料有对应后道工序作业,并且报工输出物料对应工序作业输出物料的输出合格卷数<=计划成品卷数+报工输出物料对应所有后道工序作业的计划加工卷数,则在制品状态=待加工;
|
|
|
+ * 1没有后续工序作业 且 报工输出物料的是否合格=是,并且报工输出物料对应工序作业输出物料的输出合格卷数<=计划成品卷数,则从在制品库存删除该在制品
|
|
|
+ * 2.1如果报工输出物料的是否合格=是,并且报工输出物料有对应后道工序作业,并且报工输出物料对应工序作业输出物料的输出合格卷数>计划成品卷数+报工输出物料对应所有后道工序作业的计划加工卷数,则在制品状态=备料中;
|
|
|
+ * 2.2如果报工输出物料的是否合格=是,并且报工输出物料有对应后道工序作业,并且报工输出物料对应工序作业输出物料的输出合格卷数<=计划成品卷数+报工输出物料对应所有后道工序作业的计划加工卷数,则在制品状态=待加工;
|
|
|
*
|
|
|
*/
|
|
|
List<String> qualificationNum = qualifiedOutPutList.stream().map(ApsReportOutputDo::getOutputnumber).collect(Collectors.toList());
|
|
|
int nextProcessingPlannedNum = nextProcessOperationDo.stream().mapToInt(ApsProcessOperationDo::getOutputqualifiednum).sum();
|
|
|
apsWorkInProgressInventoryDos.forEach(info -> {
|
|
|
if (!qualificationNum.contains(info.getBatchnumber())) {
|
|
|
- return;
|
|
|
+ return;
|
|
|
}
|
|
|
- if(processOperationDo.getOutputqualifiednum() +1 <= operationOutMaterDo.getPlanprodrollnum()){
|
|
|
- info.setDeleted(DELETED);
|
|
|
- }else if(processOperationDo.getOutputqualifiednum()+1> operationOutMaterDo.getPlanprodrollnum() +nextProcessingPlannedNum ){
|
|
|
- info.setWorkinprocessstatus(PREPARING_MATERIAL);
|
|
|
- }else if(processOperationDo.getOutputqualifiednum()+1 <= operationOutMaterDo.getPlanprodrollnum() +nextProcessingPlannedNum){
|
|
|
- info.setWorkinprocessstatus(TO_BE_PROCESSED);
|
|
|
+ if (nextProcessOperationDo.isEmpty()) {
|
|
|
+ if (processOperationDo.getOutputqualifiednum() + 1 <= operationOutMaterDo.getPlanprodrollnum()) {
|
|
|
+ info.setDeleted(DELETED);
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ if (processOperationDo.getOutputqualifiednum() + 1 > operationOutMaterDo.getPlanprodrollnum() + nextProcessingPlannedNum) {
|
|
|
+ info.setWorkinprocessstatus(PREPARING_MATERIAL);
|
|
|
+ } else { // if (processOperationDo.getOutputqualifiednum() + 1 <= operationOutMaterDo.getPlanprodrollnum() + nextProcessingPlannedNum)
|
|
|
+ info.setWorkinprocessstatus(TO_BE_PROCESSED);
|
|
|
+ }
|
|
|
}
|
|
|
- processOperationDo.setOutputqualifiednum(processOperationDo.getOutputqualifiednum()+1);
|
|
|
+
|
|
|
+ processOperationDo.setOutputqualifiednum(processOperationDo.getOutputqualifiednum() + 1);
|
|
|
});
|
|
|
- return apsWorkInProgressInventoryDos;
|
|
|
}
|
|
|
}
|