昨天写的java json字符串转map集合递归嵌套这篇博文,只是某个功能中的一小部门.
这个功能就根据json串配置的校验指标,去校验对应的列表数据中的必填项是否完整,不完整就在当前页面提示用户,去完善数据.当某条记录不完善的时候,会将不完善的那条数据的背景色置为红色,如图:
校验分为两类,一类是dom加载完以后校验当前页出现的id,一类是全局的校验.
后台处理代码
//将前台的json串转成map集合 JSONObject jsonObject = JSONObject.fromObject(jsonStr); Map<String, Object> map = JSONObject.fromObject(jsonObject); for(Entry<String, Object> entry:map.entrySet()){ Object strval = entry.getValue(); JSONObject jsonObject1= JSONObject.fromObject(strval); Map<String, Object> map1 = JSONObject.fromObject(jsonObject1); map.put(entry.getKey(), map1); } //获取有职称人员的map returnids= process_ValidateListService.checkPageData(map,lsh,selectStr,idsStr);
public String checkPageData(Map<String, Object> map, String lsh, String selectStr,String idsStr) throws ServiceException { String returnIds=""; try { for(Entry<String, Object> entry:map.entrySet()){ //获取所有的指标map={'TABLES':'PROCESS_RYJBXX r,PRCOESS_RYKZXXB k','TABLESLINK':'r.ID=k.RYID','PROCESS_RYJBXX':'r.ZWXM,r.ZGXL,r.ZJLX,r.ZJHM','PRCOESS_RYKZXXB':'k.ZW,k.ZC,k.CSZY'} Map<String, Object> zbmap=(Map<String, Object>) entry.getValue(); returnIds=process_qyyzcryDao.checkPageData(zbmap,lsh,selectStr,idsStr); if(returnIds.isEmpty()){ returnIds="no"; } } } catch (DAOException e) { this.log.info("列表数据校验失败,请联系管理员!",e); returnIds="fail"; throw new ServiceException(e); }finally{ return returnIds; } }
/** * 校验当前页面数据的完整性 * @author ducc * @param zbmap * @param lsh * @param selectStr * @return */ public String checkPageData(Map<String, Object> zbmap, String lsh, String selectStr,String idsStr)throws DAOException { String returnIds=""; Session session=this.getSession(); try { //获取所有的指标map={'TABLES':'PROCESS_RYJBXX r,PRCOESS_RYKZXXB k,PROCESS_QYRYGXB g','TABLESLINK':'r.ID=k.RYID and g.RYID=r.RYID and g.rylx=\'QYRYFXB009\'','PROCESS_RYJBXX':'r.ZWXM,r.ZGXL,r.ZJLX,r.ZJHM','PRCOESS_RYKZXXB':'k.ZW,k.ZC,k.CSZY'} String tables=(String) zbmap.get("TABLES"); String[] tablearr=null;//获取要查询表的数组 if(tables.indexOf(",")>-1){//如果包含, tablearr=tables.split(","); }else{ if(!"".equals(tables)){ tablearr=new String[0]; tablearr[0]=tables; } } String tableslink="no";//获取表的关联关系 Object objtableslink=zbmap.get("TABLESLINK"); if(objtableslink!=null){ tableslink=objtableslink.toString(); } if("no".equalsIgnoreCase(tableslink)){//没有关联关系 }else{ Map<String,Object> map=new HashMap<String, Object>(); for(String str:tablearr){//遍历所有的表 map.put(str.split(" ")[0], str.split(" ")[1]); } String sqlWhere=""; String alias=""; for(Entry<String, Object> entry:map.entrySet()){ String str=entry.getKey(); alias=(String) entry.getValue(); if(null!=zbmap.get(str)){ String strWhere=(String) zbmap.get(str); String[] strWhereArr=strWhere.split(","); for(String strw:strWhereArr){ sqlWhere=sqlWhere+" "+strw+" is null or"; } } } if(!"".equals(sqlWhere)){ sqlWhere=" and (" +sqlWhere.substring(0,sqlWhere.lastIndexOf("or"))+" )"; } String sql="select "+selectStr+" from "+tables+" where "+alias+".liushuihao=? "+sqlWhere+" and "+tableslink+" and "+selectStr+" in("+idsStr+")"; sql=sql.replaceAll("\"", "'"); List<Map<String, Object>> list= session.createSQLQuery(sql).setString(0, lsh).setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP).list(); String selectid=selectStr.substring(selectStr.indexOf(".")+1); for(Map<String,Object> idmap:list){ if("".equals(returnIds)){ returnIds= BigDecimal2Long(idmap.get(selectid.toUpperCase()))+""; }else{ returnIds=returnIds+","+BigDecimal2Long(idmap.get(selectid.toUpperCase())); } } } } catch (Exception e) { returnIds="fail"; this.logger.info("",e); throw new DAOException(e); }finally{ return returnIds; } }
文章评论