easy-UI作为页面展示的一个例子

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath(); 
String beforeDay = com.companyname.dhm.common.util.StringUtil.beforeDay(); // 昨天
String weeks = com.companyname.dhm.common.util.StringUtil.weeks(); // 上周一
String beforeMonth = com.companyname.dhm.common.util.StringUtil.beforeMonth(); // 前月
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>栏目点播次数</title>
<link rel="stylesheet" type="text/css" href="../easyui/themes/default/easyui.css">
<link rel="stylesheet" type="text/css" href="../easyui/themes/icon.css">
<link rel="stylesheet" type="text/css" href="../style/base.css" />
<link rel="stylesheet" type="text/css" href="../style/zTreeStyle.css" />
<script type="text/javascript" src="../easyui/jquery.min.js"></script>
<script type="text/javascript" src="../easyui/jquery.easyui.min.js"></script>
<script type="text/javascript" src="../easyui/locale/easyui-lang-zh_CN.js"></script> 
<script type="text/javascript" src="../js/Calendar/WdatePicker.js"></script>
<script type="text/javascript" src="../js/jquery.ztree.core-3.5.js"></script>
<script type="text/javascript" src="../js/jquery.ztree.excheck-3.5.js"></script>
<script type="text/javascript" src="../js/cbb.js"></script>
<script type="text/javascript">
$(function(){
// 日期控件初始化
$("#dayCreateDate").focus(function() {
WdatePicker({
el: 'dayCreateDate', isShowClear: false, readOnly: true, dateFmt: 'yyyy-MM-dd', maxDate: '%y-%M-%d'
});
});

var $weekTag = $('#weekCreateDate');
var weekData = <%=weeks %>;
$weekTag.combobox({ data : weekData, valueField: 'value', textField: 'text' });
$weekTag.combobox('select', weekData[0].value);

$("#monthCreateDate").focus(function() {
WdatePicker({
el: 'monthCreateDate', isShowClear: false, isShowToday: false, readOnly: true, dateFmt: 'yyyy-MM', maxDate: '%y-%M'
});
});

// 地区树控件初始化
var setting = zTreeSetting();
var zNodesArea = ${areaTree};
var dayAreaTree = $.fn.zTree.init($("#dayAreaTree"), setting, zNodesArea);
selectAllZTree("dayAreaTree");
var weekAreaTree = $.fn.zTree.init($("#weekAreaTree"), setting, zNodesArea);
selectAllZTree("weekAreaTree");
var monthAreaTree = $.fn.zTree.init($("#monthAreaTree"), setting, zNodesArea);
selectAllZTree("monthAreaTree");

// 栏目树控件初始化
var zNodesColumn = ${columnTree}; 
$("#dayColumnTree").biZTree({zNodes: zNodesColumn, nameKey: 'name', idKey: 'id', pIdKey: 'parentId'});
$("#weekColumnTree").biZTree({zNodes: zNodesColumn, nameKey: 'name', idKey: 'id', pIdKey: 'parentId'});
$("#monthColumnTree").biZTree({zNodes: zNodesColumn, nameKey: 'name', idKey: 'id', pIdKey: 'parentId'});

// 绑定点击事件
$("#daySearchBtn").bind("click", queryDay);
$("#dayExportBtn").bind("click", function(){ });
$("#weekSearchBtn").bind("click", queryWeek);
$("#weekExportBtn").bind("click", function(){ });
$("#monthSearchBtn").bind("click", queryMonth);
$("#monthExportBtn").bind("click", function(){ });

// 表格数据初始化
queryDay();
queryWeek();
queryMonth();
});


function queryDay(){
if($('#dayAreaCodes').val() == ""){
$.messager.alert('消息提示','请选择区域!');
return;
}
var $dg = $('#dayDg'); // 表格控件
$dg.datagrid('loading');  // 显示加载中。。。
$.getJSON("../operateReport/queryColumnVodClickDay.action",
{
    "columnVod.areaCode": $('#dayAreaCodes').val(),
    "columnVod.columnId": $('#dayColumnCodes').val(),
    "columnVod.createDate": $('#dayCreateDate').val()
    },
    function(jsonData){
    createTable(jsonData, $dg);
}
    );
}
function queryWeek(){
alert("queryWeek");
if($('#weekAreaCodes').val() == ""){
$.messager.alert('消息提示','请选择区域!');
return;
}
var $dg = $('#weekDg'); // 表格控件
$dg.datagrid('loading');  // 显示加载中。。。
$.getJSON("../operateReport/queryColumnVodClickWeek.action",
{
"columnVod.areaCode": $('#weekAreaCodes').val(),
    "columnVod.columnId": $('#weekColumnCodes').val(),
    "columnVod.createDate": $('#weekCreateDate').combobox('getValue')
    },
    function(jsonData){
    createTable(jsonData, $dg);
}
    );
}
function queryMonth(){
alert("queryMonth");
var start = new Date().getTime();//起始时间
if($('#monthAreaCodes').val() == ""){
$.messager.alert('消息提示','请选择区域!');
return;
}
var $dg = $('#monthDg'); // 表格控件
$dg.datagrid('loading');  // 显示加载中。。。
$.getJSON("../operateReport/queryColumnVodClickMonth.action",
{
"columnVod.areaCode": $('#monthAreaCodes').val(),
    "columnVod.columnId": $('#monthColumnCodes').val(),
    "columnVod.createDate": $('#monthCreateDate').val()+"-01"
    },
    function(jsonData){
    createTable(jsonData, $dg);
}
    );
var end = new Date().getTime();//接受时间


    console.log("end - start"+ end - start);//返回函数执行需要时间
}


