Explorar o código

Merge branch 'ETA_1.6.4'

zwxi hai 1 ano
pai
achega
743e1ce99c
Modificáronse 6 ficheiros con 240 adicións e 4 borrados
  1. BIN=BIN
      eta_data_analysis
  2. 150 0
      services/commodity_coal.go
  3. 57 0
      services/mtjh_watch.go
  4. 15 0
      services/task.go
  5. 13 1
      utils/config.go
  6. 5 3
      utils/constants.go

BIN=BIN
eta_data_analysis


+ 150 - 0
services/commodity_coal_coastal.go → services/commodity_coal.go

@@ -483,3 +483,153 @@ func Inland(path string) (err error) {
 
 	return
 }
+
+func Mtjh(path string) (err error) {
+	defer func() {
+		if err != nil {
+			fmt.Println("RefreshDataFromCoalMtjh  Err:" + err.Error())
+			utils.FileLog.Info(fmt.Sprintf("RefreshDataFromCoalMtjh, Err: %s", err))
+		}
+	}()
+	//path = "/Users/xi/Desktop/煤炭江湖数据定制化服务——中国主流港口煤炭库存20231129.xlsx"
+
+	var xlFile *xlsx.File
+	exist, err := PathExists(path)
+	if err != nil {
+		fmt.Println(err)
+		return
+	}
+	if exist {
+		xlFile, err = xlsx.OpenFile(path)
+		if err != nil {
+			fmt.Println("OpenFile err:", err)
+			return
+		}
+	} else {
+		fmt.Println("Not Exist")
+		return
+	}
+
+	sheetDatas := make([]models.SheetData, 0)
+	for _, sheet := range xlFile.Sheets {
+		data := sheet
+		sheetData := models.SheetData{
+			Name:     data.Name,
+			MaxRow:   data.MaxRow,
+			MaxCol:   data.MaxCol,
+			Hidden:   data.Hidden,
+			Selected: data.Selected,
+		}
+		rows := make([]models.Row, 0)
+		for _, v := range data.Rows {
+			cells := make([]models.Cell, 0)
+			for _, cell := range v.Cells {
+				cells = append(cells, models.Cell{
+					Value: cell.String(),
+				})
+			}
+			row := models.Row{
+				Cells: cells,
+			}
+			rows = append(rows, row)
+		}
+		sheetData.Rows = rows
+		sheetDatas = append(sheetDatas, sheetData)
+	}
+
+	params := make(map[string]interface{})
+	params["SheetData"] = sheetDatas
+	result, e := PostEdbLib(params, utils.LIB_ROUTE_COAL_MINE_MTJH)
+	if e != nil {
+		b, _ := json.Marshal(params)
+		fmt.Println(e)
+		utils.FileLog.Info(fmt.Sprintf("PostEdbLib err: %s, params: %s", e.Error(), string(b)))
+		return
+	}
+	resp := new(models.BaseEdbLibResponse)
+	if e := json.Unmarshal(result, &resp); e != nil {
+		utils.FileLog.Info(fmt.Sprintf("json.Unmarshal err: %s", e))
+		return
+	}
+	if resp.Ret != 200 {
+		utils.FileLog.Info(fmt.Sprintf("Msg: %s, ErrMsg: %s", resp.Msg, resp.ErrMsg))
+		return
+	}
+
+	return
+}
+
+func Firm(path string) (err error)  {
+	defer func() {
+		if err != nil {
+			fmt.Println("RefreshDataFromCoalFirm  Err:" + err.Error())
+			utils.FileLog.Info(fmt.Sprintf("RefreshDataFromCoalFirm, Err: %s", err))
+		}
+	}()
+	//path = "/Users/xi/Desktop/煤炭江湖数据定制化服务——中国主流港口煤炭库存20231129.xlsx"
+
+	var xlFile *xlsx.File
+	exist, err := PathExists(path)
+	if err != nil {
+		fmt.Println(err)
+		return
+	}
+	if exist {
+		xlFile, err = xlsx.OpenFile(path)
+		if err != nil {
+			fmt.Println("OpenFile err:", err)
+			return
+		}
+	} else {
+		fmt.Println("Not Exist")
+		return
+	}
+
+	sheetDatas := make([]models.SheetData, 0)
+	for _, sheet := range xlFile.Sheets {
+		data := sheet
+		sheetData := models.SheetData{
+			Name:     data.Name,
+			MaxRow:   data.MaxRow,
+			MaxCol:   data.MaxCol,
+			Hidden:   data.Hidden,
+			Selected: data.Selected,
+		}
+		rows := make([]models.Row, 0)
+		for _, v := range data.Rows {
+			cells := make([]models.Cell, 0)
+			for _, cell := range v.Cells {
+				cells = append(cells, models.Cell{
+					Value: cell.String(),
+				})
+			}
+			row := models.Row{
+				Cells: cells,
+			}
+			rows = append(rows, row)
+		}
+		sheetData.Rows = rows
+		sheetDatas = append(sheetDatas, sheetData)
+	}
+
+	params := make(map[string]interface{})
+	params["SheetData"] = sheetDatas
+	result, e := PostEdbLib(params, utils.LIB_ROUTE_COAL_MINE_FIRM)
+	if e != nil {
+		b, _ := json.Marshal(params)
+		fmt.Println(e)
+		utils.FileLog.Info(fmt.Sprintf("PostEdbLib err: %s, params: %s", e.Error(), string(b)))
+		return
+	}
+	resp := new(models.BaseEdbLibResponse)
+	if e := json.Unmarshal(result, &resp); e != nil {
+		utils.FileLog.Info(fmt.Sprintf("json.Unmarshal err: %s", e))
+		return
+	}
+	if resp.Ret != 200 {
+		utils.FileLog.Info(fmt.Sprintf("Msg: %s, ErrMsg: %s", resp.Msg, resp.ErrMsg))
+		return
+	}
+
+	return
+}

