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. 17
      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; package com.ccsens.ht.api;
import cn.hutool.core.collection.CollectionUtil;
import com.ccsens.ht.service.IImportService; import com.ccsens.ht.service.IImportService;
import com.ccsens.ht.uitl.Constant; import com.ccsens.ht.uitl.Constant;
import com.ccsens.util.JsonResponse; import com.ccsens.util.JsonResponse;
@ -18,6 +19,8 @@ import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.Part; import javax.servlet.http.Part;
import java.io.File; import java.io.File;
import java.util.Collections;
import java.util.List;
/** /**
@ -54,19 +57,26 @@ public class ImportController {
String allowedExts = "xls,xlsx"; String allowedExts = "xls,xlsx";
String dir = WebConstant.UPLOAD_PROJECT_WBS + File.separator; String dir = WebConstant.UPLOAD_PROJECT_WBS + File.separator;
String path = UploadFileUtil_Servlet3.uploadFile(file, allowedExts, dir); String path = UploadFileUtil_Servlet3.uploadFile(file, allowedExts, dir);
File execlFile = new File(dir+path); File excelFile = new File(dir+path);
long time2 = System.currentTimeMillis(); long time2 = System.currentTimeMillis();
log.info("解析文件耗时:{}", (time2 - time1)); log.info("解析文件耗时:{}", (time2 - time1));
importService.importPosition(execlFile, 0); importService.importPosition(excelFile, 0);
long time3 = System.currentTimeMillis(); long time3 = System.currentTimeMillis();
log.info("导入职务耗时:{}", (time3 - time2)); log.info("导入职务耗时:{}", (time3 - time2));
importService.importTitle(execlFile, 1); importService.importTitle(excelFile, 1);
long time4 = System.currentTimeMillis(); long time4 = System.currentTimeMillis();
log.info("导入职称耗时:{}", (time4 - time3)); log.info("导入职称耗时:{}", (time4 - time3));
importService.importReport(execlFile, 2); List<String> codes = importService.importReport(excelFile, 2);
long time5 = System.currentTimeMillis(); long time5 = System.currentTimeMillis();
log.info("导入报告单耗时:{}", (time5 - time4)); 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(); return JsonResponse.newInstance().ok();
} }
@ -89,19 +99,37 @@ public class ImportController {
String allowedExts = "xls,xlsx"; String allowedExts = "xls,xlsx";
String dir = WebConstant.UPLOAD_PROJECT_WBS + File.separator; String dir = WebConstant.UPLOAD_PROJECT_WBS + File.separator;
String path = UploadFileUtil_Servlet3.uploadFile(file, allowedExts, dir); String path = UploadFileUtil_Servlet3.uploadFile(file, allowedExts, dir);
File execlFile = new File(dir+path); File excelFile = new File(dir+path);
long time2 = System.currentTimeMillis(); long time2 = System.currentTimeMillis();
log.info("解析文件耗时:{}", (time2 - time1)); log.info("解析文件耗时:{}", (time2 - time1));
// importService.importPosition(execlFile, 0); // importService.importPosition(excelFile, 0);
// long time3 = System.currentTimeMillis(); // long time3 = System.currentTimeMillis();
// log.info("导入职务耗时:{}", (time3 - time2)); // log.info("导入职务耗时:{}", (time3 - time2));
// importService.importTitle(execlFile, 1); // importService.importTitle(excelFile, 1);
long time4 = System.currentTimeMillis(); long time4 = System.currentTimeMillis();
// log.info("导入职称耗时:{}", (time4 - time3)); // log.info("导入职称耗时:{}", (time4 - time3));
importService.importReport(execlFile, 2); importService.importReport(excelFile, 2);
long time5 = System.currentTimeMillis(); long time5 = System.currentTimeMillis();
log.info("导入报告单耗时:{}", (time5 - time4)); 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(); return JsonResponse.newInstance().ok();
} }
@ -120,14 +148,12 @@ public class ImportController {
@RequestMapping(value = "/importMoca", method = RequestMethod.POST) @RequestMapping(value = "/importMoca", method = RequestMethod.POST)
public JsonResponse importMoca(@RequestParam(required = true) Part file) throws Exception{ public JsonResponse importMoca(@RequestParam(required = true) Part file) throws Exception{
long time1 = System.currentTimeMillis();
//1.上传文件 //1.上传文件
String allowedExts = "xls,xlsx"; String allowedExts = "xls,xlsx";
String dir = WebConstant.UPLOAD_PROJECT_WBS + File.separator; String dir = WebConstant.UPLOAD_PROJECT_WBS + File.separator;
String path = UploadFileUtil_Servlet3.uploadFile(file, allowedExts, dir); String path = UploadFileUtil_Servlet3.uploadFile(file, allowedExts, dir);
File execlFile = new File(dir+path); File excelFile = new File(dir+path);
long time2 = System.currentTimeMillis(); importService.importQuestion(excelFile, Constant.Ht.Report.MOCA);
importService.importQuestion(execlFile, Constant.Ht.Report.MOCA);
log.info("导入moca"); log.info("导入moca");
return JsonResponse.newInstance().ok(); return JsonResponse.newInstance().ok();
} }
@ -146,14 +172,12 @@ public class ImportController {
@RequestMapping(value = "/importMMSE", method = RequestMethod.POST) @RequestMapping(value = "/importMMSE", method = RequestMethod.POST)
public JsonResponse importMMSE(@RequestParam(required = true) Part file) throws Exception{ public JsonResponse importMMSE(@RequestParam(required = true) Part file) throws Exception{
long time1 = System.currentTimeMillis();
//1.上传文件 //1.上传文件
String allowedExts = "xls,xlsx"; String allowedExts = "xls,xlsx";
String dir = WebConstant.UPLOAD_PROJECT_WBS + File.separator; String dir = WebConstant.UPLOAD_PROJECT_WBS + File.separator;
String path = UploadFileUtil_Servlet3.uploadFile(file, allowedExts, dir); String path = UploadFileUtil_Servlet3.uploadFile(file, allowedExts, dir);
File execlFile = new File(dir+path); File excelFile = new File(dir+path);
long time2 = System.currentTimeMillis(); importService.importQuestion(excelFile, Constant.Ht.Report.MMSE);
importService.importQuestion(execlFile, Constant.Ht.Report.MMSE);
log.info("导入mmse"); log.info("导入mmse");
return JsonResponse.newInstance().ok(); return JsonResponse.newInstance().ok();
} }
@ -172,14 +196,12 @@ public class ImportController {
@RequestMapping(value = "/importRey", method = RequestMethod.POST) @RequestMapping(value = "/importRey", method = RequestMethod.POST)
public JsonResponse importRey(@RequestParam(required = true) Part file) throws Exception{ public JsonResponse importRey(@RequestParam(required = true) Part file) throws Exception{
long time1 = System.currentTimeMillis();
//1.上传文件 //1.上传文件
String allowedExts = "xls,xlsx"; String allowedExts = "xls,xlsx";
String dir = WebConstant.UPLOAD_PROJECT_WBS + File.separator; String dir = WebConstant.UPLOAD_PROJECT_WBS + File.separator;
String path = UploadFileUtil_Servlet3.uploadFile(file, allowedExts, dir); String path = UploadFileUtil_Servlet3.uploadFile(file, allowedExts, dir);
File execlFile = new File(dir+path); File excelFile = new File(dir+path);
long time2 = System.currentTimeMillis(); importService.importQuestion(excelFile, Constant.Ht.Report.REY);
importService.importQuestion(execlFile, Constant.Ht.Report.REY);
log.info("导入Rey"); log.info("导入Rey");
return JsonResponse.newInstance().ok(); return JsonResponse.newInstance().ok();
} }
@ -199,14 +221,12 @@ public class ImportController {
@RequestMapping(value = "/importXFXPD", method = RequestMethod.POST) @RequestMapping(value = "/importXFXPD", method = RequestMethod.POST)
public JsonResponse importXFXPD(@RequestParam(required = true) Part file) throws Exception{ public JsonResponse importXFXPD(@RequestParam(required = true) Part file) throws Exception{
long time1 = System.currentTimeMillis();
//1.上传文件 //1.上传文件
String allowedExts = "xls,xlsx"; String allowedExts = "xls,xlsx";
String dir = WebConstant.UPLOAD_PROJECT_WBS + File.separator; String dir = WebConstant.UPLOAD_PROJECT_WBS + File.separator;
String path = UploadFileUtil_Servlet3.uploadFile(file, allowedExts, dir); String path = UploadFileUtil_Servlet3.uploadFile(file, allowedExts, dir);
File execlFile = new File(dir+path); File excelFile = new File(dir+path);
long time2 = System.currentTimeMillis(); importService.importQuestion(excelFile, Constant.Ht.Report.XFXPD);
importService.importQuestion(execlFile, Constant.Ht.Report.XFXPD);
log.info("导入XFXPD"); log.info("导入XFXPD");
return JsonResponse.newInstance().ok(); 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; private Long id;
@ApiModelProperty("是否需要rey 默认为0 0全部查询导出 1不导出rey 2只导出rey") @ApiModelProperty("是否需要rey 默认为0 0全部查询导出 1不导出rey 2只导出rey")
private int rey = 0; 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); PatientReportVo.ReprotPatient queryReportResult(@Param("id") Long id);
/** /**
* 根据病人报告单ID查询报告单各项相关分数 * 根据病人报告单ID查询报告单各项相关分数
* @param id * @param id 报告单ID
* @param report 报告单类型
*@return: com.ccsens.ht.bean.vo.PatientReportVo.ReportScore *@return: com.ccsens.ht.bean.vo.PatientReportVo.ReportScore
*@Author: wuHuiJuan *@Author: wuHuiJuan
*@date: 2019/11/19 11:46 *@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的分数 * 查询NPI的分数

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

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

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

@ -189,7 +189,8 @@ public class ImportService implements IImportService {
} }
@Override @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); List<Object[]> reports = PoiUtil.readExce(file, sheetIndex, null,1, false);
log.info("导入职务,读取数据完成"); log.info("导入职务,读取数据完成");
List<HtReport> reportList = new ArrayList<>(); List<HtReport> reportList = new ArrayList<>();
@ -200,10 +201,14 @@ public class ImportService implements IImportService {
} }
HtReport report = initReport(objs); HtReport report = initReport(objs);
reportList.add(report); reportList.add(report);
if (report.getType() == Constant.Ht.Report.TYPE_EVALUATION) {
codes.add(report.getCode());
}
} }
if (!reportList.isEmpty()) { if (!reportList.isEmpty()) {
htReportDao.insertBatch(reportList); htReportDao.insertBatch(reportList);
} }
return codes;
} }
@Override @Override
@ -216,7 +221,6 @@ public class ImportService implements IImportService {
types.add(type); types.add(type);
} }
log.info("导入试题类型:{}", types); log.info("导入试题类型:{}", types);
StringBuilder builder = new StringBuilder();
for (String sheetName: types) { for (String sheetName: types) {
List<Object[]> questions = PoiUtil.readExce(file, -1, sheetName,1, true); List<Object[]> questions = PoiUtil.readExce(file, -1, sheetName,1, true);
saveQuestions(questions, sheetName); 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()); 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); Map<String, PatientReportVo.ReportScore> map = new HashMap<>(32);
List<PatientReportVo.ReportScore> scores = new ArrayList<>(); List<PatientReportVo.ReportScore> scores = new ArrayList<>();
@ -235,7 +235,7 @@ public class PatientReportService implements IPatientReportService {
} }
map.put(score.getCode(), score); map.put(score.getCode(), score);
//测评类(MOCA等) //测评类(MOCA等)
if (Constant.Ht.Report.TYPE_EVALUATION.equals(score.getType())) { if (Constant.Ht.Report.TYPE_EVALUATION == score.getType()) {
String specialCode = "NPI"; String specialCode = "NPI";
if (specialCode.equalsIgnoreCase(score.getCode())) { if (specialCode.equalsIgnoreCase(score.getCode())) {
initNPI(queryDetail, score); 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 static class Report{
public final static String PARENT_CODE = "REPORT1.0"; public final static String PARENT_CODE = "REPORT1.0";
public final static String PARENT_NAME = "认知功能神经心理量表检查报告单"; 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 IGNORE_SCORE = "[个]";
public final static String MOCA_SJZ = "SZJ"; public final static String MOCA_SJZ = "SZJ";
public final static String MOCA = "MoCA"; public final static String MOCA = "MoCA";
@ -142,6 +142,9 @@ public class Constant {
/**忽略报告单*/ /**忽略报告单*/
public final static Byte COMPLETE_IGNORE = 2; public final static Byte COMPLETE_IGNORE = 2;
/**在历史报告单中显示*/ /**在历史报告单中显示*/
public final static byte SHOW_HISTORY = 1; public final static byte SHOW_HISTORY = 1;
public final static Map<String, Byte> TYPE = new HashMap<>(); public final static Map<String, Byte> TYPE = new HashMap<>();

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

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

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

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

Loading…
Cancel
Save