diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/document/service/impl/BussDocumentLibraryEOServiceImpl.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/document/service/impl/BussDocumentLibraryEOServiceImpl.java index 42b30a509..3a84b77b8 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/document/service/impl/BussDocumentLibraryEOServiceImpl.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/document/service/impl/BussDocumentLibraryEOServiceImpl.java @@ -32,6 +32,7 @@ import com.jero.modules.collection.service.IOnlCgformCollectionService; import com.jero.modules.document.entity.BussDocumentLibraryEO; import com.jero.modules.document.entity.OSSFileForDocumentLibrary; import com.jero.modules.document.enums.FieldTypeEnum; +import com.jero.modules.document.enums.LawsStateEnum; import com.jero.modules.document.enums.SearchEnum; import com.jero.modules.document.mapper.BussDocumentLibraryEOMapper; import com.jero.modules.document.service.IBussDocumentLibraryEOService; @@ -3962,6 +3963,9 @@ public class BussDocumentLibraryEOServiceImpl extends ServiceImpl categoryList = sysCategoryService.list(); //过滤出树形字段 @@ -4021,6 +4025,71 @@ public class BussDocumentLibraryEOServiceImpl extends ServiceImpl parameter, List fieldListNew, String condition, int pageNo, int pageSize, IPage infoPage) { + List> list = new LinkedList<>(); + //状态排序,需要特殊处理 现行,即将实施,草稿,被替代,废止 + if(ObjectUtils.isNotEmpty(parameter.get("orderByField")) && "state".equals((String) parameter.get("orderByField"))){ + List> infoList = bussDocumentLibraryEOMapper.getInfoList(" " + StringUtils.join(fieldListNew, ","), condition); + List> active = infoList.stream() + .filter(e -> LawsStateEnum.ACTIVE.getValue().equals(e.get("state"))).collect(Collectors.toList()); + List> theUpcoming = infoList.stream() + .filter(e -> LawsStateEnum.THE_UPCOMING.getValue().equals(e.get("state"))).collect(Collectors.toList()); + List> draft = infoList.stream() + .filter(e -> LawsStateEnum.DRAFT.getValue().equals(e.get("state"))).collect(Collectors.toList()); + List> beReplaced = infoList.stream() + .filter(e -> LawsStateEnum.BE_REPLACED.getValue().equals(e.get("state"))).collect(Collectors.toList()); + List> 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> 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; + } + @NotNull public String getConditionStr(Map parameter) { @@ -4134,7 +4203,18 @@ public class BussDocumentLibraryEOServiceImpl extends ServiceImpl