20250324 更新
This commit is contained in:
@@ -5,8 +5,8 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import digital.laboratory.platform.common.core.util.R;
|
||||
import digital.laboratory.platform.common.oss.service.OssFile;
|
||||
import digital.laboratory.platform.inspection.constant.BusinessType;
|
||||
import digital.laboratory.platform.inspection.constant.TestRecordFileUrl;
|
||||
import digital.laboratory.platform.inspection.enums.BusinessType;
|
||||
import digital.laboratory.platform.inspection.enums.TestRecordFileUrl;
|
||||
import digital.laboratory.platform.inspection.dto.EntrustInfoDto;
|
||||
import digital.laboratory.platform.inspetion.api.entity.EntrustInfo;
|
||||
import digital.laboratory.platform.inspection.service.EntrustInfoService;
|
||||
|
||||
@@ -2,7 +2,7 @@ package digital.laboratory.platform.inspection.controller;
|
||||
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import digital.laboratory.platform.common.core.util.R;
|
||||
import digital.laboratory.platform.inspection.constant.TestRecordFileUrl;
|
||||
import digital.laboratory.platform.inspection.enums.TestRecordFileUrl;
|
||||
import digital.laboratory.platform.inspection.dto.TestRecordArgumentDto;
|
||||
import digital.laboratory.platform.inspection.entity.TestRecordInstrumentCondition;
|
||||
import digital.laboratory.platform.inspection.service.TestRecordInstrumentConditionService;
|
||||
@@ -79,4 +79,4 @@ public class TestRecordInstrumentConditionController {
|
||||
String filePath = testRecordInstrumentConditionService.generatedOrNot(testId);
|
||||
return StrUtil.isNotBlank(filePath) ? R.ok(filePath) : R.failed("没有创建好仪器条件模板!");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,9 +7,11 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import digital.laboratory.platform.common.core.util.R;
|
||||
import digital.laboratory.platform.common.mybatis.security.service.DLPUser;
|
||||
import digital.laboratory.platform.inspection.constant.BusinessType;
|
||||
import digital.laboratory.platform.inspection.enums.BusinessType;
|
||||
import digital.laboratory.platform.inspection.dto.*;
|
||||
import digital.laboratory.platform.inspection.entity.TestRecordSampleData;
|
||||
import digital.laboratory.platform.inspection.query.AnalysisTestResultPageQuery;
|
||||
import digital.laboratory.platform.inspection.query.QueryTestResultPageQuery;
|
||||
import digital.laboratory.platform.inspection.service.TestRecordSampleDataService;
|
||||
import digital.laboratory.platform.inspection.utils.TestDataFileUtil;
|
||||
import digital.laboratory.platform.inspection.utils.datafile.hair.HairSewageCompoundData;
|
||||
@@ -186,10 +188,10 @@ public class TestRecordSampleDataController {
|
||||
|
||||
@PostMapping("/getAnalysisTestResultPage")
|
||||
@ApiOperation(value = "分页查询-获取实验结果", notes = "分页查询-获取实验结果")
|
||||
public R<Page<Object>> getAnalysisTestResultPage(@RequestBody @Valid AnalysisTestResultPageDTO pageDTO) {
|
||||
public R<Page<Object>> getAnalysisTestResultPage(@RequestBody @Valid AnalysisTestResultPageQuery query) {
|
||||
Page<Object> page = null;
|
||||
try {
|
||||
page = testRecordSampleDataService.getSampleTestDataByTestIdPage(pageDTO);
|
||||
page = testRecordSampleDataService.getSampleTestDataByTestIdPage(query);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
return R.failed("查询失败,系统异常!");
|
||||
@@ -227,7 +229,7 @@ public class TestRecordSampleDataController {
|
||||
// 实验结果等相关接口
|
||||
@PostMapping("/queryTestResultPage")
|
||||
@ApiOperation(value = "实验结果查询中分页查询", notes = "实验结果查询中分页查询, 10000 委托、20000 任务、 30000 筛查")
|
||||
public R<IPage<TestResultBusinessVO>> queryTestResultPage(@RequestBody QueryTestResultPageDTO dto, HttpServletRequest theHttpServletRequest) {
|
||||
public R<IPage<TestResultBusinessVO>> queryTestResultPage(@RequestBody QueryTestResultPageQuery dto, HttpServletRequest theHttpServletRequest) {
|
||||
Principal principal = theHttpServletRequest.getUserPrincipal();
|
||||
DLPUser dlpUser = (DLPUser) ((OAuth2Authentication) principal).getUserAuthentication().getPrincipal();
|
||||
IPage<TestResultBusinessVO> resultPage = null;
|
||||
|
||||
@@ -0,0 +1,48 @@
|
||||
package digital.laboratory.platform.inspection.controller;
|
||||
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import digital.laboratory.platform.common.core.util.R;
|
||||
import digital.laboratory.platform.inspection.dto.TestSampleDataExpandDTO;
|
||||
import digital.laboratory.platform.inspection.entity.TestRecordSampleDataExpand;
|
||||
import digital.laboratory.platform.inspection.service.TestRecordSampledataExpandService;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author xy
|
||||
* @version 1.0
|
||||
* @title TestRecordSampleDataController 实验数据控制器
|
||||
* @description
|
||||
* @create 2024/1/19 15:57
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/testDataExpand")
|
||||
@Api(tags = "18-检验鉴定-实验扩展数据管理服务", description = "检验鉴定-实验扩展数据管理服务")
|
||||
public class TestRecordSampleDataExpandController {
|
||||
|
||||
@Resource
|
||||
private TestRecordSampledataExpandService testRecordSampledataExpandService;
|
||||
|
||||
@ApiOperation("样本实验扩展数据 - 列表查询")
|
||||
@PostMapping("/list")
|
||||
public R<List<TestRecordSampleDataExpand>> list(String dataId) {
|
||||
return R.ok(testRecordSampledataExpandService.list(Wrappers.<TestRecordSampleDataExpand>lambdaQuery()
|
||||
.eq(StrUtil.isNotBlank(dataId), TestRecordSampleDataExpand::getTestDataId, dataId))
|
||||
);
|
||||
}
|
||||
|
||||
@ApiOperation("更新扩展数据")
|
||||
@PutMapping("/update")
|
||||
public R<Boolean> update(@RequestBody TestSampleDataExpandDTO updateDTO) {
|
||||
if (StrUtil.isBlank(updateDTO.getId())) {
|
||||
return R.failed("扩展数据id不能为空!");
|
||||
}
|
||||
return R.ok(testRecordSampledataExpandService.updateByDTO(updateDTO));
|
||||
}
|
||||
|
||||
}
|
||||
@@ -14,12 +14,12 @@ import java.util.stream.Collectors;
|
||||
* @description: 实验中用到的试剂耗材 的转换类
|
||||
* @date 2025/3/20 14:59
|
||||
*/
|
||||
public class TestRecordReagentConvert {
|
||||
public class TestRecordReagentConverter {
|
||||
|
||||
/**
|
||||
* 实体类转vo类
|
||||
*/
|
||||
public static TestRecordReagentVO entityToVOPage(TestRecordReagent entity) {
|
||||
public static TestRecordReagentVO entityToVO(TestRecordReagent entity) {
|
||||
if (entity == null) return null;
|
||||
TestRecordReagentVO testRecordReagentVO = new TestRecordReagentVO();
|
||||
testRecordReagentVO.setId(entity.getId());
|
||||
@@ -43,7 +43,7 @@ public class TestRecordReagentConvert {
|
||||
|
||||
// 将实体列表转换为 VO 列表
|
||||
List<TestRecordReagentVO> voList = entityPage.getRecords().stream()
|
||||
.map(TestRecordReagentConvert::entityToVOPage)
|
||||
.map(TestRecordReagentConverter::entityToVO)
|
||||
.collect(Collectors.toList());
|
||||
|
||||
// 设置转换后的记录
|
||||
@@ -0,0 +1,33 @@
|
||||
package digital.laboratory.platform.inspection.convert;
|
||||
|
||||
import digital.laboratory.platform.inspection.dto.TestSampleDataExpandDTO;
|
||||
import digital.laboratory.platform.inspection.entity.TestRecordSampleDataExpand;
|
||||
|
||||
/**
|
||||
* @author ChenJiangBao
|
||||
* @version 1.0
|
||||
* @description: 样本实验扩展数据实现类
|
||||
* @date 2025/3/21 15:35
|
||||
*/
|
||||
public class TestSampleDataExpandConverter {
|
||||
|
||||
/**
|
||||
* DTO 转实体类
|
||||
*/
|
||||
public static TestRecordSampleDataExpand dtoToEntity(TestSampleDataExpandDTO dto) {
|
||||
if (dto == null) return null;
|
||||
TestRecordSampleDataExpand testRecordSampleDataExpand = new TestRecordSampleDataExpand();
|
||||
testRecordSampleDataExpand.setId(dto.getId());
|
||||
testRecordSampleDataExpand.setTestDataId(dto.getTestDataId());
|
||||
testRecordSampleDataExpand.setPeakArea(dto.getPeakArea());
|
||||
testRecordSampleDataExpand.setBasePeak(dto.getBasePeak());
|
||||
testRecordSampleDataExpand.setIonAbundanceRatio(dto.getIonAbundanceRatio());
|
||||
testRecordSampleDataExpand.setIonAbundanceRatioError(dto.getIonAbundanceRatioError());
|
||||
testRecordSampleDataExpand.setIonAbundanceRatioWithinError(dto.getIonAbundanceRatioWithinError());
|
||||
testRecordSampleDataExpand.setFragmentRetTime(dto.getFragmentRetTime());
|
||||
testRecordSampleDataExpand.setMassToChargeRatio(dto.getMassToChargeRatio());
|
||||
testRecordSampleDataExpand.setQualitativeIonPair(dto.getQualitativeIonPair());
|
||||
return testRecordSampleDataExpand;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,43 +0,0 @@
|
||||
package digital.laboratory.platform.inspection.dto;
|
||||
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
|
||||
import javax.validation.constraints.NotNull;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 实验结果查询分页查询
|
||||
*/
|
||||
@Data
|
||||
@ApiModel(value = "QueryTestResultPageDTO", description = "实验结果查询分页查询的参数")
|
||||
public class QueryTestResultPageDTO {
|
||||
|
||||
@ApiModelProperty("分页参数,每页多少条")
|
||||
private long size = 10L;
|
||||
|
||||
@ApiModelProperty("分页参数, 当前页")
|
||||
private long current = 1L;
|
||||
|
||||
@ApiModelProperty("类型,10000 委托、20000 任务、 30000 筛查")
|
||||
@NotNull(message = "参数不全, 请检查参数是否符合!")
|
||||
private Integer type;
|
||||
|
||||
@ApiModelProperty("关键字")
|
||||
private String keyword;
|
||||
|
||||
@ApiModelProperty("录入人-查询")
|
||||
private String createBy;
|
||||
|
||||
@ApiModelProperty("开始时间")
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
private LocalDateTime startTime;
|
||||
|
||||
@ApiModelProperty("结束时间")
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
private LocalDateTime endTime;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,46 @@
|
||||
package digital.laboratory.platform.inspection.dto;
|
||||
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
/**
|
||||
* 样本检验数据的扩展信息 得更新DTO
|
||||
* @TableName b_test_record_sampledata_expand
|
||||
*/
|
||||
@Data
|
||||
@ApiModel(value = "TestSampleDataExpandDTO", description = "样本检验数据的扩展信息 得更新DTO")
|
||||
public class TestSampleDataExpandDTO {
|
||||
|
||||
@ApiModelProperty(value = "主键标识", example = "123456")
|
||||
private String id;
|
||||
|
||||
@ApiModelProperty(value = "关联的实验数据 ID (一个实验数据可能关联多个扩展数据)", example = "654321")
|
||||
private String testDataId;
|
||||
|
||||
@ApiModelProperty(value = "峰面积", example = "12345.6789")
|
||||
private BigDecimal peakArea;
|
||||
|
||||
@ApiModelProperty(value = "是否是基峰, 1 是 | 0 不是", example = "true")
|
||||
private Boolean basePeak;
|
||||
|
||||
@ApiModelProperty(value = "离子丰度比(峰面积之比)", example = "0.85")
|
||||
private BigDecimal ionAbundanceRatio;
|
||||
|
||||
@ApiModelProperty(value = "离子丰度比相对偏差(%)", example = "-2.5")
|
||||
private BigDecimal ionAbundanceRatioError;
|
||||
|
||||
@ApiModelProperty(value = "离子丰度比偏差是否在误差范围内", example = "是")
|
||||
private String ionAbundanceRatioWithinError;
|
||||
|
||||
@ApiModelProperty(value = "碎片保留时间(仅对 NPS 实验有用),求具体样本保留时间 = 碎片保留时间的平均值", example = "3.75")
|
||||
private BigDecimal fragmentRetTime;
|
||||
|
||||
@ApiModelProperty(value = "质荷比 (m/z),适用于 NPS 案件", example = "250.1")
|
||||
private BigDecimal massToChargeRatio;
|
||||
|
||||
@ApiModelProperty(value = "定性离子对,生物案件使用", example = "m/z 100 > 50")
|
||||
private String qualitativeIonPair;
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
package digital.laboratory.platform.inspection.constant;
|
||||
package digital.laboratory.platform.inspection.enums;
|
||||
|
||||
import lombok.Getter;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package digital.laboratory.platform.inspection.constant;
|
||||
package digital.laboratory.platform.inspection.enums;
|
||||
|
||||
/**
|
||||
* @author xy
|
||||
@@ -1,4 +1,4 @@
|
||||
package digital.laboratory.platform.inspection.constant;
|
||||
package digital.laboratory.platform.inspection.enums;
|
||||
|
||||
public enum MaterialType {
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package digital.laboratory.platform.inspection.constant;
|
||||
package digital.laboratory.platform.inspection.enums;
|
||||
|
||||
import lombok.Getter;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package digital.laboratory.platform.inspection.constant;
|
||||
package digital.laboratory.platform.inspection.enums;
|
||||
|
||||
import lombok.Getter;
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
package digital.laboratory.platform.inspection.constant;
|
||||
package digital.laboratory.platform.inspection.enums;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
@AllArgsConstructor
|
||||
public enum SewageReportColumn {
|
||||
@@ -1,4 +1,4 @@
|
||||
package digital.laboratory.platform.inspection.constant;
|
||||
package digital.laboratory.platform.inspection.enums;
|
||||
|
||||
public enum StdSolutionNum {
|
||||
SIMPLE_SOLUTION("Sin"),
|
||||
@@ -1,4 +1,4 @@
|
||||
package digital.laboratory.platform.inspection.constant;
|
||||
package digital.laboratory.platform.inspection.enums;
|
||||
|
||||
import lombok.Getter;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package digital.laboratory.platform.inspection.constant;
|
||||
package digital.laboratory.platform.inspection.enums;
|
||||
|
||||
/**
|
||||
* @author xy
|
||||
@@ -1,4 +1,4 @@
|
||||
package digital.laboratory.platform.inspection.constant;
|
||||
package digital.laboratory.platform.inspection.enums;
|
||||
|
||||
import lombok.Getter;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package digital.laboratory.platform.inspection.constant;
|
||||
package digital.laboratory.platform.inspection.enums;
|
||||
|
||||
import lombok.Getter;
|
||||
|
||||
@@ -0,0 +1,26 @@
|
||||
package digital.laboratory.platform.inspection.event;
|
||||
|
||||
import org.springframework.context.ApplicationEvent;
|
||||
|
||||
import java.time.Clock;
|
||||
|
||||
/**
|
||||
* @author ChenJiangBao
|
||||
* @version 1.0
|
||||
* @description: 计算检验数据事件
|
||||
* @date 2025/3/20 16:46
|
||||
*/
|
||||
public class CalculateInspectDataEvent extends ApplicationEvent {
|
||||
|
||||
private final String testId;
|
||||
|
||||
public CalculateInspectDataEvent(Object source, String testId) {
|
||||
super(source);
|
||||
this.testId = testId;
|
||||
}
|
||||
|
||||
public CalculateInspectDataEvent(Object source, Clock clock, String testId) {
|
||||
super(source, clock);
|
||||
this.testId = testId;
|
||||
}
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
package digital.laboratory.platform.inspection.dto;
|
||||
package digital.laboratory.platform.inspection.query;
|
||||
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
@@ -10,14 +10,8 @@ import javax.validation.constraints.NotBlank;
|
||||
* 获取实验数据分页查询DTO类
|
||||
*/
|
||||
@Data
|
||||
@ApiModel(value = "AnalysisTestResultPageDTO", description = "获取实验数据分页查询DTO类")
|
||||
public class AnalysisTestResultPageDTO {
|
||||
|
||||
@ApiModelProperty("分页参数,每页多少条")
|
||||
private long size = 10L;
|
||||
|
||||
@ApiModelProperty("分页参数, 当前页")
|
||||
private long current = 1L;
|
||||
@ApiModel(value = "AnalysisTestResultPageQuery", description = "获取实验数据分页查询DTO类")
|
||||
public class AnalysisTestResultPageQuery extends BaseQuery {
|
||||
|
||||
@ApiModelProperty("实验id")
|
||||
@NotBlank(message = "参数不全,请检查参数是否符合!")
|
||||
@@ -26,10 +20,4 @@ public class AnalysisTestResultPageDTO {
|
||||
@ApiModelProperty("获取数据类型, 检验数据的类型,比如说是nps的还是毛发案件的")
|
||||
private String type;
|
||||
|
||||
// 搜索参数 待定
|
||||
@ApiModelProperty("关键字")
|
||||
private String keyword;
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
package digital.laboratory.platform.inspection.query;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import java.time.LocalDate;
|
||||
|
||||
/**
|
||||
* @author ChenJiangBao
|
||||
* @version 1.0
|
||||
* @description: 基础查询对象
|
||||
* @date 2025/3/17 16:14
|
||||
*/
|
||||
@Data
|
||||
@ApiModel(value = "BaseQuery", description = "基础查询对象")
|
||||
public class BaseQuery {
|
||||
|
||||
@ApiModelProperty(value = "分页参数,每页多少条, 默认10")
|
||||
private Long size = 10L;
|
||||
|
||||
@ApiModelProperty(value = "分页参数, 当前页, 默认1")
|
||||
private Long current = 1L;
|
||||
|
||||
@ApiModelProperty(value = "关键字,支持 案件名称查询")
|
||||
private String keywords;
|
||||
|
||||
@ApiModelProperty(value = "开始日期")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||
private LocalDate startDate;
|
||||
|
||||
@ApiModelProperty(value = "结束日期")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||
private LocalDate endDate;
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
package digital.laboratory.platform.inspection.query;
|
||||
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import javax.validation.constraints.NotNull;
|
||||
|
||||
/**
|
||||
* 实验结果查询分页查询
|
||||
*/
|
||||
@Data
|
||||
@ApiModel(value = "QueryTestResultPageDTO", description = "实验结果查询分页查询的参数")
|
||||
public class QueryTestResultPageQuery extends BaseQuery {
|
||||
|
||||
@ApiModelProperty("类型,10000 委托、20000 任务、 30000 筛查")
|
||||
@NotNull(message = "参数不全, 请检查参数是否符合!")
|
||||
private Integer type;
|
||||
|
||||
@ApiModelProperty("录入人-查询")
|
||||
private String createBy;
|
||||
}
|
||||
@@ -3,9 +3,11 @@ package digital.laboratory.platform.inspection.service;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import digital.laboratory.platform.common.aop.annotation.DlpResultProc;
|
||||
import digital.laboratory.platform.inspection.dto.TestRecordArgumentDto;
|
||||
import digital.laboratory.platform.inspection.entity.TestRecordMethod;
|
||||
import digital.laboratory.platform.inspection.entity.TestRecordReagent;
|
||||
import digital.laboratory.platform.inspection.vo.TestRecordReagentVO;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.List;
|
||||
@@ -19,17 +21,28 @@ import java.util.List;
|
||||
*/
|
||||
|
||||
public interface TestRecordReagentService extends IService<TestRecordReagent> {
|
||||
|
||||
/**
|
||||
* 根据id获取vo类
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
TestRecordReagentVO getVOById(String id);
|
||||
|
||||
TestRecordReagent addTestRecordReagent(TestRecordReagent testRecordReagent);//添加实验使用方法
|
||||
|
||||
TestRecordReagent updateTestRecordReagent(TestRecordReagent testRecordReagent);//修改实验使用方法
|
||||
|
||||
Boolean deleteTestRecordReagent(String id);//删除实验使用方法
|
||||
|
||||
IPage getTestRecordReagentPageList(Page page, String testId, String keywords, String category, Integer opCode);
|
||||
|
||||
List<TestRecordReagent> getTestRecordReagentList(String testId, String category);
|
||||
|
||||
Boolean checkExist(String id);
|
||||
|
||||
boolean useTestRecordReagent(TestRecordArgumentDto testRecordArgumentDto);
|
||||
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
boolean useTestTemplateReagent(TestRecordArgumentDto testRecordArgumentDto);
|
||||
|
||||
IPage getTestTemplateReagentPageList(Page page, String templateId, String keywords, String category, Integer opCode);
|
||||
|
||||
@@ -8,10 +8,11 @@ import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import digital.laboratory.platform.common.core.util.R;
|
||||
import digital.laboratory.platform.inspection.dto.*;
|
||||
import digital.laboratory.platform.inspection.entity.TestRecordSampleData;
|
||||
import digital.laboratory.platform.inspection.query.AnalysisTestResultPageQuery;
|
||||
import digital.laboratory.platform.inspection.query.QueryTestResultPageQuery;
|
||||
import digital.laboratory.platform.inspection.utils.datafile.hair.HairSewageCompoundData;
|
||||
import digital.laboratory.platform.inspection.utils.datafile.nps.NPSDataFileStruct;
|
||||
import digital.laboratory.platform.inspection.vo.TestResultBusinessVO;
|
||||
import digital.laboratory.platform.inspetion.api.entity.TestRecord;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import java.util.List;
|
||||
@@ -62,7 +63,7 @@ public interface TestRecordSampleDataService extends IService<TestRecordSampleD
|
||||
* @param pageDTO
|
||||
* @return
|
||||
*/
|
||||
Page<Object> getSampleTestDataByTestIdPage(AnalysisTestResultPageDTO pageDTO);
|
||||
Page<Object> getSampleTestDataByTestIdPage(AnalysisTestResultPageQuery pageDTO);
|
||||
|
||||
/**
|
||||
* 分页查询 获取审核的任务检验数据, header 是自定义头 data 是分页对象
|
||||
@@ -87,7 +88,7 @@ public interface TestRecordSampleDataService extends IService<TestRecordSampleD
|
||||
* @param dto
|
||||
* @return
|
||||
*/
|
||||
IPage<TestResultBusinessVO> queryTestResultPage(Page<TestResultBusinessVO> testResultBusinessVOPage, QueryTestResultPageDTO dto, Object... arg);
|
||||
IPage<TestResultBusinessVO> queryTestResultPage(Page<TestResultBusinessVO> testResultBusinessVOPage, QueryTestResultPageQuery dto, Object... arg);
|
||||
|
||||
/**
|
||||
* 修改导入的实验数据
|
||||
@@ -155,9 +156,9 @@ public interface TestRecordSampleDataService extends IService<TestRecordSampleD
|
||||
*/
|
||||
R auditTaskTestData(AuditDataDTO auditDataDTO, HttpServletRequest httpServletRequest);
|
||||
|
||||
void autoCreateData(String testId, String compoundName);
|
||||
void autoCreateData(String testId, String reagentId);
|
||||
|
||||
boolean autoDelData(String testId, String compoundName);
|
||||
boolean autoDelData(String testId, String reagentId);
|
||||
|
||||
TestRecordSampleData updateData(TestRecordSampleData data);
|
||||
|
||||
|
||||
@@ -3,9 +3,12 @@ package digital.laboratory.platform.inspection.service;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import digital.laboratory.platform.inspection.dto.HairSewageDataDto;
|
||||
import digital.laboratory.platform.inspection.dto.NPSCaseTestDataDto;
|
||||
import digital.laboratory.platform.inspection.dto.TestSampleDataExpandDTO;
|
||||
import digital.laboratory.platform.inspection.entity.TestRecordSampleDataExpand;
|
||||
import digital.laboratory.platform.sys.entity.Drug;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author ChenJiangBao
|
||||
@@ -30,4 +33,21 @@ public interface TestRecordSampledataExpandService extends IService<TestRecordSa
|
||||
* @return
|
||||
*/
|
||||
Collection<? extends TestRecordSampleDataExpand> saveNPSInspectExpData(NPSCaseTestDataDto npsCaseTestDataDto, String testDataId);
|
||||
|
||||
/**
|
||||
* 根据业务类型保存检验数据扩展信息
|
||||
* @param testDataId 检验数据id
|
||||
* @param drug 对应的标准品毒品清单
|
||||
* @param businessType 业务类型
|
||||
* @return
|
||||
*/
|
||||
List<TestRecordSampleDataExpand> saveExpDataByBusinessType(String testDataId, Drug drug, String businessType);
|
||||
|
||||
/**
|
||||
*根据DTO去更新
|
||||
* @param updateDTO
|
||||
* @return
|
||||
*/
|
||||
Boolean updateByDTO(TestSampleDataExpandDTO updateDTO);
|
||||
|
||||
}
|
||||
|
||||
@@ -8,7 +8,7 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
|
||||
import digital.laboratory.platform.inspection.constant.BusinessType;
|
||||
import digital.laboratory.platform.inspection.enums.BusinessType;
|
||||
import digital.laboratory.platform.inspection.dto.AssignmentInfoDto;
|
||||
import digital.laboratory.platform.inspection.entity.*;
|
||||
import digital.laboratory.platform.inspection.mapper.AssignmentInfoMapper;
|
||||
|
||||
@@ -12,8 +12,8 @@ import com.deepoove.poi.plugin.table.LoopRowTableRenderPolicy;
|
||||
import com.deepoove.poi.xwpf.NiceXWPFDocument;
|
||||
import digital.laboratory.platform.common.core.util.R;
|
||||
import digital.laboratory.platform.common.oss.service.OssFile;
|
||||
import digital.laboratory.platform.inspection.constant.BusinessType;
|
||||
import digital.laboratory.platform.inspection.constant.TestRecordFileUrl;
|
||||
import digital.laboratory.platform.inspection.enums.BusinessType;
|
||||
import digital.laboratory.platform.inspection.enums.TestRecordFileUrl;
|
||||
import digital.laboratory.platform.inspection.dto.HairSewageDataDto;
|
||||
import digital.laboratory.platform.inspection.dto.NPSCaseTestDataDto;
|
||||
import digital.laboratory.platform.inspection.entity.TestRecordInstrument;
|
||||
|
||||
@@ -16,7 +16,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import digital.laboratory.platform.common.mybatis.security.service.DLPUser;
|
||||
import digital.laboratory.platform.inspection.dto.TestRecordArgumentDto;
|
||||
import digital.laboratory.platform.inspection.entity.*;
|
||||
import digital.laboratory.platform.inspection.constant.TestRecordArgumentType;
|
||||
import digital.laboratory.platform.inspection.enums.TestRecordArgumentType;
|
||||
import digital.laboratory.platform.inspection.mapper.SampleInfoMapper;
|
||||
import digital.laboratory.platform.inspection.mapper.TestRecordMapper;
|
||||
import digital.laboratory.platform.inspection.service.*;
|
||||
|
||||
@@ -11,7 +11,7 @@ import com.baomidou.mybatisplus.core.toolkit.IdWorker;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import digital.laboratory.platform.inspection.constant.SampleInjectorConstant;
|
||||
import digital.laboratory.platform.inspection.constant.StdSolutionNum;
|
||||
import digital.laboratory.platform.inspection.enums.StdSolutionNum;
|
||||
import digital.laboratory.platform.inspection.dto.ResetSampleInjectorDTO;
|
||||
import digital.laboratory.platform.inspection.dto.SampleInjectorExcelDTO;
|
||||
import digital.laboratory.platform.inspection.entity.SampleInjector;
|
||||
|
||||
@@ -7,7 +7,7 @@ import digital.laboratory.platform.common.core.constant.CommonConstants;
|
||||
import digital.laboratory.platform.common.core.constant.OSSDirectoryConstants;
|
||||
import digital.laboratory.platform.common.core.util.R;
|
||||
import digital.laboratory.platform.common.oss.service.OssFile;
|
||||
import digital.laboratory.platform.inspection.constant.NumberTransferHanZi;
|
||||
import digital.laboratory.platform.inspection.enums.NumberTransferHanZi;
|
||||
import digital.laboratory.platform.inspection.dto.ExportSewageAnalystReportsDTO;
|
||||
import digital.laboratory.platform.inspection.dto.RegionalDrugConsumptionDTO;
|
||||
import digital.laboratory.platform.inspection.dto.ReportConfigDTO;
|
||||
|
||||
@@ -9,7 +9,6 @@ package digital.laboratory.platform.inspection.service.impl;
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.date.LocalDateTimeUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.core.toolkit.IdWorker;
|
||||
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
|
||||
@@ -28,8 +27,8 @@ import digital.laboratory.platform.common.core.constant.OSSDirectoryConstants;
|
||||
import digital.laboratory.platform.common.core.util.R;
|
||||
import digital.laboratory.platform.common.feign.RemoteGenerateWordService;
|
||||
import digital.laboratory.platform.common.oss.service.OssFile;
|
||||
import digital.laboratory.platform.inspection.constant.BusinessType;
|
||||
import digital.laboratory.platform.inspection.constant.SewageReportColumn;
|
||||
import digital.laboratory.platform.inspection.enums.BusinessType;
|
||||
import digital.laboratory.platform.inspection.enums.SewageReportColumn;
|
||||
import digital.laboratory.platform.inspection.dto.*;
|
||||
import digital.laboratory.platform.inspection.entity.AssignmentInfo;
|
||||
import digital.laboratory.platform.inspection.entity.TaskInfo;
|
||||
|
||||
@@ -9,7 +9,7 @@ import com.baomidou.mybatisplus.core.toolkit.IdWorker;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import digital.laboratory.platform.common.core.util.R;
|
||||
import digital.laboratory.platform.common.oss.service.OssFile;
|
||||
import digital.laboratory.platform.inspection.constant.TestRecordFileUrl;
|
||||
import digital.laboratory.platform.inspection.enums.TestRecordFileUrl;
|
||||
import digital.laboratory.platform.inspection.dto.DataSolutionSampleDTO;
|
||||
import digital.laboratory.platform.inspection.dto.DeleteTestAtlasDTO;
|
||||
import digital.laboratory.platform.inspection.mapper.TestRecordSampleDataMapper;
|
||||
|
||||
@@ -6,10 +6,10 @@ import com.baomidou.mybatisplus.core.toolkit.StringUtils;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.deepoove.poi.xwpf.NiceXWPFDocument;
|
||||
import digital.laboratory.platform.common.oss.service.OssFile;
|
||||
import digital.laboratory.platform.inspection.constant.TestRecordFileUrl;
|
||||
import digital.laboratory.platform.inspection.enums.TestRecordFileUrl;
|
||||
import digital.laboratory.platform.inspection.dto.TestRecordArgumentDto;
|
||||
import digital.laboratory.platform.inspection.entity.TestRecordInstrumentCondition;
|
||||
import digital.laboratory.platform.inspection.constant.TestRecordArgumentType;
|
||||
import digital.laboratory.platform.inspection.enums.TestRecordArgumentType;
|
||||
import digital.laboratory.platform.inspection.mapper.TestRecordInstrumentConditionMapper;
|
||||
import digital.laboratory.platform.inspection.mapper.TestRecordMapper;
|
||||
import digital.laboratory.platform.inspection.mapper.TestTemplateMapper;
|
||||
|
||||
@@ -15,7 +15,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import digital.laboratory.platform.inspection.dto.TestRecordArgumentDto;
|
||||
import digital.laboratory.platform.inspection.entity.TestRecordInstrument;
|
||||
import digital.laboratory.platform.inspection.constant.TestRecordArgumentType;
|
||||
import digital.laboratory.platform.inspection.enums.TestRecordArgumentType;
|
||||
import digital.laboratory.platform.inspection.mapper.TestRecordInstrumentMapper;
|
||||
import digital.laboratory.platform.inspection.mapper.TestRecordMapper;
|
||||
import digital.laboratory.platform.inspection.mapper.TestTemplateMapper;
|
||||
|
||||
@@ -15,7 +15,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import digital.laboratory.platform.inspection.dto.TestRecordArgumentDto;
|
||||
import digital.laboratory.platform.inspection.entity.TestRecordMethod;
|
||||
import digital.laboratory.platform.inspection.constant.TestRecordArgumentType;
|
||||
import digital.laboratory.platform.inspection.enums.TestRecordArgumentType;
|
||||
import digital.laboratory.platform.inspection.mapper.TestRecordMapper;
|
||||
import digital.laboratory.platform.inspection.mapper.TestRecordMethodMapper;
|
||||
import digital.laboratory.platform.inspection.mapper.TestTemplateMapper;
|
||||
|
||||
@@ -7,11 +7,10 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import digital.laboratory.platform.common.aop.annotation.DlpResultProc;
|
||||
import digital.laboratory.platform.common.core.exception.CheckedException;
|
||||
import digital.laboratory.platform.inspection.convert.TestRecordReagentConvert;
|
||||
import digital.laboratory.platform.inspection.enums.TestRecordArgumentType;
|
||||
import digital.laboratory.platform.inspection.convert.TestRecordReagentConverter;
|
||||
import digital.laboratory.platform.inspection.dto.TestRecordArgumentDto;
|
||||
import digital.laboratory.platform.inspection.entity.TestRecordReagent;
|
||||
import digital.laboratory.platform.inspection.constant.TestRecordArgumentType;
|
||||
import digital.laboratory.platform.inspection.mapper.TestRecordMapper;
|
||||
import digital.laboratory.platform.inspection.mapper.TestRecordReagentMapper;
|
||||
import digital.laboratory.platform.inspection.mapper.TestTemplateMapper;
|
||||
@@ -20,8 +19,8 @@ import digital.laboratory.platform.inspection.service.TestRecordSampleDataServic
|
||||
import digital.laboratory.platform.inspection.service.TestRecordService;
|
||||
import digital.laboratory.platform.inspection.service.TestTemplateService;
|
||||
import digital.laboratory.platform.inspection.vo.TestRecordReagentVO;
|
||||
import digital.laboratory.platform.inspetion.api.vo.TestRecordVo;
|
||||
import digital.laboratory.platform.inspection.vo.TestTemplateVo;
|
||||
import digital.laboratory.platform.inspetion.api.vo.TestRecordVo;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
@@ -56,6 +55,17 @@ public class TestRecordReagentServiceImpl extends ServiceImpl<TestRecordReagentM
|
||||
@Resource
|
||||
private TestRecordSampleDataService testRecordSampleDataService;
|
||||
|
||||
/**
|
||||
* 根据id获取vo类
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
@DlpResultProc
|
||||
public TestRecordReagentVO getVOById(String id) {
|
||||
return TestRecordReagentConverter.entityToVO(super.getById(id));
|
||||
}
|
||||
|
||||
@Override
|
||||
public TestRecordReagent addTestRecordReagent(TestRecordReagent testRecordReagent) {
|
||||
if (StringUtils.isBlank(testRecordReagent.getId())) {
|
||||
@@ -180,7 +190,7 @@ public class TestRecordReagentServiceImpl extends ServiceImpl<TestRecordReagentM
|
||||
queryWrapper.in(TestRecordReagent::getId, reagentConsumablesList)
|
||||
.orderByDesc(TestRecordReagent::getUpdateTime);
|
||||
}
|
||||
return TestRecordReagentConvert.entityToVOPage(this.page(page, queryWrapper));
|
||||
return TestRecordReagentConverter.entityToVOPage(this.page(page, queryWrapper));
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -16,27 +16,35 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.google.common.collect.Lists;
|
||||
import digital.laboratory.platform.common.core.constant.CommonConstants;
|
||||
import digital.laboratory.platform.common.core.exception.CheckedException;
|
||||
import digital.laboratory.platform.common.core.util.R;
|
||||
import digital.laboratory.platform.common.mybatis.security.service.DLPUser;
|
||||
import digital.laboratory.platform.comservice.entity.DlpDictData;
|
||||
import digital.laboratory.platform.comservice.feign.RemoteDictDataService;
|
||||
import digital.laboratory.platform.inspection.constant.*;
|
||||
import digital.laboratory.platform.inspection.enums.BusinessType;
|
||||
import digital.laboratory.platform.inspection.enums.StdSolutionNum;
|
||||
import digital.laboratory.platform.inspection.enums.TaskTestDataStatus;
|
||||
import digital.laboratory.platform.inspection.constant.TestRecordSampleDataConstant;
|
||||
import digital.laboratory.platform.inspection.dto.*;
|
||||
import digital.laboratory.platform.inspection.entity.*;
|
||||
import digital.laboratory.platform.inspection.event.AuditDataExecutionEvent;
|
||||
import digital.laboratory.platform.inspection.event.FinishTestExecutionEvent;
|
||||
import digital.laboratory.platform.inspection.mapper.SampleInjectorMapper;
|
||||
import digital.laboratory.platform.inspection.mapper.TestRecordSampleDataMapper;
|
||||
import digital.laboratory.platform.inspection.query.AnalysisTestResultPageQuery;
|
||||
import digital.laboratory.platform.inspection.query.QueryTestResultPageQuery;
|
||||
import digital.laboratory.platform.inspection.service.*;
|
||||
import digital.laboratory.platform.inspection.utils.datafile.hair.HairSewageCompoundData;
|
||||
import digital.laboratory.platform.inspection.utils.datafile.nps.NPSDataFileStruct;
|
||||
import digital.laboratory.platform.inspection.utils.datafile.nps.NPSTestDetailDataStruct;
|
||||
import digital.laboratory.platform.inspection.vo.ESTBusinessInfoVO;
|
||||
import digital.laboratory.platform.inspection.vo.ResultConcentrationVO;
|
||||
import digital.laboratory.platform.inspection.vo.TestRecordReagentVO;
|
||||
import digital.laboratory.platform.inspection.vo.TestResultBusinessVO;
|
||||
import digital.laboratory.platform.inspetion.api.entity.EntrustInfo;
|
||||
import digital.laboratory.platform.inspetion.api.entity.SampleInfo;
|
||||
import digital.laboratory.platform.inspetion.api.entity.TestRecord;
|
||||
import digital.laboratory.platform.sys.entity.Drug;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.context.ApplicationContext;
|
||||
@@ -96,6 +104,9 @@ public class TestRecordSampleDataServiceImpl extends ServiceImpl<TestRecordSampl
|
||||
@Resource
|
||||
private ApplicationContext applicationContext;
|
||||
|
||||
@Resource
|
||||
private TestRecordReagentService testRecordReagentService;
|
||||
|
||||
/**
|
||||
* 校验实验状态是否完成,完成则提升不能修改数据
|
||||
*
|
||||
@@ -261,7 +272,7 @@ public class TestRecordSampleDataServiceImpl extends ServiceImpl<TestRecordSampl
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public Page<Object> getSampleTestDataByTestIdPage(AnalysisTestResultPageDTO pageDTO) {
|
||||
public Page<Object> getSampleTestDataByTestIdPage(AnalysisTestResultPageQuery pageDTO) {
|
||||
Page<TestRecordSampleData> page = this.page(new Page<>(pageDTO.getCurrent(), pageDTO.getSize()), Wrappers.<TestRecordSampleData>lambdaQuery()
|
||||
.eq(TestRecordSampleData::getTestId, pageDTO.getTestId())
|
||||
.orderByDesc(TestRecordSampleData::getCompoundName)
|
||||
@@ -367,7 +378,7 @@ public class TestRecordSampleDataServiceImpl extends ServiceImpl<TestRecordSampl
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public IPage<TestResultBusinessVO> queryTestResultPage(Page<TestResultBusinessVO> testResultBusinessVOPage, QueryTestResultPageDTO dto, Object... arg) {
|
||||
public IPage<TestResultBusinessVO> queryTestResultPage(Page<TestResultBusinessVO> testResultBusinessVOPage, QueryTestResultPageQuery dto, Object... arg) {
|
||||
DLPUser dlpUsers = (DLPUser) arg[0];
|
||||
IPage<TestResultBusinessVO> testResultBusinessVOIPage = new Page<>();
|
||||
/** 1 查询当前用户做了哪些实验
|
||||
@@ -1741,10 +1752,10 @@ public class TestRecordSampleDataServiceImpl extends ServiceImpl<TestRecordSampl
|
||||
* @param businessIdList
|
||||
* @return
|
||||
*/
|
||||
private QueryWrapper<TestResultBusinessVO> generateQueryWrapperByDTO(QueryTestResultPageDTO dto, Set<String> businessIdList) {
|
||||
private QueryWrapper<TestResultBusinessVO> generateQueryWrapperByDTO(QueryTestResultPageQuery dto, Set<String> businessIdList) {
|
||||
QueryWrapper<TestResultBusinessVO> queryWrapper = new QueryWrapper<>();
|
||||
// 获取查询的关键字字段
|
||||
String keyword = dto.getKeyword();
|
||||
String keyword = dto.getKeywords();
|
||||
queryWrapper.in("T.id", businessIdList);
|
||||
queryWrapper.eq("T.type", dto.getType());
|
||||
queryWrapper.ge("T.status", 3);
|
||||
@@ -1753,8 +1764,8 @@ public class TestRecordSampleDataServiceImpl extends ServiceImpl<TestRecordSampl
|
||||
.and(StrUtil.isNotBlank(keyword), wrapper ->
|
||||
wrapper.like("T.case_name", keyword));
|
||||
// 时间范围查询,包含开始时间和结束时间
|
||||
queryWrapper.ge(dto.getStartTime() != null, "T.create_time", dto.getStartTime())
|
||||
.le(dto.getEndTime() != null, "T.create_time", dto.getEndTime());
|
||||
queryWrapper.ge(dto.getStartDate() != null, "T.create_time", dto.getStartDate())
|
||||
.le(dto.getEndDate() != null, "T.create_time", dto.getEndDate());
|
||||
// 根据创建时间进行排序
|
||||
if (dto.getType().equals(20000)) {
|
||||
queryWrapper.orderByDesc("T.task_start_date");
|
||||
@@ -1779,74 +1790,89 @@ public class TestRecordSampleDataServiceImpl extends ServiceImpl<TestRecordSampl
|
||||
* 自动创建测试记录样本数据
|
||||
*
|
||||
* @param testId 测试记录的ID
|
||||
* @param compoundName 化合物名称
|
||||
* @param reagentId 化合物名称
|
||||
*/
|
||||
@Override
|
||||
public void autoCreateData(String testId, String compoundName) {
|
||||
// 根据测试记录ID获取测试记录对象
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void autoCreateData(String testId, String reagentId) {
|
||||
TestRecord testRecord = testRecordService.getById(testId);
|
||||
if (testRecord == null) {
|
||||
throw new CheckedException("Test record not found for ID: " + testId);
|
||||
}
|
||||
|
||||
TestRecordReagentVO reagentVO = testRecordReagentService.getVOById(reagentId);
|
||||
if (reagentVO == null) {
|
||||
throw new CheckedException("Reagent not found for ID: " + reagentId);
|
||||
}
|
||||
|
||||
Drug drug = reagentVO.getDrug();
|
||||
String compoundName = drug.getEnglishName();
|
||||
|
||||
// 从测试记录中获取样本测试ID列表
|
||||
List<String> sampleIdList = testRecord.getSampleTestList();
|
||||
|
||||
// 根据样本ID列表查询样本信息列表
|
||||
List<SampleInfo> sampleInfos = sampleInfoService.list(Wrappers.<SampleInfo>lambdaQuery()
|
||||
.in(SampleInfo::getId, sampleIdList));
|
||||
|
||||
// 用于存储生成的测试记录样本数据的列表
|
||||
ArrayList<TestRecordSampleData> sampleDataList = new ArrayList<>();
|
||||
List<TestRecordSampleData> sampleDataList = new ArrayList<>();
|
||||
|
||||
// 创建一个标准样本数据对象
|
||||
TestRecordSampleData data = new TestRecordSampleData();
|
||||
// 设置化合物名称
|
||||
data.setCompoundName(compoundName);
|
||||
// 设置样本编号,格式为 "STD-" 加上化合物名称
|
||||
data.setSampleNo("STD-" + compoundName);
|
||||
// 设置样本类型为 "STD"
|
||||
data.setSampleType("STD");
|
||||
// 设置样本名称,格式为 "STD-" 加上化合物名称
|
||||
data.setName("STD-" + compoundName);
|
||||
// 设置样本状态为 0
|
||||
data.setStatus(0);
|
||||
// 生成一个32位的大写UUID作为样本数据ID
|
||||
data.setId(IdWorker.get32UUID().toUpperCase());
|
||||
TestRecordSampleData stdSampleData = createSampleData(compoundName, TestRecordSampleDataConstant.SAMPLE_TYPE_STD, TestRecordSampleDataConstant.SAMPLE_TYPE_STD + "-" + compoundName);
|
||||
sampleDataList.add(stdSampleData);
|
||||
|
||||
// 将标准样本数据添加到样本数据列表中
|
||||
sampleDataList.add(data);
|
||||
|
||||
// 遍历样本信息列表,为每个样本创建对应的测试记录样本数据
|
||||
sampleInfos.forEach(item -> {
|
||||
TestRecordSampleData sampleData = new TestRecordSampleData();
|
||||
// 设置化合物名称
|
||||
data.setCompoundName(compoundName);
|
||||
// 设置样本编号为样本的受理编号
|
||||
data.setSampleNo(item.getAcceptNo());
|
||||
// 设置样本类型为 "Analyte"
|
||||
data.setSampleType("Analyte");
|
||||
// 设置样本名称为样本的受理编号
|
||||
data.setName(item.getAcceptNo());
|
||||
// 设置样本状态为 0
|
||||
data.setStatus(0);
|
||||
// 生成一个32位的大写UUID作为样本数据ID
|
||||
data.setId(IdWorker.get32UUID().toUpperCase());
|
||||
// 将样本数据添加到样本数据列表中
|
||||
sampleDataList.add(data);
|
||||
TestRecordSampleData sampleData = createSampleData(compoundName, TestRecordSampleDataConstant.SAMPLE_TYPE_ANALYTE, item.getAcceptNo());
|
||||
sampleDataList.add(sampleData);
|
||||
});
|
||||
|
||||
if (drug != null && StrUtil.isAllNotBlank(drug.getMainProductIon(), drug.getMinorProductIon(), drug.getCharacteristicIons())) {
|
||||
// 当对应的毒品信息不为空,添加扩展数据
|
||||
List<TestRecordSampleDataExpand> testRecordSampleDataExpandList = sampleDataList.stream().flatMap(sampleData -> {
|
||||
List<TestRecordSampleDataExpand> testRecordSampleDataExpand = testRecordSampledataExpandService.saveExpDataByBusinessType(sampleData.getId(), drug, testRecord.getBusinessType());
|
||||
return testRecordSampleDataExpand.stream();
|
||||
}).collect(Collectors.toList());
|
||||
testRecordSampledataExpandService.saveBatch(testRecordSampleDataExpandList);
|
||||
}
|
||||
super.saveBatch(sampleDataList);
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建一个检验数据样本数据对象
|
||||
*
|
||||
* @param compoundName 化合物名称
|
||||
* @param sampleType 样本类型
|
||||
* @param sampleNo 样本编号
|
||||
* @return 返回创建的测试记录样本数据对象
|
||||
*/
|
||||
private TestRecordSampleData createSampleData(String compoundName, String sampleType, String sampleNo) {
|
||||
TestRecordSampleData data = new TestRecordSampleData();
|
||||
data.setCompoundName(compoundName);
|
||||
data.setSampleNo(sampleNo);
|
||||
data.setSampleType(sampleType);
|
||||
data.setName(sampleNo);
|
||||
data.setStatus(TaskTestDataStatus.WAIT_REVIEW.getCode());
|
||||
data.setId(IdWorker.getIdStr());
|
||||
return data;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 自动删除指定测试记录和化合物名称对应的测试记录样本数据
|
||||
*
|
||||
* @param testId 测试记录的ID
|
||||
* @param compoundName 化合物名称
|
||||
* @param reagentId 化合物名称
|
||||
* @return 如果删除成功返回 true,否则返回 false
|
||||
*/
|
||||
@Override
|
||||
public boolean autoDelData(String testId, String compoundName) {
|
||||
// 根据测试记录ID和化合物名称删除对应的测试记录样本数据
|
||||
return this.remove(Wrappers.<TestRecordSampleData>lambdaQuery()
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public boolean autoDelData(String testId, String reagentId) {
|
||||
TestRecordReagentVO reagentVO = testRecordReagentService.getVOById(reagentId);
|
||||
Drug drug = reagentVO.getDrug();
|
||||
String compoundName = drug.getName();
|
||||
List<TestRecordSampleData> removeDataList = this.list(Wrappers.<TestRecordSampleData>lambdaQuery()
|
||||
.eq(TestRecordSampleData::getTestId, testId)
|
||||
.eq(TestRecordSampleData::getCompoundName, compoundName));
|
||||
List<String> removeIds = removeDataList.stream().map(TestRecordSampleData::getId).collect(Collectors.toList());
|
||||
// 根据测试记录ID和化合物名称删除对应的测试记录样本数据
|
||||
testRecordSampledataExpandService.remove(Wrappers.<TestRecordSampleDataExpand>lambdaQuery().in(TestRecordSampleDataExpand::getTestDataId, removeIds));
|
||||
return this.removeBatchByIds(removeIds);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -15,7 +15,7 @@ import digital.laboratory.platform.inspection.dto.TestRecordSampleSolutionDto;
|
||||
import digital.laboratory.platform.inspetion.api.entity.SampleInfo;
|
||||
import digital.laboratory.platform.inspection.entity.SampleInjector;
|
||||
import digital.laboratory.platform.inspection.entity.TestRecordSampleSolution;
|
||||
import digital.laboratory.platform.inspection.constant.TestRecordArgumentType;
|
||||
import digital.laboratory.platform.inspection.enums.TestRecordArgumentType;
|
||||
import digital.laboratory.platform.inspection.mapper.TestRecordMapper;
|
||||
import digital.laboratory.platform.inspection.mapper.TestRecordSampleSolutionMapper;
|
||||
import digital.laboratory.platform.inspection.service.SampleInfoService;
|
||||
|
||||
@@ -1,17 +1,26 @@
|
||||
package digital.laboratory.platform.inspection.service.impl;
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.baomidou.mybatisplus.core.toolkit.IdWorker;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import digital.laboratory.platform.inspection.convert.TestSampleDataExpandConverter;
|
||||
import digital.laboratory.platform.inspection.dto.TestSampleDataExpandDTO;
|
||||
import digital.laboratory.platform.inspection.entity.TestRecordSampleData;
|
||||
import digital.laboratory.platform.inspection.enums.BusinessType;
|
||||
import digital.laboratory.platform.inspection.constant.TestRecordSampleDataConstant;
|
||||
import digital.laboratory.platform.inspection.dto.HairSewageDataDto;
|
||||
import digital.laboratory.platform.inspection.dto.NPSCaseTestDataDto;
|
||||
import digital.laboratory.platform.inspection.entity.TestRecordSampleDataExpand;
|
||||
import digital.laboratory.platform.inspection.mapper.TestRecordSampleDataExpandMapper;
|
||||
import digital.laboratory.platform.inspection.service.TestRecordSampleDataService;
|
||||
import digital.laboratory.platform.inspection.service.TestRecordSampledataExpandService;
|
||||
import digital.laboratory.platform.inspection.utils.datafile.nps.NPSTestDetailDataStruct;
|
||||
import digital.laboratory.platform.sys.entity.Drug;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
@@ -27,6 +36,9 @@ import java.util.stream.Collectors;
|
||||
public class TestRecordSampledataExpandServiceImpl extends ServiceImpl<TestRecordSampleDataExpandMapper, TestRecordSampleDataExpand>
|
||||
implements TestRecordSampledataExpandService{
|
||||
|
||||
@Resource
|
||||
private TestRecordSampleDataService testRecordSampleDataService;
|
||||
|
||||
/**
|
||||
* 封装处理毛发案件、任务等检验扩展数据信息
|
||||
* @param hairSewageDataDto
|
||||
@@ -80,6 +92,94 @@ public class TestRecordSampledataExpandServiceImpl extends ServiceImpl<TestRecor
|
||||
return testRecordSampleDataExpandList;
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据业务类型保存检验数据扩展信息
|
||||
* @param testDataId 检验数据id
|
||||
* @param drug 对应的标准品毒品清单
|
||||
* @param businessType 业务类型
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public List<TestRecordSampleDataExpand> saveExpDataByBusinessType(String testDataId, Drug drug, String businessType) {
|
||||
List<TestRecordSampleDataExpand> testRecordSampleDataExpandList = null;
|
||||
if (BusinessType.NPS_CASE.getBusinessType().equals(businessType)) {
|
||||
List<String> characteristicIonsList = StrUtil.split(drug.getCharacteristicIons(), "、");
|
||||
|
||||
testRecordSampleDataExpandList = characteristicIonsList.stream().map(characteristicIons -> {
|
||||
TestRecordSampleDataExpand testRecordSampleDataExpand = new TestRecordSampleDataExpand();
|
||||
testRecordSampleDataExpand.setTestDataId(testDataId);
|
||||
if (characteristicIons.contains("*")) {
|
||||
testRecordSampleDataExpand.setBasePeak(Boolean.TRUE);
|
||||
} else {
|
||||
testRecordSampleDataExpand.setBasePeak(Boolean.FALSE);
|
||||
}
|
||||
// 如果有 * 号就替换掉
|
||||
testRecordSampleDataExpand.setMassToChargeRatio(new BigDecimal(characteristicIons.replace("*", "")));
|
||||
return testRecordSampleDataExpand;
|
||||
}).collect(Collectors.toList());
|
||||
} else {
|
||||
for (int i = 0; i < 2; i++) {
|
||||
TestRecordSampleDataExpand testRecordSampleDataExpand = new TestRecordSampleDataExpand();
|
||||
testRecordSampleDataExpand.setTestDataId(testDataId);
|
||||
if (i == 0) {
|
||||
testRecordSampleDataExpand.setBasePeak(Boolean.TRUE);
|
||||
testRecordSampleDataExpand.setQualitativeIonPair(drug.getMainProductIon());
|
||||
} else {
|
||||
testRecordSampleDataExpand.setBasePeak(Boolean.FALSE);
|
||||
testRecordSampleDataExpand.setQualitativeIonPair(drug.getMinorProductIon());
|
||||
}
|
||||
testRecordSampleDataExpandList.add(testRecordSampleDataExpand);
|
||||
}
|
||||
}
|
||||
|
||||
return testRecordSampleDataExpandList;
|
||||
}
|
||||
|
||||
/**
|
||||
*根据DTO去更新
|
||||
* @param updateDTO
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public Boolean updateByDTO(TestSampleDataExpandDTO updateDTO) {
|
||||
TestRecordSampleDataExpand testRecordSampleDataExpand = TestSampleDataExpandConverter.dtoToEntity(updateDTO);
|
||||
boolean update = super.updateById(testRecordSampleDataExpand);
|
||||
if (update) {
|
||||
TestRecordSampleDataExpand sampleDataExpand = super.getById(updateDTO.getId());
|
||||
// 查询对应的基峰数据是否存在
|
||||
TestRecordSampleDataExpand basePeakData = super.getOne(Wrappers.<TestRecordSampleDataExpand>lambdaQuery()
|
||||
.eq(TestRecordSampleDataExpand::getTestDataId, sampleDataExpand.getTestDataId())
|
||||
.eq(TestRecordSampleDataExpand::getBasePeak, Boolean.TRUE)
|
||||
);
|
||||
if (!sampleDataExpand.getBasePeak() && basePeakData != null) {
|
||||
// 获取标准物质的扩展信息,1 先查询对应的实验数据 2 根据实验数据的实验id以及化合物以及类型获取标准物质的实验数据信息 3 根据标准物质实验数据id取对应的扩展数据
|
||||
TestRecordSampleData testRecordSampleData = testRecordSampleDataService.getById(sampleDataExpand.getTestDataId());
|
||||
List<TestRecordSampleDataExpand> stdDataExpandList = null;
|
||||
if (!testRecordSampleData.getSampleType().equals(TestRecordSampleDataConstant.SAMPLE_TYPE_STD)) {
|
||||
TestRecordSampleData stdTestSampleData = testRecordSampleDataService.getOne(Wrappers.<TestRecordSampleData>lambdaQuery().eq(TestRecordSampleData::getTestId, testRecordSampleData.getTestId()).eq(TestRecordSampleData::getCompoundName, testRecordSampleData.getCompoundName()).eq(TestRecordSampleData::getSampleType, TestRecordSampleDataConstant.SAMPLE_TYPE_STD));
|
||||
stdDataExpandList = super.list(Wrappers.<TestRecordSampleDataExpand>lambdaQuery().eq(TestRecordSampleDataExpand::getTestDataId, stdTestSampleData.getId()));
|
||||
}
|
||||
if (sampleDataExpand.getPeakArea() != null && basePeakData.getPeakArea() != null) {
|
||||
sampleDataExpand.setIonAbundanceRatio(sampleDataExpand.getPeakArea().divide(basePeakData.getPeakArea(), 5, BigDecimal.ROUND_HALF_UP));
|
||||
if (CollUtil.isNotEmpty(stdDataExpandList)) {
|
||||
stdDataExpandList.forEach(stdDataExpand -> {
|
||||
if (stdDataExpand.getMassToChargeRatio().equals(sampleDataExpand.getMassToChargeRatio())) {
|
||||
BigDecimal ionAbundanceRatioError = sampleDataExpand.getIonAbundanceRatio()
|
||||
.subtract(stdDataExpand.getIonAbundanceRatio())
|
||||
.divide(stdDataExpand.getIonAbundanceRatio(), 5, BigDecimal.ROUND_HALF_UP)
|
||||
.multiply(BigDecimal.valueOf(100));
|
||||
sampleDataExpand.setIonAbundanceRatioError(ionAbundanceRatioError);
|
||||
// sampleDataExpand.setIonAbundanceRatioWithinError();
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
return update;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 根据提供的参数创建一个TestRecordSampleDataExpand对象。
|
||||
|
||||
@@ -16,9 +16,9 @@ import com.deepoove.poi.xwpf.NiceXWPFDocument;
|
||||
import digital.laboratory.platform.common.core.util.R;
|
||||
import digital.laboratory.platform.common.mybatis.security.service.DLPUser;
|
||||
import digital.laboratory.platform.common.oss.service.OssFile;
|
||||
import digital.laboratory.platform.inspection.constant.BusinessType;
|
||||
import digital.laboratory.platform.inspection.constant.TestRecordArgumentType;
|
||||
import digital.laboratory.platform.inspection.constant.TestRecordFileUrl;
|
||||
import digital.laboratory.platform.inspection.enums.BusinessType;
|
||||
import digital.laboratory.platform.inspection.enums.TestRecordArgumentType;
|
||||
import digital.laboratory.platform.inspection.enums.TestRecordFileUrl;
|
||||
import digital.laboratory.platform.inspection.constant.TestRecordSampleDataConstant;
|
||||
import digital.laboratory.platform.inspection.dto.*;
|
||||
import digital.laboratory.platform.inspection.entity.*;
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
package digital.laboratory.platform.inspection.service.impl;
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.date.LocalDateTimeUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
@@ -10,12 +9,12 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import digital.laboratory.platform.common.core.util.R;
|
||||
import digital.laboratory.platform.inspection.constant.StdSolutionNum;
|
||||
import digital.laboratory.platform.inspection.enums.StdSolutionNum;
|
||||
import digital.laboratory.platform.inspection.constant.TestRecordSampleDataConstant;
|
||||
import digital.laboratory.platform.inspection.dto.TestRecordStandardSolutionDto;
|
||||
import digital.laboratory.platform.inspetion.api.entity.TestRecord;
|
||||
import digital.laboratory.platform.inspection.entity.TestRecordStandardSolution;
|
||||
import digital.laboratory.platform.inspection.constant.TestRecordArgumentType;
|
||||
import digital.laboratory.platform.inspection.enums.TestRecordArgumentType;
|
||||
import digital.laboratory.platform.inspection.mapper.TestRecordStandardSolutionMapper;
|
||||
import digital.laboratory.platform.inspection.service.TestRecordReagentService;
|
||||
import digital.laboratory.platform.inspection.service.TestRecordService;
|
||||
|
||||
@@ -9,10 +9,10 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import digital.laboratory.platform.common.mybatis.security.service.DLPUser;
|
||||
import digital.laboratory.platform.common.oss.service.OssFile;
|
||||
import digital.laboratory.platform.inspection.constant.TestRecordFileUrl;
|
||||
import digital.laboratory.platform.inspection.enums.TestRecordFileUrl;
|
||||
import digital.laboratory.platform.inspection.entity.TestRecordMethod;
|
||||
import digital.laboratory.platform.inspection.entity.TestTemplate;
|
||||
import digital.laboratory.platform.inspection.constant.TestRecordArgumentType;
|
||||
import digital.laboratory.platform.inspection.enums.TestRecordArgumentType;
|
||||
import digital.laboratory.platform.inspection.mapper.TestRecordMapper;
|
||||
import digital.laboratory.platform.inspection.mapper.TestTemplateMapper;
|
||||
import digital.laboratory.platform.inspection.service.TestRecordInstrumentConditionService;
|
||||
|
||||
Reference in New Issue
Block a user