ermcpGGConvertconfig.go 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. /**
  2. * @Author: zou.yingbin
  3. * @Create : 2021/1/27 9:50
  4. * @Modify : 2021/1/27 9:50
  5. */
  6. package models
  7. import (
  8. "fmt"
  9. "mtp2_if/db"
  10. "mtp2_if/mtpcache"
  11. )
  12. // ErmcpGGConvertCfg 期货品种系数表
  13. type ErmcpGGConvertCfg struct {
  14. Srcgoodsgroupid int32 `json:"srcgoodsgroupid" xorm:"'Srcgoodsgroupid'"` // 源品种ID
  15. Destgoodsgroupid int32 `json:"destgoodsgroupid" xorm:"'Destgoodsgroupid'"` // 目标品种ID
  16. Convertratio float64 `json:"convertratio" xorm:"'Convertratio'"` // 折算系数
  17. SrcExchangeCode string `json:"srcexchangecode" xorm:"'SrcExchangeCode'"` // 源期货交易所
  18. SrcName string `json:"srcname" xorm:"'SrcName'"` // 源品种名称
  19. SrcCode string `json:"srccode" xorm:"'SrcCode'"` // 源品种代码
  20. SrcUnitid uint32 `json:"srcunitid" xorm:"'SrcUnitid'"` // 源品种单位ID
  21. SrcUnitidName string `json:"srcunitidname" xorm:"'-'"` // 源品种单位名称
  22. DstExchangeCode string `json:"dstexchangecode" xorm:"'DstExchangeCode'"` // 目标期货交易所
  23. DstName string `json:"dstname" xorm:"'DstName'"` // 目标品种名称
  24. DstCode string `json:"dstcode" xorm:"'DstCode'"` // 目录品种代码
  25. DstUnitid uint32 `json:"dstunitid" xorm:"'DstUnitid'"` // 目标品种单位ID
  26. DstUnitidName string `json:"dstunitidname"` // 目标品种单位名称
  27. MODIFYTIME string `json:"modifytime" xorm:"'MODIFYTIME'"` // 修改时间
  28. }
  29. // Calc 获取品种单位名称
  30. func (r *ErmcpGGConvertCfg) Calc() {
  31. r.SrcUnitidName = mtpcache.GetEnumDicitemName(int32(r.SrcUnitid))
  32. r.DstUnitidName = mtpcache.GetEnumDicitemName(int32(r.DstUnitid))
  33. }
  34. // GetData 获取数据
  35. func (r *ErmcpGGConvertCfg) GetData() ([]interface{}, error) {
  36. sData := make([]ErmcpGGConvertCfg, 0)
  37. if err := db.GetEngine().SQL(r.buildSql()).Find(&sData); err != nil {
  38. return nil, err
  39. }
  40. iData := make([]interface{}, 0)
  41. for i := range sData {
  42. sData[i].Calc()
  43. iData = append(iData, &sData[i])
  44. }
  45. return iData, nil
  46. }
  47. // GetData2 获取数据
  48. func (r *ErmcpGGConvertCfg) GetData2() ([]ErmcpGGConvertCfg, error) {
  49. sData := make([]ErmcpGGConvertCfg, 0)
  50. if err := db.GetEngine().SQL(r.buildSql()).Find(&sData); err != nil {
  51. return nil, err
  52. }
  53. for i := range sData {
  54. sData[i].Calc()
  55. }
  56. return sData, nil
  57. }
  58. func (r *ErmcpGGConvertCfg) buildSql() string {
  59. sqlId := "select t.srcgoodsgroupid," +
  60. " t.destgoodsgroupid," +
  61. " t.convertratio," +
  62. " to_char(t.modifytime,'yyyy-mm-dd hh24:mi:ss') modifytime," +
  63. " ex1.exexchangecode srcExchangeCode," +
  64. " g1.goodsgroupname srcName," +
  65. " g1.outergroupcode srcCode," +
  66. " g1.goodunitid srcUnitid," +
  67. " ex2.exexchangecode dstExchangeCode," +
  68. " g2.goodsgroupname dstName," +
  69. " g2.outergroupcode dstCode," +
  70. " g2.goodunitid dstUnitid" +
  71. " from ERMCP_GGConvertconfig t" +
  72. " left join goodsgroup g1" +
  73. " on t.srcgoodsgroupid = g1.goodsgroupid" +
  74. " left join goodsgroup g2" +
  75. " on t.destgoodsgroupid = g2.goodsgroupid" +
  76. " left join externalexchange ex1" +
  77. " on g1.exexchangeid = ex1.autoid" +
  78. " left join externalexchange ex2" +
  79. " on g2.exexchangeid = ex2.autoid" +
  80. " where 1 = 1"
  81. if r.Destgoodsgroupid > 0 {
  82. sqlId = sqlId + fmt.Sprintf("and t.Destgoodsgroupid=%v", r.Destgoodsgroupid)
  83. }
  84. if r.Srcgoodsgroupid > 0 {
  85. sqlId = sqlId + fmt.Sprintf("and t.Srcgoodsgroupid=%v", r.Srcgoodsgroupid)
  86. }
  87. sqlId += " order by t.destgoodsgroupid, t.modifytime desc"
  88. return sqlId
  89. }
  90. // ErmcpAvalidGoodsGroupModel 可选择的源期货品种
  91. type ErmcpAvalidGoodsGroupModel struct {
  92. Goodsgroupid int32 `json:"goodsgroupid" xorm:"'Goodsgroupid'"` // 期货品种id
  93. Goodsgroupname string `json:"goodsgroupname" xorm:"'Goodsgroupname'"` // 期货品种名称
  94. Outergroupcode string `json:"outergroupcode" xorm:"'Outergroupcode'"` // 期货品种代码
  95. Goodunitid int32 `json:"goodunitid" xorm:"'Goodunitid'"` // 品种单位id
  96. GoodunitName string `json:"goodunitname" xorm:"'GoodunitName'"` // 品种单位名称
  97. AreaUserId int64 `json:"-"` // 所属机构id
  98. }
  99. // GetDataEx 获取数据
  100. func (r *ErmcpAvalidGoodsGroupModel) GetDataEx() (interface{}, error) {
  101. sData := make([]ErmcpAvalidGoodsGroupModel, 0)
  102. err := db.GetEngine().SQL(r.buildSql()).Find(&sData)
  103. return sData, err
  104. }
  105. func (r *ErmcpAvalidGoodsGroupModel) buildSql() string {
  106. sqlId := "select distinct g.groupcategroyid," +
  107. " g.goodsgroupid," +
  108. " g.goodsgroupname," +
  109. " g.outergroupcode," +
  110. " g.goodunitid" +
  111. " from ERMCP_GGConvertconfig t" +
  112. " left join goodsgroup g" +
  113. " on t.srcgoodsgroupid = g.goodsgroupid" +
  114. " where g.groupcategroyid not in" +
  115. " (select g.groupcategroyid" +
  116. " from erms_middlegoods t" +
  117. " left join goodsgroup g" +
  118. " on t.goodsgroupid = g.goodsgroupid" +
  119. " where t.areauserid = %v" +
  120. " and t.goodsgroupid is not null)"
  121. sqlId = fmt.Sprintf(sqlId, r.AreaUserId)
  122. return sqlId
  123. }