Browse Source

优化导入功能

sd
zhizhi wu 4 years ago
parent
commit
4fb3c9ae2f
  1. 72
      ht/src/main/java/com/ccsens/ht/api/ImportController.java
  2. 2
      ht/src/main/java/com/ccsens/ht/bean/dto/PatientReportDto.java
  3. 5
      ht/src/main/java/com/ccsens/ht/persist/dao/HtPatientReportDao.java
  4. 8
      ht/src/main/java/com/ccsens/ht/service/IImportService.java
  5. 8
      ht/src/main/java/com/ccsens/ht/service/ImportService.java
  6. 4
      ht/src/main/java/com/ccsens/ht/service/PatientReportService.java
  7. 5
      ht/src/main/java/com/ccsens/ht/uitl/Constant.java
  8. 4
      ht/src/main/resources/application.yml
  9. 11
      ht/src/main/resources/mapper_dao/HtPatientReportDao.xml

72
ht/src/main/java/com/ccsens/ht/api/ImportController.java

@ -1,5 +1,6 @@
package com.ccsens.ht.api;
import cn.hutool.core.collection.CollectionUtil;
import com.ccsens.ht.service.IImportService;
import com.ccsens.ht.uitl.Constant;
import com.ccsens.util.JsonResponse;
@ -18,6 +19,8 @@ import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.Part;
import java.io.File;
import java.util.Collections;
import java.util.List;
/**
@ -54,19 +57,26 @@ public class ImportController {
String allowedExts = "xls,xlsx";
String dir = WebConstant.UPLOAD_PROJECT_WBS + File.separator;
String path = UploadFileUtil_Servlet3.uploadFile(file, allowedExts, dir);
File execlFile = new File(dir+path);
File excelFile = new File(dir+path);
long time2 = System.currentTimeMillis();
log.info("解析文件耗时:{}", (time2 - time1));
importService.importPosition(execlFile, 0);
importService.importPosition(excelFile, 0);
long time3 = System.currentTimeMillis();
log.info("导入职务耗时:{}", (time3 - time2));
importService.importTitle(execlFile, 1);
importService.importTitle(excelFile, 1);
long time4 = System.currentTimeMillis();
log.info("导入职称耗时:{}", (time4 - time3));
importService.importReport(execlFile, 2);
List<String> codes = importService.importReport(excelFile, 2);
long time5 = System.currentTimeMillis();
log.info("导入报告单耗时:{}", (time5 - time4));
importService.importQuestion(execlFile, Constant.Ht.Question.ALL);
if (CollectionUtil.isNotEmpty(codes)) {
for (String code: codes) {
importService.importQuestion(excelFile, code);
log.info("{}导入完成",code);
}
}
return JsonResponse.newInstance().ok();
}
@ -89,19 +99,37 @@ public class ImportController {
String allowedExts = "xls,xlsx";
String dir = WebConstant.UPLOAD_PROJECT_WBS + File.separator;
String path = UploadFileUtil_Servlet3.uploadFile(file, allowedExts, dir);
File execlFile = new File(dir+path);
File excelFile = new File(dir+path);
long time2 = System.currentTimeMillis();
log.info("解析文件耗时:{}", (time2 - time1));
// importService.importPosition(execlFile, 0);
// importService.importPosition(excelFile, 0);
// long time3 = System.currentTimeMillis();
// log.info("导入职务耗时:{}", (time3 - time2));
// importService.importTitle(execlFile, 1);
// importService.importTitle(excelFile, 1);
long time4 = System.currentTimeMillis();
// log.info("导入职称耗时:{}", (time4 - time3));
importService.importReport(execlFile, 2);
importService.importReport(excelFile, 2);
long time5 = System.currentTimeMillis();
log.info("导入报告单耗时:{}", (time5 - time4));
// importService.importQuestion(execlFile, Constant.Ht.Question.ALL);
// importService.importQuestion(excelFile, Constant.Ht.Question.ALL);
return JsonResponse.newInstance().ok();
}
@ApiOperation(value = "导入指定测评类型",notes = "文件大小不能超过20M,支持后缀:.xls|.xlsx")
@ApiImplicitParams({
@ApiImplicitParam(name = "file", value = "医疗项目表", required = true, paramType = "form",dataType = "__file"),
@ApiImplicitParam(name = "code", value = "测评类型", required = true, paramType = "form",dataType = "__file")
})
@RequestMapping(value = "/importEvaluation", method = RequestMethod.POST)
public JsonResponse importEvaluation(@RequestParam(required = true) Part file, @RequestParam(required = true) String code) throws Exception{
//1.上传文件
String allowedExts = "xls,xlsx";
String dir = WebConstant.UPLOAD_PROJECT_WBS + File.separator;
String path = UploadFileUtil_Servlet3.uploadFile(file, allowedExts, dir);
File excelFile = new File(dir+path);
importService.importQuestion(excelFile, code);
log.info("导入{}",code);
return JsonResponse.newInstance().ok();
}
@ -120,14 +148,12 @@ public class ImportController {
@RequestMapping(value = "/importMoca", method = RequestMethod.POST)
public JsonResponse importMoca(@RequestParam(required = true) Part file) throws Exception{
long time1 = System.currentTimeMillis();
//1.上传文件
String allowedExts = "xls,xlsx";
String dir = WebConstant.UPLOAD_PROJECT_WBS + File.separator;
String path = UploadFileUtil_Servlet3.uploadFile(file, allowedExts, dir);
File execlFile = new File(dir+path);
long time2 = System.currentTimeMillis();
importService.importQuestion(execlFile, Constant.Ht.Report.MOCA);
File excelFile = new File(dir+path);
importService.importQuestion(excelFile, Constant.Ht.Report.MOCA);
log.info("导入moca");
return JsonResponse.newInstance().ok();
}
@ -146,14 +172,12 @@ public class ImportController {
@RequestMapping(value = "/importMMSE", method = RequestMethod.POST)
public JsonResponse importMMSE(@RequestParam(required = true) Part file) throws Exception{
long time1 = System.currentTimeMillis();
//1.上传文件
String allowedExts = "xls,xlsx";
String dir = WebConstant.UPLOAD_PROJECT_WBS + File.separator;
String path = UploadFileUtil_Servlet3.uploadFile(file, allowedExts, dir);
File execlFile = new File(dir+path);
long time2 = System.currentTimeMillis();
importService.importQuestion(execlFile, Constant.Ht.Report.MMSE);
File excelFile = new File(dir+path);
importService.importQuestion(excelFile, Constant.Ht.Report.MMSE);
log.info("导入mmse");
return JsonResponse.newInstance().ok();
}
@ -172,14 +196,12 @@ public class ImportController {
@RequestMapping(value = "/importRey", method = RequestMethod.POST)
public JsonResponse importRey(@RequestParam(required = true) Part file) throws Exception{
long time1 = System.currentTimeMillis();
//1.上传文件
String allowedExts = "xls,xlsx";
String dir = WebConstant.UPLOAD_PROJECT_WBS + File.separator;
String path = UploadFileUtil_Servlet3.uploadFile(file, allowedExts, dir);
File execlFile = new File(dir+path);
long time2 = System.currentTimeMillis();
importService.importQuestion(execlFile, Constant.Ht.Report.REY);
File excelFile = new File(dir+path);
importService.importQuestion(excelFile, Constant.Ht.Report.REY);
log.info("导入Rey");
return JsonResponse.newInstance().ok();
}
@ -199,14 +221,12 @@ public class ImportController {
@RequestMapping(value = "/importXFXPD", method = RequestMethod.POST)
public JsonResponse importXFXPD(@RequestParam(required = true) Part file) throws Exception{
long time1 = System.currentTimeMillis();
//1.上传文件
String allowedExts = "xls,xlsx";
String dir = WebConstant.UPLOAD_PROJECT_WBS + File.separator;
String path = UploadFileUtil_Servlet3.uploadFile(file, allowedExts, dir);
File execlFile = new File(dir+path);
long time2 = System.currentTimeMillis();
importService.importQuestion(execlFile, Constant.Ht.Report.XFXPD);
File excelFile = new File(dir+path);
importService.importQuestion(excelFile, Constant.Ht.Report.XFXPD);
log.info("导入XFXPD");
return JsonResponse.newInstance().ok();
}

2
ht/src/main/java/com/ccsens/ht/bean/dto/PatientReportDto.java

@ -83,6 +83,8 @@ public class PatientReportDto {
private Long id;
@ApiModelProperty("是否需要rey 默认为0 0全部查询导出 1不导出rey 2只导出rey")
private int rey = 0;
@ApiModelProperty("报告单类型")
private String report = "REPORT1.0";
}

5
ht/src/main/java/com/ccsens/ht/persist/dao/HtPatientReportDao.java

@ -26,12 +26,13 @@ public interface HtPatientReportDao extends HtPatientReportMapper {
PatientReportVo.ReprotPatient queryReportResult(@Param("id") Long id);
/**
* 根据病人报告单ID查询报告单各项相关分数
* @param id
* @param id 报告单ID
* @param report 报告单类型
*@return: com.ccsens.ht.bean.vo.PatientReportVo.ReportScore
*@Author: wuHuiJuan
*@date: 2019/11/19 11:46
*/
List<PatientReportVo.ReportScore> queryReportScore(@Param("id") Long id,@Param("rey") int rey);
List<PatientReportVo.ReportScore> queryReportScore(@Param("id") Long id,@Param("rey") int rey, @Param("report") String report);
/**
* 查询NPI的分数

8
ht/src/main/java/com/ccsens/ht/service/IImportService.java

@ -1,6 +1,7 @@
package com.ccsens.ht.service;
import java.io.File;
import java.util.List;
/**
* @program: ptpro
@ -30,13 +31,14 @@ public interface IImportService {
String importTitle(File file, int sheetIndex) throws Exception;
/**
*@Description:导入测评报告单分类
*@param file
*@param sheetIndex
*@param file 文件
*@param sheetIndex 第几个sheet
*@return: void
*@Author: wuhuijuan
*@date: 2019/10/21 15:08
* @return 报告单类型
*/
void importReport(File file, int sheetIndex) throws Exception;
List<String> importReport(File file, int sheetIndex) throws Exception;
/**
*@Description:导入测评报告单分类

8
ht/src/main/java/com/ccsens/ht/service/ImportService.java

@ -189,7 +189,8 @@ public class ImportService implements IImportService {
}
@Override
public void importReport(File file, int sheetIndex) throws Exception{
public List<String> importReport(File file, int sheetIndex) throws Exception{
List<String> codes = new ArrayList<>();
List<Object[]> reports = PoiUtil.readExce(file, sheetIndex, null,1, false);
log.info("导入职务,读取数据完成");
List<HtReport> reportList = new ArrayList<>();
@ -200,10 +201,14 @@ public class ImportService implements IImportService {
}
HtReport report = initReport(objs);
reportList.add(report);
if (report.getType() == Constant.Ht.Report.TYPE_EVALUATION) {
codes.add(report.getCode());
}
}
if (!reportList.isEmpty()) {
htReportDao.insertBatch(reportList);
}
return codes;
}
@Override
@ -216,7 +221,6 @@ public class ImportService implements IImportService {
types.add(type);
}
log.info("导入试题类型:{}", types);
StringBuilder builder = new StringBuilder();
for (String sheetName: types) {
List<Object[]> questions = PoiUtil.readExce(file, -1, sheetName,1, true);
saveQuestions(questions, sheetName);

4
ht/src/main/java/com/ccsens/ht/service/PatientReportService.java

@ -223,7 +223,7 @@ public class PatientReportService implements IPatientReportService {
//查询报告单信息和病人信息
PatientReportVo.ReprotPatient reportPatient = htPatientReportDao.queryReportResult(queryDetail.getId());
//查询报告单分数
List<PatientReportVo.ReportScore> reportScore = htPatientReportDao.queryReportScore(queryDetail.getId(),queryDetail.getRey());
List<PatientReportVo.ReportScore> reportScore = htPatientReportDao.queryReportScore(queryDetail.getId(),queryDetail.getRey(), queryDetail.getReport());
//重新封装报告单信息
Map<String, PatientReportVo.ReportScore> map = new HashMap<>(32);
List<PatientReportVo.ReportScore> scores = new ArrayList<>();
@ -235,7 +235,7 @@ public class PatientReportService implements IPatientReportService {
}
map.put(score.getCode(), score);
//测评类(MOCA等)
if (Constant.Ht.Report.TYPE_EVALUATION.equals(score.getType())) {
if (Constant.Ht.Report.TYPE_EVALUATION == score.getType()) {
String specialCode = "NPI";
if (specialCode.equalsIgnoreCase(score.getCode())) {
initNPI(queryDetail, score);

5
ht/src/main/java/com/ccsens/ht/uitl/Constant.java

@ -127,7 +127,7 @@ public class Constant {
public static class Report{
public final static String PARENT_CODE = "REPORT1.0";
public final static String PARENT_NAME = "认知功能神经心理量表检查报告单";
public final static Byte TYPE_EVALUATION = 2;
public final static byte TYPE_EVALUATION = 2;
public final static String IGNORE_SCORE = "[个]";
public final static String MOCA_SJZ = "SZJ";
public final static String MOCA = "MoCA";
@ -142,6 +142,9 @@ public class Constant {
/**忽略报告单*/
public final static Byte COMPLETE_IGNORE = 2;
/**在历史报告单中显示*/
public final static byte SHOW_HISTORY = 1;
public final static Map<String, Byte> TYPE = new HashMap<>();

