浏览 4824 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2008-06-12
<s:form action="" method="post" name="importForm" enctype="multipart/form-data"> <table width="100%" border="0" align="center" cellpadding="0" cellspacing="1" class="info-table"> <tr> <td class="info-left" align="right" width="40%"><font color="red">*</font>请选择导入文件:</td> <td class="info-right" align="left"> <input name="filePath" type="file" size="30"> <input type="button" name="Submit" value="导入数据" onClick="onSubmit();"> </td> </tr> <s:if test="#request.results!=null"> <tr> <td class="info-right" colspan="2"> 成功插入的记录的条数: <s:property value="#request.results.get(0)" /> 条 </td> </tr> <tr> <td class="info-right" colspan="2"> excel中非法的记录的条数: <s:property value="#request.results.get(1)" /> 条 </td> </tr> <s:if test="#request.illegalNotes!=null"> <tr> <td class="info-right" colspan="2"> 不合法的记录的字段如下所示: <s:iterator value="#request.illegalNotes" status="listStat"> <li> <s:property /> </li> </s:iterator> </td> </tr> </s:if> </s:if> </table> </s:form> Action层代码 public String importCarModi()throws SystemException{ HttpServletRequest request = ServletActionContext.getRequest (); List<Integer> results = new ArrayList<Integer>(); List<String> illegalNotes = new ArrayList<String>();//非法的字段的错误的提示 Map session = ActionContext.getContext().getSession(); String operatorCode = (String)session.get(SysConstant.OPERATOR_ID); log.info("filePath="+filePath); if (filePath == null){ request.setAttribute("tip", "请选择导入的excle的路径"); return Constants.Dispatcher.TO_IMPORT_DATA; } try { carInsModificationFacade.importCarModi(filePath,results,illegalNotes,operatorCode); request.setAttribute("results", results); if (results.get(1)!=0){ request.setAttribute("illegalNotes", illegalNotes); } return Constants.Dispatcher.TO_IMPORT_DATA; } catch (FacadeException e) { e.printStackTrace(); throw new SystemException("导入非车险批单信息失败!e.message="+ e.getMessage()); } } Facade层代码 public void importCarModi(String filePath,List<Integer> results,List<String> illegalNotes,String operatorCode) throws FacadeException{ log.info(">>>>>>>>>>根据用户选定的filepath="+filePath+"导入excel文件到数据库开始......"); int legalPolicyNum = 0; int illegalPolicyNum = 0; try{ InputStream ExcelResource = new FileInputStream(filePath); Workbook ExcelWB = Workbook.getWorkbook(ExcelResource); Sheet ExcelRS = ExcelWB.getSheet(0); int rows = ExcelRS.getRows(); if (rows > 0) { for (int i = 1; i < rows; i++) {// 注意要从第二行开始读取excel中的值 List<String> illegalStr = new ArrayList<String>(); CarInsModificationInfo modification = new CarInsModificationInfo(); String modificationCode = ExcelRS.getCell(1, i).getContents();//批单号 // log.info("ModificationCode="+ModificationCode); if (!StringUtils.isBlank(modificationCode)){ String carRegEx = "\\w{11}(19|20)\\d{2}P\\d{6}"; boolean isCarIns = Pattern.compile(carRegEx,Pattern.CASE_INSENSITIVE).matcher(modificationCode).find(); if (isCarIns) { modification.setModificationCode(modificationCode); if (illegalStr.size()==0) {//批单号合法,则开始检查该批单号在数据库中是否存在 if (carInsModificationDAO.checkIsExist("CarInsModificationInfo", "modificationCode", modificationCode)) { illegalStr.add("第"+i+"条记录的批单号"+modificationCode+"在数据库中已经存在"); } } } else { illegalStr.add("第"+i+"条记录的批单号:"+modificationCode+"不符合车险批单的规则!"); } }else{ illegalStr.add("第"+i+"条记录的批单号为空,数据库中该字段的为主键,不能为空!"); } String policyCode = ExcelRS.getCell(0, i).getContents();//保单号 //检查该保单号在数据库中是否已经存在 boolean isExist = carInsModificationDAO.checkIsExist("CarInsPolicy", "policyCode", policyCode); if (StringUtils.isBlank(policyCode)){ illegalStr.add("第"+i+"条记录中的保单号为空,数据库中该字段不能为空!"); } if (!isExist){ illegalStr.add("第"+i+"条记录中的保单号为:"+policyCode+"在保单表中不存在!"); } if (!StringUtils.isBlank(policyCode) && isExist) { modification.setPolicyCode(policyCode); } if (!StringUtils.isBlank(ExcelRS.getCell(2, i).getContents()) && illegalStr.size() == 0){ String mstateCode = ExcelRS.getCell(2, i).getContents().substring(1,2);//取出批单状态代码 modification.setMstateCode(mstateCode); } if (!StringUtils.isBlank(ExcelRS.getCell(3, i).getContents())){ String mtypeCode = ExcelRS.getCell(3, i).getContents().substring(1,3);//取出批改类型代码 //要检查这个代码在这个代码表中是否存在 if(!carInsModificationDAO.codeIsExist("CmodiType",mtypeCode)){ illegalStr.add("第"+i+"条记录中的批改类型的代码,在代码表中不存在!"); }else{ //因为建立了关联,所以要以对象的形式插入 CmodiType cmodiType = new CmodiType(); cmodiType.setCode(mtypeCode); modification.setCmodiType(cmodiType); } } if (!StringUtils.isBlank(ExcelRS.getCell(4, i).getContents()) && illegalStr.size() == 0){ Double insChange = Double.parseDouble(ExcelRS.getCell(4, i).getContents()); //保费变化 modification.setInsChange(insChange); } if (!StringUtils.isBlank(ExcelRS.getCell(5, i).getContents()) && illegalStr.size() == 0){ Date modifyTime = DateFormater.parseStr2DateTime(ExcelRS.getCell(5, i).getContents(),DateFormater.YY_MM_DD);//签单日期 modification.setModifyTime(modifyTime); } if (illegalStr.size() != 0){//如果不为空,则说明该记录中有不规范的字段存在,将其记入非法保单数组 illegalPolicyNum++; illegalNotes.addAll(illegalStr); //将该记录的非法字段的提示记入非法提示字符串 }else{//如果为空则说明该记录中的所有的字段都是合法的,将其记入合法的保单对象数组 legalPolicyNum++; modification.setMstateCode("5");//将要可以导入数据库的数据的状态设为有效 modification.setCreateTime(new Date()); //导入数据的时间和人即为创建记录的时间和人 modification.setOperatorCode(operatorCode); carInsModificationDAO.saveEntity(modification); } } results.add(legalPolicyNum); //成功插入的记录的条数 results.add(illegalPolicyNum);//非法的记录的条数 } }catch (Exception e){ throw new FacadeException("取出excel数据失败"+e); } log.info(">>>>>>>>>>根据用户选定的filepath="+filePath+"导入excel文件到数据库完成......"); } 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |