|
@@ -3,12 +3,11 @@ package services
|
|
|
import (
|
|
|
"encoding/json"
|
|
|
"fmt"
|
|
|
- "hongze/mysteel_watch/global"
|
|
|
"hongze/mysteel_watch/models/index"
|
|
|
"hongze/mysteel_watch/utils"
|
|
|
+ "hongze/mysteel_watch/watch"
|
|
|
"strconv"
|
|
|
"strings"
|
|
|
- "sync"
|
|
|
"time"
|
|
|
|
|
|
"github.com/rdlucklib/rdluck_tools/paging"
|
|
@@ -38,7 +37,7 @@ func Merge() {
|
|
|
fmt.Println("merge end")
|
|
|
}
|
|
|
|
|
|
-//年度
|
|
|
+// 年度
|
|
|
func IndexYearMerge() {
|
|
|
frequency := "年度"
|
|
|
fileName := "year" + ".xlsx" //保存的文件名称
|
|
@@ -98,7 +97,7 @@ func IndexYearMerge() {
|
|
|
AddIndexRefreshToLpush(yearIndexFilePath)
|
|
|
}
|
|
|
|
|
|
-//季度
|
|
|
+// 季度
|
|
|
func IndexSeasonMerge() {
|
|
|
frequency := "季度"
|
|
|
fileName := "season" + ".xlsx" //保存的文件名称
|
|
@@ -528,8 +527,11 @@ func indexMerge(frequency, filePre string, pageSize int) (err error) {
|
|
|
firstIndexCount := pageSize //第一个添加的excel表需要的指标数
|
|
|
indexObj := new(index.BaseFromMysteelChemicalIndex)
|
|
|
|
|
|
+ frequencyReq := watch.GetMaxFileIndexReq{
|
|
|
+ Frequency: frequency,
|
|
|
+ }
|
|
|
// 获取未合并的指标总数量
|
|
|
- total, err := indexObj.GetNoMergeIndexByFrequencyCount(frequency)
|
|
|
+ total, err := watch.GetNoMergeIndexByFrequencyCount(frequencyReq)
|
|
|
if err != nil {
|
|
|
fmt.Println("GetIndexByFrequencyCount Err:" + err.Error())
|
|
|
return
|
|
@@ -540,11 +542,7 @@ func indexMerge(frequency, filePre string, pageSize int) (err error) {
|
|
|
}
|
|
|
|
|
|
// 获取最大的文件编号下标
|
|
|
- maxFileIndexItem, err := indexObj.GetMaxFileIndex(frequency)
|
|
|
- if err != nil {
|
|
|
- fmt.Println("GetMaxFileIndex Err:" + err.Error())
|
|
|
- return
|
|
|
- }
|
|
|
+ maxFileIndexItem, err := watch.GetMaxFileIndex(frequencyReq)
|
|
|
|
|
|
maxFileIndex := maxFileIndexItem.FileIndex
|
|
|
if maxFileIndex <= 0 {
|
|
@@ -561,14 +559,14 @@ func indexMerge(frequency, filePre string, pageSize int) (err error) {
|
|
|
return
|
|
|
}
|
|
|
|
|
|
- fmt.Println("当前待合并的文件名:",maxMergeIndexFilePath)
|
|
|
- fmt.Println("当前文件中指标的最大数量:",indexTotal)
|
|
|
+ fmt.Println("当前待合并的文件名:", maxMergeIndexFilePath)
|
|
|
+ fmt.Println("当前文件中指标的最大数量:", indexTotal)
|
|
|
fmt.Println("maxFileIndex:", maxFileIndex)
|
|
|
// 如果最近的excel表的指标数量 少于 每页需要的指标数
|
|
|
if int(indexTotal) < pageSize {
|
|
|
// 最近的excel表的待添加指标数 = 每页需要的指标数 - 已经添加的指标
|
|
|
firstIndexCount = pageSize - int(indexTotal)
|
|
|
- }else{
|
|
|
+ } else {
|
|
|
firstIndexCount = pageSize
|
|
|
maxFileIndex++
|
|
|
}
|
|
@@ -609,7 +607,7 @@ func indexMerge(frequency, filePre string, pageSize int) (err error) {
|
|
|
//fmt.Println(offset, pageSize)
|
|
|
|
|
|
// 当下需要合并到excel的指标
|
|
|
- pageList, tmpErr := indexObj.GetNoMergeIndexByFrequencyPage(frequency, size)
|
|
|
+ pageList, tmpErr := watch.GetNoMergeIndexByFrequencyPage(frequency, size)
|
|
|
if tmpErr != nil {
|
|
|
fmt.Println("GetIndexByFrequency Err:" + tmpErr.Error())
|
|
|
err = tmpErr
|
|
@@ -826,287 +824,3 @@ type IndexModels struct {
|
|
|
PointValue int64 `json:"PointValue"`
|
|
|
UnionStart string `json:"UnionStart"`
|
|
|
}
|
|
|
-
|
|
|
-func DataAnalysis(filePath string) {
|
|
|
-
|
|
|
- runMode := "debug"
|
|
|
- //runMode = "release"
|
|
|
-
|
|
|
- fmt.Println("filePath:", filePath)
|
|
|
- time.Sleep(1 * time.Second)
|
|
|
- if !utils.FileIsExist(filePath) {
|
|
|
- fmt.Println("filePath is not exist:" + filePath)
|
|
|
- return
|
|
|
- }
|
|
|
- //读取文件内容
|
|
|
- global.LOG.Info("WatchFile:" + filePath)
|
|
|
- f, err := excelize.OpenFile(filePath)
|
|
|
- global.LOG.Info("OpenFile:" + filePath)
|
|
|
- if err != nil {
|
|
|
- fmt.Println("OpenFile:" + filePath + ",Err:" + err.Error())
|
|
|
- return
|
|
|
- }
|
|
|
- defer func() {
|
|
|
- if err := f.Close(); err != nil {
|
|
|
- fmt.Println("FileClose Err:" + err.Error())
|
|
|
- return
|
|
|
- }
|
|
|
- }()
|
|
|
-
|
|
|
- indexObj := new(index.BaseFromMysteelChemicalIndex)
|
|
|
- var wg = sync.WaitGroup{}
|
|
|
- wg.Add(1)
|
|
|
- go func() {
|
|
|
- sheetList := f.GetSheetList()
|
|
|
- for _, sv := range sheetList {
|
|
|
- rows, err := f.GetRows(sv)
|
|
|
- if err != nil {
|
|
|
- fmt.Println("f.GetRows:err:" + err.Error())
|
|
|
- return
|
|
|
- }
|
|
|
- var nameArr []string
|
|
|
- unitArr := make([]string, 0)
|
|
|
- sourceArr := make([]string, 0)
|
|
|
- codeArr := make([]string, 0)
|
|
|
- frequencyArr := make([]string, 0)
|
|
|
- dateArr := make([]string, 0)
|
|
|
- describeArr := make([]string, 0)
|
|
|
- endDateArr := make([]string, 0)
|
|
|
- updateArr := make([]string, 0)
|
|
|
- indexDateArr := make([]string, 0)
|
|
|
-
|
|
|
- dataMap := make(map[string][]string)
|
|
|
-
|
|
|
- var nameLen int
|
|
|
- for rk, row := range rows {
|
|
|
- if rk == 0 {
|
|
|
- continue
|
|
|
- }
|
|
|
- if rk == 1 {
|
|
|
- for ck, colCell := range row {
|
|
|
- if ck >= 1 {
|
|
|
- nameArr = append(nameArr, colCell)
|
|
|
- }
|
|
|
- }
|
|
|
- nameLen = len(nameArr)
|
|
|
- unitArr = make([]string, nameLen)
|
|
|
- sourceArr = make([]string, nameLen)
|
|
|
- codeArr = make([]string, nameLen)
|
|
|
- frequencyArr = make([]string, nameLen)
|
|
|
- dateArr = make([]string, nameLen)
|
|
|
- describeArr = make([]string, nameLen)
|
|
|
- endDateArr = make([]string, nameLen)
|
|
|
- updateArr = make([]string, nameLen)
|
|
|
- } else if rk == 2 {
|
|
|
- for ck, colCell := range row {
|
|
|
- if ck >= 1 {
|
|
|
- unitArr[ck-1] = colCell
|
|
|
- }
|
|
|
- }
|
|
|
- } else if rk == 3 {
|
|
|
- for ck, colCell := range row {
|
|
|
- if ck >= 1 {
|
|
|
- //sourceArr = append(sourceArr, colCell)
|
|
|
- sourceArr[ck-1] = colCell
|
|
|
- }
|
|
|
- }
|
|
|
- } else if rk == 4 {
|
|
|
- for ck, colCell := range row {
|
|
|
- if ck >= 1 {
|
|
|
- //codeArr = append(codeArr, colCell)
|
|
|
- codeArr[ck-1] = colCell
|
|
|
- }
|
|
|
- }
|
|
|
- } else if rk == 5 {
|
|
|
- for ck, colCell := range row {
|
|
|
- if ck >= 1 {
|
|
|
- //frequencyArr = append(frequencyArr, colCell)
|
|
|
- frequencyArr[ck-1] = colCell
|
|
|
- }
|
|
|
- }
|
|
|
- } else if rk == 6 {
|
|
|
- for ck, colCell := range row {
|
|
|
- if ck >= 1 {
|
|
|
- //dateArr = append(dateArr, colCell)
|
|
|
- dateArr[ck-1] = colCell
|
|
|
- }
|
|
|
- }
|
|
|
- } else if rk == 7 {
|
|
|
- for ck, colCell := range row {
|
|
|
- if ck >= 1 {
|
|
|
- //describeArr = append(describeArr, colCell)
|
|
|
- describeArr[ck-1] = colCell
|
|
|
- }
|
|
|
- }
|
|
|
- } else if rk == 8 {
|
|
|
- for ck, colCell := range row {
|
|
|
- if ck >= 1 {
|
|
|
- //endDateArr = append(endDateArr, colCell)
|
|
|
- endDateArr[ck-1] = colCell
|
|
|
- }
|
|
|
- }
|
|
|
- } else if rk == 9 {
|
|
|
- for ck, colCell := range row {
|
|
|
- if ck >= 1 {
|
|
|
- //updateArr = append(updateArr, colCell)
|
|
|
- updateArr[ck-1] = colCell
|
|
|
- }
|
|
|
- }
|
|
|
- } else {
|
|
|
- var date string
|
|
|
- dataArr := make([]string, nameLen)
|
|
|
- for ck, colCell := range row {
|
|
|
- if ck == 0 {
|
|
|
- date = colCell
|
|
|
- indexDateArr = append(indexDateArr, date)
|
|
|
- } else {
|
|
|
- if colCell != "" {
|
|
|
- dataArr[ck-1] = colCell
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- dataMap[date] = dataArr
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- var indexId int64
|
|
|
- existDataMap := make(map[string]string)
|
|
|
- for k, v := range nameArr {
|
|
|
- indexName := v
|
|
|
- indexCode := codeArr[k]
|
|
|
- unit := unitArr[k]
|
|
|
- source := sourceArr[k]
|
|
|
- describe := describeArr[k]
|
|
|
- dateStr := dateArr[k]
|
|
|
- frequency := frequencyArr[k]
|
|
|
- //判断指标是否存在
|
|
|
- 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 item != nil && item.BaseFromMysteelChemicalIndexId > 0 {
|
|
|
- fmt.Println("item:", item)
|
|
|
- isAdd = 2
|
|
|
- } else {
|
|
|
- isAdd = 1
|
|
|
- }
|
|
|
-
|
|
|
- var startDate, endDate string
|
|
|
- startEndArr := strings.Split(dateStr, "~")
|
|
|
- if len(startEndArr) >= 2 {
|
|
|
- startDate = startEndArr[0]
|
|
|
- endDate = startEndArr[1]
|
|
|
- }
|
|
|
-
|
|
|
- if !strings.Contains(frequency, "度") {
|
|
|
- frequency = frequency + "度"
|
|
|
- }
|
|
|
-
|
|
|
- indexItem := new(index.BaseFromMysteelChemicalIndex)
|
|
|
- if isAdd == 1 {
|
|
|
- indexItem.IndexCode = indexCode
|
|
|
- indexItem.IndexName = indexName
|
|
|
- indexItem.Unit = unit
|
|
|
- indexItem.Source = source
|
|
|
- indexItem.Describe = describe
|
|
|
- indexItem.StartDate, _ = time.ParseInLocation(utils.FormatDate, startDate, time.Local)
|
|
|
- indexItem.EndDate, _ = time.ParseInLocation(utils.FormatDate, endDate, time.Local)
|
|
|
- indexItem.Frequency = frequency
|
|
|
- indexItem.FilePath = filePath
|
|
|
- indexItem.MergeFilePath = filePath
|
|
|
- err = indexItem.Add(runMode)
|
|
|
- if err != nil {
|
|
|
- fmt.Println("indexItem.add err:" + err.Error())
|
|
|
- return
|
|
|
- }
|
|
|
- indexId = indexObj.BaseFromMysteelChemicalIndexId
|
|
|
- } else if isAdd == 2 {
|
|
|
- indexItem.IndexCode = indexCode
|
|
|
- indexItem.IndexName = indexName
|
|
|
- indexItem.Unit = unit
|
|
|
- indexItem.Source = source
|
|
|
- indexItem.Describe = describe
|
|
|
- indexItem.StartDate, _ = time.ParseInLocation(utils.FormatDate, startDate, time.Local)
|
|
|
- indexItem.EndDate, _ = time.ParseInLocation(utils.FormatDate, endDate, time.Local)
|
|
|
- indexItem.Frequency = frequency
|
|
|
- indexItem.FilePath = filePath
|
|
|
- indexItem.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")
|
|
|
- updateColsArr = append(updateColsArr, "file_path")
|
|
|
-
|
|
|
- err = indexItem.Update(runMode, updateColsArr)
|
|
|
- if err != nil {
|
|
|
- fmt.Println("indexObj.Update err:" + err.Error())
|
|
|
- return
|
|
|
- }
|
|
|
-
|
|
|
- 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)
|
|
|
- existDataMap[dateStr] = v.Value
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- dataList := make([]index.BaseFromMysteelChemicalData, 0)
|
|
|
- for _, dv := range indexDateArr {
|
|
|
- dataArr := dataMap[dv]
|
|
|
- dataVal := dataArr[k]
|
|
|
- updateDate := updateArr[k]
|
|
|
- if dataVal != "" {
|
|
|
- if _, ok := existDataMap[dv]; !ok {
|
|
|
- dateTime, err := time.ParseInLocation(utils.FormatDate, dv, 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 = dataVal
|
|
|
- dataItem.UpdateDate = updateDate
|
|
|
- dataItem.CreateTime = time.Now()
|
|
|
- dataItem.ModifyTime = time.Now()
|
|
|
- dataList = append(dataList, *dataItem)
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- if len(dataList) > 0 {
|
|
|
- dataObj := new(index.BaseFromMysteelChemicalData)
|
|
|
- err = dataObj.Add(runMode, dataList)
|
|
|
- if err != nil {
|
|
|
- fmt.Println("dataObj.Add() Err:" + err.Error())
|
|
|
- return
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- wg.Done()
|
|
|
- }()
|
|
|
- wg.Wait()
|
|
|
-}
|