+ 57 - 0
services/mtjh_watch.go

@@ -0,0 +1,57 @@
+package services
+
+import (
+	"eta/eta_data_analysis/utils"
+	"fmt"
+	"github.com/patrickmn/go-cache"
+	"io/fs"
+	"os"
+	"path/filepath"
+	"strings"
+	"time"
+)
+
+func mtjhWatch() {
+	fmt.Println("mtjhWatch start")
+	var err error
+	defer func() {
+		if err != nil {
+			fmt.Println("mtjhWatch Err:" + err.Error())
+		}
+	}()
+	var cacheClient *cache.Cache
+	if cacheClient == nil {
+		cacheClient = cache.New(365*24*time.Hour, 365*24*time.Hour)
+	}
+	err = filepath.Walk(utils.MtjhFilePath, func(path string, info fs.FileInfo, err error) error {
+		if err != nil {
+			return err
+		}
+		if !info.IsDir() {
+			fileInfo, err := os.Stat(path)
+			if err != nil {
+				fmt.Println("os.Stat:", err.Error())
+			}
+			winFileAttr := fileInfo.Sys().(*syscall.Win32FileAttributeData)
+			modifyTimeStr := utils.SecondToTime(winFileAttr.LastWriteTime.Nanoseconds() / 1e9).Format(utils.FormatDateTime)
+
+			existModifyTime, ok := cacheClient.Get(path)
+			if ok {
+				existModifyTimeStr := existModifyTime.(string)
+				if existModifyTimeStr != modifyTimeStr {
+					if strings.Contains(path, "煤炭江湖") {
+						err = Mtjh(path)
+					}
+				}
+			} else {
+				if strings.Contains(path, "煤炭江湖") {
+					err = Mtjh(path)
+				}
+			}
+			cacheClient.Delete(path)
+			cacheClient.Set(path, modifyTimeStr, 24*time.Hour)
+		}
+		return nil
+	})
+}
+

+ 15 - 0
services/task.go

@@ -50,6 +50,17 @@ func Task() {
 		task.AddTask("汾渭数据指标文件检测", fenWeiReadWatchIndexFile)
 	}
 
+	if utils.MtjhOpen == "1" {
+		c := cron.New(cron.WithSeconds())
+		//每2分钟检测一次指标文件是否更新
+		_, err := c.AddFunc("0 */2 * * * *", mtjhWatch)
+		if err != nil {
+			fmt.Println("watch.mtjhWatch err" + err.Error())
+			utils.FileLog.Info("watch.mtjhWatch err" + err.Error())
+		}
+		c.Start()
+	}
+
 	task.StartTask()
 
 	fmt.Println("task end")
