excel 导入更新

master
杨海航 2 days ago
parent 64d1d42a16
commit e13462d41f
  1. 4
      src/main/java/digital/laboratory/platform/entrustment/service/impl/EntrustmentServiceImpl.java
  2. 36
      src/main/java/digital/laboratory/platform/entrustment/service/impl/ExcelUploadServiceImpl.java
  3. 6
      src/main/java/digital/laboratory/platform/entrustment/utils/ExcelUtils.java

@ -3296,7 +3296,9 @@ public class EntrustmentServiceImpl extends ServiceImpl<EntrustmentMapper, Entru
).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"))
this.list(Wrappers.<Entrustment>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))

@ -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<List<DrugLite>> innerGetAllR = remoteCommDrugService.innerGetAll(); // 获取所有的毒品信息
List<DrugLite> drugLiteList = innerGetAllR.getData();
Map<String, DrugLite> drugLiteMap = drugLiteList.stream().collect(Collectors.toMap(DrugLite::getName, Function.identity()));
// 防止检材列表
// 防止检材列表d
List<EntrustmentIdentificationMaterial> entrustmentIdentificationMaterialList = new ArrayList<>();
// 读取excel数据
List<Map<String, String>> data = ExcelUtils.readExcel(file);
int orderNo = 1;
// 表头从第一行后开始读取
int headIndex = 1;
List<Map<String, String>> data = ExcelUtils.readExcel(file, headIndex);
int orderNo = entrustmentIdentificationMaterialService.lambdaQuery()
.eq(EntrustmentIdentificationMaterial::getEntrustmentId, entrustId)
.list()
.size() + 1;
List<EntrustMaterialCheckoutResult> results = new ArrayList<>();
for (Map<String, String> 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<DrugLite> 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);
}
}

@ -23,7 +23,7 @@ public class ExcelUtils {
* @return 解析后的 Excel 数据列表
* @throws Exception 可能抛出的异常如文件读取异常
*/
public static List<Map<String, String>> readExcel(MultipartFile file) throws Exception {
public static List<Map<String, String>> readExcel(MultipartFile file, int headIndex) throws Exception {
// 存储最终结果,每一行的 Excel 数据以 Map 的形式存储
List<Map<String, String>> 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; // 如果当前行为空,则跳过

Loading…
Cancel
Save