data_move.go 30 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979
  1. package data_manage_permission
  2. import (
  3. "encoding/json"
  4. "eta_gn/eta_api/models"
  5. "eta_gn/eta_api/models/data_manage"
  6. "eta_gn/eta_api/models/data_manage/data_manage_permission"
  7. "eta_gn/eta_api/models/data_manage/excel"
  8. "eta_gn/eta_api/models/system"
  9. "eta_gn/eta_api/utils"
  10. "fmt"
  11. "strconv"
  12. "strings"
  13. "time"
  14. "github.com/rdlucklib/rdluck_tools/uuid"
  15. )
  16. func GetEdbChartClassifyList(source, subSource int) (resp data_manage.EdbChartClassifyResp, err error) {
  17. switch source {
  18. case 1: //手工数据指标
  19. list, e := models.GetEdbdataClassify(0)
  20. if e != nil {
  21. err = e
  22. return
  23. }
  24. for _, v := range list {
  25. item := data_manage.EdbChartClassify{
  26. ClassifyId: v.ClassifyId,
  27. ClassifyName: v.ClassifyName,
  28. ParentId: v.ParentId,
  29. }
  30. for _, v2 := range v.Child {
  31. child := data_manage.EdbChartClassify{
  32. ClassifyId: v2.ClassifyId,
  33. ClassifyName: v2.ClassifyName,
  34. ParentId: v2.ParentId,
  35. }
  36. item.Child = append(item.Child, &child)
  37. }
  38. resp.List = append(resp.List, &item)
  39. }
  40. case 3, 7:
  41. classifyType := utils.EdbClassifyTypeBase
  42. if source == 7 {
  43. classifyType = utils.EdbClassifyTypeCalculate
  44. }
  45. classifyAll, e := data_manage.GetAllEdbClassifyByType(classifyType)
  46. if e != nil && !utils.IsErrNoRow(e) {
  47. err = e
  48. return
  49. }
  50. resp.List = GetEdbMenuTreeRecursive(classifyAll, 0)
  51. case 4:
  52. classifyAll, e := data_manage.GetAllEdbClassifyByType(1)
  53. if e != nil && !utils.IsErrNoRow(e) {
  54. err = e
  55. return
  56. }
  57. resp.List = GetEdbMenuTreeRecursive(classifyAll, 0)
  58. case 5: //图库
  59. classifyAll, e := data_manage.GetAllChartClassifyItemsBySource(1)
  60. if e != nil && !utils.IsErrNoRow(e) {
  61. err = e
  62. return
  63. }
  64. resp.List = GetChartMenuTreeRecursive(classifyAll, 0)
  65. case 6:
  66. classifyAll, e := excel.GetExcelClassifyBySourceOrderByLevel(subSource)
  67. if e != nil && !utils.IsErrNoRow(e) {
  68. err = e
  69. return
  70. }
  71. resp.List = GetExcelMenuTreeRecursive(classifyAll, 0)
  72. default:
  73. return
  74. }
  75. return
  76. }
  77. func GetEdbMenuTreeRecursive(list []*data_manage.EdbClassifyItems, parentId int) []*data_manage.EdbChartClassify {
  78. res := make([]*data_manage.EdbChartClassify, 0)
  79. for _, v := range list {
  80. t := new(data_manage.EdbChartClassify)
  81. t.ClassifyId = v.ClassifyId
  82. t.ClassifyName = v.ClassifyName
  83. t.ParentId = v.ParentId
  84. t.IsJoinPermission = v.IsJoinPermission
  85. if v.ParentId == parentId {
  86. t.Child = GetEdbMenuTreeRecursive(list, v.ClassifyId)
  87. res = append(res, t)
  88. }
  89. }
  90. return res
  91. }
  92. func GetChartMenuTreeRecursive(list []*data_manage.ChartClassifyItems, parentId int) []*data_manage.EdbChartClassify {
  93. res := make([]*data_manage.EdbChartClassify, 0)
  94. for _, v := range list {
  95. t := new(data_manage.EdbChartClassify)
  96. t.ClassifyId = v.ChartClassifyId
  97. t.ClassifyName = v.ChartClassifyName
  98. t.ParentId = v.ParentId
  99. t.IsJoinPermission = v.IsJoinPermission
  100. if v.ParentId == parentId {
  101. t.Child = GetChartMenuTreeRecursive(list, v.ChartClassifyId)
  102. res = append(res, t)
  103. }
  104. }
  105. return res
  106. }
  107. func GetExcelMenuTreeRecursive(list []*excel.ExcelClassifyItems, parentId int) []*data_manage.EdbChartClassify {
  108. res := make([]*data_manage.EdbChartClassify, 0)
  109. for _, v := range list {
  110. t := new(data_manage.EdbChartClassify)
  111. t.ClassifyId = v.ExcelClassifyId
  112. t.ClassifyName = v.ExcelClassifyName
  113. t.ParentId = v.ParentId
  114. t.IsJoinPermission = v.IsJoinPermission
  115. if v.ParentId == parentId {
  116. t.Child = GetExcelMenuTreeRecursive(list, v.ExcelClassifyId)
  117. res = append(res, t)
  118. }
  119. }
  120. return res
  121. }
  122. func GetMoveEdbChartList(source, subSource, userId int, keyword, classify string, startSize, pageSize int) (list []data_manage.MoveEdbChartList, total int, err error) {
  123. var condition string
  124. var pars []interface{}
  125. switch source {
  126. case 1: //手工数据指标
  127. if keyword != "" {
  128. condition += ` AND (a.SEC_NAME LIKE ? OR a.TRADE_CODE like ? ) `
  129. pars = utils.GetLikeKeywordPars(pars, keyword, 2)
  130. }
  131. if userId > 0 {
  132. condition += ` AND a.user_id = ? `
  133. pars = append(pars, userId)
  134. }
  135. if classify != "" {
  136. condition += ` AND a.classify_id IN (` + classify + `) `
  137. }
  138. total, err = models.GetEdbinfoListCount(condition, pars, "", 0)
  139. if err != nil {
  140. return
  141. }
  142. tmpList, tmpErr := models.GetEdbinfoItemList(condition, pars, startSize, pageSize, "", 0)
  143. if tmpErr != nil {
  144. err = tmpErr
  145. return
  146. }
  147. if len(tmpList) > 0 {
  148. adminIdList := make([]int, 0)
  149. for _, v := range tmpList {
  150. adminIdList = append(adminIdList, v.UserId)
  151. }
  152. adminList, tmpErr := system.GetAdminListByIdListWithoutEnable(adminIdList)
  153. if tmpErr != nil {
  154. err = tmpErr
  155. return
  156. }
  157. adminMap := make(map[int]string)
  158. for _, adminInfo := range adminList {
  159. adminMap[adminInfo.AdminId] = adminInfo.RealName
  160. }
  161. for _, v := range tmpList {
  162. list = append(list, data_manage.MoveEdbChartList{
  163. DataId: v.TradeCode,
  164. Code: v.TradeCode,
  165. Name: v.SecName,
  166. ClassifyName: v.ClassifyName,
  167. NameEn: v.SecName,
  168. ClassifyNameEn: v.ClassifyName,
  169. CreateUserId: v.UserId,
  170. CreateUserName: adminMap[v.UserId],
  171. })
  172. }
  173. }
  174. case 3, 4, utils.EdbPermissionSourceCalculate: //ETA指标库、ETA预测指标、指标加工
  175. if keyword != `` {
  176. condition += " AND (edb_code like ? OR edb_name like ? OR edb_name_en like ? OR sys_user_real_name like ? ) "
  177. pars = utils.GetLikeKeywordPars(pars, keyword, 4)
  178. }
  179. if userId > 0 {
  180. condition += ` AND sys_user_id = ? `
  181. pars = append(pars, userId)
  182. }
  183. if classify != "" {
  184. condition += ` AND classify_id IN (` + classify + `) `
  185. }
  186. edbInfoType := 0 //ETA指标库
  187. if source == 4 { //ETA预测指标
  188. edbInfoType = 1
  189. }
  190. condition += ` AND edb_info_type = ? `
  191. pars = append(pars, edbInfoType)
  192. if source != 4 {
  193. edbType := utils.EdbTypeBase
  194. if source == utils.EdbPermissionSourceCalculate {
  195. edbType = utils.EdbTypeCalculate
  196. }
  197. condition += ` AND edb_type = ? `
  198. pars = append(pars, edbType)
  199. }
  200. total, err = data_manage.GetEdbInfoByConditionCount(condition, pars)
  201. if err != nil {
  202. return
  203. }
  204. tmpList, tmpErr := data_manage.GetEdbInfoListByCondition(condition, pars, startSize, pageSize, "DESC")
  205. if tmpErr != nil {
  206. err = tmpErr
  207. return
  208. }
  209. for _, v := range tmpList {
  210. list = append(list, data_manage.MoveEdbChartList{
  211. DataId: strconv.Itoa(v.EdbInfoId),
  212. Code: v.EdbCode,
  213. Name: v.EdbName,
  214. NameEn: v.EdbNameEn,
  215. CreateUserId: v.SysUserId,
  216. CreateUserName: v.SysUserRealName,
  217. })
  218. }
  219. case 5: //图库
  220. condition += ` AND source = ? `
  221. pars = append(pars, utils.CHART_SOURCE_DEFAULT)
  222. if keyword != `` {
  223. condition += " AND (chart_name like ? or chart_name_en like ? OR sys_user_real_name like ? ) "
  224. pars = utils.GetLikeKeywordPars(pars, keyword, 3)
  225. }
  226. if userId > 0 {
  227. condition += ` AND sys_user_id = ? `
  228. pars = append(pars, userId)
  229. }
  230. if classify != "" {
  231. condition += ` AND chart_classify_id IN (` + classify + `) `
  232. }
  233. total, err = data_manage.GetChartInfoCountByCondition(condition, pars)
  234. if err != nil {
  235. return
  236. }
  237. tmpList, tmpErr := data_manage.GetChartInfoListByCondition(condition, pars, startSize, pageSize)
  238. if tmpErr != nil {
  239. err = tmpErr
  240. return
  241. }
  242. firstClassifyList, tmpErr := data_manage.GetChartClassifyByParentId(0, 1)
  243. if tmpErr != nil {
  244. err = tmpErr
  245. return
  246. }
  247. firstClassifyNameMap := make(map[int]string)
  248. firstClassifyNameEnMap := make(map[int]string)
  249. for _, v := range firstClassifyList {
  250. firstClassifyNameMap[v.ChartClassifyId] = v.ChartClassifyName
  251. firstClassifyNameEnMap[v.ChartClassifyId] = v.ChartClassifyNameEn
  252. }
  253. secondClassList, tmpErr := data_manage.GetChartClassifyAll(1)
  254. if tmpErr != nil {
  255. err = tmpErr
  256. return
  257. }
  258. secondClassifyNameMap := make(map[int]string)
  259. secondClassifyNameEnMap := make(map[int]string)
  260. for _, v := range secondClassList {
  261. firstName := firstClassifyNameMap[v.ParentId]
  262. firstNameEn := firstClassifyNameEnMap[v.ParentId]
  263. if firstName != `` {
  264. firstName = firstName + " / "
  265. }
  266. if firstNameEn != `` {
  267. firstNameEn = firstNameEn + " / "
  268. }
  269. secondClassifyNameMap[v.ChartClassifyId] = firstName + v.ChartClassifyName
  270. secondClassifyNameEnMap[v.ChartClassifyId] = firstNameEn + v.ChartClassifyNameEn
  271. }
  272. for _, v := range tmpList {
  273. list = append(list, data_manage.MoveEdbChartList{
  274. DataId: strconv.Itoa(v.ChartInfoId),
  275. Name: v.ChartName,
  276. ClassifyName: secondClassifyNameMap[v.ChartClassifyId],
  277. NameEn: v.ChartNameEn,
  278. ClassifyNameEn: secondClassifyNameEnMap[v.ChartClassifyId],
  279. CreateUserId: v.SysUserId,
  280. CreateUserName: v.SysUserRealName,
  281. })
  282. }
  283. case 6: //ETA表格
  284. if keyword != `` {
  285. condition += " AND (excel_name like ? OR sys_user_real_name like ? ) "
  286. pars = utils.GetLikeKeywordPars(pars, keyword, 2)
  287. }
  288. if userId > 0 {
  289. condition += ` AND sys_user_id = ? `
  290. pars = append(pars, userId)
  291. }
  292. if classify != "" {
  293. condition += ` AND excel_classify_id IN (` + classify + `) `
  294. }
  295. condition += " AND source = ? "
  296. pars = append(pars, subSource)
  297. if subSource == utils.BALANCE_TABLE {
  298. condition += " AND parent_id = 0 AND balance_type = 0 "
  299. }
  300. total, err = excel.GetExcelInfoCountByCondition(condition, pars)
  301. if err != nil {
  302. return
  303. }
  304. tmpList, tmpErr := excel.GetNoContentExcelInfoListByCondition(condition, pars, startSize, pageSize)
  305. if tmpErr != nil {
  306. err = tmpErr
  307. return
  308. }
  309. firstClassifyList, tmpErr := excel.GetExcelClassifyByParentId(0, subSource)
  310. if tmpErr != nil {
  311. err = tmpErr
  312. return
  313. }
  314. firstClassifyNameMap := make(map[int]string)
  315. for _, v := range firstClassifyList {
  316. firstClassifyNameMap[v.ExcelClassifyId] = v.ExcelClassifyName
  317. }
  318. secondClassList, tmpErr := excel.GetExcelClassifyBySource(subSource)
  319. if tmpErr != nil {
  320. err = tmpErr
  321. return
  322. }
  323. secondClassifyNameMap := make(map[int]string)
  324. for _, v := range secondClassList {
  325. firstName := firstClassifyNameMap[v.ParentId]
  326. if firstName != `` {
  327. firstName = firstName + " / "
  328. }
  329. secondClassifyNameMap[v.ExcelClassifyId] = firstName + v.ExcelClassifyName
  330. }
  331. for _, v := range tmpList {
  332. list = append(list, data_manage.MoveEdbChartList{
  333. DataId: strconv.Itoa(v.ExcelInfoId),
  334. Name: v.ExcelClassifyName,
  335. ClassifyName: secondClassifyNameMap[v.ExcelClassifyId],
  336. NameEn: v.ExcelClassifyName,
  337. ClassifyNameEn: secondClassifyNameMap[v.ExcelClassifyId],
  338. CreateUserId: v.SysUserId,
  339. CreateUserName: v.SysUserRealName,
  340. })
  341. }
  342. default:
  343. return
  344. }
  345. return
  346. }
  347. func MoveEdbChart(source, subSource, oldUserId, newUserId int, isSelectAll bool, dataId, noDataId []string, keyword, classify string, opUserId int, opUserName string) (err error, errMsg string) {
  348. adminInfo, err := system.GetSysAdminById(newUserId)
  349. if err != nil {
  350. return
  351. }
  352. if isSelectAll {
  353. noDataIdMap := make(map[string]string, 0)
  354. for _, v := range noDataId {
  355. noDataIdMap[v] = v
  356. }
  357. dataId = make([]string, 0)
  358. list, _, tmpErr := GetMoveEdbChartList(source, subSource, oldUserId, keyword, classify, 0, 100000)
  359. if tmpErr != nil {
  360. err = tmpErr
  361. return
  362. }
  363. for _, v := range list {
  364. if _, ok := noDataIdMap[v.DataId]; !ok {
  365. dataId = append(dataId, v.DataId)
  366. }
  367. }
  368. }
  369. dataPermissionMoveRecordList := make([]*data_manage_permission.DataPermissionMoveRecord, 0)
  370. uniqueCode := uuid.NewUUID().Hex32()
  371. title := `资产转移`
  372. content := `资产转入`
  373. switch source {
  374. case 1: //手工数据指标
  375. content += `(手工指标数据)`
  376. tmpList, tmpErr := models.GetEdbinfoListByCodeListByCodeIdList(dataId)
  377. if tmpErr != nil {
  378. err = tmpErr
  379. return
  380. }
  381. if len(tmpList) > 0 {
  382. for _, v := range tmpList {
  383. dataPermissionMoveRecordList = append(dataPermissionMoveRecordList, &data_manage_permission.DataPermissionMoveRecord{
  384. DataPermissionMoveRecordId: 0,
  385. Source: int32(source),
  386. SubSource: int32(subSource),
  387. OpUniqueCode: uniqueCode,
  388. DataId: v.TradeCode,
  389. DataCode: v.TradeCode,
  390. DataName: v.SecName,
  391. OriginalUserId: int32(v.UserId),
  392. OriginalUserName: v.UserName,
  393. NewUserId: int32(adminInfo.AdminId),
  394. NewUserName: adminInfo.RealName,
  395. CreateTime: time.Now(),
  396. })
  397. }
  398. err = models.ModifyEdbinfoUserIdByCodeList(dataId, newUserId, adminInfo.RealName)
  399. if err == nil && len(tmpList) > 0 {
  400. go afterMoveManualEdb(tmpList, adminInfo, opUserId, opUserName)
  401. }
  402. }
  403. case 3, 4, utils.EdbPermissionSourceCalculate: //ETA指标库、ETA预测指标
  404. if source == 3 {
  405. content += `(数据查看)`
  406. }
  407. if source == 4 {
  408. content += `(衍生指标)`
  409. }
  410. if source == utils.EdbPermissionSourceCalculate {
  411. content += `(指标加工)`
  412. }
  413. tmpList, tmpErr := data_manage.GetEdbInfoListByEdbInfoId(dataId)
  414. if tmpErr != nil {
  415. err = tmpErr
  416. return
  417. }
  418. if len(tmpList) > 0 {
  419. for _, v := range tmpList {
  420. dataPermissionMoveRecordList = append(dataPermissionMoveRecordList, &data_manage_permission.DataPermissionMoveRecord{
  421. DataPermissionMoveRecordId: 0,
  422. Source: int32(source),
  423. SubSource: int32(subSource),
  424. OpUniqueCode: uniqueCode,
  425. DataId: fmt.Sprint(v.EdbInfoId),
  426. DataCode: v.EdbCode,
  427. DataName: v.EdbName,
  428. OriginalUserId: int32(v.SysUserId),
  429. OriginalUserName: v.SysUserRealName,
  430. NewUserId: int32(adminInfo.AdminId),
  431. NewUserName: adminInfo.RealName,
  432. CreateTime: time.Now(),
  433. })
  434. }
  435. err = data_manage.ModifyEdbInfoUserIdByCodeList(dataId, adminInfo.AdminId, adminInfo.RealName)
  436. {
  437. obj := data_manage.EdbInfoNoPermissionAdmin{}
  438. for _, v := range dataId {
  439. edbInfoId, _ := strconv.Atoi(v)
  440. go obj.DeleteByEdbInfoIdAndAdminId(edbInfoId, adminInfo.AdminId)
  441. }
  442. }
  443. }
  444. case 5: //图库
  445. content += `(图库)`
  446. subSource = utils.CHART_SOURCE_DEFAULT
  447. tmpList, tmpErr := data_manage.GetChartInfoListByChartIdList(dataId)
  448. if tmpErr != nil {
  449. err = tmpErr
  450. return
  451. }
  452. if len(tmpList) > 0 {
  453. for _, v := range tmpList {
  454. dataPermissionMoveRecordList = append(dataPermissionMoveRecordList, &data_manage_permission.DataPermissionMoveRecord{
  455. DataPermissionMoveRecordId: 0,
  456. Source: int32(source),
  457. SubSource: int32(subSource),
  458. OpUniqueCode: uniqueCode,
  459. DataId: fmt.Sprint(v.ChartInfoId),
  460. DataCode: fmt.Sprint(v.ChartInfoId),
  461. DataName: v.ChartName,
  462. OriginalUserId: int32(v.SysUserId),
  463. OriginalUserName: v.SysUserRealName,
  464. NewUserId: int32(adminInfo.AdminId),
  465. NewUserName: adminInfo.RealName,
  466. CreateTime: time.Now(),
  467. })
  468. }
  469. err = data_manage.ModifyChartInfoUserIdByCodeList(dataId, adminInfo.AdminId, adminInfo.RealName)
  470. }
  471. case 6: // ETA表格
  472. content += `(表格)`
  473. tmpList, tmpErr := excel.GetNoContentExcelListByExcelInfoIdList(dataId)
  474. if tmpErr != nil {
  475. err = tmpErr
  476. return
  477. }
  478. var customAnalysisIds []int
  479. if len(tmpList) > 0 {
  480. for _, v := range tmpList {
  481. dataPermissionMoveRecordList = append(dataPermissionMoveRecordList, &data_manage_permission.DataPermissionMoveRecord{
  482. DataPermissionMoveRecordId: 0,
  483. Source: int32(source),
  484. SubSource: int32(subSource),
  485. OpUniqueCode: uniqueCode,
  486. DataId: fmt.Sprint(v.ExcelInfoId),
  487. DataCode: fmt.Sprint(v.ExcelInfoId),
  488. DataName: v.ExcelName,
  489. OriginalUserId: int32(v.SysUserId),
  490. OriginalUserName: v.SysUserRealName,
  491. NewUserId: int32(adminInfo.AdminId),
  492. NewUserName: adminInfo.RealName,
  493. CreateTime: time.Now(),
  494. })
  495. if v.Source == utils.CUSTOM_ANALYSIS_TABLE {
  496. customAnalysisIds = append(customAnalysisIds, v.ExcelInfoId)
  497. }
  498. }
  499. err = excel.ModifyExcelInfoUserIdByCodeList(dataId, adminInfo.AdminId, adminInfo.RealName)
  500. if err != nil {
  501. return
  502. }
  503. if len(customAnalysisIds) > 0 {
  504. err = MoveCustomAnalysisExcel2DefaultClassify(customAnalysisIds, adminInfo.AdminId, adminInfo.RealName)
  505. }
  506. }
  507. default:
  508. return
  509. }
  510. if err != nil {
  511. return
  512. }
  513. dataPermissionMessage := &data_manage_permission.DataPermissionMessage{
  514. DataPermissionMessageId: 0,
  515. SendUserId: int32(opUserId),
  516. ReceiveUserId: int32(adminInfo.AdminId),
  517. Content: title,
  518. Remark: content,
  519. OpType: 1,
  520. Source: int32(source),
  521. SubSource: int32(subSource),
  522. OpUniqueCode: uniqueCode,
  523. IsRead: 0,
  524. CreateTime: time.Now(),
  525. ModifyTime: time.Now(),
  526. }
  527. tmpErr := data_manage_permission.AddDataPermissionMoveRecord(dataPermissionMoveRecordList, dataPermissionMessage)
  528. if tmpErr != nil {
  529. recordListJsonBytes, tmpErr2 := json.Marshal(dataPermissionMoveRecordList)
  530. if tmpErr2 != nil {
  531. utils.FileLog.Error(fmt.Sprintf("添加资产转移的记录失败:%s;list转json失败:;操作记录:%+v;消息记录:%+v", tmpErr.Error(), dataPermissionMoveRecordList, dataPermissionMessage))
  532. return
  533. }
  534. messageJsonBytes, tmpErr2 := json.Marshal(dataPermissionMessage)
  535. if tmpErr2 != nil {
  536. utils.FileLog.Error(fmt.Sprintf("添加资产转移的记录失败:%s;message转json失败:;操作记录:%+v;消息记录:%+v", tmpErr.Error(), dataPermissionMoveRecordList, dataPermissionMessage))
  537. return
  538. }
  539. utils.FileLog.Error(fmt.Sprintf("添加资产转移的记录失败:%s;操作记录:%s;消息记录:%s", tmpErr.Error(), string(recordListJsonBytes), string(messageJsonBytes)))
  540. }
  541. return
  542. }
  543. func MoveAllEdbChart(sourceList, oldUserIdList []int, userId, opUserId int) (err error, errMsg string) {
  544. adminInfo, err := system.GetSysAdminById(userId)
  545. if err != nil {
  546. return
  547. }
  548. dataPermissionMoveRecordList := make([]*data_manage_permission.DataPermissionMoveRecord, 0)
  549. uniqueCode := uuid.NewUUID().Hex32()
  550. title := `资产转移`
  551. content := `资产转入`
  552. sourceStrList := make([]string, 0)
  553. var isMoveManual, isMoveMysteelChemical, isMoveEdb, isMovePredictEdb, isMoveChart, isMoveExcel bool
  554. var customAnalysisIds []int
  555. for _, source := range sourceList {
  556. switch source {
  557. case 1: //手工数据指标
  558. sourceStrList = append(sourceStrList, "手工指标数据")
  559. tmpList, tmpErr := models.GetEdbinfoListByCodeListByUserId(oldUserIdList)
  560. if tmpErr != nil {
  561. err = tmpErr
  562. return
  563. }
  564. if len(tmpList) > 0 {
  565. for _, v := range tmpList {
  566. dataPermissionMoveRecordList = append(dataPermissionMoveRecordList, &data_manage_permission.DataPermissionMoveRecord{
  567. DataPermissionMoveRecordId: 0,
  568. Source: int32(source),
  569. SubSource: 0,
  570. OpUniqueCode: uniqueCode,
  571. DataId: v.TradeCode,
  572. DataCode: v.TradeCode,
  573. DataName: v.SecName,
  574. OriginalUserId: int32(v.UserId),
  575. OriginalUserName: v.UserName,
  576. NewUserId: int32(adminInfo.AdminId),
  577. NewUserName: adminInfo.RealName,
  578. CreateTime: time.Now(),
  579. })
  580. }
  581. isMoveManual = true
  582. }
  583. case 3: //ETA指标库
  584. sourceStrList = append(sourceStrList, "ETA指标库")
  585. edbInfoType := 0
  586. tmpList, tmpErr := data_manage.GetEdbInfoListByUserId(oldUserIdList, edbInfoType)
  587. if tmpErr != nil {
  588. err = tmpErr
  589. return
  590. }
  591. if len(tmpList) > 0 {
  592. for _, v := range tmpList {
  593. dataPermissionMoveRecordList = append(dataPermissionMoveRecordList, &data_manage_permission.DataPermissionMoveRecord{
  594. DataPermissionMoveRecordId: 0,
  595. Source: int32(source),
  596. SubSource: int32(edbInfoType),
  597. OpUniqueCode: uniqueCode,
  598. DataId: fmt.Sprint(v.EdbInfoId),
  599. DataCode: v.EdbCode,
  600. DataName: v.EdbName,
  601. OriginalUserId: int32(v.SysUserId),
  602. OriginalUserName: v.SysUserRealName,
  603. NewUserId: int32(adminInfo.AdminId),
  604. NewUserName: adminInfo.RealName,
  605. CreateTime: time.Now(),
  606. })
  607. }
  608. isMoveEdb = true
  609. }
  610. case 4: //ETA预测指标
  611. sourceStrList = append(sourceStrList, "ETA预测指标")
  612. edbInfoType := 1
  613. tmpList, tmpErr := data_manage.GetEdbInfoListByUserId(oldUserIdList, edbInfoType)
  614. if tmpErr != nil {
  615. err = tmpErr
  616. return
  617. }
  618. if len(tmpList) > 0 {
  619. for _, v := range tmpList {
  620. dataPermissionMoveRecordList = append(dataPermissionMoveRecordList, &data_manage_permission.DataPermissionMoveRecord{
  621. DataPermissionMoveRecordId: 0,
  622. Source: int32(source),
  623. SubSource: int32(edbInfoType),
  624. OpUniqueCode: uniqueCode,
  625. DataId: fmt.Sprint(v.EdbInfoId),
  626. DataCode: v.EdbCode,
  627. DataName: v.EdbName,
  628. OriginalUserId: int32(v.SysUserId),
  629. OriginalUserName: v.SysUserRealName,
  630. NewUserId: int32(adminInfo.AdminId),
  631. NewUserName: adminInfo.RealName,
  632. CreateTime: time.Now(),
  633. })
  634. }
  635. isMovePredictEdb = true
  636. }
  637. case 5: //ETA图库
  638. sourceStrList = append(sourceStrList, "ETA图库")
  639. subSource := utils.CHART_SOURCE_DEFAULT
  640. tmpList, tmpErr := data_manage.GetChartInfoListByUserId(oldUserIdList, subSource)
  641. if tmpErr != nil {
  642. err = tmpErr
  643. return
  644. }
  645. if len(tmpList) > 0 {
  646. for _, v := range tmpList {
  647. dataPermissionMoveRecordList = append(dataPermissionMoveRecordList, &data_manage_permission.DataPermissionMoveRecord{
  648. DataPermissionMoveRecordId: 0,
  649. Source: int32(source),
  650. SubSource: int32(subSource),
  651. OpUniqueCode: uniqueCode,
  652. DataId: fmt.Sprint(v.ChartInfoId),
  653. DataCode: fmt.Sprint(v.ChartInfoId),
  654. DataName: v.ChartName,
  655. OriginalUserId: int32(v.SysUserId),
  656. OriginalUserName: v.SysUserRealName,
  657. NewUserId: int32(adminInfo.AdminId),
  658. NewUserName: adminInfo.RealName,
  659. CreateTime: time.Now(),
  660. })
  661. }
  662. isMoveChart = true
  663. }
  664. case 6: // ETA表格
  665. sourceStrList = append(sourceStrList, "ETA表格")
  666. tmpList, tmpErr := excel.GetNoContentExcelListByUserId(oldUserIdList)
  667. if tmpErr != nil {
  668. err = tmpErr
  669. return
  670. }
  671. if len(tmpList) > 0 {
  672. for _, v := range tmpList {
  673. dataPermissionMoveRecordList = append(dataPermissionMoveRecordList, &data_manage_permission.DataPermissionMoveRecord{
  674. DataPermissionMoveRecordId: 0,
  675. Source: int32(source),
  676. SubSource: int32(v.Source),
  677. OpUniqueCode: uniqueCode,
  678. DataId: fmt.Sprint(v.ExcelInfoId),
  679. DataCode: fmt.Sprint(v.ExcelInfoId),
  680. DataName: v.ExcelName,
  681. OriginalUserId: int32(v.SysUserId),
  682. OriginalUserName: v.SysUserRealName,
  683. NewUserId: int32(adminInfo.AdminId),
  684. NewUserName: adminInfo.RealName,
  685. CreateTime: time.Now(),
  686. })
  687. if v.Source == utils.CUSTOM_ANALYSIS_TABLE {
  688. customAnalysisIds = append(customAnalysisIds, v.ExcelInfoId)
  689. }
  690. }
  691. isMoveExcel = true
  692. }
  693. default:
  694. }
  695. }
  696. err = data_manage_permission.ModifyDataUserIdByOldUserId(oldUserIdList, adminInfo.AdminId, adminInfo.RealName, isMoveManual, isMoveMysteelChemical, isMoveEdb, isMovePredictEdb, isMoveChart, isMoveExcel)
  697. if err != nil {
  698. return
  699. }
  700. if len(customAnalysisIds) > 0 {
  701. err = MoveCustomAnalysisExcel2DefaultClassify(customAnalysisIds, adminInfo.AdminId, adminInfo.RealName)
  702. if err != nil {
  703. err = fmt.Errorf("MoveCustomAnalysisExcel2DefaultClassify, err: %v", err)
  704. return
  705. }
  706. }
  707. content += fmt.Sprintf("(%s)", strings.Join(sourceStrList, ","))
  708. dataPermissionMessage := &data_manage_permission.DataPermissionMessage{
  709. DataPermissionMessageId: 0,
  710. SendUserId: int32(opUserId),
  711. ReceiveUserId: int32(adminInfo.AdminId),
  712. Content: title,
  713. Remark: content,
  714. OpType: 2,
  715. OpUniqueCode: uniqueCode,
  716. IsRead: 0,
  717. CreateTime: time.Now(),
  718. ModifyTime: time.Now(),
  719. }
  720. tmpErr := data_manage_permission.AddDataPermissionMoveRecord(dataPermissionMoveRecordList, dataPermissionMessage)
  721. if tmpErr != nil {
  722. recordListJsonBytes, tmpErr2 := json.Marshal(dataPermissionMoveRecordList)
  723. if tmpErr2 != nil {
  724. utils.FileLog.Error(fmt.Sprintf("添加资产转移的记录失败:%s;list转json失败:;操作记录:%+v;消息记录:%+v", tmpErr.Error(), dataPermissionMoveRecordList, dataPermissionMessage))
  725. return
  726. }
  727. messageJsonBytes, tmpErr2 := json.Marshal(dataPermissionMessage)
  728. if tmpErr2 != nil {
  729. utils.FileLog.Error(fmt.Sprintf("添加资产转移的记录失败:%s;message转json失败:;操作记录:%+v;消息记录:%+v", tmpErr.Error(), dataPermissionMoveRecordList, dataPermissionMessage))
  730. return
  731. }
  732. utils.FileLog.Error(fmt.Sprintf("添加资产转移的记录失败:%s;操作记录:%s;消息记录:%s", tmpErr.Error(), string(recordListJsonBytes), string(messageJsonBytes)))
  733. }
  734. return
  735. }
  736. func GetMoveEdbChartCount(userId, countType int) (sourceMap map[int]int, err error) {
  737. sourceMap = make(map[int]int)
  738. {
  739. var condition string
  740. var pars []interface{}
  741. if userId > 0 {
  742. condition += ` AND a.user_id = ? `
  743. pars = append(pars, userId)
  744. }
  745. total, tmpErr := models.GetEdbinfoListCount(condition, pars, "", 0)
  746. if tmpErr != nil {
  747. err = tmpErr
  748. return
  749. }
  750. sourceMap[1] = total
  751. }
  752. {
  753. var condition string
  754. var pars []interface{}
  755. if userId > 0 {
  756. condition += ` AND sys_user_id = ? `
  757. pars = append(pars, userId)
  758. }
  759. condition += ` AND edb_info_type = ? AND edb_type = ? `
  760. pars = append(pars, 0, utils.EdbTypeBase)
  761. total, tmpErr := data_manage.GetEdbInfoByConditionCount(condition, pars)
  762. if tmpErr != nil {
  763. err = tmpErr
  764. return
  765. }
  766. sourceMap[3] = total
  767. }
  768. {
  769. var condition string
  770. var pars []interface{}
  771. if userId > 0 {
  772. condition += ` AND sys_user_id = ? `
  773. pars = append(pars, userId)
  774. }
  775. condition += ` AND edb_info_type = ? `
  776. pars = append(pars, 1)
  777. total, tmpErr := data_manage.GetEdbInfoByConditionCount(condition, pars)
  778. if tmpErr != nil {
  779. err = tmpErr
  780. return
  781. }
  782. sourceMap[4] = total
  783. }
  784. {
  785. var condition string
  786. var pars []interface{}
  787. condition += ` AND source = ? `
  788. pars = append(pars, utils.CHART_SOURCE_DEFAULT)
  789. if userId > 0 {
  790. condition += ` AND sys_user_id = ? `
  791. pars = append(pars, userId)
  792. }
  793. total, tmpErr := data_manage.GetChartInfoCountByCondition(condition, pars)
  794. if tmpErr != nil {
  795. err = tmpErr
  796. return
  797. }
  798. sourceMap[5] = total
  799. }
  800. {
  801. var condition string
  802. var pars []interface{}
  803. condition += ` AND is_delete = 0 `
  804. if userId > 0 {
  805. condition += ` AND sys_user_id = ? `
  806. pars = append(pars, userId)
  807. }
  808. switch countType {
  809. case 2:
  810. condition += ` AND source in (2,3,5) `
  811. default:
  812. condition += ` AND source in (2,3,4,5) `
  813. }
  814. condition += " AND (parent_id = 0 AND balance_type = 0)"
  815. total, tmpErr := excel.GetExcelInfoCountByCondition(condition, pars)
  816. if tmpErr != nil {
  817. err = tmpErr
  818. return
  819. }
  820. sourceMap[6] = total
  821. }
  822. {
  823. var condition string
  824. var pars []interface{}
  825. if userId > 0 {
  826. condition += ` AND sys_user_id = ? `
  827. pars = append(pars, userId)
  828. }
  829. condition += ` AND edb_info_type = ? AND edb_type = ? `
  830. pars = append(pars, 0, utils.EdbTypeCalculate)
  831. total, tmpErr := data_manage.GetEdbInfoByConditionCount(condition, pars)
  832. if tmpErr != nil {
  833. err = tmpErr
  834. return
  835. }
  836. sourceMap[7] = total
  837. }
  838. return
  839. }
  840. func afterMoveManualEdb(tmpList []*models.Edbinfo, adminInfo *system.Admin, opUserId int, opUserName string) {
  841. recordList := make([]*models.EdbinfoOpRecord, 0)
  842. for _, tmpManualInfo := range tmpList {
  843. remark := fmt.Sprintf("数据资产由%s转移给%s", tmpManualInfo.UserName, adminInfo.RealName)
  844. recordList = append(recordList, &models.EdbinfoOpRecord{
  845. TradeCode: tmpManualInfo.TradeCode,
  846. Remark: remark,
  847. UserId: opUserId,
  848. UserName: opUserName,
  849. CreateTime: time.Now(),
  850. })
  851. }
  852. obj := models.EdbinfoOpRecord{}
  853. _ = obj.MulCreate(recordList)
  854. }
  855. func MoveCustomAnalysisExcel2DefaultClassify(excelIds []int, adminId int, realName string) (err error) {
  856. if len(excelIds) == 0 {
  857. return
  858. }
  859. var moveClassifyId int
  860. cond := ` AND excel_classify_name = ? AND sys_user_id = ?`
  861. pars := make([]interface{}, 0)
  862. pars = append(pars, "未分类", adminId)
  863. classify, e := excel.GetExcelClassifyByCondition(cond, pars)
  864. if e != nil && !utils.IsErrNoRow(e) {
  865. err = fmt.Errorf("获取默认分类失败, %v", e)
  866. return
  867. }
  868. if e == nil && classify.ExcelClassifyId > 0 {
  869. moveClassifyId = classify.ExcelClassifyId
  870. }
  871. if classify == nil || classify.ExcelClassifyId <= 0 {
  872. classifyNew := &excel.ExcelClassify{
  873. ExcelClassifyName: "未分类",
  874. Source: utils.CUSTOM_ANALYSIS_TABLE,
  875. SysUserId: adminId,
  876. SysUserRealName: realName,
  877. Level: 1,
  878. UniqueCode: utils.MD5(utils.EXCEL_DATA_PREFIX + "_" + strconv.FormatInt(time.Now().UnixNano(), 10)),
  879. CreateTime: time.Now(),
  880. ModifyTime: time.Now(),
  881. }
  882. if _, e = excel.AddExcelClassify(classifyNew); e != nil {
  883. err = fmt.Errorf("新增默认分类失败, %v", e)
  884. return
  885. }
  886. moveClassifyId = classifyNew.ExcelClassifyId
  887. }
  888. if moveClassifyId <= 0 {
  889. err = fmt.Errorf("移动分类ID有误")
  890. return
  891. }
  892. if e = excel.UpdateExcelInfoClassifyIdByIds(moveClassifyId, excelIds); e != nil {
  893. err = fmt.Errorf("移动多表格分类失败, %v", e)
  894. return
  895. }
  896. return
  897. }