From 61f1de60e6f58dd8e19f01c56f2e56e40885d65b Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期二, 23 六月 2026 17:39:58 +0800
Subject: [PATCH] 点击发货-》发货审核-》出厂质检-》出库审核-》出库通过
---
src/main/java/com/ruoyi/quality/service/impl/QualityInspectServiceImpl.java | 138 +++++++++++++++++++++++++++++++++++++++++++---
1 files changed, 129 insertions(+), 9 deletions(-)
diff --git a/src/main/java/com/ruoyi/quality/service/impl/QualityInspectServiceImpl.java b/src/main/java/com/ruoyi/quality/service/impl/QualityInspectServiceImpl.java
index 6bd4693..13c832f 100644
--- a/src/main/java/com/ruoyi/quality/service/impl/QualityInspectServiceImpl.java
+++ b/src/main/java/com/ruoyi/quality/service/impl/QualityInspectServiceImpl.java
@@ -17,6 +17,9 @@
import com.ruoyi.framework.web.domain.R;
import com.ruoyi.procurementrecord.service.ProcurementRecordService;
import com.ruoyi.procurementrecord.utils.StockUtils;
+import com.ruoyi.quality.dto.AutoJudgeAllResponse;
+import com.ruoyi.quality.dto.AutoJudgeRequest;
+import com.ruoyi.quality.dto.AutoJudgeResponse;
import com.ruoyi.quality.dto.BatchQuickInspectRequest;
import com.ruoyi.quality.dto.QualityInspectDto;
import com.ruoyi.quality.mapper.QualityInspectMapper;
@@ -26,6 +29,7 @@
import com.ruoyi.quality.pojo.QualityInspectParam;
import com.ruoyi.quality.pojo.QualityUnqualified;
import com.ruoyi.quality.utils.QualityInspectTemplateExportHelper;
+import com.ruoyi.quality.utils.QualityJudgeUtil;
import com.ruoyi.stock.pojo.StockInRecord;
import com.ruoyi.stock.service.StockInRecordService;
import com.ruoyi.quality.service.IQualityInspectParamService;
@@ -153,14 +157,24 @@
qualityInspect.setUnqualifiedQuantity(BigDecimal.ZERO);
}
- // 鍚堟牸鐩存帴鍏ュ簱
- if(qualityInspect.getQualifiedQuantity().compareTo(BigDecimal.ZERO) > 0){
+ // 鍚堟牸鍏ュ簱澶勭悊锛堟牴鎹楠岀被鍨嬪尯鍒嗭級
+ // 杩囩▼妫�楠�(inspectType=1)锛氬叆搴撳埌鎴愬搧搴�
+ // 鍑哄巶妫�楠�(inspectType=2)锛氫笉鍋氫换浣曚笟鍔″鐞�
+ // 鍘熸潗鏂欐楠�(inspectType=0)锛氭甯歌川妫�鍏ュ簱
+ Integer inspectType = qualityInspect.getInspectType();
+ boolean shouldStockIn = inspectType == null || inspectType == 0 || inspectType == 1;
+
+ if (shouldStockIn && qualityInspect.getQualifiedQuantity().compareTo(BigDecimal.ZERO) > 0) {
//浠呮坊鍔犲叆搴撹褰�
StockInventoryDto stockInventoryDto = new StockInventoryDto();
- //濡傛灉鏄噰璐川妫�鍚堟牸鍏ュ簱閫夌敤CUSTOMIZATION_UNSTOCK_OUT,鍏朵綑鍚堟牸鍏ュ簱閫夌敤QUALITYINSPECT_STOCK_IN
- stockInventoryDto.setRecordType(String.valueOf(StockInQualifiedRecordTypeEnum.QUALITYINSPECT_STOCK_IN.getCode()));
- if (ObjectUtils.isNotEmpty(qualityInspect.getPurchaseLedgerId())){
+ //杩囩▼妫�楠屼娇鐢ㄧ敓浜ф姤宸ュ叆搴撶被鍨嬶紝鍏朵粬璐ㄦ浣跨敤璐ㄦ鍏ュ簱绫诲瀷
+ if (inspectType != null && inspectType == 1) {
+ stockInventoryDto.setRecordType(String.valueOf(StockInQualifiedRecordTypeEnum.PRODUCTION_REPORT_STOCK_IN.getCode()));
+ } else if (ObjectUtils.isNotEmpty(qualityInspect.getPurchaseLedgerId())) {
+ //閲囪喘璐ㄦ鍚堟牸鍏ュ簱
stockInventoryDto.setRecordType(String.valueOf(StockInQualifiedRecordTypeEnum.CUSTOMIZATION_UNSTOCK_OUT.getCode()));
+ } else {
+ stockInventoryDto.setRecordType(String.valueOf(StockInQualifiedRecordTypeEnum.QUALITYINSPECT_STOCK_IN.getCode()));
}
stockInventoryDto.setRecordId(qualityInspect.getId());
stockInventoryDto.setProductModelId(qualityInspect.getProductModelId());
@@ -371,12 +385,22 @@
// 4. 鏇存柊妫�楠屽崟
qualityInspectMapper.updateById(qualityInspect);
- // 5. 鍚堟牸鍏ュ簱澶勭悊
- if (qualified.compareTo(BigDecimal.ZERO) > 0) {
+ // 5. 鍚堟牸鍏ュ簱澶勭悊锛堟牴鎹楠岀被鍨嬪尯鍒嗭級
+ // 杩囩▼妫�楠�(inspectType=1)锛氬叆搴撳埌鎴愬搧搴�
+ // 鍑哄巶妫�楠�(inspectType=2)锛氫笉鍋氫换浣曚笟鍔″鐞�
+ // 鍘熸潗鏂欐楠�(inspectType=0)锛氭甯歌川妫�鍏ュ簱
+ Integer inspectType = qualityInspect.getInspectType();
+ boolean shouldStockIn = inspectType == null || inspectType == 0 || inspectType == 1;
+
+ if (shouldStockIn && qualified.compareTo(BigDecimal.ZERO) > 0) {
StockInventoryDto stockInventoryDto = new StockInventoryDto();
- stockInventoryDto.setRecordType(String.valueOf(StockInQualifiedRecordTypeEnum.QUALITYINSPECT_STOCK_IN.getCode()));
- if (ObjectUtils.isNotEmpty(qualityInspect.getPurchaseLedgerId())) {
+ //杩囩▼妫�楠屼娇鐢ㄧ敓浜ф姤宸ュ叆搴撶被鍨嬶紝鍏朵粬璐ㄦ浣跨敤璐ㄦ鍏ュ簱绫诲瀷
+ if (inspectType != null && inspectType == 1) {
+ stockInventoryDto.setRecordType(String.valueOf(StockInQualifiedRecordTypeEnum.PRODUCTION_REPORT_STOCK_IN.getCode()));
+ } else if (ObjectUtils.isNotEmpty(qualityInspect.getPurchaseLedgerId())) {
stockInventoryDto.setRecordType(String.valueOf(StockInQualifiedRecordTypeEnum.CUSTOMIZATION_UNSTOCK_OUT.getCode()));
+ } else {
+ stockInventoryDto.setRecordType(String.valueOf(StockInQualifiedRecordTypeEnum.QUALITYINSPECT_STOCK_IN.getCode()));
}
stockInventoryDto.setRecordId(qualityInspect.getId());
stockInventoryDto.setProductModelId(qualityInspect.getProductModelId());
@@ -561,4 +585,100 @@
return qualityInspectTemplateExportHelper.analyzeTemplate(templatePath);
}
+ @Override
+ public AutoJudgeResponse autoJudge(AutoJudgeRequest request) {
+ QualityJudgeUtil.JudgeResult result = QualityJudgeUtil.judge(
+ request.getTestValue(),
+ request.getStandardValue(),
+ request.getMinValue(),
+ request.getMaxValue(),
+ request.getJudgeType()
+ );
+ return new AutoJudgeResponse(result.getQualified(), result.getMessage());
+ }
+
+ @Override
+ public AutoJudgeAllResponse autoJudgeAll(Long inspectId) {
+ List<QualityInspectParam> params = qualityInspectParamService.list(
+ Wrappers.<QualityInspectParam>lambdaQuery().eq(QualityInspectParam::getInspectId, inspectId));
+
+ AutoJudgeAllResponse response = new AutoJudgeAllResponse();
+ List<AutoJudgeAllResponse.ParamJudgeResult> paramResults = new ArrayList<>();
+ boolean hasRequiredUnqualified = false;
+ boolean hasNonRequiredUnqualified = false;
+ boolean allTextDescription = true;
+ boolean hasRequiredParam = false;
+
+ for (QualityInspectParam param : params) {
+ AutoJudgeAllResponse.ParamJudgeResult paramResult = new AutoJudgeAllResponse.ParamJudgeResult();
+ paramResult.setParamId(param.getId());
+ paramResult.setParameterItem(param.getParameterItem());
+ paramResult.setIsRequired(param.getIsRequired() != null && param.getIsRequired() == 1);
+
+ if (paramResult.getIsRequired()) {
+ hasRequiredParam = true;
+ }
+
+ String judgeType = param.getJudgeType();
+ if (QualityJudgeUtil.JUDGE_TYPE_TEXT_DESCRIPTION.equals(judgeType)) {
+ paramResult.setIsQualified(null);
+ paramResult.setMessage("鏂囧瓧鎻忚堪绫诲瀷闇�鎵嬪姩鍒ゆ柇");
+ } else {
+ allTextDescription = false;
+ QualityJudgeUtil.JudgeResult result = QualityJudgeUtil.judge(
+ param.getTestValue(),
+ param.getStandardValue(),
+ param.getMinValue(),
+ param.getMaxValue(),
+ judgeType
+ );
+ paramResult.setIsQualified(result.getQualified());
+ paramResult.setMessage(result.getMessage());
+
+ // 鏇存柊鍙傛暟椤圭殑鍒ゆ柇缁撴灉
+ if (result.getQualified() != null) {
+ param.setIsQualified(result.getQualified() ? 1 : 0);
+ qualityInspectParamService.updateById(param);
+ }
+
+ // 妫�鏌ュ繀瑕佸垽鏂弬鏁版槸鍚︿笉鍚堟牸
+ if (paramResult.getIsRequired() && Boolean.FALSE.equals(result.getQualified())) {
+ hasRequiredUnqualified = true;
+ }
+ // 妫�鏌ラ潪蹇呰鍒ゆ柇鍙傛暟鏄惁涓嶅悎鏍�
+ if (!paramResult.getIsRequired() && Boolean.FALSE.equals(result.getQualified())) {
+ hasNonRequiredUnqualified = true;
+ }
+ }
+ paramResults.add(paramResult);
+ }
+
+ response.setParamResults(paramResults);
+ response.setHasRequiredUnqualified(hasRequiredUnqualified);
+ response.setHasNonRequiredUnqualified(hasNonRequiredUnqualified);
+ response.setAllTextDescription(allTextDescription);
+
+ // 纭畾鏁翠綋鍒ゆ柇缁撴灉
+ if (allTextDescription) {
+ response.setAutoJudgeResult(null);
+ } else if (hasRequiredUnqualified) {
+ response.setAutoJudgeResult("涓嶅悎鏍�");
+ } else if (hasNonRequiredUnqualified) {
+ // 蹇呰鍙傛暟閮藉悎鏍硷紝浣嗘湁闈炲繀瑕佸弬鏁颁笉鍚堟牸 鈫� 閮ㄥ垎鍚堟牸
+ response.setAutoJudgeResult("閮ㄥ垎鍚堟牸");
+ } else {
+ // 鎵�鏈夐渶瑕佽嚜鍔ㄥ垽鏂殑鍙傛暟椤归兘鍚堟牸锛屾暣浣撲负鍚堟牸
+ response.setAutoJudgeResult("鍚堟牸");
+ }
+
+ // 鏇存柊璐ㄦ涓昏〃鐨勮嚜鍔ㄥ垽鏂粨鏋�
+ QualityInspect inspect = qualityInspectMapper.selectById(inspectId);
+ if (inspect != null) {
+ inspect.setAutoJudgeResult(response.getAutoJudgeResult());
+ qualityInspectMapper.updateById(inspect);
+ }
+
+ return response;
+ }
+
}
--
Gitblit v1.9.3