Commit e2bd8dd4 authored by tianbo's avatar tianbo

refactor(ymt): 优化电梯代码生成逻辑

- 新增 selectExceedElevatorSequenceCodeList 方法,用于获取超出起始代码的电梯序列代码列表 - 修改 selectExceedElevatorCodeList 方法的 SQL 查询,使用 CODE96333 字段进行比较和排序 - 更新 EquipmentCategoryServiceImpl 中的电梯代码生成逻辑,使用序列号进行比较
parent e2836439
......@@ -2666,7 +2666,7 @@ public class IdxBizJgRegisterInfoServiceImpl extends BaseService<IdxBizJgRegiste
// 设备状态
if (!ObjectUtils.isEmpty(map.getString("EQU_STATE"))) {
BoolQueryBuilder esBuilder = QueryBuilders.boolQuery();
if (map.getString("EQU_STATE").equals(EquimentEnum.WEIDENGJI.getCode().toString())) {
if (map.getString("EQU_STATE").equals(EquimentEnum.WEIDENGJI.getName())) {
esBuilder.mustNot(QueryBuilders.existsQuery("EQU_STATE"));
} else {
String param = QueryParser.escape(map.getLong("EQU_STATE").toString());
......
......@@ -44,6 +44,8 @@ public interface CategoryOtherInfoMapper extends BaseMapper<CategoryOtherInfo> {
List<Integer> selectExceedElevatorCodeList(Integer start,String prefix);
List<Integer> selectExceedElevatorSequenceCodeList(Integer start,String prefix);
Integer selectCode(Integer start, Integer end, String prefix);
/**
......
......@@ -178,12 +178,12 @@
SELECT CODE96333 code
FROM biz_jg_supervisory_code bjsc
WHERE
code ~ '^\d+$' -- 确保是纯数字
AND code LIKE CONCAT(#{prefix}, '%')
CODE96333 ~ '^\d+$' -- 确保是纯数字
AND CODE96333 LIKE CONCAT(#{prefix}, '%')
<if test="start != null and start != ''">
AND code::BIGINT <![CDATA[ >= ]]> #{start}::BIGINT -- 数值比较
AND CODE96333::BIGINT <![CDATA[ >= ]]> #{start}::BIGINT -- 数值比较
</if>
ORDER BY code::BIGINT -- 数值排序
ORDER BY CODE96333::BIGINT -- 数值排序
</select>
<select id="selectCode" resultType="java.lang.Integer">
......@@ -205,4 +205,16 @@
WHERE CODE96333 = #{elevatorCode}
ORDER BY code::BIGINT;
</select>
<select id="selectExceedElevatorSequenceCodeList" resultType="java.lang.Integer">
SELECT SUBSTRING(CODE96333 FROM 3) AS code
FROM biz_jg_supervisory_code bjsc
WHERE
CODE96333 ~ '^\d+$' -- 确保是纯数字
AND CODE96333 LIKE CONCAT(#{prefix}, '%')
<if test="start != null and start != ''">
AND CODE96333::BIGINT <![CDATA[ >= ]]> #{start}::BIGINT -- 数值比较
</if>
ORDER BY CODE96333::BIGINT -- 数值排序
</select>
</mapper>
......@@ -887,12 +887,11 @@ public class EquipmentCategoryServiceImpl extends BaseService<EquipmentCategoryD
if (!ObjectUtils.isEmpty(elevatorOtherInfo) && elevatorOtherInfo.getCode() != null) {
StopWatch stopWatch = new StopWatch();
stopWatch.start();
Integer start = Integer.valueOf(prefix + (ValidationUtil.isEmpty(startCode) ? EquipmentCategoryEnum.getCode.get(prefix) : startCode));
Integer end = Integer.valueOf(elevatorOtherInfo.getCode());
// List<Integer> allCodeList = IntStream.rangeClosed(start, end)
// .boxed()
// .collect(Collectors.toList());
List<Integer> codeList = categoryOtherInfoMapper.selectExceedElevatorCodeList(start, prefix);
// 改为都只拿序列号查找比较
int start = Integer.parseInt(ValidationUtil.isEmpty(startCode) ? EquipmentCategoryEnum.getCode.get(prefix) : startCode);
int end = Integer.parseInt(elevatorOtherInfo.getCode().substring(2));
List<Integer> codeList = categoryOtherInfoMapper.selectExceedElevatorSequenceCodeList(Integer.valueOf(prefix + start), prefix);
// 使用TreeSet便于快速查找和排序
TreeSet<Integer> usedCodes = new TreeSet<>(codeList);
......@@ -907,7 +906,7 @@ public class EquipmentCategoryServiceImpl extends BaseService<EquipmentCategoryD
if (firstAvailableCode != null) {
elevatorCode.setLength(0);
elevatorCode.append(firstAvailableCode);
elevatorCode.append(prefix).append(firstAvailableCode);
} else {
//// 获取补零位长度
//String elevatorCode1 = elevatorOtherInfo.getCode().substring(2);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment