Browse Source

新增生产运行环境

longyu 2 năm trước cách đây
mục cha
commit
b187e20f2f
5 tập tin đã thay đổi với 222 bổ sung184 xóa
  1. 19 14
      controller/index/index.go
  2. 1 1
      global/global.go
  3. 29 14
      models/index/index.go
  4. 26 10
      models/index/index_data.go
  5. 147 145
      watch/watch.go

+ 19 - 14
controller/index/index.go

@@ -4,12 +4,12 @@ import (
 	"encoding/json"
 	"fmt"
 	"github.com/gin-gonic/gin"
+	"github.com/go-playground/validator/v10"
+	"github.com/xuri/excelize/v2"
 	"hongze/mysteel_watch/controller/resp"
 	"hongze/mysteel_watch/global"
 	"hongze/mysteel_watch/models/index"
 	"hongze/mysteel_watch/utils"
-	"hongze/mysteel_watch/watch"
-	"time"
 )
 
 type IndexController struct {
@@ -34,13 +34,15 @@ func (s *IndexController) Create(c *gin.Context) {
 		return
 	}
 	fmt.Println("indexCode:" + req.IndexCode)
-
+	if req.RunMode == "" {
+		req.RunMode = "debug"
+	}
 	//fileName := req.IndexName + "_" + req.IndexCode + ".xlsx"
 	var fileName string
 	if req.UpdateWeek != "" {
-		fileName = req.IndexCode + "_" + req.UpdateWeek + ".xlsx" //保存的文件名称
+		fileName = req.IndexCode + "_" + req.UpdateWeek + "_" + req.RunMode + ".xlsx" //保存的文件名称
 	} else {
-		fileName = req.IndexCode + ".xlsx" //保存的文件名称
+		fileName = req.IndexCode + "_" + req.RunMode + ".xlsx" //保存的文件名称
 	}
 	filePath := utils.IndexSaveDir + fileName
 
@@ -54,16 +56,20 @@ func (s *IndexController) Create(c *gin.Context) {
 		templateFile.Close()
 	}()
 
-	timeTag := time.Now().UnixNano() / 1e6
-	timeTagStr := fmt.Sprintf("%d", timeTag)
+	//timeTag := time.Now().UnixNano() / 1e6
+	//timeTagStr := fmt.Sprintf("%d", timeTag)
+
 	//UpdateMode:1:增量更新,0:全量更新
-	commentStr := `"BlankValue":"0","CanMark":true,"ChartLineType":"0","DateBlock":0,"DateBlockCount":1,"DateFormat":0,"DateTimeTag":` + timeTagStr + `,"EndDate":"",
-                   "ExportType":0,"HasDescription":true,"HasEmptyRows":false,"HasFrequency":true,"HasIndexID":true,"HasLastDate":true,"HasSourceName":true,"HasTimeInterval":true,
-                   "HasUnit":true,"HasUpdateDate":true,"IsCreateChart":false,"IsDataSort":true,"IsNewSheet":false,"IsNewWorkbook":false,
-                   "Models":[{"DataFormat":0,"DataStartDate":"2011-03-25","DefineName":"","DefineUnit":"","DisplayIndexCode":"` + req.IndexCode + `",
-                   "IndexCode":"` + req.IndexCode + `","IndexFormula":"` + req.IndexCode + `","PointValue":0,"UnionStart":""}],"Position":"A1","RangeData":"A2:B2791",
-                   "ShowBlankLines":false,"StartDate":"","Transpose":false,"UpdateMode":1,"lookModel":{"IsLast":false,"LookValue":0,"lookType":0},"ver":3}`
+	//commentStr := `"BlankValue":"0","CanMark":true,"ChartLineType":"0","DateBlock":0,"DateBlockCount":1,"DateFormat":0,"DateTimeTag":` + timeTagStr + `,"EndDate":"",
+	//               "ExportType":0,"HasDescription":true,"HasEmptyRows":false,"HasFrequency":true,"HasIndexID":true,"HasLastDate":true,"HasSourceName":true,"HasTimeInterval":true,
+	//               "HasUnit":true,"HasUpdateDate":true,"IsCreateChart":false,"IsDataSort":true,"IsNewSheet":false,"IsNewWorkbook":false,
+	//               "Models":[{"DataFormat":0,"DataStartDate":"2011-03-25","DefineName":"","DefineUnit":"","DisplayIndexCode":"` + req.IndexCode + `",
+	//               "IndexCode":"` + req.IndexCode + `","IndexFormula":"` + req.IndexCode + `","PointValue":0,"UnionStart":""}],"Position":"A1","RangeData":"A2:B2791",
+	//               "ShowBlankLines":false,"StartDate":"","Transpose":false,"UpdateMode":1,"lookModel":{"IsLast":false,"LookValue":0,"lookType":0},"ver":3}`
 
+	startDate := "1990-01-01"
+	commentStr := `"BlankValue":"0","CanMark":true,"ChartLineType":"0","DateBlock":0,"DateBlockCount":1,"DateFormat":0,"DateTimeTag":"","EndDate":"","ExportType":0,"HasDescription":true,"HasEmptyRows":false,"HasFrequency":true,"HasIndexID":true,"HasLastDate":true,"HasSourceName":true,"HasTimeInterval":true,"HasUnit":true,"HasUpdateDate":true,"IsCreateChart":false,"IsDataSort":true,"IsNewSheet":false,"IsNewWorkbook":false,"Models":[{"DataFormat":0,"DataStartDate":"` + startDate + `","DefineName":"","DefineUnit":"","DisplayIndexCode":"` + req.IndexCode + `","IndexCode":"` + req.IndexCode + `","IndexFormula":"` + req.IndexCode + `","PointValue":0,"UnionStart":""}],"Position":"A1","RangeData":"A2:B280","ShowBlankLines":false,"StartDate":"","Transpose":false,"UpdateMode":0,"lookModel":{"IsLast":false,"LookValue":0,"lookType":0},"ver":3}
+`
 	commentMap := make(map[string]interface{})
 	commentMap["author"] = "{"
 	commentMap["text"] = commentStr
@@ -88,7 +94,6 @@ func (s *IndexController) Create(c *gin.Context) {
 }
 
 func (s *IndexController) Test(c *gin.Context) {
-	watch.TestWatch()
 	resp.OkData("检测成功", 1, c)
 	return
 }

+ 1 - 1
global/global.go

@@ -24,7 +24,7 @@ var (
 )
 
 const ConfigFile = "config/config.yaml"                               //本地(测试)环境下的配置文件地址
-const ProConfigFile = "/home/code/config/mysteel_watch/config/config.yaml" //生产环境下的配置文件地址
+const ProConfigFile = "config/config.yaml" //生产环境下的配置文件地址
 
 func init() {
 	v := viper.New()

+ 29 - 14
models/index/index.go

@@ -2,7 +2,6 @@ package index
 
 import (
 	"context"
-	"fmt"
 	"hongze/mysteel_watch/global"
 	"hongze/mysteel_watch/models/base"
 )
@@ -30,26 +29,42 @@ func (r *BaseFromMysteelChemicalIndex) TableName() string {
 }
 
 // 新增
-func (r *BaseFromMysteelChemicalIndex) Add() (err error) {
-	err = global.DEFAULT_MYSQL.Create(r).Error
-	fmt.Println("主键")
-	fmt.Println(r.BaseFromMysteelChemicalIndexId)
-	return
+func (r *BaseFromMysteelChemicalIndex) Add(runMod string) (err error) {
+	if runMod == "release" {
+		err = global.MYSQL["hzdata"].Create(r).Error
+		return
+	} else {
+		err = global.DEFAULT_MYSQL.Create(r).Error
+		return
+	}
 }
 
 // 修改
-func (r *BaseFromMysteelChemicalIndex) Update(updateCols []string) (err error) {
-	err = global.DEFAULT_MYSQL.Model(r).Select(updateCols).Updates(r).Error
-	return
+func (r *BaseFromMysteelChemicalIndex) Update(runMod string, updateCols []string) (err error) {
+	if runMod == "release" {
+		err = global.MYSQL["hzdata"].Model(r).Select(updateCols).Updates(r).Error
+		return
+	} else {
+		err = global.DEFAULT_MYSQL.Model(r).Select(updateCols).Updates(r).Error
+		return
+	}
+
 }
 
 type IndexAddReq struct {
 	IndexCode  string `json:"IndexCode" binding:"required"`    //指标编码
-	UpdateWeek string `json:"UpdateWeek"` //更新周期
+	UpdateWeek string `json:"UpdateWeek"`                      //更新周期
+	RunMode    string `description:"运行环境:debug:测试(默认),release:生产" json:"UpdateWeek"` //更新周期
 }
 
-func (d *BaseFromMysteelChemicalIndex) GetIndexItem(indexCode string) (item *BaseFromMysteelChemicalIndex, err error) {
-	err = global.DEFAULT_MYSQL.WithContext(context.TODO()).Model(d).
-		Where("index_code = ?", indexCode).First(&item).Error
-	return
+func (d *BaseFromMysteelChemicalIndex) GetIndexItem(runMod, indexCode string) (item *BaseFromMysteelChemicalIndex, 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
+	}
 }

+ 26 - 10
models/index/index_data.go

@@ -23,19 +23,35 @@ func (r *BaseFromMysteelChemicalData) TableName() string {
 }
 
 // 新增
-func (r *BaseFromMysteelChemicalData) Add(list []BaseFromMysteelChemicalData) (err error) {
-	err = global.DEFAULT_MYSQL.Create(list).Error
-	return
+func (r *BaseFromMysteelChemicalData) Add(runMod string,list []BaseFromMysteelChemicalData) (err error) {
+	if runMod=="release" {
+		err = global.MYSQL["hzdata"].Create(list).Error
+		return
+	}else{
+		err = global.DEFAULT_MYSQL.Create(list).Error
+		return
+	}
 }
 
 // 修改
-func (r *BaseFromMysteelChemicalData) Update(updateCols []string) (err error) {
-	err = global.DEFAULT_MYSQL.Model(r).Select(updateCols).Updates(r).Error
-	return
+func (r *BaseFromMysteelChemicalData) Update(runMod string,updateCols []string) (err error) {
+	if runMod=="release" {
+		err = global.MYSQL["hzdata"].Model(r).Select(updateCols).Updates(r).Error
+		return
+	}else{
+		err = global.DEFAULT_MYSQL.Model(r).Select(updateCols).Updates(r).Error
+		return
+	}
 }
 
-func (d *BaseFromMysteelChemicalData) GetIndexDataList(indexCode string) (item []*BaseFromMysteelChemicalData, err error) {
-	err = global.DEFAULT_MYSQL.WithContext(context.TODO()).Model(d).
-		Where("index_code = ?", indexCode).Find(&item).Error
-	return
+func (d *BaseFromMysteelChemicalData) GetIndexDataList(runMod string,indexCode string) (item []*BaseFromMysteelChemicalData, 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
+	}
 }

+ 147 - 145
watch/watch.go

@@ -49,7 +49,7 @@ func ListenFolderNew() {
 //检测指标文件
 func WatchIndexFile(filePath string) {
 	fmt.Println("filePath:", filePath)
-	time.Sleep(2 * time.Second)
+	time.Sleep(3 * time.Second)
 	//读取文件内容
 	f, err := excelize.OpenFile(filePath)
 	if err != nil {
@@ -62,171 +62,173 @@ func WatchIndexFile(filePath string) {
 			return
 		}
 	}()
+	var runMode string
+	if strings.Contains(filePath, "debug") {
+		runMode = "debug"
+	} else {
+		runMode = "release"
+	}
+	go func() {
+		sheetList := f.GetSheetList()
+		for _, sv := range sheetList {
 
-	sheetList := f.GetSheetList()
-	for _, sv := range sheetList {
-
-		var indexName, indexCode, unit, source, frequency, startDate, endDate, describe string
-		var indexId int64
-		rows, err := f.GetRows(sv)
-		if err != nil {
-			fmt.Println("f.GetRows:err:" + err.Error())
-			return
-		}
-
-		indexObj := new(index.BaseFromMysteelChemicalIndex)
-		dataList := make([]index.BaseFromMysteelChemicalData, 0)
+			var indexName, indexCode, unit, source, frequency, startDate, endDate, describe string
+			var indexId int64
+			rows, err := f.GetRows(sv)
+			if err != nil {
+				fmt.Println("f.GetRows:err:" + err.Error())
+				return
+			}
 
-		dataMap := make(map[string]string)
-		for rk, row := range rows {
-			if rk > 0 {
-				if rk < 10 {
-					for ck, colCell := range row {
-						if ck == 1 {
-							if rk == 1 {
-								indexName = colCell
-							}
-							if rk == 2 {
-								unit = colCell
-							}
-							if rk == 3 {
-								source = colCell
+			indexObj := new(index.BaseFromMysteelChemicalIndex)
+			dataList := make([]index.BaseFromMysteelChemicalData, 0)
+
+			dataMap := make(map[string]string)
+			for rk, row := range rows {
+				if rk > 0 {
+					if rk < 10 {
+						for ck, colCell := range row {
+							if ck == 1 {
+								if rk == 1 {
+									indexName = colCell
+								}
+								if rk == 2 {
+									unit = colCell
+								}
+								if rk == 3 {
+									source = colCell
+								}
+								if rk == 4 {
+									indexCode = colCell
+								}
+								if rk == 5 {
+									frequency = colCell
+								}
+								if rk == 6 {
+									dateArr := strings.Split(colCell, "~")
+									if len(dateArr) >= 2 {
+										startDate = dateArr[0]
+										endDate = dateArr[1]
+									}
+								}
+								if rk == 7 {
+									describe = colCell
+								}
 							}
-							if rk == 4 {
-								indexCode = colCell
+						}
+
+						if rk == 9 {
+							//判断指标是否存在
+							var isAdd int
+							item, err := indexObj.GetIndexItem(runMode, indexCode)
+							if err != nil {
+								if err.Error() == "record not found" {
+									isAdd = 1
+								} else {
+									isAdd = -1
+									fmt.Println("GetIndexItem Err:" + err.Error())
+									return
+								}
 							}
-							if rk == 5 {
-								frequency = colCell
+							if item != nil && item.BaseFromMysteelChemicalIndexId > 0 {
+								fmt.Println("item:", item)
+								isAdd = 2
+							} else {
+								isAdd = 1
 							}
-							if rk == 6 {
-								dateArr := strings.Split(colCell, "~")
-								if len(dateArr) >= 2 {
-									startDate = dateArr[0]
-									endDate = dateArr[1]
+
+							fmt.Println("isAdd:", isAdd)
+
+							if isAdd == 1 {
+								indexObj.IndexCode = indexCode
+								indexObj.IndexName = indexName
+								indexObj.Unit = unit
+								indexObj.Source = source
+								indexObj.Describe = describe
+								indexObj.StartDate = startDate
+								indexObj.EndDate = endDate
+								indexObj.Frequency = frequency
+								err = indexObj.Add(runMode)
+								if err != nil {
+									fmt.Println("add err:" + err.Error())
+									return
+								}
+								indexId = indexObj.BaseFromMysteelChemicalIndexId
+							} else if isAdd == 2 {
+								indexObj.IndexCode = indexCode
+								indexObj.IndexName = indexName
+								indexObj.Unit = unit
+								indexObj.Source = source
+								indexObj.Describe = describe
+								indexObj.StartDate = startDate
+								indexObj.EndDate = endDate
+								indexObj.Frequency = 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(runMode, updateColsArr)
+
+								dataObj := new(index.BaseFromMysteelChemicalData)
+								//获取已存在的所有数据
+								dataList, err := dataObj.GetIndexDataList(runMode, indexCode)
+								if err != nil {
+									fmt.Println("GetIndexDataList Err:" + err.Error())
+									return
+								}
+								fmt.Println("dataListLen:", len(dataList))
+								for _, v := range dataList {
+									dateStr := v.DataTime.Format(utils.FormatDate)
+									dataMap[dateStr] = v.Value
 								}
-							}
-							if rk == 7 {
-								describe = colCell
 							}
 						}
-					}
-
-					if rk == 9 {
-						//判断指标是否存在
-						var isAdd int
-						item, err := indexObj.GetIndexItem(indexCode)
-						if err != nil {
-							if err.Error() == "record not found" {
-								isAdd = 1
+					} else {
+						var date, value string
+						for ck, colCell := range row {
+							if ck == 0 {
+								date = colCell
 							} else {
-								isAdd = -1
-								fmt.Println("GetIndexItem Err:" + err.Error())
-								return
+								value = colCell
 							}
 						}
-						if item != nil && item.BaseFromMysteelChemicalIndexId > 0 {
-							fmt.Println("item:", item)
-							isAdd = 2
-						} else {
-							isAdd = 1
-						}
-
-						fmt.Println("isAdd:", isAdd)
-
-						if isAdd == 1 {
-							indexObj.IndexCode = indexCode
-							indexObj.IndexName = indexName
-							indexObj.Unit = unit
-							indexObj.Source = source
-							indexObj.Describe = describe
-							indexObj.StartDate = startDate
-							indexObj.EndDate = endDate
-							indexObj.Frequency = frequency
-							err = indexObj.Add()
-							if err != nil {
-								fmt.Println("add err:" + err.Error())
-								return
-							}
-							indexId = indexObj.BaseFromMysteelChemicalIndexId
-						} else if isAdd == 2 {
-							indexObj.IndexCode = indexCode
-							indexObj.IndexName = indexName
-							indexObj.Unit = unit
-							indexObj.Source = source
-							indexObj.Describe = describe
-							indexObj.StartDate = startDate
-							indexObj.EndDate = endDate
-							indexObj.Frequency = 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(index.BaseFromMysteelChemicalData)
-							//获取已存在的所有数据
-							dataList, err := dataObj.GetIndexDataList(indexCode)
+						if _, ok := dataMap[date]; !ok {
+							dateTime, err := time.ParseInLocation(utils.FormatDate, date, time.Local)
 							if err != nil {
-								fmt.Println("GetIndexDataList Err:" + err.Error())
+								fmt.Println("time.ParseInLocation Err:" + err.Error())
 								return
 							}
-							fmt.Println("dataListLen:", len(dataList))
-							for _, v := range dataList {
-								dateStr := v.DataTime.Format(utils.FormatDate)
-								dataMap[dateStr] = v.Value
-							}
-						}
-					}
-				} else {
-					var date, value string
-					for ck, colCell := range row {
-						if ck == 0 {
-							date = colCell
-						} else {
-							value = colCell
+							dataItem := new(index.BaseFromMysteelChemicalData)
+							dataItem.BaseFromMysteelChemicalIndexId = indexId
+							dataItem.IndexCode = indexCode
+							dataItem.DataTime = dateTime
+							dataItem.Value = value
+							dataItem.CreateTime = time.Now()
+							dataItem.ModifyTime = time.Now()
+							dataList = append(dataList, *dataItem)
 						}
 					}
-					if _, ok := dataMap[date]; !ok {
-						dateTime, err := time.ParseInLocation(utils.FormatDate, date, time.Local)
-						if err != nil {
-							fmt.Println("time.ParseInLocation Err:" + err.Error())
-							return
-						}
-						dataItem := new(index.BaseFromMysteelChemicalData)
-						dataItem.BaseFromMysteelChemicalIndexId = indexId
-						dataItem.IndexCode = indexCode
-						dataItem.DataTime = dateTime
-						dataItem.Value = value
-						dataItem.CreateTime = time.Now()
-						dataItem.ModifyTime = time.Now()
-						dataList = append(dataList, *dataItem)
-					}
 				}
 			}
-		}
 
-		if len(dataList) > 0 {
-			dataObj := new(index.BaseFromMysteelChemicalData)
-			err = dataObj.Add(dataList)
-			if err != nil {
-				fmt.Println("dataObj.Add() Err:" + err.Error())
+			if len(dataList) > 0 {
+				dataObj := new(index.BaseFromMysteelChemicalData)
+				err = dataObj.Add(runMode, dataList)
+				if err != nil {
+					fmt.Println("dataObj.Add() Err:" + err.Error())
+				}
 			}
 		}
-	}
-}
-
-func TestWatch() {
-	filePath := `D:\hz\mysteel_data\钢联数据_煤炭:运费价格:印尼→中国:巴拿马型(日)_2022-9-4_1662303985672.xlsx`
-	WatchIndexFile(filePath)
+	}()
 }
 
 /*