|
|
@@ -996,3 +996,118 @@ func (r *QhjMgrTradePayOrder) GetDataEx() (interface{}, error) {
|
|
|
}
|
|
|
return sData, err
|
|
|
}
|
|
|
+
|
|
|
+// QhjMgrContract 千海金融资明细(合同)
|
|
|
+type QhjMgrContract struct {
|
|
|
+ USERID int64 `json:"userid" xorm:"USERID"` // 用户ID
|
|
|
+ SCFCONTRACTID string `json:"scfcontractid" xorm:"SCFCONTRACTID"` // SCF合同ID(310+Unix秒时间戳(10位)+xxxxxx)
|
|
|
+ SCFCONTRACTTYPE int32 `json:"scfcontracttype" xorm:"SCFCONTRACTTYPE"` // 合同类型 - 1:仓单回购 2:仓单质押 3:合作套保 4:资金贷款 5:融资单
|
|
|
+ GOODSID int32 `json:"goodsid" xorm:"GOODSID"` // 商品ID [5:融资单]
|
|
|
+ CONTRACTCONFIRMTIME string `json:"contractconfirmtime" xorm:"CONTRACTCONFIRMTIME"` // 合同确认时间(时间)
|
|
|
+ WRQTY float64 `json:"wrqty" xorm:"WRQTY"` // 仓单数量(数量)
|
|
|
+ TRADEPRICE float64 `json:"tradeprice" xorm:"TRADEPRICE"` // 成交价格(成本价格)
|
|
|
+ LENDERAMOUNT float64 `json:"lenderamount" xorm:"LENDERAMOUNT"` // 贷款金额(总额|订单总额)
|
|
|
+ MARGINRATIO float64 `json:"marginratio" xorm:"MARGINRATIO"` // 保证金比率(首付比例)
|
|
|
+ INITMARGIN float64 `json:"initmargin" xorm:"'INITMARGIN'"` // 初始保证金(首付款)
|
|
|
+ RECOVEREDMARGIN float64 `json:"recoveredmargin" xorm:"'RECOVEREDMARGIN'"` // 已追缴保证金
|
|
|
+ REMAINAMOUNT float64 `json:"remainamount" xorm:"'REMAINAMOUNT'"` // 合同剩余金额(融资额)
|
|
|
+ TOTALINTEREST float64 `json:"totalinterest" xorm:"'TOTALINTEREST'"` // 已计总利息(利息)
|
|
|
+ GOODSCODE string `json:"goodscode" xorm:"'GOODSCODE'"` // 商品代码
|
|
|
+ GOODSNAME string `json:"goodsname" xorm:"'GOODSNAME'"` // 商品名称
|
|
|
+ GOODUNITID int32 `json:"goodunitid" xorm:"'GOODUNITID'"` // 商品单位id
|
|
|
+ CURRISKLEVEL int32 `json:"currisklevel" xorm:"'CURRISKLEVEL'"` // 风险级别 - 1:正常 2:追加货款 3:支付尾款
|
|
|
+ RECKONRECOVERMARGIN float64 `json:"reckonrecovermargin" xorm:"'RECKONRECOVERMARGIN'"` // 结算应追缴保底金(结算时到过风险率时临时存储) - [仓单回购\仓单质押]
|
|
|
+ DECIMALPLACE int32 `json:"decimalplace" xorm:"'DECIMALPLACE'"` // 商品报价小数位
|
|
|
+ SCFCONTRACTSTATUS int32 `json:"scfcontractstatus" xorm:"'SCFCONTRACTSTATUS'"` // 合同状态 - 1:待确认 2:已确认 3:确认拒绝 4:已支付保证金 5:已激活 6:已违约 7:到期结束 8:延期结束 9:违约结束 10:已注销 11:已关闭 99:未提交
|
|
|
+ LOGINCODE string `json:"logincode" xorm:"'LOGINCODE'"` // 账号(登录代码)
|
|
|
+ USERINFOTYPE int32 `json:"userinfotype" xorm:"'USERINFOTYPE'"` // 用户类型 1-个人 2-企业
|
|
|
+ MOBILE string `json:"mobile" xorm:"'MOBILE'"` // 电话号码(用户资料里的电话)
|
|
|
+ TRADEDATE string `json:"tradedate" xorm:"'TRADEDATE'"` // 交易日
|
|
|
+
|
|
|
+ PAYAMOUNT float64 `json:"payamount" xorm:"'PAYAMOUNT'"` // 已付(已付货款)
|
|
|
+ USERNAME string `json:"username" xorm:"'USERNAME'"` // 用户名称
|
|
|
+ ENUMDICNAME string `json:"enumdicname"` // 单位名称
|
|
|
+
|
|
|
+ BeginDate string `json:"-"` // 开始交易日
|
|
|
+ EndDate string `json:"-"` // 结束交易日
|
|
|
+ FilterName string `json:"-"` // 模糊搜索
|
|
|
+ FilterRiskLevel string `json:"-"` // 风险级别
|
|
|
+}
|
|
|
+
|
|
|
+func (r *QhjMgrContract) calc() {
|
|
|
+ r.USERNAME = mtpcache.GetUserNameByUserId(r.USERID)
|
|
|
+ r.ENUMDICNAME = mtpcache.GetEnumDicitemName(r.GOODUNITID)
|
|
|
+ // 已付(已付货款) = 已追缴保证金 + 初始保证金
|
|
|
+ r.PAYAMOUNT = r.RECOVEREDMARGIN + r.INITMARGIN
|
|
|
+ if r.SCFCONTRACTSTATUS == 10 || r.SCFCONTRACTSTATUS == 11 {
|
|
|
+ // 当合同关闭时, 利息重置为0
|
|
|
+ r.TOTALINTEREST = 0
|
|
|
+ }
|
|
|
+ if r.LOGINCODE == "" {
|
|
|
+ r.LOGINCODE = DecryptField(r.MOBILE)
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+func (r *QhjMgrContract) buildSql() string {
|
|
|
+ var sqlId utils.SQLVal = "with k as (select t.userid, wm_concat(t.logincode) logincode from loginaccount t group by t.userid)" +
|
|
|
+ "select t.borroweruserid userid," +
|
|
|
+ " to_char(t.scfcontractid) scfcontractid," +
|
|
|
+ " t.scfcontracttype," +
|
|
|
+ " t.goodsid," +
|
|
|
+ " to_char(t.contractconfirmtime, 'yyyy-mm-dd hh24:mi:ss') contractconfirmtime," +
|
|
|
+ " t.wrqty," +
|
|
|
+ " t.tradeprice," +
|
|
|
+ " t.lenderamount," +
|
|
|
+ " t.marginratio," +
|
|
|
+ " s.initmargin," +
|
|
|
+ " s.recoveredmargin," +
|
|
|
+ " s.remainamount," +
|
|
|
+ " s.totalinterest," +
|
|
|
+ " s.currisklevel," +
|
|
|
+ " s.reckonrecovermargin," +
|
|
|
+ " s.scfcontractstatus," +
|
|
|
+ " s.tradedate," +
|
|
|
+ " g.goodscode," +
|
|
|
+ " g.goodsname," +
|
|
|
+ " g.decimalplace," +
|
|
|
+ " g.goodunitid," +
|
|
|
+ " ui.userinfotype," +
|
|
|
+ " ui.mobile," +
|
|
|
+ " u.accountname," +
|
|
|
+ " k.logincode" +
|
|
|
+ " from scf_contract t" +
|
|
|
+ " left join scf_contractinfo s" +
|
|
|
+ " on t.scfcontractid = s.scfcontractid" +
|
|
|
+ " left join goods g" +
|
|
|
+ " on t.goodsid = g.goodsid" +
|
|
|
+ " left join userinfo ui on t.borroweruserid=ui.userid" +
|
|
|
+ " left join k on ui.userid=k.userid" +
|
|
|
+ " left join useraccount u on t.borroweruserid=u.userid" +
|
|
|
+ " where 1 = 1"
|
|
|
+ sqlId.AndEx("t.borroweruserid", r.USERID, r.USERID > 0)
|
|
|
+ sqlId.AndEx("ui.USERINFOTYPE", r.USERINFOTYPE, r.USERINFOTYPE > 0)
|
|
|
+ sqlId.AndEx("t.goodsid", r.GOODSID, r.GOODSID > 0)
|
|
|
+ if len(r.FilterRiskLevel) > 0 {
|
|
|
+ sqlId.JoinFormat(" and s.currisklevel in(%v)", r.FilterRiskLevel)
|
|
|
+ }
|
|
|
+ if len(r.BeginDate) > 0 {
|
|
|
+ sqlId.JoinFormat(" and s.TRADEDATE >=%v", r.BeginDate)
|
|
|
+ }
|
|
|
+ if len(r.EndDate) > 0 {
|
|
|
+ sqlId.JoinFormat(" and s.TRADEDATE <=%v", r.EndDate)
|
|
|
+ }
|
|
|
+ if len(r.FilterName) > 0 {
|
|
|
+ sqlId.JoinFormat(" and (k.logincode like '%%%v%%' or u.accountname like '%%%v%%')", r.FilterName, r.FilterName)
|
|
|
+ }
|
|
|
+ return sqlId.String()
|
|
|
+}
|
|
|
+
|
|
|
+// GetDataEx 获取融资明细(合同)
|
|
|
+func (r *QhjMgrContract) GetDataEx() (interface{}, error) {
|
|
|
+ sData := make([]QhjMgrContract, 0)
|
|
|
+ err := db.GetEngine().SQL(r.buildSql()).Find(&sData)
|
|
|
+ for i := range sData {
|
|
|
+ sData[i].calc()
|
|
|
+ }
|
|
|
+ return sData, err
|
|
|
+}
|