enter_score.go 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296
  1. package cygx
  2. import (
  3. "github.com/beego/beego/v2/client/orm"
  4. "time"
  5. )
  6. // CygxEnterScore 结构体代表了 cygx_enter_score 表格
  7. type CygxEnterScore struct {
  8. EnterScoreId int `orm:"column(enter_score_id);pk";comment:"主键"`
  9. CompanyId int `comment:"公司ID"`
  10. CompanyName string `comment:"客户名称"`
  11. StartDate string `comment:"开始日期"`
  12. EndDate string `comment:"结束日期"`
  13. Quarter string `comment:"季度"`
  14. EnterScoreType int `comment:"录入方式 1:按评分录入、2:按比例录入"`
  15. Ranking string `comment:"排名"`
  16. IsMergeScoring int `comment:"是否合并打分"`
  17. SecuritiesFirmsName string `comment:"券商名称"`
  18. MergeProportion float64 `comment:"合并占比"`
  19. RaiProportionTotal float64 `comment:"权益研究员占比"`
  20. FiccProportionTotal float64 `comment:"FICC研究员占比"`
  21. ProportionTotal float64 `comment:"合计总占比"`
  22. SellerId int `comment:"所属销售id"`
  23. SellerName string `comment:"所属销售名称"`
  24. AdminId int `comment:"操作人ID"`
  25. AdminName string `comment:"操作人姓名"`
  26. CreateTime time.Time `comment:"创建时间"`
  27. ModifyTime time.Time `comment:"更新时间"`
  28. }
  29. type CygxEnterScoreDetailResp struct {
  30. EnterScoreId int `comment:"录分ID"`
  31. CompanyId int `comment:"公司ID,公司标识符"`
  32. CompanyName string `comment:"公司名称"`
  33. StartDate string `comment:"开始日期"`
  34. EndDate string `comment:"结束日期"`
  35. Quarter []string `comment:"季度,评分季度"`
  36. EnterScoreType int `comment:"录入方式 1:按评分录入、2:按比例录入"`
  37. Ranking string `comment:"排名"`
  38. IsMergeScoring int `comment:"是否合并打分"`
  39. SecuritiesFirmsName string `comment:"券商名称"`
  40. MergeProportion float64 `comment:"合并占比"`
  41. ProportionTotal float64 `comment:"合计总占比"`
  42. RaiProportionTotal float64 `comment:"权益研究员占比"`
  43. FiccProportionTotal float64 `comment:"FICC研究员占比"`
  44. EnterScoreObj EnterScoreDateObj `comment:"按评分录入"`
  45. PercentageObj EnterScoreDateObj `comment:"按比例录入"`
  46. }
  47. // 行业
  48. type EnterScoreDateObj struct {
  49. ListRai []*EnterScorePermissionListResp //权益列表
  50. ListFicc []*EnterScorePermissionListResp //FICC列表
  51. ListGroup []*EnterScoreGroupListResp //其他配置信息
  52. }
  53. // 行业
  54. type EnterScorePermissionListResp struct {
  55. ChartPermissionName string `description:"行业名称"`
  56. Proportion float64 `description:"占比"`
  57. EnterScoreId int `comment:"录分ID"`
  58. List []*EnterScoreRealNameListResp
  59. }
  60. // 研究员
  61. type EnterScoreRealNameListResp struct {
  62. RealName string `comment:"研究员姓名"`
  63. Proportion float64 `comment:"占比"`
  64. ChartPermissionName string `comment:"行业名称"`
  65. }
  66. // 其他分组
  67. type EnterScoreGroupListResp struct {
  68. GroupName string `description:"组名"`
  69. Proportion float64 `description:"占比"`
  70. }
  71. // 添加或修改录分时的入参结构体
  72. type UpdateEnterScoreReq struct {
  73. EnterScoreId int `comment:"录分ID"`
  74. CompanyId int `comment:"公司ID"`
  75. CompanyName string `comment:"客户名称"`
  76. StartDate string `comment:"开始日期"`
  77. EndDate string `comment:"结束日期"`
  78. Quarter []string `comment:"季度"`
  79. EnterScoreType int `comment:"录入方式 1:按评分录入、2:按比例录入"`
  80. Ranking string `comment:"排名"`
  81. IsMergeScoring int `comment:"是否合并打分"`
  82. SecuritiesFirmsName string `comment:"券商名称"`
  83. MergeProportion float64 `comment:"合并占比"`
  84. RaiProportionTotal float64 `comment:"权益研究员占比"`
  85. FiccProportionTotal float64 `comment:"FICC研究员占比"`
  86. ProportionTotal float64 `comment:"合计总占比"`
  87. ListRai []*EnterScorePermissionListResp //权益列表
  88. ListFicc []*EnterScorePermissionListResp //FICC列表
  89. ListGroup []*EnterScoreGroupListResp //其他配置信息
  90. }
  91. // CygxEnterScoreGroup 结构体代表 cygx_enter_score_group 表
  92. type CygxEnterScoreGroup struct {
  93. EnterScoreGroupId int `orm:"column(enter_score_group_id);pk";comment:"主键"`
  94. EnterScoreId int `comment:"cygx_enter_score主键"`
  95. GroupName string `comment:"名称"`
  96. Proportion float64 `comment:"占比"`
  97. AdminId int `comment:"操作人ID"`
  98. AdminName string `comment:"操作人姓名"`
  99. CreateTime time.Time `comment:"创建时间"`
  100. ModifyTime time.Time `comment:"更新时间"`
  101. }
  102. // CygxEnterScorePermission 结构体代表 cygx_enter_score_permission 表
  103. type CygxEnterScorePermission struct {
  104. EnterScorePermissionId int `orm:"column(enter_score_permission_id);pk";comment:"主键"`
  105. EnterScoreId int `comment:"cygx_enter_score主键"`
  106. ChartPermissionName string `comment:"名称"`
  107. Proportion float64 `comment:"占比"`
  108. ProductId float64 `comment:"产品id,1:FICC、2:权益"`
  109. AdminId int `comment:"操作人ID"`
  110. AdminName string `comment:"操作人姓名"`
  111. CreateTime time.Time `comment:"创建时间"`
  112. ModifyTime time.Time `comment:"更新时间"`
  113. }
  114. // CygxEnterScoreResearcher 结构体代表 cygx_enter_score_researcher 表
  115. type CygxEnterScoreResearcher struct {
  116. EnterScoreDataId int `orm:"column(enter_score_data_id);pk";comment:"主键"`
  117. EnterScoreId int `comment:"cygx_enter_score主键"`
  118. Proportion float64 `comment:"占比"`
  119. RealName string `comment:"研究员姓名"`
  120. ChartPermissionName string `comment:"名称"`
  121. ProductId float64 `comment:"产品id,1:FICC、2:权益"`
  122. AdminId int `comment:"操作人ID"`
  123. AdminName string `comment:"操作人姓名"`
  124. CreateTime time.Time `comment:"创建时间"`
  125. ModifyTime time.Time `comment:"更新时间"`
  126. }
  127. // 更新派点信息
  128. func AddCygxEnterScore(item *CygxEnterScore, itemsPermission []*CygxEnterScorePermission, itemsResearcher []*CygxEnterScoreResearcher, itemsGroup []*CygxEnterScoreGroup) (err error) {
  129. o := orm.NewOrmUsingDB("hz_cygx")
  130. to, err := o.Begin()
  131. if err != nil {
  132. return
  133. }
  134. defer func() {
  135. if err != nil {
  136. _ = to.Rollback()
  137. } else {
  138. _ = to.Commit()
  139. }
  140. }()
  141. newId, err := to.Insert(item)
  142. if err != nil {
  143. return
  144. }
  145. enterScoreId := int(newId)
  146. for _, v := range itemsPermission {
  147. v.EnterScoreId = enterScoreId
  148. }
  149. for _, v := range itemsResearcher {
  150. v.EnterScoreId = enterScoreId
  151. }
  152. for _, v := range itemsGroup {
  153. v.EnterScoreId = enterScoreId
  154. }
  155. //批量添加行业信息
  156. _, err = to.InsertMulti(len(itemsPermission), itemsPermission)
  157. if err != nil {
  158. return
  159. }
  160. //批量添加研究员信息
  161. _, err = to.InsertMulti(len(itemsResearcher), itemsResearcher)
  162. if err != nil {
  163. return
  164. }
  165. //批量添加自定义分组信息
  166. _, err = to.InsertMulti(len(itemsGroup), itemsGroup)
  167. if err != nil {
  168. return
  169. }
  170. return
  171. }
  172. // 更新派点信息
  173. func UpdateCygxEnterScore(item *CygxEnterScore, itemsPermission []*CygxEnterScorePermission, itemsResearcher []*CygxEnterScoreResearcher, itemsGroup []*CygxEnterScoreGroup) (err error) {
  174. o := orm.NewOrmUsingDB("hz_cygx")
  175. to, err := o.Begin()
  176. if err != nil {
  177. return
  178. }
  179. defer func() {
  180. if err != nil {
  181. _ = to.Rollback()
  182. } else {
  183. _ = to.Commit()
  184. }
  185. }()
  186. _, err = to.Update(item, "CompanyId", "CompanyName", "StartDate", "EndDate", "Quarter", "EnterScoreType", "Ranking", "IsMergeScoring", "SecuritiesFirmsName", "MergeProportion", "RaiProportionTotal", "FiccProportionTotal", "ProportionTotal", "SellerId", "SellerName", "AdminId", "AdminName", "ModifyTime")
  187. if err != nil {
  188. return
  189. }
  190. enterScoreId := item.EnterScoreId
  191. //批量删除行业信息
  192. sql := `DELETE FROM cygx_enter_score_permission WHERE enter_score_id = ?`
  193. _, err = to.Raw(sql, enterScoreId).Exec()
  194. if err != nil {
  195. return
  196. }
  197. //批量删除研究员信息
  198. sql = ` DELETE FROM cygx_enter_score_researcher WHERE enter_score_id = ?`
  199. _, err = to.Raw(sql, enterScoreId).Exec()
  200. if err != nil {
  201. return
  202. }
  203. //批量删除自定义分组信息
  204. sql = ` DELETE FROM cygx_enter_score_group WHERE enter_score_id = ?`
  205. _, err = to.Raw(sql, enterScoreId).Exec()
  206. if err != nil {
  207. return
  208. }
  209. for _, v := range itemsPermission {
  210. v.EnterScoreId = enterScoreId
  211. }
  212. for _, v := range itemsResearcher {
  213. v.EnterScoreId = enterScoreId
  214. }
  215. for _, v := range itemsGroup {
  216. v.EnterScoreId = enterScoreId
  217. }
  218. //批量添加行业信息
  219. _, err = to.InsertMulti(len(itemsPermission), itemsPermission)
  220. if err != nil {
  221. return
  222. }
  223. //批量添加研究员信息
  224. _, err = to.InsertMulti(len(itemsResearcher), itemsResearcher)
  225. if err != nil {
  226. return
  227. }
  228. //批量添加自定义分组信息
  229. _, err = to.InsertMulti(len(itemsGroup), itemsGroup)
  230. if err != nil {
  231. return
  232. }
  233. return
  234. }
  235. // 通过ID获取详情
  236. func GetCygxEnterScoreInfoById(id int) (item *CygxEnterScore, err error) {
  237. o := orm.NewOrmUsingDB("hz_cygx")
  238. sql := `SELECT * FROM cygx_enter_score WHERE enter_score_id = ? `
  239. err = o.Raw(sql, id).QueryRow(&item)
  240. return
  241. }
  242. // 行业列表
  243. func GetCygxEnterScorePermissionListById(enterScoreId int) (items []*CygxEnterScorePermission, err error) {
  244. o := orm.NewOrmUsingDB("hz_cygx")
  245. sql := `SELECT * FROM cygx_enter_score_permission WHERE enter_score_id = ? `
  246. _, err = o.Raw(sql, enterScoreId).QueryRows(&items)
  247. return
  248. }
  249. // 研究员列表
  250. func GeCygxEnterScoreResearcherListById(enterScoreId int) (items []*CygxEnterScoreResearcher, err error) {
  251. o := orm.NewOrmUsingDB("hz_cygx")
  252. sql := `SELECT * FROM cygx_enter_score_researcher WHERE enter_score_id = ? `
  253. _, err = o.Raw(sql, enterScoreId).QueryRows(&items)
  254. return
  255. }
  256. // 研究员列表
  257. func GeCygxEnterScoreGroupListById(enterScoreId int) (items []*CygxEnterScoreGroup, err error) {
  258. o := orm.NewOrmUsingDB("hz_cygx")
  259. sql := `SELECT * FROM cygx_enter_score_group WHERE enter_score_id = ? `
  260. _, err = o.Raw(sql, enterScoreId).QueryRows(&items)
  261. return
  262. }