@@ -95,6 +106,8 @@ func ReadWatchIndexFile() {
 						err = CoastalHistory(path)
 						time.Sleep(time.Second * 10)
 						err = InlandHistory(path)
+					} else if strings.Contains(path, "分企业煤炭产量旬度数据") {
+						err = Firm(path)
 					}
 				}
 			} else {
@@ -110,6 +123,8 @@ func ReadWatchIndexFile() {
 					err = CoastalHistory(path)
 					time.Sleep(time.Second * 10)
 					err = InlandHistory(path)
+				} else if strings.Contains(path, "分企业煤炭产量旬度数据") {
+					err = Firm(path)
 				}
 			}
 			cacheClient.Delete(path)

+ 13 - 1
utils/config.go

@@ -45,7 +45,7 @@ var (
 // 中国煤炭网
 var (
 	CoalMineFilePath string //excel文件地址
-	CoalMineOpen     string //是否配置涌益生猪数据源,1已配置
+	CoalMineOpen     string //是否配置中国煤炭网数据源,1已配置
 )
 
 // 汾渭煤炭
@@ -55,6 +55,12 @@ var (
 	FenweiOpen       string // 是否配置汾渭数据源
 )
 
+// 煤炭江湖
+var (
+	MtjhFilePath string //excel文件地址
+	MtjhOpen string //是否配置煤炭江湖数据源,1已配置
+)
+
 var TerminalCode string
 
 func init() {
@@ -113,6 +119,12 @@ func init() {
 		FenweiOldFileDir = config["fenwei_old_file_dir"]
 	}
 
+	//煤炭江湖文件夹配置
+	{
+		MtjhFilePath = config["mtjh_file_path"]
+		MtjhOpen = config["mtjh_open"]
+	}
+
 	TerminalCode = config["terminal_code"]
 }
 

+ 5 - 3
utils/constants.go

@@ -234,10 +234,12 @@ const (
 	LIB_ROUTE_COAL_MINE_JSM_HISTORY     = "/coal_mine/jsm/history"     //jsm三省煤炭网历史数据处理excel数据并入库 数据地址
 	LIB_ROUTE_COAL_MINE_COASTAL_HISTORY = "/coal_mine/coastal/history" //沿海煤炭网历史数据处理excel数据并入库 数据地址
 	LIB_ROUTE_COAL_MINE_INLAND_HISTORY  = "/coal_mine/inland/history"  //内陆三省煤炭网历史数据处理excel数据并入库 数据地址
-	LIB_ROUTE_COAL_MINE_JSM             = "/coal_mine/jsm"             //jsm三省煤炭网历史数据处理excel数据并入库 数据地址
-	LIB_ROUTE_COAL_MINE_COASTAL         = "/coal_mine/coastal"         //沿海煤炭网历史数据处理excel数据并入库 数据地址
-	LIB_ROUTE_COAL_MINE_INLAND          = "/coal_mine/inland"          //内陆三省煤炭网历史数据处理excel数据并入库 数据地址
+	LIB_ROUTE_COAL_MINE_JSM             = "/coal_mine/jsm"             //jsm三省煤炭网数据处理excel数据并入库 数据地址
+	LIB_ROUTE_COAL_MINE_COASTAL         = "/coal_mine/coastal"         //沿海煤炭网数据处理excel数据并入库 数据地址
+	LIB_ROUTE_COAL_MINE_INLAND          = "/coal_mine/inland"          //内陆三省煤炭网数据处理excel数据并入库 数据地址
+	LIB_ROUTE_COAL_MINE_FIRM            = "/coal_mine/firm"            //分公司旬度煤炭网数据处理excel数据并入库 数据地址
 	LIB_ROUTE_FENWEI_HANDLE             = "fenwei/handle/excel_data"   // 汾渭煤炭excel数据入库接口地址
 	LIB_ROUTE_FENWEI_CLASSIFY           = "fenwei/classify_tree"       // 汾渭煤炭分类接口地址
 	LIB_ROUTE_FENWEI_INDEX_LIST         = "fenwei/base_index_list"     // 汾渭煤炭指标列表接口地址
+	LIB_ROUTE_COAL_MINE_MTJH            = "/mtjh/data"                 //煤炭江湖数据处理excel数据并入库 数据地址
 )