ermcpHedgePlan.go 3.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. /**
  2. * @Author: zou.yingbin
  3. * @Create : 2021/1/7 17:58
  4. * @Modify : 2021/1/7 17:58
  5. */
  6. package models
  7. import (
  8. "fmt"
  9. "mtp2_if/db"
  10. "mtp2_if/logger"
  11. )
  12. // 套保计划表结构
  13. type ErmcpHedgePlan struct {
  14. Areauserid int64 `json:"areauserid" xorm:"'Areauserid'"` //用户ID
  15. Hedgeplanid string `json:"hedgeplanid" xorm:"'Hedgeplanid'"` //套保计划ID(601+Unix秒时间戳(10位)+xxxxxx)
  16. Hedgeplanno string `json:"hedgeplanno" xorm:"'Hedgeplanno'"` //套保计划编号(名称)
  17. Contracttype int `json:"contracttype" xorm:"'Contracttype'"` //计划类型 - 1:采购 -1:销售
  18. Deliverygoodsid int `json:"deliverygoodsid" xorm:"'Deliverygoodsid'"` //现货品种ID
  19. Deliverygoodsname string `json:"deliverygoodsname" xorm:"'Deliverygoodsname'"` //现货品种名称
  20. Wrstandardid int `json:"wrstandardid" xorm:"'Wrstandardid'"` //现货商品ID
  21. Wrstandardname string `json:"wrstandardname" xorm:"'Wrstandardname'"` // 现货商品名称
  22. Producttype int `json:"producttype" xorm:"'Producttype'"` //产品类型 - 1:标准仓单 2:等标 3:非标
  23. Spotgoodsdesc string `json:"spotgoodsdesc" xorm:"'Spotgoodsdesc'"` //商品型号
  24. Planqty float64 `json:"planqty" xorm:"'Planqty'"` //计划数量
  25. Convertfactor float64 `json:"convertfactor" xorm:"'Convertfactor'"` //标仓系数
  26. Plantime string `json:"plantime" xorm:"'Plantime'"` //计划时间
  27. Hedgeplanstatus int `json:"hedgeplanstatus" xorm:"'Hedgeplanstatus'"` //套保计划状态 - 0:未提交 1:待审核 2:执行中 3:正常完结 4:审核拒绝 5:异常完结 6:已撤回
  28. Remark string `json:"remark" xorm:"'Remark'"` //备注
  29. CREATETIME string `json:"createtime" xorm:"'CREATETIME'"` //创建时间
  30. UPDATETIME string `json:"updatetime" xorm:"'UPDATETIME'"` //更新时间
  31. AUDITTIME string `json:"audittime" xorm:"'AUDITTIME'"` //审核时间
  32. }
  33. func (r *ErmcpHedgePlan) buildSql(status string) string {
  34. str := "select to_char(t.Hedgeplanid) Hedgeplanid," +
  35. " t.Hedgeplanno," +
  36. " t.Contracttype," +
  37. " t.Deliverygoodsid," +
  38. " t.g.Deliverygoodsname," +
  39. " t.Wrstandardid," +
  40. " w.Wrstandardname," +
  41. " t.Producttype," +
  42. " t.Spotgoodsdesc," +
  43. " t.Planqty," +
  44. " t.Convertfactor," +
  45. " to_char(t.Plantime,'yyyy-mm-dd hh24:mi:ss') Plantime," +
  46. " to_char(t.createtime,'yyyy-mm-dd hh24:mi:ss') createtime," +
  47. " to_char(t.updatetime, 'yyyy-mm-dd hh24:mi:ss') updatetime," +
  48. " to_char(t.audittime, 'yyyy-mm-dd hh24:mi:ss') audittime," +
  49. " t.Hedgeplanstatus," +
  50. " t.Remark" +
  51. " from ermcp_hedgeplan t" +
  52. " left join wrstandard w" +
  53. " on t.wrstandardid = w.wrstandardid" +
  54. " left join deliverygoods g" +
  55. " on t.deliverygoodsid = g.deliverygoodsid" +
  56. " where t.hedgeplanstatus in (%v) and t.areauserid=%v"
  57. if status == "2" {
  58. // 执行中状态,按审核时间倒序
  59. str += " order by t.audittime desc"
  60. } else {
  61. str += " order by t.updatetime desc"
  62. }
  63. return fmt.Sprintf(str, status, r.Areauserid)
  64. }
  65. // 从数据库中查询套保计划数据
  66. func (r *ErmcpHedgePlan) GetData(status string) ([]ErmcpHedgePlan, error) {
  67. e := db.GetEngine()
  68. sData := make([]ErmcpHedgePlan, 0)
  69. if err := e.SQL(r.buildSql(status)).Find(&sData); err != nil {
  70. logger.GetLogger().Errorf("query hedgeplan:%v", err)
  71. return sData, err
  72. }
  73. return sData, nil
  74. }