Merge remote-tracking branch 'origin/test' into test

This commit is contained in:
shusir
2026-01-26 09:03:02 +08:00
15 changed files with 341 additions and 226 deletions

37
pom.xml
View File

@@ -18,6 +18,9 @@
<properties> <properties>
<revision>3.0.47-SNAPSHOT</revision> <revision>3.0.47-SNAPSHOT</revision>
<!-- qms服务相关 -->
<zzjc.tio.version>3.9.1.v20251204-RELEASE</zzjc.tio.version>
<liteflow.version>2.15.3</liteflow.version>
<!-- Maven 相关 --> <!-- Maven 相关 -->
<java.version>17</java.version> <java.version>17</java.version>
<maven.compiler.source>${java.version}</maven.compiler.source> <maven.compiler.source>${java.version}</maven.compiler.source>
@@ -41,6 +44,40 @@
<type>pom</type> <type>pom</type>
<scope>import</scope> <scope>import</scope>
</dependency> </dependency>
<!-- liteflow -->
<dependency>
<groupId>com.yomahub</groupId>
<artifactId>liteflow-spring-boot-starter</artifactId>
<version>${liteflow.version}</version>
</dependency>
<dependency>
<groupId>com.yomahub</groupId>
<artifactId>liteflow-script-javax-pro</artifactId>
<version>${liteflow.version}</version>
</dependency>
<dependency>
<groupId>com.yomahub</groupId>
<artifactId>liteflow-script-groovy</artifactId>
<version>${liteflow.version}</version>
</dependency>
<dependency>
<groupId>com.yomahub</groupId>
<artifactId>liteflow-script-qlexpress</artifactId>
<version>${liteflow.version}</version>
</dependency>
<dependency>
<groupId>com.yomahub</groupId>
<artifactId>liteflow-script-graaljs</artifactId>
<version>${liteflow.version}</version>
</dependency>
<!-- tio -->
<dependency>
<groupId>tech.zzjc.tio</groupId>
<artifactId>zzjc-tio-spring-boot-starter</artifactId>
<version>${zzjc.tio.version}</version>
</dependency>
</dependencies> </dependencies>
</dependencyManagement> </dependencyManagement>

View File

@@ -16,10 +16,7 @@
<description> <description>
QMS模块。 QMS模块。
</description> </description>
<properties>
<zzjc.tio.version>3.9.1.v20251204-RELEASE</zzjc.tio.version>
<liteflow.version>2.15.2</liteflow.version>
</properties>
<dependencies> <dependencies>
<!-- Spring Cloud 基础 --> <!-- Spring Cloud 基础 -->
<dependency> <dependency>
@@ -142,27 +139,22 @@
<dependency> <dependency>
<groupId>com.yomahub</groupId> <groupId>com.yomahub</groupId>
<artifactId>liteflow-spring-boot-starter</artifactId> <artifactId>liteflow-spring-boot-starter</artifactId>
<version>${liteflow.version}</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>com.yomahub</groupId> <groupId>com.yomahub</groupId>
<artifactId>liteflow-script-javax-pro</artifactId> <artifactId>liteflow-script-javax-pro</artifactId>
<version>${liteflow.version}</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>com.yomahub</groupId> <groupId>com.yomahub</groupId>
<artifactId>liteflow-script-groovy</artifactId> <artifactId>liteflow-script-groovy</artifactId>
<version>${liteflow.version}</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>com.yomahub</groupId> <groupId>com.yomahub</groupId>
<artifactId>liteflow-script-qlexpress</artifactId> <artifactId>liteflow-script-qlexpress</artifactId>
<version>${liteflow.version}</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>com.yomahub</groupId> <groupId>com.yomahub</groupId>
<artifactId>liteflow-script-graaljs</artifactId> <artifactId>liteflow-script-graaljs</artifactId>
<version>${liteflow.version}</version>
</dependency> </dependency>
<!-- pdfbox --> <!-- pdfbox -->
@@ -199,7 +191,6 @@
<dependency> <dependency>
<groupId>tech.zzjc.tio</groupId> <groupId>tech.zzjc.tio</groupId>
<artifactId>zzjc-tio-spring-boot-starter</artifactId> <artifactId>zzjc-tio-spring-boot-starter</artifactId>
<version>${zzjc.tio.version}</version>
</dependency> </dependency>
</dependencies> </dependencies>

View File

