Pārlūkot izejas kodu

Merge branch 'feature/eta_1.3.8' into debug

hsun 1 gadu atpakaļ
vecāks
revīzija
38abdfa119

+ 24 - 0
controllers/classify.go

@@ -3,9 +3,11 @@ package controllers
 import (
 	"encoding/json"
 	"eta/eta_api/models"
+	"eta/eta_api/models/report_approve"
 	"eta/eta_api/models/system"
 	"eta/eta_api/services"
 	"eta/eta_api/utils"
+	"fmt"
 	"github.com/rdlucklib/rdluck_tools/paging"
 	"time"
 )
@@ -284,6 +286,28 @@ func (this *ClassifyController) CheckDeleteClassify() {
 			return
 		}
 	}
+
+	// 查询该分类是否关联了审批流
+	flowOb := new(report_approve.ReportApproveFlow)
+	flowCond := fmt.Sprintf(` AND (%s = ? OR %s = ?) AND (%s = ? OR %s = ?)`, report_approve.ReportApproveFlowCols.ReportType, report_approve.ReportApproveFlowCols.ReportType, report_approve.ReportApproveFlowCols.ClassifyFirstId, report_approve.ReportApproveFlowCols.ClassifySecondId)
+	flowPars := make([]interface{}, 0)
+	flowPars = append(flowPars, report_approve.FlowReportTypeChinese, report_approve.FlowReportTypeSmart, classifyId, classifyId)
+	flowCount, e := flowOb.GetCountByCondition(flowCond, flowPars)
+	if e != nil {
+		br.Msg = "检测失败"
+		br.ErrMsg = "获取关联审批流失败, Err: " + e.Error()
+		return
+	}
+	if flowCount > 0 {
+		resp.Code = 5
+		resp.Msg = "该分类关联审批流,不允许删除"
+		br.Data = resp
+		br.Ret = 200
+		br.Msg = resp.Msg
+		br.Success = true
+		return
+	}
+
 	resp.Code = 0
 	resp.Msg = "检测完成,可进行删除操作"
 	br.Ret = 200

+ 18 - 0
controllers/english_report/english_classify.go

