20250225 更新

master
陈江保 2 months ago
parent 62619cff80
commit 89d25b990d
  1. 2
      src/main/java/digital/laboratory/platform/entrustment/controller/EntrustmentController.java
  2. 14
      src/main/java/digital/laboratory/platform/entrustment/controller/EntrustmentIdentificationMaterialController.java
  3. 6
      src/main/java/digital/laboratory/platform/entrustment/convert/DrugLiteConvert.java
  4. 12
      src/main/java/digital/laboratory/platform/entrustment/convert/EntrustMaterialCheckoutResultConvert.java
  5. 4
      src/main/java/digital/laboratory/platform/entrustment/entity/EntrustMaterialCheckoutResult.java
  6. 9
      src/main/java/digital/laboratory/platform/entrustment/entity/Entrustment.java
  7. 2
      src/main/java/digital/laboratory/platform/entrustment/mapper/EntrustMaterialCheckoutResultMapper.java
  8. 60
      src/main/java/digital/laboratory/platform/entrustment/service/impl/EntrustMaterialCheckoutResultServiceImpl.java
  9. 2
      src/main/java/digital/laboratory/platform/entrustment/service/impl/EntrustmentServiceImpl.java
  10. 11
      src/main/java/digital/laboratory/platform/entrustment/vo/EntrustMaterialCheckoutResultVO.java
  11. 11
      src/main/resources/mapper/EntrustMaterialCheckoutResultMapper.xml
  12. 6
      src/main/resources/mapper/EntrustmentMapper.xml

