master
陈江保 4 months ago
parent 6e164fc052
commit f1361ac84d
  1. 49
      src/main/java/digital/laboratory/platform/entrustment/enums/AnalysisOptionEnums.java
  2. 2
      src/main/java/digital/laboratory/platform/entrustment/enums/EntrustAlterApplyStatus.java
  3. 6
      src/main/java/digital/laboratory/platform/entrustment/service/impl/EntrustAlterApplyServiceImpl.java
  4. 215
      src/main/java/digital/laboratory/platform/entrustment/service/impl/EntrustmentIdentificationMaterialServiceImpl.java
  5. 7
      src/main/java/digital/laboratory/platform/entrustment/service/impl/EntrustmentServiceImpl.java
  6. 28
      src/main/java/digital/laboratory/platform/entrustment/utils/EntrustUtils.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);
}
}

@ -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)) {

@ -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<EntrustAlterApplyM
if (!equalsAnalysisOption) {
updateRecordBuilder
.append(" 分析项目由 [")
.append(EntrustUtils.getZhCnName(oldMaterial.getAnalysisOption()))
.append(AnalysisOptionEnums.fromCode(oldMaterial.getAnalysisOption()).getChineseName())
.append("] 更改为 [")
.append(EntrustUtils.getZhCnName(analysisOption)).append("]");
.append(AnalysisOptionEnums.fromCode(analysisOption).getChineseName()).append("]");
}
if (!equalsDrugInfo) {
updateRecordBuilder

@ -24,6 +24,7 @@ import digital.laboratory.platform.common.oss.service.OssFile;
import digital.laboratory.platform.common.security.util.SecurityUtils;
import digital.laboratory.platform.entrustment.dto.PrintDTO;
import digital.laboratory.platform.entrustment.entity.*;
import digital.laboratory.platform.entrustment.enums.AnalysisOptionEnums;
import digital.laboratory.platform.entrustment.enums.EntrustmentStatusConstants;
import digital.laboratory.platform.entrustment.handler.AppStartupRunner;
import digital.laboratory.platform.entrustment.mapper.EntrustmentIdentificationMaterialMapper;
@ -983,33 +984,9 @@ public class EntrustmentIdentificationMaterialServiceImpl extends ServiceImpl<En
entrustMaterialOfThirdSys.setPackageType(entrustmentMapper.getTypeForDictionary(identificationMaterial.getPack()));
entrustMaterialOfThirdSys.setAmount(identificationMaterial.getQuantity());
List<DrugLite> candidateDrugs = identificationMaterial.getCandidateDrugs();
List<String> 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<En
} else {
String id = IdWorker.get32UUID().toUpperCase();
if (entrustment.getDataSources() == 1) {
EntrustOfThirdSys entrustOfThirdSys = synchronizeDataService.getOne(new LambdaQueryWrapper<EntrustOfThirdSys>().eq(EntrustOfThirdSys::getEntrustMainId, entrustment.getId()));
EntrustMaterialOfThirdSys entrustMaterialOfThirdSys = new EntrustMaterialOfThirdSys();
entrustMaterialOfThirdSys.setEntrustId(entrustOfThirdSys.getId());
entrustMaterialOfThirdSys.setId(id);
List<EntrustMaterialOfThirdSys> list = synchronizeMaterialVoService.list(new LambdaQueryWrapper<EntrustMaterialOfThirdSys>().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<DrugLite> candidateDrugs = identificationMaterial.getCandidateDrugs();
List<String> 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<En
//identificationMaterial.setSample1No(sampleService.getNewSampleNo(identificationMaterial.getImNo(),1));
// 初始化委托序号
currentEntrustMaterialCount++;
if (StrUtil.isBlank(identificationMaterial.getImEntrustNumber())) {
// 如果为空则设置默认值
identificationMaterial.setImEntrustNumber(currentEntrustMaterialCount.toString());
}
identificationMaterial.setCreateBy(dlpUser.getId());
identificationMaterial.setCreateTime(LocalDateTime.now());
identificationMaterial.setAcceptNo(null);
@ -1436,6 +1351,7 @@ public class EntrustmentIdentificationMaterialServiceImpl extends ServiceImpl<En
return identificationMaterialList;
}
@Override//打印小标签模板的方法
public List<String> printLabel(List<PrintDTO> printDTOList) {
@ -1592,13 +1508,7 @@ public class EntrustmentIdentificationMaterialServiceImpl extends ServiceImpl<En
if (materialList.size() < 18) {//这份文件的行数为18
index = 18 - materialList.size();
for (int i = 0; i < index; i++) {
EntrustmentIdentificationMaterial entrustmentIdentificationMaterial = new EntrustmentIdentificationMaterial();
entrustmentIdentificationMaterial.setPrintAcceptTime("");
entrustmentIdentificationMaterial.setAcceptNo("");
entrustmentIdentificationMaterial.setTypeName("");
entrustmentIdentificationMaterial.setFormName("");
entrustmentIdentificationMaterial.setPackName("");
entrustmentIdentificationMaterial.setDescription("");
EntrustmentIdentificationMaterial entrustmentIdentificationMaterial = getEntrustmentIdentificationMaterial();
materialList.add(entrustmentIdentificationMaterial);
}
//如果大于18条数据了 证明不止一页了,那我们看看剩下的是否填充满了一页,如果没有就构建数据
@ -1606,13 +1516,7 @@ public class EntrustmentIdentificationMaterialServiceImpl extends ServiceImpl<En
index = materialList.size() % 18;
if (index != 0) {
for (int i = 0; i < 18 - index; i++) {
EntrustmentIdentificationMaterial entrustmentIdentificationMaterial = new EntrustmentIdentificationMaterial();
entrustmentIdentificationMaterial.setPrintAcceptTime("");
entrustmentIdentificationMaterial.setAcceptNo("");
entrustmentIdentificationMaterial.setTypeName("");
entrustmentIdentificationMaterial.setFormName("");
entrustmentIdentificationMaterial.setPackName("");
entrustmentIdentificationMaterial.setDescription("");
EntrustmentIdentificationMaterial entrustmentIdentificationMaterial = getEntrustmentIdentificationMaterial();
materialList.add(entrustmentIdentificationMaterial);
}
}
@ -1647,32 +1551,27 @@ public class EntrustmentIdentificationMaterialServiceImpl extends ServiceImpl<En
return null;
}
}
//用作于处理一些打印委托书或鉴定事项确认书时的字段类型转换
private static EntrustmentIdentificationMaterial getEntrustmentIdentificationMaterial() {
EntrustmentIdentificationMaterial entrustmentIdentificationMaterial = new EntrustmentIdentificationMaterial();
entrustmentIdentificationMaterial.setPrintAcceptTime("");
entrustmentIdentificationMaterial.setAcceptNo("");
entrustmentIdentificationMaterial.setTypeName("");
entrustmentIdentificationMaterial.setFormName("");
entrustmentIdentificationMaterial.setPackName("");
entrustmentIdentificationMaterial.setDescription("");
return entrustmentIdentificationMaterial;
}
//用作于处理一些打印委托书或鉴定事项确认书时的字段类型转换
@Override
public void conformityDrugs(List<EntrustmentIdentificationMaterial> 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<DrugLite> candidateDrugs = material.getCandidateDrugs();
String drugsValue = "";
@ -1692,4 +1591,70 @@ public class EntrustmentIdentificationMaterialServiceImpl extends ServiceImpl<En
}
}
}
/**
* 将委托鉴定材料保存到第三方系统
*
* @param identificationMaterial 委托鉴定材料对象
* @param entrustment 委托对象
* @param id 材料唯一标识
*/
private void saveEntrustMaterialToThirdSys(EntrustmentIdentificationMaterial identificationMaterial, Entrustment entrustment, String id) {
EntrustOfThirdSys entrustOfThirdSys = synchronizeDataService.getOne(new LambdaQueryWrapper<EntrustOfThirdSys>().eq(EntrustOfThirdSys::getEntrustMainId, entrustment.getId()));
EntrustMaterialOfThirdSys entrustMaterialOfThirdSys = new EntrustMaterialOfThirdSys();
entrustMaterialOfThirdSys.setEntrustId(entrustOfThirdSys.getId());
entrustMaterialOfThirdSys.setId(id);
List<EntrustMaterialOfThirdSys> list = synchronizeMaterialVoService.list(new LambdaQueryWrapper<EntrustMaterialOfThirdSys>().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<DrugLite> 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;
}
}

@ -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<EntrustmentMapper, Entru
sbDrugDes.append(item.getName()).append("、");
});
sbDrugDes.delete(sbDrugDes.length() - 1, sbDrugDes.length());//删除多余的连接号
sbAnalysisDes.append(EntrustUtils.getZhCnName(materialObj.getAnalysisOption()));
sbAnalysisDes.append(AnalysisOptionEnums.fromCode(materialObj.getAnalysisOption()).getChineseName());
}
executeCount++;
}
@ -866,7 +865,7 @@ public class EntrustmentServiceImpl extends ServiceImpl<EntrustmentMapper, Entru
sbDrugDes.append(item.getName()).append("、");
});
sbDrugDes.delete(sbDrugDes.length() - 1, sbDrugDes.length());//删除多余的连接号
sbAnalysisDes.append(EntrustUtils.getZhCnName(materialObj.getAnalysisOption()));
sbAnalysisDes.append(AnalysisOptionEnums.fromCode(materialObj.getAnalysisOption()).getChineseName());
}
executeCount++;
}

@ -1,28 +0,0 @@
package digital.laboratory.platform.entrustment.utils;
// 委托系统工具类
public class EntrustUtils {
//获取分析项目的中文名字
public static String getZhCnName(int value) {
String retName = "";
switch (value) {
case 1:
retName = "定性";
break;
case 2:
retName = "定量";
break;
case 3:
retName = "定性定量";
break;
case 4:
retName = "关联性";
break;
case 5:
retName = "其他";
break;
}
return retName;
}
}
Loading…
Cancel
Save