Browse Source

fix:资产移动时,添加日志记录

Roc 1 năm trước cách đây
mục cha
commit
9165dbe5d4

+ 9 - 8
controllers/data_manage/data_manage_permission/data_move.go

@@ -4,7 +4,7 @@ import (
 	"encoding/json"
 	"eta/eta_api/models"
 	"eta/eta_api/models/data_manage"
-	"eta/eta_api/services/data"
+	data_manage_permissionModel "eta/eta_api/models/data_manage/data_manage_permission"
 	"eta/eta_api/services/data/data_manage_permission"
 	"eta/eta_api/utils"
 	"github.com/rdlucklib/rdluck_tools/paging"
@@ -14,6 +14,7 @@ import (
 // @Title 获取指标/图表分类列表数据接口
 // @Description 获取指标/图表分类列表数据接口
 // @Param   Source   query   int  false       "来源 :1:手工数据指标 2:钢联化工数据库 3:ETA指标库 4:ETA预测指标 5:图库 6:ETA表格"
+// @Param   SubSource   query   int  false       "子来源 :ETA表格中的各种表格类型,以及图表的来源(这个是后续的扩展方向)"
 // @Success 200 {object} data_manage.ChartListResp
 // @router /edb_chart/classify [get]
 func (this *DataMangePermissionController) EdbChartClassifyList() {
@@ -153,7 +154,7 @@ func (c *DataMangePermissionController) MoveEdbChartList() {
 // MoveEdbChartUser
 // @Title 指标/图表创建人变更接口
 // @Description 指标/图表创建人变更接口
-// @Param	request	body data_manage.MoveEdbChartReq true "type json string"
+// @Param	request	body data_manage_permissionModel.MoveEdbChartReq true "type json string"
 // @Success 200 {object} data_manage.ChartListResp
 // @router /edb_chart/change_user [post]
 func (c *DataMangePermissionController) MoveEdbChartUser() {
@@ -170,7 +171,7 @@ func (c *DataMangePermissionController) MoveEdbChartUser() {
 		return
 	}
 
-	var req data_manage.MoveEdbChartReq
+	var req data_manage_permissionModel.MoveEdbChartReq
 	err := json.Unmarshal(c.Ctx.Input.RequestBody, &req)
 	if err != nil {
 		br.Msg = "参数解析异常!"
@@ -202,7 +203,7 @@ func (c *DataMangePermissionController) MoveEdbChartUser() {
 		return
 	}
 
-	err, errMsg := data_manage_permission.MoveEdbChart(req.Source, req.SubSource, req.UserId, req.NewUserId, req.IsSelectAll, req.DataIdList, req.NoDataIdList, req.Keyword, req.ClassifyId)
+	err, errMsg := data_manage_permission.MoveEdbChart(req.Source, req.SubSource, req.UserId, req.NewUserId, req.IsSelectAll, req.DataIdList, req.NoDataIdList, req.Keyword, req.ClassifyId, sysUser.AdminId)
 	if err != nil {
 		//br.Success = true
 		br.Msg = "移动失败"
@@ -221,7 +222,7 @@ func (c *DataMangePermissionController) MoveEdbChartUser() {
 // MoveAllEdbChartUser
 // @Title 通过原创建人转移指标/图表创建人接口
 // @Description 通过原创建人转移指标/图表创建人接口
-// @Param	request	body data_manage.MoveAllEdbChartReq true "type json string"
+// @Param request body data_manage_permission.MoveAllEdbChartReq true "type json string"
 // @Success 200 {object} data_manage.ChartListResp
 // @router /edb_chart/all/change_user [post]
 func (c *DataMangePermissionController) MoveAllEdbChartUser() {
@@ -238,7 +239,7 @@ func (c *DataMangePermissionController) MoveAllEdbChartUser() {
 		return
 	}
 
-	var req data_manage.MoveAllEdbChartReq
+	var req data_manage_permissionModel.MoveAllEdbChartReq
 	err := json.Unmarshal(c.Ctx.Input.RequestBody, &req)
 	if err != nil {
 		br.Msg = "参数解析异常!"
@@ -263,7 +264,7 @@ func (c *DataMangePermissionController) MoveAllEdbChartUser() {
 		return
 	}
 
-	err, errMsg := data.MoveAllEdbChart(req.Source, req.OldUserId, req.NewUserId)
+	err, errMsg := data_manage_permission.MoveAllEdbChart(req.Source, req.OldUserId, req.NewUserId, sysUser.AdminId)
 	if err != nil {
 		//br.Success = true
 		br.Msg = "移动失败"
@@ -311,7 +312,7 @@ func (c *DataMangePermissionController) MoveEdbChartCount() {
 		return
 	}
 
-	resp, err := data.GetMoveEdbChartCount(userId)
+	resp, err := data_manage_permission.GetMoveEdbChartCount(userId)
 	if err != nil {
 		//br.Success = true
 		br.Msg = "获取失败"

+ 35 - 0
models/data_manage/chart_info.go

@@ -1578,6 +1578,41 @@ func GetChartInfoListGroupByUserId(edbIdList []string) (items []*ChartInfo, err
 	return
 }
 
+// GetChartInfoListByChartIdList
+// @Description: 根据图表id列表获取列表信息
+// @param edbIdList
+// @return items
+// @return err
+func GetChartInfoListByChartIdList(charIdList []string) (items []*ChartInfo, err error) {
+	num := len(charIdList)
+	if num <= 0 {
+		return
+	}
+	o := orm.NewOrmUsingDB("data")
+	sql := ` SELECT * FROM chart_info WHERE chart_info_id in (` + utils.GetOrmInReplace(num) + `) ORDER BY chart_info_id desc `
+
+	_, err = o.Raw(sql, charIdList).QueryRows(&items)
+	return
+}
+
+// GetChartInfoListByUserId
+// @Description: 根据图表id列表获取列表信息
+// @param userIdList []int
+// @param source int
+// @return items
+// @return err
+func GetChartInfoListByUserId(userIdList []int, source int) (items []*ChartInfo, err error) {
+	num := len(userIdList)
+	if num <= 0 {
+		return
+	}
+	o := orm.NewOrmUsingDB("data")
+	sql := ` SELECT * FROM chart_info WHERE source = ? AND  sys_user_id in (` + utils.GetOrmInReplace(num) + `) ORDER BY chart_info_id desc `
+
+	_, err = o.Raw(sql, source, userIdList).QueryRows(&items)
+	return
+}
+
 // ModifyChartInfoUserIdByCodeList 根据指标code列表修改创建人
 func ModifyChartInfoUserIdByCodeList(edbIdList []string, userId int, userName string) (err error) {
 	num := len(edbIdList)

+ 18 - 0
models/data_manage/data_manage_permission/message.go

@@ -0,0 +1,18 @@
+package data_manage_permission
+
+import "time"
+
+// DataPermissionMessage
+// @Description: 数据权限变更消息表
+type DataPermissionMessage struct {
+	DataPermissionMessageId int64     `json:"data_permission_message_id" orm:"column(data_permission_message_id);pk"`
+	SendUserId              int32     `json:"send_user_id"`    // 发送人ID
+	ReceiveUserId           int32     `json:"receive_user_id"` // 接收者ID
+	Content                 string    `json:"content"`         // 消息内容
+	Remark                  string    `json:"remark"`          // 备注信息
+	OpType                  int32     `json:"op_type"`         // 操作类型,1:单个资产转移,2:资产模块转移,3:资产授权,4:资产分类授权
+	OpUniqueCode            string    `json:"op_unique_code"`  // 操作编码
+	IsRead                  int32     `json:"is_read"`         // 是否已读:0-未读;1-已读
+	CreateTime              time.Time `json:"create_time"`     // 创建时间
+	ModifyTime              time.Time `json:"modify_time"`     // 修改时间
+}

+ 103 - 0
models/data_manage/data_manage_permission/move.go

@@ -0,0 +1,103 @@
+package data_manage_permission
+
+import (
+	"eta/eta_api/utils"
+	"github.com/beego/beego/v2/client/orm"
+)
+
+// ModifyDataUserIdByOldUserId
+// @Description:  根据旧用户id修改新用户id
+// @author: Roc
+// @datetime 2024-03-25 17:59:32
+// @param oldUserId int
+// @param userId int
+// @return err error
+func ModifyDataUserIdByOldUserId(oldUserIdList []int, userId int, userName string, isMoveManual, isMoveMysteelChemical, isMoveEdb, isMovePredictEdb, isMoveChart, isMoveExcel bool) (err error) {
+	num := len(oldUserIdList)
+	if num <= 0 {
+		return
+	}
+
+	if userId <= 0 {
+		return
+	}
+
+	// 手工指标库
+	if isMoveManual {
+		edbTo, tmpErr := orm.NewOrmUsingDB("edb").Begin()
+		if tmpErr != nil {
+			return
+		}
+		defer func() {
+			if err != nil {
+				_ = edbTo.Rollback()
+			} else {
+				_ = edbTo.Commit()
+			}
+		}()
+		sql := `UPDATE edbinfo SET user_id=? WHERE user_id in (` + utils.GetOrmInReplace(num) + `) `
+		_, err = edbTo.Raw(sql, userId, oldUserIdList).Exec()
+		if err != nil {
+			return
+		}
+	}
+
+	// ETA指标库
+	o, err := orm.NewOrmUsingDB("data").Begin()
+	if err != nil {
+		return
+	}
+	defer func() {
+		if err != nil {
+			_ = o.Rollback()
+		} else {
+			_ = o.Commit()
+		}
+	}()
+
+	// 钢联化工数据库
+	if isMoveMysteelChemical {
+		sql := `UPDATE base_from_mysteel_chemical_index SET sys_user_id=?,sys_user_real_name=? WHERE sys_user_id in (` + utils.GetOrmInReplace(num) + `)  `
+		_, err = o.Raw(sql, userId, userName, oldUserIdList).Exec()
+		if err != nil {
+			return
+		}
+	}
+
+	// ETA指标库
+	if isMoveEdb {
+		sql := `UPDATE edb_info SET sys_user_id=?,sys_user_real_name=? WHERE sys_user_id in (` + utils.GetOrmInReplace(num) + `) and edb_info_type = ?`
+		_, err = o.Raw(sql, userId, userName, oldUserIdList, 0).Exec()
+		if err != nil {
+			return
+		}
+	}
+	// 预测指标
+	if isMovePredictEdb {
+		sql := `UPDATE edb_info SET sys_user_id=?,sys_user_real_name=? WHERE sys_user_id in (` + utils.GetOrmInReplace(num) + `) and edb_info_type = ?`
+		_, err = o.Raw(sql, userId, userName, oldUserIdList, 1).Exec()
+		if err != nil {
+			return
+		}
+	}
+
+	// ETA表格
+	if isMoveChart {
+		sql := `UPDATE chart_info SET sys_user_id=?,sys_user_real_name=? WHERE sys_user_id in (` + utils.GetOrmInReplace(num) + `) `
+		_, err = o.Raw(sql, userId, userName, oldUserIdList).Exec()
+		if err != nil {
+			return
+		}
+	}
+
+	// ETA表格
+	if isMoveExcel {
+		sql := `UPDATE excel_info SET sys_user_id=?,sys_user_real_name=? WHERE is_delete=0 AND sys_user_id in (` + utils.GetOrmInReplace(num) + `) `
+		_, err = o.Raw(sql, userId, userName, oldUserIdList).Exec()
+		if err != nil {
+			return
+		}
+	}
+
+	return
+}

+ 57 - 0
models/data_manage/data_manage_permission/move_record.go

@@ -0,0 +1,57 @@
+package data_manage_permission
+
+import (
+	"github.com/beego/beego/v2/client/orm"
+	"time"
+)
+
+// DataPermissionMoveRecord
+// @Description: 数据资产转移记录表
+type DataPermissionMoveRecord struct {
+	DataPermissionMoveRecordId int64     `json:"data_permission_move_record_id" orm:"column(data_permission_move_record_id);pk"` // 数据操作记录id
+	Source                     int32     `json:"source"`                                                                         // 数据来源,1:手工数据指标 2:钢联化工数据库 3:ETA指标库 4:ETA预测指标 5:图库 6:ETA表格
+	SubSource                  int32     `json:"sub_source"`                                                                     // 子来源 :ETA表格中的各种表格类型,以及图表的来源(这个是后续的扩展方向)
+	OpUniqueCode               string    `json:"op_unique_code"`                                                                 // 操作的唯一编码,主要是记录统一操作的日志
+	DataId                     string    `json:"data_id"`                                                                        // 资产id(指标、图表、表格)
+	DataCode                   string    `json:"data_code"`                                                                      // 资产code(指标、图表、表格)
+	DataName                   string    `json:"data_name"`                                                                      // 资产名称(指标、图表、表格)
+	OriginalUserId             int32     `json:"original_user_id"`                                                               // 原创建人id
+	OriginalUserName           string    `json:"original_user_name"`                                                             // 原创建人名称
+	NewUserId                  int32     `json:"new_user_id"`                                                                    // 新创建人id
+	NewUserName                string    `json:"new_user_name"`                                                                  // 新创建人名称
+	CreateTime                 time.Time `json:"create_time"`                                                                    // 创建时间
+}
+
+// AddDataPermissionMoveRecord
+// @Description: 添加资产转移的操作记录
+// @param dataPermissionMoveRecordList
+// @param dataPermissionMessage
+// @return err
+func AddDataPermissionMoveRecord(dataPermissionMoveRecordList []*DataPermissionMoveRecord, dataPermissionMessage *DataPermissionMessage) (err error) {
+	num := len(dataPermissionMoveRecordList)
+	if num <= 0 {
+		return
+	}
+	o, err := orm.NewOrmUsingDB("data").Begin()
+	if err != nil {
+		return
+	}
+	defer func() {
+		if err != nil {
+			_ = o.Rollback()
+		} else {
+			_ = o.Commit()
+		}
+	}()
+
+	// 添加操作记录
+	_, err = o.InsertMulti(500, dataPermissionMoveRecordList)
+	if err != nil {
+		return
+	}
+
+	// 添加消息通知
+	_, err = o.Insert(dataPermissionMessage)
+
+	return
+}

+ 20 - 0
models/data_manage/data_manage_permission/req_and_resp.go

@@ -1,5 +1,25 @@
 package data_manage_permission
 
+// MoveEdbChartReq 转移指标/图表的请求
+type MoveEdbChartReq struct {
+	Source       int      `description:"来源id"`
+	SubSource    int      `description:"子来源id"`
+	DataIdList   []string `description:"指标/图表唯一id列表"`
+	NoDataIdList []string `description:"指标/图表唯一id列表"`
+	NewUserId    int      `description:"新的创建人id"`
+	IsSelectAll  bool     `description:"是否选择所有指标"`
+	ClassifyId   string   `description:"分类id,支持多选,用英文,隔开"`
+	Keyword      string   `description:"关键字"`
+	UserId       int      `description:"旧的创建人id"`
+}
+
+// MoveAllEdbChartReq 转移所有的指标/图表的请求
+type MoveAllEdbChartReq struct {
+	Source    []int `description:"来源id"`
+	OldUserId []int `description:"旧的创建人id"`
+	NewUserId int   `description:"新的创建人id"`
+}
+
 // SetDataIsPermissionReq
 // @Description: 设置数据分类权限请求
 type SetDataIsPermissionReq struct {

+ 35 - 20
models/data_manage/edb_info.go

@@ -1562,6 +1562,41 @@ func GetEdbInfoListGroupByUserId(edbIdList []string) (items []*EdbInfo, err erro
 	return
 }
 
+// GetEdbInfoListByEdbInfoId
+// @Description: 根据指标id列表获取列表信息
+// @param edbIdList
+// @return items
+// @return err
+func GetEdbInfoListByEdbInfoId(edbIdList []string) (items []*EdbInfo, err error) {
+	num := len(edbIdList)
+	if num <= 0 {
+		return
+	}
+	o := orm.NewOrmUsingDB("data")
+	sql := ` SELECT * FROM edb_info WHERE edb_info_id in (` + utils.GetOrmInReplace(num) + `) `
+
+	_, err = o.Raw(sql, edbIdList).QueryRows(&items)
+	return
+}
+
+// GetEdbInfoListByUserId
+// @Description: 根据指标id列表获取列表信息
+// @param userIdList []int
+// @param edbInfoType int
+// @return items
+// @return err
+func GetEdbInfoListByUserId(userIdList []int, edbInfoType int) (items []*EdbInfo, err error) {
+	num := len(userIdList)
+	if num <= 0 {
+		return
+	}
+	o := orm.NewOrmUsingDB("data")
+	sql := ` SELECT * FROM edb_info WHERE edb_info_type = ? AND sys_user_id in (` + utils.GetOrmInReplace(num) + `) `
+
+	_, err = o.Raw(sql, edbInfoType, userIdList).QueryRows(&items)
+	return
+}
+
 // ModifyEdbInfoUserIdByCodeList 根据指标code列表修改创建人
 func ModifyEdbInfoUserIdByCodeList(edbIdList []string, userId int, userName string) (err error) {
 	num := len(edbIdList)
@@ -1610,26 +1645,6 @@ type MoveEdbChartListResp struct {
 	List   []MoveEdbChartList
 }
 
-// MoveEdbChartReq 转移指标/图表的请求
-type MoveEdbChartReq struct {
-	Source       int      `description:"来源id"`
-	SubSource    int      `description:"子来源id"`
-	DataIdList   []string `description:"指标/图表唯一id列表"`
-	NoDataIdList []string `description:"指标/图表唯一id列表"`
-	NewUserId    int      `description:"新的创建人id"`
-	IsSelectAll  bool     `description:"是否选择所有指标"`
-	ClassifyId   string   `description:"分类id,支持多选,用英文,隔开"`
-	Keyword      string   `description:"关键字"`
-	UserId       int      `description:"旧的创建人id"`
-}
-
-// MoveAllEdbChartReq 转移所有的指标/图表的请求
-type MoveAllEdbChartReq struct {
-	Source    []int `description:"来源id"`
-	OldUserId []int `description:"旧的创建人id"`
-	NewUserId int   `description:"新的创建人id"`
-}
-
 type EdbChartClassifyResp struct {
 	List []*EdbChartClassify
 }

+ 25 - 4
models/data_manage/excel/excel_info.go

@@ -543,16 +543,37 @@ func GetExcelMaxSortByClassifyId(classifyId int, source int) (sort int, err erro
 	return
 }
 
-// GetNoContentExcelListGroupByUserId 根据表格id列表、用户分组获取指标信息
-func GetNoContentExcelListGroupByUserId(edbIdList []string) (items []*MyExcelInfoList, err error) {
-	num := len(edbIdList)
+// GetNoContentExcelListByExcelInfoIdList
+// @Description: 根据ETA表格ID列表获取列表信息
+// @param excelInfoIdList []string
+// @return items
+// @return err
+func GetNoContentExcelListByExcelInfoIdList(excelInfoIdList []string) (items []*MyExcelInfoList, err error) {
+	num := len(excelInfoIdList)
 	if num <= 0 {
 		return
 	}
 	o := orm.NewOrmUsingDB("data")
 	sql := ` SELECT * FROM excel_info WHERE excel_info_id in (` + utils.GetOrmInReplace(num) + `) order by excel_info_id DESC `
+	_, err = o.Raw(sql, excelInfoIdList).QueryRows(&items)
+
+	return
+}
+
+// GetNoContentExcelListByUserId
+// @Description: 根据ETA表格ID列表获取列表信息
+// @param userIdList []int
+// @return items
+// @return err
+func GetNoContentExcelListByUserId(userIdList []int) (items []*MyExcelInfoList, err error) {
+	num := len(userIdList)
+	if num <= 0 {
+		return
+	}
+	o := orm.NewOrmUsingDB("data")
+	sql := ` SELECT * FROM excel_info WHERE excel_info_id in (` + utils.GetOrmInReplace(num) + `) order by excel_info_id DESC `
+	_, err = o.Raw(sql, userIdList).QueryRows(&items)
 
-	_, err = o.Raw(sql, edbIdList).QueryRows(&items)
 	return
 }
 

+ 34 - 0
models/data_manage/mysteel_chemical_index.go

@@ -301,8 +301,42 @@ func GetMysteelChemicalIndexListGroupByUserId(edbIdList []string) (items []*Base
 	}
 	o := orm.NewOrmUsingDB("data")
 	sql := ` SELECT * FROM base_from_mysteel_chemical_index WHERE base_from_mysteel_chemical_index_id in (` + utils.GetOrmInReplace(num) + `) GROUP BY sys_user_id `
+	_, err = o.Raw(sql, edbIdList).QueryRows(&items)
+	
+	return
+}
 
+// GetMysteelChemicalIndexListByIndexId
+// @Description: 根据指标id列表获取列表信息
+// @param edbIdList
+// @return items
+// @return err
+func GetMysteelChemicalIndexListByIndexId(edbIdList []string) (items []*BaseFromMysteelChemicalIndex, err error) {
+	num := len(edbIdList)
+	if num <= 0 {
+		return
+	}
+	o := orm.NewOrmUsingDB("data")
+	sql := ` SELECT * FROM base_from_mysteel_chemical_index WHERE base_from_mysteel_chemical_index_id in (` + utils.GetOrmInReplace(num) + `) `
 	_, err = o.Raw(sql, edbIdList).QueryRows(&items)
+
+	return
+}
+
+// GetMysteelChemicalIndexListByUserId
+// @Description: 根据用户id列表获取列表信息
+// @param userIdList
+// @return items
+// @return err
+func GetMysteelChemicalIndexListByUserId(userIdList []int) (items []*BaseFromMysteelChemicalIndex, err error) {
+	num := len(userIdList)
+	if num <= 0 {
+		return
+	}
+	o := orm.NewOrmUsingDB("data")
+	sql := ` SELECT * FROM base_from_mysteel_chemical_index WHERE sys_user_id in (` + utils.GetOrmInReplace(num) + `) `
+	_, err = o.Raw(sql, userIdList).QueryRows(&items)
+
 	return
 }
 

+ 8 - 6
models/db.go

@@ -560,11 +560,13 @@ func initEdbRefresh() {
 // @datetime 2024-03-27 14:03:11
 func initDataMangePerMission() {
 	orm.RegisterModel(
-		new(data_manage_permission.EdbInfoPermission),       // 指标权限表
-		new(data_manage_permission.EdbClassifyPermission),   // 指标分类权限表
-		new(data_manage_permission.ChartInfoPermission),     // 图表权限表
-		new(data_manage_permission.ChartClassifyPermission), // 图表分类权限表
-		new(data_manage_permission.ExcelInfoPermission),     // ETA表格权限表
-		new(data_manage_permission.ExcelClassifyPermission), // ETA表格分类权限表
+		new(data_manage_permission.EdbInfoPermission),        // 指标权限表
+		new(data_manage_permission.EdbClassifyPermission),    // 指标分类权限表
+		new(data_manage_permission.ChartInfoPermission),      // 图表权限表
+		new(data_manage_permission.ChartClassifyPermission),  // 图表分类权限表
+		new(data_manage_permission.ExcelInfoPermission),      // ETA表格权限表
+		new(data_manage_permission.ExcelClassifyPermission),  // ETA表格分类权限表
+		new(data_manage_permission.DataPermissionMessage),    // 数据权限变更消息表
+		new(data_manage_permission.DataPermissionMoveRecord), // 数据资产转移记录表
 	)
 }

+ 32 - 0
models/target.go

@@ -1433,6 +1433,38 @@ func GetEdbinfoListByCodeListGroupByUserId(edbCodeList []string) (items []*Edbin
 	return
 }
 
+// GetEdbinfoListByCodeListByCodeIdList
+// @Description: 根据指标code列表获取列表信息
+// @param edbCodeList
+// @return items
+// @return err
+func GetEdbinfoListByCodeListByCodeIdList(edbCodeList []string) (items []*Edbinfo, err error) {
+	num := len(edbCodeList)
+	if num <= 0 {
+		return
+	}
+	o := orm.NewOrmUsingDB("edb")
+	sql := `SELECT * FROM edbinfo WHERE TRADE_CODE in (` + utils.GetOrmInReplace(num) + `) `
+	_, err = o.Raw(sql, edbCodeList).QueryRows(&items)
+	return
+}
+
+// GetEdbinfoListByCodeListByUserId
+// @Description: 根据用户id列表获取指标列表信息
+// @param userIdList
+// @return items
+// @return err
+func GetEdbinfoListByCodeListByUserId(userIdList []int) (items []*Edbinfo, err error) {
+	num := len(userIdList)
+	if num <= 0 {
+		return
+	}
+	o := orm.NewOrmUsingDB("edb")
+	sql := `SELECT * FROM edbinfo WHERE user_id in (` + utils.GetOrmInReplace(num) + `) `
+	_, err = o.Raw(sql, userIdList).QueryRows(&items)
+	return
+}
+
 // ModifyEdbinfoUserIdByCodeList 根据指标code列表修改创建人
 func ModifyEdbinfoUserIdByCodeList(edbCodeList []string, userId int) (err error) {
 	num := len(edbCodeList)

+ 803 - 34
services/data/data_manage_permission/data_move.go

@@ -1,13 +1,18 @@
 package data_manage_permission
 
 import (
-	"errors"
+	"encoding/json"
 	"eta/eta_api/models"
 	"eta/eta_api/models/data_manage"
+	"eta/eta_api/models/data_manage/data_manage_permission"
 	"eta/eta_api/models/data_manage/excel"
 	"eta/eta_api/models/system"
 	"eta/eta_api/utils"
+	"fmt"
+	"github.com/rdlucklib/rdluck_tools/uuid"
 	"strconv"
+	"strings"
+	"time"
 )
 
 // GetEdbChartClassifyList
@@ -460,11 +465,9 @@ func GetMoveEdbChartList(source, subSource, userId int, keyword, classify string
 	return
 }
 
-// TODO 资产转移要通知到用户(被转移的用户和新用户)
-
 // MoveEdbChart 转移指标/图表创建人
 // @param source 来源 :1:手工数据指标 2:钢联化工数据库 3:ETA指标库 4:ETA预测指标 5:图库 6:ETA表格
-func MoveEdbChart(source, subSource, oldUserId, newUserId int, isSelectAll bool, dataId, noDataId []string, keyword, classify string) (err error, errMsg string) {
+func MoveEdbChart(source, subSource, oldUserId, newUserId int, isSelectAll bool, dataId, noDataId []string, keyword, classify string, opUserId int) (err error, errMsg string) {
 	adminInfo, err := system.GetSysAdminById(newUserId)
 	if err != nil {
 		return
@@ -493,9 +496,15 @@ func MoveEdbChart(source, subSource, oldUserId, newUserId int, isSelectAll bool,
 		}
 	}
 
+	// 操作记录
+	dataPermissionMoveRecordList := make([]*data_manage_permission.DataPermissionMoveRecord, 0)
+	uniqueCode := uuid.NewUUID().Hex32()
+	content := `资产转入`
+
 	switch source {
 	case 1: //手工数据指标
-		tmpList, tmpErr := models.GetEdbinfoListByCodeListGroupByUserId(dataId)
+		content += `(手工指标数据)`
+		tmpList, tmpErr := models.GetEdbinfoListByCodeListByCodeIdList(dataId)
 		if tmpErr != nil {
 			err = tmpErr
 			return
@@ -503,46 +512,99 @@ func MoveEdbChart(source, subSource, oldUserId, newUserId int, isSelectAll bool,
 
 		if len(tmpList) > 0 {
 			for _, v := range tmpList {
-				if v.UserId == newUserId {
-					errMsg = "新创建人不可和原创建人一致"
-					err = errors.New(errMsg)
-					return
-				}
+				//if v.UserId == newUserId {
+				//	errMsg = "新创建人不可和原创建人一致"
+				//	err = errors.New(errMsg)
+				//	return
+				//}
+
+				// 操作记录
+				dataPermissionMoveRecordList = append(dataPermissionMoveRecordList, &data_manage_permission.DataPermissionMoveRecord{
+					DataPermissionMoveRecordId: 0,
+					Source:                     int32(source),
+					SubSource:                  int32(subSource),
+					OpUniqueCode:               uniqueCode,
+					DataId:                     v.TradeCode,
+					DataCode:                   v.TradeCode,
+					DataName:                   v.SecName,
+					OriginalUserId:             int32(v.UserId),
+					OriginalUserName:           v.UserName,
+					NewUserId:                  int32(adminInfo.AdminId),
+					NewUserName:                adminInfo.RealName,
+					CreateTime:                 time.Now(),
+				})
 			}
 			// 修改创建人
 			err = models.ModifyEdbinfoUserIdByCodeList(dataId, newUserId)
 		}
 
 	case 2: //钢联化工数据库
-		tmpList, tmpErr := data_manage.GetMysteelChemicalIndexListGroupByUserId(dataId)
+		content += `(钢联化工数据库)`
+		tmpList, tmpErr := data_manage.GetMysteelChemicalIndexListByIndexId(dataId)
 		if tmpErr != nil {
 			err = tmpErr
 			return
 		}
 		if len(tmpList) > 0 {
 			for _, v := range tmpList {
-				if v.SysUserId == newUserId {
-					errMsg = "新创建人不可和原创建人一致"
-					err = errors.New(errMsg)
-					return
-				}
+				//if v.SysUserId == newUserId {
+				//	errMsg = "新创建人不可和原创建人一致"
+				//	err = errors.New(errMsg)
+				//	return
+				//}
+				// 操作记录
+				dataPermissionMoveRecordList = append(dataPermissionMoveRecordList, &data_manage_permission.DataPermissionMoveRecord{
+					DataPermissionMoveRecordId: 0,
+					Source:                     int32(source),
+					SubSource:                  int32(subSource),
+					OpUniqueCode:               uniqueCode,
+					DataId:                     fmt.Sprint(v.BaseFromMysteelChemicalIndexId),
+					DataCode:                   v.IndexCode,
+					DataName:                   v.IndexName,
+					OriginalUserId:             int32(v.SysUserId),
+					OriginalUserName:           v.SysUserRealName,
+					NewUserId:                  int32(adminInfo.AdminId),
+					NewUserName:                adminInfo.RealName,
+					CreateTime:                 time.Now(),
+				})
 			}
 			// 修改创建人
 			err = data_manage.ModifyMysteelChemicalIndexUserIdByCodeList(dataId, adminInfo.AdminId, adminInfo.RealName)
 		}
+
 	case 3, 4: //ETA指标库、ETA预测指标
-		tmpList, tmpErr := data_manage.GetEdbInfoListGroupByUserId(dataId)
+		if source == 3 {
+			content += `(ETA指标库)`
+		} else {
+			content += `(ETA预测指标)`
+		}
+		tmpList, tmpErr := data_manage.GetEdbInfoListByEdbInfoId(dataId)
 		if tmpErr != nil {
 			err = tmpErr
 			return
 		}
 		if len(tmpList) > 0 {
 			for _, v := range tmpList {
-				if v.SysUserId == newUserId {
-					errMsg = "新创建人不可和原创建人一致"
-					err = errors.New(errMsg)
-					return
-				}
+				//if v.SysUserId == newUserId {
+				//	errMsg = "新创建人不可和原创建人一致"
+				//	err = errors.New(errMsg)
+				//	return
+				//}
+				// 操作记录
+				dataPermissionMoveRecordList = append(dataPermissionMoveRecordList, &data_manage_permission.DataPermissionMoveRecord{
+					DataPermissionMoveRecordId: 0,
+					Source:                     int32(source),
+					SubSource:                  int32(subSource),
+					OpUniqueCode:               uniqueCode,
+					DataId:                     fmt.Sprint(v.EdbInfoId),
+					DataCode:                   v.EdbCode,
+					DataName:                   v.EdbName,
+					OriginalUserId:             int32(v.SysUserId),
+					OriginalUserName:           v.SysUserRealName,
+					NewUserId:                  int32(adminInfo.AdminId),
+					NewUserName:                adminInfo.RealName,
+					CreateTime:                 time.Now(),
+				})
 			}
 			// 修改创建人
 			err = data_manage.ModifyEdbInfoUserIdByCodeList(dataId, adminInfo.AdminId, adminInfo.RealName)
@@ -557,35 +619,70 @@ func MoveEdbChart(source, subSource, oldUserId, newUserId int, isSelectAll bool,
 			}
 		}
 	case 5: //图库
-		tmpList, tmpErr := data_manage.GetChartInfoListGroupByUserId(dataId)
+		content += `(ETA图库)`
+		// 只展示eta图库
+		subSource = utils.CHART_SOURCE_DEFAULT
+
+		tmpList, tmpErr := data_manage.GetChartInfoListByChartIdList(dataId)
 		if tmpErr != nil {
 			err = tmpErr
 			return
 		}
 		if len(tmpList) > 0 {
 			for _, v := range tmpList {
-				if v.SysUserId == newUserId {
-					errMsg = "新创建人不可和原创建人一致"
-					err = errors.New(errMsg)
-					return
-				}
+				//if v.SysUserId == newUserId {
+				//	errMsg = "新创建人不可和原创建人一致"
+				//	err = errors.New(errMsg)
+				//	return
+				//}
+				// 操作记录
+				dataPermissionMoveRecordList = append(dataPermissionMoveRecordList, &data_manage_permission.DataPermissionMoveRecord{
+					DataPermissionMoveRecordId: 0,
+					Source:                     int32(source),
+					SubSource:                  int32(subSource),
+					OpUniqueCode:               uniqueCode,
+					DataId:                     fmt.Sprint(v.ChartInfoId),
+					DataCode:                   fmt.Sprint(v.ChartInfoId),
+					DataName:                   v.ChartName,
+					OriginalUserId:             int32(v.SysUserId),
+					OriginalUserName:           v.SysUserRealName,
+					NewUserId:                  int32(adminInfo.AdminId),
+					NewUserName:                adminInfo.RealName,
+					CreateTime:                 time.Now(),
+				})
 			}
 			// 修改创建人
 			err = data_manage.ModifyChartInfoUserIdByCodeList(dataId, adminInfo.AdminId, adminInfo.RealName)
 		}
 	case 6: // ETA表格
-		tmpList, tmpErr := excel.GetNoContentExcelListGroupByUserId(dataId)
+		content += `(ETA表格)`
+		tmpList, tmpErr := excel.GetNoContentExcelListByExcelInfoIdList(dataId)
 		if tmpErr != nil {
 			err = tmpErr
 			return
 		}
 		if len(tmpList) > 0 {
 			for _, v := range tmpList {
-				if v.SysUserId == newUserId {
-					errMsg = "新创建人不可和原创建人一致"
-					err = errors.New(errMsg)
-					return
-				}
+				//if v.SysUserId == newUserId {
+				//	errMsg = "新创建人不可和原创建人一致"
+				//	err = errors.New(errMsg)
+				//	return
+				//}
+				// 操作记录
+				dataPermissionMoveRecordList = append(dataPermissionMoveRecordList, &data_manage_permission.DataPermissionMoveRecord{
+					DataPermissionMoveRecordId: 0,
+					Source:                     int32(source),
+					SubSource:                  int32(subSource),
+					OpUniqueCode:               uniqueCode,
+					DataId:                     fmt.Sprint(v.ExcelInfoId),
+					DataCode:                   fmt.Sprint(v.ExcelInfoId),
+					DataName:                   v.ExcelName,
+					OriginalUserId:             int32(v.SysUserId),
+					OriginalUserName:           v.SysUserRealName,
+					NewUserId:                  int32(adminInfo.AdminId),
+					NewUserName:                adminInfo.RealName,
+					CreateTime:                 time.Now(),
+				})
 			}
 			// 修改创建人
 			err = excel.ModifyExcelInfoUserIdByCodeList(dataId, adminInfo.AdminId, adminInfo.RealName)
@@ -594,5 +691,677 @@ func MoveEdbChart(source, subSource, oldUserId, newUserId int, isSelectAll bool,
 		return
 	}
 
+	// 转移失败了那么就直接返回了
+	if err != nil {
+		return
+	}
+
+	// 添加资产转移的记录
+	dataPermissionMessage := &data_manage_permission.DataPermissionMessage{
+		DataPermissionMessageId: 0,
+		SendUserId:              int32(opUserId),
+		ReceiveUserId:           int32(adminInfo.AdminId),
+		Content:                 content,
+		Remark:                  content,
+		OpType:                  1,
+		OpUniqueCode:            uniqueCode,
+		IsRead:                  0,
+		CreateTime:              time.Now(),
+		ModifyTime:              time.Now(),
+	}
+	tmpErr := data_manage_permission.AddDataPermissionMoveRecord(dataPermissionMoveRecordList, dataPermissionMessage)
+	// 失败的话,日志记录
+	if tmpErr != nil {
+		// 序列化结构体为 JSON 数据
+		recordListJsonBytes, tmpErr2 := json.Marshal(dataPermissionMoveRecordList)
+		if tmpErr2 != nil {
+			utils.FileLog.Error(fmt.Sprintf("添加资产转移的记录失败:%s;list转json失败:;操作记录:%+v;消息记录:%+v", tmpErr.Error(), dataPermissionMoveRecordList, dataPermissionMessage))
+			return
+		}
+		// 序列化结构体为 JSON 数据
+		messageJsonBytes, tmpErr2 := json.Marshal(dataPermissionMessage)
+		if tmpErr2 != nil {
+			utils.FileLog.Error(fmt.Sprintf("添加资产转移的记录失败:%s;message转json失败:;操作记录:%+v;消息记录:%+v", tmpErr.Error(), dataPermissionMoveRecordList, dataPermissionMessage))
+			return
+		}
+		utils.FileLog.Error(fmt.Sprintf("添加资产转移的记录失败:%s;操作记录:%s;消息记录:%s", tmpErr.Error(), string(recordListJsonBytes), string(messageJsonBytes)))
+	}
+
+	return
+}
+
+// MoveAllEdbChart
+// @Description: 通过原创建人转移指标/图表创建人
+// @author: Roc
+// @datetime 2024-03-26 15:11:12
+// @param sourceList []int 1:手工数据指标 2:钢联化工数据库 3:ETA指标库 4:ETA预测指标 5:图库 6:ETA表格
+// @param oldUserId []int
+// @param userId int
+// @param opUserId int
+// @return err error
+// @return errMsg string
+func MoveAllEdbChartOld(sourceList, oldUserIdList []int, userId, opUserId int) (err error, errMsg string) {
+	adminInfo, err := system.GetSysAdminById(userId)
+	if err != nil {
+		return
+	}
+
+	// 操作记录
+	dataPermissionMoveRecordList := make([]*data_manage_permission.DataPermissionMoveRecord, 0)
+	uniqueCode := uuid.NewUUID().Hex32()
+	content := `资产转入`
+	sourceStrList := make([]string, 0)
+
+	for _, source := range sourceList {
+		switch source {
+		case 1: //手工数据指标
+			sourceStrList = append(sourceStrList, "手工指标数据")
+			tmpList, tmpErr := models.GetEdbinfoListByCodeListByUserId(oldUserIdList)
+			if tmpErr != nil {
+				err = tmpErr
+				return
+			}
+			if len(tmpList) > 0 {
+				for _, v := range tmpList {
+					// 操作记录
+					dataPermissionMoveRecordList = append(dataPermissionMoveRecordList, &data_manage_permission.DataPermissionMoveRecord{
+						DataPermissionMoveRecordId: 0,
+						Source:                     int32(source),
+						SubSource:                  0,
+						OpUniqueCode:               uniqueCode,
+						DataId:                     v.TradeCode,
+						DataCode:                   v.TradeCode,
+						DataName:                   v.SecName,
+						OriginalUserId:             int32(v.UserId),
+						OriginalUserName:           v.UserName,
+						NewUserId:                  int32(adminInfo.AdminId),
+						NewUserName:                adminInfo.RealName,
+						CreateTime:                 time.Now(),
+					})
+				}
+				// 修改创建人
+				err = models.ModifyEdbinfoUserIdByOldUserId(oldUserIdList, userId)
+			}
+
+		case 2: //钢联化工数据库
+			sourceStrList = append(sourceStrList, "钢联化工数据库")
+			tmpList, tmpErr := data_manage.GetMysteelChemicalIndexListByUserId(oldUserIdList)
+			if tmpErr != nil {
+				err = tmpErr
+				return
+			}
+			if len(tmpList) > 0 {
+				for _, v := range tmpList {
+					//if v.SysUserId == newUserId {
+					//	errMsg = "新创建人不可和原创建人一致"
+					//	err = errors.New(errMsg)
+					//	return
+					//}
+					// 操作记录
+					dataPermissionMoveRecordList = append(dataPermissionMoveRecordList, &data_manage_permission.DataPermissionMoveRecord{
+						DataPermissionMoveRecordId: 0,
+						Source:                     int32(source),
+						SubSource:                  0,
+						OpUniqueCode:               uniqueCode,
+						DataId:                     fmt.Sprint(v.BaseFromMysteelChemicalIndexId),
+						DataCode:                   v.IndexCode,
+						DataName:                   v.IndexName,
+						OriginalUserId:             int32(v.SysUserId),
+						OriginalUserName:           v.SysUserRealName,
+						NewUserId:                  int32(adminInfo.AdminId),
+						NewUserName:                adminInfo.RealName,
+						CreateTime:                 time.Now(),
+					})
+				}
+				// 修改创建人
+				err = data_manage.ModifyMysteelChemicalIndexUserIdByOldUserId(oldUserIdList, adminInfo.AdminId, adminInfo.RealName)
+			}
+
+		case 3: //ETA指标库
+			sourceStrList = append(sourceStrList, "ETA指标库")
+			edbInfoType := 0
+			tmpList, tmpErr := data_manage.GetEdbInfoListByUserId(oldUserIdList, edbInfoType)
+			if tmpErr != nil {
+				err = tmpErr
+				return
+			}
+			if len(tmpList) > 0 {
+				for _, v := range tmpList {
+					// 操作记录
+					dataPermissionMoveRecordList = append(dataPermissionMoveRecordList, &data_manage_permission.DataPermissionMoveRecord{
+						DataPermissionMoveRecordId: 0,
+						Source:                     int32(source),
+						SubSource:                  int32(edbInfoType),
+						OpUniqueCode:               uniqueCode,
+						DataId:                     fmt.Sprint(v.EdbInfoId),
+						DataCode:                   v.EdbCode,
+						DataName:                   v.EdbName,
+						OriginalUserId:             int32(v.SysUserId),
+						OriginalUserName:           v.SysUserRealName,
+						NewUserId:                  int32(adminInfo.AdminId),
+						NewUserName:                adminInfo.RealName,
+						CreateTime:                 time.Now(),
+					})
+				}
+				// 修改创建人
+				err = data_manage.ModifyEdbInfoUserIdByOldUserId(oldUserIdList, edbInfoType, adminInfo.AdminId, adminInfo.RealName)
+			}
+
+		case 4: //ETA预测指标
+			sourceStrList = append(sourceStrList, "ETA预测指标")
+
+			edbInfoType := 1
+			tmpList, tmpErr := data_manage.GetEdbInfoListByUserId(oldUserIdList, edbInfoType)
+			if tmpErr != nil {
+				err = tmpErr
+				return
+			}
+			if len(tmpList) > 0 {
+				for _, v := range tmpList {
+					// 操作记录
+					dataPermissionMoveRecordList = append(dataPermissionMoveRecordList, &data_manage_permission.DataPermissionMoveRecord{
+						DataPermissionMoveRecordId: 0,
+						Source:                     int32(source),
+						SubSource:                  int32(edbInfoType),
+						OpUniqueCode:               uniqueCode,
+						DataId:                     fmt.Sprint(v.EdbInfoId),
+						DataCode:                   v.EdbCode,
+						DataName:                   v.EdbName,
+						OriginalUserId:             int32(v.SysUserId),
+						OriginalUserName:           v.SysUserRealName,
+						NewUserId:                  int32(adminInfo.AdminId),
+						NewUserName:                adminInfo.RealName,
+						CreateTime:                 time.Now(),
+					})
+				}
+				// 修改创建人
+				err = data_manage.ModifyEdbInfoUserIdByOldUserId(oldUserIdList, edbInfoType, adminInfo.AdminId, adminInfo.RealName)
+			}
+		case 5: //ETA图库
+			sourceStrList = append(sourceStrList, "ETA图库")
+			// 只展示eta图库
+			subSource := utils.CHART_SOURCE_DEFAULT
+
+			tmpList, tmpErr := data_manage.GetChartInfoListByUserId(oldUserIdList, subSource)
+			if tmpErr != nil {
+				err = tmpErr
+				return
+			}
+			if len(tmpList) > 0 {
+				for _, v := range tmpList {
+					// 操作记录
+					dataPermissionMoveRecordList = append(dataPermissionMoveRecordList, &data_manage_permission.DataPermissionMoveRecord{
+						DataPermissionMoveRecordId: 0,
+						Source:                     int32(source),
+						SubSource:                  int32(subSource),
+						OpUniqueCode:               uniqueCode,
+						DataId:                     fmt.Sprint(v.ChartInfoId),
+						DataCode:                   fmt.Sprint(v.ChartInfoId),
+						DataName:                   v.ChartName,
+						OriginalUserId:             int32(v.SysUserId),
+						OriginalUserName:           v.SysUserRealName,
+						NewUserId:                  int32(adminInfo.AdminId),
+						NewUserName:                adminInfo.RealName,
+						CreateTime:                 time.Now(),
+					})
+				}
+				// 修改创建人
+				err = data_manage.ModifyChartInfoUserIdByOldUserId(oldUserIdList, adminInfo.AdminId, adminInfo.RealName)
+			}
+		case 6: // ETA表格
+			sourceStrList = append(sourceStrList, "ETA表格")
+			tmpList, tmpErr := excel.GetNoContentExcelListByUserId(oldUserIdList)
+			if tmpErr != nil {
+				err = tmpErr
+				return
+			}
+			if len(tmpList) > 0 {
+				for _, v := range tmpList {
+					// 操作记录
+					dataPermissionMoveRecordList = append(dataPermissionMoveRecordList, &data_manage_permission.DataPermissionMoveRecord{
+						DataPermissionMoveRecordId: 0,
+						Source:                     int32(source),
+						SubSource:                  int32(v.Source),
+						OpUniqueCode:               uniqueCode,
+						DataId:                     fmt.Sprint(v.ExcelInfoId),
+						DataCode:                   fmt.Sprint(v.ExcelInfoId),
+						DataName:                   v.ExcelName,
+						OriginalUserId:             int32(v.SysUserId),
+						OriginalUserName:           v.SysUserRealName,
+						NewUserId:                  int32(adminInfo.AdminId),
+						NewUserName:                adminInfo.RealName,
+						CreateTime:                 time.Now(),
+					})
+				}
+				// 修改创建人
+				err = excel.ModifyExcelInfoUserIdByOldUserId(oldUserIdList, adminInfo.AdminId, adminInfo.RealName)
+			}
+		default:
+		}
+
+		// 转移失败了那么就直接返回了
+		if err != nil {
+			return
+		}
+	}
+
+	content += fmt.Sprintf("(%s)", strings.Join(sourceStrList, ","))
+
+	// 添加资产转移的记录
+	dataPermissionMessage := &data_manage_permission.DataPermissionMessage{
+		DataPermissionMessageId: 0,
+		SendUserId:              int32(opUserId),
+		ReceiveUserId:           int32(adminInfo.AdminId),
+		Content:                 content,
+		Remark:                  content,
+		OpType:                  1,
+		OpUniqueCode:            uniqueCode,
+		IsRead:                  0,
+		CreateTime:              time.Now(),
+		ModifyTime:              time.Now(),
+	}
+	tmpErr := data_manage_permission.AddDataPermissionMoveRecord(dataPermissionMoveRecordList, dataPermissionMessage)
+	// 失败的话,日志记录
+	if tmpErr != nil {
+		// 序列化结构体为 JSON 数据
+		recordListJsonBytes, tmpErr2 := json.Marshal(dataPermissionMoveRecordList)
+		if tmpErr2 != nil {
+			utils.FileLog.Error(fmt.Sprintf("添加资产转移的记录失败:%s;list转json失败:;操作记录:%+v;消息记录:%+v", tmpErr.Error(), dataPermissionMoveRecordList, dataPermissionMessage))
+			return
+		}
+		// 序列化结构体为 JSON 数据
+		messageJsonBytes, tmpErr2 := json.Marshal(dataPermissionMessage)
+		if tmpErr2 != nil {
+			utils.FileLog.Error(fmt.Sprintf("添加资产转移的记录失败:%s;message转json失败:;操作记录:%+v;消息记录:%+v", tmpErr.Error(), dataPermissionMoveRecordList, dataPermissionMessage))
+			return
+		}
+		utils.FileLog.Error(fmt.Sprintf("添加资产转移的记录失败:%s;操作记录:%s;消息记录:%s", tmpErr.Error(), string(recordListJsonBytes), string(messageJsonBytes)))
+	}
+
+	return
+}
+
+// MoveAllEdbChart
+// @Description: 通过原创建人转移指标/图表创建人
+// @author: Roc
+// @datetime 2024-03-26 15:11:12
+// @param sourceList []int 1:手工数据指标 2:钢联化工数据库 3:ETA指标库 4:ETA预测指标 5:图库 6:ETA表格
+// @param oldUserId []int
+// @param userId int
+// @param opUserId int
+// @return err error
+// @return errMsg string
+func MoveAllEdbChart(sourceList, oldUserIdList []int, userId, opUserId int) (err error, errMsg string) {
+	adminInfo, err := system.GetSysAdminById(userId)
+	if err != nil {
+		return
+	}
+
+	// 操作记录
+	dataPermissionMoveRecordList := make([]*data_manage_permission.DataPermissionMoveRecord, 0)
+	uniqueCode := uuid.NewUUID().Hex32()
+	content := `资产转入`
+	sourceStrList := make([]string, 0)
+
+	var isMoveManual, isMoveMysteelChemical, isMoveEdb, isMovePredictEdb, isMoveChart, isMoveExcel bool
+
+	// 遍历需要转移的模块,1:手工数据指标 2:钢联化工数据库 3:ETA指标库 4:ETA预测指标 5:图库 6:ETA表格,并找出当前需要转移的资产
+	for _, source := range sourceList {
+		switch source {
+		case 1: //手工数据指标
+			sourceStrList = append(sourceStrList, "手工指标数据")
+			tmpList, tmpErr := models.GetEdbinfoListByCodeListByUserId(oldUserIdList)
+			if tmpErr != nil {
+				err = tmpErr
+				return
+			}
+			if len(tmpList) > 0 {
+				for _, v := range tmpList {
+					// 操作记录
+					dataPermissionMoveRecordList = append(dataPermissionMoveRecordList, &data_manage_permission.DataPermissionMoveRecord{
+						DataPermissionMoveRecordId: 0,
+						Source:                     int32(source),
+						SubSource:                  0,
+						OpUniqueCode:               uniqueCode,
+						DataId:                     v.TradeCode,
+						DataCode:                   v.TradeCode,
+						DataName:                   v.SecName,
+						OriginalUserId:             int32(v.UserId),
+						OriginalUserName:           v.UserName,
+						NewUserId:                  int32(adminInfo.AdminId),
+						NewUserName:                adminInfo.RealName,
+						CreateTime:                 time.Now(),
+					})
+				}
+				isMoveManual = true
+			}
+
+		case 2: //钢联化工数据库
+			sourceStrList = append(sourceStrList, "钢联化工数据库")
+			tmpList, tmpErr := data_manage.GetMysteelChemicalIndexListByUserId(oldUserIdList)
+			if tmpErr != nil {
+				err = tmpErr
+				return
+			}
+			if len(tmpList) > 0 {
+				for _, v := range tmpList {
+					//if v.SysUserId == newUserId {
+					//	errMsg = "新创建人不可和原创建人一致"
+					//	err = errors.New(errMsg)
+					//	return
+					//}
+					// 操作记录
+					dataPermissionMoveRecordList = append(dataPermissionMoveRecordList, &data_manage_permission.DataPermissionMoveRecord{
+						DataPermissionMoveRecordId: 0,
+						Source:                     int32(source),
+						SubSource:                  0,
+						OpUniqueCode:               uniqueCode,
+						DataId:                     fmt.Sprint(v.BaseFromMysteelChemicalIndexId),
+						DataCode:                   v.IndexCode,
+						DataName:                   v.IndexName,
+						OriginalUserId:             int32(v.SysUserId),
+						OriginalUserName:           v.SysUserRealName,
+						NewUserId:                  int32(adminInfo.AdminId),
+						NewUserName:                adminInfo.RealName,
+						CreateTime:                 time.Now(),
+					})
+				}
+				isMoveMysteelChemical = true
+			}
+
+		case 3: //ETA指标库
+			sourceStrList = append(sourceStrList, "ETA指标库")
+			edbInfoType := 0
+			tmpList, tmpErr := data_manage.GetEdbInfoListByUserId(oldUserIdList, edbInfoType)
+			if tmpErr != nil {
+				err = tmpErr
+				return
+			}
+			if len(tmpList) > 0 {
+				for _, v := range tmpList {
+					// 操作记录
+					dataPermissionMoveRecordList = append(dataPermissionMoveRecordList, &data_manage_permission.DataPermissionMoveRecord{
+						DataPermissionMoveRecordId: 0,
+						Source:                     int32(source),
+						SubSource:                  int32(edbInfoType),
+						OpUniqueCode:               uniqueCode,
+						DataId:                     fmt.Sprint(v.EdbInfoId),
+						DataCode:                   v.EdbCode,
+						DataName:                   v.EdbName,
+						OriginalUserId:             int32(v.SysUserId),
+						OriginalUserName:           v.SysUserRealName,
+						NewUserId:                  int32(adminInfo.AdminId),
+						NewUserName:                adminInfo.RealName,
+						CreateTime:                 time.Now(),
+					})
+				}
+				isMoveEdb = true
+			}
+
+		case 4: //ETA预测指标
+			sourceStrList = append(sourceStrList, "ETA预测指标")
+
+			edbInfoType := 1
+			tmpList, tmpErr := data_manage.GetEdbInfoListByUserId(oldUserIdList, edbInfoType)
+			if tmpErr != nil {
+				err = tmpErr
+				return
+			}
+			if len(tmpList) > 0 {
+				for _, v := range tmpList {
+					// 操作记录
+					dataPermissionMoveRecordList = append(dataPermissionMoveRecordList, &data_manage_permission.DataPermissionMoveRecord{
+						DataPermissionMoveRecordId: 0,
+						Source:                     int32(source),
+						SubSource:                  int32(edbInfoType),
+						OpUniqueCode:               uniqueCode,
+						DataId:                     fmt.Sprint(v.EdbInfoId),
+						DataCode:                   v.EdbCode,
+						DataName:                   v.EdbName,
+						OriginalUserId:             int32(v.SysUserId),
+						OriginalUserName:           v.SysUserRealName,
+						NewUserId:                  int32(adminInfo.AdminId),
+						NewUserName:                adminInfo.RealName,
+						CreateTime:                 time.Now(),
+					})
+				}
+				isMovePredictEdb = true
+			}
+		case 5: //ETA图库
+			sourceStrList = append(sourceStrList, "ETA图库")
+			// 只展示eta图库
+			subSource := utils.CHART_SOURCE_DEFAULT
+
+			tmpList, tmpErr := data_manage.GetChartInfoListByUserId(oldUserIdList, subSource)
+			if tmpErr != nil {
+				err = tmpErr
+				return
+			}
+			if len(tmpList) > 0 {
+				for _, v := range tmpList {
+					// 操作记录
+					dataPermissionMoveRecordList = append(dataPermissionMoveRecordList, &data_manage_permission.DataPermissionMoveRecord{
+						DataPermissionMoveRecordId: 0,
+						Source:                     int32(source),
+						SubSource:                  int32(subSource),
+						OpUniqueCode:               uniqueCode,
+						DataId:                     fmt.Sprint(v.ChartInfoId),
+						DataCode:                   fmt.Sprint(v.ChartInfoId),
+						DataName:                   v.ChartName,
+						OriginalUserId:             int32(v.SysUserId),
+						OriginalUserName:           v.SysUserRealName,
+						NewUserId:                  int32(adminInfo.AdminId),
+						NewUserName:                adminInfo.RealName,
+						CreateTime:                 time.Now(),
+					})
+				}
+				isMoveChart = true
+			}
+		case 6: // ETA表格
+			sourceStrList = append(sourceStrList, "ETA表格")
+			tmpList, tmpErr := excel.GetNoContentExcelListByUserId(oldUserIdList)
+			if tmpErr != nil {
+				err = tmpErr
+				return
+			}
+			if len(tmpList) > 0 {
+				for _, v := range tmpList {
+					// 操作记录
+					dataPermissionMoveRecordList = append(dataPermissionMoveRecordList, &data_manage_permission.DataPermissionMoveRecord{
+						DataPermissionMoveRecordId: 0,
+						Source:                     int32(source),
+						SubSource:                  int32(v.Source),
+						OpUniqueCode:               uniqueCode,
+						DataId:                     fmt.Sprint(v.ExcelInfoId),
+						DataCode:                   fmt.Sprint(v.ExcelInfoId),
+						DataName:                   v.ExcelName,
+						OriginalUserId:             int32(v.SysUserId),
+						OriginalUserName:           v.SysUserRealName,
+						NewUserId:                  int32(adminInfo.AdminId),
+						NewUserName:                adminInfo.RealName,
+						CreateTime:                 time.Now(),
+					})
+				}
+				isMoveExcel = true
+			}
+		default:
+		}
+	}
+
+	// 修改创建人
+	err = data_manage_permission.ModifyDataUserIdByOldUserId(oldUserIdList, adminInfo.AdminId, adminInfo.RealName, isMoveManual, isMoveMysteelChemical, isMoveEdb, isMovePredictEdb, isMoveChart, isMoveExcel)
+	// 转移失败了那么就直接返回了
+	if err != nil {
+		return
+	}
+
+	// 添加资产转移的记录
+	content += fmt.Sprintf("(%s)", strings.Join(sourceStrList, ","))
+	dataPermissionMessage := &data_manage_permission.DataPermissionMessage{
+		DataPermissionMessageId: 0,
+		SendUserId:              int32(opUserId),
+		ReceiveUserId:           int32(adminInfo.AdminId),
+		Content:                 content,
+		Remark:                  content,
+		OpType:                  1,
+		OpUniqueCode:            uniqueCode,
+		IsRead:                  0,
+		CreateTime:              time.Now(),
+		ModifyTime:              time.Now(),
+	}
+	tmpErr := data_manage_permission.AddDataPermissionMoveRecord(dataPermissionMoveRecordList, dataPermissionMessage)
+	// 失败的话,日志记录
+	if tmpErr != nil {
+		// 序列化结构体为 JSON 数据
+		recordListJsonBytes, tmpErr2 := json.Marshal(dataPermissionMoveRecordList)
+		if tmpErr2 != nil {
+			utils.FileLog.Error(fmt.Sprintf("添加资产转移的记录失败:%s;list转json失败:;操作记录:%+v;消息记录:%+v", tmpErr.Error(), dataPermissionMoveRecordList, dataPermissionMessage))
+			return
+		}
+		// 序列化结构体为 JSON 数据
+		messageJsonBytes, tmpErr2 := json.Marshal(dataPermissionMessage)
+		if tmpErr2 != nil {
+			utils.FileLog.Error(fmt.Sprintf("添加资产转移的记录失败:%s;message转json失败:;操作记录:%+v;消息记录:%+v", tmpErr.Error(), dataPermissionMoveRecordList, dataPermissionMessage))
+			return
+		}
+		utils.FileLog.Error(fmt.Sprintf("添加资产转移的记录失败:%s;操作记录:%s;消息记录:%s", tmpErr.Error(), string(recordListJsonBytes), string(messageJsonBytes)))
+	}
+
+	return
+}
+
+// GetMoveEdbChartCount 获取待转移的指标/图表列表
+// @param source 来源 :1:手工数据指标 2:钢联化工数据库 3:ETA指标库 4:ETA预测指标 5:图库 6:ETA表格
+func GetMoveEdbChartCount(userId int) (sourceMap map[int]int, err error) {
+	sourceMap = make(map[int]int)
+	{
+		// 手工数据指标
+		var condition string
+		var pars []interface{}
+
+		if userId > 0 {
+			condition += ` AND a.user_id = ? `
+			pars = append(pars, userId)
+		}
+
+		total, tmpErr := models.GetEdbinfoListCount(condition, pars, "", 0)
+		if tmpErr != nil {
+			err = tmpErr
+			return
+		}
+		sourceMap[1] = total
+	}
+
+	{
+		// 钢联化工数据库
+		var condition string
+		var pars []interface{}
+		if userId > 0 {
+			condition += ` AND sys_user_id = ? `
+			pars = append(pars, userId)
+		}
+
+		total, tmpErr := data_manage.GetMysteelChemicalIndexCount(condition, pars)
+		if tmpErr != nil {
+			err = tmpErr
+			return
+		}
+		sourceMap[2] = total
+	}
+
+	{
+		// 钢联化工数据库
+		var condition string
+		var pars []interface{}
+		if userId > 0 {
+			condition += ` AND sys_user_id = ? `
+			pars = append(pars, userId)
+		}
+
+		total, tmpErr := data_manage.GetMysteelChemicalIndexCount(condition, pars)
+		if tmpErr != nil {
+			err = tmpErr
+			return
+		}
+		sourceMap[2] = total
+	}
+
+	{
+		// ETA指标库
+		var condition string
+		var pars []interface{}
+		if userId > 0 {
+			condition += ` AND sys_user_id = ? `
+			pars = append(pars, userId)
+		}
+		//ETA指标库
+		condition += ` AND edb_info_type = ? `
+		pars = append(pars, 0)
+
+		total, tmpErr := data_manage.GetEdbInfoByConditionCount(condition, pars)
+		if tmpErr != nil {
+			err = tmpErr
+			return
+		}
+		sourceMap[3] = total
+	}
+
+	{
+		// ETA预测指标库
+		var condition string
+		var pars []interface{}
+		if userId > 0 {
+			condition += ` AND sys_user_id = ? `
+			pars = append(pars, userId)
+		}
+
+		//ETA预测指标
+		condition += ` AND edb_info_type = ? `
+		pars = append(pars, 1)
+
+		total, tmpErr := data_manage.GetEdbInfoByConditionCount(condition, pars)
+		if tmpErr != nil {
+			err = tmpErr
+			return
+		}
+		sourceMap[4] = total
+	}
+
+	{
+		// 图库
+		var condition string
+		var pars []interface{}
+
+		if userId > 0 {
+			condition += ` AND sys_user_id = ? `
+			pars = append(pars, userId)
+		}
+
+		total, tmpErr := data_manage.GetChartInfoCountByCondition(condition, pars)
+		if tmpErr != nil {
+			err = tmpErr
+			return
+		}
+		sourceMap[5] = total
+	}
+
+	{
+		// ETA表格
+		var condition string
+		var pars []interface{}
+
+		if userId > 0 {
+			condition += ` AND sys_user_id = ? `
+			pars = append(pars, userId)
+		}
+
+		total, tmpErr := excel.GetExcelInfoCountByCondition(condition, pars)
+		if tmpErr != nil {
+			err = tmpErr
+			return
+		}
+		sourceMap[6] = total
+	}
+
 	return
 }

+ 0 - 180
services/data/edb_info.go

@@ -5,8 +5,6 @@ import (
 	"errors"
 	"eta/eta_api/models"
 	"eta/eta_api/models/data_manage"
-	"eta/eta_api/models/data_manage/excel"
-	"eta/eta_api/models/system"
 	"eta/eta_api/services/alarm_msg"
 	"eta/eta_api/services/elastic"
 	"eta/eta_api/utils"
@@ -2688,181 +2686,3 @@ func EdbInfoSmmApiAdd(item *data_manage.EdbInfo) (edbInfo *data_manage.EdbInfo,
 	AddOrEditEdbInfoToEs(int(edbInfoId))
 	return
 }
-
-// MoveAllEdbChart
-// @Description: 通过原创建人转移指标/图表创建人
-// @author: Roc
-// @datetime 2024-03-26 15:11:12
-// @param sourceList []int 1:手工数据指标 2:钢联化工数据库 3:ETA指标库 4:ETA预测指标 5:图库 6:ETA表格
-// @param oldUserId []int
-// @param userId int
-// @return err error
-// @return errMsg string
-func MoveAllEdbChart(sourceList, oldUserIdList []int, userId int) (err error, errMsg string) {
-	adminInfo, err := system.GetSysAdminById(userId)
-	if err != nil {
-		return
-	}
-
-	for _, source := range sourceList {
-		switch source {
-		case 1: //手工数据指标
-			// 修改创建人
-			err = models.ModifyEdbinfoUserIdByOldUserId(oldUserIdList, userId)
-		case 2: //钢联化工数据库
-			// 修改创建人
-			err = data_manage.ModifyMysteelChemicalIndexUserIdByOldUserId(oldUserIdList, adminInfo.AdminId, adminInfo.RealName)
-		case 3: //ETA指标库
-			// 修改创建人
-			err = data_manage.ModifyEdbInfoUserIdByOldUserId(oldUserIdList, 0, adminInfo.AdminId, adminInfo.RealName)
-		case 4: //ETA预测指标
-			// 修改创建人
-			err = data_manage.ModifyEdbInfoUserIdByOldUserId(oldUserIdList, 1, adminInfo.AdminId, adminInfo.RealName)
-		case 5: //图库
-			// 修改创建人
-			err = data_manage.ModifyChartInfoUserIdByOldUserId(oldUserIdList, adminInfo.AdminId, adminInfo.RealName)
-		case 6: // ETA表格
-			// 修改创建人
-			err = excel.ModifyExcelInfoUserIdByOldUserId(oldUserIdList, adminInfo.AdminId, adminInfo.RealName)
-		default:
-		}
-	}
-
-	return
-}
-
-// GetMoveEdbChartCount 获取待转移的指标/图表列表
-// @param source 来源 :1:手工数据指标 2:钢联化工数据库 3:ETA指标库 4:ETA预测指标 5:图库 6:ETA表格
-func GetMoveEdbChartCount(userId int) (sourceMap map[int]int, err error) {
-	sourceMap = make(map[int]int)
-	{
-		// 手工数据指标
-		var condition string
-		var pars []interface{}
-
-		if userId > 0 {
-			condition += ` AND a.user_id = ? `
-			pars = append(pars, userId)
-		}
-
-		total, tmpErr := models.GetEdbinfoListCount(condition, pars, "", 0)
-		if tmpErr != nil {
-			err = tmpErr
-			return
-		}
-		sourceMap[1] = total
-	}
-
-	{
-		// 钢联化工数据库
-		var condition string
-		var pars []interface{}
-		if userId > 0 {
-			condition += ` AND sys_user_id = ? `
-			pars = append(pars, userId)
-		}
-
-		total, tmpErr := data_manage.GetMysteelChemicalIndexCount(condition, pars)
-		if tmpErr != nil {
-			err = tmpErr
-			return
-		}
-		sourceMap[2] = total
-	}
-
-	{
-		// 钢联化工数据库
-		var condition string
-		var pars []interface{}
-		if userId > 0 {
-			condition += ` AND sys_user_id = ? `
-			pars = append(pars, userId)
-		}
-
-		total, tmpErr := data_manage.GetMysteelChemicalIndexCount(condition, pars)
-		if tmpErr != nil {
-			err = tmpErr
-			return
-		}
-		sourceMap[2] = total
-	}
-
-	{
-		// ETA指标库
-		var condition string
-		var pars []interface{}
-		if userId > 0 {
-			condition += ` AND sys_user_id = ? `
-			pars = append(pars, userId)
-		}
-		//ETA指标库
-		condition += ` AND edb_info_type = ? `
-		pars = append(pars, 0)
-
-		total, tmpErr := data_manage.GetEdbInfoByConditionCount(condition, pars)
-		if tmpErr != nil {
-			err = tmpErr
-			return
-		}
-		sourceMap[3] = total
-	}
-
-	{
-		// ETA预测指标库
-		var condition string
-		var pars []interface{}
-		if userId > 0 {
-			condition += ` AND sys_user_id = ? `
-			pars = append(pars, userId)
-		}
-
-		//ETA预测指标
-		condition += ` AND edb_info_type = ? `
-		pars = append(pars, 1)
-
-		total, tmpErr := data_manage.GetEdbInfoByConditionCount(condition, pars)
-		if tmpErr != nil {
-			err = tmpErr
-			return
-		}
-		sourceMap[4] = total
-	}
-
-	{
-		// 图库
-		var condition string
-		var pars []interface{}
-
-		if userId > 0 {
-			condition += ` AND sys_user_id = ? `
-			pars = append(pars, userId)
-		}
-
-		total, tmpErr := data_manage.GetChartInfoCountByCondition(condition, pars)
-		if tmpErr != nil {
-			err = tmpErr
-			return
-		}
-		sourceMap[5] = total
-	}
-
-	{
-		// ETA表格
-		var condition string
-		var pars []interface{}
-
-		if userId > 0 {
-			condition += ` AND sys_user_id = ? `
-			pars = append(pars, userId)
-		}
-
-		total, tmpErr := excel.GetExcelInfoCountByCondition(condition, pars)
-		if tmpErr != nil {
-			err = tmpErr
-			return
-		}
-		sourceMap[6] = total
-	}
-
-	return
-}