package com.norteksoft.mms.base.utils; import java.text.DecimalFormat; import java.text.NumberFormat; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; import org.apache.commons.beanutils.BeanUtils; import com.norteksoft.mms.base.DynamicColumnValues; import com.norteksoft.mms.form.entity.ListColumn; import com.norteksoft.mms.form.entity.ListView; import com.norteksoft.mms.form.entity.TableColumn; import com.norteksoft.mms.form.enumeration.DataType; import com.norteksoft.mms.form.service.FormHtmlParser; import com.norteksoft.mms.form.service.ListViewManager; import com.norteksoft.product.orm.Page; import com.norteksoft.product.util.JsonParser; import com.norteksoft.product.util.WebContextUtils; import com.norteksoft.product.web.struts2.Struts2Utils; /** * 已经被 com.norteksoft.product.util.PageUtils 替代,请更换 */ @Deprecated public class PageUtils { public static String pageToJson(Page<?> page,String listCode){ StringBuilder json = new StringBuilder(); json.append("{\"page\":\""); json.append(page.getPageNo()); json.append("\",\"total\":"); json.append(page.getTotalPages()); json.append(",\"records\":\""); json.append(page.getTotalCount()); json.append("\",\"rows\":"); ListViewManager listViewManager = (ListViewManager) WebContextUtils.getBean("listViewManager"); ListView listView=listViewManager.getListViewByCode(listCode); List<ListColumn> columns=listView.getColumns(); FormHtmlParser formHtmlParser = (FormHtmlParser) WebContextUtils.getBean("formHtmlParser"); json.append("["); for(Object obj:page.getResult()){ String str=obj.getClass().getName(); if(str.indexOf("[")==0){ json.append(formHtmlParser.getScriptArray(obj,columns)); }else{ json.append(formHtmlParser.getScriptObject(obj,columns)); } json.append(","); } if(page.getResult().size()>0){ json=json.replace(json.length()-1,json.length(), ""); } json.append("]"); json.append("}"); return json.toString(); } public static String pageToJson(Page<?> page){ String listCode=Struts2Utils.getParameter("_list_code"); return pageToJson(page, listCode); } public static String dynamicPageToJson(Page<?> page,DynamicColumnValues dynamicColumnValues){ String listCode=Struts2Utils.getParameter("_list_code"); StringBuilder json = new StringBuilder(); json.append("{\"page\":\""); json.append(page.getPageNo()); json.append("\",\"total\":"); json.append(page.getTotalPages()); json.append(",\"records\":\""); json.append(page.getTotalCount()); json.append("\",\"rows\":"); ListViewManager listViewManager = (ListViewManager) WebContextUtils.getBean("listViewManager"); ListView listView=listViewManager.getListViewByCode(listCode); List<ListColumn> columns=listView.getColumns(); List<Map<String,Object>> result=new ArrayList<Map<String,Object>>(); try{ for(Object obj:page.getResult()){ result.add(getRowData(obj,columns)); } dynamicColumnValues.addValuesTo(result); json.append(JsonParser.object2Json(result)); json.append("}"); }catch (Exception e) { e.printStackTrace(); } return json.toString(); } /** * 根据mms列表管理中录入的列值获得行数据 * @param object * @param columns * @return */ private static Map<String,Object> getRowData(Object object,List<ListColumn> columns){ Map<String,Object> entityMap=new HashMap<String, Object>(); String str=object.getClass().getName(); if(str.indexOf("[")==0){//数组 entityMap=packagingColumn("array",object,columns); }else{//实体 entityMap=packagingColumn("entity",object,columns); } return entityMap; } private static Map<String,Object> packagingColumn(String type,Object object,List<ListColumn> columns){ Map<String,Object> entityMap=new HashMap<String, Object>(); try { if("entity".equals(type)){ Object id=BeanUtils.getProperty(object, "id"); entityMap.put("id", id); } int i=0; for(ListColumn col: columns){ TableColumn tc=col.getTableColumn(); if(tc.getDataType()!=DataType.COLLECTION){ String colName=tc.getName(); Object val=null; if("entity".equals(type)){ if(!colName.contains("$")){ if(colName.contains(".")){ String refname=colName.split("\\.")[0];//映射实体名称 Object obj=BeanUtils.getProperty(object, refname); if(obj!=null){ val=BeanUtils.getProperty(object, colName); } }else{ val=BeanUtils.getProperty(object, colName); } } } if("array".equals(type)){ val=((Object[])object)[i]; i++; } if(val!=null){ if(tc.getDataType()==DataType.DATE){ SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd"); Date date = simpleDateFormat.parse(val.toString()); val=simpleDateFormat.format(date); }else if(tc.getDataType()==DataType.TIME){ SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm"); Date date = simpleDateFormat.parse(val.toString()); val=simpleDateFormat.format(date); }else if(tc.getDataType()==DataType.AMOUNT||tc.getDataType()==DataType.DOUBLE){ NumberFormat nf=new DecimalFormat("#.##"); Double d=Double.valueOf(val.toString()); val=nf.format(d); }else if(tc.getDataType()==DataType.FLOAT){ NumberFormat nf=new DecimalFormat("#.##"); Float d=Float.valueOf(val.toString()); val=nf.format(d); }else if("entity".equals(type)&&tc.getDataType()==DataType.REFERENCE){ val=BeanUtils.getProperty(object, colName+".id"); } } entityMap.put(colName, val); } } } catch (Exception e) { throw new RuntimeException(e); } return entityMap; } }