mysteel_chemical.go 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686
  1. package data
  2. import (
  3. "encoding/json"
  4. "errors"
  5. "eta/eta_api/models/data_manage"
  6. "eta/eta_api/models/system"
  7. "eta/eta_api/utils"
  8. "fmt"
  9. "github.com/rdlucklib/rdluck_tools/http"
  10. "strings"
  11. "time"
  12. )
  13. // AddMysteelChemicalClassify 添加钢联化工分类
  14. func AddMysteelChemicalClassify(classifyName string, parentId, level, sysUserId int, sysUserName, lange string) (classifyInfo *data_manage.BaseFromMysteelChemicalClassify, err error, errMsg string) {
  15. // 校验分类名称相同的数量
  16. {
  17. var count int
  18. switch lange {
  19. case utils.EnLangVersion:
  20. count, err = data_manage.GetBaseFromMysteelChemicalClassifyEnCount(classifyName, parentId)
  21. default:
  22. count, err = data_manage.GetBaseFromMysteelChemicalClassifyCount(classifyName, parentId)
  23. }
  24. if err != nil {
  25. errMsg = `判断名称是否已存在失败`
  26. return
  27. }
  28. if count > 0 {
  29. errMsg = `分类名称:` + classifyName + ` 已存在,请重新输入`
  30. err = errors.New(errMsg)
  31. return
  32. }
  33. }
  34. //获取该层级下最大的排序数
  35. maxSort, err := data_manage.GetBaseFromMysteelChemicalClassifyMaxSort(parentId)
  36. classifyInfo = &data_manage.BaseFromMysteelChemicalClassify{
  37. //BaseFromMysteelChemicalClassifyId: 0,
  38. ClassifyName: classifyName,
  39. ClassifyNameEn: classifyName,
  40. ParentId: parentId,
  41. SysUserId: sysUserId,
  42. SysUserRealName: sysUserName,
  43. Sort: maxSort + 1,
  44. Level: level + 1,
  45. ModifyTime: time.Now(),
  46. CreateTime: time.Now(),
  47. }
  48. classifyId, err := data_manage.AddBaseFromMysteelChemicalClassify(classifyInfo)
  49. if err != nil {
  50. errMsg = "保存分类失败"
  51. }
  52. classifyInfo.BaseFromMysteelChemicalClassifyId = int(classifyId)
  53. return
  54. }
  55. // EditMysteelChemicalClassify 编辑钢联化工分类
  56. func EditMysteelChemicalClassify(classifyId int, classifyName, lang string, sysUser *system.Admin) (err error, errMsg string) {
  57. item, err := data_manage.GetBaseFromMysteelChemicalClassifyById(classifyId)
  58. if err != nil {
  59. errMsg = `保存失败`
  60. return
  61. }
  62. // 操作权限校验
  63. button := GetMysteelChemicalOpButton(sysUser, item.SysUserId)
  64. if !button.OpButton {
  65. errMsg = "无权限操作"
  66. return
  67. }
  68. switch lang {
  69. case utils.EnLangVersion:
  70. // 名字相同,那么就直接返回
  71. if item.ClassifyNameEn == classifyName {
  72. return
  73. }
  74. // 判断名称是否已存在
  75. count, tmpErr := data_manage.GetBaseFromMysteelChemicalClassifyEnCount(classifyName, item.ParentId)
  76. if tmpErr != nil {
  77. err = tmpErr
  78. errMsg = "判断名称是否已存在失败"
  79. return
  80. }
  81. if count > 0 {
  82. errMsg = "分类名称已存在,请重新输入"
  83. err = errors.New(errMsg)
  84. return
  85. }
  86. // 修改数据
  87. err = data_manage.EditBaseFromMysteelChemicalClassifyEn(classifyId, classifyName)
  88. if err != nil {
  89. errMsg = "保存失败"
  90. }
  91. default:
  92. // 名字相同,那么就直接返回
  93. if item.ClassifyName == classifyName {
  94. return
  95. }
  96. // 判断名称是否已存在
  97. count, tmpErr := data_manage.GetBaseFromMysteelChemicalClassifyCount(classifyName, item.ParentId)
  98. if tmpErr != nil {
  99. err = tmpErr
  100. errMsg = "判断名称是否已存在失败"
  101. return
  102. }
  103. if count > 0 {
  104. errMsg = "分类名称已存在,请重新输入"
  105. err = errors.New(errMsg)
  106. return
  107. }
  108. // 修改数据
  109. err = data_manage.EditBaseFromMysteelChemicalClassify(classifyId, classifyName)
  110. if err != nil {
  111. errMsg = "保存失败"
  112. }
  113. }
  114. return
  115. }
  116. // MoveMysteelChemicalClassify 移动钢联化工分类
  117. func MoveMysteelChemicalClassify(classifyId, parentClassifyId, prevClassifyId, nextClassifyId int, sysUser *system.Admin) (err error, errMsg string) {
  118. //判断分类是否存在
  119. classifyInfo, err := data_manage.GetBaseFromMysteelChemicalClassifyById(classifyId)
  120. if err != nil {
  121. errMsg = "移动失败"
  122. err = errors.New("获取分类信息失败,Err:" + err.Error())
  123. return
  124. }
  125. // 操作权限校验
  126. button := GetMysteelChemicalOpButton(sysUser, classifyInfo.SysUserId)
  127. if !button.MoveButton {
  128. errMsg = "无权限操作"
  129. return
  130. }
  131. updateCol := make([]string, 0)
  132. //判断上级id是否一致,如果不一致的话,那么需要移动该分类层级
  133. if classifyInfo.ParentId != parentClassifyId && parentClassifyId != 0 {
  134. parentClassifyInfo, tmpErr := data_manage.GetBaseFromMysteelChemicalClassifyById(parentClassifyId)
  135. if tmpErr != nil {
  136. errMsg = "移动失败"
  137. err = errors.New("获取上级分类信息失败,Err:" + tmpErr.Error())
  138. return
  139. }
  140. classifyInfo.ParentId = parentClassifyInfo.BaseFromMysteelChemicalClassifyId
  141. classifyInfo.Level = parentClassifyInfo.Level + 1
  142. classifyInfo.ModifyTime = time.Now()
  143. updateCol = append(updateCol, "ParentId", "Level", "ModifyTime")
  144. }
  145. //如果有传入 上一个兄弟节点分类id
  146. if prevClassifyId > 0 {
  147. prevClassify, tmpErr := data_manage.GetBaseFromMysteelChemicalClassifyById(prevClassifyId)
  148. if tmpErr != nil {
  149. errMsg = "移动失败"
  150. err = errors.New("获取上一个兄弟节点分类信息失败,Err:" + tmpErr.Error())
  151. return
  152. }
  153. //如果是移动在两个兄弟节点之间
  154. if nextClassifyId > 0 {
  155. //下一个兄弟节点
  156. nextClassify, tmpErr := data_manage.GetBaseFromMysteelChemicalClassifyById(nextClassifyId)
  157. if tmpErr != nil {
  158. errMsg = "移动失败"
  159. err = errors.New("获取下一个兄弟节点分类信息失败,Err:" + tmpErr.Error())
  160. return
  161. }
  162. //如果上一个兄弟与下一个兄弟的排序权重是一致的,那么需要将下一个兄弟(以及下个兄弟的同样排序权重)的排序权重+2,自己变成上一个兄弟的排序权重+1
  163. if prevClassify.Sort == nextClassify.Sort || prevClassify.Sort == classifyInfo.Sort {
  164. //变更兄弟节点的排序
  165. updateSortStr := `sort + 2`
  166. _ = data_manage.UpdateBaseFromMysteelChemicalClassifySortByClassifyId(parentClassifyId, prevClassify.BaseFromMysteelChemicalClassifyId, prevClassify.Sort, updateSortStr)
  167. } else {
  168. //如果下一个兄弟的排序权重正好是上个兄弟节点的下一层,那么需要再加一层了
  169. if nextClassify.Sort-prevClassify.Sort == 1 {
  170. //变更兄弟节点的排序
  171. updateSortStr := `sort + 1`
  172. _ = data_manage.UpdateBaseFromMysteelChemicalClassifySortByClassifyId(parentClassifyId, 0, prevClassify.Sort, updateSortStr)
  173. }
  174. }
  175. }
  176. classifyInfo.Sort = prevClassify.Sort + 1
  177. classifyInfo.ModifyTime = time.Now()
  178. updateCol = append(updateCol, "Sort", "ModifyTime")
  179. } else {
  180. firstClassify, tmpErr := data_manage.GetFirstBaseFromMysteelChemicalClassify()
  181. if tmpErr != nil && tmpErr.Error() != utils.ErrNoRow() {
  182. errMsg = "移动失败"
  183. err = errors.New("获取获取当前父级分类下的排序第一条的分类信息失败,Err:" + tmpErr.Error())
  184. return
  185. }
  186. //如果该分类下存在其他分类,且第一个其他分类的排序等于0,那么需要调整排序
  187. if firstClassify != nil && firstClassify.Sort == 0 {
  188. updateSortStr := ` sort + 1 `
  189. _ = data_manage.UpdateBaseFromMysteelChemicalClassifySortByClassifyId(parentClassifyId, firstClassify.BaseFromMysteelChemicalClassifyId-1, 0, updateSortStr)
  190. }
  191. classifyInfo.Sort = 0 //那就是排在第一位
  192. classifyInfo.ModifyTime = time.Now()
  193. updateCol = append(updateCol, "Sort", "ModifyTime")
  194. }
  195. //更新
  196. if len(updateCol) > 0 {
  197. err = classifyInfo.Update(updateCol)
  198. if err != nil {
  199. errMsg = "移动失败"
  200. err = errors.New("修改失败,Err:" + err.Error())
  201. return
  202. }
  203. }
  204. return
  205. }
  206. // DelMysteelChemicalClassify 删除钢联化工分类
  207. func DelMysteelChemicalClassify(classifyId int, sysUser *system.Admin) (err error, errMsg string) {
  208. //判断分类是否存在
  209. classifyInfo, err := data_manage.GetBaseFromMysteelChemicalClassifyById(classifyId)
  210. if err != nil {
  211. errMsg = "删除失败"
  212. err = errors.New("获取分类信息失败,Err:" + err.Error())
  213. return
  214. }
  215. // 操作权限校验
  216. button := GetMysteelChemicalOpButton(sysUser, classifyInfo.SysUserId)
  217. if !button.DeleteButton {
  218. errMsg = "无权限操作"
  219. return
  220. }
  221. // 需要删除的分类id集合
  222. classifyIdList := make([]int, 0)
  223. classifyIdList = append(classifyIdList, classifyId)
  224. mysteelChemicalIndexIdList := make([]int, 0)
  225. indexCodeList := make([]string, 0)
  226. // 查找所有的子集id
  227. if classifyInfo.ParentId <= 0 {
  228. childrenClassifyInfoList, tmpErr := data_manage.GetBaseFromMysteelChemicalClassifyByParentId(classifyId)
  229. if tmpErr != nil {
  230. errMsg = "删除失败"
  231. err = errors.New("获取分类信息失败,Err:" + tmpErr.Error())
  232. return
  233. }
  234. for _, v := range childrenClassifyInfoList {
  235. classifyIdList = append(classifyIdList, v.BaseFromMysteelChemicalClassifyId)
  236. }
  237. }
  238. // 获取分类下的所有指标
  239. baseFromMysteelChemicalIndexList, err := data_manage.GetBaseFromMysteelChemicalIndexListByClassifyIdList(classifyIdList)
  240. if err != nil {
  241. errMsg = "删除失败"
  242. err = errors.New("获取分类下的指标信息失败,Err:" + err.Error())
  243. return
  244. }
  245. for _, v := range baseFromMysteelChemicalIndexList {
  246. mysteelChemicalIndexIdList = append(mysteelChemicalIndexIdList, v.BaseFromMysteelChemicalIndexId)
  247. indexCodeList = append(indexCodeList, v.IndexCode)
  248. }
  249. // 获取已经加入到EDB指标库的钢联化工指标
  250. edbInfoList, err := data_manage.GetEdbInfoByEdbCodeList(utils.DATA_SOURCE_MYSTEEL_CHEMICAL, indexCodeList)
  251. if err != nil {
  252. errMsg = "删除失败"
  253. err = errors.New("获取分类下的指标信息失败,Err:" + err.Error())
  254. return
  255. }
  256. if len(edbInfoList) > 0 {
  257. errMsg = "该分类下存在指标加入到ETA图库,无法删除"
  258. return
  259. }
  260. // 删除对应的分类和指标
  261. err = data_manage.DeleteMysteelChemicalByClassifyId(classifyIdList, mysteelChemicalIndexIdList)
  262. if err != nil {
  263. return
  264. }
  265. // 删除指标服务的excel表
  266. go func(list []*data_manage.BaseFromMysteelChemicalIndex) {
  267. for _, v := range list {
  268. CurlDelMysteelChemicalData(v.IndexCode, v.UpdateWeek)
  269. }
  270. }(baseFromMysteelChemicalIndexList)
  271. return
  272. }
  273. // AddMysteelChemicalIndex 添加钢联化工指标
  274. func AddMysteelChemicalIndex(classifyId int, indexCode, updateWeek, updateTimeStr string, sysUserId int, sysUserName string) (baseFromMysteelChemicalIndex *data_manage.BaseFromMysteelChemicalIndex, err error, errMsg string) {
  275. baseFromMysteelChemicalIndex, err = data_manage.GetBaseFromMysteelChemicalIndexByCode(indexCode)
  276. if err != nil && err.Error() != utils.ErrNoRow() {
  277. errMsg = `获取数据失败`
  278. return
  279. }
  280. if baseFromMysteelChemicalIndex != nil {
  281. errMsg = `指标ID:` + indexCode + ` 已存在,请重新输入`
  282. return
  283. }
  284. // 更新时间切割
  285. var updateTime1, updateTime2 string
  286. if updateTimeStr != `` {
  287. updateTimeList := strings.Split(updateTimeStr, ",")
  288. updateTime1 = updateTimeList[0]
  289. if len(updateTimeList) > 1 {
  290. updateTime2 = updateTimeList[1]
  291. }
  292. }
  293. edbTerminal := getEdbTerminal(utils.DATA_SOURCE_MYSTEEL_CHEMICAL)
  294. if edbTerminal == nil {
  295. errMsg = `钢联终端信息未配置`
  296. err = errors.New(errMsg)
  297. return
  298. }
  299. baseFromMysteelChemicalIndex = &data_manage.BaseFromMysteelChemicalIndex{
  300. //BaseFromMysteelChemicalIndexId: 0,
  301. BaseFromMysteelChemicalClassifyId: classifyId,
  302. IndexCode: indexCode,
  303. IndexName: "",
  304. Unit: "",
  305. Source: "",
  306. Frequency: "",
  307. StartDate: "",
  308. EndDate: "",
  309. Describe: "",
  310. UpdateWeek: updateWeek,
  311. UpdateTime: updateTime1,
  312. UpdateTime2: updateTime2,
  313. SysUserId: sysUserId,
  314. SysUserRealName: sysUserName,
  315. ModifyTime: time.Now(),
  316. CreateTime: time.Now(),
  317. TerminalCode: edbTerminal.TerminalCode, // 终端编码
  318. }
  319. _, err = data_manage.AddBaseFromMysteelChemicalIndex(baseFromMysteelChemicalIndex)
  320. if err != nil {
  321. errMsg = "保存分类失败"
  322. }
  323. return
  324. }
  325. // EditMysteelChemicalIndex 编辑钢联化工指标
  326. func EditMysteelChemicalIndex(indexId, classifyId int, updateWeek, updateTimeStr string, sysUser *system.Admin) (baseFromMysteelChemicalIndex *data_manage.BaseFromMysteelChemicalIndex, err error, errMsg string) {
  327. baseFromMysteelChemicalIndex, err = data_manage.GetBaseFromMysteelChemicalIndexByIndexId(indexId)
  328. if err != nil {
  329. errMsg = `获取数据失败`
  330. if err.Error() == utils.ErrNoRow() {
  331. errMsg = `该指标未入库`
  332. err = nil
  333. }
  334. return
  335. }
  336. // 操作权限校验
  337. button := GetMysteelChemicalOpButton(sysUser, baseFromMysteelChemicalIndex.SysUserId)
  338. if !button.OpButton {
  339. errMsg = "无权限操作"
  340. return
  341. }
  342. oldUpdateWeek := baseFromMysteelChemicalIndex.UpdateWeek
  343. // 更新时间切割
  344. var updateTime1, updateTime2 string
  345. if updateTimeStr != `` {
  346. updateTimeList := strings.Split(updateTimeStr, ",")
  347. updateTime1 = updateTimeList[0]
  348. if len(updateTimeList) > 1 {
  349. updateTime2 = updateTimeList[1]
  350. }
  351. }
  352. baseFromMysteelChemicalIndex.BaseFromMysteelChemicalClassifyId = classifyId
  353. baseFromMysteelChemicalIndex.UpdateWeek = updateWeek
  354. baseFromMysteelChemicalIndex.UpdateTime = updateTime1
  355. baseFromMysteelChemicalIndex.UpdateTime2 = updateTime2
  356. baseFromMysteelChemicalIndex.ModifyTime = time.Now()
  357. err = baseFromMysteelChemicalIndex.Update([]string{"BaseFromMysteelChemicalClassifyId", "UpdateWeek", "UpdateTime", "UpdateTime2", "ModifyTime"})
  358. if err != nil {
  359. errMsg = "保存分类失败"
  360. }
  361. go func(oldUpdateWeek string, indexInfo *data_manage.BaseFromMysteelChemicalIndex) {
  362. // 先删除excel表
  363. CurlDelMysteelChemicalData(indexInfo.IndexCode, oldUpdateWeek)
  364. }(oldUpdateWeek, baseFromMysteelChemicalIndex)
  365. return
  366. }
  367. // DelMysteelChemical 删除钢联化工指标
  368. func DelMysteelChemical(indexId int, sysUser *system.Admin) (err error, errMsg string) {
  369. baseFromMysteelChemicalIndex, err := data_manage.GetBaseFromMysteelChemicalIndexByIndexId(indexId)
  370. if err != nil {
  371. errMsg = `获取数据失败`
  372. if err.Error() == utils.ErrNoRow() {
  373. errMsg = `该指标未入库`
  374. err = nil
  375. }
  376. return
  377. }
  378. // 操作权限校验
  379. button := GetMysteelChemicalOpButton(sysUser, baseFromMysteelChemicalIndex.SysUserId)
  380. if !button.DeleteButton {
  381. errMsg = "无权限操作"
  382. return
  383. }
  384. // 获取已经加入到EDB指标库的钢联化工指标
  385. edbInfo, err := data_manage.GetEdbInfoByEdbCode(utils.DATA_SOURCE_MYSTEEL_CHEMICAL, baseFromMysteelChemicalIndex.IndexCode)
  386. if err != nil && err.Error() != utils.ErrNoRow() {
  387. errMsg = "删除失败"
  388. err = errors.New("获取分类下的指标信息失败,Err:" + err.Error())
  389. return
  390. }
  391. if edbInfo != nil {
  392. errMsg = "当前指标已被引用,不可删除"
  393. err = nil
  394. return
  395. }
  396. // 删除对应的分类和指标
  397. err = data_manage.DeleteMysteelChemical(indexId)
  398. if err != nil {
  399. return
  400. }
  401. // 删除指标服务的excel表
  402. go CurlDelMysteelChemicalData(baseFromMysteelChemicalIndex.IndexCode, baseFromMysteelChemicalIndex.UpdateWeek)
  403. return
  404. }
  405. // MoveMysteelChemical 移动钢联化工指标
  406. func MoveMysteelChemical(indexId, classifyId, prevIndexId, nextIndexId int, sysUser *system.Admin) (err error, errMsg string) {
  407. //分类信息
  408. baseFromMysteelChemicalIndex, err := data_manage.GetBaseFromMysteelChemicalIndexByIndexId(indexId)
  409. if err != nil {
  410. errMsg = `获取数据失败`
  411. if err.Error() == utils.ErrNoRow() {
  412. errMsg = `该指标未入库`
  413. err = nil
  414. }
  415. return
  416. }
  417. // 操作权限校验
  418. button := GetMysteelChemicalOpButton(sysUser, baseFromMysteelChemicalIndex.SysUserId)
  419. if !button.MoveButton {
  420. errMsg = "无权限操作"
  421. return
  422. }
  423. //判断分类是否存在
  424. _, err = data_manage.GetBaseFromMysteelChemicalClassifyById(classifyId)
  425. if err != nil {
  426. errMsg = "移动失败"
  427. err = errors.New("获取分类信息失败,Err:" + err.Error())
  428. if err.Error() == utils.ErrNoRow() {
  429. errMsg = "找不到该分类"
  430. err = nil
  431. }
  432. return
  433. }
  434. //如果改变了分类,那么移动该图表数据
  435. if baseFromMysteelChemicalIndex.BaseFromMysteelChemicalClassifyId != classifyId {
  436. tmpErr := data_manage.MoveBaseFromMysteelChemicalIndex(indexId, classifyId)
  437. if err != nil {
  438. errMsg = "移动失败"
  439. err = errors.New("移动失败,Err:" + tmpErr.Error())
  440. return
  441. }
  442. }
  443. //移动排序
  444. updateCol := make([]string, 0)
  445. //如果有传入 上一个兄弟节点分类id
  446. if prevIndexId > 0 {
  447. prevIndex, tmpErr := data_manage.GetBaseFromMysteelChemicalIndexByIndexId(prevIndexId)
  448. if err != nil {
  449. errMsg = "移动失败"
  450. err = errors.New("获取上一个兄弟节点指标信息失败,Err:" + tmpErr.Error())
  451. return
  452. }
  453. //如果是移动在两个兄弟节点之间
  454. if nextIndexId > 0 {
  455. //下一个兄弟节点
  456. nextIndex, tmpErr := data_manage.GetBaseFromMysteelChemicalIndexByIndexId(nextIndexId)
  457. if err != nil {
  458. errMsg = "移动失败"
  459. err = errors.New("获取下一个兄弟节点指标信息失败,Err:" + tmpErr.Error())
  460. return
  461. }
  462. //如果上一个兄弟与下一个兄弟的排序权重是一致的,那么需要将下一个兄弟(以及下个兄弟的同样排序权重)的排序权重+2,自己变成上一个兄弟的排序权重+1
  463. if prevIndex.Sort == nextIndex.Sort || prevIndex.Sort == baseFromMysteelChemicalIndex.Sort {
  464. //变更兄弟节点的排序
  465. updateSortStr := `sort + 2`
  466. _ = data_manage.UpdateBaseFromMysteelChemicalIndexByClassifyId(prevIndex.BaseFromMysteelChemicalClassifyId, prevIndex.Sort, prevIndex.BaseFromMysteelChemicalIndexId, updateSortStr)
  467. } else {
  468. //如果下一个兄弟的排序权重正好是上个兄弟节点的下一层,那么需要再加一层了
  469. if nextIndex.Sort-prevIndex.Sort == 1 {
  470. //变更兄弟节点的排序
  471. updateSortStr := `sort + 1`
  472. _ = data_manage.UpdateBaseFromMysteelChemicalIndexByClassifyId(prevIndex.BaseFromMysteelChemicalClassifyId, prevIndex.Sort, prevIndex.BaseFromMysteelChemicalIndexId, updateSortStr)
  473. }
  474. }
  475. }
  476. baseFromMysteelChemicalIndex.Sort = prevIndex.Sort + 1
  477. baseFromMysteelChemicalIndex.ModifyTime = time.Now()
  478. updateCol = append(updateCol, "Sort", "ModifyTime")
  479. } else {
  480. firstClassify, tmpErr := data_manage.GetFirstBaseFromMysteelChemicalIndexByClassifyId(classifyId)
  481. if tmpErr != nil && tmpErr.Error() != utils.ErrNoRow() {
  482. errMsg = "移动失败"
  483. err = errors.New("获取获取当前父级分类下的排序第一条的分类信息失败,Err:" + tmpErr.Error())
  484. return
  485. }
  486. //如果该分类下存在其他分类,且第一个其他分类的排序等于0,那么需要调整排序
  487. if firstClassify != nil && firstClassify.Sort == 0 {
  488. updateSortStr := ` sort + 1 `
  489. _ = data_manage.UpdateBaseFromMysteelChemicalIndexByClassifyId(firstClassify.BaseFromMysteelChemicalClassifyId, 0, firstClassify.BaseFromMysteelChemicalIndexId-1, updateSortStr)
  490. }
  491. baseFromMysteelChemicalIndex.Sort = 0 //那就是排在第一位
  492. baseFromMysteelChemicalIndex.ModifyTime = time.Now()
  493. updateCol = append(updateCol, "Sort", "ModifyTime")
  494. }
  495. //更新
  496. if len(updateCol) > 0 {
  497. err = baseFromMysteelChemicalIndex.Update(updateCol)
  498. if err != nil {
  499. errMsg = "移动失败"
  500. err = errors.New("修改失败,Err:" + err.Error())
  501. return
  502. }
  503. }
  504. if err != nil {
  505. errMsg = "移动失败"
  506. err = errors.New("修改失败,Err:" + err.Error())
  507. return
  508. }
  509. return
  510. }
  511. // GetMysteelChemicalOpButton 获取钢联化工的操作权限
  512. func GetMysteelChemicalOpButton(sysUser *system.Admin, belongUserId int) (button data_manage.BaseFromMysteelChemicalClassifyItemsButton) {
  513. //2、用户对于自己添加的分类,有权限编辑、移动和删除该分类;
  514. //3、ficc管理员和超管对所有分类有编辑、移动和删除权限;
  515. if sysUser.RoleTypeCode == utils.ROLE_TYPE_CODE_ADMIN || sysUser.RoleTypeCode == utils.ROLE_TYPE_CODE_FICC_ADMIN || sysUser.AdminId == belongUserId || sysUser.MysteelChemicalPermission == 1 {
  516. button.AddButton = true
  517. button.OpButton = true
  518. button.DeleteButton = true
  519. button.MoveButton = true
  520. }
  521. return
  522. }
  523. // CurlDelMysteelChemicalData 请求钢联服务器删除指标
  524. func CurlDelMysteelChemicalData(indexCode, updateWeek string) {
  525. postUrl := utils.MySteelPostUrl + `/api/index/delete`
  526. //type IndexAddReq struct {
  527. // IndexCode string `json:"IndexCode" binding:"required"` //指标编码
  528. // UpdateWeek string `json:"UpdateWeek"` //更新周期
  529. // RunMode string `description:"运行环境:debug:测试(默认),release:生产" json:"UpdateWeek"` //更新周期
  530. //}
  531. paramsMap := make(map[string]interface{})
  532. updateWeek = WeekMap[updateWeek]
  533. paramsMap["IndexCode"] = indexCode
  534. paramsMap["UpdateWeek"] = updateWeek
  535. paramsMap["RunMode"] = utils.RunMode
  536. paramJson, err := json.Marshal(paramsMap)
  537. if err != nil {
  538. fmt.Println("param json.Marshal Err:" + err.Error())
  539. err = errors.New("param json.Marshal Err:" + err.Error())
  540. return
  541. }
  542. utils.FileLog.Info(fmt.Sprintf("CurlDelMysteelChemicalData parms:%s", string(paramJson)))
  543. result, err := http.Post(postUrl, string(paramJson), "application/json")
  544. if err != nil {
  545. fmt.Println("post err:" + err.Error())
  546. err = errors.New("post Err:" + err.Error())
  547. return
  548. }
  549. utils.FileLog.Info("CurlDelMysteelChemicalData Result:%s", string(result))
  550. }
  551. // WeekMap 中英文日期转换
  552. var WeekMap = map[string]string{
  553. "": "",
  554. "周一": "monday",
  555. "周二": "tuesday",
  556. "周三": "wednesday",
  557. "周四": "thursday",
  558. "周五": "friday",
  559. "周六": "saturday",
  560. "周日": "sunday",
  561. }
  562. // CurlRefreshMysteelChemicalData 请求钢联服务器添加指标
  563. func CurlRefreshMysteelChemicalData(mergeFilePath string) {
  564. postUrl := utils.MySteelPostUrl + `/api/index/refresh`
  565. //type IndexAddReq struct {
  566. // IndexCode string `json:"IndexCode" binding:"required"` //指标编码
  567. // UpdateWeek string `json:"UpdateWeek"` //更新周期
  568. // RunMode string `description:"运行环境:debug:测试(默认),release:生产" json:"UpdateWeek"` //更新周期
  569. //}
  570. paramsMap := make(map[string]interface{})
  571. paramsMap["MergeFilePath"] = mergeFilePath
  572. paramJson, err := json.Marshal(paramsMap)
  573. if err != nil {
  574. fmt.Println("param json.Marshal Err:" + err.Error())
  575. err = errors.New("param json.Marshal Err:" + err.Error())
  576. return
  577. }
  578. utils.FileLog.Info(fmt.Sprintf("CurlRefreshMysteelChemicalData parms:%s", string(paramJson)))
  579. result, err := http.Post(postUrl, string(paramJson), "application/json")
  580. if err != nil {
  581. fmt.Println("post err:" + err.Error())
  582. err = errors.New("post Err:" + err.Error())
  583. return
  584. }
  585. utils.FileLog.Info("CurlRefreshMysteelChemicalData Result:%s", string(result))
  586. }
  587. // getEdbTerminal 根据指标来源获取可用指标终端信息
  588. func getEdbTerminal(source int) (edbTerminal *data_manage.EdbTerminal) {
  589. terminalNumList, err := data_manage.GetMysteelChemicalGroupTerminalNum()
  590. if err != nil {
  591. return
  592. }
  593. terminalNumMap := make(map[string]int)
  594. for _, v := range terminalNumList {
  595. terminalNumMap[v.TerminalCode] = v.Num
  596. }
  597. terminalList, err := data_manage.GetEdbTerminalListBySource(source)
  598. if err != nil {
  599. return
  600. }
  601. num := 0
  602. for _, v := range terminalList {
  603. tmpNum := terminalNumMap[v.TerminalCode]
  604. if edbTerminal == nil {
  605. edbTerminal = v
  606. num = tmpNum
  607. } else if tmpNum < num {
  608. edbTerminal = v
  609. num = tmpNum
  610. }
  611. }
  612. return
  613. }