function createTable(jsonData, dg){// 动态创建表格的表头和数据:[JSON数据、表格控件]
var cols = jsonData.cols;// 表头
var rows = jsonData.rows;// 行数据
//alert(JSON.stringify(rows));
var optColumns = new Array();
var frozenCol; // 冻结第一列
for(var i=0; i<cols.length; i++){
var colObj = cols[i];
for (var key in colObj) 
{
var col = {field:key, title:colObj[key], align:'center'};
if (i==0){
frozenCol=col;
}else{
optColumns.push(col);
}
}
}
dg.datagrid({
columns: [optColumns], // 表头(列)
frozenColumns:[[frozenCol]], // 冻结列
data: {"total": rows.length, "rows": rows} // 数据(行)
});
}
</script>
</head>
<body>
<div class="easyui-tabs" style="width:100%;height:auto">
<div title="栏目点播次数(天)" style="padding:10px">
<!-- 表格内容 -->
<table id="dayDg" class="easyui-datagrid" title="" style="width:99%;" 
data-options="rownumbers:true,singleSelect:true,remoteSort:false,toolbar:'#dayTb',footer:'#dayFt'">
<thead>
</thead>
</table>
<!-- 搜索条件 -->
<div id="dayTb" style="padding:2px 5px;">
区域:<input type="text" id="dayAreaNames" class="tbbox-search" readonly="readonly" data-options="required:true" οnclick="showMenuZTree(this, 'dayAreaContent');" />
<input type="hidden" id="dayAreaCodes"/>
栏目:<input type="text" id="dayColumnNames" class="tbbox-search" readonly="readonly" data-options="required:true" οnclick="showMenuZTree(this, 'dayColumnContent');" />
<input type="hidden" id="dayColumnCodes"/>
日期:<input type="text" id="dayCreateDate" class="wdate" readonly="readonly" data-options="required:true" value="<%=beforeDay %>">
<a id="daySearchBtn" href="#" class="easyui-linkbutton" iconCls="icon-search">统计</a>
</div>
<!-- 底部工具栏 -->
<div id="dayFt" style="padding:2px 5px;">
<a id="dayExportBtn" href="#" class="easyui-linkbutton" iconCls="icon-save" plain="true">导出</a>
</div>
<div id="dayAreaContent" class="ztree-div">
<ul id="dayAreaTree" class="ztree ztree-ul" nameid="dayAreaNames" codeid="dayAreaCodes"></ul>
</div>
<div id="dayColumnContent" class="ztree-div">
<ul id="dayColumnTree" class="ztree ztree-ul" nameid="dayColumnNames" codeid="dayColumnCodes"></ul>
</div>
</div>
<div title="栏目点播次数(周)" style="padding:10px">
<!-- 表格内容 -->
<table id="weekDg" class="easyui-datagrid" title="" style="width:99%;" 
data-options="rownumbers:true,singleSelect:true,remoteSort:false,toolbar:'#weekTb',footer:'#weekFt'">
<thead>
</thead>
</table>
<!-- 搜索条件 -->
<div id="weekTb" style="padding:2px 5px;">
区域:<input type="text" id="weekAreaNames" class="tbbox-search" readonly="readonly" data-options="required:true" οnclick="showMenuZTree(this, 'weekAreaContent');" />
<input type="hidden" id="weekAreaCodes"/>
栏目:<input type="text" id="weekColumnNames" class="tbbox-search" readonly="readonly" data-options="required:true" οnclick="showMenuZTree(this, 'weekColumnContent');" />
<input type="hidden" id="weekColumnCodes"/>
周数:<select id="weekCreateDate" class="easyui-combobox" data-options="required:true,editable:false" style="width:210px">
</select>
<a id="weekSearchBtn" href="#" class="easyui-linkbutton" iconCls="icon-search">统计</a>
</div>
<!-- 底部工具栏 -->
<div id="weekFt" style="padding:2px 5px;">
<a id="weekExportBtn" href="#" class="easyui-linkbutton" iconCls="icon-save" plain="true">导出</a>
</div>
<div id="weekAreaContent" class="ztree-div">
<ul id="weekAreaTree" class="ztree ztree-ul" nameid="weekAreaNames" codeid="weekAreaCodes"></ul>
</div>
<div id="weekColumnContent" class="ztree-div">
<ul id="weekColumnTree" class="ztree ztree-ul" nameid="weekColumnNames" codeid="weekColumnCodes"></ul>
</div>
</div>
<div title="栏目点播次数(月)" style="padding:10px">
<!-- 表格内容 -->
<table id="monthDg" class="easyui-datagrid" title="" style="width:99%;" 
data-options="rownumbers:true,singleSelect:true,remoteSort:false,toolbar:'#monthTb',footer:'#monthFt'">
<thead>
</thead>
</table>
<!-- 搜索条件 -->
<div id="monthTb" style="padding:2px 5px;">
区域:<input type="text" id="monthAreaNames" class="tbbox-search" readonly="readonly" data-options="required:true" οnclick="showMenuZTree(this, 'monthAreaContent');" />
<input type="hidden" id="monthAreaCodes"/>
栏目:<input type="text" id="monthColumnNames" class="tbbox-search" readonly="readonly" data-options="required:true" οnclick="showMenuZTree(this, 'monthColumnContent');" />
<input type="hidden" id="monthColumnCodes"/>
月份:<input type="text" id="monthCreateDate" class="wdate" readonly="readonly" data-options="required:true" value="<%=beforeMonth %>">
<a id="monthSearchBtn" href="#" class="easyui-linkbutton" iconCls="icon-search">统计</a>
</div>
<!-- 底部工具栏 -->
<div id="monthFt" style="padding:2px 5px;">
<a id="monthExportBtn" href="#" class="easyui-linkbutton" iconCls="icon-save" plain="true">导出</a>
</div>
<div id="monthAreaContent" class="ztree-div">
<ul id="monthAreaTree" class="ztree ztree-ul" nameid="monthAreaNames" codeid="monthAreaCodes"></ul>
</div>
<div id="monthColumnContent" class="ztree-div">
<ul id="monthColumnTree" class="ztree ztree-ul" nameid="monthColumnNames" codeid="monthColumnCodes"></ul>
</div>
</div>
</div>
</body>
</html>






