20250324 更新

master
陈江保 5 days ago
parent ef56c2b675
commit 949e66b636
  1. 4
      dlp-drugtesting-biz/src/main/java/digital/laboratory/platform/inspection/controller/EntrustInfoController.java
  2. 4
      dlp-drugtesting-biz/src/main/java/digital/laboratory/platform/inspection/controller/TestRecordInstrumentConditionController.java
  3. 10
      dlp-drugtesting-biz/src/main/java/digital/laboratory/platform/inspection/controller/TestRecordSampleDataController.java
  4. 48
      dlp-drugtesting-biz/src/main/java/digital/laboratory/platform/inspection/controller/TestRecordSampleDataExpandController.java
  5. 6
      dlp-drugtesting-biz/src/main/java/digital/laboratory/platform/inspection/convert/TestRecordReagentConverter.java
  6. 33
      dlp-drugtesting-biz/src/main/java/digital/laboratory/platform/inspection/convert/TestSampleDataExpandConverter.java
  7. 43
      dlp-drugtesting-biz/src/main/java/digital/laboratory/platform/inspection/dto/QueryTestResultPageDTO.java
  8. 46
      dlp-drugtesting-biz/src/main/java/digital/laboratory/platform/inspection/dto/TestSampleDataExpandDTO.java
  9. 2
      dlp-drugtesting-biz/src/main/java/digital/laboratory/platform/inspection/enums/BusinessType.java
  10. 2
      dlp-drugtesting-biz/src/main/java/digital/laboratory/platform/inspection/enums/CompoundMassKV.java
  11. 2
      dlp-drugtesting-biz/src/main/java/digital/laboratory/platform/inspection/enums/MaterialType.java
  12. 2
      dlp-drugtesting-biz/src/main/java/digital/laboratory/platform/inspection/enums/NumberTransferHanZi.java
  13. 2
      dlp-drugtesting-biz/src/main/java/digital/laboratory/platform/inspection/enums/SewageCompoundNameTransform.java
  14. 3
      dlp-drugtesting-biz/src/main/java/digital/laboratory/platform/inspection/enums/SewageReportColumn.java
  15. 2
      dlp-drugtesting-biz/src/main/java/digital/laboratory/platform/inspection/enums/StdSolutionNum.java
  16. 2
      dlp-drugtesting-biz/src/main/java/digital/laboratory/platform/inspection/enums/TaskTestDataStatus.java
  17. 2
      dlp-drugtesting-biz/src/main/java/digital/laboratory/platform/inspection/enums/TestDataType.java
  18. 2
      dlp-drugtesting-biz/src/main/java/digital/laboratory/platform/inspection/enums/TestRecordArgumentType.java
  19. 2
      dlp-drugtesting-biz/src/main/java/digital/laboratory/platform/inspection/enums/TestRecordFileUrl.java
  20. 26
      dlp-drugtesting-biz/src/main/java/digital/laboratory/platform/inspection/event/CalculateInspectDataEvent.java
  21. 18
      dlp-drugtesting-biz/src/main/java/digital/laboratory/platform/inspection/query/AnalysisTestResultPageQuery.java
  22. 36
      dlp-drugtesting-biz/src/main/java/digital/laboratory/platform/inspection/query/BaseQuery.java
  23. 22
      dlp-drugtesting-biz/src/main/java/digital/laboratory/platform/inspection/query/QueryTestResultPageQuery.java
  24. 15
      dlp-drugtesting-biz/src/main/java/digital/laboratory/platform/inspection/service/TestRecordReagentService.java
  25. 11
      dlp-drugtesting-biz/src/main/java/digital/laboratory/platform/inspection/service/TestRecordSampleDataService.java
  26. 20
      dlp-drugtesting-biz/src/main/java/digital/laboratory/platform/inspection/service/TestRecordSampledataExpandService.java
  27. 2
      dlp-drugtesting-biz/src/main/java/digital/laboratory/platform/inspection/service/impl/AssignmentInfoServiceImpl.java
  28. 4
      dlp-drugtesting-biz/src/main/java/digital/laboratory/platform/inspection/service/impl/InspectRecordServiceImpl.java
  29. 2
      dlp-drugtesting-biz/src/main/java/digital/laboratory/platform/inspection/service/impl/SampleInfoServiceImpl.java
  30. 2
      dlp-drugtesting-biz/src/main/java/digital/laboratory/platform/inspection/service/impl/SampleInjectorServiceImpl.java
  31. 2
      dlp-drugtesting-biz/src/main/java/digital/laboratory/platform/inspection/service/impl/SewageDrugInspectReportServiceImpl.java
  32. 5
      dlp-drugtesting-biz/src/main/java/digital/laboratory/platform/inspection/service/impl/TaskInfoServiceImpl.java
  33. 2
      dlp-drugtesting-biz/src/main/java/digital/laboratory/platform/inspection/service/impl/TestAtlasServiceImpl.java
  34. 4
      dlp-drugtesting-biz/src/main/java/digital/laboratory/platform/inspection/service/impl/TestRecordInstrumentConditionServiceImpl.java
  35. 2
      dlp-drugtesting-biz/src/main/java/digital/laboratory/platform/inspection/service/impl/TestRecordInstrumentServiceImpl.java
  36. 2
      dlp-drugtesting-biz/src/main/java/digital/laboratory/platform/inspection/service/impl/TestRecordMethodServiceImpl.java
  37. 20
      dlp-drugtesting-biz/src/main/java/digital/laboratory/platform/inspection/service/impl/TestRecordReagentServiceImpl.java
  38. 132
      dlp-drugtesting-biz/src/main/java/digital/laboratory/platform/inspection/service/impl/TestRecordSampleDataServiceImpl.java
  39. 2
      dlp-drugtesting-biz/src/main/java/digital/laboratory/platform/inspection/service/impl/TestRecordSampleSolutionServiceImpl.java
  40. 100
      dlp-drugtesting-biz/src/main/java/digital/laboratory/platform/inspection/service/impl/TestRecordSampledataExpandServiceImpl.java
  41. 6
      dlp-drugtesting-biz/src/main/java/digital/laboratory/platform/inspection/service/impl/TestRecordServiceImpl.java
  42. 5
      dlp-drugtesting-biz/src/main/java/digital/laboratory/platform/inspection/service/impl/TestRecordStandardSolutionServiceImpl.java
  43. 4
      dlp-drugtesting-biz/src/main/java/digital/laboratory/platform/inspection/service/impl/TestTemplateServiceImpl.java

@ -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;
public enum MaterialType {

@ -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"),

@ -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);
}
// 从测试记录中获取样本测试ID列表
List<String> sampleIdList = testRecord.getSampleTestList();
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();
List<SampleInfo> sampleInfos = sampleInfoService.list(Wrappers.<SampleInfo>lambdaQuery()
.in(SampleInfo::getId, sampleIdList));
// 用于存储生成的测试记录样本数据的列表
ArrayList<TestRecordSampleData> sampleDataList = new ArrayList<>();
List<TestRecordSampleData> sampleDataList = new ArrayList<>();
TestRecordSampleData stdSampleData = createSampleData(compoundName, TestRecordSampleDataConstant.SAMPLE_TYPE_STD, TestRecordSampleDataConstant.SAMPLE_TYPE_STD + "-" + compoundName);
sampleDataList.add(stdSampleData);
// 创建一个标准样本数据对象
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());
// 将标准样本数据添加到样本数据列表中
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;

Loading…
Cancel
Save