package market.Pms.Util;

import java.io.File;
import java.io.InputStream;
import java.util.List;

import javax.servlet.http.HttpServletRequest;

import market.Lms.Equipment.impl.WDWUtil;

import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.apache.commons.lang3.time.DateFormatUtils;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.DateUtil;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

/**
 * @描述   : 导入工具方法  
 * @作者   : 赵淋支
 * @创建日期: 2018年12月26日  
 * @注意事项: 无
 * @遗留BUG: 无
 **/
public class ImportUtil {

	/**
	 * 
	 * @author 赵淋支
	 * @date   2018年12月26日
	 * @parameter 
	 * @return 
	 * @description 获取FileItem
	 */
	public static List<FileItem> getUpload(Object className, File file, HttpServletRequest request)
			throws FileUploadException {
		// 获取文件流
		DiskFileItemFactory factory = new DiskFileItemFactory();
		factory.setSizeThreshold(1024 * 1024 * 5);// 5M 单个文件的最大大小
		factory.setRepository(file);
		ServletFileUpload upload = new ServletFileUpload(factory);
		upload.setSizeMax(1024 * 1024 * 5); // 5M 总的大小
		return upload.parseRequest(request);
	}		

	/**
	 * 
	 * @author 赵淋支
	 * @date   2018年12月26日
	 * @parameter 
	 * @return 
	 * @description 获取Workbook
	 */
	public static Workbook getWB(FileItem item, long size) throws Exception {
		Workbook wb = null;
		// 获取文件名
		String fileName = item.getName();
		// 解决fileName兼容性问题
		int lastindex = fileName.lastIndexOf("\\");
		fileName = fileName.substring(lastindex + 1);
		// 获取文件流
		InputStream in = item.getInputStream();
		// 进一步判断文件是否为空（即判断其大小是否为0或其名称是否为null）验证文件名是否合格
		if (fileName == null || ("").equals(fileName) && size == 0
				&& !WDWUtil.validateExcel(fileName)) {
			throw new Exception("上传文件格式错误，请使用.xls或.xlsx后缀文档！");
		}
		try {
			// 获取文件输入流
			String fileType = fileName.substring(fileName.lastIndexOf("."));
			if (".xls".equals(fileType)) {// 2003- 版本的excel
				wb = new HSSFWorkbook(in); 
			} else if (".xlsx".equals(fileType)) {// 2007+ 版本的excel
				wb = new XSSFWorkbook(in); 
			}
		} catch (Exception e) {
			e.printStackTrace();
			throw new Exception("Excel读取失败！请将文件另存为xlsx格式或xls格式");
		} finally {
			in. close();
		}
		return wb;
	}
		
		/**
		 * 
		 * @author 赵淋支
		 * @date   2018年12月26日
		 * @parameter cell 表格
		 * @return 字符类型的值
		 * @description 处理表格里面的空值或者 奇葩数据类型
		 */
		@SuppressWarnings({ "deprecation", "static-access" })
		public static String getCellValue(Cell cell){
			if (cell==null) {
				return "";
			}else if (cell.getCellType() == cell.CELL_TYPE_BOOLEAN) {
				return String.valueOf(cell.getBooleanCellValue());  
			}else if (cell.getCellType() == cell.CELL_TYPE_NUMERIC) {
				if(DateUtil.isCellDateFormatted(cell)){
					return DateFormatUtils.format(cell.getDateCellValue(), "yyyy-MM-dd");
				}else {
					return String.valueOf(cell.getNumericCellValue());
				}
			}else {
				return String.valueOf(cell.getStringCellValue()); 
			}
		}
	
	
}
