feat: implement production order DAO
- Add ProductionOrderDAO class for production order data access - Implement queryProductionOrderNumbers() to query SQL Server for production order numbers - Implement readProductionIds() to read production IDs from text files - Includes proper error handling and logging Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -8,14 +8,21 @@ export class ProductionOrderDAO {
|
||||
try {
|
||||
LoggerService.info(`Querying production orders for ${productionIds.length} IDs`);
|
||||
|
||||
const idsString = productionIds.map((id) => `'${id}'`).join(',');
|
||||
// Validate input
|
||||
if (productionIds.length === 0) {
|
||||
LoggerService.warn('No production IDs provided, returning empty array');
|
||||
return [];
|
||||
}
|
||||
|
||||
// Use parameterized query to prevent SQL injection
|
||||
const placeholders = productionIds.map((_, i) => `@param${i}`).join(',');
|
||||
const query = `
|
||||
SELECT DISTINCT production_order_no
|
||||
FROM production_orders
|
||||
WHERE production_id IN (${idsString})
|
||||
WHERE production_id IN (${placeholders})
|
||||
`;
|
||||
|
||||
const result = await this.dbService.executeSQLServerQuery(query);
|
||||
const result = await this.dbService.executeSQLServerQuery(query, productionIds);
|
||||
const orderNumbers = result.rows.map((row: any) => row.production_order_no);
|
||||
|
||||
LoggerService.info(`Found ${orderNumbers.length} production orders`);
|
||||
@@ -29,12 +36,24 @@ export class ProductionOrderDAO {
|
||||
async readProductionIds(filePath: string): Promise<string[]> {
|
||||
try {
|
||||
const fs = await import('fs/promises');
|
||||
|
||||
// Validate file existence
|
||||
try {
|
||||
await fs.access(filePath, fs.constants.R_OK);
|
||||
} catch {
|
||||
throw new Error(`Production IDs file not found: ${filePath}`);
|
||||
}
|
||||
|
||||
const content = await fs.readFile(filePath, 'utf-8');
|
||||
const ids = content
|
||||
.split('\n')
|
||||
.map((line) => line.trim())
|
||||
.filter((line) => line.length > 0);
|
||||
|
||||
if (ids.length === 0) {
|
||||
LoggerService.warn('Production IDs file is empty');
|
||||
}
|
||||
|
||||
LoggerService.info(`Read ${ids.length} production IDs from file`);
|
||||
return ids;
|
||||
} catch (error) {
|
||||
|
||||
Reference in New Issue
Block a user