@qinsilk/scm-agent-tools 0.0.0-stage → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +48 -2
- package/cli/api.js +114 -0
- package/cli/commands/log.js +152 -0
- package/cli/commands/query.js +229 -0
- package/cli/commands/report.js +213 -0
- package/cli/commands/staff.js +505 -0
- package/cli/config.js +46 -0
- package/cli/scm-agent.js +105 -0
- package/cli/skills.js +89 -0
- package/cli/table.js +43 -0
- package/docs/cli.md +180 -0
- package/package.json +27 -4
- package/reports/excel.js +107 -0
- package/reports/factoryEvaluation.js +128 -0
- package/reports/goodsBom.js +648 -0
- package/reports/goodsFirstOrder.js +409 -0
- package/reports/goodsInventory.js +220 -0
- package/reports/goodsSize.js +440 -0
- package/reports/image.js +216 -0
- package/reports/leakCheck.js +694 -0
- package/reports/materialPurchaseExport.js +393 -0
- package/reports/materialTransit.js +593 -0
- package/reports/processFollowup.js +312 -0
- package/reports/produceBoard.js +353 -0
- package/reports/produceCost.js +366 -0
- package/reports/produceCostDetail.js +622 -0
- package/reports/produceDaily.js +485 -0
- package/reports/storeInGoods.js +276 -0
- package/reports/supplierBalance.js +671 -0
- package/reports/ticketStatistics.js +289 -0
- package/reports/util.js +83 -0
- package/skills/bom/345/225/206/345/223/201/344/277/241/346/201/257/SKILL.md +40 -0
- package/skills/qinsilk-scm/SKILL.md +95 -0
- package/skills//344/276/233/345/272/224/345/225/206/345/257/271/350/264/246/345/257/274/345/207/272/SKILL.md +38 -0
- package/skills//345/225/206/345/223/201/345/260/272/345/257/270/344/277/241/346/201/257/SKILL.md +40 -0
- package/skills//345/225/206/345/223/201/351/246/226/345/215/225/351/235/242/346/226/231/345/267/245/345/272/217/345/215/225/344/273/267/SKILL.md +39 -0
- package/skills//345/267/245/345/216/202/350/257/204/344/274/260/346/212/245/350/241/250/SKILL.md +39 -0
- package/skills//346/210/220/345/223/201/345/205/245/345/272/223/346/212/245/350/241/250/SKILL.md +40 -0
- package/skills//346/234/215/350/243/205/346/210/220/345/223/201/347/233/230/345/255/230/350/241/250/SKILL.md +39 -0
- package/skills//346/274/217/346/226/231/346/243/200/346/265/213/346/227/245/346/212/245/SKILL.md +40 -0
- package/skills//347/211/251/346/226/231/345/234/250/351/200/224/347/212/266/346/200/201/346/212/245/350/241/250/SKILL.md +40 -0
- package/skills//347/211/251/346/226/231/351/207/207/350/264/255/345/257/274/345/207/272/SKILL.md +39 -0
- package/skills//347/224/237/344/272/247/345/215/225/345/267/245/345/272/217/350/267/237/350/277/233/350/241/250/SKILL.md +39 -0
- package/skills//347/224/237/344/272/247/346/210/220/346/234/254/346/212/245/350/241/250/SKILL.md +41 -0
- package/skills//347/224/237/344/272/247/346/210/220/346/234/254/346/212/245/350/241/250/346/230/216/347/273/206/SKILL.md +40 -0
- package/skills//347/224/237/344/272/247/346/227/245/346/212/245/SKILL.md +42 -0
- package/skills//347/224/237/344/272/247/347/212/266/345/206/265/347/273/237/350/256/241/350/241/250/SKILL.md +39 -0
- package/skills//347/224/237/344/272/247/350/212/202/347/202/271/347/234/213/346/235/277/SKILL.md +39 -0
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
// 官方报表命令族:16 个报表子命令,每个子命令对应 reports/ 下一个生成模块
|
|
2
|
+
// 与一个官方技能(skills/ 下同名中文技能)。命令负责解析参数与输出结果,
|
|
3
|
+
// 数据获取与文件生成全部在 reports/ 模块内完成。
|
|
4
|
+
// 生成逻辑从原 Python 报表脚本逐列移植,列序、列名、标色、文件名保持一致。
|
|
5
|
+
const path = require('path');
|
|
6
|
+
|
|
7
|
+
/** 报表定义清单:命令名、模块名、参数说明。新增报表时在此登记。 */
|
|
8
|
+
const REPORTS = [
|
|
9
|
+
{
|
|
10
|
+
command: 'produce-daily',
|
|
11
|
+
module: 'produceDaily',
|
|
12
|
+
describe: '生成生产日报 HTML(今日入库、计划出货、生产状态、未齐料风险)',
|
|
13
|
+
options: [
|
|
14
|
+
['date', '日报日期 yyyy-MM-dd,默认今天', 'string'],
|
|
15
|
+
['out', '输出目录,默认当前目录', 'string'],
|
|
16
|
+
],
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
command: 'produce-board',
|
|
20
|
+
module: 'produceBoard',
|
|
21
|
+
describe: '生成生产节点看板 HTML(近 N 天生产单按工序节点排布)',
|
|
22
|
+
options: [
|
|
23
|
+
['days', '统计天数,默认 7', 'number'],
|
|
24
|
+
['out', '输出目录,默认当前目录', 'string'],
|
|
25
|
+
],
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
command: 'store-in-goods',
|
|
29
|
+
module: 'storeInGoods',
|
|
30
|
+
describe: '生成成品入库报表 Excel(列与页面导出一致,嵌单品图)',
|
|
31
|
+
options: [
|
|
32
|
+
['from', '业务日期起 yyyy-MM-dd', 'string'],
|
|
33
|
+
['to', '业务日期止 yyyy-MM-dd', 'string'],
|
|
34
|
+
['sn', '单号关键词', 'string'],
|
|
35
|
+
['out', '输出目录,默认当前目录', 'string'],
|
|
36
|
+
],
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
command: 'factory-evaluation',
|
|
40
|
+
module: 'factoryEvaluation',
|
|
41
|
+
describe: '生成工厂评估报表 Excel(按加工厂汇总单数、裁床数、完成件数、按时交货率)',
|
|
42
|
+
options: [
|
|
43
|
+
['from', '日期起 yyyy-MM-dd,默认一个月前', 'string'],
|
|
44
|
+
['to', '日期止 yyyy-MM-dd,默认今天', 'string'],
|
|
45
|
+
['out', '输出目录,默认当前目录', 'string'],
|
|
46
|
+
],
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
command: 'produce-cost',
|
|
50
|
+
module: 'produceCost',
|
|
51
|
+
describe: '生成生产成本报表 Excel(42 列 + 六类成本差异 + 款式图)',
|
|
52
|
+
options: [
|
|
53
|
+
['from', '日期起 yyyy-MM-dd', 'string'],
|
|
54
|
+
['to', '日期止 yyyy-MM-dd', 'string'],
|
|
55
|
+
['state', '状态筛选,逗号分隔,默认 4,2,3', 'string'],
|
|
56
|
+
['out', '输出目录,默认当前目录', 'string'],
|
|
57
|
+
],
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
command: 'produce-cost-detail',
|
|
61
|
+
module: 'produceCostDetail',
|
|
62
|
+
describe: '生成生产成本报表明细(每个生产单一个 Excel,含五类成本明细)',
|
|
63
|
+
options: [
|
|
64
|
+
['from', '日期起 yyyy-MM-dd', 'string'],
|
|
65
|
+
['to', '日期止 yyyy-MM-dd', 'string'],
|
|
66
|
+
['out', '输出目录,默认当前目录', 'string'],
|
|
67
|
+
],
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
command: 'material-transit',
|
|
71
|
+
module: 'materialTransit',
|
|
72
|
+
describe: '生成物料在途状态报表 Excel(采购在途/已入库未发料/物料缺口三 sheet)',
|
|
73
|
+
options: [
|
|
74
|
+
['days', '统计天数,默认 90', 'number'],
|
|
75
|
+
['out', '输出目录,默认当前目录', 'string'],
|
|
76
|
+
],
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
command: 'material-purchase-export',
|
|
80
|
+
module: 'materialPurchaseExport',
|
|
81
|
+
describe: '生成物料采购导出 Excel(近三个月物料采购子单,39 个业务列)',
|
|
82
|
+
options: [
|
|
83
|
+
['from', '业务日期起 yyyy-MM-dd,默认三个月前', 'string'],
|
|
84
|
+
['to', '业务日期止 yyyy-MM-dd,默认今天', 'string'],
|
|
85
|
+
['out', '输出目录,默认当前目录', 'string'],
|
|
86
|
+
],
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
command: 'supplier-balance',
|
|
90
|
+
module: 'supplierBalance',
|
|
91
|
+
describe: '生成供应商对账 Excel(11 表对账单,每供应商一个文件)',
|
|
92
|
+
options: [
|
|
93
|
+
['supplier', '供应商名称(不传则全部供应商)', 'string'],
|
|
94
|
+
['from', '对账日期起 yyyy-MM-dd', 'string'],
|
|
95
|
+
['to', '对账日期止 yyyy-MM-dd', 'string'],
|
|
96
|
+
['out', '输出目录,默认当前目录', 'string'],
|
|
97
|
+
],
|
|
98
|
+
},
|
|
99
|
+
{
|
|
100
|
+
command: 'leak-check',
|
|
101
|
+
module: 'leakCheck',
|
|
102
|
+
describe: '生成漏料检测日报(每生产单一个「物料数据」Excel,默认隐藏 0 用量行)',
|
|
103
|
+
options: [
|
|
104
|
+
['limit', '最多处理的生产单数,默认 100', 'number'],
|
|
105
|
+
['include-zero', '包含 0 用量行(默认隐藏)', 'boolean'],
|
|
106
|
+
['out', '输出目录,默认当前目录', 'string'],
|
|
107
|
+
],
|
|
108
|
+
},
|
|
109
|
+
{
|
|
110
|
+
command: 'process-followup',
|
|
111
|
+
module: 'processFollowup',
|
|
112
|
+
describe: '生成生产单工序跟进表 Excel(需跟进的工序标红)',
|
|
113
|
+
options: [
|
|
114
|
+
['from', '业务日期起 yyyy-MM-dd', 'string'],
|
|
115
|
+
['to', '业务日期止 yyyy-MM-dd', 'string'],
|
|
116
|
+
['out', '输出目录,默认当前目录', 'string'],
|
|
117
|
+
],
|
|
118
|
+
},
|
|
119
|
+
{
|
|
120
|
+
command: 'goods-inventory',
|
|
121
|
+
module: 'goodsInventory',
|
|
122
|
+
describe: '生成服装成品盘存表 Excel(商品单品库存,动态尺码列)',
|
|
123
|
+
options: [
|
|
124
|
+
['storehouse', '仓库 id(不传则全部仓库)', 'number'],
|
|
125
|
+
['out', '输出目录,默认当前目录', 'string'],
|
|
126
|
+
],
|
|
127
|
+
},
|
|
128
|
+
{
|
|
129
|
+
command: 'ticket-statistics',
|
|
130
|
+
module: 'ticketStatistics',
|
|
131
|
+
describe: '生成生产状况统计表 Excel(按部门与货号汇总领货、交货、裁床开始日期)',
|
|
132
|
+
options: [
|
|
133
|
+
['from', '编菲日期起 yyyy-MM-dd(不传则不限)', 'string'],
|
|
134
|
+
['to', '编菲日期止 yyyy-MM-dd(不传则不限)', 'string'],
|
|
135
|
+
['out', '输出目录,默认当前目录', 'string'],
|
|
136
|
+
],
|
|
137
|
+
},
|
|
138
|
+
{
|
|
139
|
+
command: 'goods-bom',
|
|
140
|
+
module: 'goodsBom',
|
|
141
|
+
describe: '生成 BOM 商品信息 Excel(每商品一个文件:商品信息 + BOM + 物料单品)',
|
|
142
|
+
options: [
|
|
143
|
+
['sn', '只导指定款号', 'string'],
|
|
144
|
+
['limit', '最多导出的商品数,默认 100', 'number'],
|
|
145
|
+
['out', '输出目录,默认当前目录', 'string'],
|
|
146
|
+
],
|
|
147
|
+
},
|
|
148
|
+
{
|
|
149
|
+
command: 'goods-size',
|
|
150
|
+
module: 'goodsSize',
|
|
151
|
+
describe: '生成商品尺寸信息 Excel(每商品一个文件,默认部位纵向尺码横向)',
|
|
152
|
+
options: [
|
|
153
|
+
['sn', '只导指定款号', 'string'],
|
|
154
|
+
['limit', '最多导出的商品数,默认 100', 'number'],
|
|
155
|
+
['transpose', '转置为「尺寸纵向」', 'boolean'],
|
|
156
|
+
['out', '输出目录,默认当前目录', 'string'],
|
|
157
|
+
],
|
|
158
|
+
},
|
|
159
|
+
{
|
|
160
|
+
command: 'goods-first-order',
|
|
161
|
+
module: 'goodsFirstOrder',
|
|
162
|
+
describe: '生成商品首单面料工序单价 Excel(商品信息 + 首单 BOM 面料 + 工序单价)',
|
|
163
|
+
options: [
|
|
164
|
+
['sn', '只导指定款号', 'string'],
|
|
165
|
+
['limit', '最多导出的商品数,默认 100', 'number'],
|
|
166
|
+
['out', '输出目录,默认当前目录', 'string'],
|
|
167
|
+
],
|
|
168
|
+
},
|
|
169
|
+
];
|
|
170
|
+
|
|
171
|
+
/**
|
|
172
|
+
* 执行一个报表:调用 reports/<module> 的 generate(argv),输出汇总与文件路径。
|
|
173
|
+
* 报表内部可能分页多次请求(内置节流),因此耗时可能较长。
|
|
174
|
+
*/
|
|
175
|
+
async function runReport(argv, moduleFile) {
|
|
176
|
+
try {
|
|
177
|
+
const mod = require(path.join(__dirname, '..', '..', 'reports', moduleFile));
|
|
178
|
+
const { filePaths, summary } = await mod.generate(argv);
|
|
179
|
+
if (summary) {
|
|
180
|
+
console.log(summary);
|
|
181
|
+
}
|
|
182
|
+
for (const filePath of filePaths || []) {
|
|
183
|
+
console.log(`文件:${filePath}`);
|
|
184
|
+
}
|
|
185
|
+
} catch (e) {
|
|
186
|
+
console.error(`错误:${e.message}`);
|
|
187
|
+
process.exitCode = 1;
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
const report = {
|
|
192
|
+
command: 'report',
|
|
193
|
+
describe: '生成官方报表(Excel/HTML 文件,对应官方技能库)',
|
|
194
|
+
builder(yargs) {
|
|
195
|
+
let chain = yargs;
|
|
196
|
+
for (const def of REPORTS) {
|
|
197
|
+
chain = chain.command({
|
|
198
|
+
command: def.command,
|
|
199
|
+
describe: def.describe,
|
|
200
|
+
builder: (y) => {
|
|
201
|
+
for (const [name, describe, type] of def.options) {
|
|
202
|
+
y = y.option(name, { describe, type });
|
|
203
|
+
}
|
|
204
|
+
return y;
|
|
205
|
+
},
|
|
206
|
+
handler: (argv) => runReport(argv, def.module),
|
|
207
|
+
});
|
|
208
|
+
}
|
|
209
|
+
return chain.demandCommand(1, '请指定报表名。查看全部报表:scm-agent report --help');
|
|
210
|
+
},
|
|
211
|
+
};
|
|
212
|
+
|
|
213
|
+
module.exports = { report, REPORTS };
|