バックグラウンドjava excelをデータベースコードにインポート

5236 ワード

import org.apache.commons.io.FileUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFFont;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.CellStyle;
	
	@RequestMapping("/ajaxUploadFile")
	@ResponseBody
	public String upload(@RequestParam MultipartFile[] userfiles) throws IOException {
		String result = "success";
		for (MultipartFile userfile : userfiles) {
			if (userfile.isEmpty()) {
				result = "failure";
			} else {
				try {
					//            excle  
					List modals = new ArrayList();
					modals.add(new CastModal(0, "account", "String", true));
					modals.add(new CastModal(1, "name", "String", true));
					modals.add(new CastModal(2, "sex", "String", true));
					modals.add(new CastModal(3, "mobile", "String", true));
					modals.add(new CastModal(4, "phone", "String"));
					modals.add(new CastModal(5, "email", "String"));
					modals.add(new CastModal(6, "orgName", "String"));

					List userVoList = ExcelUtil.getList(userfile.getInputStream(), SysUserVo.class, modals);

					// -----    -----
					int rowNum = 1;
					SessionParam sessionParam = (SessionParam) SecurityUtils.getSubject()
							.getSession()
							.getAttribute("sessionParam");
					SysUser opUser = sessionParam.getUser();
					for (SysUserVo sysUserVo : userVoList) {
						// rowNum ++;
						//   
						result = checkField("account", sysUserVo.getAccount(), "^[\\u0391-\\uFFE5\\w\\.@-]{1,25}$",
								true);
						if (!"success".equals(result)) {
							return " " + rowNum + "     " + result;
						}
						//        
						if (StringUtils.isNotBlank(ajaxCheckAccount(sysUserVo.getAccount()))) {
							return " " + rowNum + "        ";
						}

						//     
						result = checkField("name", sysUserVo.getName(), "^[\\u0391-\\uFFE5\\w\\.@-]{1,50}$", true);
						if (!"success".equals(result)) {
							return " " + rowNum + "     " + result;
						}

						//   
						result = checkField("gender", sysUserVo.getSex(), "^[\\u7537\\u5973]{1}$", true);
						if (!"success".equals(result)) {
							return " " + rowNum + "   " + result;
						}

						//     
						result = checkField("mobile", sysUserVo.getMobile(), "^1[3-9]\\d{9}$", true);
						if (!"success".equals(result)) {
							return " " + rowNum + "     " + result;
						}

						//     
						if (StringUtils.isNotBlank(sysUserVo.getPhone())) {
							result = checkField("phone", sysUserVo.getPhone(), "^\\d{7,11}$", false);
							if (!"success".equals(result)) {
								return " " + rowNum + "     " + result;
							}
						}
						//     
						if (StringUtils.isNotBlank(sysUserVo.getEmail())) {
							result = checkField("email", sysUserVo.getEmail()
									.toLowerCase(),
									"^[\\w\\+\\-]+(\\.[\\w\\+\\-]+)*@[a-z\\d\\-]+(\\.[a-z\\d\\-]+)*\\.([a-z]{2,4})$",
									false);
							if (!"success".equals(result)) {
								return " " + rowNum + "     " + result;
							}
						}
						
						//          
						sysUserVo.setCreateTime(new Date());
						sysUserVo.setCreateUserId(opUser.getId());

						if (" ".equals(sysUserVo.getSex()))
							sysUserVo.setSex("man");
						else
							sysUserVo.setSex("woman");

						sysUserVo.setPassword(MD5Utils.md5(ConstantsUtils.UAC_USER_PASSWORD_DEFAULT));
						sysUserVo.setStatus("SA");
						;
					}
					// ------    ------
					//         
					sysUserService.batchSaveUser(userVoList);
				} catch (Exception e) {
					e.printStackTrace();
					result = "failure";
				}

			}
		}
		return result;
	}
	public String checkField(String fieldName, String fieldValue, String reg, Boolean isNotNull) {
		if (null != isNotNull && isNotNull) {
			if (StringUtils.isBlank(fieldValue))
				return "    ";
		}
		if (null == fieldValue)
			return "success";
		if (!fieldValue.matches(reg)) {
			if ("account".equals(fieldName))
				return "      /  /_/-/. @,    25 ";
			else if ("name".equals(fieldName))
				return "      /  /_/-/. @,    50 ";
			else if ("gender".equals(fieldName))
				return "     ";
			else if ("mobile".equals(fieldName))
				return "         ";
			else if ("phone".equals(fieldName))
				return "          ";
			else if ("email".equals(fieldName))
				return "        ";
			else if ("orgName".equals(fieldName))
				return "      /  /_/-/. @,    150 ";
			else
				return "     ";
		}
		;
		return "success";
	}