Browse Source

Merge branch 'aj_guagnzhouqihuo' into debug

tuoling805 1 year ago
parent
commit
4bcd2a54bc

+ 194 - 6
controllers/data_source/guagnzhouqihuo.go

@@ -4,6 +4,13 @@ import (
 	"eta/eta_api/controllers"
 	"eta/eta_api/models"
 	"eta/eta_api/models/data_source"
+	"eta/eta_api/utils"
+	"fmt"
+	"github.com/tealeg/xlsx"
+	"os"
+	"path/filepath"
+	"strconv"
+	"time"
 )
 
 // 广州期货交易所
@@ -151,7 +158,7 @@ func (this *DataSourceController) GfexContract() {
 // @Param   BaseFromTradeGuangzhouClassifyId   query   int  true       "分类id"
 // @Param   BaseFromTradeGuangzhouContractId   query   int  true       "合约id"
 // @Param   TradeDate   query   string  true       "日期"
-// @Success 200 {object} []data_source.BaseFromTradeGuangzhouContract
+// @Success 200 {object} []data_source.BaseFromTradeGuangzhouIndexView
 // @router /gfex/index_data [get]
 func (this *DataSourceController) GfexIndexData() {
 	br := new(models.BaseResponse).Init()
@@ -179,16 +186,37 @@ func (this *DataSourceController) GfexIndexData() {
 		br.ErrMsg = "交易日期不能为空"
 		return
 	}
-	baseFromTradeGuangzhouContractId, _ := this.GetInt("BaseFromTradeGuangzhouContractId")
+	baseFromTradeGuangzhouContractId, err := this.GetInt("BaseFromTradeGuangzhouContractId", 0)
+	fmt.Println(err)
+	fmt.Println(baseFromTradeGuangzhouContractId)
 
 	var condition string
 	var pars []interface{}
 
-	condition += `  a.data_time=? `
-	pars = append(pars, tradeDate)
+	if baseFromTradeGuangzhouContractId > 0 {
+		condition += `  b.data_time=? `
+		pars = append(pars, tradeDate)
+		condition += ` AND a.base_from_trade_guangzhou_classify_id=? `
+		pars = append(pars, baseFromTradeGuangzhouClassifyId)
+	} else {
+		if baseFromTradeGuangzhouClassifyId == 11 || baseFromTradeGuangzhouClassifyId == 12 { //月度数据处理
+			td, err := time.Parse(utils.FormatDate, tradeDate)
+			if err != nil {
+				br.Msg = "日期格式错误"
+				br.ErrMsg = "日期格式错误,Err:" + err.Error()
+				return
+			}
+			_, monthEndDay := utils.GetMonthStartAndEnd(strconv.Itoa(td.Year()), strconv.Itoa(int(td.Month())))
+			condition += `  a.data_time=? `
+			pars = append(pars, monthEndDay)
+		} else {
+			condition += `  a.data_time=? `
+			pars = append(pars, tradeDate)
+		}
 
-	condition += ` AND b.base_from_trade_guangzhou_classify_id=? `
-	pars = append(pars, baseFromTradeGuangzhouClassifyId)
+		condition += ` AND b.base_from_trade_guangzhou_classify_id=? `
+		pars = append(pars, baseFromTradeGuangzhouClassifyId)
+	}
 
 	//if baseFromTradeGuangzhouContractId > 0 {
 	//	condition += ` AND c.base_from_trade_guangzhou_contract_id=? `
@@ -207,3 +235,163 @@ func (this *DataSourceController) GfexIndexData() {
 	br.Msg = "获取成功"
 	br.Data = list
 }
+
+// @Title 获取广州期货交易所-一次性交割卖方仓单明细
+// @Description 获取广州期货交易所-一次性交割卖方仓单明细
+// @Param   BaseFromTradeGuangzhouIndexId   query   int  true       "指标id"
+// @Param   TradeDate   query   string  true       "日期"
+// @Success 200 {object} []data_source.BaseFromTradeGuangzhouIndexView
+// @router /gfex/index/detail [get]
+func (this *DataSourceController) GfexIndexDetail() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+	sysUser := this.SysUser
+	if sysUser == nil {
+		br.Msg = "请登录"
+		br.ErrMsg = "请登录,SysUser Is Empty"
+		br.Ret = 408
+		return
+	}
+	baseFromTradeGuangzhouIndexId, _ := this.GetInt("BaseFromTradeGuangzhouIndexId", 0)
+	if baseFromTradeGuangzhouIndexId < 0 {
+		br.Msg = "参数错误"
+		return
+	}
+	tradeDate := this.GetString("TradeDate")
+	if tradeDate == "" {
+		br.Msg = "参数错误"
+		br.ErrMsg = "交易日期不能为空"
+		return
+	}
+
+	var condition string
+	var pars []interface{}
+
+	condition += ` a.base_from_trade_guangzhou_classify_id = ? `
+	pars = append(pars, baseFromTradeGuangzhouIndexId)
+
+	condition += ` a.end_date = ? `
+	pars = append(pars, tradeDate)
+
+	gzqhObj := new(data_source.BaseFromTradeGuangzhouIndex)
+	list, err := gzqhObj.GetBaseFromTradeGuangzhouIndexDetail(condition, pars)
+	if err != nil {
+		br.ErrMsg = "获取数据失败,Err:" + err.Error()
+		br.Msg = "获取数据失败"
+		return
+	}
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "获取成功"
+	br.Data = list
+}
+
+// @Title 导出广州期货交易所-一次性交割卖方仓单明细
+// @Description 导出广州期货交易所-一次性交割卖方仓单明细
+// @Param   BaseFromTradeGuangzhouIndexId   query   int  true       "指标id"
+// @Param   TradeDate   query   string  true       "日期"
+// @Success 200  导出成功
+// @router /gfex/index/detail/export [get]
+func (this *DataSourceController) ExportGfexIndexDetail() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+
+	sysUser := this.SysUser
+	if sysUser == nil {
+		br.Msg = "请重新登录"
+		return
+	}
+
+	baseFromTradeGuangzhouIndexId, _ := this.GetInt("BaseFromTradeGuangzhouIndexId", 0)
+	if baseFromTradeGuangzhouIndexId < 0 {
+		br.Msg = "参数错误"
+		return
+	}
+	tradeDate := this.GetString("TradeDate")
+	if tradeDate == "" {
+		br.Msg = "参数错误"
+		br.ErrMsg = "交易日期不能为空"
+		return
+	}
+
+	var condition string
+	var pars []interface{}
+
+	condition += ` a.base_from_trade_guangzhou_classify_id = ? `
+	pars = append(pars, baseFromTradeGuangzhouIndexId)
+
+	condition += ` a.end_date = ? `
+	pars = append(pars, tradeDate)
+
+	gzqhObj := new(data_source.BaseFromTradeGuangzhouIndex)
+	list, err := gzqhObj.GetBaseFromTradeGuangzhouIndexDetail(condition, pars)
+	if err != nil {
+		br.ErrMsg = "获取数据失败,Err:" + err.Error()
+		br.Msg = "获取数据失败"
+		return
+	}
+
+	dir, _ := os.Executable()
+	exPath := filepath.Dir(dir)
+
+	downLoadnFilePath := exPath + "/" + time.Now().Format(utils.FormatDateTimeUnSpace) + ".xlsx"
+	xlsxFile := xlsx.NewFile()
+	sheetNew := xlsxFile.Sheets[0]
+	titleRow := sheetNew.AddRow()
+	titleRow.AddCell().SetValue("指标ID")
+	titleRow.AddCell().SetValue("指标名称")
+	titleRow.AddCell().SetValue("数值")
+	titleRow.AddCell().SetValue("单位")
+	titleRow.AddCell().SetValue("频度")
+	titleRow.AddCell().SetValue("起始日期")
+	titleRow.AddCell().SetValue("最新日期")
+
+	var indexCode string
+	for _, sv := range list {
+		dataRow := sheetNew.AddRow()
+		dataRow.AddCell().SetValue(sv.IndexCode)
+		dataRow.AddCell().SetValue(sv.IndexName)
+		dataRow.AddCell().SetValue(sv.Value)
+		dataRow.AddCell().SetValue(sv.Unit)
+		dataRow.AddCell().SetValue(sv.Frequency)
+		dataRow.AddCell().SetValue(sv.StartDate)
+		dataRow.AddCell().SetValue(sv.EndDate)
+
+		indexCode = sv.IndexCode
+	}
+	err = xlsxFile.Save(downLoadnFilePath)
+	if err != nil {
+		//有指标无数据时先导出一遍空表
+		sheet, err := xlsxFile.AddSheet("无数据")
+		if err != nil {
+			br.Msg = "新增Sheet失败"
+			br.ErrMsg = "新增Sheet失败,Err:" + err.Error()
+			return
+		}
+		rowSecName := sheet.AddRow()
+		celSecName := rowSecName.AddCell()
+		celSecName.SetValue("")
+		err = xlsxFile.Save(downLoadnFilePath)
+		if err != nil {
+			br.Msg = "保存文件失败"
+			br.ErrMsg = "保存文件失败"
+			return
+		}
+	}
+	fileName := `一次性交割卖方仓单详情`
+	fileName += indexCode[:6] + time.Now().Format("06.01.02") + `.xlsx` //文件名称
+	this.Ctx.Output.Download(downLoadnFilePath, fileName)
+	defer func() {
+		os.Remove(downLoadnFilePath)
+	}()
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "success"
+
+}

