From f1361ac84d13d68e180f0e460a5fd0ec86e9762d Mon Sep 17 00:00:00 2001 From: chen <2710907404@qq.com> Date: Tue, 5 Nov 2024 14:56:54 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../enums/AnalysisOptionEnums.java | 49 ++++ .../enums/EntrustAlterApplyStatus.java | 2 +- .../impl/EntrustAlterApplyServiceImpl.java | 6 +- ...mentIdentificationMaterialServiceImpl.java | 215 ++++++++---------- .../service/impl/EntrustmentServiceImpl.java | 7 +- .../entrustment/utils/EntrustUtils.java | 28 --- 6 files changed, 146 insertions(+), 161 deletions(-) create mode 100644 src/main/java/digital/laboratory/platform/entrustment/enums/AnalysisOptionEnums.java delete mode 100644 src/main/java/digital/laboratory/platform/entrustment/utils/EntrustUtils.java diff --git a/src/main/java/digital/laboratory/platform/entrustment/enums/AnalysisOptionEnums.java b/src/main/java/digital/laboratory/platform/entrustment/enums/AnalysisOptionEnums.java new file mode 100644 index 0000000..09aae07 --- /dev/null +++ b/src/main/java/digital/laboratory/platform/entrustment/enums/AnalysisOptionEnums.java @@ -0,0 +1,49 @@ +package digital.laboratory.platform.entrustment.enums; + +import lombok.Getter; + +/** + * 分析项目枚举 + */ +@Getter +public enum AnalysisOptionEnums { + + QUALITATIVE(1, "定性", "qualitative"), + + RATION(2, "定量", "ration"), + + QUALITATIVE_AND_RATION(3, "定性定量", "qualitativeAndRation"), + + RELEVANCE(4, "关联性", "relevance"), + + OTHER(4, "其他", "other"), + ; + + private final Integer code; + + private final String chineseName; + + private final String englishName; + + AnalysisOptionEnums(Integer code, String chineseName, String englishName) { + this.code = code; + this.chineseName = chineseName; + this.englishName = englishName; + } + + /** + * 根据状态码获取对应的枚举值 + * + * @param code 状态码 + * @return 对应的枚举值 + * @throws IllegalArgumentException 当给定的状态码没有对应的枚举值时抛出此异常 + */ + public static AnalysisOptionEnums fromCode(Integer code) { + for (AnalysisOptionEnums analysisOptionEnums : values()) { + if (analysisOptionEnums.getCode().equals(code)) { + return analysisOptionEnums; + } + } + throw new IllegalArgumentException("No enum constant with code: " + code); + } +} diff --git a/src/main/java/digital/laboratory/platform/entrustment/enums/EntrustAlterApplyStatus.java b/src/main/java/digital/laboratory/platform/entrustment/enums/EntrustAlterApplyStatus.java index c318057..4a5e4ee 100644 --- a/src/main/java/digital/laboratory/platform/entrustment/enums/EntrustAlterApplyStatus.java +++ b/src/main/java/digital/laboratory/platform/entrustment/enums/EntrustAlterApplyStatus.java @@ -22,7 +22,7 @@ public enum EntrustAlterApplyStatus { this.desc = desc; } - // 根据名称获取指纹类型 + // 根据名称获取状态值 public static EntrustAlterApplyStatus fromStatus(Integer status) { for (EntrustAlterApplyStatus entrustAlterApplyStatus : values()) { if (entrustAlterApplyStatus.getStatus().equals(status)) { diff --git a/src/main/java/digital/laboratory/platform/entrustment/service/impl/EntrustAlterApplyServiceImpl.java b/src/main/java/digital/laboratory/platform/entrustment/service/impl/EntrustAlterApplyServiceImpl.java index c826646..8b257a3 100644 --- a/src/main/java/digital/laboratory/platform/entrustment/service/impl/EntrustAlterApplyServiceImpl.java +++ b/src/main/java/digital/laboratory/platform/entrustment/service/impl/EntrustAlterApplyServiceImpl.java @@ -20,11 +20,11 @@ import digital.laboratory.platform.entrustment.entity.CaseEvent; import digital.laboratory.platform.entrustment.entity.EntrustAlterApply; import digital.laboratory.platform.entrustment.entity.Entrustment; import digital.laboratory.platform.entrustment.entity.EntrustmentIdentificationMaterial; +import digital.laboratory.platform.entrustment.enums.AnalysisOptionEnums; import digital.laboratory.platform.entrustment.enums.EntrustAlterApplyStatus; import digital.laboratory.platform.entrustment.mapper.EntrustAlterApplyMapper; import digital.laboratory.platform.entrustment.query.EntrustAlterApplyQuery; import digital.laboratory.platform.entrustment.service.*; -import digital.laboratory.platform.entrustment.utils.EntrustUtils; import digital.laboratory.platform.entrustment.vo.EntrustAlterApplyVO; import digital.laboratory.platform.sys.entity.DrugLite; import org.springframework.stereotype.Service; @@ -254,9 +254,9 @@ public class EntrustAlterApplyServiceImpl extends ServiceImpl candidateDrugs = identificationMaterial.getCandidateDrugs(); - List stringList = new ArrayList<>(); - for (DrugLite candidateDrug : candidateDrugs) { - String name = candidateDrug.getName(); - stringList.add(name); - } - String listJSONString = JSON.toJSONString(stringList); - entrustMaterialOfThirdSys.setTargetObjectTypeList(listJSONString); - String analysisType = ""; - switch (identificationMaterial.getAnalysisOption()) { - case 1: - analysisType = "qualitative"; - break; - case 2: - analysisType = "ration"; - break; - case 3: - analysisType = "qualitativeAndRation"; - break; - case 4: - analysisType = "relevance"; - break; - case 5: - analysisType = "other"; - break; - } - entrustMaterialOfThirdSys.setAnalysisType(analysisType); + entrustMaterialOfThirdSys.setTargetObjectTypeList(JSON.toJSONString(candidateDrugs.stream().map(DrugLite::getName).collect(Collectors.toList()))); + entrustMaterialOfThirdSys.setAnalysisType(AnalysisOptionEnums.fromCode(identificationMaterial.getAnalysisOption()).getEnglishName()); synchronizeMaterialVoService.updateById(entrustMaterialOfThirdSys); } @@ -1269,74 +1246,15 @@ public class EntrustmentIdentificationMaterialServiceImpl extends ServiceImpl().eq(EntrustOfThirdSys::getEntrustMainId, entrustment.getId())); - EntrustMaterialOfThirdSys entrustMaterialOfThirdSys = new EntrustMaterialOfThirdSys(); - entrustMaterialOfThirdSys.setEntrustId(entrustOfThirdSys.getId()); - entrustMaterialOfThirdSys.setId(id); - List list = synchronizeMaterialVoService.list(new LambdaQueryWrapper().eq(EntrustMaterialOfThirdSys::getEntrustId, entrustOfThirdSys.getId())); - entrustMaterialOfThirdSys.setOrder_index(((Integer) (list.size() + 1)).toString()); - entrustMaterialOfThirdSys.setName(identificationMaterial.getName()); - String unitByZhCn = ConvertUtils.getUnitByZhCn(identificationMaterial.getUnit()); - entrustMaterialOfThirdSys.setUnit(unitByZhCn); - entrustMaterialOfThirdSys.setSampleUnit(unitByZhCn); - entrustMaterialOfThirdSys.setColorType(identificationMaterial.getColor()); - entrustMaterialOfThirdSys.setShapeType(entrustmentMapper.getTypeForDictionary(identificationMaterial.getType())); - entrustMaterialOfThirdSys.setPackageType(identificationMaterial.getPackName()); - entrustMaterialOfThirdSys.setAmount(identificationMaterial.getQuantity()); - List candidateDrugs = identificationMaterial.getCandidateDrugs(); - List stringList = new ArrayList<>(); - - for (DrugLite candidateDrug : candidateDrugs) { - String name = candidateDrug.getName(); - stringList.add(name); - } - String listJSONString = JSON.toJSONString(stringList); - entrustMaterialOfThirdSys.setTargetObjectTypeList(listJSONString); - String analysisType = ""; - switch (identificationMaterial.getAnalysisOption()) { - case 1: - analysisType = "qualitative"; - break; - case 2: - analysisType = "ration"; - break; - case 3: - analysisType = "qualitativeAndRation"; - break; - case 4: - analysisType = "relevance"; - break; - case 5: - analysisType = "other"; - break; - } - entrustMaterialOfThirdSys.setAnalysisType(analysisType); - synchronizeMaterialVoService.save(entrustMaterialOfThirdSys); + saveEntrustMaterialToThirdSys(identificationMaterial, entrustment, id); } String entrustmentId = identificationMaterial.getEntrustmentId(); - - if (StrUtil.isBlank(identificationMaterial.getCaseId())) { - throw new RuntimeException(String.format("检材必须与某个案件关联, 必须提供 caseId")); - } - CaseEvent cj = caseEventService.getById(identificationMaterial.getCaseId()); - if (cj == null) { - throw new RuntimeException(String.format("不存在 id 为 %s 的案件", identificationMaterial.getCaseId())); - } - if (StrUtil.isBlank(cj.getCaseNo())) { - throw new RuntimeException(String.format("对应的案件资料不完整, 不存在案件编号。请先完善案件资料")); - } + // 校验案件信息是否合法 + CaseEvent cj = validateCaseInfo(identificationMaterial); ////若提前创建好了物证,则关联通过物证编号关联检材编号即可; - if (StrUtil.isNotBlank(identificationMaterial.getEvidenceId())) { - CaseEvidence caseEvidence = caseEvidenceService.getById(identificationMaterial.getEvidenceId()); - identificationMaterial.setImNo(this.getNewIdentificationMaterialNo(caseEvidence.getEvidenceNo())); - - } else { - String newEvidenceCode = caseEvidenceService.getNewEvidenceCode(cj.getCaseNo()); - String materialNo = this.getNewIdentificationMaterialNo(newEvidenceCode); - identificationMaterial.setImNo(materialNo); - } + setMaterialIdentificationNo(identificationMaterial, cj); Boolean copyAttachemnts = false; if (copyAttachemnts == null) { copyAttachemnts = false; @@ -1398,10 +1316,7 @@ public class EntrustmentIdentificationMaterialServiceImpl extends ServiceImpl printLabel(List printDTOList) { @@ -1592,13 +1508,7 @@ public class EntrustmentIdentificationMaterialServiceImpl extends ServiceImpl list) { if (list != null && list.size() > 0) { for (EntrustmentIdentificationMaterial material : list) { Integer analysisOption = material.getAnalysisOption(); material.setQuantity(material.getQuantity().setScale(2, BigDecimal.ROUND_HALF_UP)); - switch (analysisOption) { - case 1: - material.setAnalysisOptionValue("定性分析"); - break; - case 2: - material.setAnalysisOptionValue("定量分析"); - break; - case 3: - material.setAnalysisOptionValue("定性定量分析"); - break; - case 4: - material.setAnalysisOptionValue("关联性判断"); - break; - case 5: - material.setAnalysisOptionValue("其他"); - break; - } + material.setAnalysisOptionValue(AnalysisOptionEnums.fromCode(analysisOption).getChineseName()); material.setPrintDrawTime(LocalDateTimeUtil.format(material.getDrawTime(), "yyyy-MM-dd")); List candidateDrugs = material.getCandidateDrugs(); String drugsValue = ""; @@ -1692,4 +1591,70 @@ public class EntrustmentIdentificationMaterialServiceImpl extends ServiceImpl().eq(EntrustOfThirdSys::getEntrustMainId, entrustment.getId())); + EntrustMaterialOfThirdSys entrustMaterialOfThirdSys = new EntrustMaterialOfThirdSys(); + entrustMaterialOfThirdSys.setEntrustId(entrustOfThirdSys.getId()); + entrustMaterialOfThirdSys.setId(id); + List list = synchronizeMaterialVoService.list(new LambdaQueryWrapper().eq(EntrustMaterialOfThirdSys::getEntrustId, entrustOfThirdSys.getId())); + entrustMaterialOfThirdSys.setOrder_index(((Integer) (list.size() + 1)).toString()); + entrustMaterialOfThirdSys.setName(identificationMaterial.getName()); + String unitByZhCn = ConvertUtils.getUnitByZhCn(identificationMaterial.getUnit()); + entrustMaterialOfThirdSys.setUnit(unitByZhCn); + entrustMaterialOfThirdSys.setSampleUnit(unitByZhCn); + entrustMaterialOfThirdSys.setColorType(identificationMaterial.getColor()); + entrustMaterialOfThirdSys.setShapeType(entrustmentMapper.getTypeForDictionary(identificationMaterial.getType())); + entrustMaterialOfThirdSys.setPackageType(identificationMaterial.getPackName()); + entrustMaterialOfThirdSys.setAmount(identificationMaterial.getQuantity()); + List candidateDrugs = identificationMaterial.getCandidateDrugs(); + + entrustMaterialOfThirdSys.setTargetObjectTypeList(JSON.toJSONString(candidateDrugs.stream().map(DrugLite::getName).collect(Collectors.toList()))); + entrustMaterialOfThirdSys.setAnalysisType(AnalysisOptionEnums.fromCode(identificationMaterial.getAnalysisOption()).getEnglishName()); + synchronizeMaterialVoService.save(entrustMaterialOfThirdSys); + } + + /** + * 设置委托鉴定材料的鉴定编号 + * + * @param identificationMaterial 委托鉴定材料对象 + * @param cj 案件事件对象 + */ + private void setMaterialIdentificationNo(EntrustmentIdentificationMaterial identificationMaterial, CaseEvent cj) { + if (StrUtil.isNotBlank(identificationMaterial.getEvidenceId())) { + CaseEvidence caseEvidence = caseEvidenceService.getById(identificationMaterial.getEvidenceId()); + identificationMaterial.setImNo(this.getNewIdentificationMaterialNo(caseEvidence.getEvidenceNo())); + + } else { + String newEvidenceCode = caseEvidenceService.getNewEvidenceCode(cj.getCaseNo()); + String materialNo = this.getNewIdentificationMaterialNo(newEvidenceCode); + identificationMaterial.setImNo(materialNo); + } + } + + /** + * 校验案件信息是否合法 + * @param identificationMaterial + * @return + */ + private CaseEvent validateCaseInfo(EntrustmentIdentificationMaterial identificationMaterial) { + if (StrUtil.isBlank(identificationMaterial.getCaseId())) { + throw new RuntimeException(String.format("检材必须与某个案件关联, 必须提供 caseId")); + } + CaseEvent cj = caseEventService.getById(identificationMaterial.getCaseId()); + if (cj == null) { + throw new RuntimeException(String.format("不存在 id 为 %s 的案件", identificationMaterial.getCaseId())); + } + if (StrUtil.isBlank(cj.getCaseNo())) { + throw new RuntimeException(String.format("对应的案件资料不完整, 不存在案件编号。请先完善案件资料")); + } + return cj; + } } diff --git a/src/main/java/digital/laboratory/platform/entrustment/service/impl/EntrustmentServiceImpl.java b/src/main/java/digital/laboratory/platform/entrustment/service/impl/EntrustmentServiceImpl.java index d80948a..249164b 100644 --- a/src/main/java/digital/laboratory/platform/entrustment/service/impl/EntrustmentServiceImpl.java +++ b/src/main/java/digital/laboratory/platform/entrustment/service/impl/EntrustmentServiceImpl.java @@ -34,13 +34,13 @@ import digital.laboratory.platform.entrustment.constant.EntrustMarkConstants; import digital.laboratory.platform.entrustment.convert.DrugLiteConvert; import digital.laboratory.platform.entrustment.dto.EntrustmentDTO; import digital.laboratory.platform.entrustment.entity.*; +import digital.laboratory.platform.entrustment.enums.AnalysisOptionEnums; import digital.laboratory.platform.entrustment.enums.EntrustAlterApplyStatus; import digital.laboratory.platform.entrustment.enums.EntrustmentStatusConstants; import digital.laboratory.platform.entrustment.handler.AppStartupRunner; import digital.laboratory.platform.entrustment.mapper.EntrustmentMapper; import digital.laboratory.platform.entrustment.misc.ProcessFlowMapper; import digital.laboratory.platform.entrustment.service.*; -import digital.laboratory.platform.entrustment.utils.EntrustUtils; import digital.laboratory.platform.entrustment.vo.EntrustmentIdentificationMaterialVO; import digital.laboratory.platform.entrustment.vo.EntrustmentVO; import digital.laboratory.platform.entrustment.vo.MaterialListForBookVo; @@ -72,7 +72,6 @@ import javax.servlet.http.HttpServletResponse; import java.awt.image.BufferedImage; import java.io.*; import java.math.BigDecimal; -import java.math.RoundingMode; import java.security.Principal; import java.time.LocalDate; import java.time.LocalDateTime; @@ -835,7 +834,7 @@ public class EntrustmentServiceImpl extends ServiceImpl