* 下载导入数据模板
* @param response
* @param redirectAttributes
* @return
*/
@RequiresPermissions("persion:infoTbPersonLive:view")
@RequestMapping(value = "import/template")
public String importFileTemplate(HttpServletResponse response, RedirectAttributes redirectAttributes) {
try {
String fileName = "居住信息导入模板.xlsx";
List<InfoTbPersonLive> list = Lists.newArrayList(); {
InfoTbPersonLive simple = new InfoTbPersonLive();
//租客名,租客身份证,户主名,户主身份证,所在主体类型,主体门牌,入住时间,与户主关系,居住方式,租住事由,住所类别,购买意外保险,保险购买日期,离开日期
InfoTbPerson person = new InfoTbPerson();
simple.setPerson(person);
simple.setPersoncrednum("441900XXXXXXXXXXXX");
simple.setPersonname("租客名");
simple.setPersonsex("1");
simple.setPersonresiaddr("广东省东莞市厚街镇");
simple.setCredType("111");
person = new InfoTbPerson();
person.setName("户主名");
simple.setHouseholderPerson(person);
simple.setHouseholderpersoncrednum("441900XXXXXXXXXXXX");
simple.setSubjectType("03");
simple.setHouseNum("市场主体的门牌号");
simple.setRoomHouseNum("填写所在房间号");
simple.setLiveSdate(DateUtils.formatDate(new Date(), "yyyy-MM-dd"));
simple.setRelationWithHouseholder("8");
simple.setLiveWay("1");
simple.setLiveReason("1");
simple.setLiveWhere("2");
simple.setHaveInsurance("0");
simple.setInsuranceBuydate(DateUtils.formatDate(new Date(), "yyyy-MM-dd"));
simple.setLiveEdate(DateUtils.formatDate(new Date(), "yyyy-MM-dd"));
simple.setPersonnation("01");
list.add(simple);
}
new ExportExcel("居住记录", InfoTbPersonLive.class, 2).setDataList(list).write(response, fileName).dispose();
return null;
} catch (Exception e) {
addMessage(redirectAttributes, "导入模板下载失败!失败信息:"+e.getMessage());
}
return "redirect:"+Global.getAdminPath()+"/persion/infoTbPersonLive/?repage";
}
//导入
@ResponseBody
@RequiresPermissions("persion:infoTbPersonLive:edit")
@RequestMapping(value = "importPersonLiveAjax", method=RequestMethod.POST)
public String importPersonLiveAjax(MultipartFile file, final HttpServletRequest request){
Map<String, String> result = new HashMap<String, String>();
if(Global.isDemoMode()){
result.put("status", "1");
result.put("msg", "演示模式,不允许操作!");
}else{
try {
/*导入Excel*/
if(file != null && file.getSize() > 0){
Map<String, Object> importResult = new HashMap<String, Object>();
importResultMap.put(request.getSession().getId(), importResult);
importResult.put("process", "0");
/*进行文件导入操作,使用线程操作,避免因数据量过大导致session超时*/
Runnable importRunable = new ImportPersonLiveRunable(importResult, file);
Thread importThread = new Thread(importRunable);
importThread.start();
result.put("status", "0");
result.put("msg", "文件导入处理中,请等待...");
}else{
result.put("status", "1");
result.put("msg", "导入文件不能为空,数据导入失败!");
}
} catch (Exception e) {
e.printStackTrace();
logger.error(e.getMessage());
result.put("status", "1");
result.put("msg", "系统错误,请联系管理人员!");
}
}
return gson.toJson(result);
}
private class ImportPersonLiveRunable implements Runnable {
private Map<String, Object> importResult;
private MultipartFile file;
public ImportPersonLiveRunable(Map<String, Object> importResult, MultipartFile file){
this.importResult = importResult;
this.file = file;
}
public void run() {
int line = 0;
try {
/*从Excel中读取的信息列 */
importResult.put("processMsg", "读取文件中...");
ImportExcel ei = new ImportExcel(file,1, 0);
//将excel转为List对象
List<InfoTbPersonLive> importList = ei.getDataList(InfoTbPersonLive.class,importResult);
importResult.put("processMsg", "文件读取完毕");
if(importList != null && importList.size() > 0){ //有数据
//过滤条件
String scope = UserUtils.getScope();
StringBuilder failureMsg = new StringBuilder(); //错误信息
/*数据准备*/
User user = UserUtils.getUser();
Date currentDate = new Date();
SubjectBuildingRelation sbr = new SubjectBuildingRelation();
int successNum = 0; //成功条数