我的收藏-表头排序

This commit is contained in:
zhn
2022-12-14 14:33:42 +08:00
parent 0b0ee64818
commit e5f4bcb651
3 changed files with 122 additions and 2 deletions
@@ -3,8 +3,8 @@ package com.jero.modules.collection.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.jero.modules.collection.entity.OnlCgformCollection;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.springframework.data.repository.query.Param;
import java.util.List;
import java.util.Map;
@@ -22,4 +22,6 @@ public interface OnlCgformCollectionMapper extends BaseMapper<OnlCgformCollectio
List<OnlCgformCollection> queryListByDocumentId(@Param("document_id") String document_id);
IPage queryPageList(IPage page,@Param("params") Map<String, Object> params);
List<Map<String,Object>> infoList(@Param("params") Map<String, Object> params);
}
@@ -70,4 +70,48 @@
order by occ.create_time desc
</if>
</select>
<select id="infoList" parameterType="java.util.Map" resultType="hashmap">
select
occ.id,
occ.create_time as createTime,
occ.create_by as createBy,
bdl.serial_number as serialNumber,
bdl.title,
bdl.state,
occ.document_id as documentId
from
onl_cgform_collection occ
right join buss_document_library bdl on occ.document_id = bdl.id
where occ.create_by = #{params.createBy}
<if test="params.serialNumber != null and params.serialNumber != ''">
<!--搜索条件:编号;包含%,单独搜索-->
<choose>
<when test='params.serialNumber != null and params.serialNumber != "" and params.serialNumber.contains("%")'>
and bdl.serial_number like '%1%%' escape '1'
</when>
<otherwise>
and bdl.serial_number like concat(concat('%',#{params.serialNumber}),'%')
</otherwise>
</choose>
</if>
<if test="params.title != null and params.title != ''">
<!--搜索条件:标题;包含%,单独搜索-->
<choose>
<when test='params.title != null and params.title != "" and params.title.contains("%")'>
and bdl.title like '%1%%' escape '1'
</when>
<otherwise>
and bdl.title like concat(concat('%',#{params.title}),'%')
</otherwise>
</choose>
</if>
<if test="params.state != null and params.state != '' ">
and bdl.state in
<foreach collection="params.state.split(',')" index="index" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</if>
</select>
</mapper>
@@ -13,12 +13,14 @@ import com.jero.generater.modules.online.cgform.service.impl.OnlCgformFieldServi
import com.jero.modules.collection.entity.OnlCgformCollection;
import com.jero.modules.collection.mapper.OnlCgformCollectionMapper;
import com.jero.modules.collection.service.IOnlCgformCollectionService;
import com.jero.modules.document.enums.LawsStateEnum;
import com.jero.modules.ocr.util.LineHumpUtil;
import com.jero.modules.subscribe.entity.OnlCgformSubscribe;
import com.jero.modules.subscribe.mapper.OnlCgformSubscribeMapper;
import com.jero.modules.system.entity.SysDictItem;
import com.jero.modules.system.service.impl.SysDictItemServiceImpl;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.SecurityUtils;
import org.springframework.beans.factory.annotation.Autowired;
@@ -26,7 +28,12 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
@@ -227,10 +234,77 @@ public class OnlCgformCollectionServiceImpl extends ServiceImpl<OnlCgformCollect
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
params.put("createBy",sysUser.getUsername());
IPage result = onlCgformCollectionMapper.queryPageList(page,params);
result = stateSort(params,pageNo,pageSize,result);
List<Map<String,Object>> records = result.getRecords();
dataDispose(records,params);
return result;
}
private IPage stateSort(Map<String, Object> parameter, int pageNo, int pageSize, IPage infoPage) {
// parameter.put("orderByField","state");
// parameter.put("orderBy","1");
List<Map<String,Object>> list = new LinkedList<>();
//状态排序,需要特殊处理 现行,即将实施,草稿,被替代,废止
if(ObjectUtils.isNotEmpty(parameter.get("orderByField")) && "state".equals((String) parameter.get("orderByField"))){
List<Map<String, Object>> infoList = onlCgformCollectionMapper.infoList(parameter);
List<Map<String, Object>> active = infoList.stream()
.filter(e -> LawsStateEnum.ACTIVE.getValue().equals(e.get("state"))).collect(Collectors.toList());
List<Map<String, Object>> theUpcoming = infoList.stream()
.filter(e -> LawsStateEnum.THE_UPCOMING.getValue().equals(e.get("state"))).collect(Collectors.toList());
List<Map<String, Object>> draft = infoList.stream()
.filter(e -> LawsStateEnum.DRAFT.getValue().equals(e.get("state"))).collect(Collectors.toList());
List<Map<String, Object>> beReplaced = infoList.stream()
.filter(e -> LawsStateEnum.BE_REPLACED.getValue().equals(e.get("state"))).collect(Collectors.toList());
List<Map<String, Object>> abolish = infoList.stream()
.filter(e -> LawsStateEnum.ABOLISH.getValue().equals(e.get("state"))).collect(Collectors.toList());
if ("1".equals((String) parameter.get("orderBy"))) {
//正序
list.addAll(active);
list.addAll(theUpcoming);
list.addAll(draft);
list.addAll(beReplaced);
list.addAll(abolish);
} else if ("2".equals((String) parameter.get("orderBy"))) {
//倒序
list.addAll(abolish);
list.addAll(beReplaced);
list.addAll(draft);
list.addAll(theUpcoming);
list.addAll(active);
}
if(ObjectUtils.isNotEmpty(list)){
infoPage = getPages(pageNo, pageSize, list);
}
}
return infoPage;
}
public IPage getPages(Integer currentPage, Integer pageSize, List<Map<String,Object>> list){
IPage page =new Page();
if(list==null){
return null;
}
int size = list.size();
if(pageSize > size){
pageSize = size;
}
if(pageSize!=0){
//求出最⼤页数,防⽌currentPage越界
int maxPage = size % pageSize ==0? size / pageSize : size / pageSize +1;
if(currentPage > maxPage){
currentPage = maxPage;
}
}
//当前页第⼀条数据的下标
int curIdx = currentPage >1?(currentPage -1)* pageSize :0;
List pageList =new ArrayList();
//将当前页的数据放进pageList
for(int i =0; i < pageSize && curIdx + i < size; i++){
pageList.add(list.get(curIdx + i));
}
page.setCurrent(currentPage).setSize(pageSize).setTotal(list.size()).setRecords(pageList);
return page;
}
public void dataDispose(List<Map<String,Object>> datas, Map<String,Object> params){
if(CollectionUtils.isNotEmpty(datas)){