Browse Source

1.修改财务、敞口、损益和现货报表接口
2.新增 库存报表 接口

zou.yingbin 4 years ago
parent
commit
00b3e68360
8 changed files with 805 additions and 642 deletions
  1. 2 0
      controllers/ermcp3/qryErmcp3.go
  2. 137 161
      controllers/ermcp3/qryErmcp3Report.go
  3. 138 138
      docs/docs.go
  4. 138 138
      docs/swagger.json
  5. 107 96
      docs/swagger.yaml
  6. 1 0
      go.sum
  7. 277 104
      models/ermcp3Report.go
  8. 5 5
      mtpcache/weekdate.go

+ 2 - 0
controllers/ermcp3/qryErmcp3.go

@@ -304,6 +304,7 @@ func QueryGoodsWrstandard(c *gin.Context) {
 // @Produce json
 // @Security ApiKeyAuth
 // @Param userid query int true "用户ID"
+// @Param usertype query int false "用户类型 2-机构 7-企业成员"
 // @Param deliverygoodsid query int false "现货商品ID"
 // @Param inouttype query string false "出入库类型(可多项,逗号隔开) 5:采购入库 6:销售出库 7:生产入库 8:生产出库"
 // @Param spotcontractid query int false "合同ID"
@@ -326,6 +327,7 @@ func QueryAreaStockApply(c *gin.Context) {
 		DELIVERYGOODSID  int32  `form:"deliverygoodsid"`           // 现货商品id
 		FilterStatus     string `form:"applystatus"`               // 申请状态
 		FilterType       string `form:"inouttype"`                 // 出入库类型
+		USERTYPE         int32  `form:"usertype"`                  // 用户类型
 	}{}
 	a.DoBindReq(&req)
 	m := models.Ermcp3AreaStockApply{

+ 137 - 161
controllers/ermcp3/qryErmcp3Report.go

@@ -15,6 +15,8 @@ import (
 	"mtp2_if/mtpcache"
 	"net/http"
 	"strconv"
+	"strings"
+	"time"
 )
 
 // 查询日期
@@ -40,93 +42,95 @@ func (v QueryDate) IsNumberic(queryType int32) bool {
 	return true
 }
 
-// 检查周期类型、周期时间
-type CycleTypeCheck struct {
-	CYCLETYPE int32  `json:"cycletype"  xorm:"'cycletype'"` // 周期类型 - 1:月 2:季 3:年 4:周 5:全报表【原值】
-	CYCLETIME string `json:"cycletime"  xorm:"'cycletime'"` // 周期时间 月(YYYYMM)  季(YYYYQ) 年(YYYY) 周(YYYYMMDD周内任意一天) 全(0)【原值】
+// QryReportReq 查报表请求
+// @Param userid query int true "用户ID"
+// @Param querytype query int true "查询类型 1-报表 2-报表明细"
+// @Param cycletype query int true "周期类型 - 0:日 1:月 2:季 3:年 4:周 5:全报表【原值】"
+// @Param cycletime query string true "周期时间 日(YYYYMMDD) 月(YYYYMM) 季(YYYYQ) 年(YYYY) 周(YYYYMMDD周内任意一天) 全(0)【原值】"
+type QryReportReq struct {
+	USERID    int64  `form:"userid" binding:"required"`                // 用户id
+	QUERYTYPE int32  `form:"querytype" binding:"required,min=1,max=2"` // 查询类型
+	CYCLETYPE int32  `form:"cycletype"`                                // 周期类型
+	CYCLETIME string `form:"cycletime" binding:"required"`             // 周期时间
+
+	TRADEDATE string // 交易日
+	BEGINDATE string // 开始交易日
+	ENDDATE   string // 结束交易日
 }
 
-func (r *CycleTypeCheck) Check() bool {
-	if r.CYCLETYPE < 1 || r.CYCLETYPE > 5 {
-		return false
-	}
-	nLen := len(r.CYCLETIME)
-	// 判断是否为数字
-	if _, err := strconv.ParseInt(r.CYCLETIME, 10, 32); err != nil {
-		return false
+// Check 参数检查
+func (r *QryReportReq) Check() bool {
+	// 兼容性处理, 月报表日期如果是yyyymmdd, 只取yyyymm
+	if r.CYCLETYPE == 1 && len(r.CYCLETIME) > 6 {
+		r.CYCLETIME = r.CYCLETIME[:6]
 	}
-	// 判断长度
+	// 检查日期格式
 	switch r.CYCLETYPE {
+	case 0, 4:
+		// 日/周报表 日期格式为yyyymmdd
+		return QueryDate(r.CYCLETIME).IsNumberic(1)
 	case 1:
-		if nLen != 6 {
-			return false
-		}
-	case 2:
-		if nLen != 5 {
-			return false
-		}
-	case 3:
-		if nLen != 4 {
-			return false
-		}
-	case 4:
-		if nLen != 6 {
-			return false
-		}
-	case 5:
-		if r.CYCLETIME != "0" {
-			return false
-		}
+		// 月 日期格式为yyyymm
+		return QueryDate(r.CYCLETIME).IsNumberic(2)
+	case 2, 3, 5:
+		// nothing to do
+		return true
+	default:
+		logger.GetLogger().Errorf("cycletype[%v] invalid", r.CYCLETYPE)
+		return false
 	}
-	return true
 }
 
-// QryReportReq 查报表请求
-// @Param userid query int true "用户ID"
-// @Param querytype query int true "查询类型 1-日报表 2-周期报表 3-日报表(指定时间段[开始交易日,结束交易日]) 4-日报表明细 5-周期报表明细(查日报表) 6-周期报表明细(查日报表明细)"
-// @Param tradedate query string false "交易日(格式yyyymmdd)"
-// @Param cycletype query int false "周期类型 - 1:月 2:季 3:年 4:周 5:全报表【原值】"
-// @Param cycletime query string false "周期时间 月(YYYYMM)  季(YYYYQ) 年(YYYY) 周(YYYYMMDD周内任意一天) 全(0)【原值】"
-// @Param begindate query string false "开始交易日(格式yyyymmdd)"
-// @Param enddate query string false "结束交易日(格式yyyymmdd)"
-type QryReportReq struct {
-	USERID    int64  `form:"userid" binding:"required"`    // 用户id
-	QUERYTYPE int32  `form:"querytype" binding:"required"` // 查询类型
-	TRADEDATE string `form:"tradedate"`                    // 交易日
-	CYCLETYPE int32  `form:"cycletype"`                    // 周期类型 - 1:月 2:季 3:年 4:周 5:全报表【原值】
-	CYCLETIME string `form:"cycletime"`                    // 周期时间 月(YYYYMM)  季(YYYYQ) 年(YYYY) 周(YYYYMMDD周内任意一天) 全(0)【原值】
-	BEGINDATE string `form:"begindate"`                    // 开始交易日
-	ENDDATE   string `form:"enddate"`                      // 结束交易日
-}
+// CovertRequest 转换查询请求, 日期格式等
+func (r *QryReportReq) CovertRequest() {
 
-// Check 参数检查
-func (r *QryReportReq) Check() bool {
-	// 参数检查
-	switch r.QUERYTYPE {
-	case 1, 4:
-		return QueryDate(r.TRADEDATE).IsNumberic(1)
-	case 2:
-		switch r.CYCLETYPE {
-		case 1, 2, 3, 5:
-			p := CycleTypeCheck{CYCLETYPE: r.CYCLETYPE, CYCLETIME: r.CYCLETIME}
-			return p.Check()
-		case 4:
-			return QueryDate(r.CYCLETIME).IsNumberic(1)
-		default:
-			return false
-		}
-	case 3:
-		return QueryDate(r.BEGINDATE).IsNumberic(1) && QueryDate(r.ENDDATE).IsNumberic(1)
+	// 日报表 -> 给TRADEDATE赋值
+	if r.CYCLETYPE == 0 {
+		r.TRADEDATE = r.CYCLETIME
+	}
+
+	// 周报表(YYYYMMDD) -> 周报表(YYYYIW)
+	if r.QUERYTYPE == 1 && r.CYCLETYPE == 4 {
+		r.BEGINDATE, r.ENDDATE = getDateScope(r.CYCLETYPE, r.CYCLETIME)
+		r.CYCLETIME = mtpcache.GetWeekIW(r.CYCLETIME)
+	}
+
+	// 月报表 -> 获取起止日期
+	if r.QUERYTYPE == 1 && r.CYCLETYPE == 1 {
+		r.BEGINDATE, r.ENDDATE = getDateScope(r.CYCLETYPE, r.CYCLETIME)
+	}
+
+	// 周报表明细 -> 日报表明细([开始交易日,结束交易日])
+	if r.QUERYTYPE == 2 && r.CYCLETYPE == 4 {
+		r.BEGINDATE, r.ENDDATE = getDateScope(r.CYCLETYPE, r.CYCLETIME)
+		r.CYCLETYPE = 0
+	}
+
+	// 月报表明细 -> 日报表明细([开始交易日,结束交易日])
+	if r.QUERYTYPE == 2 && r.CYCLETYPE == 1 {
+		r.BEGINDATE, r.ENDDATE = getDateScope(r.CYCLETYPE, r.CYCLETIME)
+		r.CYCLETYPE = 0
 	}
-	return true
 }
 
 // getDateScope 获取日期范围
 func getDateScope(cycletype int32, cycletime string) (beginDate, endDate string) {
 	switch cycletype {
-	case 1: // 月
-		beginDate = cycletime + "01"
-		endDate = cycletime + "31"
+	case 1: // 月(yyyymm)
+		if len(cycletime) == 6 {
+			year, _ := strconv.ParseInt(cycletime[0:4], 10, 32)
+			month, _ := strconv.ParseInt(cycletime[4:], 10, 32)
+			if year >= 1970 && year <= 9999 && month >= 1 && month <= 12 {
+				// 计算日期范围
+				beginDate = cycletime + "01"
+				d := time.Date(int(year), time.Month(month), 1, 0, 0, 0, 0, time.Now().Location())
+				last := d.AddDate(0, 1, -1)
+				endDate = last.Format("20060102")
+			} else {
+				beginDate = cycletime + "01"
+				endDate = cycletime + "31"
+			}
+		}
 	case 2: // 季, 暂不实现
 	case 3: // 年, 暂不实现
 	case 4: // 周
@@ -141,24 +145,6 @@ func getDateScope(cycletype int32, cycletime string) (beginDate, endDate string)
 	return
 }
 
-// CovertRequest 转换查询请求, 日期格式等
-func (r *QryReportReq) CovertRequest() {
-	// 周期报表明细(查日报表)
-	if r.QUERYTYPE == 5 {
-		r.QUERYTYPE = 3
-		r.BEGINDATE, r.ENDDATE = getDateScope(r.CYCLETYPE, r.CYCLETIME)
-	} else if r.QUERYTYPE == 6 {
-		// 周期报表明细(查日报表明细)
-		r.QUERYTYPE = 4
-		r.BEGINDATE, r.ENDDATE = getDateScope(r.CYCLETYPE, r.CYCLETIME)
-	} else {
-		// 周报表查询, 转换时间格式
-		if r.CYCLETYPE == 4 {
-			r.CYCLETIME = mtpcache.GetWeekIW(r.CYCLETIME)
-		}
-	}
-}
-
 // QryReportDaySpotDetail 查询现货日报表详情(菜单:报表查询/现货报表/现货日报表详情) - 作废
 func QryReportDaySpotDetail(c *gin.Context) {
 	a := app.GinUtils{Gin: app.Gin{C: c}}
@@ -240,12 +226,9 @@ func QryReportMonthSpotDetail(c *gin.Context) {
 // @Produce json
 // @Security ApiKeyAuth
 // @Param userid query int true "用户ID"
-// @Param querytype query int true "查询类型 1-日报表 2-周期报表 3-日报表(指定时间段[开始交易日,结束交易日]) 5-周期报表明细(查日报表)"
-// @Param tradedate query string false "交易日(格式yyyymmdd)"
-// @Param cycletype query int false "周期类型 - 1:月 2:季 3:年 4:周 5:全报表【原值】"
-// @Param cycletime query string false "周期时间 月(YYYYMM)  季(YYYYQ) 年(YYYY) 周(YYYYMMDD周内任意一天) 全(0)【原值】"
-// @Param begindate query string false "开始交易日(格式yyyymmdd)"
-// @Param enddate query string false "结束交易日(格式yyyymmdd)"
+// @Param querytype query int true "查询类型 1-报表, 这个接口只查报表;明细的字段完全不同,另有接口"
+// @Param cycletype query int true "周期类型 - 0:日 1:月 2:季 3:年 4:周 5:全报表【原值】"
+// @Param cycletime query string true "周期时间 日(YYYYMMDD) 月(YYYYMM)  季(YYYYQ) 年(YYYY) 周(YYYYMMDD周内任意一天) 全(0)【原值】"
 // @Success 200 {array} models.Ermcp3ExpourseReport
 // @Failure 500 {object} app.Response
 // @Router /Ermcp3/QryAreaExpourseReport [get]
@@ -268,28 +251,26 @@ func QryAreaExpourseReport(c *gin.Context) {
 // @Security ApiKeyAuth
 // @Param userid query int true "用户ID"
 // @Param middlegoodsid query int true "套保商品id"
-// @Param tradedate query string false "日报表明细, 交易日(格式yyyymmdd)"
-// @Param cycletype query int false "周期报表明细, 周期类型 - 1:月 2:季 3:年 4:周 5:全报表【原值】"
-// @Param cycletime query string false "周期报表明细, 周期时间 月(YYYYMM)  季(YYYYQ) 年(YYYY) 周(YYYYMMDD周内任意一天) 全(0)【原值】"
+// @Param cycletype query int true "周期类型 - 0:日 1:月 2:季 3:年 4:周 5:全报表【原值】"
+// @Param cycletime query string true "周期时间 日(YYYYMMDD) 月(YYYYMM)  季(YYYYQ) 年(YYYY) 周(YYYYMMDD周内任意一天) 全(0)【原值】"
 // @Success 200 {array} models.Ermcp3ExposureContractDetail
 // @Failure 500 {object} app.Response
 // @Router /Ermcp3/QryAreaExpourseContractDetail [get]
 // @Tags 企业风险管理v3(app)
 func QryAreaExpourseContractDetail(c *gin.Context) {
 	a := app.GinUtils{Gin: app.Gin{C: c}}
-	req := struct {
+	tmp := struct {
 		USERID        int64  `form:"userid" binding:"required"`        // 用户id
 		MIDDLEGOODSID int32  `form:"middlegoodsid" binding:"required"` // 套保商品id
-		TRADEDATE     string `form:"tradedate"`                        // 交易日(格式yyyymmdd)
 		CYCLETYPE     int32  `form:"cycletype"`
 		CYCLETIME     string `form:"cycletime"`
 	}{}
-	a.DoBindReq(&req)
+	a.DoBindReq(&tmp)
+	req := QryReportReq{USERID: tmp.USERID, QUERYTYPE: 2, CYCLETYPE: tmp.CYCLETYPE, CYCLETIME: tmp.CYCLETIME}
+	a.CheckParam(&req)
+	req.CovertRequest()
 	m := models.Ermcp3ExposureContractDetail{USERID: req.USERID,
-		MIDDLEGOODSID: req.MIDDLEGOODSID, TRADEDATE: req.TRADEDATE}
-	if req.CYCLETYPE > 0 {
-		m.BeginDate, m.EndDate = getDateScope(req.CYCLETYPE, req.CYCLETIME)
-	}
+		MIDDLEGOODSID: tmp.MIDDLEGOODSID, TRADEDATE: req.TRADEDATE, BeginDate: req.BEGINDATE, EndDate: req.ENDDATE}
 	a.DoGetDataI(&m)
 }
 
@@ -299,28 +280,26 @@ func QryAreaExpourseContractDetail(c *gin.Context) {
 // @Security ApiKeyAuth
 // @Param userid query int true "用户ID"
 // @Param middlegoodsid query int true "套保商品id"
-// @Param tradedate query string false "交易日(格式yyyymmdd)-日报表明细"
-// @Param cycletype query int false "周期报表明细, 周期类型 - 1:月 2:季 3:年 4:周 5:全报表【原值】"
-// @Param cycletime query string false "周期报表明细, 周期时间 月(YYYYMM)  季(YYYYQ) 年(YYYY) 周(YYYYMMDD周内任意一天) 全(0)【原值】"
+// @Param cycletype query int true "周期类型 - 0:日 1:月 2:季 3:年 4:周 5:全报表【原值】"
+// @Param cycletime query string true "周期时间 日(YYYYMMDD) 月(YYYYMM)  季(YYYYQ) 年(YYYY) 周(YYYYMMDD周内任意一天) 全(0)【原值】"
 // @Success 200 {array} models.Ermcp3ExposureHedgeplanDetail
 // @Failure 500 {object} app.Response
 // @Router /Ermcp3/QryAreaExpourseHedgeplanDetail [get]
 // @Tags 企业风险管理v3(app)
 func QryAreaExpourseHedgeplanDetail(c *gin.Context) {
 	a := app.GinUtils{Gin: app.Gin{C: c}}
-	req := struct {
+	tmp := struct {
 		USERID        int64  `form:"userid" binding:"required"`        // 用户id
 		MIDDLEGOODSID int32  `form:"middlegoodsid" binding:"required"` // 套保商品id
-		TRADEDATE     string `form:"tradedate"`                        // 交易日(格式yyyymmdd)
 		CYCLETYPE     int32  `form:"cycletype"`
 		CYCLETIME     string `form:"cycletime"`
 	}{}
-	a.DoBindReq(&req)
+	a.DoBindReq(&tmp)
+	req := QryReportReq{USERID: tmp.USERID, QUERYTYPE: 2, CYCLETYPE: tmp.CYCLETYPE, CYCLETIME: tmp.CYCLETIME}
+	a.CheckParam(&req)
+	req.CovertRequest()
 	m := models.Ermcp3ExposureHedgeplanDetail{USERID: req.USERID,
-		MIDDLEGOODSID: req.MIDDLEGOODSID, TRADEDATE: req.TRADEDATE}
-	if req.CYCLETYPE > 0 {
-		m.BeginDate, m.EndDate = getDateScope(req.CYCLETYPE, req.CYCLETIME)
-	}
+		MIDDLEGOODSID: tmp.MIDDLEGOODSID, TRADEDATE: req.TRADEDATE, BeginDate: req.BEGINDATE, EndDate: req.ENDDATE}
 	a.DoGetDataI(&m)
 }
 
@@ -329,15 +308,12 @@ func QryAreaExpourseHedgeplanDetail(c *gin.Context) {
 // @Produce json
 // @Security ApiKeyAuth
 // @Param userid query int true "用户ID"
-// @Param querytype query int true "查询类型 1-日报表 2-周期报表 3-日报表(指定时间段[开始交易日,结束交易日]) 4-日报表明细 5-周期报表明细(查日报表) 6-周期报表明细(查日报表明细)"
-// @Param tradedate query string false "交易日(格式yyyymmdd)"
-// @Param cycletype query int false "周期类型 - 1:月 2:季 3:年 4:周 5:全报表【原值】"
-// @Param cycletime query string false "周期时间 月(YYYYMM)  季(YYYYQ) 年(YYYY) 周(YYYYMMDD周内任意一天) 全(0)【原值】"
-// @Param begindate query string false "开始交易日(格式yyyymmdd)"
-// @Param enddate query string false "结束交易日(格式yyyymmdd)"
-// @Param deliverygoodsid query int false "现货品种id"
-// @Param wrstandardid query int false "品类id"
-// @Param currencyid query int false "币种id"
+// @Param querytype query int true "查询类型 1-报表 2-报表明细"
+// @Param cycletype query int true "周期类型 - 0:日 1:月 2:季 3:年 4:周 5:全报表【原值】"
+// @Param cycletime query string true "周期时间 日(YYYYMMDD) 月(YYYYMM)  季(YYYYQ) 年(YYYY) 周(YYYYMMDD周内任意一天) 全(0)【原值】"
+// @Param deliverygoodsid query int false "现货品种id(明细必填)"
+// @Param wrstandardid query int false "品类id(明细必填)"
+// @Param currencyid query int false "币种id(明细必填)"
 // @Success 200 {array} models.Ermcp3AreaSpotPLReport
 // @Failure 500 {object} app.Response
 // @Router /Ermcp3/QryAreaSpotplReport [get]
@@ -352,7 +328,7 @@ func QryAreaSpotplReport(c *gin.Context) {
 		WRSTANDARDID    int64 `form:"wrstandardid"`    // 品类
 		CURRENCYID      int32 `form:"currencyid"`      // 币种
 	}{}
-	if req.QUERYTYPE == 4 {
+	if req.QUERYTYPE == 2 {
 		a.DoBindReq(&req2)
 		a.CheckParamF(func() bool {
 			if req2.DELIVERYGOODSID <= 0 || req2.WRSTANDARDID <= 0 || req2.CURRENCYID <= 0 {
@@ -373,12 +349,9 @@ func QryAreaSpotplReport(c *gin.Context) {
 // @Produce json
 // @Security ApiKeyAuth
 // @Param userid query int true "用户ID"
-// @Param querytype query int true "查询类型 1-日报表 2-周期报表 3-日报表(指定时间段[开始交易日,结束交易日]) 4-日报表明细 5-周期报表明细(查日报表) 6-周期报表明细(查日报表明细)"
-// @Param tradedate query string false "交易日(格式yyyymmdd)"
-// @Param cycletype query int false "周期类型 - 1:月 2:季 3:年 4:周 5:全报表【原值】"
-// @Param cycletime query string false "周期时间 月(YYYYMM)  季(YYYYQ) 年(YYYY) 周(YYYYMMDD周内任意一天) 全(0)【原值】"
-// @Param begindate query string false "开始交易日(格式yyyymmdd)"
-// @Param enddate query string false "结束交易日(格式yyyymmdd)"
+// @Param querytype query int true "查询类型 1-报表 2-报表明细"
+// @Param cycletype query int true "周期类型 - 0:日 1:月 2:季 3:年 4:周 5:全报表【原值】"
+// @Param cycletime query string true "周期时间 日(YYYYMMDD) 月(YYYYMM)  季(YYYYQ) 年(YYYY) 周(YYYYMMDD周内任意一天) 全(0)【原值】"
 // @Param currencyid query int false "币种id(日报表明细)"
 // @Success 200 {array} models.Ermcp3FinanceReport
 // @Failure 500 {object} app.Response
@@ -394,7 +367,7 @@ func QryFinanceReport(c *gin.Context) {
 	}{}
 	a.DoBindReq(&req2)
 	a.CheckParamF(func() bool {
-		if req.QUERYTYPE == 4 {
+		if req.QUERYTYPE == 2 {
 			return req2.CURRENCYID > 0
 		}
 		return true
@@ -410,16 +383,15 @@ func QryFinanceReport(c *gin.Context) {
 // @Produce json
 // @Security ApiKeyAuth
 // @Param userid query int true "用户ID"
-// @Param querytype query int true "查询类型 1-日报表 2-周期报表 3-日报表(指定时间段[开始交易日,结束交易日]) 4-日报表明细 5-周期报表明细(查日报表) 6-周期报表明细(查日报表明细)"
-// @Param tradedate query string false "交易日(格式yyyymmdd)"
-// @Param cycletype query int false "周期类型 - 1:月 2:季 3:年 4:周 5:全报表【原值】"
-// @Param cycletime query string false "周期时间 月(YYYYMM)  季(YYYYQ) 年(YYYY) 周(YYYYMMDD周内任意一天) 全(0)【原值】"
-// @Param begindate query string false "开始交易日(格式yyyymmdd)"
-// @Param enddate query string false "结束交易日(格式yyyymmdd)"
-// @Param deliverygoodsid query int false "现货商品ID"
+// @Param querytype query int true "查询类型 1-报表 2-报表明细"
+// @Param cycletype query int true "周期类型 - 0:日 1:月 2:季 3:年 4:周 5:全报表【原值】"
+// @Param cycletime query string true "周期时间 日(YYYYMMDD) 月(YYYYMM) 季(YYYYQ) 年(YYYY) 周(YYYYMMDD周内任意一天) 全(0)【原值】"
+// @Param sumfields query string false "汇总维度(逗号隔开) 1-品种 2-品类 3-品牌 4-仓库"
+// @Param deliverygoodsid query int false "品种ID"
 // @Param wrstandardid query int false "品类ID"
 // @Param spotgoodsbrandid query int false "品牌ID"
-// @Success 200 {array} models.Ermcp3AreaStockReport
+// @Param warehouseinfoid query int false "仓库ID"
+// @Success 200 {array} models.Ermcp3AreaStockReportEx
 // @Failure 500 {object} app.Response
 // @Router /Ermcp3/QryAreaStockReport [get]
 // @Tags 企业风险管理v3(app)
@@ -427,25 +399,32 @@ func QryAreaStockReport(c *gin.Context) {
 	a := app.GinUtils{Gin: app.Gin{C: c}}
 	req := QryReportReq{}
 	req2 := struct {
-		DELIVERYGOODSID  int32 `form:"deliverygoodsid"`  // 现货品种id
-		WRSTANDARDID     int32 `form:"wrstandardid"`     // 品类ID
-		SPOTGOODSBRANDID int32 `form:"spotgoodsbrandid"` // 品牌id
+		SUMFIELDS        string `form:"sumfields"`        // 汇总维度
+		DELIVERYGOODSID  int32  `form:"deliverygoodsid"`  // 现货品种id
+		WRSTANDARDID     int32  `form:"wrstandardid"`     // 品类ID
+		SPOTGOODSBRANDID int32  `form:"spotgoodsbrandid"` // 品牌id
+		WAREHOUSEINFOID  int32  `form:"warehouseinfoid"`  // 仓库id
 	}{}
 	a.DoBindReq(&req)
 	a.CheckParam(&req)
 	a.DoBindReq(&req2)
-	if req.QUERYTYPE == 4 {
-		a.CheckParamF(func() bool {
-			if req2.DELIVERYGOODSID <= 0 || req2.WRSTANDARDID <= 0 || req2.SPOTGOODSBRANDID <= 0 {
-				return false
+	a.CheckParamF(func() bool {
+		tmp := req2.SUMFIELDS
+		req2.SUMFIELDS = strings.TrimSpace(req2.SUMFIELDS)
+		for _, v := range req2.SUMFIELDS {
+			if v != ',' {
+				if v < '1' || v > '4' {
+					logger.GetLogger().Errorf("sumfield[%v] check fail", tmp)
+					return false
+				}
 			}
-			return true
-		})
-	}
+		}
+		return true
+	})
 	req.CovertRequest()
-	m := models.Ermcp3AreaStockReport{USERID: req.USERID, QueryType: req.QUERYTYPE, RECKONDATE: req.TRADEDATE,
+	m := models.Ermcp3AreaStockReportEx{USERID: req.USERID, RECKONDATE: req.TRADEDATE,
 		CYCLETYPE: req.CYCLETYPE, CYCLETIME: req.CYCLETIME, BeginDate: req.BEGINDATE, EndDate: req.ENDDATE,
-		DELIVERYGOODSID: req2.DELIVERYGOODSID, WRSTANDARDID: req2.WRSTANDARDID, SPOTGOODSBRANDID: req2.SPOTGOODSBRANDID}
+		DELIVERYGOODSID: req2.DELIVERYGOODSID, WRSTANDARDID: req2.WRSTANDARDID, SPOTGOODSBRANDID: req2.SPOTGOODSBRANDID, SumFields: req2.SUMFIELDS}
 	a.DoGetDataI(&m)
 }
 
@@ -493,13 +472,10 @@ func QueryAreaStockReportDetail(c *gin.Context) {
 // @Produce json
 // @Security ApiKeyAuth
 // @Param userid query int true "用户ID"
-// @Param querytype query int true "查询类型 1-日报表 2-周期报表 3-日报表(指定时间段[开始交易日,结束交易日]) 4-日报表明细 5-周期报表明细(查日报表) 6-周期报表明细(查日报表明细)"
-// @Param tradedate query string false "交易日(格式yyyymmdd)"
-// @Param cycletype query int false "周期类型 - 1:月 2:季 3:年 4:周 5:全报表【原值】"
-// @Param cycletime query string false "周期时间 月(YYYYMM)  季(YYYYQ) 年(YYYY) 周(YYYYMMDD周内任意一天) 全(0)【原值】"
-// @Param begindate query string false "开始交易日(格式yyyymmdd)"
-// @Param enddate query string false "结束交易日(格式yyyymmdd)"
-// @Param currencyid query int false "币种id(日报表明细)"
+// @Param querytype query int true "查询类型 1-报表 2-报表明细"
+// @Param cycletype query int true "周期类型 - 0:日 1:月 2:季 3:年 4:周 5:全报表【原值】"
+// @Param cycletime query string true "周期时间 日(YYYYMMDD) 月(YYYYMM)  季(YYYYQ) 年(YYYY) 周(YYYYMMDD周内任意一天) 全(0)【原值】"
+// @Param currencyid query int false "币种id(明细必填)"
 // @Success 200 {array} models.Ermcp3ArealSumPL
 // @Failure 500 {object} app.Response
 // @Router /Ermcp3/QryAreaSumPL [get]
@@ -514,7 +490,7 @@ func QryAreaSumPL(c *gin.Context) {
 	}{}
 	a.DoBindReq(&req2)
 	a.CheckParamF(func() bool {
-		if req.QUERYTYPE == 4 {
+		if req.QUERYTYPE == 2 {
 			return req2.CURRENCYID > 0
 		}
 		return true

+ 138 - 138
docs/docs.go

@@ -1388,6 +1388,12 @@ var doc = `{
                         "required": true
                     },
                     {
+                        "type": "integer",
+                        "description": "用户类型 2-机构 7-企业成员",
+                        "name": "usertype",
+                        "in": "query"
+                    },
+                    {
                         "type": "string",
                         "description": "现货合同ID, 不填则查所有",
                         "name": "relatedid",
@@ -1442,6 +1448,12 @@ var doc = `{
                         "required": true
                     },
                     {
+                        "type": "integer",
+                        "description": "用户类型 2-机构 7-企业成员",
+                        "name": "usertype",
+                        "in": "query"
+                    },
+                    {
                         "type": "string",
                         "description": "现货合同ID, 不填则查所有",
                         "name": "relatedid",
@@ -1496,6 +1508,12 @@ var doc = `{
                         "required": true
                     },
                     {
+                        "type": "integer",
+                        "description": "用户类型 2-机构 7-企业成员",
+                        "name": "usertype",
+                        "in": "query"
+                    },
+                    {
                         "type": "string",
                         "description": "现货合同ID, 不填则查所有",
                         "name": "relatedid",
@@ -1556,6 +1574,12 @@ var doc = `{
                         "required": true
                     },
                     {
+                        "type": "integer",
+                        "description": "用户类型 2-机构 7-企业成员",
+                        "name": "usertype",
+                        "in": "query"
+                    },
+                    {
                         "type": "string",
                         "description": "现货合同ID, 不填则查所有",
                         "name": "relatedid",
@@ -1610,6 +1634,12 @@ var doc = `{
                         "required": true
                     },
                     {
+                        "type": "integer",
+                        "description": "用户类型 2-机构 7-企业成员",
+                        "name": "usertype",
+                        "in": "query"
+                    },
+                    {
                         "type": "string",
                         "description": "现货合同ID, 不填则查所有",
                         "name": "relatedid",
@@ -2887,22 +2917,18 @@ var doc = `{
                         "required": true
                     },
                     {
-                        "type": "string",
-                        "description": "日报表明细, 交易日(格式yyyymmdd)",
-                        "name": "tradedate",
-                        "in": "query"
-                    },
-                    {
                         "type": "integer",
-                        "description": "周期报表明细, 周期类型 - 1:月 2:季 3:年 4:周 5:全报表【原值】",
+                        "description": "周期类型 - 0:日 1:月 2:季 3:年 4:周 5:全报表【原值】",
                         "name": "cycletype",
-                        "in": "query"
+                        "in": "query",
+                        "required": true
                     },
                     {
                         "type": "string",
-                        "description": "周期报表明细, 周期时间 月(YYYYMM)  季(YYYYQ) 年(YYYY) 周(YYYYMMDD周内任意一天) 全(0)【原值】",
+                        "description": "周期时间 日(YYYYMMDD) 月(YYYYMM)  季(YYYYQ) 年(YYYY) 周(YYYYMMDD周内任意一天) 全(0)【原值】",
                         "name": "cycletime",
-                        "in": "query"
+                        "in": "query",
+                        "required": true
                     }
                 ],
                 "responses": {
@@ -2954,22 +2980,18 @@ var doc = `{
                         "required": true
                     },
                     {
-                        "type": "string",
-                        "description": "交易日(格式yyyymmdd)-日报表明细",
-                        "name": "tradedate",
-                        "in": "query"
-                    },
-                    {
                         "type": "integer",
-                        "description": "周期报表明细, 周期类型 - 1:月 2:季 3:年 4:周 5:全报表【原值】",
+                        "description": "周期类型 - 0:日 1:月 2:季 3:年 4:周 5:全报表【原值】",
                         "name": "cycletype",
-                        "in": "query"
+                        "in": "query",
+                        "required": true
                     },
                     {
                         "type": "string",
-                        "description": "周期报表明细, 周期时间 月(YYYYMM)  季(YYYYQ) 年(YYYY) 周(YYYYMMDD周内任意一天) 全(0)【原值】",
+                        "description": "周期时间 日(YYYYMMDD) 月(YYYYMM)  季(YYYYQ) 年(YYYY) 周(YYYYMMDD周内任意一天) 全(0)【原值】",
                         "name": "cycletime",
-                        "in": "query"
+                        "in": "query",
+                        "required": true
                     }
                 ],
                 "responses": {
@@ -3015,40 +3037,24 @@ var doc = `{
                     },
                     {
                         "type": "integer",
-                        "description": "查询类型 1-日报表 2-周期报表 3-日报表(指定时间段[开始交易日,结束交易日]) 5-周期报表明细(查日报表)",
+                        "description": "查询类型 1-报表, 这个接口只查报表;明细的字段完全不同,另有接口",
                         "name": "querytype",
                         "in": "query",
                         "required": true
                     },
                     {
-                        "type": "string",
-                        "description": "交易日(格式yyyymmdd)",
-                        "name": "tradedate",
-                        "in": "query"
-                    },
-                    {
                         "type": "integer",
-                        "description": "周期类型 - 1:月 2:季 3:年 4:周 5:全报表【原值】",
+                        "description": "周期类型 - 0:日 1:月 2:季 3:年 4:周 5:全报表【原值】",
                         "name": "cycletype",
-                        "in": "query"
+                        "in": "query",
+                        "required": true
                     },
                     {
                         "type": "string",
-                        "description": "周期时间 月(YYYYMM)  季(YYYYQ) 年(YYYY) 周(YYYYMMDD周内任意一天) 全(0)【原值】",
+                        "description": "周期时间 日(YYYYMMDD) 月(YYYYMM)  季(YYYYQ) 年(YYYY) 周(YYYYMMDD周内任意一天) 全(0)【原值】",
                         "name": "cycletime",
-                        "in": "query"
-                    },
-                    {
-                        "type": "string",
-                        "description": "开始交易日(格式yyyymmdd)",
-                        "name": "begindate",
-                        "in": "query"
-                    },
-                    {
-                        "type": "string",
-                        "description": "结束交易日(格式yyyymmdd)",
-                        "name": "enddate",
-                        "in": "query"
+                        "in": "query",
+                        "required": true
                     }
                 ],
                 "responses": {
@@ -3094,56 +3100,40 @@ var doc = `{
                     },
                     {
                         "type": "integer",
-                        "description": "查询类型 1-报表 2-周期报表 3-日报表(指定时间段[开始交易日,结束交易日]) 4-日报表明细 5-周期报表明细(查日报表) 6-周期报表明细(查日报表明细)",
+                        "description": "查询类型 1-报表 2-报表明细",
                         "name": "querytype",
                         "in": "query",
                         "required": true
                     },
                     {
-                        "type": "string",
-                        "description": "交易日(格式yyyymmdd)",
-                        "name": "tradedate",
-                        "in": "query"
-                    },
-                    {
                         "type": "integer",
-                        "description": "周期类型 - 1:月 2:季 3:年 4:周 5:全报表【原值】",
+                        "description": "周期类型 - 0:日 1:月 2:季 3:年 4:周 5:全报表【原值】",
                         "name": "cycletype",
-                        "in": "query"
+                        "in": "query",
+                        "required": true
                     },
                     {
                         "type": "string",
-                        "description": "周期时间 月(YYYYMM)  季(YYYYQ) 年(YYYY) 周(YYYYMMDD周内任意一天) 全(0)【原值】",
+                        "description": "周期时间 日(YYYYMMDD) 月(YYYYMM)  季(YYYYQ) 年(YYYY) 周(YYYYMMDD周内任意一天) 全(0)【原值】",
                         "name": "cycletime",
-                        "in": "query"
-                    },
-                    {
-                        "type": "string",
-                        "description": "开始交易日(格式yyyymmdd)",
-                        "name": "begindate",
-                        "in": "query"
-                    },
-                    {
-                        "type": "string",
-                        "description": "结束交易日(格式yyyymmdd)",
-                        "name": "enddate",
-                        "in": "query"
+                        "in": "query",
+                        "required": true
                     },
                     {
                         "type": "integer",
-                        "description": "现货品种id",
+                        "description": "现货品种id(明细必填)",
                         "name": "deliverygoodsid",
                         "in": "query"
                     },
                     {
                         "type": "integer",
-                        "description": "品类id",
+                        "description": "品类id(明细必填)",
                         "name": "wrstandardid",
                         "in": "query"
                     },
                     {
                         "type": "integer",
-                        "description": "币种id",
+                        "description": "币种id(明细必填)",
                         "name": "currencyid",
                         "in": "query"
                     }
@@ -3191,44 +3181,34 @@ var doc = `{
                     },
                     {
                         "type": "integer",
-                        "description": "查询类型 1-报表 2-周期报表 3-日报表(指定时间段[开始交易日,结束交易日]) 4-日报表明细 5-周期报表明细(查日报表) 6-周期报表明细(查日报表明细)",
+                        "description": "查询类型 1-报表 2-报表明细",
                         "name": "querytype",
                         "in": "query",
                         "required": true
                     },
                     {
-                        "type": "string",
-                        "description": "交易日(格式yyyymmdd)",
-                        "name": "tradedate",
-                        "in": "query"
-                    },
-                    {
                         "type": "integer",
-                        "description": "周期类型 - 1:月 2:季 3:年 4:周 5:全报表【原值】",
+                        "description": "周期类型 - 0:日 1:月 2:季 3:年 4:周 5:全报表【原值】",
                         "name": "cycletype",
-                        "in": "query"
+                        "in": "query",
+                        "required": true
                     },
                     {
                         "type": "string",
-                        "description": "周期时间 月(YYYYMM)  季(YYYYQ) 年(YYYY) 周(YYYYMMDD周内任意一天) 全(0)【原值】",
+                        "description": "周期时间 日(YYYYMMDD) 月(YYYYMM) 季(YYYYQ) 年(YYYY) 周(YYYYMMDD周内任意一天) 全(0)【原值】",
                         "name": "cycletime",
-                        "in": "query"
-                    },
-                    {
-                        "type": "string",
-                        "description": "开始交易日(格式yyyymmdd)",
-                        "name": "begindate",
-                        "in": "query"
+                        "in": "query",
+                        "required": true
                     },
                     {
                         "type": "string",
-                        "description": "结束交易日(格式yyyymmdd)",
-                        "name": "enddate",
+                        "description": "汇总维度(逗号隔开) 1-品种 2-品类 3-品牌 4-仓库",
+                        "name": "sumfields",
                         "in": "query"
                     },
                     {
                         "type": "integer",
-                        "description": "现货商品ID",
+                        "description": "品ID",
                         "name": "deliverygoodsid",
                         "in": "query"
                     },
@@ -3243,6 +3223,12 @@ var doc = `{
                         "description": "品牌ID",
                         "name": "spotgoodsbrandid",
                         "in": "query"
+                    },
+                    {
+                        "type": "integer",
+                        "description": "仓库ID",
+                        "name": "warehouseinfoid",
+                        "in": "query"
                     }
                 ],
                 "responses": {
@@ -3251,7 +3237,7 @@ var doc = `{
                         "schema": {
                             "type": "array",
                             "items": {
-                                "$ref": "#/definitions/models.Ermcp3AreaStockReport"
+                                "$ref": "#/definitions/models.Ermcp3AreaStockReportEx"
                             }
                         }
                     },
@@ -3288,44 +3274,28 @@ var doc = `{
                     },
                     {
                         "type": "integer",
-                        "description": "查询类型 1-报表 2-周期报表 3-日报表(指定时间段[开始交易日,结束交易日]) 4-日报表明细 5-周期报表明细(查日报表) 6-周期报表明细(查日报表明细)",
+                        "description": "查询类型 1-报表 2-报表明细",
                         "name": "querytype",
                         "in": "query",
                         "required": true
                     },
                     {
-                        "type": "string",
-                        "description": "交易日(格式yyyymmdd)",
-                        "name": "tradedate",
-                        "in": "query"
-                    },
-                    {
                         "type": "integer",
-                        "description": "周期类型 - 1:月 2:季 3:年 4:周 5:全报表【原值】",
+                        "description": "周期类型 - 0:日 1:月 2:季 3:年 4:周 5:全报表【原值】",
                         "name": "cycletype",
-                        "in": "query"
+                        "in": "query",
+                        "required": true
                     },
                     {
                         "type": "string",
-                        "description": "周期时间 月(YYYYMM)  季(YYYYQ) 年(YYYY) 周(YYYYMMDD周内任意一天) 全(0)【原值】",
+                        "description": "周期时间 日(YYYYMMDD) 月(YYYYMM)  季(YYYYQ) 年(YYYY) 周(YYYYMMDD周内任意一天) 全(0)【原值】",
                         "name": "cycletime",
-                        "in": "query"
-                    },
-                    {
-                        "type": "string",
-                        "description": "开始交易日(格式yyyymmdd)",
-                        "name": "begindate",
-                        "in": "query"
-                    },
-                    {
-                        "type": "string",
-                        "description": "结束交易日(格式yyyymmdd)",
-                        "name": "enddate",
-                        "in": "query"
+                        "in": "query",
+                        "required": true
                     },
                     {
                         "type": "integer",
-                        "description": "币种id(日报表明细)",
+                        "description": "币种id(明细必填)",
                         "name": "currencyid",
                         "in": "query"
                     }
@@ -3373,40 +3343,24 @@ var doc = `{
                     },
                     {
                         "type": "integer",
-                        "description": "查询类型 1-报表 2-周期报表 3-日报表(指定时间段[开始交易日,结束交易日]) 4-日报表明细 5-周期报表明细(查日报表) 6-周期报表明细(查日报表明细)",
+                        "description": "查询类型 1-报表 2-报表明细",
                         "name": "querytype",
                         "in": "query",
                         "required": true
                     },
                     {
-                        "type": "string",
-                        "description": "交易日(格式yyyymmdd)",
-                        "name": "tradedate",
-                        "in": "query"
-                    },
-                    {
                         "type": "integer",
-                        "description": "周期类型 - 1:月 2:季 3:年 4:周 5:全报表【原值】",
+                        "description": "周期类型 - 0:日 1:月 2:季 3:年 4:周 5:全报表【原值】",
                         "name": "cycletype",
-                        "in": "query"
+                        "in": "query",
+                        "required": true
                     },
                     {
                         "type": "string",
-                        "description": "周期时间 月(YYYYMM)  季(YYYYQ) 年(YYYY) 周(YYYYMMDD周内任意一天) 全(0)【原值】",
+                        "description": "周期时间 日(YYYYMMDD) 月(YYYYMM)  季(YYYYQ) 年(YYYY) 周(YYYYMMDD周内任意一天) 全(0)【原值】",
                         "name": "cycletime",
-                        "in": "query"
-                    },
-                    {
-                        "type": "string",
-                        "description": "开始交易日(格式yyyymmdd)",
-                        "name": "begindate",
-                        "in": "query"
-                    },
-                    {
-                        "type": "string",
-                        "description": "结束交易日(格式yyyymmdd)",
-                        "name": "enddate",
-                        "in": "query"
+                        "in": "query",
+                        "required": true
                     },
                     {
                         "type": "integer",
@@ -3500,6 +3454,12 @@ var doc = `{
                     },
                     {
                         "type": "integer",
+                        "description": "用户类型 2-机构 7-企业成员",
+                        "name": "usertype",
+                        "in": "query"
+                    },
+                    {
+                        "type": "integer",
                         "description": "现货商品ID",
                         "name": "deliverygoodsid",
                         "in": "query"
@@ -12401,6 +12361,10 @@ var doc = `{
                     "description": "所属机构\\交易用户ID",
                     "type": "integer"
                 },
+                "begindate": {
+                    "description": "开始交易日",
+                    "type": "string"
+                },
                 "biztype": {
                     "description": "业务类型 - 1:套保 2:套利",
                     "type": "integer"
@@ -12473,6 +12437,10 @@ var doc = `{
                     "description": "现货商品名称",
                     "type": "string"
                 },
+                "enddate": {
+                    "description": "结束交易日",
+                    "type": "string"
+                },
                 "enumdicname": {
                     "description": "现货商品单位名称",
                     "type": "string"
@@ -12893,9 +12861,13 @@ var doc = `{
                 }
             }
         },
-        "models.Ermcp3AreaStockReport": {
+        "models.Ermcp3AreaStockReportEx": {
             "type": "object",
             "properties": {
+                "begindate": {
+                    "description": "开始交易日",
+                    "type": "string"
+                },
                 "brandname": {
                     "description": "品牌名称",
                     "type": "string"
@@ -12928,6 +12900,10 @@ var doc = `{
                     "description": "库存变化量 = 期末 - 期初",
                     "type": "number"
                 },
+                "enddate": {
+                    "description": "结束交易日",
+                    "type": "string"
+                },
                 "enumdicname": {
                     "description": "单位名称",
                     "type": "string"
@@ -13025,6 +13001,10 @@ var doc = `{
                     "description": "所属机构\\交易用户ID",
                     "type": "integer"
                 },
+                "begindate": {
+                    "description": "开始交易日",
+                    "type": "string"
+                },
                 "currencyid": {
                     "description": "结算币种ID",
                     "type": "integer"
@@ -13041,6 +13021,10 @@ var doc = `{
                     "description": "周期类型 - 1:月 2:季 3:年 4:周 5:全报表【原值】",
                     "type": "integer"
                 },
+                "enddate": {
+                    "description": "结束交易日",
+                    "type": "string"
+                },
                 "futureactualpl": {
                     "description": "期货损益",
                     "type": "number"
@@ -13643,6 +13627,10 @@ var doc = `{
                     "description": "所属机构\\交易用户ID",
                     "type": "integer"
                 },
+                "begindate": {
+                    "description": "开始交易日",
+                    "type": "string"
+                },
                 "buyfutureqty": {
                     "description": "买入期货数量",
                     "type": "number"
@@ -13691,6 +13679,10 @@ var doc = `{
                     "description": "变动量(现货)",
                     "type": "number"
                 },
+                "enddate": {
+                    "description": "结束交易日",
+                    "type": "string"
+                },
                 "enumdicname": {
                     "description": "单位名称",
                     "type": "string"
@@ -13848,6 +13840,10 @@ var doc = `{
                     "description": "所属机构\\交易用户ID",
                     "type": "integer"
                 },
+                "begindate": {
+                    "description": "开始交易日",
+                    "type": "string"
+                },
                 "biztype": {
                     "description": "业务类型 - 1:套保 2:套利",
                     "type": "integer"
@@ -13912,6 +13908,10 @@ var doc = `{
                     "description": "现货品种名称",
                     "type": "string"
                 },
+                "enddate": {
+                    "description": "结束交易日",
+                    "type": "string"
+                },
                 "reckondate": {
                     "description": "日照时期(yyyyMMdd)",
                     "type": "string"

+ 138 - 138
docs/swagger.json

@@ -1372,6 +1372,12 @@
                         "required": true
                     },
                     {
+                        "type": "integer",
+                        "description": "用户类型 2-机构 7-企业成员",
+                        "name": "usertype",
+                        "in": "query"
+                    },
+                    {
                         "type": "string",
                         "description": "现货合同ID, 不填则查所有",
                         "name": "relatedid",
@@ -1426,6 +1432,12 @@
                         "required": true
                     },
                     {
+                        "type": "integer",
+                        "description": "用户类型 2-机构 7-企业成员",
+                        "name": "usertype",
+                        "in": "query"
+                    },
+                    {
                         "type": "string",
                         "description": "现货合同ID, 不填则查所有",
                         "name": "relatedid",
@@ -1480,6 +1492,12 @@
                         "required": true
                     },
                     {
+                        "type": "integer",
+                        "description": "用户类型 2-机构 7-企业成员",
+                        "name": "usertype",
+                        "in": "query"
+                    },
+                    {
                         "type": "string",
                         "description": "现货合同ID, 不填则查所有",
                         "name": "relatedid",
@@ -1540,6 +1558,12 @@
                         "required": true
                     },
                     {
+                        "type": "integer",
+                        "description": "用户类型 2-机构 7-企业成员",
+                        "name": "usertype",
+                        "in": "query"
+                    },
+                    {
                         "type": "string",
                         "description": "现货合同ID, 不填则查所有",
                         "name": "relatedid",
@@ -1594,6 +1618,12 @@
                         "required": true
                     },
                     {
+                        "type": "integer",
+                        "description": "用户类型 2-机构 7-企业成员",
+                        "name": "usertype",
+                        "in": "query"
+                    },
+                    {
                         "type": "string",
                         "description": "现货合同ID, 不填则查所有",
                         "name": "relatedid",
@@ -2871,22 +2901,18 @@
                         "required": true
                     },
                     {
-                        "type": "string",
-                        "description": "日报表明细, 交易日(格式yyyymmdd)",
-                        "name": "tradedate",
-                        "in": "query"
-                    },
-                    {
                         "type": "integer",
-                        "description": "周期报表明细, 周期类型 - 1:月 2:季 3:年 4:周 5:全报表【原值】",
+                        "description": "周期类型 - 0:日 1:月 2:季 3:年 4:周 5:全报表【原值】",
                         "name": "cycletype",
-                        "in": "query"
+                        "in": "query",
+                        "required": true
                     },
                     {
                         "type": "string",
-                        "description": "周期报表明细, 周期时间 月(YYYYMM)  季(YYYYQ) 年(YYYY) 周(YYYYMMDD周内任意一天) 全(0)【原值】",
+                        "description": "周期时间 日(YYYYMMDD) 月(YYYYMM)  季(YYYYQ) 年(YYYY) 周(YYYYMMDD周内任意一天) 全(0)【原值】",
                         "name": "cycletime",
-                        "in": "query"
+                        "in": "query",
+                        "required": true
                     }
                 ],
                 "responses": {
@@ -2938,22 +2964,18 @@
                         "required": true
                     },
                     {
-                        "type": "string",
-                        "description": "交易日(格式yyyymmdd)-日报表明细",
-                        "name": "tradedate",
-                        "in": "query"
-                    },
-                    {
                         "type": "integer",
-                        "description": "周期报表明细, 周期类型 - 1:月 2:季 3:年 4:周 5:全报表【原值】",
+                        "description": "周期类型 - 0:日 1:月 2:季 3:年 4:周 5:全报表【原值】",
                         "name": "cycletype",
-                        "in": "query"
+                        "in": "query",
+                        "required": true
                     },
                     {
                         "type": "string",
-                        "description": "周期报表明细, 周期时间 月(YYYYMM)  季(YYYYQ) 年(YYYY) 周(YYYYMMDD周内任意一天) 全(0)【原值】",
+                        "description": "周期时间 日(YYYYMMDD) 月(YYYYMM)  季(YYYYQ) 年(YYYY) 周(YYYYMMDD周内任意一天) 全(0)【原值】",
                         "name": "cycletime",
-                        "in": "query"
+                        "in": "query",
+                        "required": true
                     }
                 ],
                 "responses": {
@@ -2999,40 +3021,24 @@
                     },
                     {
                         "type": "integer",
-                        "description": "查询类型 1-日报表 2-周期报表 3-日报表(指定时间段[开始交易日,结束交易日]) 5-周期报表明细(查日报表)",
+                        "description": "查询类型 1-报表, 这个接口只查报表;明细的字段完全不同,另有接口",
                         "name": "querytype",
                         "in": "query",
                         "required": true
                     },
                     {
-                        "type": "string",
-                        "description": "交易日(格式yyyymmdd)",
-                        "name": "tradedate",
-                        "in": "query"
-                    },
-                    {
                         "type": "integer",
-                        "description": "周期类型 - 1:月 2:季 3:年 4:周 5:全报表【原值】",
+                        "description": "周期类型 - 0:日 1:月 2:季 3:年 4:周 5:全报表【原值】",
                         "name": "cycletype",
-                        "in": "query"
+                        "in": "query",
+                        "required": true
                     },
                     {
                         "type": "string",
-                        "description": "周期时间 月(YYYYMM)  季(YYYYQ) 年(YYYY) 周(YYYYMMDD周内任意一天) 全(0)【原值】",
+                        "description": "周期时间 日(YYYYMMDD) 月(YYYYMM)  季(YYYYQ) 年(YYYY) 周(YYYYMMDD周内任意一天) 全(0)【原值】",
                         "name": "cycletime",
-                        "in": "query"
-                    },
-                    {
-                        "type": "string",
-                        "description": "开始交易日(格式yyyymmdd)",
-                        "name": "begindate",
-                        "in": "query"
-                    },
-                    {
-                        "type": "string",
-                        "description": "结束交易日(格式yyyymmdd)",
-                        "name": "enddate",
-                        "in": "query"
+                        "in": "query",
+                        "required": true
                     }
                 ],
                 "responses": {
@@ -3078,56 +3084,40 @@
                     },
                     {
                         "type": "integer",
-                        "description": "查询类型 1-报表 2-周期报表 3-日报表(指定时间段[开始交易日,结束交易日]) 4-日报表明细 5-周期报表明细(查日报表) 6-周期报表明细(查日报表明细)",
+                        "description": "查询类型 1-报表 2-报表明细",
                         "name": "querytype",
                         "in": "query",
                         "required": true
                     },
                     {
-                        "type": "string",
-                        "description": "交易日(格式yyyymmdd)",
-                        "name": "tradedate",
-                        "in": "query"
-                    },
-                    {
                         "type": "integer",
-                        "description": "周期类型 - 1:月 2:季 3:年 4:周 5:全报表【原值】",
+                        "description": "周期类型 - 0:日 1:月 2:季 3:年 4:周 5:全报表【原值】",
                         "name": "cycletype",
-                        "in": "query"
+                        "in": "query",
+                        "required": true
                     },
                     {
                         "type": "string",
-                        "description": "周期时间 月(YYYYMM)  季(YYYYQ) 年(YYYY) 周(YYYYMMDD周内任意一天) 全(0)【原值】",
+                        "description": "周期时间 日(YYYYMMDD) 月(YYYYMM)  季(YYYYQ) 年(YYYY) 周(YYYYMMDD周内任意一天) 全(0)【原值】",
                         "name": "cycletime",
-                        "in": "query"
-                    },
-                    {
-                        "type": "string",
-                        "description": "开始交易日(格式yyyymmdd)",
-                        "name": "begindate",
-                        "in": "query"
-                    },
-                    {
-                        "type": "string",
-                        "description": "结束交易日(格式yyyymmdd)",
-                        "name": "enddate",
-                        "in": "query"
+                        "in": "query",
+                        "required": true
                     },
                     {
                         "type": "integer",
-                        "description": "现货品种id",
+                        "description": "现货品种id(明细必填)",
                         "name": "deliverygoodsid",
                         "in": "query"
                     },
                     {
                         "type": "integer",
-                        "description": "品类id",
+                        "description": "品类id(明细必填)",
                         "name": "wrstandardid",
                         "in": "query"
                     },
                     {
                         "type": "integer",
-                        "description": "币种id",
+                        "description": "币种id(明细必填)",
                         "name": "currencyid",
                         "in": "query"
                     }
@@ -3175,44 +3165,34 @@
                     },
                     {
                         "type": "integer",
-                        "description": "查询类型 1-报表 2-周期报表 3-日报表(指定时间段[开始交易日,结束交易日]) 4-日报表明细 5-周期报表明细(查日报表) 6-周期报表明细(查日报表明细)",
+                        "description": "查询类型 1-报表 2-报表明细",
                         "name": "querytype",
                         "in": "query",
                         "required": true
                     },
                     {
-                        "type": "string",
-                        "description": "交易日(格式yyyymmdd)",
-                        "name": "tradedate",
-                        "in": "query"
-                    },
-                    {
                         "type": "integer",
-                        "description": "周期类型 - 1:月 2:季 3:年 4:周 5:全报表【原值】",
+                        "description": "周期类型 - 0:日 1:月 2:季 3:年 4:周 5:全报表【原值】",
                         "name": "cycletype",
-                        "in": "query"
+                        "in": "query",
+                        "required": true
                     },
                     {
                         "type": "string",
-                        "description": "周期时间 月(YYYYMM)  季(YYYYQ) 年(YYYY) 周(YYYYMMDD周内任意一天) 全(0)【原值】",
+                        "description": "周期时间 日(YYYYMMDD) 月(YYYYMM) 季(YYYYQ) 年(YYYY) 周(YYYYMMDD周内任意一天) 全(0)【原值】",
                         "name": "cycletime",
-                        "in": "query"
-                    },
-                    {
-                        "type": "string",
-                        "description": "开始交易日(格式yyyymmdd)",
-                        "name": "begindate",
-                        "in": "query"
+                        "in": "query",
+                        "required": true
                     },
                     {
                         "type": "string",
-                        "description": "结束交易日(格式yyyymmdd)",
-                        "name": "enddate",
+                        "description": "汇总维度(逗号隔开) 1-品种 2-品类 3-品牌 4-仓库",
+                        "name": "sumfields",
                         "in": "query"
                     },
                     {
                         "type": "integer",
-                        "description": "现货商品ID",
+                        "description": "品ID",
                         "name": "deliverygoodsid",
                         "in": "query"
                     },
@@ -3227,6 +3207,12 @@
                         "description": "品牌ID",
                         "name": "spotgoodsbrandid",
                         "in": "query"
+                    },
+                    {
+                        "type": "integer",
+                        "description": "仓库ID",
+                        "name": "warehouseinfoid",
+                        "in": "query"
                     }
                 ],
                 "responses": {
@@ -3235,7 +3221,7 @@
                         "schema": {
                             "type": "array",
                             "items": {
-                                "$ref": "#/definitions/models.Ermcp3AreaStockReport"
+                                "$ref": "#/definitions/models.Ermcp3AreaStockReportEx"
                             }
                         }
                     },
@@ -3272,44 +3258,28 @@
                     },
                     {
                         "type": "integer",
-                        "description": "查询类型 1-报表 2-周期报表 3-日报表(指定时间段[开始交易日,结束交易日]) 4-日报表明细 5-周期报表明细(查日报表) 6-周期报表明细(查日报表明细)",
+                        "description": "查询类型 1-报表 2-报表明细",
                         "name": "querytype",
                         "in": "query",
                         "required": true
                     },
                     {
-                        "type": "string",
-                        "description": "交易日(格式yyyymmdd)",
-                        "name": "tradedate",
-                        "in": "query"
-                    },
-                    {
                         "type": "integer",
-                        "description": "周期类型 - 1:月 2:季 3:年 4:周 5:全报表【原值】",
+                        "description": "周期类型 - 0:日 1:月 2:季 3:年 4:周 5:全报表【原值】",
                         "name": "cycletype",
-                        "in": "query"
+                        "in": "query",
+                        "required": true
                     },
                     {
                         "type": "string",
-                        "description": "周期时间 月(YYYYMM)  季(YYYYQ) 年(YYYY) 周(YYYYMMDD周内任意一天) 全(0)【原值】",
+                        "description": "周期时间 日(YYYYMMDD) 月(YYYYMM)  季(YYYYQ) 年(YYYY) 周(YYYYMMDD周内任意一天) 全(0)【原值】",
                         "name": "cycletime",
-                        "in": "query"
-                    },
-                    {
-                        "type": "string",
-                        "description": "开始交易日(格式yyyymmdd)",
-                        "name": "begindate",
-                        "in": "query"
-                    },
-                    {
-                        "type": "string",
-                        "description": "结束交易日(格式yyyymmdd)",
-                        "name": "enddate",
-                        "in": "query"
+                        "in": "query",
+                        "required": true
                     },
                     {
                         "type": "integer",
-                        "description": "币种id(日报表明细)",
+                        "description": "币种id(明细必填)",
                         "name": "currencyid",
                         "in": "query"
                     }
@@ -3357,40 +3327,24 @@
                     },
                     {
                         "type": "integer",
-                        "description": "查询类型 1-报表 2-周期报表 3-日报表(指定时间段[开始交易日,结束交易日]) 4-日报表明细 5-周期报表明细(查日报表) 6-周期报表明细(查日报表明细)",
+                        "description": "查询类型 1-报表 2-报表明细",
                         "name": "querytype",
                         "in": "query",
                         "required": true
                     },
                     {
-                        "type": "string",
-                        "description": "交易日(格式yyyymmdd)",
-                        "name": "tradedate",
-                        "in": "query"
-                    },
-                    {
                         "type": "integer",
-                        "description": "周期类型 - 1:月 2:季 3:年 4:周 5:全报表【原值】",
+                        "description": "周期类型 - 0:日 1:月 2:季 3:年 4:周 5:全报表【原值】",
                         "name": "cycletype",
-                        "in": "query"
+                        "in": "query",
+                        "required": true
                     },
                     {
                         "type": "string",
-                        "description": "周期时间 月(YYYYMM)  季(YYYYQ) 年(YYYY) 周(YYYYMMDD周内任意一天) 全(0)【原值】",
+                        "description": "周期时间 日(YYYYMMDD) 月(YYYYMM)  季(YYYYQ) 年(YYYY) 周(YYYYMMDD周内任意一天) 全(0)【原值】",
                         "name": "cycletime",
-                        "in": "query"
-                    },
-                    {
-                        "type": "string",
-                        "description": "开始交易日(格式yyyymmdd)",
-                        "name": "begindate",
-                        "in": "query"
-                    },
-                    {
-                        "type": "string",
-                        "description": "结束交易日(格式yyyymmdd)",
-                        "name": "enddate",
-                        "in": "query"
+                        "in": "query",
+                        "required": true
                     },
                     {
                         "type": "integer",
@@ -3484,6 +3438,12 @@
                     },
                     {
                         "type": "integer",
+                        "description": "用户类型 2-机构 7-企业成员",
+                        "name": "usertype",
+                        "in": "query"
+                    },
+                    {
+                        "type": "integer",
                         "description": "现货商品ID",
                         "name": "deliverygoodsid",
                         "in": "query"
@@ -12385,6 +12345,10 @@
                     "description": "所属机构\\交易用户ID",
                     "type": "integer"
                 },
+                "begindate": {
+                    "description": "开始交易日",
+                    "type": "string"
+                },
                 "biztype": {
                     "description": "业务类型 - 1:套保 2:套利",
                     "type": "integer"
@@ -12457,6 +12421,10 @@
                     "description": "现货商品名称",
                     "type": "string"
                 },
+                "enddate": {
+                    "description": "结束交易日",
+                    "type": "string"
+                },
                 "enumdicname": {
                     "description": "现货商品单位名称",
                     "type": "string"
@@ -12877,9 +12845,13 @@
                 }
             }
         },
-        "models.Ermcp3AreaStockReport": {
+        "models.Ermcp3AreaStockReportEx": {
             "type": "object",
             "properties": {
+                "begindate": {
+                    "description": "开始交易日",
+                    "type": "string"
+                },
                 "brandname": {
                     "description": "品牌名称",
                     "type": "string"
@@ -12912,6 +12884,10 @@
                     "description": "库存变化量 = 期末 - 期初",
                     "type": "number"
                 },
+                "enddate": {
+                    "description": "结束交易日",
+                    "type": "string"
+                },
                 "enumdicname": {
                     "description": "单位名称",
                     "type": "string"
@@ -13009,6 +12985,10 @@
                     "description": "所属机构\\交易用户ID",
                     "type": "integer"
                 },
+                "begindate": {
+                    "description": "开始交易日",
+                    "type": "string"
+                },
                 "currencyid": {
                     "description": "结算币种ID",
                     "type": "integer"
@@ -13025,6 +13005,10 @@
                     "description": "周期类型 - 1:月 2:季 3:年 4:周 5:全报表【原值】",
                     "type": "integer"
                 },
+                "enddate": {
+                    "description": "结束交易日",
+                    "type": "string"
+                },
                 "futureactualpl": {
                     "description": "期货损益",
                     "type": "number"
@@ -13627,6 +13611,10 @@
                     "description": "所属机构\\交易用户ID",
                     "type": "integer"
                 },
+                "begindate": {
+                    "description": "开始交易日",
+                    "type": "string"
+                },
                 "buyfutureqty": {
                     "description": "买入期货数量",
                     "type": "number"
@@ -13675,6 +13663,10 @@
                     "description": "变动量(现货)",
                     "type": "number"
                 },
+                "enddate": {
+                    "description": "结束交易日",
+                    "type": "string"
+                },
                 "enumdicname": {
                     "description": "单位名称",
                     "type": "string"
@@ -13832,6 +13824,10 @@
                     "description": "所属机构\\交易用户ID",
                     "type": "integer"
                 },
+                "begindate": {
+                    "description": "开始交易日",
+                    "type": "string"
+                },
                 "biztype": {
                     "description": "业务类型 - 1:套保 2:套利",
                     "type": "integer"
@@ -13896,6 +13892,10 @@
                     "description": "现货品种名称",
                     "type": "string"
                 },
+                "enddate": {
+                    "description": "结束交易日",
+                    "type": "string"
+                },
                 "reckondate": {
                     "description": "日照时期(yyyyMMdd)",
                     "type": "string"

+ 107 - 96
docs/swagger.yaml

@@ -3196,6 +3196,9 @@ definitions:
       areauserid:
         description: 所属机构\交易用户ID
         type: integer
+      begindate:
+        description: 开始交易日
+        type: string
       biztype:
         description: 业务类型 - 1:套保 2:套利
         type: integer
@@ -3250,6 +3253,9 @@ definitions:
       deliverygoodsname:
         description: 现货商品名称
         type: string
+      enddate:
+        description: 结束交易日
+        type: string
       enumdicname:
         description: 现货商品单位名称
         type: string
@@ -3562,8 +3568,11 @@ definitions:
         description: 品类名称
         type: string
     type: object
-  models.Ermcp3AreaStockReport:
+  models.Ermcp3AreaStockReportEx:
     properties:
+      begindate:
+        description: 开始交易日
+        type: string
       brandname:
         description: 品牌名称
         type: string
@@ -3588,6 +3597,9 @@ definitions:
       diffqty:
         description: 库存变化量 = 期末 - 期初
         type: number
+      enddate:
+        description: 结束交易日
+        type: string
       enumdicname:
         description: 单位名称
         type: string
@@ -3660,6 +3672,9 @@ definitions:
       areauserid:
         description: 所属机构\交易用户ID
         type: integer
+      begindate:
+        description: 开始交易日
+        type: string
       currencyid:
         description: 结算币种ID
         type: integer
@@ -3672,6 +3687,9 @@ definitions:
       cycletype:
         description: 周期类型 - 1:月 2:季 3:年 4:周 5:全报表【原值】
         type: integer
+      enddate:
+        description: 结束交易日
+        type: string
       futureactualpl:
         description: 期货损益
         type: number
@@ -4119,6 +4137,9 @@ definitions:
       areauserid:
         description: 所属机构\交易用户ID
         type: integer
+      begindate:
+        description: 开始交易日
+        type: string
       buyfutureqty:
         description: 买入期货数量
         type: number
@@ -4155,6 +4176,9 @@ definitions:
       diffspotqty:
         description: 变动量(现货)
         type: number
+      enddate:
+        description: 结束交易日
+        type: string
       enumdicname:
         description: 单位名称
         type: string
@@ -4272,6 +4296,9 @@ definitions:
       areauserid:
         description: 所属机构\交易用户ID
         type: integer
+      begindate:
+        description: 开始交易日
+        type: string
       biztype:
         description: 业务类型 - 1:套保 2:套利
         type: integer
@@ -4320,6 +4347,9 @@ definitions:
       deliverygoodsname:
         description: 现货品种名称
         type: string
+      enddate:
+        description: 结束交易日
+        type: string
       reckondate:
         description: 日照时期(yyyyMMdd)
         type: string
@@ -12370,6 +12400,10 @@ paths:
         name: UserId
         required: true
         type: integer
+      - description: 用户类型 2-机构 7-企业成员
+        in: query
+        name: usertype
+        type: integer
       - description: 现货合同ID, 不填则查所有
         in: query
         name: relatedid
@@ -12404,6 +12438,10 @@ paths:
         name: UserId
         required: true
         type: integer
+      - description: 用户类型 2-机构 7-企业成员
+        in: query
+        name: usertype
+        type: integer
       - description: 现货合同ID, 不填则查所有
         in: query
         name: relatedid
@@ -12438,6 +12476,10 @@ paths:
         name: UserId
         required: true
         type: integer
+      - description: 用户类型 2-机构 7-企业成员
+        in: query
+        name: usertype
+        type: integer
       - description: 现货合同ID, 不填则查所有
         in: query
         name: relatedid
@@ -12476,6 +12518,10 @@ paths:
         name: UserId
         required: true
         type: integer
+      - description: 用户类型 2-机构 7-企业成员
+        in: query
+        name: usertype
+        type: integer
       - description: 现货合同ID, 不填则查所有
         in: query
         name: relatedid
@@ -12510,6 +12556,10 @@ paths:
         name: UserId
         required: true
         type: integer
+      - description: 用户类型 2-机构 7-企业成员
+        in: query
+        name: usertype
+        type: integer
       - description: 现货合同ID, 不填则查所有
         in: query
         name: relatedid
@@ -13310,17 +13360,16 @@ paths:
         name: middlegoodsid
         required: true
         type: integer
-      - description: 日报表明细, 交易日(格式yyyymmdd)
-        in: query
-        name: tradedate
-        type: string
-      - description: 周期报表明细, 周期类型 - 1:月 2:季 3:年 4:周 5:全报表【原值】
+      - description: 周期类型 - 0:日 1:月 2:季 3:年 4:周 5:全报表【原值】
         in: query
         name: cycletype
+        required: true
         type: integer
-      - description: 周期报表明细, 周期时间 月(YYYYMM)  季(YYYYQ) 年(YYYY) 周(YYYYMMDD周内任意一天) 全(0)【原值】
+      - description: 周期时间 日(YYYYMMDD) 月(YYYYMM)  季(YYYYQ) 年(YYYY) 周(YYYYMMDD周内任意一天)
+          全(0)【原值】
         in: query
         name: cycletime
+        required: true
         type: string
       produces:
       - application/json
@@ -13353,17 +13402,16 @@ paths:
         name: middlegoodsid
         required: true
         type: integer
-      - description: 交易日(格式yyyymmdd)-日报表明细
-        in: query
-        name: tradedate
-        type: string
-      - description: 周期报表明细, 周期类型 - 1:月 2:季 3:年 4:周 5:全报表【原值】
+      - description: 周期类型 - 0:日 1:月 2:季 3:年 4:周 5:全报表【原值】
         in: query
         name: cycletype
+        required: true
         type: integer
-      - description: 周期报表明细, 周期时间 月(YYYYMM)  季(YYYYQ) 年(YYYY) 周(YYYYMMDD周内任意一天) 全(0)【原值】
+      - description: 周期时间 日(YYYYMMDD) 月(YYYYMM)  季(YYYYQ) 年(YYYY) 周(YYYYMMDD周内任意一天)
+          全(0)【原值】
         in: query
         name: cycletime
+        required: true
         type: string
       produces:
       - application/json
@@ -13391,30 +13439,21 @@ paths:
         name: userid
         required: true
         type: integer
-      - description: 查询类型 1-日报表 2-周期报表 3-日报表(指定时间段[开始交易日,结束交易日]) 5-周期报表明细(查日报表)
+      - description: 查询类型 1-报表, 这个接口只查报表;明细的字段完全不同,另有接口
         in: query
         name: querytype
         required: true
         type: integer
-      - description: 交易日(格式yyyymmdd)
-        in: query
-        name: tradedate
-        type: string
-      - description: 周期类型 - 1:月 2:季 3:年 4:周 5:全报表【原值】
+      - description: 周期类型 - 0:日 1:月 2:季 3:年 4:周 5:全报表【原值】
         in: query
         name: cycletype
+        required: true
         type: integer
-      - description: 周期时间 月(YYYYMM)  季(YYYYQ) 年(YYYY) 周(YYYYMMDD周内任意一天) 全(0)【原值】
+      - description: 周期时间 日(YYYYMMDD) 月(YYYYMM)  季(YYYYQ) 年(YYYY) 周(YYYYMMDD周内任意一天)
+          全(0)【原值】
         in: query
         name: cycletime
-        type: string
-      - description: 开始交易日(格式yyyymmdd)
-        in: query
-        name: begindate
-        type: string
-      - description: 结束交易日(格式yyyymmdd)
-        in: query
-        name: enddate
+        required: true
         type: string
       produces:
       - application/json
@@ -13442,41 +13481,31 @@ paths:
         name: userid
         required: true
         type: integer
-      - description: 查询类型 1-日报表 2-周期报表 3-日报表(指定时间段[开始交易日,结束交易日]) 4-日报表明细 5-周期报表明细(查日报表)
-          6-周期报表明细(查日报表明细)
+      - description: 查询类型 1-报表 2-报表明细
         in: query
         name: querytype
         required: true
         type: integer
-      - description: 交易日(格式yyyymmdd)
-        in: query
-        name: tradedate
-        type: string
-      - description: 周期类型 - 1:月 2:季 3:年 4:周 5:全报表【原值】
+      - description: 周期类型 - 0:日 1:月 2:季 3:年 4:周 5:全报表【原值】
         in: query
         name: cycletype
+        required: true
         type: integer
-      - description: 周期时间 月(YYYYMM)  季(YYYYQ) 年(YYYY) 周(YYYYMMDD周内任意一天) 全(0)【原值】
+      - description: 周期时间 日(YYYYMMDD) 月(YYYYMM)  季(YYYYQ) 年(YYYY) 周(YYYYMMDD周内任意一天)
+          全(0)【原值】
         in: query
         name: cycletime
+        required: true
         type: string
-      - description: 开始交易日(格式yyyymmdd)
-        in: query
-        name: begindate
-        type: string
-      - description: 结束交易日(格式yyyymmdd)
-        in: query
-        name: enddate
-        type: string
-      - description: 现货品种id
+      - description: 现货品种id(明细必填)
         in: query
         name: deliverygoodsid
         type: integer
-      - description: 品类id
+      - description: 品类id(明细必填)
         in: query
         name: wrstandardid
         type: integer
-      - description: 币种id
+      - description: 币种id(明细必填)
         in: query
         name: currencyid
         type: integer
@@ -13506,33 +13535,27 @@ paths:
         name: userid
         required: true
         type: integer
-      - description: 查询类型 1-日报表 2-周期报表 3-日报表(指定时间段[开始交易日,结束交易日]) 4-日报表明细 5-周期报表明细(查日报表)
-          6-周期报表明细(查日报表明细)
+      - description: 查询类型 1-报表 2-报表明细
         in: query
         name: querytype
         required: true
         type: integer
-      - description: 交易日(格式yyyymmdd)
-        in: query
-        name: tradedate
-        type: string
-      - description: 周期类型 - 1:月 2:季 3:年 4:周 5:全报表【原值】
+      - description: 周期类型 - 0:日 1:月 2:季 3:年 4:周 5:全报表【原值】
         in: query
         name: cycletype
+        required: true
         type: integer
-      - description: 周期时间 月(YYYYMM)  季(YYYYQ) 年(YYYY) 周(YYYYMMDD周内任意一天) 全(0)【原值】
+      - description: 周期时间 日(YYYYMMDD) 月(YYYYMM) 季(YYYYQ) 年(YYYY) 周(YYYYMMDD周内任意一天)
+          全(0)【原值】
         in: query
         name: cycletime
+        required: true
         type: string
-      - description: 开始交易日(格式yyyymmdd)
-        in: query
-        name: begindate
-        type: string
-      - description: 结束交易日(格式yyyymmdd)
+      - description: 汇总维度(逗号隔开) 1-品种 2-品类 3-品牌 4-仓库
         in: query
-        name: enddate
+        name: sumfields
         type: string
-      - description: 现货商品ID
+      - description: 品种ID
         in: query
         name: deliverygoodsid
         type: integer
@@ -13544,6 +13567,10 @@ paths:
         in: query
         name: spotgoodsbrandid
         type: integer
+      - description: 仓库ID
+        in: query
+        name: warehouseinfoid
+        type: integer
       produces:
       - application/json
       responses:
@@ -13551,7 +13578,7 @@ paths:
           description: OK
           schema:
             items:
-              $ref: '#/definitions/models.Ermcp3AreaStockReport'
+              $ref: '#/definitions/models.Ermcp3AreaStockReportEx'
             type: array
         "500":
           description: Internal Server Error
@@ -13570,33 +13597,23 @@ paths:
         name: userid
         required: true
         type: integer
-      - description: 查询类型 1-日报表 2-周期报表 3-日报表(指定时间段[开始交易日,结束交易日]) 4-日报表明细 5-周期报表明细(查日报表)
-          6-周期报表明细(查日报表明细)
+      - description: 查询类型 1-报表 2-报表明细
         in: query
         name: querytype
         required: true
         type: integer
-      - description: 交易日(格式yyyymmdd)
-        in: query
-        name: tradedate
-        type: string
-      - description: 周期类型 - 1:月 2:季 3:年 4:周 5:全报表【原值】
+      - description: 周期类型 - 0:日 1:月 2:季 3:年 4:周 5:全报表【原值】
         in: query
         name: cycletype
+        required: true
         type: integer
-      - description: 周期时间 月(YYYYMM)  季(YYYYQ) 年(YYYY) 周(YYYYMMDD周内任意一天) 全(0)【原值】
+      - description: 周期时间 日(YYYYMMDD) 月(YYYYMM)  季(YYYYQ) 年(YYYY) 周(YYYYMMDD周内任意一天)
+          全(0)【原值】
         in: query
         name: cycletime
+        required: true
         type: string
-      - description: 开始交易日(格式yyyymmdd)
-        in: query
-        name: begindate
-        type: string
-      - description: 结束交易日(格式yyyymmdd)
-        in: query
-        name: enddate
-        type: string
-      - description: 币种id(日报表明细)
+      - description: 币种id(明细必填)
         in: query
         name: currencyid
         type: integer
@@ -13626,31 +13643,21 @@ paths:
         name: userid
         required: true
         type: integer
-      - description: 查询类型 1-日报表 2-周期报表 3-日报表(指定时间段[开始交易日,结束交易日]) 4-日报表明细 5-周期报表明细(查日报表)
-          6-周期报表明细(查日报表明细)
+      - description: 查询类型 1-报表 2-报表明细
         in: query
         name: querytype
         required: true
         type: integer
-      - description: 交易日(格式yyyymmdd)
-        in: query
-        name: tradedate
-        type: string
-      - description: 周期类型 - 1:月 2:季 3:年 4:周 5:全报表【原值】
+      - description: 周期类型 - 0:日 1:月 2:季 3:年 4:周 5:全报表【原值】
         in: query
         name: cycletype
+        required: true
         type: integer
-      - description: 周期时间 月(YYYYMM)  季(YYYYQ) 年(YYYY) 周(YYYYMMDD周内任意一天) 全(0)【原值】
+      - description: 周期时间 日(YYYYMMDD) 月(YYYYMM)  季(YYYYQ) 年(YYYY) 周(YYYYMMDD周内任意一天)
+          全(0)【原值】
         in: query
         name: cycletime
-        type: string
-      - description: 开始交易日(格式yyyymmdd)
-        in: query
-        name: begindate
-        type: string
-      - description: 结束交易日(格式yyyymmdd)
-        in: query
-        name: enddate
+        required: true
         type: string
       - description: 币种id(日报表明细)
         in: query
@@ -13708,6 +13715,10 @@ paths:
         name: userid
         required: true
         type: integer
+      - description: 用户类型 2-机构 7-企业成员
+        in: query
+        name: usertype
+        type: integer
       - description: 现货商品ID
         in: query
         name: deliverygoodsid

+ 1 - 0
go.sum

@@ -316,6 +316,7 @@ golang.org/x/crypto v0.0.0-20191205180655-e7c4368fe9dd h1:GGJVjV8waZKRHrgwvtH66z
 golang.org/x/crypto v0.0.0-20191205180655-e7c4368fe9dd/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
 golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9 h1:psW17arqaxU48Z5kZ0CQnkZWQJsqcURM6tKiBApRjXI=
 golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
+golang.org/x/crypto v0.0.0-20210513164829-c07d793c2f9a h1:kr2P4QFmQr29mSLA43kwrOcgcReGTfbE9N577tCTuBc=
 golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
 golang.org/x/image v0.0.0-20180628062038-cc896f830ced/go.mod h1:ux5Hcp/YLpHSI86hEcLt0YII63i6oz57MZXIpbrjZUs=
 golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=

+ 277 - 104
models/ermcp3Report.go

@@ -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
 }

+ 5 - 5
mtpcache/weekdate.go

@@ -43,8 +43,8 @@ func (r *WeekDateMgr) load(curDate string) {
 		// 查指定日期信息
 		sqlId = "select" +
 			"  '%v' curdate," +
-			"  to_char(trunc(to_date('%v', 'yyyymmdd'), 'IW'), 'yyyy-mm-dd') begindate," +
-			"  to_char(trunc(to_date('%v', 'yyyymmdd'), 'IW') + 6, 'yyyy-mm-dd') enddate," +
+			"  to_char(trunc(to_date('%v', 'yyyymmdd'), 'IW'), 'yyyymmdd') begindate," +
+			"  to_char(trunc(to_date('%v', 'yyyymmdd'), 'IW') + 6, 'yyyymmdd') enddate," +
 			"  to_char(to_date('%v', 'yyyymmdd'), 'yyyyiw') weekiw," +
 			"  to_char(to_date('%v', 'yyyymmdd'), 'iw') week" +
 			" from dual t"
@@ -53,8 +53,8 @@ func (r *WeekDateMgr) load(curDate string) {
 		// 查当前日期信息
 		sqlId = "select" +
 			"  to_char(sysdate, 'yyyymmdd') curdate," +
-			"  to_char(trunc(to_date(to_char(sysdate, 'yyyymmdd'), 'yyyymmdd'), 'IW'), 'yyyy-mm-dd') begindate," +
-			"  to_char(trunc(to_date(to_char(sysdate, 'yyyymmdd'), 'yyyymmdd'), 'IW') + 6, 'yyyy-mm-dd') enddate," +
+			"  to_char(trunc(to_date(to_char(sysdate, 'yyyymmdd'), 'yyyymmdd'), 'IW'), 'yyyymmdd') begindate," +
+			"  to_char(trunc(to_date(to_char(sysdate, 'yyyymmdd'), 'yyyymmdd'), 'IW') + 6, 'yyyymmdd') enddate," +
 			"  to_char(sysdate, 'yyyyiw') weekiw," +
 			"  to_char(sysdate, 'iw') week" +
 			" from dual t"
@@ -92,7 +92,7 @@ func (r *WeekDateMgr) Get(curDate string) (WeekDate, bool) {
 	return WeekDate{}, false
 }
 
-// GetWeekInfo 获取周信息
+// GetWeekInfo 获取周信息 curData(yyyymmdd)
 func GetWeekInfo(curDate string) (WeekDate, bool) {
 	if d, ok := vWeekMgr.Get(curDate); ok {
 		return d, ok