+ 18 - 5
models/data_source/guagnzhouqihuo.go

@@ -102,13 +102,12 @@ WHERE `
 		_, err = o.Raw(sql, pars).QueryRows(&list)
 		return
 	} else {
-		condition += ` AND c.base_from_trade_guangzhou_contract_id=? `
+		condition += ` AND a.base_from_trade_guangzhou_contract_id=? `
 		pars = append(pars, baseFromTradeGuangzhouContractId)
 
-		sql := ` SELECT b.base_from_trade_guangzhou_index_id,b.index_code,b.index_name,b.unit,b.frequency,b.start_date,b.end_date,a.value,c.base_from_trade_guangzhou_contract_id 
- FROM base_from_trade_guangzhou_data AS a
-INNER JOIN base_from_trade_guangzhou_index AS b ON a.base_from_trade_guangzhou_index_id=b.base_from_trade_guangzhou_index_id
-INNER JOIN base_from_trade_guangzhou_contract AS c ON b.base_from_trade_guangzhou_classify_id=c.base_from_trade_guangzhou_classify_id
+		sql := ` SELECT a.*,b.value 
+ FROM base_from_trade_guangzhou_index AS a
+INNER JOIN base_from_trade_guangzhou_data AS b ON a.base_from_trade_guangzhou_index_id=b.base_from_trade_guangzhou_index_id
 WHERE `
 
 		if condition != "" {
@@ -119,3 +118,17 @@ WHERE `
 		return
 	}
 }
+
+func (obj *BaseFromTradeGuangzhouIndex) GetBaseFromTradeGuangzhouIndexDetail(condition string, pars []interface{}) (list []*BaseFromTradeGuangzhouIndexView, err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := ` SELECT a.*
+ FROM base_from_trade_guangzhou_index AS a
+WHERE `
+
+	if condition != "" {
+		sql += condition
+	}
+	sql += ` ORDER BY a.index_code ASC `
+	_, err = o.Raw(sql, pars).QueryRows(&list)
+	return
+}

+ 18 - 0
routers/commentsRouter.go

@@ -4273,6 +4273,24 @@ func init() {
             Filters: nil,
             Params: nil})
 
+    beego.GlobalControllerRouter["eta/eta_api/controllers/data_source:DataSourceController"] = append(beego.GlobalControllerRouter["eta/eta_api/controllers/data_source:DataSourceController"],
+        beego.ControllerComments{
+            Method: "GfexIndexDetail",
+            Router: `/gfex/index/detail`,
+            AllowHTTPMethods: []string{"get"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
+    beego.GlobalControllerRouter["eta/eta_api/controllers/data_source:DataSourceController"] = append(beego.GlobalControllerRouter["eta/eta_api/controllers/data_source:DataSourceController"],
+        beego.ControllerComments{
+            Method: "ExportGfexIndexDetail",
+            Router: `/gfex/index/detail/export`,
+            AllowHTTPMethods: []string{"get"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
     beego.GlobalControllerRouter["eta/eta_api/controllers/data_source:DataSourceController"] = append(beego.GlobalControllerRouter["eta/eta_api/controllers/data_source:DataSourceController"],
         beego.ControllerComments{
             Method: "GfexIndexData",