@@ -12,6 +12,7 @@ import com.zt.plat.framework.business.interceptor.BusinessControllerMarker;
import com.zt.plat.framework.common.pojo.CommonResult; import com.zt.plat.framework.common.pojo.CommonResult;
import com.zt.plat.framework.datapermission.core.annotation.DeptDataPermissionIgnore; import com.zt.plat.framework.datapermission.core.annotation.DeptDataPermissionIgnore;
import com.zt.plat.module.qms.business.bus.controller.vo.*; import com.zt.plat.module.qms.business.bus.controller.vo.*;
import com.zt.plat.module.qms.business.bus.controller.vo.BatchAssessmentDataReportingReqVO.BusinessSubSampleIdAndRetestCount;
import com.zt.plat.module.qms.business.bus.service.SampleAnalysisAuditService; import com.zt.plat.module.qms.business.bus.service.SampleAnalysisAuditService;
import com.zt.plat.module.qms.enums.QmsCommonConstant; import com.zt.plat.module.qms.enums.QmsCommonConstant;
@@ -39,7 +40,7 @@ public class SampleAnalysisAuditController implements BusinessControllerMarker {
*/ */
@PostMapping("/crossAudit") @PostMapping("/crossAudit")
public CommonResult<?> crossAudit(Long businessAssayTaskId, String auditStatus) { public CommonResult<?> crossAudit(Long businessAssayTaskId, String auditStatus) {
sampleAnalysisAuditService.crossAuditByByTaskId(businessAssayTaskId, auditStatus); sampleAnalysisAuditService.crossAuditByTaskId(businessAssayTaskId, auditStatus);
return success("成功"); return success("成功");
} }
@@ -88,23 +89,23 @@ public class SampleAnalysisAuditController implements BusinessControllerMarker {
//判定数据上报 //判定数据上报
@PostMapping("/assessmentDataReporting") @PostMapping("/assessmentDataReporting")
public CommonResult<?> assessmentDataReporting(Long businessSubSampleId, Long configAssayMethodId) { public CommonResult<?> assessmentDataReporting(Long businessSubSampleId, Long configAssayMethodId, Integer retestCount) {
sampleAnalysisAuditService.assessmentDataReporting(businessSubSampleId, configAssayMethodId); sampleAnalysisAuditService.assessmentDataReporting(businessSubSampleId, configAssayMethodId, retestCount);
return success("成功"); return success("成功");
} }
@PostMapping("/batchAssessmentDataReporting") @PostMapping("/batchAssessmentDataReporting")
public CommonResult<?> batchAssessmentDataReporting(@RequestBody BatchAssessmentDataReportingReqVO reqVO) { public CommonResult<?> batchAssessmentDataReporting(@RequestBody BatchAssessmentDataReportingReqVO reqVO) {
for (Long businessSubSampleId : reqVO.getBusinessSubSampleIds()) { for (BusinessSubSampleIdAndRetestCount businessSubSampleIdAndRetestCount : reqVO.getBusinessSubSampleIdAndRetestCounts()) {
sampleAnalysisAuditService.assessmentDataReporting(businessSubSampleId, reqVO.getConfigAssayMethodId()); sampleAnalysisAuditService.assessmentDataReporting(businessSubSampleIdAndRetestCount.getBusinessSubSampleId(), reqVO.getConfigAssayMethodId(), businessSubSampleIdAndRetestCount.getRetestCount());
} }
return success("成功"); return success("成功");
} }
//重新创建复检委托 //重新创建复检委托
@PostMapping("/createReAnalysis") @PostMapping("/createReAnalysis")
public CommonResult<?> createReAnalysis(Long businessSubSampleId, Long configAssayMethodId) { public CommonResult<?> createReAnalysis(Long businessSubSampleId, Long configAssayMethodId, Integer retestCount) {
sampleAnalysisAuditService.createReAnalysis(businessSubSampleId, configAssayMethodId); sampleAnalysisAuditService.createReAnalysis(businessSubSampleId, configAssayMethodId, retestCount);
return success("成功"); return success("成功");
} }

View File

@@ -41,7 +41,7 @@ public class SampleReportDataQueryController {
@Operation(summary = "委托单详情数据") @Operation(summary = "委托单详情数据")
@GetMapping("/crossAuditByTaskId") @GetMapping("/crossAuditByTaskId")
public CommonResult<?> crossAuditByTaskId(Long businessAssayTaskId) { public CommonResult<?> crossAuditByTaskId(Long businessAssayTaskId) {
JSONObject result = sampleAnalysisAuditService.crossAuditByTaskId(businessAssayTaskId); JSONObject result = sampleAnalysisAuditService.getCrossAuditDataByTaskId(businessAssayTaskId);
return success(result); return success(result);
} }
} }

View File

@@ -1,13 +1,35 @@
package com.zt.plat.module.qms.business.bus.controller.vo; package com.zt.plat.module.qms.business.bus.controller.vo;
import java.util.List; import java.util.List;
import java.util.stream.Collectors;
import cn.hutool.core.collection.CollUtil;
import lombok.AllArgsConstructor;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor;
@Data @Data
public class BatchAssessmentDataReportingReqVO { public class BatchAssessmentDataReportingReqVO {
private List<Long> businessSubSampleIds; private List<BusinessSubSampleIdAndRetestCount> businessSubSampleIdAndRetestCounts;
public List<Long> getBusinessSubSampleIds() {
if (CollUtil.isEmpty(this.businessSubSampleIdAndRetestCounts)) {
return null;
}
return this.businessSubSampleIdAndRetestCounts.stream().map(m -> m.getBusinessSubSampleId()).collect(Collectors.toList());
}
private Long configAssayMethodId; private Long configAssayMethodId;
@Data
@NoArgsConstructor
@AllArgsConstructor
public static class BusinessSubSampleIdAndRetestCount {
private Long businessSubSampleId;
private Integer retestCount;
}
} }

View File

@@ -1,13 +1,34 @@
package com.zt.plat.module.qms.business.bus.controller.vo; package com.zt.plat.module.qms.business.bus.controller.vo;
import java.util.List; import java.util.List;
import java.util.stream.Collectors;
import cn.hutool.core.collection.CollUtil;
import lombok.AllArgsConstructor;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor;
@Data @Data
public class BatchResultDataReportingReqVO { public class BatchResultDataReportingReqVO {
private List<Long> businessSubParentSampleIds; private List<BusinessSubParentSampleIdAndRetestCount> businessSubParentSampleIdAndRetestCounts;
private Long configAssayMethodId; private Long configAssayMethodId;
public List<Long> getBusinessSubParentSampleIds() {
if (CollUtil.isEmpty(this.businessSubParentSampleIdAndRetestCounts)) {
return null;
}
return this.businessSubParentSampleIdAndRetestCounts.stream().map(m -> m.getBusinessSubParentSampleId()).collect(Collectors.toList());
}
@Data
@NoArgsConstructor
@AllArgsConstructor
public static class BusinessSubParentSampleIdAndRetestCount {
private Long businessSubParentSampleId;
private Integer retestCount;
}
} }

View File

@@ -19,6 +19,9 @@ public class BusinessSubParentSampleAssessmentProjectRespVO {
@Schema(description = "样品分样ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "23188") @Schema(description = "样品分样ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "23188")
@ExcelProperty("样品分样ID") @ExcelProperty("样品分样ID")
private Long businessSubParentSampleId; private Long businessSubParentSampleId;
@Schema(description = "班组判定数据业务ID")
private Long businessSubParentSampleAssessmentId;
@Schema(description = "检测项目ID,字典表【T_DIC_PRJ】", requiredMode = Schema.RequiredMode.REQUIRED, example = "17642") @Schema(description = "检测项目ID,字典表【T_DIC_PRJ】", requiredMode = Schema.RequiredMode.REQUIRED, example = "17642")
@ExcelProperty("检测项目ID,字典表【T_DIC_PRJ】") @ExcelProperty("检测项目ID,字典表【T_DIC_PRJ】")

View File

@@ -441,16 +441,18 @@ public interface BusinessAssayTaskDataMapper extends BaseMapperX<BusinessAssayTa
* @param excludeIds 排除的id列表 * @param excludeIds 排除的id列表
* @param businessSubSampleId 子样id * @param businessSubSampleId 子样id
* @param configAssayMethodId 分析方法id * @param configAssayMethodId 分析方法id
* @param retestCount 复测次数
* @param isReported 是否上报 * @param isReported 是否上报
* @return * @return
*/ */
default List<BusinessAssayTaskDataDO> selectIsReportedList(List<Long> excludeIds, Long businessSubSampleId, Long configAssayMethodId, Integer isReported) { default List<BusinessAssayTaskDataDO> selectIsReportedList(List<Long> excludeIds, Long businessSubSampleId, Long configAssayMethodId, Integer retestCount, Integer isReported) {
LambdaQueryWrapper<BusinessAssayTaskDataDO> queryWrapper = new LambdaQueryWrapperX<BusinessAssayTaskDataDO>(); LambdaQueryWrapper<BusinessAssayTaskDataDO> queryWrapper = new LambdaQueryWrapperX<BusinessAssayTaskDataDO>();
if (CollUtil.isNotEmpty(excludeIds)) { if (CollUtil.isNotEmpty(excludeIds)) {
queryWrapper.notIn(BusinessAssayTaskDataDO::getId, excludeIds); queryWrapper.notIn(BusinessAssayTaskDataDO::getId, excludeIds);
} }
queryWrapper.eq(BusinessAssayTaskDataDO::getBusinessSubSampleId, businessSubSampleId) queryWrapper.eq(BusinessAssayTaskDataDO::getBusinessSubSampleId, businessSubSampleId)
.eq(BusinessAssayTaskDataDO::getConfigAssayMethodId, configAssayMethodId) .eq(BusinessAssayTaskDataDO::getConfigAssayMethodId, configAssayMethodId)
.eq(BusinessAssayTaskDataDO::getRetestCount, retestCount)
.eq(BusinessAssayTaskDataDO::getIsReported, isReported); .eq(BusinessAssayTaskDataDO::getIsReported, isReported);
return selectList(queryWrapper); return selectList(queryWrapper);
} }

View File

@@ -45,10 +45,11 @@ public interface BusinessSubParentSampleAssessmentMapper extends BaseMapperX<Bus
.in(BusinessSubParentSampleAssessmentDO::getBusinessSubParentSampleId, businessSubParentSampleIds)); .in(BusinessSubParentSampleAssessmentDO::getBusinessSubParentSampleId, businessSubParentSampleIds));
} }
default BusinessSubParentSampleAssessmentDO selectByBusinessSubParentSampleIdAndConfigAssayMethodId(Long businessSubParentSampleId, Long configAssayMethodId) { default BusinessSubParentSampleAssessmentDO selectByBusinessSubParentSampleIdAndConfigAssayMethodIdAndRetestCount(Long businessSubParentSampleId, Long configAssayMethodId, Integer retestCount) {
return selectOne(new LambdaQueryWrapperX<BusinessSubParentSampleAssessmentDO>() return selectOne(new LambdaQueryWrapperX<BusinessSubParentSampleAssessmentDO>()
.eq(BusinessSubParentSampleAssessmentDO::getBusinessSubParentSampleId, businessSubParentSampleId) .eq(BusinessSubParentSampleAssessmentDO::getBusinessSubParentSampleId, businessSubParentSampleId)
.eq(BusinessSubParentSampleAssessmentDO::getConfigAssayMethodId, configAssayMethodId)); .eq(BusinessSubParentSampleAssessmentDO::getConfigAssayMethodId, configAssayMethodId)
.eq(BusinessSubParentSampleAssessmentDO::getRetestCount, retestCount));
} }
default List<BusinessSubParentSampleAssessmentExtendRespVO> selectByBusinessSubParentSampleIdsAndConfigAssayMethodId(List<Long> businessSubParentSampleIds, Long configAssayMethodId) { default List<BusinessSubParentSampleAssessmentExtendRespVO> selectByBusinessSubParentSampleIdsAndConfigAssayMethodId(List<Long> businessSubParentSampleIds, Long configAssayMethodId) {

View File

@@ -50,12 +50,14 @@ public interface BusinessSubSampleAssessmentMapper extends BaseMapperX<BusinessS
.eq(BusinessSubSampleAssessmentDO::getConfigAssayMethodId, configAssayMethodId)); .eq(BusinessSubSampleAssessmentDO::getConfigAssayMethodId, configAssayMethodId));
} }
default BusinessSubSampleAssessmentDO selectByBusinessSubSampleIdAndConfigAssayMethodId(Long businessSubSampleId, Long configAssayMethodId) { default BusinessSubSampleAssessmentDO selectByBusinessSubSampleIdAndConfigAssayMethodIdAndRetestCount(Long businessSubSampleId, Long configAssayMethodId, Integer retestCount) {
return selectOne(new LambdaQueryWrapperX<BusinessSubSampleAssessmentDO>() return selectOne(new LambdaQueryWrapperX<BusinessSubSampleAssessmentDO>()
.eq(BusinessSubSampleAssessmentDO::getBusinessSubSampleId, businessSubSampleId) .eq(BusinessSubSampleAssessmentDO::getBusinessSubSampleId, businessSubSampleId)
.eq(BusinessSubSampleAssessmentDO::getConfigAssayMethodId, configAssayMethodId)); .eq(BusinessSubSampleAssessmentDO::getConfigAssayMethodId, configAssayMethodId)
.eq(BusinessSubSampleAssessmentDO::getRetestCount, retestCount));
} }
@Deprecated
default List<BusinessSubSampleAssessmentDO> selectByBusinessSubSampleIdsAndConfigAssayMethodIdAndRetestCount(List<Long> businessSubSampleIds, Long configAssayMethodId, Integer retestCount) { default List<BusinessSubSampleAssessmentDO> selectByBusinessSubSampleIdsAndConfigAssayMethodIdAndRetestCount(List<Long> businessSubSampleIds, Long configAssayMethodId, Integer retestCount) {
return selectList(new LambdaQueryWrapperX<BusinessSubSampleAssessmentDO>() return selectList(new LambdaQueryWrapperX<BusinessSubSampleAssessmentDO>()
.in(BusinessSubSampleAssessmentDO::getBusinessSubSampleId, businessSubSampleIds) .in(BusinessSubSampleAssessmentDO::getBusinessSubSampleId, businessSubSampleIds)

View File

@@ -100,8 +100,11 @@ public interface BusinessSubSampleAssessmentProjectMapper extends BaseMapperX<Bu
.eq(BusinessSubSampleAssessmentProjectDO::getConfigAssayMethodId, configAssayMethodId)); .eq(BusinessSubSampleAssessmentProjectDO::getConfigAssayMethodId, configAssayMethodId));
} }
default List<BusinessSubSampleAssessmentProjectExtendRespVO> selectByBusinessSubSampleIdAndConfigAssayMethodId(Long businessSubSampleId, Long configAssayMethodId) { @Deprecated
default List<BusinessSubSampleAssessmentProjectExtendRespVO> selectByBusinessSubSampleIdAndConfigAssayMethodId(Long businessSubSampleId, Long configAssayMethodId) {
return selectJoinList(BusinessSubSampleAssessmentProjectExtendRespVO.class, new MPJLambdaWrapperX<BusinessSubSampleAssessmentProjectDO>() return selectJoinList(BusinessSubSampleAssessmentProjectExtendRespVO.class, new MPJLambdaWrapperX<BusinessSubSampleAssessmentProjectDO>()
.leftJoin(BusinessSubSampleAssessmentDO.class, BusinessSubSampleAssessmentDO::getId, BusinessSubSampleAssessmentProjectDO::getBusinessSubSampleAssessmentId)
.leftJoin(ConfigAssayMethodDO.class, ConfigAssayMethodDO::getId, BusinessSubSampleAssessmentProjectDO::getConfigAssayMethodId)
.leftJoin(ConfigAssayMethodProjectDO.class, ConfigAssayMethodProjectDO::getId, BusinessSubSampleAssessmentProjectDO::getConfigAssayMethodProjectId) .leftJoin(ConfigAssayMethodProjectDO.class, ConfigAssayMethodProjectDO::getId, BusinessSubSampleAssessmentProjectDO::getConfigAssayMethodProjectId)
.leftJoin(DictionaryProjectDO.class, DictionaryProjectDO::getId, BusinessSubSampleAssessmentProjectDO::getDictionaryProjectId) .leftJoin(DictionaryProjectDO.class, DictionaryProjectDO::getId, BusinessSubSampleAssessmentProjectDO::getDictionaryProjectId)
.selectAll(BusinessSubSampleAssessmentProjectDO.class) .selectAll(BusinessSubSampleAssessmentProjectDO.class)
@@ -113,6 +116,22 @@ public interface BusinessSubSampleAssessmentProjectMapper extends BaseMapperX<Bu
.eq(BusinessSubSampleAssessmentProjectDO::getConfigAssayMethodId, configAssayMethodId)); .eq(BusinessSubSampleAssessmentProjectDO::getConfigAssayMethodId, configAssayMethodId));
} }
default List<BusinessSubSampleAssessmentProjectExtendRespVO> selectByBusinessSubSampleIdAndConfigAssayMethodIdAndRetestCount(Long businessSubSampleId, Long configAssayMethodId, Integer retestCount) {
return selectJoinList(BusinessSubSampleAssessmentProjectExtendRespVO.class, new MPJLambdaWrapperX<BusinessSubSampleAssessmentProjectDO>()
.leftJoin(BusinessSubSampleAssessmentDO.class, BusinessSubSampleAssessmentDO::getId, BusinessSubSampleAssessmentProjectDO::getBusinessSubSampleAssessmentId)
.leftJoin(ConfigAssayMethodDO.class, ConfigAssayMethodDO::getId, BusinessSubSampleAssessmentProjectDO::getConfigAssayMethodId)
.leftJoin(ConfigAssayMethodProjectDO.class, ConfigAssayMethodProjectDO::getId, BusinessSubSampleAssessmentProjectDO::getConfigAssayMethodProjectId)
.leftJoin(DictionaryProjectDO.class, DictionaryProjectDO::getId, BusinessSubSampleAssessmentProjectDO::getDictionaryProjectId)
.selectAll(BusinessSubSampleAssessmentProjectDO.class)
.selectAs(ConfigAssayMethodProjectDO::getDictionaryProjectUnit, BusinessSubSampleAssessmentProjectExtendRespVO::getDictionaryProjectUnit)
.selectAs(DictionaryProjectDO::getKey, BusinessSubSampleAssessmentProjectExtendRespVO::getDictionaryProjectKey)
.selectAs(DictionaryProjectDO::getSimpleName, BusinessSubSampleAssessmentProjectExtendRespVO::getSimpleName)
.selectAs(DictionaryProjectDO::getShowName, BusinessSubSampleAssessmentProjectExtendRespVO::getShowName)
.eq(BusinessSubSampleAssessmentProjectDO::getBusinessSubSampleId, businessSubSampleId)
.eq(BusinessSubSampleAssessmentProjectDO::getConfigAssayMethodId, configAssayMethodId)
.eq(BusinessSubSampleAssessmentDO::getRetestCount, retestCount));
}
default BusinessSubSampleAssessmentProjectDO selectByBusinessSubSampleIdAndConfigAssayMethodIdAndConfigAssayMethodProjectId(Long businessSubSampleId, Long configAssayMethodId, Long configAssayMethodProjectId) { default BusinessSubSampleAssessmentProjectDO selectByBusinessSubSampleIdAndConfigAssayMethodIdAndConfigAssayMethodProjectId(Long businessSubSampleId, Long configAssayMethodId, Long configAssayMethodProjectId) {
return selectOne(new LambdaQueryWrapperX<BusinessSubSampleAssessmentProjectDO>() return selectOne(new LambdaQueryWrapperX<BusinessSubSampleAssessmentProjectDO>()
.eq(BusinessSubSampleAssessmentProjectDO::getBusinessSubSampleId, businessSubSampleId) .eq(BusinessSubSampleAssessmentProjectDO::getBusinessSubSampleId, businessSubSampleId)

View File

@@ -10,9 +10,9 @@ import com.zt.plat.module.qms.business.bus.controller.vo.BusinessAssayTaskDataRe
*/ */
public interface SampleAnalysisAuditService { public interface SampleAnalysisAuditService {
JSONObject crossAuditByTaskId(Long businessAssayTaskId); JSONObject getCrossAuditDataByTaskId(Long businessAssayTaskId);
void crossAuditByByTaskId(Long businessAssayTaskId, String auditStatus); void crossAuditByTaskId(Long businessAssayTaskId, String auditStatus);
JSONObject getSampleResultAssessmentList(BusinessAssayTaskDataReqVO reqVO); JSONObject getSampleResultAssessmentList(BusinessAssayTaskDataReqVO reqVO);
@@ -20,9 +20,9 @@ public interface SampleAnalysisAuditService {
JSONObject getDoubleCupResultAssessment(Long businessSubParentSampleId, Long configAssayMethodId); JSONObject getDoubleCupResultAssessment(Long businessSubParentSampleId, Long configAssayMethodId);
void assessmentDataReporting(Long businessSubSampleId, Long configAssayMethodId); void assessmentDataReporting(Long businessSubSampleId, Long configAssayMethodId, Integer retestCount);
void createReAnalysis(Long businessSubSampleId, Long configAssayMethodId); void createReAnalysis(Long businessSubSampleId, Long configAssayMethodId, Integer retestCount);
JSONObject modifyParallelResultAssessment(Long businessSubSampleId, Long configAssayMethodId, Long businessSubSampleAssessmentId, List<Long> businessAssayProjectDataIds); JSONObject modifyParallelResultAssessment(Long businessSubSampleId, Long configAssayMethodId, Long businessSubSampleAssessmentId, List<Long> businessAssayProjectDataIds);

View File

@@ -31,6 +31,7 @@ import com.zt.plat.framework.common.exception.ServiceException;
import com.zt.plat.framework.mybatis.core.query.LambdaQueryWrapperX; import com.zt.plat.framework.mybatis.core.query.LambdaQueryWrapperX;
import com.zt.plat.framework.security.core.util.SecurityFrameworkUtils; import com.zt.plat.framework.security.core.util.SecurityFrameworkUtils;
import com.zt.plat.module.qms.business.bus.controller.vo.*; import com.zt.plat.module.qms.business.bus.controller.vo.*;
import com.zt.plat.module.qms.business.bus.controller.vo.BatchResultDataReportingReqVO.BusinessSubParentSampleIdAndRetestCount;
import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessAssayParameterDataDO; import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessAssayParameterDataDO;
import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessAssayProjectDataDO; import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessAssayProjectDataDO;
import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessAssayTaskDO; import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessAssayTaskDO;
@@ -198,7 +199,7 @@ public class SampleAnalysisAuditServiceImpl implements SampleAnalysisAuditServic
//为空则未添加过判定记录 //为空则未添加过判定记录
if (assessmentMap == null) { if (assessmentMap == null) {
if (QmsCommonConstant.ASSAY_TYPE_SINGLE_PARALLEL.equals(businessAssayTaskDataExtendRespVO.getAssayType())) {//平行 if (QmsCommonConstant.ASSAY_TYPE_SINGLE_PARALLEL.equals(businessAssayTaskDataExtendRespVO.getAssayType())) {//平行
List<BusinessSubSampleAssessmentProjectExtendRespVO> businessSubSampleAssessmentList = businessSubSampleAssessmentProjectMapper.selectByBusinessSubSampleIdAndConfigAssayMethodId(businessAssayTaskDataExtendRespVO.getBusinessSubSampleId(), configAssayMethodId); List<BusinessSubSampleAssessmentProjectExtendRespVO> businessSubSampleAssessmentList = businessSubSampleAssessmentProjectMapper.selectByBusinessSubSampleIdAndConfigAssayMethodIdAndRetestCount(businessAssayTaskDataExtendRespVO.getBusinessSubSampleId(), configAssayMethodId, businessAssayTaskDataExtendRespVO.getRetestCount());
for (BusinessSubSampleAssessmentProjectExtendRespVO businessSubSampleAssessment : businessSubSampleAssessmentList) { for (BusinessSubSampleAssessmentProjectExtendRespVO businessSubSampleAssessment : businessSubSampleAssessmentList) {
businessAssayTaskDataAssessmentMap.put("id", businessSubSampleAssessment.getId()); businessAssayTaskDataAssessmentMap.put("id", businessSubSampleAssessment.getId());
businessAssayTaskDataAssessmentMap.put("assessmentStatus", businessSubSampleAssessment.getAssessmentStatus()); businessAssayTaskDataAssessmentMap.put("assessmentStatus", businessSubSampleAssessment.getAssessmentStatus());
@@ -291,7 +292,7 @@ public class SampleAnalysisAuditServiceImpl implements SampleAnalysisAuditServic
} }
@Override @Override
public JSONObject crossAuditByTaskId(Long businessAssayTaskId) { public JSONObject getCrossAuditDataByTaskId(Long businessAssayTaskId) {
JSONWriter.Context context = JSONFactory.createWriteContext(); JSONWriter.Context context = JSONFactory.createWriteContext();
context.setDateFormat("yyyy-MM-dd HH:mm:ss"); context.setDateFormat("yyyy-MM-dd HH:mm:ss");
@@ -622,13 +623,13 @@ public class SampleAnalysisAuditServiceImpl implements SampleAnalysisAuditServic
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void crossAuditByByTaskId(Long businessAssayTaskId, String auditStatus) { public void crossAuditByTaskId(Long businessAssayTaskId, String auditStatus) {
//当前登录用户昵称 //当前登录用户昵称
String nickName = SecurityFrameworkUtils.getLoginUserNickname(); String nickName = SecurityFrameworkUtils.getLoginUserNickname();
//自动上报的子样 //自动上报的子样判定数据
List<Long> automaticBusinessSubSampleIdList = new ArrayList<>(); List<BusinessSubSampleAssessmentDO> automaticBusinessSubSampleAssessmentList = new ArrayList<>();
//判定记录 //判定记录
List<BusinessSubSampleAssessmentDO> updateBusinessSubSampleAssessmentDOList = new ArrayList<>(); List<BusinessSubSampleAssessmentDO> updateBusinessSubSampleAssessmentDOList = new ArrayList<>();
@@ -645,9 +646,17 @@ public class SampleAnalysisAuditServiceImpl implements SampleAnalysisAuditServic
//查询分析任务明细 //查询分析任务明细
List<BusinessAssayTaskDataDO> businessAssayTaskDataDOList = businessAssayTaskDataMapper.selectByBusinessAssayTaskId(businessAssayTaskId); List<BusinessAssayTaskDataDO> businessAssayTaskDataDOList = businessAssayTaskDataMapper.selectByBusinessAssayTaskId(businessAssayTaskId);
Integer recheckCount = businessAssayTaskDataDOList.get(0).getRetestCount();
List<Long> businessSubSampleIdList = businessAssayTaskDataDOList.stream().map(m -> m.getBusinessSubSampleId()).distinct().collect(Collectors.toList());
List<BusinessSubSampleAssessmentDO> businessSubSampleAssessmentDOList = businessSubSampleAssessmentMapper.selectByBusinessSubSampleIdsAndConfigAssayMethodIdAndRetestCount(businessSubSampleIdList, businessAssayTaskDO.getConfigAssayMethodId(), recheckCount); // Integer recheckCount = businessAssayTaskDataDOList.get(0).getRetestCount();
// List<Long> businessSubSampleIdList = businessAssayTaskDataDOList.stream().map(m -> m.getBusinessSubSampleId()).distinct().collect(Collectors.toList());
// List<BusinessSubSampleAssessmentDO> businessSubSampleAssessmentDOList = businessSubSampleAssessmentMapper.selectByBusinessSubSampleIdsAndConfigAssayMethodIdAndRetestCount(businessSubSampleIdList, businessAssayTaskDO.getConfigAssayMethodId(), recheckCount);
//获取任务明细对应的判定id
List<Long> businessSubSampleAssessmentIdList = businessAssayTaskDataDOList.stream().map(m -> m.getBusinessSubSampleAssessmentId()).distinct().collect(Collectors.toList());
//获取子样判定数据
List<BusinessSubSampleAssessmentDO> businessSubSampleAssessmentDOList = businessSubSampleAssessmentMapper.selectByIds(businessSubSampleAssessmentIdList);
//根据子样分组 //根据子样分组
Map<Long, List<BusinessAssayTaskDataDO>> businessAssayTaskDataDOMap = businessAssayTaskDataDOList.stream().collect(Collectors.groupingBy(BusinessAssayTaskDataDO::getBusinessSubSampleId)); Map<Long, List<BusinessAssayTaskDataDO>> businessAssayTaskDataDOMap = businessAssayTaskDataDOList.stream().collect(Collectors.groupingBy(BusinessAssayTaskDataDO::getBusinessSubSampleId));
//循环分组 //循环分组
@@ -655,43 +664,144 @@ public class SampleAnalysisAuditServiceImpl implements SampleAnalysisAuditServic
Long businessSubSampleId = businessAssayTaskDataDOMapEntry.getKey(); Long businessSubSampleId = businessAssayTaskDataDOMapEntry.getKey();
List<BusinessAssayTaskDataDO> businessAssayTaskDataList = businessAssayTaskDataDOMapEntry.getValue(); List<BusinessAssayTaskDataDO> businessAssayTaskDataList = businessAssayTaskDataDOMapEntry.getValue();
List<Long> businessAssayTaskDataIdList = businessAssayTaskDataList.stream().map(m -> m.getId()).collect(Collectors.toList());
BusinessAssayTaskDataDO businessAssayTaskDataDO = businessAssayTaskDataList.get(0);
BusinessSubSampleDO businessSubSampleDO = businessSubSampleMapper.selectById(businessSubSampleId); Map<Integer, List<BusinessAssayTaskDataDO>> businessAssayTaskDataDORetestMap = businessAssayTaskDataList.stream().collect(Collectors.groupingBy(BusinessAssayTaskDataDO::getRetestCount));
//获取子样分析方法配置
ConfigSubSampleMethodExtendRespVO configSubSampleMethodDO = configSubSampleMethodMapper.selectByConfigSubSampleIdAndConfigAssayMethodId(businessSubSampleDO.getConfigSubSampleId(), businessAssayTaskDataDO.getConfigAssayMethodId()); for (Map.Entry<Integer, List<BusinessAssayTaskDataDO>> businessAssayTaskDataDORetestMapEntry : businessAssayTaskDataDORetestMap.entrySet()) {
Integer retestCount = businessAssayTaskDataDORetestMapEntry.getKey();
List<BusinessAssayTaskDataDO> businessAssayTaskDataRetestList = businessAssayTaskDataDORetestMapEntry.getValue();
List<Long> businessAssayTaskDataIdList = businessAssayTaskDataRetestList.stream().map(m -> m.getId()).collect(Collectors.toList());
BusinessAssayTaskDataDO businessAssayTaskDataDO = businessAssayTaskDataRetestList.get(0);
BusinessSubSampleDO businessSubSampleDO = businessSubSampleMapper.selectById(businessSubSampleId);
//获取子样分析方法配置
ConfigSubSampleMethodExtendRespVO configSubSampleMethodDO = configSubSampleMethodMapper.selectByConfigSubSampleIdAndConfigAssayMethodId(businessSubSampleDO.getConfigSubSampleId(), businessAssayTaskDataDO.getConfigAssayMethodId());
if (QmsCommonConstant.ASSAY_TYPE_SINGLE_PARALLEL.equals(businessAssayTaskDataDO.getAssayType())) {
//根据子样id及分析方法id查询未上报的分析任务
List<BusinessAssayTaskDataDO> unReportedList = businessAssayTaskDataMapper.selectIsReportedList(businessAssayTaskDataIdList, businessAssayTaskDataDO.getBusinessSubSampleId(), businessAssayTaskDataDO.getConfigAssayMethodId(), retestCount, QmsCommonConstant.NO);
if (unReportedList.size() > 0) {//还有未上报数据,直接处理,无需判定
continue;
} else {//做超差判定
//根据子样id及分析方法id查询已上报的分析任务
List<BusinessAssayTaskDataDO> reportedList = businessAssayTaskDataMapper.selectIsReportedList(businessAssayTaskDataIdList, businessAssayTaskDataDO.getBusinessSubSampleId(), businessAssayTaskDataDO.getConfigAssayMethodId(), retestCount, QmsCommonConstant.YES);
if (reportedList.size() > 0) {
List<Long> reportedBusinessAssayTaskDataIdList = reportedList.stream().map(m -> m.getId()).collect(Collectors.toList());
businessAssayTaskDataIdList.addAll(reportedBusinessAssayTaskDataIdList);
}
//查询判定业务
BusinessSubSampleAssessmentDO businessSubSampleAssessmentDO = updateBusinessSubSampleAssessmentDOList.stream().filter(f -> f.getId().equals(businessAssayTaskDataDO.getBusinessSubSampleAssessmentId())).findFirst().orElse(null);
if (businessSubSampleAssessmentDO == null) {
businessSubSampleAssessmentDO = businessSubSampleAssessmentDOList.stream().filter(f -> f.getId().equals(businessAssayTaskDataDO.getBusinessSubSampleAssessmentId())).findFirst().orElse(null);
updateBusinessSubSampleAssessmentDOList.add(businessSubSampleAssessmentDO);
}
//状态设置为待上报
businessSubSampleAssessmentDO.setReportedStatus(QmsCommonConstant.ASMT_PENDING_REPORT);
//查询分析项目
List<BusinessAssayProjectDataDO> businessAssayProjectDataDOList = businessAssayProjectDataMapper.selectList(new LambdaQueryWrapperX<BusinessAssayProjectDataDO>().in(BusinessAssayProjectDataDO::getBusinessAssayTaskDataId, businessAssayTaskDataIdList));
Map<Long, List<BusinessAssayProjectDataDO>> businessAssayProjectDataDOMap = businessAssayProjectDataDOList.stream().collect(Collectors.groupingBy(BusinessAssayProjectDataDO::getDictionaryProjectId));
for (Map.Entry<Long, List<BusinessAssayProjectDataDO>> businessAssayProjectDataDOEntry : businessAssayProjectDataDOMap.entrySet()) {
Long dictionaryProjectId = businessAssayProjectDataDOEntry.getKey();
List<BusinessAssayProjectDataDO> val1 = businessAssayProjectDataDOEntry.getValue();
BusinessAssayProjectDataDO businessAssayProjectDataDO = val1.get(0);
List<ConfigAssayMethodProjectAssessmentDO> configAssayMethodProjectAssessmentDOList = configAssayMethodProjectAssessmentMapper.selectByConfigBaseSampleIdAndConfigAssayMethodIdAndConfigAssayMethodProjectId(configSubSampleMethodDO.getConfigBaseSampleId(), businessAssayTaskDataDO.getConfigAssayMethodId(), businessAssayProjectDataDO.getConfigAssayMethodProjectId());
if (QmsCommonConstant.ASSAY_TYPE_SINGLE_PARALLEL.equals(businessAssayTaskDataDO.getAssayType())) { //查询判定结果数据
//根据子样id及分析方法id查询未上报的分析任务 BusinessSubSampleAssessmentProjectDO businessSubSampleAssessmentProjectDO = businessSubSampleAssessmentProjectMapper.selectByBusinessSubSampleIdAndConfigAssayMethodIdAndConfigAssayMethodProjectId(businessSubSampleId, businessAssayTaskDataDO.getConfigAssayMethodId(), businessAssayProjectDataDO.getConfigAssayMethodProjectId());
List<BusinessAssayTaskDataDO> unReportedList = businessAssayTaskDataMapper.selectIsReportedList(businessAssayTaskDataIdList, businessAssayTaskDataDO.getBusinessSubSampleId(), businessAssayTaskDataDO.getConfigAssayMethodId(), QmsCommonConstant.NO); if (businessSubSampleAssessmentProjectDO == null) {
if (unReportedList.size() > 0) {//还有未上报数据,直接处理,无需判定 businessSubSampleAssessmentProjectDO = new BusinessSubSampleAssessmentProjectDO();
continue;
} else {//做超差判定 saveBusinessSubSampleAssessmentProjectDOList.add(businessSubSampleAssessmentProjectDO);
//根据子样id及分析方法id查询已上报的分析任务 } else {
List<BusinessAssayTaskDataDO> reportedList = businessAssayTaskDataMapper.selectIsReportedList(businessAssayTaskDataIdList, businessAssayTaskDataDO.getBusinessSubSampleId(), businessAssayTaskDataDO.getConfigAssayMethodId(), QmsCommonConstant.YES); updateBusinessSubSampleAssessmentProjectDOList.add(businessSubSampleAssessmentProjectDO);
if (reportedList.size() > 0) { }
List<Long> reportedBusinessAssayTaskDataIdList = reportedList.stream().map(m -> m.getId()).collect(Collectors.toList()); businessSubSampleAssessmentProjectDO.setBusinessSubParentSampleId(businessAssayTaskDataDO.getBusinessSubParentSampleId());
businessAssayTaskDataIdList.addAll(reportedBusinessAssayTaskDataIdList); businessSubSampleAssessmentProjectDO.setBusinessSubSampleId(businessAssayTaskDataDO.getBusinessSubSampleId());
businessSubSampleAssessmentProjectDO.setBusinessSubSampleAssessmentId(businessSubSampleAssessmentDO.getId());
businessSubSampleAssessmentProjectDO.setConfigAssayMethodId(businessAssayTaskDataDO.getConfigAssayMethodId());
businessSubSampleAssessmentProjectDO.setConfigAssayMethodProjectId(businessAssayProjectDataDO.getConfigAssayMethodProjectId());
businessSubSampleAssessmentProjectDO.setDictionaryProjectId(dictionaryProjectId);
businessSubSampleAssessmentProjectDO.setDataType(businessAssayProjectDataDO.getDataType());
businessSubSampleAssessmentProjectDO.setDecimalPosition(businessAssayProjectDataDO.getDecimalPosition());
businessSubSampleAssessmentProjectDO.setAssayType(businessAssayTaskDataDO.getAssayType());
businessSubSampleAssessmentProjectDO.setTaskType(businessAssayTaskDataDO.getTaskType());
businessSubSampleAssessmentProjectDO.setUsage(businessAssayProjectDataDO.getUsage());
businessSubSampleAssessmentProjectDO.setSymbol(businessAssayProjectDataDO.getSymbol());
businessSubSampleAssessmentProjectDO.setAssessmentStatus(QmsCommonConstant.NORMAL);
// 排序并处理 null
List<BigDecimal> sortedValues = val1.stream()
.map(v -> {
String val = v.getValue();
return val == null || val.trim().isEmpty() ? BigDecimal.ZERO : new BigDecimal(val.trim());
})
.sorted()
.collect(Collectors.toList());
// 获取小数精度
int elementScale = businessAssayProjectDataDO.getDecimalPosition();
// 计算代表值(均值或差值)
BigDecimal representativeValue = calculateRepresentativeValue(sortedValues, elementScale);
//设置判定值
businessSubSampleAssessmentProjectDO.setAssessmentValue(representativeValue.toPlainString());
// 查找匹配的允差规则
ConfigAssayMethodProjectAssessmentDO matchedRule = findMatchingRule(configAssayMethodProjectAssessmentDOList, representativeValue);
if (matchedRule == null) {
throw new ServiceException(1_032_100_000, "未找到超差判定区间范围元素ID: " + dictionaryProjectId + ", 值: " + representativeValue);
}
// 计算允差值
BigDecimal allowValue;
try {
allowValue = allowanceCalculatorComponent.calculateAllowableValue(new BigDecimal(matchedRule.getMinimumValue()), new BigDecimal(matchedRule.getMaximumValue()), new BigDecimal(matchedRule.getMinimumToleraanceValue()), new BigDecimal(matchedRule.getMaximumToleraanceValue()), new BigDecimal(matchedRule.getToleraanceAdjustmentValue()), representativeValue, matchedRule.getIsUseFormula(), matchedRule.getFormula(), elementScale);
} catch (Exception e) {
throw new ServiceException(1_032_100_000, "超差判定计算出错检测项目ID: " + dictionaryProjectId);
}
// 判断相邻差值是否超差
for (int i = 0; i < sortedValues.size() - 1; i++) {
BigDecimal diff = sortedValues.get(i + 1).subtract(sortedValues.get(i)).abs();
if (diff.compareTo(allowValue) > 0) {
businessSubSampleAssessmentProjectDO.setAssessmentStatus(QmsCommonConstant.EXCEEDS_TOLERANCE);
//存在超差,设置为待判定
businessSubSampleAssessmentDO.setReportedStatus(QmsCommonConstant.ASMT_PENDING_ASSESSMENT);
break;
}
}
}
//如果为自动上报, 并且上报状态为待上报的
if (QmsCommonConstant.AUTOMATIC.equals(configSubSampleMethodDO.getResultTreatmentWay()) && QmsCommonConstant.ASMT_PENDING_REPORT.equals(businessSubSampleAssessmentDO.getReportedStatus())) {
automaticBusinessSubSampleAssessmentList.add(businessSubSampleAssessmentDO);
}
} }
} else if (QmsCommonConstant.ASSAY_TYPE_DOUBLE_CUP.equals(businessAssayTaskDataDO.getAssayType())) {
} else {//单杯
//查询判定业务 //查询判定业务
BusinessSubSampleAssessmentDO businessSubSampleAssessmentDO = updateBusinessSubSampleAssessmentDOList.stream().filter(f -> f.getId().equals(businessAssayTaskDataDO.getBusinessSubSampleAssessmentId())).findFirst().orElse(null); BusinessSubSampleAssessmentDO businessSubSampleAssessmentDO = updateBusinessSubSampleAssessmentDOList.stream().filter(f -> f.getId().equals(businessAssayTaskDataDO.getBusinessSubSampleAssessmentId())).findFirst().orElse(null);
if (businessSubSampleAssessmentDO == null) { if (businessSubSampleAssessmentDO == null) {
businessSubSampleAssessmentDO = businessSubSampleAssessmentDOList.stream().filter(f -> f.getId().equals(businessAssayTaskDataDO.getBusinessSubSampleAssessmentId())).findFirst().orElse(null); businessSubSampleAssessmentDO = businessSubSampleAssessmentDOList.stream().filter(f -> f.getId().equals(businessAssayTaskDataDO.getBusinessSubSampleAssessmentId())).findFirst().orElse(null);
updateBusinessSubSampleAssessmentDOList.add(businessSubSampleAssessmentDO); updateBusinessSubSampleAssessmentDOList.add(businessSubSampleAssessmentDO);
} }
//状态设置为待上报 //修改状态为待上报
businessSubSampleAssessmentDO.setReportedStatus(QmsCommonConstant.ASMT_PENDING_REPORT); businessSubSampleAssessmentDO.setReportedStatus(QmsCommonConstant.ASMT_PENDING_REPORT);
//查询分析项目 //查询分析项目
List<BusinessAssayProjectDataDO> businessAssayProjectDataDOList = businessAssayProjectDataMapper.selectList(new LambdaQueryWrapperX<BusinessAssayProjectDataDO>().in(BusinessAssayProjectDataDO::getBusinessAssayTaskDataId, businessAssayTaskDataIdList)); List<BusinessAssayProjectDataDO> businessAssayProjectDataDOList = businessAssayProjectDataMapper.selectList(new LambdaQueryWrapperX<BusinessAssayProjectDataDO>().in(BusinessAssayProjectDataDO::getBusinessAssayTaskDataId, businessAssayTaskDataIdList));
Map<Long, List<BusinessAssayProjectDataDO>> businessAssayProjectDataDOMap = businessAssayProjectDataDOList.stream().collect(Collectors.groupingBy(BusinessAssayProjectDataDO::getDictionaryProjectId));
for (Map.Entry<Long, List<BusinessAssayProjectDataDO>> businessAssayProjectDataDOEntry : businessAssayProjectDataDOMap.entrySet()) { for (BusinessAssayProjectDataDO businessAssayProjectDataDO : businessAssayProjectDataDOList) {
Long dictionaryProjectId = businessAssayProjectDataDOEntry.getKey();
List<BusinessAssayProjectDataDO> val1 = businessAssayProjectDataDOEntry.getValue();
BusinessAssayProjectDataDO businessAssayProjectDataDO = val1.get(0);
List<ConfigAssayMethodProjectAssessmentDO> configAssayMethodProjectAssessmentDOList = configAssayMethodProjectAssessmentMapper.selectByConfigBaseSampleIdAndConfigAssayMethodIdAndConfigAssayMethodProjectId(configSubSampleMethodDO.getConfigBaseSampleId(), businessAssayTaskDataDO.getConfigAssayMethodId(), businessAssayProjectDataDO.getConfigAssayMethodProjectId());
//查询判定结果数据 //查询判定结果数据
BusinessSubSampleAssessmentProjectDO businessSubSampleAssessmentProjectDO = businessSubSampleAssessmentProjectMapper.selectByBusinessSubSampleIdAndConfigAssayMethodIdAndConfigAssayMethodProjectId(businessSubSampleId, businessAssayTaskDataDO.getConfigAssayMethodId(), businessAssayProjectDataDO.getConfigAssayMethodProjectId()); BusinessSubSampleAssessmentProjectDO businessSubSampleAssessmentProjectDO = businessSubSampleAssessmentProjectMapper.selectByBusinessSubSampleIdAndConfigAssayMethodIdAndConfigAssayMethodProjectId(businessSubSampleId, businessAssayTaskDataDO.getConfigAssayMethodId(), businessAssayProjectDataDO.getConfigAssayMethodProjectId());
if (businessSubSampleAssessmentProjectDO == null) { if (businessSubSampleAssessmentProjectDO == null) {
@@ -706,120 +816,26 @@ public class SampleAnalysisAuditServiceImpl implements SampleAnalysisAuditServic
businessSubSampleAssessmentProjectDO.setBusinessSubSampleAssessmentId(businessSubSampleAssessmentDO.getId()); businessSubSampleAssessmentProjectDO.setBusinessSubSampleAssessmentId(businessSubSampleAssessmentDO.getId());
businessSubSampleAssessmentProjectDO.setConfigAssayMethodId(businessAssayTaskDataDO.getConfigAssayMethodId()); businessSubSampleAssessmentProjectDO.setConfigAssayMethodId(businessAssayTaskDataDO.getConfigAssayMethodId());
businessSubSampleAssessmentProjectDO.setConfigAssayMethodProjectId(businessAssayProjectDataDO.getConfigAssayMethodProjectId()); businessSubSampleAssessmentProjectDO.setConfigAssayMethodProjectId(businessAssayProjectDataDO.getConfigAssayMethodProjectId());
businessSubSampleAssessmentProjectDO.setDictionaryProjectId(dictionaryProjectId); businessSubSampleAssessmentProjectDO.setDictionaryProjectId(businessAssayProjectDataDO.getDictionaryProjectId());
businessSubSampleAssessmentProjectDO.setDataType(businessAssayProjectDataDO.getDataType()); businessSubSampleAssessmentProjectDO.setDataType(businessAssayProjectDataDO.getDataType());
businessSubSampleAssessmentProjectDO.setDecimalPosition(businessAssayProjectDataDO.getDecimalPosition()); businessSubSampleAssessmentProjectDO.setDecimalPosition(businessAssayProjectDataDO.getDecimalPosition());
businessSubSampleAssessmentProjectDO.setAssayType(businessAssayTaskDataDO.getAssayType()); businessSubSampleAssessmentProjectDO.setAssayType(businessAssayTaskDataDO.getAssayType());
businessSubSampleAssessmentProjectDO.setTaskType(businessAssayTaskDataDO.getTaskType()); businessSubSampleAssessmentProjectDO.setTaskType(businessAssayTaskDataDO.getTaskType());
businessSubSampleAssessmentProjectDO.setUsage(businessAssayProjectDataDO.getUsage()); businessSubSampleAssessmentProjectDO.setUsage(businessAssayProjectDataDO.getUsage());
businessSubSampleAssessmentProjectDO.setMinimumLimitValue(businessAssayProjectDataDO.getMinimumLimitValue());
businessSubSampleAssessmentProjectDO.setSymbol(businessAssayProjectDataDO.getSymbol()); businessSubSampleAssessmentProjectDO.setSymbol(businessAssayProjectDataDO.getSymbol());
businessSubSampleAssessmentProjectDO.setAssessmentStatus(QmsCommonConstant.NORMAL); businessSubSampleAssessmentProjectDO.setAssessmentStatus(QmsCommonConstant.NORMAL);
businessSubSampleAssessmentProjectDO.setAssessmentValue(businessAssayProjectDataDO.getValue());
// 排序并处理 null
List<BigDecimal> sortedValues = val1.stream()
.map(v -> {
String val = v.getValue();
return val == null || val.trim().isEmpty() ? BigDecimal.ZERO : new BigDecimal(val.trim());
})
.sorted()
.collect(Collectors.toList());
// 获取小数精度
int elementScale = businessAssayProjectDataDO.getDecimalPosition();
// 计算代表值(均值或差值)
BigDecimal representativeValue = calculateRepresentativeValue(sortedValues, elementScale);
//设置判定值
businessSubSampleAssessmentProjectDO.setAssessmentValue(representativeValue.toPlainString());
// 查找匹配的允差规则
ConfigAssayMethodProjectAssessmentDO matchedRule = findMatchingRule(configAssayMethodProjectAssessmentDOList, representativeValue);
if (matchedRule == null) {
throw new ServiceException(1_032_100_000, "未找到超差判定区间范围元素ID: " + dictionaryProjectId + ", 值: " + representativeValue);
}
// 计算允差值
BigDecimal allowValue;
try {
allowValue = allowanceCalculatorComponent.calculateAllowableValue(new BigDecimal(matchedRule.getMinimumValue()), new BigDecimal(matchedRule.getMaximumValue()), new BigDecimal(matchedRule.getMinimumToleraanceValue()), new BigDecimal(matchedRule.getMaximumToleraanceValue()), new BigDecimal(matchedRule.getToleraanceAdjustmentValue()), representativeValue, matchedRule.getIsUseFormula(), matchedRule.getFormula(), elementScale);
} catch (Exception e) {
throw new ServiceException(1_032_100_000, "超差判定计算出错检测项目ID: " + dictionaryProjectId);
}
// 判断相邻差值是否超差
for (int i = 0; i < sortedValues.size() - 1; i++) {
BigDecimal diff = sortedValues.get(i + 1).subtract(sortedValues.get(i)).abs();
if (diff.compareTo(allowValue) > 0) {
businessSubSampleAssessmentProjectDO.setAssessmentStatus(QmsCommonConstant.EXCEEDS_TOLERANCE);
//存在超差,设置为待判定
businessSubSampleAssessmentDO.setReportedStatus(QmsCommonConstant.ASMT_PENDING_ASSESSMENT);
break;
}
}
} }
//如果为自动上报, 并且上报状态为待上报的
//如果为自动上报
if (QmsCommonConstant.AUTOMATIC.equals(configSubSampleMethodDO.getResultTreatmentWay()) && QmsCommonConstant.ASMT_PENDING_REPORT.equals(businessSubSampleAssessmentDO.getReportedStatus())) { if (QmsCommonConstant.AUTOMATIC.equals(configSubSampleMethodDO.getResultTreatmentWay()) && QmsCommonConstant.ASMT_PENDING_REPORT.equals(businessSubSampleAssessmentDO.getReportedStatus())) {
automaticBusinessSubSampleIdList.add(businessSubSampleId); automaticBusinessSubSampleAssessmentList.add(businessSubSampleAssessmentDO);
} }
} }
} else if (QmsCommonConstant.ASSAY_TYPE_DOUBLE_CUP.equals(businessAssayTaskDataDO.getAssayType())) {
} else {//单杯
//查询判定业务
BusinessSubSampleAssessmentDO businessSubSampleAssessmentDO = updateBusinessSubSampleAssessmentDOList.stream().filter(f -> f.getId().equals(businessAssayTaskDataDO.getBusinessSubSampleAssessmentId())).findFirst().orElse(null);
if (businessSubSampleAssessmentDO == null) {
businessSubSampleAssessmentDO = businessSubSampleAssessmentDOList.stream().filter(f -> f.getId().equals(businessAssayTaskDataDO.getBusinessSubSampleAssessmentId())).findFirst().orElse(null);
updateBusinessSubSampleAssessmentDOList.add(businessSubSampleAssessmentDO);
}
//修改状态为待上报
businessSubSampleAssessmentDO.setReportedStatus(QmsCommonConstant.ASMT_PENDING_REPORT);
//查询分析项目
List<BusinessAssayProjectDataDO> businessAssayProjectDataDOList = businessAssayProjectDataMapper.selectList(new LambdaQueryWrapperX<BusinessAssayProjectDataDO>().in(BusinessAssayProjectDataDO::getBusinessAssayTaskDataId, businessAssayTaskDataIdList));
for (BusinessAssayProjectDataDO businessAssayProjectDataDO : businessAssayProjectDataDOList) {
//查询判定结果数据
BusinessSubSampleAssessmentProjectDO businessSubSampleAssessmentProjectDO = businessSubSampleAssessmentProjectMapper.selectByBusinessSubSampleIdAndConfigAssayMethodIdAndConfigAssayMethodProjectId(businessSubSampleId, businessAssayTaskDataDO.getConfigAssayMethodId(), businessAssayProjectDataDO.getConfigAssayMethodProjectId());
if (businessSubSampleAssessmentProjectDO == null) {
businessSubSampleAssessmentProjectDO = new BusinessSubSampleAssessmentProjectDO();
saveBusinessSubSampleAssessmentProjectDOList.add(businessSubSampleAssessmentProjectDO);
} else {
updateBusinessSubSampleAssessmentProjectDOList.add(businessSubSampleAssessmentProjectDO);
}
businessSubSampleAssessmentProjectDO.setBusinessSubParentSampleId(businessAssayTaskDataDO.getBusinessSubParentSampleId());
businessSubSampleAssessmentProjectDO.setBusinessSubSampleId(businessAssayTaskDataDO.getBusinessSubSampleId());
businessSubSampleAssessmentProjectDO.setBusinessSubSampleAssessmentId(businessSubSampleAssessmentDO.getId());
businessSubSampleAssessmentProjectDO.setConfigAssayMethodId(businessAssayTaskDataDO.getConfigAssayMethodId());
businessSubSampleAssessmentProjectDO.setConfigAssayMethodProjectId(businessAssayProjectDataDO.getConfigAssayMethodProjectId());
businessSubSampleAssessmentProjectDO.setDictionaryProjectId(businessAssayProjectDataDO.getDictionaryProjectId());
businessSubSampleAssessmentProjectDO.setDataType(businessAssayProjectDataDO.getDataType());
businessSubSampleAssessmentProjectDO.setDecimalPosition(businessAssayProjectDataDO.getDecimalPosition());
businessSubSampleAssessmentProjectDO.setAssayType(businessAssayTaskDataDO.getAssayType());
businessSubSampleAssessmentProjectDO.setTaskType(businessAssayTaskDataDO.getTaskType());
businessSubSampleAssessmentProjectDO.setUsage(businessAssayProjectDataDO.getUsage());
businessSubSampleAssessmentProjectDO.setMinimumLimitValue(businessAssayProjectDataDO.getMinimumLimitValue());
businessSubSampleAssessmentProjectDO.setSymbol(businessAssayProjectDataDO.getSymbol());
businessSubSampleAssessmentProjectDO.setAssessmentStatus(QmsCommonConstant.NORMAL);
businessSubSampleAssessmentProjectDO.setAssessmentValue(businessAssayProjectDataDO.getValue());
}
//如果为自动上报
if (QmsCommonConstant.AUTOMATIC.equals(configSubSampleMethodDO.getResultTreatmentWay())) {
automaticBusinessSubSampleIdList.add(businessSubSampleId);
}
} }
} }
@@ -850,9 +866,9 @@ public class SampleAnalysisAuditServiceImpl implements SampleAnalysisAuditServic
} }
//执行自动上报 //执行自动上报
if (automaticBusinessSubSampleIdList.size() > 0) { if (automaticBusinessSubSampleAssessmentList.size() > 0) {
for (Long automaticBusinessSubSampleId : automaticBusinessSubSampleIdList) { for (BusinessSubSampleAssessmentDO automaticBusinessSubSampleAssessment : automaticBusinessSubSampleAssessmentList) {
this.assessmentDataReporting(automaticBusinessSubSampleId, businessAssayTaskDO.getConfigAssayMethodId()); this.assessmentDataReporting(automaticBusinessSubSampleAssessment.getBusinessSubSampleId(), businessAssayTaskDO.getConfigAssayMethodId(), automaticBusinessSubSampleAssessment.getRetestCount());
} }
} }
@@ -936,29 +952,29 @@ public class SampleAnalysisAuditServiceImpl implements SampleAnalysisAuditServic
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void assessmentDataReporting(Long businessSubSampleId, Long configAssayMethodId) { public void assessmentDataReporting(Long businessSubSampleId, Long configAssayMethodId, Integer retestCount) {
//当前登录用户昵称 //当前登录用户昵称
String nickName = SecurityFrameworkUtils.getLoginUserNickname(); String nickName = SecurityFrameworkUtils.getLoginUserNickname();
List<BusinessAssayTaskDataDO> unReportedList = businessAssayTaskDataMapper.selectIsReportedList(null, businessSubSampleId, configAssayMethodId, QmsCommonConstant.NO); List<BusinessAssayTaskDataDO> unReportedList = businessAssayTaskDataMapper.selectIsReportedList(null, businessSubSampleId, configAssayMethodId, retestCount, QmsCommonConstant.NO);
if (unReportedList.size() > 0) { if (unReportedList.size() > 0) {
throw new ServiceException(1_032_100_000, "存在未上报的数据"); throw new ServiceException(1_032_100_000, "存在未上报的数据");
} }
//自动上报 //自动上报
List<Long> automaticBusinessSubParentSampleIdList = new ArrayList<>(); List<BusinessSubParentSampleIdAndRetestCount> automaticBusinessSubParentSampleIdAndRetestCounts = new ArrayList<>();
List<BusinessSubParentSampleAssessmentProjectDO> businessSubParentSampleAssessmentDOList = new ArrayList<>(); List<BusinessSubParentSampleAssessmentProjectDO> businessSubParentSampleAssessmentDOList = new ArrayList<>();
//分析任务已全部上报 //分析任务已全部上报
List<BusinessAssayTaskDataDO> reportedList = businessAssayTaskDataMapper.selectIsReportedList(null, businessSubSampleId, configAssayMethodId, QmsCommonConstant.YES); List<BusinessAssayTaskDataDO> reportedList = businessAssayTaskDataMapper.selectIsReportedList(null, businessSubSampleId, configAssayMethodId, retestCount, QmsCommonConstant.YES);
//判定结果 //判定结果
List<BusinessSubSampleAssessmentProjectExtendRespVO> businessSubSampleAssessmentList = businessSubSampleAssessmentProjectMapper.selectByBusinessSubSampleIdAndConfigAssayMethodId(businessSubSampleId, configAssayMethodId); List<BusinessSubSampleAssessmentProjectExtendRespVO> businessSubSampleAssessmentList = businessSubSampleAssessmentProjectMapper.selectByBusinessSubSampleIdAndConfigAssayMethodIdAndRetestCount(businessSubSampleId, configAssayMethodId, retestCount);
List<Long> businessSubSampleAssessmentIdList = businessSubSampleAssessmentList.stream().map(m -> m.getId()).collect(Collectors.toList()); List<Long> businessSubSampleAssessmentIdList = businessSubSampleAssessmentList.stream().map(m -> m.getId()).collect(Collectors.toList());
BusinessAssayTaskDataDO businessAssayTaskDataDO = reportedList.get(0); BusinessAssayTaskDataDO businessAssayTaskDataDO = reportedList.get(0);
//查询主样 //查询主样
BusinessBaseSampleDO businessBaseSampleDO = businessBaseSampleMapper.selectById(businessAssayTaskDataDO.getBusinessBaseSampleId()); //BusinessBaseSampleDO businessBaseSampleDO = businessBaseSampleMapper.selectById(businessAssayTaskDataDO.getBusinessBaseSampleId());
//查询分样 //查询分样
BusinessSubParentSampleDO businessSubParentSampleDO = businessSubParentSampleMapper.selectById(businessAssayTaskDataDO.getBusinessSubParentSampleId()); BusinessSubParentSampleDO businessSubParentSampleDO = businessSubParentSampleMapper.selectById(businessAssayTaskDataDO.getBusinessSubParentSampleId());
@@ -967,10 +983,10 @@ public class SampleAnalysisAuditServiceImpl implements SampleAnalysisAuditServic
ConfigSubSampleParentMethodDO configSubSampleParentMethodDO = configSubSampleParentMethodMapper.selectByConfigSubSampleParentIdAndConfigAssayMethodId(businessSubParentSampleDO.getConfigSubSampleParentId(), configAssayMethodId); ConfigSubSampleParentMethodDO configSubSampleParentMethodDO = configSubSampleParentMethodMapper.selectByConfigSubSampleParentIdAndConfigAssayMethodId(businessSubParentSampleDO.getConfigSubSampleParentId(), configAssayMethodId);
//子样判定 //子样判定
BusinessSubSampleAssessmentDO businessSubSampleAssessmentDO = businessSubSampleAssessmentMapper.selectByBusinessSubSampleIdAndConfigAssayMethodId(businessSubSampleId, configAssayMethodId); BusinessSubSampleAssessmentDO businessSubSampleAssessmentDO = businessSubSampleAssessmentMapper.selectByBusinessSubSampleIdAndConfigAssayMethodIdAndRetestCount(businessSubSampleId, configAssayMethodId, retestCount);
//分样判定 //分样判定
BusinessSubParentSampleAssessmentDO businessSubParentSampleAssessmentDO = businessSubParentSampleAssessmentMapper.selectByBusinessSubParentSampleIdAndConfigAssayMethodId(businessSubParentSampleDO.getId(), configAssayMethodId); BusinessSubParentSampleAssessmentDO businessSubParentSampleAssessmentDO = businessSubParentSampleAssessmentMapper.selectByBusinessSubParentSampleIdAndConfigAssayMethodIdAndRetestCount(businessSubParentSampleDO.getId(), configAssayMethodId, retestCount);
//循环判定值 //循环判定值
BusinessSubParentSampleAssessmentProjectDO businessSubParentSampleAssessmentProjectDO = null; BusinessSubParentSampleAssessmentProjectDO businessSubParentSampleAssessmentProjectDO = null;
@@ -1014,9 +1030,9 @@ public class SampleAnalysisAuditServiceImpl implements SampleAnalysisAuditServic
.in(BusinessSubSampleAssessmentProjectDO::getId, businessSubSampleAssessmentIdList)); .in(BusinessSubSampleAssessmentProjectDO::getId, businessSubSampleAssessmentIdList));
if (QmsCommonConstant.AUTOMATIC.equals(configSubSampleParentMethodDO.getResultTreatmentWay())) { if (QmsCommonConstant.AUTOMATIC.equals(configSubSampleParentMethodDO.getResultTreatmentWay())) {
automaticBusinessSubParentSampleIdList.add(businessSubParentSampleDO.getId()); automaticBusinessSubParentSampleIdAndRetestCounts.add(new BusinessSubParentSampleIdAndRetestCount(businessSubParentSampleDO.getId(), retestCount));
BatchResultDataReportingReqVO batchResultDataReportingReqVO = new BatchResultDataReportingReqVO(); BatchResultDataReportingReqVO batchResultDataReportingReqVO = new BatchResultDataReportingReqVO();
batchResultDataReportingReqVO.setBusinessSubParentSampleIds(automaticBusinessSubParentSampleIdList); batchResultDataReportingReqVO.setBusinessSubParentSampleIdAndRetestCounts(automaticBusinessSubParentSampleIdAndRetestCounts);
batchResultDataReportingReqVO.setConfigAssayMethodId(configAssayMethodId); batchResultDataReportingReqVO.setConfigAssayMethodId(configAssayMethodId);
sampleResultReportingService.batchResultDataReporting(batchResultDataReportingReqVO); sampleResultReportingService.batchResultDataReporting(batchResultDataReportingReqVO);
@@ -1034,7 +1050,7 @@ public class SampleAnalysisAuditServiceImpl implements SampleAnalysisAuditServic
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void createReAnalysis(Long businessSubSampleId, Long configAssayMethodId) { public void createReAnalysis(Long businessSubSampleId, Long configAssayMethodId, Integer retestCount) {
//子样数据 //子样数据
BusinessSubSampleDO businessSubSampleDO = businessSubSampleMapper.selectById(businessSubSampleId); BusinessSubSampleDO businessSubSampleDO = businessSubSampleMapper.selectById(businessSubSampleId);
@@ -1048,7 +1064,7 @@ public class SampleAnalysisAuditServiceImpl implements SampleAnalysisAuditServic
List<BusinessAssayProjectDataDO> newBusinessAssayProjectDataDOList = new ArrayList<>(); List<BusinessAssayProjectDataDO> newBusinessAssayProjectDataDOList = new ArrayList<>();
List<BusinessAssayParameterDataDO> newBusinessAssayParameterDataDOList = new ArrayList<>(); List<BusinessAssayParameterDataDO> newBusinessAssayParameterDataDOList = new ArrayList<>();
BusinessSubSampleAssessmentDO businessSubSampleAssessmentDO = businessSubSampleAssessmentMapper.selectByBusinessSubSampleIdAndConfigAssayMethodId(businessSubSampleId, configAssayMethodId); BusinessSubSampleAssessmentDO businessSubSampleAssessmentDO = businessSubSampleAssessmentMapper.selectByBusinessSubSampleIdAndConfigAssayMethodIdAndRetestCount(businessSubSampleId, configAssayMethodId, retestCount);
BusinessAssayTaskDataDO newBusinessAssayTaskDataDO = null; BusinessAssayTaskDataDO newBusinessAssayTaskDataDO = null;
List<BusinessAssayTaskDataDO> businessAssayTaskDataDOList = businessAssayTaskDataMapper.selectMaxRecheckCountByBusinessSubSampleIdAndConfigAssayMethodId(businessSubSampleId, configAssayMethodId); List<BusinessAssayTaskDataDO> businessAssayTaskDataDOList = businessAssayTaskDataMapper.selectMaxRecheckCountByBusinessSubSampleIdAndConfigAssayMethodId(businessSubSampleId, configAssayMethodId);
@@ -1112,7 +1128,7 @@ public class SampleAnalysisAuditServiceImpl implements SampleAnalysisAuditServic
//修改判定状态 //修改判定状态
//查询判定值 //查询判定值
List<BusinessSubSampleAssessmentProjectExtendRespVO> businessSubSampleAssessmentList = businessSubSampleAssessmentProjectMapper.selectByBusinessSubSampleIdAndConfigAssayMethodId(businessSubSampleId, configAssayMethodId); List<BusinessSubSampleAssessmentProjectExtendRespVO> businessSubSampleAssessmentList = businessSubSampleAssessmentProjectMapper.selectByBusinessSubSampleIdAndConfigAssayMethodIdAndRetestCount(businessSubSampleId, configAssayMethodId, retestCount);
for (BusinessSubSampleAssessmentProjectExtendRespVO businessSubSampleAssessmentProjectExtendRespVO : businessSubSampleAssessmentList) { for (BusinessSubSampleAssessmentProjectExtendRespVO businessSubSampleAssessmentProjectExtendRespVO : businessSubSampleAssessmentList) {
businessSubSampleAssessmentProjectExtendRespVO.setAssessmentValue(null); businessSubSampleAssessmentProjectExtendRespVO.setAssessmentValue(null);
businessSubSampleAssessmentProjectExtendRespVO.setAssessmentStatus(QmsCommonConstant.IN_PROGRESS); businessSubSampleAssessmentProjectExtendRespVO.setAssessmentStatus(QmsCommonConstant.IN_PROGRESS);

View File

@@ -28,6 +28,7 @@ import com.zt.plat.framework.common.util.object.BeanUtils;
import com.zt.plat.framework.security.core.LoginUser; import com.zt.plat.framework.security.core.LoginUser;
import com.zt.plat.framework.security.core.util.SecurityFrameworkUtils; import com.zt.plat.framework.security.core.util.SecurityFrameworkUtils;
import com.zt.plat.module.qms.business.bus.controller.vo.BatchResultDataReportingReqVO; import com.zt.plat.module.qms.business.bus.controller.vo.BatchResultDataReportingReqVO;
import com.zt.plat.module.qms.business.bus.controller.vo.BatchResultDataReportingReqVO.BusinessSubParentSampleIdAndRetestCount;
import com.zt.plat.module.qms.business.bus.controller.vo.BusinessSubParentSampleAssessmentProjectExtendRespVO; import com.zt.plat.module.qms.business.bus.controller.vo.BusinessSubParentSampleAssessmentProjectExtendRespVO;
import com.zt.plat.module.qms.business.bus.controller.vo.BusinessSubParentSampleAssessmentGroupReqVO; import com.zt.plat.module.qms.business.bus.controller.vo.BusinessSubParentSampleAssessmentGroupReqVO;
import com.zt.plat.module.qms.business.bus.controller.vo.BusinessSubParentSampleAssessmentGroupRespVO; import com.zt.plat.module.qms.business.bus.controller.vo.BusinessSubParentSampleAssessmentGroupRespVO;
@@ -571,6 +572,9 @@ public class SampleResultReportingServiceImpl implements SampleResultReportingSe
List<BusinessAssayReportDataDO> saveBusinessAssayReportDataDOList = new ArrayList<>(); List<BusinessAssayReportDataDO> saveBusinessAssayReportDataDOList = new ArrayList<>();
List<BusinessAssayReportDataDO> updateBusinessAssayReportDataDOList = new ArrayList<>(); List<BusinessAssayReportDataDO> updateBusinessAssayReportDataDOList = new ArrayList<>();
List<Long> businessSubParentSampleAssessmentIdList = new ArrayList<>();
List<Long> businessSubParentSampleAssessmentProjectIdList = new ArrayList<>();
List<BusinessSubParentSampleAssessmentProjectExtendRespVO> businessSubParentSampleAssessmentExtendList = businessSubParentSampleAssessmentProjectMapper.selectByBusinessSubParentSampleIdsAndConfigAssayMethodId(reqVO.getBusinessSubParentSampleIds(), reqVO.getConfigAssayMethodId()); List<BusinessSubParentSampleAssessmentProjectExtendRespVO> businessSubParentSampleAssessmentExtendList = businessSubParentSampleAssessmentProjectMapper.selectByBusinessSubParentSampleIdsAndConfigAssayMethodId(reqVO.getBusinessSubParentSampleIds(), reqVO.getConfigAssayMethodId());
List<BusinessSubParentSampleDO> businessSubParentSampleDOList = businessSubParentSampleMapper.selectByIds(reqVO.getBusinessSubParentSampleIds()); List<BusinessSubParentSampleDO> businessSubParentSampleDOList = businessSubParentSampleMapper.selectByIds(reqVO.getBusinessSubParentSampleIds());
@@ -615,33 +619,43 @@ public class SampleResultReportingServiceImpl implements SampleResultReportingSe
if (StringUtils.isNotBlank(assayData)) { if (StringUtils.isNotBlank(assayData)) {
assayDataJson = JSON.parseObject(assayData, new TypeReference<Map<String, ReportFieldValueData>>() {}); assayDataJson = JSON.parseObject(assayData, new TypeReference<Map<String, ReportFieldValueData>>() {});
} }
//循环判定值
List<BusinessSubParentSampleAssessmentProjectExtendRespVO> businessSubParentSampleAssessmentList = businessSubParentSampleAssessmentExtendList.stream().filter(f -> f.getBusinessSubParentSampleId().equals(businessSubParentSampleDO.getId()) && "normal".equals(f.getAssessmentStatus())).collect(Collectors.toList()); //过滤分样id根据多个复测次数处理
for (BusinessSubParentSampleAssessmentProjectExtendRespVO businessSubParentSampleAssessment : businessSubParentSampleAssessmentList) { List<BusinessSubParentSampleIdAndRetestCount> businessSubParentSampleIdAndRetestCountList = reqVO.getBusinessSubParentSampleIdAndRetestCounts().stream().filter(f -> f.getBusinessSubParentSampleId().equals(businessSubParentSampleDO.getId())).collect(Collectors.toList());
Long configAssayMethodProjectId = businessSubParentSampleAssessment.getConfigAssayMethodProjectId(); for (BusinessSubParentSampleIdAndRetestCount businessSubParentSampleIdAndRetestCount : businessSubParentSampleIdAndRetestCountList) {
List<ConfigProjectExtendRespVO> configProjectFeildList = configProjectList.stream().filter(f -> f.getConfigAssayMethodProjectId() != null && f.getConfigAssayMethodProjectId().equals(configAssayMethodProjectId)).collect(Collectors.toList());
for (ConfigProjectExtendRespVO configProjectFeild : configProjectFeildList) { //循环判定值
//查询动态报表字段 List<BusinessSubParentSampleAssessmentProjectExtendRespVO> businessSubParentSampleAssessmentList = businessSubParentSampleAssessmentExtendList.stream().filter(f -> f.getBusinessSubParentSampleId().equals(businessSubParentSampleDO.getId()) && f.getRetestCount().equals(businessSubParentSampleIdAndRetestCount.getRetestCount()) && "normal".equals(f.getAssessmentStatus())).collect(Collectors.toList());
ConfigReportFieldDO configReportField = configReportFieldDynamicList.stream().filter(f -> f.getConfigReportTypeId().equals(configSampleReport.getConfigReportTypeId()) && f.getField().equals(configProjectFeild.getSaveColumn())).findFirst().orElse(null); for (BusinessSubParentSampleAssessmentProjectExtendRespVO businessSubParentSampleAssessment : businessSubParentSampleAssessmentList) {
businessSubParentSampleAssessmentProjectIdList.add(businessSubParentSampleAssessment.getId());
businessSubParentSampleAssessmentIdList.add(businessSubParentSampleAssessment.getBusinessSubParentSampleAssessmentId());
if (configReportField == null) { Long configAssayMethodProjectId = businessSubParentSampleAssessment.getConfigAssayMethodProjectId();
continue; List<ConfigProjectExtendRespVO> configProjectFeildList = configProjectList.stream().filter(f -> f.getConfigAssayMethodProjectId() != null && f.getConfigAssayMethodProjectId().equals(configAssayMethodProjectId)).collect(Collectors.toList());
} for (ConfigProjectExtendRespVO configProjectFeild : configProjectFeildList) {
//查询动态报表字段
ReportFieldValueData reportFieldValueData = new ReportFieldValueData(); ConfigReportFieldDO configReportField = configReportFieldDynamicList.stream().filter(f -> f.getConfigReportTypeId().equals(configSampleReport.getConfigReportTypeId()) && f.getField().equals(configProjectFeild.getSaveColumn())).findFirst().orElse(null);
reportFieldValueData.setFieldName(configReportField.getFieldName());
reportFieldValueData.setFieldValue(businessSubParentSampleAssessment.getAssessmentValue()); if (configReportField == null) {
reportFieldValueData.setDataType(configReportField.getDataType()); continue;
reportFieldValueData.setDecimalPosition(configReportField.getDecimalPosition()); }
reportFieldValueData.setMathSymbol(businessSubParentSampleAssessment.getSymbol());
reportFieldValueData.setUnit(configProjectFeild.getDictionaryProjectUnit()); ReportFieldValueData reportFieldValueData = new ReportFieldValueData();
reportFieldValueData.setUsage(businessSubParentSampleAssessment.getUsage()); reportFieldValueData.setFieldName(configReportField.getFieldName());
reportFieldValueData.setMinLimitValue(businessSubParentSampleAssessment.getMinimumLimitValue()); reportFieldValueData.setFieldValue(businessSubParentSampleAssessment.getAssessmentValue());
reportFieldValueData.setMethodName(businessSubParentSampleAssessment.getConfigAssayMethodName()); reportFieldValueData.setDataType(configReportField.getDataType());
assayDataJson.put(configReportField.getField(), reportFieldValueData); reportFieldValueData.setDecimalPosition(configReportField.getDecimalPosition());
} reportFieldValueData.setMathSymbol(businessSubParentSampleAssessment.getSymbol());
reportFieldValueData.setUnit(configProjectFeild.getDictionaryProjectUnit());
reportFieldValueData.setUsage(businessSubParentSampleAssessment.getUsage());
reportFieldValueData.setMinLimitValue(businessSubParentSampleAssessment.getMinimumLimitValue());
reportFieldValueData.setMethodName(businessSubParentSampleAssessment.getConfigAssayMethodName());
assayDataJson.put(configReportField.getField(), reportFieldValueData);
}
}
} }
//修改已上报数据来源 //修改已上报数据来源
String dataSource = businessAssayReportDataDO.getDataSource(); String dataSource = businessAssayReportDataDO.getDataSource();
Set<String> dataSources = StringUtils.isBlank(dataSource) ? new HashSet<>() : new HashSet<>(Arrays.asList(dataSource.split(","))); Set<String> dataSources = StringUtils.isBlank(dataSource) ? new HashSet<>() : new HashSet<>(Arrays.asList(dataSource.split(",")));
@@ -726,8 +740,9 @@ public class SampleResultReportingServiceImpl implements SampleResultReportingSe
//查询当前分析部门下的子样分析班组信息 //查询当前分析部门下的子样分析班组信息
List<BusinessSubSampleAnalysisGroupDO> businessSubSampleAnalysisGroupDOList = businessSubSampleAnalysisGroupMapper.selectByBusinessSubParentSampleIdsAndAssayDepartmentId(reqVO.getBusinessSubParentSampleIds(), configAssayMethodDO.getAssayDepartmentId()); List<BusinessSubSampleAnalysisGroupDO> businessSubSampleAnalysisGroupDOList = businessSubSampleAnalysisGroupMapper.selectByBusinessSubParentSampleIdsAndAssayDepartmentId(reqVO.getBusinessSubParentSampleIds(), configAssayMethodDO.getAssayDepartmentId());
for (BusinessSubSampleAnalysisGroupDO businessSubSampleAnalysisGroupDO : businessSubSampleAnalysisGroupDOList) {//循环分析班组信息 for (BusinessSubSampleAnalysisGroupDO businessSubSampleAnalysisGroupDO : businessSubSampleAnalysisGroupDOList) {//循环分析班组信息
//查询当前分样判定上报未上报的,并排除当前上报方法,的数量 //查询当前分样判定上报未上报的,并排除当前(上报方法和复测次数),的数量
long count = businessSubParentSampleAssessmentDOList.stream().filter(f -> f.getBusinessSubParentSampleId().equals(businessSubSampleAnalysisGroupDO.getBusinessSubParentSampleId()) && !f.getConfigAssayMethodId().equals(reqVO.getConfigAssayMethodId()) && f.getIsReported().equals(QmsCommonConstant.NO)).count(); List<Integer> retestCountList = reqVO.getBusinessSubParentSampleIdAndRetestCounts().stream().filter(f -> f.getBusinessSubParentSampleId().equals(businessSubSampleAnalysisGroupDO.getBusinessSubParentSampleId())).map(m -> m.getRetestCount()).collect(Collectors.toList());
long count = businessSubParentSampleAssessmentDOList.stream().filter(f -> f.getBusinessSubParentSampleId().equals(businessSubSampleAnalysisGroupDO.getBusinessSubParentSampleId()) && !( f.getConfigAssayMethodId().equals(reqVO.getConfigAssayMethodId()) && retestCountList.contains(f.getRetestCount()) ) && f.getIsReported().equals(QmsCommonConstant.NO)).count();
if (count > 0) {//如果还存在未上报的数据,则继续 if (count > 0) {//如果还存在未上报的数据,则继续
continue; continue;
} }
@@ -776,35 +791,20 @@ public class SampleResultReportingServiceImpl implements SampleResultReportingSe
} }
//查询正常上报的 //查询正常上报的
List<Long> businessSubParentSampleAssessmentIdList = businessSubParentSampleAssessmentExtendList.stream().filter(f -> "normal".equals(f.getAssessmentStatus())).map(m -> m.getId()).collect(Collectors.toList()); // List<Long> businessSubParentSampleAssessmentIdList = businessSubParentSampleAssessmentExtendList.stream().filter(f -> "normal".equals(f.getAssessmentStatus()) ).map(m -> m.getId()).collect(Collectors.toList());
//查询未上报的分样主id
// List<Long> noAllReportBusinessSubParentSampleIdList = businessSubParentSampleAssessmentExtendList.stream().filter(f -> "in_progress".equals(f.getAssessmentStatus())).map(m -> m.getBusinessSubParentSampleId()).distinct().collect(Collectors.toList());
//全部上报的
// List<Long> allReportBusinessSubParentSampleIdList = new ArrayList<>();
// if (noAllReportBusinessSubParentSampleIdList != null) {
// allReportBusinessSubParentSampleIdList = reqVO.getBusinessSubParentSampleIds().stream().filter(item -> !noAllReportBusinessSubParentSampleIdList.contains(item)).collect(Collectors.toList());
// }
businessSubParentSampleAssessmentProjectMapper.update(new LambdaUpdateWrapper<BusinessSubParentSampleAssessmentProjectDO>() businessSubParentSampleAssessmentProjectMapper.update(new LambdaUpdateWrapper<BusinessSubParentSampleAssessmentProjectDO>()
.set(BusinessSubParentSampleAssessmentProjectDO::getIsReported, QmsCommonConstant.YES) .set(BusinessSubParentSampleAssessmentProjectDO::getIsReported, QmsCommonConstant.YES)
.set(BusinessSubParentSampleAssessmentProjectDO::getReporter, nickName) .set(BusinessSubParentSampleAssessmentProjectDO::getReporter, nickName)
.set(BusinessSubParentSampleAssessmentProjectDO::getReportTime, LocalDateTime.now()) .set(BusinessSubParentSampleAssessmentProjectDO::getReportTime, LocalDateTime.now())
.in(BusinessSubParentSampleAssessmentProjectDO::getId, businessSubParentSampleAssessmentIdList)); .in(BusinessSubParentSampleAssessmentProjectDO::getId, businessSubParentSampleAssessmentProjectIdList));
// if (allReportBusinessSubParentSampleIdList.size() > 0) {
// businessSubParentSampleAssessmentMapper.update(new LambdaUpdateWrapper<BusinessSubParentSampleAssessmentDO>()
// .set(BusinessSubParentSampleAssessmentDO::getIsReported, QmsCommonConstant.YES)
// .set(BusinessSubParentSampleAssessmentDO::getReporter, nickName)
// .set(BusinessSubParentSampleAssessmentDO::getReportTime, LocalDateTime.now())
// .in(BusinessSubParentSampleAssessmentDO::getBusinessSubParentSampleId, allReportBusinessSubParentSampleIdList)
// .eq(BusinessSubParentSampleAssessmentDO::getConfigAssayMethodId, reqVO.getConfigAssayMethodId()));
// }
businessSubParentSampleAssessmentMapper.update(new LambdaUpdateWrapper<BusinessSubParentSampleAssessmentDO>() businessSubParentSampleAssessmentMapper.update(new LambdaUpdateWrapper<BusinessSubParentSampleAssessmentDO>()
.set(BusinessSubParentSampleAssessmentDO::getIsReported, QmsCommonConstant.YES) .set(BusinessSubParentSampleAssessmentDO::getIsReported, QmsCommonConstant.YES)
.set(BusinessSubParentSampleAssessmentDO::getReporter, nickName) .set(BusinessSubParentSampleAssessmentDO::getReporter, nickName)
.set(BusinessSubParentSampleAssessmentDO::getReportTime, LocalDateTime.now()) .set(BusinessSubParentSampleAssessmentDO::getReportTime, LocalDateTime.now())
.in(BusinessSubParentSampleAssessmentDO::getBusinessSubParentSampleId, reqVO.getBusinessSubParentSampleIds()) .in(BusinessSubParentSampleAssessmentDO::getId, businessSubParentSampleAssessmentIdList));
.eq(BusinessSubParentSampleAssessmentDO::getConfigAssayMethodId, reqVO.getConfigAssayMethodId()));
if (updatebBusinessSampleEntrustRegistrationDOList.size() > 0) { if (updatebBusinessSampleEntrustRegistrationDOList.size() > 0) {
businessSampleEntrustRegistrationMapper.updateBatch(updatebBusinessSampleEntrustRegistrationDOList); businessSampleEntrustRegistrationMapper.updateBatch(updatebBusinessSampleEntrustRegistrationDOList);

View File

@@ -353,7 +353,7 @@ public class SampleTaskAssignServiceImpl implements SampleTaskAssignService {
//如果当前分析方法不等于要变更的方法 //如果当前分析方法不等于要变更的方法
if (!businessSubParentSampleAssessment.getConfigAssayMethodId().equals(changeConfigAssayMethodId)) { if (!businessSubParentSampleAssessment.getConfigAssayMethodId().equals(changeConfigAssayMethodId)) {
//查询是否已有要变更的方法的分样判定 //查询是否已有要变更的方法的分样判定
BusinessSubParentSampleAssessmentDO businessSubParentSampleAssessmentDO = businessSubParentSampleAssessmentMapper.selectByBusinessSubParentSampleIdAndConfigAssayMethodId(businessSubParentSampleAssessment.getBusinessSubParentSampleId(), changeConfigAssayMethodId); BusinessSubParentSampleAssessmentDO businessSubParentSampleAssessmentDO = businessSubParentSampleAssessmentMapper.selectByBusinessSubParentSampleIdAndConfigAssayMethodIdAndRetestCount(businessSubParentSampleAssessment.getBusinessSubParentSampleId(), changeConfigAssayMethodId, businessSubParentSampleAssessment.getRetestCount());
if (businessSubParentSampleAssessmentDO == null) {//不存在 if (businessSubParentSampleAssessmentDO == null) {//不存在
//根据变更方法过滤出检测项目 //根据变更方法过滤出检测项目
List<Long> projectIdList = changeConfigAssayMethodProjectList.stream().filter(f -> f.getConfigAssayMethodId().equals(changeConfigAssayMethodId)).map(m -> m.getDictionaryProjectId()).distinct().collect(Collectors.toList()); List<Long> projectIdList = changeConfigAssayMethodProjectList.stream().filter(f -> f.getConfigAssayMethodId().equals(changeConfigAssayMethodId)).map(m -> m.getDictionaryProjectId()).distinct().collect(Collectors.toList());