Переглянути джерело

新增ETA数据同步刷新

longyu 2 роки тому
батько
коміт
0e32158105
3 змінених файлів з 195 додано та 0 видалено
  1. 100 0
      models/edb_info.go
  2. 5 0
      utils/constants.go
  3. 90 0
      watch/watch.go

+ 100 - 0
models/edb_info.go

@@ -0,0 +1,100 @@
+package models
+
+import (
+	"hongze/mysteel_watch/global"
+	"time"
+	"context"
+)
+
+type EdbInfo struct {
+	EdbInfoId        int    `orm:"column(edb_info_id);pk"`
+	SourceName       string `description:"来源名称"`
+	Source           int    `description:"来源id"`
+	EdbCode          string `description:"指标编码"`
+	EdbName          string `description:"指标名称"`
+	EdbNameSource    string `description:"指标名称来源"`
+	Frequency        string `description:"频率"`
+	Unit             string `description:"单位"`
+	StartDate        string `description:"起始日期"`
+	EndDate          string `description:"终止日期"`
+	ClassifyId       int    `description:"分类id"`
+	SysUserId        int
+	SysUserRealName  string
+	UniqueCode       string `description:"指标唯一编码"`
+	CreateTime       time.Time
+	ModifyTime       time.Time
+	MinValue         float64 `description:"指标最小值"`
+	MaxValue         float64 `description:"指标最大值"`
+	CalculateFormula string  `description:"计算公式"`
+	EdbType          int     `description:"指标类型:1:基础指标,2:计算指标"`
+	Sort             int     `description:"排序字段"`
+	MoveType         int     `description:"移动方式:1:领先(默认),2:滞后"`
+	MoveFrequency    string  `description:"移动频度"`
+	NoUpdate         int8    `description:"是否停止更新,0:继续更新;1:停止更新"`
+	ServerUrl        string  `description:"服务器地址"`
+
+	EdbInfoType int     `description:"指标类型,0:普通指标,1:预测指标"`
+	EdbNameEn   string  `description:"英文指标名称"`
+	UnitEn      string  `description:"英文单位"`
+	LatestDate  string  `description:"数据最新日期"`
+	LatestValue float64 `description:"数据最新值"`
+	ChartImage  string  `description:"图表图片"`
+}
+
+func (d *EdbInfo) GetEdbInfoItem(runMod, indexCode string) (item *EdbInfo, err error) {
+	if runMod == "release" {
+		err = global.MYSQL["hzdata"].WithContext(context.TODO()).Model(d).
+			Where("index_code = ?", indexCode).First(&item).Error
+		return
+	} else {
+		err = global.DEFAULT_MYSQL.WithContext(context.TODO()).Model(d).
+			Where("index_code = ?", indexCode).First(&item).Error
+		return
+	}
+}
+
+
+type EdbDataMysteelChemical struct {
+	EdbDataId     int `orm:"column(edb_data_id);pk"`
+	EdbInfoId     int
+	EdbCode       string
+	DataTime      string
+	Value         string
+	CreateTime    time.Time
+	ModifyTime    time.Time
+	DataTimestamp int64
+}
+
+func (d *EdbDataMysteelChemical) GetEdbInfoDataList(runMod string, indexCode string) (item []*EdbDataMysteelChemical, err error) {
+	if runMod == "release" {
+		err = global.MYSQL["hzdata"].WithContext(context.TODO()).Model(d).
+			Where("index_code = ?", indexCode).Find(&item).Error
+		return
+	} else {
+		err = global.DEFAULT_MYSQL.WithContext(context.TODO()).Model(d).
+			Where("index_code = ?", indexCode).Find(&item).Error
+		return
+	}
+}
+
+// 新增
+func (r *EdbDataMysteelChemical) Add(runMod string, list []EdbDataMysteelChemical) (err error) {
+	if runMod == "release" {
+		err = global.MYSQL["hzdata"].Create(list).Error
+		return
+	} else {
+		err = global.DEFAULT_MYSQL.Create(list).Error
+		return
+	}
+}
+
+// 修改
+func (r *EdbDataMysteelChemical) Update(runMod string, updateCols []string) (err error) {
+	if runMod == "release" {
+		err = global.MYSQL["hzdata"].Model(r).Where("edb_data_id=?", r.EdbDataId).Select(updateCols).Updates(r).Error
+		return
+	} else {
+		err = global.DEFAULT_MYSQL.Model(r).Where("edb_data_id=?", r.EdbDataId).Select(updateCols).Updates(r).Error
+		return
+	}
+}

