From e13462d41f616afb0c8f6939c088baeb249af2e4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=A8=E6=B5=B7=E8=88=AA?= <11918452+yang-haihang@user.noreply.gitee.com> Date: Wed, 7 May 2025 14:58:55 +0800 Subject: [PATCH] =?UTF-8?q?excel=20=E5=AF=BC=E5=85=A5=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/EntrustmentServiceImpl.java | 4 ++- .../service/impl/ExcelUploadServiceImpl.java | 36 ++++++++++++++----- .../entrustment/utils/ExcelUtils.java | 6 ++-- 3 files changed, 34 insertions(+), 12 deletions(-) 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 c3f7c97..d005f61 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 @@ -3296,7 +3296,9 @@ public class EntrustmentServiceImpl extends ServiceImpllambdaQuery().inSql(Entrustment::getId, "SELECT entrust_id FROM b_entrust_material_checkout_result")) + this.list(Wrappers.lambdaQuery() + .ge(Entrustment::getStatus, EntrustStatusConstants.ENTRUST_STATUS_ACCEPTED.getStatus()) + .inSql(Entrustment::getId, "SELECT entrust_id FROM b_entrust_material_checkout_result")) .stream() .filter(o -> o.getAcceptTime().isAfter(LocalDateTime.of(LocalDate.now().withDayOfYear(1), LocalTime.MIN)) diff --git a/src/main/java/digital/laboratory/platform/entrustment/service/impl/ExcelUploadServiceImpl.java b/src/main/java/digital/laboratory/platform/entrustment/service/impl/ExcelUploadServiceImpl.java index 5c837ae..a700d06 100644 --- a/src/main/java/digital/laboratory/platform/entrustment/service/impl/ExcelUploadServiceImpl.java +++ b/src/main/java/digital/laboratory/platform/entrustment/service/impl/ExcelUploadServiceImpl.java @@ -1,9 +1,11 @@ package digital.laboratory.platform.entrustment.service.impl; - import cn.hutool.core.collection.CollUtil; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.core.toolkit.IdWorker; 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.EntrustMaterialCheckoutResult; import digital.laboratory.platform.entrustment.entity.Entrustment; import digital.laboratory.platform.entrustment.entity.EntrustmentIdentificationMaterial; import digital.laboratory.platform.entrustment.enums.AnalysisOptionEnums; @@ -15,7 +17,6 @@ import digital.laboratory.platform.sys.enums.entrust.EntrustBiologyType; import digital.laboratory.platform.sys.feign.RemoteCommDrugService; import org.springframework.stereotype.Service; import org.springframework.web.multipart.MultipartFile; - import javax.annotation.Resource; import java.math.BigDecimal; import java.time.LocalDateTime; @@ -49,6 +50,9 @@ public class ExcelUploadServiceImpl implements ExcelUploadService { @Resource private RemoteCommDrugService remoteCommDrugService; + @Resource + private EntrustMaterialCheckoutResultService entrustMaterialCheckoutResultService; + /** * 上传两社人员名单excel文件 * @@ -68,6 +72,7 @@ public class ExcelUploadServiceImpl implements ExcelUploadService { throw new CheckedException("当前不支持两社人员之外的委托信息进行导入!"); } + // 校验案件信息是否合法 CaseEvent cj = caseEventService.validateCaseInfo(entrustment.getCaseId()); // 默认取海洛因的毒品信息 @@ -76,11 +81,17 @@ public class ExcelUploadServiceImpl implements ExcelUploadService { R> innerGetAllR = remoteCommDrugService.innerGetAll(); // 获取所有的毒品信息 List drugLiteList = innerGetAllR.getData(); Map drugLiteMap = drugLiteList.stream().collect(Collectors.toMap(DrugLite::getName, Function.identity())); - // 防止检材列表 + // 防止检材列表d List entrustmentIdentificationMaterialList = new ArrayList<>(); // 读取excel数据 - List> data = ExcelUtils.readExcel(file); - int orderNo = 1; + // 表头从第一行后开始读取 + int headIndex = 1; + List> data = ExcelUtils.readExcel(file, headIndex); + int orderNo = entrustmentIdentificationMaterialService.lambdaQuery() + .eq(EntrustmentIdentificationMaterial::getEntrustmentId, entrustId) + .list() + .size() + 1; + List results = new ArrayList<>(); for (Map datum : data) { EntrustmentIdentificationMaterial entrustmentIdentificationMaterial = new EntrustmentIdentificationMaterial(); entrustmentIdentificationMaterial.setEntrustmentId(entrustment.getId()); @@ -91,7 +102,17 @@ public class ExcelUploadServiceImpl implements ExcelUploadService { entrustmentIdentificationMaterial.setMaterialAge(Integer.valueOf(datum.get("年龄"))); entrustmentIdentificationMaterial.setRemark(datum.get("身份证号")); entrustmentIdentificationMaterial.setDrawPlace(datum.get("采样单位")); - entrustmentIdentificationMaterial.setCandidateDrugs(CollUtil.newArrayList(drugLiteMap.containsKey(datum.get("曾吸毒种类")) ? drugLiteMap.get(datum.get("曾吸毒种类")) : heroin)); + entrustmentIdentificationMaterial.setCandidateDrugs(CollUtil.newArrayList(drugLiteMap.containsKey(datum.get("检测结果")) ? drugLiteMap.get(datum.get("检测结果")) : heroin)); + entrustmentIdentificationMaterial.setId(IdWorker.get32UUID().toUpperCase()); + + List candidateDrugs = entrustmentIdentificationMaterial.getCandidateDrugs(); + if (candidateDrugs.size() > 0) { + EntrustMaterialCheckoutResult result = new EntrustMaterialCheckoutResult(); + result.setId(entrustmentIdentificationMaterial.getId()); + result.setQualitativeResult(JSON.toJSONString(candidateDrugs)); + result.setEntrustId(entrustId); + results.add(result); + } // 设置默认值 entrustmentIdentificationMaterial.setBiologyType(EntrustBiologyType.HAIR.getDesc()); // 生物样本检材类型 @@ -114,7 +135,6 @@ public class ExcelUploadServiceImpl implements ExcelUploadService { entrustmentIdentificationMaterial.setSample1No(sampleService.getNewSampleNo(entrustmentIdentificationMaterial.getImNo(), 1)); entrustmentIdentificationMaterialList.add(entrustmentIdentificationMaterial); } - - return entrustmentIdentificationMaterialService.saveBatch(entrustmentIdentificationMaterialList); + return entrustmentIdentificationMaterialService.saveBatch(entrustmentIdentificationMaterialList) && entrustMaterialCheckoutResultService.saveBatch(results); } } diff --git a/src/main/java/digital/laboratory/platform/entrustment/utils/ExcelUtils.java b/src/main/java/digital/laboratory/platform/entrustment/utils/ExcelUtils.java index d48abb7..e65e30b 100644 --- a/src/main/java/digital/laboratory/platform/entrustment/utils/ExcelUtils.java +++ b/src/main/java/digital/laboratory/platform/entrustment/utils/ExcelUtils.java @@ -23,7 +23,7 @@ public class ExcelUtils { * @return 解析后的 Excel 数据列表 * @throws Exception 可能抛出的异常,如文件读取异常 */ - public static List> readExcel(MultipartFile file) throws Exception { + public static List> readExcel(MultipartFile file, int headIndex) throws Exception { // 存储最终结果,每一行的 Excel 数据以 Map 的形式存储 List> result = new ArrayList<>(); @@ -36,7 +36,7 @@ public class ExcelUtils { if (sheet == null) return result; // 如果没有工作表,则返回空列表 // 获取表头(第一行),表头行存储列名 - Row headerRow = sheet.getRow(0); + Row headerRow = sheet.getRow(headIndex); if (headerRow == null) return result; // 如果没有表头,则返回空列表 // 存储表头列名 @@ -47,7 +47,7 @@ public class ExcelUtils { } // 从第二行开始读取数据 - for (int i = 1; i <= sheet.getLastRowNum(); i++) { + for (int i = headIndex + 1; i <= sheet.getLastRowNum(); i++) { // 获取当前行 Row row = sheet.getRow(i); if (row == null) continue; // 如果当前行为空,则跳过