Browse Source

fix:新增excel刷新后,同步去刷新ETA指标库

Roc 1 year ago
parent
commit
a695ea376f
7 changed files with 125 additions and 68 deletions
  1. 1 0
      init_serve/task.go
  2. 4 54
      models/edb_info.go
  3. 2 2
      services/api_tool.go
  4. 5 2
      services/index.go
  5. 4 5
      services/index_queue.go
  6. 104 0
      services/sync_edb_lib.go
  7. 5 5
      watch/watch.go

+ 1 - 0
init_serve/task.go

@@ -26,6 +26,7 @@ func InitTask() {
 	//
 	// 每天下午5点开始刷新excel表格
 	_, err := c.AddFunc("0 0 17 * * *", services.RefreshExcel)
+	//_, err := c.AddFunc("0 01 15 * * *", services.RefreshExcel)
 	if err != nil {
 		global.LOG.Info("RefreshExcel err" + err.Error())
 	}

+ 4 - 54
models/edb_info.go

@@ -41,59 +41,9 @@ type EdbInfo struct {
 	ChartImage  string  `description:"图表图片"`
 }
 
-func (d *EdbInfo) GetEdbInfoItem(runMod, indexCode string) (item *EdbInfo, err error) {
-	if runMod == "release" {
-		err = global.MYSQL["hzdata"].WithContext(context.TODO()).Table("edb_info").
-			Where("edb_code = ?", indexCode).First(&item).Error
-		return
-	} else {
-		err = global.DEFAULT_MYSQL.WithContext(context.TODO()).Table("edb_info").
-			Where("edb_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 (d *EdbInfo) GetEdbInfoItem(indexCode string) (item *EdbInfo, err error) {
+	err = global.MYSQL["hzdata"].WithContext(context.TODO()).Table("edb_info").
+		Where("edb_code = ?", indexCode).First(&item).Error
 
-// 修改
-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
-	}
+	return
 }

+ 2 - 2
services/api_tool.go

@@ -16,11 +16,11 @@ func InvokeRefreshServer(filePath string) {
 	var refreshUrl string
 	//filePathStr:=url.PathEscape(filePath)
 	refreshUrl = RefreshUrl + "?FilePath=" + url.QueryEscape(filePath)
-	fmt.Println("红桃3刷新 URL:" + refreshUrl)
+	fmt.Println("红桃3刷新,文件路径:", filePath, ";刷新URL:"+refreshUrl)
 	body, err := http.Get(refreshUrl)
 	if err != nil {
 		fmt.Println("红桃3刷新 Err:" + err.Error())
 		return
 	}
-	fmt.Println("红桃3刷新 Result:" + string(body))
+	fmt.Println("红桃3刷新,文件路径:", filePath, " ,Result:"+string(body))
 }

+ 5 - 2
services/index.go

@@ -599,7 +599,7 @@ func HandleData(dataMap map[string]map[string]string) {
 
 	sciIndexDataModel := new(index.BaseFromSciData)
 	for indexCode, data := range dataMap {
-		fmt.Println(indexCode)
+		//fmt.Println(indexCode)
 		indexInfo, ok := allIndexMap[indexCode]
 		if !ok {
 			fmt.Println("找不到该指标:", indexCode)
@@ -646,7 +646,7 @@ func HandleData(dataMap map[string]map[string]string) {
 				// 更新数据
 				existValue := sciData.Value
 				if existValue != currVal {
-					fmt.Println("existValue:", existValue, ";====;currVal:", currVal)
+					//fmt.Println("existValue:", existValue, ";====;currVal:", currVal)
 					sciData.Value = currVal
 					sciData.ModifyTime = time.Now()
 					// 如果是已经入库了数据,那么就更新,否则只是单纯更改内存数据,而不去更新数据库
@@ -668,5 +668,8 @@ func HandleData(dataMap map[string]map[string]string) {
 		}
 		indexInfo.ModifyTime = time.Now()
 		indexInfo.Update([]string{"ModifyTime"})
+
+		// 同步刷新ETA图库红桃3的指标
+		SyncEdbDataSci(indexInfo)
 	}
 }

+ 4 - 5
services/index_queue.go

@@ -21,10 +21,10 @@ func HandleFileUpdate() {
 			// 移除多余的双引号
 			updateFilePath = strings.Replace(updateFilePath, `"`, "", -1)
 			fileExt := filepath.Ext(updateFilePath)
-			fmt.Println("fileExt:", fileExt)
+			//fmt.Println("fileExt:", fileExt)
 
 			if fileExt != ".xlsx" && fileExt != ".xls" {
-				fmt.Println("不是excel文件")
+				//fmt.Println("不是excel文件")
 				return
 			}
 			// 读取excel内容并操作入库
@@ -42,16 +42,15 @@ func HandleRefreshExcel() {
 		}
 	}()
 	for {
-		// TODO 调用python的方法
 		global.Rc.Brpop(utils.REFRESH_HONGTAO_EXCEL, func(b []byte) {
 			updateFilePath := string(b)
 			// 移除多余的双引号
 			updateFilePath = strings.Replace(updateFilePath, `"`, "", -1)
 			fileExt := filepath.Ext(updateFilePath)
-			fmt.Println("fileExt:", fileExt)
+			//fmt.Println("fileExt:", fileExt)
 
 			if fileExt != ".xlsx" && fileExt != ".xls" {
-				fmt.Println("不是excel文件")
+				//fmt.Println("不是excel文件")
 				return
 			}
 			// 读取excel内容并操作入库

+ 104 - 0
services/sync_edb_lib.go

@@ -0,0 +1,104 @@
+package services
+
+import (
+	"encoding/json"
+	"fmt"
+	"hongze/hongtao3_watch/global"
+	"hongze/hongtao3_watch/models"
+	"hongze/hongtao3_watch/models/index"
+	"hongze/hongtao3_watch/utils"
+	"io/ioutil"
+	"net/http"
+	"strings"
+)
+
+// SyncEdbDataSci 同步红桃3的指标到ETA库
+func SyncEdbDataSci(baseFromSciIndex *index.BaseFromSciIndex) {
+	indexObj := new(models.EdbInfo)
+	var isAdd int
+	item, err := indexObj.GetEdbInfoItem(baseFromSciIndex.IndexCode)
+	if err != nil {
+		if err == utils.ErrNoRow {
+			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"] = baseFromSciIndex.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 := "sci/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
+	}
+	if result != nil {
+		global.LOG.Info(" Refresh Result: " + string(result))
+		err = json.Unmarshal(result, &resp)
+		if err != nil {
+			return
+		}
+		return resp, nil
+	}
+	return nil, err
+}
+
+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)
+	if resp != nil {
+		defer resp.Body.Close()
+		b, err := ioutil.ReadAll(resp.Body)
+		fmt.Println("HttpPost:" + string(b))
+		return b, err
+	}
+	return nil, err
+}

+ 5 - 5
watch/watch.go

@@ -56,7 +56,7 @@ func ListenFolderNew() {
 				}
 
 				if ok && event.Op&fsnotify.Create == fsnotify.Create {
-					fmt.Println("新增文件 : ", event.Name)
+					//fmt.Println("新增文件 : ", event.Name)
 
 					// 判断是否属于文件夹,如果是文件夹,那么就加上该文件夹的监听权限
 					fi, err := os.Stat(event.Name)
@@ -72,13 +72,13 @@ func ListenFolderNew() {
 
 				}
 				if ok && event.Op&fsnotify.Write == fsnotify.Write {
-					fmt.Println("写入文件 : ", event.Name)
+					//fmt.Println("写入文件 : ", event.Name)
 					// 读取文件
 
 					cache.AddIndexHandleExcel(event.Name)
 				}
 				if ok && event.Op&fsnotify.Remove == fsnotify.Remove {
-					fmt.Println("删除文件 : ", event.Name)
+					//fmt.Println("删除文件 : ", event.Name)
 					//如果删除文件是目录,则移除监控
 					fi, err := os.Stat(event.Name)
 					if err == nil && fi.IsDir() {
@@ -87,13 +87,13 @@ func ListenFolderNew() {
 					}
 				}
 				if ok && event.Op&fsnotify.Rename == fsnotify.Rename {
-					fmt.Println("重命名文件 : ", event.Name)
+					//fmt.Println("重命名文件 : ", event.Name)
 					//如果重命名文件是目录,则移除监控
 					//注意这里无法使用os.Stat来判断是否是目录了
 					//因为重命名后,go已经无法找到原文件来获取信息了
 					//所以这里就简单粗爆的直接remove好了
 					_ = watcher.Remove(event.Name)
-					fmt.Println("更改文件夹名称,删除监控 : ", event.Name)
+					//fmt.Println("更改文件夹名称,删除监控 : ", event.Name)
 				}
 				if ok && event.Op&fsnotify.Chmod == fsnotify.Chmod {
 					fmt.Println("修改权限 : ", event.Name)