| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208 |
- /**
- * @Author: zou.yingbin
- * @Create : 2021/1/26 13:42
- * @Modify : 2021/1/26 13:42
- */
- package models
- import (
- "fmt"
- "mtp2_if/db"
- "mtp2_if/logger"
- "mtp2_if/mtpcache"
- )
- // ErmcpMiddleGoodsModel 套保品种
- type ErmcpMiddleGoodsModel struct {
- MIDDLEGOODSID uint32 `json:"middlegoodsid" xorm:"'MIDDLEGOODSID'"` // 套保品种ID(SEQ_ERMS_MIDDLEGOODS)
- MIDDLEGOODSNAME string `json:"middlegoodsname" xorm:"'MIDDLEGOODSNAME'"` // 套保品种名称
- MIDDLEGOODSCODE string `json:"middlegoodscode" xorm:"'MIDDLEGOODSCODE'"` // 套保品种代码
- GOODSUNITID int32 `json:"goodsunitid" xorm:"'GOODSUNITID'"` // 单位ID
- RELATEDGOODSID int32 `json:"relatedgoodsid" xorm:"'RELATEDGOODSID'"` // 关联交易商品ID
- EVALUATERATIO float64 `json:"evaluateratio" xorm:"'EVALUATERATIO'"` // 估价系数
- QTYDECIMALPLACE int32 `json:"qtydecimalplace" xorm:"'QTYDECIMALPLACE'"` // 数量小数位
- RELATEDGOODSTYPE int32 `json:"relatedgoodstype" xorm:"'RELATEDGOODSTYPE'"` // 关联商品类型 - 1:期货合约 2:现货品种
- NEEDHEDGERATIO float64 `json:"needhedgeratio" xorm:"'NEEDHEDGERATIO'"` // 套保比率
- NEEDARBITRAGERATIO float64 `json:"needarbitrageratio" xorm:"'NEEDARBITRAGERATIO'"` // 套利比例
- AREAUSERID int64 `json:"areauserid" xorm:"'AREAUSERID'"` // 机构用户ID
- GOODSGROUPID int32 `json:"goodsgroupid" xorm:"'GOODSGROUPID'"` // 关联期货品种ID
- ISVALID int32 `json:"isvalid" xorm:"'ISVALID'"` // 状态 0-无效(停用) 1-有效(正常)
- MODIFYTIME string `json:"modifytime" xorm:"'MODIFYTIME'"` // 修改时间
- CREATETIME string `json:"createtime" xorm:"'CREATETIME'"` // 修改时间
- REMARK string `json:"remark" xorm:"'REMARK'"` // 备注
- ENUMDICNAME string `json:"enumdicname"` // 单位名称
- }
- func (r *ErmcpMiddleGoodsModel) Calc() {
- r.ENUMDICNAME = mtpcache.GetEnumDicitemName(r.GOODSUNITID)
- }
- // GetData 获取套保品种数据
- func (r *ErmcpMiddleGoodsModel) GetData() ([]interface{}, error) {
- sData := make([]ErmcpMiddleGoodsModel, 0)
- if err := db.GetEngine().SQL(r.buildSql()).Find(&sData); err != nil {
- logger.GetLogger().Error(err)
- return nil, err
- }
- iData := make([]interface{}, 0)
- for i := range sData {
- iData = append(iData, &sData[i])
- }
- return iData, nil
- }
- // GetData2 获取套保品种数据2
- func (r *ErmcpMiddleGoodsModel) GetData2() ([]ErmcpMiddleGoodsModel, error) {
- sData := make([]ErmcpMiddleGoodsModel, 0)
- if err := db.GetEngine().SQL(r.buildSql()).Find(&sData); err != nil {
- logger.GetLogger().Error(err)
- return nil, err
- }
- for i := range sData {
- sData[i].Calc()
- }
- return sData, nil
- }
- func (r *ErmcpMiddleGoodsModel) buildSql() string {
- sqlId := "select MIDDLEGOODSID," +
- " MIDDLEGOODSNAME," +
- " MIDDLEGOODSCODE," +
- " GOODSUNITID," +
- " RELATEDGOODSID," +
- " EVALUATERATIO," +
- " QTYDECIMALPLACE," +
- " RELATEDGOODSTYPE," +
- " NEEDHEDGERATIO," +
- " NEEDARBITRAGERATIO," +
- " AREAUSERID," +
- " GOODSGROUPID," +
- " to_char(MODIFYTIME, 'yyyy-mm-dd hh24:mi:ss') MODIFYTIME," +
- " to_char(CREATETIME, 'yyyy-mm-dd hh24:mi:ss') CREATETIME," +
- " ISVALID," +
- " REMARK" +
- " from erms_middlegoods t" +
- " where 1=1 "
- if r.AREAUSERID > 0 {
- sqlId = sqlId + fmt.Sprintf(" and AREAUSERID = %v", r.AREAUSERID)
- }
- if r.ISVALID >= 0 {
- sqlId = sqlId + fmt.Sprintf(" and ISVALID=%v", r.ISVALID)
- }
- if r.MIDDLEGOODSID > 0 {
- sqlId = sqlId + fmt.Sprintf(" and MIDDLEGOODSID=%v", r.MIDDLEGOODSID)
- }
- sqlId += " order by t.createtime desc"
- return sqlId
- }
- // ErmcpMiddleGoodsDetail 套保品种详情
- type ErmcpMiddleGoodsDetail struct {
- Mg ErmcpMiddleGoodsModel // 套保品种基本信息
- CvList []ErmcpGGConvertCfg // 期货品种折算列表
- WrcList []WRSConverTDetail // 现货品种列表(现货商品折算配置)
- }
- // GetData 获取套保品种详情
- func (r *ErmcpMiddleGoodsDetail) GetData() ([]ErmcpMiddleGoodsDetail, error) {
- rsp := make([]ErmcpMiddleGoodsDetail, 0)
- // 查基本信息
- m := ErmcpMiddleGoodsModel{AREAUSERID: r.Mg.AREAUSERID, MIDDLEGOODSID: r.Mg.MIDDLEGOODSID, ISVALID: -1}
- d, err := m.GetData2()
- if err != nil || len(d) == 0 {
- return rsp, fmt.Errorf("no record")
- }
- for i := range d {
- val := ErmcpMiddleGoodsDetail{Mg: d[i],
- CvList: make([]ErmcpGGConvertCfg, 0),
- WrcList: make([]WRSConverTDetail, 0),
- }
- rsp = append(rsp, val)
- }
- // 查折算表
- md := ErmcpGGConvertCfg{}
- if ggc, err := md.GetData2(); err == nil {
- for i := range rsp {
- for k := range ggc {
- if rsp[i].Mg.GOODSGROUPID == ggc[k].Destgoodsgroupid {
- rsp[i].CvList = append(rsp[i].CvList, ggc[k])
- }
- }
- }
- }
- // 查现货商品折算配置明细表
- mWc := WRSConverTDetail{}
- if wc, err := mWc.GetData(); err == nil {
- for i := range rsp {
- for k := range wc {
- if int64(rsp[i].Mg.MIDDLEGOODSID) == wc[k].MIDDLEGOODSID {
- rsp[i].WrcList = append(rsp[i].WrcList, wc[k])
- }
- }
- }
- }
- return rsp, nil
- }
- // ErmcpMiddleGoodsChangeLog 套保品种变更记录
- type ErmcpMiddleGoodsChangeLog struct {
- LOGID int64 `json:"logid" xorm:"'LOGID'"` // 流水ID
- MIDDLEGOODSID int `json:"middlegoodsid" xorm:"'MIDDLEGOODSID'"` // 套保品种ID
- CHANGELOGTYPE int32 `json:"changelogtype" xorm:"'CHANGELOGTYPE'"` // 变更流水类型 - 1:套保比率变更
- BEFOREVALUE float64 `json:"beforevalue" xorm:"'BEFOREVALUE'"` // 变更前
- AFTERVALUE float64 `json:"aftervalue" xorm:"'AFTERVALUE'"` // 变更后
- LOGDATETIME string `json:"logdatetime" xorm:"'LOGDATETIME'"` // 流水日期
- LOGREMARK string `json:"logremark" xorm:"'LOGREMARK'"` // 流水备注
- HANDLESTATUS int32 `json:"handlestatus" xorm:"'HANDLESTATUS'"` // 处理状态
- TRADEDATE string `json:"tradedate" xorm:"'TRADEDATE'"` // 交易日(yyyyMMdd)
- UPDATETIME string `json:"updatetime" xorm:"'UPDATETIME'"` // 更新时间
- APPLYSRC int32 `json:"applysrc" xorm:"'APPLYSRC'"` // 操作来源 - 1:管理端 2:终端
- APPLYID int64 `json:"applyid" xorm:"'APPLYID'"` // 操作人
- APPLYNAME string `json:"applyname"` // 操作人名称
- }
- func (r *ErmcpMiddleGoodsChangeLog) buildSql() string {
- sqlId := "SELECT LOGID," +
- " MIDDLEGOODSID," +
- " CHANGELOGTYPE," +
- " BEFOREVALUE," +
- " AFTERVALUE," +
- " to_char(LOGDATETIME, 'yyyy-mm-dd hh24:mi:ss') LOGDATETIME," +
- " LOGREMARK," +
- " HANDLESTATUS," +
- " TRADEDATE," +
- " to_char(UPDATETIME, 'yyyy-mm-dd hh24:mi:ss') UPDATETIME," +
- " APPLYSRC," +
- " APPLYID" +
- " FROM ermcp_mgchangelog" +
- " WHERE 1 = 1"
- if r.MIDDLEGOODSID > 0 {
- sqlId = sqlId + fmt.Sprintf(" and MIDDLEGOODSID=%v", r.MIDDLEGOODSID)
- }
- return sqlId
- }
- // Calc 处理要转换的数据
- func (r *ErmcpMiddleGoodsChangeLog) Calc() {
- r.APPLYNAME = mtpcache.GetUserNameByUserId(r.APPLYID)
- if r.APPLYNAME == "" {
- // APPLYID 原来数据库存的是userid, 后来又改为loginid
- // 当为loginid时,获取logincode
- r.APPLYNAME = mtpcache.GetLoginCodeByLoginId(r.APPLYID)
- }
- }
- // GetDataEx 获取套保变更操作数据
- func (r *ErmcpMiddleGoodsChangeLog) GetDataEx() (interface{}, error) {
- sData := make([]ErmcpMiddleGoodsChangeLog, 0)
- if err := db.GetEngine().SQL(r.buildSql()).Find(&sData); err != nil {
- return nil, err
- }
- for i := range sData {
- sData[i].Calc()
- }
- return sData, nil
- }
|