fix(征求意见): 80202

This commit is contained in:
yjz
2024-01-17 11:00:37 +08:00
parent aab466353d
commit 4c36d09fa5
2 changed files with 58 additions and 4 deletions
@@ -0,0 +1,44 @@
package com.jero.modules.laws.consultation.common;
import com.jero.modules.activiti.process.fb.entity.ProcessFbConsultationList;
import java.util.Comparator;
/**
* @ClassName: DirectoryComparator
* @Description:
* @Author: yjz
* @Date: 2023-11-03 11:24
* @Version: 1.0
**/
public class DirectoryComparator implements Comparator<ProcessFbConsultationList> {
public int compare(ProcessFbConsultationList dir1, ProcessFbConsultationList dir2) {
String sortNumber1 = dir1.getChapterNumber();
String sortNumber2 = dir2.getChapterNumber();
String[] parts1 = sortNumber1.split("\\.");
String[] parts2 = sortNumber2.split("\\.");
int i = 0;
while (i < parts1.length && i < parts2.length) {
int part1 = tryParseInt(parts1[i]);
int part2 = tryParseInt(parts2[i]);
if (part1 != part2) {
return part1 - part2;
}
i++;
}
return parts1.length - parts2.length;
}
private int tryParseInt(String str) {
try {
return Integer.parseInt(str);
} catch(NumberFormatException e) {
return str.hashCode();
}
}
}
@@ -10,6 +10,7 @@ import com.jero.modules.activiti.process.fb.entity.ProcessFbConsultationList;
import com.jero.modules.activiti.process.fb.entity.ProcessFbStandardConsultation;
import com.jero.modules.activiti.process.fb.service.IProcessFbConsultationListService;
import com.jero.modules.activiti.process.fb.service.IProcessFbStandardConsultationService;
import com.jero.modules.laws.consultation.common.DirectoryComparator;
import com.jero.modules.laws.consultation.service.IConsultationService;
import com.jero.modules.laws.consultation.vo.ProcessFbConsultationListVO;
import com.jero.modules.laws.standard.entity.LawsDomesticStandard;
@@ -123,6 +124,7 @@ public class ConsultationServiceImpl implements IConsultationService {
List<ProcessFbConsultationList> list = processFbConsultationListService.list(
new LambdaQueryWrapper<ProcessFbConsultationList>()
.eq(ProcessFbConsultationList::getBusinessId, businessId));
list.sort(new DirectoryComparator());
setProperty(list);
return list;
}
@@ -191,10 +193,18 @@ public class ConsultationServiceImpl implements IConsultationService {
fillProperty(processFbStandardConsultations);
processFbConsultationListVO.setProcessFbStandardConsultation(processFbStandardConsultations.get(0));
LambdaQueryWrapper<ProcessFbConsultationList> queryWrapper = new LambdaQueryWrapper<ProcessFbConsultationList>()
.eq(ProcessFbConsultationList::getBusinessId, businessId)
.last("ORDER BY convert(chapter_number, DECIMAL), id");
IPage<ProcessFbConsultationList> page = processFbConsultationListService.page(new Page<>(pageNo, pageSize), queryWrapper);
setProperty(page.getRecords());
.eq(ProcessFbConsultationList::getBusinessId, businessId);
List<ProcessFbConsultationList> list = processFbConsultationListService.list(queryWrapper);
list.sort(new DirectoryComparator());
// 手动分页
IPage<ProcessFbConsultationList> page = new Page<>(pageNo ,pageSize);
page.setTotal(list.size());
page.setRecords(
list.stream()
.skip((long) (Math.max(1, pageNo) - 1) * pageSize)
.limit(pageSize)
.collect(Collectors.toList()));
setProperty(list);
processFbConsultationListVO.setProcessFbConsultationList(page);
return processFbConsultationListVO;
}