|  |  | @ -3,9 +3,12 @@ package com.platform.controller; | 
			
		
	
		
		
			
				
					
					|  |  |  | import java.io.File; |  |  |  | import java.io.File; | 
			
		
	
		
		
			
				
					
					|  |  |  | import java.io.IOException; |  |  |  | import java.io.IOException; | 
			
		
	
		
		
			
				
					
					|  |  |  | import java.io.InputStream; |  |  |  | import java.io.InputStream; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | import java.io.PrintWriter; | 
			
		
	
		
		
			
				
					
					|  |  |  | import java.io.RandomAccessFile; |  |  |  | import java.io.RandomAccessFile; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | import java.io.UnsupportedEncodingException; | 
			
		
	
		
		
			
				
					
					|  |  |  | import java.util.ArrayList; |  |  |  | import java.util.ArrayList; | 
			
		
	
		
		
			
				
					
					|  |  |  | import java.util.Arrays; |  |  |  | import java.util.Arrays; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | import java.util.Collection; | 
			
		
	
		
		
			
				
					
					|  |  |  | import java.util.HashMap; |  |  |  | import java.util.HashMap; | 
			
		
	
		
		
			
				
					
					|  |  |  | import java.util.Iterator; |  |  |  | import java.util.Iterator; | 
			
		
	
		
		
			
				
					
					|  |  |  | import java.util.List; |  |  |  | import java.util.List; | 
			
		
	
	
		
		
			
				
					|  |  | @ -17,6 +20,8 @@ import javax.servlet.ServletException; | 
			
		
	
		
		
			
				
					
					|  |  |  | import javax.servlet.http.HttpServletRequest; |  |  |  | import javax.servlet.http.HttpServletRequest; | 
			
		
	
		
		
			
				
					
					|  |  |  | import javax.servlet.http.HttpServletResponse; |  |  |  | import javax.servlet.http.HttpServletResponse; | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | import net.sf.json.JSONArray; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | import org.apache.commons.io.FileUtils; |  |  |  | import org.apache.commons.io.FileUtils; | 
			
		
	
		
		
			
				
					
					|  |  |  | import org.apache.commons.lang.StringUtils; |  |  |  | import org.apache.commons.lang.StringUtils; | 
			
		
	
		
		
			
				
					
					|  |  |  | import org.apache.log4j.Logger; |  |  |  | import org.apache.log4j.Logger; | 
			
		
	
	
		
		
			
				
					|  |  | @ -26,6 +31,7 @@ import org.springframework.http.MediaType; | 
			
		
	
		
		
			
				
					
					|  |  |  | import org.springframework.http.ResponseEntity; |  |  |  | import org.springframework.http.ResponseEntity; | 
			
		
	
		
		
			
				
					
					|  |  |  | import org.springframework.stereotype.Controller; |  |  |  | import org.springframework.stereotype.Controller; | 
			
		
	
		
		
			
				
					
					|  |  |  | import org.springframework.ui.ModelMap; |  |  |  | import org.springframework.ui.ModelMap; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | import org.springframework.web.bind.annotation.RequestBody; | 
			
		
	
		
		
			
				
					
					|  |  |  | import org.springframework.web.bind.annotation.RequestMapping; |  |  |  | import org.springframework.web.bind.annotation.RequestMapping; | 
			
		
	
		
		
			
				
					
					|  |  |  | import org.springframework.web.bind.annotation.RequestMethod; |  |  |  | import org.springframework.web.bind.annotation.RequestMethod; | 
			
		
	
		
		
			
				
					
					|  |  |  | import org.springframework.web.bind.annotation.ResponseBody; |  |  |  | import org.springframework.web.bind.annotation.ResponseBody; | 
			
		
	
	
		
		
			
				
					|  |  | @ -52,10 +58,10 @@ public class ExcelController extends BaseController{ | 
			
		
	
		
		
			
				
					
					|  |  |  | 	@Resource(name = "preDataInfoService") |  |  |  | 	@Resource(name = "preDataInfoService") | 
			
		
	
		
		
			
				
					
					|  |  |  | 	private IPreDataInfoService preDataInfoService; |  |  |  | 	private IPreDataInfoService preDataInfoService; | 
			
		
	
		
		
			
				
					
					|  |  |  | 	 |  |  |  | 	 | 
			
		
	
		
		
			
				
					
					|  |  |  | 		// 文件上传处理函数
 |  |  |  | 	// 文件上传处理函数
 | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 	@RequestMapping(value = "/file/upload", method = RequestMethod.POST) |  |  |  | 	@RequestMapping(value = "/file/upload", method = RequestMethod.POST) | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public void upload(HttpServletRequest request, HttpServletResponse response) |  |  |  | 	public void upload(HttpServletRequest request, HttpServletResponse response) | 
			
		
	
		
		
			
				
					
					|  |  |  | 			throws ServletException, IOException { |  |  |  | 		throws ServletException, IOException { | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 		int resumableChunkNumber = HttpUtils.toInt( |  |  |  | 		int resumableChunkNumber = HttpUtils.toInt( | 
			
		
	
		
		
			
				
					
					|  |  |  | 				request.getParameter("resumableChunkNumber"), -1); |  |  |  | 				request.getParameter("resumableChunkNumber"), -1); | 
			
		
	
	
		
		
			
				
					|  |  | @ -99,17 +105,20 @@ public class ExcelController extends BaseController{ | 
			
		
	
		
		
			
				
					
					|  |  |  | 					resumableChunkNumber)); |  |  |  | 					resumableChunkNumber)); | 
			
		
	
		
		
			
				
					
					|  |  |  | 			if (info.checkIfUploadFinished()) { // Check if all chunks uploaded,
 |  |  |  | 			if (info.checkIfUploadFinished()) { // Check if all chunks uploaded,
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 												// and change filename
 |  |  |  | 												// and change filename
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 				log.info(info.resumableFilename); | 
			
		
	
		
		
			
				
					
					|  |  |  | 				ResumableInfoStorage.getInstance().remove(info); |  |  |  | 				ResumableInfoStorage.getInstance().remove(info); | 
			
		
	
		
		
			
				
					
					|  |  |  | 				response.getWriter().print("All finished."); |  |  |  | 				response.getWriter().print("All finished."); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 				//开始导入excel
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 				 | 
			
		
	
		
		
			
				
					
					|  |  |  | 			} else { |  |  |  | 			} else { | 
			
		
	
		
		
			
				
					
					|  |  |  | 				response.getWriter().print("Upload"); |  |  |  | 				response.getWriter().print("Upload"); | 
			
		
	
		
		
			
				
					
					|  |  |  | 			} |  |  |  | 			} | 
			
		
	
		
		
			
				
					
					|  |  |  | 		} else { // 不处理非GET/POST请求
 |  |  |  | 		} else { // 不处理非GET/POST请求
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 			throw new IllegalStateException("只接受 POST或GET请求"); |  |  |  | 			throw new IllegalStateException("只接受 POST或GET请求"); | 
			
		
	
		
		
			
				
					
					|  |  |  | 		} |  |  |  | 		} | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 		log.info("----"); | 
			
		
	
		
		
			
				
					
					|  |  |  | 	} |  |  |  | 	} | 
			
		
	
		
		
			
				
					
					|  |  |  | 	 |  |  |  | 	 | 
			
		
	
		
		
			
				
					
					|  |  |  | 	 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	// 文件下载处理函数
 |  |  |  | 	// 文件下载处理函数
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 	@RequestMapping(value = "/file/download") |  |  |  | 	@RequestMapping(value = "/file/download") | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public ResponseEntity<byte[]> download(HttpServletRequest request, |  |  |  | 	public ResponseEntity<byte[]> download(HttpServletRequest request, | 
			
		
	
	
		
		
			
				
					|  |  | @ -134,7 +143,7 @@ public class ExcelController extends BaseController{ | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 	// 文件上传处理函数
 |  |  |  | 	// 文件上传处理函数
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 	private ResumableInfo getResumableInfo(HttpServletRequest request) |  |  |  | 	private ResumableInfo getResumableInfo(HttpServletRequest request) | 
			
		
	
		
		
			
				
					
					|  |  |  | 			throws ServletException { |  |  |  | 			throws ServletException, IOException { | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 		String base_dir = Configs.FILE_UPLOAD_PATH; |  |  |  | 		String base_dir = Configs.FILE_UPLOAD_PATH; | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 		int resumableChunkSize = HttpUtils.toInt( |  |  |  | 		int resumableChunkSize = HttpUtils.toInt( | 
			
		
	
	
		
		
			
				
					|  |  | @ -143,7 +152,9 @@ public class ExcelController extends BaseController{ | 
			
		
	
		
		
			
				
					
					|  |  |  | 				request.getParameter("resumableTotalSize"), -1); |  |  |  | 				request.getParameter("resumableTotalSize"), -1); | 
			
		
	
		
		
			
				
					
					|  |  |  | 		String resumableIdentifier = request |  |  |  | 		String resumableIdentifier = request | 
			
		
	
		
		
			
				
					
					|  |  |  | 				.getParameter("resumableIdentifier"); |  |  |  | 				.getParameter("resumableIdentifier"); | 
			
		
	
		
		
			
				
					
					|  |  |  | 		String resumableFilename = request.getParameter("resumableFilename"); |  |  |  | 		String fileName = new String(request.getParameter("resumableFilename").getBytes("iso-8859-1"), | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 				"UTF-8");// 为了解决中文名称乱码问题
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 		String resumableFilename = fileName /*request.getParameter("resumableFilename")*/; | 
			
		
	
		
		
			
				
					
					|  |  |  | 		String resumableRelativePath = request |  |  |  | 		String resumableRelativePath = request | 
			
		
	
		
		
			
				
					
					|  |  |  | 				.getParameter("resumableRelativePath"); |  |  |  | 				.getParameter("resumableRelativePath"); | 
			
		
	
		
		
			
				
					
					|  |  |  | 		// Here we add a ".temp" to every upload file to indicate NON-FINISHED
 |  |  |  | 		// Here we add a ".temp" to every upload file to indicate NON-FINISHED
 | 
			
		
	
	
		
		
			
				
					|  |  | @ -204,14 +215,89 @@ public class ExcelController extends BaseController{ | 
			
		
	
		
		
			
				
					
					|  |  |  | 	} |  |  |  | 	} | 
			
		
	
		
		
			
				
					
					|  |  |  | 	 |  |  |  | 	 | 
			
		
	
		
		
			
				
					
					|  |  |  | 	@ResponseBody |  |  |  | 	@ResponseBody | 
			
		
	
		
		
			
				
					
					|  |  |  | 	@RequestMapping("/importExcel") |  |  |  | 	@RequestMapping(produces = "application/json", value = "/importExcel", method = RequestMethod.POST) | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 	public ModelMap importExcel(String... paths) throws Exception { |  |  |  | 	public ModelMap importExcel(HttpServletRequest request, | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             HttpServletResponse response, @RequestBody String fileNameList) throws Exception { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 		log.info("---importExcel---" + fileNameList); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 		JSONArray jsonArray = JSONArray.fromObject(fileNameList); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 		List<String> jsonlist = (List<String>) JSONArray.toCollection(jsonArray, String.class); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 		 | 
			
		
	
		
		
			
				
					
					|  |  |  | 		ModelMap modelMap = new ModelMap(); |  |  |  | 		ModelMap modelMap = new ModelMap(); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 		if (null == jsonlist && jsonlist.size() > 0) { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 			System.err.println(request.getParameter("fileNameList")); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 			modelMap.addAttribute("returncode","3002"); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 			return modelMap; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 		} | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 		log.info(jsonlist.size()); | 
			
		
	
		
		
			
				
					
					|  |  |  | 		List<String> listPath = new ArrayList<String>(); |  |  |  | 		List<String> listPath = new ArrayList<String>(); | 
			
		
	
		
		
			
				
					
					|  |  |  | 		listPath.addAll(Arrays.asList(paths)); |  |  |  | 		for (String p : jsonlist) { | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 		 Map<String, String> result = preDataInfoService.importExcel(listPath); |  |  |  | 			listPath.add(Configs.FILE_UPLOAD_PATH + p); | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 		 |  |  |  | 		} | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 		modelMap.addAttribute("data", "success"+result); |  |  |  | 		Map<String, List> result = new HashMap<String, List>(); | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 		if (listPath.size() > 0) { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 			result = preDataInfoService.importExcel(listPath); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 			if (result.containsKey("fileUnExist") || result.containsKey("areaUnImport")) { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 				modelMap.addAttribute("data", result); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 				modelMap.addAttribute("returncode","3001"); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 			} | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 			else { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 				List<PreDataInfo> datalist = preDataInfoService.findAll(); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 				modelMap.addAttribute("data", datalist); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 				modelMap.addAttribute("length", datalist.size()); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 				modelMap.addAttribute("returncode","1001"); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 			} | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 			//删除文件
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 			for (String filePath : listPath) { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 				//读取完后删除源文件(不管是否成功导入)
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 				File tmpf = new File(filePath + ".temp"); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 				File f = new File(filePath); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 				if (tmpf.exists()) { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 					tmpf.delete(); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 				} | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 				if (f.exists()) { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 					f.delete(); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 				} | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 			} | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 		} | 
			
		
	
		
		
			
				
					
					|  |  |  | 		return modelMap; |  |  |  | 		return modelMap; | 
			
		
	
		
		
			
				
					
					|  |  |  | 	} |  |  |  | 	} | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 	 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 	public void  uploadSpring(HttpServletRequest request, HttpServletResponse respone){ | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 		System.out.println(request.getAttribute("file")); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 		System.out.println(request.getParameter("file")); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 		//解析器解析request的上下文
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 		CommonsMultipartResolver multipartResolver = | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 			new CommonsMultipartResolver(request.getSession().getServletContext()); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 		  //先判断request中是否包涵multipart类型的数据,
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 		if(multipartResolver.isMultipart(request)){ | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 			 //再将request中的数据转化成multipart类型的数据
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 			MultipartHttpServletRequest multiRequest = (MultipartHttpServletRequest) request; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 			Iterator iter = multiRequest.getFileNames(); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 			while(iter.hasNext()){ | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 				//这里的name为fileItem的alias属性值,相当于form表单中name
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 				String name=(String)iter.next(); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 				System.out.println("name:"+name); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 				//根据name值拿取文件
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 				MultipartFile file = multiRequest.getFile(name); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 				if(file != null){ | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 					String fileName = file.getOriginalFilename(); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 					String path = "D:/test/" + fileName; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 					File localFile = new File(path); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 					if(!localFile.getParentFile().exists()) { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 						 //如果目标文件所在的目录不存在,则创建父目录
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 						 localFile.getParentFile().mkdirs(); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 						 System.out.println("parent:"+localFile.getParentFile().getPath()); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 					 } | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 					//写文件到本地
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 					try { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 						file.transferTo(localFile); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 					} catch (IOException e) { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 						// TODO Auto-generated catch block
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 						e.printStackTrace(); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 					} | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 					 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 				} | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 			} | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 		} | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 	} | 
			
		
	
		
		
			
				
					
					|  |  |  | } |  |  |  | } | 
			
		
	
	
		
		
			
				
					|  |  | 
 |