base_from_sci_hq.go 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230
  1. package data
  2. import (
  3. "errors"
  4. "eta/eta_api/models/data_manage"
  5. "eta/eta_api/utils"
  6. "time"
  7. )
  8. func AddSciHqClassify(classifyName, lang string, parentId int) (ok bool, err error) {
  9. var count int
  10. switch lang {
  11. case utils.EnLangVersion:
  12. count, err = data_manage.GetBaseFromSciHqClassifyEnCount(classifyName, parentId)
  13. default:
  14. count, err = data_manage.GetBaseFromSciHqClassifyCount(classifyName, parentId)
  15. }
  16. if err != nil {
  17. return
  18. }
  19. if count > 0 {
  20. return false, errors.New("分类已存在")
  21. }
  22. sort, err := data_manage.GetChildSciHqClassifyMaxSortById(parentId)
  23. if err != nil {
  24. return false, err
  25. }
  26. if parentId > 0 {
  27. count, err = data_manage.GetSciHqClassifyCountById(parentId)
  28. if err != nil {
  29. return false, err
  30. }
  31. if count == 0 {
  32. return false, errors.New("父分类不存在")
  33. }
  34. sciHqClassify := &data_manage.BaseFromSciHqClassify{
  35. ClassifyName: classifyName,
  36. ClassifyNameEn: classifyName,
  37. ParentId: parentId,
  38. Level: 2,
  39. Sort: sort + 1,
  40. ModifyTime: time.Now(),
  41. CreateTime: time.Now(),
  42. }
  43. _, err = sciHqClassify.Add()
  44. if err != nil {
  45. return
  46. }
  47. } else {
  48. sciHqClassify := &data_manage.BaseFromSciHqClassify{
  49. ClassifyName: classifyName,
  50. ClassifyNameEn: classifyName,
  51. ParentId: 0,
  52. Level: 1,
  53. Sort: sort + 1,
  54. ModifyTime: time.Now(),
  55. CreateTime: time.Now(),
  56. }
  57. insertId, er := sciHqClassify.Add()
  58. if er != nil {
  59. return false, er
  60. }
  61. sciHqClassifyList := []*data_manage.BaseFromSciHqClassify{
  62. {
  63. ClassifyName: "价格",
  64. ClassifyNameEn: "价格",
  65. ParentId: int(insertId),
  66. Level: 2,
  67. Sort: 1,
  68. ModifyTime: time.Now(),
  69. CreateTime: time.Now(),
  70. },
  71. {
  72. ClassifyName: "供应",
  73. ClassifyNameEn: "供应",
  74. ParentId: int(insertId),
  75. Level: 2,
  76. Sort: 2,
  77. ModifyTime: time.Now(),
  78. CreateTime: time.Now(),
  79. },
  80. {
  81. ClassifyName: "需求",
  82. ClassifyNameEn: "需求",
  83. ParentId: int(insertId),
  84. Level: 2,
  85. Sort: 3,
  86. ModifyTime: time.Now(),
  87. CreateTime: time.Now(),
  88. },
  89. {
  90. ClassifyName: "库存",
  91. ClassifyNameEn: "库存",
  92. ParentId: int(insertId),
  93. Level: 2,
  94. Sort: 4,
  95. ModifyTime: time.Now(),
  96. CreateTime: time.Now(),
  97. },
  98. }
  99. err = data_manage.BatchAddSciHqClassify(sciHqClassifyList)
  100. if err != nil {
  101. return
  102. }
  103. }
  104. return true, nil
  105. }
  106. func DelSciHqClassify(classifyId int) (err error) {
  107. classify, err := data_manage.GetSciHqClassifyById(classifyId)
  108. if err != nil {
  109. return
  110. }
  111. var classifyIds []int
  112. if classify.ParentId == 0 {
  113. classifyIds, err = data_manage.GetChildSciHqClassifyIdsById(classify.ClassifyId)
  114. if err != nil {
  115. return
  116. }
  117. } else {
  118. classifyIds = append(classifyIds, classify.ClassifyId)
  119. }
  120. // 获取分类下的所有指标
  121. count, err := data_manage.GetBaseFromSciIndexCountByClassifyIds(classifyIds)
  122. if err != nil {
  123. err = errors.New("获取分类下的指标信息失败,Err:" + err.Error())
  124. return
  125. }
  126. if count > 0 {
  127. err = errors.New("该分类下有指标,不可删除")
  128. return
  129. }
  130. // 删除对应的分类
  131. err = data_manage.DeleteSciHqClassifyByClassifyId(classifyIds)
  132. if err != nil {
  133. return
  134. }
  135. return
  136. }
  137. // ResetSciHqIndex 指标数据清除分类接口
  138. func ResetSciHqIndex(indexId int) (err error) {
  139. sciHqIndex, err := data_manage.GetBaseFromSciHqIndexByIndexId(indexId)
  140. if err != nil {
  141. return
  142. }
  143. // 更新指标在未分类下的排序,永远排在未分类的最后一个
  144. //移动排序
  145. classifyId := 0
  146. updateCol := make([]string, 0)
  147. var currentSort, prevSort int
  148. currentSort = sciHqIndex.Sort
  149. //未分类的最大的sort值
  150. prevSort, err = data_manage.GetBaseFromSciHqIndexMaxSortByClassifyId(classifyId)
  151. if err != nil {
  152. err = errors.New("获取上一个兄弟节点指标信息失败,Err:" + err.Error())
  153. return
  154. }
  155. //如果前面一个节点的sort值比当前大,则当前节点往下移动
  156. if prevSort >= currentSort {
  157. //往下移动
  158. err = data_manage.MoveDownSciIndexBySort(classifyId, prevSort, currentSort)
  159. if err != nil {
  160. err = errors.New("向下移动出错:" + err.Error())
  161. return
  162. }
  163. sciHqIndex.Sort = prevSort
  164. }
  165. //更新
  166. sciHqIndex.ModifyTime = time.Now()
  167. sciHqIndex.ClassifyId = classifyId
  168. updateCol = append(updateCol, "Sort", "ModifyTime", "ClassifyId")
  169. err = sciHqIndex.Update(updateCol)
  170. if err != nil {
  171. err = errors.New("移动失败,Err:" + err.Error())
  172. return
  173. }
  174. return
  175. }
  176. // DelSciHqData 删除卓创红期指标
  177. func DelSciHqData(indexId int) (err error, errMsg string) {
  178. baseFromSciHqIndex, err := data_manage.GetBaseFromSciHqIndexByIndexId(indexId)
  179. if err != nil {
  180. errMsg = `获取数据失败`
  181. if err.Error() == utils.ErrNoRow() {
  182. errMsg = `该指标未入库`
  183. err = nil
  184. }
  185. return
  186. }
  187. // 获取已经加入到EDB指标库的Sci指标
  188. edbInfo, err := data_manage.GetEdbInfoByEdbCode(utils.DATA_SOURCE_SCI_HQ, baseFromSciHqIndex.IndexCode)
  189. if err != nil && err.Error() != utils.ErrNoRow() {
  190. errMsg = "删除失败"
  191. err = errors.New("获取分类下的指标信息失败,Err:" + err.Error())
  192. return
  193. }
  194. if edbInfo != nil {
  195. errMsg = "当前指标已被引用,不可删除"
  196. err = nil
  197. return
  198. }
  199. // 删除对应的分类和指标
  200. err = data_manage.DeleteBaseFromSciIndexById(indexId)
  201. if err != nil {
  202. return
  203. }
  204. return
  205. }
  206. // EditSciHqIndex 编辑卓创红期指标
  207. func EditSciHqIndex(indexId, classifyId int) (baseFromSciHqIndex *data_manage.BaseFromSciHqIndex, err error) {
  208. baseFromSciHqIndex, err = data_manage.GetBaseFromSciHqIndexByIndexId(indexId)
  209. if err != nil {
  210. return
  211. }
  212. baseFromSciHqIndex.ClassifyId = classifyId
  213. baseFromSciHqIndex.ModifyTime = time.Now()
  214. err = baseFromSciHqIndex.Update([]string{"ClassifyId", "ModifyTime"})
  215. return
  216. }