package com.companyname.dhm.operateReport.action;


import com.companyname.dhm.operateReport.entity.ColumnVod;
import com.companyname.dhm.operateReport.entity.PageTable;
import com.companyname.dhm.operateReport.service.IColumnVodService;


/**
 * 栏目点播时长,天、周、月
 * @author 907036
 */
public class ColumnVodAction extends BaseAction
{


/**

*/
private static final long serialVersionUID = 1L;

private IColumnVodService columnVodService;

private ColumnVod columnVod;

public void queryColumnVodDay()
{
PageTable pageTable = columnVodService.getColumnVodDayList(columnVod);
printObjectToJson(pageTable);
}

public void queryColumnVodWeek()
{
PageTable pageTable = columnVodService.getColumnVodWeekList(columnVod);
printObjectToJson(pageTable);
}

public void queryColumnVodMonth()
{
PageTable pageTable = columnVodService.getColumnVodMonthList(columnVod);
printObjectToJson(pageTable);
}


public void queryColumnVodClickDay()
{
PageTable pageTable = columnVodService.getColumnVodClickDayList(columnVod);
printObjectToJson(pageTable);
}

public void queryColumnVodClickWeek()
{
PageTable pageTable = columnVodService.getColumnVodClickWeekList(columnVod);
printObjectToJson(pageTable);
}

public void queryColumnVodClickMonth()
{
PageTable pageTable = columnVodService.getColumnVodClickMonthList(columnVod);
printObjectToJson(pageTable);
}




public IColumnVodService getColumnVodService() {
return columnVodService;
}


public void setColumnVodService(IColumnVodService columnVodService) {
this.columnVodService = columnVodService;
}


public ColumnVod getColumnVod() {
return columnVod;
}


public void setColumnVod(ColumnVod columnVod) {
this.columnVod = columnVod;
}


}




package com.companyname.dhm.operateReport.action;


import java.io.IOException;
import java.io.PrintWriter;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;


import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


import net.sf.json.JSONObject;
import net.sf.json.JsonConfig;
import net.sf.json.util.CycleDetectionStrategy;


import org.apache.struts2.interceptor.ServletRequestAware;
import org.apache.struts2.interceptor.ServletResponseAware;
import org.apache.struts2.interceptor.SessionAware;


import com.companyname.dhm.cbb.common.util.JsonUtil;
import com.companyname.dhm.cbb.common.util.PageModel;
import com.companyname.dhm.cbb.common.util.StringUtils;
import com.companyname.dhm.cbb.common.util.formatjson.JDateValueProcess;
import com.companyname.dhm.cbb.common.util.formatjson.JIgnoreFieldsFilter;
import com.companyname.dhm.cbb.common.util.formatjson.JIgnoreFieldsKeyTypePair;
import com.opensymphony.xwork2.ActionSupport;


/**
 * 
 * @author 905899
 *
 */
