data_move.go 44 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367
  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)
  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)
  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. content := `资产转入`
  461. switch source {
  462. case 1: //手工数据指标
  463. content += `(手工指标数据)`
  464. tmpList, tmpErr := models.GetEdbinfoListByCodeListByCodeIdList(dataId)
  465. if tmpErr != nil {
  466. err = tmpErr
  467. return
  468. }
  469. if len(tmpList) > 0 {
  470. for _, v := range tmpList {
  471. //if v.UserId == newUserId {
  472. // errMsg = "新创建人不可和原创建人一致"
  473. // err = errors.New(errMsg)
  474. // return
  475. //}
  476. // 操作记录
  477. dataPermissionMoveRecordList = append(dataPermissionMoveRecordList, &data_manage_permission.DataPermissionMoveRecord{
  478. DataPermissionMoveRecordId: 0,
  479. Source: int32(source),
  480. SubSource: int32(subSource),
  481. OpUniqueCode: uniqueCode,
  482. DataId: v.TradeCode,
  483. DataCode: v.TradeCode,
  484. DataName: v.SecName,
  485. OriginalUserId: int32(v.UserId),
  486. OriginalUserName: v.UserName,
  487. NewUserId: int32(adminInfo.AdminId),
  488. NewUserName: adminInfo.RealName,
  489. CreateTime: time.Now(),
  490. })
  491. }
  492. // 修改创建人
  493. err = models.ModifyEdbinfoUserIdByCodeList(dataId, newUserId)
  494. }
  495. case 2: //钢联化工数据库
  496. content += `(钢联化工数据库)`
  497. tmpList, tmpErr := data_manage.GetMysteelChemicalIndexListByIndexId(dataId)
  498. if tmpErr != nil {
  499. err = tmpErr
  500. return
  501. }
  502. if len(tmpList) > 0 {
  503. for _, v := range tmpList {
  504. //if v.SysUserId == newUserId {
  505. // errMsg = "新创建人不可和原创建人一致"
  506. // err = errors.New(errMsg)
  507. // return
  508. //}
  509. // 操作记录
  510. dataPermissionMoveRecordList = append(dataPermissionMoveRecordList, &data_manage_permission.DataPermissionMoveRecord{
  511. DataPermissionMoveRecordId: 0,
  512. Source: int32(source),
  513. SubSource: int32(subSource),
  514. OpUniqueCode: uniqueCode,
  515. DataId: fmt.Sprint(v.BaseFromMysteelChemicalIndexId),
  516. DataCode: v.IndexCode,
  517. DataName: v.IndexName,
  518. OriginalUserId: int32(v.SysUserId),
  519. OriginalUserName: v.SysUserRealName,
  520. NewUserId: int32(adminInfo.AdminId),
  521. NewUserName: adminInfo.RealName,
  522. CreateTime: time.Now(),
  523. })
  524. }
  525. // 修改创建人
  526. err = data_manage.ModifyMysteelChemicalIndexUserIdByCodeList(dataId, adminInfo.AdminId, adminInfo.RealName)
  527. }
  528. case 3, 4: //ETA指标库、ETA预测指标
  529. if source == 3 {
  530. content += `(ETA指标库)`
  531. } else {
  532. content += `(ETA预测指标)`
  533. }
  534. tmpList, tmpErr := data_manage.GetEdbInfoListByEdbInfoId(dataId)
  535. if tmpErr != nil {
  536. err = tmpErr
  537. return
  538. }
  539. if len(tmpList) > 0 {
  540. for _, v := range tmpList {
  541. //if v.SysUserId == newUserId {
  542. // errMsg = "新创建人不可和原创建人一致"
  543. // err = errors.New(errMsg)
  544. // return
  545. //}
  546. // 操作记录
  547. dataPermissionMoveRecordList = append(dataPermissionMoveRecordList, &data_manage_permission.DataPermissionMoveRecord{
  548. DataPermissionMoveRecordId: 0,
  549. Source: int32(source),
  550. SubSource: int32(subSource),
  551. OpUniqueCode: uniqueCode,
  552. DataId: fmt.Sprint(v.EdbInfoId),
  553. DataCode: v.EdbCode,
  554. DataName: v.EdbName,
  555. OriginalUserId: int32(v.SysUserId),
  556. OriginalUserName: v.SysUserRealName,
  557. NewUserId: int32(adminInfo.AdminId),
  558. NewUserName: adminInfo.RealName,
  559. CreateTime: time.Now(),
  560. })
  561. }
  562. // 修改创建人
  563. err = data_manage.ModifyEdbInfoUserIdByCodeList(dataId, adminInfo.AdminId, adminInfo.RealName)
  564. // 移除当前用户的不可操作权限
  565. {
  566. obj := data_manage.EdbInfoNoPermissionAdmin{}
  567. for _, v := range dataId {
  568. edbInfoId, _ := strconv.Atoi(v)
  569. go obj.DeleteByEdbInfoIdAndAdminId(edbInfoId, adminInfo.AdminId)
  570. }
  571. }
  572. }
  573. case 5: //图库
  574. content += `(ETA图库)`
  575. // 只展示eta图库
  576. subSource = utils.CHART_SOURCE_DEFAULT
  577. tmpList, tmpErr := data_manage.GetChartInfoListByChartIdList(dataId)
  578. if tmpErr != nil {
  579. err = tmpErr
  580. return
  581. }
  582. if len(tmpList) > 0 {
  583. for _, v := range tmpList {
  584. //if v.SysUserId == newUserId {
  585. // errMsg = "新创建人不可和原创建人一致"
  586. // err = errors.New(errMsg)
  587. // return
  588. //}
  589. // 操作记录
  590. dataPermissionMoveRecordList = append(dataPermissionMoveRecordList, &data_manage_permission.DataPermissionMoveRecord{
  591. DataPermissionMoveRecordId: 0,
  592. Source: int32(source),
  593. SubSource: int32(subSource),
  594. OpUniqueCode: uniqueCode,
  595. DataId: fmt.Sprint(v.ChartInfoId),
  596. DataCode: fmt.Sprint(v.ChartInfoId),
  597. DataName: v.ChartName,
  598. OriginalUserId: int32(v.SysUserId),
  599. OriginalUserName: v.SysUserRealName,
  600. NewUserId: int32(adminInfo.AdminId),
  601. NewUserName: adminInfo.RealName,
  602. CreateTime: time.Now(),
  603. })
  604. }
  605. // 修改创建人
  606. err = data_manage.ModifyChartInfoUserIdByCodeList(dataId, adminInfo.AdminId, adminInfo.RealName)
  607. }
  608. case 6: // ETA表格
  609. content += `(ETA表格)`
  610. tmpList, tmpErr := excel.GetNoContentExcelListByExcelInfoIdList(dataId)
  611. if tmpErr != nil {
  612. err = tmpErr
  613. return
  614. }
  615. if len(tmpList) > 0 {
  616. for _, v := range tmpList {
  617. //if v.SysUserId == newUserId {
  618. // errMsg = "新创建人不可和原创建人一致"
  619. // err = errors.New(errMsg)
  620. // return
  621. //}
  622. // 操作记录
  623. dataPermissionMoveRecordList = append(dataPermissionMoveRecordList, &data_manage_permission.DataPermissionMoveRecord{
  624. DataPermissionMoveRecordId: 0,
  625. Source: int32(source),
  626. SubSource: int32(subSource),
  627. OpUniqueCode: uniqueCode,
  628. DataId: fmt.Sprint(v.ExcelInfoId),
  629. DataCode: fmt.Sprint(v.ExcelInfoId),
  630. DataName: v.ExcelName,
  631. OriginalUserId: int32(v.SysUserId),
  632. OriginalUserName: v.SysUserRealName,
  633. NewUserId: int32(adminInfo.AdminId),
  634. NewUserName: adminInfo.RealName,
  635. CreateTime: time.Now(),
  636. })
  637. }
  638. // 修改创建人
  639. err = excel.ModifyExcelInfoUserIdByCodeList(dataId, adminInfo.AdminId, adminInfo.RealName)
  640. }
  641. default:
  642. return
  643. }
  644. // 转移失败了那么就直接返回了
  645. if err != nil {
  646. return
  647. }
  648. // 添加资产转移的记录
  649. dataPermissionMessage := &data_manage_permission.DataPermissionMessage{
  650. DataPermissionMessageId: 0,
  651. SendUserId: int32(opUserId),
  652. ReceiveUserId: int32(adminInfo.AdminId),
  653. Content: content,
  654. Remark: content,
  655. OpType: 1,
  656. OpUniqueCode: uniqueCode,
  657. IsRead: 0,
  658. CreateTime: time.Now(),
  659. ModifyTime: time.Now(),
  660. }
  661. tmpErr := data_manage_permission.AddDataPermissionMoveRecord(dataPermissionMoveRecordList, dataPermissionMessage)
  662. // 失败的话,日志记录
  663. if tmpErr != nil {
  664. // 序列化结构体为 JSON 数据
  665. recordListJsonBytes, tmpErr2 := json.Marshal(dataPermissionMoveRecordList)
  666. if tmpErr2 != nil {
  667. utils.FileLog.Error(fmt.Sprintf("添加资产转移的记录失败:%s;list转json失败:;操作记录:%+v;消息记录:%+v", tmpErr.Error(), dataPermissionMoveRecordList, dataPermissionMessage))
  668. return
  669. }
  670. // 序列化结构体为 JSON 数据
  671. messageJsonBytes, tmpErr2 := json.Marshal(dataPermissionMessage)
  672. if tmpErr2 != nil {
  673. utils.FileLog.Error(fmt.Sprintf("添加资产转移的记录失败:%s;message转json失败:;操作记录:%+v;消息记录:%+v", tmpErr.Error(), dataPermissionMoveRecordList, dataPermissionMessage))
  674. return
  675. }
  676. utils.FileLog.Error(fmt.Sprintf("添加资产转移的记录失败:%s;操作记录:%s;消息记录:%s", tmpErr.Error(), string(recordListJsonBytes), string(messageJsonBytes)))
  677. }
  678. return
  679. }
  680. // MoveAllEdbChart
  681. // @Description: 通过原创建人转移指标/图表创建人
  682. // @author: Roc
  683. // @datetime 2024-03-26 15:11:12
  684. // @param sourceList []int 1:手工数据指标 2:钢联化工数据库 3:ETA指标库 4:ETA预测指标 5:图库 6:ETA表格
  685. // @param oldUserId []int
  686. // @param userId int
  687. // @param opUserId int
  688. // @return err error
  689. // @return errMsg string
  690. func MoveAllEdbChartOld(sourceList, oldUserIdList []int, userId, opUserId int) (err error, errMsg string) {
  691. adminInfo, err := system.GetSysAdminById(userId)
  692. if err != nil {
  693. return
  694. }
  695. // 操作记录
  696. dataPermissionMoveRecordList := make([]*data_manage_permission.DataPermissionMoveRecord, 0)
  697. uniqueCode := uuid.NewUUID().Hex32()
  698. content := `资产转入`
  699. sourceStrList := make([]string, 0)
  700. for _, source := range sourceList {
  701. switch source {
  702. case 1: //手工数据指标
  703. sourceStrList = append(sourceStrList, "手工指标数据")
  704. tmpList, tmpErr := models.GetEdbinfoListByCodeListByUserId(oldUserIdList)
  705. if tmpErr != nil {
  706. err = tmpErr
  707. return
  708. }
  709. if len(tmpList) > 0 {
  710. for _, v := range tmpList {
  711. // 操作记录
  712. dataPermissionMoveRecordList = append(dataPermissionMoveRecordList, &data_manage_permission.DataPermissionMoveRecord{
  713. DataPermissionMoveRecordId: 0,
  714. Source: int32(source),
  715. SubSource: 0,
  716. OpUniqueCode: uniqueCode,
  717. DataId: v.TradeCode,
  718. DataCode: v.TradeCode,
  719. DataName: v.SecName,
  720. OriginalUserId: int32(v.UserId),
  721. OriginalUserName: v.UserName,
  722. NewUserId: int32(adminInfo.AdminId),
  723. NewUserName: adminInfo.RealName,
  724. CreateTime: time.Now(),
  725. })
  726. }
  727. // 修改创建人
  728. err = models.ModifyEdbinfoUserIdByOldUserId(oldUserIdList, userId)
  729. }
  730. case 2: //钢联化工数据库
  731. sourceStrList = append(sourceStrList, "钢联化工数据库")
  732. tmpList, tmpErr := data_manage.GetMysteelChemicalIndexListByUserId(oldUserIdList)
  733. if tmpErr != nil {
  734. err = tmpErr
  735. return
  736. }
  737. if len(tmpList) > 0 {
  738. for _, v := range tmpList {
  739. //if v.SysUserId == newUserId {
  740. // errMsg = "新创建人不可和原创建人一致"
  741. // err = errors.New(errMsg)
  742. // return
  743. //}
  744. // 操作记录
  745. dataPermissionMoveRecordList = append(dataPermissionMoveRecordList, &data_manage_permission.DataPermissionMoveRecord{
  746. DataPermissionMoveRecordId: 0,
  747. Source: int32(source),
  748. SubSource: 0,
  749. OpUniqueCode: uniqueCode,
  750. DataId: fmt.Sprint(v.BaseFromMysteelChemicalIndexId),
  751. DataCode: v.IndexCode,
  752. DataName: v.IndexName,
  753. OriginalUserId: int32(v.SysUserId),
  754. OriginalUserName: v.SysUserRealName,
  755. NewUserId: int32(adminInfo.AdminId),
  756. NewUserName: adminInfo.RealName,
  757. CreateTime: time.Now(),
  758. })
  759. }
  760. // 修改创建人
  761. err = data_manage.ModifyMysteelChemicalIndexUserIdByOldUserId(oldUserIdList, adminInfo.AdminId, adminInfo.RealName)
  762. }
  763. case 3: //ETA指标库
  764. sourceStrList = append(sourceStrList, "ETA指标库")
  765. edbInfoType := 0
  766. tmpList, tmpErr := data_manage.GetEdbInfoListByUserId(oldUserIdList, edbInfoType)
  767. if tmpErr != nil {
  768. err = tmpErr
  769. return
  770. }
  771. if len(tmpList) > 0 {
  772. for _, v := range tmpList {
  773. // 操作记录
  774. dataPermissionMoveRecordList = append(dataPermissionMoveRecordList, &data_manage_permission.DataPermissionMoveRecord{
  775. DataPermissionMoveRecordId: 0,
  776. Source: int32(source),
  777. SubSource: int32(edbInfoType),
  778. OpUniqueCode: uniqueCode,
  779. DataId: fmt.Sprint(v.EdbInfoId),
  780. DataCode: v.EdbCode,
  781. DataName: v.EdbName,
  782. OriginalUserId: int32(v.SysUserId),
  783. OriginalUserName: v.SysUserRealName,
  784. NewUserId: int32(adminInfo.AdminId),
  785. NewUserName: adminInfo.RealName,
  786. CreateTime: time.Now(),
  787. })
  788. }
  789. // 修改创建人
  790. err = data_manage.ModifyEdbInfoUserIdByOldUserId(oldUserIdList, edbInfoType, adminInfo.AdminId, adminInfo.RealName)
  791. }
  792. case 4: //ETA预测指标
  793. sourceStrList = append(sourceStrList, "ETA预测指标")
  794. edbInfoType := 1
  795. tmpList, tmpErr := data_manage.GetEdbInfoListByUserId(oldUserIdList, edbInfoType)
  796. if tmpErr != nil {
  797. err = tmpErr
  798. return
  799. }
  800. if len(tmpList) > 0 {
  801. for _, v := range tmpList {
  802. // 操作记录
  803. dataPermissionMoveRecordList = append(dataPermissionMoveRecordList, &data_manage_permission.DataPermissionMoveRecord{
  804. DataPermissionMoveRecordId: 0,
  805. Source: int32(source),
  806. SubSource: int32(edbInfoType),
  807. OpUniqueCode: uniqueCode,
  808. DataId: fmt.Sprint(v.EdbInfoId),
  809. DataCode: v.EdbCode,
  810. DataName: v.EdbName,
  811. OriginalUserId: int32(v.SysUserId),
  812. OriginalUserName: v.SysUserRealName,
  813. NewUserId: int32(adminInfo.AdminId),
  814. NewUserName: adminInfo.RealName,
  815. CreateTime: time.Now(),
  816. })
  817. }
  818. // 修改创建人
  819. err = data_manage.ModifyEdbInfoUserIdByOldUserId(oldUserIdList, edbInfoType, adminInfo.AdminId, adminInfo.RealName)
  820. }
  821. case 5: //ETA图库
  822. sourceStrList = append(sourceStrList, "ETA图库")
  823. // 只展示eta图库
  824. subSource := utils.CHART_SOURCE_DEFAULT
  825. tmpList, tmpErr := data_manage.GetChartInfoListByUserId(oldUserIdList, subSource)
  826. if tmpErr != nil {
  827. err = tmpErr
  828. return
  829. }
  830. if len(tmpList) > 0 {
  831. for _, v := range tmpList {
  832. // 操作记录
  833. dataPermissionMoveRecordList = append(dataPermissionMoveRecordList, &data_manage_permission.DataPermissionMoveRecord{
  834. DataPermissionMoveRecordId: 0,
  835. Source: int32(source),
  836. SubSource: int32(subSource),
  837. OpUniqueCode: uniqueCode,
  838. DataId: fmt.Sprint(v.ChartInfoId),
  839. DataCode: fmt.Sprint(v.ChartInfoId),
  840. DataName: v.ChartName,
  841. OriginalUserId: int32(v.SysUserId),
  842. OriginalUserName: v.SysUserRealName,
  843. NewUserId: int32(adminInfo.AdminId),
  844. NewUserName: adminInfo.RealName,
  845. CreateTime: time.Now(),
  846. })
  847. }
  848. // 修改创建人
  849. err = data_manage.ModifyChartInfoUserIdByOldUserId(oldUserIdList, adminInfo.AdminId, adminInfo.RealName)
  850. }
  851. case 6: // ETA表格
  852. sourceStrList = append(sourceStrList, "ETA表格")
  853. tmpList, tmpErr := excel.GetNoContentExcelListByUserId(oldUserIdList)
  854. if tmpErr != nil {
  855. err = tmpErr
  856. return
  857. }
  858. if len(tmpList) > 0 {
  859. for _, v := range tmpList {
  860. // 操作记录
  861. dataPermissionMoveRecordList = append(dataPermissionMoveRecordList, &data_manage_permission.DataPermissionMoveRecord{
  862. DataPermissionMoveRecordId: 0,
  863. Source: int32(source),
  864. SubSource: int32(v.Source),
  865. OpUniqueCode: uniqueCode,
  866. DataId: fmt.Sprint(v.ExcelInfoId),
  867. DataCode: fmt.Sprint(v.ExcelInfoId),
  868. DataName: v.ExcelName,
  869. OriginalUserId: int32(v.SysUserId),
  870. OriginalUserName: v.SysUserRealName,
  871. NewUserId: int32(adminInfo.AdminId),
  872. NewUserName: adminInfo.RealName,
  873. CreateTime: time.Now(),
  874. })
  875. }
  876. // 修改创建人
  877. err = excel.ModifyExcelInfoUserIdByOldUserId(oldUserIdList, adminInfo.AdminId, adminInfo.RealName)
  878. }
  879. default:
  880. }
  881. // 转移失败了那么就直接返回了
  882. if err != nil {
  883. return
  884. }
  885. }
  886. content += fmt.Sprintf("(%s)", strings.Join(sourceStrList, ","))
  887. // 添加资产转移的记录
  888. dataPermissionMessage := &data_manage_permission.DataPermissionMessage{
  889. DataPermissionMessageId: 0,
  890. SendUserId: int32(opUserId),
  891. ReceiveUserId: int32(adminInfo.AdminId),
  892. Content: content,
  893. Remark: content,
  894. OpType: 1,
  895. OpUniqueCode: uniqueCode,
  896. IsRead: 0,
  897. CreateTime: time.Now(),
  898. ModifyTime: time.Now(),
  899. }
  900. tmpErr := data_manage_permission.AddDataPermissionMoveRecord(dataPermissionMoveRecordList, dataPermissionMessage)
  901. // 失败的话,日志记录
  902. if tmpErr != nil {
  903. // 序列化结构体为 JSON 数据
  904. recordListJsonBytes, tmpErr2 := json.Marshal(dataPermissionMoveRecordList)
  905. if tmpErr2 != nil {
  906. utils.FileLog.Error(fmt.Sprintf("添加资产转移的记录失败:%s;list转json失败:;操作记录:%+v;消息记录:%+v", tmpErr.Error(), dataPermissionMoveRecordList, dataPermissionMessage))
  907. return
  908. }
  909. // 序列化结构体为 JSON 数据
  910. messageJsonBytes, tmpErr2 := json.Marshal(dataPermissionMessage)
  911. if tmpErr2 != nil {
  912. utils.FileLog.Error(fmt.Sprintf("添加资产转移的记录失败:%s;message转json失败:;操作记录:%+v;消息记录:%+v", tmpErr.Error(), dataPermissionMoveRecordList, dataPermissionMessage))
  913. return
  914. }
  915. utils.FileLog.Error(fmt.Sprintf("添加资产转移的记录失败:%s;操作记录:%s;消息记录:%s", tmpErr.Error(), string(recordListJsonBytes), string(messageJsonBytes)))
  916. }
  917. return
  918. }
  919. // MoveAllEdbChart
  920. // @Description: 通过原创建人转移指标/图表创建人
  921. // @author: Roc
  922. // @datetime 2024-03-26 15:11:12
  923. // @param sourceList []int 1:手工数据指标 2:钢联化工数据库 3:ETA指标库 4:ETA预测指标 5:图库 6:ETA表格
  924. // @param oldUserId []int
  925. // @param userId int
  926. // @param opUserId int
  927. // @return err error
  928. // @return errMsg string
  929. func MoveAllEdbChart(sourceList, oldUserIdList []int, userId, opUserId int) (err error, errMsg string) {
  930. adminInfo, err := system.GetSysAdminById(userId)
  931. if err != nil {
  932. return
  933. }
  934. // 操作记录
  935. dataPermissionMoveRecordList := make([]*data_manage_permission.DataPermissionMoveRecord, 0)
  936. uniqueCode := uuid.NewUUID().Hex32()
  937. content := `资产转入`
  938. sourceStrList := make([]string, 0)
  939. var isMoveManual, isMoveMysteelChemical, isMoveEdb, isMovePredictEdb, isMoveChart, isMoveExcel bool
  940. // 遍历需要转移的模块,1:手工数据指标 2:钢联化工数据库 3:ETA指标库 4:ETA预测指标 5:图库 6:ETA表格,并找出当前需要转移的资产
  941. for _, source := range sourceList {
  942. switch source {
  943. case 1: //手工数据指标
  944. sourceStrList = append(sourceStrList, "手工指标数据")
  945. tmpList, tmpErr := models.GetEdbinfoListByCodeListByUserId(oldUserIdList)
  946. if tmpErr != nil {
  947. err = tmpErr
  948. return
  949. }
  950. if len(tmpList) > 0 {
  951. for _, v := range tmpList {
  952. // 操作记录
  953. dataPermissionMoveRecordList = append(dataPermissionMoveRecordList, &data_manage_permission.DataPermissionMoveRecord{
  954. DataPermissionMoveRecordId: 0,
  955. Source: int32(source),
  956. SubSource: 0,
  957. OpUniqueCode: uniqueCode,
  958. DataId: v.TradeCode,
  959. DataCode: v.TradeCode,
  960. DataName: v.SecName,
  961. OriginalUserId: int32(v.UserId),
  962. OriginalUserName: v.UserName,
  963. NewUserId: int32(adminInfo.AdminId),
  964. NewUserName: adminInfo.RealName,
  965. CreateTime: time.Now(),
  966. })
  967. }
  968. isMoveManual = true
  969. }
  970. case 2: //钢联化工数据库
  971. sourceStrList = append(sourceStrList, "钢联化工数据库")
  972. tmpList, tmpErr := data_manage.GetMysteelChemicalIndexListByUserId(oldUserIdList)
  973. if tmpErr != nil {
  974. err = tmpErr
  975. return
  976. }
  977. if len(tmpList) > 0 {
  978. for _, v := range tmpList {
  979. //if v.SysUserId == newUserId {
  980. // errMsg = "新创建人不可和原创建人一致"
  981. // err = errors.New(errMsg)
  982. // return
  983. //}
  984. // 操作记录
  985. dataPermissionMoveRecordList = append(dataPermissionMoveRecordList, &data_manage_permission.DataPermissionMoveRecord{
  986. DataPermissionMoveRecordId: 0,
  987. Source: int32(source),
  988. SubSource: 0,
  989. OpUniqueCode: uniqueCode,
  990. DataId: fmt.Sprint(v.BaseFromMysteelChemicalIndexId),
  991. DataCode: v.IndexCode,
  992. DataName: v.IndexName,
  993. OriginalUserId: int32(v.SysUserId),
  994. OriginalUserName: v.SysUserRealName,
  995. NewUserId: int32(adminInfo.AdminId),
  996. NewUserName: adminInfo.RealName,
  997. CreateTime: time.Now(),
  998. })
  999. }
  1000. isMoveMysteelChemical = true
  1001. }
  1002. case 3: //ETA指标库
  1003. sourceStrList = append(sourceStrList, "ETA指标库")
  1004. edbInfoType := 0
  1005. tmpList, tmpErr := data_manage.GetEdbInfoListByUserId(oldUserIdList, edbInfoType)
  1006. if tmpErr != nil {
  1007. err = tmpErr
  1008. return
  1009. }
  1010. if len(tmpList) > 0 {
  1011. for _, v := range tmpList {
  1012. // 操作记录
  1013. dataPermissionMoveRecordList = append(dataPermissionMoveRecordList, &data_manage_permission.DataPermissionMoveRecord{
  1014. DataPermissionMoveRecordId: 0,
  1015. Source: int32(source),
  1016. SubSource: int32(edbInfoType),
  1017. OpUniqueCode: uniqueCode,
  1018. DataId: fmt.Sprint(v.EdbInfoId),
  1019. DataCode: v.EdbCode,
  1020. DataName: v.EdbName,
  1021. OriginalUserId: int32(v.SysUserId),
  1022. OriginalUserName: v.SysUserRealName,
  1023. NewUserId: int32(adminInfo.AdminId),
  1024. NewUserName: adminInfo.RealName,
  1025. CreateTime: time.Now(),
  1026. })
  1027. }
  1028. isMoveEdb = true
  1029. }
  1030. case 4: //ETA预测指标
  1031. sourceStrList = append(sourceStrList, "ETA预测指标")
  1032. edbInfoType := 1
  1033. tmpList, tmpErr := data_manage.GetEdbInfoListByUserId(oldUserIdList, edbInfoType)
  1034. if tmpErr != nil {
  1035. err = tmpErr
  1036. return
  1037. }
  1038. if len(tmpList) > 0 {
  1039. for _, v := range tmpList {
  1040. // 操作记录
  1041. dataPermissionMoveRecordList = append(dataPermissionMoveRecordList, &data_manage_permission.DataPermissionMoveRecord{
  1042. DataPermissionMoveRecordId: 0,
  1043. Source: int32(source),
  1044. SubSource: int32(edbInfoType),
  1045. OpUniqueCode: uniqueCode,
  1046. DataId: fmt.Sprint(v.EdbInfoId),
  1047. DataCode: v.EdbCode,
  1048. DataName: v.EdbName,
  1049. OriginalUserId: int32(v.SysUserId),
  1050. OriginalUserName: v.SysUserRealName,
  1051. NewUserId: int32(adminInfo.AdminId),
  1052. NewUserName: adminInfo.RealName,
  1053. CreateTime: time.Now(),
  1054. })
  1055. }
  1056. isMovePredictEdb = true
  1057. }
  1058. case 5: //ETA图库
  1059. sourceStrList = append(sourceStrList, "ETA图库")
  1060. // 只展示eta图库
  1061. subSource := utils.CHART_SOURCE_DEFAULT
  1062. tmpList, tmpErr := data_manage.GetChartInfoListByUserId(oldUserIdList, subSource)
  1063. if tmpErr != nil {
  1064. err = tmpErr
  1065. return
  1066. }
  1067. if len(tmpList) > 0 {
  1068. for _, v := range tmpList {
  1069. // 操作记录
  1070. dataPermissionMoveRecordList = append(dataPermissionMoveRecordList, &data_manage_permission.DataPermissionMoveRecord{
  1071. DataPermissionMoveRecordId: 0,
  1072. Source: int32(source),
  1073. SubSource: int32(subSource),
  1074. OpUniqueCode: uniqueCode,
  1075. DataId: fmt.Sprint(v.ChartInfoId),
  1076. DataCode: fmt.Sprint(v.ChartInfoId),
  1077. DataName: v.ChartName,
  1078. OriginalUserId: int32(v.SysUserId),
  1079. OriginalUserName: v.SysUserRealName,
  1080. NewUserId: int32(adminInfo.AdminId),
  1081. NewUserName: adminInfo.RealName,
  1082. CreateTime: time.Now(),
  1083. })
  1084. }
  1085. isMoveChart = true
  1086. }
  1087. case 6: // ETA表格
  1088. sourceStrList = append(sourceStrList, "ETA表格")
  1089. tmpList, tmpErr := excel.GetNoContentExcelListByUserId(oldUserIdList)
  1090. if tmpErr != nil {
  1091. err = tmpErr
  1092. return
  1093. }
  1094. if len(tmpList) > 0 {
  1095. for _, v := range tmpList {
  1096. // 操作记录
  1097. dataPermissionMoveRecordList = append(dataPermissionMoveRecordList, &data_manage_permission.DataPermissionMoveRecord{
  1098. DataPermissionMoveRecordId: 0,
  1099. Source: int32(source),
  1100. SubSource: int32(v.Source),
  1101. OpUniqueCode: uniqueCode,
  1102. DataId: fmt.Sprint(v.ExcelInfoId),
  1103. DataCode: fmt.Sprint(v.ExcelInfoId),
  1104. DataName: v.ExcelName,
  1105. OriginalUserId: int32(v.SysUserId),
  1106. OriginalUserName: v.SysUserRealName,
  1107. NewUserId: int32(adminInfo.AdminId),
  1108. NewUserName: adminInfo.RealName,
  1109. CreateTime: time.Now(),
  1110. })
  1111. }
  1112. isMoveExcel = true
  1113. }
  1114. default:
  1115. }
  1116. }
  1117. // 修改创建人
  1118. err = data_manage_permission.ModifyDataUserIdByOldUserId(oldUserIdList, adminInfo.AdminId, adminInfo.RealName, isMoveManual, isMoveMysteelChemical, isMoveEdb, isMovePredictEdb, isMoveChart, isMoveExcel)
  1119. // 转移失败了那么就直接返回了
  1120. if err != nil {
  1121. return
  1122. }
  1123. // 添加资产转移的记录
  1124. content += fmt.Sprintf("(%s)", strings.Join(sourceStrList, ","))
  1125. dataPermissionMessage := &data_manage_permission.DataPermissionMessage{
  1126. DataPermissionMessageId: 0,
  1127. SendUserId: int32(opUserId),
  1128. ReceiveUserId: int32(adminInfo.AdminId),
  1129. Content: content,
  1130. Remark: content,
  1131. OpType: 1,
  1132. OpUniqueCode: uniqueCode,
  1133. IsRead: 0,
  1134. CreateTime: time.Now(),
  1135. ModifyTime: time.Now(),
  1136. }
  1137. tmpErr := data_manage_permission.AddDataPermissionMoveRecord(dataPermissionMoveRecordList, dataPermissionMessage)
  1138. // 失败的话,日志记录
  1139. if tmpErr != nil {
  1140. // 序列化结构体为 JSON 数据
  1141. recordListJsonBytes, tmpErr2 := json.Marshal(dataPermissionMoveRecordList)
  1142. if tmpErr2 != nil {
  1143. utils.FileLog.Error(fmt.Sprintf("添加资产转移的记录失败:%s;list转json失败:;操作记录:%+v;消息记录:%+v", tmpErr.Error(), dataPermissionMoveRecordList, dataPermissionMessage))
  1144. return
  1145. }
  1146. // 序列化结构体为 JSON 数据
  1147. messageJsonBytes, tmpErr2 := json.Marshal(dataPermissionMessage)
  1148. if tmpErr2 != nil {
  1149. utils.FileLog.Error(fmt.Sprintf("添加资产转移的记录失败:%s;message转json失败:;操作记录:%+v;消息记录:%+v", tmpErr.Error(), dataPermissionMoveRecordList, dataPermissionMessage))
  1150. return
  1151. }
  1152. utils.FileLog.Error(fmt.Sprintf("添加资产转移的记录失败:%s;操作记录:%s;消息记录:%s", tmpErr.Error(), string(recordListJsonBytes), string(messageJsonBytes)))
  1153. }
  1154. return
  1155. }
  1156. // GetMoveEdbChartCount 获取待转移的指标/图表列表
  1157. // @param source 来源 :1:手工数据指标 2:钢联化工数据库 3:ETA指标库 4:ETA预测指标 5:图库 6:ETA表格
  1158. func GetMoveEdbChartCount(userId int) (sourceMap map[int]int, err error) {
  1159. sourceMap = make(map[int]int)
  1160. {
  1161. // 手工数据指标
  1162. var condition string
  1163. var pars []interface{}
  1164. if userId > 0 {
  1165. condition += ` AND a.user_id = ? `
  1166. pars = append(pars, userId)
  1167. }
  1168. total, tmpErr := models.GetEdbinfoListCount(condition, pars, "", 0)
  1169. if tmpErr != nil {
  1170. err = tmpErr
  1171. return
  1172. }
  1173. sourceMap[1] = total
  1174. }
  1175. {
  1176. // 钢联化工数据库
  1177. var condition string
  1178. var pars []interface{}
  1179. if userId > 0 {
  1180. condition += ` AND sys_user_id = ? `
  1181. pars = append(pars, userId)
  1182. }
  1183. total, tmpErr := data_manage.GetMysteelChemicalIndexCount(condition, pars)
  1184. if tmpErr != nil {
  1185. err = tmpErr
  1186. return
  1187. }
  1188. sourceMap[2] = total
  1189. }
  1190. {
  1191. // 钢联化工数据库
  1192. var condition string
  1193. var pars []interface{}
  1194. if userId > 0 {
  1195. condition += ` AND sys_user_id = ? `
  1196. pars = append(pars, userId)
  1197. }
  1198. total, tmpErr := data_manage.GetMysteelChemicalIndexCount(condition, pars)
  1199. if tmpErr != nil {
  1200. err = tmpErr
  1201. return
  1202. }
  1203. sourceMap[2] = total
  1204. }
  1205. {
  1206. // ETA指标库
  1207. var condition string
  1208. var pars []interface{}
  1209. if userId > 0 {
  1210. condition += ` AND sys_user_id = ? `
  1211. pars = append(pars, userId)
  1212. }
  1213. //ETA指标库
  1214. condition += ` AND edb_info_type = ? `
  1215. pars = append(pars, 0)
  1216. total, tmpErr := data_manage.GetEdbInfoByConditionCount(condition, pars)
  1217. if tmpErr != nil {
  1218. err = tmpErr
  1219. return
  1220. }
  1221. sourceMap[3] = total
  1222. }
  1223. {
  1224. // ETA预测指标库
  1225. var condition string
  1226. var pars []interface{}
  1227. if userId > 0 {
  1228. condition += ` AND sys_user_id = ? `
  1229. pars = append(pars, userId)
  1230. }
  1231. //ETA预测指标
  1232. condition += ` AND edb_info_type = ? `
  1233. pars = append(pars, 1)
  1234. total, tmpErr := data_manage.GetEdbInfoByConditionCount(condition, pars)
  1235. if tmpErr != nil {
  1236. err = tmpErr
  1237. return
  1238. }
  1239. sourceMap[4] = total
  1240. }
  1241. {
  1242. // 图库
  1243. var condition string
  1244. var pars []interface{}
  1245. if userId > 0 {
  1246. condition += ` AND sys_user_id = ? `
  1247. pars = append(pars, userId)
  1248. }
  1249. total, tmpErr := data_manage.GetChartInfoCountByCondition(condition, pars)
  1250. if tmpErr != nil {
  1251. err = tmpErr
  1252. return
  1253. }
  1254. sourceMap[5] = total
  1255. }
  1256. {
  1257. // ETA表格
  1258. var condition string
  1259. var pars []interface{}
  1260. if userId > 0 {
  1261. condition += ` AND sys_user_id = ? `
  1262. pars = append(pars, userId)
  1263. }
  1264. total, tmpErr := excel.GetExcelInfoCountByCondition(condition, pars)
  1265. if tmpErr != nil {
  1266. err = tmpErr
  1267. return
  1268. }
  1269. sourceMap[6] = total
  1270. }
  1271. return
  1272. }