|
|
@@ -781,3 +781,171 @@ func (r *WrSpecialMatchOrder) GetDataByPage() (interface{}, error, int, int, int
|
|
|
}
|
|
|
return sData, err, r.Page, r.PageSize, total
|
|
|
}
|
|
|
+
|
|
|
+// WrFactorTypeInfo 仓单要素选择项
|
|
|
+type WrFactorTypeInfo struct {
|
|
|
+ WRFACTORTYPEID int64 `json:"wrfactortypeid" xorm:"'WRFACTORTYPEID'" form:"wrfactortypeid"` // 仓单要素ID
|
|
|
+ DGFACTORYITEMTYPEID int64 `json:"dgfactoryitemtypeid" xorm:"'DGFACTORYITEMTYPEID'"` // 要素选择项ID
|
|
|
+ ITEMTYPENAME string `json:"itemtypename" xorm:"'ITEMTYPENAME'"` // 要素项名称
|
|
|
+ DGFACTORYITEMVALUE string `json:"dgfactoryitemvalue" xorm:"'DGFACTORYITEMVALUE'"` // 要素项值
|
|
|
+ OPTIONCOMPARE string `json:"optioncompare" xorm:"'OPTIONCOMPARE'"` // 选择比较串
|
|
|
+ WAREHOUSEID int64 `json:"warehouseid" xorm:"'WAREHOUSEID'"` // 仓库id
|
|
|
+ DELIVERYGOODSNAME string `json:"deliverygoodsname" xorm:"'DELIVERYGOODSNAME'"` // 品种名称
|
|
|
+ DELIVERYGOODSCODE string `json:"deliverygoodscode" xorm:"'DELIVERYGOODSCODE'"` // 品种代码
|
|
|
+ WRSTANDARDCODE string `json:"wrstandardcode" xorm:"'WRSTANDARDCODE'"` // 品类代码
|
|
|
+ WRSTANDARDNAME string `json:"wrstandardname" xorm:"'WRSTANDARDNAME'"` // 品类名称
|
|
|
+ WRSTANDARDID int64 `json:"wrstandardid" xorm:"'WRSTANDARDID'"` // 品类id
|
|
|
+}
|
|
|
+
|
|
|
+func (r *WrFactorTypeInfo) calc() {
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
+func (r *WrFactorTypeInfo) buildSql() string {
|
|
|
+ var sqlId utils.SQLVal = "select t.wrfactortypeid," +
|
|
|
+ " b.dgfactoryitemtypeid," +
|
|
|
+ " b.itemtypename," +
|
|
|
+ " c.dgfactoryitemvalue," +
|
|
|
+ " t.optioncompare," +
|
|
|
+ " t.warehouseid," +
|
|
|
+ " t.wrstandardid," +
|
|
|
+ " g.deliverygoodsname," +
|
|
|
+ " g.deliverygoodscode," +
|
|
|
+ " w.wrstandardcode," +
|
|
|
+ " w.wrstandardname" +
|
|
|
+ " from wrfactortype t" +
|
|
|
+ " inner join wrfactortypeitem a" +
|
|
|
+ " on t.wrfactortypeid = a.wrfactortypeid" +
|
|
|
+ " inner join dgfactoryitemtype b" +
|
|
|
+ " on t.deliverygoodsid = b.deliverygoodsid" +
|
|
|
+ " and a.dgfactoryitemtypeid = b.dgfactoryitemtypeid" +
|
|
|
+ " left join dgfactoryitem c" +
|
|
|
+ " on a.dgfactoryitemid = c.dgfactoryitemid" +
|
|
|
+ " and b.deliverygoodsid = c.deliverygoodsid" +
|
|
|
+ " left join deliverygoods g on t.deliverygoodsid=g.deliverygoodsid" +
|
|
|
+ " left join wrstandard w on t.wrstandardid=w.wrstandardid" +
|
|
|
+ " where 1 = 1"
|
|
|
+ sqlId.And("t.wrfactortypeid", r.WRFACTORTYPEID)
|
|
|
+ return sqlId.String()
|
|
|
+}
|
|
|
+
|
|
|
+// GetData 获取仓单要素选择项
|
|
|
+func (r *WrFactorTypeInfo) GetData() ([]WrFactorTypeInfo, error) {
|
|
|
+ sData := make([]WrFactorTypeInfo, 0)
|
|
|
+ err := db.GetEngine().SQL(r.buildSql()).Find(&sData)
|
|
|
+ for i := range sData {
|
|
|
+ sData[i].calc()
|
|
|
+ }
|
|
|
+ return sData, err
|
|
|
+}
|
|
|
+
|
|
|
+// WrGoodsPerformanceStep 商品履约步骤
|
|
|
+type WrGoodsPerformanceStep struct {
|
|
|
+ AUTOID int64 `json:"autoid" xorm:"AUTOID" form:"autoid"` // AutoID
|
|
|
+ TEMPLATEID int64 `json:"templateid" xorm:"TEMPLATEID" form:"templateid"` // 履约计划模板ID
|
|
|
+ STEPINDEX int32 `json:"stepindex" xorm:"STEPINDEX" form:"stepindex"` // 步骤序号
|
|
|
+ STEPDAYS int32 `json:"stepdays" xorm:"STEPDAYS" form:"stepdays"` // 距离上一步天数
|
|
|
+ STEPTYPEID int32 `json:"steptypeid" xorm:"STEPTYPEID" form:"steptypeid"` // 履约步骤类型ID - 1:买方支付 2:卖方收款 3:买方自提 4:卖方发货 5:买方确认货 6:卖方发票 7:买方确认票 8:仓单转移 9:释放卖方冻结 10:货款溢短 11:生成合同[中江] 12:运费 90:确认支付 91. 确认放行 92买方支付(直接扣款) 用于-1模板“
|
|
|
+ STEPVALUE float64 `json:"stepvalue" xorm:"STEPVALUE" form:"stepvalue"` // 步骤值
|
|
|
+ ISAUTO int32 `json:"isauto" xorm:"ISAUTO" form:"isauto"` // 是否自动 - 0:不自动 1:自动
|
|
|
+ REMARK string `json:"remark" xorm:"REMARK" form:"remark"` // 备注
|
|
|
+ STEPTYPENAME string `json:"steptypename" xorm:"'STEPTYPENAME'"` // 步骤名称
|
|
|
+
|
|
|
+ STEPINFO string `json:"stepinfo"` // 步骤信息(步骤名称+步骤值)
|
|
|
+ STEPDAYSINFO string `json:"stepdate"` // 天数信息(T+N)
|
|
|
+
|
|
|
+ WRSTANDARDID int64 `json:"-" form:"wrstandardid"` // 商品id
|
|
|
+ MARKETID int64 `json:"-" form:"marketid"` // 市场id
|
|
|
+ HASWR int32 `json:"-" form:"haswr"` // 是否有仓单-卖方 - 0:无仓单 1:有仓单
|
|
|
+}
|
|
|
+
|
|
|
+func (r *WrGoodsPerformanceStep) calc() {
|
|
|
+ switch r.STEPTYPEID {
|
|
|
+ case 1, 2:
|
|
|
+ r.STEPINFO = fmt.Sprintf("%v% v%%", r.STEPTYPENAME, r.STEPVALUE*100)
|
|
|
+ default:
|
|
|
+ if r.STEPVALUE == 0 {
|
|
|
+ r.STEPINFO = r.STEPTYPENAME
|
|
|
+ } else {
|
|
|
+ r.STEPINFO = fmt.Sprintf("%v %v", r.STEPTYPENAME, r.STEPVALUE)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ r.STEPDAYSINFO = fmt.Sprintf("T+%v", r.STEPDAYS)
|
|
|
+}
|
|
|
+
|
|
|
+func (r *WrGoodsPerformanceStep) buildSql() string {
|
|
|
+ var sqlId utils.SQLVal = "with tmp as" +
|
|
|
+ " (select decode(%v, 1, t.performancetempid, t.performancetempid2) tempid" +
|
|
|
+ " from marketspotgoodsconfig t" +
|
|
|
+ " where rownum <= 1 %v)" +
|
|
|
+ "select t.*, s.steptypename" +
|
|
|
+ " from PerformanceStepTemplate t" +
|
|
|
+ " inner join PerformanceStepType s" +
|
|
|
+ " on t.steptypeid = s.steptypeid" +
|
|
|
+ " inner join tmp" +
|
|
|
+ " on t.templateid = tmp.tempid" +
|
|
|
+ " order by t.stepindex"
|
|
|
+ var param utils.SQLVal
|
|
|
+ param.And("t.wrstandardid", r.WRSTANDARDID)
|
|
|
+ param.AndEx("t.marketid", r.MARKETID, r.MARKETID > 0)
|
|
|
+ sqlId.FormatParam(r.HASWR, param.String())
|
|
|
+ return sqlId.String()
|
|
|
+}
|
|
|
+
|
|
|
+// GetDataEx 获取商品履约步骤
|
|
|
+func (r *WrGoodsPerformanceStep) GetData() ([]WrGoodsPerformanceStep, error) {
|
|
|
+ sData := make([]WrGoodsPerformanceStep, 0)
|
|
|
+ err := db.GetEngine().SQL(r.buildSql()).Find(&sData)
|
|
|
+ for i := range sData {
|
|
|
+ sData[i].calc()
|
|
|
+ sData[i].MARKETID = r.MARKETID
|
|
|
+ sData[i].WRSTANDARDID = r.WRSTANDARDID
|
|
|
+ }
|
|
|
+ return sData, err
|
|
|
+}
|
|
|
+
|
|
|
+// WrTypeItem 要素项
|
|
|
+type WrTypeItem struct {
|
|
|
+ NAME string `json:"name"` // 名称
|
|
|
+ VALUE string `json:"value"` // 值
|
|
|
+}
|
|
|
+
|
|
|
+// WrGoodsInfo 仓单商品信息(仓单要素列展开+履约计划步骤)
|
|
|
+type WrGoodsInfo struct {
|
|
|
+ WRFACTORTYPEID int64 `json:"-" form:"wrfactortypeid"` // 仓单要素ID
|
|
|
+ MARKETID int64 `json:"marketid" form:"marketid"` // 市场id
|
|
|
+ HASWR int32 `json:"haswr" form:"haswr"` // 0:仓单预售 1:仓单贸易
|
|
|
+ LstItem []WrTypeItem `json:"lstitem"` // 商品信息项
|
|
|
+ LstStep []WrGoodsPerformanceStep `json:"lststep"` // 履约规则
|
|
|
+}
|
|
|
+
|
|
|
+// GetDataEx 获取仓单商品信息(仓单要素列展开+履约计划步骤)
|
|
|
+func (r *WrGoodsInfo) GetDataEx() (interface{}, error) {
|
|
|
+ sData := make([]WrGoodsInfo, 0)
|
|
|
+ mWrType := WrFactorTypeInfo{WRFACTORTYPEID: r.WRFACTORTYPEID}
|
|
|
+ // 获取要素项
|
|
|
+ if sType, err := mWrType.GetData(); err == nil {
|
|
|
+ v := WrGoodsInfo{LstItem: make([]WrTypeItem, 0), LstStep: make([]WrGoodsPerformanceStep, 0)}
|
|
|
+ if len(sType) > 0 {
|
|
|
+ a := sType[0]
|
|
|
+ v.LstItem = append(v.LstItem, WrTypeItem{NAME: "品种", VALUE: a.DELIVERYGOODSNAME})
|
|
|
+ v.LstItem = append(v.LstItem, WrTypeItem{NAME: "品类", VALUE: a.WRSTANDARDNAME})
|
|
|
+
|
|
|
+ for _, b := range sType {
|
|
|
+ v.LstItem = append(v.LstItem, WrTypeItem{NAME: b.ITEMTYPENAME, VALUE: b.DGFACTORYITEMVALUE})
|
|
|
+ }
|
|
|
+
|
|
|
+ // 获取履约规则
|
|
|
+ mStep := WrGoodsPerformanceStep{MARKETID: r.MARKETID, WRSTANDARDID: a.WRSTANDARDID, HASWR: r.HASWR}
|
|
|
+ if sStep, err := mStep.GetData(); err == nil && len(sStep) > 0 {
|
|
|
+ v.LstStep = append(v.LstStep, sStep...)
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ v.MARKETID = r.MARKETID
|
|
|
+ v.HASWR = r.HASWR
|
|
|
+ v.WRFACTORTYPEID = r.WRFACTORTYPEID
|
|
|
+ sData = append(sData, v)
|
|
|
+ }
|
|
|
+ return sData, nil
|
|
|
+}
|