需求:多字段默认一个字段并且可以实现其他字段的动态排序(desc,asc)
废话不多说,直接上代码。
首先定义一个实体类
相关的代码如下:
//--以下是动态排序字段
private List<SortField> fields;
public CrmRegion() {
this.fields = new ArrayList<>();
}
public List<SortField> getFields() {
return fields;
}
private String sortBy;
private String sortOrder;
public static class SortField {
private String field;
private String direction;
public String getField() {
return field;
}
public void setField(String field) {
this.field = field;
}
public String getDirection() {
return direction;
}
public void setDirection(String direction) {
this.direction = direction;
}
}
2.动态排序的公共方法 controller
//动态排序
public static CrmRegion crmRegionOrder(CrmRegion crmRegion,List<String> sortBy,List<String> sortOrder){
if (sortBy != null && sortOrder != null && sortBy.size() == sortOrder.size()) {
for (int i = 0; i < sortBy.size(); i++) {
CrmRegion.SortField sortField = new CrmRegion.SortField();
sortField.setField(sortBy.get(i));
sortField.setDirection(sortOrder.get(i));
crmRegion.getFields().add(sortField);
}
}
return crmRegion;
}
controller类相关代码:
@GetMapping("/getCustomerData")
@ApiOperation("客户数据概括")
@ApiName(name = "sheet:getCustomerData")
public TableDataInfo getCustomerData(CrmRegion crmRegion,@RequestParam(required = false) List<String> sortBy, @RequestParam(required = false) List<String> sortOrder) {
List<CrmRegion> crmRegionList = null;
//动态排序
crmRegion = crmRegionOrder(crmRegion,sortBy,sortOrder);
SysUser sysUser = userUtils.getLoginUser().getUser();
crmRegion.setDeptId(sysUser.getDept().getDeptId());
startPage();
if (StringUtil.isEmpty(sysUser.getPost())){
TableDataInfo rspData = new TableDataInfo();
rspData.setCode(HttpStatus.SUCCESS);
rspData.setMsg("查询成功");
return rspData;
}
if (sysUser.getPost().equals(String.valueOf(PostEnum.GROUP_LEADER.getCode()))) {
crmRegionList = crmPerformanceRankingService.getGroupBYCustemerList(crmRegion);
。。。。。。
最后是xml文件
select * from duml
order by totalRevenueUsd desc -- 默认的排序字段
<!-- 加动态排序-->
<if test="sortBy != null and sortOrder != null and sortBy != '' and sortOrder != ''">
<foreach item="field" collection="fields">
,${field.field} ${field.direction}
</foreach>
</if>