multi-common/src/main/java/com/gkhy/exam/common/utils/NaturalOrderComparator.java
对比新文件 @@ -0,0 +1,46 @@ package com.gkhy.exam.common.utils; import java.util.Comparator; public class NaturalOrderComparator implements Comparator<String> { private boolean isDigit(char ch) { return ch >= '0' && ch <= '9'; } @Override public int compare(String s1, String s2) { if (s1 == null || s2 == null) { return 0; // 或根据业务决定 null 的排序位置 } int i1 = 0, i2 = 0; while (i1 < s1.length() && i2 < s2.length()) { char c1 = s1.charAt(i1); char c2 = s2.charAt(i2); if (isDigit(c1) && isDigit(c2)) { // 比较数字部分 long n1 = 0, n2 = 0; while (i1 < s1.length() && isDigit(s1.charAt(i1))) { n1 = n1 * 10 + (s1.charAt(i1++) - '0'); } while (i2 < s2.length() && isDigit(s2.charAt(i2))) { n2 = n2 * 10 + (s2.charAt(i2++) - '0'); } if (n1 != n2) { return Long.compare(n1, n2); } } else { // 非数字字符比较 if (c1 != c2) { return Character.compare(c1, c2); } i1++; i2++; } } // 剩余长度比较 return Integer.compare(s1.length(), s2.length()); } } multi-system/src/main/java/com/gkhy/exam/system/domain/vo/SysDeptSaveDTOReq.java
@@ -24,7 +24,7 @@ private String ancestors; /** 显示顺序 */ @ApiModelProperty("显示顺序") @ApiModelProperty("显示顺序默认0") private Integer orderNum; /** 部门名称 */ multi-system/src/main/java/com/gkhy/exam/system/service/impl/SysClauseManagementServiceImpl.java
@@ -1,9 +1,11 @@ package com.gkhy.exam.system.service.impl; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.gkhy.exam.common.exception.ApiException; import com.gkhy.exam.common.utils.NaturalOrderComparator; import com.gkhy.exam.common.utils.SecurityUtils; import com.gkhy.exam.system.domain.SysClauseManagement; import com.gkhy.exam.system.mapper.SysClauseManagementMapper; @@ -12,6 +14,7 @@ import org.springframework.stereotype.Service; import java.time.LocalDateTime; import java.util.Comparator; import java.util.List; @Service @@ -23,7 +26,12 @@ public List<SysClauseManagement> getSysClauseManagements() { LambdaQueryWrapper<SysClauseManagement> lambdaQueryWrapper = Wrappers.<SysClauseManagement>lambdaQuery() .eq(SysClauseManagement::getDelFlag, "0").orderByAsc(SysClauseManagement::getClauseNum); return baseMapper.selectList(lambdaQueryWrapper); List<SysClauseManagement> sysClauseManagements = baseMapper.selectList(lambdaQueryWrapper); if (ObjectUtil.isNotEmpty(sysClauseManagements)){ sysClauseManagements.sort(Comparator.comparing(SysClauseManagement::getClauseNum, new NaturalOrderComparator())); } return sysClauseManagements; } @Override multi-system/src/main/resources/mapper/system/SysFunctionalDistributionMapper.xml
@@ -31,7 +31,7 @@ from sys_functional_distribution a left join sys_dept b on a.dept_id = b.dept_id where 1=1 and a.company_id = #{companyId} order by a.clause_num asc order by b.order_num asc ,a.clause_num asc </select> <insert id="batchInsert">