| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163 |
- /**
- * @Author: zou.yingbin
- * @Create : 2021/1/12 10:38
- * @Modify : 2021/1/12 10:38
- */
- package models
- import (
- "fmt"
- "mtp2_if/db"
- "mtp2_if/logger"
- "mtp2_if/mtpcache"
- "strconv"
- )
- // ErmcpOPApplyModel 现货合同操作数据
- type ErmcpOPApplyModel struct {
- USERID int64 `json:"userid" xorm:"'USERID'"` // 用户ID
- OPERATEAPPLYID string `json:"operateapplyid" xorm:"'OPERATEAPPLYID'"` // 操作申请ID(603+Unix秒时间戳(10位)+xxxxxx)
- OPERATEAPPLYTYPE int32 `json:"operateapplytype" xorm:"'OPERATEAPPLYTYPE'"` // 操作申请类型 - 1:点价 2:结算登记 3:款项登记 4:发票登记
- RELATEDID string `json:"relatedid" xorm:"'RELATEDID'"` // 现货合同ID
- DETAILJSON string `json:"-" xorm:"'DETAILJSON'"` // 明细JSON
- APPLYID string `json:"applyid" xorm:"'APPLYID'"` // 申请人
- APPLYTIME string `json:"applytime" xorm:"'APPLYTIME'"` // 申请时间
- APPLYSTATUS int32 `json:"applystatus" xorm:"'APPLYSTATUS'"` // 申请状态 - 1:待审核 2:审核通过 3:审核拒绝 4:处理失败 5:已撤回
- AUDITTIME string `json:"audittime" xorm:"'AUDITTIME'"` // 审核时间
- CONTRACTTYPE int32 `json:"contracttype" xorm:"'CONTRACTTYPE'"` // 现货合同类型 - 1:采购 -1:销售
- CONTRACTNO string `json:"contractno" xorm:"'CONTRACTNO'"` // 合同编号
- PRICETYPE int32 `json:"pricetype" xorm:"'PRICETYPE'"` // 定价类型 - 1:一口价 2:点价 3:暂定价
- PRICEMOVE float64 `json:"pricemove" xorm:"'PRICEMOVE'"` // 升贴水
- GOODSNAME string `json:"goodsname" xorm:"'GOODSNAME'"` // 商品名称
- GOODSCODE string `json:"goodscode" xorm:"'GOODSCODE'"` // 点价合约
- EnumdicName string `json:"enumdicname" xorm:"'ENUMDICNAME'"` // 单位名称
- BUYUSERNAME string `json:"buyusername" xorm:"'BUYUSERNAME'"` // 采购方名称
- SELLUSERNAME string `json:"sellusername" xorm:"'SELLUSERNAME'"` // 销售方名字
- AUDITID string `json:"auditid" xorm:"'AUDITID'"` // 审核人ID
- APPLYNAME string `json:"applyname" xorm:"'APPLYNAME'"` // 申请人名称
- AUDITNAME string `json:"auditname" xorm:"'AUDITNAME'"` // 审核人名称
- CONTRACTSTATUS int32 `json:"contractstatus" xorm:"'CONTRACTSTATUS'"` // 合同状态- 0:未提交 1:待审核 2:执行中 3:正常完结 4:审核拒绝 5:异常完结 6:已撤回
- ATTACHURL string `json:"attachurl" xorm:"'ATTACHURL'"` // 附件
- WRSTANDARDNAME string `json:"wrstandardname" xorm:"'WRSTANDARDNAME'"` // 品类名称
- WRSTANDARDCODE string `json:"wrstandardcode" xorm:"'WRSTANDARDCODE'"` // 品类代码
- WRSTANDARDID int `json:"wrstandardid" xorm:"'WRSTANDARDID'"` // 品类id
- DELIVERYGOODSID int `json:"deliverygoodsid" xorm:"'DELIVERYGOODSID'"` // 现货商品ID
- DELIVERYGOODSCODE string `json:"deliverygoodscode" xorm:"'DELIVERYGOODSCODE'"` // 现货品种代码
- DELIVERYGOODSNAME string `json:"deliverygoodsname" xorm:"'DELIVERYGOODSNAME'"` // 现货品种名称
- FilterAppStatus string `json:"-"` // 状态过滤条件
- UserType int32 `json:"-"`
- }
- func (r *ErmcpOPApplyModel) calc() {
- // 管理端applyid存的是管理员表的autoid
- if len(r.APPLYID) < 8 && r.APPLYNAME == "" {
- if id, err := strconv.ParseInt(r.APPLYID, 10, 64); err == nil {
- r.APPLYNAME = mtpcache.GetSystemmangerLoginCode(id)
- }
- }
- if len(r.AUDITID) < 8 && r.AUDITNAME == "" {
- if id, err := strconv.ParseInt(r.AUDITID, 10, 64); err == nil {
- r.AUDITNAME = mtpcache.GetSystemmangerLoginCode(id)
- }
- }
- }
- func (r *ErmcpOPApplyModel) buildSql(opType int32) string {
- sqlId := "select to_char(t.OPERATEAPPLYID) OPERATEAPPLYID," +
- " t.OPERATEAPPLYTYPE," +
- " to_char(t.RELATEDID) RELATEDID," +
- " t.DETAILJSON," +
- " to_char(t.APPLYID) APPLYID," +
- " to_char(t.APPLYTIME, 'yyyy-mm-dd hh24:mi:ss') APPLYTIME," +
- " t.APPLYSTATUS," +
- " to_char(t.auditid) auditid," +
- " to_char(t.AUDITTIME, 'yyyy-mm-dd hh24:mi:ss') AUDITTIME," +
- " t.CONTRACTTYPE," +
- " to_char(t.attachurl) attachurl," +
- " s.CONTRACTNO," +
- " s.PRICETYPE," +
- " s.pricemove," +
- " s.userid," +
- " s.contractstatus," +
- " dg.deliverygoodsid," +
- " dg.deliverygoodscode," +
- " dg.deliverygoodsname," +
- " w.wrstandardname," +
- " w.wrstandardcode," +
- " w.wrstandardid," +
- " g.GOODSNAME," +
- " g.GOODSCODE," +
- " e.EnumdicName," +
- " u3.logincode APPLYName," +
- " u4.logincode auditName," +
- " u1.accountname buyuserName," +
- " u2.accountname selluserName" +
- " from ermcp_contractoperateapply t" +
- " left join ermcp_spotcontract s" +
- " on t.relatedid = s.spotcontractid" +
- " left join goods g" +
- " on s.goodsid = g.goodsid" +
- " left join wrstandard w" +
- " on s.wrstandardid = w.wrstandardid" +
- " left join loginaccount u3" +
- " on t.applyid = u3.loginid" +
- " left join loginaccount u4" +
- " on t.auditid = u4.loginid" +
- " left join useraccount u1" +
- " on s.buyuserid = u1.userid" +
- " left join useraccount u2" +
- " on s.selluserid = u2.userid" +
- " left join deliverygoods dg" +
- " on t.deliverygoodsid = dg.deliverygoodsid" +
- " left join enumdicitem e" +
- " on e.enumitemname = w.unitid" +
- " and e.enumdiccode = 'goodsunit'" +
- " where t.operateapplytype = %v"
- if len(r.RELATEDID) > 0 {
- sqlId = sqlId + " and t.relatedid=" + r.RELATEDID
- }
- if len(r.OPERATEAPPLYID) > 0 {
- sqlId += " and t.operateapplyid =" + r.OPERATEAPPLYID
- }
- if len(r.FilterAppStatus) > 0 {
- sqlId += fmt.Sprintf(" and t.applystatus in(%v)", r.FilterAppStatus)
- }
- // 终端没传用户类型过来
- if r.UserType == 0 {
- areaUserId := mtpcache.GetAreaUserId(r.USERID, r.UserType)
- if areaUserId == r.USERID {
- // 所属机构=自己, 则为机构用户类型
- r.UserType = 2
- } else {
- r.UserType = 7
- }
- }
- if r.UserType == 7 {
- sqlId += fmt.Sprintf(" and %v in(s.saleuserid, s.tradeuserid, s.meruserid)", r.USERID)
- } else {
- sqlId += fmt.Sprintf(" and s.userid = %v", r.USERID)
- }
- return fmt.Sprintf(sqlId, opType)
- }
- // GetData 从数据库中查询合同操作申请相关信息, opType 操作申请类型 - 1:点价 2:结算登记 3:款项登记 4:发票登记
- func (r *ErmcpOPApplyModel) GetData(opType int32) ([]ErmcpOPApplyModel, error) {
- sData := make([]ErmcpOPApplyModel, 0)
- e := db.GetEngine()
- s := e.SQL(r.buildSql(opType))
- if err := s.Find(&sData); err != nil {
- logger.GetLogger().Errorf("ermcp query fail:%v", err)
- return sData, err
- }
- for i := range sData {
- sData[i].calc()
- }
- return sData, nil
- }
|