public abstract class BaseAction extends ActionSupport implements
ServletRequestAware, ServletResponseAware, SessionAware
{
private HttpServletRequest request;


private HttpServletResponse response;


private Map session;


private String page;


private String rows;


private String resultName;


protected PageModel pages = new PageModel();


public PageModel getPages()
{
return this.pages;
}


public void setPages(PageModel pages)
{
this.pages = pages;
}


protected String ids[];


protected void printPageModel(PageModel pageModel)
{
printPageModel(pageModel, null);
}





protected void printPageModel(PageModel pageModel, String otherInfo)
{


Map map = new HashMap();

map.put("total", pageModel.getTotal());
if (null != pageModel.getDatas() && pageModel.getDatas().size() > 0)
{
map.put("rows", pageModel.getDatas());
}
else
{
map.put("rows", new ArrayList(0));


}
if (!StringUtils.isNil(otherInfo))
{
map.put("otherInfo", otherInfo);


}


//JsonConfig config = getJsonConfig("yyyy-MM-dd HH:mm:ss");
JSONObject jso = JSONObject.fromObject(map);


print(jso);
}

/**
* 输出JSON
* @param datas
*/
@SuppressWarnings("unchecked")
protected void printJson(List datas)
{
this.pages.setDatas(datas);
if (datas != null)
{
this.pages.setTotal(datas.size());
}
printPageModel(this.pages);
}


/**

* @param dateFormat
* @return
*/
protected JsonConfig getJsonConfig(String dateFormat)
{
JsonConfig config = new JsonConfig();
config.setCycleDetectionStrategy(CycleDetectionStrategy.LENIENT);
if ((null != dateFormat) && (!"".equals(dateFormat)))
{
config.registerJsonValueProcessor(Date.class,
new JDateValueProcess(dateFormat));
}


JIgnoreFieldsKeyTypePair[] ignoreFields = new JIgnoreFieldsKeyTypePair[0];
JIgnoreFieldsFilter propertyFilter = new JIgnoreFieldsFilter(
ignoreFields, false);
config.setJsonPropertyFilter(propertyFilter);


return config;
}


public String[] getIds()
{
return ids;
}


public void setIds(String[] ids)
{
this.ids = ids;
}


public void setServletRequest(HttpServletRequest request)
{
try
{
request.setCharacterEncoding("UTF-8");
}
catch (UnsupportedEncodingException e)
{
e.printStackTrace();
}


this.request = request;
}


public void setServletResponse(HttpServletResponse response)
{
response.setCharacterEncoding("UTF-8");
response.setDateHeader("Expires", 0L);
response.addHeader("Pragma", "no-cache");


response.setHeader("Cache-Control", "no-cache");
response.setContentType("text/html;charset=UTF-8");


this.response = response;
}


protected void print(Object content)
{
PrintWriter out;
try
{
out = response.getWriter();
out.print(content);
}
catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}


protected void printObjectToJson(Object obj)
{
String json = JsonUtil.objectToString(obj);
print(json);


}


protected void printSuccess(Object msg, Object... content)
{
StringBuilder sb = new StringBuilder();
sb.append("{");
sb.append("success:true,");
sb.append("msg:'" + msg + "',");
String data = content.length > 0 ? content[0].toString() : "{}";
sb.append("data:" + data);
sb.append("}");
print(JSONObject.fromObject(sb.toString()));
}


protected void printFailure(String msg, Object... content)
{
StringBuilder sb = new StringBuilder();
sb.append("{");
sb.append("success:false,");
sb.append("msg:'" + msg + "',");
String data = content.length > 0 ? content[0].toString() : "{}";
sb.append("data:" + data);
sb.append("}");
print(JSONObject.fromObject(sb.toString()));
}


public String getPage()
{
return page;
}


public void setPage(String page)
{
this.page = page;
}


public String getRows()
{
return rows;
}


public void setRows(String rows)
{
this.rows = rows;
}


public Map getSession()
{
return session;
}


public void setSession(Map session)
{
this.session = session;
}


public String forward()
{


return resultName;
}


public String getResultName()
{
return resultName;
}


public void setResultName(String resultName)
{
this.resultName = resultName;
}


public HttpServletRequest getRequest()
{
return request;
}


public HttpServletResponse getResponse()
{
return response;
}


}




package com.companyname.dhm.cbb.common.util;


import java.util.List;


/**
 * 
 * @author 905899
 *
 * @param <T>
 */
public class PageModel<T>
{
private int total;


private List<T> datas;


private int cutRow;// 当前页数据


private int countPage;// 总多少页


private int cutPage;// 当前页


public int getCutPage()
{
return cutPage;
}


public void setCutPage(int cutPage)
{
this.cutPage = cutPage;
}


/**
* Title: Description:

* @param total2
* @param datas2
* @param page
* @param pagesize
*/
public PageModel(int total, List<T> datas2, int page, int pagesize)
{
this.total = total;
this.datas = datas2;
if (null != datas2)
{
cutRow = datas2.size();
}
int countPage = total / pagesize;
int s = total % pagesize;
if (s > 0)
{
countPage++;
}
this.countPage = countPage;
this.cutPage = page;


}


/**
* Title: Description:
*/
public PageModel()
{
// TODO Auto-generated constructor stub
}


public int getTotal()
{
return total;
}


public void setTotal(int total)
{
this.total = total;
}


public List<T> getDatas()
{
return datas;
}


public void setDatas(List<T> datas)
{
this.datas = datas;
}


public int getCutRow()
{
return cutRow;
}


public void setCutRow(int cutRow)
{
this.cutRow = cutRow;
}


public int getCountPage()
{
return countPage;
}


public void setCountPage(int countPage)
{
this.countPage = countPage;
}


@Override
public String toString()
{


return "总数[" + total + "],当前总行数[" + cutRow + "],总多少页[" + countPage
+ "],当前页[" + cutPage + "]";
}




}


package com.companyname.dhm.cbb.common.util;


