372 lines
10 KiB
Go
372 lines
10 KiB
Go
package report
|
|
|
|
import (
|
|
"context"
|
|
|
|
reportSvc "dataengine/common/report"
|
|
"dataengine/common/report/model"
|
|
|
|
"gitea.redpowerfuture.com/red-future/common/beans"
|
|
"github.com/gogf/gf/v2/frame/g"
|
|
)
|
|
|
|
type report struct{}
|
|
|
|
var ReportController = new(report)
|
|
|
|
func svc() *reportSvc.ReportService {
|
|
return reportSvc.GetService()
|
|
}
|
|
|
|
func ctxWithUser(ctx context.Context) context.Context {
|
|
return context.WithValue(ctx, "user", &beans.User{UserName: "admin", TenantId: 1})
|
|
}
|
|
|
|
// ============================================================
|
|
// 业务 CRUD
|
|
// ============================================================
|
|
|
|
type listBusinessesReq struct {
|
|
g.Meta `path:"/businesses" method:"get" tags:"报表引擎" summary:"业务列表"`
|
|
}
|
|
|
|
type listBusinessesRes struct {
|
|
List []model.BusinessConfig `json:"list"`
|
|
}
|
|
|
|
func (c *report) ListBusinesses(ctx context.Context, req *listBusinessesReq) (*listBusinessesRes, error) {
|
|
ctx = ctxWithUser(ctx)
|
|
list, err := svc().GetAllBusinesses(ctx)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return &listBusinessesRes{List: list}, nil
|
|
}
|
|
|
|
type getBusinessReq struct {
|
|
g.Meta `path:"/business" method:"get" tags:"报表引擎" summary:"获取业务"`
|
|
ID int64 `json:"id" v:"required"`
|
|
}
|
|
|
|
type getBusinessRes struct {
|
|
Data *model.BusinessConfig `json:"data"`
|
|
}
|
|
|
|
func (c *report) GetBusiness(ctx context.Context, req *getBusinessReq) (*getBusinessRes, error) {
|
|
ctx = ctxWithUser(ctx)
|
|
data, err := svc().GetBusiness(ctx, req.ID)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return &getBusinessRes{Data: data}, nil
|
|
}
|
|
|
|
type saveBusinessReq struct {
|
|
g.Meta `path:"/business/save" method:"post" tags:"报表引擎" summary:"保存业务"`
|
|
model.SaveBusinessReq
|
|
}
|
|
|
|
type saveBusinessRes struct {
|
|
*model.SaveResult
|
|
}
|
|
|
|
func (c *report) SaveBusiness(ctx context.Context, req *saveBusinessReq) (*saveBusinessRes, error) {
|
|
ctx = ctxWithUser(ctx)
|
|
result, err := svc().SaveBusiness(ctx, &req.SaveBusinessReq)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return &saveBusinessRes{SaveResult: result}, nil
|
|
}
|
|
|
|
type deleteBusinessReq struct {
|
|
g.Meta `path:"/business" method:"delete" tags:"报表引擎" summary:"删除业务"`
|
|
ID int64 `json:"id" v:"required"`
|
|
}
|
|
|
|
type deleteBusinessRes struct {
|
|
*model.DeleteResult
|
|
}
|
|
|
|
func (c *report) DeleteBusiness(ctx context.Context, req *deleteBusinessReq) (*deleteBusinessRes, error) {
|
|
ctx = ctxWithUser(ctx)
|
|
result, err := svc().DeleteBusiness(ctx, req.ID)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return &deleteBusinessRes{DeleteResult: result}, nil
|
|
}
|
|
|
|
// ============================================================
|
|
// 报表 CRUD
|
|
// ============================================================
|
|
|
|
type listReportsReq struct {
|
|
g.Meta `path:"/reports" method:"get" tags:"报表引擎" summary:"报表列表"`
|
|
BusinessCode string `json:"businessCode" v:"required"`
|
|
}
|
|
|
|
type listReportsRes struct {
|
|
List []model.ReportConfig `json:"list"`
|
|
}
|
|
|
|
func (c *report) ListReports(ctx context.Context, req *listReportsReq) (*listReportsRes, error) {
|
|
ctx = ctxWithUser(ctx)
|
|
list, err := svc().GetAllReports(ctx, req.BusinessCode)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return &listReportsRes{List: list}, nil
|
|
}
|
|
|
|
type getReportReq struct {
|
|
g.Meta `path:"/report" method:"get" tags:"报表引擎" summary:"获取报表"`
|
|
ID int64 `json:"id" v:"required"`
|
|
}
|
|
|
|
type getReportRes struct {
|
|
Data *model.ReportConfig `json:"data"`
|
|
}
|
|
|
|
func (c *report) GetReport(ctx context.Context, req *getReportReq) (*getReportRes, error) {
|
|
ctx = ctxWithUser(ctx)
|
|
data, err := svc().GetReport(ctx, req.ID)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return &getReportRes{Data: data}, nil
|
|
}
|
|
|
|
type saveReportReq struct {
|
|
g.Meta `path:"/report/save" method:"post" tags:"报表引擎" summary:"保存报表"`
|
|
model.SaveReportReq
|
|
}
|
|
|
|
type saveReportRes struct {
|
|
*model.SaveResult
|
|
}
|
|
|
|
func (c *report) SaveReport(ctx context.Context, req *saveReportReq) (*saveReportRes, error) {
|
|
ctx = ctxWithUser(ctx)
|
|
result, err := svc().SaveReport(ctx, &req.SaveReportReq)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return &saveReportRes{SaveResult: result}, nil
|
|
}
|
|
|
|
type deleteReportReq struct {
|
|
g.Meta `path:"/report" method:"delete" tags:"报表引擎" summary:"删除报表"`
|
|
ID int64 `json:"id" v:"required"`
|
|
}
|
|
|
|
type deleteReportRes struct {
|
|
*model.DeleteResult
|
|
}
|
|
|
|
func (c *report) DeleteReport(ctx context.Context, req *deleteReportReq) (*deleteReportRes, error) {
|
|
ctx = ctxWithUser(ctx)
|
|
result, err := svc().DeleteReport(ctx, req.ID)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return &deleteReportRes{DeleteResult: result}, nil
|
|
}
|
|
|
|
// ============================================================
|
|
// 字段 CRUD
|
|
// ============================================================
|
|
|
|
type getReportFieldsReq struct {
|
|
g.Meta `path:"/fields" method:"get" tags:"报表引擎" summary:"报表字段列表(按角色分组)"`
|
|
BusinessCode string `json:"businessCode" v:"required"`
|
|
ReportCode string `json:"reportCode" v:"required"`
|
|
}
|
|
|
|
func (c *report) GetReportFields(ctx context.Context, req *getReportFieldsReq) (*model.GetReportFieldsResp, error) {
|
|
ctx = ctxWithUser(ctx)
|
|
return svc().GetReportFields(ctx, req.BusinessCode, req.ReportCode)
|
|
}
|
|
|
|
type getFieldReq struct {
|
|
g.Meta `path:"/field" method:"get" tags:"报表引擎" summary:"获取字段"`
|
|
ID int64 `json:"id" v:"required"`
|
|
}
|
|
|
|
type getFieldRes struct {
|
|
Data *model.FieldConfig `json:"data"`
|
|
}
|
|
|
|
func (c *report) GetField(ctx context.Context, req *getFieldReq) (*getFieldRes, error) {
|
|
ctx = ctxWithUser(ctx)
|
|
data, err := svc().GetField(ctx, req.ID)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return &getFieldRes{Data: data}, nil
|
|
}
|
|
|
|
type saveFieldReq struct {
|
|
g.Meta `path:"/field/save" method:"post" tags:"报表引擎" summary:"保存字段"`
|
|
model.SaveFieldReq
|
|
}
|
|
|
|
type saveFieldRes struct {
|
|
*model.SaveResult
|
|
}
|
|
|
|
func (c *report) SaveField(ctx context.Context, req *saveFieldReq) (*saveFieldRes, error) {
|
|
ctx = ctxWithUser(ctx)
|
|
result, err := svc().SaveField(ctx, &req.SaveFieldReq)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return &saveFieldRes{SaveResult: result}, nil
|
|
}
|
|
|
|
type deleteFieldReq struct {
|
|
g.Meta `path:"/field" method:"delete" tags:"报表引擎" summary:"删除字段"`
|
|
ID int64 `json:"id" v:"required"`
|
|
}
|
|
|
|
type deleteFieldRes struct {
|
|
*model.DeleteResult
|
|
}
|
|
|
|
func (c *report) DeleteField(ctx context.Context, req *deleteFieldReq) (*deleteFieldRes, error) {
|
|
ctx = ctxWithUser(ctx)
|
|
result, err := svc().DeleteField(ctx, req.ID)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return &deleteFieldRes{DeleteResult: result}, nil
|
|
}
|
|
|
|
// ============================================================
|
|
// 抽取配置 CRUD
|
|
// ============================================================
|
|
|
|
type getExtractConfigsReq struct {
|
|
g.Meta `path:"/extractConfigs" method:"get" tags:"报表引擎" summary:"抽取配置列表"`
|
|
BusinessCode string `json:"businessCode" v:"required"`
|
|
ReportCode string `json:"reportCode" v:"required"`
|
|
}
|
|
|
|
type getExtractConfigsRes struct {
|
|
List []model.ExtractConfig `json:"list"`
|
|
}
|
|
|
|
func (c *report) GetExtractConfigs(ctx context.Context, req *getExtractConfigsReq) (*getExtractConfigsRes, error) {
|
|
ctx = ctxWithUser(ctx)
|
|
list, err := svc().GetExtractConfigs(ctx, req.BusinessCode, req.ReportCode)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return &getExtractConfigsRes{List: list}, nil
|
|
}
|
|
|
|
type getExtractConfigReq struct {
|
|
g.Meta `path:"/extractConfig" method:"get" tags:"报表引擎" summary:"获取抽取配置"`
|
|
ID int64 `json:"id" v:"required"`
|
|
}
|
|
|
|
type getExtractConfigRes struct {
|
|
Data *model.ExtractConfig `json:"data"`
|
|
}
|
|
|
|
func (c *report) GetExtractConfig(ctx context.Context, req *getExtractConfigReq) (*getExtractConfigRes, error) {
|
|
ctx = ctxWithUser(ctx)
|
|
data, err := svc().GetExtractConfig(ctx, req.ID)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return &getExtractConfigRes{Data: data}, nil
|
|
}
|
|
|
|
type saveExtractConfigReq struct {
|
|
g.Meta `path:"/extractConfig/save" method:"post" tags:"报表引擎" summary:"保存抽取配置"`
|
|
model.SaveExtractConfigReq
|
|
}
|
|
|
|
type saveExtractConfigRes struct {
|
|
*model.SaveResult
|
|
}
|
|
|
|
func (c *report) SaveExtractConfig(ctx context.Context, req *saveExtractConfigReq) (*saveExtractConfigRes, error) {
|
|
ctx = ctxWithUser(ctx)
|
|
result, err := svc().SaveExtractConfig(ctx, &req.SaveExtractConfigReq)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return &saveExtractConfigRes{SaveResult: result}, nil
|
|
}
|
|
|
|
type deleteExtractConfigReq struct {
|
|
g.Meta `path:"/extractConfig" method:"delete" tags:"报表引擎" summary:"删除抽取配置"`
|
|
ID int64 `json:"id" v:"required"`
|
|
}
|
|
|
|
type deleteExtractConfigRes struct {
|
|
*model.DeleteResult
|
|
}
|
|
|
|
func (c *report) DeleteExtractConfig(ctx context.Context, req *deleteExtractConfigReq) (*deleteExtractConfigRes, error) {
|
|
ctx = ctxWithUser(ctx)
|
|
result, err := svc().DeleteExtractConfig(ctx, req.ID)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return &deleteExtractConfigRes{DeleteResult: result}, nil
|
|
}
|
|
|
|
// ============================================================
|
|
// 数据操作
|
|
// ============================================================
|
|
|
|
type extractDataReq struct {
|
|
g.Meta `path:"/extract" method:"post" tags:"报表引擎" summary:"执行按天数据抽取"`
|
|
model.ExtractDailyDataReq
|
|
}
|
|
|
|
func (c *report) ExtractData(ctx context.Context, req *extractDataReq) (*model.ExtractDailyDataResp, error) {
|
|
ctx = ctxWithUser(ctx)
|
|
return svc().ExtractDailyData(ctx, req.BusinessCode, req.ReportCode, req.StatDate, req.Executor)
|
|
}
|
|
|
|
type autoCreateTableReq struct {
|
|
g.Meta `path:"/autoCreateTable" method:"post" tags:"报表引擎" summary:"自动创建统计宽表"`
|
|
model.AutoCreateStatTableReq
|
|
}
|
|
|
|
func (c *report) AutoCreateTable(ctx context.Context, req *autoCreateTableReq) (*model.AutoCreateStatTableResp, error) {
|
|
ctx = ctxWithUser(ctx)
|
|
return svc().AutoCreateStatTable(ctx, req.BusinessCode, req.ReportCode)
|
|
}
|
|
|
|
type queryReportReq struct {
|
|
g.Meta `path:"/query" method:"post" tags:"报表引擎" summary:"用户选择查询"`
|
|
model.UserSelectQueryReq
|
|
}
|
|
|
|
func (c *report) QueryReport(ctx context.Context, req *queryReportReq) (*model.UserSelectQueryResp, error) {
|
|
ctx = ctxWithUser(ctx)
|
|
return svc().QueryReportByUserSelect(ctx, &req.UserSelectQueryReq)
|
|
}
|
|
|
|
type initTablesReq struct {
|
|
g.Meta `path:"/initTables" method:"post" tags:"报表引擎" summary:"初始化系统表"`
|
|
}
|
|
|
|
type initTablesRes struct {
|
|
Success bool `json:"success"`
|
|
Message string `json:"message"`
|
|
}
|
|
|
|
func (c *report) InitTables(ctx context.Context, req *initTablesReq) (*initTablesRes, error) {
|
|
ctx = ctxWithUser(ctx)
|
|
if err := svc().InitSystemTables(ctx); err != nil {
|
|
return nil, err
|
|
}
|
|
return &initTablesRes{Success: true, Message: "系统表初始化完成"}, nil
|
|
}
|