Browse Source

Merge remote-tracking branch 'origin/ETA_2.4.0' into debug

Roc 2 months ago
parent
commit
013fed127d
4 changed files with 200 additions and 0 deletions
  1. 11 0
      controllers/ppt_v2.go
  2. 49 0
      models/data_manage/excel/referenced_excel_config.go
  3. 1 0
      models/ppt_v2.go
  4. 139 0
      services/ppt.go

+ 11 - 0
controllers/ppt_v2.go

@@ -219,6 +219,11 @@ func (this *PptV2Controller) AddPpt() {
 				return
 			}
 		}
+
+		// 合并ppt后,将ppt的表格关系做处理
+		if len(req.MergePptIdList) > 0 {
+			services.HandlerMergePptTableReferenced(req.MergePptIdList, int(newId), this.SysUser.AdminId, this.SysUser.RealName)
+		}
 	} else {
 		newId = req.PptId
 
@@ -1177,6 +1182,9 @@ func (this *PptV2Controller) ToEn() {
 		return
 	}
 
+	// ppt转英文ppt后,将ppt的表格关系做处理
+	services.HandlerPptToEnPptTableReferenced(origin.PptId, int(newId), this.SysUser.AdminId, this.SysUser.RealName)
+
 	resp := ppt_english.AddPptEnglishResp{
 		PptId: newId,
 	}
@@ -1275,6 +1283,9 @@ func (this *PptV2Controller) BatchToEn() {
 			br.ErrMsg = "新增英文PPT和目录映射失败, Err: " + e.Error()
 			return
 		}
+
+		// ppt转英文ppt后,将ppt的表格关系做处理
+		services.HandlerPptToEnPptTableReferenced(origin.PptId, int(newId), this.SysUser.AdminId, this.SysUser.RealName)
 	}
 
 	br.Ret = 200

+ 49 - 0
models/data_manage/excel/referenced_excel_config.go

@@ -118,3 +118,52 @@ func CopyReferencedExcelConfigByReferencedIdAndFromScene(oldReferencedId, oldFro
 
 	return
 }
+
+// CopyReferencedExcelConfigByReferencedIdListAndFromScene
+// @Description: 根据原引用Id列表和引用类型创建新的表格关系
+// @author: Roc
+// @datetime 2025-01-09 17:37:47
+// @param oldReferencedIdList []int
+// @param oldFromScene int
+// @param newReferencedId int
+// @param newFromScene int
+// @param sysUserId int
+// @param sysUserName string
+// @return addList []*ReferencedExcelConfig
+// @return err error
+func CopyReferencedExcelConfigByReferencedIdListAndFromScene(oldReferencedIdList []int, oldFromScene, newReferencedId, newFromScene, sysUserId int, sysUserName string) (addList []*ReferencedExcelConfig, err error) {
+	num := len(oldReferencedIdList)
+	if num <= 0 {
+		return
+	}
+
+	o := orm.NewOrmUsingDB("data")
+	var items []ReferencedExcelConfig
+	sql := ` SELECT * FROM referenced_excel_config WHERE referenced_id in (` + utils.GetOrmInReplace(num) + `) AND from_scene = ? group by unique_code,uuid `
+	_, err = o.Raw(sql, oldReferencedIdList, oldFromScene).QueryRows(&items)
+	if err != nil {
+		return
+	}
+
+	addList = make([]*ReferencedExcelConfig, 0)
+	for _, v := range items {
+		addList = append(addList, &ReferencedExcelConfig{
+			ReferencedExcelConfigId: 0,
+			UniqueCode:              v.UniqueCode,
+			ReferencedId:            newReferencedId,
+			FromScene:               newFromScene,
+			Uuid:                    v.Uuid,
+			WidthList:               v.WidthList,
+			HeightList:              v.HeightList,
+			OpUserId:                sysUserId,
+			OpUserName:              sysUserName,
+			CreateTime:              time.Now(),
+			Content:                 v.Content,
+			ModifyTime:              time.Now(),
+		})
+	}
+	// 批量复制表格关系
+	_, err = o.InsertMulti(utils.MultiAddNum, addList)
+
+	return
+}

+ 1 - 0
models/ppt_v2.go

@@ -130,6 +130,7 @@ type AddPptV2Req struct {
 	CoverContent    string                     `description:"封面图内容-JSON数据"`
 	TitleSetting    string                     `description:"PPT标题设置"`
 	ExcelReferences []excel.ExcelReferencesReq `description:"引用的Excel信息"`
+	MergePptIdList  []int                      `description:"合并的ppt的Id列表"`
 }
 
 type AddPptResp struct {

+ 139 - 0
services/ppt.go

@@ -4,6 +4,7 @@ import (
 	"encoding/json"
 	"errors"
 	"eta/eta_api/models"
+	"eta/eta_api/models/data_manage/excel"
 	"eta/eta_api/models/ppt_english"
 	"eta/eta_api/models/system"
 	"eta/eta_api/services/alarm_msg"
@@ -170,6 +171,9 @@ func SavePPTReport(pptId, classifyId int, title string, adminInfo *system.Admin)
 	reportId = int(newReportId)
 	reportCode = newCode
 
+	// ppt转报告后,将ppt的表格关系做处理
+	handlerPptToReportTableReferenced(pptId, int(newReportId))
+
 	// 更新报告中的ppt图片
 	go saveReportPptImg(pptId, reportId, item.PptxUrl)
 
@@ -439,6 +443,10 @@ func SaveEnglishPPTReport(pptId, classifyIdFirst, classifyIdSecond int, title, a
 	}
 	reportId = int(newReportId)
 	reportCode = newCode
+
+	// 英文ppt转英文报告后,将英文报告的表格关系做处理
+	handlerPptToEnReportTableReferenced(pptId, reportId)
+
 	return
 }
 
@@ -501,3 +509,134 @@ func UpdatePptEditing(pptId, status, userId int, userName string, isEn bool) (re
 	}
 	return
 }
