Browse Source

新增钢联化工指标数据处理

tuoling805 1 year ago
parent
commit
9444e273d3

+ 1 - 0
controllers/base_auth.go

@@ -50,6 +50,7 @@ func (this *BaseAuthController) Prepare() {
 				return
 			}
 			checkAuthorization := utils.MD5(utils.APP_NAME_EN + utils.Md5Key)
+			fmt.Println(checkAuthorization)
 			if authorization != checkAuthorization {
 				this.JSON(models.BaseResponse{Ret: 408, Msg: "签名错误!", ErrMsg: "签名错误:authorization is err "}, false, false)
 				this.StopRun()

+ 2 - 2
controllers/base_from_calculate.go

@@ -138,7 +138,7 @@ func (this *CalculateController) Add() {
 		formulaStr += v.FromTag + ","
 		edbInfoIdBytes = append(edbInfoIdBytes, v.FromTag)
 	}
-	formulaMap := services.CheckFormula(req.CalculateFormula)
+	formulaMap := utils.CheckFormula(req.CalculateFormula)
 	for _, v := range formulaMap {
 		if !strings.Contains(formulaStr, v) {
 			br.Msg = "公式错误,请重新填写"
@@ -402,7 +402,7 @@ func (this *CalculateController) Edit() {
 		}
 	}
 
-	formulaMap := services.CheckFormula(req.CalculateFormula)
+	formulaMap := utils.CheckFormula(req.CalculateFormula)
 	for _, v := range formulaMap {
 		if !strings.Contains(formulaStr, v) {
 			br.Msg = "公式错误,请重新填写"

+ 1 - 1
controllers/base_from_mysteel.go

@@ -9,7 +9,7 @@ import (
 	"time"
 )
 
-//钢联
+// 钢联
 type MySteelController struct {
 	BaseAuthController
 }

+ 49 - 0
controllers/base_from_mysteel_chemical.go

@@ -4,6 +4,7 @@ import (
 	"encoding/json"
 	"hongze/hongze_edb_lib/logic"
 	"hongze/hongze_edb_lib/models"
+	"hongze/hongze_edb_lib/services"
 	"hongze/hongze_edb_lib/utils"
 	"strconv"
 	"time"
@@ -128,3 +129,51 @@ func (this *MySteelChemicalController) Refresh() {
 	br.Success = true
 	br.Msg = "获取成功"
 }
+
+// @Title 查询刷新钢联指标的接口
+// @Description 查询刷新钢联指标的接口
+// @Success 200 {object} models.CheckDeleteClassifyResp
+// @router /query/refresh [post]
+func (this *MySteelChemicalController) QueryRefresh() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+	mysteelIndex := new(models.BaseFromMysteelChemicalIndex)
+	list, err := mysteelIndex.GetIndexRefreshAllByMergeFile()
+	if err != nil && err.Error() != utils.ErrNoRow() {
+		br.Msg = "获取失败!"
+		br.ErrMsg = "获取失败,Err:" + err.Error()
+		return
+	}
+	br.Ret = 200
+	br.Data = list
+	br.Success = true
+	br.Msg = "获取成功"
+}
+
+// @Title 处理钢联指标的接口
+// @Description 处理钢联指标的接口
+// @Success 200 {object} models.HandleMysteelIndexResp
+// @router /handle/mysteel/index [post]
+func (this *MySteelChemicalController) HandleMysteelIndex() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+	var req models.HandleMysteelIndexResp
+	err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
+	if err != nil {
+		br.Msg = "参数解析异常!"
+		br.ErrMsg = "参数解析失败,Err:" + err.Error()
+		return
+	}
+
+	services.HandleMysteelIndex(&req)
+
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "处理成功"
+}

+ 2 - 3
controllers/base_from_predict_calculate.go

@@ -5,7 +5,6 @@ import (
 	"fmt"
 	"hongze/hongze_edb_lib/logic"
 	"hongze/hongze_edb_lib/models"
-	"hongze/hongze_edb_lib/services"
 	"hongze/hongze_edb_lib/utils"
 	"strconv"
 	"strings"
@@ -107,7 +106,7 @@ func addPredictCalculate(br *models.BaseResponse, req models.EdbInfoCalculateSav
 		formulaStr += v.FromTag + ","
 		edbInfoIdBytes = append(edbInfoIdBytes, v.FromTag)
 	}
-	formulaMap := services.CheckFormula(req.CalculateFormula)
+	formulaMap := utils.CheckFormula(req.CalculateFormula)
 	for _, v := range formulaMap {
 		if !strings.Contains(formulaStr, v) {
 			br.Msg = "公式错误,请重新填写"
@@ -335,7 +334,7 @@ func editPredictCalculate(br *models.BaseResponse, req models.EdbInfoCalculateSa
 		formulaStr += v.FromTag + ","
 		edbInfoIdBytes = append(edbInfoIdBytes, v.FromTag)
 	}
-	formulaMap := services.CheckFormula(req.CalculateFormula)
+	formulaMap := utils.CheckFormula(req.CalculateFormula)
 	for _, v := range formulaMap {
 		if !strings.Contains(formulaStr, v) {
 			br.Msg = "公式错误,请重新填写"

+ 3 - 4
logic/predict_edb.go

@@ -3,7 +3,6 @@ package logic
 import (
 	"errors"
 	"hongze/hongze_edb_lib/models"
-	"hongze/hongze_edb_lib/services"
 	"hongze/hongze_edb_lib/utils"
 	"strconv"
 	"strings"
@@ -196,7 +195,7 @@ func AddPredictEdbInfo(sourceEdbInfoId, classifyId int, edbName string, ruleList
 				formulaStr += tmpEdbInfoId.FromTag + ","
 				edbInfoIdBytes = append(edbInfoIdBytes, tmpEdbInfoId.FromTag)
 			}
-			formulaMap := services.CheckFormula(formula)
+			formulaMap := utils.CheckFormula(formula)
 			for _, formula := range formulaMap {
 				if !strings.Contains(formulaStr, formula) {
 					errMsg = "公式错误,请重新填写"
@@ -562,7 +561,7 @@ func EditPredictEdbInfo(edbInfoId, classifyId int, edbName string, ruleList []mo
 				formulaStr += tmpEdbInfoId.FromTag + ","
 				edbInfoIdBytes = append(edbInfoIdBytes, tmpEdbInfoId.FromTag)
 			}
-			formulaMap := services.CheckFormula(formula)
+			formulaMap := utils.CheckFormula(formula)
 			for _, formula := range formulaMap {
 				if !strings.Contains(formulaStr, formula) {
 					errMsg = "公式错误,请重新填写"
@@ -865,7 +864,7 @@ func RefreshPredictEdbInfo(edbInfoId int) (edbInfo *models.EdbInfo, err error, e
 				formulaStr += tmpEdbInfoId.FromTag + ","
 				edbInfoIdBytes = append(edbInfoIdBytes, tmpEdbInfoId.FromTag)
 			}
-			formulaMap := services.CheckFormula(formula)
+			formulaMap := utils.CheckFormula(formula)
 			for _, formula := range formulaMap {
 				if !strings.Contains(formulaStr, formula) {
 					errMsg = "公式错误,请重新填写"

+ 0 - 3
models/base_from_adjust.go

@@ -4,7 +4,6 @@ import (
 	"errors"
 	"fmt"
 	"github.com/beego/beego/v2/client/orm"
-	"hongze/hongze_edb_lib/services/alarm_msg"
 	"hongze/hongze_edb_lib/utils"
 	"strconv"
 	"strings"
@@ -41,8 +40,6 @@ func SaveAdjustEdb(req SaveAdjustEdbReq) (edbInfo *EdbInfo, err error, errMsg st
 	defer func() {
 		if err != nil {
 			_ = to.Rollback()
-			fmt.Println("SaveAdjustEdb,Err:" + err.Error())
-			go alarm_msg.SendAlarmMsg(" 保存数据调整指标失败:err:"+err.Error(), 3)
 		} else {
 			_ = to.Commit()
 		}

+ 2 - 3
models/base_from_calculate.go

@@ -6,7 +6,6 @@ import (
 	"github.com/beego/beego/v2/client/orm"
 	"github.com/shopspring/decimal"
 	"github.com/yidane/formula"
-	"hongze/hongze_edb_lib/services"
 	"hongze/hongze_edb_lib/utils"
 	"strconv"
 	"strings"
@@ -72,7 +71,7 @@ func AddCalculate(edbInfoIdArr []*EdbInfo, edbInfoId int, edbCode, formulaStr st
 		item.EdbInfoId = v.EdbInfoId
 		item.DataMap = dataMap
 	}
-	formulaMap := services.CheckFormula(formulaStr)
+	formulaMap := utils.CheckFormula(formulaStr)
 	addSql := ` INSERT INTO edb_data_calculate(edb_info_id,edb_code,data_time,value,create_time,modify_time,data_timestamp) values `
 	nowStr := time.Now().Format(utils.FormatDateTime)
 	var isAdd bool
@@ -415,7 +414,7 @@ func refreshAllCalculate(to orm.TxOrmer, edbInfoIdArr []*EdbInfo, edbInfoId, sou
 	//数据处理,将日期内不全的数据做补全
 	handleDateSaveDataMap(dateList, realSaveDataMap, saveDataMap, edbInfoIdArr)
 
-	formulaMap := services.CheckFormula(formulaStr)
+	formulaMap := utils.CheckFormula(formulaStr)
 	addSql := ` INSERT INTO edb_data_calculate(edb_info_id,edb_code,data_time,value,create_time,modify_time,data_timestamp) values `
 	var isAdd bool
 

+ 19 - 3
models/base_from_fubao.go

@@ -3,15 +3,31 @@ package models
 import (
 	"fmt"
 	"github.com/beego/beego/v2/client/orm"
-	"hongze/hongze_edb_lib/services"
 	"hongze/hongze_edb_lib/utils"
 	"strconv"
 	"strings"
 	"time"
 )
 
+type FuBaoData struct {
+	ReturnValue struct {
+		Product struct {
+			AlikeName    string `json:"alikeName"`
+			DiffName     string `json:"diffName"`
+			PropValueStr string `json:"propValueStr"`
+			Pattern      string `json:"pattern"`
+		} `json:"product"`
+		Data []struct {
+			PriceStr string `json:"priceStr"`
+			Uad      string `json:"uad"`
+			Datadate string `json:"datadate"`
+		} `json:"data"`
+	} `json:"returnValue"`
+	Code int `json:"code"`
+}
+
 // 新增富宝指标数据
-func AddEdbDataFromFubao(edbCode string, fubaoData *services.FuBaoData) (err error) {
+func AddEdbDataFromFubao(edbCode string, fubaoData *FuBaoData) (err error) {
 	o := orm.NewOrm()
 	var isAdd bool
 	addSql := ` INSERT INTO edb_data_fubao(edb_info_id,edb_code,data_time,value,create_time,modify_time,data_timestamp) values `
@@ -41,7 +57,7 @@ func AddEdbDataFromFubao(edbCode string, fubaoData *services.FuBaoData) (err err
 }
 
 // 刷新路透指标数据
-func RefreshEdbDataFromFubao(edbInfoId int, edbCode, startDate string, fubaoData *services.FuBaoData) (err error) {
+func RefreshEdbDataFromFubao(edbInfoId int, edbCode, startDate string, fubaoData *FuBaoData) (err error) {
 	source := utils.DATA_SOURCE_FUBAO
 	o := orm.NewOrm()
 

+ 103 - 0
models/base_from_mysteel_chemical.go

@@ -197,3 +197,106 @@ func RefreshEdbDataFromMysteelChemical(edbInfoId int, edbCode, startDate string)
 	}
 	return
 }
+
+// 钢联化工指标数据
+type BaseFromMysteelChemicalIndex struct {
+	BaseFromMysteelChemicalIndexId int64     `orm:"column(base_from_mysteel_chemical_index_id);pk"`
+	IndexCode                      string    `description:"指标编码"`
+	IndexName                      string    `description:"指标名称"`
+	Unit                           string    `description:"单位"`
+	Source                         string    `description:"数据来源"`
+	Frequency                      string    `description:"频度"`
+	StartDate                      time.Time `description:"开始日期"`
+	EndDate                        time.Time `description:"结束日期"`
+	Describe                       string    `description:"指标描述"`
+	UpdateWeek                     string    `description:"更新周期"`
+	UpdateTime                     string    `description:"更新时间,多个时间点用英文,隔开"`
+	UpdateTime2                    string    `description:"更新时间2"`
+	SysUserId                      int       `description:"创建人id"`
+	SysUserRealName                string    `description:"创建人姓名"`
+	FilePath                       string    `description:"文件存储路径"`
+	MergeFilePath                  string    `description:"更新文件"`
+	FileIndex                      int       `description:"文件索引"`
+	MergeUpdateWeek                string    `description:"合并文件的更新周"`
+	UpdateDate                     string    `description:"更新日期"`
+	CreateTime                     time.Time `description:"创建时间"`
+	ModifyTime                     time.Time `description:"修改时间"`
+}
+
+// GetIndexRefreshAllByMergeFile 根据合并文件去分组查询需要刷新的文件
+func (d *BaseFromMysteelChemicalIndex) GetIndexRefreshAllByMergeFile() (items []*BaseFromMysteelChemicalIndex, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT * FROM base_from_mysteel_chemical_index WHERE merge_file_path <>'' AND base_from_mysteel_chemical_classify_id NOT IN(54,55,56,57)`
+	_, err = o.Raw(sql).QueryRows(&items)
+	return
+}
+
+type HandleMysteelIndex struct {
+	IndexName    string `description:"指标名称"`
+	IndexCode    string `description:"指标编码"`
+	Unit         string `description:"单位"`
+	Source       string `description:"数据来源"`
+	Frequency    string `description:"频度"`
+	StartDate    string `description:"开始日期"`
+	EndDate      string `description:"结束日期"`
+	Describe     string `description:"指标描述"`
+	UpdateDate   string `description:"更新日期"`
+	ExcelDataMap map[string]string
+}
+
+type HandleMysteelIndexResp struct {
+	List []*HandleMysteelIndex
+}
+
+// 钢联化工指标数据
+type BaseFromMysteelChemicalData struct {
+	BaseFromMysteelChemicalDataId  int64 `orm:"column(base_from_mysteel_chemical_data_id);pk"`
+	BaseFromMysteelChemicalIndexId int64
+	IndexCode                      string
+	DataTime                       time.Time
+	Value                          string
+	UpdateDate                     string
+	CreateTime                     time.Time `description:"创建时间"`
+	ModifyTime                     time.Time `description:"修改时间"`
+}
+
+func (d *BaseFromMysteelChemicalIndex) GetIndexItem(indexCode string) (item *BaseFromMysteelChemicalIndex, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT * FROM base_from_mysteel_chemical_index WHERE index_code = ? `
+	err = o.Raw(sql, indexCode).QueryRow(&item)
+	return
+}
+
+// 新增
+func (r *BaseFromMysteelChemicalIndex) Add() (err error) {
+	o := orm.NewOrm()
+	_, err = o.Insert(r)
+	return
+}
+
+func (m *BaseFromMysteelChemicalIndex) Update(cols []string) (err error) {
+	o := orm.NewOrm()
+	_, err = o.Update(m, cols...)
+	return
+}
+
+func (d *BaseFromMysteelChemicalData) GetIndexDataList(indexCode string) (item []*BaseFromMysteelChemicalData, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT * FROM base_from_mysteel_chemical_data WHERE index_code = ? `
+	_, err = o.Raw(sql, indexCode).QueryRows(&item)
+	return
+}
+
+// 修改
+func (r *BaseFromMysteelChemicalData) Update(updateCols []string) (err error) {
+	o := orm.NewOrm()
+	_, err = o.Update(r, updateCols...)
+	return
+}
+
+// 新增
+func (r *BaseFromMysteelChemicalData) Add(list []BaseFromMysteelChemicalData) (err error) {
+	o := orm.NewOrm()
+	_, err = o.InsertMulti(len(list), list)
+	return
+}

+ 9 - 14
models/base_from_pb.go

@@ -3,25 +3,21 @@ package models
 import (
 	"fmt"
 	"github.com/beego/beego/v2/client/orm"
-	"hongze/hongze_edb_lib/services"
-	"hongze/hongze_edb_lib/services/alarm_msg"
 	"hongze/hongze_edb_lib/utils"
 	"strconv"
 	"strings"
 	"time"
 )
 
-func AddEdbDataFromPb(edbCode string, item *services.EdbDataFromPb) (err error) {
-	var errMsg string
-	o := orm.NewOrm()
-	defer func() {
-		if err != nil {
-			//go utils.SendEmail(utils.APP_NAME_CN+"【"+utils.RunMode+"】"+"失败提醒", " 彭博数据获取失败:err:"+errMsg, utils.EmailSendToUsers)
-			go alarm_msg.SendAlarmMsg("彭博数据获取失败:err:"+errMsg, 3)
-
-		}
-	}()
+type EdbDataFromPb struct {
+	Date   map[string]int64   `json:"date"`
+	Ticker map[string]string  `json:"ticker"`
+	Field  map[string]string  `json:"field"`
+	Value  map[string]float64 `json:"value"`
+}
 
+func AddEdbDataFromPb(edbCode string, item *EdbDataFromPb) (err error) {
+	o := orm.NewOrm()
 	if len(item.Date) > 0 {
 		var isAdd bool
 		dateMap := item.Date
@@ -49,7 +45,6 @@ func AddEdbDataFromPb(edbCode string, item *services.EdbDataFromPb) (err error)
 			addSql = strings.TrimRight(addSql, ",")
 			_, err = o.Raw(addSql).Exec()
 			if err != nil {
-				errMsg = " tx.Exec Err :" + err.Error()
 				return
 			}
 		}
@@ -58,7 +53,7 @@ func AddEdbDataFromPb(edbCode string, item *services.EdbDataFromPb) (err error)
 }
 
 // 刷新彭博指标数据
-func RefreshEdbDataFromPb(edbInfoId int, edbCode, startDate string, item *services.EdbDataFromPb) (err error) {
+func RefreshEdbDataFromPb(edbInfoId int, edbCode, startDate string, item *EdbDataFromPb) (err error) {
 	o := orm.NewOrm()
 	source := utils.DATA_SOURCE_PB
 

+ 2 - 14
models/base_from_pb_finance.go

@@ -3,25 +3,14 @@ package models
 import (
 	"fmt"
 	"github.com/beego/beego/v2/client/orm"
-	"hongze/hongze_edb_lib/services"
-	"hongze/hongze_edb_lib/services/alarm_msg"
 	"hongze/hongze_edb_lib/utils"
 	"strconv"
 	"strings"
 	"time"
 )
 
-func AddEdbDataFromPbFinance(edbCode string, item *services.EdbDataFromPb) (err error) {
-	var errMsg string
+func AddEdbDataFromPbFinance(edbCode string, item *EdbDataFromPb) (err error) {
 	o := orm.NewOrm()
-	defer func() {
-		if err != nil {
-			//go utils.SendEmail(utils.APP_NAME_CN+"【"+utils.RunMode+"】"+"失败提醒", " 彭博数据获取失败:err:"+errMsg, utils.EmailSendToUsers)
-			go alarm_msg.SendAlarmMsg("彭博数据获取失败:err:"+errMsg, 3)
-
-		}
-	}()
-
 	if len(item.Date) > 0 {
 		var isAdd bool
 		dateMap := item.Date
@@ -47,7 +36,6 @@ func AddEdbDataFromPbFinance(edbCode string, item *services.EdbDataFromPb) (err
 			addSql = strings.TrimRight(addSql, ",")
 			_, err = o.Raw(addSql).Exec()
 			if err != nil {
-				errMsg = " tx.Exec Err :" + err.Error()
 				return
 			}
 		}
@@ -56,7 +44,7 @@ func AddEdbDataFromPbFinance(edbCode string, item *services.EdbDataFromPb) (err
 }
 
 // 刷新彭博指标数据
-func RefreshEdbDataFromPbFinance(edbInfoId int, edbCode, startDate string, item *services.EdbDataFromPb) (err error) {
+func RefreshEdbDataFromPbFinance(edbInfoId int, edbCode, startDate string, item *EdbDataFromPb) (err error) {
 	o := orm.NewOrm()
 	source := utils.DATA_SOURCE_PB_FINANCE
 

+ 9 - 19
models/base_from_python.go

@@ -5,7 +5,6 @@ import (
 	"fmt"
 	"github.com/beego/beego/v2/client/orm"
 	"github.com/shopspring/decimal"
-	"hongze/hongze_edb_lib/services"
 	"hongze/hongze_edb_lib/services/alarm_msg"
 	"hongze/hongze_edb_lib/utils"
 	"strings"
@@ -24,15 +23,15 @@ type EdbDataPython struct {
 	DataTimestamp int64
 }
 
+// EdbDataFromPython 通过python代码获取到的指标数据
+type EdbDataFromPython struct {
+	Date  map[int]string  `json:"date"`
+	Value map[int]float64 `json:"value"`
+}
+
 // AddPythonEdb 新增python运算指标
-func AddPythonEdb(edbInfoId int, edbCode string, item services.EdbDataFromPython, edbInfoList []*EdbInfo) (err error) {
-	var errMsg string
+func AddPythonEdb(edbInfoId int, edbCode string, item EdbDataFromPython, edbInfoList []*EdbInfo) (err error) {
 	o := orm.NewOrm()
-	defer func() {
-		if err != nil {
-			go alarm_msg.SendAlarmMsg(" python代码运算数据添加失败:err:"+errMsg, 3)
-		}
-	}()
 
 	//添加指标关系
 	for _, tmpEdbInfo := range edbInfoList {
@@ -79,7 +78,6 @@ func AddPythonEdb(edbInfoId int, edbCode string, item services.EdbDataFromPython
 		addSql = strings.TrimRight(addSql, ",")
 		_, err = o.Raw(addSql).Exec()
 		if err != nil {
-			errMsg = " tx.Exec Err :" + err.Error()
 			return
 		}
 	}
@@ -87,15 +85,8 @@ func AddPythonEdb(edbInfoId int, edbCode string, item services.EdbDataFromPython
 }
 
 // EditPythonEdb 编辑python运算指标
-func EditPythonEdb(edbInfoId int, edbCode string, item services.EdbDataFromPython) (err error) {
-	var errMsg string
+func EditPythonEdb(edbInfoId int, edbCode string, item EdbDataFromPython) (err error) {
 	o := orm.NewOrm()
-	defer func() {
-		if err != nil {
-			go alarm_msg.SendAlarmMsg(" 编辑python运算指标:err:"+errMsg, 3)
-		}
-	}()
-
 	var isAdd bool
 	addSql := ` INSERT INTO edb_data_python (edb_info_id,edb_code,data_time,value,create_time,modify_time,data_timestamp) values `
 	for k, dateTimeStr := range item.Date {
@@ -120,7 +111,6 @@ func EditPythonEdb(edbInfoId int, edbCode string, item services.EdbDataFromPytho
 		addSql = strings.TrimRight(addSql, ",")
 		_, err = o.Raw(addSql).Exec()
 		if err != nil {
-			errMsg = " tx.Exec Err :" + err.Error()
 			return
 		}
 	}
@@ -128,7 +118,7 @@ func EditPythonEdb(edbInfoId int, edbCode string, item services.EdbDataFromPytho
 }
 
 // RefreshAllPythonEdb 刷新所有 python运算指标
-func RefreshAllPythonEdb(edbInfo *EdbInfo, item services.EdbDataFromPython) (err error) {
+func RefreshAllPythonEdb(edbInfo *EdbInfo, item EdbDataFromPython) (err error) {
 	o := orm.NewOrm()
 	to, err := o.Begin()
 	if err != nil {

+ 17 - 13
models/base_from_ths.go

@@ -3,24 +3,30 @@ package models
 import (
 	"fmt"
 	"github.com/beego/beego/v2/client/orm"
-	"hongze/hongze_edb_lib/services"
-	"hongze/hongze_edb_lib/services/alarm_msg"
 	"hongze/hongze_edb_lib/utils"
 	"strconv"
 	"strings"
 	"time"
 )
 
+type EdbDataFromThs struct {
+	DataVol   int64       `json:"dataVol"`
+	Errmsg    string      `json:"errmsg"`
+	Errorcode int64       `json:"errorcode"`
+	Perf      interface{} `json:"perf"`
+	Tables    []Tables    `json:"tables"`
+}
+
+// Tables 表格数据
+type Tables struct {
+	ID    []string  `json:"id"`
+	Time  []string  `json:"time"`
+	Value []float64 `json:"value"`
+}
+
 // 新增同花顺指标数据
-func AddEdbDataFromThs(edbCode string, item *services.EdbDataFromThs) (err error) {
-	var errMsg string
+func AddEdbDataFromThs(edbCode string, item *EdbDataFromThs) (err error) {
 	o := orm.NewOrm()
-	defer func() {
-		if err != nil {
-			//go utils.SendEmail(utils.APP_NAME_CN+"【"+utils.RunMode+"】"+"失败提醒", " 同花顺数据获取失败:err:"+errMsg, utils.EmailSendToUsers)
-			go alarm_msg.SendAlarmMsg("同花顺数据获取失败:err:"+errMsg, 3)
-		}
-	}()
 
 	if len(item.Tables) > 0 {
 		table := item.Tables[0]
@@ -36,7 +42,6 @@ func AddEdbDataFromThs(edbCode string, item *services.EdbDataFromThs) (err error
 			sValue := table.Value[i]
 			dataTime, err := time.ParseInLocation(utils.FormatDate, eDate, time.Local)
 			if err != nil {
-				errMsg = " time.Parse :" + err.Error()
 				return err
 			}
 			timestamp := dataTime.UnixNano() / 1e6
@@ -48,7 +53,6 @@ func AddEdbDataFromThs(edbCode string, item *services.EdbDataFromThs) (err error
 			addSql = strings.TrimRight(addSql, ",")
 			_, err = o.Raw(addSql).Exec()
 			if err != nil {
-				errMsg = " tx.Exec Err :" + err.Error()
 				return
 			}
 		}
@@ -57,7 +61,7 @@ func AddEdbDataFromThs(edbCode string, item *services.EdbDataFromThs) (err error
 }
 
 // 刷新同花顺指标数据
-func RefreshEdbDataFromThs(edbInfoId int, edbCode, startDate string, item *services.EdbDataFromThs) (err error) {
+func RefreshEdbDataFromThs(edbInfoId int, edbCode, startDate string, item *EdbDataFromThs) (err error) {
 	o := orm.NewOrm()
 	source := utils.DATA_SOURCE_THS
 

+ 9 - 12
models/base_from_wind.go

@@ -3,23 +3,21 @@ package models
 import (
 	"fmt"
 	"github.com/beego/beego/v2/client/orm"
-	"hongze/hongze_edb_lib/services"
-	"hongze/hongze_edb_lib/services/alarm_msg"
 	"hongze/hongze_edb_lib/utils"
 	"strconv"
 	"strings"
 	"time"
 )
 
-func AddEdbDataFromWind(edbCode string, item *services.EdbDataFromWind) (err error) {
-	var errMsg string
+type EdbDataFromWind struct {
+	Close     map[string]float64 `json:"CLOSE"`
+	Dt        map[string]int64   `json:"DT"`
+	ErrorCode map[string]int64   `json:"ErrorCode"`
+	ErrMsg    string
+}
+
+func AddEdbDataFromWind(edbCode string, item *EdbDataFromWind) (err error) {
 	o := orm.NewOrm()
-	defer func() {
-		if err != nil {
-			//go utils.SendEmail(utils.APP_NAME_CN+"【"+utils.RunMode+"】"+"失败提醒", " 同花顺数据获取失败:err:"+errMsg, utils.EmailSendToUsers)
-			go alarm_msg.SendAlarmMsg("wind数据获取失败:err:"+errMsg, 3)
-		}
-	}()
 
 	var isAdd bool
 	addSql := ` INSERT INTO edb_data_wind(edb_info_id,edb_code,data_time,value,create_time,modify_time,data_timestamp) values `
@@ -39,7 +37,6 @@ func AddEdbDataFromWind(edbCode string, item *services.EdbDataFromWind) (err err
 		addSql = strings.TrimRight(addSql, ",")
 		_, err = o.Raw(addSql).Exec()
 		if err != nil {
-			errMsg = " tx.Exec Err :" + err.Error()
 			return
 		}
 	}
@@ -47,7 +44,7 @@ func AddEdbDataFromWind(edbCode string, item *services.EdbDataFromWind) (err err
 }
 
 // RefreshEdbDataFromWind 刷新wind指标数据
-func RefreshEdbDataFromWind(edbInfoId int, edbCode, startDate string, item *services.EdbDataFromWind) (err error) {
+func RefreshEdbDataFromWind(edbInfoId int, edbCode, startDate string, item *EdbDataFromWind) (err error) {
 	o := orm.NewOrm()
 	source := utils.DATA_SOURCE_WIND
 

+ 2 - 3
models/base_predict_from_calculate.go

@@ -6,7 +6,6 @@ import (
 	"github.com/beego/beego/v2/client/orm"
 	"github.com/shopspring/decimal"
 	"github.com/yidane/formula"
-	"hongze/hongze_edb_lib/services"
 	"hongze/hongze_edb_lib/utils"
 	"strconv"
 	"strings"
@@ -158,7 +157,7 @@ func AddPredictCalculateDataBak(edbInfoIdList []*EdbInfo, edbInfoId int, edbCode
 	//数据处理,将日期内不全的数据做补全
 	handleDateSaveDataMap(dateList, oldSaveDataMap, saveDataMap, edbInfoIdList)
 
-	formulaMap := services.CheckFormula(formulaStr)
+	formulaMap := utils.CheckFormula(formulaStr)
 	addSql := ` INSERT INTO edb_data_predict_calculate (edb_info_id,edb_code,data_time,value,create_time,modify_time,data_timestamp) values `
 	nowStr := time.Now().Format(utils.FormatDateTime)
 	var isAdd bool
@@ -318,7 +317,7 @@ func refreshAllPredictCalculate(to orm.TxOrmer, edbInfoIdList []*EdbInfo, edbInf
 	//数据处理,将日期内不全的数据做补全
 	handleDateSaveDataMap(dateList, realSaveDataMap, saveDataMap, edbInfoIdList)
 
-	formulaMap := services.CheckFormula(formulaStr)
+	formulaMap := utils.CheckFormula(formulaStr)
 	addSql := ` INSERT INTO edb_data_predict_calculate (edb_info_id,edb_code,data_time,value,create_time,modify_time,data_timestamp) values `
 	var isAdd bool
 	if !minLatestDate.IsZero() {

+ 25 - 13
models/future_good/future_good_edb_data.go

@@ -3,8 +3,6 @@ package future_good
 import (
 	"fmt"
 	"github.com/beego/beego/v2/client/orm"
-	"hongze/hongze_edb_lib/services"
-	"hongze/hongze_edb_lib/services/alarm_msg"
 	"hongze/hongze_edb_lib/utils"
 	"strconv"
 	"strings"
@@ -51,6 +49,29 @@ type FutureGoodEdbDataItem struct {
 	CreateTime          time.Time
 }
 
+// FutureGoodDataFromThs 同花顺期货数据
+type FutureGoodDataFromThs struct {
+	DataVol   int64                `json:"dataVol"`
+	Errmsg    string               `json:"errmsg"`
+	Errorcode int64                `json:"errorcode"`
+	Perf      interface{}          `json:"perf"`
+	Tables    FutureGoodDataTables `json:"tables"`
+}
+
+// FutureGoodDataTables 同花顺表格数据
+type FutureGoodDataTables struct {
+	//TradeCode    []string  `json:"id"`
+	Time       []string  `json:"time"`
+	Open       []float64 `json:"open"`
+	High       []float64 `json:"high"`
+	Low        []float64 `json:"low"`
+	Close      []float64 `json:"close"`
+	Volume     []float64 `json:"volume"`
+	Amount     []float64 `json:"amount"`
+	Ccl        []float64 `json:"ccl"`
+	Settlement []float64 `json:"settlement"`
+}
+
 // GetFutureGoodEdbDataList 获取期货指标数据列表
 func GetFutureGoodEdbDataList(condition string, pars []interface{}) (list []*FutureGoodEdbDataItem, err error) {
 	o := orm.NewOrm()
@@ -64,15 +85,8 @@ func GetFutureGoodEdbDataList(condition string, pars []interface{}) (list []*Fut
 }
 
 // AddEdbDataFromWind 添加wind商品指标数据
-func AddEdbDataFromWind(futureGoodEdbInfoId int, edbCode string, item *services.FutureGoodDataFromThs) (err error) {
-	var errMsg string
+func AddEdbDataFromWind(futureGoodEdbInfoId int, edbCode string, item *FutureGoodDataFromThs) (err error) {
 	o := orm.NewOrm()
-	defer func() {
-		if err != nil {
-			//go utils.SendEmail(utils.APP_NAME_CN+"【"+utils.RunMode+"】"+"失败提醒", " 同花顺数据获取失败:err:"+errMsg, utils.EmailSendToUsers)
-			go alarm_msg.SendAlarmMsg("wind商品数据获取失败:err:"+errMsg, 3)
-		}
-	}()
 
 	var isAdd bool
 	addSql := ` INSERT INTO future_good_edb_data(future_good_edb_info_id,future_good_edb_code,data_time,trade_code,open,high,low,close,volume,amt,oi,settle,create_time,modify_time,data_timestamp) values `
@@ -83,7 +97,6 @@ func AddEdbDataFromWind(futureGoodEdbInfoId int, edbCode string, item *services.
 		eDate := table.Time[k]
 		dataTime, err := time.ParseInLocation(utils.FormatDate, eDate, time.Local)
 		if err != nil {
-			errMsg = " time.Parse :" + err.Error()
 			return err
 		}
 		timestamp := dataTime.UnixNano() / 1e6
@@ -108,7 +121,6 @@ func AddEdbDataFromWind(futureGoodEdbInfoId int, edbCode string, item *services.
 		addSql = strings.TrimRight(addSql, ",")
 		_, err = o.Raw(addSql).Exec()
 		if err != nil {
-			errMsg = " tx.Exec Err :" + err.Error()
 			return
 		}
 	}
@@ -123,7 +135,7 @@ type RefreshFutureEdbEdbInfoReq struct {
 }
 
 // RefreshFutureGoodEdbDataFromThs 刷新wind期货指标数据
-func RefreshFutureGoodEdbDataFromThs(futureGoodEdbInfoId int, edbCode, startDate string, item *services.FutureGoodDataFromThs) (err error) {
+func RefreshFutureGoodEdbDataFromThs(futureGoodEdbInfoId int, edbCode, startDate string, item *FutureGoodDataFromThs) (err error) {
 	o := orm.NewOrm()
 	to, err := o.Begin()
 	if err != nil {

+ 3 - 11
models/predict_edb.go

@@ -7,8 +7,6 @@ import (
 	"github.com/beego/beego/v2/client/orm"
 	"github.com/shopspring/decimal"
 	"github.com/yidane/formula"
-	"hongze/hongze_edb_lib/services"
-	"hongze/hongze_edb_lib/services/alarm_msg"
 	"hongze/hongze_edb_lib/utils"
 	"strings"
 	"time"
@@ -36,10 +34,7 @@ func RefreshCalculateByRuleBy9(rule CalculateRule) (resultDataList []*EdbInfoSea
 	}
 	defer func() {
 		if err != nil {
-			tmpErr := to.Rollback()
-			if tmpErr != nil {
-				go alarm_msg.SendAlarmMsg("RefreshCalculateByRuleBy9 事务回滚失败,Err:"+tmpErr.Error(), 3)
-			}
+			to.Rollback()
 		} else {
 			err = to.Commit()
 		}
@@ -105,7 +100,7 @@ func CalculateByRuleBy9(to orm.TxOrmer, rule CalculateRule) (resultDataList []*E
 	addDataList := make([]*PredictEdbRuleData, 0)
 
 	// 计算规则
-	formulaMap := services.CheckFormula(formulaStr)
+	formulaMap := utils.CheckFormula(formulaStr)
 
 	//获取指标所有数据
 	dataList := make([]*PredictEdbRuleData, 0)
@@ -229,10 +224,7 @@ func RefreshCalculateByRuleByLineNh(predictEdbInfo EdbInfo, predictEdbConfAndDat
 	}
 	defer func() {
 		if err != nil {
-			tmpErr := to.Rollback()
-			if tmpErr != nil {
-				go alarm_msg.SendAlarmMsg("RefreshCalculateByRuleBy9 事务回滚失败,Err:"+tmpErr.Error(), 3)
-			}
+			to.Rollback()
 		} else {
 			err = to.Commit()
 		}

+ 2 - 9
models/predict_edb_conf.go

@@ -2,7 +2,6 @@ package models
 
 import (
 	"github.com/beego/beego/v2/client/orm"
-	"hongze/hongze_edb_lib/services/alarm_msg"
 	"hongze/hongze_edb_lib/utils"
 	"time"
 )
@@ -156,10 +155,7 @@ func AddPredictEdb(item *EdbInfo, calculateMappingList []*EdbInfoCalculateMappin
 	}
 	defer func() {
 		if err != nil {
-			tmpErr := tx.Rollback()
-			if tmpErr != nil {
-				go alarm_msg.SendAlarmMsg("AddPredictEdb 事务回滚失败,Err:"+tmpErr.Error(), 3)
-			}
+			tx.Rollback()
 		} else {
 			err = tx.Commit()
 		}
@@ -275,10 +271,7 @@ func EditPredictEdb(edbInfo *EdbInfo, updateEdbInfoCol []string, calculateMappin
 	}
 	defer func() {
 		if err != nil {
-			tmpErr := tx.Rollback()
-			if tmpErr != nil {
-				go alarm_msg.SendAlarmMsg("AddPredictEdb 事务回滚失败,Err:"+tmpErr.Error(), 3)
-			}
+			tx.Rollback()
 		} else {
 			err = tx.Commit()
 		}

+ 18 - 0
routers/commentsRouter.go

@@ -313,6 +313,24 @@ func init() {
             Filters: nil,
             Params: nil})
 
+    beego.GlobalControllerRouter["hongze/hongze_edb_lib/controllers:MySteelChemicalController"] = append(beego.GlobalControllerRouter["hongze/hongze_edb_lib/controllers:MySteelChemicalController"],
+        beego.ControllerComments{
+            Method: "HandleMysteelIndex",
+            Router: `/handle/mysteel/index`,
+            AllowHTTPMethods: []string{"post"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
+    beego.GlobalControllerRouter["hongze/hongze_edb_lib/controllers:MySteelChemicalController"] = append(beego.GlobalControllerRouter["hongze/hongze_edb_lib/controllers:MySteelChemicalController"],
+        beego.ControllerComments{
+            Method: "QueryRefresh",
+            Router: `/query/refresh`,
+            AllowHTTPMethods: []string{"post"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
     beego.GlobalControllerRouter["hongze/hongze_edb_lib/controllers:MySteelChemicalController"] = append(beego.GlobalControllerRouter["hongze/hongze_edb_lib/controllers:MySteelChemicalController"],
         beego.ControllerComments{
             Method: "Refresh",

+ 3 - 19
services/base_from_fubao.go

@@ -4,6 +4,7 @@ import (
 	"encoding/json"
 	"fmt"
 	"github.com/rdlucklib/rdluck_tools/http"
+	"hongze/hongze_edb_lib/models"
 	"hongze/hongze_edb_lib/utils"
 )
 
@@ -12,25 +13,8 @@ const (
 	FuBaoQueryLastDataUrl = "http://data.f139.com/cooperation/wande/queryLastData.do"
 )
 
-type FuBaoData struct {
-	ReturnValue struct {
-		Product struct {
-			AlikeName    string `json:"alikeName"`
-			DiffName     string `json:"diffName"`
-			PropValueStr string `json:"propValueStr"`
-			Pattern      string `json:"pattern"`
-		} `json:"product"`
-		Data []struct {
-			PriceStr string `json:"priceStr"`
-			Uad      string `json:"uad"`
-			Datadate string `json:"datadate"`
-		} `json:"data"`
-	} `json:"returnValue"`
-	Code int `json:"code"`
-}
-
 // GetEdbDataFromLt 获取路透数据
-func GetEdbDataFromFuBao(edbCode, startDate, endDate string) (item *FuBaoData, err error) {
+func GetEdbDataFromFuBao(edbCode, startDate, endDate string) (item *models.FuBaoData, err error) {
 	sbUrl := fmt.Sprintf(FuBaoQueryDataUrl, edbCode)
 	utils.FileLog.Info("sbUrl:%s", sbUrl)
 	body, err := http.Get(sbUrl)
@@ -39,7 +23,7 @@ func GetEdbDataFromFuBao(edbCode, startDate, endDate string) (item *FuBaoData, e
 	if err != nil {
 		return
 	}
-	item = new(FuBaoData)
+	item = new(models.FuBaoData)
 	err = json.Unmarshal(body, &item)
 	return
 }

+ 148 - 0
services/base_from_mysteel_chemical.go

@@ -0,0 +1,148 @@
+package services
+
+import (
+	"fmt"
+	"hongze/hongze_edb_lib/models"
+	"hongze/hongze_edb_lib/utils"
+	"strings"
+	"time"
+)
+
+func HandleMysteelIndex(req *models.HandleMysteelIndexResp) {
+	for _, v := range req.List {
+		if v.IndexName == "" || v.IndexCode == "" {
+			continue
+		}
+		handleIndex(v)
+	}
+}
+
+func handleIndex(indexItem *models.HandleMysteelIndex) {
+	var err error
+
+	//return
+	indexObj := new(models.BaseFromMysteelChemicalIndex)
+	var indexId int64
+
+	addDataList := make([]models.BaseFromMysteelChemicalData, 0)
+
+	exitDataMap := make(map[string]*models.BaseFromMysteelChemicalData)
+
+	//判断指标是否存在
+	var isAdd int
+	item, err := indexObj.GetIndexItem(indexItem.IndexCode)
+	if err != nil {
+		if err.Error() == err.Error() {
+			isAdd = 1
+		} else {
+			isAdd = -1
+			return
+		}
+	}
+	if item != nil && item.BaseFromMysteelChemicalIndexId > 0 {
+		isAdd = 2
+	} else {
+		isAdd = 1
+	}
+
+	fmt.Println("isAdd:", isAdd)
+	if !strings.Contains(indexItem.Frequency, "度") {
+		indexItem.Frequency = indexItem.Frequency + "度"
+	}
+
+	if isAdd == 1 {
+		indexObj.IndexCode = indexItem.IndexCode
+		indexObj.IndexName = indexItem.IndexName
+		indexObj.Unit = indexItem.Unit
+		indexObj.Source = indexItem.Source
+		indexObj.Describe = indexItem.Describe
+		indexObj.StartDate, _ = time.ParseInLocation(utils.FormatDate, indexItem.StartDate, time.Local)
+		indexObj.EndDate, _ = time.ParseInLocation(utils.FormatDate, indexItem.EndDate, time.Local)
+		indexObj.Frequency = indexItem.Frequency
+		err = indexObj.Add()
+		if err != nil {
+			fmt.Println("add err:" + err.Error())
+			return
+		}
+		indexId = indexObj.BaseFromMysteelChemicalIndexId
+	} else if isAdd == 2 {
+		indexObj.IndexCode = indexItem.IndexCode
+		indexObj.IndexName = indexItem.IndexName
+		indexObj.Unit = indexItem.Unit
+		indexObj.Source = indexItem.Source
+		indexObj.Describe = indexItem.Describe
+		indexObj.StartDate, _ = time.ParseInLocation(utils.FormatDate, indexItem.StartDate, time.Local)
+		indexObj.EndDate, _ = time.ParseInLocation(utils.FormatDate, indexItem.EndDate, time.Local)
+		indexObj.Frequency = indexItem.Frequency
+		indexObj.ModifyTime = time.Now()
+		indexId = item.BaseFromMysteelChemicalIndexId
+		//修改数据
+		updateColsArr := make([]string, 0)
+		updateColsArr = append(updateColsArr, "index_name")
+		updateColsArr = append(updateColsArr, "unit")
+		updateColsArr = append(updateColsArr, "source")
+		updateColsArr = append(updateColsArr, "frequency")
+		updateColsArr = append(updateColsArr, "start_date")
+		updateColsArr = append(updateColsArr, "end_date")
+		updateColsArr = append(updateColsArr, "describe")
+		updateColsArr = append(updateColsArr, "end_date")
+		updateColsArr = append(updateColsArr, "modify_time")
+
+		indexObj.Update(updateColsArr)
+
+		dataObj := new(models.BaseFromMysteelChemicalData)
+
+		//获取已存在的所有数据
+		exitDataList, err := dataObj.GetIndexDataList(indexItem.IndexCode)
+		if err != nil {
+			fmt.Println("GetIndexDataList Err:" + err.Error())
+			return
+		}
+		fmt.Println("exitDataListLen:", len(exitDataList))
+		for _, v := range exitDataList {
+			dateStr := v.DataTime.Format(utils.FormatDate)
+			exitDataMap[dateStr] = v
+		}
+	}
+
+	dataObj := new(models.BaseFromMysteelChemicalData)
+	// 遍历excel数据,然后跟现有的数据做校验,不存在则入库
+	for date, value := range indexItem.ExcelDataMap {
+		if findData, ok := exitDataMap[date]; !ok {
+			dateTime, err := time.ParseInLocation(utils.FormatDate, date, time.Local)
+			if err != nil {
+				fmt.Println("time.ParseInLocation Err:" + err.Error())
+				return
+			}
+			if !strings.Contains(value, "#N/A") {
+				dataItem := new(models.BaseFromMysteelChemicalData)
+				dataItem.BaseFromMysteelChemicalIndexId = indexId
+				dataItem.IndexCode = indexItem.IndexCode
+				dataItem.DataTime = dateTime
+				dataItem.Value = value
+				dataItem.UpdateDate = indexItem.UpdateDate
+				dataItem.CreateTime = time.Now()
+				dataItem.ModifyTime = time.Now()
+				addDataList = append(addDataList, *dataItem)
+			}
+		} else {
+			if findData != nil && findData.Value != value && !strings.Contains(value, "#N/A") { //修改数据
+				dataObj.BaseFromMysteelChemicalDataId = findData.BaseFromMysteelChemicalDataId
+				dataObj.Value = value
+				dataObj.ModifyTime = time.Now()
+
+				updateDataColsArr := make([]string, 0)
+				updateDataColsArr = append(updateDataColsArr, "value")
+				updateDataColsArr = append(updateDataColsArr, "modify_time")
+				dataObj.Update(updateDataColsArr)
+			}
+		}
+	}
+
+	if len(addDataList) > 0 {
+		err = dataObj.Add(addDataList)
+		if err != nil {
+			fmt.Println("dataObj.Add() Err:" + err.Error())
+		}
+	}
+}

+ 5 - 11
services/base_from_pb.go

@@ -4,19 +4,13 @@ import (
 	"encoding/json"
 	"fmt"
 	"github.com/rdlucklib/rdluck_tools/http"
+	"hongze/hongze_edb_lib/models"
 	"hongze/hongze_edb_lib/utils"
 	"net/url"
 )
 
-type EdbDataFromPb struct {
-	Date   map[string]int64   `json:"date"`
-	Ticker map[string]string  `json:"ticker"`
-	Field  map[string]string  `json:"field"`
-	Value  map[string]float64 `json:"value"`
-}
-
 // GetEdbDataFromPb 获取Pb数据
-func GetEdbDataFromPb(edbCode, startDate, endDate string) (item *EdbDataFromPb, err error) {
+func GetEdbDataFromPb(edbCode, startDate, endDate string) (item *models.EdbDataFromPb, err error) {
 	edbCode = url.QueryEscape(edbCode)
 	bpUrl := utils.Hz_Pb_Data_Url + `edbInfo/pb?EdbCode=%s&StartDate=%s&EndDate=%s`
 	bpUrl = fmt.Sprintf(bpUrl, edbCode, startDate, endDate)
@@ -27,7 +21,7 @@ func GetEdbDataFromPb(edbCode, startDate, endDate string) (item *EdbDataFromPb,
 		return
 	}
 	utils.FileLog.Info("GetEdbDataByPb result:" + string(body))
-	item = new(EdbDataFromPb)
+	item = new(models.EdbDataFromPb)
 	err = json.Unmarshal(body, &item)
 	if err != nil {
 		utils.FileLog.Info("GetEdbDataByPb Unmarshal Err:" + err.Error())
@@ -38,7 +32,7 @@ func GetEdbDataFromPb(edbCode, startDate, endDate string) (item *EdbDataFromPb,
 }
 
 // GetEdbDataFromPbFinance 获取Pb财务数据
-func GetEdbDataFromPbFinance(companyCode, edbCode, startDate, endDate string) (item *EdbDataFromPb, err error) {
+func GetEdbDataFromPbFinance(companyCode, edbCode, startDate, endDate string) (item *models.EdbDataFromPb, err error) {
 	companyCode = url.QueryEscape(companyCode)
 	edbCode = url.QueryEscape(edbCode)
 	bpUrl := utils.Hz_Pb_Data_Url + `edbInfo/pb/finance?CompanyCode=%s&EdbCode=%s&StartDate=%s&EndDate=%s`
@@ -50,7 +44,7 @@ func GetEdbDataFromPbFinance(companyCode, edbCode, startDate, endDate string) (i
 		return
 	}
 	utils.FileLog.Info("GetEdbDataByPb result:" + string(body))
-	item = new(EdbDataFromPb)
+	item = new(models.EdbDataFromPb)
 	err = json.Unmarshal(body, &item)
 	if err != nil {
 		utils.FileLog.Info("GetEdbDataByPb Unmarshal Err:" + err.Error())

+ 2 - 7
services/base_from_python.go

@@ -5,6 +5,7 @@ import (
 	"encoding/json"
 	"fmt"
 	"github.com/shopspring/decimal"
+	"hongze/hongze_edb_lib/models"
 	"hongze/hongze_edb_lib/utils"
 	"os"
 	"os/exec"
@@ -54,12 +55,6 @@ func Test() (err error) {
 	return
 }
 
-// EdbDataFromPython 通过python代码获取到的指标数据
-type EdbDataFromPython struct {
-	Date  map[int]string  `json:"date"`
-	Value map[int]float64 `json:"value"`
-}
-
 // EdbDataStrFromPython 通过python代码获取到的指标数据(interface数据)
 type EdbDataStrFromPython struct {
 	Date  map[int]string      `json:"date"`
@@ -67,7 +62,7 @@ type EdbDataStrFromPython struct {
 }
 
 // ExecPythonCode 执行Python代码
-func ExecPythonCode(edbCode, reqCode string) (dataMap EdbDataFromPython, err error, errMsg string) {
+func ExecPythonCode(edbCode, reqCode string) (dataMap models.EdbDataFromPython, err error, errMsg string) {
 	defer func() {
 		if err != nil {
 			fmt.Println("err:", err)

+ 10 - 46
services/base_from_ths.go

@@ -6,25 +6,12 @@ import (
 	"fmt"
 	"github.com/rdlucklib/rdluck_tools/http"
 	"github.com/shopspring/decimal"
+	"hongze/hongze_edb_lib/models"
+	"hongze/hongze_edb_lib/models/future_good"
 	"hongze/hongze_edb_lib/utils"
 	"reflect"
 )
 
-type EdbDataFromThs struct {
-	DataVol   int64       `json:"dataVol"`
-	Errmsg    string      `json:"errmsg"`
-	Errorcode int64       `json:"errorcode"`
-	Perf      interface{} `json:"perf"`
-	Tables    []Tables    `json:"tables"`
-}
-
-// Tables 表格数据
-type Tables struct {
-	ID    []string  `json:"id"`
-	Time  []string  `json:"time"`
-	Value []float64 `json:"value"`
-}
-
 // EdbDataFromThsInterface 数据类型转为interface
 type EdbDataFromThsInterface struct {
 	DataVol   int64       `json:"dataVol"`
@@ -38,12 +25,12 @@ type EdbDataFromThsInterface struct {
 	} `json:"tables"`
 }
 
-func GetEdbDataFromThs(edbCode, startDate, endDate string) (item *EdbDataFromThs, err error) {
+func GetEdbDataFromThs(edbCode, startDate, endDate string) (item *models.EdbDataFromThs, err error) {
 	return getEdbDataFromThs(edbCode, startDate, endDate, 0)
 }
 
 // getEdbDataFromThs 获取同花顺接口数据
-func getEdbDataFromThs(edbCode, startDate, endDate string, num int) (item *EdbDataFromThs, err error) {
+func getEdbDataFromThs(edbCode, startDate, endDate string, num int) (item *models.EdbDataFromThs, err error) {
 	thsUrl := utils.Hz_Wind_Data_Url + `edbInfo/ths?EdbCode=%s&StartDate=%s&EndDate=%s`
 	thsUrl = fmt.Sprintf(thsUrl, edbCode, startDate, endDate)
 	utils.FileLog.Info("thsUrl:" + thsUrl)
@@ -77,7 +64,7 @@ func getEdbDataFromThs(edbCode, startDate, endDate string, num int) (item *EdbDa
 	}
 
 	// 因为table里面的value有的时候返回的是string,有的是float64,所以需要用interface来反射取值
-	tablesList := make([]Tables, 0)
+	tablesList := make([]models.Tables, 0)
 	for _, table := range tmpItems.Tables {
 		tableIdList := make([]string, 0)
 		tableTimeList := make([]string, 0)
@@ -108,14 +95,14 @@ func getEdbDataFromThs(edbCode, startDate, endDate string, num int) (item *EdbDa
 			}
 			tableValueList = append(tableValueList, tableValue)
 		}
-		tmpTable := Tables{
+		tmpTable := models.Tables{
 			ID:    tableIdList,
 			Time:  tableTimeList,
 			Value: tableValueList,
 		}
 		tablesList = append(tablesList, tmpTable)
 	}
-	item = &EdbDataFromThs{
+	item = &models.EdbDataFromThs{
 		DataVol:   tmpItems.DataVol,
 		Errmsg:    tmpItems.Errmsg,
 		Errorcode: tmpItems.Errorcode,
@@ -159,31 +146,8 @@ type FutureGoodDataFromThsInterface struct {
 	} `json:"tables"`
 }
 
-// FutureGoodDataFromThs 同花顺期货数据
-type FutureGoodDataFromThs struct {
-	DataVol   int64                `json:"dataVol"`
-	Errmsg    string               `json:"errmsg"`
-	Errorcode int64                `json:"errorcode"`
-	Perf      interface{}          `json:"perf"`
-	Tables    FutureGoodDataTables `json:"tables"`
-}
-
-// FutureGoodDataTables 同花顺表格数据
-type FutureGoodDataTables struct {
-	//TradeCode    []string  `json:"id"`
-	Time       []string  `json:"time"`
-	Open       []float64 `json:"open"`
-	High       []float64 `json:"high"`
-	Low        []float64 `json:"low"`
-	Close      []float64 `json:"close"`
-	Volume     []float64 `json:"volume"`
-	Amount     []float64 `json:"amount"`
-	Ccl        []float64 `json:"ccl"`
-	Settlement []float64 `json:"settlement"`
-}
-
 // GetFutureGoodDataFromThs 通过url获取wind的商品数据
-func GetFutureGoodDataFromThs(edbCode, startDate, endDate string, num int) (item *FutureGoodDataFromThs, err error) {
+func GetFutureGoodDataFromThs(edbCode, startDate, endDate string, num int) (item *future_good.FutureGoodDataFromThs, err error) {
 	thsUrl := utils.Hz_Wind_Data_Url + `edbInfo/ths/future_good?EdbCode=%s&StartDate=%s&EndDate=%s`
 	thsUrl = fmt.Sprintf(thsUrl, edbCode, startDate, endDate)
 	utils.FileLog.Info("thsUrl:" + thsUrl)
@@ -220,12 +184,12 @@ func GetFutureGoodDataFromThs(edbCode, startDate, endDate string, num int) (item
 		return
 	}
 	table := tmpItems.Tables[0]
-	item = &FutureGoodDataFromThs{
+	item = &future_good.FutureGoodDataFromThs{
 		DataVol:   tmpItems.DataVol,
 		Errmsg:    tmpItems.Errmsg,
 		Errorcode: tmpItems.Errorcode,
 		Perf:      tmpItems.Perf,
-		Tables: FutureGoodDataTables{
+		Tables: future_good.FutureGoodDataTables{
 			Time:       table.Time,
 			Open:       table.Table.Open,
 			High:       table.Table.High,

+ 5 - 11
services/base_from_wind.go

@@ -5,20 +5,14 @@ import (
 	"errors"
 	"fmt"
 	"github.com/rdlucklib/rdluck_tools/http"
+	"hongze/hongze_edb_lib/models"
 	"hongze/hongze_edb_lib/services/alarm_msg"
 	"hongze/hongze_edb_lib/utils"
 	"time"
 )
 
-type EdbDataFromWind struct {
-	Close     map[string]float64 `json:"CLOSE"`
-	Dt        map[string]int64   `json:"DT"`
-	ErrorCode map[string]int64   `json:"ErrorCode"`
-	ErrMsg    string
-}
-
 // GetEdbDataFromWind 获取wind数据
-func GetEdbDataFromWind(edbCode, startDate, endDate string) (item *EdbDataFromWind, errorCode int, err error) {
+func GetEdbDataFromWind(edbCode, startDate, endDate string) (item *models.EdbDataFromWind, errorCode int, err error) {
 	windUrl, err := GetWindUrl(edbCode)
 	if err != nil {
 		errorCode = 421
@@ -36,7 +30,7 @@ func GetEdbDataFromWind(edbCode, startDate, endDate string) (item *EdbDataFromWi
 	if err != nil {
 		return
 	}
-	item = new(EdbDataFromWind)
+	item = new(models.EdbDataFromWind)
 	err = json.Unmarshal(body, &item)
 
 	//异常的话,需要邮件通知
@@ -80,7 +74,7 @@ func GetEdbDataFromWind(edbCode, startDate, endDate string) (item *EdbDataFromWi
 }
 
 // GetEdbDataFromWindUrl 通过url获取wind数据
-func GetEdbDataFromWindUrl(windUrl, edbCode, startDate, endDate string) (item *EdbDataFromWind, errorCode int, err error) {
+func GetEdbDataFromWindUrl(windUrl, edbCode, startDate, endDate string) (item *models.EdbDataFromWind, errorCode int, err error) {
 	if windUrl == `` {
 		return GetEdbDataFromWind(edbCode, startDate, endDate)
 	}
@@ -96,7 +90,7 @@ func GetEdbDataFromWindUrl(windUrl, edbCode, startDate, endDate string) (item *E
 	if err != nil {
 		return
 	}
-	item = new(EdbDataFromWind)
+	item = new(models.EdbDataFromWind)
 	err = json.Unmarshal(body, &item)
 
 	//异常的话,需要邮件通知

File diff suppressed because it is too large
+ 715 - 70
swagger/swagger.json


File diff suppressed because it is too large
+ 665 - 39
swagger/swagger.yml


+ 1 - 1
services/base_from_calculate.go → utils/base_from_calculate.go

@@ -1,4 +1,4 @@
-package services
+package utils
 
 import (
 	"strings"

Some files were not shown because too many files changed in this diff