From 5ac6ad0ec6e861d4d2275753d15d2ad7f870915a Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期一, 22 六月 2026 17:20:07 +0800
Subject: [PATCH] 6、明细记录中有删除操作的,需设置权限; 7、质量管理要设置检验规则;
---
src/main/java/com/ruoyi/quality/service/impl/QualityInspectServiceImpl.java | 405 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 398 insertions(+), 7 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 345d49c..4a44166 100644
--- a/src/main/java/com/ruoyi/quality/service/impl/QualityInspectServiceImpl.java
+++ b/src/main/java/com/ruoyi/quality/service/impl/QualityInspectServiceImpl.java
@@ -10,10 +10,17 @@
import com.deepoove.poi.XWPFTemplate;
import com.deepoove.poi.config.Configure;
import com.ruoyi.common.enums.StockInQualifiedRecordTypeEnum;
+import com.ruoyi.common.exception.ServiceException;
+import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.HackLoopTableRenderPolicy;
import com.ruoyi.common.utils.poi.ExcelUtil;
+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;
import com.ruoyi.quality.mapper.QualityTestStandardMapper;
@@ -21,6 +28,8 @@
import com.ruoyi.quality.pojo.QualityInspect;
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;
@@ -32,12 +41,17 @@
import lombok.AllArgsConstructor;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import java.io.InputStream;
import java.io.OutputStream;
import java.math.BigDecimal;
import java.net.URLEncoder;
+import java.sql.Date;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
@@ -63,17 +77,46 @@
private ProcurementRecordService procurementRecordService;
+ private final QualityInspectTemplateExportHelper qualityInspectTemplateExportHelper;
+
@Override
public int add(QualityInspectDto qualityInspectDto) {
QualityInspect qualityInspect = new QualityInspect();
BeanUtils.copyProperties(qualityInspectDto, qualityInspect);
qualityInspect.setInspectState(0);//榛樿鏈彁浜�
+ // 鏍规嵁 inspectRule 琛ュ叏鎶芥姣斾緥鍜屾娊妫�鏁伴噺榛樿鍊�
+ applyInspectRuleDefaults(qualityInspect);
qualityInspectMapper.insert(qualityInspect);
for (QualityInspectParam qualityInspectParam : qualityInspectDto.getQualityInspectParams()) {
qualityInspectParam.setInspectId(qualityInspect.getId());
}
qualityInspectParamService.saveBatch(qualityInspectDto.getQualityInspectParams());
return 0;
+ }
+
+ /**
+ * 鏍规嵁 inspectRule 璁剧疆鎶芥姣斾緥鍜屾娊妫�鏁伴噺榛樿鍊�
+ * - inspectRule=0 (鍏ㄦ): sampleRatio=100, sampleQuantity=鍏ㄩ儴鏁伴噺
+ * - inspectRule=1 (鎶芥): sampleRatio 鍙栦紶鍏ュ�兼垨0, sampleQuantity=鏁伴噺脳姣斾緥/100
+ */
+ private void applyInspectRuleDefaults(QualityInspect inspect) {
+ Integer rule = inspect.getInspectRule();
+ java.math.BigDecimal quantity = inspect.getQuantity();
+ if (rule == null || rule == 0) {
+ // 鍏ㄦ
+ inspect.setSampleRatio(java.math.BigDecimal.valueOf(100));
+ inspect.setSampleQuantity(quantity != null ? quantity : java.math.BigDecimal.ZERO);
+ } else {
+ // 鎶芥
+ java.math.BigDecimal ratio = inspect.getSampleRatio() != null ? inspect.getSampleRatio() : java.math.BigDecimal.ZERO;
+ inspect.setSampleRatio(ratio);
+ if (quantity != null && ratio.compareTo(java.math.BigDecimal.ZERO) > 0) {
+ inspect.setSampleQuantity(quantity.multiply(ratio)
+ .divide(java.math.BigDecimal.valueOf(100), 0, java.math.RoundingMode.CEILING));
+ } else {
+ inspect.setSampleQuantity(java.math.BigDecimal.ZERO);
+ }
+ }
}
@Override
@@ -90,16 +133,32 @@
@Override
public int submit(QualityInspect inspect) {
QualityInspect qualityInspect = qualityInspectMapper.selectById(inspect.getId());
+
//鎻愪氦鍓嶅繀椤诲垽鏂槸鍚﹀悎鏍�
if (ObjectUtils.isNull(qualityInspect.getCheckResult())) {
- throw new RuntimeException("璇峰厛鍒ゆ柇鏄惁鍚堟牸");
+ throw new ServiceException("璇峰厛鍒ゆ柇鏄惁鍚堟牸");
}
- // 鍖哄垎鍚堟牸鏁伴噺浠ュ強涓嶅悎鏍煎鐞嗚繘琛屽搴旂殑澶勭悊
- Assert.isTrue(qualityInspect.getQuantity().compareTo(qualityInspect.getQualifiedQuantity().add(qualityInspect.getUnqualifiedQuantity())) == 0,"璇锋鏌ュ悎鏍兼暟閲忓拰涓嶅悎鏍兼暟閲忥紝闇�瑕佸悎鏍兼暟閲�+涓嶅悎鏍兼暟閲忎笌鎬绘暟淇濇寔涓�鑷�");
+ if (ObjectUtils.isNull(qualityInspect.getQualifiedQuantity())) {
+ throw new ServiceException("鍚堟牸鏁伴噺涓嶈兘涓虹┖");
+ }
+
+ if (ObjectUtils.isNull(qualityInspect.getUnqualifiedQuantity())) {
+ throw new ServiceException("涓嶅悎鏍兼暟閲忎笉鑳戒负绌�");
+ }
+
+ // 濡傛灉鍚堟牸鏁伴噺涓虹┖锛岃涓�0
+ if (qualityInspect.getQualifiedQuantity() == null) {
+ qualityInspect.setQualifiedQuantity(BigDecimal.ZERO);
+ }
+
+ // 濡傛灉涓嶅悎鏍兼暟閲忎负绌猴紝璁句负0
+ if (qualityInspect.getUnqualifiedQuantity() == null) {
+ qualityInspect.setUnqualifiedQuantity(BigDecimal.ZERO);
+ }
+
+ // 鍚堟牸鐩存帴鍏ュ簱
if(qualityInspect.getQualifiedQuantity().compareTo(BigDecimal.ZERO) > 0){
- //鍚堟牸鐩存帴鍏ュ簱
- // stockUtils.addStock(qualityInspect.getProductModelId(), qualityInspect.getQuantity(), StockInQualifiedRecordTypeEnum.QUALITYINSPECT_STOCK_IN.getCode(), qualityInspect.getId());
//浠呮坊鍔犲叆搴撹褰�
StockInventoryDto stockInventoryDto = new StockInventoryDto();
//濡傛灉鏄噰璐川妫�鍚堟牸鍏ュ簱閫夌敤CUSTOMIZATION_UNSTOCK_OUT,鍏朵綑鍚堟牸鍏ュ簱閫夌敤QUALITYINSPECT_STOCK_IN
@@ -109,13 +168,26 @@
}
stockInventoryDto.setRecordId(qualityInspect.getId());
stockInventoryDto.setProductModelId(qualityInspect.getProductModelId());
- stockInventoryDto.setQualitity(qualityInspect.getQualifiedQuantity());
+ // 鍏ュ簱鏁伴噺 = 鍚堟牸鏁伴噺 * 鍏ュ簱姣斾緥 / 100锛屽叆搴撴瘮渚嬮粯璁�100%
+ BigDecimal stockInRatio = qualityInspect.getStockInRatio();
+ if (stockInRatio == null || stockInRatio.compareTo(BigDecimal.ZERO) <= 0) {
+ stockInRatio = new BigDecimal("100.00");
+ }
+ BigDecimal actualStockInQuantity = qualityInspect.getQualifiedQuantity()
+ .multiply(stockInRatio)
+ .divide(new BigDecimal("100"), 2, BigDecimal.ROUND_HALF_UP);
+ stockInventoryDto.setQualitity(actualStockInQuantity);
+ if (qualityInspect.getCheckTime() != null) {
+ LocalDate stockCreateDate = DateUtils.toLocalDate(qualityInspect.getCheckTime()).plusDays(1);
+ stockInventoryDto.setCreateTime(LocalDateTime.of(stockCreateDate, java.time.LocalTime.MIDNIGHT));
+ }
stockInventoryDto.setBatchNo(resolveProductionBatchNo(
qualityInspect.getProductMainId(),
qualityInspect.getId(),
qualityInspect.getProductModelId()));
stockInventoryService.addStockInRecordOnly(stockInventoryDto);
}
+ // 涓嶅悎鏍煎鐞�
if(qualityInspect.getUnqualifiedQuantity().compareTo(BigDecimal.ZERO) > 0){
QualityUnqualified qualityUnqualified = new QualityUnqualified();
BeanUtils.copyProperties(qualityInspect, qualityUnqualified);
@@ -126,12 +198,225 @@
String text = inspectParams.stream().map(QualityInspectParam::getParameterItem).collect(Collectors.joining(","));
qualityUnqualified.setDefectivePhenomena(text + "杩欎簺鎸囨爣涓瓨鍦ㄤ笉鍚堟牸");//涓嶅悎鏍肩幇璞�
qualityUnqualified.setInspectId(qualityInspect.getId());
- qualityUnqualified.setId(null);
qualityUnqualifiedMapper.insert(qualityUnqualified);
}
qualityInspect.setInspectState(1);//宸叉彁浜�
return qualityInspectMapper.updateById(qualityInspect);
+ }
+
+ @Override
+ public R autoSubmit(Long id) {
+ if (id == null) {
+ return R.fail("妫�楠屽崟ID涓嶈兘涓虹┖");
+ }
+ QualityInspect qualityInspect = qualityInspectMapper.selectById(id);
+ if (qualityInspect == null) {
+ return R.fail("妫�楠屽崟涓嶅瓨鍦�");
+ }
+ if (Integer.valueOf(1).equals(qualityInspect.getInspectState())) {
+ return R.ok("妫�楠屽崟宸叉彁浜�");
+ }
+
+ if (ObjectUtils.isNull(qualityInspect.getCheckResult())) {
+ qualityInspect.setCheckResult("鍚堟牸");
+ }
+ if (ObjectUtils.isNull(qualityInspect.getQualifiedQuantity())) {
+ qualityInspect.setQualifiedQuantity(qualityInspect.getQuantity() == null ? BigDecimal.ZERO : qualityInspect.getQuantity());
+ }
+ if (ObjectUtils.isNull(qualityInspect.getUnqualifiedQuantity())) {
+ qualityInspect.setUnqualifiedQuantity(BigDecimal.ZERO);
+ }
+ qualityInspectMapper.updateById(qualityInspect);
+ int rows = submit(qualityInspect);
+ return rows > 0 ? R.ok("妫�楠屽崟鎻愪氦鎴愬姛") : R.fail("妫�楠屽崟鎻愪氦澶辫触");
+ }
+
+ @Override
+ public R batchQuickInspect(BatchQuickInspectRequest request) {
+ // 1. 鏁版嵁鏍¢獙
+ if (request.getIds() == null || request.getIds().isEmpty()) {
+ return R.fail("璇烽�夋嫨鑷冲皯涓�鏉℃楠屽崟");
+ }
+ List<String> validResults = Arrays.asList("鍚堟牸", "涓嶅悎鏍�", "閮ㄥ垎鍚堟牸");
+ if (!validResults.contains(request.getCheckResult())) {
+ return R.fail("妫�娴嬬粨鏋滃繀椤讳负锛氬悎鏍笺�佷笉鍚堟牸銆侀儴鍒嗗悎鏍�");
+ }
+ if (request.getTestStandardId() == null) {
+ return R.fail("鎸囨爣鏍囧噯ID涓嶈兘涓虹┖");
+ }
+
+ String checkResult = request.getCheckResult();
+
+ // 瑙f瀽妫�娴嬫棩鏈�
+ Date checkTimeDate = null;
+ if (request.getCheckTime() != null && !request.getCheckTime().isEmpty()) {
+ checkTimeDate = Date.valueOf(LocalDate.parse(request.getCheckTime()));
+ }
+
+ int success = 0;
+ List<String> errors = new ArrayList<>();
+
+ for (Long id : request.getIds()) {
+ try {
+ processSingleInspect(id, request, checkResult, checkTimeDate);
+ success++;
+ } catch (Exception e) {
+ errors.add("妫�楠屽崟 " + id + " 澶勭悊澶辫触锛�" + e.getMessage());
+ }
+ }
+
+ if (!errors.isEmpty()) {
+ return R.ok(String.format("蹇�熸楠屽畬鎴愶細鎴愬姛 %d 鏉★紝澶辫触 %d 鏉°�傚け璐ュ師鍥狅細%s",
+ success, errors.size(), String.join("锛�", errors)));
+ }
+ return R.ok(String.format("蹇�熸楠屽畬鎴愶細鎴愬姛 %d 鏉�", success));
+ }
+
+ /**
+ * 鍦ㄧ嫭绔嬩簨鍔′腑澶勭悊鍗曚釜妫�楠屽崟
+ * 鏀寔鍏ㄦ鍜屾娊妫�妯″紡锛�
+ * - 鍏ㄦ锛氭暟閲忋�佸悎鏍兼暟閲忛粯璁や娇鐢ㄦ楠屽崟鑷韩鐨勬暟閲忥紝涓嶅悎鏍兼暟閲忎负0
+ * - 鎶芥锛氫娇鐢ㄥ墠绔紶鍏ョ殑 sampleQuantity/qualifiedQuantity/unqualifiedQuantity
+ */
+ @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRES_NEW)
+ public void processSingleInspect(Long id, BatchQuickInspectRequest request,
+ String checkResult, Date checkTimeDate) {
+ QualityInspect qualityInspect = qualityInspectMapper.selectById(id);
+ if (qualityInspect == null) {
+ throw new RuntimeException("妫�楠屽崟涓嶅瓨鍦�");
+ }
+ if (Integer.valueOf(1).equals(qualityInspect.getInspectState())) {
+ throw new RuntimeException("妫�楠屽崟宸叉彁浜�");
+ }
+
+ // 鍒ゆ柇妫�楠岃鍒欙細鍏ㄦ(0/null) 鎴� 鎶芥(1)
+ Integer inspectRule = qualityInspect.getInspectRule();
+ boolean isFullInspect = inspectRule == null || inspectRule == 0;
+
+ BigDecimal totalQty = qualityInspect.getQuantity() != null ? qualityInspect.getQuantity() : BigDecimal.ZERO;
+ BigDecimal sampleQty;
+ BigDecimal qualified;
+ BigDecimal unqualified;
+
+ if (isFullInspect) {
+ // 鍏ㄦ妯″紡锛氭楠屾暟閲� = 鎬绘暟閲�
+ sampleQty = totalQty;
+ // 濡傛灉鍓嶇浼犲叆浜嗗悎鏍�/涓嶅悎鏍兼暟閲忓垯浣跨敤锛屽惁鍒欓粯璁ゅ叏閮ㄥ悎鏍�
+ if (request.getQualifiedQuantity() != null && request.getUnqualifiedQuantity() != null) {
+ qualified = request.getQualifiedQuantity();
+ unqualified = request.getUnqualifiedQuantity();
+ } else {
+ qualified = totalQty;
+ unqualified = BigDecimal.ZERO;
+ }
+ } else {
+ // 鎶芥妯″紡
+ // 鎶芥鏁伴噺锛氫紭鍏堜娇鐢ㄥ墠绔紶鍏ュ�硷紝鍏舵浣跨敤妫�楠屽崟宸叉湁鐨� sampleQuantity锛屾渶鍚庢寜姣斾緥璁$畻
+ if (request.getSampleQuantity() != null && request.getSampleQuantity().compareTo(BigDecimal.ZERO) > 0) {
+ sampleQty = request.getSampleQuantity();
+ } else if (qualityInspect.getSampleQuantity() != null && qualityInspect.getSampleQuantity().compareTo(BigDecimal.ZERO) > 0) {
+ sampleQty = qualityInspect.getSampleQuantity();
+ } else {
+ // 鎸夋娊妫�姣斾緥璁$畻
+ BigDecimal ratio = qualityInspect.getSampleRatio() != null ? qualityInspect.getSampleRatio() : BigDecimal.ZERO;
+ sampleQty = totalQty.multiply(ratio)
+ .divide(BigDecimal.valueOf(100), 0, BigDecimal.ROUND_CEILING);
+ }
+ // 鏍¢獙鎶芥鏁伴噺涓嶈兘瓒呰繃鎬绘暟閲�
+ if (sampleQty.compareTo(totalQty) > 0) {
+ sampleQty = totalQty;
+ }
+
+ // 鍚堟牸/涓嶅悎鏍兼暟閲忥細浼樺厛浣跨敤鍓嶇浼犲叆鍊�
+ if (request.getQualifiedQuantity() != null || request.getUnqualifiedQuantity() != null) {
+ qualified = request.getQualifiedQuantity() != null ? request.getQualifiedQuantity() : BigDecimal.ZERO;
+ unqualified = request.getUnqualifiedQuantity() != null ? request.getUnqualifiedQuantity() : BigDecimal.ZERO;
+ } else {
+ // 榛樿鎶芥鏍锋湰鍏ㄩ儴鍚堟牸
+ qualified = sampleQty;
+ unqualified = BigDecimal.ZERO;
+ }
+ }
+
+ // 2. 鏇存柊妫�楠屽崟瀛楁
+ qualityInspect.setCheckResult(checkResult);
+ qualityInspect.setTestStandardId(request.getTestStandardId());
+ // 璁板綍瀹為檯妫�楠屾暟閲忥紙鎶芥鏃朵负鏍锋湰鏁伴噺锛屽叏妫�鏃朵负鎬绘暟閲忥級
+ qualityInspect.setQuantity(sampleQty);
+ qualityInspect.setQualifiedQuantity(qualified);
+ qualityInspect.setUnqualifiedQuantity(unqualified);
+ // 鏇存柊鎶芥鏁伴噺瀛楁
+ if (!isFullInspect) {
+ qualityInspect.setSampleQuantity(sampleQty);
+ }
+ if (request.getCheckCompany() != null) {
+ qualityInspect.setCheckCompany(request.getCheckCompany());
+ }
+ if (request.getCheckName() != null) {
+ qualityInspect.setCheckName(request.getCheckName());
+ }
+ if (checkTimeDate != null) {
+ qualityInspect.setCheckTime(checkTimeDate);
+ }
+ qualityInspect.setInspectState(1);
+
+ // 3. 淇濆瓨妫�楠屽弬鏁�
+ if (request.getParamList() != null && !request.getParamList().isEmpty()) {
+ qualityInspectParamService.remove(Wrappers.<QualityInspectParam>lambdaQuery()
+ .eq(QualityInspectParam::getInspectId, id));
+ for (QualityInspectParam param : request.getParamList()) {
+ param.setInspectId(id);
+ param.setId(null);
+ }
+ qualityInspectParamService.saveBatch(request.getParamList());
+ }
+
+ // 4. 鏇存柊妫�楠屽崟
+ qualityInspectMapper.updateById(qualityInspect);
+
+ // 5. 鍚堟牸鍏ュ簱澶勭悊
+ if (qualified.compareTo(BigDecimal.ZERO) > 0) {
+ StockInventoryDto stockInventoryDto = new StockInventoryDto();
+ stockInventoryDto.setRecordType(String.valueOf(StockInQualifiedRecordTypeEnum.QUALITYINSPECT_STOCK_IN.getCode()));
+ if (ObjectUtils.isNotEmpty(qualityInspect.getPurchaseLedgerId())) {
+ stockInventoryDto.setRecordType(String.valueOf(StockInQualifiedRecordTypeEnum.CUSTOMIZATION_UNSTOCK_OUT.getCode()));
+ }
+ stockInventoryDto.setRecordId(qualityInspect.getId());
+ stockInventoryDto.setProductModelId(qualityInspect.getProductModelId());
+ // 鍏ュ簱鏁伴噺 = 鍚堟牸鏁伴噺 * 鍏ュ簱姣斾緥 / 100锛屽叆搴撴瘮渚嬮粯璁�100%
+ BigDecimal stockInRatio = qualityInspect.getStockInRatio();
+ if (stockInRatio == null || stockInRatio.compareTo(BigDecimal.ZERO) <= 0) {
+ stockInRatio = new BigDecimal("100.00");
+ }
+ BigDecimal actualStockInQuantity = qualified
+ .multiply(stockInRatio)
+ .divide(new BigDecimal("100"), 2, BigDecimal.ROUND_HALF_UP);
+ stockInventoryDto.setQualitity(actualStockInQuantity);
+ if (qualityInspect.getCheckTime() != null) {
+ LocalDate stockCreateDate = DateUtils.toLocalDate(qualityInspect.getCheckTime()).plusDays(1);
+ stockInventoryDto.setCreateTime(LocalDateTime.of(stockCreateDate, java.time.LocalTime.MIDNIGHT));
+ }
+ stockInventoryDto.setBatchNo(resolveProductionBatchNo(
+ qualityInspect.getProductMainId(),
+ qualityInspect.getId(),
+ qualityInspect.getProductModelId()));
+ stockInventoryService.addStockInRecordOnly(stockInventoryDto);
+ }
+
+ // 6. 涓嶅悎鏍煎鐞�
+ if (unqualified.compareTo(BigDecimal.ZERO) > 0) {
+ QualityUnqualified qualityUnqualified = new QualityUnqualified();
+ BeanUtils.copyProperties(qualityInspect, qualityUnqualified);
+ qualityUnqualified.setInspectState(0);
+ qualityUnqualified.setQuantity(unqualified);
+ List<QualityInspectParam> inspectParams = qualityInspectParamService.list(
+ Wrappers.<QualityInspectParam>lambdaQuery().eq(QualityInspectParam::getInspectId, id));
+ String text = inspectParams.stream().map(QualityInspectParam::getParameterItem).collect(Collectors.joining(","));
+ qualityUnqualified.setDefectivePhenomena(text + "杩欎簺鎸囨爣涓瓨鍦ㄤ笉鍚堟牸");
+ qualityUnqualified.setInspectId(id);
+ qualityUnqualifiedMapper.insert(qualityUnqualified);
+ }
}
private String resolveProductionBatchNo(Long productionProductMainId,
@@ -260,5 +545,111 @@
}
+ @Override
+ public void exportWeiLong(HttpServletResponse response, Long id) {
+ qualityInspectTemplateExportHelper.exportWeiLong(response, id);
+ }
+
+ @Override
+ public void exportBaiShi(HttpServletResponse response, Long id) {
+ qualityInspectTemplateExportHelper.exportBaiShi(response, id);
+ }
+
+ @Override
+ public void exportDaLi(HttpServletResponse response, Long id) {
+ qualityInspectTemplateExportHelper.exportDaLi(response, id);
+ }
+
+ @Override
+ public String analyzeTemplate(String templatePath) {
+ 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 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;
+ }
+ }
+ paramResults.add(paramResult);
+ }
+
+ response.setParamResults(paramResults);
+ response.setHasRequiredUnqualified(hasRequiredUnqualified);
+ response.setAllTextDescription(allTextDescription);
+
+ // 纭畾鏁翠綋鍒ゆ柇缁撴灉
+ if (allTextDescription) {
+ response.setAutoJudgeResult(null);
+ } else if (hasRequiredUnqualified) {
+ 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