diff --git a/op-modules/op-quality/src/main/java/com/op/quality/controller/QcCheckTaskIncomeController.java b/op-modules/op-quality/src/main/java/com/op/quality/controller/QcCheckTaskIncomeController.java index 20a5df32..8fd19107 100644 --- a/op-modules/op-quality/src/main/java/com/op/quality/controller/QcCheckTaskIncomeController.java +++ b/op-modules/op-quality/src/main/java/com/op/quality/controller/QcCheckTaskIncomeController.java @@ -1,14 +1,18 @@ package com.op.quality.controller; +import java.math.BigDecimal; import java.time.LocalDate; import java.time.format.DateTimeFormatter; +import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.stream.Collectors; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.alibaba.fastjson2.JSONObject; +import com.baomidou.dynamic.datasource.annotation.DS; import com.op.common.core.domain.R; import com.op.common.core.utils.DateUtils; import com.op.common.core.utils.bean.BeanUtils; @@ -20,6 +24,7 @@ import com.op.system.api.domain.SysUser; import com.op.system.api.domain.quality.QcCheckTaskIncomeDTO; import org.apache.commons.lang.StringUtils; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.util.CollectionUtils; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PutMapping; @@ -262,9 +267,37 @@ public class QcCheckTaskIncomeController extends BaseController { } /**检测结果提交**/ @PutMapping("/commitCheckResult") + @DS("#header.poolName") public AjaxResult commitCheckResult(@RequestBody QcCheckTaskIncome qcCheckTaskIncome) { qcCheckTaskIncome.setUpdateBy(SecurityUtils.getUsername()); qcCheckTaskIncome.setUpdateTime(DateUtils.getNowDate()); + qcCheckTaskIncome.setUpdateByName(SecurityUtils.getLoginUser().getSysUser().getNickName()); + HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); + String key = "#header.poolName"; + qcCheckTaskIncome.setFactoryCode(request.getHeader(key.substring(8)).replace("ds_","")); + //获取defectList + List details = qcCheckTaskIncome.getQcCheckTaskDetails(); + if (CollectionUtils.isEmpty(qcCheckTaskIncome.getDefects())) { + List defectList = new ArrayList<>(); + Map> groupedByDefectCode = details.stream() + .filter(detail -> detail.getDefectCode() != null) // 过滤掉defectCode为null的数据 + .collect(Collectors.groupingBy(QcCheckTaskDetail::getDefectCode)); + defectList = groupedByDefectCode.entrySet().stream() + .map(entry -> { + String defectCode = entry.getKey(); + List detailsWithSameCode = entry.getValue(); + BigDecimal sum = detailsWithSameCode.stream() + .map(QcCheckTaskDetail::getDefectQuality) + .reduce(BigDecimal::add) // 使用summingBigDecimal()方法来求和,该方法内部实际上使用reduce()来实现 + .orElse(BigDecimal.ZERO); + QcCheckTaskDefect taskDefect = new QcCheckTaskDefect(); + taskDefect.setDefectCode(defectCode); + taskDefect.setNoOkQuality(sum); + return taskDefect; + }) + .collect(Collectors.toList()); + qcCheckTaskIncome.setDefects(defectList); + } return toAjax(qcCheckTaskIncomeService.commitCheckResults(qcCheckTaskIncome)); } diff --git a/op-modules/op-quality/src/main/java/com/op/quality/domain/QcCheckTaskDetail.java b/op-modules/op-quality/src/main/java/com/op/quality/domain/QcCheckTaskDetail.java index ee082dcd..d66eace7 100644 --- a/op-modules/op-quality/src/main/java/com/op/quality/domain/QcCheckTaskDetail.java +++ b/op-modules/op-quality/src/main/java/com/op/quality/domain/QcCheckTaskDetail.java @@ -95,6 +95,7 @@ public class QcCheckTaskDetail extends BaseEntity { private List actualValues; private String typeProjectId; private String defectCode; + private BigDecimal defectQuality; private String checkType; private String fileListStr; private List files; @@ -360,6 +361,14 @@ public class QcCheckTaskDetail extends BaseEntity { return delFlag; } + public BigDecimal getDefectQuality() { + return defectQuality; + } + + public void setDefectQuality(BigDecimal defectQuality) { + this.defectQuality = defectQuality; + } + @Override public String toString() { return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) diff --git a/op-modules/op-quality/src/main/resources/mapper/quality/QcCheckTaskDetailMapper.xml b/op-modules/op-quality/src/main/resources/mapper/quality/QcCheckTaskDetailMapper.xml index 90388610..9f454b2d 100644 --- a/op-modules/op-quality/src/main/resources/mapper/quality/QcCheckTaskDetailMapper.xml +++ b/op-modules/op-quality/src/main/resources/mapper/quality/QcCheckTaskDetailMapper.xml @@ -168,6 +168,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" factory_code = #{factoryCode}, del_flag = #{delFlag}, defect_code = #{defectCode}, + defect_quality = #{defectQuality}, where record_id = #{recordId} diff --git a/op-modules/op-quality/src/main/resources/mapper/quality/QcCheckTaskIncomeMapper.xml b/op-modules/op-quality/src/main/resources/mapper/quality/QcCheckTaskIncomeMapper.xml index 49734a0d..71556d60 100644 --- a/op-modules/op-quality/src/main/resources/mapper/quality/QcCheckTaskIncomeMapper.xml +++ b/op-modules/op-quality/src/main/resources/mapper/quality/QcCheckTaskIncomeMapper.xml @@ -78,6 +78,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" and qct.check_type = #{checkType} and qct.type_code = #{typeCode} + order by qct.create_time DESC