做了一个excel到入数据的功能,
导入后最后利用JSONDeserializer封装成json返回
但是放到正式后,过一段时间返回的参数的key都会带了一串序号
导致前端无法识别,关键本地测试都无法重现,
对应配置方法
private final JSONDeserializer<PlanBean> pbDeserializer = new JSONDeserializer<PlanBean>() .use("tasks", ArrayList.class) .use("tasks.values", MasterTaskBean.class) .use("removedTasks", ArrayList.class) .use("removedTasks.values", String.class) .use("tasks.values.predecessorLink", ArrayList.class) .use("tasks.values.predecessorLink.values", DependenceBean.class) .use("tasks.values.submits", ArrayList.class) .use("tasks.values.submits.values", SubmitBean.class) .use("tasks.values.slaveTask", SlaveTaskBean.class) .use("tasks.values.slaveTask.specAttr", ArrayList.class) .use("tasks.values.slaveTask.specAttr.values", SpecAttrBean.class) .use("tasks.values.children", ArrayList.class) .use("tasks.values.children.values", MasterTaskBean.class) .use("tasks.values.children.values.predecessorLink",ArrayList.class) .use("tasks.values.children.values.predecessorLink.values", DependenceBean.class) .use("tasks.values.children.values.submits", ArrayList.class) .use("tasks.values.children.values.submits.values", SubmitBean.class) .use("tasks.values.children.values.slaveTask", SlaveTaskBean.class) .use("tasks.values.children.values.slaveTask.specAttr", ArrayList.class) .use("tasks.values.children.values.slaveTask.specAttr.values", SpecAttrBean.class) .use("tasks.values.parentTaskUID", new PidFactory()) .use("tasks.values.children.values.parentTaskUID", new PidFactory()) .use(Date.class, new DateTransformer("yyyy-MM-dd'T'HH:mm:ss")); private final JSONSerializer pbSerializer = new JSONSerializer().exclude( "*.class").transform(new DateTransformer("yyyy-MM-dd'T'HH:mm:ss"), Date.class); private final JSONSerializer dictSerializer = new JSONSerializer() .exclude("*.class");返回方法
@RequestMapping(value = "appendTaskByFile") @ResponseBody public String appendTaskByFile(@RequestParam CommonsMultipartFile exlFile, PlanBean plan, Model model,HttpServletRequest request,HttpServletResponse response)throws Exception { Workbook wb=null; try { String message =""; UserBean user = UserUtils.getLSUser(); String sysTab = SystemUtils.getAppProp("prodectVersion"); if (exlFile.isEmpty()) { message = "不能上传空文件!"; return "{message:\""+message+"\",success:false}"; } else { String lastTaskId=(String)request.getParameter("lastTaskId"); String planId=(String)request.getParameter("planId"); String fileType = exlFile.getFileItem().getName().toString(); if(!InputXlsUtil.isXlsx(fileType)){ message ="只能上传Excel文档文件!"; return "{message:\""+message+"\",success:false}"; } if(InputXlsUtil.isExcel2003(fileType)){ wb = new HSSFWorkbook(exlFile.getInputStream()); }else{ wb = new XSSFWorkbook(exlFile.getInputStream()); } Sheet sheet = wb.getSheetAt(0); Row firstRow = sheet.getRow(1); // 分析表头 if (firstRow == null) { message ="文件格式错误,未找到表头!"; return "{message:\""+message+"\",success:false}"; } //导入计划的内容 //String nextPlanId = editTraceService.getNextPlanId(); plan = new PlanBean();//packageBean(plan,nextPlanId,isFilter); boolean weekendWork = true;//表示周末不工作 if("Y".equals(String.valueOf(plan.getWeekend()))){ weekendWork = false;//表示周末工作 } Date sDate=new Date(); Date endDate=new Date(); //从第三行分数据 Iterator<Row> rit = sheet.rowIterator(); //从第三行开始 rit.next(); rit.next(); int rowNum = 2; Row row = null; MasterTaskBean taskBean; SlaveTaskBean slaveTaskBean; List<MasterTaskBean> taskBeanList = new ArrayList<MasterTaskBean>(); String curUserNo =UserUtils.getLSUser().getNo(); Map<String,String> guangxianMap = new HashMap<String,String>(); List<Map> guangxianList = mgLineService.findMap(user); Map<String,ProjectBean> allProjectListMap = projectService.getaAllProjectMap();//项目 for(Map m:guangxianList){ guangxianMap.put((String)m.get("value"), (String)m.get("label")); } Map<String,String> typemap=editTraceService.getTaskTypeMap(); //获取序号与Id对应关系 Map<String, String> mapNoToId = new HashMap<String, String>(); //存储父级任务对应的id Map<String,String> parentsMap = new HashMap<String,String>(); String seed=""; int i=0; if(lastTaskId!=null && !lastTaskId.equals("")){ String[] arr=lastTaskId.split("T"); seed=arr[0]+"T"; String c=arr[1]; i=Integer.parseInt(c); }else{ seed= editTraceService.getNextTaskIdSeed(); } for (; rit.hasNext(); rowNum++) { i++; taskBean = new MasterTaskBean(); slaveTaskBean = new SlaveTaskBean(); List<SubmitBean> submitList = new ArrayList<SubmitBean>(); row = (Row) rit.next(); if (isRowEmpty(row)) { continue; } taskBean.setUID(seed+i); message = editTraceService.checkExpExpert(row,rowNum, taskBean,slaveTaskBean,submitList,user,mapNoToId, weekendWork,typemap,parentsMap,allProjectListMap); if(StringUtils.isNotBlank(message)){ return "{message:\""+message+"\",success:false}"; } if(taskBean.getAssigner().equals(taskBean.getPrincipal())){ curUserNo = curUserNo+","+taskBean.getAssigner(); }else{ curUserNo =curUserNo+","+taskBean.getAssigner()+"," +taskBean.getPrincipal(); } if(i==1){ sDate=taskBean.getStart(); endDate=taskBean.getFinish(); } if(taskBean.getStart()!=null){ sDate = InputXlsUtil.getMinDate(taskBean.getStart(),sDate); } if(taskBean.getFinish()!=null){ endDate = InputXlsUtil.getMaxDate(taskBean.getFinish(),endDate); } slaveTaskBean.setPlanId(planId); slaveTaskBean.setUID(seed+i); taskBean.setPlanId(planId); taskBean.setSlaveTask(slaveTaskBean); taskBeanList.add(taskBean); if("tmshszj".equals(sysTab)){ TaskProjectObject xmjg = new TaskProjectObject(); List<TaskProjectObject> xmjglist = new ArrayList<TaskProjectObject>(); String xiangmujiegou = taskBean.getXmjgcodes(); if(xiangmujiegou==null){ xiangmujiegou = ""; } String xmjgNames = ""; String[] xiangmujiegouArr = xiangmujiegou.split(","); for (int j = 0; j < xiangmujiegouArr.length; j++) { List<TreeObj> treeObjs = projectService.getProjectJgTree(user, taskBean.getProjectNo(), xiangmujiegouArr[j]); if(treeObjs.size() == 1){ TreeObj obj = treeObjs.get(0); String xmjgName = obj.getName(); if(xmjgName != null && xmjgName.length() > 4){ xmjgName = xmjgName.substring(0, xmjgName.indexOf("--")); } String level = obj.getLevel(); xmjg.setId(IDutils.genGlobal18digitStr()); xmjg.setObjectCode(obj.getDuixiangbianhao()); xmjg.setObjectName(xmjgName); xmjgNames += xmjgName + ","; if(level != null && !"".equals(level)) xmjg.setObjectLevel(new Integer(obj.getLevel())); xmjglist.add(xmjg); } } taskBean.setXmjg(xmjglist); if(StringUtils.isNotBlank(xmjgNames)){ taskBean.setXmjgnames(xmjgNames.substring(0,xmjgNames.length() - 1)); } taskBean.setSubmits(submitList); } } String planTime = SysConfigUtils.getValues("planTime"); if(StringUtils.isBlank(planTime)){//计划时间 为了兼容旧计划导入新任务 planTime = "2018-01-01"; } plan.setStartDate(DateUtils.parseDate(planTime)); plan.setFinishDate(endDate); List<MasterTaskBean> beanList = null; List<String> entryList = new ArrayList<String>(); if(message.equals("")){ beanList = editTraceService.getPacgageDate(taskBeanList, curUserNo,mapNoToId,entryList, user); } if(entryList!=null && entryList.size()>0){ message = entryList.get(0); } beanList = parentOnchildTaskList(beanList,1); plan.setTasks(beanList); if(message.length() > 0){ return "{message:\""+message+"\",success:false}"; }else{ return "{success:true,result:"+pbSerializer.deepSerialize(plan)+"}"; } } } catch (Exception e) { e.printStackTrace(); } finally { if(wb != null){ wb.close(); } } return null; }先记录