+
+// handlerPptToReportTableReferenced
+// @Description: ppt转报告后,需要同时继承原来ppt中表格的拖动数据逻辑
+// @author: Roc
+// @datetime 2025-01-09 16:51:11
+// @param pptId int
+// @param reportId int
+func handlerPptToReportTableReferenced(pptId, reportId int) {
+	var err error
+	defer func() {
+		if err != nil {
+			utils.FileLog.Error("ppt转报告后,报告与动态表格关联处理失败,PPT的ID:%d,新报告ID:%d,Err:%s", pptId, reportId, err.Error())
+		}
+	}()
+	reportInfo, err := models.GetReportByReportId(reportId)
+	if err != nil {
+		return
+	}
+
+	addList, err := excel.CopyReferencedExcelConfigByReferencedIdAndFromScene(pptId, utils.TableReferencedByPPT, reportInfo.Id, utils.TableReferencedByReport, reportInfo.AdminId, reportInfo.AdminRealName)
+	if err != nil {
+		return
+	}
+
+	if len(addList) > 0 {
+		// 修改内容
+		reportInfo.Content = HandleReportContentTable(reportInfo.Id, reportInfo.Content)
+		reportInfo.ContentStruct = HandleReportContentStructTable(reportInfo.Id, reportInfo.ContentStruct)
+		err = reportInfo.Update([]string{"Content", "ContentStruct"})
+		if err != nil {
+			return
+		}
+
+		if reportInfo.HasChapter == 1 {
+			chapterList, tmpErr := models.GetChapterListByReportId(reportInfo.Id)
+			if tmpErr != nil {
+				err = tmpErr
+				return
+			}
+			for _, v := range chapterList {
+				v.Content = HandleReportContentTable(reportInfo.Id, v.Content)
+				v.ContentStruct = HandleReportContentStructTable(reportInfo.Id, v.ContentStruct)
+				err = v.Update([]string{"Content", "ContentStruct"})
+				if err != nil {
+					return
+				}
+			}
+		}
+	}
+
+}
+
+// HandlerPptToEnPptTableReferenced
+// @Description: ppt转英文ppt后,需要同时继承原来ppt中表格的拖动数据逻辑
+// @author: Roc
+// @datetime 2025-01-09 16:51:03
+// @param pptId int
+// @param enPptId int
+// @param sysUserId int
+// @param sysUserName string
+func HandlerPptToEnPptTableReferenced(pptId, enPptId, sysUserId int, sysUserName string) {
+	var err error
+	defer func() {
+		if err != nil {
+			utils.FileLog.Error("ppt转英文PPT后,英文PPT与动态表格关联处理失败,PPT的ID:%d,英文ppt的ID:%d,Err:%s", pptId, enPptId, err.Error())
+		}
+	}()
+
+	_, err = excel.CopyReferencedExcelConfigByReferencedIdAndFromScene(pptId, utils.TableReferencedByPPT, enPptId, utils.TableReferencedByEnPPT, sysUserId, sysUserName)
+	if err != nil {
+		return
+	}
+
+}
+
+// HandlerMergePptTableReferenced
+// @Description: 多ppt合并生成新的ppt,需要同时继承原来所有ppt中表格的拖动数据逻辑
+// @author: Roc
+// @datetime 2025-01-09 16:51:03
+// @param pptId int
+// @param enPptId int
+// @param sysUserId int
+// @param sysUserName string
+func HandlerMergePptTableReferenced(oldPptIdList []int, pptId, sysUserId int, sysUserName string) {
+	var err error
+	defer func() {
+		if err != nil {
+			utils.FileLog.Error("ppt转英文PPT后,英文PPT与动态表格关联处理失败,待合并的PPT的ID:%v,英文ppt的ID:%d,Err:%s", oldPptIdList, pptId, err.Error())
+		}
+	}()
+
+	_, err = excel.CopyReferencedExcelConfigByReferencedIdListAndFromScene(oldPptIdList, utils.TableReferencedByPPT, pptId, utils.TableReferencedByPPT, sysUserId, sysUserName)
+	if err != nil {
+		return
+	}
+
+}
+
+// handlerPptToEnReportTableReferenced
+// @Description: 英文ppt转报告后,需要同时继承原来英文ppt中表格的拖动数据逻辑
+// @author: Roc
+// @datetime 2025-01-09 17:04:49
+// @param enPptId int
+// @param enReportId int
+func handlerPptToEnReportTableReferenced(enPptId, enReportId int) {
+	var err error
+	defer func() {
+		if err != nil {
+			utils.FileLog.Error("ppt转英文报告后,英文报告与动态表格关联处理失败,PPT的ID:%d,英文报告ID:%d,Err:%s", enPptId, enReportId, err.Error())
+		}
+	}()
+	reportInfo, err := models.GetEnglishReportItemById(enReportId)
+	if err != nil {
+		return
+	}
+
+	addList, err := excel.CopyReferencedExcelConfigByReferencedIdAndFromScene(enPptId, utils.TableReferencedByEnPPT, enReportId, utils.TableReferencedByEnReport, reportInfo.AdminId, reportInfo.AdminRealName)
+	if err != nil {
+		return
+	}
+
+	if len(addList) > 0 {
+		// 修改内容
+		reportInfo.Content = HandleReportContentTable(reportInfo.Id, reportInfo.Content)
+		err = reportInfo.Update([]string{"Content"})
+		if err != nil {
+			return
+		}
+	}
+
+}