@ -190,7 +190,7 @@ public class EntrustmentController {
.eq(StrUtil.isNotBlank(caseId), "e.case_id", caseId)
.in((statuses != null) && (statuses.size() > 0), "e.status", statuses)
.eq(dataSources != null, "e.data_sources", dataSources)
.inSql(checkoutQuery.equals(1), "e.id", "SELECT entrust_id FROM b_entrust_material_checkout_result") // 筛选检材检出结果记录不为0 的委托
// .inSql(checkoutQuery.equals(1), "e.id", "SELECT entrust_id FROM b_entrust_material_checkout_result") // 筛选检材检出结果记录不为0 的委托
.like(StrUtil.isNotBlank(caseName), "c.case_name", caseName)
.orderByDesc(statuses != null && statuses.size() > 0 && statuses.get(0) == 9, "CAST(SUBSTRING(e.accept_no, 1,4) AS UNSIGNED)", "CAST(SUBSTRING(e.accept_no, 6) AS UNSIGNED)")
.orderByDesc(statuses != null && statuses.size() > 0 && statuses.get(0) == 7, "CAST(SUBSTRING(e.entrustment_no, 4,4) AS UNSIGNED)", "CAST(SUBSTRING(e.entrustment_no, 9) AS UNSIGNED)")

@ -672,15 +672,21 @@ public class EntrustmentIdentificationMaterialController {
@PreAuthorize("@pms.hasPermission('EntrustmentAccept')")
public R uploadAcceptAttachmentObj(@PathVariable("identificationMaterialId") String identificationMaterialId, @RequestPart("file") MultipartFile file) throws Exception {
EntrustmentIdentificationMaterial im = entrustmentIdentificationMaterialService.getById(identificationMaterialId);
String entrustId = im.getEntrustmentId();
if (im != null) {
if (im.getAcceptPassed() == null || im.getAcceptPassed() != 1) {
System.out.println(String.format("uploadAcceptAttachmentObj: entrustmentId=%s identificationMaterialId=%s OriginalFilename=%s", im.getEntrustmentId(), identificationMaterialId, file.getOriginalFilename()));
String path = OSSDirectoryConstants.ACCEPT_DIRECTORY + "/" + im.getEntrustmentId() + "/" + identificationMaterialId;
System.out.println(String.format("uploadAcceptAttachmentObj: entrustmentId=%s identificationMaterialId=%s OriginalFilename=%s", entrustId, identificationMaterialId, file.getOriginalFilename()));
String path = OSSDirectoryConstants.ACCEPT_DIRECTORY + "/" + entrustId + "/" + identificationMaterialId;
boolean r = ossFile.fileUpload(file, path);
Map<String, String> ResultData = new HashMap<>();
ResultData.put("fileName", FileNameUtil.getName(file.getOriginalFilename()));
ResultData.put("path", path);
if (r) {
Entrustment entrust = entrustmentService.getById(entrustId);
if (!entrust.getMaterialImageFlag()) {
// 如果该委托并上传检材照片则更新
entrustmentService.update(Wrappers.<Entrustment>lambdaUpdate().eq(Entrustment::getId, entrustId).set(Entrustment::getMaterialImageFlag, Boolean.TRUE));
}
return R.ok(ResultData, "上传成功");
}
return R.failed("上传失败");
@ -741,6 +747,10 @@ public class EntrustmentIdentificationMaterialController {
boolean r = ossFile.fileSave(path + "/" + fileName, is);
if (r) {
Thread.sleep(10);
if (!entrustObj.getMaterialImageFlag()) {
// 如果该委托并上传检材照片则更新
entrustmentService.update(Wrappers.<Entrustment>lambdaUpdate().eq(Entrustment::getId, entrustId).set(Entrustment::getMaterialImageFlag, Boolean.TRUE));
}
return R.ok(ResultData, "上传成功");
}
return R.failed("上传失败");

@ -23,7 +23,11 @@ public class DrugLiteConvert {
return Collections.emptyList();
}
String drugToString = JSONArray.toJSONString(drugLitesJson);
List<DrugLite> drugLiteList = JSONArray.parseArray(drugToString, DrugLite.class).stream().sorted(Comparator.comparing(DrugLite::getName)).collect(Collectors.toList());;
return getDrugLites(drugToString);
}
public static List<DrugLite> getDrugLites(String drugToString) {
List<DrugLite> drugLiteList = JSONArray.parseArray(drugToString, DrugLite.class).stream().sorted(Comparator.comparing(DrugLite::getName)).collect(Collectors.toList());
return drugLiteList;
}

@ -1,9 +1,13 @@
package digital.laboratory.platform.entrustment.convert;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import digital.laboratory.platform.entrustment.dto.EntrustMaterialCheckoutResultDTO;
import digital.laboratory.platform.entrustment.entity.EntrustMaterialCheckoutResult;
import digital.laboratory.platform.entrustment.vo.EntrustMaterialCheckoutResultVO;
import digital.laboratory.platform.sys.entity.DrugLite;
import java.util.stream.Collectors;
@ -15,7 +19,11 @@ public class EntrustMaterialCheckoutResultConvert {
public static EntrustMaterialCheckoutResult dtoToEntity(EntrustMaterialCheckoutResultDTO dto) {
if (dto == null) return null;
EntrustMaterialCheckoutResult entrustMaterialCheckoutResult = new EntrustMaterialCheckoutResult();
entrustMaterialCheckoutResult.setQualitativeResult(dto.getQualitativeResult());
if (CollUtil.isNotEmpty(dto.getQualitativeResult())) {
entrustMaterialCheckoutResult.setQualitativeResult(JSON.toJSONString(dto.getQualitativeResult()));
} else {
entrustMaterialCheckoutResult.setQualitativeResult(null);
}
entrustMaterialCheckoutResult.setQuantitativeResult(dto.getQuantitativeResult().stream().collect(Collectors.joining("、")));
entrustMaterialCheckoutResult.setOtherResult(dto.getOtherResult());
entrustMaterialCheckoutResult.setCheckoutRemark(dto.getCheckoutRemark());
@ -28,7 +36,7 @@ public class EntrustMaterialCheckoutResultConvert {
EntrustMaterialCheckoutResultVO vo = new EntrustMaterialCheckoutResultVO();
vo.setId(entity.getId());
vo.setQualitativeResult(entity.getQualitativeResult());
vo.setQuantitativeResult(StrUtil.split(entity.getQuantitativeResult(), "、"));
vo.setQuantitativeResult(entity.getQuantitativeResult());
vo.setOtherResult(entity.getOtherResult());
vo.setCheckoutRemark(entity.getCheckoutRemark());
return vo;

@ -35,8 +35,8 @@ public class EntrustMaterialCheckoutResult extends BaseEntity {
/**
* 定性结果
*/
@TableField(typeHandler = FastjsonTypeHandler.class)
private List<DrugLite> qualitativeResult;
// @TableField(typeHandler = FastjsonTypeHandler.class)
private String qualitativeResult;
/**
* 定量结果

@ -748,12 +748,7 @@ public class Entrustment extends BaseEntity {
@ApiModelProperty(value="是否退回(0:未退回,-1:已退回)")
private Integer returnOrNot;
// /**
// * 20250121 新增的一个委托类型,选择生物样本类型后需要区分是 0 委托、1 初筛、 2 两社人员、 3 其他人员, 常规毒品 0 委托 1 初筛,其他的不需要区分
// * 存字符串,不用code表达
// */
// @ApiModelProperty("新增的一个委托类型,选择生物样本类型后需要区分是 0 委托、1 初筛、 2 两社人员、 3 其他人员, 常规毒品 0 委托 1 初筛,其他的不需要区分")
// private String type;
@ApiModelProperty("标记该委托是否已经上传了检材照片, 默认false")
private Boolean materialImageFlag = false;
}

@ -23,7 +23,7 @@ import java.util.List;
@Mapper
public interface EntrustMaterialCheckoutResultMapper extends BaseMapper<EntrustMaterialCheckoutResult> {
IPage<EntrustMaterialCheckoutResultVO> getEntrustMaterialCheckoutResultVOPage(@Param("page") IPage<EntrustMaterialCheckoutResult> page, @Param(Constants.WRAPPER) Wrapper<EntrustMaterialCheckoutResult> qw);
IPage<EntrustMaterialCheckoutResultVO> getEntrustMaterialCheckoutResultVOPage(@Param("page") IPage<EntrustMaterialCheckoutResult> page, @Param(Constants.WRAPPER) Wrapper<EntrustMaterialCheckoutResultVO> qw);
List<EntrustMaterialCheckoutResultVO> voList(@Param(Constants.WRAPPER) Wrapper<EntrustMaterialCheckoutResult> qw);

@ -67,27 +67,34 @@ public class EntrustMaterialCheckoutResultServiceImpl extends ServiceImpl<Entrus
@Override
public String buildEntrustMaterialCheckoutResultStr(String entrustId) {
// 先获取检材列表
List<EntrustmentIdentificationMaterial> materialList = entrustmentIdentificationMaterialService.list(Wrappers.<EntrustmentIdentificationMaterial>lambdaQuery().eq(EntrustmentIdentificationMaterial::getEntrustmentId, entrustId));
Map<String, EntrustmentIdentificationMaterial> materialMap = materialList.stream().collect(Collectors.toMap(EntrustmentIdentificationMaterial::getId, Function.identity()));
// List<EntrustmentIdentificationMaterial> materialList = entrustmentIdentificationMaterialService.list(Wrappers.<EntrustmentIdentificationMaterial>lambdaQuery().eq(EntrustmentIdentificationMaterial::getEntrustmentId, entrustId));
// Map<String, EntrustmentIdentificationMaterial> materialMap = materialList.stream().collect(Collectors.toMap(EntrustmentIdentificationMaterial::getId, Function.identity()));
// 获取检测结果
List<EntrustMaterialCheckoutResult> checkoutResultList = super.list(Wrappers.<EntrustMaterialCheckoutResult>lambdaQuery().eq(EntrustMaterialCheckoutResult::getEntrustId, entrustId));
List<EntrustMaterialCheckoutResultVO> checkoutResultList = baseMapper.voList(Wrappers.<EntrustMaterialCheckoutResult>query().eq("emr.entrust_id", entrustId));
if (CollUtil.isEmpty(checkoutResultList)) {
return "";
}
List<EntrustMaterialCheckoutResultVO> materialCheckoutResults = checkoutResultList.stream().filter(o -> StrUtil.isNotBlank(o.getQualitativeResult())).collect(Collectors.toList());
List<EntrustMaterialCheckoutResultVO> materialNotCheckoutResults = checkoutResultList.stream().filter(o -> StrUtil.isEmpty(o.getQualitativeResult())).collect(Collectors.toList());
List<String> resultStrList = new ArrayList<>();
// 对检测结果进行分组
Map<String, List<EntrustMaterialCheckoutResult>> checkoutResultGroupMap = checkoutResultList.stream().collect(Collectors.groupingBy(item -> DrugLiteConvert.joiningDrugListNameToStr(item.getQualitativeResult(), "、")));
Map<String, List<EntrustMaterialCheckoutResultVO>> checkoutResultGroupMap = materialCheckoutResults.stream().collect(Collectors.groupingBy(item -> DrugLiteConvert.joiningDrugListNameToStr(DrugLiteConvert.getDrugLites(item.getQualitativeResult()), "、")));
checkoutResultGroupMap.forEach((key, value) -> {
StringBuilder builder = new StringBuilder();
builder
.append(value.stream().map(item -> materialMap.get(item.getId()).getOrderNo1()).sorted().collect(Collectors.joining("、")))
.append(value.stream().map(item -> item.getOrderNo() + "号检材").sorted().collect(Collectors.joining("、")))
.append(" : [")
.append(key)
.append("]");
resultStrList.add(builder.toString());
});
if (CollUtil.isNotEmpty(materialNotCheckoutResults)) {
String notCheckoutStr = materialNotCheckoutResults.stream().map(result -> result.getOrderNo() + "号检材").sorted().collect(Collectors.joining("、")) + materialNotCheckoutResults.get(0).getCheckoutRemark();
return resultStrList.stream().sorted().collect(Collectors.joining("\n")) + notCheckoutStr;
}
return resultStrList.stream().sorted().collect(Collectors.joining("\n"));
}
@ -188,26 +195,31 @@ public class EntrustMaterialCheckoutResultServiceImpl extends ServiceImpl<Entrus
*/
@Override
public IPage<EntrustMaterialCheckoutResultVO> voiPage(EntrustMaterialCheckoutResultQuery query) {
IPage<EntrustMaterialCheckoutResult> page = this.page(
// IPage<EntrustMaterialCheckoutResult> page = this.page(
// new Page<>(query.getCurrent(), query.getSize()),
// Wrappers.<EntrustMaterialCheckoutResult>lambdaQuery()
// .eq(StrUtil.isNotBlank(query.getEntrustId()), EntrustMaterialCheckoutResult::getEntrustId, query.getEntrustId())
// .orderByDesc(EntrustMaterialCheckoutResult::getUpdateTime)
// );
// IPage<EntrustMaterialCheckoutResultVO> voPage = new Page<>();
// BeanUtils.copyProperties(page, voPage, "records");
// List<EntrustMaterialCheckoutResult> records = page.getRecords();
// if (CollUtil.isNotEmpty(records)) {
// List<EntrustmentIdentificationMaterial> entrustmentIdentificationMaterials = entrustmentIdentificationMaterialService.list(Wrappers.<EntrustmentIdentificationMaterial>lambdaQuery().in(EntrustmentIdentificationMaterial::getId, records.stream().map(EntrustMaterialCheckoutResult::getId).collect(Collectors.toSet())));
// Map<String, EntrustmentIdentificationMaterial> materialMap = entrustmentIdentificationMaterials.stream().collect(Collectors.toMap(EntrustmentIdentificationMaterial::getId, Function.identity()));
// List<EntrustMaterialCheckoutResultVO> entrustMaterialCheckoutResultVOS = records.stream().map(record -> {
// EntrustMaterialCheckoutResultVO entrustMaterialCheckoutResultVO = EntrustMaterialCheckoutResultConvert.entityToVO(record);
// entrustMaterialCheckoutResultVO.setName(materialMap.get(record.getId()).getName());
// return entrustMaterialCheckoutResultVO;
// }).collect(Collectors.toList());
// voPage.setRecords(entrustMaterialCheckoutResultVOS);
// }
return baseMapper.getEntrustMaterialCheckoutResultVOPage(
new Page<>(query.getCurrent(), query.getSize()),
Wrappers.<EntrustMaterialCheckoutResult>lambdaQuery()
.eq(StrUtil.isNotBlank(query.getEntrustId()), EntrustMaterialCheckoutResult::getEntrustId, query.getEntrustId())
.orderByDesc(EntrustMaterialCheckoutResult::getUpdateTime)
Wrappers.<EntrustMaterialCheckoutResultVO>query()
.eq(StrUtil.isNotBlank(query.getEntrustId()), "emr.entrust_id", query.getEntrustId())
.orderByAsc("em.order_no")
);
IPage<EntrustMaterialCheckoutResultVO> voPage = new Page<>();
BeanUtils.copyProperties(page, voPage, "records");
List<EntrustMaterialCheckoutResult> records = page.getRecords();
if (CollUtil.isNotEmpty(records)) {
List<EntrustmentIdentificationMaterial> entrustmentIdentificationMaterials = entrustmentIdentificationMaterialService.list(Wrappers.<EntrustmentIdentificationMaterial>lambdaQuery().in(EntrustmentIdentificationMaterial::getId, records.stream().map(EntrustMaterialCheckoutResult::getId).collect(Collectors.toSet())));
Map<String, EntrustmentIdentificationMaterial> materialMap = entrustmentIdentificationMaterials.stream().collect(Collectors.toMap(EntrustmentIdentificationMaterial::getId, Function.identity()));
List<EntrustMaterialCheckoutResultVO> entrustMaterialCheckoutResultVOS = records.stream().map(record -> {
EntrustMaterialCheckoutResultVO entrustMaterialCheckoutResultVO = EntrustMaterialCheckoutResultConvert.entityToVO(record);
entrustMaterialCheckoutResultVO.setName(materialMap.get(record.getId()).getName());
return entrustMaterialCheckoutResultVO;
}).collect(Collectors.toList());
voPage.setRecords(entrustMaterialCheckoutResultVOS);
}
return voPage;
}
/**
@ -315,7 +327,7 @@ public class EntrustMaterialCheckoutResultServiceImpl extends ServiceImpl<Entrus
excelDTO.setFormName(material.getFormName());
EntrustMaterialCheckoutResult entrustMaterialCheckoutResult = checkoutResultMap.get(material.getId());
excelDTO.setQualitativeResult(
DrugLiteConvert.convertDirtyLiteByJSON(entrustMaterialCheckoutResult.getQualitativeResult())
DrugLiteConvert.getDrugLites(entrustMaterialCheckoutResult.getQualitativeResult())
.stream().map(DrugLite::getName).collect(Collectors.joining("、"))
);
excelDTO.setQuantitativeResult(entrustMaterialCheckoutResult.getQuantitativeResult());

@ -3268,7 +3268,7 @@ public class EntrustmentServiceImpl extends ServiceImpl<EntrustmentMapper, Entru
markersVOS.add(new MarkersVO(EntrustMarkConstants.CASE_ACCEPT, entrustmentList2.size(), "待受理 (大数据平台)"));
markersVOS.add(new MarkersVO(EntrustMarkConstants.CASE_ACCEPT, entrustmentList3.size(), String.format("已受理 (%s)", EntrustMarkConstants.PUBLIC_SECURITY_BUREAU)));
markersVOS.add(new MarkersVO(EntrustMarkConstants.CASE_ACCEPT, entrustmentList4.size(), "已受理 (大数据平台)"));
markersVOS.add(new MarkersVO(EntrustMarkConstants.CASE_ACCEPT, this.list(Wrappers.<Entrustment>lambdaQuery().inSql(Entrustment::getId, "SELECT entrust_id FROM b_entrust_material_checkout_result")).size(), "检测结果"));
markersVOS.add(new MarkersVO(EntrustMarkConstants.CASE_ACCEPT, entrustmentList3.size(), "检测结果"));
markersVOS.add(new MarkersVO(EntrustMarkConstants.REVIEW_OR_APPROVAL,
this.list(new LambdaQueryWrapper<Entrustment>()
.in(Entrustment::getStatus, integers1)

@ -1,5 +1,8 @@
package digital.laboratory.platform.entrustment.vo;
import com.baomidou.mybatisplus.annotation.FieldStrategy;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler;
import digital.laboratory.platform.sys.entity.DrugLite;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
@ -20,6 +23,9 @@ public class EntrustMaterialCheckoutResultVO {
@ApiModelProperty("委托检材id列表, 支持批量")
private String id;
@ApiModelProperty(value = "检材受理编号")
private String acceptNo;
/**
* 委托检材id
*/
@ -36,13 +42,14 @@ public class EntrustMaterialCheckoutResultVO {
* 定性结果
*/
@ApiModelProperty("定性结果")
private List<DrugLite> qualitativeResult;
private String qualitativeResult;
/**
* 定量结果
*/
@ApiModelProperty("定量结果")
private List<String> quantitativeResult;
private String quantitativeResult;
/**
* 其他鉴定结果

@ -7,9 +7,10 @@
<resultMap id="BaseResultMap" type="digital.laboratory.platform.entrustment.entity.EntrustMaterialCheckoutResult">
<id property="id" column="entrust_material_id" jdbcType="VARCHAR"/>
<result property="entrustId" column="entrust_id" jdbcType="VARCHAR"/>
<result property="qualitativeResult" column="qualitative_result" jdbcType="VARCHAR" typeHandler="com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler"/>
<result property="qualitativeResult" column="qualitative_result"/>
<result property="quantitativeResult" column="quantitative_result" jdbcType="VARCHAR"/>
<result property="otherResult" column="other_result" jdbcType="VARCHAR"/>
<result property="checkoutRemark" column="checkout_remark" jdbcType="VARCHAR"/>
<result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
<result property="createBy" column="create_by" jdbcType="VARCHAR"/>
<result property="updateTime" column="update_time" jdbcType="TIMESTAMP"/>
@ -18,6 +19,7 @@
<resultMap id="EntrustMaterialCheckoutResultVO" type="digital.laboratory.platform.entrustment.vo.EntrustMaterialCheckoutResultVO" extends="BaseResultMap">
<result property="name" column ="name"/>
<result property="acceptNo" column ="accept_no"/>
<result property="orderNo" column ="order_no"/>
</resultMap>
@ -35,9 +37,14 @@
<sql id="getEntrustMaterialCheckoutResultVO">
SELECT
<include refid="Base_Column_List"/>,
emr.entrust_material_id,
emr.entrust_id,
emr.qualitative_result,
emr.quantitative_result,
emr.other_result,
em.name,
em.entrustment_id,
em.accept_no,
em.order_no
FROM b_entrust_material_checkout_result emr
LEFT JOIN b_entrustment_identification_material em

@ -121,6 +121,7 @@
<result property="updateTime" column="update_time"/>
<result property="updateBy" column="update_by"/>
<result property="returnOrNot" column="return_or_not"/>
<result property="returnOrNot" column="material_image_flag"/>
</resultMap>
<resultMap id="entrustmentVO" type="digital.laboratory.platform.entrustment.vo.EntrustmentVO" extends="entrustmentMap">
@ -274,7 +275,8 @@
e.entrust_requirement,
e.post_address,
e.return_or_not,
e.is_trans
e.is_trans,
e.material_image_flag
</sql>
<sql id="getEntrustmentVOSQL">
@ -363,7 +365,7 @@
where i.id = e.identification_id
) as identification_no,
(
SELECT COUNT(*) FROM b_entrust_material_checkout_result emr WHERE emr.entrust_id = e.id
SELECT COUNT(*) FROM b_entrust_material_checkout_result emr WHERE emr.entrust_id = e.id AND qualitative_result != '' AND qualitative_result IS NOT NULL
) AS checkout_result_count
FROM b_entrustment e

Loading…
Cancel
Save