Bläddra i källkod

已审批的报告显示下载按钮

hsun 9 månader sedan
förälder
incheckning
b1380aacbd

+ 67 - 1
controllers/report_approve/report_approve.go

@@ -5,6 +5,7 @@ import (
 	"eta/eta_api/controllers"
 	"eta/eta_api/models"
 	"eta/eta_api/models/report_approve"
+	"eta/eta_api/models/smart_report"
 	"eta/eta_api/services"
 	"eta/eta_api/utils"
 	"fmt"
@@ -311,6 +312,66 @@ func (this *ReportApproveController) List() {
 		ormList = list
 	}
 
+	// 审批通过的报告显示下载按钮(临时版本)
+	reportImg := make(map[string]string)
+	reportPdf := make(map[string]string)
+	{
+		var reportIds, enReportIds, smartReportIds []int
+		for _, v := range ormList {
+			if v.State != report_approve.ReportApproveStatePass {
+				continue
+			}
+			if v.ReportType == report_approve.FlowReportTypeChinese {
+				reportIds = append(reportIds, v.ReportId)
+			}
+			if v.ReportType == report_approve.FlowReportTypeEnglish {
+				enReportIds = append(enReportIds, v.ReportId)
+			}
+			if v.ReportType == report_approve.FlowReportTypeSmart {
+				smartReportIds = append(smartReportIds, v.ReportId)
+			}
+		}
+		if len(reportIds) > 0 {
+			reports, e := models.GetReportFieldsByIds(reportIds, []string{"id", "detail_img_url", "detail_pdf_url"})
+			if e != nil {
+				br.Msg = "获取失败"
+				br.ErrMsg = fmt.Sprintf("GetReportFieldsByIds, %v", e)
+				return
+			}
+			for _, r := range reports {
+				k := fmt.Sprintf("%d-%d", report_approve.FlowReportTypeChinese, r.Id)
+				reportImg[k] = r.DetailImgUrl
+				reportPdf[k] = r.DetailPdfUrl
+			}
+		}
+		if len(enReportIds) > 0 {
+			enReports, e := models.GetEnglishReportFieldsByIds(enReportIds, []string{"id", "detail_img_url", "detail_pdf_url"})
+			if e != nil {
+				br.Msg = "获取失败"
+				br.ErrMsg = fmt.Sprintf("GetEnglishReportFieldsByIds, %v", e)
+				return
+			}
+			for _, r := range enReports {
+				k := fmt.Sprintf("%d-%d", report_approve.FlowReportTypeEnglish, r.Id)
+				reportImg[k] = r.DetailImgUrl
+				reportPdf[k] = r.DetailPdfUrl
+			}
+		}
+		if len(smartReportIds) > 0 {
+			smartReports, e := smart_report.GetSmartReportFieldsByIds(smartReportIds, []string{"smart_report_id", "detail_img_url", "detail_pdf_url"})
+			if e != nil {
+				br.Msg = "获取失败"
+				br.ErrMsg = fmt.Sprintf("GetSmartReportFieldsByIds, %v", e)
+				return
+			}
+			for _, r := range smartReports {
+				k := fmt.Sprintf("%d-%d", report_approve.FlowReportTypeSmart, r.SmartReportId)
+				reportImg[k] = r.DetailImgUrl
+				reportPdf[k] = r.DetailPdfUrl
+			}
+		}
+	}
+
 	// 格式化列表
 	for _, v := range ormList {
 		t := report_approve.FormatReportApproveOrm2Item(v)
@@ -319,6 +380,11 @@ func (this *ReportApproveController) List() {
 		} else {
 			t.ReportClassify = fmt.Sprintf("%s/%s/%s", report_approve.FlowReportTypeMap[v.ReportType], cnClassifyIdName[v.ClassifyFirstId], cnClassifyIdName[v.ClassifySecondId])
 		}
+
+		k := fmt.Sprintf("%d-%d", t.ReportType, t.ReportId)
+		t.DetailImgUrl = reportImg[k]
+		t.DetailPdfUrl = reportPdf[k]
+
 		respList = append(respList, t)
 	}
 
@@ -513,7 +579,7 @@ func (this *ReportApproveController) Detail() {
 		detail.Report.ReportClassify = fmt.Sprintf("%s/%s/%s/%s", report_approve.FlowReportTypeMap[approveItem.ReportType], enClassifyIdName[enRootIdMap[approveItem.ClassifySecondId]], enClassifyIdName[approveItem.ClassifyFirstId], enClassifyIdName[approveItem.ClassifySecondId])
 	}
 	if approveItem.ReportType == report_approve.FlowReportTypeSmart {
-		detail.Report.ReportCode = 	utils.MD5(fmt.Sprint("smart_", approveItem.ReportId))
+		detail.Report.ReportCode = utils.MD5(fmt.Sprint("smart_", approveItem.ReportId))
 		detail.Report.ReportClassify = fmt.Sprintf("%s/%s/%s", report_approve.FlowReportTypeMap[approveItem.ReportType], cnClassifyIdName[approveItem.ClassifyFirstId], cnClassifyIdName[approveItem.ClassifySecondId])
 	}
 

+ 15 - 2
models/english_report.go

@@ -987,11 +987,24 @@ func UpdateEnglishReportEmailHasFail(reportId int) (err error) {
 	return
 }
 
-
 // UpdatePdfUrlEnglishReportById 清空pdf相关字段
 func UpdatePdfUrlEnglishReportById(reportId int) (err error) {
 	o := orm.NewOrmUsingDB("rddp")
 	sql := `UPDATE english_report SET detail_img_url = '',detail_pdf_url='',modify_time=NOW() WHERE id = ? `
 	_, err = o.Raw(sql, reportId).Exec()
 	return
-}
+}
+
+func GetEnglishReportFieldsByIds(ids []int, fields []string) (items []*EnglishReport, err error) {
+	if len(ids) == 0 {
+		return
+	}
+	o := orm.NewOrmUsingDB("rddp")
+	field := " * "
+	if len(fields) > 0 {
+		field = fmt.Sprintf(" %s ", strings.Join(fields, ","))
+	}
+	sql := fmt.Sprintf(`SELECT %s FROM english_report WHERE id IN (%s)`, field, utils.GetOrmInReplace(len(ids)))
+	_, err = o.Raw(sql, ids).QueryRows(&items)
+	return
+}

