|
|
@@ -165,6 +165,12 @@ public class MedicalInsRuleProjectServiceImpl extends ServiceImpl<MedicalInsRule
|
|
|
public Result<?> importTemplateExcel(HttpServletRequest request, HttpServletResponse response,
|
|
|
Class<MedicalInsRuleProject> medicalInsRuleProjectClass) {
|
|
|
|
|
|
+ Integer rmDuplicateNumber = 0; // excel文件重复数量
|
|
|
+ Integer totalNumber = 0;//导入文件总数
|
|
|
+ Integer addNumber = 0; //新增数量
|
|
|
+ Integer updateNumber = 0;//更新文件数量
|
|
|
+
|
|
|
+
|
|
|
String username = "";
|
|
|
try {
|
|
|
username = JwtUtil.getUsername(request.getHeader("X-Access-Token"));
|
|
|
@@ -216,6 +222,9 @@ public class MedicalInsRuleProjectServiceImpl extends ServiceImpl<MedicalInsRule
|
|
|
reserveList = dictDtos.stream().map(MedicalDto::getText).collect(Collectors.toList());
|
|
|
}
|
|
|
}
|
|
|
+ } else {
|
|
|
+ log.error("规则配置异常,id={},配置的字段异常,找不到需要导入导出的字段列表", id);
|
|
|
+ throw new JeecgBootException("找不到规则表头");
|
|
|
}
|
|
|
// 获取本规则的字段名
|
|
|
List<ExportRuleFieldDTO> ruleFieldDTOS = baseMapper.selectRuleFieldListByFieldList(fieldList);
|
|
|
@@ -285,8 +294,44 @@ public class MedicalInsRuleProjectServiceImpl extends ServiceImpl<MedicalInsRule
|
|
|
// List<MedicalInsRuleProject> list = ExcelImportUtil.importExcel(file.getInputStream(), MedicalInsRuleProject.class, params);
|
|
|
List<MedicalInsRuleProject> list = DefaultExcelImportUtil
|
|
|
.importExcel(file.getInputStream(), MedicalInsRuleProject.class, params);
|
|
|
+ if (CollectionUtils.isEmpty(list)) {
|
|
|
+ log.error("导入文件没有数据,请检查");
|
|
|
+ return Result.ok("上传的文件没有数据,请检查");
|
|
|
+ }
|
|
|
+ totalNumber = list.size();
|
|
|
//update-begin-author:taoyan date:20190528 for:批量插入数据
|
|
|
|
|
|
+ // 如果 3.如果模板字段没有【项目编码】不去重,不判重,直接写入
|
|
|
+ if (!fieldList.contains(PROJECTCODE)) {
|
|
|
+ // 将索引id写入
|
|
|
+ Integer finalId = id;
|
|
|
+ list = list.stream().map(item -> {
|
|
|
+ item.setMedicalInsRuleInfoId(finalId);
|
|
|
+ return item;
|
|
|
+ }).collect(Collectors.toList());
|
|
|
+ this.saveBatch(list, 500);
|
|
|
+ return Result.ok("文件导入成功!数据行数:" + list.size());
|
|
|
+ }
|
|
|
+
|
|
|
+ for (MedicalInsRuleProject item : list) {
|
|
|
+ String projectCode = item.getProjectCode();
|
|
|
+ String correlationProjectCode = item.getCorrelationProjectCode();
|
|
|
+ // 1.2 projectCode+correlationProjectCode 两个全部都要有值(所有编码必填,请检查)
|
|
|
+// 1.1有projecgCode=但是projectCode没值= 提示错误信息(所有项目编码必填,请检查)
|
|
|
+ if (fieldList.contains(PROJECTCODE)) {
|
|
|
+ if (!StringUtils.hasText(projectCode)) {
|
|
|
+ log.error("根据模板导入时,没有找到projectCode请检查导入文件内容");
|
|
|
+ throw new JeecgBootException("数据项目编码为空,项目编码必填,请检查!");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (fieldList.contains(CORRELATIONPROJECTCODE)) {
|
|
|
+ if (!StringUtils.hasText(correlationProjectCode)) {
|
|
|
+ log.error("根据模板导入时,没有找到correlationProjectCode请检查导入文件内容");
|
|
|
+ throw new JeecgBootException("数据关联项目编号为空,关联项目编号必填,请检查!");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
// 去重
|
|
|
// 倒序去重
|
|
|
List<MedicalInsRuleProject> collect = list.stream().map(item -> item).collect(Collectors.toList());
|
|
|
@@ -300,7 +345,10 @@ public class MedicalInsRuleProjectServiceImpl extends ServiceImpl<MedicalInsRule
|
|
|
);
|
|
|
// 随后把顺序倒回来
|
|
|
Collections.reverse(list);
|
|
|
-
|
|
|
+ // 文件总条数 - 去重之后剩余数量 = excel 文件的重复数据
|
|
|
+ if (!CollectionUtils.isEmpty(list)) {
|
|
|
+ rmDuplicateNumber = totalNumber - list.size();
|
|
|
+ }
|
|
|
// list = list.stream().collect(
|
|
|
// Collectors.collectingAndThen(
|
|
|
// Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(
|
|
|
@@ -327,6 +375,7 @@ public class MedicalInsRuleProjectServiceImpl extends ServiceImpl<MedicalInsRule
|
|
|
});//
|
|
|
// 如果有则需要更新
|
|
|
if (!CollectionUtils.isEmpty(updateList)) {
|
|
|
+ updateNumber = updateList.size();
|
|
|
this.updateBatchById(updateList, 500);
|
|
|
}
|
|
|
// 取出差集
|
|
|
@@ -335,6 +384,7 @@ public class MedicalInsRuleProjectServiceImpl extends ServiceImpl<MedicalInsRule
|
|
|
}
|
|
|
long start = System.currentTimeMillis();
|
|
|
if (!CollectionUtils.isEmpty(instalList)) {
|
|
|
+ addNumber = instalList.size();
|
|
|
// 将索引id写入
|
|
|
Integer finalId = id;
|
|
|
instalList = instalList.stream().map(item -> {
|
|
|
@@ -349,7 +399,7 @@ public class MedicalInsRuleProjectServiceImpl extends ServiceImpl<MedicalInsRule
|
|
|
//1200条 saveBatch消耗时间3687毫秒 循环插入消耗时间5212毫秒
|
|
|
log.info("消耗时间" + (System.currentTimeMillis() - start) + "毫秒");
|
|
|
//update-end-author:taoyan date:20190528 for:批量插入数据
|
|
|
- return Result.ok("文件导入成功!数据行数:" + list.size());
|
|
|
+ return Result.ok("文件导入成功!文件总行数:" + totalNumber + "文件自身重复:" + rmDuplicateNumber + "新增行数: " + addNumber + "更新行数: " + updateNumber);
|
|
|
} catch (Exception e) {
|
|
|
//update-begin-author:taoyan date:20211124 for: 导入数据重复增加提示
|
|
|
String msg = e.getMessage();
|
|
|
@@ -372,7 +422,11 @@ public class MedicalInsRuleProjectServiceImpl extends ServiceImpl<MedicalInsRule
|
|
|
}
|
|
|
|
|
|
private String getDuplicateRm(MedicalInsRuleProject medicalInsRuleProject) {
|
|
|
- return medicalInsRuleProject.getProjectCode().concat(ifnull(medicalInsRuleProject.getCorrelationProjectCode()));
|
|
|
+ log.info("调试信息,输入id={}, projectCode={}, corren={}", medicalInsRuleProject.getId(), medicalInsRuleProject.getCode(),
|
|
|
+ medicalInsRuleProject.getCorrelationProjectCode());
|
|
|
+ return ifnull(medicalInsRuleProject.getProjectCode()).concat(ifnull(medicalInsRuleProject.getCorrelationProjectCode()));
|
|
|
+
|
|
|
+// return medicalInsRuleProject.getProjectCode().concat(ifnull(medicalInsRuleProject.getCorrelationProjectCode()));
|
|
|
}
|
|
|
|
|
|
|