public class StringUtils {

public static boolean isNil(String value)
{


return (null == value || value.trim().equals(""));
}




/**
* 将字节转换为十六进制字符串

* @param mByte
* @return
*/
private static String byteToHexStr(byte mByte)
{
char[] Digit = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A',
'B', 'C', 'D', 'E', 'F' };
char[] tempArr = new char[2];
tempArr[0] = Digit[(mByte >>> 4) & 0X0F];
tempArr[1] = Digit[mByte & 0X0F];


String s = new String(tempArr);
return s;
}


/**
* 将字节数组转换为十六进制字符串

* @param byteArray
* @return
*/
public static String byteToStr(byte[] byteArray)
{
String strDigest = "";
for (int i = 0; i < byteArray.length; i++)
{
strDigest += byteToHexStr(byteArray[i]);
}
return strDigest;
}




}


package com.companyname.dhm.cbb.common.util.formatjson;




import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Map;


import net.sf.json.JsonConfig;
import net.sf.json.processors.JsonValueProcessor;


public class JDateValueProcess implements JsonValueProcessor {
private static final String DEFAULT_DATE_FORMAT = "yyyy-MM-dd";
private String dateFormat;
private Map<String, String> dateFormatMap;


public Object processArrayValue(Object value, JsonConfig jsonConfig) {
return null;
}


public JDateValueProcess(String dateFormat) {
this.dateFormat = dateFormat;
}


public Object processObjectValue(String key, Object value,
JsonConfig jsonConfig) {
SimpleDateFormat df = null;
String date = "";


if ((value != null) && ((value instanceof Date))) {
if ((null != this.dateFormat) && (!"".equals(this.dateFormat))) {
df = new SimpleDateFormat(this.dateFormat);
} else if ((null != this.dateFormatMap)
&& (this.dateFormatMap.size() > 0)) {
df = new SimpleDateFormat((String) this.dateFormatMap.get(key));
}
try {
date = df.format(value);
} catch (IllegalArgumentException e) {
df = new SimpleDateFormat("yyyy-MM-dd");
date = df.format(value);
}
return date;
}
return null;
}


}


package com.companyname.dhm.cbb.common.util.formatjson;






import java.io.IOException;


import net.sf.json.util.PropertyFilter;


public class JIgnoreFieldsFilter implements PropertyFilter
{


private JIgnoreFieldsKeyTypePair[] ignoreFields;
private boolean excludeNull = false;


public JIgnoreFieldsFilter(boolean excludeNull) {
this.excludeNull = excludeNull;
}


public JIgnoreFieldsFilter(JIgnoreFieldsKeyTypePair[] ignoreFields) {
this.ignoreFields = ignoreFields;
}


public JIgnoreFieldsFilter(JIgnoreFieldsKeyTypePair[] ignoreFields,
boolean excludeNull) {
this.ignoreFields = ignoreFields;
this.excludeNull = excludeNull;
}


public boolean apply(Object source, String name, Object value) {
if (this.excludeNull) {
if (value == null)
return true;
}
if ((null != this.ignoreFields) && (this.ignoreFields.length > 0)) {
for (JIgnoreFieldsKeyTypePair pair : this.ignoreFields) {
if ((null != pair) && (null != name) && (!"".equals(name))) {
String key = pair.getKey();
Class type = pair.getType();


if (type != null) {
if ((source.getClass() == type) && (name.equals(key))) {
return true;
}


} else if (name.equals(key)) {
return true;
}
}
}
}


return false;
}


private void Sample() throws IOException {
JIgnoreFieldsKeyTypePair noType = new JIgnoreFieldsKeyTypePair("name");
JIgnoreFieldsKeyTypePair haveType = new JIgnoreFieldsKeyTypePair("name");


JIgnoreFieldsKeyTypePair[] pairs = { noType, haveType };
JIgnoreFieldsFilter filter = new JIgnoreFieldsFilter(pairs);
filter.apply("source", "name", "value");
}


public static void main(String[] args) throws IOException {
JIgnoreFieldsFilter filter = new JIgnoreFieldsFilter(null);
filter.Sample();
}
}




package com.companyname.dhm.cbb.common.util.formatjson;


public class JIgnoreFieldsKeyTypePair {


private String key;
private Class<?> type;


public JIgnoreFieldsKeyTypePair(String key) {
this.key = key;
}


public JIgnoreFieldsKeyTypePair(String key, Class<?> type) {
this.key = key;
this.type = type;
}


public String getKey() {
return this.key;
}


public void setKey(String key) {
this.key = key;
}


public Class<?> getType() {
return this.type;
}


public void setType(Class<?> type) {
this.type = type;
}


public String toString() {
StringBuffer b = new StringBuffer(
"JsonIgnoreFieldsKeyTypePair : >> [\r\n");
if ((null != this.key) && (!"".equals(this.key.trim()))) {
b.append("key : " + this.key + ",\r\n");
}
if ((null != this.type) && (!"".equals(this.type))) {
b.append("type : " + this.type != null ? this.type.getName()
: "null\r\n");
}
b.append("]");
return b.toString();
}
}




package com.companyname.dhm.operateReport.service.impl;


import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;


import org.eclipse.birt.report.model.api.util.StringUtil;


