fix(devices): 修复不同数据库类型下设备ID和机架ID的数值转换问题
修改设备ID和机架ID的数值转换逻辑,针对MySQL数据库使用SIGNED类型,其他数据库使用INTEGER类型,确保在不同数据库环境下都能正确获取最大值
This commit is contained in:
@@ -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,
|
||||||
});
|
});
|
||||||
@@ -1112,12 +1122,14 @@ router.post('/import', async (req, res) => {
|
|||||||
Device.findOne({
|
Device.findOne({
|
||||||
attributes: [
|
attributes: [
|
||||||
[
|
[
|
||||||
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')
|
||||||
'maxNum',
|
: sequelize.cast(sequelize.fn('SUBSTR', sequelize.col('deviceId'), 4), 'INTEGER')
|
||||||
],
|
),
|
||||||
|
'maxNum',
|
||||||
|
],
|
||||||
],
|
],
|
||||||
where: { deviceId: { [Op.like]: 'DEV%' } },
|
where: { deviceId: { [Op.like]: 'DEV%' } },
|
||||||
transaction: t,
|
transaction: t,
|
||||||
@@ -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',
|
||||||
],
|
],
|
||||||
|
|||||||
Reference in New Issue
Block a user