20250417 更新

master
陈江保 3 weeks ago
parent 965122944f
commit a7763fbc2b
  1. 9
      src/main/java/digital/laboratory/platform/entrustment/service/CaseEventService.java
  2. 9
      src/main/java/digital/laboratory/platform/entrustment/service/EntrustmentIdentificationMaterialService.java
  3. 27
      src/main/java/digital/laboratory/platform/entrustment/service/impl/CaseEventServiceImpl.java
  4. 24
      src/main/java/digital/laboratory/platform/entrustment/service/impl/EntrustmentIdentificationMaterialServiceImpl.java
  5. 46
      src/main/java/digital/laboratory/platform/entrustment/service/impl/ExcelUploadServiceImpl.java

@ -19,7 +19,16 @@ import java.util.Map;
* @describe 案件事件服务类
*/
public interface CaseEventService extends IService<CaseEvent> {
/**
* 校验案件信息是否合法
*
* @param caseId
* @return
*/
CaseEvent validateCaseInfo(String caseId);
/**
* 按查询条件查询案件VO
* @param fromDate
* @param toDate

@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.IService;
import digital.laboratory.platform.common.mybatis.security.service.DLPUser;
import digital.laboratory.platform.entrustment.dto.PrintDTO;
import digital.laboratory.platform.entrustment.entity.CaseEvent;
import digital.laboratory.platform.entrustment.entity.CaseEvidence;
import digital.laboratory.platform.entrustment.entity.EntrustmentIdentificationMaterial;
import digital.laboratory.platform.entrustment.vo.EntrustmentIdentificationMaterialVO;
@ -113,6 +114,14 @@ public interface EntrustmentIdentificationMaterialService extends IService<Entru
void conformityDrugs(List<EntrustmentIdentificationMaterial> list);
/**
* 设置委托鉴定材料的鉴定编号
*
* @param identificationMaterial 委托鉴定材料对象
* @param cj 案件事件对象
*/
void setMaterialIdentificationNo(EntrustmentIdentificationMaterial identificationMaterial, CaseEvent cj);
/**
* 处理检材重量四舍五入
* 设置检材列表, 对检材的重量进行处理 小于100的保留两位小数100以上保留一位小数

@ -46,17 +46,42 @@ import java.util.Map;
@Service
@RequiredArgsConstructor
public class CaseEventServiceImpl extends ServiceImpl<CaseEventMapper, CaseEvent> implements CaseEventService {
private final CaseEventMapper caseEventMapper;
private final RemoteOrgService remoteOrgService;
private final CaseEvidenceService caseEvidenceService;
@Resource
private EntrustmentService entrustmentService;
private final OssFile ossFile;
@Resource
@Resource
private EntrustmentIdentificationMaterialService entrustmentIdentificationMaterialService;
/**
* 校验案件信息是否合法
*
* @param caseId
* @return
*/
@Override
public CaseEvent validateCaseInfo(String caseId) {
if (StrUtil.isBlank(caseId)) {
throw new RuntimeException(String.format("检材必须与某个案件关联, 必须提供 caseId"));
}
CaseEvent cj = super.getById(caseId);
if (cj == null) {
throw new RuntimeException(String.format("不存在 id 为 %s 的案件", caseId));
}
if (StrUtil.isBlank(cj.getCaseNo())) {
throw new RuntimeException(String.format("对应的案件资料不完整, 不存在案件编号。请先完善案件资料"));
}
return cj;
}
/**
* 按查询条件查询案件VO
*

@ -1222,7 +1222,7 @@ public class EntrustmentIdentificationMaterialServiceImpl extends ServiceImpl<En
String entrustmentId = identificationMaterial.getEntrustmentId();
// 校验案件信息是否合法
CaseEvent cj = validateCaseInfo(identificationMaterial);
CaseEvent cj = caseEventService.validateCaseInfo(identificationMaterial.getCaseId());
////若提前创建好了物证,则关联通过物证编号关联检材编号即可;
setMaterialIdentificationNo(identificationMaterial, cj);
@ -1601,7 +1601,8 @@ public class EntrustmentIdentificationMaterialServiceImpl extends ServiceImpl<En
* @param identificationMaterial 委托鉴定材料对象
* @param cj 案件事件对象
*/
private void setMaterialIdentificationNo(EntrustmentIdentificationMaterial identificationMaterial, CaseEvent cj) {
@Override
public void setMaterialIdentificationNo(EntrustmentIdentificationMaterial identificationMaterial, CaseEvent cj) {
if (StrUtil.isNotBlank(identificationMaterial.getEvidenceId())) {
CaseEvidence caseEvidence = caseEvidenceService.getById(identificationMaterial.getEvidenceId());
identificationMaterial.setImNo(this.getNewIdentificationMaterialNo(caseEvidence.getEvidenceNo()));
@ -1613,25 +1614,6 @@ public class EntrustmentIdentificationMaterialServiceImpl extends ServiceImpl<En
}
}
/**
* 校验案件信息是否合法
*
* @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;
}
/**
* 处理检材重量四舍五入

@ -3,13 +3,12 @@ package digital.laboratory.platform.entrustment.service.impl;
import cn.hutool.core.collection.CollUtil;
import digital.laboratory.platform.common.core.exception.CheckedException;
import digital.laboratory.platform.common.core.util.R;
import digital.laboratory.platform.entrustment.entity.CaseEvent;
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.EntrustIdentificationSituationType;
import digital.laboratory.platform.entrustment.service.EntrustmentIdentificationMaterialService;
import digital.laboratory.platform.entrustment.service.EntrustmentService;
import digital.laboratory.platform.entrustment.service.ExcelUploadService;
import digital.laboratory.platform.entrustment.service.*;
import digital.laboratory.platform.entrustment.utils.ExcelUtils;
import digital.laboratory.platform.sys.entity.DrugLite;
import digital.laboratory.platform.sys.enums.entrust.EntrustBiologyType;
@ -19,6 +18,7 @@ import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@ -34,6 +34,12 @@ import java.util.stream.Collectors;
@Service
public class ExcelUploadServiceImpl implements ExcelUploadService {
@Resource
private SampleService sampleService;
@Resource
private CaseEventService caseEventService;
@Resource
private EntrustmentService entrustmentService;
@ -61,6 +67,9 @@ public class ExcelUploadServiceImpl implements ExcelUploadService {
if (!entrustment.getOldIdentificationResult().equals(EntrustIdentificationSituationType.TWO_AGENCY.getDesc())) {
throw new CheckedException("当前不支持两社人员之外的委托信息进行导入!");
}
// 校验案件信息是否合法
CaseEvent cj = caseEventService.validateCaseInfo(entrustment.getCaseId());
// 默认取海洛因的毒品信息
R<DrugLite> drugLiteR = remoteCommDrugService.getByName("海洛因");
DrugLite heroin = drugLiteR.getData(); // 获取默认的海洛因数据
@ -71,23 +80,38 @@ public class ExcelUploadServiceImpl implements ExcelUploadService {
List<EntrustmentIdentificationMaterial> entrustmentIdentificationMaterialList = new ArrayList<>();
// 读取excel数据
List<Map<String, String>> data = ExcelUtils.readExcel(file);
int orderNo = 1;
for (Map<String, String> datum : data) {
EntrustmentIdentificationMaterial entrustmentIdentificationMaterial = new EntrustmentIdentificationMaterial();
entrustmentIdentificationMaterial.setEntrustmentId(entrustment.getId());
entrustmentIdentificationMaterial.setType("1");
entrustmentIdentificationMaterial.setTypeName("生物样本");
entrustmentIdentificationMaterial.setCaseId(entrustment.getCaseId());
// 读取excel的值到检材实体
entrustmentIdentificationMaterial.setName(datum.get("姓名") + "毛发");
entrustmentIdentificationMaterial.setBiologyGender(datum.get("性别"));
entrustmentIdentificationMaterial.setBiologyType(EntrustBiologyType.HAIR.getDesc());
entrustmentIdentificationMaterial.setMaterialAge(Integer.valueOf(datum.get("年龄")));
entrustmentIdentificationMaterial.setRemark(datum.get("身份证号"));
entrustmentIdentificationMaterial.setDrawPlace(datum.get("采样单位"));
entrustmentIdentificationMaterial.setQuantity(new BigDecimal(50));
entrustmentIdentificationMaterial.setUnit("mg");
entrustmentIdentificationMaterial.setForm("黑色头发");
entrustmentIdentificationMaterial.setFormName("黑色头发");
entrustmentIdentificationMaterial.setAnalysisOption(AnalysisOptionEnums.QUALITATIVE.getCode()); // 默认设置定性
entrustmentIdentificationMaterial.setCandidateDrugs(CollUtil.newArrayList(drugLiteMap.containsKey(datum.get("曾吸毒种类")) ? drugLiteMap.get(datum.get("曾吸毒种类")) : heroin));
// 设置默认值
entrustmentIdentificationMaterial.setBiologyType(EntrustBiologyType.HAIR.getDesc()); // 生物样本检材类型
entrustmentIdentificationMaterial.setType("1");
entrustmentIdentificationMaterial.setTypeName("生物样本"); // 检材类型
entrustmentIdentificationMaterial.setQuantity(new BigDecimal(50)); // 检材重量
entrustmentIdentificationMaterial.setUnit("mg"); // 检材重量 单位
entrustmentIdentificationMaterial.setForm("黑色头发"); // 检材性状
entrustmentIdentificationMaterial.setFormName("黑色头发"); // 检材性状
entrustmentIdentificationMaterial.setOrderNo(orderNo);
entrustmentIdentificationMaterial.setImEntrustNumber(String.valueOf(orderNo));
// 叠加
orderNo++;
entrustmentIdentificationMaterial.setPackComplete(true); //
entrustmentIdentificationMaterial.setRtSampleQuantity(0); // 留存样个数 ->
entrustmentIdentificationMaterial.setDrawTime(LocalDateTime.now()); // 提取时间 -> 当前时间
entrustmentIdentificationMaterial.setAnalysisOption(AnalysisOptionEnums.QUALITATIVE.getCode()); // 默认设置检测项目 -> 定性
// 设置检材编号
entrustmentIdentificationMaterialService.setMaterialIdentificationNo(entrustmentIdentificationMaterial, cj);
entrustmentIdentificationMaterial.setSample1No(sampleService.getNewSampleNo(entrustmentIdentificationMaterial.getImNo(), 1));
entrustmentIdentificationMaterialList.add(entrustmentIdentificationMaterial);
}

Loading…
Cancel
Save