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 || '批量获取资产信息失败') } }