import com.companyname.dhm.operateReport.dao.IColumnVodDAO;
import com.companyname.dhm.operateReport.entity.ColumnVod;
import com.companyname.dhm.operateReport.entity.PageTable;
import com.companyname.dhm.operateReport.service.IColumnVodService;


/**
 * 栏目点播时长
 * @author 907036
 */
public class ColumnVodService implements IColumnVodService 
{
private IColumnVodDAO columnVodDao;

private static String ibatisDay = ".selectDayList";
private static String ibatisWeek = ".selectWeekList";
private static String ibatisMonth = ".selectMonthList";

private static String ibatisDayByClick = ".selectDayByClickList";
private static String ibatisWeekByClick = ".selectWeekByClickList";
private static String ibatisMonthByClick = ".selectMonthByClickList";


public IColumnVodDAO getColumnVodDao() 
{
return columnVodDao;
}


public void setColumnVodDao(IColumnVodDAO columnVodDao) 
{
this.columnVodDao = columnVodDao;
}


@Override
public PageTable getColumnVodDayList(ColumnVod param) 
{
List<ColumnVod> datas = columnVodDao.getList(param, ibatisDay);
long start = System.currentTimeMillis();    
PageTable table = convertColumnVod(datas);
     long end = System.currentTimeMillis();        
     System.out.println("运行时间:"+(end - start)+"毫秒");        
return table;
}


@Override
public PageTable getColumnVodWeekList(ColumnVod param) 
{
List<ColumnVod> datas = columnVodDao.getList(param, ibatisWeek);
PageTable table = convertColumnVod(datas);
return table;
}


@Override
public PageTable getColumnVodMonthList(ColumnVod param) 
{
List<ColumnVod> datas = columnVodDao.getList(param, ibatisMonth);
PageTable table = convertColumnVod(datas);
return table;
}


@Override
public PageTable getColumnVodClickDayList(ColumnVod param) 
{
List<ColumnVod> datas = columnVodDao.getList(param, ibatisDayByClick);
long start = System.currentTimeMillis();    
PageTable table = convertColumnVod(datas);
     long end = System.currentTimeMillis();        
     System.out.println("运行时间:"+(end - start)+"毫秒");  
return table;
}


@Override
public PageTable getColumnVodClickWeekList(ColumnVod param) 
{
List<ColumnVod> datas = columnVodDao.getList(param, ibatisWeekByClick);
long start = System.currentTimeMillis();    
PageTable table = convertColumnVod(datas);
     long end = System.currentTimeMillis();        
     System.out.println("运行时间:"+(end - start)+"毫秒");  
return table;
}


@Override
public PageTable getColumnVodClickMonthList(ColumnVod param) 
{
List<ColumnVod> datas = columnVodDao.getList(param, ibatisMonthByClick);
long start = System.currentTimeMillis();    
PageTable table = convertColumnVod(datas);
     long end = System.currentTimeMillis();        
     System.out.println("运行时间:"+(end - start)+"毫秒");  
return table;
}

/**
* 构造动态表格数据
* @param datas 列表数据
* @return
*/
public PageTable convertColumnVod(List<ColumnVod> datas)
{
String totalKey = "TOTAL";
String columnKey = "COLUMN_NAME";

// [地区编号,地区名称]
Map<String, String> areaMap = new HashMap<String, String>();
// [栏目编号,所有地区点播时长]
Map<String, Map<String, String>> rowListMap = new HashMap<String, Map<String, String>>();
Map<String, String> rowTotalMap = new HashMap<String, String>();
rowTotalMap.put(columnKey, "汇总"); // 最后一行:汇总

// 每行每列记录
List<Map<String, String>> colList = new ArrayList<Map<String, String>>(); // 列
Map<String, String> colMap = new HashMap<String, String>();
colMap.put(columnKey, "栏目\\区域"); // 第一列:栏目
colList.add(colMap);

List<Map<String, String>> rowList = new ArrayList<Map<String, String>>(); // 行
if (datas != null && !datas.isEmpty())
{
for (ColumnVod cv : datas)
{
String colKey = "AREA_" + cv.getAreaCode(); // 水平(列)
String rowKey = "CI_" + cv.getColumnId(); // 垂直 (行)
if (areaMap.get(colKey) == null)
{
areaMap.put(colKey, cv.getAreaName());// [地区列,地区名称]
colMap = new HashMap<String, String>();
colMap.put(colKey, cv.getAreaName());
colList.add(colMap);
}

Map<String, String> rowMap = rowListMap.get(rowKey);
if (rowMap == null)
{
rowMap = new HashMap<String, String>();
rowMap.put(columnKey, cv.getColumnName());// [栏目列,栏目名称]
rowList.add(rowMap);
rowListMap.put(rowKey, rowMap);
}
if(0.0 != cv.getVodHours())
{
// [列汇总,列汇总时长]
rowMap.put(totalKey, addVodHours(rowMap.get(totalKey), cv.getVodHours()));
rowMap.put(colKey, String.valueOf(cv.getVodHours()));// [地区列,点播时长]

// [行汇总,行汇总时长]
rowTotalMap.put(colKey, addVodHours(rowTotalMap.get(colKey), cv.getVodHours()));
} else{
// [列汇总,列汇总次数]
rowMap.put(totalKey, addVodClickNums(rowMap.get(totalKey), cv.getVodClickNums()));
rowMap.put(colKey,  String.valueOf(cv.getVodClickNums()));// [地区列,点播时长]

// [行汇总,行汇总次数]
rowTotalMap.put(colKey,addVodClickNums(rowTotalMap.get(colKey),cv.getVodClickNums()));
}

}

rowList.add(rowTotalMap); // 最后一行:汇总
}

colMap = new HashMap<String, String>();
colMap.put(totalKey,"汇总"); // 最后一列:汇总
colList.add(colMap);

PageTable table = new PageTable();
table.setCols(colList); // 列数据
table.setRows(rowList); // 行数据
return table;
}

/**
* 数据格式化,保留多位小数点
* @param hours 点播时长
* @param d 新时长
* @return
*/
private String addVodHours(String hours, double d)
{
double result = 0;
if (!StringUtil.isEmpty(hours))
{
try 
{
result = Double.valueOf(hours);

catch (NumberFormatException e) 
{
e.printStackTrace();
}
}
return String.valueOf(result + d);
}


/**
* 数据格式化,
* @param hours 点播时长
* @param d 新时长
* @return
*/
private String addVodClickNums(String clickNums, int d)
{
int result = 0;
if (!StringUtil.isEmpty(clickNums))
{
try 
{
result = Integer.valueOf(clickNums);

catch (NumberFormatException e) 
{
e.printStackTrace();
}
}
return String.valueOf(result + d);
}


}


package com.companyname.dhm.operateReport.common;


import java.io.Serializable;
import java.util.List;
import java.util.Map;


import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.orm.ibatis.support.SqlMapClientDaoSupport;
import org.springframework.transaction.annotation.Transactional;


import com.companyname.dhm.cbb.common.util.PageModel;
import com.companyname.dhm.cbb.common.util.StringUtil;
import com.ibatis.sqlmap.client.SqlMapClient;
import com.ibatis.sqlmap.engine.execution.SqlExecutor;


import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;


/**
 * 
 * @author 905899
 *
 * @param <T>
 * @param <ID>
 */
@SuppressWarnings("unchecked")
@Transactional
public abstract class BaseDao<T, ID extends Serializable> extends
SqlMapClientDaoSupport implements IDao<T, ID> {


public static final String POSTFIX_INSERT = ".insert";


public static final String POSTFIX_UPDATE = ".update";


public static final String POSTFIX_DELETE = ".delete";


public static final String POSTFIX_SELECTOBJECT = ".select";


public static final String POSTFIX_DELETE_PRIAMARYKEY = ".deleteByID";


public static final String POSTFIX_SELECT = ".selectByID";


public static final String POSTFIX_SELECTMAP = ".selectByMap";


public static final String POSTFIX_SELECTMAP_COUNT = ".selectByMap.count";


public static final String POSTFIX_SELECTOBJECT_COUNT = ".select.count";


public static final String POSTFIX_COUNT = ".count";


public static final String POSTFIX_DETAIL_COUNT = ".detailCount";


public static final String POSTFIX_DETAIL_SELECTOBJECT = ".detailList";


public static final String POSTFIX_BY_UPDATE = ".updateByID";


private static final String POSTFIX_DETAIL_SELECT_PAGE_LIST = ".queryPageList";


private static final String POSTFIX_SELECT_DAY_LIST = ".selectDayList";


private SqlExecutor sqlExecutor;


public SqlExecutor getSqlExecutor() {
return sqlExecutor;
}


public void setSqlExecutor(SqlExecutor sqlExecutor) {
this.sqlExecutor = sqlExecutor;
}


@Autowired
public void setIbatisSqlMapClient(SqlMapClient sqlMapClient) {
super.setSqlMapClient(sqlMapClient);
}


public Class getSuperClassGenricType(Class clazz, int index) {
Type genType = clazz.getGenericSuperclass();


if (!(genType instanceof ParameterizedType)) {
return Object.class;
}


Type[] params = ((ParameterizedType) genType).getActualTypeArguments();
if ((index >= params.length) || (index < 0)) {
throw new RuntimeException("BaseDao.getSuperClassGenricType error");
}
if (!(params[index] instanceof Class)) {
return Object.class;
}
return (Class) params[index];
}


// 得到泛型实体类字节码
protected Class<T> entityClass = getSuperClassGenricType(this.getClass(), 0);


@Override
public T get(Serializable id) throws Exception {
return (T) getSqlMapClientTemplate().queryForObject(
entityClass.getSimpleName() + POSTFIX_SELECT, id);


}


@Override
public List<T> getList(T t) throws Exception {
return getSqlMapClientTemplate().queryForList(
entityClass.getSimpleName() + POSTFIX_SELECTOBJECT, t);
}

public List<T> getList(T t, String ibatis)
{
return getSqlMapClientTemplate().queryForList(
entityClass.getSimpleName() + ibatis, t);
}


@Override
public T getSingleObj(T o) throws Exception {
return (T) getSqlMapClientTemplate().queryForObject(
entityClass.getSimpleName() + POSTFIX_SELECTOBJECT, o);
}


@Override
public PageModel getPageByMap(Map parameters, int page, int pagesize)
throws Exception {


Integer total = (Integer) getSqlMapClientTemplate().queryForObject(
entityClass.getSimpleName() + POSTFIX_SELECTMAP_COUNT,
parameters);
List<T> datas = null;
if (null != total && total > 0) {
int offset = getOffset(page, pagesize);
datas = getSqlMapClientTemplate().queryForList(
entityClass.getSimpleName() + POSTFIX_SELECTMAP,
parameters, offset, pagesize);


}
return new PageModel<T>(total, datas, page, pagesize);


}


@Override
public PageModel getPageModelByObject(T o, int page, int pagesize)
throws Exception {
Integer total = (Integer) getSqlMapClientTemplate().queryForObject(
entityClass.getSimpleName() + POSTFIX_SELECTOBJECT_COUNT, o);
List<T> datas = null;
if (null != total && total > 0) {
int offset = getOffset(page, pagesize);
datas = getSqlMapClientTemplate().queryForList(
entityClass.getSimpleName() + POSTFIX_SELECTOBJECT, o,
offset, pagesize);
}
return new PageModel<T>(total, datas, page, pagesize);


}


/**

*/
@Override
public PageModel queryDetail(T o, Integer page, Integer pagesize)
throws Exception {


Integer total = (Integer) getSqlMapClientTemplate().queryForObject(
entityClass.getSimpleName() + POSTFIX_DETAIL_COUNT, o);
List datas = null;
System.out.println("total = " + total);
if (null != total && total > 0) {
int offset = getOffset(page, pagesize);
datas = getSqlMapClientTemplate().queryForList(
entityClass.getSimpleName() + POSTFIX_DETAIL_SELECTOBJECT,
o, offset, pagesize);
}
return new PageModel(total, datas, page, pagesize);
}


public PageModel queryDetail(T o, String ibtaisCount, String ibtaisList,
Integer page, Integer pagesize) throws Exception {


Integer total = (Integer) getSqlMapClientTemplate().queryForObject(
ibtaisCount, o);
List datas = null;
if (null != total && total > 0) {
int offset = getOffset(page, pagesize);
datas = getSqlMapClientTemplate().queryForList(ibtaisList, o,
offset, pagesize);
}
return new PageModel(total, datas, page, pagesize);
}


/**

*/
protected int getOffset(int page, int pagesize) {


int startInex = 0;
if (page > 0) {
startInex = (page - 1) * pagesize;
}
return startInex;
}


@Override
public List<T> queryPageList(T t, int startInex, int pagesize)
throws Exception {


return getSqlMapClientTemplate().queryForList(
entityClass.getSimpleName() + POSTFIX_DETAIL_SELECT_PAGE_LIST,
t, startInex, pagesize);
}


public List<T> selectDayList(T t) {
return getSqlMapClientTemplate().queryForList(
entityClass.getSimpleName() + POSTFIX_SELECT_DAY_LIST, t);
}


@Override
public List<T> queryExportData(T o, String ibatisCount, String ibatisList)
throws Exception {
if (StringUtil.isNil(ibatisCount) || StringUtil.isNil(ibatisList)) {
throw new Exception("查询sql条件不能为空");
}


Integer total = (Integer) getSqlMapClientTemplate().queryForObject(
ibatisCount, o);
if (null != total && total > 10000) {
throw new Exception("下载的数据过大,单次只能下次10000条");


}
if (null != total && total > 0) {
return getSqlMapClientTemplate().queryForList(ibatisList, o);
}


return null;
}


}


package com.companyname.dhm.operateReport.common;




import java.io.Serializable;
import java.util.List;
import java.util.Map;


import com.companyname.dhm.cbb.common.util.PageModel;


/**
 * 
 * @author 905899
 *
 * @param <T>
 * @param <ID>
 */
public interface IDao<T, ID extends Serializable>
{
/**

* @param id
* @return
* @throws JmsDaoException
*/
public T get(Serializable id) throws Exception;


/**
* 获取全部对象

* @param <T>
* @param entityClass
* @return
*/
public List<T> getList(T t) throws Exception;

/**
* 查询全部对象
* @param t
* @param ibatis
* @return
*/
List<T> getList(T t, String ibatis);


public List<T> queryPageList(T t, int startInex, int pagesize)
throws Exception;


/**
* 分页查询

* @param statementId
* @param parameters
*            参数
* @param offset
*            开始索引
* @param pagesize
*            每页显示多少条记录
* @return
*/
@SuppressWarnings("unchecked")
PageModel getPageByMap(Map parameters, int page, int pagesize)
throws Exception;


/**
* 分页查询

* @param o
*            实体对象
* @param offset
*            开始索引
* @param pagesize
*            每页显示多少条记录
* @return
*/
@SuppressWarnings("unchecked")
public PageModel getPageModelByObject(T o, int page, int pagesize)
throws Exception;


PageModel queryDetail(T o, Integer page, Integer pagesize)
throws Exception;


public T getSingleObj(T o) throws Exception;


PageModel queryDetail(T o, String ibatisCount, String ibatisList,
Integer page, Integer pagesize) throws Exception;


public List<T> queryExportData(T o, String ibatisCount, String ibatisList) throws Exception;

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值