From 89d25b990d9fad088932255fef32abcc865c72d9 Mon Sep 17 00:00:00 2001 From: chen <2710907404@qq.com> Date: Tue, 25 Feb 2025 18:00:10 +0800 Subject: [PATCH] =?UTF-8?q?20250225=20=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/EntrustmentController.java | 2 +- ...tmentIdentificationMaterialController.java | 14 ++++- .../entrustment/convert/DrugLiteConvert.java | 6 +- .../EntrustMaterialCheckoutResultConvert.java | 12 +++- .../entity/EntrustMaterialCheckoutResult.java | 4 +- .../entrustment/entity/Entrustment.java | 9 +-- .../EntrustMaterialCheckoutResultMapper.java | 2 +- ...rustMaterialCheckoutResultServiceImpl.java | 60 +++++++++++-------- .../service/impl/EntrustmentServiceImpl.java | 2 +- .../vo/EntrustMaterialCheckoutResultVO.java | 11 +++- .../EntrustMaterialCheckoutResultMapper.xml | 11 +++- .../resources/mapper/EntrustmentMapper.xml | 6 +- 12 files changed, 92 insertions(+), 47 deletions(-) diff --git a/src/main/java/digital/laboratory/platform/entrustment/controller/EntrustmentController.java b/src/main/java/digital/laboratory/platform/entrustment/controller/EntrustmentController.java index bb33a43..59cf7e6 100644 --- a/src/main/java/digital/laboratory/platform/entrustment/controller/EntrustmentController.java +++ b/src/main/java/digital/laboratory/platform/entrustment/controller/EntrustmentController.java @@ -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)") diff --git a/src/main/java/digital/laboratory/platform/entrustment/controller/EntrustmentIdentificationMaterialController.java b/src/main/java/digital/laboratory/platform/entrustment/controller/EntrustmentIdentificationMaterialController.java index 6a37c79..e3bc5fd 100644 --- a/src/main/java/digital/laboratory/platform/entrustment/controller/EntrustmentIdentificationMaterialController.java +++ b/src/main/java/digital/laboratory/platform/entrustment/controller/EntrustmentIdentificationMaterialController.java @@ -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 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.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.lambdaUpdate().eq(Entrustment::getId, entrustId).set(Entrustment::getMaterialImageFlag, Boolean.TRUE)); + } return R.ok(ResultData, "上传成功"); } return R.failed("上传失败"); diff --git a/src/main/java/digital/laboratory/platform/entrustment/convert/DrugLiteConvert.java b/src/main/java/digital/laboratory/platform/entrustment/convert/DrugLiteConvert.java index fc1379e..bc90a70 100644 --- a/src/main/java/digital/laboratory/platform/entrustment/convert/DrugLiteConvert.java +++ b/src/main/java/digital/laboratory/platform/entrustment/convert/DrugLiteConvert.java @@ -23,7 +23,11 @@ public class DrugLiteConvert { return Collections.emptyList(); } String drugToString = JSONArray.toJSONString(drugLitesJson); - List drugLiteList = JSONArray.parseArray(drugToString, DrugLite.class).stream().sorted(Comparator.comparing(DrugLite::getName)).collect(Collectors.toList());; + return getDrugLites(drugToString); + } + + public static List getDrugLites(String drugToString) { + List drugLiteList = JSONArray.parseArray(drugToString, DrugLite.class).stream().sorted(Comparator.comparing(DrugLite::getName)).collect(Collectors.toList()); return drugLiteList; } diff --git a/src/main/java/digital/laboratory/platform/entrustment/convert/EntrustMaterialCheckoutResultConvert.java b/src/main/java/digital/laboratory/platform/entrustment/convert/EntrustMaterialCheckoutResultConvert.java index 395eee5..d11fb45 100644 --- a/src/main/java/digital/laboratory/platform/entrustment/convert/EntrustMaterialCheckoutResultConvert.java +++ b/src/main/java/digital/laboratory/platform/entrustment/convert/EntrustMaterialCheckoutResultConvert.java @@ -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; diff --git a/src/main/java/digital/laboratory/platform/entrustment/entity/EntrustMaterialCheckoutResult.java b/src/main/java/digital/laboratory/platform/entrustment/entity/EntrustMaterialCheckoutResult.java index fac6271..a93da34 100644 --- a/src/main/java/digital/laboratory/platform/entrustment/entity/EntrustMaterialCheckoutResult.java +++ b/src/main/java/digital/laboratory/platform/entrustment/entity/EntrustMaterialCheckoutResult.java @@ -35,8 +35,8 @@ public class EntrustMaterialCheckoutResult extends BaseEntity { /** * 定性结果 */ - @TableField(typeHandler = FastjsonTypeHandler.class) - private List qualitativeResult; +// @TableField(typeHandler = FastjsonTypeHandler.class) + private String qualitativeResult; /** * 定量结果 diff --git a/src/main/java/digital/laboratory/platform/entrustment/entity/Entrustment.java b/src/main/java/digital/laboratory/platform/entrustment/entity/Entrustment.java index 40ca46e..6e34684 100644 --- a/src/main/java/digital/laboratory/platform/entrustment/entity/Entrustment.java +++ b/src/main/java/digital/laboratory/platform/entrustment/entity/Entrustment.java @@ -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; } diff --git a/src/main/java/digital/laboratory/platform/entrustment/mapper/EntrustMaterialCheckoutResultMapper.java b/src/main/java/digital/laboratory/platform/entrustment/mapper/EntrustMaterialCheckoutResultMapper.java index 2ea65e2..953d257 100644 --- a/src/main/java/digital/laboratory/platform/entrustment/mapper/EntrustMaterialCheckoutResultMapper.java +++ b/src/main/java/digital/laboratory/platform/entrustment/mapper/EntrustMaterialCheckoutResultMapper.java @@ -23,7 +23,7 @@ import java.util.List; @Mapper public interface EntrustMaterialCheckoutResultMapper extends BaseMapper { - IPage getEntrustMaterialCheckoutResultVOPage(@Param("page") IPage page, @Param(Constants.WRAPPER) Wrapper qw); + IPage getEntrustMaterialCheckoutResultVOPage(@Param("page") IPage page, @Param(Constants.WRAPPER) Wrapper qw); List voList(@Param(Constants.WRAPPER) Wrapper qw); diff --git a/src/main/java/digital/laboratory/platform/entrustment/service/impl/EntrustMaterialCheckoutResultServiceImpl.java b/src/main/java/digital/laboratory/platform/entrustment/service/impl/EntrustMaterialCheckoutResultServiceImpl.java index 020a6be..3ab8550 100644 --- a/src/main/java/digital/laboratory/platform/entrustment/service/impl/EntrustMaterialCheckoutResultServiceImpl.java +++ b/src/main/java/digital/laboratory/platform/entrustment/service/impl/EntrustMaterialCheckoutResultServiceImpl.java @@ -67,27 +67,34 @@ public class EntrustMaterialCheckoutResultServiceImpl extends ServiceImpl materialList = entrustmentIdentificationMaterialService.list(Wrappers.lambdaQuery().eq(EntrustmentIdentificationMaterial::getEntrustmentId, entrustId)); - Map materialMap = materialList.stream().collect(Collectors.toMap(EntrustmentIdentificationMaterial::getId, Function.identity())); +// List materialList = entrustmentIdentificationMaterialService.list(Wrappers.lambdaQuery().eq(EntrustmentIdentificationMaterial::getEntrustmentId, entrustId)); +// Map materialMap = materialList.stream().collect(Collectors.toMap(EntrustmentIdentificationMaterial::getId, Function.identity())); // 获取检测结果 - List checkoutResultList = super.list(Wrappers.lambdaQuery().eq(EntrustMaterialCheckoutResult::getEntrustId, entrustId)); + List checkoutResultList = baseMapper.voList(Wrappers.query().eq("emr.entrust_id", entrustId)); if (CollUtil.isEmpty(checkoutResultList)) { return ""; } + List materialCheckoutResults = checkoutResultList.stream().filter(o -> StrUtil.isNotBlank(o.getQualitativeResult())).collect(Collectors.toList()); + List materialNotCheckoutResults = checkoutResultList.stream().filter(o -> StrUtil.isEmpty(o.getQualitativeResult())).collect(Collectors.toList()); + List resultStrList = new ArrayList<>(); // 对检测结果进行分组 - Map> checkoutResultGroupMap = checkoutResultList.stream().collect(Collectors.groupingBy(item -> DrugLiteConvert.joiningDrugListNameToStr(item.getQualitativeResult(), "、"))); + Map> 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 voiPage(EntrustMaterialCheckoutResultQuery query) { - IPage page = this.page( +// IPage page = this.page( +// new Page<>(query.getCurrent(), query.getSize()), +// Wrappers.lambdaQuery() +// .eq(StrUtil.isNotBlank(query.getEntrustId()), EntrustMaterialCheckoutResult::getEntrustId, query.getEntrustId()) +// .orderByDesc(EntrustMaterialCheckoutResult::getUpdateTime) +// ); +// IPage voPage = new Page<>(); +// BeanUtils.copyProperties(page, voPage, "records"); +// List records = page.getRecords(); +// if (CollUtil.isNotEmpty(records)) { +// List entrustmentIdentificationMaterials = entrustmentIdentificationMaterialService.list(Wrappers.lambdaQuery().in(EntrustmentIdentificationMaterial::getId, records.stream().map(EntrustMaterialCheckoutResult::getId).collect(Collectors.toSet()))); +// Map materialMap = entrustmentIdentificationMaterials.stream().collect(Collectors.toMap(EntrustmentIdentificationMaterial::getId, Function.identity())); +// List 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.lambdaQuery() - .eq(StrUtil.isNotBlank(query.getEntrustId()), EntrustMaterialCheckoutResult::getEntrustId, query.getEntrustId()) - .orderByDesc(EntrustMaterialCheckoutResult::getUpdateTime) + Wrappers.query() + .eq(StrUtil.isNotBlank(query.getEntrustId()), "emr.entrust_id", query.getEntrustId()) + .orderByAsc("em.order_no") ); - IPage voPage = new Page<>(); - BeanUtils.copyProperties(page, voPage, "records"); - List records = page.getRecords(); - if (CollUtil.isNotEmpty(records)) { - List entrustmentIdentificationMaterials = entrustmentIdentificationMaterialService.list(Wrappers.lambdaQuery().in(EntrustmentIdentificationMaterial::getId, records.stream().map(EntrustMaterialCheckoutResult::getId).collect(Collectors.toSet()))); - Map materialMap = entrustmentIdentificationMaterials.stream().collect(Collectors.toMap(EntrustmentIdentificationMaterial::getId, Function.identity())); - List 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 ServiceImpllambdaQuery().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() .in(Entrustment::getStatus, integers1) diff --git a/src/main/java/digital/laboratory/platform/entrustment/vo/EntrustMaterialCheckoutResultVO.java b/src/main/java/digital/laboratory/platform/entrustment/vo/EntrustMaterialCheckoutResultVO.java index 75cbe6a..b16dd45 100644 --- a/src/main/java/digital/laboratory/platform/entrustment/vo/EntrustMaterialCheckoutResultVO.java +++ b/src/main/java/digital/laboratory/platform/entrustment/vo/EntrustMaterialCheckoutResultVO.java @@ -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 qualitativeResult; + private String qualitativeResult; + /** * 定量结果 */ @ApiModelProperty("定量结果") - private List quantitativeResult; + private String quantitativeResult; /** * 其他鉴定结果 diff --git a/src/main/resources/mapper/EntrustMaterialCheckoutResultMapper.xml b/src/main/resources/mapper/EntrustMaterialCheckoutResultMapper.xml index 4ace1f5..38fb42c 100644 --- a/src/main/resources/mapper/EntrustMaterialCheckoutResultMapper.xml +++ b/src/main/resources/mapper/EntrustMaterialCheckoutResultMapper.xml @@ -7,9 +7,10 @@ - + + @@ -18,6 +19,7 @@ + @@ -35,9 +37,14 @@ SELECT - , + 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 diff --git a/src/main/resources/mapper/EntrustmentMapper.xml b/src/main/resources/mapper/EntrustmentMapper.xml index 0b06cd0..5a054f3 100644 --- a/src/main/resources/mapper/EntrustmentMapper.xml +++ b/src/main/resources/mapper/EntrustmentMapper.xml @@ -121,6 +121,7 @@ + @@ -274,7 +275,8 @@ e.entrust_requirement, e.post_address, e.return_or_not, - e.is_trans + e.is_trans, + e.material_image_flag @@ -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