From 1d297fc81ab85fc8ad74e6eef8883fd72f6c6410 Mon Sep 17 00:00:00 2001 From: zhang1106 <849185023@qq.com> Date: Fri, 10 Apr 2026 14:34:33 +0800 Subject: [PATCH] =?UTF-8?q?fix(devices):=20=E4=BF=AE=E5=A4=8D=E4=B8=8D?= =?UTF-8?q?=E5=90=8C=E6=95=B0=E6=8D=AE=E5=BA=93=E7=B1=BB=E5=9E=8B=E4=B8=8B?= =?UTF-8?q?=E8=AE=BE=E5=A4=87ID=E5=92=8C=E6=9C=BA=E6=9E=B6ID=E7=9A=84?= =?UTF-8?q?=E6=95=B0=E5=80=BC=E8=BD=AC=E6=8D=A2=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 修改设备ID和机架ID的数值转换逻辑,针对MySQL数据库使用SIGNED类型,其他数据库使用INTEGER类型,确保在不同数据库环境下都能正确获取最大值 --- backend/routes/devices.js | 30 ++++++++++++++++++++++-------- 1 file changed, 22 insertions(+), 8 deletions(-) diff --git a/backend/routes/devices.js b/backend/routes/devices.js index 8734c27..50f63db 100644 --- a/backend/routes/devices.js +++ b/backend/routes/devices.js @@ -731,7 +731,17 @@ async function generateDeviceId() { }, }, 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, }); @@ -1112,12 +1122,14 @@ router.post('/import', async (req, res) => { Device.findOne({ attributes: [ [ - sequelize.fn( - 'MAX', - sequelize.cast(sequelize.fn('SUBSTR', sequelize.col('deviceId'), 4), 'INTEGER') - ), - 'maxNum', - ], + sequelize.fn( + 'MAX', + dbDialect === 'mysql' + ? sequelize.cast(sequelize.fn('SUBSTR', sequelize.col('deviceId'), 4), 'SIGNED') + : sequelize.cast(sequelize.fn('SUBSTR', sequelize.col('deviceId'), 4), 'INTEGER') + ), + 'maxNum', + ], ], where: { deviceId: { [Op.like]: 'DEV%' } }, transaction: t, @@ -1268,7 +1280,9 @@ router.post('/import', async (req, res) => { [ sequelize.fn( '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', ],