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