anderx 6 lat temu
rodzic
commit
6201ae0948

+ 139 - 1
src/main/java/com/goafanti/common/controller/PublicController.java

@@ -2,10 +2,12 @@ package com.goafanti.common.controller;
 
 import java.io.File;
 import java.io.FileInputStream;
+import java.io.FileNotFoundException;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
-
+import java.util.ArrayList;
+import java.util.List;
 import java.util.UUID;
 
 import javax.annotation.Resource;
@@ -13,16 +15,25 @@ import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
 import org.apache.commons.lang3.StringUtils;
+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.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.context.annotation.Scope;
 import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.multipart.MultipartFile;
 
 import com.goafanti.admin.service.AdminService;
 import com.goafanti.admin.service.AttachmentService;
+import com.goafanti.common.bo.Error;
 import com.goafanti.common.bo.Result;
 import com.goafanti.common.constant.ErrorConstants;
 import com.goafanti.common.enums.UserType;
@@ -530,4 +541,131 @@ public class PublicController extends BaseController {
 		return res;
 	}
 	
+	
+	
+    /**
+     * 导入流水
+     * @param file
+     * @param request
+     * @return
+     */
+	@SuppressWarnings("unchecked")
+	@RequestMapping(value = "/import" , method = RequestMethod.POST)
+	@ResponseBody
+    public Result importTeacher(@RequestParam(value = "file", required = false) MultipartFile file, HttpServletRequest request) {
+		Result res=new Result();
+        String fileName = file.getOriginalFilename();
+            if (!fileName.matches("^.+\\.(?i)(xls)$") && !fileName.matches("^.+\\.(?i)(xlsx)$")) {
+                res.error(new Error("", "格式不正确"));
+            }
+          //检查文件
+          try {
+			checkFile(file);
+		} catch (IOException e) {
+			e.printStackTrace();
+		}
+          //获得Workbook工作薄对象
+          Workbook workbook = getWorkBook(file);
+          //创建返回对象,把每行中的值作为一个数组,所有行作为一个集合返回
+          List<List<String>> list = new ArrayList<>();
+          if(workbook != null){
+          for(int sheetNum = 0;sheetNum < workbook.getNumberOfSheets();sheetNum++){
+          //获得当前sheet工作表
+          Sheet sheet = workbook.getSheetAt(sheetNum);
+          if(sheet == null){
+          continue;
+          }
+          //获得当前sheet的开始行
+          int firstRowNum = sheet.getFirstRowNum();
+          //获得当前sheet的结束行
+          int lastRowNum = sheet.getLastRowNum();
+          //循环除了第一行的所有行
+          for(int rowNum = firstRowNum+1;rowNum <= lastRowNum;rowNum++){
+          //获得当前行
+          Row row = sheet.getRow(rowNum);
+          if(row == null){
+          continue;
+          }
+          //获得当前行的开始列
+          int firstCellNum = row.getFirstCellNum();
+          //获得当前行的列数
+          int lastCellNum = row.getLastCellNum();
+          @SuppressWarnings("rawtypes")
+		ArrayList arrayList = new ArrayList();
+          //循环当前行 cellNum = (firstCellNum+1) 则是除开第一例
+          for(int cellNum = (firstCellNum); cellNum < lastCellNum;cellNum++){
+          Cell cell = row.getCell(cellNum);
+          arrayList.add(getCellValue(cell));
+          }
+          list.add(arrayList);
+          }
+          }
+          }
+          System.out.println(list.toString());
+          return res;
+          }
+          public static void checkFile(MultipartFile file) throws IOException{
+          //判断文件是否存在
+          if(null == file){
+          throw new FileNotFoundException("文件不存在!");
+          }
+          //获得文件名
+          String fileName = file.getOriginalFilename();
+          //判断文件是否是excel文件
+          if(!fileName.endsWith("xls") && !fileName.endsWith("xlsx")){
+          throw new IOException(fileName + "不是excel文件");
+          }
+          }
+          public static Workbook getWorkBook(MultipartFile file) {
+          //创建Workbook工作薄对象,表示整个excel
+          Workbook workbook = null;
+          try {
+          //获取excel文件的io流
+          InputStream is = file.getInputStream();
+          workbook = new XSSFWorkbook(is);
+          } catch (IOException e) {
+          }
+          return workbook;
+          }
+          @SuppressWarnings("deprecation")
+		public static String getCellValue(Cell cell){
+          String cellValue = "";
+          if(cell == null){
+          return cellValue;
+          }
+          //把数字当成String来读,避免出现1读成1.0的情况
+          if(cell.getCellType() == Cell.CELL_TYPE_NUMERIC){
+          cell.setCellType(Cell.CELL_TYPE_STRING);
+          }
+          //判断数据的类型
+          switch (cell.getCellType()){
+          case Cell.CELL_TYPE_NUMERIC: //数字
+          cellValue = String.valueOf(cell.getNumericCellValue());
+          break;
+          case Cell.CELL_TYPE_STRING: //字符串
+          cellValue = String.valueOf(cell.getStringCellValue());
+          break;
+          case Cell.CELL_TYPE_BOOLEAN: //Boolean
+          cellValue = String.valueOf(cell.getBooleanCellValue());
+          break;
+          case Cell.CELL_TYPE_FORMULA: //公式
+          cellValue = String.valueOf(cell.getCellFormula());
+          break;
+          case Cell.CELL_TYPE_BLANK: //空值
+          cellValue = "未知";
+          break;
+          case Cell.CELL_TYPE_ERROR: //故障
+          cellValue = "非法字符";
+          break;
+          default:
+          cellValue = "未知类型";
+          break;
+          }
+          return cellValue;
+          }
+    
+            
+           
+
+	
 }