|
|
@@ -11,6 +11,7 @@ import (
|
|
|
"mtp2_if/db"
|
|
|
"mtp2_if/mtpcache"
|
|
|
"mtp2_if/utils"
|
|
|
+ "strings"
|
|
|
)
|
|
|
|
|
|
// Ermcp3ReportOPLog 报表合同操作记录通用查询
|
|
|
@@ -490,9 +491,9 @@ type Ermcp3ExpourseReport struct {
|
|
|
DiffHedgeQty float64 `json:"diffhedgeqty"` // 变动量(现货应套保总量)
|
|
|
DiffExposure float64 `json:"diffexposure"` // 变动量(套保敞口)
|
|
|
|
|
|
- QueryType int32 `json:"-"` // 查询类型 1-日报表 2-周期报表 3-日报表(范围,[开始日期,结束日期])
|
|
|
- BeginDate string `json:"-"` // 开始交易日
|
|
|
- EndDate string `json:"-"` // 结束交易日
|
|
|
+ QueryType int32 `json:"-"` // 查询类型 1-报表
|
|
|
+ BeginDate string `json:"begindate"` // 开始交易日
|
|
|
+ EndDate string `json:"enddate"` // 结束交易日
|
|
|
}
|
|
|
|
|
|
func (r *Ermcp3ExpourseReport) calc() {
|
|
|
@@ -515,7 +516,7 @@ func (r *Ermcp3ExpourseReport) calc() {
|
|
|
}
|
|
|
|
|
|
func (r *Ermcp3ExpourseReport) buildSql() string {
|
|
|
- if r.QueryType == 1 || r.QueryType == 3 {
|
|
|
+ if r.CYCLETYPE == 0 {
|
|
|
return r.buildSqlDay()
|
|
|
}
|
|
|
return r.buildSqlCycle()
|
|
|
@@ -635,6 +636,8 @@ func (r *Ermcp3ExpourseReport) GetDataEx() (interface{}, error) {
|
|
|
err := db.GetEngine().SQL(r.buildSql()).Find(&sData)
|
|
|
for i := range sData {
|
|
|
sData[i].calc()
|
|
|
+ sData[i].BeginDate = r.BeginDate
|
|
|
+ sData[i].EndDate = r.EndDate
|
|
|
}
|
|
|
return sData, err
|
|
|
}
|
|
|
@@ -673,8 +676,8 @@ type Ermcp3ExposureContractDetail struct {
|
|
|
CurQty float64 `json:"curqty"` // 今定价量
|
|
|
DiffQty float64 `json:"diffqty"` // 套保品种今变动量
|
|
|
|
|
|
- BeginDate string `json:"-"`
|
|
|
- EndDate string `json:"-"`
|
|
|
+ BeginDate string `json:"-"` // 开始交易日
|
|
|
+ EndDate string `json:"-"` // 结束交易日
|
|
|
}
|
|
|
|
|
|
func (r *Ermcp3ExposureContractDetail) calc() {
|
|
|
@@ -886,9 +889,9 @@ type Ermcp3AreaSpotPLReport struct {
|
|
|
ACCOUNTNAME string `json:"accountname"` // 机构名称
|
|
|
CURRENCYNAME string `json:"currencyname"` // 币种名称
|
|
|
|
|
|
- QueryType int32 `json:"-"` // 查询类型 1-日报表 2-周期报表 3-日报表(范围,[开始日期,结束日期])
|
|
|
- BeginDate string `json:"-"` // 开始交易日
|
|
|
- EndDate string `json:"-"` // 结束交易日
|
|
|
+ QueryType int32 `json:"-"` // 查询类型 1-报表 2-报表明细
|
|
|
+ BeginDate string `json:"begindate"` // 开始交易日
|
|
|
+ EndDate string `json:"enddate"` // 结束交易日
|
|
|
}
|
|
|
|
|
|
func (r *Ermcp3AreaSpotPLReport) calc() {
|
|
|
@@ -899,9 +902,12 @@ func (r *Ermcp3AreaSpotPLReport) calc() {
|
|
|
}
|
|
|
|
|
|
func (r *Ermcp3AreaSpotPLReport) buildSql() string {
|
|
|
- if r.QueryType == 1 || r.QueryType == 3 {
|
|
|
+ // 日报表
|
|
|
+ if r.QueryType == 1 && r.CYCLETYPE == 0 {
|
|
|
return r.buildSqlDay()
|
|
|
- } else if r.QueryType == 4 {
|
|
|
+ }
|
|
|
+ // 日报表明细
|
|
|
+ if r.QueryType == 2 && r.CYCLETYPE == 0 {
|
|
|
return r.buildSqlDayDetail()
|
|
|
}
|
|
|
return r.buildSqlCycle()
|
|
|
@@ -1097,6 +1103,8 @@ func (r *Ermcp3AreaSpotPLReport) GetDataEx() (interface{}, error) {
|
|
|
err := db.GetEngine().SQL(r.buildSql()).Find(&sData)
|
|
|
for i := range sData {
|
|
|
sData[i].calc()
|
|
|
+ sData[i].BeginDate = r.BeginDate
|
|
|
+ sData[i].EndDate = r.EndDate
|
|
|
}
|
|
|
return sData, err
|
|
|
}
|
|
|
@@ -1138,8 +1146,8 @@ type Ermcp3FinanceReport struct {
|
|
|
|
|
|
CURRENCYNAME string `json:"currencyname"` // 币种名称
|
|
|
QueryType int32 `json:"-"` // 查询类型 1-日报表 2-周期报表 3-日报表(范围,[开始日期,结束日期])
|
|
|
- BeginDate string `json:"-"` // 开始交易日
|
|
|
- EndDate string `json:"-"` // 结束交易日
|
|
|
+ BeginDate string `json:"begindate"` // 开始交易日
|
|
|
+ EndDate string `json:"enddate"` // 结束交易日
|
|
|
}
|
|
|
|
|
|
func (r *Ermcp3FinanceReport) calc() {
|
|
|
@@ -1147,9 +1155,12 @@ func (r *Ermcp3FinanceReport) calc() {
|
|
|
}
|
|
|
|
|
|
func (r *Ermcp3FinanceReport) buildSql() string {
|
|
|
- if r.QueryType == 1 || r.QueryType == 3 {
|
|
|
+ // 日报表
|
|
|
+ if r.QueryType == 1 && r.CYCLETYPE == 0 {
|
|
|
return r.buildSqlDay()
|
|
|
- } else if r.QueryType == 4 {
|
|
|
+ }
|
|
|
+ // 日报表明细
|
|
|
+ if r.QueryType == 2 && r.CYCLETYPE == 0 {
|
|
|
return r.buildSqlDayDetail()
|
|
|
}
|
|
|
return r.buildSqlCycle()
|
|
|
@@ -1273,12 +1284,14 @@ func (r *Ermcp3FinanceReport) GetDataEx() (interface{}, error) {
|
|
|
err := db.GetEngine().SQL(r.buildSql()).Find(&sData)
|
|
|
for i := range sData {
|
|
|
sData[i].calc()
|
|
|
+ sData[i].BeginDate = r.BeginDate
|
|
|
+ sData[i].EndDate = r.EndDate
|
|
|
}
|
|
|
return sData, err
|
|
|
}
|
|
|
|
|
|
-// Ermcp3AreaStockReport 库存报表
|
|
|
-type Ermcp3AreaStockReport struct {
|
|
|
+// Ermcp3AreaStockReportEx 库存报表
|
|
|
+type Ermcp3AreaStockReportEx struct {
|
|
|
RECKONDATE string `json:"reckondate" xorm:"RECKONDATE"` // 日照时期(yyyyMMdd)
|
|
|
CYCLETIME string `json:"cycletime" xorm:"CYCLETIME"` // 周期时间 月(YYYYMM) 季(YYYYQ) 年(YYYY) 周(YYYYIW) 全(0)【原值】
|
|
|
CYCLETYPE int32 `json:"cycletype" xorm:"CYCLETYPE"` // 周期类型 - 1:月 2:季 3:年 4:周 5:全报表【原值】
|
|
|
@@ -1310,39 +1323,218 @@ type Ermcp3AreaStockReport struct {
|
|
|
UNBUYINQTY float64 `json:"unbuyinqty"` // 采购未入库量(数据库未找到相关字段?)
|
|
|
UNSELLOUTQTY float64 `json:"unselloutqty"` // 销售未出库量(数据库未找到相关字段?)
|
|
|
DiffQty float64 `json:"diffqty"` // 库存变化量 = 期末 - 期初
|
|
|
- QueryType int32 `json:"-"` // 查询类型 1-日报表 2-周期报表 3-日报表(范围,[开始日期,结束日期])
|
|
|
- BeginDate string `json:"-"` // 开始交易日
|
|
|
- EndDate string `json:"-"` // 结束交易日
|
|
|
+ BeginDate string `json:"begindate"` // 开始交易日
|
|
|
+ EndDate string `json:"enddate"` // 结束交易日
|
|
|
+ SumFields string `json:"-"` // 汇总维度(逗号隔开) 1-品种 2-品类 3-品牌 4-仓库
|
|
|
}
|
|
|
|
|
|
-func (r *Ermcp3AreaStockReport) calc() {
|
|
|
+func (r *Ermcp3AreaStockReportEx) calc() {
|
|
|
r.USERNAME = mtpcache.GetUserNameByUserId(r.USERID)
|
|
|
r.ENUMDICNAME = mtpcache.GetEnumDicitemName(r.UNITID)
|
|
|
r.DiffQty = r.CURSTOCK - r.ORISTOCK
|
|
|
}
|
|
|
|
|
|
-func (r *Ermcp3AreaStockReport) buildSql() string {
|
|
|
- if r.QueryType == 1 || r.QueryType == 3 {
|
|
|
- return r.buildSqlDay()
|
|
|
+// getSumField 获取汇总维度字段
|
|
|
+func (r *Ermcp3AreaStockReportEx) getSumField() (fields []string, bSum bool) {
|
|
|
+ fields = append(fields, "userid")
|
|
|
+ if r.CYCLETYPE == 0 {
|
|
|
+ // 日报表
|
|
|
+ fields = append(fields, "reckondate")
|
|
|
+ } else {
|
|
|
+ // 周期报表
|
|
|
+ fields = append(fields, "cycletype")
|
|
|
+ fields = append(fields, "cycletime")
|
|
|
}
|
|
|
- return r.buildSqlCycle()
|
|
|
+ baseField := map[string]string{
|
|
|
+ "1": "deliverygoodsid",
|
|
|
+ "2": "wrstandardid",
|
|
|
+ "3": "spotgoodsbrandid",
|
|
|
+ "4": "warehouseinfoid",
|
|
|
+ }
|
|
|
+ bSum = false
|
|
|
+ param := []string{}
|
|
|
+ if len(r.SumFields) > 0 {
|
|
|
+ param = strings.Split(r.SumFields, ",")
|
|
|
+ }
|
|
|
+ if len(param) == 0 {
|
|
|
+ // 全字段, 不需要汇总
|
|
|
+ for _, v := range baseField {
|
|
|
+ fields = append(fields, v)
|
|
|
+ }
|
|
|
+ bSum = false
|
|
|
+ } else {
|
|
|
+ bIncludeAll := true
|
|
|
+ // 判断是否包含所有维度
|
|
|
+ for k := range baseField {
|
|
|
+ bExist := false
|
|
|
+ for _, p := range param {
|
|
|
+ if k == p {
|
|
|
+ bExist = true
|
|
|
+ break
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if !bExist {
|
|
|
+ bIncludeAll = false
|
|
|
+ break
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if bIncludeAll {
|
|
|
+ // 包含了所有维度, 不需要汇总
|
|
|
+ for _, v := range baseField {
|
|
|
+ fields = append(fields, v)
|
|
|
+ }
|
|
|
+ bSum = false
|
|
|
+ } else {
|
|
|
+ tmp := map[string]string{}
|
|
|
+ for _, p := range param {
|
|
|
+ if v, ok := baseField[p]; ok {
|
|
|
+ // 利用map特性去重, 先保存在一个临时map中
|
|
|
+ tmp[p] = v
|
|
|
+ bSum = true
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if bSum {
|
|
|
+ for _, v := range tmp {
|
|
|
+ fields = append(fields, v)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+func (r *Ermcp3AreaStockReportEx) getExFieldInfo() (strFiled string, strleftJoin string) {
|
|
|
+ if len(r.SumFields) > 0 {
|
|
|
+ param := strings.Split(r.SumFields, ",")
|
|
|
+ fHas := func(v string) bool {
|
|
|
+ for i := range param {
|
|
|
+ if param[i] == v {
|
|
|
+ return true
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return false
|
|
|
+ }
|
|
|
+ if fHas("1") {
|
|
|
+ if len(strFiled) > 0 {
|
|
|
+ strFiled += ","
|
|
|
+ }
|
|
|
+ strFiled += "g.deliverygoodscode, g.deliverygoodsname, g.goodsunitid"
|
|
|
+ strleftJoin += " LEFT JOIN deliverygoods g on a.deliverygoodsid = g.deliverygoodsid"
|
|
|
+ }
|
|
|
+ if fHas("2") {
|
|
|
+ if len(strFiled) > 0 {
|
|
|
+ strFiled += ","
|
|
|
+ }
|
|
|
+ strFiled += "w.wrstandardname, w.wrstandardcode, w.unitid"
|
|
|
+ strleftJoin += " LEFT JOIN WRSTANDARD w on a.wrstandardid = w.wrstandardid"
|
|
|
+ }
|
|
|
+ if fHas("3") {
|
|
|
+ if len(strFiled) > 0 {
|
|
|
+ strFiled += ","
|
|
|
+ }
|
|
|
+ strFiled += "gb.dgfactoryitemvalue brandname"
|
|
|
+ strleftJoin += " LEFT JOIN dgfactoryitem gb on a.spotgoodsbrandid = gb.dgfactoryitemid"
|
|
|
+ }
|
|
|
+ if fHas("4") {
|
|
|
+ if len(strFiled) > 0 {
|
|
|
+ strFiled += ","
|
|
|
+ }
|
|
|
+ strFiled += "h.warehousecode, h.warehousename, h.warehousetype"
|
|
|
+ strleftJoin += " LEFT JOIN WAREHOUSEINFO h on a.warehouseinfoid=h.autoid"
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return
|
|
|
}
|
|
|
|
|
|
-func (r *Ermcp3AreaStockReport) buildSqlDay() string {
|
|
|
- var sqlId utils.SQLVal = "SELECT a.*," +
|
|
|
+func (r *Ermcp3AreaStockReportEx) buildSql() (sqlId string) {
|
|
|
+ fields, bSum := r.getSumField()
|
|
|
+ if r.CYCLETYPE == 0 {
|
|
|
+ // 日报表
|
|
|
+ if bSum {
|
|
|
+ sqlId = r.buildSqlReckonSum(fields)
|
|
|
+ } else {
|
|
|
+ sqlId = r.buildSqlReckon()
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ // 周期报表
|
|
|
+ if bSum {
|
|
|
+ sqlId = r.buildSqlReportSum(fields)
|
|
|
+ } else {
|
|
|
+ sqlId = r.buildSqlReport()
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+// GetDataEx 获取库存报表
|
|
|
+func (r *Ermcp3AreaStockReportEx) GetDataEx() (interface{}, error) {
|
|
|
+ sData := make([]Ermcp3AreaStockReportEx, 0)
|
|
|
+ err := db.GetEngine().SQL(r.buildSql()).Find(&sData)
|
|
|
+ for i := range sData {
|
|
|
+ sData[i].calc()
|
|
|
+ sData[i].BeginDate = r.BeginDate
|
|
|
+ sData[i].EndDate = r.EndDate
|
|
|
+ }
|
|
|
+ return sData, err
|
|
|
+}
|
|
|
+
|
|
|
+// buildSqlReckon 日照表
|
|
|
+func (r *Ermcp3AreaStockReportEx) buildSqlReckon() string {
|
|
|
+ var sqlId utils.SQLVal = "SELECT t.TODAYBUYINQTY," +
|
|
|
+ " t.TODAYPRODUCEINQTY," +
|
|
|
+ " t.reckondate," +
|
|
|
+ " t.TODAYSELLOUTQTY," +
|
|
|
+ " t.TODAYPRODUCEOUTQTY," +
|
|
|
+ " to_char(t.UPDATETIME, 'yyyy-mm-dd hh24:mi:ss') UPDATETIME," +
|
|
|
+ " t.USERID," +
|
|
|
+ " t.WRSTANDARDID," +
|
|
|
+ " t.SPOTGOODSBRANDID," +
|
|
|
+ " t.WAREHOUSEINFOID," +
|
|
|
+ " t.deliverygoodsid," +
|
|
|
+ " t.ORISTOCK," +
|
|
|
+ " t.CURSTOCK," +
|
|
|
" w.wrstandardname," +
|
|
|
" w.wrstandardcode," +
|
|
|
" w.unitid," +
|
|
|
" gb.dgfactoryitemvalue brandname," +
|
|
|
- " g.deliverygoodsid," +
|
|
|
+ " h.warehousename," +
|
|
|
+ " h.warehousecode," +
|
|
|
+ " h.warehousetype," +
|
|
|
" g.deliverygoodscode," +
|
|
|
" g.deliverygoodsname," +
|
|
|
" g.goodsunitid" +
|
|
|
- " from (SELECT t.RECKONDATE," +
|
|
|
- " t.USERID," +
|
|
|
- " t.DELIVERYGOODSID," +
|
|
|
- " t.WRSTANDARDID," +
|
|
|
- " t.SPOTGOODSBRANDID," +
|
|
|
+ " FROM RECKON_ERMCP_AREASTOCK t" +
|
|
|
+ " LEFT JOIN WRSTANDARD w" +
|
|
|
+ " on t.wrstandardid = w.wrstandardid" +
|
|
|
+ " LEFT JOIN dgfactoryitem gb" +
|
|
|
+ " on t.spotgoodsbrandid = gb.dgfactoryitemid" +
|
|
|
+ " LEFT JOIN deliverygoods g" +
|
|
|
+ " on t.deliverygoodsid = g.deliverygoodsid" +
|
|
|
+ " LEFT JOIN WAREHOUSEINFO h" +
|
|
|
+ " on t.warehouseinfoid = h.autoid" +
|
|
|
+ " WHERE 1 = 1"
|
|
|
+
|
|
|
+ sqlId.And("t.USERID", r.USERID)
|
|
|
+ sqlId.AndEx("t.RECKONDATE", r.RECKONDATE, len(r.RECKONDATE) > 0)
|
|
|
+ if len(r.BeginDate) > 0 && len(r.EndDate) > 0 {
|
|
|
+ sqlId.Join(fmt.Sprintf(" and t.RECKONDATE >= '%v' and t.RECKONDATE <= '%v' ", r.BeginDate, r.EndDate))
|
|
|
+ }
|
|
|
+ // 现货商品id
|
|
|
+ sqlId.AndEx("t.DELIVERYGOODSID", r.DELIVERYGOODSID, r.DELIVERYGOODSID > 0)
|
|
|
+ // 品类id
|
|
|
+ sqlId.AndEx("t.WRSTANDARDID", r.WRSTANDARDID, r.WRSTANDARDID > 0)
|
|
|
+ // 品牌id
|
|
|
+ sqlId.AndEx("t.SPOTGOODSBRANDID", r.SPOTGOODSBRANDID, r.SPOTGOODSBRANDID > 0)
|
|
|
+ // 仓库id
|
|
|
+ sqlId.AndEx("t.WAREHOUSEINFOID", r.WAREHOUSEINFOID, len(r.WAREHOUSEINFOID) > 0)
|
|
|
+ sqlId.Join(" order by t.reckondate")
|
|
|
+ return sqlId.String()
|
|
|
+}
|
|
|
+
|
|
|
+// buildSqlReckonSum 日照表(汇总维度)
|
|
|
+func (r *Ermcp3AreaStockReportEx) buildSqlReckonSum(fields []string) string {
|
|
|
+ var sqlId utils.SQLVal = "SELECT a.*, %v" +
|
|
|
+ " from (SELECT %v," +
|
|
|
" sum(t.ORISTOCK) ORISTOCK," +
|
|
|
" sum(t.CURSTOCK) CURSTOCK," +
|
|
|
" sum(t.TODAYBUYINQTY) TODAYBUYINQTY," +
|
|
|
@@ -1351,47 +1543,49 @@ func (r *Ermcp3AreaStockReport) buildSqlDay() string {
|
|
|
" sum(t.TODAYPRODUCEOUTQTY) TODAYPRODUCEOUTQTY" +
|
|
|
" FROM RECKON_ERMCP_AREASTOCK t" +
|
|
|
" WHERE 1 = 1 %v" +
|
|
|
- " GROUP BY t.RECKONDATE," +
|
|
|
- " t.USERID," +
|
|
|
- " t.DELIVERYGOODSID," +
|
|
|
- " t.WRSTANDARDID," +
|
|
|
- " t.SPOTGOODSBRANDID) a" +
|
|
|
- " LEFT JOIN WRSTANDARD w" +
|
|
|
- " on a.wrstandardid = w.wrstandardid" +
|
|
|
- " LEFT JOIN dgfactoryitem gb" +
|
|
|
- " on a.spotgoodsbrandid = gb.dgfactoryitemid" +
|
|
|
- " LEFT JOIN deliverygoods g" +
|
|
|
- " on a.deliverygoodsid = g.deliverygoodsid"
|
|
|
+ " GROUP BY %v) a %v"
|
|
|
|
|
|
var sqlParam utils.SQLVal
|
|
|
sqlParam.And("t.USERID", r.USERID)
|
|
|
- if r.QueryType == 1 {
|
|
|
- sqlParam.And("t.RECKONDATE", r.RECKONDATE)
|
|
|
- } else if r.QueryType == 3 {
|
|
|
+ sqlParam.AndEx("t.RECKONDATE", r.RECKONDATE, len(r.RECKONDATE) > 0)
|
|
|
+ if len(r.BeginDate) > 0 && len(r.EndDate) > 0 {
|
|
|
sqlParam.Join(fmt.Sprintf(" and t.RECKONDATE >= '%v' and t.RECKONDATE <= '%v' ", r.BeginDate, r.EndDate))
|
|
|
}
|
|
|
-
|
|
|
// 现货商品id
|
|
|
sqlParam.AndEx("t.DELIVERYGOODSID", r.DELIVERYGOODSID, r.DELIVERYGOODSID > 0)
|
|
|
// 品类id
|
|
|
sqlParam.AndEx("t.WRSTANDARDID", r.WRSTANDARDID, r.WRSTANDARDID > 0)
|
|
|
// 品牌id
|
|
|
sqlParam.AndEx("t.SPOTGOODSBRANDID", r.SPOTGOODSBRANDID, r.SPOTGOODSBRANDID > 0)
|
|
|
- sqlId.FormatParam(sqlParam.String())
|
|
|
+ // 仓库id
|
|
|
+ sqlId.AndEx("t.WAREHOUSEINFOID", r.WAREHOUSEINFOID, len(r.WAREHOUSEINFOID) > 0)
|
|
|
+ var strFileds string
|
|
|
+ for _, v := range fields {
|
|
|
+ if len(strFileds) > 0 {
|
|
|
+ strFileds += ","
|
|
|
+ }
|
|
|
+ strFileds += "t." + v
|
|
|
+ }
|
|
|
+ exFields, exLeftJoinTable := r.getExFieldInfo()
|
|
|
+ sqlId.FormatParam(exFields, strFileds, sqlParam.String(), strFileds, exLeftJoinTable)
|
|
|
+ sqlId.Join(" order by a.reckondate")
|
|
|
return sqlId.String()
|
|
|
}
|
|
|
|
|
|
-func (r *Ermcp3AreaStockReport) buildSqlDayDetail() string {
|
|
|
+// buildSqlReport 报表表
|
|
|
+func (r *Ermcp3AreaStockReportEx) buildSqlReport() string {
|
|
|
var sqlId utils.SQLVal = "SELECT t.TODAYBUYINQTY," +
|
|
|
" t.TODAYPRODUCEINQTY," +
|
|
|
- " t.reckondate," +
|
|
|
- " t.TODAYSELLOUTQTY," +
|
|
|
- " t.TODAYPRODUCEOUTQTY," +
|
|
|
- " to_char(t.UPDATETIME, 'yyyy-mm-dd hh24:mi:ss') UPDATETIME," +
|
|
|
+ " t.cycletype," +
|
|
|
+ " t.cycletime," +
|
|
|
" t.USERID," +
|
|
|
" t.WRSTANDARDID," +
|
|
|
" t.SPOTGOODSBRANDID," +
|
|
|
" t.WAREHOUSEINFOID," +
|
|
|
+ " t.deliverygoodsid," +
|
|
|
+ " t.TODAYSELLOUTQTY," +
|
|
|
+ " t.TODAYPRODUCEOUTQTY," +
|
|
|
+ " to_char(t.UPDATETIME, 'yyyy-mm-dd hh24:mi:ss') UPDATETIME," +
|
|
|
" t.ORISTOCK," +
|
|
|
" t.CURSTOCK," +
|
|
|
" w.wrstandardname," +
|
|
|
@@ -1401,7 +1595,6 @@ func (r *Ermcp3AreaStockReport) buildSqlDayDetail() string {
|
|
|
" h.warehousename," +
|
|
|
" h.warehousecode," +
|
|
|
" h.warehousetype," +
|
|
|
- " g.deliverygoodsid," +
|
|
|
" g.deliverygoodscode," +
|
|
|
" g.deliverygoodsname," +
|
|
|
" g.goodsunitid" +
|
|
|
@@ -1417,35 +1610,23 @@ func (r *Ermcp3AreaStockReport) buildSqlDayDetail() string {
|
|
|
" WHERE 1 = 1"
|
|
|
|
|
|
sqlId.And("t.USERID", r.USERID)
|
|
|
- sqlId.AndEx("t.RECKONDATE", r.RECKONDATE, len(r.RECKONDATE) > 0)
|
|
|
- if len(r.BeginDate) > 0 && len(r.EndDate) > 0 {
|
|
|
- sqlId.Join(fmt.Sprintf(" and t.RECKONDATE >= '%v' and t.RECKONDATE <= '%v' ", r.BeginDate, r.EndDate))
|
|
|
- }
|
|
|
+ sqlId.And("t.cycletype", r.CYCLETYPE)
|
|
|
+ sqlId.And("t.cycletime", r.CYCLETIME)
|
|
|
// 现货商品id
|
|
|
sqlId.AndEx("t.DELIVERYGOODSID", r.DELIVERYGOODSID, r.DELIVERYGOODSID > 0)
|
|
|
// 品类id
|
|
|
sqlId.AndEx("t.WRSTANDARDID", r.WRSTANDARDID, r.WRSTANDARDID > 0)
|
|
|
// 品牌id
|
|
|
sqlId.AndEx("t.SPOTGOODSBRANDID", r.SPOTGOODSBRANDID, r.SPOTGOODSBRANDID > 0)
|
|
|
+ // 仓库id
|
|
|
+ sqlId.AndEx("t.WAREHOUSEINFOID", r.WAREHOUSEINFOID, len(r.WAREHOUSEINFOID) > 0)
|
|
|
return sqlId.String()
|
|
|
}
|
|
|
|
|
|
-func (r *Ermcp3AreaStockReport) buildSqlCycle() string {
|
|
|
- var sqlId utils.SQLVal = "SELECT a.*," +
|
|
|
- " w.wrstandardname," +
|
|
|
- " w.wrstandardcode," +
|
|
|
- " w.unitid," +
|
|
|
- " gb.dgfactoryitemvalue brandname," +
|
|
|
- " g.deliverygoodsid," +
|
|
|
- " g.deliverygoodscode," +
|
|
|
- " g.deliverygoodsname," +
|
|
|
- " g.goodsunitid" +
|
|
|
- " from (SELECT t.cycletype," +
|
|
|
- " t.cycletime," +
|
|
|
- " t.USERID," +
|
|
|
- " t.DELIVERYGOODSID," +
|
|
|
- " t.WRSTANDARDID," +
|
|
|
- " t.SPOTGOODSBRANDID," +
|
|
|
+// buildSqlReport 报表表(汇总维度)
|
|
|
+func (r *Ermcp3AreaStockReportEx) buildSqlReportSum(fields []string) string {
|
|
|
+ var sqlId utils.SQLVal = "SELECT a.*, %v" +
|
|
|
+ " from (SELECT %v," +
|
|
|
" sum(t.ORISTOCK) ORISTOCK," +
|
|
|
" sum(t.CURSTOCK) CURSTOCK," +
|
|
|
" sum(t.TODAYBUYINQTY) TODAYBUYINQTY," +
|
|
|
@@ -1454,18 +1635,7 @@ func (r *Ermcp3AreaStockReport) buildSqlCycle() string {
|
|
|
" sum(t.TODAYPRODUCEOUTQTY) TODAYPRODUCEOUTQTY" +
|
|
|
" FROM REPORT_ERMCP_AREASTOCK t" +
|
|
|
" WHERE 1 = 1 %v" +
|
|
|
- " GROUP BY t.cycletype," +
|
|
|
- " t.cycletime," +
|
|
|
- " t.USERID," +
|
|
|
- " t.DELIVERYGOODSID," +
|
|
|
- " t.WRSTANDARDID," +
|
|
|
- " t.SPOTGOODSBRANDID) a" +
|
|
|
- " LEFT JOIN WRSTANDARD w" +
|
|
|
- " on a.wrstandardid = w.wrstandardid" +
|
|
|
- " LEFT JOIN dgfactoryitem gb" +
|
|
|
- " on a.spotgoodsbrandid = gb.dgfactoryitemid" +
|
|
|
- " LEFT JOIN deliverygoods g" +
|
|
|
- " on a.deliverygoodsid = g.deliverygoodsid"
|
|
|
+ " GROUP BY %v) a %v"
|
|
|
var sqlParam utils.SQLVal
|
|
|
sqlParam.And("t.USERID", r.USERID)
|
|
|
sqlParam.And("t.cycletype", r.CYCLETYPE)
|
|
|
@@ -1476,20 +1646,18 @@ func (r *Ermcp3AreaStockReport) buildSqlCycle() string {
|
|
|
sqlParam.AndEx("t.WRSTANDARDID", r.WRSTANDARDID, r.WRSTANDARDID > 0)
|
|
|
// 品牌id
|
|
|
sqlParam.AndEx("t.SPOTGOODSBRANDID", r.SPOTGOODSBRANDID, r.SPOTGOODSBRANDID > 0)
|
|
|
- sqlId.FormatParam(sqlParam.String())
|
|
|
- return sqlId.String()
|
|
|
-}
|
|
|
-
|
|
|
-// GetDataEx 查询库存报表
|
|
|
-func (r *Ermcp3AreaStockReport) GetDataEx() (interface{}, error) {
|
|
|
- sData := make([]ErmcpAreaStockReport, 0)
|
|
|
- err := db.GetEngine().SQL(r.buildSql()).Find(&sData)
|
|
|
- if err == nil {
|
|
|
- for i := range sData {
|
|
|
- sData[i].calc()
|
|
|
+ // 仓库id
|
|
|
+ sqlId.AndEx("t.WAREHOUSEINFOID", r.WAREHOUSEINFOID, len(r.WAREHOUSEINFOID) > 0)
|
|
|
+ var strFileds string
|
|
|
+ for _, v := range fields {
|
|
|
+ if len(strFileds) > 0 {
|
|
|
+ strFileds += ","
|
|
|
}
|
|
|
+ strFileds += "t." + v
|
|
|
}
|
|
|
- return sData, err
|
|
|
+ exFields, exLeftJoinTable := r.getExFieldInfo()
|
|
|
+ sqlId.FormatParam(exFields, strFileds, sqlParam.String(), strFileds, exLeftJoinTable)
|
|
|
+ return sqlId.String()
|
|
|
}
|
|
|
|
|
|
// Ermcp3ArealSumPL 损益汇总表
|
|
|
@@ -1509,9 +1677,9 @@ type Ermcp3ArealSumPL struct {
|
|
|
UPDATETIME string `json:"updatetime" xorm:"UPDATETIME"` // 更新时间
|
|
|
|
|
|
CURRENCYNAME string `json:"currencyname"` // 币种名称
|
|
|
- QueryType int32 `json:"-"` // 查询类型 1-日报表 2-周期报表 3-日报表(范围,[开始日期,结束日期])
|
|
|
- BeginDate string `json:"-"` // 开始交易日
|
|
|
- EndDate string `json:"-"` // 结束交易日
|
|
|
+ QueryType int32 `json:"-"` // 查询类型 1-报表 2-报表明细
|
|
|
+ BeginDate string `json:"begindate"` // 开始交易日
|
|
|
+ EndDate string `json:"enddate"` // 结束交易日
|
|
|
}
|
|
|
|
|
|
func (r *Ermcp3ArealSumPL) calc() {
|
|
|
@@ -1519,9 +1687,12 @@ func (r *Ermcp3ArealSumPL) calc() {
|
|
|
}
|
|
|
|
|
|
func (r *Ermcp3ArealSumPL) buildSql() string {
|
|
|
- if r.QueryType == 1 || r.QueryType == 3 {
|
|
|
+ // 日报表
|
|
|
+ if r.QueryType == 1 && r.CYCLETYPE == 0 {
|
|
|
return r.buildSqlDay()
|
|
|
- } else if r.QueryType == 4 {
|
|
|
+ }
|
|
|
+ // 日报表明细
|
|
|
+ if r.QueryType == 2 && r.CYCLETYPE == 0 {
|
|
|
return r.buildSqlDayDetail()
|
|
|
}
|
|
|
return r.buildSqlCycle()
|
|
|
@@ -1599,6 +1770,8 @@ func (r *Ermcp3ArealSumPL) GetDataEx() (interface{}, error) {
|
|
|
err := db.GetEngine().SQL(r.buildSql()).Find(&sData)
|
|
|
for i := range sData {
|
|
|
sData[i].calc()
|
|
|
+ sData[i].BeginDate = r.BeginDate
|
|
|
+ sData[i].EndDate = r.EndDate
|
|
|
}
|
|
|
return sData, err
|
|
|
}
|