QR코드 다중 필드 JSON 및 모든 행 포함 기능 추가

This commit is contained in:
dohyeons
2025-12-22 13:36:42 +09:00
parent acc867e38d
commit 2b912105a8
5 changed files with 313 additions and 32 deletions

View File

@@ -1443,13 +1443,66 @@ export class ReportController {
// 바코드 값 결정 (쿼리 바인딩 또는 고정값)
let barcodeValue = component.barcodeValue || "SAMPLE123";
if (component.barcodeFieldName && component.queryId && queryResultsMapRef[component.queryId]) {
// QR코드 다중 필드 모드
if (
barcodeType === "QR" &&
component.qrUseMultiField &&
component.qrDataFields &&
component.qrDataFields.length > 0 &&
component.queryId &&
queryResultsMapRef[component.queryId]
) {
const qResult = queryResultsMapRef[component.queryId];
if (qResult.rows && qResult.rows.length > 0) {
const row = qResult.rows[0];
const val = row[component.barcodeFieldName];
if (val !== null && val !== undefined) {
barcodeValue = String(val);
// 모든 행 포함 모드
if (component.qrIncludeAllRows) {
const allRowsData: Record<string, string>[] = [];
qResult.rows.forEach((row) => {
const rowData: Record<string, string> = {};
component.qrDataFields!.forEach((field: { fieldName: string; label: string }) => {
if (field.fieldName && field.label) {
const val = row[field.fieldName];
rowData[field.label] = val !== null && val !== undefined ? String(val) : "";
}
});
allRowsData.push(rowData);
});
barcodeValue = JSON.stringify(allRowsData);
} else {
// 단일 행 (첫 번째 행만)
const row = qResult.rows[0];
const jsonData: Record<string, string> = {};
component.qrDataFields.forEach((field: { fieldName: string; label: string }) => {
if (field.fieldName && field.label) {
const val = row[field.fieldName];
jsonData[field.label] = val !== null && val !== undefined ? String(val) : "";
}
});
barcodeValue = JSON.stringify(jsonData);
}
}
}
// 단일 필드 바인딩
else if (component.barcodeFieldName && component.queryId && queryResultsMapRef[component.queryId]) {
const qResult = queryResultsMapRef[component.queryId];
if (qResult.rows && qResult.rows.length > 0) {
// QR코드 + 모든 행 포함
if (barcodeType === "QR" && component.qrIncludeAllRows) {
const allValues = qResult.rows
.map((row) => {
const val = row[component.barcodeFieldName!];
return val !== null && val !== undefined ? String(val) : "";
})
.filter((v) => v !== "");
barcodeValue = JSON.stringify(allValues);
} else {
// 단일 행 (첫 번째 행만)
const row = qResult.rows[0];
const val = row[component.barcodeFieldName];
if (val !== null && val !== undefined) {
barcodeValue = String(val);
}
}
}
}