@@ -4,6 +4,7 @@ import (
 	"encoding/json"
 	"eta/eta_api/controllers"
 	"eta/eta_api/models"
+	"eta/eta_api/models/report_approve"
 	"eta/eta_api/services"
 	"eta/eta_api/utils"
 	"fmt"
@@ -469,6 +470,23 @@ func (this *EnglishReportController) DelClassify() {
 		return
 	}
 
+	// 查询该分类是否关联了审批流
+	flowOb := new(report_approve.ReportApproveFlow)
+	flowCond := fmt.Sprintf(` AND %s = ? AND (%s = ? Or %s = ?)`, report_approve.ReportApproveFlowCols.ReportType, report_approve.ReportApproveFlowCols.ClassifyFirstId, report_approve.ReportApproveFlowCols.ClassifySecondId)
+	flowPars := make([]interface{}, 0)
+	flowPars = append(flowPars, report_approve.FlowReportTypeEnglish, classifyId, classifyId)
+	flowCount, e := flowOb.GetCountByCondition(flowCond, flowPars)
+	if e != nil {
+		br.Msg = "检测失败"
+		br.ErrMsg = "获取关联审批流失败, Err: " + e.Error()
+		return
+	}
+	if flowCount > 0 {
+		br.Msg = "该分类关联审批流,不允许删除"
+		br.Ret = 403
+		return
+	}
+
 	if err = models.DeleteEnglishClassify(classifyId); err != nil {
 		br.Msg = "删除失败"
 		br.ErrMsg = "删除报告失败, Err: " + err.Error()

+ 1 - 1
controllers/report_approve/report_approve.go

@@ -619,7 +619,7 @@ func (this *ReportApproveController) Approve() {
 	}
 
 	// 通过审批
-	if e = services.PassReportApprove(approveItem, recordItem, sysUser.AdminId, sysUser.RealName); e != nil {
+	if e = services.PassReportApprove(approveItem, recordItem, sysUser.AdminId); e != nil {
 		br.Msg = "操作失败"
 		br.ErrMsg = "通过审批失败, Err: " + e.Error()
 		return

+ 21 - 13
controllers/smart_report/smart_report.go

@@ -9,7 +9,6 @@ import (
 	"eta/eta_api/models/system"
 	"eta/eta_api/services"
 	"eta/eta_api/services/data"
-	smartReportService "eta/eta_api/services/smart_report"
 	"eta/eta_api/utils"
 	"fmt"
 	"github.com/kgiannakakis/mp3duration/src/mp3duration"
@@ -337,7 +336,7 @@ func (this *SmartReportController) Remove() {
 
 	// ES更新报告为未发布
 	go func() {
-		_ = smartReportService.SmartReportElasticUpsert(item.SmartReportId, 1)
+		_ = services.SmartReportElasticUpsert(item.SmartReportId, 1)
 	}()
 
 	br.Ret = 200
@@ -505,15 +504,24 @@ func (this *SmartReportController) Publish() {
 	go func() {
 		_, _ = models.AddReportStateRecord(recordItem)
 	}()
-	// 生成音频
-	if req.PublishState == smart_report.SmartReportStatePublished && item.VideoUrl == "" {
-		go smartReportService.SmartReportBuildVideoAndUpdate(item)
-	}
 
-	// ES更新报告
-	go func() {
-		_ = smartReportService.SmartReportElasticUpsert(item.SmartReportId, req.PublishState)
-	}()
+	if state == smart_report.SmartReportStatePublished {
+		// 生成音频
+		if item.VideoUrl == "" {
+			go services.SmartReportBuildVideoAndUpdate(item)
+		}
+
+		// ES更新报告
+		go func() {
+			_ = services.SmartReportElasticUpsert(item.SmartReportId, models.ReportStatePublished)
+		}()
+	}
+	if state == smart_report.SmartReportStateWaitPublish {
+		// ES更新报告
+		go func() {
+			_ = services.SmartReportElasticUpsert(item.SmartReportId, models.ReportStateUnpublished)
+		}()
+	}
 
 	br.Ret = 200
 	br.Success = true
@@ -771,7 +779,7 @@ func (this *SmartReportController) SaveContent() {
 	for _, ad := range admins {
 		adminIdName[ad.AdminId] = ad.RealName
 	}
-	editing, e := smartReportService.UpdateSmartReportEditing(req.SmartReportId, 1, sysUser.AdminId, sysUser.RealName, adminIdName)
+	editing, e := services.UpdateSmartReportEditing(req.SmartReportId, 1, sysUser.AdminId, sysUser.RealName, adminIdName)
 	if e != nil {
 		br.Msg = e.Error()
 		return
@@ -880,7 +888,7 @@ func (this *SmartReportController) MarkEditStatus() {
 		adminIdName[ad.AdminId] = ad.RealName
 	}
 
-	data, e := smartReportService.UpdateSmartReportEditing(req.SmartReportId, req.Status, sysUser.AdminId, sysUser.RealName, adminIdName)
+	data, e := services.UpdateSmartReportEditing(req.SmartReportId, req.Status, sysUser.AdminId, sysUser.RealName, adminIdName)
 	if e != nil {
 		br.Msg = e.Error()
 		return
@@ -1043,7 +1051,7 @@ func (this *SmartReportController) List() {
 
 	for _, v := range list {
 		item := smart_report.FormatSmartReport2Item(v)
-		mark, e := smartReportService.UpdateSmartReportEditing(v.SmartReportId, 2, sysUser.AdminId, sysUser.RealName, adminIdName)
+		mark, e := services.UpdateSmartReportEditing(v.SmartReportId, 2, sysUser.AdminId, sysUser.RealName, adminIdName)
 		if e != nil {
 			br.Msg = "获取失败"
 			br.ErrMsg = "查询编辑中标记失败, Err:" + e.Error()

+ 51 - 4
services/report_approve.go

@@ -447,7 +447,7 @@ func updateReportApproveState(reportType, reportId, approveId, state int) (err e
 }
 
 // PassReportApprove 通过审批
-func PassReportApprove(approveItem *report_approve.ReportApprove, recordItem *report_approve.ReportApproveRecord, sysAdminId int, sysAdminName string) (err error) {
+func PassReportApprove(approveItem *report_approve.ReportApprove, recordItem *report_approve.ReportApproveRecord, sysAdminId int) (err error) {
 	if approveItem == nil {
 		err = fmt.Errorf("审批信息有误")
 		return
@@ -552,7 +552,7 @@ func PassReportApprove(approveItem *report_approve.ReportApprove, recordItem *re
 			// 推送审批消息
 			go func() {
 				messageItem := new(report_approve.ReportApproveMessage)
-				messageItem.SendUserId = sysAdminId
+				messageItem.SendUserId = approveItem.ApplyUserId
 				messageItem.ReceiveUserId = nextUser.UserId
 				messageItem.Content = "您有新的待办任务"
 				messageItem.Remark = fmt.Sprintf("%s提交的【研报审批】需要您审批,请及时处理", approveItem.ApplyUserName)
@@ -685,6 +685,14 @@ func PassReportApprove(approveItem *report_approve.ReportApprove, recordItem *re
 				return
 			}
 		}()
+
+		// 审批通过之后的处理
+		go func() {
+			if e = AfterReportApprovePass(approveItem.ReportType, approveItem.ReportId); e != nil {
+				utils.FileLog.Info(fmt.Sprintf("AfterReportApprovePass err: %s, ReportType: %d, ReportId: %d", e.Error(), approveItem.ReportType, approveItem.ReportId))
+				return
+			}
+		}()
 	}
 	return
 }
@@ -820,7 +828,46 @@ func BuildNextNodeRecordAndMsg(approveNodeItem *report_approve.ReportApproveNode
 }
 
 // AfterReportApprovePass 报告审批通过后的处理
-func AfterReportApprovePass() (err error) {
-	// TODO: 研报/智能研报生成音频
+func AfterReportApprovePass(reportType, reportId int) (err error) {
+	// 中文研报
+	if reportType == report_approve.FlowReportTypeChinese {
+		report, e := models.GetReportById(reportId)
+		if e != nil {
+			if e.Error() == utils.ErrNoRow() {
+				return
+			}
+			err = fmt.Errorf("获取研报信息失败, Err: %s", e.Error())
+			return
+		}
+		_ = CreateVideo(report)
+		_ = UpdateReportEs(report.Id, models.ReportStatePublished)
+		return
+	}
+
+	// 英文研报
+	if reportType == report_approve.FlowReportTypeChinese {
+		_ = UpdateEnglishReportEs(reportId, models.ReportStatePublished)
+		return
+	}
+
+	// 智能研报
+	if reportType == report_approve.FlowReportTypeSmart {
+		ob := new(smart_report.SmartReport)
+		item, e := ob.GetItemById(reportId)
+		if e != nil {
+			if e.Error() == utils.ErrNoRow() {
+				return
+			}
+			err = fmt.Errorf("获取智能研报信息失败, Err: %s", e.Error())
+			return
+		}
+		// 生成音频
+		if item.VideoUrl == "" {
+			SmartReportBuildVideoAndUpdate(item)
+		}
+
+		// ES更新报告
+		_ = SmartReportElasticUpsert(item.SmartReportId, models.ReportStatePublished)
+	}
 	return
 }

+ 3 - 4
services/smart_report/smart_report.go → services/smart_report.go

@@ -1,10 +1,9 @@
-package smart_report
+package services
 
 import (
 	"encoding/json"
 	"eta/eta_api/models"
 	"eta/eta_api/models/smart_report"
-	"eta/eta_api/services"
 	"eta/eta_api/services/alarm_msg"
 	"eta/eta_api/utils"
 	"fmt"
@@ -26,7 +25,7 @@ func SmartReportBuildVideoAndUpdate(item *smart_report.SmartReport) {
 		}
 	}()
 
-	videoUrl, videoName, videoSize, videoPlaySeconds, e := services.CreateReportVideo(item.Title, item.Content, time.Now().Local().Format(utils.FormatDateTime))
+	videoUrl, videoName, videoSize, videoPlaySeconds, e := CreateReportVideo(item.Title, item.Content, time.Now().Local().Format(utils.FormatDateTime))
 	if e != nil {
 		err = fmt.Errorf("create audio err: %s", e.Error())
 		return
@@ -124,7 +123,7 @@ func SmartReportElasticUpsert(smartReportId int, state int) (err error) {
 	esReport.ClassifyNameSecond = item.ClassifyNameSecond
 	esReport.StageStr = strconv.Itoa(item.Stage)
 	esReport.Frequency = item.Frequency
-	if err = services.EsAddOrEditSmartReport(utils.SmartReportIndexName, strconv.Itoa(item.SmartReportId), esReport); err != nil {
+	if err = EsAddOrEditSmartReport(utils.SmartReportIndexName, strconv.Itoa(item.SmartReportId), esReport); err != nil {
 		return
 	}
 	return