data_move.go 45 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385
  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. NameEn: v.SecName,
  240. ClassifyNameEn: v.ClassifyName,
  241. CreateUserId: v.UserId,
  242. CreateUserName: adminMap[v.UserId],
  243. })
  244. }
  245. }
  246. case 2: //钢联化工数据库
  247. if keyword != `` {
  248. condition += " AND (index_name like ? OR index_code like ? OR sys_user_real_name like ? ) "
  249. pars = utils.GetLikeKeywordPars(pars, keyword, 3)
  250. }
  251. if userId > 0 {
  252. condition += ` AND sys_user_id = ? `
  253. pars = append(pars, userId)
  254. }
  255. if classify != "" {
  256. condition += ` AND base_from_mysteel_chemical_classify_id IN (` + classify + `) `
  257. }
  258. total, err = data_manage.GetMysteelChemicalIndexCount(condition, pars)
  259. if err != nil {
  260. return
  261. }
  262. tmpList, tmpErr := data_manage.GetMysteelChemicalIndexList(condition, pars, startSize, pageSize, "DESC")
  263. if tmpErr != nil {
  264. err = tmpErr
  265. return
  266. }
  267. for _, v := range tmpList {
  268. list = append(list, data_manage.MoveEdbChartList{
  269. DataId: strconv.Itoa(v.BaseFromMysteelChemicalIndexId),
  270. Code: v.IndexCode,
  271. Name: v.IndexName,
  272. NameEn: v.IndexName,
  273. //ClassifyName: v.,
  274. CreateUserId: v.SysUserId,
  275. CreateUserName: v.SysUserRealName,
  276. })
  277. }
  278. case 3, 4: //ETA指标库、ETA预测指标
  279. if keyword != `` {
  280. condition += " AND (edb_code like ? OR edb_name like ? OR edb_name_en like ? OR sys_user_real_name like ? ) "
  281. pars = utils.GetLikeKeywordPars(pars, keyword, 4)
  282. }
  283. if userId > 0 {
  284. condition += ` AND sys_user_id = ? `
  285. pars = append(pars, userId)
  286. }
  287. if classify != "" {
  288. condition += ` AND classify_id IN (` + classify + `) `
  289. }
  290. edbInfoType := 0 //ETA指标库
  291. if source == 4 { //ETA预测指标
  292. edbInfoType = 1
  293. }
  294. condition += ` AND edb_info_type = ? `
  295. pars = append(pars, edbInfoType)
  296. total, err = data_manage.GetEdbInfoByConditionCount(condition, pars)
  297. if err != nil {
  298. return
  299. }
  300. tmpList, tmpErr := data_manage.GetEdbInfoListByCondition(condition, pars, startSize, pageSize, "DESC")
  301. if tmpErr != nil {
  302. err = tmpErr
  303. return
  304. }
  305. for _, v := range tmpList {
  306. list = append(list, data_manage.MoveEdbChartList{
  307. DataId: strconv.Itoa(v.EdbInfoId),
  308. Code: v.EdbCode,
  309. Name: v.EdbName,
  310. NameEn: v.EdbNameEn,
  311. //ClassifyName: v.,
  312. CreateUserId: v.SysUserId,
  313. CreateUserName: v.SysUserRealName,
  314. })
  315. }
  316. case 5: //图库
  317. // 只展示eta图库
  318. condition += ` AND source = ? `
  319. pars = append(pars, utils.CHART_SOURCE_DEFAULT)
  320. // 关键字搜索
  321. if keyword != `` {
  322. condition += " AND (chart_name like ? or chart_name_en like ? OR sys_user_real_name like ? ) "
  323. pars = utils.GetLikeKeywordPars(pars, keyword, 3)
  324. }
  325. if userId > 0 {
  326. condition += ` AND sys_user_id = ? `
  327. pars = append(pars, userId)
  328. }
  329. if classify != "" {
  330. condition += ` AND chart_classify_id IN (` + classify + `) `
  331. }
  332. total, err = data_manage.GetChartInfoCountByCondition(condition, pars)
  333. if err != nil {
  334. return
  335. }
  336. tmpList, tmpErr := data_manage.GetChartInfoListByCondition(condition, pars, startSize, pageSize)
  337. if tmpErr != nil {
  338. err = tmpErr
  339. return
  340. }
  341. // 获取所有的图表分类
  342. firstClassifyList, tmpErr := data_manage.GetChartClassifyByParentId(0, 1)
  343. if tmpErr != nil {
  344. err = tmpErr
  345. return
  346. }
  347. firstClassifyNameMap := make(map[int]string)
  348. firstClassifyNameEnMap := make(map[int]string)
  349. for _, v := range firstClassifyList {
  350. firstClassifyNameMap[v.ChartClassifyId] = v.ChartClassifyName
  351. firstClassifyNameEnMap[v.ChartClassifyId] = v.ChartClassifyNameEn
  352. }
  353. secondClassList, tmpErr := data_manage.GetChartClassifyAll(1)
  354. if tmpErr != nil {
  355. err = tmpErr
  356. return
  357. }
  358. secondClassifyNameMap := make(map[int]string)
  359. secondClassifyNameEnMap := make(map[int]string)
  360. for _, v := range secondClassList {
  361. firstName := firstClassifyNameMap[v.ParentId]
  362. firstNameEn := firstClassifyNameEnMap[v.ParentId]
  363. if firstName != `` {
  364. firstName = firstName + " / "
  365. }
  366. if firstNameEn != `` {
  367. firstNameEn = firstNameEn + " / "
  368. }
  369. secondClassifyNameMap[v.ChartClassifyId] = firstName + v.ChartClassifyName
  370. secondClassifyNameEnMap[v.ChartClassifyId] = firstNameEn + v.ChartClassifyNameEn
  371. }
  372. for _, v := range tmpList {
  373. list = append(list, data_manage.MoveEdbChartList{
  374. DataId: strconv.Itoa(v.ChartInfoId),
  375. Name: v.ChartName,
  376. ClassifyName: secondClassifyNameMap[v.ChartClassifyId],
  377. NameEn: v.ChartNameEn,
  378. ClassifyNameEn: secondClassifyNameEnMap[v.ChartClassifyId],
  379. CreateUserId: v.SysUserId,
  380. CreateUserName: v.SysUserRealName,
  381. })
  382. }
  383. case 6: //ETA表格
  384. if keyword != `` {
  385. condition += " AND (excel_name like ? OR sys_user_real_name like ? ) "
  386. pars = utils.GetLikeKeywordPars(pars, keyword, 2)
  387. }
  388. if userId > 0 {
  389. condition += ` AND sys_user_id = ? `
  390. pars = append(pars, userId)
  391. }
  392. if classify != "" {
  393. condition += ` AND excel_classify_id IN (` + classify + `) `
  394. }
  395. condition += " AND source = ? "
  396. pars = append(pars, subSource)
  397. if subSource == utils.BALANCE_TABLE {
  398. condition += " AND parent_id = 0 AND balance_type = 0 "
  399. }
  400. total, err = excel.GetExcelInfoCountByCondition(condition, pars)
  401. if err != nil {
  402. return
  403. }
  404. tmpList, tmpErr := excel.GetNoContentExcelInfoListByCondition(condition, pars, startSize, pageSize)
  405. if tmpErr != nil {
  406. err = tmpErr
  407. return
  408. }
  409. // 获取所有的图表分类
  410. firstClassifyList, tmpErr := excel.GetExcelClassifyByParentId(0, subSource)
  411. if tmpErr != nil {
  412. err = tmpErr
  413. return
  414. }
  415. firstClassifyNameMap := make(map[int]string)
  416. for _, v := range firstClassifyList {
  417. firstClassifyNameMap[v.ExcelClassifyId] = v.ExcelClassifyName
  418. }
  419. secondClassList, tmpErr := excel.GetExcelClassifyBySource(subSource)
  420. if tmpErr != nil {
  421. err = tmpErr
  422. return
  423. }
  424. secondClassifyNameMap := make(map[int]string)
  425. for _, v := range secondClassList {
  426. firstName := firstClassifyNameMap[v.ParentId]
  427. if firstName != `` {
  428. firstName = firstName + " / "
  429. }
  430. secondClassifyNameMap[v.ExcelClassifyId] = firstName + v.ExcelClassifyName
  431. }
  432. for _, v := range tmpList {
  433. list = append(list, data_manage.MoveEdbChartList{
  434. DataId: strconv.Itoa(v.ExcelInfoId),
  435. Name: v.ExcelClassifyName,
  436. ClassifyName: secondClassifyNameMap[v.ExcelClassifyId],
  437. NameEn: v.ExcelClassifyName,
  438. ClassifyNameEn: secondClassifyNameMap[v.ExcelClassifyId],
  439. CreateUserId: v.SysUserId,
  440. CreateUserName: v.SysUserRealName,
  441. })
  442. }
  443. default:
  444. return
  445. }
  446. return
  447. }
  448. // MoveEdbChart 转移指标/图表创建人
  449. // @param source 来源 :1:手工数据指标 2:钢联化工数据库 3:ETA指标库 4:ETA预测指标 5:图库 6:ETA表格
  450. func MoveEdbChart(source, subSource, oldUserId, newUserId int, isSelectAll bool, dataId, noDataId []string, keyword, classify string, opUserId int) (err error, errMsg string) {
  451. adminInfo, err := system.GetSysAdminById(newUserId)
  452. if err != nil {
  453. return
  454. }
  455. // 如果勾选全部数据,那么
  456. if isSelectAll {
  457. // 找出不要的指标ID列表
  458. noDataIdMap := make(map[string]string, 0)
  459. for _, v := range noDataId {
  460. noDataIdMap[v] = v
  461. }
  462. // 需要转义的指标/图表ID列表
  463. dataId = make([]string, 0)
  464. // 获取所有指标/图表
  465. list, _, tmpErr := GetMoveEdbChartList(source, subSource, oldUserId, keyword, classify, 0, 100000)
  466. if tmpErr != nil {
  467. err = tmpErr
  468. return
  469. }
  470. for _, v := range list {
  471. if _, ok := noDataIdMap[v.DataId]; !ok {
  472. dataId = append(dataId, v.DataId)
  473. }
  474. }
  475. }
  476. // 操作记录
  477. dataPermissionMoveRecordList := make([]*data_manage_permission.DataPermissionMoveRecord, 0)
  478. uniqueCode := uuid.NewUUID().Hex32()
  479. title := `资产转移`
  480. content := `资产转入`
  481. switch source {
  482. case 1: //手工数据指标
  483. content += `(手工指标数据)`
  484. tmpList, tmpErr := models.GetEdbinfoListByCodeListByCodeIdList(dataId)
  485. if tmpErr != nil {
  486. err = tmpErr
  487. return
  488. }
  489. if len(tmpList) > 0 {
  490. for _, v := range tmpList {
  491. //if v.UserId == newUserId {
  492. // errMsg = "新创建人不可和原创建人一致"
  493. // err = errors.New(errMsg)
  494. // return
  495. //}
  496. // 操作记录
  497. dataPermissionMoveRecordList = append(dataPermissionMoveRecordList, &data_manage_permission.DataPermissionMoveRecord{
  498. DataPermissionMoveRecordId: 0,
  499. Source: int32(source),
  500. SubSource: int32(subSource),
  501. OpUniqueCode: uniqueCode,
  502. DataId: v.TradeCode,
  503. DataCode: v.TradeCode,
  504. DataName: v.SecName,
  505. OriginalUserId: int32(v.UserId),
  506. OriginalUserName: v.UserName,
  507. NewUserId: int32(adminInfo.AdminId),
  508. NewUserName: adminInfo.RealName,
  509. CreateTime: time.Now(),
  510. })
  511. }
  512. // 修改创建人
  513. err = models.ModifyEdbinfoUserIdByCodeList(dataId, newUserId)
  514. }
  515. case 2: //钢联化工数据库
  516. content += `(钢联化工数据库)`
  517. tmpList, tmpErr := data_manage.GetMysteelChemicalIndexListByIndexId(dataId)
  518. if tmpErr != nil {
  519. err = tmpErr
  520. return
  521. }
  522. if len(tmpList) > 0 {
  523. for _, v := range tmpList {
  524. //if v.SysUserId == newUserId {
  525. // errMsg = "新创建人不可和原创建人一致"
  526. // err = errors.New(errMsg)
  527. // return
  528. //}
  529. // 操作记录
  530. dataPermissionMoveRecordList = append(dataPermissionMoveRecordList, &data_manage_permission.DataPermissionMoveRecord{
  531. DataPermissionMoveRecordId: 0,
  532. Source: int32(source),
  533. SubSource: int32(subSource),
  534. OpUniqueCode: uniqueCode,
  535. DataId: fmt.Sprint(v.BaseFromMysteelChemicalIndexId),
  536. DataCode: v.IndexCode,
  537. DataName: v.IndexName,
  538. OriginalUserId: int32(v.SysUserId),
  539. OriginalUserName: v.SysUserRealName,
  540. NewUserId: int32(adminInfo.AdminId),
  541. NewUserName: adminInfo.RealName,
  542. CreateTime: time.Now(),
  543. })
  544. }
  545. // 修改创建人
  546. err = data_manage.ModifyMysteelChemicalIndexUserIdByCodeList(dataId, adminInfo.AdminId, adminInfo.RealName)
  547. }
  548. case 3, 4: //ETA指标库、ETA预测指标
  549. if source == 3 {
  550. content += `(ETA指标库)`
  551. } else {
  552. content += `(ETA预测指标)`
  553. }
  554. tmpList, tmpErr := data_manage.GetEdbInfoListByEdbInfoId(dataId)
  555. if tmpErr != nil {
  556. err = tmpErr
  557. return
  558. }
  559. if len(tmpList) > 0 {
  560. for _, v := range tmpList {
  561. //if v.SysUserId == newUserId {
  562. // errMsg = "新创建人不可和原创建人一致"
  563. // err = errors.New(errMsg)
  564. // return
  565. //}
  566. // 操作记录
  567. dataPermissionMoveRecordList = append(dataPermissionMoveRecordList, &data_manage_permission.DataPermissionMoveRecord{
  568. DataPermissionMoveRecordId: 0,
  569. Source: int32(source),
  570. SubSource: int32(subSource),
  571. OpUniqueCode: uniqueCode,
  572. DataId: fmt.Sprint(v.EdbInfoId),
  573. DataCode: v.EdbCode,
  574. DataName: v.EdbName,
  575. OriginalUserId: int32(v.SysUserId),
  576. OriginalUserName: v.SysUserRealName,
  577. NewUserId: int32(adminInfo.AdminId),
  578. NewUserName: adminInfo.RealName,
  579. CreateTime: time.Now(),
  580. })
  581. }
  582. // 修改创建人
  583. err = data_manage.ModifyEdbInfoUserIdByCodeList(dataId, adminInfo.AdminId, adminInfo.RealName)
  584. // 移除当前用户的不可操作权限
  585. {
  586. obj := data_manage.EdbInfoNoPermissionAdmin{}
  587. for _, v := range dataId {
  588. edbInfoId, _ := strconv.Atoi(v)
  589. go obj.DeleteByEdbInfoIdAndAdminId(edbInfoId, adminInfo.AdminId)
  590. }
  591. }
  592. }
  593. case 5: //图库
  594. content += `(ETA图库)`
  595. // 只展示eta图库
  596. subSource = utils.CHART_SOURCE_DEFAULT
  597. tmpList, tmpErr := data_manage.GetChartInfoListByChartIdList(dataId)
  598. if tmpErr != nil {
  599. err = tmpErr
  600. return
  601. }
  602. if len(tmpList) > 0 {
  603. for _, v := range tmpList {
  604. //if v.SysUserId == newUserId {
  605. // errMsg = "新创建人不可和原创建人一致"
  606. // err = errors.New(errMsg)
  607. // return
  608. //}
  609. // 操作记录
  610. dataPermissionMoveRecordList = append(dataPermissionMoveRecordList, &data_manage_permission.DataPermissionMoveRecord{
  611. DataPermissionMoveRecordId: 0,
  612. Source: int32(source),
  613. SubSource: int32(subSource),
  614. OpUniqueCode: uniqueCode,
  615. DataId: fmt.Sprint(v.ChartInfoId),
  616. DataCode: fmt.Sprint(v.ChartInfoId),
  617. DataName: v.ChartName,
  618. OriginalUserId: int32(v.SysUserId),
  619. OriginalUserName: v.SysUserRealName,
  620. NewUserId: int32(adminInfo.AdminId),
  621. NewUserName: adminInfo.RealName,
  622. CreateTime: time.Now(),
  623. })
  624. }
  625. // 修改创建人
  626. err = data_manage.ModifyChartInfoUserIdByCodeList(dataId, adminInfo.AdminId, adminInfo.RealName)
  627. }
  628. case 6: // ETA表格
  629. content += `(ETA表格)`
  630. tmpList, tmpErr := excel.GetNoContentExcelListByExcelInfoIdList(dataId)
  631. if tmpErr != nil {
  632. err = tmpErr
  633. return
  634. }
  635. if len(tmpList) > 0 {
  636. for _, v := range tmpList {
  637. //if v.SysUserId == newUserId {
  638. // errMsg = "新创建人不可和原创建人一致"
  639. // err = errors.New(errMsg)
  640. // return
  641. //}
  642. // 操作记录
  643. dataPermissionMoveRecordList = append(dataPermissionMoveRecordList, &data_manage_permission.DataPermissionMoveRecord{
  644. DataPermissionMoveRecordId: 0,
  645. Source: int32(source),
  646. SubSource: int32(subSource),
  647. OpUniqueCode: uniqueCode,
  648. DataId: fmt.Sprint(v.ExcelInfoId),
  649. DataCode: fmt.Sprint(v.ExcelInfoId),
  650. DataName: v.ExcelName,
  651. OriginalUserId: int32(v.SysUserId),
  652. OriginalUserName: v.SysUserRealName,
  653. NewUserId: int32(adminInfo.AdminId),
  654. NewUserName: adminInfo.RealName,
  655. CreateTime: time.Now(),
  656. })
  657. }
  658. // 修改创建人
  659. err = excel.ModifyExcelInfoUserIdByCodeList(dataId, adminInfo.AdminId, adminInfo.RealName)
  660. }
  661. default:
  662. return
  663. }
  664. // 转移失败了那么就直接返回了
  665. if err != nil {
  666. return
  667. }
  668. // 添加资产转移的记录
  669. dataPermissionMessage := &data_manage_permission.DataPermissionMessage{
  670. DataPermissionMessageId: 0,
  671. SendUserId: int32(opUserId),
  672. ReceiveUserId: int32(adminInfo.AdminId),
  673. Content: title,
  674. Remark: content,
  675. OpType: 1,
  676. Source: int32(source),
  677. SubSource: int32(subSource),
  678. OpUniqueCode: uniqueCode,
  679. IsRead: 0,
  680. CreateTime: time.Now(),
  681. ModifyTime: time.Now(),
  682. }
  683. tmpErr := data_manage_permission.AddDataPermissionMoveRecord(dataPermissionMoveRecordList, dataPermissionMessage)
  684. // 失败的话,日志记录
  685. if tmpErr != nil {
  686. // 序列化结构体为 JSON 数据
  687. recordListJsonBytes, tmpErr2 := json.Marshal(dataPermissionMoveRecordList)
  688. if tmpErr2 != nil {
  689. utils.FileLog.Error(fmt.Sprintf("添加资产转移的记录失败:%s;list转json失败:;操作记录:%+v;消息记录:%+v", tmpErr.Error(), dataPermissionMoveRecordList, dataPermissionMessage))
  690. return
  691. }
  692. // 序列化结构体为 JSON 数据
  693. messageJsonBytes, tmpErr2 := json.Marshal(dataPermissionMessage)
  694. if tmpErr2 != nil {
  695. utils.FileLog.Error(fmt.Sprintf("添加资产转移的记录失败:%s;message转json失败:;操作记录:%+v;消息记录:%+v", tmpErr.Error(), dataPermissionMoveRecordList, dataPermissionMessage))
  696. return
  697. }
  698. utils.FileLog.Error(fmt.Sprintf("添加资产转移的记录失败:%s;操作记录:%s;消息记录:%s", tmpErr.Error(), string(recordListJsonBytes), string(messageJsonBytes)))
  699. }
  700. return
  701. }
  702. // MoveAllEdbChartOld
  703. // @Description: 通过原创建人转移指标/图表创建人
  704. // @author: Roc
  705. // @datetime 2024-03-26 15:11:12
  706. // @param sourceList []int 1:手工数据指标 2:钢联化工数据库 3:ETA指标库 4:ETA预测指标 5:图库 6:ETA表格
  707. // @param oldUserId []int
  708. // @param userId int
  709. // @param opUserId int
  710. // @return err error
  711. // @return errMsg string
  712. func MoveAllEdbChartOld(sourceList, oldUserIdList []int, userId, opUserId int) (err error, errMsg string) {
  713. adminInfo, err := system.GetSysAdminById(userId)
  714. if err != nil {
  715. return
  716. }
  717. // 操作记录
  718. dataPermissionMoveRecordList := make([]*data_manage_permission.DataPermissionMoveRecord, 0)
  719. uniqueCode := uuid.NewUUID().Hex32()
  720. title := `资产转移`
  721. content := `资产转入`
  722. sourceStrList := make([]string, 0)
  723. for _, source := range sourceList {
  724. switch source {
  725. case 1: //手工数据指标
  726. sourceStrList = append(sourceStrList, "手工指标数据")
  727. tmpList, tmpErr := models.GetEdbinfoListByCodeListByUserId(oldUserIdList)
  728. if tmpErr != nil {
  729. err = tmpErr
  730. return
  731. }
  732. if len(tmpList) > 0 {
  733. for _, v := range tmpList {
  734. // 操作记录
  735. dataPermissionMoveRecordList = append(dataPermissionMoveRecordList, &data_manage_permission.DataPermissionMoveRecord{
  736. DataPermissionMoveRecordId: 0,
  737. Source: int32(source),
  738. SubSource: 0,
  739. OpUniqueCode: uniqueCode,
  740. DataId: v.TradeCode,
  741. DataCode: v.TradeCode,
  742. DataName: v.SecName,
  743. OriginalUserId: int32(v.UserId),
  744. OriginalUserName: v.UserName,
  745. NewUserId: int32(adminInfo.AdminId),
  746. NewUserName: adminInfo.RealName,
  747. CreateTime: time.Now(),
  748. })
  749. }
  750. // 修改创建人
  751. err = models.ModifyEdbinfoUserIdByOldUserId(oldUserIdList, userId)
  752. }
  753. case 2: //钢联化工数据库
  754. sourceStrList = append(sourceStrList, "钢联化工数据库")
  755. tmpList, tmpErr := data_manage.GetMysteelChemicalIndexListByUserId(oldUserIdList)
  756. if tmpErr != nil {
  757. err = tmpErr
  758. return
  759. }
  760. if len(tmpList) > 0 {
  761. for _, v := range tmpList {
  762. //if v.SysUserId == newUserId {
  763. // errMsg = "新创建人不可和原创建人一致"
  764. // err = errors.New(errMsg)
  765. // return
  766. //}
  767. // 操作记录
  768. dataPermissionMoveRecordList = append(dataPermissionMoveRecordList, &data_manage_permission.DataPermissionMoveRecord{
  769. DataPermissionMoveRecordId: 0,
  770. Source: int32(source),
  771. SubSource: 0,
  772. OpUniqueCode: uniqueCode,
  773. DataId: fmt.Sprint(v.BaseFromMysteelChemicalIndexId),
  774. DataCode: v.IndexCode,
  775. DataName: v.IndexName,
  776. OriginalUserId: int32(v.SysUserId),
  777. OriginalUserName: v.SysUserRealName,
  778. NewUserId: int32(adminInfo.AdminId),
  779. NewUserName: adminInfo.RealName,
  780. CreateTime: time.Now(),
  781. })
  782. }
  783. // 修改创建人
  784. err = data_manage.ModifyMysteelChemicalIndexUserIdByOldUserId(oldUserIdList, adminInfo.AdminId, adminInfo.RealName)
  785. }
  786. case 3: //ETA指标库
  787. sourceStrList = append(sourceStrList, "ETA指标库")
  788. edbInfoType := 0
  789. tmpList, tmpErr := data_manage.GetEdbInfoListByUserId(oldUserIdList, edbInfoType)
  790. if tmpErr != nil {
  791. err = tmpErr
  792. return
  793. }
  794. if len(tmpList) > 0 {
  795. for _, v := range tmpList {
  796. // 操作记录
  797. dataPermissionMoveRecordList = append(dataPermissionMoveRecordList, &data_manage_permission.DataPermissionMoveRecord{
  798. DataPermissionMoveRecordId: 0,
  799. Source: int32(source),
  800. SubSource: int32(edbInfoType),
  801. OpUniqueCode: uniqueCode,
  802. DataId: fmt.Sprint(v.EdbInfoId),
  803. DataCode: v.EdbCode,
  804. DataName: v.EdbName,
  805. OriginalUserId: int32(v.SysUserId),
  806. OriginalUserName: v.SysUserRealName,
  807. NewUserId: int32(adminInfo.AdminId),
  808. NewUserName: adminInfo.RealName,
  809. CreateTime: time.Now(),
  810. })
  811. }
  812. // 修改创建人
  813. err = data_manage.ModifyEdbInfoUserIdByOldUserId(oldUserIdList, edbInfoType, adminInfo.AdminId, adminInfo.RealName)
  814. }
  815. case 4: //ETA预测指标
  816. sourceStrList = append(sourceStrList, "ETA预测指标")
  817. edbInfoType := 1
  818. tmpList, tmpErr := data_manage.GetEdbInfoListByUserId(oldUserIdList, edbInfoType)
  819. if tmpErr != nil {
  820. err = tmpErr
  821. return
  822. }
  823. if len(tmpList) > 0 {
  824. for _, v := range tmpList {
  825. // 操作记录
  826. dataPermissionMoveRecordList = append(dataPermissionMoveRecordList, &data_manage_permission.DataPermissionMoveRecord{
  827. DataPermissionMoveRecordId: 0,
  828. Source: int32(source),
  829. SubSource: int32(edbInfoType),
  830. OpUniqueCode: uniqueCode,
  831. DataId: fmt.Sprint(v.EdbInfoId),
  832. DataCode: v.EdbCode,
  833. DataName: v.EdbName,
  834. OriginalUserId: int32(v.SysUserId),
  835. OriginalUserName: v.SysUserRealName,
  836. NewUserId: int32(adminInfo.AdminId),
  837. NewUserName: adminInfo.RealName,
  838. CreateTime: time.Now(),
  839. })
  840. }
  841. // 修改创建人
  842. err = data_manage.ModifyEdbInfoUserIdByOldUserId(oldUserIdList, edbInfoType, adminInfo.AdminId, adminInfo.RealName)
  843. }
  844. case 5: //ETA图库
  845. sourceStrList = append(sourceStrList, "ETA图库")
  846. // 只展示eta图库
  847. subSource := utils.CHART_SOURCE_DEFAULT
  848. tmpList, tmpErr := data_manage.GetChartInfoListByUserId(oldUserIdList, subSource)
  849. if tmpErr != nil {
  850. err = tmpErr
  851. return
  852. }
  853. if len(tmpList) > 0 {
  854. for _, v := range tmpList {
  855. // 操作记录
  856. dataPermissionMoveRecordList = append(dataPermissionMoveRecordList, &data_manage_permission.DataPermissionMoveRecord{
  857. DataPermissionMoveRecordId: 0,
  858. Source: int32(source),
  859. SubSource: int32(subSource),
  860. OpUniqueCode: uniqueCode,
  861. DataId: fmt.Sprint(v.ChartInfoId),
  862. DataCode: fmt.Sprint(v.ChartInfoId),
  863. DataName: v.ChartName,
  864. OriginalUserId: int32(v.SysUserId),
  865. OriginalUserName: v.SysUserRealName,
  866. NewUserId: int32(adminInfo.AdminId),
  867. NewUserName: adminInfo.RealName,
  868. CreateTime: time.Now(),
  869. })
  870. }
  871. // 修改创建人
  872. err = data_manage.ModifyChartInfoUserIdByOldUserId(oldUserIdList, adminInfo.AdminId, adminInfo.RealName)
  873. }
  874. case 6: // ETA表格
  875. sourceStrList = append(sourceStrList, "ETA表格")
  876. tmpList, tmpErr := excel.GetNoContentExcelListByUserId(oldUserIdList)
  877. if tmpErr != nil {
  878. err = tmpErr
  879. return
  880. }
  881. if len(tmpList) > 0 {
  882. for _, v := range tmpList {
  883. // 操作记录
  884. dataPermissionMoveRecordList = append(dataPermissionMoveRecordList, &data_manage_permission.DataPermissionMoveRecord{
  885. DataPermissionMoveRecordId: 0,
  886. Source: int32(source),
  887. SubSource: int32(v.Source),
  888. OpUniqueCode: uniqueCode,
  889. DataId: fmt.Sprint(v.ExcelInfoId),
  890. DataCode: fmt.Sprint(v.ExcelInfoId),
  891. DataName: v.ExcelName,
  892. OriginalUserId: int32(v.SysUserId),
  893. OriginalUserName: v.SysUserRealName,
  894. NewUserId: int32(adminInfo.AdminId),
  895. NewUserName: adminInfo.RealName,
  896. CreateTime: time.Now(),
  897. })
  898. }
  899. // 修改创建人
  900. err = excel.ModifyExcelInfoUserIdByOldUserId(oldUserIdList, adminInfo.AdminId, adminInfo.RealName)
  901. }
  902. default:
  903. }
  904. // 转移失败了那么就直接返回了
  905. if err != nil {
  906. return
  907. }
  908. }
  909. content += fmt.Sprintf("(%s)", strings.Join(sourceStrList, ","))
  910. // 添加资产转移的记录
  911. dataPermissionMessage := &data_manage_permission.DataPermissionMessage{
  912. DataPermissionMessageId: 0,
  913. SendUserId: int32(opUserId),
  914. ReceiveUserId: int32(adminInfo.AdminId),
  915. Content: title,
  916. Remark: content,
  917. OpType: 2,
  918. OpUniqueCode: uniqueCode,
  919. IsRead: 0,
  920. CreateTime: time.Now(),
  921. ModifyTime: time.Now(),
  922. }
  923. tmpErr := data_manage_permission.AddDataPermissionMoveRecord(dataPermissionMoveRecordList, dataPermissionMessage)
  924. // 失败的话,日志记录
  925. if tmpErr != nil {
  926. // 序列化结构体为 JSON 数据
  927. recordListJsonBytes, tmpErr2 := json.Marshal(dataPermissionMoveRecordList)
  928. if tmpErr2 != nil {
  929. utils.FileLog.Error(fmt.Sprintf("添加资产转移的记录失败:%s;list转json失败:;操作记录:%+v;消息记录:%+v", tmpErr.Error(), dataPermissionMoveRecordList, dataPermissionMessage))
  930. return
  931. }
  932. // 序列化结构体为 JSON 数据
  933. messageJsonBytes, tmpErr2 := json.Marshal(dataPermissionMessage)
  934. if tmpErr2 != nil {
  935. utils.FileLog.Error(fmt.Sprintf("添加资产转移的记录失败:%s;message转json失败:;操作记录:%+v;消息记录:%+v", tmpErr.Error(), dataPermissionMoveRecordList, dataPermissionMessage))
  936. return
  937. }
  938. utils.FileLog.Error(fmt.Sprintf("添加资产转移的记录失败:%s;操作记录:%s;消息记录:%s", tmpErr.Error(), string(recordListJsonBytes), string(messageJsonBytes)))
  939. }
  940. return
  941. }
  942. // MoveAllEdbChart
  943. // @Description: 通过原创建人转移指标/图表创建人
  944. // @author: Roc
  945. // @datetime 2024-03-26 15:11:12
  946. // @param sourceList []int 1:手工数据指标 2:钢联化工数据库 3:ETA指标库 4:ETA预测指标 5:图库 6:ETA表格
  947. // @param oldUserId []int
  948. // @param userId int
  949. // @param opUserId int
  950. // @return err error
  951. // @return errMsg string
  952. func MoveAllEdbChart(sourceList, oldUserIdList []int, userId, opUserId int) (err error, errMsg string) {
  953. adminInfo, err := system.GetSysAdminById(userId)
  954. if err != nil {
  955. return
  956. }
  957. // 操作记录
  958. dataPermissionMoveRecordList := make([]*data_manage_permission.DataPermissionMoveRecord, 0)
  959. uniqueCode := uuid.NewUUID().Hex32()
  960. title := `资产转移`
  961. content := `资产转入`
  962. sourceStrList := make([]string, 0)
  963. var isMoveManual, isMoveMysteelChemical, isMoveEdb, isMovePredictEdb, isMoveChart, isMoveExcel bool
  964. // 遍历需要转移的模块,1:手工数据指标 2:钢联化工数据库 3:ETA指标库 4:ETA预测指标 5:图库 6:ETA表格,并找出当前需要转移的资产
  965. for _, source := range sourceList {
  966. switch source {
  967. case 1: //手工数据指标
  968. sourceStrList = append(sourceStrList, "手工指标数据")
  969. tmpList, tmpErr := models.GetEdbinfoListByCodeListByUserId(oldUserIdList)
  970. if tmpErr != nil {
  971. err = tmpErr
  972. return
  973. }
  974. if len(tmpList) > 0 {
  975. for _, v := range tmpList {
  976. // 操作记录
  977. dataPermissionMoveRecordList = append(dataPermissionMoveRecordList, &data_manage_permission.DataPermissionMoveRecord{
  978. DataPermissionMoveRecordId: 0,
  979. Source: int32(source),
  980. SubSource: 0,
  981. OpUniqueCode: uniqueCode,
  982. DataId: v.TradeCode,
  983. DataCode: v.TradeCode,
  984. DataName: v.SecName,
  985. OriginalUserId: int32(v.UserId),
  986. OriginalUserName: v.UserName,
  987. NewUserId: int32(adminInfo.AdminId),
  988. NewUserName: adminInfo.RealName,
  989. CreateTime: time.Now(),
  990. })
  991. }
  992. isMoveManual = true
  993. }
  994. case 2: //钢联化工数据库
  995. sourceStrList = append(sourceStrList, "钢联化工数据库")
  996. tmpList, tmpErr := data_manage.GetMysteelChemicalIndexListByUserId(oldUserIdList)
  997. if tmpErr != nil {
  998. err = tmpErr
  999. return
  1000. }
  1001. if len(tmpList) > 0 {
  1002. for _, v := range tmpList {
  1003. //if v.SysUserId == newUserId {
  1004. // errMsg = "新创建人不可和原创建人一致"
  1005. // err = errors.New(errMsg)
  1006. // return
  1007. //}
  1008. // 操作记录
  1009. dataPermissionMoveRecordList = append(dataPermissionMoveRecordList, &data_manage_permission.DataPermissionMoveRecord{
  1010. DataPermissionMoveRecordId: 0,
  1011. Source: int32(source),
  1012. SubSource: 0,
  1013. OpUniqueCode: uniqueCode,
  1014. DataId: fmt.Sprint(v.BaseFromMysteelChemicalIndexId),
  1015. DataCode: v.IndexCode,
  1016. DataName: v.IndexName,
  1017. OriginalUserId: int32(v.SysUserId),
  1018. OriginalUserName: v.SysUserRealName,
  1019. NewUserId: int32(adminInfo.AdminId),
  1020. NewUserName: adminInfo.RealName,
  1021. CreateTime: time.Now(),
  1022. })
  1023. }
  1024. isMoveMysteelChemical = true
  1025. }
  1026. case 3: //ETA指标库
  1027. sourceStrList = append(sourceStrList, "ETA指标库")
  1028. edbInfoType := 0
  1029. tmpList, tmpErr := data_manage.GetEdbInfoListByUserId(oldUserIdList, edbInfoType)
  1030. if tmpErr != nil {
  1031. err = tmpErr
  1032. return
  1033. }
  1034. if len(tmpList) > 0 {
  1035. for _, v := range tmpList {
  1036. // 操作记录
  1037. dataPermissionMoveRecordList = append(dataPermissionMoveRecordList, &data_manage_permission.DataPermissionMoveRecord{
  1038. DataPermissionMoveRecordId: 0,
  1039. Source: int32(source),
  1040. SubSource: int32(edbInfoType),
  1041. OpUniqueCode: uniqueCode,
  1042. DataId: fmt.Sprint(v.EdbInfoId),
  1043. DataCode: v.EdbCode,
  1044. DataName: v.EdbName,
  1045. OriginalUserId: int32(v.SysUserId),
  1046. OriginalUserName: v.SysUserRealName,
  1047. NewUserId: int32(adminInfo.AdminId),
  1048. NewUserName: adminInfo.RealName,
  1049. CreateTime: time.Now(),
  1050. })
  1051. }
  1052. isMoveEdb = true
  1053. }
  1054. case 4: //ETA预测指标
  1055. sourceStrList = append(sourceStrList, "ETA预测指标")
  1056. edbInfoType := 1
  1057. tmpList, tmpErr := data_manage.GetEdbInfoListByUserId(oldUserIdList, edbInfoType)
  1058. if tmpErr != nil {
  1059. err = tmpErr
  1060. return
  1061. }
  1062. if len(tmpList) > 0 {
  1063. for _, v := range tmpList {
  1064. // 操作记录
  1065. dataPermissionMoveRecordList = append(dataPermissionMoveRecordList, &data_manage_permission.DataPermissionMoveRecord{
  1066. DataPermissionMoveRecordId: 0,
  1067. Source: int32(source),
  1068. SubSource: int32(edbInfoType),
  1069. OpUniqueCode: uniqueCode,
  1070. DataId: fmt.Sprint(v.EdbInfoId),
  1071. DataCode: v.EdbCode,
  1072. DataName: v.EdbName,
  1073. OriginalUserId: int32(v.SysUserId),
  1074. OriginalUserName: v.SysUserRealName,
  1075. NewUserId: int32(adminInfo.AdminId),
  1076. NewUserName: adminInfo.RealName,
  1077. CreateTime: time.Now(),
  1078. })
  1079. }
  1080. isMovePredictEdb = true
  1081. }
  1082. case 5: //ETA图库
  1083. sourceStrList = append(sourceStrList, "ETA图库")
  1084. // 只展示eta图库
  1085. subSource := utils.CHART_SOURCE_DEFAULT
  1086. tmpList, tmpErr := data_manage.GetChartInfoListByUserId(oldUserIdList, subSource)
  1087. if tmpErr != nil {
  1088. err = tmpErr
  1089. return
  1090. }
  1091. if len(tmpList) > 0 {
  1092. for _, v := range tmpList {
  1093. // 操作记录
  1094. dataPermissionMoveRecordList = append(dataPermissionMoveRecordList, &data_manage_permission.DataPermissionMoveRecord{
  1095. DataPermissionMoveRecordId: 0,
  1096. Source: int32(source),
  1097. SubSource: int32(subSource),
  1098. OpUniqueCode: uniqueCode,
  1099. DataId: fmt.Sprint(v.ChartInfoId),
  1100. DataCode: fmt.Sprint(v.ChartInfoId),
  1101. DataName: v.ChartName,
  1102. OriginalUserId: int32(v.SysUserId),
  1103. OriginalUserName: v.SysUserRealName,
  1104. NewUserId: int32(adminInfo.AdminId),
  1105. NewUserName: adminInfo.RealName,
  1106. CreateTime: time.Now(),
  1107. })
  1108. }
  1109. isMoveChart = true
  1110. }
  1111. case 6: // ETA表格
  1112. sourceStrList = append(sourceStrList, "ETA表格")
  1113. tmpList, tmpErr := excel.GetNoContentExcelListByUserId(oldUserIdList)
  1114. if tmpErr != nil {
  1115. err = tmpErr
  1116. return
  1117. }
  1118. if len(tmpList) > 0 {
  1119. for _, v := range tmpList {
  1120. // 操作记录
  1121. dataPermissionMoveRecordList = append(dataPermissionMoveRecordList, &data_manage_permission.DataPermissionMoveRecord{
  1122. DataPermissionMoveRecordId: 0,
  1123. Source: int32(source),
  1124. SubSource: int32(v.Source),
  1125. OpUniqueCode: uniqueCode,
  1126. DataId: fmt.Sprint(v.ExcelInfoId),
  1127. DataCode: fmt.Sprint(v.ExcelInfoId),
  1128. DataName: v.ExcelName,
  1129. OriginalUserId: int32(v.SysUserId),
  1130. OriginalUserName: v.SysUserRealName,
  1131. NewUserId: int32(adminInfo.AdminId),
  1132. NewUserName: adminInfo.RealName,
  1133. CreateTime: time.Now(),
  1134. })
  1135. }
  1136. isMoveExcel = true
  1137. }
  1138. default:
  1139. }
  1140. }
  1141. // 修改创建人
  1142. err = data_manage_permission.ModifyDataUserIdByOldUserId(oldUserIdList, adminInfo.AdminId, adminInfo.RealName, isMoveManual, isMoveMysteelChemical, isMoveEdb, isMovePredictEdb, isMoveChart, isMoveExcel)
  1143. // 转移失败了那么就直接返回了
  1144. if err != nil {
  1145. return
  1146. }
  1147. // 添加资产转移的记录
  1148. content += fmt.Sprintf("(%s)", strings.Join(sourceStrList, ","))
  1149. dataPermissionMessage := &data_manage_permission.DataPermissionMessage{
  1150. DataPermissionMessageId: 0,
  1151. SendUserId: int32(opUserId),
  1152. ReceiveUserId: int32(adminInfo.AdminId),
  1153. Content: title,
  1154. Remark: content,
  1155. OpType: 2,
  1156. OpUniqueCode: uniqueCode,
  1157. IsRead: 0,
  1158. CreateTime: time.Now(),
  1159. ModifyTime: time.Now(),
  1160. }
  1161. tmpErr := data_manage_permission.AddDataPermissionMoveRecord(dataPermissionMoveRecordList, dataPermissionMessage)
  1162. // 失败的话,日志记录
  1163. if tmpErr != nil {
  1164. // 序列化结构体为 JSON 数据
  1165. recordListJsonBytes, tmpErr2 := json.Marshal(dataPermissionMoveRecordList)
  1166. if tmpErr2 != nil {
  1167. utils.FileLog.Error(fmt.Sprintf("添加资产转移的记录失败:%s;list转json失败:;操作记录:%+v;消息记录:%+v", tmpErr.Error(), dataPermissionMoveRecordList, dataPermissionMessage))
  1168. return
  1169. }
  1170. // 序列化结构体为 JSON 数据
  1171. messageJsonBytes, tmpErr2 := json.Marshal(dataPermissionMessage)
  1172. if tmpErr2 != nil {
  1173. utils.FileLog.Error(fmt.Sprintf("添加资产转移的记录失败:%s;message转json失败:;操作记录:%+v;消息记录:%+v", tmpErr.Error(), dataPermissionMoveRecordList, dataPermissionMessage))
  1174. return
  1175. }
  1176. utils.FileLog.Error(fmt.Sprintf("添加资产转移的记录失败:%s;操作记录:%s;消息记录:%s", tmpErr.Error(), string(recordListJsonBytes), string(messageJsonBytes)))
  1177. }
  1178. return
  1179. }
  1180. // GetMoveEdbChartCount 获取待转移的指标/图表列表
  1181. // @param userId 用户
  1182. // @param countType 来源 :1:设置资产权限;2:设置数据权限
  1183. func GetMoveEdbChartCount(userId, countType int) (sourceMap map[int]int, err error) {
  1184. sourceMap = make(map[int]int)
  1185. {
  1186. // 手工数据指标
  1187. var condition string
  1188. var pars []interface{}
  1189. if userId > 0 {
  1190. condition += ` AND a.user_id = ? `
  1191. pars = append(pars, userId)
  1192. }
  1193. total, tmpErr := models.GetEdbinfoListCount(condition, pars, "", 0)
  1194. if tmpErr != nil {
  1195. err = tmpErr
  1196. return
  1197. }
  1198. sourceMap[1] = total
  1199. }
  1200. {
  1201. // 钢联化工数据库
  1202. var condition string
  1203. var pars []interface{}
  1204. if userId > 0 {
  1205. condition += ` AND sys_user_id = ? `
  1206. pars = append(pars, userId)
  1207. }
  1208. total, tmpErr := data_manage.GetMysteelChemicalIndexCount(condition, pars)
  1209. if tmpErr != nil {
  1210. err = tmpErr
  1211. return
  1212. }
  1213. sourceMap[2] = total
  1214. }
  1215. {
  1216. // ETA指标库
  1217. var condition string
  1218. var pars []interface{}
  1219. if userId > 0 {
  1220. condition += ` AND sys_user_id = ? `
  1221. pars = append(pars, userId)
  1222. }
  1223. //ETA指标库
  1224. condition += ` AND edb_info_type = ? `
  1225. pars = append(pars, 0)
  1226. total, tmpErr := data_manage.GetEdbInfoByConditionCount(condition, pars)
  1227. if tmpErr != nil {
  1228. err = tmpErr
  1229. return
  1230. }
  1231. sourceMap[3] = total
  1232. }
  1233. {
  1234. // ETA预测指标库
  1235. var condition string
  1236. var pars []interface{}
  1237. if userId > 0 {
  1238. condition += ` AND sys_user_id = ? `
  1239. pars = append(pars, userId)
  1240. }
  1241. //ETA预测指标
  1242. condition += ` AND edb_info_type = ? `
  1243. pars = append(pars, 1)
  1244. total, tmpErr := data_manage.GetEdbInfoByConditionCount(condition, pars)
  1245. if tmpErr != nil {
  1246. err = tmpErr
  1247. return
  1248. }
  1249. sourceMap[4] = total
  1250. }
  1251. {
  1252. // 图库
  1253. var condition string
  1254. var pars []interface{}
  1255. if userId > 0 {
  1256. condition += ` AND sys_user_id = ? `
  1257. pars = append(pars, userId)
  1258. }
  1259. total, tmpErr := data_manage.GetChartInfoCountByCondition(condition, pars)
  1260. if tmpErr != nil {
  1261. err = tmpErr
  1262. return
  1263. }
  1264. sourceMap[5] = total
  1265. }
  1266. {
  1267. // ETA表格
  1268. var condition string
  1269. var pars []interface{}
  1270. condition += ` AND is_delete = 0 `
  1271. if userId > 0 {
  1272. condition += ` AND sys_user_id = ? `
  1273. pars = append(pars, userId)
  1274. }
  1275. switch countType {
  1276. case 2:
  1277. condition += ` AND source in (2,3) `
  1278. default:
  1279. condition += ` AND source in (2,3,4) `
  1280. }
  1281. total, tmpErr := excel.GetExcelInfoCountByCondition(condition, pars)
  1282. if tmpErr != nil {
  1283. err = tmpErr
  1284. return
  1285. }
  1286. sourceMap[6] = total
  1287. }
  1288. return
  1289. }