78 lines
2.2 KiB
Go
78 lines
2.2 KiB
Go
// 将 raw fixture(各处理器原始 JSON)经 BuildReportFromRawSources 转化为与线上一致的完整报告 JSON。
|
||
//
|
||
// go run ./cmd/qygl_report_build -in resources/dev-report/fixture.raw.example.json -out resources/dev-report/built.json
|
||
// go run ./cmd/qygl_report_build -in raw.json -out - # 输出到 stdout
|
||
package main
|
||
|
||
import (
|
||
"encoding/json"
|
||
"flag"
|
||
"fmt"
|
||
"log"
|
||
"os"
|
||
|
||
"hyapi-server/internal/domains/api/services/processors/qygl"
|
||
)
|
||
|
||
type rawBundle struct {
|
||
Kind string `json:"kind"`
|
||
|
||
JiguangFull map[string]interface{} `json:"jiguangFull"`
|
||
JudicialCertFull map[string]interface{} `json:"judicialCertFull"`
|
||
EquityPanorama map[string]interface{} `json:"equityPanorama"`
|
||
AnnualReport map[string]interface{} `json:"annualReport"`
|
||
TaxViolation map[string]interface{} `json:"taxViolation"`
|
||
TaxArrears map[string]interface{} `json:"taxArrears"`
|
||
}
|
||
|
||
func main() {
|
||
inPath := flag.String("in", "", "raw fixture JSON 路径(含 jiguangFull 等字段,可参考 fixture.raw.example.json)")
|
||
outPath := flag.String("out", "", "输出文件;- 或留空表示输出到 stdout")
|
||
flag.Parse()
|
||
|
||
if *inPath == "" {
|
||
log.Fatal("请指定 -in <raw.json>")
|
||
}
|
||
raw, err := os.ReadFile(*inPath)
|
||
if err != nil {
|
||
log.Fatalf("读取输入失败: %v", err)
|
||
}
|
||
|
||
var b rawBundle
|
||
if err := json.Unmarshal(raw, &b); err != nil {
|
||
log.Fatalf("解析 JSON 失败: %v", err)
|
||
}
|
||
|
||
if b.Kind == "full" {
|
||
log.Fatal("输入为 kind=full(已是 build 结果),无需再转化;预览请用: go run ./cmd/qygl_report_preview")
|
||
}
|
||
if b.Kind != "" && b.Kind != "raw" {
|
||
log.Fatalf("若填写 kind,仅支持 raw,当前: %q", b.Kind)
|
||
}
|
||
|
||
report := qygl.BuildReportFromRawSources(
|
||
b.JiguangFull,
|
||
b.JudicialCertFull,
|
||
b.EquityPanorama,
|
||
b.AnnualReport,
|
||
b.TaxViolation,
|
||
b.TaxArrears,
|
||
)
|
||
|
||
out, err := json.MarshalIndent(report, "", " ")
|
||
if err != nil {
|
||
log.Fatalf("序列化报告失败: %v", err)
|
||
}
|
||
|
||
if *outPath == "" || *outPath == "-" {
|
||
if _, err := os.Stdout.Write(append(out, '\n')); err != nil {
|
||
log.Fatal(err)
|
||
}
|
||
return
|
||
}
|
||
if err := os.WriteFile(*outPath, append(out, '\n'), 0644); err != nil {
|
||
log.Fatalf("写入失败: %v", err)
|
||
}
|
||
fmt.Fprintf(os.Stderr, "已写入 %s\n", *outPath)
|
||
}
|