初次提交代码

This commit is contained in:
2026-05-27 14:12:10 +08:00
parent 321aa5b319
commit ca32aa87e7
88 changed files with 19000 additions and 1 deletions

View File

@@ -0,0 +1,93 @@
const { PrismaClient } = require('@prisma/client');
const prisma = new PrismaClient();
function splitProjectNumbers(value) {
return String(value ?? '')
.split(/[,,、\s]+/)
.map((s) => s.trim())
.filter(Boolean);
}
async function main() {
const project = 'DJ202500868';
const rows = await prisma.invoice_application_match_view.findMany({
where: { projectNumber: { contains: project } },
select: {
dataId: true,
invoiceJobNumber: true,
projectNumber: true,
yuJiBaoXiaoDiSanFangChengBenYuan: true,
kai_piao_ri_qi: true,
},
});
const filtered = rows.filter((r) => splitProjectNumbers(r.projectNumber).includes(project));
const dataIds = [...new Set(filtered.map((r) => r.dataId).filter(Boolean))];
const details =
dataIds.length > 0
? await prisma.invoice_amount_details.findMany({
where: {
dataid: { in: dataIds },
project_number: project,
},
select: {
dataid: true,
project_number: true,
invoice_amount: true,
yu_ji_bao_xiao_di_san_fang_cheng_ben: true,
},
})
: [];
const mainByDataId = dataIds.map((id) => {
const arr = filtered.filter((r) => r.dataId === id);
const uniqueMainThirdParty = [...new Set(arr.map((r) => String(r.yuJiBaoXiaoDiSanFangChengBenYuan ?? '')).filter(Boolean))];
const detailThirdPartyRaw = details
.filter((d) => d.dataid === id)
.map((d) => String(d.yu_ji_bao_xiao_di_san_fang_cheng_ben ?? ''))
.filter((s) => s !== '');
return {
dataId: id,
mainCount: arr.length,
uniqueMainThirdParty,
detailRows: details.filter((d) => d.dataid === id).length,
detailThirdPartyRaw,
};
});
const mainDedupByInvoiceKey = new Map();
filtered.forEach((r) => {
const key = `${r.dataId || ''}||${r.invoiceJobNumber || ''}`;
if (!mainDedupByInvoiceKey.has(key)) {
mainDedupByInvoiceKey.set(key, Number(r.yuJiBaoXiaoDiSanFangChengBenYuan || 0));
}
});
const mainTotal = [...mainDedupByInvoiceKey.values()].reduce((s, n) => s + n, 0);
const detailTotal = details.reduce((s, r) => s + Number(r.yu_ji_bao_xiao_di_san_fang_cheng_ben || 0), 0);
console.log(
JSON.stringify(
{
project,
filteredCount: filtered.length,
dataIds,
mainByDataId,
mainTotal,
detailTotal,
},
null,
2
)
);
}
main()
.catch((e) => {
console.error(e);
process.exitCode = 1;
})
.finally(async () => {
await prisma.$disconnect();
});