186 lines
4.9 KiB
JavaScript
186 lines
4.9 KiB
JavaScript
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
|
||
}; |