GuDingZiChan/backend/src/controllers/barcodeController.ts
2026-03-10 16:19:47 +08:00

104 lines
3.2 KiB
TypeScript

import { Request, Response } from 'express'
import prisma from '../utils/prisma'
import { successResponse, errorResponse } from '../utils/response'
// 获取资产信息用于生成条码(条码在前端生成)
export const getEquipmentForBarcode = async (req: Request, res: Response) => {
try {
const { equipment_code } = req.params
const equipment = await prisma.equipment.findUnique({
where: { equipment_code },
select: {
id: true,
equipment_code: true,
equipment_name: true,
equipment_model: true,
equipment_type: true
}
})
if (!equipment) {
return errorResponse(res, '资产不存在', 404)
}
successResponse(res, {
equipment_code: equipment.equipment_code,
equipment_name: equipment.equipment_name,
equipment_model: equipment.equipment_model,
equipment_type: equipment.equipment_type
}, '获取成功')
} catch (error: any) {
errorResponse(res, error.message || '获取资产信息失败')
}
}
// 批量获取资产信息用于生成条码
export const getEquipmentBatchForBarcode = async (req: Request, res: Response) => {
try {
const { equipment_ids } = req.body
// 使用 select 明确指定所有需要的字段,包括关联数据
const equipmentList = await prisma.equipment.findMany({
where: {
id: {
in: equipment_ids.map((id: number) => Number(id))
}
},
select: {
id: true,
equipment_code: true,
equipment_name: true,
equipment_model: true,
equipment_type: true,
storage_location_id: true,
storageLocation: {
select: {
id: true,
name: true,
code: true
}
}
}
})
// 调试:打印原始查询结果
console.log('条码打印 - 原始查询结果:', JSON.stringify(equipmentList, null, 2))
equipmentList.forEach((eq, index) => {
console.log(`原始资产 ${index + 1} (ID: ${eq.id}):`, {
name: eq.equipment_name,
storage_location_id: eq.storage_location_id,
storageLocation: eq.storageLocation,
allKeys: Object.keys(eq)
})
})
// 直接返回查询结果,不需要再次映射
const result = equipmentList.map(eq => ({
id: eq.id,
equipment_code: eq.equipment_code,
equipment_name: eq.equipment_name,
equipment_model: eq.equipment_model,
equipment_type: eq.equipment_type,
storage_location_id: eq.storage_location_id,
storageLocation: eq.storageLocation
}))
// 调试:打印返回的数据
console.log('条码打印 - 最终返回结果:', JSON.stringify(result, null, 2))
result.forEach((eq, index) => {
console.log(`资产 ${index + 1} (ID: ${eq.id}):`, {
name: eq.equipment_name,
storage_location_id: eq.storage_location_id,
storageLocation: eq.storageLocation
})
})
successResponse(res, result, '获取成功')
} catch (error: any) {
console.error('批量获取资产信息失败:', error)
errorResponse(res, error.message || '批量获取资产信息失败')
}
}