feat: record group weight and allprice (#431)

Reviewed-on: daoyoucloud/tachycode#431
Reviewed-by: sealday <zhanglin@daoyoucloud.com>
Co-authored-by: hello@lv <2256334253@qq.com>
Co-committed-by: hello@lv <2256334253@qq.com>
This commit is contained in:
hello@lv 2024-03-19 19:06:47 +08:00 committed by sealday
parent 486b51f2aa
commit 23fe420cf0

View File

@ -90,6 +90,58 @@ export class RecordPreviewController {
})); }));
} }
} }
@Action('allweight')
async groupWeight(ctx: Context) {
const { filter } = ctx.action.params.values;
const { sequelize } = ctx.db;
const records = await ctx.db.getRepository('records').find({
filter,
attributes: [
[sequelize.fn('sum', sequelize.col('records.weight')), 'weight'],
[sequelize.col('records.movement'), 'movement'],
],
group: [sequelize.col('records.movement')],
});
const inNum = records.find((item) => item.movement === Movement.in)?.weight ?? 0;
const outNum = records.find((item) => item.movement === Movement.out)?.weight ?? 0;
const data = [
{
label: '实际重量(吨)',
value: {
labels: ['出库数量(吨)', '入库数量(吨)', '小计(吨)'],
values: [outNum, inNum, inNum - outNum],
},
},
];
ctx.body = data;
}
@Action('allprice')
async groupPrice(ctx: Context) {
const { filter } = ctx.action.params.values;
const { sequelize } = ctx.db;
const records = await ctx.db.getRepository('records').find({
filter,
attributes: [
[sequelize.fn('sum', sequelize.col('records.all_price')), 'all_price'],
[sequelize.col('records.movement'), 'movement'],
],
group: [sequelize.col('records.movement')],
});
const inNum = records.find((item) => item.movement === Movement.in)?.all_price ?? 0;
const outNum = records.find((item) => item.movement === Movement.out)?.all_price ?? 0;
const data = [
{
label: '总金额',
value: {
labels: ['收入', '支出', '小计'],
values: [outNum, inNum, outNum - inNum],
},
},
];
ctx.body = data;
}
@Action('pdf') @Action('pdf')
async printPreview(ctx: Context) { async printPreview(ctx: Context) {