|
@@ -1,5 +1,6 @@
|
|
|
package com.diagbot.facade;
|
|
|
|
|
|
+import com.diagbot.dto.LisConfigDTO;
|
|
|
import com.diagbot.dto.RespDTO;
|
|
|
import com.diagbot.exception.CommonErrorCode;
|
|
|
import com.diagbot.exception.CommonException;
|
|
@@ -15,6 +16,7 @@ import org.apache.poi.ss.usermodel.Row;
|
|
|
import org.apache.poi.ss.usermodel.Sheet;
|
|
|
import org.apache.poi.ss.usermodel.Workbook;
|
|
|
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Component;
|
|
|
import org.springframework.web.multipart.MultipartFile;
|
|
|
|
|
@@ -35,167 +37,186 @@ import java.util.stream.Collectors;
|
|
|
@Component
|
|
|
public class LisExcelResFacade {
|
|
|
|
|
|
- public RespDTO<LitAssayVO> lisExcelAnalysis(MultipartFile file, HttpServletRequest request) {
|
|
|
+ @Autowired
|
|
|
+ LisConfigFacade lisConfigFacade;
|
|
|
|
|
|
- List<String> messages = new ArrayList<>();
|
|
|
- List<LisExcelWrapperVO> lisExcelWrapperList = new ArrayList<>();
|
|
|
- InputStream inputStream = null;
|
|
|
- Workbook wb = null;
|
|
|
- try {
|
|
|
- if (!file.isEmpty()) {
|
|
|
- inputStream = file.getInputStream();
|
|
|
- if (inputStream.available() > 512000) {
|
|
|
- messages.add("化验文件最大支持500KB!");
|
|
|
- } else {
|
|
|
- String fileName = file.getOriginalFilename();
|
|
|
- if (fileName.lastIndexOf(".") != -1) {
|
|
|
- String type = fileName.substring(fileName.lastIndexOf("."));
|
|
|
- if (type.equals(".xls")) {
|
|
|
- wb = new HSSFWorkbook(inputStream);
|
|
|
- } else if (type.equals(".xlsx")) {
|
|
|
- wb = new XSSFWorkbook(inputStream);
|
|
|
- }
|
|
|
- if (wb != null) {
|
|
|
- Sheet sheet = wb.getSheetAt(0);
|
|
|
- int count = 0;
|
|
|
- String mealName, itemName, unit, value, max, min, time;
|
|
|
- for (Row row : sheet) {
|
|
|
- count++;
|
|
|
- try {
|
|
|
- if (row != null) {
|
|
|
- mealName = getValue(row.getCell(0)).trim().replace(" ", "");
|
|
|
- itemName = getValue(row.getCell(1)).trim().replace(" ", "");
|
|
|
- unit = getValue(row.getCell(2)).trim();
|
|
|
- value = getValue(row.getCell(3)).trim();
|
|
|
- min = getValue(row.getCell(4)).trim();
|
|
|
- max = getValue(row.getCell(5)).trim();
|
|
|
- time = getValue(row.getCell(6)).trim();
|
|
|
- type = getValue(row.getCell(7)).trim();
|
|
|
- } else {
|
|
|
- mealName = null;
|
|
|
- itemName = null;
|
|
|
- unit = null;
|
|
|
- value = null;
|
|
|
- min = null;
|
|
|
- max = null;
|
|
|
- time = null;
|
|
|
- type = null;
|
|
|
- }
|
|
|
+ public RespDTO<LitAssayVO> lisExcelAnalysis(MultipartFile file, String hospitalCode, HttpServletRequest request) {
|
|
|
+ System.out.println("hospitalId======" + hospitalCode);
|
|
|
+ List<String> messages = new ArrayList<>();
|
|
|
+ List<LisExcelWrapperVO> lisExcelWrapperList = new ArrayList<>();
|
|
|
+ InputStream inputStream = null;
|
|
|
+ Workbook wb = null;
|
|
|
+ try {
|
|
|
+ if (!file.isEmpty()) {
|
|
|
+ inputStream = file.getInputStream();
|
|
|
+ if (inputStream.available() > 512000) {
|
|
|
+ messages.add("化验文件最大支持500KB!");
|
|
|
+ } else {
|
|
|
+ String fileName = file.getOriginalFilename();
|
|
|
+ if (fileName.lastIndexOf(".") != -1) {
|
|
|
+ String type = fileName.substring(fileName.lastIndexOf("."));
|
|
|
+ if (type.equals(".xls")) {
|
|
|
+ wb = new HSSFWorkbook(inputStream);
|
|
|
+ } else if (type.equals(".xlsx")) {
|
|
|
+ wb = new XSSFWorkbook(inputStream);
|
|
|
+ }
|
|
|
+ if (wb != null) {
|
|
|
+ Sheet sheet = wb.getSheetAt(0);
|
|
|
+ int count = 0;
|
|
|
+ String mealName, itemName, unit, value, max, min, time;
|
|
|
+ for (Row row : sheet) {
|
|
|
+ count++;
|
|
|
+ try {
|
|
|
+ if (row != null) {
|
|
|
+ mealName = getValue(row.getCell(0)).trim().replace(" ", "");
|
|
|
+ itemName = getValue(row.getCell(1)).trim().replace(" ", "");
|
|
|
+ unit = getValue(row.getCell(2)).trim();
|
|
|
+ value = getValue(row.getCell(3)).trim();
|
|
|
+ min = getValue(row.getCell(4)).trim();
|
|
|
+ max = getValue(row.getCell(5)).trim();
|
|
|
+ time = getValue(row.getCell(6)).trim();
|
|
|
+ type = getValue(row.getCell(7)).trim();
|
|
|
+ } else {
|
|
|
+ mealName = null;
|
|
|
+ itemName = null;
|
|
|
+ unit = null;
|
|
|
+ value = null;
|
|
|
+ min = null;
|
|
|
+ max = null;
|
|
|
+ time = null;
|
|
|
+ type = null;
|
|
|
+ }
|
|
|
|
|
|
- if (StringUtil.isEmpty(mealName) && StringUtil.isEmpty(itemName)
|
|
|
- && StringUtil.isEmpty(value) && StringUtil.isEmpty(type)) {
|
|
|
- continue;
|
|
|
- }
|
|
|
+ if (StringUtil.isEmpty(mealName) && StringUtil.isEmpty(itemName)
|
|
|
+ && StringUtil.isEmpty(value) && StringUtil.isEmpty(type)) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
|
|
|
- if (count == 1 && mealName.equals("套餐名")) {
|
|
|
- continue;
|
|
|
- }
|
|
|
+ if (count == 1 && mealName.equals("套餐名")) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
|
|
|
- if (StringUtil.isEmpty(mealName) || StringUtil.isEmpty(itemName)
|
|
|
- || StringUtil.isEmpty(value) || StringUtil.isEmpty(type)) {
|
|
|
- // throw new
|
|
|
- // CommonException(CommonErrorCode.NOT_EXISTS,
|
|
|
- // "第"+count+"行数据不规范,套餐名、项目名、结果三项必填;");
|
|
|
- messages.add("第" + count + "行数据不规范,套餐名、项目名、结果、是否异常四项必填;");
|
|
|
- continue;
|
|
|
- }
|
|
|
- LisExcelWrapperVO lisExcelWrapper = new LisExcelWrapperVO();
|
|
|
+ if (StringUtil.isEmpty(mealName) || StringUtil.isEmpty(itemName)
|
|
|
+ || StringUtil.isEmpty(value) || StringUtil.isEmpty(type)) {
|
|
|
+ messages.add("第" + count + "行数据不规范,套餐名、项目名、结果、是否异常四项必填;");
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ LisExcelWrapperVO lisExcelWrapper = new LisExcelWrapperVO();
|
|
|
|
|
|
- lisExcelWrapper.setMealName(mealName);
|
|
|
- lisExcelWrapper.setItemName(itemName);
|
|
|
- lisExcelWrapper.setUnit(unit);
|
|
|
- lisExcelWrapper.setValue(value);
|
|
|
- lisExcelWrapper.setMax(max);
|
|
|
- lisExcelWrapper.setMin(min);
|
|
|
- lisExcelWrapper.setTime(time);
|
|
|
- lisExcelWrapper.setType(type);
|
|
|
- lisExcelWrapperList.add(lisExcelWrapper);
|
|
|
- } catch (Exception e) {
|
|
|
- e.printStackTrace();
|
|
|
- throw new CommonException(CommonErrorCode.NOT_EXISTS, e.toString());
|
|
|
- // logger.error("",e);
|
|
|
- }
|
|
|
- }
|
|
|
- } else {
|
|
|
- // throw new
|
|
|
- // CommonException(CommonErrorCode.NOT_EXISTS,
|
|
|
- // "非excel文件无法解析!");
|
|
|
- messages.add("非excel文件无法解析!");
|
|
|
- }
|
|
|
- } else {
|
|
|
- // throw new CommonException(CommonErrorCode.NOT_EXISTS,
|
|
|
- // "未知文件无法解析!");
|
|
|
- messages.add("未知文件无法解析!");
|
|
|
- }
|
|
|
- }
|
|
|
- } else {
|
|
|
- // throw new CommonException(CommonErrorCode.NOT_EXISTS,
|
|
|
- // "无文件上传!");
|
|
|
- messages.add("无文件上传!");
|
|
|
- }
|
|
|
- Map<String, List<LisExcelWrapperVO>> lixExMap = lisExcelWrapperList.stream()
|
|
|
- .collect(Collectors.groupingBy(LisExcelWrapperVO::getMealName));
|
|
|
- List<LisExcelResVO> LisExcelReslist = new ArrayList<LisExcelResVO>();
|
|
|
- for (String str : lixExMap.keySet()) {
|
|
|
- LisExcelResVO lisExcelResVO = new LisExcelResVO();
|
|
|
- lisExcelResVO.setMenus(str);
|
|
|
- lisExcelResVO.setLisExcelItem(lixExMap.get(str));
|
|
|
- LisExcelReslist.add(lisExcelResVO);
|
|
|
- }
|
|
|
+ lisExcelWrapper.setMealName(mealName);
|
|
|
+ lisExcelWrapper.setItemName(itemName);
|
|
|
+ // lisExcelWrapper.setUniqueName(uniqueName);
|
|
|
+ lisExcelWrapper.setUnit(unit);
|
|
|
+ lisExcelWrapper.setValue(value);
|
|
|
+ lisExcelWrapper.setMax(max);
|
|
|
+ lisExcelWrapper.setMin(min);
|
|
|
+ lisExcelWrapper.setTime(time);
|
|
|
+ lisExcelWrapper.setType(type);
|
|
|
+ lisExcelWrapperList.add(lisExcelWrapper);
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ throw new CommonException(CommonErrorCode.NOT_EXISTS, e.toString());
|
|
|
+ // logger.error("",e);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ // throw new
|
|
|
+ // CommonException(CommonErrorCode.NOT_EXISTS,
|
|
|
+ // "非excel文件无法解析!");
|
|
|
+ messages.add("非excel文件无法解析!");
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ // throw new CommonException(CommonErrorCode.NOT_EXISTS,
|
|
|
+ // "未知文件无法解析!");
|
|
|
+ messages.add("未知文件无法解析!");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ // throw new CommonException(CommonErrorCode.NOT_EXISTS,
|
|
|
+ // "无文件上传!");
|
|
|
+ messages.add("无文件上传!");
|
|
|
+ }
|
|
|
+ //匹配公表名
|
|
|
+ List<LisConfigDTO> litData = lisConfigFacade.getLisConfigByhospitalId(hospitalCode);
|
|
|
+ if(litData.size()>0){
|
|
|
+ List<LisExcelWrapperVO> lisExcelWrapperListNew = new ArrayList<>();
|
|
|
+ for (LisExcelWrapperVO lisExcelWrapperNew : lisExcelWrapperList) {
|
|
|
+ for (LisConfigDTO LisNew : litData) {
|
|
|
+ if (LisNew.getMealName().equals(lisExcelWrapperNew.getMealName())
|
|
|
+ && LisNew.getItemName().equals(lisExcelWrapperNew.getItemName())) {
|
|
|
+ lisExcelWrapperNew.setUniqueName(LisNew.getUniqueName());
|
|
|
+ }
|
|
|
|
|
|
- LitAssayVO litAssay = new LitAssayVO();
|
|
|
- litAssay.setMessages(messages);
|
|
|
- litAssay.setLisExcelRes(LisExcelReslist);
|
|
|
- return RespDTO.onSuc(litAssay);
|
|
|
- } catch (Exception e) {
|
|
|
- e.printStackTrace();
|
|
|
- throw new CommonException(CommonErrorCode.NOT_EXISTS, "化验excel文件解析出错!");
|
|
|
- // return response.failure("化验excel文件解析出错!");
|
|
|
- } finally {
|
|
|
- try {
|
|
|
- if (inputStream != null) {
|
|
|
- inputStream.close();
|
|
|
- }
|
|
|
- if (wb != null) {
|
|
|
- wb.close();
|
|
|
- }
|
|
|
- } catch (Exception e) {
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
+ }
|
|
|
+ lisExcelWrapperListNew.add(lisExcelWrapperNew);
|
|
|
+ }
|
|
|
+ lisExcelWrapperList = lisExcelWrapperListNew;
|
|
|
+ }
|
|
|
+
|
|
|
|
|
|
- private String getValue(Cell cell) {
|
|
|
- try {
|
|
|
- Object obj = null;
|
|
|
- switch (cell.getCellTypeEnum()) {
|
|
|
- case BOOLEAN:
|
|
|
- obj = cell.getBooleanCellValue();
|
|
|
- break;
|
|
|
- case ERROR:
|
|
|
- obj = cell.getErrorCellValue();
|
|
|
- break;
|
|
|
- case NUMERIC:
|
|
|
- if (HSSFDateUtil.isCellDateFormatted(cell)) {
|
|
|
- Date date = cell.getDateCellValue();
|
|
|
- obj = DateFormatUtils.format(date, "yyyy-MM-dd");
|
|
|
- } else {
|
|
|
- obj = cell.getNumericCellValue();
|
|
|
- DecimalFormat df = new DecimalFormat("0");
|
|
|
- obj = df.format(obj);
|
|
|
- }
|
|
|
+ Map<String, List<LisExcelWrapperVO>> lixExMap = lisExcelWrapperList.stream()
|
|
|
+ .collect(Collectors.groupingBy(LisExcelWrapperVO::getMealName));
|
|
|
+ List<LisExcelResVO> LisExcelReslist = new ArrayList<LisExcelResVO>();
|
|
|
+ for (String str : lixExMap.keySet()) {
|
|
|
+ LisExcelResVO lisExcelResVO = new LisExcelResVO();
|
|
|
+ lisExcelResVO.setMenus(str);
|
|
|
+ lisExcelResVO.setLisExcelItem(lixExMap.get(str));
|
|
|
+ LisExcelReslist.add(lisExcelResVO);
|
|
|
+ }
|
|
|
|
|
|
- // obj = cell.getNumericCellValue();
|
|
|
- break;
|
|
|
- case STRING:
|
|
|
- obj = cell.getStringCellValue();
|
|
|
- break;
|
|
|
- default:
|
|
|
- break;
|
|
|
- }
|
|
|
- return obj.toString();
|
|
|
- } catch (Exception e) {
|
|
|
- return "";
|
|
|
- }
|
|
|
- }
|
|
|
+ LitAssayVO litAssay = new LitAssayVO();
|
|
|
+ litAssay.setMessages(messages);
|
|
|
+ litAssay.setLisExcelRes(LisExcelReslist);
|
|
|
+ return RespDTO.onSuc(litAssay);
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ throw new CommonException(CommonErrorCode.NOT_EXISTS, "化验excel文件解析出错!");
|
|
|
+ // return response.failure("化验excel文件解析出错!");
|
|
|
+ } finally {
|
|
|
+ try {
|
|
|
+ if (inputStream != null) {
|
|
|
+ inputStream.close();
|
|
|
+ }
|
|
|
+ if (wb != null) {
|
|
|
+ wb.close();
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private String getValue(Cell cell) {
|
|
|
+ try {
|
|
|
+ Object obj = null;
|
|
|
+ switch (cell.getCellTypeEnum()) {
|
|
|
+ case BOOLEAN:
|
|
|
+ obj = cell.getBooleanCellValue();
|
|
|
+ break;
|
|
|
+ case ERROR:
|
|
|
+ obj = cell.getErrorCellValue();
|
|
|
+ break;
|
|
|
+ case NUMERIC:
|
|
|
+ if (HSSFDateUtil.isCellDateFormatted(cell)) {
|
|
|
+ Date date = cell.getDateCellValue();
|
|
|
+ obj = DateFormatUtils.format(date, "yyyy-MM-dd");
|
|
|
+ } else {
|
|
|
+ obj = cell.getNumericCellValue();
|
|
|
+ DecimalFormat df = new DecimalFormat("0");
|
|
|
+ obj = df.format(obj);
|
|
|
+ }
|
|
|
+
|
|
|
+ // obj = cell.getNumericCellValue();
|
|
|
+ break;
|
|
|
+ case STRING:
|
|
|
+ obj = cell.getStringCellValue();
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ return obj.toString();
|
|
|
+ } catch (Exception e) {
|
|
|
+ return "";
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
}
|