Browse Source

fix:同步pdf报告

zqbao 5 months ago
parent
commit
34aa24e290

+ 3 - 0
controllers/report_pdf.go

@@ -532,6 +532,9 @@ func (this *ReportPdfController) Publish() {
 		br.ErrMsg = "发布研报失败,系统错误,Err:" + err.Error()
 		return
 	}
+
+	err = services.SyncAddPdfReportToReportPushStatus(reportPdf)
+
 	// 修改es
 	go func(reportPdf *models.ReportPdf) {
 		reportpdfView := reportPdf.ToView()

+ 9 - 2
models/report_pdf.go

@@ -27,7 +27,7 @@ type ReportPdf struct {
 	Uv                 int       `description:"uv"`
 	SysUserId          int       `description:"创建人id"`
 	SysRealName        string    `description:"创建人姓名"`
-	State              int       `description:"状态"`
+	State              int       `description:"状态,1:已发布;2:未发布"`
 }
 
 type ReportPdfView struct {
@@ -50,7 +50,7 @@ type ReportPdfView struct {
 	Uv                 int       `description:"uv"`
 	SysUserId          int       `description:"创建人id"`
 	SysRealName        string    `description:"创建人姓名"`
-	State              int       `description:"状态"`
+	State              int       `description:"状态,1:已发布;2:未发布"`
 }
 
 func (r *ReportPdf) Insert() (insertId int64, err error) {
@@ -134,3 +134,10 @@ func GetReportPdfById(id int) (item *ReportPdf, err error) {
 	err = o.Raw(sql, id).QueryRow(&item)
 	return
 }
+
+func GetBatchPdfReport(maxId, batchSize int) (items []*ReportPdf, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT * FROM report_pdf WHERE report_pdf_id>? AND state=1 LIMIT ?`
+	_, err = o.Raw(sql, maxId, batchSize).QueryRows(&items)
+	return
+}

+ 5 - 5
models/report_push_status.go

@@ -21,7 +21,7 @@ type ReportPushStatus struct {
 	ClassifyIdThird    int       `description:"三级分类id"`
 	ClassifyNameThird  string    `description:"三级分类名称"`
 	Author             string    `description:"报告作者"`
-	ReportType         int       `description:"报告类型:1-eta报告"`
+	ReportType         int       `description:"报告类型:1-eta报告 2-pdf报告"`
 	PublishTime        time.Time `description:"报告发布时间"`
 	CreateTime         time.Time `description:"创建时间"`
 	ModifyTime         time.Time `description:"修改时间"`
@@ -62,7 +62,7 @@ type ReportPushView struct {
 	State              int    `description:"报告状态:0-未推送,1-已推送"`
 	PushTime           string `description:"推送时间"`
 	PublishTime        string `description:"报告发布时间"`
-	ReportType         int    `description:"报告类型:1-eta报告"`
+	ReportType         int    `description:"报告类型:1-eta报告 2-pdf报告"`
 	CreateTime         string `description:"创建时间"`
 	ModifyTime         string `description:"修改时间"`
 }
@@ -102,13 +102,13 @@ func GetReportPushStatusByReportIdAndState(reportId []int, state int) (items []*
 	return
 }
 
-func GetReportPushStatusByReportIds(reportId []int) (items []*ReportPushStatus, err error) {
+func GetReportPushStatusByReportIds(reportType int, reportId []int) (items []*ReportPushStatus, err error) {
 	if len(reportId) == 0 {
 		return
 	}
 	o := orm.NewOrm()
-	sql := `SELECT * FROM report_push_status WHERE report_id IN (` + utils.GetOrmReplaceHolder(len(reportId)) + `) `
-	_, err = o.Raw(sql, reportId).QueryRows(&items)
+	sql := `SELECT * FROM report_push_status WHERE report_type=? AND report_id IN (` + utils.GetOrmReplaceHolder(len(reportId)) + `) `
+	_, err = o.Raw(sql, reportType, reportId).QueryRows(&items)
 	return
 }
 

+ 1 - 1
scheduler/task.go

@@ -44,7 +44,7 @@ func SyncReportPushStatus(ctx context.Context) (err error) {
 	for _, v := range reportList {
 		reportIds = append(reportIds, v.Id)
 	}
-	reportPushList, err := models.GetReportPushStatusByReportIds(reportIds)
+	reportPushList, err := models.GetReportPushStatusByReportIds(utils.ReportTypeEta, reportIds)
 	if err != nil {
 		return
 	}

+ 30 - 0
services/report_pdf.go

@@ -0,0 +1,30 @@
+package services
+
+import (
+	"eta/eta_mini_crm/models"
+	"eta/eta_mini_crm/utils"
+	"time"
+)
+
+func SyncAddPdfReportToReportPushStatus(reportPdf *models.ReportPdf) (err error) {
+	insertPushStatus := &models.ReportPushStatus{
+		ReportId:           reportPdf.ReportPdfId,
+		State:              0,
+		Title:              reportPdf.Title,
+		Abstract:           reportPdf.Abstract,
+		Stage:              reportPdf.Stage,
+		ClassifyIdFirst:    reportPdf.ClassifyIdFirst,
+		ClassifyNameFirst:  reportPdf.ClassifyNameFirst,
+		ClassifyIdSecond:   reportPdf.ClassifyIdSecond,
+		ClassifyNameSecond: reportPdf.ClassifyNameSecond,
+		ClassifyIdThird:    reportPdf.ClassifyIdThird,
+		ClassifyNameThird:  reportPdf.ClassifyNameThird,
+		Author:             reportPdf.Author,
+		ReportType:         utils.ReportTypePdf,
+		PublishTime:        reportPdf.PublishTime,
+		CreateTime:         time.Now(),
+		ModifyTime:         time.Now(),
+	}
+	_, err = insertPushStatus.Insert()
+	return
+}

+ 64 - 4
services/task.go

@@ -13,7 +13,9 @@ func InitTask() {
 	// 创建Es索引
 	CreateIndex()
 	// 初始化研报推送状态
-	InitReportPushStatus()
+	InitEtaReportPushStatus()
+	// 初始化pdf报告推送状态
+	InitPdfReportPushStatus()
 	// 初始化系统用户权限
 	InitSystemUserPermission()
 	fmt.Println("end task!")
@@ -58,7 +60,7 @@ func CreateIndex() {
 	}
 }
 
-func InitReportPushStatus() {
+func InitEtaReportPushStatus() {
 	for {
 		maxId, err := models.GetMaxSyncIdReportPush(1)
 		fmt.Println("同步研报开始, maxId:", maxId)
@@ -73,7 +75,7 @@ func InitReportPushStatus() {
 		for _, v := range reportList {
 			reportIds = append(reportIds, v.Id)
 		}
-		reportPushList, err := models.GetReportPushStatusByReportIds(reportIds)
+		reportPushList, err := models.GetReportPushStatusByReportIds(utils.ReportTypeEta, reportIds)
 		if err != nil {
 			return
 		}
@@ -97,7 +99,65 @@ func InitReportPushStatus() {
 					ClassifyIdThird:    v.ClassifyIdThird,
 					ClassifyNameThird:  v.ClassifyNameThird,
 					Author:             v.Author,
-					ReportType:         1,
+					ReportType:         utils.ReportTypeEta,
+					PublishTime:        v.PublishTime,
+					CreateTime:         time.Now(),
+					ModifyTime:         time.Now(),
+				})
+			}
+		}
+		err = models.BatchAddReportPushStatus(insertReportPushList)
+		if err != nil {
+			return
+		}
+		if len(reportList) != 100 {
+			fmt.Println("同步研报完成")
+			return
+		}
+	}
+}
+
+// 初始化pdf报告的推送状态
+func InitPdfReportPushStatus() {
+	for {
+		maxId, err := models.GetMaxSyncIdReportPush(2)
+		fmt.Println("同步研报开始, maxId:", maxId)
+		if err != nil {
+			fmt.Println("同步研报失败, Err:", err)
+		}
+		reportList, err := models.GetBatchPdfReport(maxId, 100)
+		if err != nil {
+			fmt.Println("同步研报失败, Err:", err)
+		}
+		var reportIds []int
+		for _, v := range reportList {
+			reportIds = append(reportIds, v.ReportPdfId)
+		}
+		reportPushList, err := models.GetReportPushStatusByReportIds(utils.ReportTypePdf, reportIds)
+		if err != nil {
+			return
+		}
+		reportPushMap := make(map[int]struct{})
+		for _, v := range reportPushList {
+			reportPushMap[v.ReportId] = struct{}{}
+		}
+		var insertReportPushList []*models.ReportPushStatus
+		for _, v := range reportList {
+			if _, ok := reportPushMap[v.ReportPdfId]; !ok {
+				insertReportPushList = append(insertReportPushList, &models.ReportPushStatus{
+					ReportId:           v.ReportPdfId,
+					State:              0,
+					Title:              v.Title,
+					Abstract:           v.Abstract,
+					Stage:              v.Stage,
+					ClassifyIdFirst:    v.ClassifyIdFirst,
+					ClassifyNameFirst:  v.ClassifyNameFirst,
+					ClassifyIdSecond:   v.ClassifyIdSecond,
+					ClassifyNameSecond: v.ClassifyNameSecond,
+					ClassifyIdThird:    v.ClassifyIdThird,
+					ClassifyNameThird:  v.ClassifyNameThird,
+					Author:             v.Author,
+					ReportType:         utils.ReportTypePdf,
 					PublishTime:        v.PublishTime,
 					CreateTime:         time.Now(),
 					ModifyTime:         time.Now(),

+ 5 - 0
utils/constants.go

@@ -60,6 +60,11 @@ const (
 	ReportStatusDown = 2 // 研报未发布
 )
 
+const (
+	ReportTypeEta = 1 // eta研报
+	ReportTypePdf = 2 // pdf研报
+)
+
 const (
 	STORAGESOURCE_OSS_NAME   = "oss"
 	STORAGESOURCE_MINIO_NAME = "minio"