Kaynağa Gözat

add:完成观点入库和报告入库的功能

zqbao 4 ay önce
ebeveyn
işleme
dec228604b

+ 29 - 3
controllers/report_open.go

@@ -401,7 +401,24 @@ func (this *ReportOpenController) ReportApprove() {
 				go func() {
 					msg, err := services.ReportKnowledgeResourceAdd(v.Title, v.DetailPdfUrl, v.AdminId, v.AdminRealName)
 					if err != nil {
-						utils.FileLog.Error(fmt.Sprintf("ReportApprove-报告知识库添加失败,reportId:%d,msg:%s,err: %v", v.Id, msg, err))
+						utils.FileLog.Error(fmt.Sprintf("ReportKnowledgeResourceAdd-报告知识资源库添加失败,reportId:%d,msg:%s,err: %v", v.Id, msg, err))
+						return
+					}
+				}()
+				go func() {
+					var classifyId int
+					if v.ClassifyIdThird > 0 {
+						classifyId = v.ClassifyIdThird
+					} else if v.ClassifyIdSecond > 0 {
+						classifyId = v.ClassifyIdSecond
+					} else {
+						classifyId = v.ClassifyIdFirst
+					}
+
+					classifyId, err := services.ReportKnowledgeResourceClassifyCheckAndSave(classifyId)
+					msg, err := services.ViewPointSave(0, v.AdminId, v.AdminRealName, v.Title, v.Abstract, "市场信息研究所", "", classifyId, &v.ApproveTime)
+					if err != nil {
+						utils.FileLog.Error(fmt.Sprintf("ViewPointSave-报告摘要知识资源库添加失败,reportId:%d,msg:%s,err: %v", v.Id, msg, err))
 						return
 					}
 				}()
@@ -495,7 +512,16 @@ func (this *ReportOpenController) ReportApprove() {
 				go func() {
 					msg, err := services.ReportKnowledgeResourceAdd(v.Title, v.PptxUrl, v.AdminId, v.AdminRealName)
 					if err != nil {
-						utils.FileLog.Error(fmt.Sprintf("ReportApprove-报告知识库添加失败,pptId:%d,msg:%s,err: %v", v.PptId, msg, err))
+						utils.FileLog.Error(fmt.Sprintf("ReportKnowledgeResourceAdd-PPT知识资源报告库添加失败,pptId:%d,msg:%s,err: %v", v.PptId, msg, err))
+						return
+					}
+				}()
+				go func() {
+
+					classifyId, err := services.ReportKnowledgeResourceClassifyCheckAndSave(v.ClassifyId)
+					msg, err := services.ViewPointSave(0, v.AdminId, v.AdminRealName, v.Title, v.Abstract, "市场信息研究所", "", classifyId, &v.ApproveTime)
+					if err != nil {
+						utils.FileLog.Error(fmt.Sprintf("ViewPointSave-ppt摘要知识库添加失败,pptId:%d,msg:%s,err: %v", v.PptId, msg, err))
 						return
 					}
 				}()
@@ -676,7 +702,7 @@ func (this *ReportOpenController) ViewPointSave() {
 		return
 	}
 
-	msg, err := services.ViewPointSave(req)
+	msg, err := services.ViewPointSave(req.Id, 0, "", req.Title, req.Content, req.DataSource, req.Category, 0, req.DataDate)
 	if err != nil {
 		if msg == "" {
 			msg = "保存观点失败"

+ 9 - 0
models/classify.go

@@ -60,6 +60,15 @@ func (m *Classify) GetItemById(id int) (item *Classify, err error) {
 	return
 }
 
+func (m *Classify) GetItemsByIds(ids []int) (items []*Classify, err error) {
+	if len(ids) == 0 {
+		return
+	}
+	sql := fmt.Sprintf(`SELECT * FROM %s WHERE %s IN (?) ORDER BY level ASC`, m.TableName(), "id")
+	err = global.DEFAULT_DmSQL.Raw(sql, ids).Find(&items).Error
+	return
+}
+
 func (m *Classify) GetItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string) (items []*Classify, err error) {
 	fields := strings.Join(fieldArr, ",")
 	if len(fieldArr) == 0 {

+ 9 - 3
models/knowledge_resource.go

@@ -116,8 +116,14 @@ func (k *KnowledgeClassify) Create() error {
 	return global.DEFAULT_DmSQL.Create(k).Error
 }
 
-func (k *KnowledgeClassify) GetClassifyByNameAndType(classifyName string, resourceType int) (items *KnowledgeClassify, err error) {
-	sql := "SELECT * FROM knowledge_classify WHERE classify_name = ? AND resource_type = ?"
-	err = global.DEFAULT_DmSQL.Raw(sql, classifyName, resourceType).First(&items).Error
+func (k *KnowledgeClassify) GetClassifyByNameAndType(classifyName string, resourceType, parentId int) (items *KnowledgeClassify, err error) {
+	sql := "SELECT * FROM knowledge_classify WHERE classify_name = ? AND resource_type = ? AND parent_id = ?"
+	err = global.DEFAULT_DmSQL.Raw(sql, classifyName, resourceType, parentId).First(&items).Error
+	return
+}
+
+func (k *KnowledgeClassify) GetClassifysByNamesAndType(classifyNames []string, resourceType int) (items []*KnowledgeClassify, err error) {
+	sql := "SELECT * FROM knowledge_classify WHERE classify_name IN (?) AND resource_type = ?"
+	err = global.DEFAULT_DmSQL.Raw(sql, classifyNames, resourceType).Find(&items).Error
 	return
 }

+ 1 - 0
models/ppt_v2.go

@@ -15,6 +15,7 @@ type PptV2 struct {
 	Title            string    `gorm:"column:title" description:"标题"`
 	ReportType       string    `gorm:"column:report_type" description:"报告类型"`
 	PptDate          string    `gorm:"column:ppt_date" description:"选择日期"`
+	Abstract         string    `gorm:"column:abstract" description:"摘要"`
 	Content          string    `gorm:"column:content" description:"ppt内容"`
 	PptUrl           string    `gorm:"column:ppt_url" description:"ppt下载地址"`
 	PptxUrl          string    `gorm:"column:pptx_url" description:"pptx下载地址"`

+ 85 - 22
services/knowledge_resource.go

@@ -5,12 +5,13 @@ import (
 	"eta_gn/eta_report/utils"
 	"html"
 	"strconv"
+	"strings"
 	"time"
 )
 
 func ReportKnowledgeResourceAdd(title string, fileUrl string, adminId int, adminRealName string) (msg string, err error) {
 	classifyObj := new(models.KnowledgeClassify)
-	classifyObj, err = classifyObj.GetClassifyByNameAndType("日常报告", models.KnowledgeResourceTypeReport)
+	classifyObj, err = classifyObj.GetClassifyByNameAndType("日常报告", models.KnowledgeResourceTypeReport, 0)
 	if err != nil {
 		if utils.IsErrNoRow(err) {
 			msg = "分类不存在,请检查知识资源-报告库中是否存在-市场研究报告/内部报告/日常报告分类"
@@ -46,15 +47,72 @@ func ReportKnowledgeResourceAdd(title string, fileUrl string, adminId int, admin
 	return
 }
 
-// ViewPointSave 知识资源观点库保存
-func ViewPointSave(req *models.ReportViewPointReq) (msg string, err error) {
-	classifyId, err := KnowledgeResourceClassifyCheckAndSave(req.Category, models.KnowledgeResourceTypeOpinion)
+func ReportKnowledgeResourceClassifyCheckAndSave(reportClassifyId int) (classifyId int, err error) {
+	classifyObj := new(models.Classify)
+	classifyObj, err = classifyObj.GetItemById(reportClassifyId)
+	if err != nil {
+		if !utils.IsErrNoRow(err) {
+			return
+		}
+	}
+	levelPath := classifyObj.LevelPath
+	classifyIdStrs := strings.Split(levelPath, ",")
+	classifyIds := make([]int, 0, len(classifyIdStrs))
+	for _, classifyIdStr := range classifyIdStrs {
+		classifyId, _ := strconv.Atoi(classifyIdStr)
+		classifyIds = append(classifyIds, classifyId)
+	}
+	classifyList, err := classifyObj.GetItemsByIds(classifyIds)
 	if err != nil {
-		msg = "观点保存失败"
 		return
 	}
+	knowledgeClassifyObj := new(models.KnowledgeClassify)
+	var parentId int
+	for i, classify := range classifyList {
+		knowledgeClassifyObj, err = knowledgeClassifyObj.GetClassifyByNameAndType(classify.ClassifyName, models.KnowledgeResourceTypeReport, parentId)
+		if err != nil {
+			if !utils.IsErrNoRow(err) {
+				return
+			}
+			for j := i; j < len(classifyList); j++ {
+				tmp := &models.KnowledgeClassify{
+					ClassifyName: classifyList[j].ClassifyName,
+					Sort:         1,
+					ParentId:     parentId,
+					CreateTime:   time.Now(),
+					ModifyTime:   time.Now(),
+					Enabled:      1,
+					Level:        classifyList[j].Level,
+					ResourceType: models.KnowledgeResourceTypeReport,
+				}
+				err = tmp.Create()
+				if err != nil {
+					return
+				}
+				parentId = tmp.ClassifyId
+			}
+			classifyId = parentId
+			return
+		}
+		parentId = knowledgeClassifyObj.ClassifyId
+	}
+	classifyId = parentId
+	return
+}
+
+// ViewPointSave 知识资源观点库保存
+func ViewPointSave(outId, adminId int, adminRealName, title, content, sourceFrom, classifyName string, classifyId int, startTime *time.Time) (msg string, err error) {
+	if classifyId <= 0 {
+		tmpClassifyId, er := ViewPointKnowledgeResourceClassifyCheckAndSave(classifyName, models.KnowledgeResourceTypeOpinion)
+		if er != nil {
+			msg = "观点保存失败"
+			err = er
+			return
+		}
+		classifyId = tmpClassifyId
+	}
 	obj := new(models.KnowledgeResource)
-	knowledgeResource, err := obj.GetKnowledgeResourceByOutId(req.Id)
+	knowledgeResource, err := obj.GetKnowledgeResourceByOutId(outId)
 	if err != nil {
 		if !utils.IsErrNoRow(err) {
 			msg = "观点保存失败"
@@ -64,18 +122,23 @@ func ViewPointSave(req *models.ReportViewPointReq) (msg string, err error) {
 		err = nil
 		obj.ResourceType = models.KnowledgeResourceTypeOpinion
 		obj.ClassifyId = classifyId
-		obj.Title = req.Title
+		obj.Title = title
 		obj.CreateTime = time.Now()
 		obj.ModifyTime = time.Now()
 		obj.State = models.KnowledgeResourceStateApproved
-		obj.Content = html.EscapeString(req.Content)
+		obj.Content = html.EscapeString(content)
 		timestamp := strconv.FormatInt(time.Now().UnixNano(), 10)
 		obj.ResourceCode = utils.MD5(utils.CHART_PREFIX + "_" + timestamp)
-		obj.AdminRealName = "无"
-		obj.SourceFrom = req.DataSource
-		obj.StartTime = req.DataDate
+		obj.AdminId = adminId
+		if adminRealName == "" || obj.AdminId == 0 {
+			obj.AdminRealName = "无"
+		} else {
+			obj.AdminRealName = adminRealName
+		}
+		obj.SourceFrom = sourceFrom
+		obj.StartTime = startTime
 		obj.IsFile = 0
-		obj.OutId = req.Id
+		obj.OutId = outId
 		err = obj.Create()
 		if err != nil {
 			msg = "观点保存失败"
@@ -85,20 +148,20 @@ func ViewPointSave(req *models.ReportViewPointReq) (msg string, err error) {
 
 	// 更新知识资源库的状态
 	var updateCols []string
-	if knowledgeResource.Title != req.Title {
-		knowledgeResource.Title = req.Title
+	if knowledgeResource.Title != title {
+		knowledgeResource.Title = title
 		updateCols = append(updateCols, "title")
 	}
-	if knowledgeResource.Content != req.Content {
-		knowledgeResource.Content = req.Content
+	if knowledgeResource.Content != content {
+		knowledgeResource.Content = content
 		updateCols = append(updateCols, "content")
 	}
-	if !knowledgeResource.StartTime.Equal(*req.DataDate) {
-		knowledgeResource.StartTime = req.DataDate
+	if !knowledgeResource.StartTime.Equal(*startTime) {
+		knowledgeResource.StartTime = startTime
 		updateCols = append(updateCols, "start_time")
 	}
-	if knowledgeResource.SourceFrom != req.DataSource {
-		knowledgeResource.SourceFrom = req.DataSource
+	if knowledgeResource.SourceFrom != sourceFrom {
+		knowledgeResource.SourceFrom = sourceFrom
 		updateCols = append(updateCols, "source_from")
 	}
 
@@ -114,9 +177,9 @@ func ViewPointSave(req *models.ReportViewPointReq) (msg string, err error) {
 	return
 }
 
-func KnowledgeResourceClassifyCheckAndSave(classifyName string, resourceType int) (classifyId int, err error) {
+func ViewPointKnowledgeResourceClassifyCheckAndSave(classifyName string, resourceType int) (classifyId int, err error) {
 	obj := new(models.KnowledgeClassify)
-	obj, err = obj.GetClassifyByNameAndType(classifyName, resourceType)
+	obj, err = obj.GetClassifyByNameAndType(classifyName, resourceType, 0)
 	if err != nil {
 		if !utils.IsErrNoRow(err) {
 			return