|
|
@@ -561,3 +561,130 @@ func (r *ErmcpReportMonSpot) GetDataEx() (interface{}, error) {
|
|
|
}
|
|
|
return sData, err
|
|
|
}
|
|
|
+
|
|
|
+// ErmcpReportAreaSpotPL 现货损益日/月表
|
|
|
+type ErmcpReportAreaSpotPL struct {
|
|
|
+ AREAUSERID int64 `json:"areauserid" xorm:"'AREAUSERID'"` // 所属机构
|
|
|
+ WRSTANDARDID int64 `json:"wrstandardid" xorm:"'WRSTANDARDID'"` // 现货商品ID
|
|
|
+ SPOTGOODSMODELID int32 `json:"spotgoodsmodelid" xorm:"'SPOTGOODSMODELID'"` // 现货品类ID
|
|
|
+ SPOTGOODSBRANDID int32 `json:"spotgoodsbrandid" xorm:"'SPOTGOODSBRANDID'"` // 现货品牌ID
|
|
|
+ ORIBUYQTY float64 `json:"oribuyqty" xorm:"'ORIBUYQTY'"` // 期初采购总量
|
|
|
+ ORIBUYAMOUNT float64 `json:"oribuyamount" xorm:"'ORIBUYAMOUNT'"` // 期初采购总额
|
|
|
+ ORISELLQTY float64 `json:"orisellqty" xorm:"'ORISELLQTY'"` // 期初销售总量
|
|
|
+ ORISELLAMOUNT float64 `json:"orisellamount" xorm:"'ORISELLAMOUNT'"` // 期初销售总额
|
|
|
+ ORIQTY float64 `json:"oriqty" xorm:"'ORIQTY'"` // 期初量
|
|
|
+ ORIAVERAGEPRICE float64 `json:"oriaverageprice" xorm:"'ORIAVERAGEPRICE'"` // 期初均价
|
|
|
+ ORIAMOUNT float64 `json:"oriamount" xorm:"'ORIAMOUNT'"` // 期初额
|
|
|
+ TODAYBUYQTY float64 `json:"todaybuyqty" xorm:"'TODAYBUYQTY'"` // 今日采购量(采购增量)
|
|
|
+ TODAYBUYAMOUNT float64 `json:"todaybuyamount" xorm:"'TODAYBUYAMOUNT'"` // 今日采购额
|
|
|
+ TODAYBUYAVERAGEPRICE float64 `json:"todaybuyaverageprice" xorm:"'TODAYBUYAVERAGEPRICE'"` // 今日采购均价(采购均价)
|
|
|
+ TODAYSELLQTY float64 `json:"todaysellqty" xorm:"'TODAYSELLQTY'"` // 今日销售量(销售增量)
|
|
|
+ TODAYSELLAMOUNT float64 `json:"todaysellamount" xorm:"'TODAYSELLAMOUNT'"` // 今日销售额
|
|
|
+ TODAYSELLAVERAGEPRICE float64 `json:"todaysellaverageprice" xorm:"'TODAYSELLAVERAGEPRICE'"` // 今日销售均价(销售均价)
|
|
|
+ CURBUYQTY float64 `json:"curbuyqty" xorm:"'CURBUYQTY'"` // 期末采购总量
|
|
|
+ CURBUYAMOUNT float64 `json:"curbuyamount" xorm:"'CURBUYAMOUNT'"` // 期末采购总额(采购额)
|
|
|
+ CURSELLQTY float64 `json:"cursellqty" xorm:"'CURSELLQTY'"` // 期末销售总量
|
|
|
+ CURSELLAMOUNT float64 `json:"cursellamount" xorm:"'CURSELLAMOUNT'"` // 期末销售总额(销售额)
|
|
|
+ CURQTY float64 `json:"curqty" xorm:"'CURQTY'"` // 期末量
|
|
|
+ CURAVERAGEPRICE float64 `json:"curaverageprice" xorm:"'CURAVERAGEPRICE'"` // 期末均价
|
|
|
+ CURAMOUNT float64 `json:"curamount" xorm:"'CURAMOUNT'"` // 期末额
|
|
|
+ CURSPOTPRICE float64 `json:"curspotprice" xorm:"'CURSPOTPRICE'"` // 参考市价
|
|
|
+ CURMARKETVALUE float64 `json:"curmarketvalue" xorm:"'CURMARKETVALUE'"` // 参考市值
|
|
|
+ ACTUALPL float64 `json:"actualpl" xorm:"'ACTUALPL'"` // 实际损益
|
|
|
+ FLOATPL float64 `json:"floatpl" xorm:"'FLOATPL'"` // 浮动损益
|
|
|
+ UPDATETIME string `json:"updatetime" xorm:"'UPDATETIME'"` // 更新时间
|
|
|
+ WRSTANDARDCODE string `json:"wrstandardcode" xorm:"'WRSTANDARDCODE'"` // 现货商品代码
|
|
|
+ WRSTANDARDNAME string `json:"wrstandardname" xorm:"'WRSTANDARDNAME'"` // 现货商品名称
|
|
|
+ UNITID int32 `json:"unitid" xorm:"'UNITID'"` // 现货商品单位id
|
|
|
+ BRANDNAME string `json:"brandname" xorm:"'BRANDNAME'"` // 品牌名称
|
|
|
+ MODELNAME string `json:"modelname" xorm:"'MODELNAME'"` // 品类名称
|
|
|
+ GBUNITID int32 `json:"gbunitid" xorm:"'GBUNITID'"` // 品类单位id
|
|
|
+
|
|
|
+ ENUMDICNAME string `json:"enumdicname"` // 现货商品单位名称
|
|
|
+ GBENUMDICNAME string `json:"gbenumdicname"` // 品类单位名称
|
|
|
+
|
|
|
+ ReportType int32 `json:"-"` // 报表类型 1-日报表 2-月报表
|
|
|
+ ReportDate string `json:"-"` // 格式 日报表(YYYYMMDD) 月报表(YYYYMM)
|
|
|
+}
|
|
|
+
|
|
|
+func (r *ErmcpReportAreaSpotPL) calc() {
|
|
|
+ r.ENUMDICNAME = mtpcache.GetEnumDicitemName(r.UNITID)
|
|
|
+ r.GBENUMDICNAME = mtpcache.GetEnumDicitemName(r.GBUNITID)
|
|
|
+}
|
|
|
+
|
|
|
+func (r *ErmcpReportAreaSpotPL) buildSql() string {
|
|
|
+ var sqlId utils.SQLVal = "SELECT t.AREAUSERID," +
|
|
|
+ " t.WRSTANDARDID," +
|
|
|
+ " t.SPOTGOODSMODELID," +
|
|
|
+ " t.SPOTGOODSBRANDID," +
|
|
|
+ " t.ORIBUYQTY," +
|
|
|
+ " t.ORIBUYAMOUNT," +
|
|
|
+ " t.ORISELLQTY," +
|
|
|
+ " t.ORISELLAMOUNT," +
|
|
|
+ " t.ORIQTY," +
|
|
|
+ " t.ORIAVERAGEPRICE," +
|
|
|
+ " t.ORIAMOUNT," +
|
|
|
+ " t.TODAYBUYQTY," +
|
|
|
+ " t.TODAYBUYAMOUNT," +
|
|
|
+ " t.TODAYBUYAVERAGEPRICE," +
|
|
|
+ " t.TODAYSELLQTY," +
|
|
|
+ " t.TODAYSELLAMOUNT," +
|
|
|
+ " t.TODAYSELLAVERAGEPRICE," +
|
|
|
+ " t.CURBUYQTY," +
|
|
|
+ " t.CURBUYAMOUNT," +
|
|
|
+ " t.CURSELLQTY," +
|
|
|
+ " t.CURSELLAMOUNT," +
|
|
|
+ " t.CURQTY," +
|
|
|
+ " t.CURAVERAGEPRICE," +
|
|
|
+ " t.CURAMOUNT," +
|
|
|
+ " t.CURSPOTPRICE," +
|
|
|
+ " t.CURMARKETVALUE," +
|
|
|
+ " t.ACTUALPL," +
|
|
|
+ " t.FLOATPL," +
|
|
|
+ " to_char(t.UPDATETIME, 'yyyy-mm-dd hh24:mi:ss') UPDATETIME," +
|
|
|
+ " w.wrstandardcode," +
|
|
|
+ " w.wrstandardname," +
|
|
|
+ " w.unitid," +
|
|
|
+ " gb.brandname," +
|
|
|
+ " gm.modelname," +
|
|
|
+ " gm.unitid gbunitid" +
|
|
|
+ " FROM %v t" +
|
|
|
+ " left join wrstandard w" +
|
|
|
+ " on t.wrstandardid = w.wrstandardid" +
|
|
|
+ " left join spotgoodsbrand gb" +
|
|
|
+ " on t.spotgoodsbrandid = gb.brandid" +
|
|
|
+ " left join spotgoodsmodel gm" +
|
|
|
+ " on t.spotgoodsmodelid = gm.modelid" +
|
|
|
+ " WHERE 1 = 1"
|
|
|
+ sqlId.And("t.AREAUSERID", r.AREAUSERID)
|
|
|
+ if r.ReportType == 1 {
|
|
|
+ // 日报表
|
|
|
+ sqlId.FormatParam("RECKON_ERMCP_AREASPOTPL")
|
|
|
+ sqlId.And("t.reckondate", r.ReportDate)
|
|
|
+ } else {
|
|
|
+ // 月报表
|
|
|
+ sqlId.FormatParam("REPORT_ERMCP_AREASPOTPL")
|
|
|
+ sqlId.And("t.cycletype", 1)
|
|
|
+ sqlId.And("t.cycletime", r.ReportDate)
|
|
|
+ }
|
|
|
+ if r.WRSTANDARDID > 0 {
|
|
|
+ sqlId.And("t.wrstandardid", r.WRSTANDARDID)
|
|
|
+ }
|
|
|
+ if r.SPOTGOODSBRANDID > 0 {
|
|
|
+ sqlId.And("t.spotgoodsbrandid", r.SPOTGOODSBRANDID)
|
|
|
+ }
|
|
|
+ if r.SPOTGOODSMODELID > 0 {
|
|
|
+ sqlId.And("t.spotgoodsmodelid", r.SPOTGOODSMODELID)
|
|
|
+ }
|
|
|
+ return sqlId.String()
|
|
|
+}
|
|
|
+
|
|
|
+// GetDataEx 获取现货损益日(月)报表
|
|
|
+func (r *ErmcpReportAreaSpotPL) GetDataEx() (interface{}, error) {
|
|
|
+ sData := make([]ErmcpReportAreaSpotPL, 0)
|
|
|
+ err := db.GetEngine().SQL(r.buildSql()).Find(&sData)
|
|
|
+ for i := range sData {
|
|
|
+ sData[i].calc()
|
|
|
+ }
|
|
|
+ return sData, err
|
|
|
+}
|