fix(devices): 修复不同数据库类型下设备ID和机架ID的数值转换问题

修改设备ID和机架ID的数值转换逻辑,针对MySQL数据库使用SIGNED类型,其他数据库使用INTEGER类型,确保在不同数据库环境下都能正确获取最大值
This commit is contained in:
zhang1106
2026-04-10 14:34:33 +08:00
parent dd0ce03369
commit 1d297fc81a
+17 -3
View File
@@ -731,7 +731,17 @@ async function generateDeviceId() {
}, },
}, },
attributes: [ attributes: [
[sequelize.fn('MAX', sequelize.literal('CAST(SUBSTR(deviceId, 4) AS INTEGER)')), 'maxNum'], [
sequelize.fn(
'MAX',
sequelize.literal(
dbDialect === 'mysql'
? 'CAST(SUBSTR(deviceId, 4) AS SIGNED)'
: 'CAST(SUBSTR(deviceId, 4) AS INTEGER)'
)
),
'maxNum',
],
], ],
raw: true, raw: true,
}); });
@@ -1114,7 +1124,9 @@ router.post('/import', async (req, res) => {
[ [
sequelize.fn( sequelize.fn(
'MAX', 'MAX',
sequelize.cast(sequelize.fn('SUBSTR', sequelize.col('deviceId'), 4), 'INTEGER') dbDialect === 'mysql'
? sequelize.cast(sequelize.fn('SUBSTR', sequelize.col('deviceId'), 4), 'SIGNED')
: sequelize.cast(sequelize.fn('SUBSTR', sequelize.col('deviceId'), 4), 'INTEGER')
), ),
'maxNum', 'maxNum',
], ],
@@ -1268,7 +1280,9 @@ router.post('/import', async (req, res) => {
[ [
sequelize.fn( sequelize.fn(
'MAX', 'MAX',
sequelize.cast(sequelize.fn('SUBSTR', sequelize.col('rackId'), 5), 'INTEGER') dbDialect === 'mysql'
? sequelize.cast(sequelize.fn('SUBSTR', sequelize.col('rackId'), 5), 'SIGNED')
: sequelize.cast(sequelize.fn('SUBSTR', sequelize.col('rackId'), 5), 'INTEGER')
), ),
'maxNum', 'maxNum',
], ],