4
ht/src/main/resources/application.yml

@ -1,4 +1,4 @@
spring:
profiles:
active: test
include: common, util-test
active: prod
include: common, util-prod

11
ht/src/main/resources/mapper_dao/HtPatientReportDao.xml

@ -47,14 +47,21 @@
<select id="queryReportScore" resultMap="ScoreMap">
select t1.code,t1.name, t1.description, t1.total_score, t1.remark,t1.type,t1.parent_code, sum(t2.score) as score
from
(select code,name, description, total_score, remark, type, parent_code, sort from t_ht_report
where is_show = 1 and is_del = 0
(
select code,name, description, total_score, remark, type, parent_code, sort from (
select t1.*, if (find_in_set(t1.parent_code, @pcode) > 0, @pcode := concat(@pcode,',',t1.code) ,0 )as ischild
from
(select * from t_ht_report where is_show = 1 and is_del = 0
<if test="rey == 1">
and `code` != 'Rey' and `code` != 'XFXPD' and parent_code != 'Rey'
</if>
<if test="rey == 2">
AND (`code` = 'Rey' or parent_code = 'Rey')
</if>
ORDER BY type, sort) t1 ,
(select @pcode:=#{report} ) t2
) t where ischild != '0'
) t1
left join t_ht_patient_score t2
on t1.code = t2.question_parent_code and

Loading…
Cancel
Save