+ 5 - 0
utils/constants.go

@@ -33,3 +33,8 @@ const (
 	REFRESH_INDEX = "REFRESH_INDEX_LIST"
 	REFRESH_INDEX_CODE = "REFRESH_INDEX_CODE_"
 )
+
+var (
+	APP_EDB_LIB_NAME_EN = "hongze_edb_lib"
+	EDB_LIB_Md5_KEY     = "GuRaB6dY1bXOJcwG"
+)

+ 90 - 0
watch/watch.go

@@ -1,11 +1,15 @@
 package watch
 
 import (
+	"encoding/json"
 	"fmt"
 	"hongze/mysteel_watch/global"
 	"hongze/mysteel_watch/models/index"
+	"hongze/mysteel_watch/models"
 	"hongze/mysteel_watch/utils"
+	"io/ioutil"
 	"log"
+	"net/http"
 	"os"
 	"path/filepath"
 	"strings"
@@ -594,6 +598,92 @@ func mysteelIndexHandle(runMode, indexName, indexCode, unit, source, frequency,
 			fmt.Println("dataObj.Add() Err:" + err.Error())
 		}
 	}
+
+	go syncEdbDataMysteelChemical(runMode, indexCode)
+}
+
+func syncEdbDataMysteelChemical(runMode, indexCode string) {
+	indexObj := new(models.EdbInfo)
+	var isAdd int
+	item, err := indexObj.GetEdbInfoItem(runMode, indexCode)
+	if err != nil {
+		if err.Error() == "record not found" {
+			isAdd = 1
+		} else {
+			isAdd = -1
+			fmt.Println("GetEdbInfoItem Err:" + err.Error())
+			return
+		}
+	}
+	if item != nil && item.EdbInfoId > 0 {
+		fmt.Println("item:", item)
+		isAdd = 2
+	} else {
+		isAdd = 1 //
+	}
+
+	if isAdd == 1 { //新增
+		return
+	}
+
+	param := make(map[string]interface{})
+	param["EdbCode"] = indexCode
+	param["EdbInfoId"] = item.EdbInfoId
+	param["StartDate"] = item.EndDate
+	postRefreshEdbData(param)
+}
+
+type BaseResponse struct {
+	Ret         int
+	Msg         string
+	ErrMsg      string
+	ErrCode     string
+	Data        interface{}
+	Success     bool `description:"true 执行成功,false 执行失败"`
+	IsSendEmail bool `json:"-" description:"true 发送邮件,false 不发送邮件"`
+	IsAddLog    bool `json:"-" description:"true 新增操作日志,false 不新增操作日志" `
+}
+
+// postRefreshEdbData 刷新指标数据
+func postRefreshEdbData(param map[string]interface{}) (resp *BaseResponse, err error) {
+	urlStr := "mysteel_chemical/refresh"
+	EDB_LIB_URL := "http://47.102.213.75:8300/edbapi/"
+
+	postUrl := EDB_LIB_URL + urlStr
+	postData, err := json.Marshal(param)
+	if err != nil {
+		return
+	}
+	result, err := HttpPost(postUrl, string(postData), "application/json")
+	if err != nil {
+		return
+	}
+	global.LOG.Info(" Refresh Result: " + string(result))
+	err = json.Unmarshal(result, &resp)
+	if err != nil {
+		return
+	}
+	return resp, nil
+}
+
+func HttpPost(url, postData string, params ...string) ([]byte, error) {
+	body := ioutil.NopCloser(strings.NewReader(postData))
+	client := &http.Client{}
+	req, err := http.NewRequest("POST", url, body)
+	if err != nil {
+		return nil, err
+	}
+	contentType := "application/x-www-form-urlencoded;charset=utf-8"
+	if len(params) > 0 && params[0] != "" {
+		contentType = params[0]
+	}
+	req.Header.Set("Content-Type", contentType)
+	req.Header.Set("authorization", utils.MD5(utils.APP_EDB_LIB_NAME_EN+utils.EDB_LIB_Md5_KEY))
+	resp, err := client.Do(req)
+	defer resp.Body.Close()
+	b, err := ioutil.ReadAll(resp.Body)
+	fmt.Println("HttpPost:" + string(b))
+	return b, err
 }
 
 /*