186 lines
4.9 KiB
JavaScript
Raw Normal View History

2025-10-22 14:08:03 +08:00
const db = require('../config/database');
// 执行定价查询
const executePricingQuery = async (req, res) => {
try {
const { packId, packType, labels } = req.body;
if (!packId || !packType) {
return res.status(400).json({
success: false,
message: '缺少必要参数packId 和 packType'
});
}
// 根据实际业务需求的定价查询
// 这里假设你有一个包含定价信息的表
const query = `
SELECT
* ,
case when category1_name = '面料Fabric'then category3_name
when category1_name = '辅料Trims' then category2_name
else null
end as 品类属性
FROM
t_pricing a
INNER JOIN t_pack_pricing_bom b ON a.pack_id = b.foreign_id
LEFT JOIN t_basicsdatum_material c ON b.material_code = c.material_code and c.del_flag = '0'
WHERE
a.pack_id = ?
AND b.pack_type = ?
AND b.del_flag = '0'
AND c.category1_name IN ('面料Fabric', '辅料Trims')
`;
const results = await db.executeQuery(query, [packId, packType]);
res.json({
success: true,
data: results.data,
count: results.count,
message: '定价查询成功'
});
} catch (error) {
console.error('定价查询错误:', error);
res.status(500).json({
success: false,
message: '定价查询失败',
error: error.message
});
}
};
// 执行二次工艺查询
const executeSecondaryProcessQuery = async (req, res) => {
try {
const { packId, packType, labels } = req.body;
if (!packId || !packType) {
return res.status(400).json({
success: false,
message: '缺少必要参数packId 和 packType'
});
}
// 二次工艺查询 - 查询包装的后续加工工艺
const query = `
SELECT
*
FROM
t_pack_pricing_other_costs
WHERE
foreign_id = ?
AND pack_type = ?
AND del_flag = '0'
`;
const results = await db.executeQuery(query, [packId, packType]);
res.json({
success: true,
data: results.data,
count: results.count,
message: '二次工艺查询成功'
});
} catch (error) {
console.error('二次工艺查询错误:', error);
res.status(500).json({
success: false,
message: '二次工艺查询失败',
error: error.message
});
}
};
// 执行定价详情查询
const executePricingDetailsQuery = async (req, res) => {
try {
const { packId, packType, labels } = req.body;
if (!packId) {
return res.status(400).json({
success: false,
message: '缺少必要参数packId'
});
}
// 定价详情查询 - 包含成本分解和详细信息
const query = `
SELECT
a.pack_id,
b.calc_item_val ->> '$."倍率"' AS 倍率,
b.calc_item_val ->> '$."加工费"' AS 加工费,
(b.calc_item_val ->> '$."倍率"'*b.calc_item_val ->> '$."加工费"') as 总价
FROM t_pricing a
LEFT JOIN t_pack_pricing b
ON a.pack_id = b.foreign_id
AND a.pack_type = b.pack_type
AND a.del_flag = '0'
AND b.del_flag = '0'
AND a.color_code = b.color_code
AND a.pack_type = 'packPricing'
AND a.pack_id = ?
WHERE b.id IS NOT NULL
`;
const results = await db.executeQuery(query, [packId]);
res.json({
success: true,
data: results.data,
count: results.count,
message: '定价详情查询成功'
});
} catch (error) {
console.error('定价详情查询错误:', error);
res.status(500).json({
success: false,
message: '定价详情查询失败',
error: error.message
});
}
};
// 获取数据表统计
const getTableStats = async (req, res) => {
try {
// 获取各表的统计信息
const queries = [
'SELECT COUNT(*) as pricing_count FROM pricing_data',
'SELECT COUNT(*) as secondary_process_count FROM secondary_process',
'SELECT COUNT(*) as pricing_details_count FROM pricing_details'
];
const results = await Promise.all(
queries.map(async (query) => {
const result = await db.executeQuery(query);
return result.data;
})
);
res.json({
success: true,
data: {
pricing_count: results[0][0]?.pricing_count || 0,
secondary_process_count: results[1][0]?.secondary_process_count || 0,
pricing_details_count: results[2][0]?.pricing_details_count || 0,
last_updated: new Date().toISOString()
},
message: '统计查询成功'
});
} catch (error) {
console.error('统计查询错误:', error);
res.status(500).json({
success: false,
message: '统计查询失败',
error: error.message
});
}
};
module.exports = {
executePricingQuery,
executeSecondaryProcessQuery,
executePricingDetailsQuery,
getTableStats
};