feat: restore source parity and harden agent runtime
This commit is contained in:
@@ -0,0 +1,51 @@
|
||||
# JNPF Univer 报表对标差异说明
|
||||
|
||||
## 已对齐
|
||||
|
||||
| 能力 | JNPF | ZQ |
|
||||
|------|------|-----|
|
||||
| 列表向下扩展 | `polymerizationType=1` | `polymerize._poly_list` |
|
||||
| 分组 / 相邻分组 | `2` + `groupType` | `polymerize._poly_group` |
|
||||
| 汇总 | `3` + `summaryType` | `polymerize._poly_summary` |
|
||||
| 左/上父格 | `leftParentType` / `topParentType` | `parent_cells.py` |
|
||||
| 字段映射 | `fieldMapping` | `dataset_transform.apply_field_mapping` |
|
||||
| 转换规则 | `convertConfig` select/date/number | `dataset_transform.apply_convert_rules` |
|
||||
| convert 全类型 | user/dept/org/role/dict | `convert_lookup.py` |
|
||||
| 分栏布局 | `f_fence_list` | `column_layout`(优先 `fence_list`) |
|
||||
| 服务端水印 | preview 解析 showTime | `watermark.py` + `watermark` 响应字段 |
|
||||
| Excel 导出 | merge/样式/尺寸/页眉水印/条件格式/超链接/图片 | `export_excel.py` + `export_excel_extras.py` |
|
||||
| 导出权限 | `allow_export` | `export-excel` 接口强制校验 |
|
||||
| parameterData | 系统变量 HTTP | `parameter_resolver.py` 本地合并 |
|
||||
| PDF 导出 | 部分用打印 | `export_pdf.py` |
|
||||
| 扩展合并单元格 | merge 重算 | `merge_recalc.py` |
|
||||
| fillDirection | portrait/landscape | `data_expand._expand_direction` |
|
||||
| displayType | qrCode/jsbarcode | 设计器保存 + 引擎识别 |
|
||||
|
||||
## JNPF DB 真实样例 Golden(2026-05-23)
|
||||
|
||||
从 `jnpf-database-v6x/MySQL/jnpf_db_init.sql` 提取,脚本:
|
||||
|
||||
```bash
|
||||
cd backend-fastapi
|
||||
python -m online_dev.report_manager.engine.fixtures.extract_jnpf_fixtures
|
||||
```
|
||||
|
||||
| Fixture | JNPF 模板 | 场景 |
|
||||
|---------|-----------|------|
|
||||
| `golden_jnpf_db_user_list.json` | 人员花名册(列表) | 列表 portrait 扩展 |
|
||||
| `golden_jnpf_db_user_group.json` | 人员花名册(分组) | 分组 polymerizationType=2 |
|
||||
| `golden_jnpf_db_user_matrix.json` | 人员花名册(行列) | landscape + portrait 混合 |
|
||||
|
||||
## 已知差异 / 待补
|
||||
|
||||
| 项 | 说明 | 优先级 |
|
||||
|----|------|--------|
|
||||
| report_run_log | 未实现 | P3 |
|
||||
| App 菜单发布 | 范围外 | — |
|
||||
| 独立报表微服务 | JNPF :32000,ZQ 单体 | 架构差异,保持 |
|
||||
|
||||
## Golden 样例来源
|
||||
|
||||
- 手写对标:`golden_jnpf_*.json`(引擎单元场景)
|
||||
- 生产 DB 提取:`golden_jnpf_db_*.json`(真实 snapshot/cells 结构)
|
||||
- 转换规则占位:`golden_jnpf_prod_*.json`
|
||||
@@ -0,0 +1,61 @@
|
||||
# Golden Test Fixtures
|
||||
|
||||
运行:`python -m online_dev.report_manager.engine.test_golden`
|
||||
|
||||
## 格式
|
||||
|
||||
```json
|
||||
{
|
||||
"name": "用例名",
|
||||
"snapshot": { "sheets": { ... } },
|
||||
"cells": { "cells": [ ... ] },
|
||||
"datasets": { "别名": [ { ... } ] },
|
||||
"params": {},
|
||||
"column_list": [],
|
||||
"expect": {
|
||||
"sheet1": { "行,列": "期望值" }
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## Golden 样例(23 fixtures)
|
||||
|
||||
运行后应输出 `ok (23 fixtures)`。
|
||||
|
||||
### JNPF DB 真实样例
|
||||
|
||||
从 JNPF `jnpf_db_init.sql` 提取(人员花名册 列表/分组/行列):
|
||||
|
||||
```bash
|
||||
cd backend-fastapi
|
||||
python -m online_dev.report_manager.engine.fixtures.extract_jnpf_fixtures
|
||||
```
|
||||
|
||||
| 文件 | 场景 |
|
||||
|------|------|
|
||||
| `golden_jnpf_db_user_list.json` | 列表 portrait |
|
||||
| `golden_jnpf_db_user_group.json` | 分组 |
|
||||
| `golden_jnpf_db_user_matrix.json` | 行列 landscape |
|
||||
|
||||
手写对标样例仍放在 `golden_jnpf_*.json` / `golden_*.json`,
|
||||
在 `expect` 中填写本引擎 `transform()` 后应对的单元格值。
|
||||
|
||||
参考样例:`golden_jnpf_style.json`(参数 + 双列列表 + 占位符)。
|
||||
|
||||
## 阶段说明
|
||||
|
||||
| 阶段 | 能力 |
|
||||
|------|------|
|
||||
| 已完成 | transform 流水线、分栏、表达式、图表 chartData、fillEmptyRows |
|
||||
| Phase 8 | 父格拓扑扩展、`polymerizationType`、JNPF golden、图表拾色器 |
|
||||
| Phase 8+ | 跨行上父格、全表 `row_registry`、`parent_scoped` 子格数据切片 |
|
||||
|
||||
## JNPF 父格 Golden
|
||||
|
||||
| 文件 | 场景 |
|
||||
|------|------|
|
||||
| `golden_jnpf_parent_group.json` | 左父格 + 分组/列表 |
|
||||
| `golden_jnpf_top_parent.json` | 同行上父格链(年→月→金额) |
|
||||
| `golden_jnpf_cross_row.json` | 跨行上父格(同列子格优先显示) |
|
||||
| `golden_jnpf_poly_summary.json` | 汇总格 |
|
||||
| `golden_jnpf_export_list.json` | 字符串行列 + fillDirection |
|
||||
@@ -0,0 +1,327 @@
|
||||
#!/usr/bin/env python
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
从 JNPF jnpf_db_init.sql 提取 report_version 真实样例,生成 ZQ Golden fixture。
|
||||
|
||||
用法(在 backend-fastapi 目录):
|
||||
python -m online_dev.report_manager.engine.fixtures.extract_jnpf_fixtures
|
||||
python -m online_dev.report_manager.engine.fixtures.extract_jnpf_fixtures --sql /path/to/jnpf_db_init.sql
|
||||
"""
|
||||
from __future__ import annotations
|
||||
|
||||
import argparse
|
||||
import json
|
||||
import re
|
||||
from pathlib import Path
|
||||
from typing import Any, Dict, List, Optional, Tuple
|
||||
|
||||
from online_dev.report_manager.engine.convert import transform
|
||||
|
||||
DEFAULT_SQL = Path(
|
||||
"/Users/zcl/Project/JZKJ/lowcode6.2.x/6.2.x/jnpf-database-v6x/MySQL/jnpf_db_init.sql"
|
||||
)
|
||||
OUT_DIR = Path(__file__).parent
|
||||
|
||||
# version_id -> (slug, template_name, dataset_alias, max_rows)
|
||||
TARGET_VERSIONS: List[Tuple[str, str, str, str, int]] = [
|
||||
("623183857306304837", "jnpf_db_user_list", "人员花名册(列表)", "user", 8),
|
||||
("623200369010278981", "jnpf_db_user_group", "人员花名册(分组)", "user", 8),
|
||||
("623204233562292805", "jnpf_db_user_matrix", "人员花名册(行列)", "report_user", 6),
|
||||
]
|
||||
|
||||
|
||||
def parse_sql_values(line: str) -> List[Any]:
|
||||
start = line.index("VALUES (") + len("VALUES (")
|
||||
fields: List[Any] = []
|
||||
i, n = start, len(line)
|
||||
while i < n:
|
||||
c = line[i]
|
||||
if c == "'":
|
||||
i += 1
|
||||
buf: List[str] = []
|
||||
while i < n:
|
||||
if line[i] == "\\" and i + 1 < n:
|
||||
nxt = line[i + 1]
|
||||
if nxt == "\\":
|
||||
buf.append("\\")
|
||||
i += 2
|
||||
elif nxt == "'":
|
||||
buf.append("'")
|
||||
i += 2
|
||||
elif nxt == '"':
|
||||
buf.append('"')
|
||||
i += 2
|
||||
elif nxt == "n":
|
||||
buf.append("\n")
|
||||
i += 2
|
||||
elif nxt == "r":
|
||||
buf.append("\r")
|
||||
i += 2
|
||||
elif nxt == "t":
|
||||
buf.append("\t")
|
||||
i += 2
|
||||
else:
|
||||
buf.append(nxt)
|
||||
i += 2
|
||||
elif line[i] == "'" and i + 1 < n and line[i + 1] == "'":
|
||||
buf.append("'")
|
||||
i += 2
|
||||
elif line[i] == "'":
|
||||
i += 1
|
||||
break
|
||||
else:
|
||||
buf.append(line[i])
|
||||
i += 1
|
||||
fields.append("".join(buf))
|
||||
elif c in " \t\n\r":
|
||||
i += 1
|
||||
elif c == ",":
|
||||
i += 1
|
||||
elif c.isdigit() or c == "-":
|
||||
j = i
|
||||
while j < n and line[j] not in ",)":
|
||||
j += 1
|
||||
fields.append(line[i:j].strip())
|
||||
i = j
|
||||
elif c == "N" and line[i : i + 4] == "NULL":
|
||||
fields.append(None)
|
||||
i += 4
|
||||
elif c == ")":
|
||||
break
|
||||
else:
|
||||
i += 1
|
||||
return fields
|
||||
|
||||
|
||||
def _load_sql_lines(sql_path: Path) -> List[str]:
|
||||
return sql_path.read_text(encoding="utf-8").splitlines()
|
||||
|
||||
|
||||
def _parse_users(lines: List[str]) -> List[dict]:
|
||||
users: List[dict] = []
|
||||
for line in lines:
|
||||
if not line.startswith("INSERT INTO `report_user`"):
|
||||
continue
|
||||
f = parse_sql_values(line)
|
||||
users.append(
|
||||
{
|
||||
"username": f[1],
|
||||
"education": f[2],
|
||||
"sex": f[3],
|
||||
"salary": float(f[4]),
|
||||
"departmentnum": f[5],
|
||||
}
|
||||
)
|
||||
return users
|
||||
|
||||
|
||||
def _parse_departments(lines: List[str]) -> Dict[str, dict]:
|
||||
by_num: Dict[str, dict] = {}
|
||||
for line in lines:
|
||||
if not line.startswith("INSERT INTO `report_department`"):
|
||||
continue
|
||||
f = parse_sql_values(line)
|
||||
by_num[str(f[2])] = {
|
||||
"organizationName": f[3],
|
||||
"departmentName": f[1],
|
||||
"departmentNum": f[2],
|
||||
}
|
||||
return by_num
|
||||
|
||||
|
||||
def _build_user_dataset(users: List[dict], depts: Dict[str, dict], limit: int) -> List[dict]:
|
||||
rows: List[dict] = []
|
||||
for u in users[:limit]:
|
||||
d = depts.get(u["departmentnum"], {})
|
||||
rows.append(
|
||||
{
|
||||
"orgname": d.get("organizationName", ""),
|
||||
"depName": d.get("departmentName", ""),
|
||||
"education": u["education"],
|
||||
"sex": u["sex"],
|
||||
"username": u["username"],
|
||||
"salary": u["salary"],
|
||||
}
|
||||
)
|
||||
return rows
|
||||
|
||||
|
||||
def _build_report_user_dataset(users: List[dict], depts: Dict[str, dict], limit: int) -> List[dict]:
|
||||
rows: List[dict] = []
|
||||
for u in users[:limit]:
|
||||
d = depts.get(u["departmentnum"], {})
|
||||
rows.append(
|
||||
{
|
||||
**u,
|
||||
"organizationName": d.get("organizationName", ""),
|
||||
"departmentName": d.get("departmentName", ""),
|
||||
}
|
||||
)
|
||||
return rows
|
||||
|
||||
|
||||
def _find_version_line(lines: List[str], version_id: str) -> Optional[str]:
|
||||
for line in lines:
|
||||
if f"'{version_id}'" in line and "INSERT INTO `report_version`" in line:
|
||||
return line
|
||||
return None
|
||||
|
||||
|
||||
def _trim_snapshot(snapshot: dict, cells: dict, keep_rows: int = 30) -> dict:
|
||||
"""保留绑定相关行,剥离 styles/resources 等大字段,减小 fixture 体积。"""
|
||||
binding_rows: set[int] = set()
|
||||
for cell in cells.get("cells") or []:
|
||||
try:
|
||||
binding_rows.add(int(cell.get("row", 0)))
|
||||
except (TypeError, ValueError):
|
||||
pass
|
||||
max_row = max(binding_rows) if binding_rows else 10
|
||||
max_row = min(max_row + len(binding_rows) + 5, keep_rows)
|
||||
|
||||
sheet_order = snapshot.get("sheetOrder") or []
|
||||
sheets_out: Dict[str, Any] = {}
|
||||
for sid in sheet_order:
|
||||
sheet = (snapshot.get("sheets") or {}).get(sid) or {}
|
||||
cell_data = sheet.get("cellData") or {}
|
||||
trimmed: Dict[str, Any] = {}
|
||||
for rk, row in cell_data.items():
|
||||
if int(rk) <= max_row:
|
||||
trimmed[rk] = row
|
||||
sheets_out[sid] = {
|
||||
"id": sid,
|
||||
"cellData": trimmed,
|
||||
}
|
||||
if sheet.get("mergeData"):
|
||||
sheets_out[sid]["mergeData"] = sheet["mergeData"]
|
||||
|
||||
return {
|
||||
"id": snapshot.get("id") or "_workbook",
|
||||
"sheetOrder": list(sheet_order),
|
||||
"sheets": sheets_out,
|
||||
}
|
||||
|
||||
|
||||
def _collect_expect(out_snapshot: dict, cells: dict, max_rows: int = 30) -> Dict[str, Dict[str, str]]:
|
||||
data_cells = [c for c in (cells.get("cells") or []) if c.get("type") == "dataSource"]
|
||||
if not data_cells:
|
||||
return {}
|
||||
|
||||
sheet_ids = {str(c.get("sheet")) for c in data_cells}
|
||||
cols: set[int] = set()
|
||||
start_row = 9999
|
||||
for c in data_cells:
|
||||
cols.add(int(c.get("col", 0)))
|
||||
start_row = min(start_row, int(c.get("row", 0)))
|
||||
|
||||
expect: Dict[str, Dict[str, str]] = {}
|
||||
for sid in sheet_ids:
|
||||
sheet = (out_snapshot.get("sheets") or {}).get(sid) or {}
|
||||
cell_data = sheet.get("cellData") or {}
|
||||
expect[sid] = {}
|
||||
for rk, row in cell_data.items():
|
||||
ri = int(rk)
|
||||
if ri < start_row or ri > max_rows:
|
||||
continue
|
||||
for ck, cell in row.items():
|
||||
ci = int(ck)
|
||||
if ci not in cols:
|
||||
continue
|
||||
v = cell.get("v")
|
||||
if v is None or v == "":
|
||||
continue
|
||||
expect[sid][f"{ri},{ci}"] = str(v)
|
||||
return expect
|
||||
|
||||
|
||||
def _parse_json_field(raw: Any) -> Any:
|
||||
if raw is None or raw == "NULL":
|
||||
return None
|
||||
if isinstance(raw, (dict, list)):
|
||||
return raw
|
||||
s = str(raw).strip()
|
||||
if not s:
|
||||
return None
|
||||
return json.loads(s)
|
||||
|
||||
|
||||
def build_fixture(
|
||||
lines: List[str],
|
||||
version_id: str,
|
||||
slug: str,
|
||||
template_name: str,
|
||||
dataset_alias: str,
|
||||
row_limit: int,
|
||||
) -> dict:
|
||||
line = _find_version_line(lines, version_id)
|
||||
if not line:
|
||||
raise ValueError(f"report_version {version_id} not found in SQL")
|
||||
|
||||
fields = parse_sql_values(line)
|
||||
cells = json.loads(fields[4])
|
||||
snapshot = json.loads(fields[5])
|
||||
convert_config = _parse_json_field(fields[7])
|
||||
sort_list = _parse_json_field(fields[19])
|
||||
fence_list = _parse_json_field(fields[21]) or _parse_json_field(fields[20])
|
||||
|
||||
users = _parse_users(lines)
|
||||
depts = _parse_departments(lines)
|
||||
if dataset_alias == "report_user":
|
||||
dataset_rows = _build_report_user_dataset(users, depts, row_limit)
|
||||
else:
|
||||
dataset_rows = _build_user_dataset(users, depts, row_limit)
|
||||
|
||||
trimmed_snapshot = _trim_snapshot(snapshot, cells)
|
||||
datasets = {dataset_alias: dataset_rows}
|
||||
out = transform(
|
||||
trimmed_snapshot,
|
||||
cells,
|
||||
datasets,
|
||||
{},
|
||||
column_list=None,
|
||||
fence_list=fence_list,
|
||||
)
|
||||
expect = _collect_expect(out, cells)
|
||||
|
||||
fixture: dict = {
|
||||
"name": slug,
|
||||
"comment": f"JNPF DB 真实样例: {template_name} (version {version_id})",
|
||||
"jnpf_version_id": version_id,
|
||||
"snapshot": trimmed_snapshot,
|
||||
"cells": cells,
|
||||
"datasets": datasets,
|
||||
"params": {},
|
||||
"expect": expect,
|
||||
}
|
||||
if convert_config:
|
||||
fixture["convert_config"] = convert_config
|
||||
if fence_list:
|
||||
fixture["fence_list"] = fence_list
|
||||
if sort_list:
|
||||
fixture["sort_list"] = sort_list
|
||||
return fixture
|
||||
|
||||
|
||||
def main() -> None:
|
||||
parser = argparse.ArgumentParser(description="Extract JNPF report_version golden fixtures")
|
||||
parser.add_argument("--sql", type=Path, default=DEFAULT_SQL, help="jnpf_db_init.sql path")
|
||||
parser.add_argument("--out-dir", type=Path, default=OUT_DIR, help="output directory")
|
||||
args = parser.parse_args()
|
||||
|
||||
if not args.sql.is_file():
|
||||
raise SystemExit(f"SQL file not found: {args.sql}")
|
||||
|
||||
lines = _load_sql_lines(args.sql)
|
||||
written: List[str] = []
|
||||
for version_id, slug, template_name, alias, limit in TARGET_VERSIONS:
|
||||
fixture = build_fixture(lines, version_id, slug, template_name, alias, limit)
|
||||
out_path = args.out_dir / f"golden_{slug}.json"
|
||||
with open(out_path, "w", encoding="utf-8") as f:
|
||||
json.dump(fixture, f, ensure_ascii=False, indent=2)
|
||||
written.append(out_path.name)
|
||||
print(f"wrote {out_path.name} ({len(fixture['expect'].get(list(fixture['expect'])[0], {}))} expect cells)")
|
||||
|
||||
print(f"done: {len(written)} fixtures")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
+42
@@ -0,0 +1,42 @@
|
||||
{
|
||||
"name": "column_col_type1_max_col",
|
||||
"snapshot": {
|
||||
"sheetOrder": ["sheet1"],
|
||||
"sheets": {
|
||||
"sheet1": {
|
||||
"id": "sheet1",
|
||||
"cellData": {
|
||||
"0": { "0": { "v": "1" } },
|
||||
"1": { "0": { "v": "2" } },
|
||||
"2": { "0": { "v": "3" } },
|
||||
"3": { "0": { "v": "4" } },
|
||||
"4": { "0": { "v": "5" } }
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"cells": { "cells": [] },
|
||||
"datasets": {},
|
||||
"params": {},
|
||||
"column_list": [
|
||||
{
|
||||
"sheet": "sheet1",
|
||||
"columnList": {
|
||||
"columnState": true,
|
||||
"columnStyle": "col",
|
||||
"columnType": "1",
|
||||
"maxCol": 2,
|
||||
"columnData": "A1:A5"
|
||||
}
|
||||
}
|
||||
],
|
||||
"expect": {
|
||||
"sheet1": {
|
||||
"0,0": "1",
|
||||
"1,0": "2",
|
||||
"0,1": "3",
|
||||
"1,1": "4",
|
||||
"0,2": "5"
|
||||
}
|
||||
}
|
||||
}
|
||||
+40
@@ -0,0 +1,40 @@
|
||||
{
|
||||
"name": "column_col_type2",
|
||||
"snapshot": {
|
||||
"sheetOrder": ["sheet1"],
|
||||
"sheets": {
|
||||
"sheet1": {
|
||||
"id": "sheet1",
|
||||
"cellData": {
|
||||
"1": { "0": { "v": "a" } },
|
||||
"2": { "0": { "v": "b" } },
|
||||
"3": { "0": { "v": "c" } },
|
||||
"4": { "0": { "v": "d" } }
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"cells": { "cells": [] },
|
||||
"datasets": {},
|
||||
"params": {},
|
||||
"column_list": [
|
||||
{
|
||||
"sheet": "sheet1",
|
||||
"columnList": {
|
||||
"columnState": true,
|
||||
"columnStyle": "col",
|
||||
"columnType": "2",
|
||||
"rowCount": 2,
|
||||
"columnData": "A2:A5"
|
||||
}
|
||||
}
|
||||
],
|
||||
"expect": {
|
||||
"sheet1": {
|
||||
"1,0": "a",
|
||||
"2,0": "b",
|
||||
"1,1": "c",
|
||||
"2,1": "d"
|
||||
}
|
||||
}
|
||||
}
|
||||
+39
@@ -0,0 +1,39 @@
|
||||
{
|
||||
"name": "expression_chain_b1_c1",
|
||||
"snapshot": {
|
||||
"sheets": {
|
||||
"sheet1": {
|
||||
"id": "sheet1",
|
||||
"cellData": {
|
||||
"0": { "0": { "v": "100" }, "1": { "v": "" }, "2": { "v": "" } }
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"cells": {
|
||||
"cells": [
|
||||
{
|
||||
"type": "expression",
|
||||
"sheet": "sheet1",
|
||||
"row": 0,
|
||||
"col": 1,
|
||||
"custom": { "field": "=A1+1" }
|
||||
},
|
||||
{
|
||||
"type": "expression",
|
||||
"sheet": "sheet1",
|
||||
"row": 0,
|
||||
"col": 2,
|
||||
"custom": { "field": "=B1+1" }
|
||||
}
|
||||
]
|
||||
},
|
||||
"datasets": {},
|
||||
"params": {},
|
||||
"expect": {
|
||||
"sheet1": {
|
||||
"0,1": "101",
|
||||
"0,2": "102"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,43 @@
|
||||
{
|
||||
"name": "datasource_fill_empty_rows",
|
||||
"snapshot": {
|
||||
"sheets": {
|
||||
"sheet1": {
|
||||
"id": "sheet1",
|
||||
"cellData": {
|
||||
"1": { "0": { "v": "" } }
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"cells": {
|
||||
"cells": [
|
||||
{
|
||||
"type": "dataSource",
|
||||
"sheet": "sheet1",
|
||||
"row": 1,
|
||||
"col": 0,
|
||||
"custom": {
|
||||
"type": "dataSource",
|
||||
"dataSetName": "items",
|
||||
"field": "name",
|
||||
"expand": "down",
|
||||
"fillEmptyRows": true,
|
||||
"fillEmptyNum": 2
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"datasets": {
|
||||
"items": [{ "name": "A" }, { "name": "B" }]
|
||||
},
|
||||
"params": {},
|
||||
"expect": {
|
||||
"sheet1": {
|
||||
"1,0": "A",
|
||||
"2,0": "B",
|
||||
"3,0": "",
|
||||
"4,0": ""
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,76 @@
|
||||
{
|
||||
"name": "jnpf_cross_row_top_left",
|
||||
"comment": "跨行:年(0,0)分组 → 月(1,0)上父年 → 金额(1,1)左父月;同列时子格覆盖父格显示",
|
||||
"snapshot": {
|
||||
"sheets": {
|
||||
"sheet1": {
|
||||
"id": "sheet1",
|
||||
"cellData": {
|
||||
"0": { "0": { "v": "" }, "1": { "v": "" } },
|
||||
"1": { "0": { "v": "" }, "1": { "v": "" } },
|
||||
"2": { "0": { "v": "" }, "1": { "v": "" } }
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"cells": {
|
||||
"cells": [
|
||||
{
|
||||
"type": "dataSource",
|
||||
"sheet": "sheet1",
|
||||
"row": 0,
|
||||
"col": 0,
|
||||
"custom": {
|
||||
"dataSetName": "sales",
|
||||
"field": "year",
|
||||
"polymerizationType": "2",
|
||||
"expand": "down"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "dataSource",
|
||||
"sheet": "sheet1",
|
||||
"row": 1,
|
||||
"col": 0,
|
||||
"custom": {
|
||||
"dataSetName": "sales",
|
||||
"field": "month",
|
||||
"polymerizationType": "1",
|
||||
"expand": "down",
|
||||
"topParentCellType": "default"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "dataSource",
|
||||
"sheet": "sheet1",
|
||||
"row": 1,
|
||||
"col": 1,
|
||||
"custom": {
|
||||
"dataSetName": "sales",
|
||||
"field": "amount",
|
||||
"polymerizationType": "1",
|
||||
"expand": "down",
|
||||
"leftParentCellType": "default"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"datasets": {
|
||||
"sales": [
|
||||
{ "year": 2023, "month": 1, "amount": 10 },
|
||||
{ "year": 2023, "month": 2, "amount": 20 },
|
||||
{ "year": 2024, "month": 1, "amount": 30 }
|
||||
]
|
||||
},
|
||||
"params": {},
|
||||
"expect": {
|
||||
"sheet1": {
|
||||
"0,0": "1",
|
||||
"1,0": "2",
|
||||
"2,0": "1",
|
||||
"0,1": "10",
|
||||
"1,1": "20",
|
||||
"2,1": "30"
|
||||
}
|
||||
}
|
||||
}
|
||||
+686
@@ -0,0 +1,686 @@
|
||||
{
|
||||
"name": "jnpf_db_user_group",
|
||||
"comment": "JNPF DB 真实样例: 人员花名册(分组) (version 623200369010278981)",
|
||||
"jnpf_version_id": "623200369010278981",
|
||||
"snapshot": {
|
||||
"id": "_cMcfw",
|
||||
"sheetOrder": [
|
||||
"Eh_Jx6bicu3SB2VKA8XcS"
|
||||
],
|
||||
"sheets": {
|
||||
"Eh_Jx6bicu3SB2VKA8XcS": {
|
||||
"id": "Eh_Jx6bicu3SB2VKA8XcS",
|
||||
"cellData": {
|
||||
"0": {
|
||||
"0": {
|
||||
"v": "人员花名册",
|
||||
"s": "VLEizt",
|
||||
"custom": {
|
||||
"leftParentCellType": "default",
|
||||
"leftParentCellCustomRowName": "",
|
||||
"leftParentCellCustomColName": "",
|
||||
"topParentCellType": "default",
|
||||
"topParentCellCustomRowName": "",
|
||||
"topParentCellCustomColName": ""
|
||||
},
|
||||
"t": 1
|
||||
},
|
||||
"1": {
|
||||
"s": "KZ1C-t"
|
||||
},
|
||||
"2": {
|
||||
"s": "KZ1C-t"
|
||||
},
|
||||
"3": {
|
||||
"s": "KZ1C-t"
|
||||
},
|
||||
"4": {
|
||||
"s": "KZ1C-t"
|
||||
},
|
||||
"5": {
|
||||
"s": "lYauvg"
|
||||
},
|
||||
"6": {
|
||||
"s": "-56Kck"
|
||||
}
|
||||
},
|
||||
"1": {
|
||||
"0": {
|
||||
"v": "组织",
|
||||
"t": 1,
|
||||
"s": "vHs82n"
|
||||
},
|
||||
"1": {
|
||||
"v": "部门",
|
||||
"t": 1,
|
||||
"s": "vHs82n"
|
||||
},
|
||||
"2": {
|
||||
"v": "学历",
|
||||
"t": 1,
|
||||
"s": "vHs82n"
|
||||
},
|
||||
"3": {
|
||||
"v": "性别",
|
||||
"t": 1,
|
||||
"s": "vHs82n"
|
||||
},
|
||||
"4": {
|
||||
"v": "姓名",
|
||||
"t": 1,
|
||||
"s": "vHs82n"
|
||||
},
|
||||
"5": {
|
||||
"v": "薪资",
|
||||
"s": "vHs82n",
|
||||
"custom": {
|
||||
"leftParentCellType": "default",
|
||||
"leftParentCellCustomRowName": "",
|
||||
"leftParentCellCustomColName": "",
|
||||
"topParentCellType": "default",
|
||||
"topParentCellCustomRowName": "",
|
||||
"topParentCellCustomColName": ""
|
||||
},
|
||||
"t": 1
|
||||
},
|
||||
"6": {
|
||||
"s": "-56Kck"
|
||||
}
|
||||
},
|
||||
"2": {
|
||||
"0": {
|
||||
"v": "${user.orgname}",
|
||||
"t": 1,
|
||||
"s": "Xk2Rw5",
|
||||
"custom": {
|
||||
"field": "user.orgname",
|
||||
"polymerizationType": "2",
|
||||
"summaryType": "sum",
|
||||
"fillDirection": "portrait",
|
||||
"leftParentCellType": "default",
|
||||
"leftParentCellCustomRowName": "",
|
||||
"leftParentCellCustomColName": "",
|
||||
"topParentCellType": "default",
|
||||
"topParentCellCustomRowName": "",
|
||||
"topParentCellCustomColName": "",
|
||||
"type": "dataSource",
|
||||
"groupType": "default",
|
||||
"displayType": "default"
|
||||
}
|
||||
},
|
||||
"1": {
|
||||
"v": "${user.depName}",
|
||||
"t": 1,
|
||||
"s": "hdQ2ih",
|
||||
"custom": {
|
||||
"field": "user.depName",
|
||||
"polymerizationType": "2",
|
||||
"summaryType": "sum",
|
||||
"fillDirection": "portrait",
|
||||
"leftParentCellType": "default",
|
||||
"leftParentCellCustomRowName": "",
|
||||
"leftParentCellCustomColName": "",
|
||||
"topParentCellType": "default",
|
||||
"topParentCellCustomRowName": "",
|
||||
"topParentCellCustomColName": "",
|
||||
"type": "dataSource",
|
||||
"groupType": "default",
|
||||
"displayType": "default"
|
||||
}
|
||||
},
|
||||
"2": {
|
||||
"v": "${user.education}",
|
||||
"t": 1,
|
||||
"s": "2KKOQW",
|
||||
"custom": {
|
||||
"field": "user.education",
|
||||
"polymerizationType": "2",
|
||||
"summaryType": "sum",
|
||||
"fillDirection": "portrait",
|
||||
"leftParentCellType": "default",
|
||||
"leftParentCellCustomRowName": "",
|
||||
"leftParentCellCustomColName": "",
|
||||
"topParentCellType": "default",
|
||||
"topParentCellCustomRowName": "",
|
||||
"topParentCellCustomColName": "",
|
||||
"type": "dataSource",
|
||||
"groupType": "default",
|
||||
"displayType": "default"
|
||||
}
|
||||
},
|
||||
"3": {
|
||||
"v": "${user.sex}",
|
||||
"t": 1,
|
||||
"s": "4n6jyh",
|
||||
"custom": {
|
||||
"field": "user.sex",
|
||||
"polymerizationType": "2",
|
||||
"summaryType": "sum",
|
||||
"fillDirection": "portrait",
|
||||
"leftParentCellType": "default",
|
||||
"leftParentCellCustomRowName": "",
|
||||
"leftParentCellCustomColName": "",
|
||||
"topParentCellType": "default",
|
||||
"topParentCellCustomRowName": "",
|
||||
"topParentCellCustomColName": "",
|
||||
"type": "dataSource",
|
||||
"groupType": "default",
|
||||
"displayType": "default"
|
||||
}
|
||||
},
|
||||
"4": {
|
||||
"v": "${user.username}",
|
||||
"t": 1,
|
||||
"s": "hdQ2ih",
|
||||
"custom": {
|
||||
"field": "user.username",
|
||||
"polymerizationType": "1",
|
||||
"summaryType": "sum",
|
||||
"fillDirection": "portrait",
|
||||
"leftParentCellType": "default",
|
||||
"leftParentCellCustomRowName": "",
|
||||
"leftParentCellCustomColName": "",
|
||||
"topParentCellType": "default",
|
||||
"topParentCellCustomRowName": "",
|
||||
"topParentCellCustomColName": "",
|
||||
"type": "dataSource",
|
||||
"displayType": "default"
|
||||
}
|
||||
},
|
||||
"5": {
|
||||
"v": "${user.salary}",
|
||||
"t": 1,
|
||||
"s": "d0FA0C",
|
||||
"custom": {
|
||||
"field": "user.salary",
|
||||
"polymerizationType": "1",
|
||||
"summaryType": "sum",
|
||||
"fillDirection": "portrait",
|
||||
"leftParentCellType": "default",
|
||||
"leftParentCellCustomRowName": "",
|
||||
"leftParentCellCustomColName": "",
|
||||
"topParentCellType": "default",
|
||||
"topParentCellCustomRowName": "",
|
||||
"topParentCellCustomColName": "",
|
||||
"type": "dataSource",
|
||||
"displayType": "default"
|
||||
}
|
||||
},
|
||||
"6": {
|
||||
"s": "-56Kck"
|
||||
}
|
||||
},
|
||||
"3": {
|
||||
"0": {
|
||||
"v": "合计:",
|
||||
"t": 1,
|
||||
"s": "-l-j-h"
|
||||
},
|
||||
"1": {
|
||||
"s": "3sqGgY"
|
||||
},
|
||||
"2": {
|
||||
"s": "3sqGgY"
|
||||
},
|
||||
"3": {
|
||||
"s": "3sqGgY"
|
||||
},
|
||||
"4": {
|
||||
"v": "${user.username}",
|
||||
"t": 1,
|
||||
"s": "L9T7Dl",
|
||||
"custom": {
|
||||
"field": "user.username",
|
||||
"polymerizationType": "3",
|
||||
"summaryType": "count",
|
||||
"fillDirection": "portrait",
|
||||
"leftParentCellType": "none",
|
||||
"leftParentCellCustomRowName": "",
|
||||
"leftParentCellCustomColName": "",
|
||||
"topParentCellType": "none",
|
||||
"topParentCellCustomRowName": "",
|
||||
"topParentCellCustomColName": "",
|
||||
"type": "dataSource",
|
||||
"displayType": "default"
|
||||
}
|
||||
},
|
||||
"5": {
|
||||
"v": "${user.salary}",
|
||||
"t": 1,
|
||||
"s": "HPHgPE",
|
||||
"custom": {
|
||||
"field": "user.salary",
|
||||
"polymerizationType": "3",
|
||||
"summaryType": "sum",
|
||||
"fillDirection": "portrait",
|
||||
"leftParentCellType": "none",
|
||||
"leftParentCellCustomRowName": "",
|
||||
"leftParentCellCustomColName": "",
|
||||
"topParentCellType": "none",
|
||||
"topParentCellCustomRowName": "",
|
||||
"topParentCellCustomColName": "",
|
||||
"type": "dataSource",
|
||||
"displayType": "default"
|
||||
}
|
||||
},
|
||||
"6": {
|
||||
"s": "-56Kck"
|
||||
}
|
||||
},
|
||||
"4": {
|
||||
"0": {
|
||||
"v": "",
|
||||
"t": 1,
|
||||
"s": "T9ZVIu"
|
||||
},
|
||||
"1": {
|
||||
"v": "",
|
||||
"t": 1,
|
||||
"s": "T9ZVIu"
|
||||
},
|
||||
"2": {
|
||||
"v": "",
|
||||
"t": 1,
|
||||
"s": "T9ZVIu"
|
||||
},
|
||||
"3": {
|
||||
"v": "",
|
||||
"t": 1,
|
||||
"s": "T9ZVIu"
|
||||
},
|
||||
"4": {
|
||||
"v": "",
|
||||
"t": 1,
|
||||
"s": "T9ZVIu"
|
||||
},
|
||||
"5": {
|
||||
"v": "",
|
||||
"t": 1,
|
||||
"s": "T9ZVIu"
|
||||
}
|
||||
},
|
||||
"5": {
|
||||
"0": {
|
||||
"v": "",
|
||||
"t": 1,
|
||||
"s": "FgxYUY"
|
||||
},
|
||||
"1": {
|
||||
"v": "",
|
||||
"t": 1,
|
||||
"s": "FgxYUY"
|
||||
},
|
||||
"2": {
|
||||
"v": "",
|
||||
"t": 1,
|
||||
"s": "FgxYUY"
|
||||
},
|
||||
"3": {
|
||||
"v": "",
|
||||
"t": 1,
|
||||
"s": "FgxYUY"
|
||||
},
|
||||
"4": {
|
||||
"v": "制表日期:",
|
||||
"t": 1,
|
||||
"s": "UWFE6A"
|
||||
},
|
||||
"5": {
|
||||
"s": "ekE1b4",
|
||||
"f": "=NOW()",
|
||||
"v": 45848.65962962963,
|
||||
"t": 2
|
||||
}
|
||||
}
|
||||
},
|
||||
"mergeData": [
|
||||
{
|
||||
"startRow": 0,
|
||||
"endRow": 0,
|
||||
"startColumn": 0,
|
||||
"endColumn": 5
|
||||
},
|
||||
{
|
||||
"startRow": 3,
|
||||
"endRow": 3,
|
||||
"startColumn": 0,
|
||||
"endColumn": 3
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"cells": {
|
||||
"cells": [
|
||||
{
|
||||
"col": "0",
|
||||
"row": "0",
|
||||
"sheet": "Eh_Jx6bicu3SB2VKA8XcS",
|
||||
"custom": {
|
||||
"leftParentCellType": "default",
|
||||
"leftParentCellCustomRowName": "",
|
||||
"leftParentCellCustomColName": "",
|
||||
"topParentCellType": "default",
|
||||
"topParentCellCustomRowName": "",
|
||||
"topParentCellCustomColName": ""
|
||||
}
|
||||
},
|
||||
{
|
||||
"col": "5",
|
||||
"row": "1",
|
||||
"sheet": "Eh_Jx6bicu3SB2VKA8XcS",
|
||||
"custom": {
|
||||
"leftParentCellType": "default",
|
||||
"leftParentCellCustomRowName": "",
|
||||
"leftParentCellCustomColName": "",
|
||||
"topParentCellType": "default",
|
||||
"topParentCellCustomRowName": "",
|
||||
"topParentCellCustomColName": ""
|
||||
}
|
||||
},
|
||||
{
|
||||
"col": "0",
|
||||
"row": "2",
|
||||
"sheet": "Eh_Jx6bicu3SB2VKA8XcS",
|
||||
"type": "dataSource",
|
||||
"custom": {
|
||||
"field": "user.orgname",
|
||||
"polymerizationType": "2",
|
||||
"summaryType": "sum",
|
||||
"fillDirection": "portrait",
|
||||
"leftParentCellType": "default",
|
||||
"leftParentCellCustomRowName": "",
|
||||
"leftParentCellCustomColName": "",
|
||||
"topParentCellType": "default",
|
||||
"topParentCellCustomRowName": "",
|
||||
"topParentCellCustomColName": "",
|
||||
"type": "dataSource",
|
||||
"groupType": "default",
|
||||
"displayType": "default"
|
||||
}
|
||||
},
|
||||
{
|
||||
"col": "1",
|
||||
"row": "2",
|
||||
"sheet": "Eh_Jx6bicu3SB2VKA8XcS",
|
||||
"type": "dataSource",
|
||||
"custom": {
|
||||
"field": "user.depName",
|
||||
"polymerizationType": "2",
|
||||
"summaryType": "sum",
|
||||
"fillDirection": "portrait",
|
||||
"leftParentCellType": "default",
|
||||
"leftParentCellCustomRowName": "",
|
||||
"leftParentCellCustomColName": "",
|
||||
"topParentCellType": "default",
|
||||
"topParentCellCustomRowName": "",
|
||||
"topParentCellCustomColName": "",
|
||||
"type": "dataSource",
|
||||
"groupType": "default",
|
||||
"displayType": "default"
|
||||
}
|
||||
},
|
||||
{
|
||||
"col": "2",
|
||||
"row": "2",
|
||||
"sheet": "Eh_Jx6bicu3SB2VKA8XcS",
|
||||
"type": "dataSource",
|
||||
"custom": {
|
||||
"field": "user.education",
|
||||
"polymerizationType": "2",
|
||||
"summaryType": "sum",
|
||||
"fillDirection": "portrait",
|
||||
"leftParentCellType": "default",
|
||||
"leftParentCellCustomRowName": "",
|
||||
"leftParentCellCustomColName": "",
|
||||
"topParentCellType": "default",
|
||||
"topParentCellCustomRowName": "",
|
||||
"topParentCellCustomColName": "",
|
||||
"type": "dataSource",
|
||||
"groupType": "default",
|
||||
"displayType": "default"
|
||||
}
|
||||
},
|
||||
{
|
||||
"col": "3",
|
||||
"row": "2",
|
||||
"sheet": "Eh_Jx6bicu3SB2VKA8XcS",
|
||||
"type": "dataSource",
|
||||
"custom": {
|
||||
"field": "user.sex",
|
||||
"polymerizationType": "2",
|
||||
"summaryType": "sum",
|
||||
"fillDirection": "portrait",
|
||||
"leftParentCellType": "default",
|
||||
"leftParentCellCustomRowName": "",
|
||||
"leftParentCellCustomColName": "",
|
||||
"topParentCellType": "default",
|
||||
"topParentCellCustomRowName": "",
|
||||
"topParentCellCustomColName": "",
|
||||
"type": "dataSource",
|
||||
"groupType": "default",
|
||||
"displayType": "default"
|
||||
}
|
||||
},
|
||||
{
|
||||
"col": "4",
|
||||
"row": "2",
|
||||
"sheet": "Eh_Jx6bicu3SB2VKA8XcS",
|
||||
"type": "dataSource",
|
||||
"custom": {
|
||||
"field": "user.username",
|
||||
"polymerizationType": "1",
|
||||
"summaryType": "sum",
|
||||
"fillDirection": "portrait",
|
||||
"leftParentCellType": "default",
|
||||
"leftParentCellCustomRowName": "",
|
||||
"leftParentCellCustomColName": "",
|
||||
"topParentCellType": "default",
|
||||
"topParentCellCustomRowName": "",
|
||||
"topParentCellCustomColName": "",
|
||||
"type": "dataSource",
|
||||
"displayType": "default"
|
||||
}
|
||||
},
|
||||
{
|
||||
"col": "5",
|
||||
"row": "2",
|
||||
"sheet": "Eh_Jx6bicu3SB2VKA8XcS",
|
||||
"type": "dataSource",
|
||||
"custom": {
|
||||
"field": "user.salary",
|
||||
"polymerizationType": "1",
|
||||
"summaryType": "sum",
|
||||
"fillDirection": "portrait",
|
||||
"leftParentCellType": "default",
|
||||
"leftParentCellCustomRowName": "",
|
||||
"leftParentCellCustomColName": "",
|
||||
"topParentCellType": "default",
|
||||
"topParentCellCustomRowName": "",
|
||||
"topParentCellCustomColName": "",
|
||||
"type": "dataSource",
|
||||
"displayType": "default"
|
||||
}
|
||||
},
|
||||
{
|
||||
"col": "4",
|
||||
"row": "3",
|
||||
"sheet": "Eh_Jx6bicu3SB2VKA8XcS",
|
||||
"type": "dataSource",
|
||||
"custom": {
|
||||
"field": "user.username",
|
||||
"polymerizationType": "3",
|
||||
"summaryType": "count",
|
||||
"fillDirection": "portrait",
|
||||
"leftParentCellType": "none",
|
||||
"leftParentCellCustomRowName": "",
|
||||
"leftParentCellCustomColName": "",
|
||||
"topParentCellType": "none",
|
||||
"topParentCellCustomRowName": "",
|
||||
"topParentCellCustomColName": "",
|
||||
"type": "dataSource",
|
||||
"displayType": "default"
|
||||
}
|
||||
},
|
||||
{
|
||||
"col": "5",
|
||||
"row": "3",
|
||||
"sheet": "Eh_Jx6bicu3SB2VKA8XcS",
|
||||
"type": "dataSource",
|
||||
"custom": {
|
||||
"field": "user.salary",
|
||||
"polymerizationType": "3",
|
||||
"summaryType": "sum",
|
||||
"fillDirection": "portrait",
|
||||
"leftParentCellType": "none",
|
||||
"leftParentCellCustomRowName": "",
|
||||
"leftParentCellCustomColName": "",
|
||||
"topParentCellType": "none",
|
||||
"topParentCellCustomRowName": "",
|
||||
"topParentCellCustomColName": "",
|
||||
"type": "dataSource",
|
||||
"displayType": "default"
|
||||
}
|
||||
}
|
||||
],
|
||||
"floatEcharts": {},
|
||||
"cellEcharts": {},
|
||||
"floatImages": {}
|
||||
},
|
||||
"datasets": {
|
||||
"user": [
|
||||
{
|
||||
"orgname": "广东",
|
||||
"depName": "深圳-软件技术支持部",
|
||||
"education": "博士后",
|
||||
"sex": "1",
|
||||
"username": "曦晨",
|
||||
"salary": 2410.0
|
||||
},
|
||||
{
|
||||
"orgname": "广东",
|
||||
"depName": "深圳-软件技术支持部",
|
||||
"education": "本科",
|
||||
"sex": "1",
|
||||
"username": "昊明",
|
||||
"salary": 3639.0
|
||||
},
|
||||
{
|
||||
"orgname": "广东",
|
||||
"depName": "深圳-软件技术支持部",
|
||||
"education": "本科",
|
||||
"sex": "1",
|
||||
"username": "昊硕",
|
||||
"salary": 2101.0
|
||||
},
|
||||
{
|
||||
"orgname": "广东",
|
||||
"depName": "深圳-软件技术支持部",
|
||||
"education": "本科",
|
||||
"sex": "1",
|
||||
"username": "欧阳",
|
||||
"salary": 5863.0
|
||||
},
|
||||
{
|
||||
"orgname": "广东",
|
||||
"depName": "深圳-软件技术支持部",
|
||||
"education": "高中",
|
||||
"sex": "2",
|
||||
"username": "王忠亮",
|
||||
"salary": 6128.0
|
||||
},
|
||||
{
|
||||
"orgname": "广东",
|
||||
"depName": "深圳-软件技术支持部",
|
||||
"education": "本科",
|
||||
"sex": "1",
|
||||
"username": "吴忠民",
|
||||
"salary": 3839.0
|
||||
},
|
||||
{
|
||||
"orgname": "上海",
|
||||
"depName": "上海-软件产品支持部",
|
||||
"education": "博士",
|
||||
"sex": "2",
|
||||
"username": "张秀恩",
|
||||
"salary": 3943.0
|
||||
},
|
||||
{
|
||||
"orgname": "上海",
|
||||
"depName": "上海-软件产品支持部",
|
||||
"education": "本科",
|
||||
"sex": "1",
|
||||
"username": "姜磊",
|
||||
"salary": 1474.0
|
||||
}
|
||||
]
|
||||
},
|
||||
"params": {},
|
||||
"expect": {
|
||||
"Eh_Jx6bicu3SB2VKA8XcS": {
|
||||
"2,0": "广东",
|
||||
"2,1": "深圳-软件技术支持部",
|
||||
"2,2": "博士后",
|
||||
"2,3": "1",
|
||||
"2,4": "曦晨",
|
||||
"2,5": "2410.0",
|
||||
"3,0": "广东",
|
||||
"3,1": "深圳-软件技术支持部",
|
||||
"3,2": "本科",
|
||||
"3,3": "1",
|
||||
"3,4": "8",
|
||||
"3,5": "3639.0",
|
||||
"4,0": "广东",
|
||||
"4,1": "深圳-软件技术支持部",
|
||||
"4,2": "本科",
|
||||
"4,3": "1",
|
||||
"4,4": "昊硕",
|
||||
"4,5": "29397.0",
|
||||
"5,0": "广东",
|
||||
"5,1": "深圳-软件技术支持部",
|
||||
"5,2": "本科",
|
||||
"5,3": "1",
|
||||
"5,4": "欧阳",
|
||||
"5,5": "5863.0",
|
||||
"6,5": "3839.0",
|
||||
"6,4": "吴忠民",
|
||||
"6,3": "1",
|
||||
"6,2": "本科",
|
||||
"6,1": "深圳-软件技术支持部",
|
||||
"6,0": "广东",
|
||||
"7,5": "6128.0",
|
||||
"7,4": "王忠亮",
|
||||
"7,3": "2",
|
||||
"7,2": "高中",
|
||||
"7,1": "深圳-软件技术支持部",
|
||||
"7,0": "广东",
|
||||
"8,5": "3943.0",
|
||||
"8,4": "张秀恩",
|
||||
"8,3": "2",
|
||||
"8,2": "博士",
|
||||
"8,1": "上海-软件产品支持部",
|
||||
"8,0": "上海",
|
||||
"9,5": "1474.0",
|
||||
"9,4": "姜磊",
|
||||
"9,3": "1",
|
||||
"9,2": "本科",
|
||||
"9,1": "上海-软件产品支持部",
|
||||
"9,0": "上海"
|
||||
}
|
||||
},
|
||||
"convert_config": [
|
||||
{
|
||||
"field": "user.sex",
|
||||
"type": "select",
|
||||
"config": {
|
||||
"dataType": "dictionary",
|
||||
"options": [],
|
||||
"dictionaryType": "963255a34ea64a2584c5d1ba269c1fe6",
|
||||
"propsValue": "enCode",
|
||||
"format": "yyyy-MM-dd",
|
||||
"precision": 0,
|
||||
"thousands": false
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
+592
@@ -0,0 +1,592 @@
|
||||
{
|
||||
"name": "jnpf_db_user_list",
|
||||
"comment": "JNPF DB 真实样例: 人员花名册(列表) (version 623183857306304837)",
|
||||
"jnpf_version_id": "623183857306304837",
|
||||
"snapshot": {
|
||||
"id": "PlhIEz",
|
||||
"sheetOrder": [
|
||||
"E-ZBgdonv3JP-AKiPx-Dz"
|
||||
],
|
||||
"sheets": {
|
||||
"E-ZBgdonv3JP-AKiPx-Dz": {
|
||||
"id": "E-ZBgdonv3JP-AKiPx-Dz",
|
||||
"cellData": {
|
||||
"0": {
|
||||
"0": {
|
||||
"v": "人员花名册",
|
||||
"s": "brTn0f",
|
||||
"custom": {
|
||||
"leftParentCellType": "default",
|
||||
"leftParentCellCustomRowName": "",
|
||||
"leftParentCellCustomColName": "",
|
||||
"topParentCellType": "default",
|
||||
"topParentCellCustomRowName": "",
|
||||
"topParentCellCustomColName": ""
|
||||
},
|
||||
"t": 1
|
||||
},
|
||||
"1": {
|
||||
"s": "O-e1uN"
|
||||
},
|
||||
"2": {
|
||||
"s": "O-e1uN"
|
||||
},
|
||||
"3": {
|
||||
"s": "O-e1uN"
|
||||
},
|
||||
"4": {
|
||||
"s": "O-e1uN"
|
||||
},
|
||||
"5": {
|
||||
"s": "quTX_s"
|
||||
},
|
||||
"6": {
|
||||
"s": "w3oh7s"
|
||||
}
|
||||
},
|
||||
"1": {
|
||||
"0": {
|
||||
"v": "组织",
|
||||
"t": 1,
|
||||
"s": "ZeHsQI"
|
||||
},
|
||||
"1": {
|
||||
"v": "部门",
|
||||
"t": 1,
|
||||
"s": "ZeHsQI"
|
||||
},
|
||||
"2": {
|
||||
"v": "学历",
|
||||
"t": 1,
|
||||
"s": "ZeHsQI"
|
||||
},
|
||||
"3": {
|
||||
"v": "性别",
|
||||
"t": 1,
|
||||
"s": "ZeHsQI"
|
||||
},
|
||||
"4": {
|
||||
"v": "姓名",
|
||||
"t": 1,
|
||||
"s": "ZeHsQI"
|
||||
},
|
||||
"5": {
|
||||
"v": "薪资",
|
||||
"t": 1,
|
||||
"s": "ZeHsQI"
|
||||
},
|
||||
"6": {
|
||||
"s": "w3oh7s"
|
||||
}
|
||||
},
|
||||
"2": {
|
||||
"0": {
|
||||
"v": "${user.orgname}",
|
||||
"t": 1,
|
||||
"s": "VGNL-Q",
|
||||
"custom": {
|
||||
"field": "user.orgname",
|
||||
"polymerizationType": "1",
|
||||
"summaryType": "sum",
|
||||
"fillDirection": "portrait",
|
||||
"leftParentCellType": "default",
|
||||
"leftParentCellCustomRowName": "",
|
||||
"leftParentCellCustomColName": "",
|
||||
"topParentCellType": "default",
|
||||
"topParentCellCustomRowName": "",
|
||||
"topParentCellCustomColName": "",
|
||||
"type": "dataSource",
|
||||
"displayType": "default"
|
||||
}
|
||||
},
|
||||
"1": {
|
||||
"v": "${user.depName}",
|
||||
"t": 1,
|
||||
"s": "l8Zma3",
|
||||
"custom": {
|
||||
"field": "user.depName",
|
||||
"polymerizationType": "1",
|
||||
"summaryType": "sum",
|
||||
"fillDirection": "portrait",
|
||||
"leftParentCellType": "default",
|
||||
"leftParentCellCustomRowName": "",
|
||||
"leftParentCellCustomColName": "",
|
||||
"topParentCellType": "default",
|
||||
"topParentCellCustomRowName": "",
|
||||
"topParentCellCustomColName": "",
|
||||
"type": "dataSource",
|
||||
"displayType": "default"
|
||||
}
|
||||
},
|
||||
"2": {
|
||||
"v": "${user.education}",
|
||||
"t": 1,
|
||||
"s": "wtFaaw",
|
||||
"custom": {
|
||||
"field": "user.education",
|
||||
"polymerizationType": "1",
|
||||
"summaryType": "sum",
|
||||
"fillDirection": "portrait",
|
||||
"leftParentCellType": "default",
|
||||
"leftParentCellCustomRowName": "",
|
||||
"leftParentCellCustomColName": "",
|
||||
"topParentCellType": "default",
|
||||
"topParentCellCustomRowName": "",
|
||||
"topParentCellCustomColName": "",
|
||||
"type": "dataSource",
|
||||
"displayType": "default"
|
||||
}
|
||||
},
|
||||
"3": {
|
||||
"v": "${user.sex}",
|
||||
"t": 1,
|
||||
"s": "FG5eVb",
|
||||
"custom": {
|
||||
"field": "user.sex",
|
||||
"polymerizationType": "1",
|
||||
"summaryType": "sum",
|
||||
"fillDirection": "portrait",
|
||||
"leftParentCellType": "default",
|
||||
"leftParentCellCustomRowName": "",
|
||||
"leftParentCellCustomColName": "",
|
||||
"topParentCellType": "default",
|
||||
"topParentCellCustomRowName": "",
|
||||
"topParentCellCustomColName": "",
|
||||
"type": "dataSource",
|
||||
"displayType": "default"
|
||||
}
|
||||
},
|
||||
"4": {
|
||||
"v": "${user.username}",
|
||||
"t": 1,
|
||||
"s": "VGNL-Q",
|
||||
"custom": {
|
||||
"field": "user.username",
|
||||
"polymerizationType": "1",
|
||||
"summaryType": "sum",
|
||||
"fillDirection": "portrait",
|
||||
"leftParentCellType": "default",
|
||||
"leftParentCellCustomRowName": "",
|
||||
"leftParentCellCustomColName": "",
|
||||
"topParentCellType": "default",
|
||||
"topParentCellCustomRowName": "",
|
||||
"topParentCellCustomColName": "",
|
||||
"type": "dataSource",
|
||||
"displayType": "default"
|
||||
}
|
||||
},
|
||||
"5": {
|
||||
"v": "${user.salary}",
|
||||
"t": 1,
|
||||
"s": "o-8LER",
|
||||
"custom": {
|
||||
"field": "user.salary",
|
||||
"polymerizationType": "1",
|
||||
"summaryType": "sum",
|
||||
"fillDirection": "portrait",
|
||||
"leftParentCellType": "default",
|
||||
"leftParentCellCustomRowName": "",
|
||||
"leftParentCellCustomColName": "",
|
||||
"topParentCellType": "default",
|
||||
"topParentCellCustomRowName": "",
|
||||
"topParentCellCustomColName": "",
|
||||
"type": "dataSource",
|
||||
"displayType": "default"
|
||||
}
|
||||
},
|
||||
"6": {
|
||||
"s": "w3oh7s"
|
||||
}
|
||||
},
|
||||
"3": {
|
||||
"0": {
|
||||
"v": "合计:",
|
||||
"t": 1,
|
||||
"s": "2so-W9"
|
||||
},
|
||||
"1": {
|
||||
"s": "h1agbN"
|
||||
},
|
||||
"2": {
|
||||
"s": "h1agbN"
|
||||
},
|
||||
"3": {
|
||||
"s": "h1agbN"
|
||||
},
|
||||
"4": {
|
||||
"v": "${user.username}",
|
||||
"t": 1,
|
||||
"s": "7k_VtD",
|
||||
"custom": {
|
||||
"field": "user.username",
|
||||
"polymerizationType": "3",
|
||||
"summaryType": "count",
|
||||
"fillDirection": "portrait",
|
||||
"leftParentCellType": "none",
|
||||
"leftParentCellCustomRowName": "",
|
||||
"leftParentCellCustomColName": "",
|
||||
"topParentCellType": "none",
|
||||
"topParentCellCustomRowName": "",
|
||||
"topParentCellCustomColName": "",
|
||||
"type": "dataSource",
|
||||
"displayType": "default"
|
||||
}
|
||||
},
|
||||
"5": {
|
||||
"s": "2dGCXz",
|
||||
"f": "=SUM(F3)",
|
||||
"v": 0,
|
||||
"t": 2
|
||||
},
|
||||
"6": {
|
||||
"s": "w3oh7s"
|
||||
}
|
||||
},
|
||||
"4": {
|
||||
"0": {
|
||||
"s": "w3oh7s"
|
||||
},
|
||||
"1": {
|
||||
"s": "w3oh7s"
|
||||
},
|
||||
"2": {
|
||||
"s": "w3oh7s"
|
||||
},
|
||||
"3": {
|
||||
"s": "w3oh7s"
|
||||
},
|
||||
"4": {
|
||||
"s": "w3oh7s"
|
||||
},
|
||||
"5": {
|
||||
"s": "w3oh7s"
|
||||
}
|
||||
},
|
||||
"5": {
|
||||
"4": {
|
||||
"v": "制表日期:",
|
||||
"t": 1,
|
||||
"s": "etLyRt"
|
||||
},
|
||||
"5": {
|
||||
"f": "=NOW()",
|
||||
"v": 45848.65981481481,
|
||||
"t": 2,
|
||||
"s": "qWukzd"
|
||||
}
|
||||
}
|
||||
},
|
||||
"mergeData": [
|
||||
{
|
||||
"startRow": 0,
|
||||
"endRow": 0,
|
||||
"startColumn": 0,
|
||||
"endColumn": 5
|
||||
},
|
||||
{
|
||||
"startRow": 3,
|
||||
"endRow": 3,
|
||||
"startColumn": 0,
|
||||
"endColumn": 3
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"cells": {
|
||||
"cells": [
|
||||
{
|
||||
"col": "0",
|
||||
"row": "0",
|
||||
"sheet": "E-ZBgdonv3JP-AKiPx-Dz",
|
||||
"custom": {
|
||||
"leftParentCellType": "default",
|
||||
"leftParentCellCustomRowName": "",
|
||||
"leftParentCellCustomColName": "",
|
||||
"topParentCellType": "default",
|
||||
"topParentCellCustomRowName": "",
|
||||
"topParentCellCustomColName": ""
|
||||
}
|
||||
},
|
||||
{
|
||||
"col": "0",
|
||||
"row": "2",
|
||||
"sheet": "E-ZBgdonv3JP-AKiPx-Dz",
|
||||
"type": "dataSource",
|
||||
"custom": {
|
||||
"field": "user.orgname",
|
||||
"polymerizationType": "1",
|
||||
"summaryType": "sum",
|
||||
"fillDirection": "portrait",
|
||||
"leftParentCellType": "default",
|
||||
"leftParentCellCustomRowName": "",
|
||||
"leftParentCellCustomColName": "",
|
||||
"topParentCellType": "default",
|
||||
"topParentCellCustomRowName": "",
|
||||
"topParentCellCustomColName": "",
|
||||
"type": "dataSource",
|
||||
"displayType": "default"
|
||||
}
|
||||
},
|
||||
{
|
||||
"col": "1",
|
||||
"row": "2",
|
||||
"sheet": "E-ZBgdonv3JP-AKiPx-Dz",
|
||||
"type": "dataSource",
|
||||
"custom": {
|
||||
"field": "user.depName",
|
||||
"polymerizationType": "1",
|
||||
"summaryType": "sum",
|
||||
"fillDirection": "portrait",
|
||||
"leftParentCellType": "default",
|
||||
"leftParentCellCustomRowName": "",
|
||||
"leftParentCellCustomColName": "",
|
||||
"topParentCellType": "default",
|
||||
"topParentCellCustomRowName": "",
|
||||
"topParentCellCustomColName": "",
|
||||
"type": "dataSource",
|
||||
"displayType": "default"
|
||||
}
|
||||
},
|
||||
{
|
||||
"col": "2",
|
||||
"row": "2",
|
||||
"sheet": "E-ZBgdonv3JP-AKiPx-Dz",
|
||||
"type": "dataSource",
|
||||
"custom": {
|
||||
"field": "user.education",
|
||||
"polymerizationType": "1",
|
||||
"summaryType": "sum",
|
||||
"fillDirection": "portrait",
|
||||
"leftParentCellType": "default",
|
||||
"leftParentCellCustomRowName": "",
|
||||
"leftParentCellCustomColName": "",
|
||||
"topParentCellType": "default",
|
||||
"topParentCellCustomRowName": "",
|
||||
"topParentCellCustomColName": "",
|
||||
"type": "dataSource",
|
||||
"displayType": "default"
|
||||
}
|
||||
},
|
||||
{
|
||||
"col": "3",
|
||||
"row": "2",
|
||||
"sheet": "E-ZBgdonv3JP-AKiPx-Dz",
|
||||
"type": "dataSource",
|
||||
"custom": {
|
||||
"field": "user.sex",
|
||||
"polymerizationType": "1",
|
||||
"summaryType": "sum",
|
||||
"fillDirection": "portrait",
|
||||
"leftParentCellType": "default",
|
||||
"leftParentCellCustomRowName": "",
|
||||
"leftParentCellCustomColName": "",
|
||||
"topParentCellType": "default",
|
||||
"topParentCellCustomRowName": "",
|
||||
"topParentCellCustomColName": "",
|
||||
"type": "dataSource",
|
||||
"displayType": "default"
|
||||
}
|
||||
},
|
||||
{
|
||||
"col": "4",
|
||||
"row": "2",
|
||||
"sheet": "E-ZBgdonv3JP-AKiPx-Dz",
|
||||
"type": "dataSource",
|
||||
"custom": {
|
||||
"field": "user.username",
|
||||
"polymerizationType": "1",
|
||||
"summaryType": "sum",
|
||||
"fillDirection": "portrait",
|
||||
"leftParentCellType": "default",
|
||||
"leftParentCellCustomRowName": "",
|
||||
"leftParentCellCustomColName": "",
|
||||
"topParentCellType": "default",
|
||||
"topParentCellCustomRowName": "",
|
||||
"topParentCellCustomColName": "",
|
||||
"type": "dataSource",
|
||||
"displayType": "default"
|
||||
}
|
||||
},
|
||||
{
|
||||
"col": "5",
|
||||
"row": "2",
|
||||
"sheet": "E-ZBgdonv3JP-AKiPx-Dz",
|
||||
"type": "dataSource",
|
||||
"custom": {
|
||||
"field": "user.salary",
|
||||
"polymerizationType": "1",
|
||||
"summaryType": "sum",
|
||||
"fillDirection": "portrait",
|
||||
"leftParentCellType": "default",
|
||||
"leftParentCellCustomRowName": "",
|
||||
"leftParentCellCustomColName": "",
|
||||
"topParentCellType": "default",
|
||||
"topParentCellCustomRowName": "",
|
||||
"topParentCellCustomColName": "",
|
||||
"type": "dataSource",
|
||||
"displayType": "default"
|
||||
}
|
||||
},
|
||||
{
|
||||
"col": "4",
|
||||
"row": "3",
|
||||
"sheet": "E-ZBgdonv3JP-AKiPx-Dz",
|
||||
"type": "dataSource",
|
||||
"custom": {
|
||||
"field": "user.username",
|
||||
"polymerizationType": "3",
|
||||
"summaryType": "count",
|
||||
"fillDirection": "portrait",
|
||||
"leftParentCellType": "none",
|
||||
"leftParentCellCustomRowName": "",
|
||||
"leftParentCellCustomColName": "",
|
||||
"topParentCellType": "none",
|
||||
"topParentCellCustomRowName": "",
|
||||
"topParentCellCustomColName": "",
|
||||
"type": "dataSource",
|
||||
"displayType": "default"
|
||||
}
|
||||
}
|
||||
],
|
||||
"floatEcharts": {},
|
||||
"cellEcharts": {},
|
||||
"floatImages": {}
|
||||
},
|
||||
"datasets": {
|
||||
"user": [
|
||||
{
|
||||
"orgname": "广东",
|
||||
"depName": "深圳-软件技术支持部",
|
||||
"education": "博士后",
|
||||
"sex": "1",
|
||||
"username": "曦晨",
|
||||
"salary": 2410.0
|
||||
},
|
||||
{
|
||||
"orgname": "广东",
|
||||
"depName": "深圳-软件技术支持部",
|
||||
"education": "本科",
|
||||
"sex": "1",
|
||||
"username": "昊明",
|
||||
"salary": 3639.0
|
||||
},
|
||||
{
|
||||
"orgname": "广东",
|
||||
"depName": "深圳-软件技术支持部",
|
||||
"education": "本科",
|
||||
"sex": "1",
|
||||
"username": "昊硕",
|
||||
"salary": 2101.0
|
||||
},
|
||||
{
|
||||
"orgname": "广东",
|
||||
"depName": "深圳-软件技术支持部",
|
||||
"education": "本科",
|
||||
"sex": "1",
|
||||
"username": "欧阳",
|
||||
"salary": 5863.0
|
||||
},
|
||||
{
|
||||
"orgname": "广东",
|
||||
"depName": "深圳-软件技术支持部",
|
||||
"education": "高中",
|
||||
"sex": "2",
|
||||
"username": "王忠亮",
|
||||
"salary": 6128.0
|
||||
},
|
||||
{
|
||||
"orgname": "广东",
|
||||
"depName": "深圳-软件技术支持部",
|
||||
"education": "本科",
|
||||
"sex": "1",
|
||||
"username": "吴忠民",
|
||||
"salary": 3839.0
|
||||
},
|
||||
{
|
||||
"orgname": "上海",
|
||||
"depName": "上海-软件产品支持部",
|
||||
"education": "博士",
|
||||
"sex": "2",
|
||||
"username": "张秀恩",
|
||||
"salary": 3943.0
|
||||
},
|
||||
{
|
||||
"orgname": "上海",
|
||||
"depName": "上海-软件产品支持部",
|
||||
"education": "本科",
|
||||
"sex": "1",
|
||||
"username": "姜磊",
|
||||
"salary": 1474.0
|
||||
}
|
||||
]
|
||||
},
|
||||
"params": {},
|
||||
"expect": {
|
||||
"E-ZBgdonv3JP-AKiPx-Dz": {
|
||||
"2,0": "广东",
|
||||
"2,1": "深圳-软件技术支持部",
|
||||
"2,2": "博士后",
|
||||
"2,3": "1",
|
||||
"2,4": "曦晨",
|
||||
"2,5": "2410.0",
|
||||
"3,0": "广东",
|
||||
"3,1": "深圳-软件技术支持部",
|
||||
"3,2": "本科",
|
||||
"3,3": "1",
|
||||
"3,4": "8",
|
||||
"3,5": "3639.0",
|
||||
"4,0": "广东",
|
||||
"4,1": "深圳-软件技术支持部",
|
||||
"4,2": "本科",
|
||||
"4,3": "1",
|
||||
"4,4": "昊硕",
|
||||
"4,5": "2101.0",
|
||||
"5,4": "欧阳",
|
||||
"5,5": "5863.0",
|
||||
"5,3": "1",
|
||||
"5,2": "本科",
|
||||
"5,1": "深圳-软件技术支持部",
|
||||
"5,0": "广东",
|
||||
"6,5": "6128.0",
|
||||
"6,4": "王忠亮",
|
||||
"6,3": "2",
|
||||
"6,2": "高中",
|
||||
"6,1": "深圳-软件技术支持部",
|
||||
"6,0": "广东",
|
||||
"7,5": "3839.0",
|
||||
"7,4": "吴忠民",
|
||||
"7,3": "1",
|
||||
"7,2": "本科",
|
||||
"7,1": "深圳-软件技术支持部",
|
||||
"7,0": "广东",
|
||||
"8,5": "3943.0",
|
||||
"8,4": "张秀恩",
|
||||
"8,3": "2",
|
||||
"8,2": "博士",
|
||||
"8,1": "上海-软件产品支持部",
|
||||
"8,0": "上海",
|
||||
"9,5": "1474.0",
|
||||
"9,4": "姜磊",
|
||||
"9,3": "1",
|
||||
"9,2": "本科",
|
||||
"9,1": "上海-软件产品支持部",
|
||||
"9,0": "上海"
|
||||
}
|
||||
},
|
||||
"convert_config": [
|
||||
{
|
||||
"field": "user.sex",
|
||||
"type": "select",
|
||||
"config": {
|
||||
"dataType": "dictionary",
|
||||
"options": [],
|
||||
"dictionaryType": "963255a34ea64a2584c5d1ba269c1fe6",
|
||||
"propsValue": "enCode",
|
||||
"format": "yyyy-MM-dd",
|
||||
"precision": 0,
|
||||
"thousands": false
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
+295
@@ -0,0 +1,295 @@
|
||||
{
|
||||
"name": "jnpf_db_user_matrix",
|
||||
"comment": "JNPF DB 真实样例: 人员花名册(行列) (version 623204233562292805)",
|
||||
"jnpf_version_id": "623204233562292805",
|
||||
"snapshot": {
|
||||
"id": "GVaLEc",
|
||||
"sheetOrder": [
|
||||
"VkjbtPpyX8TggOO4aHSuO"
|
||||
],
|
||||
"sheets": {
|
||||
"VkjbtPpyX8TggOO4aHSuO": {
|
||||
"id": "VkjbtPpyX8TggOO4aHSuO",
|
||||
"cellData": {
|
||||
"0": {
|
||||
"0": {
|
||||
"v": "人员花名册",
|
||||
"s": "7zkWyq",
|
||||
"custom": {
|
||||
"leftParentCellType": "default",
|
||||
"leftParentCellCustomRowName": "",
|
||||
"leftParentCellCustomColName": "",
|
||||
"topParentCellType": "default",
|
||||
"topParentCellCustomRowName": "",
|
||||
"topParentCellCustomColName": ""
|
||||
},
|
||||
"t": 1
|
||||
}
|
||||
},
|
||||
"1": {
|
||||
"0": {
|
||||
"v": "${report_user.organizationName}",
|
||||
"t": 1,
|
||||
"s": "oLh33o",
|
||||
"custom": {
|
||||
"field": "report_user.organizationName",
|
||||
"polymerizationType": "2",
|
||||
"summaryType": "sum",
|
||||
"fillDirection": "landscape",
|
||||
"leftParentCellType": "default",
|
||||
"leftParentCellCustomRowName": "",
|
||||
"leftParentCellCustomColName": "",
|
||||
"topParentCellType": "default",
|
||||
"topParentCellCustomRowName": "",
|
||||
"topParentCellCustomColName": "",
|
||||
"type": "dataSource",
|
||||
"groupType": "default",
|
||||
"displayType": "default"
|
||||
}
|
||||
}
|
||||
},
|
||||
"2": {
|
||||
"0": {
|
||||
"v": "${report_user.departmentName}",
|
||||
"t": 1,
|
||||
"s": "pe2oi6",
|
||||
"custom": {
|
||||
"field": "report_user.departmentName",
|
||||
"polymerizationType": "2",
|
||||
"summaryType": "sum",
|
||||
"fillDirection": "landscape",
|
||||
"leftParentCellType": "default",
|
||||
"leftParentCellCustomRowName": "",
|
||||
"leftParentCellCustomColName": "",
|
||||
"topParentCellType": "default",
|
||||
"topParentCellCustomRowName": "",
|
||||
"topParentCellCustomColName": "",
|
||||
"type": "dataSource",
|
||||
"groupType": "default",
|
||||
"displayType": "default"
|
||||
}
|
||||
}
|
||||
},
|
||||
"3": {
|
||||
"0": {
|
||||
"v": "${report_user.username}",
|
||||
"t": 1,
|
||||
"s": "LNCLmO",
|
||||
"custom": {
|
||||
"field": "report_user.username",
|
||||
"polymerizationType": "2",
|
||||
"summaryType": "sum",
|
||||
"fillDirection": "portrait",
|
||||
"leftParentCellType": "default",
|
||||
"leftParentCellCustomRowName": "",
|
||||
"leftParentCellCustomColName": "",
|
||||
"topParentCellType": "default",
|
||||
"topParentCellCustomRowName": "",
|
||||
"topParentCellCustomColName": "",
|
||||
"type": "dataSource",
|
||||
"groupType": "default",
|
||||
"displayType": "default"
|
||||
}
|
||||
}
|
||||
},
|
||||
"4": {
|
||||
"0": {
|
||||
"v": "${report_user.username}",
|
||||
"t": 1,
|
||||
"s": "17yxoW",
|
||||
"custom": {
|
||||
"field": "report_user.username",
|
||||
"polymerizationType": "3",
|
||||
"summaryType": "count",
|
||||
"fillDirection": "portrait",
|
||||
"leftParentCellType": "default",
|
||||
"leftParentCellCustomRowName": "",
|
||||
"leftParentCellCustomColName": "",
|
||||
"topParentCellType": "custom",
|
||||
"topParentCellCustomRowName": "A",
|
||||
"topParentCellCustomColName": "3",
|
||||
"type": "dataSource",
|
||||
"displayType": "default"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"cells": {
|
||||
"cells": [
|
||||
{
|
||||
"col": "0",
|
||||
"row": "0",
|
||||
"sheet": "VkjbtPpyX8TggOO4aHSuO",
|
||||
"custom": {
|
||||
"leftParentCellType": "default",
|
||||
"leftParentCellCustomRowName": "",
|
||||
"leftParentCellCustomColName": "",
|
||||
"topParentCellType": "default",
|
||||
"topParentCellCustomRowName": "",
|
||||
"topParentCellCustomColName": ""
|
||||
}
|
||||
},
|
||||
{
|
||||
"col": "0",
|
||||
"row": "1",
|
||||
"sheet": "VkjbtPpyX8TggOO4aHSuO",
|
||||
"type": "dataSource",
|
||||
"custom": {
|
||||
"field": "report_user.organizationName",
|
||||
"polymerizationType": "2",
|
||||
"summaryType": "sum",
|
||||
"fillDirection": "landscape",
|
||||
"leftParentCellType": "default",
|
||||
"leftParentCellCustomRowName": "",
|
||||
"leftParentCellCustomColName": "",
|
||||
"topParentCellType": "default",
|
||||
"topParentCellCustomRowName": "",
|
||||
"topParentCellCustomColName": "",
|
||||
"type": "dataSource",
|
||||
"groupType": "default",
|
||||
"displayType": "default"
|
||||
}
|
||||
},
|
||||
{
|
||||
"col": "0",
|
||||
"row": "2",
|
||||
"sheet": "VkjbtPpyX8TggOO4aHSuO",
|
||||
"type": "dataSource",
|
||||
"custom": {
|
||||
"field": "report_user.departmentName",
|
||||
"polymerizationType": "2",
|
||||
"summaryType": "sum",
|
||||
"fillDirection": "landscape",
|
||||
"leftParentCellType": "default",
|
||||
"leftParentCellCustomRowName": "",
|
||||
"leftParentCellCustomColName": "",
|
||||
"topParentCellType": "default",
|
||||
"topParentCellCustomRowName": "",
|
||||
"topParentCellCustomColName": "",
|
||||
"type": "dataSource",
|
||||
"groupType": "default",
|
||||
"displayType": "default"
|
||||
}
|
||||
},
|
||||
{
|
||||
"col": "0",
|
||||
"row": "3",
|
||||
"sheet": "VkjbtPpyX8TggOO4aHSuO",
|
||||
"type": "dataSource",
|
||||
"custom": {
|
||||
"field": "report_user.username",
|
||||
"polymerizationType": "2",
|
||||
"summaryType": "sum",
|
||||
"fillDirection": "portrait",
|
||||
"leftParentCellType": "default",
|
||||
"leftParentCellCustomRowName": "",
|
||||
"leftParentCellCustomColName": "",
|
||||
"topParentCellType": "default",
|
||||
"topParentCellCustomRowName": "",
|
||||
"topParentCellCustomColName": "",
|
||||
"type": "dataSource",
|
||||
"groupType": "default",
|
||||
"displayType": "default"
|
||||
}
|
||||
},
|
||||
{
|
||||
"col": "0",
|
||||
"row": "4",
|
||||
"sheet": "VkjbtPpyX8TggOO4aHSuO",
|
||||
"type": "dataSource",
|
||||
"custom": {
|
||||
"field": "report_user.username",
|
||||
"polymerizationType": "3",
|
||||
"summaryType": "count",
|
||||
"fillDirection": "portrait",
|
||||
"leftParentCellType": "default",
|
||||
"leftParentCellCustomRowName": "",
|
||||
"leftParentCellCustomColName": "",
|
||||
"topParentCellType": "custom",
|
||||
"topParentCellCustomRowName": "A",
|
||||
"topParentCellCustomColName": "3",
|
||||
"type": "dataSource",
|
||||
"displayType": "default"
|
||||
}
|
||||
}
|
||||
],
|
||||
"floatEcharts": {},
|
||||
"cellEcharts": {},
|
||||
"floatImages": {}
|
||||
},
|
||||
"datasets": {
|
||||
"report_user": [
|
||||
{
|
||||
"username": "曦晨",
|
||||
"education": "博士后",
|
||||
"sex": "1",
|
||||
"salary": 2410.0,
|
||||
"departmentnum": "II_6",
|
||||
"organizationName": "广东",
|
||||
"departmentName": "深圳-软件技术支持部"
|
||||
},
|
||||
{
|
||||
"username": "昊明",
|
||||
"education": "本科",
|
||||
"sex": "1",
|
||||
"salary": 3639.0,
|
||||
"departmentnum": "II_6",
|
||||
"organizationName": "广东",
|
||||
"departmentName": "深圳-软件技术支持部"
|
||||
},
|
||||
{
|
||||
"username": "昊硕",
|
||||
"education": "本科",
|
||||
"sex": "1",
|
||||
"salary": 2101.0,
|
||||
"departmentnum": "II_6",
|
||||
"organizationName": "广东",
|
||||
"departmentName": "深圳-软件技术支持部"
|
||||
},
|
||||
{
|
||||
"username": "欧阳",
|
||||
"education": "本科",
|
||||
"sex": "1",
|
||||
"salary": 5863.0,
|
||||
"departmentnum": "II_6",
|
||||
"organizationName": "广东",
|
||||
"departmentName": "深圳-软件技术支持部"
|
||||
},
|
||||
{
|
||||
"username": "王忠亮",
|
||||
"education": "高中",
|
||||
"sex": "2",
|
||||
"salary": 6128.0,
|
||||
"departmentnum": "II_6",
|
||||
"organizationName": "广东",
|
||||
"departmentName": "深圳-软件技术支持部"
|
||||
},
|
||||
{
|
||||
"username": "吴忠民",
|
||||
"education": "本科",
|
||||
"sex": "1",
|
||||
"salary": 3839.0,
|
||||
"departmentnum": "II_6",
|
||||
"organizationName": "广东",
|
||||
"departmentName": "深圳-软件技术支持部"
|
||||
}
|
||||
]
|
||||
},
|
||||
"params": {},
|
||||
"expect": {
|
||||
"VkjbtPpyX8TggOO4aHSuO": {
|
||||
"1,0": "广东",
|
||||
"2,0": "深圳-软件技术支持部",
|
||||
"3,0": "曦晨",
|
||||
"4,0": "曦晨",
|
||||
"5,0": "昊明",
|
||||
"6,0": "昊硕",
|
||||
"7,0": "欧阳",
|
||||
"8,0": "王忠亮",
|
||||
"9,0": "吴忠民"
|
||||
}
|
||||
}
|
||||
}
|
||||
+49
@@ -0,0 +1,49 @@
|
||||
{
|
||||
"name": "jnpf_export_list_portrait",
|
||||
"comment": "真实 JNPF 导出字段风格:字符串行列、fillDirection、polymerizationType",
|
||||
"snapshot": {
|
||||
"sheets": {
|
||||
"E-ZBgdonv3JP-AKiPx-Dz": {
|
||||
"id": "E-ZBgdonv3JP-AKiPx-Dz",
|
||||
"cellData": {
|
||||
"2": { "0": { "v": "" } }
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"cells": {
|
||||
"cells": [
|
||||
{
|
||||
"col": "0",
|
||||
"row": "2",
|
||||
"sheet": "E-ZBgdonv3JP-AKiPx-Dz",
|
||||
"type": "dataSource",
|
||||
"custom": {
|
||||
"field": "user.name",
|
||||
"polymerizationType": "1",
|
||||
"summaryType": "sum",
|
||||
"fillDirection": "portrait",
|
||||
"leftParentCellType": "default",
|
||||
"leftParentCellCustomRowName": "",
|
||||
"leftParentCellCustomColName": "",
|
||||
"topParentCellType": "default",
|
||||
"topParentCellCustomRowName": "",
|
||||
"topParentCellCustomColName": ""
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"datasets": {
|
||||
"user": [
|
||||
{ "name": "Alice" },
|
||||
{ "name": "Bob" }
|
||||
]
|
||||
},
|
||||
"params": {},
|
||||
"expect": {
|
||||
"E-ZBgdonv3JP-AKiPx-Dz": {
|
||||
"2,0": "Alice",
|
||||
"3,0": "Bob"
|
||||
}
|
||||
}
|
||||
}
|
||||
+60
@@ -0,0 +1,60 @@
|
||||
{
|
||||
"name": "jnpf_header_merge_list",
|
||||
"source": "jnpf",
|
||||
"comment": "表头 merge + 列表扩展(merge 行在扩展区上方保持不变)",
|
||||
"snapshot": {
|
||||
"sheets": {
|
||||
"sheet1": {
|
||||
"id": "sheet1",
|
||||
"mergeData": [
|
||||
{ "startRow": 0, "endRow": 0, "startColumn": 0, "endColumn": 1 }
|
||||
],
|
||||
"cellData": {
|
||||
"0": { "0": { "v": "销售明细" }, "1": { "v": "" } },
|
||||
"1": { "0": { "v": "" }, "1": { "v": "" } }
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"cells": {
|
||||
"cells": [
|
||||
{
|
||||
"type": "dataSource",
|
||||
"sheet": "sheet1",
|
||||
"row": 1,
|
||||
"col": 0,
|
||||
"custom": {
|
||||
"dataSetName": "items",
|
||||
"field": "name",
|
||||
"polymerizationType": "1",
|
||||
"expand": "down"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "dataSource",
|
||||
"sheet": "sheet1",
|
||||
"row": 1,
|
||||
"col": 1,
|
||||
"custom": {
|
||||
"dataSetName": "items",
|
||||
"field": "qty",
|
||||
"polymerizationType": "1",
|
||||
"expand": "down"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"datasets": {
|
||||
"items": [{ "name": "A", "qty": 1 }, { "name": "B", "qty": 2 }]
|
||||
},
|
||||
"params": {},
|
||||
"expect": {
|
||||
"sheet1": {
|
||||
"0,0": "销售明细",
|
||||
"1,0": "A",
|
||||
"2,0": "B",
|
||||
"1,1": "1",
|
||||
"2,1": "2"
|
||||
}
|
||||
}
|
||||
}
|
||||
+66
@@ -0,0 +1,66 @@
|
||||
{
|
||||
"name": "jnpf_parent_group_down",
|
||||
"comment": "左父格默认:分组列 + 列表子列按父格 dataList 扩展",
|
||||
"snapshot": {
|
||||
"sheets": {
|
||||
"sheet1": {
|
||||
"id": "sheet1",
|
||||
"cellData": {
|
||||
"1": { "0": { "v": "" }, "1": { "v": "" } }
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"cells": {
|
||||
"cells": [
|
||||
{
|
||||
"col": "0",
|
||||
"row": "1",
|
||||
"sheet": "sheet1",
|
||||
"type": "dataSource",
|
||||
"custom": {
|
||||
"field": "order.category",
|
||||
"dataSetName": "order",
|
||||
"polymerizationType": "2",
|
||||
"fillDirection": "portrait",
|
||||
"expand": "down",
|
||||
"leftParentCellType": "default",
|
||||
"topParentCellType": "default"
|
||||
}
|
||||
},
|
||||
{
|
||||
"col": "1",
|
||||
"row": "1",
|
||||
"sheet": "sheet1",
|
||||
"type": "dataSource",
|
||||
"custom": {
|
||||
"field": "order.product",
|
||||
"dataSetName": "order",
|
||||
"polymerizationType": "1",
|
||||
"fillDirection": "portrait",
|
||||
"expand": "down",
|
||||
"leftParentCellType": "default",
|
||||
"topParentCellType": "default"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"datasets": {
|
||||
"order": [
|
||||
{ "category": "A", "product": "p1" },
|
||||
{ "category": "A", "product": "p2" },
|
||||
{ "category": "B", "product": "p3" }
|
||||
]
|
||||
},
|
||||
"params": {},
|
||||
"expect": {
|
||||
"sheet1": {
|
||||
"1,0": "A",
|
||||
"2,0": "A",
|
||||
"3,0": "B",
|
||||
"1,1": "p1",
|
||||
"2,1": "p2",
|
||||
"3,1": "p3"
|
||||
}
|
||||
}
|
||||
}
|
||||
+43
@@ -0,0 +1,43 @@
|
||||
{
|
||||
"name": "jnpf_poly_summary_sum",
|
||||
"comment": "polymerizationType=3 汇总格,summaryType=sum",
|
||||
"snapshot": {
|
||||
"sheets": {
|
||||
"sheet1": {
|
||||
"id": "sheet1",
|
||||
"cellData": { "0": { "1": { "v": "" } } }
|
||||
}
|
||||
}
|
||||
},
|
||||
"cells": {
|
||||
"cells": [
|
||||
{
|
||||
"col": "1",
|
||||
"row": "0",
|
||||
"sheet": "sheet1",
|
||||
"type": "dataSource",
|
||||
"custom": {
|
||||
"field": "order.amount",
|
||||
"dataSetName": "order",
|
||||
"polymerizationType": "3",
|
||||
"summaryType": "sum",
|
||||
"leftParentCellType": "none",
|
||||
"topParentCellType": "none"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"datasets": {
|
||||
"order": [
|
||||
{ "amount": 10 },
|
||||
{ "amount": 20 },
|
||||
{ "amount": 5 }
|
||||
]
|
||||
},
|
||||
"params": {},
|
||||
"expect": {
|
||||
"sheet1": {
|
||||
"0,1": "35.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
+51
@@ -0,0 +1,51 @@
|
||||
{
|
||||
"name": "jnpf_prod_convert_date",
|
||||
"source": "jnpf",
|
||||
"comment": "convertConfig date 格式转换后列表扩展",
|
||||
"snapshot": {
|
||||
"sheets": {
|
||||
"sheet1": {
|
||||
"id": "sheet1",
|
||||
"cellData": {
|
||||
"1": { "0": { "v": "" } }
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"cells": {
|
||||
"cells": [
|
||||
{
|
||||
"type": "dataSource",
|
||||
"sheet": "sheet1",
|
||||
"row": 1,
|
||||
"col": 0,
|
||||
"custom": {
|
||||
"dataSetName": "order",
|
||||
"field": "createdAt",
|
||||
"polymerizationType": "1",
|
||||
"expand": "down"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"convert_config": [
|
||||
{
|
||||
"field": "order.createdAt",
|
||||
"type": "date",
|
||||
"config": { "format": "yyyy-MM-dd" }
|
||||
}
|
||||
],
|
||||
"datasets": {
|
||||
"order": [
|
||||
{ "createdAt": "2026-05-20T10:00:00" },
|
||||
{ "createdAt": "2026-05-21T15:30:00" }
|
||||
]
|
||||
},
|
||||
"params": {},
|
||||
"expect": {
|
||||
"sheet1": {
|
||||
"1,0": "2026-05-20",
|
||||
"2,0": "2026-05-21"
|
||||
}
|
||||
}
|
||||
}
|
||||
+48
@@ -0,0 +1,48 @@
|
||||
{
|
||||
"name": "jnpf_prod_convert_number",
|
||||
"source": "jnpf",
|
||||
"comment": "convertConfig number 千分位与精度",
|
||||
"snapshot": {
|
||||
"sheets": {
|
||||
"sheet1": {
|
||||
"id": "sheet1",
|
||||
"cellData": {
|
||||
"1": { "0": { "v": "" } }
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"cells": {
|
||||
"cells": [
|
||||
{
|
||||
"type": "dataSource",
|
||||
"sheet": "sheet1",
|
||||
"row": 1,
|
||||
"col": 0,
|
||||
"custom": {
|
||||
"dataSetName": "sales",
|
||||
"field": "amount",
|
||||
"polymerizationType": "1",
|
||||
"expand": "down"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"convert_config": [
|
||||
{
|
||||
"field": "sales.amount",
|
||||
"type": "number",
|
||||
"config": { "precision": 2, "thousands": true }
|
||||
}
|
||||
],
|
||||
"datasets": {
|
||||
"sales": [{ "amount": 1234.5 }, { "amount": 1000000 }]
|
||||
},
|
||||
"params": {},
|
||||
"expect": {
|
||||
"sheet1": {
|
||||
"1,0": "1,234.50",
|
||||
"2,0": "1,000,000.00"
|
||||
}
|
||||
}
|
||||
}
|
||||
+69
@@ -0,0 +1,69 @@
|
||||
{
|
||||
"name": "jnpf_prod_convert_select",
|
||||
"comment": "convertConfig select 枚举转换后再列表扩展",
|
||||
"snapshot": {
|
||||
"sheets": {
|
||||
"sheet1": {
|
||||
"id": "sheet1",
|
||||
"cellData": {
|
||||
"1": { "0": { "v": "" }, "1": { "v": "" } }
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"cells": {
|
||||
"cells": [
|
||||
{
|
||||
"type": "dataSource",
|
||||
"sheet": "sheet1",
|
||||
"row": 1,
|
||||
"col": 0,
|
||||
"custom": {
|
||||
"dataSetName": "order",
|
||||
"field": "status",
|
||||
"polymerizationType": "1",
|
||||
"expand": "down"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "dataSource",
|
||||
"sheet": "sheet1",
|
||||
"row": 1,
|
||||
"col": 1,
|
||||
"custom": {
|
||||
"dataSetName": "order",
|
||||
"field": "amount",
|
||||
"polymerizationType": "1",
|
||||
"expand": "down"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"convert_config": [
|
||||
{
|
||||
"field": "order.status",
|
||||
"type": "select",
|
||||
"config": {
|
||||
"options": [
|
||||
{ "id": 1, "fullName": "待审" },
|
||||
{ "id": 2, "fullName": "完成" }
|
||||
]
|
||||
}
|
||||
}
|
||||
],
|
||||
"datasets": {
|
||||
"order": [
|
||||
{ "status": 1, "amount": 100 },
|
||||
{ "status": 2, "amount": 200 }
|
||||
]
|
||||
},
|
||||
"params": {},
|
||||
"expect": {
|
||||
"sheet1": {
|
||||
"1,0": "待审",
|
||||
"2,0": "完成",
|
||||
"1,1": "100",
|
||||
"2,1": "200"
|
||||
}
|
||||
}
|
||||
}
|
||||
+74
@@ -0,0 +1,74 @@
|
||||
{
|
||||
"name": "jnpf_prod_convert_user_inline",
|
||||
"source": "jnpf",
|
||||
"comment": "convertConfig user 类型(inline names 映射,对标 DataSetSwapUtil)",
|
||||
"snapshot": {
|
||||
"sheets": {
|
||||
"sheet1": {
|
||||
"id": "sheet1",
|
||||
"cellData": {
|
||||
"1": { "0": { "v": "" }, "1": { "v": "" } }
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"cells": {
|
||||
"cells": [
|
||||
{
|
||||
"type": "dataSource",
|
||||
"sheet": "sheet1",
|
||||
"row": 1,
|
||||
"col": 0,
|
||||
"custom": {
|
||||
"dataSetName": "task",
|
||||
"field": "ownerId",
|
||||
"polymerizationType": "1",
|
||||
"expand": "down"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "dataSource",
|
||||
"sheet": "sheet1",
|
||||
"row": 1,
|
||||
"col": 1,
|
||||
"custom": {
|
||||
"dataSetName": "task",
|
||||
"field": "deptId",
|
||||
"polymerizationType": "1",
|
||||
"expand": "down"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"convert_config": [
|
||||
{
|
||||
"field": "task.ownerId",
|
||||
"type": "user",
|
||||
"config": {
|
||||
"names": { "u1": "张三", "u2": "李四" }
|
||||
}
|
||||
},
|
||||
{
|
||||
"field": "task.deptId",
|
||||
"type": "department",
|
||||
"config": {
|
||||
"names": { "d1": "销售部", "d2": "研发部" }
|
||||
}
|
||||
}
|
||||
],
|
||||
"datasets": {
|
||||
"task": [
|
||||
{ "ownerId": "u1", "deptId": "d1" },
|
||||
{ "ownerId": "u2", "deptId": "d2" }
|
||||
]
|
||||
},
|
||||
"params": {},
|
||||
"expect": {
|
||||
"sheet1": {
|
||||
"1,0": "张三",
|
||||
"2,0": "李四",
|
||||
"1,1": "销售部",
|
||||
"2,1": "研发部"
|
||||
}
|
||||
}
|
||||
}
|
||||
+48
@@ -0,0 +1,48 @@
|
||||
{
|
||||
"name": "jnpf_prod_field_mapping",
|
||||
"comment": "field_mapping 重命名后绑定字段可正确列表扩展",
|
||||
"snapshot": {
|
||||
"sheets": {
|
||||
"sheet1": {
|
||||
"id": "sheet1",
|
||||
"cellData": {
|
||||
"1": { "0": { "v": "" } }
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"cells": {
|
||||
"cells": [
|
||||
{
|
||||
"type": "dataSource",
|
||||
"sheet": "sheet1",
|
||||
"row": 1,
|
||||
"col": 0,
|
||||
"custom": {
|
||||
"dataSetName": "order",
|
||||
"field": "product",
|
||||
"polymerizationType": "1",
|
||||
"expand": "down"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"field_mapping": {
|
||||
"order": {
|
||||
"product_code": "product"
|
||||
}
|
||||
},
|
||||
"datasets": {
|
||||
"order": [
|
||||
{ "product_code": "P1" },
|
||||
{ "product_code": "P2" }
|
||||
]
|
||||
},
|
||||
"params": {},
|
||||
"expect": {
|
||||
"sheet1": {
|
||||
"1,0": "P1",
|
||||
"2,0": "P2"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,80 @@
|
||||
{
|
||||
"name": "jnpf_export_style_mvp",
|
||||
"comment": "对齐 JNPF 导出 cells 结构:parameter #{x}、dataSource expand、全表占位",
|
||||
"snapshot": {
|
||||
"sheets": {
|
||||
"sheet1": {
|
||||
"id": "sheet1",
|
||||
"cellData": {
|
||||
"0": {
|
||||
"0": { "v": "Report: #{title}" },
|
||||
"1": { "v": "" }
|
||||
},
|
||||
"1": {
|
||||
"0": { "v": "" },
|
||||
"1": { "v": "" }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"cells": {
|
||||
"cells": [
|
||||
{
|
||||
"type": "parameter",
|
||||
"sheet": "sheet1",
|
||||
"row": 0,
|
||||
"col": 1,
|
||||
"custom": {
|
||||
"type": "parameter",
|
||||
"value": "#{dept}",
|
||||
"field": "dept"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "dataSource",
|
||||
"sheet": "sheet1",
|
||||
"row": 1,
|
||||
"col": 0,
|
||||
"custom": {
|
||||
"type": "dataSource",
|
||||
"dataSetName": "order",
|
||||
"field": "product",
|
||||
"expand": "down"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "dataSource",
|
||||
"sheet": "sheet1",
|
||||
"row": 1,
|
||||
"col": 1,
|
||||
"custom": {
|
||||
"type": "dataSource",
|
||||
"dataSetName": "order",
|
||||
"field": "amount",
|
||||
"expand": "down"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"datasets": {
|
||||
"order": [
|
||||
{ "product": "P1", "amount": 100 },
|
||||
{ "product": "P2", "amount": 200 }
|
||||
]
|
||||
},
|
||||
"params": {
|
||||
"title": "Sales",
|
||||
"dept": "East"
|
||||
},
|
||||
"expect": {
|
||||
"sheet1": {
|
||||
"0,0": "Report: Sales",
|
||||
"0,1": "East",
|
||||
"1,0": "P1",
|
||||
"2,0": "P2",
|
||||
"1,1": "100",
|
||||
"2,1": "200"
|
||||
}
|
||||
}
|
||||
}
|
||||
+49
@@ -0,0 +1,49 @@
|
||||
{
|
||||
"name": "jnpf_system_params",
|
||||
"source": "jnpf",
|
||||
"comment": "系统参数 + 查询参数合并(parameter_resolver)",
|
||||
"snapshot": {
|
||||
"sheets": {
|
||||
"sheet1": {
|
||||
"id": "sheet1",
|
||||
"cellData": {
|
||||
"0": { "0": { "v": "报表人: #{currentUserName}" }, "1": { "v": "" } },
|
||||
"1": { "0": { "v": "日期: #{currentDate}" }, "1": { "v": "" } }
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"cells": {
|
||||
"cells": [
|
||||
{
|
||||
"type": "parameter",
|
||||
"sheet": "sheet1",
|
||||
"row": 0,
|
||||
"col": 1,
|
||||
"custom": { "value": "#{deptName}" }
|
||||
},
|
||||
{
|
||||
"type": "parameter",
|
||||
"sheet": "sheet1",
|
||||
"row": 1,
|
||||
"col": 1,
|
||||
"custom": { "value": "#{keyword}" }
|
||||
}
|
||||
]
|
||||
},
|
||||
"datasets": {},
|
||||
"params": {
|
||||
"currentUserName": "Admin",
|
||||
"currentDate": "2026-05-22",
|
||||
"deptName": "总部",
|
||||
"keyword": "测试"
|
||||
},
|
||||
"expect": {
|
||||
"sheet1": {
|
||||
"0,0": "报表人: Admin",
|
||||
"0,1": "总部",
|
||||
"1,0": "日期: 2026-05-22",
|
||||
"1,1": "测试"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,83 @@
|
||||
{
|
||||
"name": "jnpf_top_parent_same_row",
|
||||
"comment": "上父格:年(分组,行0) → 月(列表,行0,上父年) → 金额(列表,行0,左父月)",
|
||||
"snapshot": {
|
||||
"sheets": {
|
||||
"sheet1": {
|
||||
"id": "sheet1",
|
||||
"cellData": {
|
||||
"0": { "0": { "v": "" }, "1": { "v": "" }, "2": { "v": "" } },
|
||||
"1": { "0": { "v": "" }, "1": { "v": "" }, "2": { "v": "" } },
|
||||
"2": { "0": { "v": "" }, "1": { "v": "" }, "2": { "v": "" } }
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"cells": {
|
||||
"cells": [
|
||||
{
|
||||
"type": "dataSource",
|
||||
"sheet": "sheet1",
|
||||
"row": 0,
|
||||
"col": 0,
|
||||
"custom": {
|
||||
"dataSetName": "sales",
|
||||
"field": "year",
|
||||
"polymerizationType": "2",
|
||||
"expand": "down",
|
||||
"topParentCellType": "default",
|
||||
"leftParentCellType": "default"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "dataSource",
|
||||
"sheet": "sheet1",
|
||||
"row": 0,
|
||||
"col": 1,
|
||||
"custom": {
|
||||
"dataSetName": "sales",
|
||||
"field": "month",
|
||||
"polymerizationType": "1",
|
||||
"expand": "down",
|
||||
"topParentCellType": "default",
|
||||
"leftParentCellType": "default"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "dataSource",
|
||||
"sheet": "sheet1",
|
||||
"row": 0,
|
||||
"col": 2,
|
||||
"custom": {
|
||||
"dataSetName": "sales",
|
||||
"field": "amount",
|
||||
"polymerizationType": "1",
|
||||
"expand": "down",
|
||||
"topParentCellType": "default",
|
||||
"leftParentCellType": "default"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"datasets": {
|
||||
"sales": [
|
||||
{ "year": 2023, "month": 1, "amount": 10 },
|
||||
{ "year": 2023, "month": 2, "amount": 20 },
|
||||
{ "year": 2024, "month": 1, "amount": 30 }
|
||||
]
|
||||
},
|
||||
"params": {},
|
||||
"expect": {
|
||||
"sheet1": {
|
||||
"0,0": "2023",
|
||||
"1,0": "2023",
|
||||
"2,0": "2024",
|
||||
"0,1": "1",
|
||||
"1,1": "2",
|
||||
"2,1": "1",
|
||||
"0,2": "10",
|
||||
"1,2": "20",
|
||||
"2,2": "30"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,63 @@
|
||||
{
|
||||
"name": "list_expand_down",
|
||||
"snapshot": {
|
||||
"sheets": {
|
||||
"sheet1": {
|
||||
"id": "sheet1",
|
||||
"cellData": {
|
||||
"0": {
|
||||
"0": { "v": "Name" },
|
||||
"1": { "v": "" }
|
||||
},
|
||||
"1": {
|
||||
"0": { "v": "" },
|
||||
"1": { "v": "" }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"cells": {
|
||||
"cells": [
|
||||
{
|
||||
"type": "dataSource",
|
||||
"sheet": "sheet1",
|
||||
"row": 1,
|
||||
"col": 0,
|
||||
"custom": {
|
||||
"type": "dataSource",
|
||||
"dataSetName": "items",
|
||||
"field": "name",
|
||||
"expand": "down"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "dataSource",
|
||||
"sheet": "sheet1",
|
||||
"row": 1,
|
||||
"col": 1,
|
||||
"custom": {
|
||||
"type": "dataSource",
|
||||
"dataSetName": "items",
|
||||
"field": "qty",
|
||||
"expand": "down"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"datasets": {
|
||||
"items": [
|
||||
{ "name": "Apple", "qty": 1 },
|
||||
{ "name": "Banana", "qty": 2 }
|
||||
]
|
||||
},
|
||||
"params": {},
|
||||
"expect": {
|
||||
"sheet1": {
|
||||
"1,0": "Apple",
|
||||
"2,0": "Banana",
|
||||
"1,1": "1",
|
||||
"2,1": "2"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,60 @@
|
||||
{
|
||||
"name": "multi_col_down_align",
|
||||
"comment": "同行多列向下扩展:列数不同,按 max_len 对齐",
|
||||
"snapshot": {
|
||||
"sheets": {
|
||||
"sheet1": {
|
||||
"id": "sheet1",
|
||||
"cellData": {
|
||||
"1": { "0": { "v": "" }, "1": { "v": "" } }
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"cells": {
|
||||
"cells": [
|
||||
{
|
||||
"type": "dataSource",
|
||||
"sheet": "sheet1",
|
||||
"row": 1,
|
||||
"col": 0,
|
||||
"custom": {
|
||||
"type": "dataSource",
|
||||
"dataSetName": "items",
|
||||
"field": "name",
|
||||
"expand": "down"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "dataSource",
|
||||
"sheet": "sheet1",
|
||||
"row": 1,
|
||||
"col": 1,
|
||||
"custom": {
|
||||
"type": "dataSource",
|
||||
"dataSetName": "items",
|
||||
"field": "qty",
|
||||
"expand": "down"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"datasets": {
|
||||
"items": [
|
||||
{ "name": "A", "qty": 1 },
|
||||
{ "name": "B", "qty": 2 },
|
||||
{ "name": "C", "qty": 3 }
|
||||
]
|
||||
},
|
||||
"params": {},
|
||||
"expect": {
|
||||
"sheet1": {
|
||||
"1,0": "A",
|
||||
"2,0": "B",
|
||||
"3,0": "C",
|
||||
"1,1": "1",
|
||||
"2,1": "2",
|
||||
"3,1": "3"
|
||||
}
|
||||
}
|
||||
}
|
||||
+32
@@ -0,0 +1,32 @@
|
||||
{
|
||||
"name": "param_and_placeholder",
|
||||
"snapshot": {
|
||||
"sheets": {
|
||||
"sheet1": {
|
||||
"id": "sheet1",
|
||||
"cellData": {
|
||||
"0": { "0": { "v": "Hello #{userName}" }, "1": { "v": "" } }
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"cells": {
|
||||
"cells": [
|
||||
{
|
||||
"type": "parameter",
|
||||
"sheet": "sheet1",
|
||||
"row": 0,
|
||||
"col": 1,
|
||||
"custom": { "value": "#{dept}" }
|
||||
}
|
||||
]
|
||||
},
|
||||
"datasets": {},
|
||||
"params": { "userName": "Alice", "dept": "Sales" },
|
||||
"expect": {
|
||||
"sheet1": {
|
||||
"0,0": "Hello Alice",
|
||||
"0,1": "Sales"
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user