浏览代码

fix:合并ppt需要保留原来Ppt里面的表格样式

Roc 3 月之前
父节点
当前提交
de9bd5eec9
共有 4 个文件被更改,包括 82 次插入0 次删除
  1. 5 0
      controllers/ppt_v2.go
  2. 49 0
      models/data_manage/excel/referenced_excel_config.go
  3. 1 0
      models/ppt_v2.go
  4. 27 0
      services/ppt.go

+ 5 - 0
controllers/ppt_v2.go

@@ -200,6 +200,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
 

+ 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 {

+ 27 - 0
services/ppt.go

@@ -426,6 +426,10 @@ func SaveEnglishPPTReport(pptId, classifyIdFirst, classifyIdSecond int, title, a
 	}
 	reportId = int(newReportId)
 	reportCode = newCode
+
+	// 英文ppt转英文报告后,将英文报告的表格关系做处理
+	handlerPptToEnReportTableReferenced(pptId, reportId)
+
 	return
 }
 
@@ -563,6 +567,29 @@ func HandlerPptToEnPptTableReferenced(pptId, enPptId, sysUserId int, sysUserName
 
 }
 
+// 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