wangfeng 6 лет назад
Родитель
Сommit
8f1f56c8e3

+ 24 - 1
icss-service/pom.xml

@@ -148,7 +148,30 @@
             <groupId>org.springframework.cloud</groupId>
             <artifactId>spring-cloud-starter-stream-rabbit</artifactId>
         </dependency>
-
+<!-- 文件上传相关架包 -->
+		<dependency>
+			<groupId>commons-fileupload</groupId>
+			<artifactId>commons-fileupload</artifactId>
+			<version>1.3.1</version>
+		</dependency>
+		<dependency>
+			<groupId>commons-io</groupId>
+			<artifactId>commons-io</artifactId>
+			<version>2.4</version>
+		</dependency>
+		<dependency>
+        <groupId>org.springframework.boot</groupId>
+        <artifactId>spring-boot-starter-web</artifactId>
+    </dependency>
+    <dependency>
+        <groupId>org.springframework.boot</groupId>
+        <artifactId>spring-boot-starter-thymeleaf</artifactId>
+    </dependency>
+    <dependency>
+        <groupId>org.springframework.boot</groupId>
+        <artifactId>spring-boot-devtools</artifactId>
+        <optional>true</optional>
+    </dependency>
     </dependencies>
 
     <build>

+ 201 - 0
icss-service/src/main/java/com/diagbot/facade/LisExcelResFacade.java

@@ -0,0 +1,201 @@
+package com.diagbot.facade;
+
+import java.io.InputStream;
+import java.text.DecimalFormat;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+import javax.servlet.http.HttpServletRequest;
+
+import org.apache.commons.lang.time.DateFormatUtils;
+import org.apache.poi.hssf.usermodel.HSSFDateUtil;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
+import org.apache.poi.ss.usermodel.Cell;
+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.stereotype.Component;
+import org.springframework.web.multipart.MultipartFile;
+
+import com.diagbot.dto.RespDTO;
+import com.diagbot.exception.CommonErrorCode;
+import com.diagbot.exception.CommonException;
+import com.diagbot.util.StringUtil;
+import com.diagbot.vo.LisExcelResVO;
+import com.diagbot.vo.LisExcelWrapperVO;
+import com.diagbot.vo.LitAssayVO;
+
+/**
+ * 
+ * @author wangfeng
+ * @Description: 化验导入
+ * @date 2018年11月29日 上午10:16:35
+ */
+@Component
+public class LisExcelResFacade {
+
+	public RespDTO<LitAssayVO> lisExcelAnalysis(MultipartFile file, HttpServletRequest request) {
+
+		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();
+										max = getValue(row.getCell(4)).trim();
+										min = getValue(row.getCell(5)).trim();
+										time = getValue(row.getCell(6)).trim();
+									} else {
+										mealName = null;
+										itemName = null;
+										unit = null;
+										value = null;
+										max = null;
+										min = null;
+										time = null;
+									}
+
+									if (StringUtil.isEmpty(mealName) && StringUtil.isEmpty(itemName)
+											&& StringUtil.isEmpty(value)) {
+										continue;
+									}
+
+									if (count == 1 && mealName.equals("套餐名")) {
+										continue;
+									}
+
+									if (StringUtil.isEmpty(mealName) || StringUtil.isEmpty(itemName)
+											|| StringUtil.isEmpty(value)) {
+										// throw new
+										// CommonException(CommonErrorCode.NOT_EXISTS,
+										// "第"+count+"行数据不规范,套餐名、项目名、结果三项必填;");
+										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);
+									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);
+			}
+
+			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 "";
+		}
+	}
+
+}

+ 23 - 0
icss-service/src/main/java/com/diagbot/vo/LisExcelResVO.java

@@ -0,0 +1,23 @@
+package com.diagbot.vo;
+
+import java.util.List;
+
+import lombok.Getter;
+import lombok.Setter;
+/**
+ * 
+ * @author wangfeng
+ * @Description: TODO
+ * @date 2018年11月28日 上午9:51:17
+ */
+@Setter
+@Getter
+public class LisExcelResVO {
+
+	
+	private String menus;
+	
+	private List<LisExcelWrapperVO> lisExcelItem ;
+	
+
+}

+ 8 - 7
icss-service/src/main/java/com/diagbot/vo/LisExcelWrapperVO.java

@@ -3,23 +3,24 @@ package com.diagbot.vo;
 import lombok.Getter;
 import lombok.Setter;
 
-/**
- * 
- * @author wangfeng
- * @Description: TODO
- * @date 2018年11月26日 下午1:20:24
- */
+
 @Setter
 @Getter
 public class LisExcelWrapperVO {
 
-private String mealName;
+    private String mealName;
 	
 	private String itemName;
 	
 	private String unit;
 	
 	private String value;
+	
+	private String max;
+	
+	private String min;
+	
+	private String time;
 
 	@Override
 	public String toString() {

+ 40 - 0
icss-service/src/main/java/com/diagbot/web/LisExcelResController.java

@@ -0,0 +1,40 @@
+package com.diagbot.web;
+
+import javax.servlet.http.HttpServletRequest;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.multipart.MultipartFile;
+
+import com.diagbot.dto.RespDTO;
+import com.diagbot.facade.LisExcelResFacade;
+import com.diagbot.vo.LitAssayVO;
+
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+
+/**
+ * 
+ * @author wangfeng
+ * @Description: 化验导入
+ * @date 2018年11月28日 上午10:20:38
+ */
+@RestController
+@RequestMapping("/lisExcelRes")
+@Api(value = "化验导入API[by:wangfeng]", tags = { "WF——化验导入API" })
+@SuppressWarnings("unchecked")
+public class LisExcelResController {
+
+	@Autowired
+	LisExcelResFacade lisExcelResFacade;
+
+	@ApiOperation(value = "导入化验数据:[by:wangfeng]", notes = "导入化验数据")
+	@PostMapping("/lisExcelAnalysis")
+	public RespDTO<LitAssayVO> lisExcelAnalysis(@RequestParam("uploadfile") MultipartFile file,
+			HttpServletRequest request) {
+		return lisExcelResFacade.lisExcelAnalysis(file, request);
+	}
+}