+ 17 - 1
models/report.go

@@ -63,6 +63,8 @@ type Report struct {
 	AdminRealName      string    `description:"创建者姓名"`
 	ApproveTime        time.Time `description:"审批时间"`
 	ApproveId          int       `description:"审批ID"`
+	DetailImgUrl       string    `description:"报告详情长图地址"`
+	DetailPdfUrl       string    `description:"报告详情PDF地址"`
 }
 
 type ReportList struct {
@@ -1173,4 +1175,18 @@ func UpdatePdfUrlReportById(reportId int) (err error) {
 	sql := `UPDATE report SET detail_img_url = '',detail_pdf_url='',modify_time=NOW() WHERE id = ? `
 	_, err = o.Raw(sql, reportId).Exec()
 	return
-}
+}
+
+func GetReportFieldsByIds(ids []int, fields []string) (items []*Report, err error) {
+	if len(ids) == 0 {
+		return
+	}
+	o := orm.NewOrmUsingDB("rddp")
+	field := " * "
+	if len(fields) > 0 {
+		field = fmt.Sprintf(" %s ", strings.Join(fields, ","))
+	}
+	sql := fmt.Sprintf(`SELECT %s FROM report WHERE id IN (%s)`, field, utils.GetOrmInReplace(len(ids)))
+	_, err = o.Raw(sql, ids).QueryRows(&items)
+	return
+}

+ 2 - 0
models/report_approve/report_approve.go

@@ -196,6 +196,8 @@ type ReportApproveItem struct {
 	HandleTime            string `description:"处理时间"`
 	CreateTime            string `description:"创建时间"`
 	ModifyTime            string `description:"修改时间"`
+	DetailImgUrl          string `description:"报告详情长图地址"`
+	DetailPdfUrl          string `description:"报告详情PDF地址"`
 }
 
 // FormatReportApproveOrm2Item 格式化报告审批

+ 15 - 2
models/smart_report/smart_report.go

@@ -419,11 +419,24 @@ func UpdateSmartReportsStateBySecondIds(oldState, newState int, secondIds []int)
 	return
 }
 
-
 // UpdatePdfUrlSmartReportById 清空pdf相关字段
 func UpdatePdfUrlSmartReportById(reportId int) (err error) {
 	o := orm.NewOrmUsingDB("rddp")
 	sql := `UPDATE smart_report SET detail_img_url = '',detail_pdf_url='',modify_time=NOW() WHERE smart_report_id = ? `
 	_, err = o.Raw(sql, reportId).Exec()
 	return
-}
+}
+
+func GetSmartReportFieldsByIds(ids []int, fields []string) (items []*SmartReport, err error) {
+	if len(ids) == 0 {
+		return
+	}
+	o := orm.NewOrmUsingDB("rddp")
+	field := " * "
+	if len(fields) > 0 {
+		field = fmt.Sprintf(" %s ", strings.Join(fields, ","))
+	}
+	sql := fmt.Sprintf(`SELECT %s FROM smart_report WHERE smart_report_id IN (%s)`, field, utils.GetOrmInReplace(len(ids)))
+	_, err = o.Raw(sql, ids).QueryRows(&items)
+	return
+}