1、页面引入类
<script type="text/javascript"
src="${ctx}/dwr/interface/FxCustomerService.js"></script>
<script type="text/javascript"
src="${ctx}/dwr/interface/TempusCompanyManager.js"></script>
<script type="text/javascript"
src="${ctx}/js/usercenter/fx/fxCustomer.js"></script>
2.、页面js 代码
//设置为同步
dwr.engine.setAsync(false);//查询Form高度
var queryFormWidth=45;
//共用参数
var params={
gridParams:[{name:"id",type:"String",header:"ID",ishref:"true",width:40},//第一个暂定为主键 width为列宽,如果不设置则为80
{name:"name",type:"String",header:"分销商名称",ishref:"false",width:40},
{name:"code",type:"String",header:"分销商编号",ishref:"false",width:40},
{name:"country",type:"String",header:"所属国家",ishref:"false",width:40},
{name:"province",type:"String",header:"所在省",ishref:"false",width:40},
{name:"city",type:"String",header:"所在市",ishref:"false",width:40},
{name:"area",type:"String",header:"所属区域",ishref:"false",width:40},
{name:"operationType",type:"String",header:"业务类型",ishref:"false",width:40},
{name:"contact",type:"String",header:"联系人",ishref:"false",width:40},
{name:"mobile",type:"String",header:"联系人手机",ishref:"false",width:40},
{name:"createName",type:"String",header:"客户经理",ishref:"false",width:40},
{name:"subCompany.name",type:"String",header:"客户所属公司",ishref:"false",width:40}
],
listOperater:{
list:"FxCustomerService.dwrListPageByHQL",
deleteRecord:"FxCustomerService.dwrDelete"
},
//"" 数据类型-- 字段名-- 比较方式
queryCondition:[["","String","name","like","","","","","公司名称"],
["","String","code","like","","","","","分销商编号"],
["","String","operationType","like","","","","","业务类型"]
],
//pagesize:20,//如果不设置,默认为15
title:"角色列表",
div:"list"
};
3、引入的类的方法
list:"FxCustomerService.dwrListPageByHQL",
@RemoteMethod
public Page<FxCustomer> dwrListPageByHQL(DwrBackParams params) {
StringBuffer hql = new StringBuffer("from FxCustomer A where 1=1 ");
String pufilter = addPurviewStr();
hql.append(pufilter);
Page<FxCustomer> page = null;
try {
List<Condition> conditions = params.getConditions();
params.setOrderby(null);
List<PropertyFilter> filtes = DWRUtil.buildPropertyFilters(conditions);
for (PropertyFilter filter : filtes) {
if (filter.getMatchType().equals(MatchType.LIKE)) {
String proname = filter.getPropertyName();
hql.append(" and A." + proname + " like '%"+ filter.getValue() + "%'");
}
}
for (Condition condition : params.getConditions()) {
condition.setFirstValue(null);
condition.setSecondValue(null);
}
hql.append(" order by id desc");
page = super.dwrListPageHQL(params, hql.toString());
} catch (Exception ex) {
logger.error("错误", ex);
}
return page;
}
public static List<PropertyFilter> buildPropertyFilters(
List<Condition> conditions) {
List<PropertyFilter> filters = new ArrayList<PropertyFilter>();
for (Condition condition : conditions) {
if("skip".equals(condition.getOperator()))//不作自动拼HQL查询--手工拼HQL
{
continue;
}
PropertyFilter filter = new PropertyFilter();
filter.setPropertyName(condition.getColumnName());
filter.setValue(condition.getFirstValue());
filter.setSecondValue(condition.getSecondValue());//日期段时第二个值
if ((StringUtils.isNotEmpty(condition.getFirstValue()))||(StringUtils.isNotEmpty(condition.getSecondValue())))
{
filter.setPropertyName(condition.getColumnName());
filter.setValue(condition.getFirstValue());
filter.setSecondValue(condition.getSecondValue());//日期段时第二个值
if ("=".equals(condition.getOperator())) {
filter.setMatchType(MatchType.EQ);
} else if ("like".equals(condition.getOperator())) {
filter.setMatchType(MatchType.LIKE);
} else if ("Date".equals(condition.getOperator())) {
filter.setMatchType(MatchType.DATE);
} else if ("DateBetween".equals(condition.getOperator())) {
filter.setMatchType(MatchType.DATEBETWEEN);
}else if ("LT".equals(condition.getOperator())) {
filter.setMatchType(MatchType.DATEBETWEEN);
}else if ("GT".equals(condition.getOperator())) {
filter.setMatchType(MatchType.DATEBETWEEN);
}else if ("LE".equals(condition.getOperator())) {
filter.setMatchType(MatchType.DATEBETWEEN);
}else if ("GE".equals(condition.getOperator())) {
filter.setMatchType(MatchType.DATEBETWEEN);
}else if ("Between".equals(condition.getOperator())) {
filter.setMatchType(MatchType.BETWEEN);
}
filter.setType(condition.getType());
filters.add(filter);
}
else
{
filter.setType(condition.getType());
if ("isNull".equals(condition.getOperator())) {
filter.setMatchType(MatchType.ISNULL);
filters.add(filter);
}else if ("isNotNull".equals(condition.getOperator())) {
filter.setMatchType(MatchType.ISNOTNULL);
filters.add(filter);
}
}
}
return filters;
}
@RemoteMethod
@Transactional(readOnly = true)
public Page<T> dwrListPageHQL(DwrBackParams params, String hql) {
Page<T> page = new Page<T>();
try {
int pageSize = params.getLimit();
int currentPage = params.getStart() / pageSize + 1;
int queryflag = params.getQueryflag();
String orderby = params.getOrderby();
String orderDirection = params.getOrderdirection();
if (queryflag == 1) {
List<Condition> conditions = params.getConditions();
List<PropertyFilter> filters = DWRUtil
.buildPropertyFilters(conditions);
Page<T> argPage = new Page<T>(currentPage, pageSize);
if (orderby != null) {
argPage.setOrderBy(orderby);// 设置排序参数
argPage.setOrder(orderDirection);// 设置排序方向 降序或者降序
}
StringBuffer sbHQL = new StringBuffer(hql);
List<Object> values = new ArrayList<Object>();
getEntityDao().buildFilterConditions(filters, sbHQL, values);
page = getEntityDao().findPage(sbHQL.toString(), values.toArray(),
argPage);
}
} catch (Exception e) {
logger.error("dwrListPageHQL列表查询出现异常",e);
}
return page;
}
protected void buildFilterConditions(final List<PropertyFilter> filters,StringBuffer sbHQL,List<Object> values)
{
for (PropertyFilter filter : filters) {
if (MatchType.DATEBETWEEN.equals(filter.getMatchType())) {
SimpleDateFormat sdf = new SimpleDateFormat(
"yyyy-MM-dd HH:mm:ss");
java.util.Date startdate = null;
java.util.Date enddate = null;
try {
if(filter.getValue() != null && !"".equals(filter.getValue())){
startdate = sdf.parse((String) filter.getValue()
+ " 00:00:00");
}
if(filter.getSecondValue() != null && !"".equals(filter.getSecondValue())){
enddate = sdf.parse((String) filter.getSecondValue()
+ " 23:59:59");
}
} catch (ParseException e) {
logger.error("日期转换错误",e);
}
HqlUtils.append(sbHQL, values,
filter.getPropertyName(), startdate, ">=");
HqlUtils.append(sbHQL, values,
filter.getPropertyName(), enddate, "<=");
} else if (MatchType.BETWEEN.equals(filter.getMatchType())) {
HqlUtils.append(sbHQL, values,
filter.getPropertyName(), filter.getValue(),
">=");
HqlUtils.append(sbHQL, values,
filter.getPropertyName(), filter
.getSecondValue(), "<=");
} else {
if("long".equals(filter.getType()))
{
filter.setValue(Long.parseLong(filter.getValue().toString()));
}
if("int".equals(filter.getType()))
{
filter.setValue(Integer.parseInt(filter.getValue().toString()));
}
HqlUtils.append(sbHQL, values,filter.getPropertyName(), filter.getValue(),MatchType.LIKE.equals(filter.getMatchType()));
}
}
}
deleteRecord:"FxCustomerService.dwrDelete"
/**
* 用于DWR根据ID删除实体
*/
@RemoteMethod
public String dwrDelete(Long[] idArray) {
String msg = "";
for (int i = 0; i < idArray.length; i++) {
getEntityDao().delete(idArray[i]);
}
msg = "删除成功!";
return msg;
}
public void delete(final PK id) {
Assert.notNull(id, "id不能为空");
delete(get(id));
logger.debug("delete entity {},id is {}", entityClass.getSimpleName(),
id);
}