fix: resolve SQL Server table name mapping and variable naming conflicts

- Fix getTableName() to handle generic schema_tablename pattern
- Convert schema_tablename to [schema].[tablename] for SQL Server
- Replace hardcoded productionContractData table name with helper function
- Fix variable naming conflict: rename 'sql' to 'sqlString' to avoid shadowing mssql module import
- Apply fixes to discrete-material-plan-dao, materials-to-be-deleted-dao, and bip-users-dao

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
Misaka_Company
2026-03-02 12:15:11 +08:00
parent 679366a4b0
commit 1aa2abdb43
4 changed files with 138 additions and 130 deletions

View File

@@ -84,16 +84,22 @@ async function getValidationDatabaseService(): Promise<MySqlService | SqlServerS
/** /**
* Get table name based on database type * Get table name based on database type
* Converts MySQL schema_tablename format to SQL Server [schema].[tablename] format
* e.g., productionContractData_26年压力表合同数据 -> [productionContractData].[26年压力表合同数据]
* dbo_MaterialsToBeDeleted -> [dbo].[MaterialsToBeDeleted]
*/ */
function getTableName(mysqlTableName: string): string { function getTableName(mysqlTableName: string): string {
const dbType = process.env.DB_TYPE?.toLowerCase() const dbType = process.env.DB_TYPE?.toLowerCase()
if (dbType === 'sqlserver' || dbType === 'mssql') { if (dbType === 'sqlserver' || dbType === 'mssql') {
// Convert MySQL table name to SQL Server format // Find the FIRST underscore to split schema and table name
// e.g., dbo_MaterialsToBeDeleted -> [dbo].[MaterialsToBeDeleted] // This handles patterns like: schema_tablename
if (mysqlTableName.startsWith('dbo_')) { const firstUnderscoreIndex = mysqlTableName.indexOf('_')
const tableName = mysqlTableName.substring(4) if (firstUnderscoreIndex > 0) {
return `[dbo].[${tableName}]` const schema = mysqlTableName.substring(0, firstUnderscoreIndex)
const tableName = mysqlTableName.substring(firstUnderscoreIndex + 1)
return `[${schema}].[${tableName}]`
} }
// If no underscore found, default to dbo schema
return `[dbo].[${mysqlTableName}]` return `[dbo].[${mysqlTableName}]`
} }
return mysqlTableName return mysqlTableName
@@ -151,6 +157,8 @@ async function getSourceNumbersFromInputs(
// Table name in MySQL: productionContractData_26年压力表合同数据 // Table name in MySQL: productionContractData_26年压力表合同数据
// Column name: 生产订单号 (SourceNumber) // Column name: 生产订单号 (SourceNumber)
if (productionIds.length > 0) { if (productionIds.length > 0) {
const contractTableName = getTableName('productionContractData_26年压力表合同数据')
if (isSqlServer) { if (isSqlServer) {
const sql = require('mssql') const sql = require('mssql')
const placeholders = productionIds.map((_, idx) => `@p${idx}`).join(',') const placeholders = productionIds.map((_, idx) => `@p${idx}`).join(',')
@@ -162,7 +170,7 @@ async function getSourceNumbersFromInputs(
const contractSql = ` const contractSql = `
SELECT DISTINCT 生产订单号 SELECT DISTINCT 生产订单号
FROM productionContractData_26年压力表合同数据 FROM ${contractTableName}
WHERE 总排号 IN (${placeholders}) WHERE 总排号 IN (${placeholders})
` `
const contractResult = await (dbService as SqlServerService).queryWithParams(contractSql, params) const contractResult = await (dbService as SqlServerService).queryWithParams(contractSql, params)
@@ -174,7 +182,7 @@ async function getSourceNumbersFromInputs(
const placeholders = productionIds.map(() => '?').join(',') const placeholders = productionIds.map(() => '?').join(',')
const contractSql = ` const contractSql = `
SELECT DISTINCT 生产订单号 SELECT DISTINCT 生产订单号
FROM productionContractData_26年压力表合同数据 FROM ${contractTableName}
WHERE 总排号 IN (${placeholders}) WHERE 总排号 IN (${placeholders})
` `
const contractResult = await (dbService as MySqlService).query(contractSql, productionIds) const contractResult = await (dbService as MySqlService).query(contractSql, productionIds)

View File

@@ -169,11 +169,11 @@ export class DiscreteMaterialPlanDAO {
const dbService = await this.getDatabaseService() const dbService = await this.getDatabaseService()
const tableName = this.getTableName() const tableName = this.getTableName()
const sql = `SELECT * FROM ${tableName}` const sqlString = `SELECT * FROM ${tableName}`
const result = this.dbType === 'sqlserver' const result = this.dbType === 'sqlserver'
? await (dbService as SqlServerService).query(sql) ? await (dbService as SqlServerService).query(sqlString)
: await (dbService as MySqlService).query(sql) : await (dbService as MySqlService).query(sqlString)
return result.rows return result.rows
} catch (error) { } catch (error) {
@@ -193,7 +193,7 @@ export class DiscreteMaterialPlanDAO {
const dbService = await this.getDatabaseService() const dbService = await this.getDatabaseService()
const tableName = this.getTableName() const tableName = this.getTableName()
const sql = ` const sqlString = `
WITH RankedRecords AS ( WITH RankedRecords AS (
SELECT SELECT
*, *,
@@ -216,8 +216,8 @@ export class DiscreteMaterialPlanDAO {
` `
const result = this.dbType === 'sqlserver' const result = this.dbType === 'sqlserver'
? await (dbService as SqlServerService).query(sql) ? await (dbService as SqlServerService).query(sqlString)
: await (dbService as MySqlService).query(sql) : await (dbService as MySqlService).query(sqlString)
return result.rows return result.rows
} catch (error) { } catch (error) {
@@ -255,24 +255,24 @@ export class DiscreteMaterialPlanDAO {
params[`p${idx}`] = { value: num, type: sql.NVarChar } params[`p${idx}`] = { value: num, type: sql.NVarChar }
}) })
const sql = ` const sqlString = `
SELECT * SELECT *
FROM ${tableName} FROM ${tableName}
WHERE SourceNumber IN (${placeholders}) WHERE SourceNumber IN (${placeholders})
` `
const result = await (dbService as SqlServerService).queryWithParams(sql, params) const result = await (dbService as SqlServerService).queryWithParams(sqlString, params)
allResults.push(...result.rows) allResults.push(...result.rows)
} else { } else {
const placeholders = batch.map(() => '?').join(',') const placeholders = batch.map(() => '?').join(',')
const sql = ` const sqlString = `
SELECT * SELECT *
FROM ${tableName} FROM ${tableName}
WHERE SourceNumber IN (${placeholders}) WHERE SourceNumber IN (${placeholders})
` `
const result = await (dbService as MySqlService).query(sql, batch) const result = await (dbService as MySqlService).query(sqlString, batch)
allResults.push(...result.rows) allResults.push(...result.rows)
} }
} }
@@ -313,7 +313,7 @@ export class DiscreteMaterialPlanDAO {
params[`p${idx}`] = { value: num, type: sql.NVarChar } params[`p${idx}`] = { value: num, type: sql.NVarChar }
}) })
const sql = ` const sqlString = `
WITH RankedRecords AS ( WITH RankedRecords AS (
SELECT SELECT
*, *,
@@ -336,12 +336,12 @@ export class DiscreteMaterialPlanDAO {
WHERE rn = 1 WHERE rn = 1
` `
const result = await (dbService as SqlServerService).queryWithParams(sql, params) const result = await (dbService as SqlServerService).queryWithParams(sqlString, params)
allResults.push(...result.rows) allResults.push(...result.rows)
} else { } else {
const placeholders = batch.map(() => '?').join(',') const placeholders = batch.map(() => '?').join(',')
const sql = ` const sqlString = `
WITH RankedRecords AS ( WITH RankedRecords AS (
SELECT SELECT
*, *,
@@ -364,7 +364,7 @@ export class DiscreteMaterialPlanDAO {
WHERE rn = 1 WHERE rn = 1
` `
const result = await (dbService as MySqlService).query(sql, batch) const result = await (dbService as MySqlService).query(sqlString, batch)
allResults.push(...result.rows) allResults.push(...result.rows)
} }
} }
@@ -387,25 +387,25 @@ export class DiscreteMaterialPlanDAO {
const tableName = this.getTableName() const tableName = this.getTableName()
if (this.dbType === 'sqlserver') { if (this.dbType === 'sqlserver') {
const sql = ` const sqlString = `
SELECT * SELECT *
FROM ${tableName} FROM ${tableName}
WHERE SourceNumber = @sourceNumber WHERE SourceNumber = @sourceNumber
` `
const result = await (dbService as SqlServerService).queryWithParams(sql, { const result = await (dbService as SqlServerService).queryWithParams(sqlString, {
sourceNumber: { value: sourceNumber, type: sql.NVarChar } sourceNumber: { value: sourceNumber, type: sql.NVarChar }
}) })
return result.rows return result.rows
} else { } else {
const sql = ` const sqlString = `
SELECT * SELECT *
FROM ${tableName} FROM ${tableName}
WHERE SourceNumber = ? WHERE SourceNumber = ?
` `
const result = await (dbService as MySqlService).query(sql, [sourceNumber]) const result = await (dbService as MySqlService).query(sqlString, [sourceNumber])
return result.rows return result.rows
} }
@@ -428,25 +428,25 @@ export class DiscreteMaterialPlanDAO {
const tableName = this.getTableName() const tableName = this.getTableName()
if (this.dbType === 'sqlserver') { if (this.dbType === 'sqlserver') {
const sql = ` const sqlString = `
SELECT * SELECT *
FROM ${tableName} FROM ${tableName}
WHERE PlanNumber = @planNumber WHERE PlanNumber = @planNumber
` `
const result = await (dbService as SqlServerService).queryWithParams(sql, { const result = await (dbService as SqlServerService).queryWithParams(sqlString, {
planNumber: { value: planNumber, type: sql.NVarChar } planNumber: { value: planNumber, type: sql.NVarChar }
}) })
return result.rows return result.rows
} else { } else {
const sql = ` const sqlString = `
SELECT * SELECT *
FROM ${tableName} FROM ${tableName}
WHERE PlanNumber = ? WHERE PlanNumber = ?
` `
const result = await (dbService as MySqlService).query(sql, [planNumber]) const result = await (dbService as MySqlService).query(sqlString, [planNumber])
return result.rows return result.rows
} }
@@ -478,24 +478,24 @@ export class DiscreteMaterialPlanDAO {
params[`p${idx}`] = { value: num, type: sql.NVarChar } params[`p${idx}`] = { value: num, type: sql.NVarChar }
}) })
const sql = ` const sqlString = `
SELECT * SELECT *
FROM ${tableName} FROM ${tableName}
WHERE PlanNumber IN (${placeholders}) WHERE PlanNumber IN (${placeholders})
` `
const result = await (dbService as SqlServerService).queryWithParams(sql, params) const result = await (dbService as SqlServerService).queryWithParams(sqlString, params)
return result.rows return result.rows
} else { } else {
const placeholders = planNumbers.map(() => '?').join(',') const placeholders = planNumbers.map(() => '?').join(',')
const sql = ` const sqlString = `
SELECT * SELECT *
FROM ${tableName} FROM ${tableName}
WHERE PlanNumber IN (${placeholders}) WHERE PlanNumber IN (${placeholders})
` `
const result = await (dbService as MySqlService).query(sql, planNumbers) const result = await (dbService as MySqlService).query(sqlString, planNumbers)
return result.rows return result.rows
} }
} catch (error) { } catch (error) {
@@ -515,11 +515,11 @@ export class DiscreteMaterialPlanDAO {
const dbService = await this.getDatabaseService() const dbService = await this.getDatabaseService()
const tableName = this.getTableName() const tableName = this.getTableName()
const sql = `SELECT COUNT(*) as count FROM ${tableName}` const sqlString = `SELECT COUNT(*) as count FROM ${tableName}`
const result = this.dbType === 'sqlserver' const result = this.dbType === 'sqlserver'
? await (dbService as SqlServerService).query(sql) ? await (dbService as SqlServerService).query(sqlString)
: await (dbService as MySqlService).query(sql) : await (dbService as MySqlService).query(sqlString)
return result.rows.length > 0 ? (result.rows[0].count as number) : 0 return result.rows.length > 0 ? (result.rows[0].count as number) : 0
} catch (error) { } catch (error) {
@@ -539,25 +539,25 @@ export class DiscreteMaterialPlanDAO {
const tableName = this.getTableName() const tableName = this.getTableName()
if (this.dbType === 'sqlserver') { if (this.dbType === 'sqlserver') {
const sql = ` const sqlString = `
SELECT COUNT(*) as count SELECT COUNT(*) as count
FROM ${tableName} FROM ${tableName}
WHERE PlanNumber = @planNumber WHERE PlanNumber = @planNumber
` `
const result = await (dbService as SqlServerService).queryWithParams(sql, { const result = await (dbService as SqlServerService).queryWithParams(sqlString, {
planNumber: { value: planNumber, type: sql.NVarChar } planNumber: { value: planNumber, type: sql.NVarChar }
}) })
return result.rows.length > 0 ? (result.rows[0].count as number) : 0 return result.rows.length > 0 ? (result.rows[0].count as number) : 0
} else { } else {
const sql = ` const sqlString = `
SELECT COUNT(*) as count SELECT COUNT(*) as count
FROM ${tableName} FROM ${tableName}
WHERE PlanNumber = ? WHERE PlanNumber = ?
` `
const result = await (dbService as MySqlService).query(sql, [planNumber]) const result = await (dbService as MySqlService).query(sqlString, [planNumber])
return result.rows.length > 0 ? (result.rows[0].count as number) : 0 return result.rows.length > 0 ? (result.rows[0].count as number) : 0
} }
@@ -586,42 +586,42 @@ export class DiscreteMaterialPlanDAO {
params[`p${idx}`] = { value: num, type: sql.NVarChar } params[`p${idx}`] = { value: num, type: sql.NVarChar }
}) })
const sql = ` const sqlString = `
SELECT DISTINCT MaterialName SELECT DISTINCT MaterialName
FROM ${tableName} FROM ${tableName}
WHERE SourceNumber IN (${placeholders}) WHERE SourceNumber IN (${placeholders})
AND MaterialName IS NOT NULL AND MaterialName IS NOT NULL
` `
const result = await (dbService as SqlServerService).queryWithParams(sql, params) const result = await (dbService as SqlServerService).queryWithParams(sqlString, params)
return result.rows return result.rows
.map(row => row.MaterialName as string) .map(row => row.MaterialName as string)
.filter(Boolean) .filter(Boolean)
} else { } else {
const placeholders = sourceNumbers.map(() => '?').join(',') const placeholders = sourceNumbers.map(() => '?').join(',')
const sql = ` const sqlString = `
SELECT DISTINCT MaterialName SELECT DISTINCT MaterialName
FROM ${tableName} FROM ${tableName}
WHERE SourceNumber IN (${placeholders}) WHERE SourceNumber IN (${placeholders})
AND MaterialName IS NOT NULL AND MaterialName IS NOT NULL
` `
const result = await (dbService as MySqlService).query(sql, sourceNumbers) const result = await (dbService as MySqlService).query(sqlString, sourceNumbers)
return result.rows return result.rows
.map(row => row.MaterialName as string) .map(row => row.MaterialName as string)
.filter(Boolean) .filter(Boolean)
} }
} else { } else {
const sql = ` const sqlString = `
SELECT DISTINCT MaterialName SELECT DISTINCT MaterialName
FROM ${tableName} FROM ${tableName}
WHERE MaterialName IS NOT NULL WHERE MaterialName IS NOT NULL
` `
const result = this.dbType === 'sqlserver' const result = this.dbType === 'sqlserver'
? await (dbService as SqlServerService).query(sql) ? await (dbService as SqlServerService).query(sqlString)
: await (dbService as MySqlService).query(sql) : await (dbService as MySqlService).query(sqlString)
return result.rows return result.rows
.map(row => row.MaterialName as string) .map(row => row.MaterialName as string)
@@ -642,7 +642,7 @@ export class DiscreteMaterialPlanDAO {
const dbService = await this.getDatabaseService() const dbService = await this.getDatabaseService()
const tableName = this.getTableName() const tableName = this.getTableName()
const sql = ` const sqlString = `
SELECT SELECT
COUNT(*) as totalRecords, COUNT(*) as totalRecords,
COUNT(DISTINCT PlanNumber) as uniquePlans, COUNT(DISTINCT PlanNumber) as uniquePlans,
@@ -653,8 +653,8 @@ export class DiscreteMaterialPlanDAO {
` `
const result = this.dbType === 'sqlserver' const result = this.dbType === 'sqlserver'
? await (dbService as SqlServerService).query(sql) ? await (dbService as SqlServerService).query(sqlString)
: await (dbService as MySqlService).query(sql) : await (dbService as MySqlService).query(sqlString)
return result.rows.length > 0 ? result.rows[0] : {} return result.rows.length > 0 ? result.rows[0] : {}
} catch (error) { } catch (error) {

View File

@@ -143,7 +143,7 @@ export class MaterialsToBeDeletedDAO {
const manager = managerName?.trim() || null const manager = managerName?.trim() || null
if (this.dbType === 'sqlserver') { if (this.dbType === 'sqlserver') {
const sql = ` const sqlString = `
MERGE ${tableName} AS target MERGE ${tableName} AS target
USING (VALUES (@materialCode, @managerName)) AS source (MaterialCode, ManagerName) USING (VALUES (@materialCode, @managerName)) AS source (MaterialCode, ManagerName)
ON target.MaterialCode = source.MaterialCode ON target.MaterialCode = source.MaterialCode
@@ -151,18 +151,18 @@ export class MaterialsToBeDeletedDAO {
WHEN NOT MATCHED THEN INSERT (MaterialCode, ManagerName) VALUES (source.MaterialCode, source.ManagerName); WHEN NOT MATCHED THEN INSERT (MaterialCode, ManagerName) VALUES (source.MaterialCode, source.ManagerName);
` `
await (dbService as SqlServerService).queryWithParams(sql, { await (dbService as SqlServerService).queryWithParams(sqlString, {
materialCode: { value: code, type: sql.NVarChar }, materialCode: { value: code, type: sql.NVarChar },
managerName: { value: manager, type: sql.NVarChar } managerName: { value: manager, type: sql.NVarChar }
}) })
} else { } else {
const sql = ` const sqlString = `
INSERT INTO ${tableName} (MaterialCode, ManagerName) INSERT INTO ${tableName} (MaterialCode, ManagerName)
VALUES (?, ?) VALUES (?, ?)
ON DUPLICATE KEY UPDATE ManagerName = VALUES(ManagerName) ON DUPLICATE KEY UPDATE ManagerName = VALUES(ManagerName)
` `
await (dbService as MySqlService).query(sql, [code, manager]) await (dbService as MySqlService).query(sqlString, [code, manager])
} }
return true return true
@@ -203,7 +203,7 @@ export class MaterialsToBeDeletedDAO {
try { try {
if (this.dbType === 'sqlserver') { if (this.dbType === 'sqlserver') {
const sql = ` const sqlString = `
MERGE ${tableName} AS target MERGE ${tableName} AS target
USING (VALUES (@materialCode, @managerName)) AS source (MaterialCode, ManagerName) USING (VALUES (@materialCode, @managerName)) AS source (MaterialCode, ManagerName)
ON target.MaterialCode = source.MaterialCode ON target.MaterialCode = source.MaterialCode
@@ -211,18 +211,18 @@ export class MaterialsToBeDeletedDAO {
WHEN NOT MATCHED THEN INSERT (MaterialCode, ManagerName) VALUES (source.MaterialCode, source.ManagerName); WHEN NOT MATCHED THEN INSERT (MaterialCode, ManagerName) VALUES (source.MaterialCode, source.ManagerName);
` `
await (dbService as SqlServerService).queryWithParams(sql, { await (dbService as SqlServerService).queryWithParams(sqlString, {
materialCode: { value: materialCode, type: sql.NVarChar }, materialCode: { value: materialCode, type: sql.NVarChar },
managerName: { value: managerName || null, type: sql.NVarChar } managerName: { value: managerName || null, type: sql.NVarChar }
}) })
} else { } else {
const sql = ` const sqlString = `
INSERT INTO ${tableName} (MaterialCode, ManagerName) INSERT INTO ${tableName} (MaterialCode, ManagerName)
VALUES (?, ?) VALUES (?, ?)
ON DUPLICATE KEY UPDATE ManagerName = VALUES(ManagerName) ON DUPLICATE KEY UPDATE ManagerName = VALUES(ManagerName)
` `
await (dbService as MySqlService).query(sql, [materialCode, managerName || null]) await (dbService as MySqlService).query(sqlString, [materialCode, managerName || null])
} }
stats.success++ stats.success++
@@ -250,15 +250,15 @@ export class MaterialsToBeDeletedDAO {
const dbService = await this.getDatabaseService() const dbService = await this.getDatabaseService()
const tableName = this.getTableName() const tableName = this.getTableName()
const sql = ` const sqlString = `
SELECT MaterialCode SELECT MaterialCode
FROM ${tableName} FROM ${tableName}
WHERE MaterialCode IS NOT NULL WHERE MaterialCode IS NOT NULL
` `
const result = this.dbType === 'sqlserver' const result = this.dbType === 'sqlserver'
? await (dbService as SqlServerService).query(sql) ? await (dbService as SqlServerService).query(sqlString)
: await (dbService as MySqlService).query(sql) : await (dbService as MySqlService).query(sqlString)
return new Set(result.rows.map(row => row.MaterialCode as string).filter(Boolean)) return new Set(result.rows.map(row => row.MaterialCode as string).filter(Boolean))
} catch (error) { } catch (error) {
@@ -276,7 +276,7 @@ export class MaterialsToBeDeletedDAO {
const dbService = await this.getDatabaseService() const dbService = await this.getDatabaseService()
const tableName = this.getTableName() const tableName = this.getTableName()
const sql = ` const sqlString = `
SELECT ID, MaterialCode, ManagerName SELECT ID, MaterialCode, ManagerName
FROM ${tableName} FROM ${tableName}
WHERE MaterialCode IS NOT NULL WHERE MaterialCode IS NOT NULL
@@ -284,8 +284,8 @@ export class MaterialsToBeDeletedDAO {
` `
const result = this.dbType === 'sqlserver' const result = this.dbType === 'sqlserver'
? await (dbService as SqlServerService).query(sql) ? await (dbService as SqlServerService).query(sqlString)
: await (dbService as MySqlService).query(sql) : await (dbService as MySqlService).query(sqlString)
return result.rows.map(row => ({ return result.rows.map(row => ({
id: row.ID as number, id: row.ID as number,
@@ -309,14 +309,14 @@ export class MaterialsToBeDeletedDAO {
const tableName = this.getTableName() const tableName = this.getTableName()
if (this.dbType === 'sqlserver') { if (this.dbType === 'sqlserver') {
const sql = ` const sqlString = `
SELECT ID, MaterialCode, ManagerName SELECT ID, MaterialCode, ManagerName
FROM ${tableName} FROM ${tableName}
WHERE ManagerName = @managerName AND MaterialCode IS NOT NULL WHERE ManagerName = @managerName AND MaterialCode IS NOT NULL
ORDER BY MaterialCode ORDER BY MaterialCode
` `
const result = await (dbService as SqlServerService).queryWithParams(sql, { const result = await (dbService as SqlServerService).queryWithParams(sqlString, {
managerName: { value: managerName, type: sql.NVarChar } managerName: { value: managerName, type: sql.NVarChar }
}) })
@@ -326,14 +326,14 @@ export class MaterialsToBeDeletedDAO {
managerName: row.ManagerName as string managerName: row.ManagerName as string
})) }))
} else { } else {
const sql = ` const sqlString = `
SELECT ID, MaterialCode, ManagerName SELECT ID, MaterialCode, ManagerName
FROM ${tableName} FROM ${tableName}
WHERE ManagerName = ? AND MaterialCode IS NOT NULL WHERE ManagerName = ? AND MaterialCode IS NOT NULL
ORDER BY MaterialCode ORDER BY MaterialCode
` `
const result = await (dbService as MySqlService).query(sql, [managerName]) const result = await (dbService as MySqlService).query(sqlString, [managerName])
return result.rows.map(row => ({ return result.rows.map(row => ({
id: row.ID as number, id: row.ID as number,
@@ -356,7 +356,7 @@ export class MaterialsToBeDeletedDAO {
const dbService = await this.getDatabaseService() const dbService = await this.getDatabaseService()
const tableName = this.getTableName() const tableName = this.getTableName()
const sql = ` const sqlString = `
SELECT DISTINCT ManagerName SELECT DISTINCT ManagerName
FROM ${tableName} FROM ${tableName}
WHERE ManagerName IS NOT NULL WHERE ManagerName IS NOT NULL
@@ -364,8 +364,8 @@ export class MaterialsToBeDeletedDAO {
` `
const result = this.dbType === 'sqlserver' const result = this.dbType === 'sqlserver'
? await (dbService as SqlServerService).query(sql) ? await (dbService as SqlServerService).query(sqlString)
: await (dbService as MySqlService).query(sql) : await (dbService as MySqlService).query(sqlString)
return result.rows.map(row => row.ManagerName as string).filter(Boolean) return result.rows.map(row => row.ManagerName as string).filter(Boolean)
} catch (error) { } catch (error) {
@@ -386,13 +386,13 @@ export class MaterialsToBeDeletedDAO {
const code = materialCode.trim() const code = materialCode.trim()
if (this.dbType === 'sqlserver') { if (this.dbType === 'sqlserver') {
const sql = ` const sqlString = `
SELECT ID, MaterialCode, ManagerName SELECT ID, MaterialCode, ManagerName
FROM ${tableName} FROM ${tableName}
WHERE MaterialCode = @materialCode WHERE MaterialCode = @materialCode
` `
const result = await (dbService as SqlServerService).queryWithParams(sql, { const result = await (dbService as SqlServerService).queryWithParams(sqlString, {
materialCode: { value: code, type: sql.NVarChar } materialCode: { value: code, type: sql.NVarChar }
}) })
@@ -407,13 +407,13 @@ export class MaterialsToBeDeletedDAO {
managerName: row.ManagerName as string managerName: row.ManagerName as string
} }
} else { } else {
const sql = ` const sqlString = `
SELECT ID, MaterialCode, ManagerName SELECT ID, MaterialCode, ManagerName
FROM ${tableName} FROM ${tableName}
WHERE MaterialCode = ? WHERE MaterialCode = ?
` `
const result = await (dbService as MySqlService).query(sql, [code]) const result = await (dbService as MySqlService).query(sqlString, [code])
if (result.rows.length === 0) { if (result.rows.length === 0) {
return null return null
@@ -446,23 +446,23 @@ export class MaterialsToBeDeletedDAO {
const code = materialCode.trim() const code = materialCode.trim()
if (this.dbType === 'sqlserver') { if (this.dbType === 'sqlserver') {
const sql = ` const sqlString = `
DELETE FROM ${tableName} DELETE FROM ${tableName}
WHERE MaterialCode = @materialCode WHERE MaterialCode = @materialCode
` `
const result = await (dbService as SqlServerService).queryWithParams(sql, { const result = await (dbService as SqlServerService).queryWithParams(sqlString, {
materialCode: { value: code, type: sql.NVarChar } materialCode: { value: code, type: sql.NVarChar }
}) })
return result.rowCount > 0 return result.rowCount > 0
} else { } else {
const sql = ` const sqlString = `
DELETE FROM ${tableName} DELETE FROM ${tableName}
WHERE MaterialCode = ? WHERE MaterialCode = ?
` `
const result = await (dbService as MySqlService).query(sql, [code]) const result = await (dbService as MySqlService).query(sqlString, [code])
return result.rowCount > 0 return result.rowCount > 0
} }
@@ -483,23 +483,23 @@ export class MaterialsToBeDeletedDAO {
const tableName = this.getTableName() const tableName = this.getTableName()
if (this.dbType === 'sqlserver') { if (this.dbType === 'sqlserver') {
const sql = ` const sqlString = `
DELETE FROM ${tableName} DELETE FROM ${tableName}
WHERE ManagerName = @managerName WHERE ManagerName = @managerName
` `
const result = await (dbService as SqlServerService).queryWithParams(sql, { const result = await (dbService as SqlServerService).queryWithParams(sqlString, {
managerName: { value: managerName, type: sql.NVarChar } managerName: { value: managerName, type: sql.NVarChar }
}) })
return result.rowCount return result.rowCount
} else { } else {
const sql = ` const sqlString = `
DELETE FROM ${tableName} DELETE FROM ${tableName}
WHERE ManagerName = ? WHERE ManagerName = ?
` `
const result = await (dbService as MySqlService).query(sql, [managerName]) const result = await (dbService as MySqlService).query(sqlString, [managerName])
return result.rowCount return result.rowCount
} }
@@ -518,11 +518,11 @@ export class MaterialsToBeDeletedDAO {
const dbService = await this.getDatabaseService() const dbService = await this.getDatabaseService()
const tableName = this.getTableName() const tableName = this.getTableName()
const sql = `DELETE FROM ${tableName}` const sqlString = `DELETE FROM ${tableName}`
const result = this.dbType === 'sqlserver' const result = this.dbType === 'sqlserver'
? await (dbService as SqlServerService).query(sql) ? await (dbService as SqlServerService).query(sqlString)
: await (dbService as MySqlService).query(sql) : await (dbService as MySqlService).query(sqlString)
return result.rowCount return result.rowCount
} catch (error) { } catch (error) {
@@ -559,22 +559,22 @@ export class MaterialsToBeDeletedDAO {
params[`p${idx}`] = { value: code.trim(), type: sql.NVarChar } params[`p${idx}`] = { value: code.trim(), type: sql.NVarChar }
}) })
const sql = ` const sqlString = `
DELETE FROM ${tableName} DELETE FROM ${tableName}
WHERE MaterialCode IN (${placeholders}) WHERE MaterialCode IN (${placeholders})
` `
const result = await (dbService as SqlServerService).queryWithParams(sql, params) const result = await (dbService as SqlServerService).queryWithParams(sqlString, params)
totalDeleted += result.rowCount totalDeleted += result.rowCount
} else { } else {
const placeholders = batch.map(() => '?').join(',') const placeholders = batch.map(() => '?').join(',')
const sql = ` const sqlString = `
DELETE FROM ${tableName} DELETE FROM ${tableName}
WHERE MaterialCode IN (${placeholders}) WHERE MaterialCode IN (${placeholders})
` `
const result = await (dbService as MySqlService).query(sql, batch) const result = await (dbService as MySqlService).query(sqlString, batch)
totalDeleted += result.rowCount totalDeleted += result.rowCount
} }
} }
@@ -599,25 +599,25 @@ export class MaterialsToBeDeletedDAO {
const code = materialCode.trim() const code = materialCode.trim()
if (this.dbType === 'sqlserver') { if (this.dbType === 'sqlserver') {
const sql = ` const sqlString = `
SELECT COUNT(*) as count SELECT COUNT(*) as count
FROM ${tableName} FROM ${tableName}
WHERE MaterialCode = @materialCode WHERE MaterialCode = @materialCode
` `
const result = await (dbService as SqlServerService).queryWithParams(sql, { const result = await (dbService as SqlServerService).queryWithParams(sqlString, {
materialCode: { value: code, type: sql.NVarChar } materialCode: { value: code, type: sql.NVarChar }
}) })
return result.rows.length > 0 && (result.rows[0].count as number) > 0 return result.rows.length > 0 && (result.rows[0].count as number) > 0
} else { } else {
const sql = ` const sqlString = `
SELECT COUNT(*) as count SELECT COUNT(*) as count
FROM ${tableName} FROM ${tableName}
WHERE MaterialCode = ? WHERE MaterialCode = ?
` `
const result = await (dbService as MySqlService).query(sql, [code]) const result = await (dbService as MySqlService).query(sqlString, [code])
return result.rows.length > 0 && (result.rows[0].count as number) > 0 return result.rows.length > 0 && (result.rows[0].count as number) > 0
} }
@@ -636,11 +636,11 @@ export class MaterialsToBeDeletedDAO {
const dbService = await this.getDatabaseService() const dbService = await this.getDatabaseService()
const tableName = this.getTableName() const tableName = this.getTableName()
const sql = `SELECT COUNT(*) as count FROM ${tableName}` const sqlString = `SELECT COUNT(*) as count FROM ${tableName}`
const result = this.dbType === 'sqlserver' const result = this.dbType === 'sqlserver'
? await (dbService as SqlServerService).query(sql) ? await (dbService as SqlServerService).query(sqlString)
: await (dbService as MySqlService).query(sql) : await (dbService as MySqlService).query(sqlString)
return result.rows.length > 0 ? (result.rows[0].count as number) : 0 return result.rows.length > 0 ? (result.rows[0].count as number) : 0
} catch (error) { } catch (error) {
@@ -660,25 +660,25 @@ export class MaterialsToBeDeletedDAO {
const tableName = this.getTableName() const tableName = this.getTableName()
if (this.dbType === 'sqlserver') { if (this.dbType === 'sqlserver') {
const sql = ` const sqlString = `
SELECT COUNT(*) as count SELECT COUNT(*) as count
FROM ${tableName} FROM ${tableName}
WHERE ManagerName = @managerName WHERE ManagerName = @managerName
` `
const result = await (dbService as SqlServerService).queryWithParams(sql, { const result = await (dbService as SqlServerService).queryWithParams(sqlString, {
managerName: { value: managerName, type: sql.NVarChar } managerName: { value: managerName, type: sql.NVarChar }
}) })
return result.rows.length > 0 ? (result.rows[0].count as number) : 0 return result.rows.length > 0 ? (result.rows[0].count as number) : 0
} else { } else {
const sql = ` const sqlString = `
SELECT COUNT(*) as count SELECT COUNT(*) as count
FROM ${tableName} FROM ${tableName}
WHERE ManagerName = ? WHERE ManagerName = ?
` `
const result = await (dbService as MySqlService).query(sql, [managerName]) const result = await (dbService as MySqlService).query(sqlString, [managerName])
return result.rows.length > 0 ? (result.rows[0].count as number) : 0 return result.rows.length > 0 ? (result.rows[0].count as number) : 0
} }

View File

@@ -114,13 +114,13 @@ export class BIPUsersDAO {
const tableName = this.getTableName() const tableName = this.getTableName()
if (this.dbType === 'sqlserver') { if (this.dbType === 'sqlserver') {
const sql = ` const sqlString = `
SELECT ID, UserName, UserType SELECT ID, UserName, UserType
FROM ${tableName} FROM ${tableName}
WHERE UserName = @username AND Password = @password WHERE UserName = @username AND Password = @password
` `
const result = await (dbService as SqlServerService).queryWithParams(sql, { const result = await (dbService as SqlServerService).queryWithParams(sqlString, {
username: { value: username, type: sql.NVarChar }, username: { value: username, type: sql.NVarChar },
password: { value: password, type: sql.NVarChar } password: { value: password, type: sql.NVarChar }
}) })
@@ -135,13 +135,13 @@ export class BIPUsersDAO {
} }
return null return null
} else { } else {
const sql = ` const sqlString = `
SELECT ID, UserName, UserType SELECT ID, UserName, UserType
FROM ${tableName} FROM ${tableName}
WHERE UserName = ? AND Password = ? WHERE UserName = ? AND Password = ?
` `
const result = await (dbService as MySqlService).query(sql, [username, password]) const result = await (dbService as MySqlService).query(sqlString, [username, password])
if (result.rows.length > 0) { if (result.rows.length > 0) {
const row = result.rows[0] const row = result.rows[0]
@@ -170,13 +170,13 @@ export class BIPUsersDAO {
const tableName = this.getTableName() const tableName = this.getTableName()
if (this.dbType === 'sqlserver') { if (this.dbType === 'sqlserver') {
const sql = ` const sqlString = `
SELECT ID, UserName, UserType SELECT ID, UserName, UserType
FROM ${tableName} FROM ${tableName}
WHERE ComputerNmae = @computerName WHERE ComputerNmae = @computerName
` `
const result = await (dbService as SqlServerService).queryWithParams(sql, { const result = await (dbService as SqlServerService).queryWithParams(sqlString, {
computerName: { value: computerName, type: sql.NVarChar } computerName: { value: computerName, type: sql.NVarChar }
}) })
@@ -190,13 +190,13 @@ export class BIPUsersDAO {
} }
return null return null
} else { } else {
const sql = ` const sqlString = `
SELECT ID, UserName, UserType SELECT ID, UserName, UserType
FROM ${tableName} FROM ${tableName}
WHERE ComputerNmae = ? WHERE ComputerNmae = ?
` `
const result = await (dbService as MySqlService).query(sql, [computerName]) const result = await (dbService as MySqlService).query(sqlString, [computerName])
if (result.rows.length > 0) { if (result.rows.length > 0) {
const row = result.rows[0] const row = result.rows[0]
@@ -223,15 +223,15 @@ export class BIPUsersDAO {
const dbService = await this.getDatabaseService() const dbService = await this.getDatabaseService()
const tableName = this.getTableName() const tableName = this.getTableName()
const sql = ` const sqlString = `
SELECT ID, UserName, UserType, CreateTime SELECT ID, UserName, UserType, CreateTime
FROM ${tableName} FROM ${tableName}
ORDER BY UserName ORDER BY UserName
` `
const result = this.dbType === 'sqlserver' const result = this.dbType === 'sqlserver'
? await (dbService as SqlServerService).query(sql) ? await (dbService as SqlServerService).query(sqlString)
: await (dbService as MySqlService).query(sql) : await (dbService as MySqlService).query(sqlString)
return result.rows.map(row => ({ return result.rows.map(row => ({
id: row.ID as number, id: row.ID as number,
@@ -292,7 +292,7 @@ export class BIPUsersDAO {
} }
} }
await (dbService as SqlServerService).queryWithParams(sql, params) await (dbService as SqlServerService).queryWithParams(sqlString, params)
return true return true
} else { } else {
let sql: string let sql: string
@@ -314,7 +314,7 @@ export class BIPUsersDAO {
params = [username, password, userType] params = [username, password, userType]
} }
await (dbService as MySqlService).query(sql, params) await (dbService as MySqlService).query(sqlString, params)
return true return true
} }
} catch (error) { } catch (error) {
@@ -335,25 +335,25 @@ export class BIPUsersDAO {
const tableName = this.getTableName() const tableName = this.getTableName()
if (this.dbType === 'sqlserver') { if (this.dbType === 'sqlserver') {
const sql = ` const sqlString = `
UPDATE ${tableName} UPDATE ${tableName}
SET UserType = @userType SET UserType = @userType
WHERE UserName = @username WHERE UserName = @username
` `
await (dbService as SqlServerService).queryWithParams(sql, { await (dbService as SqlServerService).queryWithParams(sqlString, {
username: { value: username, type: sql.NVarChar }, username: { value: username, type: sql.NVarChar },
userType: { value: userType, type: sql.NVarChar } userType: { value: userType, type: sql.NVarChar }
}) })
return true return true
} else { } else {
const sql = ` const sqlString = `
UPDATE ${tableName} UPDATE ${tableName}
SET UserType = ? SET UserType = ?
WHERE UserName = ? WHERE UserName = ?
` `
await (dbService as MySqlService).query(sql, [userType, username]) await (dbService as MySqlService).query(sqlString, [userType, username])
return true return true
} }
} catch (error) { } catch (error) {
@@ -374,25 +374,25 @@ export class BIPUsersDAO {
const tableName = this.getTableName() const tableName = this.getTableName()
if (this.dbType === 'sqlserver') { if (this.dbType === 'sqlserver') {
const sql = ` const sqlString = `
UPDATE ${tableName} UPDATE ${tableName}
SET Password = @newPassword SET Password = @newPassword
WHERE UserName = @username WHERE UserName = @username
` `
await (dbService as SqlServerService).queryWithParams(sql, { await (dbService as SqlServerService).queryWithParams(sqlString, {
username: { value: username, type: sql.NVarChar }, username: { value: username, type: sql.NVarChar },
newPassword: { value: newPassword, type: sql.NVarChar } newPassword: { value: newPassword, type: sql.NVarChar }
}) })
return true return true
} else { } else {
const sql = ` const sqlString = `
UPDATE ${tableName} UPDATE ${tableName}
SET Password = ? SET Password = ?
WHERE UserName = ? WHERE UserName = ?
` `
await (dbService as MySqlService).query(sql, [newPassword, username]) await (dbService as MySqlService).query(sqlString, [newPassword, username])
return true return true
} }
} catch (error) { } catch (error) {
@@ -412,22 +412,22 @@ export class BIPUsersDAO {
const tableName = this.getTableName() const tableName = this.getTableName()
if (this.dbType === 'sqlserver') { if (this.dbType === 'sqlserver') {
const sql = ` const sqlString = `
DELETE FROM ${tableName} DELETE FROM ${tableName}
WHERE UserName = @username WHERE UserName = @username
` `
await (dbService as SqlServerService).queryWithParams(sql, { await (dbService as SqlServerService).queryWithParams(sqlString, {
username: { value: username, type: sql.NVarChar } username: { value: username, type: sql.NVarChar }
}) })
return true return true
} else { } else {
const sql = ` const sqlString = `
DELETE FROM ${tableName} DELETE FROM ${tableName}
WHERE UserName = ? WHERE UserName = ?
` `
await (dbService as MySqlService).query(sql, [username]) await (dbService as MySqlService).query(sqlString, [username])
return true return true
} }
} catch (error) { } catch (error) {
@@ -447,24 +447,24 @@ export class BIPUsersDAO {
const tableName = this.getTableName() const tableName = this.getTableName()
if (this.dbType === 'sqlserver') { if (this.dbType === 'sqlserver') {
const sql = ` const sqlString = `
SELECT COUNT(*) as count SELECT COUNT(*) as count
FROM ${tableName} FROM ${tableName}
WHERE UserName = @username WHERE UserName = @username
` `
const result = await (dbService as SqlServerService).queryWithParams(sql, { const result = await (dbService as SqlServerService).queryWithParams(sqlString, {
username: { value: username, type: sql.NVarChar } username: { value: username, type: sql.NVarChar }
}) })
return result.rows.length > 0 && (result.rows[0].count as number) > 0 return result.rows.length > 0 && (result.rows[0].count as number) > 0
} else { } else {
const sql = ` const sqlString = `
SELECT COUNT(*) as count SELECT COUNT(*) as count
FROM ${tableName} FROM ${tableName}
WHERE UserName = ? WHERE UserName = ?
` `
const result = await (dbService as MySqlService).query(sql, [username]) const result = await (dbService as MySqlService).query(sqlString, [username])
return result.rows.length > 0 && (result.rows[0].count as number) > 0 return result.rows.length > 0 && (result.rows[0].count as number) > 0
} }
} catch (error) { } catch (error) {