data_move.go 44 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365
  1. package data_manage_permission
  2. import (
  3. "encoding/json"
  4. "eta/eta_api/models"
  5. "eta/eta_api/models/data_manage"
  6. "eta/eta_api/models/data_manage/data_manage_permission"
  7. "eta/eta_api/models/data_manage/excel"
  8. "eta/eta_api/models/system"
  9. "eta/eta_api/utils"
  10. "fmt"
  11. "github.com/rdlucklib/rdluck_tools/uuid"
  12. "strconv"
  13. "strings"
  14. "time"
  15. )
  16. // GetEdbChartClassifyList
  17. // @Description: 获取数据权限那边的分类列表
  18. // @author: Roc
  19. // @datetime 2024-04-01 09:46:29
  20. // @param source int
  21. // @param subSource int
  22. // @return resp data_manage.EdbChartClassifyResp
  23. // @return err error
  24. func GetEdbChartClassifyList(source, subSource int) (resp data_manage.EdbChartClassifyResp, err error) {
  25. switch source {
  26. case 1: //手工数据指标
  27. list, e := models.GetEdbdataClassify(0)
  28. if e != nil {
  29. err = e
  30. return
  31. }
  32. for _, v := range list {
  33. item := data_manage.EdbChartClassify{
  34. ClassifyId: v.ClassifyId,
  35. ClassifyName: v.ClassifyName,
  36. ParentId: v.ParentId,
  37. }
  38. for _, v2 := range v.Child {
  39. child := data_manage.EdbChartClassify{
  40. ClassifyId: v2.ClassifyId,
  41. ClassifyName: v2.ClassifyName,
  42. ParentId: v2.ParentId,
  43. }
  44. item.Child = append(item.Child, &child)
  45. }
  46. resp.List = append(resp.List, &item)
  47. }
  48. case 2: //钢联化工数据库
  49. rootList, e := data_manage.GetBaseFromMysteelChemicalClassifyByParentId(0)
  50. if e != nil && e.Error() != utils.ErrNoRow() {
  51. err = e
  52. return
  53. }
  54. classifyAll, e := data_manage.GetAllBaseFromMysteelChemicalClassify()
  55. if e != nil && e.Error() != utils.ErrNoRow() {
  56. err = e
  57. return
  58. }
  59. rootChildMap := make(map[int][]*data_manage.BaseFromMysteelChemicalClassifyItems)
  60. for _, v := range classifyAll {
  61. rootChildMap[v.ParentId] = append(rootChildMap[v.ParentId], v)
  62. }
  63. nodeAll := make([]*data_manage.BaseFromMysteelChemicalClassifyItems, 0)
  64. for _, v := range rootList {
  65. if existItems, ok := rootChildMap[v.BaseFromMysteelChemicalClassifyId]; ok {
  66. v.Children = existItems
  67. } else {
  68. items := make([]*data_manage.BaseFromMysteelChemicalClassifyItems, 0)
  69. v.Children = items
  70. }
  71. nodeAll = append(nodeAll, v)
  72. }
  73. for _, v := range nodeAll {
  74. item := data_manage.EdbChartClassify{
  75. ClassifyId: v.BaseFromMysteelChemicalClassifyId,
  76. ClassifyName: v.ClassifyName,
  77. ParentId: v.ParentId,
  78. }
  79. for _, v2 := range v.Children {
  80. child := data_manage.EdbChartClassify{
  81. ClassifyId: v2.BaseFromMysteelChemicalClassifyId,
  82. ClassifyName: v2.ClassifyName,
  83. ParentId: v2.ParentId,
  84. }
  85. item.Child = append(item.Child, &child)
  86. }
  87. resp.List = append(resp.List, &item)
  88. }
  89. case 3:
  90. //ETA指标库
  91. //rootList, e := data_manage.GetEdbClassifyByParentId(0, 0)
  92. //if e != nil && e.Error() != utils.ErrNoRow() {
  93. // err = e
  94. // return
  95. //}
  96. // 考虑到后面可以会迭代到10层, 这里直接用递归处理
  97. classifyAll, e := data_manage.GetAllEdbClassifyByType(0)
  98. if e != nil && e.Error() != utils.ErrNoRow() {
  99. err = e
  100. return
  101. }
  102. resp.List = GetEdbMenuTreeRecursive(classifyAll, 0)
  103. case 4:
  104. //ETA预测指标
  105. // 考虑到后面可以会迭代到10层, 这里直接用递归
  106. classifyAll, e := data_manage.GetAllEdbClassifyByType(1)
  107. if e != nil && e.Error() != utils.ErrNoRow() {
  108. err = e
  109. return
  110. }
  111. resp.List = GetEdbMenuTreeRecursive(classifyAll, 0)
  112. case 5: //图库
  113. // 考虑到后面可以会迭代到10层, 这里直接用递归处理
  114. classifyAll, e := data_manage.GetAllChartClassifyItemsBySource(1)
  115. if e != nil && e.Error() != utils.ErrNoRow() {
  116. err = e
  117. return
  118. }
  119. resp.List = GetChartMenuTreeRecursive(classifyAll, 0)
  120. // 将数据加入缓存
  121. //if utils.Re == nil {
  122. // utils.Rc.Delete(key)
  123. //}
  124. case 6:
  125. // ETA表格
  126. // 考虑到后面可以会迭代到10层, 这里直接用递归处理
  127. classifyAll, e := excel.GetExcelClassifyBySourceOrderByLevel(subSource)
  128. if e != nil && e.Error() != utils.ErrNoRow() {
  129. err = e
  130. return
  131. }
  132. resp.List = GetExcelMenuTreeRecursive(classifyAll, 0)
  133. default:
  134. return
  135. }
  136. return
  137. }
  138. // GetEdbMenuTreeRecursive 递归指标库菜单树
  139. func GetEdbMenuTreeRecursive(list []*data_manage.EdbClassifyItems, parentId int) []*data_manage.EdbChartClassify {
  140. res := make([]*data_manage.EdbChartClassify, 0)
  141. for _, v := range list {
  142. t := new(data_manage.EdbChartClassify)
  143. t.ClassifyId = v.ClassifyId
  144. t.ClassifyName = v.ClassifyName
  145. t.ParentId = v.ParentId
  146. t.IsJoinPermission = v.IsJoinPermission
  147. if v.ParentId == parentId {
  148. t.Child = GetEdbMenuTreeRecursive(list, v.ClassifyId)
  149. res = append(res, t)
  150. }
  151. }
  152. return res
  153. }
  154. // GetChartMenuTreeRecursive 递归指标库菜单树
  155. func GetChartMenuTreeRecursive(list []*data_manage.ChartClassifyItems, parentId int) []*data_manage.EdbChartClassify {
  156. res := make([]*data_manage.EdbChartClassify, 0)
  157. for _, v := range list {
  158. t := new(data_manage.EdbChartClassify)
  159. t.ClassifyId = v.ChartClassifyId
  160. t.ClassifyName = v.ChartClassifyName
  161. t.ParentId = v.ParentId
  162. t.IsJoinPermission = v.IsJoinPermission
  163. if v.ParentId == parentId {
  164. t.Child = GetChartMenuTreeRecursive(list, v.ChartClassifyId)
  165. res = append(res, t)
  166. }
  167. }
  168. return res
  169. }
  170. // GetExcelMenuTreeRecursive
  171. // @Description: 递归ETA表格菜单树
  172. // @author: Roc
  173. // @datetime 2024-03-27 10:30:32
  174. // @param list []*data_manage.ChartClassifyItems
  175. // @param parentId int
  176. // @return []*data_manage.EdbChartClassify
  177. func GetExcelMenuTreeRecursive(list []*excel.ExcelClassifyItems, parentId int) []*data_manage.EdbChartClassify {
  178. res := make([]*data_manage.EdbChartClassify, 0)
  179. for _, v := range list {
  180. t := new(data_manage.EdbChartClassify)
  181. t.ClassifyId = v.ExcelClassifyId
  182. t.ClassifyName = v.ExcelClassifyName
  183. t.ParentId = v.ParentId
  184. t.IsJoinPermission = v.IsJoinPermission
  185. if v.ParentId == parentId {
  186. t.Child = GetExcelMenuTreeRecursive(list, v.ExcelClassifyId)
  187. res = append(res, t)
  188. }
  189. }
  190. return res
  191. }
  192. // GetMoveEdbChartList 获取待转移的指标/图表列表
  193. // @param source 来源 :1:手工数据指标 2:钢联化工数据库 3:ETA指标库 4:ETA预测指标 5:图库 6:ETA表格
  194. func GetMoveEdbChartList(source, subSource, userId int, keyword, classify string, startSize, pageSize int) (list []data_manage.MoveEdbChartList, total int, err error) {
  195. var condition string
  196. var pars []interface{}
  197. switch source {
  198. case 1: //手工数据指标
  199. if keyword != "" {
  200. condition += ` AND (a.SEC_NAME LIKE ? OR a.TRADE_CODE like ? ) `
  201. pars = utils.GetLikeKeywordPars(pars, keyword, 2)
  202. }
  203. if userId > 0 {
  204. condition += ` AND a.user_id = ? `
  205. pars = append(pars, userId)
  206. }
  207. if classify != "" {
  208. condition += ` AND a.classify_id IN (` + classify + `) `
  209. }
  210. total, err = models.GetEdbinfoListCount(condition, pars, "", 0)
  211. if err != nil {
  212. return
  213. }
  214. tmpList, tmpErr := models.GetEdbinfoList(condition, pars, startSize, pageSize, "", 0)
  215. if tmpErr != nil {
  216. err = tmpErr
  217. return
  218. }
  219. if len(tmpList) > 0 {
  220. adminIdList := make([]int, 0)
  221. for _, v := range tmpList {
  222. adminIdList = append(adminIdList, v.UserId)
  223. }
  224. adminList, tmpErr := system.GetAdminListByIdListWithoutEnable(adminIdList)
  225. if tmpErr != nil {
  226. err = tmpErr
  227. return
  228. }
  229. adminMap := make(map[int]string)
  230. for _, adminInfo := range adminList {
  231. adminMap[adminInfo.AdminId] = adminInfo.RealName
  232. }
  233. for _, v := range tmpList {
  234. list = append(list, data_manage.MoveEdbChartList{
  235. DataId: v.TradeCode,
  236. Code: v.TradeCode,
  237. Name: v.SecName,
  238. ClassifyName: v.ClassifyName,
  239. CreateUserId: v.UserId,
  240. CreateUserName: adminMap[v.UserId],
  241. })
  242. }
  243. }
  244. case 2: //钢联化工数据库
  245. if keyword != `` {
  246. condition += " AND (index_name like ? OR index_code like ? OR sys_user_real_name like ? ) "
  247. pars = utils.GetLikeKeywordPars(pars, keyword, 3)
  248. }
  249. if userId > 0 {
  250. condition += ` AND sys_user_id = ? `
  251. pars = append(pars, userId)
  252. }
  253. if classify != "" {
  254. condition += ` AND base_from_mysteel_chemical_classify_id IN (` + classify + `) `
  255. }
  256. total, err = data_manage.GetMysteelChemicalIndexCount(condition, pars)
  257. if err != nil {
  258. return
  259. }
  260. tmpList, tmpErr := data_manage.GetMysteelChemicalIndexList(condition, pars, startSize, pageSize, "DESC")
  261. if tmpErr != nil {
  262. err = tmpErr
  263. return
  264. }
  265. for _, v := range tmpList {
  266. list = append(list, data_manage.MoveEdbChartList{
  267. DataId: strconv.Itoa(v.BaseFromMysteelChemicalIndexId),
  268. Code: v.IndexCode,
  269. Name: v.IndexName,
  270. //ClassifyName: v.,
  271. CreateUserId: v.SysUserId,
  272. CreateUserName: v.SysUserRealName,
  273. })
  274. }
  275. case 3, 4: //ETA指标库、ETA预测指标
  276. if keyword != `` {
  277. condition += " AND (edb_code like ? OR edb_name like ? OR sys_user_real_name like ? ) "
  278. pars = utils.GetLikeKeywordPars(pars, keyword, 3)
  279. }
  280. if userId > 0 {
  281. condition += ` AND sys_user_id = ? `
  282. pars = append(pars, userId)
  283. }
  284. if classify != "" {
  285. condition += ` AND classify_id IN (` + classify + `) `
  286. }
  287. edbInfoType := 0 //ETA指标库
  288. if source == 4 { //ETA预测指标
  289. edbInfoType = 1
  290. }
  291. condition += ` AND edb_info_type = ? `
  292. pars = append(pars, edbInfoType)
  293. total, err = data_manage.GetEdbInfoByConditionCount(condition, pars)
  294. if err != nil {
  295. return
  296. }
  297. tmpList, tmpErr := data_manage.GetEdbInfoListByCondition(condition, pars, startSize, pageSize, "DESC")
  298. if tmpErr != nil {
  299. err = tmpErr
  300. return
  301. }
  302. for _, v := range tmpList {
  303. list = append(list, data_manage.MoveEdbChartList{
  304. DataId: strconv.Itoa(v.EdbInfoId),
  305. Code: v.EdbCode,
  306. Name: v.EdbName,
  307. //ClassifyName: v.,
  308. CreateUserId: v.SysUserId,
  309. CreateUserName: v.SysUserRealName,
  310. })
  311. }
  312. case 5: //图库
  313. // 只展示eta图库
  314. condition += ` AND source = ? `
  315. pars = append(pars, utils.CHART_SOURCE_DEFAULT)
  316. // 关键字搜索
  317. if keyword != `` {
  318. condition += " AND (chart_name like ? OR sys_user_real_name like ? ) "
  319. pars = utils.GetLikeKeywordPars(pars, keyword, 2)
  320. }
  321. if userId > 0 {
  322. condition += ` AND sys_user_id = ? `
  323. pars = append(pars, userId)
  324. }
  325. if classify != "" {
  326. condition += ` AND chart_classify_id IN (` + classify + `) `
  327. }
  328. total, err = data_manage.GetChartInfoCountByCondition(condition, pars)
  329. if err != nil {
  330. return
  331. }
  332. tmpList, tmpErr := data_manage.GetChartInfoListByCondition(condition, pars, startSize, pageSize)
  333. if tmpErr != nil {
  334. err = tmpErr
  335. return
  336. }
  337. // 获取所有的图表分类
  338. firstClassifyList, tmpErr := data_manage.GetChartClassifyByParentId(0, 1)
  339. if tmpErr != nil {
  340. err = tmpErr
  341. return
  342. }
  343. firstClassifyNameMap := make(map[int]string)
  344. for _, v := range firstClassifyList {
  345. firstClassifyNameMap[v.ChartClassifyId] = v.ChartClassifyName
  346. }
  347. secondClassList, tmpErr := data_manage.GetChartClassifyAll(1)
  348. if tmpErr != nil {
  349. err = tmpErr
  350. return
  351. }
  352. secondClassifyNameMap := make(map[int]string)
  353. for _, v := range secondClassList {
  354. firstName := firstClassifyNameMap[v.ParentId]
  355. if firstName != `` {
  356. firstName = firstName + " / "
  357. }
  358. secondClassifyNameMap[v.ChartClassifyId] = firstName + v.ChartClassifyName
  359. }
  360. for _, v := range tmpList {
  361. list = append(list, data_manage.MoveEdbChartList{
  362. DataId: strconv.Itoa(v.ChartInfoId),
  363. Name: v.ChartName,
  364. ClassifyName: secondClassifyNameMap[v.ChartClassifyId],
  365. CreateUserId: v.SysUserId,
  366. CreateUserName: v.SysUserRealName,
  367. })
  368. }
  369. case 6: //ETA表格
  370. if keyword != `` {
  371. condition += " AND (excel_name like ? OR sys_user_real_name like ? ) "
  372. pars = utils.GetLikeKeywordPars(pars, keyword, 2)
  373. }
  374. if userId > 0 {
  375. condition += ` AND sys_user_id = ? `
  376. pars = append(pars, userId)
  377. }
  378. if classify != "" {
  379. condition += ` AND excel_classify_id IN (` + classify + `) `
  380. }
  381. condition += " AND source = ? "
  382. pars = append(pars, subSource)
  383. total, err = excel.GetExcelInfoCountByCondition(condition, pars)
  384. if err != nil {
  385. return
  386. }
  387. tmpList, tmpErr := excel.GetNoContentExcelInfoListByCondition(condition, pars, startSize, pageSize)
  388. if tmpErr != nil {
  389. err = tmpErr
  390. return
  391. }
  392. // 获取所有的图表分类
  393. firstClassifyList, tmpErr := excel.GetExcelClassifyByParentId(0, subSource)
  394. if tmpErr != nil {
  395. err = tmpErr
  396. return
  397. }
  398. firstClassifyNameMap := make(map[int]string)
  399. for _, v := range firstClassifyList {
  400. firstClassifyNameMap[v.ExcelClassifyId] = v.ExcelClassifyName
  401. }
  402. secondClassList, tmpErr := excel.GetExcelClassifyBySource(subSource)
  403. if tmpErr != nil {
  404. err = tmpErr
  405. return
  406. }
  407. secondClassifyNameMap := make(map[int]string)
  408. for _, v := range secondClassList {
  409. firstName := firstClassifyNameMap[v.ParentId]
  410. if firstName != `` {
  411. firstName = firstName + " / "
  412. }
  413. secondClassifyNameMap[v.ExcelClassifyId] = firstName + v.ExcelClassifyName
  414. }
  415. for _, v := range tmpList {
  416. list = append(list, data_manage.MoveEdbChartList{
  417. DataId: strconv.Itoa(v.ExcelInfoId),
  418. Name: v.ExcelClassifyName,
  419. ClassifyName: secondClassifyNameMap[v.ExcelClassifyId],
  420. CreateUserId: v.SysUserId,
  421. CreateUserName: v.SysUserRealName,
  422. })
  423. }
  424. default:
  425. return
  426. }
  427. return
  428. }
  429. // MoveEdbChart 转移指标/图表创建人
  430. // @param source 来源 :1:手工数据指标 2:钢联化工数据库 3:ETA指标库 4:ETA预测指标 5:图库 6:ETA表格
  431. func MoveEdbChart(source, subSource, oldUserId, newUserId int, isSelectAll bool, dataId, noDataId []string, keyword, classify string, opUserId int) (err error, errMsg string) {
  432. adminInfo, err := system.GetSysAdminById(newUserId)
  433. if err != nil {
  434. return
  435. }
  436. // 如果勾选全部数据,那么
  437. if isSelectAll {
  438. // 找出不要的指标ID列表
  439. noDataIdMap := make(map[string]string, 0)
  440. for _, v := range noDataId {
  441. noDataIdMap[v] = v
  442. }
  443. // 需要转义的指标/图表ID列表
  444. dataId = make([]string, 0)
  445. // 获取所有指标/图表
  446. list, _, tmpErr := GetMoveEdbChartList(source, subSource, oldUserId, keyword, classify, 0, 100000)
  447. if tmpErr != nil {
  448. err = tmpErr
  449. return
  450. }
  451. for _, v := range list {
  452. if _, ok := noDataIdMap[v.DataId]; !ok {
  453. dataId = append(dataId, v.DataId)
  454. }
  455. }
  456. }
  457. // 操作记录
  458. dataPermissionMoveRecordList := make([]*data_manage_permission.DataPermissionMoveRecord, 0)
  459. uniqueCode := uuid.NewUUID().Hex32()
  460. title := `资产转移`
  461. content := `资产转入`
  462. switch source {
  463. case 1: //手工数据指标
  464. content += `(手工指标数据)`
  465. tmpList, tmpErr := models.GetEdbinfoListByCodeListByCodeIdList(dataId)
  466. if tmpErr != nil {
  467. err = tmpErr
  468. return
  469. }
  470. if len(tmpList) > 0 {
  471. for _, v := range tmpList {
  472. //if v.UserId == newUserId {
  473. // errMsg = "新创建人不可和原创建人一致"
  474. // err = errors.New(errMsg)
  475. // return
  476. //}
  477. // 操作记录
  478. dataPermissionMoveRecordList = append(dataPermissionMoveRecordList, &data_manage_permission.DataPermissionMoveRecord{
  479. DataPermissionMoveRecordId: 0,
  480. Source: int32(source),
  481. SubSource: int32(subSource),
  482. OpUniqueCode: uniqueCode,
  483. DataId: v.TradeCode,
  484. DataCode: v.TradeCode,
  485. DataName: v.SecName,
  486. OriginalUserId: int32(v.UserId),
  487. OriginalUserName: v.UserName,
  488. NewUserId: int32(adminInfo.AdminId),
  489. NewUserName: adminInfo.RealName,
  490. CreateTime: time.Now(),
  491. })
  492. }
  493. // 修改创建人
  494. err = models.ModifyEdbinfoUserIdByCodeList(dataId, newUserId)
  495. }
  496. case 2: //钢联化工数据库
  497. content += `(钢联化工数据库)`
  498. tmpList, tmpErr := data_manage.GetMysteelChemicalIndexListByIndexId(dataId)
  499. if tmpErr != nil {
  500. err = tmpErr
  501. return
  502. }
  503. if len(tmpList) > 0 {
  504. for _, v := range tmpList {
  505. //if v.SysUserId == newUserId {
  506. // errMsg = "新创建人不可和原创建人一致"
  507. // err = errors.New(errMsg)
  508. // return
  509. //}
  510. // 操作记录
  511. dataPermissionMoveRecordList = append(dataPermissionMoveRecordList, &data_manage_permission.DataPermissionMoveRecord{
  512. DataPermissionMoveRecordId: 0,
  513. Source: int32(source),
  514. SubSource: int32(subSource),
  515. OpUniqueCode: uniqueCode,
  516. DataId: fmt.Sprint(v.BaseFromMysteelChemicalIndexId),
  517. DataCode: v.IndexCode,
  518. DataName: v.IndexName,
  519. OriginalUserId: int32(v.SysUserId),
  520. OriginalUserName: v.SysUserRealName,
  521. NewUserId: int32(adminInfo.AdminId),
  522. NewUserName: adminInfo.RealName,
  523. CreateTime: time.Now(),
  524. })
  525. }
  526. // 修改创建人
  527. err = data_manage.ModifyMysteelChemicalIndexUserIdByCodeList(dataId, adminInfo.AdminId, adminInfo.RealName)
  528. }
  529. case 3, 4: //ETA指标库、ETA预测指标
  530. if source == 3 {
  531. content += `(ETA指标库)`
  532. } else {
  533. content += `(ETA预测指标)`
  534. }
  535. tmpList, tmpErr := data_manage.GetEdbInfoListByEdbInfoId(dataId)
  536. if tmpErr != nil {
  537. err = tmpErr
  538. return
  539. }
  540. if len(tmpList) > 0 {
  541. for _, v := range tmpList {
  542. //if v.SysUserId == newUserId {
  543. // errMsg = "新创建人不可和原创建人一致"
  544. // err = errors.New(errMsg)
  545. // return
  546. //}
  547. // 操作记录
  548. dataPermissionMoveRecordList = append(dataPermissionMoveRecordList, &data_manage_permission.DataPermissionMoveRecord{
  549. DataPermissionMoveRecordId: 0,
  550. Source: int32(source),
  551. SubSource: int32(subSource),
  552. OpUniqueCode: uniqueCode,
  553. DataId: fmt.Sprint(v.EdbInfoId),
  554. DataCode: v.EdbCode,
  555. DataName: v.EdbName,
  556. OriginalUserId: int32(v.SysUserId),
  557. OriginalUserName: v.SysUserRealName,
  558. NewUserId: int32(adminInfo.AdminId),
  559. NewUserName: adminInfo.RealName,
  560. CreateTime: time.Now(),
  561. })
  562. }
  563. // 修改创建人
  564. err = data_manage.ModifyEdbInfoUserIdByCodeList(dataId, adminInfo.AdminId, adminInfo.RealName)
  565. // 移除当前用户的不可操作权限
  566. {
  567. obj := data_manage.EdbInfoNoPermissionAdmin{}
  568. for _, v := range dataId {
  569. edbInfoId, _ := strconv.Atoi(v)
  570. go obj.DeleteByEdbInfoIdAndAdminId(edbInfoId, adminInfo.AdminId)
  571. }
  572. }
  573. }
  574. case 5: //图库
  575. content += `(ETA图库)`
  576. // 只展示eta图库
  577. subSource = utils.CHART_SOURCE_DEFAULT
  578. tmpList, tmpErr := data_manage.GetChartInfoListByChartIdList(dataId)
  579. if tmpErr != nil {
  580. err = tmpErr
  581. return
  582. }
  583. if len(tmpList) > 0 {
  584. for _, v := range tmpList {
  585. //if v.SysUserId == newUserId {
  586. // errMsg = "新创建人不可和原创建人一致"
  587. // err = errors.New(errMsg)
  588. // return
  589. //}
  590. // 操作记录
  591. dataPermissionMoveRecordList = append(dataPermissionMoveRecordList, &data_manage_permission.DataPermissionMoveRecord{
  592. DataPermissionMoveRecordId: 0,
  593. Source: int32(source),
  594. SubSource: int32(subSource),
  595. OpUniqueCode: uniqueCode,
  596. DataId: fmt.Sprint(v.ChartInfoId),
  597. DataCode: fmt.Sprint(v.ChartInfoId),
  598. DataName: v.ChartName,
  599. OriginalUserId: int32(v.SysUserId),
  600. OriginalUserName: v.SysUserRealName,
  601. NewUserId: int32(adminInfo.AdminId),
  602. NewUserName: adminInfo.RealName,
  603. CreateTime: time.Now(),
  604. })
  605. }
  606. // 修改创建人
  607. err = data_manage.ModifyChartInfoUserIdByCodeList(dataId, adminInfo.AdminId, adminInfo.RealName)
  608. }
  609. case 6: // ETA表格
  610. content += `(ETA表格)`
  611. tmpList, tmpErr := excel.GetNoContentExcelListByExcelInfoIdList(dataId)
  612. if tmpErr != nil {
  613. err = tmpErr
  614. return
  615. }
  616. if len(tmpList) > 0 {
  617. for _, v := range tmpList {
  618. //if v.SysUserId == newUserId {
  619. // errMsg = "新创建人不可和原创建人一致"
  620. // err = errors.New(errMsg)
  621. // return
  622. //}
  623. // 操作记录
  624. dataPermissionMoveRecordList = append(dataPermissionMoveRecordList, &data_manage_permission.DataPermissionMoveRecord{
  625. DataPermissionMoveRecordId: 0,
  626. Source: int32(source),
  627. SubSource: int32(subSource),
  628. OpUniqueCode: uniqueCode,
  629. DataId: fmt.Sprint(v.ExcelInfoId),
  630. DataCode: fmt.Sprint(v.ExcelInfoId),
  631. DataName: v.ExcelName,
  632. OriginalUserId: int32(v.SysUserId),
  633. OriginalUserName: v.SysUserRealName,
  634. NewUserId: int32(adminInfo.AdminId),
  635. NewUserName: adminInfo.RealName,
  636. CreateTime: time.Now(),
  637. })
  638. }
  639. // 修改创建人
  640. err = excel.ModifyExcelInfoUserIdByCodeList(dataId, adminInfo.AdminId, adminInfo.RealName)
  641. }
  642. default:
  643. return
  644. }
  645. // 转移失败了那么就直接返回了
  646. if err != nil {
  647. return
  648. }
  649. // 添加资产转移的记录
  650. dataPermissionMessage := &data_manage_permission.DataPermissionMessage{
  651. DataPermissionMessageId: 0,
  652. SendUserId: int32(opUserId),
  653. ReceiveUserId: int32(adminInfo.AdminId),
  654. Content: title,
  655. Remark: content,
  656. OpType: 1,
  657. Source: int32(source),
  658. SubSource: int32(subSource),
  659. OpUniqueCode: uniqueCode,
  660. IsRead: 0,
  661. CreateTime: time.Now(),
  662. ModifyTime: time.Now(),
  663. }
  664. tmpErr := data_manage_permission.AddDataPermissionMoveRecord(dataPermissionMoveRecordList, dataPermissionMessage)
  665. // 失败的话,日志记录
  666. if tmpErr != nil {
  667. // 序列化结构体为 JSON 数据
  668. recordListJsonBytes, tmpErr2 := json.Marshal(dataPermissionMoveRecordList)
  669. if tmpErr2 != nil {
  670. utils.FileLog.Error(fmt.Sprintf("添加资产转移的记录失败:%s;list转json失败:;操作记录:%+v;消息记录:%+v", tmpErr.Error(), dataPermissionMoveRecordList, dataPermissionMessage))
  671. return
  672. }
  673. // 序列化结构体为 JSON 数据
  674. messageJsonBytes, tmpErr2 := json.Marshal(dataPermissionMessage)
  675. if tmpErr2 != nil {
  676. utils.FileLog.Error(fmt.Sprintf("添加资产转移的记录失败:%s;message转json失败:;操作记录:%+v;消息记录:%+v", tmpErr.Error(), dataPermissionMoveRecordList, dataPermissionMessage))
  677. return
  678. }
  679. utils.FileLog.Error(fmt.Sprintf("添加资产转移的记录失败:%s;操作记录:%s;消息记录:%s", tmpErr.Error(), string(recordListJsonBytes), string(messageJsonBytes)))
  680. }
  681. return
  682. }
  683. // MoveAllEdbChartOld
  684. // @Description: 通过原创建人转移指标/图表创建人
  685. // @author: Roc
  686. // @datetime 2024-03-26 15:11:12
  687. // @param sourceList []int 1:手工数据指标 2:钢联化工数据库 3:ETA指标库 4:ETA预测指标 5:图库 6:ETA表格
  688. // @param oldUserId []int
  689. // @param userId int
  690. // @param opUserId int
  691. // @return err error
  692. // @return errMsg string
  693. func MoveAllEdbChartOld(sourceList, oldUserIdList []int, userId, opUserId int) (err error, errMsg string) {
  694. adminInfo, err := system.GetSysAdminById(userId)
  695. if err != nil {
  696. return
  697. }
  698. // 操作记录
  699. dataPermissionMoveRecordList := make([]*data_manage_permission.DataPermissionMoveRecord, 0)
  700. uniqueCode := uuid.NewUUID().Hex32()
  701. title := `资产转移`
  702. content := `资产转入`
  703. sourceStrList := make([]string, 0)
  704. for _, source := range sourceList {
  705. switch source {
  706. case 1: //手工数据指标
  707. sourceStrList = append(sourceStrList, "手工指标数据")
  708. tmpList, tmpErr := models.GetEdbinfoListByCodeListByUserId(oldUserIdList)
  709. if tmpErr != nil {
  710. err = tmpErr
  711. return
  712. }
  713. if len(tmpList) > 0 {
  714. for _, v := range tmpList {
  715. // 操作记录
  716. dataPermissionMoveRecordList = append(dataPermissionMoveRecordList, &data_manage_permission.DataPermissionMoveRecord{
  717. DataPermissionMoveRecordId: 0,
  718. Source: int32(source),
  719. SubSource: 0,
  720. OpUniqueCode: uniqueCode,
  721. DataId: v.TradeCode,
  722. DataCode: v.TradeCode,
  723. DataName: v.SecName,
  724. OriginalUserId: int32(v.UserId),
  725. OriginalUserName: v.UserName,
  726. NewUserId: int32(adminInfo.AdminId),
  727. NewUserName: adminInfo.RealName,
  728. CreateTime: time.Now(),
  729. })
  730. }
  731. // 修改创建人
  732. err = models.ModifyEdbinfoUserIdByOldUserId(oldUserIdList, userId)
  733. }
  734. case 2: //钢联化工数据库
  735. sourceStrList = append(sourceStrList, "钢联化工数据库")
  736. tmpList, tmpErr := data_manage.GetMysteelChemicalIndexListByUserId(oldUserIdList)
  737. if tmpErr != nil {
  738. err = tmpErr
  739. return
  740. }
  741. if len(tmpList) > 0 {
  742. for _, v := range tmpList {
  743. //if v.SysUserId == newUserId {
  744. // errMsg = "新创建人不可和原创建人一致"
  745. // err = errors.New(errMsg)
  746. // return
  747. //}
  748. // 操作记录
  749. dataPermissionMoveRecordList = append(dataPermissionMoveRecordList, &data_manage_permission.DataPermissionMoveRecord{
  750. DataPermissionMoveRecordId: 0,
  751. Source: int32(source),
  752. SubSource: 0,
  753. OpUniqueCode: uniqueCode,
  754. DataId: fmt.Sprint(v.BaseFromMysteelChemicalIndexId),
  755. DataCode: v.IndexCode,
  756. DataName: v.IndexName,
  757. OriginalUserId: int32(v.SysUserId),
  758. OriginalUserName: v.SysUserRealName,
  759. NewUserId: int32(adminInfo.AdminId),
  760. NewUserName: adminInfo.RealName,
  761. CreateTime: time.Now(),
  762. })
  763. }
  764. // 修改创建人
  765. err = data_manage.ModifyMysteelChemicalIndexUserIdByOldUserId(oldUserIdList, adminInfo.AdminId, adminInfo.RealName)
  766. }
  767. case 3: //ETA指标库
  768. sourceStrList = append(sourceStrList, "ETA指标库")
  769. edbInfoType := 0
  770. tmpList, tmpErr := data_manage.GetEdbInfoListByUserId(oldUserIdList, edbInfoType)
  771. if tmpErr != nil {
  772. err = tmpErr
  773. return
  774. }
  775. if len(tmpList) > 0 {
  776. for _, v := range tmpList {
  777. // 操作记录
  778. dataPermissionMoveRecordList = append(dataPermissionMoveRecordList, &data_manage_permission.DataPermissionMoveRecord{
  779. DataPermissionMoveRecordId: 0,
  780. Source: int32(source),
  781. SubSource: int32(edbInfoType),
  782. OpUniqueCode: uniqueCode,
  783. DataId: fmt.Sprint(v.EdbInfoId),
  784. DataCode: v.EdbCode,
  785. DataName: v.EdbName,
  786. OriginalUserId: int32(v.SysUserId),
  787. OriginalUserName: v.SysUserRealName,
  788. NewUserId: int32(adminInfo.AdminId),
  789. NewUserName: adminInfo.RealName,
  790. CreateTime: time.Now(),
  791. })
  792. }
  793. // 修改创建人
  794. err = data_manage.ModifyEdbInfoUserIdByOldUserId(oldUserIdList, edbInfoType, adminInfo.AdminId, adminInfo.RealName)
  795. }
  796. case 4: //ETA预测指标
  797. sourceStrList = append(sourceStrList, "ETA预测指标")
  798. edbInfoType := 1
  799. tmpList, tmpErr := data_manage.GetEdbInfoListByUserId(oldUserIdList, edbInfoType)
  800. if tmpErr != nil {
  801. err = tmpErr
  802. return
  803. }
  804. if len(tmpList) > 0 {
  805. for _, v := range tmpList {
  806. // 操作记录
  807. dataPermissionMoveRecordList = append(dataPermissionMoveRecordList, &data_manage_permission.DataPermissionMoveRecord{
  808. DataPermissionMoveRecordId: 0,
  809. Source: int32(source),
  810. SubSource: int32(edbInfoType),
  811. OpUniqueCode: uniqueCode,
  812. DataId: fmt.Sprint(v.EdbInfoId),
  813. DataCode: v.EdbCode,
  814. DataName: v.EdbName,
  815. OriginalUserId: int32(v.SysUserId),
  816. OriginalUserName: v.SysUserRealName,
  817. NewUserId: int32(adminInfo.AdminId),
  818. NewUserName: adminInfo.RealName,
  819. CreateTime: time.Now(),
  820. })
  821. }
  822. // 修改创建人
  823. err = data_manage.ModifyEdbInfoUserIdByOldUserId(oldUserIdList, edbInfoType, adminInfo.AdminId, adminInfo.RealName)
  824. }
  825. case 5: //ETA图库
  826. sourceStrList = append(sourceStrList, "ETA图库")
  827. // 只展示eta图库
  828. subSource := utils.CHART_SOURCE_DEFAULT
  829. tmpList, tmpErr := data_manage.GetChartInfoListByUserId(oldUserIdList, subSource)
  830. if tmpErr != nil {
  831. err = tmpErr
  832. return
  833. }
  834. if len(tmpList) > 0 {
  835. for _, v := range tmpList {
  836. // 操作记录
  837. dataPermissionMoveRecordList = append(dataPermissionMoveRecordList, &data_manage_permission.DataPermissionMoveRecord{
  838. DataPermissionMoveRecordId: 0,
  839. Source: int32(source),
  840. SubSource: int32(subSource),
  841. OpUniqueCode: uniqueCode,
  842. DataId: fmt.Sprint(v.ChartInfoId),
  843. DataCode: fmt.Sprint(v.ChartInfoId),
  844. DataName: v.ChartName,
  845. OriginalUserId: int32(v.SysUserId),
  846. OriginalUserName: v.SysUserRealName,
  847. NewUserId: int32(adminInfo.AdminId),
  848. NewUserName: adminInfo.RealName,
  849. CreateTime: time.Now(),
  850. })
  851. }
  852. // 修改创建人
  853. err = data_manage.ModifyChartInfoUserIdByOldUserId(oldUserIdList, adminInfo.AdminId, adminInfo.RealName)
  854. }
  855. case 6: // ETA表格
  856. sourceStrList = append(sourceStrList, "ETA表格")
  857. tmpList, tmpErr := excel.GetNoContentExcelListByUserId(oldUserIdList)
  858. if tmpErr != nil {
  859. err = tmpErr
  860. return
  861. }
  862. if len(tmpList) > 0 {
  863. for _, v := range tmpList {
  864. // 操作记录
  865. dataPermissionMoveRecordList = append(dataPermissionMoveRecordList, &data_manage_permission.DataPermissionMoveRecord{
  866. DataPermissionMoveRecordId: 0,
  867. Source: int32(source),
  868. SubSource: int32(v.Source),
  869. OpUniqueCode: uniqueCode,
  870. DataId: fmt.Sprint(v.ExcelInfoId),
  871. DataCode: fmt.Sprint(v.ExcelInfoId),
  872. DataName: v.ExcelName,
  873. OriginalUserId: int32(v.SysUserId),
  874. OriginalUserName: v.SysUserRealName,
  875. NewUserId: int32(adminInfo.AdminId),
  876. NewUserName: adminInfo.RealName,
  877. CreateTime: time.Now(),
  878. })
  879. }
  880. // 修改创建人
  881. err = excel.ModifyExcelInfoUserIdByOldUserId(oldUserIdList, adminInfo.AdminId, adminInfo.RealName)
  882. }
  883. default:
  884. }
  885. // 转移失败了那么就直接返回了
  886. if err != nil {
  887. return
  888. }
  889. }
  890. content += fmt.Sprintf("(%s)", strings.Join(sourceStrList, ","))
  891. // 添加资产转移的记录
  892. dataPermissionMessage := &data_manage_permission.DataPermissionMessage{
  893. DataPermissionMessageId: 0,
  894. SendUserId: int32(opUserId),
  895. ReceiveUserId: int32(adminInfo.AdminId),
  896. Content: title,
  897. Remark: content,
  898. OpType: 2,
  899. OpUniqueCode: uniqueCode,
  900. IsRead: 0,
  901. CreateTime: time.Now(),
  902. ModifyTime: time.Now(),
  903. }
  904. tmpErr := data_manage_permission.AddDataPermissionMoveRecord(dataPermissionMoveRecordList, dataPermissionMessage)
  905. // 失败的话,日志记录
  906. if tmpErr != nil {
  907. // 序列化结构体为 JSON 数据
  908. recordListJsonBytes, tmpErr2 := json.Marshal(dataPermissionMoveRecordList)
  909. if tmpErr2 != nil {
  910. utils.FileLog.Error(fmt.Sprintf("添加资产转移的记录失败:%s;list转json失败:;操作记录:%+v;消息记录:%+v", tmpErr.Error(), dataPermissionMoveRecordList, dataPermissionMessage))
  911. return
  912. }
  913. // 序列化结构体为 JSON 数据
  914. messageJsonBytes, tmpErr2 := json.Marshal(dataPermissionMessage)
  915. if tmpErr2 != nil {
  916. utils.FileLog.Error(fmt.Sprintf("添加资产转移的记录失败:%s;message转json失败:;操作记录:%+v;消息记录:%+v", tmpErr.Error(), dataPermissionMoveRecordList, dataPermissionMessage))
  917. return
  918. }
  919. utils.FileLog.Error(fmt.Sprintf("添加资产转移的记录失败:%s;操作记录:%s;消息记录:%s", tmpErr.Error(), string(recordListJsonBytes), string(messageJsonBytes)))
  920. }
  921. return
  922. }
  923. // MoveAllEdbChart
  924. // @Description: 通过原创建人转移指标/图表创建人
  925. // @author: Roc
  926. // @datetime 2024-03-26 15:11:12
  927. // @param sourceList []int 1:手工数据指标 2:钢联化工数据库 3:ETA指标库 4:ETA预测指标 5:图库 6:ETA表格
  928. // @param oldUserId []int
  929. // @param userId int
  930. // @param opUserId int
  931. // @return err error
  932. // @return errMsg string
  933. func MoveAllEdbChart(sourceList, oldUserIdList []int, userId, opUserId int) (err error, errMsg string) {
  934. adminInfo, err := system.GetSysAdminById(userId)
  935. if err != nil {
  936. return
  937. }
  938. // 操作记录
  939. dataPermissionMoveRecordList := make([]*data_manage_permission.DataPermissionMoveRecord, 0)
  940. uniqueCode := uuid.NewUUID().Hex32()
  941. title := `资产转移`
  942. content := `资产转入`
  943. sourceStrList := make([]string, 0)
  944. var isMoveManual, isMoveMysteelChemical, isMoveEdb, isMovePredictEdb, isMoveChart, isMoveExcel bool
  945. // 遍历需要转移的模块,1:手工数据指标 2:钢联化工数据库 3:ETA指标库 4:ETA预测指标 5:图库 6:ETA表格,并找出当前需要转移的资产
  946. for _, source := range sourceList {
  947. switch source {
  948. case 1: //手工数据指标
  949. sourceStrList = append(sourceStrList, "手工指标数据")
  950. tmpList, tmpErr := models.GetEdbinfoListByCodeListByUserId(oldUserIdList)
  951. if tmpErr != nil {
  952. err = tmpErr
  953. return
  954. }
  955. if len(tmpList) > 0 {
  956. for _, v := range tmpList {
  957. // 操作记录
  958. dataPermissionMoveRecordList = append(dataPermissionMoveRecordList, &data_manage_permission.DataPermissionMoveRecord{
  959. DataPermissionMoveRecordId: 0,
  960. Source: int32(source),
  961. SubSource: 0,
  962. OpUniqueCode: uniqueCode,
  963. DataId: v.TradeCode,
  964. DataCode: v.TradeCode,
  965. DataName: v.SecName,
  966. OriginalUserId: int32(v.UserId),
  967. OriginalUserName: v.UserName,
  968. NewUserId: int32(adminInfo.AdminId),
  969. NewUserName: adminInfo.RealName,
  970. CreateTime: time.Now(),
  971. })
  972. }
  973. isMoveManual = true
  974. }
  975. case 2: //钢联化工数据库
  976. sourceStrList = append(sourceStrList, "钢联化工数据库")
  977. tmpList, tmpErr := data_manage.GetMysteelChemicalIndexListByUserId(oldUserIdList)
  978. if tmpErr != nil {
  979. err = tmpErr
  980. return
  981. }
  982. if len(tmpList) > 0 {
  983. for _, v := range tmpList {
  984. //if v.SysUserId == newUserId {
  985. // errMsg = "新创建人不可和原创建人一致"
  986. // err = errors.New(errMsg)
  987. // return
  988. //}
  989. // 操作记录
  990. dataPermissionMoveRecordList = append(dataPermissionMoveRecordList, &data_manage_permission.DataPermissionMoveRecord{
  991. DataPermissionMoveRecordId: 0,
  992. Source: int32(source),
  993. SubSource: 0,
  994. OpUniqueCode: uniqueCode,
  995. DataId: fmt.Sprint(v.BaseFromMysteelChemicalIndexId),
  996. DataCode: v.IndexCode,
  997. DataName: v.IndexName,
  998. OriginalUserId: int32(v.SysUserId),
  999. OriginalUserName: v.SysUserRealName,
  1000. NewUserId: int32(adminInfo.AdminId),
  1001. NewUserName: adminInfo.RealName,
  1002. CreateTime: time.Now(),
  1003. })
  1004. }
  1005. isMoveMysteelChemical = true
  1006. }
  1007. case 3: //ETA指标库
  1008. sourceStrList = append(sourceStrList, "ETA指标库")
  1009. edbInfoType := 0
  1010. tmpList, tmpErr := data_manage.GetEdbInfoListByUserId(oldUserIdList, edbInfoType)
  1011. if tmpErr != nil {
  1012. err = tmpErr
  1013. return
  1014. }
  1015. if len(tmpList) > 0 {
  1016. for _, v := range tmpList {
  1017. // 操作记录
  1018. dataPermissionMoveRecordList = append(dataPermissionMoveRecordList, &data_manage_permission.DataPermissionMoveRecord{
  1019. DataPermissionMoveRecordId: 0,
  1020. Source: int32(source),
  1021. SubSource: int32(edbInfoType),
  1022. OpUniqueCode: uniqueCode,
  1023. DataId: fmt.Sprint(v.EdbInfoId),
  1024. DataCode: v.EdbCode,
  1025. DataName: v.EdbName,
  1026. OriginalUserId: int32(v.SysUserId),
  1027. OriginalUserName: v.SysUserRealName,
  1028. NewUserId: int32(adminInfo.AdminId),
  1029. NewUserName: adminInfo.RealName,
  1030. CreateTime: time.Now(),
  1031. })
  1032. }
  1033. isMoveEdb = true
  1034. }
  1035. case 4: //ETA预测指标
  1036. sourceStrList = append(sourceStrList, "ETA预测指标")
  1037. edbInfoType := 1
  1038. tmpList, tmpErr := data_manage.GetEdbInfoListByUserId(oldUserIdList, edbInfoType)
  1039. if tmpErr != nil {
  1040. err = tmpErr
  1041. return
  1042. }
  1043. if len(tmpList) > 0 {
  1044. for _, v := range tmpList {
  1045. // 操作记录
  1046. dataPermissionMoveRecordList = append(dataPermissionMoveRecordList, &data_manage_permission.DataPermissionMoveRecord{
  1047. DataPermissionMoveRecordId: 0,
  1048. Source: int32(source),
  1049. SubSource: int32(edbInfoType),
  1050. OpUniqueCode: uniqueCode,
  1051. DataId: fmt.Sprint(v.EdbInfoId),
  1052. DataCode: v.EdbCode,
  1053. DataName: v.EdbName,
  1054. OriginalUserId: int32(v.SysUserId),
  1055. OriginalUserName: v.SysUserRealName,
  1056. NewUserId: int32(adminInfo.AdminId),
  1057. NewUserName: adminInfo.RealName,
  1058. CreateTime: time.Now(),
  1059. })
  1060. }
  1061. isMovePredictEdb = true
  1062. }
  1063. case 5: //ETA图库
  1064. sourceStrList = append(sourceStrList, "ETA图库")
  1065. // 只展示eta图库
  1066. subSource := utils.CHART_SOURCE_DEFAULT
  1067. tmpList, tmpErr := data_manage.GetChartInfoListByUserId(oldUserIdList, subSource)
  1068. if tmpErr != nil {
  1069. err = tmpErr
  1070. return
  1071. }
  1072. if len(tmpList) > 0 {
  1073. for _, v := range tmpList {
  1074. // 操作记录
  1075. dataPermissionMoveRecordList = append(dataPermissionMoveRecordList, &data_manage_permission.DataPermissionMoveRecord{
  1076. DataPermissionMoveRecordId: 0,
  1077. Source: int32(source),
  1078. SubSource: int32(subSource),
  1079. OpUniqueCode: uniqueCode,
  1080. DataId: fmt.Sprint(v.ChartInfoId),
  1081. DataCode: fmt.Sprint(v.ChartInfoId),
  1082. DataName: v.ChartName,
  1083. OriginalUserId: int32(v.SysUserId),
  1084. OriginalUserName: v.SysUserRealName,
  1085. NewUserId: int32(adminInfo.AdminId),
  1086. NewUserName: adminInfo.RealName,
  1087. CreateTime: time.Now(),
  1088. })
  1089. }
  1090. isMoveChart = true
  1091. }
  1092. case 6: // ETA表格
  1093. sourceStrList = append(sourceStrList, "ETA表格")
  1094. tmpList, tmpErr := excel.GetNoContentExcelListByUserId(oldUserIdList)
  1095. if tmpErr != nil {
  1096. err = tmpErr
  1097. return
  1098. }
  1099. if len(tmpList) > 0 {
  1100. for _, v := range tmpList {
  1101. // 操作记录
  1102. dataPermissionMoveRecordList = append(dataPermissionMoveRecordList, &data_manage_permission.DataPermissionMoveRecord{
  1103. DataPermissionMoveRecordId: 0,
  1104. Source: int32(source),
  1105. SubSource: int32(v.Source),
  1106. OpUniqueCode: uniqueCode,
  1107. DataId: fmt.Sprint(v.ExcelInfoId),
  1108. DataCode: fmt.Sprint(v.ExcelInfoId),
  1109. DataName: v.ExcelName,
  1110. OriginalUserId: int32(v.SysUserId),
  1111. OriginalUserName: v.SysUserRealName,
  1112. NewUserId: int32(adminInfo.AdminId),
  1113. NewUserName: adminInfo.RealName,
  1114. CreateTime: time.Now(),
  1115. })
  1116. }
  1117. isMoveExcel = true
  1118. }
  1119. default:
  1120. }
  1121. }
  1122. // 修改创建人
  1123. err = data_manage_permission.ModifyDataUserIdByOldUserId(oldUserIdList, adminInfo.AdminId, adminInfo.RealName, isMoveManual, isMoveMysteelChemical, isMoveEdb, isMovePredictEdb, isMoveChart, isMoveExcel)
  1124. // 转移失败了那么就直接返回了
  1125. if err != nil {
  1126. return
  1127. }
  1128. // 添加资产转移的记录
  1129. content += fmt.Sprintf("(%s)", strings.Join(sourceStrList, ","))
  1130. dataPermissionMessage := &data_manage_permission.DataPermissionMessage{
  1131. DataPermissionMessageId: 0,
  1132. SendUserId: int32(opUserId),
  1133. ReceiveUserId: int32(adminInfo.AdminId),
  1134. Content: title,
  1135. Remark: content,
  1136. OpType: 2,
  1137. OpUniqueCode: uniqueCode,
  1138. IsRead: 0,
  1139. CreateTime: time.Now(),
  1140. ModifyTime: time.Now(),
  1141. }
  1142. tmpErr := data_manage_permission.AddDataPermissionMoveRecord(dataPermissionMoveRecordList, dataPermissionMessage)
  1143. // 失败的话,日志记录
  1144. if tmpErr != nil {
  1145. // 序列化结构体为 JSON 数据
  1146. recordListJsonBytes, tmpErr2 := json.Marshal(dataPermissionMoveRecordList)
  1147. if tmpErr2 != nil {
  1148. utils.FileLog.Error(fmt.Sprintf("添加资产转移的记录失败:%s;list转json失败:;操作记录:%+v;消息记录:%+v", tmpErr.Error(), dataPermissionMoveRecordList, dataPermissionMessage))
  1149. return
  1150. }
  1151. // 序列化结构体为 JSON 数据
  1152. messageJsonBytes, tmpErr2 := json.Marshal(dataPermissionMessage)
  1153. if tmpErr2 != nil {
  1154. utils.FileLog.Error(fmt.Sprintf("添加资产转移的记录失败:%s;message转json失败:;操作记录:%+v;消息记录:%+v", tmpErr.Error(), dataPermissionMoveRecordList, dataPermissionMessage))
  1155. return
  1156. }
  1157. utils.FileLog.Error(fmt.Sprintf("添加资产转移的记录失败:%s;操作记录:%s;消息记录:%s", tmpErr.Error(), string(recordListJsonBytes), string(messageJsonBytes)))
  1158. }
  1159. return
  1160. }
  1161. // GetMoveEdbChartCount 获取待转移的指标/图表列表
  1162. // @param userId 用户
  1163. // @param countType 来源 :1:设置资产权限;2:设置数据权限
  1164. func GetMoveEdbChartCount(userId, countType int) (sourceMap map[int]int, err error) {
  1165. sourceMap = make(map[int]int)
  1166. {
  1167. // 手工数据指标
  1168. var condition string
  1169. var pars []interface{}
  1170. if userId > 0 {
  1171. condition += ` AND a.user_id = ? `
  1172. pars = append(pars, userId)
  1173. }
  1174. total, tmpErr := models.GetEdbinfoListCount(condition, pars, "", 0)
  1175. if tmpErr != nil {
  1176. err = tmpErr
  1177. return
  1178. }
  1179. sourceMap[1] = total
  1180. }
  1181. {
  1182. // 钢联化工数据库
  1183. var condition string
  1184. var pars []interface{}
  1185. if userId > 0 {
  1186. condition += ` AND sys_user_id = ? `
  1187. pars = append(pars, userId)
  1188. }
  1189. total, tmpErr := data_manage.GetMysteelChemicalIndexCount(condition, pars)
  1190. if tmpErr != nil {
  1191. err = tmpErr
  1192. return
  1193. }
  1194. sourceMap[2] = total
  1195. }
  1196. {
  1197. // ETA指标库
  1198. var condition string
  1199. var pars []interface{}
  1200. if userId > 0 {
  1201. condition += ` AND sys_user_id = ? `
  1202. pars = append(pars, userId)
  1203. }
  1204. //ETA指标库
  1205. condition += ` AND edb_info_type = ? `
  1206. pars = append(pars, 0)
  1207. total, tmpErr := data_manage.GetEdbInfoByConditionCount(condition, pars)
  1208. if tmpErr != nil {
  1209. err = tmpErr
  1210. return
  1211. }
  1212. sourceMap[3] = total
  1213. }
  1214. {
  1215. // ETA预测指标库
  1216. var condition string
  1217. var pars []interface{}
  1218. if userId > 0 {
  1219. condition += ` AND sys_user_id = ? `
  1220. pars = append(pars, userId)
  1221. }
  1222. //ETA预测指标
  1223. condition += ` AND edb_info_type = ? `
  1224. pars = append(pars, 1)
  1225. total, tmpErr := data_manage.GetEdbInfoByConditionCount(condition, pars)
  1226. if tmpErr != nil {
  1227. err = tmpErr
  1228. return
  1229. }
  1230. sourceMap[4] = total
  1231. }
  1232. {
  1233. // 图库
  1234. var condition string
  1235. var pars []interface{}
  1236. if userId > 0 {
  1237. condition += ` AND sys_user_id = ? `
  1238. pars = append(pars, userId)
  1239. }
  1240. total, tmpErr := data_manage.GetChartInfoCountByCondition(condition, pars)
  1241. if tmpErr != nil {
  1242. err = tmpErr
  1243. return
  1244. }
  1245. sourceMap[5] = total
  1246. }
  1247. {
  1248. // ETA表格
  1249. var condition string
  1250. var pars []interface{}
  1251. condition += ` AND is_delete = 0 `
  1252. if userId > 0 {
  1253. condition += ` AND sys_user_id = ? `
  1254. pars = append(pars, userId)
  1255. }
  1256. switch countType {
  1257. case 2:
  1258. condition += ` AND source in (2,3) `
  1259. default:
  1260. condition += ` AND source in (2,3,4) `
  1261. }
  1262. total, tmpErr := excel.GetExcelInfoCountByCondition(condition, pars)
  1263. if tmpErr != nil {
  1264. err = tmpErr
  1265. return
  1266. }
  1267. sourceMap[6] = total
  1268. }
  1269. return
  1270. }