Selaa lähdekoodia

Merge branch 'chart/13.5' into debug

# Conflicts:
#	models/base_from_adjust.go
#	models/base_from_manual.go
#	models/db.go
Roc 2 vuotta sitten
vanhempi
commit
87569b452e
58 muutettua tiedostoa jossa 964 lisäystä ja 249 poistoa
  1. 1 1
      controllers/base_from_calculate.go
  2. 2 2
      controllers/base_from_pb.go
  3. 1 1
      controllers/base_from_pb_finance.go
  4. 1 1
      controllers/base_from_predict_calculate.go
  5. 2 2
      models/base_from_adjust.go
  6. 2 2
      models/base_from_calculate.go
  7. 41 9
      models/base_from_cffex.go
  8. 60 27
      models/base_from_coal.go
  9. 36 5
      models/base_from_com_trade.go
  10. 41 10
      models/base_from_dl.go
  11. 36 5
      models/base_from_eia_steo.go
  12. 44 12
      models/base_from_gie.go
  13. 37 8
      models/base_from_google_travel.go
  14. 31 2
      models/base_from_lt.go
  15. 31 6
      models/base_from_lz.go
  16. 79 9
      models/base_from_manual.go
  17. 38 7
      models/base_from_mysteel.go
  18. 36 5
      models/base_from_mysteel_chemical.go
  19. 31 1
      models/base_from_pb.go
  20. 30 1
      models/base_from_pb_finance.go
  21. 3 3
      models/base_from_python.go
  22. 39 9
      models/base_from_sci.go
  23. 42 11
      models/base_from_sh.go
  24. 40 9
      models/base_from_shfe.go
  25. 38 8
      models/base_from_smm.go
  26. 37 7
      models/base_from_ths.go
  27. 30 0
      models/base_from_wind.go
  28. 37 8
      models/base_from_zz.go
  29. 1 1
      models/base_predict_from_calculate.go
  30. 1 0
      models/db.go
  31. 13 13
      models/edb_data_calculate_bp.go
  32. 1 1
      models/edb_data_calculate_cjjx.go
  33. 1 1
      models/edb_data_calculate_hbz.go
  34. 1 1
      models/edb_data_calculate_hcz.go
  35. 1 1
      models/edb_data_calculate_ljztbpj.go
  36. 3 3
      models/edb_data_calculate_ljzzy.go
  37. 1 1
      models/edb_data_calculate_nhcc.go
  38. 1 1
      models/edb_data_calculate_nszydbpjjs.go
  39. 2 2
      models/edb_data_calculate_tbz.go
  40. 2 2
      models/edb_data_calculate_tcz.go
  41. 1 1
      models/edb_data_calculate_time_shift.go
  42. 2 2
      models/edb_data_calculate_zjpj.go
  43. 39 0
      models/edb_data_insert_config.go
  44. 2 2
      models/future_good/future_good_edb_data.go
  45. 1 1
      models/predict_edb.go
  46. 11 11
      models/predict_edb_data_calculate_bp.go
  47. 4 4
      models/predict_edb_data_calculate_cjjx.go
  48. 2 1
      models/predict_edb_data_calculate_hbz.go
  49. 2 2
      models/predict_edb_data_calculate_hcz.go
  50. 3 3
      models/predict_edb_data_calculate_ljztbpj.go
  51. 4 4
      models/predict_edb_data_calculate_ljzzy.go
  52. 1 1
      models/predict_edb_data_calculate_nhcc.go
  53. 1 1
      models/predict_edb_data_calculate_nszydbpjjs.go
  54. 4 4
      models/predict_edb_data_calculate_tbz.go
  55. 4 5
      models/predict_edb_data_calculate_tcz.go
  56. 3 3
      models/predict_edb_data_calculate_time_shift.go
  57. 5 5
      models/predict_edb_data_calculate_zjpj.go
  58. 1 1
      utils/common.go

+ 1 - 1
controllers/base_from_calculate.go

@@ -1261,7 +1261,7 @@ func (this *CalculateController) Refresh() {
 	switch source {
 	case utils.DATA_SOURCE_CALCULATE:
 		//startDate = edbInfo.StartDate
-		//sTime, err := time.Parse(utils.FormatDate, edbInfo.EndDate)
+		//sTime, err := time.ParseInLocation(utils.FormatDate, edbInfo.EndDate,time.Local)
 		//if err != nil {
 		//	return
 		//}

+ 2 - 2
controllers/base_from_pb.go

@@ -10,7 +10,7 @@ import (
 	"time"
 )
 
-//彭博
+// 彭博
 type PbController struct {
 	BaseAuthController
 }
@@ -114,7 +114,7 @@ func (this *PbController) Refresh() {
 	utils.Rc.SetNX(cacheKey, 1, 1*time.Minute)
 
 	//开始日期格式化
-	startDateTime, _ := time.Parse(utils.FormatDate, req.StartDate)
+	startDateTime, _ := time.ParseInLocation(utils.FormatDate, req.StartDate, time.Local)
 	dataItem, err := services.GetEdbDataFromPb(req.EdbCode, startDateTime.Format(utils.FormatDateUnSpace), utils.BASE_END_DATE_UnSpace)
 	if err != nil {
 		br.Msg = "获取指标信息失败!"

+ 1 - 1
controllers/base_from_pb_finance.go

@@ -126,7 +126,7 @@ func (this *PbFinanceController) Refresh() {
 		utils.Rc.Delete(cacheKey)
 	}()
 	//开始日期格式化
-	startDateTime, _ := time.Parse(utils.FormatDate, req.StartDate)
+	startDateTime, _ := time.ParseInLocation(utils.FormatDate, req.StartDate, time.Local)
 
 	//指标编码处理,将指标编码拆分成 company_code和edb_code
 	edbCode := req.EdbCode

+ 1 - 1
controllers/base_from_predict_calculate.go

@@ -862,7 +862,7 @@ func (this *PredictCalculateController) Refresh() {
 	switch source {
 	case utils.DATA_SOURCE_PREDICT_CALCULATE:
 		//startDate = edbInfo.StartDate
-		//sTime, err := time.Parse(utils.FormatDate, edbInfo.EndDate)
+		//sTime, err := time.ParseInLocation(utils.FormatDate, edbInfo.EndDate, time.Local)
 		//if err != nil {
 		//	return
 		//}

+ 2 - 2
models/base_from_adjust.go

@@ -199,7 +199,7 @@ func SaveAdjustEdb(req SaveAdjustEdbReq) (edbInfo *EdbInfo, err error, errMsg st
 	dataObj := make(map[string]AddAdjustEdbData)
 
 	for _, item := range dataList {
-		currentDate, tmpErr := time.Parse(utils.FormatDate, item.Date)
+		currentDate, tmpErr := time.ParseInLocation(utils.FormatDate, item.Date, time.Local)
 		if tmpErr != nil {
 			err = tmpErr
 			return
@@ -305,7 +305,7 @@ func RefreshAllAdjustEdb(edbInfo *EdbInfo, fromEdbInfo *EdbInfo) (err error) {
 		saveVal := utils.SubFloatToString(val, 20)
 		if existVal, ok := existDataMap[currDay]; !ok {
 			//格式化时间
-			currentDate, tmpErr := time.Parse(utils.FormatDate, item.DataTime)
+			currentDate, tmpErr := time.ParseInLocation(utils.FormatDate, item.DataTime, time.Local)
 			if tmpErr != nil {
 				err = tmpErr
 				return

+ 2 - 2
models/base_from_calculate.go

@@ -99,7 +99,7 @@ func AddCalculate(edbInfoIdArr []*EdbInfo, edbInfoId int, edbCode, formulaStr st
 
 			//需要存入的数据
 			{
-				dataTime, _ := time.Parse(utils.FormatDate, sk)
+				dataTime, _ := time.ParseInLocation(utils.FormatDate, sk, time.Local)
 				timestamp := dataTime.UnixNano() / 1e6
 				timeStr := fmt.Sprintf("%d", timestamp)
 				addSql += "("
@@ -475,7 +475,7 @@ func refreshAllCalculate(to orm.TxOrmer, edbInfoIdArr []*EdbInfo, edbInfoId, sou
 		delete(removeDateMap, sk)
 		saveValue := decimal.NewFromFloat(calVal).RoundCeil(4).String() //utils.SubFloatToString(calVal, 4)
 		if existVal, ok := dataMap[sk]; !ok {
-			dataTime, _ := time.Parse(utils.FormatDate, sk)
+			dataTime, _ := time.ParseInLocation(utils.FormatDate, sk, time.Local)
 			timestamp := dataTime.UnixNano() / 1e6
 			timeStr := fmt.Sprintf("%d", timestamp)
 

+ 41 - 9
models/base_from_cffex.go

@@ -65,7 +65,7 @@ func GetCffexDataByTradeCode(condition string, pars []interface{}) (item []*Base
 	return
 }
 
-//新增中金所指标数据
+// 新增中金所指标数据
 func AddEdbDataFromCffex(edbCode string) (err error) {
 	var suffix string
 	if strings.Contains(edbCode, "deal") {
@@ -88,7 +88,7 @@ func AddEdbDataFromCffex(edbCode string) (err error) {
 
 	for _, sv := range cffexBaseDataAll {
 		eDate := sv.DataTime
-		dataTime, err := time.Parse(utils.FormatDate, eDate)
+		dataTime, err := time.ParseInLocation(utils.FormatDate, eDate, time.Local)
 		if err != nil {
 			fmt.Println("time.Parse Err:" + eDate)
 			return err
@@ -124,7 +124,7 @@ func AddEdbDataFromCffex(edbCode string) (err error) {
 	return
 }
 
-//刷新中金所指标数据
+// 刷新中金所指标数据
 func RefreshEdbDataFromCffex(edbInfoId int, edbCode, startDate string) (err error) {
 	source := utils.DATA_SOURCE_CFFEX
 	var suffix string
@@ -163,6 +163,23 @@ func RefreshEdbDataFromCffex(edbInfoId int, edbCode, startDate string) (err erro
 	}
 
 	glDataList, err := GetCffexDataByTradeCode(condition, pars)
+	if err != nil {
+		return
+	}
+
+	// 真实数据的最大日期  , 插入规则配置的日期
+	var realDataMaxDate, edbDataInsertConfigDate time.Time
+	var edbDataInsertConfig *EdbDataInsertConfig
+	var isFindConfigDateRealData bool //是否找到配置日期的实际数据的值
+	{
+		edbDataInsertConfig, err = GetEdbDataInsertConfigByEdbId(edbInfoId)
+		if err != nil && err.Error() != utils.ErrNoRow() {
+			return
+		}
+		if edbDataInsertConfig != nil {
+			edbDataInsertConfigDate = edbDataInsertConfig.Date
+		}
+	}
 
 	//获取指标所有数据
 	var existCondition string
@@ -196,15 +213,26 @@ func RefreshEdbDataFromCffex(edbInfoId int, edbCode, startDate string) (err erro
 			value = v.SoldValue
 		}
 		item := v
+		eDate := item.DataTime
+		dataTime, err := time.ParseInLocation(utils.FormatDate, eDate, time.Local)
+		if err != nil {
+			return err
+		}
+
+		// 下面代码主要目的是处理掉手动插入的数据判断
+		{
+			if realDataMaxDate.IsZero() || dataTime.After(realDataMaxDate) {
+				realDataMaxDate = dataTime
+			}
+			if edbDataInsertConfigDate.IsZero() || dataTime.Equal(edbDataInsertConfigDate) {
+				isFindConfigDateRealData = true
+			}
+		}
+
 		itemValue := value
 		if _, ok := existMap[v.DataTime]; !ok {
-			eDate := item.DataTime
 			sValue := itemValue
 			if sValue != "" {
-				dataTime, err := time.Parse(utils.FormatDate, eDate)
-				if err != nil {
-					return err
-				}
 				timestamp := dataTime.UnixNano() / 1e6
 				timeStr := fmt.Sprintf("%d", timestamp)
 				saveValue := sValue
@@ -223,6 +251,10 @@ func RefreshEdbDataFromCffex(edbInfoId int, edbCode, startDate string) (err erro
 			}
 		}
 	}
+
+	// 处理手工数据补充的配置
+	HandleConfigInsertEdbData(realDataMaxDate, edbDataInsertConfig, edbInfoId, source, existMap, isFindConfigDateRealData)
+
 	if isAdd {
 		addSql = strings.TrimRight(addSql, ",")
 		_, err = o.Raw(addSql).Exec()
@@ -231,4 +263,4 @@ func RefreshEdbDataFromCffex(edbInfoId int, edbCode, startDate string) (err erro
 		}
 	}
 	return
-}
+}

+ 60 - 27
models/base_from_coal.go

@@ -75,38 +75,38 @@ func AddEdbDataFromCoal(edbCode string) (err error) {
 		var dataTime time.Time
 		var sDataTime string
 		var timestamp int64
-		if suffix == "firm_index"{
+		if suffix == "firm_index" {
 			syear := eDate[:4]
-			year,_ := strconv.Atoi(syear)
+			year, _ := strconv.Atoi(syear)
 			smonth := eDate[7:]
 			smonth = strings.Split(smonth, "月份")[0]
-			month,_ :=strconv.Atoi(smonth)
+			month, _ := strconv.Atoi(smonth)
 			var day int
-			if strings.Contains(eDate,"上旬"){
+			if strings.Contains(eDate, "上旬") {
 				day = 15
 				currentLocation := time.Now().Location()
-				dataTime = time.Date(year, time.Month(month), day,0,0,0,0,currentLocation)
+				dataTime = time.Date(year, time.Month(month), day, 0, 0, 0, 0, currentLocation)
 				sDataTime = dataTime.Format(utils.FormatDate)
 				timestamp = dataTime.UnixNano() / 1e6
 				timeStr = fmt.Sprintf("%d", timestamp)
-			} else if strings.Contains(eDate,"中旬") {
+			} else if strings.Contains(eDate, "中旬") {
 				day = 25
 				currentLocation := time.Now().Location()
-				dataTime = time.Date(year, time.Month(month), day,0,0,0,0,currentLocation)
+				dataTime = time.Date(year, time.Month(month), day, 0, 0, 0, 0, currentLocation)
 				sDataTime = dataTime.Format(utils.FormatDate)
 				timestamp = dataTime.UnixNano() / 1e6
 				timeStr = fmt.Sprintf("%d", timestamp)
-			}else {
+			} else {
 				currentLocation := time.Now().Location()
-				firstOfMonth := time.Date(year, time.Month(month),1,0,0,0,0,currentLocation)
-				dataTime = firstOfMonth.AddDate(0,1,-1)
+				firstOfMonth := time.Date(year, time.Month(month), 1, 0, 0, 0, 0, currentLocation)
+				dataTime = firstOfMonth.AddDate(0, 1, -1)
 				sDataTime = dataTime.Format(utils.FormatDate)
 				timestamp = dataTime.UnixNano() / 1e6
 				timeStr = fmt.Sprintf("%d", timestamp)
 			}
-		}else {
+		} else {
 			sDataTime = eDate
-			dataTime, err = time.Parse(utils.FormatDate, eDate)
+			dataTime, err = time.ParseInLocation(utils.FormatDate, eDate, time.Local)
 			if err != nil {
 				fmt.Println("time.Parse Err:" + eDate)
 				return err
@@ -115,7 +115,7 @@ func AddEdbDataFromCoal(edbCode string) (err error) {
 			timeStr = fmt.Sprintf("%d", timestamp)
 		}
 
-		value := strings.Replace(sv.DealValue,"%","",-1)
+		value := strings.Replace(sv.DealValue, "%", "", -1)
 		if _, ok := existMap[sDataTime]; !ok {
 			addSql += GetAddSql("0", edbCode, sDataTime, timeStr, value)
 			fmt.Println("edbCode:", edbCode)
@@ -171,6 +171,23 @@ func RefreshEdbDataFromCoal(edbInfoId int, edbCode, startDate string) (err error
 	}
 
 	glDataList, err := GetCoalDataByTradeCode(suffix, condition, pars)
+	if err != nil {
+		return
+	}
+
+	// 真实数据的最大日期  , 插入规则配置的日期
+	var realDataMaxDate, edbDataInsertConfigDate time.Time
+	var edbDataInsertConfig *EdbDataInsertConfig
+	var isFindConfigDateRealData bool //是否找到配置日期的实际数据的值
+	{
+		edbDataInsertConfig, err = GetEdbDataInsertConfigByEdbId(edbInfoId)
+		if err != nil && err.Error() != utils.ErrNoRow() {
+			return
+		}
+		if edbDataInsertConfig != nil {
+			edbDataInsertConfigDate = edbDataInsertConfig.Date
+		}
+	}
 
 	//获取指标所有数据
 	var existCondition string
@@ -196,7 +213,7 @@ func RefreshEdbDataFromCoal(edbInfoId int, edbCode, startDate string) (err error
 	var isAdd bool
 	for _, v := range glDataList {
 		var value string
-		value = strings.Replace(v.DealValue,"%","",-1)
+		value = strings.Replace(v.DealValue, "%", "", -1)
 		item := v
 		itemValue := value
 		if _, ok := existMap[v.DataTime]; !ok {
@@ -205,38 +222,38 @@ func RefreshEdbDataFromCoal(edbInfoId int, edbCode, startDate string) (err error
 			var dataTime time.Time
 			var sDataTime string
 			var timestamp int64
-			if suffix == "firm_index"{
+			if suffix == "firm_index" {
 				syear := eDate[:4]
-				year,_ := strconv.Atoi(syear)
+				year, _ := strconv.Atoi(syear)
 				smonth := eDate[7:]
 				smonth = strings.Split(smonth, "月份")[0]
-				month,_ :=strconv.Atoi(smonth)
+				month, _ := strconv.Atoi(smonth)
 				var day int
-				if strings.Contains(eDate,"上旬"){
+				if strings.Contains(eDate, "上旬") {
 					day = 15
 					currentLocation := time.Now().Location()
-					dataTime = time.Date(year, time.Month(month), day,0,0,0,0,currentLocation)
+					dataTime = time.Date(year, time.Month(month), day, 0, 0, 0, 0, currentLocation)
 					sDataTime = dataTime.Format(utils.FormatDate)
 					timestamp = dataTime.UnixNano() / 1e6
 					timeStr = fmt.Sprintf("%d", timestamp)
-				} else if strings.Contains(eDate,"中旬") {
+				} else if strings.Contains(eDate, "中旬") {
 					day = 25
 					currentLocation := time.Now().Location()
-					dataTime = time.Date(year, time.Month(month), day,0,0,0,0,currentLocation)
+					dataTime = time.Date(year, time.Month(month), day, 0, 0, 0, 0, currentLocation)
 					sDataTime = dataTime.Format(utils.FormatDate)
 					timestamp = dataTime.UnixNano() / 1e6
 					timeStr = fmt.Sprintf("%d", timestamp)
-				}else {
+				} else {
 					currentLocation := time.Now().Location()
-					firstOfMonth := time.Date(year, time.Month(month),1,0,0,0,0,currentLocation)
-					dataTime = firstOfMonth.AddDate(0,1,-1)
+					firstOfMonth := time.Date(year, time.Month(month), 1, 0, 0, 0, 0, currentLocation)
+					dataTime = firstOfMonth.AddDate(0, 1, -1)
 					sDataTime = dataTime.Format(utils.FormatDate)
 					timestamp = dataTime.UnixNano() / 1e6
 					timeStr = fmt.Sprintf("%d", timestamp)
 				}
-			}else {
+			} else {
 				sDataTime = eDate
-				dataTime, err = time.Parse(utils.FormatDate, eDate)
+				dataTime, err = time.ParseInLocation(utils.FormatDate, eDate, time.Local)
 				if err != nil {
 					fmt.Println("time.Parse Err:" + eDate)
 					return err
@@ -260,8 +277,23 @@ func RefreshEdbDataFromCoal(edbInfoId int, edbCode, startDate string) (err error
 					}
 				}
 			}
+
+			// 下面代码主要目的是处理掉手动插入的数据判断
+			{
+				if realDataMaxDate.IsZero() || dataTime.After(realDataMaxDate) {
+					realDataMaxDate = dataTime
+				}
+				if edbDataInsertConfigDate.IsZero() || dataTime.Equal(edbDataInsertConfigDate) {
+					isFindConfigDateRealData = true
+				}
+			}
+
 		}
 	}
+
+	// 处理手工数据补充的配置
+	HandleConfigInsertEdbData(realDataMaxDate, edbDataInsertConfig, edbInfoId, source, existMap, isFindConfigDateRealData)
+
 	if isAdd {
 		addSql = strings.TrimRight(addSql, ",")
 		_, err = o.Raw(addSql).Exec()
@@ -269,5 +301,6 @@ func RefreshEdbDataFromCoal(edbInfoId int, edbCode, startDate string) (err error
 			return err
 		}
 	}
+
 	return
-}
+}

+ 36 - 5
models/base_from_com_trade.go

@@ -100,7 +100,7 @@ func AddEdbDataFromComTrade(edbCode string) (err error) {
 			sValue := utils.SubFloatToString(item.Value, 30)
 			if sValue != "" {
 				if _, ok := existMap[eDate]; !ok {
-					dataTime, err := time.Parse(utils.FormatDate, eDate)
+					dataTime, err := time.ParseInLocation(utils.FormatDate, eDate, time.Local)
 					if err != nil {
 						return err
 					}
@@ -145,6 +145,23 @@ func RefreshEdbDataFromComTrade(edbInfoId int, edbCode, startDate string) (err e
 	} else {
 		ComTradeDataList, err = GetComTradeDataByWeightCode(edbCode, startDate)
 	}
+	if err != nil {
+		return
+	}
+
+	// 真实数据的最大日期  , 插入规则配置的日期
+	var realDataMaxDate, edbDataInsertConfigDate time.Time
+	var edbDataInsertConfig *EdbDataInsertConfig
+	var isFindConfigDateRealData bool //是否找到配置日期的实际数据的值
+	{
+		edbDataInsertConfig, err = GetEdbDataInsertConfigByEdbId(edbInfoId)
+		if err != nil && err.Error() != utils.ErrNoRow() {
+			return
+		}
+		if edbDataInsertConfig != nil {
+			edbDataInsertConfigDate = edbDataInsertConfig.Date
+		}
+	}
 
 	var existCondition string
 	var existPars []interface{}
@@ -173,12 +190,12 @@ func RefreshEdbDataFromComTrade(edbInfoId int, edbCode, startDate string) (err e
 		eDate := item.DataTime
 		sValue := utils.SubFloatToString(item.Value, 30)
 
+		dataTime, err := time.ParseInLocation(utils.FormatDate, eDate, time.Local)
+		if err != nil {
+			return err
+		}
 		if findItem, ok := existMap[v.DataTime]; !ok {
 			if sValue != "" {
-				dataTime, err := time.Parse(utils.FormatDate, eDate)
-				if err != nil {
-					return err
-				}
 				timestamp := dataTime.UnixNano() / 1e6
 				timeStr := fmt.Sprintf("%d", timestamp)
 				saveValue := sValue
@@ -197,7 +214,21 @@ func RefreshEdbDataFromComTrade(edbInfoId int, edbCode, startDate string) (err e
 			}
 		}
 		addMap[v.DataTime] = v.DataTime
+
+		// 下面代码主要目的是处理掉手动插入的数据判断
+		{
+			if realDataMaxDate.IsZero() || dataTime.After(realDataMaxDate) {
+				realDataMaxDate = dataTime
+			}
+			if edbDataInsertConfigDate.IsZero() || dataTime.Equal(edbDataInsertConfigDate) {
+				isFindConfigDateRealData = true
+			}
+		}
 	}
+
+	// 处理手工数据补充的配置
+	HandleConfigInsertEdbData(realDataMaxDate, edbDataInsertConfig, edbInfoId, source, existMap, isFindConfigDateRealData)
+
 	if isAdd {
 		addSql = strings.TrimRight(addSql, ",")
 		_, err = o.Raw(addSql).Exec()

+ 41 - 10
models/base_from_dl.go

@@ -65,7 +65,7 @@ func GetDlDataByTradeCode(condition string, pars []interface{}) (item []*BaseFro
 	return
 }
 
-//新增郑商所指标数据
+// 新增郑商所指标数据
 func AddEdbDataFromDl(edbCode string) (err error) {
 	var suffix string
 	if strings.Contains(edbCode, "deal") {
@@ -88,10 +88,10 @@ func AddEdbDataFromDl(edbCode string) (err error) {
 
 	for _, sv := range dlBaseDataAll {
 		eDate := sv.DataTime
-		dataTime, err := time.Parse(utils.FormatDate, eDate)
+		dataTime, err := time.ParseInLocation(utils.FormatDate, eDate, time.Local)
 		if err != nil {
 			fmt.Println("time.Parse Err:" + eDate)
-			return  err
+			return err
 		}
 		timestamp := dataTime.UnixNano() / 1e6
 		timeStr := fmt.Sprintf("%d", timestamp)
@@ -124,7 +124,7 @@ func AddEdbDataFromDl(edbCode string) (err error) {
 	return
 }
 
-//刷新大商所指标数据
+// 刷新大商所指标数据
 func RefreshEdbDataFromDl(edbInfoId int, edbCode, startDate string) (err error) {
 	source := utils.DATA_SOURCE_DL
 	o := orm.NewOrm()
@@ -161,6 +161,23 @@ func RefreshEdbDataFromDl(edbInfoId int, edbCode, startDate string) (err error)
 	}
 
 	glDataList, err := GetDlDataByTradeCode(condition, pars)
+	if err != nil {
+		return
+	}
+
+	// 真实数据的最大日期  , 插入规则配置的日期
+	var realDataMaxDate, edbDataInsertConfigDate time.Time
+	var edbDataInsertConfig *EdbDataInsertConfig
+	var isFindConfigDateRealData bool //是否找到配置日期的实际数据的值
+	{
+		edbDataInsertConfig, err = GetEdbDataInsertConfigByEdbId(edbInfoId)
+		if err != nil && err.Error() != utils.ErrNoRow() {
+			return
+		}
+		if edbDataInsertConfig != nil {
+			edbDataInsertConfigDate = edbDataInsertConfig.Date
+		}
+	}
 
 	//获取指标所有数据
 	var existCondition string
@@ -195,14 +212,14 @@ func RefreshEdbDataFromDl(edbInfoId int, edbCode, startDate string) (err error)
 		}
 		item := v
 		itemValue := value
+		eDate := item.DataTime
+		dataTime, err := time.ParseInLocation(utils.FormatDate, eDate, time.Local)
+		if err != nil {
+			return err
+		}
 		if _, ok := existMap[v.DataTime]; !ok {
-			eDate := item.DataTime
 			sValue := itemValue
 			if sValue != "" {
-				dataTime, err := time.Parse(utils.FormatDate, eDate)
-				if err != nil {
-					return err
-				}
 				timestamp := dataTime.UnixNano() / 1e6
 				timeStr := fmt.Sprintf("%d", timestamp)
 				saveValue := sValue
@@ -220,7 +237,21 @@ func RefreshEdbDataFromDl(edbInfoId int, edbCode, startDate string) (err error)
 				}
 			}
 		}
+
+		// 下面代码主要目的是处理掉手动插入的数据判断
+		{
+			if realDataMaxDate.IsZero() || dataTime.After(realDataMaxDate) {
+				realDataMaxDate = dataTime
+			}
+			if edbDataInsertConfigDate.IsZero() || dataTime.Equal(edbDataInsertConfigDate) {
+				isFindConfigDateRealData = true
+			}
+		}
 	}
+
+	// 处理手工数据补充的配置
+	HandleConfigInsertEdbData(realDataMaxDate, edbDataInsertConfig, edbInfoId, source, existMap, isFindConfigDateRealData)
+
 	if isAdd {
 		addSql = strings.TrimRight(addSql, ",")
 		_, err = o.Raw(addSql).Exec()
@@ -229,4 +260,4 @@ func RefreshEdbDataFromDl(edbInfoId int, edbCode, startDate string) (err error)
 		}
 	}
 	return
-}
+}

+ 36 - 5
models/base_from_eia_steo.go

@@ -57,7 +57,7 @@ func AddEdbDataFromEiaSteo(edbCode string) (err error) {
 			sValue := utils.SubFloatToString(item.InputValue, 30)
 			if sValue != "" {
 				if _, ok := existMap[eDate]; !ok {
-					dataTime, err := time.Parse(utils.FormatDate, eDate)
+					dataTime, err := time.ParseInLocation(utils.FormatDate, eDate, time.Local)
 					if err != nil {
 						return err
 					}
@@ -104,6 +104,23 @@ func RefreshEdbDataFromEiaSteo(edbInfoId int, edbCode, startDate string) (err er
 	}
 
 	EiaSteoDataList, err := GetEiaSteoDataByCondition(condition, pars)
+	if err != nil {
+		return
+	}
+
+	// 真实数据的最大日期  , 插入规则配置的日期
+	var realDataMaxDate, edbDataInsertConfigDate time.Time
+	var edbDataInsertConfig *EdbDataInsertConfig
+	var isFindConfigDateRealData bool //是否找到配置日期的实际数据的值
+	{
+		edbDataInsertConfig, err = GetEdbDataInsertConfigByEdbId(edbInfoId)
+		if err != nil && err.Error() != utils.ErrNoRow() {
+			return
+		}
+		if edbDataInsertConfig != nil {
+			edbDataInsertConfigDate = edbDataInsertConfig.Date
+		}
+	}
 
 	var existCondition string
 	var existPars []interface{}
@@ -132,12 +149,12 @@ func RefreshEdbDataFromEiaSteo(edbInfoId int, edbCode, startDate string) (err er
 		eDate := item.DataTime
 		sValue := utils.SubFloatToString(item.InputValue, 30)
 
+		dataTime, err := time.ParseInLocation(utils.FormatDate, eDate, time.Local)
+		if err != nil {
+			return err
+		}
 		if findItem, ok := existMap[v.DataTime]; !ok {
 			if sValue != "" {
-				dataTime, err := time.Parse(utils.FormatDate, eDate)
-				if err != nil {
-					return err
-				}
 				timestamp := dataTime.UnixNano() / 1e6
 				timeStr := fmt.Sprintf("%d", timestamp)
 				saveValue := sValue
@@ -156,7 +173,21 @@ func RefreshEdbDataFromEiaSteo(edbInfoId int, edbCode, startDate string) (err er
 			}
 		}
 		addMap[v.DataTime] = v.DataTime
+
+		// 下面代码主要目的是处理掉手动插入的数据判断
+		{
+			if realDataMaxDate.IsZero() || dataTime.After(realDataMaxDate) {
+				realDataMaxDate = dataTime
+			}
+			if edbDataInsertConfigDate.IsZero() || dataTime.Equal(edbDataInsertConfigDate) {
+				isFindConfigDateRealData = true
+			}
+		}
 	}
+
+	// 处理手工数据补充的配置
+	HandleConfigInsertEdbData(realDataMaxDate, edbDataInsertConfig, edbInfoId, source, existMap, isFindConfigDateRealData)
+
 	if isAdd {
 		addSql = strings.TrimRight(addSql, ",")
 		_, err = o.Raw(addSql).Exec()

+ 44 - 12
models/base_from_gie.go

@@ -128,15 +128,15 @@ func GetGieDataByTradeCodeV2(condition string, pars []interface{}) (item []*Base
 	return
 }
 
-//新增欧洲天然气指标数据
+// 新增欧洲天然气指标数据
 func AddEdbDataFromGie(edbCode string) (err error) {
 	var suffix string
 	l := len(edbCode)
 	if strings.Contains(edbCode[l-2:], "GS") {
 		suffix = "GS"
-	}else if strings.Contains(edbCode[l-2:], "CF") {
+	} else if strings.Contains(edbCode[l-2:], "CF") {
 		suffix = "CF"
-	}  else if strings.Contains(edbCode[l-1:], "T") {
+	} else if strings.Contains(edbCode[l-1:], "T") {
 		suffix = "T"
 	} else if strings.Contains(edbCode[l-2:], "In") {
 		suffix = "In"
@@ -169,7 +169,7 @@ func AddEdbDataFromGie(edbCode string) (err error) {
 
 	for _, sv := range eicBaseDataAll {
 		eDate := sv.GasDayStart
-		dataTime, err := time.Parse(utils.FormatDate, eDate)
+		dataTime, err := time.ParseInLocation(utils.FormatDate, eDate, time.Local)
 		if err != nil {
 			fmt.Println("time.Parse Err:" + eDate)
 			return err
@@ -234,7 +234,7 @@ func AddEdbDataFromGie(edbCode string) (err error) {
 	return
 }
 
-//刷新欧洲天然气指标数据
+// 刷新欧洲天然气指标数据
 func RefreshEdbDataFromGie(edbInfoId int, edbCode, startDate string) (err error) {
 	source := utils.DATA_SOURCE_GIE
 	o := orm.NewOrm()
@@ -245,9 +245,9 @@ func RefreshEdbDataFromGie(edbInfoId int, edbCode, startDate string) (err error)
 	l := len(edbCode)
 	if strings.Contains(edbCode[l-2:], "GS") {
 		suffix = "GS"
-	}else if strings.Contains(edbCode[l-2:], "CF") {
+	} else if strings.Contains(edbCode[l-2:], "CF") {
 		suffix = "CF"
-	}  else if strings.Contains(edbCode[l-1:], "T") {
+	} else if strings.Contains(edbCode[l-1:], "T") {
 		suffix = "T"
 	} else if strings.Contains(edbCode[l-2:], "In") {
 		suffix = "In"
@@ -281,7 +281,25 @@ func RefreshEdbDataFromGie(edbInfoId int, edbCode, startDate string) (err error)
 		pars = append(pars, startDate)
 	}
 	eicDataList, err := GetGieDataByTradeCodeV2(condition, pars)
+	if err != nil {
+		return
+	}
 	fmt.Println("all eicDataList", len(eicDataList))
+
+	// 真实数据的最大日期  , 插入规则配置的日期
+	var realDataMaxDate, edbDataInsertConfigDate time.Time
+	var edbDataInsertConfig *EdbDataInsertConfig
+	var isFindConfigDateRealData bool //是否找到配置日期的实际数据的值
+	{
+		edbDataInsertConfig, err = GetEdbDataInsertConfigByEdbId(edbInfoId)
+		if err != nil && err.Error() != utils.ErrNoRow() {
+			return
+		}
+		if edbDataInsertConfig != nil {
+			edbDataInsertConfigDate = edbDataInsertConfig.Date
+		}
+	}
+
 	//获取指标所有数据
 	var existCondition string
 	var existPars []interface{}
@@ -330,14 +348,14 @@ func RefreshEdbDataFromGie(edbInfoId int, edbCode, startDate string) (err error)
 		}
 		item := v
 		itemValue := value
+		eDate := item.GasDayStart
+		dataTime, err := time.ParseInLocation(utils.FormatDate, eDate, time.Local)
+		if err != nil {
+			return err
+		}
 		if findItem, ok := existMap[v.GasDayStart]; !ok {
-			eDate := item.GasDayStart
 			sValue := itemValue
 			if sValue != "" {
-				dataTime, err := time.Parse(utils.FormatDate, eDate)
-				if err != nil {
-					return err
-				}
 				timestamp := dataTime.UnixNano() / 1e6
 				timeStr := fmt.Sprintf("%d", timestamp)
 				saveValue := sValue
@@ -356,7 +374,21 @@ func RefreshEdbDataFromGie(edbInfoId int, edbCode, startDate string) (err error)
 			}
 		}
 		dataMap[v.GasDayStart] = v.GasDayStart
+
+		// 下面代码主要目的是处理掉手动插入的数据判断
+		{
+			if realDataMaxDate.IsZero() || dataTime.After(realDataMaxDate) {
+				realDataMaxDate = dataTime
+			}
+			if edbDataInsertConfigDate.IsZero() || dataTime.Equal(edbDataInsertConfigDate) {
+				isFindConfigDateRealData = true
+			}
+		}
 	}
+
+	// 处理手工数据补充的配置
+	HandleConfigInsertEdbData(realDataMaxDate, edbDataInsertConfig, edbInfoId, source, existMap, isFindConfigDateRealData)
+
 	if isAdd {
 		addSql = strings.TrimRight(addSql, ",")
 		_, err = o.Raw(addSql).Exec()

+ 37 - 8
models/base_from_google_travel.go

@@ -44,7 +44,7 @@ func GetBaseFromChangesVisitorsCovidDataByTradeCode(condition string, pars []int
 	return
 }
 
-//新增谷歌出行指标数据
+// 新增谷歌出行指标数据
 func AddEdbDataGoogleTravel(edbCode string) (err error) {
 
 	o := orm.NewOrm()
@@ -58,7 +58,7 @@ func AddEdbDataGoogleTravel(edbCode string) (err error) {
 
 	for _, sv := range dataAll {
 		eDate := sv.Day
-		dataTime, err := time.Parse(utils.FormatDate, eDate)
+		dataTime, err := time.ParseInLocation(utils.FormatDate, eDate, time.Local)
 		if err != nil {
 			fmt.Println("time.Parse Err:" + eDate)
 			return err
@@ -79,7 +79,7 @@ func AddEdbDataGoogleTravel(edbCode string) (err error) {
 	return
 }
 
-//刷新大商所指标数据
+// 刷新大商所指标数据
 func RefreshEdbDataGoogleTravel(edbInfoId int, edbCode, startDate string) (err error) {
 	source := utils.DATA_SOURCE_GOOGLE_TRAVEL
 	o := orm.NewOrm()
@@ -105,6 +105,21 @@ func RefreshEdbDataGoogleTravel(edbInfoId int, edbCode, startDate string) (err e
 	if err != nil {
 		return err
 	}
+
+	// 真实数据的最大日期  , 插入规则配置的日期
+	var realDataMaxDate, edbDataInsertConfigDate time.Time
+	var edbDataInsertConfig *EdbDataInsertConfig
+	var isFindConfigDateRealData bool //是否找到配置日期的实际数据的值
+	{
+		edbDataInsertConfig, err = GetEdbDataInsertConfigByEdbId(edbInfoId)
+		if err != nil && err.Error() != utils.ErrNoRow() {
+			return
+		}
+		if edbDataInsertConfig != nil {
+			edbDataInsertConfigDate = edbDataInsertConfig.Date
+		}
+	}
+
 	//获取指标所有数据
 	var existCondition string
 	var existPars []interface{}
@@ -131,14 +146,14 @@ func RefreshEdbDataGoogleTravel(edbInfoId int, edbCode, startDate string) (err e
 		value := v.Total
 		item := v
 		itemValue := value
+		eDate := item.Day
+		dataTime, err := time.ParseInLocation(utils.FormatDate, eDate, time.Local)
+		if err != nil {
+			return err
+		}
 		if _, ok := existMap[v.Day]; !ok {
-			eDate := item.Day
 			sValue := itemValue
 			if sValue != "" {
-				dataTime, err := time.Parse(utils.FormatDate, eDate)
-				if err != nil {
-					return err
-				}
 				timestamp := dataTime.UnixNano() / 1e6
 				timeStr := fmt.Sprintf("%d", timestamp)
 				saveValue := sValue
@@ -156,7 +171,21 @@ func RefreshEdbDataGoogleTravel(edbInfoId int, edbCode, startDate string) (err e
 				}
 			}
 		}
+
+		// 下面代码主要目的是处理掉手动插入的数据判断
+		{
+			if realDataMaxDate.IsZero() || dataTime.After(realDataMaxDate) {
+				realDataMaxDate = dataTime
+			}
+			if edbDataInsertConfigDate.IsZero() || dataTime.Equal(edbDataInsertConfigDate) {
+				isFindConfigDateRealData = true
+			}
+		}
 	}
+
+	// 处理手工数据补充的配置
+	HandleConfigInsertEdbData(realDataMaxDate, edbDataInsertConfig, edbInfoId, source, existMap, isFindConfigDateRealData)
+
 	if isAdd {
 		addSql = strings.TrimRight(addSql, ",")
 		_, err = o.Raw(addSql).Exec()

+ 31 - 2
models/base_from_lt.go

@@ -12,7 +12,7 @@ import (
 
 //路透
 
-//新增路透指标数据
+// 新增路透指标数据
 func AddEdbDataFromLt(edbCode string, ltDataList map[int64]interface{}) (err error) {
 	o := orm.NewOrm()
 	if len(ltDataList) > 0 {
@@ -52,11 +52,25 @@ func AddEdbDataFromLt(edbCode string, ltDataList map[int64]interface{}) (err err
 	return
 }
 
-//刷新路透指标数据
+// 刷新路透指标数据
 func RefreshEdbDataFromLt(edbInfoId int, edbCode, startDate string, ltDataList map[int64]interface{}) (err error) {
 	source := utils.DATA_SOURCE_LT
 	o := orm.NewOrm()
 
+	// 真实数据的最大日期  , 插入规则配置的日期
+	var realDataMaxDate, edbDataInsertConfigDate time.Time
+	var edbDataInsertConfig *EdbDataInsertConfig
+	var isFindConfigDateRealData bool //是否找到配置日期的实际数据的值
+	{
+		edbDataInsertConfig, err = GetEdbDataInsertConfigByEdbId(edbInfoId)
+		if err != nil && err.Error() != utils.ErrNoRow() {
+			return
+		}
+		if edbDataInsertConfig != nil {
+			edbDataInsertConfigDate = edbDataInsertConfig.Date
+		}
+	}
+
 	var existCondition string
 	var existPars []interface{}
 
@@ -98,6 +112,7 @@ func RefreshEdbDataFromLt(edbInfoId int, edbCode, startDate string, ltDataList m
 		if err != nil {
 			return err
 		}
+		dataTime, _ = time.ParseInLocation(utils.FormatDate, eDate, time.Local) //这么弄的主要目的是为了北京时间
 
 		saveValue := utils.SubFloatToString(sValue, 30)
 		if findItem, ok := existMap[eDate]; !ok {
@@ -114,7 +129,21 @@ func RefreshEdbDataFromLt(edbInfoId int, edbCode, startDate string, ltDataList m
 				}
 			}
 		}
+
+		// 下面代码主要目的是处理掉手动插入的数据判断
+		{
+			if realDataMaxDate.IsZero() || dataTime.After(realDataMaxDate) {
+				realDataMaxDate = dataTime
+			}
+			if edbDataInsertConfigDate.IsZero() || dataTime.Equal(edbDataInsertConfigDate) {
+				isFindConfigDateRealData = true
+			}
+		}
 	}
+
+	// 处理手工数据补充的配置
+	HandleConfigInsertEdbData(realDataMaxDate, edbDataInsertConfig, edbInfoId, source, existMap, isFindConfigDateRealData)
+
 	if isAdd {
 		addSql = strings.TrimRight(addSql, ",")
 		_, err = o.Raw(addSql).Exec()

+ 31 - 6
models/base_from_lz.go

@@ -29,7 +29,7 @@ func GetLzSurveyDataFromLz(condition string, pars []interface{}) (item []*lzSurv
 	return
 }
 
-//新增钢联指标数据
+// 新增钢联指标数据
 func AddEdbDataFromLz(edbCode string) (err error) {
 	o := orm.NewOrm()
 
@@ -54,7 +54,7 @@ func AddEdbDataFromLz(edbCode string) (err error) {
 			item := lzDataList[i]
 			eDate := item.DataTime
 			sValue := item.InputValue
-			dataTime, err := time.Parse(utils.FormatDate, eDate)
+			dataTime, err := time.ParseInLocation(utils.FormatDate, eDate, time.Local)
 			if err != nil {
 				return err
 			}
@@ -75,14 +75,25 @@ func AddEdbDataFromLz(edbCode string) (err error) {
 	return
 }
 
-//刷新隆众指标数据
+// 刷新隆众指标数据
 func RefreshEdbDataFromLz(edbInfoId int, edbCode, startDate string) (err error) {
 	source := utils.DATA_SOURCE_LZ
 	o := orm.NewOrm()
 
-	if err != nil {
-		return
+	// 真实数据的最大日期  , 插入规则配置的日期
+	var realDataMaxDate, edbDataInsertConfigDate time.Time
+	var edbDataInsertConfig *EdbDataInsertConfig
+	var isFindConfigDateRealData bool //是否找到配置日期的实际数据的值
+	{
+		edbDataInsertConfig, err = GetEdbDataInsertConfigByEdbId(edbInfoId)
+		if err != nil && err.Error() != utils.ErrNoRow() {
+			return
+		}
+		if edbDataInsertConfig != nil {
+			edbDataInsertConfigDate = edbDataInsertConfig.Date
+		}
 	}
+
 	edbInfoIdStr := strconv.Itoa(edbInfoId)
 	//计算数据
 	var condition string
@@ -125,7 +136,7 @@ func RefreshEdbDataFromLz(edbInfoId int, edbCode, startDate string) (err error)
 
 		eDate := item.DataTime
 		sValue := item.InputValue
-		dataTime, err := time.Parse(utils.FormatDate, eDate)
+		dataTime, err := time.ParseInLocation(utils.FormatDate, eDate, time.Local)
 		if err != nil {
 			return err
 		}
@@ -144,7 +155,21 @@ func RefreshEdbDataFromLz(edbInfoId int, edbCode, startDate string) (err error)
 				}
 			}
 		}
+
+		// 下面代码主要目的是处理掉手动插入的数据判断
+		{
+			if realDataMaxDate.IsZero() || dataTime.After(realDataMaxDate) {
+				realDataMaxDate = dataTime
+			}
+			if edbDataInsertConfigDate.IsZero() || dataTime.Equal(edbDataInsertConfigDate) {
+				isFindConfigDateRealData = true
+			}
+		}
 	}
+
+	// 处理手工数据补充的配置
+	HandleConfigInsertEdbData(realDataMaxDate, edbDataInsertConfig, edbInfoId, source, existMap, isFindConfigDateRealData)
+
 	if isAdd {
 		addSql = strings.TrimRight(addSql, ",")
 		_, err = o.Raw(addSql).Exec()

+ 79 - 9
models/base_from_manual.go

@@ -54,7 +54,7 @@ func AddEdbDataFromManual(edbCode string) (err error) {
 			item := manualDataList[i]
 			eDate := item.Dt
 			sValue := item.Close
-			dataTime, err := time.Parse(utils.FormatDate, eDate)
+			dataTime, err := time.ParseInLocation(utils.FormatDate, eDate, time.Local)
 			if err != nil {
 				return err
 			}
@@ -97,6 +97,25 @@ func RefreshEdbDataFromManual(edbInfoId int, edbCode, startDate string) (err err
 	}
 
 	manualDataList, err := GetEdbdataManualByCondition(condition, pars)
+	if err != nil {
+		return
+	}
+
+	// 真实数据的最大日期  , 插入规则配置的日期
+	var realDataMaxDate, edbDataInsertConfigDate time.Time
+	var edbDataInsertConfig *EdbDataInsertConfig
+	var isFindConfigDateRealData bool //是否找到配置日期的实际数据的值
+	edbDataInsertConfigDateStr := ``
+	{
+		edbDataInsertConfig, err = GetEdbDataInsertConfigByEdbId(edbInfoId)
+		if err != nil && err.Error() != utils.ErrNoRow() {
+			return
+		}
+		if edbDataInsertConfig != nil {
+			edbDataInsertConfigDate = edbDataInsertConfig.Date
+			edbDataInsertConfigDateStr = edbDataInsertConfig.Date.Format(utils.FormatDate)
+		}
+	}
 
 	var existCondition string
 	var existPars []interface{}
@@ -123,15 +142,16 @@ func RefreshEdbDataFromManual(edbInfoId int, edbCode, startDate string) (err err
 	//fmt.Println("manualDataList:", len(manualDataList))
 	for _, v := range manualDataList {
 		item := v
+		eDate := item.Dt
+		sValue := item.Close
+
+		dataTime, err := time.ParseInLocation(utils.FormatDate, eDate, time.Local)
+		if err != nil {
+			return err
+		}
+
 		//fmt.Println("Item:", item.Dt, item.Close, item.TradeCode, item.ModifyTime)
 		if findItem, ok := existMap[v.Dt]; !ok {
-			eDate := item.Dt
-			sValue := item.Close
-
-			dataTime, err := time.Parse(utils.FormatDate, eDate)
-			if err != nil {
-				return err
-			}
 			timestamp := dataTime.UnixNano() / 1e6
 			timeStr := fmt.Sprintf("%d", timestamp)
 
@@ -146,10 +166,25 @@ func RefreshEdbDataFromManual(edbInfoId int, edbCode, startDate string) (err err
 			}
 		}
 		manualMap[v.Dt] = v
+
+		// 下面代码主要目的是处理掉手动插入的数据判断
+		{
+			if realDataMaxDate.IsZero() || dataTime.After(realDataMaxDate) {
+				realDataMaxDate = dataTime
+			}
+			if edbDataInsertConfigDate.IsZero() || dataTime.Equal(edbDataInsertConfigDate) {
+				isFindConfigDateRealData = true
+			}
+		}
 	}
 	for _, v := range existList {
 		if _, ok := manualMap[v.DataTime]; !ok {
-			go DeleteEdbDataById(utils.DATA_SOURCE_MANUAL, v.EdbDataId)
+			// 正常来讲,如果来源数据移除了该日期的数据,也需要删除ETA指标的值
+
+			// 但是由于引入手动插入最新值,那么需要判断该日期值,是否等于,如果等于,则不删除该日期值
+			if edbDataInsertConfigDateStr == `` || edbDataInsertConfigDateStr != v.DataTime {
+				DeleteEdbDataById(utils.DATA_SOURCE_MANUAL, v.EdbDataId)
+			}
 		}
 	}
 	if isAdd {
@@ -160,5 +195,40 @@ func RefreshEdbDataFromManual(edbInfoId int, edbCode, startDate string) (err err
 			return
 		}
 	}
+
+	// 处理手工数据补充的配置
+	HandleConfigInsertEdbData(realDataMaxDate, edbDataInsertConfig, edbInfoId, source, existMap, isFindConfigDateRealData)
+
+	return
+}
+
+// HandleConfigInsertEdbData 处理手工数据补充的配置
+func HandleConfigInsertEdbData(realDataMaxDate time.Time, edbDataInsertConfig *EdbDataInsertConfig, edbInfoId, source int, existMap map[string]*EdbInfoSearchData, isFindConfigDateRealData bool) {
+	if edbDataInsertConfig == nil {
+		return
+	}
+	var err error
+	defer func() {
+		if err != nil {
+			fmt.Println("处理手工数据补充的配置失败,err:", err)
+		}
+	}()
+	edbDataInsertConfigDate := edbDataInsertConfig.Date // 配置的日期
+
+	// 如果存在真实数据的最大日期  && 存在配置插入数据的最大日期  && 真实数据的最大日期 晚于/等于 配置插入数据的最大日期
+	if realDataMaxDate.After(edbDataInsertConfigDate) || realDataMaxDate.Equal(edbDataInsertConfigDate) {
+		go DeleteEdbDataInsertConfigByEdbId(edbInfoId)
+
+		edbDataInsertConfigDateStr := edbDataInsertConfigDate.Format(utils.FormatDate)
+		// 如果没有找到找到配置日期的实际数据,那么就直接删除
+		if item, ok := existMap[edbDataInsertConfigDateStr]; ok && !isFindConfigDateRealData {
+			DeleteEdbDataById(source, item.EdbDataId)
+		}
+	} else {
+		o := orm.NewOrm()
+		edbDataInsertConfig.RealDate = realDataMaxDate
+		_, err = o.Update(edbDataInsertConfig, "RealDate")
+	}
+
 	return
 }

+ 38 - 7
models/base_from_mysteel.go

@@ -42,7 +42,7 @@ func GetGlDataByCondition(condition string, pars []interface{}) (item []*GlData,
 	return
 }
 
-//新增钢联指标数据
+// 新增钢联指标数据
 func AddEdbDataFromMysteel(edbCode string) (err error) {
 	o := orm.NewOrm()
 
@@ -71,7 +71,7 @@ func AddEdbDataFromMysteel(edbCode string) (err error) {
 			sValue := utils.SubFloatToString(item.InputValue, 30)
 			if sValue != "" {
 				if _, ok := existMap[eDate]; !ok {
-					dataTime, err := time.Parse(utils.FormatDate, eDate)
+					dataTime, err := time.ParseInLocation(utils.FormatDate, eDate, time.Local)
 					if err != nil {
 						return err
 					}
@@ -95,7 +95,7 @@ func AddEdbDataFromMysteel(edbCode string) (err error) {
 	return
 }
 
-//刷新钢联指标数据
+// 刷新钢联指标数据
 func RefreshEdbDataFromMysteel(edbInfoId int, edbCode, startDate string) (err error) {
 	source := utils.DATA_SOURCE_GL
 	o := orm.NewOrm()
@@ -118,6 +118,23 @@ func RefreshEdbDataFromMysteel(edbInfoId int, edbCode, startDate string) (err er
 	}
 
 	glDataList, err := GetGlDataByCondition(condition, pars)
+	if err != nil {
+		return
+	}
+
+	// 真实数据的最大日期  , 插入规则配置的日期
+	var realDataMaxDate, edbDataInsertConfigDate time.Time
+	var edbDataInsertConfig *EdbDataInsertConfig
+	var isFindConfigDateRealData bool //是否找到配置日期的实际数据的值
+	{
+		edbDataInsertConfig, err = GetEdbDataInsertConfigByEdbId(edbInfoId)
+		if err != nil && err.Error() != utils.ErrNoRow() {
+			return
+		}
+		if edbDataInsertConfig != nil {
+			edbDataInsertConfigDate = edbDataInsertConfig.Date
+		}
+	}
 
 	var existCondition string
 	var existPars []interface{}
@@ -146,12 +163,12 @@ func RefreshEdbDataFromMysteel(edbInfoId int, edbCode, startDate string) (err er
 		eDate := item.DataTime
 		sValue := utils.SubFloatToString(item.InputValue, 30)
 
+		dataTime, err := time.ParseInLocation(utils.FormatDate, eDate, time.Local)
+		if err != nil {
+			return err
+		}
 		if findItem, ok := existMap[v.DataTime]; !ok {
 			if sValue != "" {
-				dataTime, err := time.Parse(utils.FormatDate, eDate)
-				if err != nil {
-					return err
-				}
 				timestamp := dataTime.UnixNano() / 1e6
 				timeStr := fmt.Sprintf("%d", timestamp)
 				saveValue := sValue
@@ -170,7 +187,21 @@ func RefreshEdbDataFromMysteel(edbInfoId int, edbCode, startDate string) (err er
 			}
 		}
 		addMap[v.DataTime] = v.DataTime
+
+		// 下面代码主要目的是处理掉手动插入的数据判断
+		{
+			if realDataMaxDate.IsZero() || dataTime.After(realDataMaxDate) {
+				realDataMaxDate = dataTime
+			}
+			if edbDataInsertConfigDate.IsZero() || dataTime.Equal(edbDataInsertConfigDate) {
+				isFindConfigDateRealData = true
+			}
+		}
 	}
+
+	// 处理手工数据补充的配置
+	HandleConfigInsertEdbData(realDataMaxDate, edbDataInsertConfig, edbInfoId, source, existMap, isFindConfigDateRealData)
+
 	if isAdd {
 		addSql = strings.TrimRight(addSql, ",")
 		_, err = o.Raw(addSql).Exec()

+ 36 - 5
models/base_from_mysteel_chemical.go

@@ -57,7 +57,7 @@ func AddEdbDataFromMysteelChemical(edbCode string) (err error) {
 			sValue := utils.SubFloatToString(item.InputValue, 30)
 			if sValue != "" {
 				if _, ok := existMap[eDate]; !ok {
-					dataTime, err := time.Parse(utils.FormatDate, eDate)
+					dataTime, err := time.ParseInLocation(utils.FormatDate, eDate, time.Local)
 					if err != nil {
 						return err
 					}
@@ -104,6 +104,23 @@ func RefreshEdbDataFromMysteelChemical(edbInfoId int, edbCode, startDate string)
 	}
 
 	mysteelChemicalDataList, err := GetMysteelChemicalDataByCondition(condition, pars)
+	if err != nil {
+		return
+	}
+
+	// 真实数据的最大日期  , 插入规则配置的日期
+	var realDataMaxDate, edbDataInsertConfigDate time.Time
+	var edbDataInsertConfig *EdbDataInsertConfig
+	var isFindConfigDateRealData bool //是否找到配置日期的实际数据的值
+	{
+		edbDataInsertConfig, err = GetEdbDataInsertConfigByEdbId(edbInfoId)
+		if err != nil && err.Error() != utils.ErrNoRow() {
+			return
+		}
+		if edbDataInsertConfig != nil {
+			edbDataInsertConfigDate = edbDataInsertConfig.Date
+		}
+	}
 
 	var existCondition string
 	var existPars []interface{}
@@ -132,12 +149,12 @@ func RefreshEdbDataFromMysteelChemical(edbInfoId int, edbCode, startDate string)
 		eDate := item.DataTime
 		sValue := utils.SubFloatToString(item.InputValue, 30)
 
+		dataTime, err := time.ParseInLocation(utils.FormatDate, eDate, time.Local)
+		if err != nil {
+			return err
+		}
 		if findItem, ok := existMap[v.DataTime]; !ok {
 			if sValue != "" {
-				dataTime, err := time.Parse(utils.FormatDate, eDate)
-				if err != nil {
-					return err
-				}
 				timestamp := dataTime.UnixNano() / 1e6
 				timeStr := fmt.Sprintf("%d", timestamp)
 				saveValue := sValue
@@ -156,7 +173,21 @@ func RefreshEdbDataFromMysteelChemical(edbInfoId int, edbCode, startDate string)
 			}
 		}
 		addMap[v.DataTime] = v.DataTime
+
+		// 下面代码主要目的是处理掉手动插入的数据判断
+		{
+			if realDataMaxDate.IsZero() || dataTime.After(realDataMaxDate) {
+				realDataMaxDate = dataTime
+			}
+			if edbDataInsertConfigDate.IsZero() || dataTime.Equal(edbDataInsertConfigDate) {
+				isFindConfigDateRealData = true
+			}
+		}
 	}
+
+	// 处理手工数据补充的配置
+	HandleConfigInsertEdbData(realDataMaxDate, edbDataInsertConfig, edbInfoId, source, existMap, isFindConfigDateRealData)
+
 	if isAdd {
 		addSql = strings.TrimRight(addSql, ",")
 		_, err = o.Raw(addSql).Exec()

+ 31 - 1
models/base_from_pb.go

@@ -57,11 +57,25 @@ func AddEdbDataFromPb(edbCode string, item *services.EdbDataFromPb) (err error)
 	return
 }
 
-//刷新彭博指标数据
+// 刷新彭博指标数据
 func RefreshEdbDataFromPb(edbInfoId int, edbCode, startDate string, item *services.EdbDataFromPb) (err error) {
 	o := orm.NewOrm()
 	source := utils.DATA_SOURCE_PB
 
+	// 真实数据的最大日期  , 插入规则配置的日期
+	var realDataMaxDate, edbDataInsertConfigDate time.Time
+	var edbDataInsertConfig *EdbDataInsertConfig
+	var isFindConfigDateRealData bool //是否找到配置日期的实际数据的值
+	{
+		edbDataInsertConfig, err = GetEdbDataInsertConfigByEdbId(edbInfoId)
+		if err != nil && err.Error() != utils.ErrNoRow() {
+			return
+		}
+		if edbDataInsertConfig != nil {
+			edbDataInsertConfigDate = edbDataInsertConfig.Date
+		}
+	}
+
 	var condition string
 	var pars []interface{}
 
@@ -88,6 +102,8 @@ func RefreshEdbDataFromPb(edbInfoId int, edbCode, startDate string, item *servic
 			v = v / 1000
 			t := time.Unix(v, 0)
 			dateTime := t.Format(utils.FormatDate)
+			t, _ = time.ParseInLocation(utils.FormatDate, dateTime, time.Local) //这里的目的是为了北京时间,以防万一,还是重新转一下吧
+
 			val := item.Value[k]
 			field := item.Field[k]
 			ticker := item.Ticker[k]
@@ -110,9 +126,23 @@ func RefreshEdbDataFromPb(edbInfoId int, edbCode, startDate string, item *servic
 						}
 					}
 				}
+
+				// 下面代码主要目的是处理掉手动插入的数据判断
+				{
+					if realDataMaxDate.IsZero() || t.After(realDataMaxDate) {
+						realDataMaxDate = t
+					}
+					if edbDataInsertConfigDate.IsZero() || t.Equal(edbDataInsertConfigDate) {
+						isFindConfigDateRealData = true
+					}
+				}
 			}
+
 		}
 
+		// 处理手工数据补充的配置
+		HandleConfigInsertEdbData(realDataMaxDate, edbDataInsertConfig, edbInfoId, source, existMap, isFindConfigDateRealData)
+
 		if isAdd {
 			addSql = strings.TrimRight(addSql, ",")
 			_, err = o.Raw(addSql).Exec()

+ 30 - 1
models/base_from_pb_finance.go

@@ -55,11 +55,25 @@ func AddEdbDataFromPbFinance(edbCode string, item *services.EdbDataFromPb) (err
 	return
 }
 
-//刷新彭博指标数据
+// 刷新彭博指标数据
 func RefreshEdbDataFromPbFinance(edbInfoId int, edbCode, startDate string, item *services.EdbDataFromPb) (err error) {
 	o := orm.NewOrm()
 	source := utils.DATA_SOURCE_PB_FINANCE
 
+	// 真实数据的最大日期  , 插入规则配置的日期
+	var realDataMaxDate, edbDataInsertConfigDate time.Time
+	var edbDataInsertConfig *EdbDataInsertConfig
+	var isFindConfigDateRealData bool //是否找到配置日期的实际数据的值
+	{
+		edbDataInsertConfig, err = GetEdbDataInsertConfigByEdbId(edbInfoId)
+		if err != nil && err.Error() != utils.ErrNoRow() {
+			return
+		}
+		if edbDataInsertConfig != nil {
+			edbDataInsertConfigDate = edbDataInsertConfig.Date
+		}
+	}
+
 	var condition string
 	var pars []interface{}
 
@@ -86,6 +100,8 @@ func RefreshEdbDataFromPbFinance(edbInfoId int, edbCode, startDate string, item
 			v = v / 1000
 			t := time.Unix(v, 0)
 			dateTime := t.Format(utils.FormatDate)
+			t, _ = time.ParseInLocation(utils.FormatDate, dateTime, time.Local) //这里的目的是为了北京时间,以防万一,还是重新转一下吧
+
 			val := item.Value[k]
 			field := item.Field[k]
 			ticker := item.Ticker[k]
@@ -108,9 +124,22 @@ func RefreshEdbDataFromPbFinance(edbInfoId int, edbCode, startDate string, item
 						}
 					}
 				}
+
+				// 下面代码主要目的是处理掉手动插入的数据判断
+				{
+					if realDataMaxDate.IsZero() || t.After(realDataMaxDate) {
+						realDataMaxDate = t
+					}
+					if edbDataInsertConfigDate.IsZero() || t.Equal(edbDataInsertConfigDate) {
+						isFindConfigDateRealData = true
+					}
+				}
 			}
 		}
 
+		// 处理手工数据补充的配置
+		HandleConfigInsertEdbData(realDataMaxDate, edbDataInsertConfig, edbInfoId, source, existMap, isFindConfigDateRealData)
+
 		if isAdd {
 			addSql = strings.TrimRight(addSql, ",")
 			_, err = o.Raw(addSql).Exec()

+ 3 - 3
models/base_from_python.go

@@ -59,7 +59,7 @@ func AddPythonEdb(edbInfoId int, edbCode string, item services.EdbDataFromPython
 	addSql := ` INSERT INTO edb_data_python (edb_info_id,edb_code,data_time,value,create_time,modify_time,data_timestamp) values `
 	for k, dateTimeStr := range item.Date {
 		//格式化时间
-		currentDate, tmpErr := time.Parse(utils.FormatDate, dateTimeStr)
+		currentDate, tmpErr := time.ParseInLocation(utils.FormatDate, dateTimeStr, time.Local)
 		if tmpErr != nil {
 			err = tmpErr
 			return
@@ -100,7 +100,7 @@ func EditPythonEdb(edbInfoId int, edbCode string, item services.EdbDataFromPytho
 	addSql := ` INSERT INTO edb_data_python (edb_info_id,edb_code,data_time,value,create_time,modify_time,data_timestamp) values `
 	for k, dateTimeStr := range item.Date {
 		//格式化时间
-		currentDate, tmpErr := time.Parse(utils.FormatDate, dateTimeStr)
+		currentDate, tmpErr := time.ParseInLocation(utils.FormatDate, dateTimeStr, time.Local)
 		if tmpErr != nil {
 			err = tmpErr
 			return
@@ -190,7 +190,7 @@ func RefreshAllPythonEdb(edbInfo *EdbInfo, item services.EdbDataFromPython) (err
 		addDataList := make([]*EdbDataPython, 0)
 		for dataTime, dataValue := range pythonDataMap {
 			//时间戳
-			currentDate, _ := time.Parse(utils.FormatDate, dataTime)
+			currentDate, _ := time.ParseInLocation(utils.FormatDate, dataTime, time.Local)
 			timestamp := currentDate.UnixNano() / 1e6
 
 			edbDataPython := &EdbDataPython{

+ 39 - 9
models/base_from_sci.go

@@ -31,7 +31,7 @@ func GetBaseFromSciDataByCondition(condition string, pars []interface{}) (list [
 	return
 }
 
-//新增有色指标数据
+// 新增有色指标数据
 func AddEdbDataFromSci(edbCode string) (err error) {
 	o := orm.NewOrm()
 
@@ -50,7 +50,7 @@ func AddEdbDataFromSci(edbCode string) (err error) {
 	existMap := make(map[string]string)
 	for _, sv := range sciBaseDataAll {
 		eDate := sv.DataTime
-		dataTime, err := time.Parse(utils.FormatDate, eDate)
+		dataTime, err := time.ParseInLocation(utils.FormatDate, eDate, time.Local)
 		if err != nil {
 			return err
 		}
@@ -73,7 +73,7 @@ func AddEdbDataFromSci(edbCode string) (err error) {
 	return
 }
 
-//刷新有色指标数据
+// 刷新有色指标数据
 func RefreshEdbDataFromSci(edbInfoId int, edbCode, startDate string) (err error) {
 	source := utils.DATA_SOURCE_SCI
 	o := orm.NewOrm()
@@ -96,6 +96,23 @@ func RefreshEdbDataFromSci(edbInfoId int, edbCode, startDate string) (err error)
 	}
 
 	sciDataList, err := GetBaseFromSciDataByCondition(condition, pars)
+	if err != nil {
+		return
+	}
+
+	// 真实数据的最大日期  , 插入规则配置的日期
+	var realDataMaxDate, edbDataInsertConfigDate time.Time
+	var edbDataInsertConfig *EdbDataInsertConfig
+	var isFindConfigDateRealData bool //是否找到配置日期的实际数据的值
+	{
+		edbDataInsertConfig, err = GetEdbDataInsertConfigByEdbId(edbInfoId)
+		if err != nil && err.Error() != utils.ErrNoRow() {
+			return
+		}
+		if edbDataInsertConfig != nil {
+			edbDataInsertConfigDate = edbDataInsertConfig.Date
+		}
+	}
 
 	var existCondition string
 	var existPars []interface{}
@@ -119,14 +136,14 @@ func RefreshEdbDataFromSci(edbInfoId int, edbCode, startDate string) (err error)
 	var isAdd bool
 	for _, v := range sciDataList {
 		item := v
+
+		eDate := item.DataTime
+		dataTime, err := time.ParseInLocation(utils.FormatDate, eDate, time.Local)
+		if err != nil {
+			return err
+		}
 		if findItem, ok := existMap[v.DataTime]; !ok {
-			eDate := item.DataTime
 			sValue := item.Value
-
-			dataTime, err := time.Parse(utils.FormatDate, eDate)
-			if err != nil {
-				return err
-			}
 			timestamp := dataTime.UnixNano() / 1e6
 			timeStr := fmt.Sprintf("%d", timestamp)
 
@@ -140,8 +157,21 @@ func RefreshEdbDataFromSci(edbInfoId int, edbCode, startDate string) (err error)
 				}
 			}
 		}
+
+		// 下面代码主要目的是处理掉手动插入的数据判断
+		{
+			if realDataMaxDate.IsZero() || dataTime.After(realDataMaxDate) {
+				realDataMaxDate = dataTime
+			}
+			if edbDataInsertConfigDate.IsZero() || dataTime.Equal(edbDataInsertConfigDate) {
+				isFindConfigDateRealData = true
+			}
+		}
 	}
 
+	// 处理手工数据补充的配置
+	HandleConfigInsertEdbData(realDataMaxDate, edbDataInsertConfig, edbInfoId, source, existMap, isFindConfigDateRealData)
+
 	if isAdd {
 		addSql = strings.TrimRight(addSql, ",")
 		_, err = o.Raw(addSql).Exec()

+ 42 - 11
models/base_from_sh.go

@@ -65,7 +65,7 @@ func GetShDataByTradeCode(condition string, pars []interface{}) (item []*BaseFro
 	return
 }
 
-//新增上期所指标数据
+// 新增上期所指标数据
 func AddEdbDataFromSh(edbCode string) (err error) {
 	var suffix string
 	if strings.Contains(edbCode, "deal") {
@@ -89,10 +89,10 @@ func AddEdbDataFromSh(edbCode string) (err error) {
 
 	for _, sv := range shBaseDataAll {
 		eDate := sv.DataTime
-		dataTime, err := time.Parse(utils.FormatDate, eDate)
+		dataTime, err := time.ParseInLocation(utils.FormatDate, eDate, time.Local)
 		if err != nil {
 			fmt.Println("time.Parse Err:" + eDate)
-			return  err
+			return err
 		}
 		timestamp := dataTime.UnixNano() / 1e6
 		timeStr := fmt.Sprintf("%d", timestamp)
@@ -119,13 +119,13 @@ func AddEdbDataFromSh(edbCode string) (err error) {
 		utils.FileLog.Info("addSql:" + addSql)
 		_, err = o.Raw(addSql).Exec()
 		if err != nil {
-			return  err
+			return err
 		}
 	}
 	return
 }
 
-//刷新上期所指标数据
+// 刷新上期所指标数据
 func RefreshEdbDataFromSh(edbInfoId int, edbCode, startDate string) (err error) {
 	source := utils.DATA_SOURCE_SH
 	o := orm.NewOrm()
@@ -162,6 +162,23 @@ func RefreshEdbDataFromSh(edbInfoId int, edbCode, startDate string) (err error)
 	}
 
 	glDataList, err := GetShDataByTradeCode(condition, pars)
+	if err != nil {
+		return
+	}
+
+	// 真实数据的最大日期  , 插入规则配置的日期
+	var realDataMaxDate, edbDataInsertConfigDate time.Time
+	var edbDataInsertConfig *EdbDataInsertConfig
+	var isFindConfigDateRealData bool //是否找到配置日期的实际数据的值
+	{
+		edbDataInsertConfig, err = GetEdbDataInsertConfigByEdbId(edbInfoId)
+		if err != nil && err.Error() != utils.ErrNoRow() {
+			return
+		}
+		if edbDataInsertConfig != nil {
+			edbDataInsertConfigDate = edbDataInsertConfig.Date
+		}
+	}
 
 	//获取指标所有数据
 	var existCondition string
@@ -196,14 +213,14 @@ func RefreshEdbDataFromSh(edbInfoId int, edbCode, startDate string) (err error)
 		}
 		item := v
 		itemValue := value
+		eDate := item.DataTime
+		dataTime, err := time.ParseInLocation(utils.FormatDate, eDate, time.Local)
+		if err != nil {
+			return err
+		}
 		if _, ok := existMap[v.DataTime]; !ok {
-			eDate := item.DataTime
 			sValue := itemValue
 			if sValue != "" {
-				dataTime, err := time.Parse(utils.FormatDate, eDate)
-				if err != nil {
-					return err
-				}
 				timestamp := dataTime.UnixNano() / 1e6
 				timeStr := fmt.Sprintf("%d", timestamp)
 				saveValue := sValue
@@ -221,7 +238,21 @@ func RefreshEdbDataFromSh(edbInfoId int, edbCode, startDate string) (err error)
 				}
 			}
 		}
+
+		// 下面代码主要目的是处理掉手动插入的数据判断
+		{
+			if realDataMaxDate.IsZero() || dataTime.After(realDataMaxDate) {
+				realDataMaxDate = dataTime
+			}
+			if edbDataInsertConfigDate.IsZero() || dataTime.Equal(edbDataInsertConfigDate) {
+				isFindConfigDateRealData = true
+			}
+		}
 	}
+
+	// 处理手工数据补充的配置
+	HandleConfigInsertEdbData(realDataMaxDate, edbDataInsertConfig, edbInfoId, source, existMap, isFindConfigDateRealData)
+
 	if isAdd {
 		addSql = strings.TrimRight(addSql, ",")
 		_, err = o.Raw(addSql).Exec()
@@ -230,4 +261,4 @@ func RefreshEdbDataFromSh(edbInfoId int, edbCode, startDate string) (err error)
 		}
 	}
 	return
-}
+}

+ 40 - 9
models/base_from_shfe.go

@@ -65,7 +65,7 @@ func GetShfeDataByTradeCode(condition string, pars []interface{}) (item []*BaseF
 	return
 }
 
-//新增上期能源指标数据
+// 新增上期能源指标数据
 func AddEdbDataFromShfe(edbCode string) (err error) {
 	var suffix string
 	if strings.Contains(edbCode, "deal") {
@@ -87,7 +87,7 @@ func AddEdbDataFromShfe(edbCode string) (err error) {
 
 	for _, sv := range ineBaseDataAll {
 		eDate := sv.DataTime
-		dataTime, err := time.Parse(utils.FormatDate, eDate)
+		dataTime, err := time.ParseInLocation(utils.FormatDate, eDate, time.Local)
 		if err != nil {
 			fmt.Println("time.Parse Err:" + eDate)
 			return err
@@ -123,7 +123,7 @@ func AddEdbDataFromShfe(edbCode string) (err error) {
 	return
 }
 
-//刷新上期能源指标数据
+// 刷新上期能源指标数据
 func RefreshEdbDataFromShfe(edbInfoId int, edbCode, startDate string) (err error) {
 	source := utils.DATA_SOURCE_SHFE
 	o := orm.NewOrm()
@@ -160,6 +160,23 @@ func RefreshEdbDataFromShfe(edbInfoId int, edbCode, startDate string) (err error
 	}
 
 	glDataList, err := GetShfeDataByTradeCode(condition, pars)
+	if err != nil {
+		return
+	}
+
+	// 真实数据的最大日期  , 插入规则配置的日期
+	var realDataMaxDate, edbDataInsertConfigDate time.Time
+	var edbDataInsertConfig *EdbDataInsertConfig
+	var isFindConfigDateRealData bool //是否找到配置日期的实际数据的值
+	{
+		edbDataInsertConfig, err = GetEdbDataInsertConfigByEdbId(edbInfoId)
+		if err != nil && err.Error() != utils.ErrNoRow() {
+			return
+		}
+		if edbDataInsertConfig != nil {
+			edbDataInsertConfigDate = edbDataInsertConfig.Date
+		}
+	}
 
 	//获取指标所有数据
 	var existCondition string
@@ -194,14 +211,14 @@ func RefreshEdbDataFromShfe(edbInfoId int, edbCode, startDate string) (err error
 		}
 		item := v
 		itemValue := value
+		eDate := item.DataTime
+		dataTime, err := time.ParseInLocation(utils.FormatDate, eDate, time.Local)
+		if err != nil {
+			return err
+		}
 		if _, ok := existMap[v.DataTime]; !ok {
-			eDate := item.DataTime
 			sValue := itemValue
 			if sValue != "" {
-				dataTime, err := time.Parse(utils.FormatDate, eDate)
-				if err != nil {
-					return err
-				}
 				timestamp := dataTime.UnixNano() / 1e6
 				timeStr := fmt.Sprintf("%d", timestamp)
 				saveValue := sValue
@@ -219,7 +236,21 @@ func RefreshEdbDataFromShfe(edbInfoId int, edbCode, startDate string) (err error
 				}
 			}
 		}
+
+		// 下面代码主要目的是处理掉手动插入的数据判断
+		{
+			if realDataMaxDate.IsZero() || dataTime.After(realDataMaxDate) {
+				realDataMaxDate = dataTime
+			}
+			if edbDataInsertConfigDate.IsZero() || dataTime.Equal(edbDataInsertConfigDate) {
+				isFindConfigDateRealData = true
+			}
+		}
 	}
+
+	// 处理手工数据补充的配置
+	HandleConfigInsertEdbData(realDataMaxDate, edbDataInsertConfig, edbInfoId, source, existMap, isFindConfigDateRealData)
+
 	if isAdd {
 		addSql = strings.TrimRight(addSql, ",")
 		_, err = o.Raw(addSql).Exec()
@@ -228,4 +259,4 @@ func RefreshEdbDataFromShfe(edbInfoId int, edbCode, startDate string) (err error
 		}
 	}
 	return
-}
+}

+ 38 - 8
models/base_from_smm.go

@@ -31,7 +31,7 @@ func GetBaseFromSmmDataByCondition(condition string, pars []interface{}) (list [
 	return
 }
 
-//新增有色指标数据
+// 新增有色指标数据
 func AddEdbDataFromSmm(edbCode string) (err error) {
 	o := orm.NewOrm()
 
@@ -50,7 +50,7 @@ func AddEdbDataFromSmm(edbCode string) (err error) {
 	existMap := make(map[string]string)
 	for _, sv := range smmBaseDataAll {
 		eDate := sv.DataTime
-		dataTime, err := time.Parse(utils.FormatDate, eDate)
+		dataTime, err := time.ParseInLocation(utils.FormatDate, eDate, time.Local)
 		if err != nil {
 			return err
 		}
@@ -73,7 +73,7 @@ func AddEdbDataFromSmm(edbCode string) (err error) {
 	return
 }
 
-//刷新有色指标数据
+// 刷新有色指标数据
 func RefreshEdbDataFromSmm(edbInfoId int, edbCode, startDate string) (err error) {
 	source := utils.DATA_SOURCE_YS
 	o := orm.NewOrm()
@@ -96,6 +96,23 @@ func RefreshEdbDataFromSmm(edbInfoId int, edbCode, startDate string) (err error)
 	}
 
 	smmDataList, err := GetBaseFromSmmDataByCondition(condition, pars)
+	if err != nil {
+		return
+	}
+
+	// 真实数据的最大日期  , 插入规则配置的日期
+	var realDataMaxDate, edbDataInsertConfigDate time.Time
+	var edbDataInsertConfig *EdbDataInsertConfig
+	var isFindConfigDateRealData bool //是否找到配置日期的实际数据的值
+	{
+		edbDataInsertConfig, err = GetEdbDataInsertConfigByEdbId(edbInfoId)
+		if err != nil && err.Error() != utils.ErrNoRow() {
+			return
+		}
+		if edbDataInsertConfig != nil {
+			edbDataInsertConfigDate = edbDataInsertConfig.Date
+		}
+	}
 
 	var existCondition string
 	var existPars []interface{}
@@ -119,14 +136,14 @@ func RefreshEdbDataFromSmm(edbInfoId int, edbCode, startDate string) (err error)
 	var isAdd bool
 	for _, v := range smmDataList {
 		item := v
+		eDate := item.DataTime
+		dataTime, err := time.ParseInLocation(utils.FormatDate, eDate, time.Local)
+		if err != nil {
+			return err
+		}
 		if findItem, ok := existMap[v.DataTime]; !ok {
-			eDate := item.DataTime
 			sValue := item.Value
 
-			dataTime, err := time.Parse(utils.FormatDate, eDate)
-			if err != nil {
-				return err
-			}
 			timestamp := dataTime.UnixNano() / 1e6
 			timeStr := fmt.Sprintf("%d", timestamp)
 
@@ -140,8 +157,21 @@ func RefreshEdbDataFromSmm(edbInfoId int, edbCode, startDate string) (err error)
 				}
 			}
 		}
+
+		// 下面代码主要目的是处理掉手动插入的数据判断
+		{
+			if realDataMaxDate.IsZero() || dataTime.After(realDataMaxDate) {
+				realDataMaxDate = dataTime
+			}
+			if edbDataInsertConfigDate.IsZero() || dataTime.Equal(edbDataInsertConfigDate) {
+				isFindConfigDateRealData = true
+			}
+		}
 	}
 
+	// 处理手工数据补充的配置
+	HandleConfigInsertEdbData(realDataMaxDate, edbDataInsertConfig, edbInfoId, source, existMap, isFindConfigDateRealData)
+
 	if isAdd {
 		addSql = strings.TrimRight(addSql, ",")
 		_, err = o.Raw(addSql).Exec()

+ 37 - 7
models/base_from_ths.go

@@ -11,7 +11,7 @@ import (
 	"time"
 )
 
-//新增同花顺指标数据
+// 新增同花顺指标数据
 func AddEdbDataFromThs(edbCode string, item *services.EdbDataFromThs) (err error) {
 	var errMsg string
 	o := orm.NewOrm()
@@ -34,7 +34,7 @@ func AddEdbDataFromThs(edbCode string, item *services.EdbDataFromThs) (err error
 		for i := 0; i < dataLen; i++ {
 			eDate := table.Time[i]
 			sValue := table.Value[i]
-			dataTime, err := time.Parse(utils.FormatDate, eDate)
+			dataTime, err := time.ParseInLocation(utils.FormatDate, eDate, time.Local)
 			if err != nil {
 				errMsg = " time.Parse :" + err.Error()
 				return err
@@ -56,10 +56,25 @@ func AddEdbDataFromThs(edbCode string, item *services.EdbDataFromThs) (err error
 	return
 }
 
-//刷新同花顺指标数据
+// 刷新同花顺指标数据
 func RefreshEdbDataFromThs(edbInfoId int, edbCode, startDate string, item *services.EdbDataFromThs) (err error) {
 	o := orm.NewOrm()
 	source := utils.DATA_SOURCE_THS
+
+	// 真实数据的最大日期  , 插入规则配置的日期
+	var realDataMaxDate, edbDataInsertConfigDate time.Time
+	var edbDataInsertConfig *EdbDataInsertConfig
+	var isFindConfigDateRealData bool //是否找到配置日期的实际数据的值
+	{
+		edbDataInsertConfig, err = GetEdbDataInsertConfigByEdbId(edbInfoId)
+		if err != nil && err.Error() != utils.ErrNoRow() {
+			return
+		}
+		if edbDataInsertConfig != nil {
+			edbDataInsertConfigDate = edbDataInsertConfig.Date
+		}
+	}
+
 	if len(item.Tables) > 0 {
 		var condition string
 		var pars []interface{}
@@ -91,12 +106,13 @@ func RefreshEdbDataFromThs(edbInfoId int, edbCode, startDate string, item *servi
 			eDate := table.Time[i]
 			sValue := table.Value[i]
 			sValueStr := utils.SubFloatToString(sValue, 30)
+
+			dataTime, err := time.ParseInLocation(utils.FormatDate, eDate, time.Local)
+			if err != nil {
+				return err
+			}
 			if findItem, ok := existMap[eDate]; !ok {
 				if _, addOk := addMap[eDate]; !addOk {
-					dataTime, err := time.Parse(utils.FormatDate, eDate)
-					if err != nil {
-						return err
-					}
 					timestamp := dataTime.UnixNano() / 1e6
 					timeStr := fmt.Sprintf("%d", timestamp)
 					addSql += GetAddSql(edbInfoIdStr, edbCode, eDate, timeStr, sValueStr)
@@ -111,7 +127,21 @@ func RefreshEdbDataFromThs(edbInfoId int, edbCode, startDate string, item *servi
 					}
 				}
 			}
+
+			// 下面代码主要目的是处理掉手动插入的数据判断
+			{
+				if realDataMaxDate.IsZero() || dataTime.After(realDataMaxDate) {
+					realDataMaxDate = dataTime
+				}
+				if edbDataInsertConfigDate.IsZero() || dataTime.Equal(edbDataInsertConfigDate) {
+					isFindConfigDateRealData = true
+				}
+			}
 		}
+
+		// 处理手工数据补充的配置
+		HandleConfigInsertEdbData(realDataMaxDate, edbDataInsertConfig, edbInfoId, source, existMap, isFindConfigDateRealData)
+
 		if isAdd {
 			addSql = strings.TrimRight(addSql, ",")
 			_, err = o.Raw(addSql).Exec()

+ 30 - 0
models/base_from_wind.go

@@ -51,6 +51,20 @@ func RefreshEdbDataFromWind(edbInfoId int, edbCode, startDate string, item *serv
 	o := orm.NewOrm()
 	source := utils.DATA_SOURCE_WIND
 
+	// 真实数据的最大日期  , 插入规则配置的日期
+	var realDataMaxDate, edbDataInsertConfigDate time.Time
+	var edbDataInsertConfig *EdbDataInsertConfig
+	var isFindConfigDateRealData bool //是否找到配置日期的实际数据的值
+	{
+		edbDataInsertConfig, err = GetEdbDataInsertConfigByEdbId(edbInfoId)
+		if err != nil && err.Error() != utils.ErrNoRow() {
+			return
+		}
+		if edbDataInsertConfig != nil {
+			edbDataInsertConfigDate = edbDataInsertConfig.Date
+		}
+	}
+
 	var condition string
 	var pars []interface{}
 
@@ -78,6 +92,8 @@ func RefreshEdbDataFromWind(edbInfoId int, edbCode, startDate string, item *serv
 		v = v / 1000
 		t := time.Unix(v, 0)
 		dateTime := t.Format(utils.FormatDate)
+		t, _ = time.ParseInLocation(utils.FormatDate, dateTime, time.Local) // 这里的目的是为了处理成北京时间,所以多转一遍
+
 		val := item.Close[k]
 		saveVal := utils.SubFloatToString(val, 30)
 
@@ -103,7 +119,21 @@ func RefreshEdbDataFromWind(edbInfoId int, edbCode, startDate string, item *serv
 				}
 			}
 		}
+
+		// 下面代码主要目的是处理掉手动插入的数据判断
+		{
+			if realDataMaxDate.IsZero() || t.After(realDataMaxDate) {
+				realDataMaxDate = t
+			}
+			if edbDataInsertConfigDate.IsZero() || t.Equal(edbDataInsertConfigDate) {
+				isFindConfigDateRealData = true
+			}
+		}
 	}
+
+	// 处理手工数据补充的配置
+	HandleConfigInsertEdbData(realDataMaxDate, edbDataInsertConfig, edbInfoId, source, existMap, isFindConfigDateRealData)
+
 	if isAdd {
 		addSql = strings.TrimRight(addSql, ",")
 		_, err = o.Raw(addSql).Exec()

+ 37 - 8
models/base_from_zz.go

@@ -65,7 +65,7 @@ func GetZzDataByTradeCode(condition string, pars []interface{}) (item []*BaseFro
 	return
 }
 
-//新增郑商所指标数据
+// 新增郑商所指标数据
 func AddEdbDataFromZz(edbCode string) (err error) {
 	var suffix string
 	if strings.Contains(edbCode, "deal") {
@@ -88,7 +88,7 @@ func AddEdbDataFromZz(edbCode string) (err error) {
 	existMap := make(map[string]string)
 	for _, sv := range zzBaseDataAll {
 		eDate := sv.DataTime
-		dataTime, err := time.Parse(utils.FormatDate, eDate)
+		dataTime, err := time.ParseInLocation(utils.FormatDate, eDate, time.Local)
 		if err != nil {
 			fmt.Println("time.Parse Err:" + eDate)
 			return err
@@ -124,7 +124,7 @@ func AddEdbDataFromZz(edbCode string) (err error) {
 	return
 }
 
-//刷新郑商所指标数据
+// 刷新郑商所指标数据
 func RefreshEdbDataFromZz(edbInfoId int, edbCode, startDate string) (err error) {
 	source := utils.DATA_SOURCE_ZZ
 	o := orm.NewOrm()
@@ -165,6 +165,20 @@ func RefreshEdbDataFromZz(edbInfoId int, edbCode, startDate string) (err error)
 		return err
 	}
 
+	// 真实数据的最大日期  , 插入规则配置的日期
+	var realDataMaxDate, edbDataInsertConfigDate time.Time
+	var edbDataInsertConfig *EdbDataInsertConfig
+	var isFindConfigDateRealData bool //是否找到配置日期的实际数据的值
+	{
+		edbDataInsertConfig, err = GetEdbDataInsertConfigByEdbId(edbInfoId)
+		if err != nil && err.Error() != utils.ErrNoRow() {
+			return
+		}
+		if edbDataInsertConfig != nil {
+			edbDataInsertConfigDate = edbDataInsertConfig.Date
+		}
+	}
+
 	//获取指标所有数据
 	var existCondition string
 	var existPars []interface{}
@@ -201,11 +215,12 @@ func RefreshEdbDataFromZz(edbInfoId int, edbCode, startDate string) (err error)
 		if _, ok := existMap[v.DataTime]; !ok {
 			eDate := item.DataTime
 			sValue := itemValue
+			dataTime, err := time.ParseInLocation(utils.FormatDate, eDate, time.Local)
+			if err != nil {
+				return err
+			}
+
 			if sValue != "" {
-				dataTime, err := time.Parse(utils.FormatDate, eDate)
-				if err != nil {
-					return err
-				}
 				timestamp := dataTime.UnixNano() / 1e6
 				timeStr := fmt.Sprintf("%d", timestamp)
 				saveValue := sValue
@@ -222,8 +237,22 @@ func RefreshEdbDataFromZz(edbInfoId int, edbCode, startDate string) (err error)
 					}
 				}
 			}
+
+			// 下面代码主要目的是处理掉手动插入的数据判断
+			{
+				if realDataMaxDate.IsZero() || dataTime.After(realDataMaxDate) {
+					realDataMaxDate = dataTime
+				}
+				if edbDataInsertConfigDate.IsZero() || dataTime.Equal(edbDataInsertConfigDate) {
+					isFindConfigDateRealData = true
+				}
+			}
 		}
 	}
+
+	// 处理手工数据补充的配置
+	HandleConfigInsertEdbData(realDataMaxDate, edbDataInsertConfig, edbInfoId, source, existMap, isFindConfigDateRealData)
+
 	if isAdd {
 		addSql = strings.TrimRight(addSql, ",")
 		_, err = o.Raw(addSql).Exec()
@@ -232,4 +261,4 @@ func RefreshEdbDataFromZz(edbInfoId int, edbCode, startDate string) (err error)
 		}
 	}
 	return
-}
+}

+ 1 - 1
models/base_predict_from_calculate.go

@@ -374,7 +374,7 @@ func refreshAllPredictCalculate(to orm.TxOrmer, edbInfoIdList []*EdbInfo, edbInf
 
 			saveValue := decimal.NewFromFloat(calVal).RoundCeil(4).String() //utils.SubFloatToString(calVal, 4)
 			if existVal, ok := dataMap[sk]; !ok {
-				dataTime, _ := time.Parse(utils.FormatDate, sk)
+				dataTime, _ := time.ParseInLocation(utils.FormatDate, sk, time.Local)
 				timestamp := dataTime.UnixNano() / 1e6
 				timeStr := fmt.Sprintf("%d", timestamp)
 

+ 1 - 0
models/db.go

@@ -51,6 +51,7 @@ func init() {
 		new(EdbDataPredictCalculateNhcc),
 		new(EdbDataPredictCalculateZjpj),
 		new(EdbAdjustConf), // 数据调整的配置
+		new(EdbDataInsertConfig),
 	)
 
 	// 注册期货数据 数据表

+ 13 - 13
models/edb_data_calculate_bp.go

@@ -248,7 +248,7 @@ func RefreshAllCalculateBpBak(edbInfoId, source int, fromEdbInfo *EdbInfo, edbCo
 	for i := 0; i < dataLen; i++ {
 		//当期
 		currentItem := dataList[i]
-		currentDate, _ := time.Parse(utils.FormatDate, currentItem.DataTime)
+		currentDate, _ := time.ParseInLocation(utils.FormatDate, currentItem.DataTime, time.Local)
 		var day int
 		var preItem *EdbInfoSearchData
 		var preDate time.Time
@@ -259,7 +259,7 @@ func RefreshAllCalculateBpBak(edbInfoId, source int, fromEdbInfo *EdbInfo, edbCo
 			j := i + 1
 			if j < dataLen {
 				preItem = dataList[j]
-				preDate, _ = time.Parse(utils.FormatDate, preItem.DataTime)
+				preDate, _ = time.ParseInLocation(utils.FormatDate, preItem.DataTime, time.Local)
 				day = int(currentDate.Sub(preDate).Hours() / float64(24))
 			}
 		}
@@ -288,7 +288,7 @@ func RefreshAllCalculateBpBak(edbInfoId, source int, fromEdbInfo *EdbInfo, edbCo
 		}
 		existKey := edbCode + currentItem.DataTime
 		if _, ok := existMap[existKey]; !ok {
-			currentDate, _ := time.Parse(utils.FormatDate, currentItem.DataTime)
+			currentDate, _ := time.ParseInLocation(utils.FormatDate, currentItem.DataTime, time.Local)
 			timestamp := currentDate.UnixNano() / 1e6
 			timestampStr := fmt.Sprintf("%d", timestamp)
 			valStr := decimal.NewFromFloat(currentItem.Value).String()
@@ -392,11 +392,11 @@ func refreshAllCalculateBp(to orm.TxOrmer, edbInfoId, source int, fromEdbInfo *E
 		//第一个已经入库的日期
 		firstExistDataTimeStr := existDataList[0].DataTime //计算指标数据第一条的日期字符串
 		if len(dateArr) > 0 {
-			firstFromDataTimeStr := dateArr[0]                                                             //来源数据第一条的日期字符串
-			firstExistDataTime, _ := time.Parse(utils.FormatDate, firstExistDataTimeStr)                   //计算指标数据第一条的日期(time类型)
-			firstFromDataTime, _ := time.Parse(utils.FormatDate, firstFromDataTimeStr)                     //来源数据第一条的日期(time类型)
-			nowDateStr := time.Now().Format(utils.FormatDate)                                              //当天日期字符串
-			nowDate, _ := time.ParseInLocation(utils.FormatDate, nowDateStr, firstFromDataTime.Location()) //当天日期(time类型)
+			firstFromDataTimeStr := dateArr[0]                                                                 //来源数据第一条的日期字符串
+			firstExistDataTime, _ := time.ParseInLocation(utils.FormatDate, firstExistDataTimeStr, time.Local) //计算指标数据第一条的日期(time类型)
+			firstFromDataTime, _ := time.ParseInLocation(utils.FormatDate, firstFromDataTimeStr, time.Local)   //来源数据第一条的日期(time类型)
+			nowDateStr := time.Now().Format(utils.FormatDate)                                                  //当天日期字符串
+			nowDate, _ := time.ParseInLocation(utils.FormatDate, nowDateStr, firstFromDataTime.Location())     //当天日期(time类型)
 
 			lastValue = fromDataMap[firstFromDataTimeStr]
 			lastValueStr = decimal.NewFromFloat(lastValue).String()
@@ -415,7 +415,7 @@ func refreshAllCalculateBp(to orm.TxOrmer, edbInfoId, source int, fromEdbInfo *E
 					}
 				} else {
 					for _, v := range dateArr { //如果计算指标第一条数据的开始时间 晚于 来源指标的第一条开始时间,那么需要对两个时间之间的计算指标数据做 新增处理
-						vDataTime, _ := time.Parse(utils.FormatDate, v) //当前日期(time类型)
+						vDataTime, _ := time.ParseInLocation(utils.FormatDate, v, time.Local) //当前日期(time类型)
 						if firstExistDataTime.Equal(vDataTime) || firstExistDataTime.Before(vDataTime) {
 							if tmpLastValue, ok := fromDataMap[v]; ok { //来源指标当天的数据
 								lastValue = tmpLastValue
@@ -424,7 +424,7 @@ func refreshAllCalculateBp(to orm.TxOrmer, edbInfoId, source int, fromEdbInfo *E
 							break
 						}
 
-						currentDate, _ := time.Parse(utils.FormatDate, v)
+						currentDate, _ := time.ParseInLocation(utils.FormatDate, v, time.Local)
 						timestamp := currentDate.UnixNano() / 1e6
 						timestampStr := fmt.Sprintf("%d", timestamp)
 						addSql += GetAddSql(edbInfoIdStr, edbCode, v, timestampStr, lastValueStr)
@@ -489,7 +489,7 @@ func refreshAllCalculateBp(to orm.TxOrmer, edbInfoId, source int, fromEdbInfo *E
 		for i := 0; i < dataLen; i++ {
 			//当期
 			currentItem := dataList[i]
-			currentDate, _ := time.Parse(utils.FormatDate, currentItem.DataTime)
+			currentDate, _ := time.ParseInLocation(utils.FormatDate, currentItem.DataTime, time.Local)
 			var day int
 			var preItem *EdbInfoSearchData
 			var preDate time.Time
@@ -500,7 +500,7 @@ func refreshAllCalculateBp(to orm.TxOrmer, edbInfoId, source int, fromEdbInfo *E
 				j := i - 1
 				if j < dataLen {
 					preItem = dataList[j]
-					preDate, _ = time.Parse(utils.FormatDate, preItem.DataTime)
+					preDate, _ = time.ParseInLocation(utils.FormatDate, preItem.DataTime, time.Local)
 					day = int(preDate.Sub(currentDate).Hours() / float64(24))
 					utils.FileLog.Info("preItem.DataTime:" + preItem.DataTime + ";currentItem.DataTime" + currentItem.DataTime)
 				}
@@ -520,7 +520,7 @@ func refreshAllCalculateBp(to orm.TxOrmer, edbInfoId, source int, fromEdbInfo *E
 			}
 			existKey := edbCode + currentItem.DataTime
 			if _, ok := existMap[existKey]; !ok {
-				currentDate, _ := time.Parse(utils.FormatDate, currentItem.DataTime)
+				currentDate, _ := time.ParseInLocation(utils.FormatDate, currentItem.DataTime, time.Local)
 				timestamp := currentDate.UnixNano() / 1e6
 				timestampStr := fmt.Sprintf("%d", timestamp)
 				valStr := decimal.NewFromFloat(currentItem.Value).String()

+ 1 - 1
models/edb_data_calculate_cjjx.go

@@ -293,7 +293,7 @@ func refreshAllCalculateCjjx(to orm.TxOrmer, edbInfoId, source int, fromEdbInfo
 		if strings.Contains(av, "02-29") {
 			continue
 		}
-		currentDate, tmpErr := time.Parse(utils.FormatDate, av)
+		currentDate, tmpErr := time.ParseInLocation(utils.FormatDate, av, time.Local)
 		if tmpErr != nil {
 			err = tmpErr
 			return

+ 1 - 1
models/edb_data_calculate_hbz.go

@@ -258,7 +258,7 @@ func refreshAllCalculateHbz(to orm.TxOrmer, edbInfoId, source int, fromEdbInfo *
 				existKey := edbCode + currentItem.DataTime
 
 				if _, ok := existMap[existKey]; !ok {
-					currentDate, _ := time.Parse(utils.FormatDate, currentItem.DataTime)
+					currentDate, _ := time.ParseInLocation(utils.FormatDate, currentItem.DataTime, time.Local)
 					timestamp := currentDate.UnixNano() / 1e6
 					timestampStr := fmt.Sprintf("%d", timestamp)
 					val := HbzDiv(currentItem.Value, preItem.Value)

+ 1 - 1
models/edb_data_calculate_hcz.go

@@ -269,7 +269,7 @@ func refreshAllCalculateHcz(to orm.TxOrmer, edbInfoId, source int, fromEdbInfo *
 				existKey := edbCode + currentItem.DataTime
 				if _, ok := existMap[existKey]; !ok {
 
-					currentDate, _ := time.Parse(utils.FormatDate, currentItem.DataTime)
+					currentDate, _ := time.ParseInLocation(utils.FormatDate, currentItem.DataTime, time.Local)
 					//fmt.Println(currentDate)
 					timestamp := currentDate.UnixNano() / 1e6
 					timestampStr := fmt.Sprintf("%d", timestamp)

+ 1 - 1
models/edb_data_calculate_ljztbpj.go

@@ -597,7 +597,7 @@ func refreshAllCalculateLjztbpj(to orm.TxOrmer, edbInfo *EdbInfo, existItemA, ex
 		for _, dataTime := range pjEdbDataTimeList {
 			if dataValue, ok := pjDataMap[dataTime]; ok {
 				//时间戳
-				currentDate, _ := time.Parse(utils.FormatDate, dataTime)
+				currentDate, _ := time.ParseInLocation(utils.FormatDate, dataTime, time.Local)
 				timestamp := currentDate.UnixNano() / 1e6
 
 				edbDataLjztbpj := &EdbDataCalculateLjztbpj{

+ 3 - 3
models/edb_data_calculate_ljzzy.go

@@ -228,7 +228,7 @@ func refreshAllCalculateLjzzy(to orm.TxOrmer, edbInfoId, source int, fromEdbInfo
 	for i := 0; i < dataLen; i++ {
 		item := dataList[i]
 		//日其中获取年
-		itemDate, err := time.Parse(utils.FormatDate, item.DataTime)
+		itemDate, err := time.ParseInLocation(utils.FormatDate, item.DataTime, time.Local)
 		if err != nil {
 			return err
 		}
@@ -333,7 +333,7 @@ func refreshAllCalculateLjzzy(to orm.TxOrmer, edbInfoId, source int, fromEdbInfo
 				//saveValue := utils.SubFloatToString(val, 4)
 				////判断数据是否存在
 				//if existVal, ok := dataMap[date]; !ok {
-				//	dataTime, _ := time.Parse(utils.FormatDate, date)
+				//	dataTime, _ := time.ParseInLocation(utils.FormatDate, date, time.Local)
 				//	timestamp := dataTime.UnixNano() / 1e6
 				//	timeStr := fmt.Sprintf("%d", timestamp)
 				//	if _, existOk := existDataMap[date]; !existOk {
@@ -378,7 +378,7 @@ func calculateLjzzy(edbInfoId int, date, edbInfoIdStr, edbCode, dataTableName, a
 	saveValue := utils.SubFloatToString(val, 4)
 	//判断数据是否存在
 	if existVal, ok := dataMap[date]; !ok {
-		dataTime, _ := time.Parse(utils.FormatDate, date)
+		dataTime, _ := time.ParseInLocation(utils.FormatDate, date, time.Local)
 		timestamp := dataTime.UnixNano() / 1e6
 		timeStr := fmt.Sprintf("%d", timestamp)
 		if _, existOk := existDataMap[date]; !existOk {

+ 1 - 1
models/edb_data_calculate_nhcc.go

@@ -571,7 +571,7 @@ func refreshAllCalculateNhcc(to orm.TxOrmer, edbInfo *EdbInfo, existItemA, exist
 		// 判断之前有没有该数据
 		existData, ok := dataMap[currDate]
 		if !ok { //不存在那么就添加吧
-			currentDate, _ := time.Parse(utils.FormatDate, currDate)
+			currentDate, _ := time.ParseInLocation(utils.FormatDate, currDate, time.Local)
 			timestamp := currentDate.UnixNano() / 1e6
 			edbDataNhcc := &EdbDataCalculateNhcc{
 				EdbInfoId:     edbInfo.EdbInfoId,

+ 1 - 1
models/edb_data_calculate_nszydbpjjs.go

@@ -282,7 +282,7 @@ func refreshAllCalculateNszydpjjs(to orm.TxOrmer, edbInfoId, source, formulaInt
 		valStr := decimal.NewFromFloat(val).RoundCeil(4).String()
 
 		if existVal, existOk := existDataMap[av]; !existOk {
-			currentDate, err := time.Parse(utils.FormatDate, av)
+			currentDate, err := time.ParseInLocation(utils.FormatDate, av, time.Local)
 			if err != nil {
 				return err
 			}

+ 2 - 2
models/edb_data_calculate_tbz.go

@@ -251,7 +251,7 @@ func refreshAllCalculateTbz(to orm.TxOrmer, edbInfoId, source int, fromEdbInfo *
 		currentItem := dataMap[av]
 		if currentItem != nil {
 			//当前日期
-			currentDate, err := time.Parse(utils.FormatDate, av)
+			currentDate, err := time.ParseInLocation(utils.FormatDate, av, time.Local)
 			if err != nil {
 				return err
 			}
@@ -259,7 +259,7 @@ func refreshAllCalculateTbz(to orm.TxOrmer, edbInfoId, source int, fromEdbInfo *
 			preDate := currentDate.AddDate(-1, 0, 0)
 			preDateStr := preDate.Format(utils.FormatDate)
 			if findItem, ok := dataMap[preDateStr]; ok { //上一年同期找到
-				//dataTime, _ := time.Parse(utils.FormatDate, date)
+				//dataTime, _ := time.ParseInLocation(utils.FormatDate, date, time.Local)
 				timestamp := currentDate.UnixNano() / 1e6
 				timestampStr := fmt.Sprintf("%d", timestamp)
 				val := TbzDiv(currentItem.Value, findItem.Value)

+ 2 - 2
models/edb_data_calculate_tcz.go

@@ -251,7 +251,7 @@ func refreshAllCalculateTcz(to orm.TxOrmer, edbInfoId, source int, fromEdbInfo *
 		currentItem := dataMap[av]
 		if currentItem != nil {
 			//当前日期
-			currentDate, err := time.Parse(utils.FormatDate, av)
+			currentDate, err := time.ParseInLocation(utils.FormatDate, av, time.Local)
 			if err != nil {
 				return err
 			}
@@ -260,7 +260,7 @@ func refreshAllCalculateTcz(to orm.TxOrmer, edbInfoId, source int, fromEdbInfo *
 			preDateStr := preDate.Format(utils.FormatDate)
 			if findItem, ok := dataMap[preDateStr]; ok {
 				//上一年同期找到
-				//dataTime, _ := time.Parse(utils.FormatDate, date)
+				//dataTime, _ := time.ParseInLocation(utils.FormatDate, date, time.Local)
 				timestamp := currentDate.UnixNano() / 1e6
 				timestampStr := fmt.Sprintf("%d", timestamp)
 				val := TczSub(currentItem.Value, findItem.Value)

+ 1 - 1
models/edb_data_calculate_time_shift.go

@@ -287,7 +287,7 @@ func refreshAllCalculateTimeShift(to orm.TxOrmer, edbInfoId, source, formulaInt,
 		currentItem := dataList[i]
 		existKey := edbCode + currentItem.DataTime
 		if _, ok := existMap[existKey]; !ok {
-			currentDate, _ := time.Parse(utils.FormatDate, currentItem.DataTime)
+			currentDate, _ := time.ParseInLocation(utils.FormatDate, currentItem.DataTime, time.Local)
 			newDate := currentDate.AddDate(0, 0, shiftDay)
 
 			timestamp := newDate.UnixNano() / 1e6

+ 2 - 2
models/edb_data_calculate_zjpj.go

@@ -413,7 +413,7 @@ func refreshAllCalculateZjpj(to orm.TxOrmer, edbInfo *EdbInfo, existItemA, exist
 				}
 			} else {
 				//时间戳
-				currentDate, _ := time.Parse(utils.FormatDate, v.DataTime)
+				currentDate, _ := time.ParseInLocation(utils.FormatDate, v.DataTime, time.Local)
 				timestamp := currentDate.UnixNano() / 1e6
 
 				edbDataZjpj := &EdbDataCalculateZjpj{
@@ -463,7 +463,7 @@ func refreshAllCalculateZjpj(to orm.TxOrmer, edbInfo *EdbInfo, existItemA, exist
 				}
 			} else {
 				//时间戳
-				currentDate, _ := time.Parse(utils.FormatDate, v.DataTime)
+				currentDate, _ := time.ParseInLocation(utils.FormatDate, v.DataTime, time.Local)
 				timestamp := currentDate.UnixNano() / 1e6
 
 				edbDataZjpj := &EdbDataCalculateZjpj{

+ 39 - 0
models/edb_data_insert_config.go

@@ -0,0 +1,39 @@
+package models
+
+import (
+	"github.com/beego/beego/v2/client/orm"
+	"time"
+)
+
+// EdbDataInsertConfig 指标数据插入配置表
+type EdbDataInsertConfig struct {
+	EdbInfoId  int       `orm:"column(edb_info_id);pk" description:"指标id"`
+	Date       time.Time `description:"插入的日期"`
+	Value      string    `description:"插入的值"`
+	RealDate   time.Time `description:"实际数据的日期"`
+	ModifyTime time.Time `description:"数据更新时间"`
+	CreateTime time.Time `description:"数据插入的时间"`
+}
+
+// GetEdbDataInsertConfigByEdbId 根据指标id 获取数据插入配置详情
+func GetEdbDataInsertConfigByEdbId(edbInfoId int) (item *EdbDataInsertConfig, err error) {
+	o := orm.NewOrm()
+	sql := ` SELECT * FROM edb_data_insert_config WHERE edb_info_id=? `
+	err = o.Raw(sql, edbInfoId).QueryRow(&item)
+	return
+}
+
+// DeleteEdbDataInsertConfigByEdbId 根据指标id 删除数据插入配置详情
+func DeleteEdbDataInsertConfigByEdbId(edbInfoId int) (err error) {
+	o := orm.NewOrm()
+	sql := ` DELETE FROM edb_data_insert_config WHERE edb_info_id=? `
+	_, err = o.Raw(sql, edbInfoId).Exec()
+	return
+}
+
+// GetEdbDataInsertConfigByEdbIdWithTo 根据指标id 获取数据插入配置详情
+func GetEdbDataInsertConfigByEdbIdWithTo(to orm.TxOrmer, edbInfoId int) (item *EdbDataInsertConfig, err error) {
+	sql := ` SELECT * FROM edb_data_insert_config WHERE edb_info_id=? `
+	err = to.Raw(sql, edbInfoId).QueryRow(&item)
+	return
+}

+ 2 - 2
models/future_good/future_good_edb_data.go

@@ -81,7 +81,7 @@ func AddEdbDataFromWind(futureGoodEdbInfoId int, edbCode string, item *services.
 	dataLen := len(table.Time)
 	for k := 0; k < dataLen; k++ {
 		eDate := table.Time[k]
-		dataTime, err := time.Parse(utils.FormatDate, eDate)
+		dataTime, err := time.ParseInLocation(utils.FormatDate, eDate, time.Local)
 		if err != nil {
 			errMsg = " time.Parse :" + err.Error()
 			return err
@@ -172,7 +172,7 @@ func RefreshFutureGoodEdbDataFromThs(futureGoodEdbInfoId int, edbCode, startDate
 	dataLen := len(table.Time)
 	for k := 0; k < dataLen; k++ {
 		eDate := table.Time[k]
-		dataTime, tmpErr := time.Parse(utils.FormatDate, eDate)
+		dataTime, tmpErr := time.ParseInLocation(utils.FormatDate, eDate, time.Local)
 		if tmpErr != nil {
 			err = tmpErr
 			return

+ 1 - 1
models/predict_edb.go

@@ -153,7 +153,7 @@ func CalculateByRuleBy9(to orm.TxOrmer, rule CalculateRule) (resultDataList []*E
 		saveValue := decimal.NewFromFloat(calVal).RoundCeil(4).String() //utils.SubFloatToString(calVal, 4)
 		existPredictEdbRuleData, ok := dataMap[sk]
 		if !ok {
-			dataTime, _ := time.Parse(utils.FormatDate, sk)
+			dataTime, _ := time.ParseInLocation(utils.FormatDate, sk, time.Local)
 			timestamp := dataTime.UnixNano() / 1e6
 
 			if _, existOk := existDataMap[sk]; !existOk {

+ 11 - 11
models/predict_edb_data_calculate_bp.go

@@ -28,7 +28,7 @@ func SavePredictCalculateBp(req *EdbInfoCalculateBatchSaveReq, fromEdbInfo *EdbI
 	}()
 	if req.EdbInfoId <= 0 {
 		edbInfo = new(EdbInfo)
-	    edbInfo.EdbInfoType = 1
+		edbInfo.EdbInfoType = 1
 		edbInfo.Source = utils.DATA_SOURCE_PREDICT_CALCULATE_BP
 		edbInfo.SourceName = "预测变频"
 		edbInfo.EdbCode = edbCode
@@ -209,11 +209,11 @@ func refreshAllPredictCalculateBp(to orm.TxOrmer, edbInfoId, source int, fromEdb
 		//第一个已经入库的日期
 		firstExistDataTimeStr := existDataList[0].DataTime //计算指标数据第一条的日期字符串
 		if len(dateArr) > 0 {
-			firstFromDataTimeStr := dateArr[0]                                                             //来源数据第一条的日期字符串
-			firstExistDataTime, _ := time.Parse(utils.FormatDate, firstExistDataTimeStr)                   //计算指标数据第一条的日期(time类型)
-			firstFromDataTime, _ := time.Parse(utils.FormatDate, firstFromDataTimeStr)                     //来源数据第一条的日期(time类型)
-			nowDateStr := time.Now().Format(utils.FormatDate)                                              //当天日期字符串
-			nowDate, _ := time.ParseInLocation(utils.FormatDate, nowDateStr, firstFromDataTime.Location()) //当天日期(time类型)
+			firstFromDataTimeStr := dateArr[0]                                                                 //来源数据第一条的日期字符串
+			firstExistDataTime, _ := time.ParseInLocation(utils.FormatDate, firstExistDataTimeStr, time.Local) //计算指标数据第一条的日期(time类型)
+			firstFromDataTime, _ := time.ParseInLocation(utils.FormatDate, firstFromDataTimeStr, time.Local)   //来源数据第一条的日期(time类型)
+			nowDateStr := time.Now().Format(utils.FormatDate)                                                  //当天日期字符串
+			nowDate, _ := time.ParseInLocation(utils.FormatDate, nowDateStr, firstFromDataTime.Location())     //当天日期(time类型)
 
 			lastValue = fromDataMap[firstFromDataTimeStr]
 			lastValueStr = decimal.NewFromFloat(lastValue).String()
@@ -232,7 +232,7 @@ func refreshAllPredictCalculateBp(to orm.TxOrmer, edbInfoId, source int, fromEdb
 					}
 				} else {
 					for _, v := range dateArr { //如果计算指标第一条数据的开始时间 晚于 来源指标的第一条开始时间,那么需要对两个时间之间的计算指标数据做 新增处理
-						vDataTime, _ := time.Parse(utils.FormatDate, v) //当前日期(time类型)
+						vDataTime, _ := time.ParseInLocation(utils.FormatDate, v, time.Local) //当前日期(time类型)
 						if firstExistDataTime.Equal(vDataTime) || firstExistDataTime.Before(vDataTime) {
 							if tmpLastValue, ok := fromDataMap[v]; ok { //来源指标当天的数据
 								lastValue = tmpLastValue
@@ -241,7 +241,7 @@ func refreshAllPredictCalculateBp(to orm.TxOrmer, edbInfoId, source int, fromEdb
 							break
 						}
 
-						currentDate, _ := time.Parse(utils.FormatDate, v)
+						currentDate, _ := time.ParseInLocation(utils.FormatDate, v, time.Local)
 						timestamp := currentDate.UnixNano() / 1e6
 						timestampStr := fmt.Sprintf("%d", timestamp)
 						addSql += GetAddSql(edbInfoIdStr, edbCode, v, timestampStr, lastValueStr)
@@ -314,7 +314,7 @@ func refreshAllPredictCalculateBp(to orm.TxOrmer, edbInfoId, source int, fromEdb
 		for i := 0; i < dataLen; i++ {
 			//当期
 			currentItem := dataList[i]
-			currentDate, _ := time.Parse(utils.FormatDate, currentItem.DataTime)
+			currentDate, _ := time.ParseInLocation(utils.FormatDate, currentItem.DataTime, time.Local)
 			var day int
 			var preItem *EdbInfoSearchData
 			var preDate time.Time
@@ -325,7 +325,7 @@ func refreshAllPredictCalculateBp(to orm.TxOrmer, edbInfoId, source int, fromEdb
 				j := i - 1
 				if j < dataLen {
 					preItem = dataList[j]
-					preDate, _ = time.Parse(utils.FormatDate, preItem.DataTime)
+					preDate, _ = time.ParseInLocation(utils.FormatDate, preItem.DataTime, time.Local)
 					day = int(preDate.Sub(currentDate).Hours() / float64(24))
 					utils.FileLog.Info("preItem.DataTime:" + preItem.DataTime + ";currentItem.DataTime" + currentItem.DataTime)
 				}
@@ -348,7 +348,7 @@ func refreshAllPredictCalculateBp(to orm.TxOrmer, edbInfoId, source int, fromEdb
 			}
 			existKey := edbCode + currentItem.DataTime
 			if _, ok := existMap[existKey]; !ok {
-				currentDate, _ := time.Parse(utils.FormatDate, currentItem.DataTime)
+				currentDate, _ := time.ParseInLocation(utils.FormatDate, currentItem.DataTime, time.Local)
 				timestamp := currentDate.UnixNano() / 1e6
 				timestampStr := fmt.Sprintf("%d", timestamp)
 				valStr := decimal.NewFromFloat(currentItem.Value).String()

+ 4 - 4
models/predict_edb_data_calculate_cjjx.go

@@ -239,7 +239,7 @@ func refreshAllPredictCalculateCjjx(to orm.TxOrmer, edbInfoId, source int, fromE
 		if currentItem != nil {
 			pastValueList := make([]float64, 0) // 过去几期的数据
 			//当前日期
-			currentDate, tmpErr := time.Parse(utils.FormatDate, av)
+			currentDate, tmpErr := time.ParseInLocation(utils.FormatDate, av, time.Local)
 			if tmpErr != nil {
 				err = tmpErr
 				return
@@ -358,13 +358,13 @@ func refreshAllPredictCalculateCjjx(to orm.TxOrmer, edbInfoId, source int, fromE
 	if tmpErr != nil {
 		if tmpErr.Error() != utils.ErrNoRow() {
 			err = tmpErr
-		}else{
+		} else {
 			latestDateStr = "0000-00-00"
 		}
 		return
-	}else{
+	} else {
 		latestDateStr = finalLast.DataTime
 		latestValue = finalLast.Value
 	}
 	return
-}
+}

+ 2 - 1
models/predict_edb_data_calculate_hbz.go

@@ -153,6 +153,7 @@ func SavePredictCalculateHbz(req *EdbInfoCalculateBatchSaveReq, fromEdbInfo *Edb
 	latestDateStr, latestValue, err = refreshAllPredictCalculateHbz(to, edbInfo.EdbInfoId, edbInfo.Source, fromEdbInfo, edbInfo.EdbCode, "", "", formulaInt)
 	return
 }
+
 // RefreshAllPredictCalculateHbz 刷新所有环比值数据
 func RefreshAllPredictCalculateHbz(edbInfoId, source int, fromEdbInfo *EdbInfo, edbCode, startDate, endDate string, formulaInt int) (latestDateStr string, latestValue float64, err error) {
 	o := orm.NewOrm()
@@ -219,7 +220,7 @@ func refreshAllPredictCalculateHbz(to orm.TxOrmer, edbInfoId, source int, fromEd
 				existKey := edbCode + currentItem.DataTime
 
 				if _, ok := existMap[existKey]; !ok {
-					currentDate, _ := time.Parse(utils.FormatDate, currentItem.DataTime)
+					currentDate, _ := time.ParseInLocation(utils.FormatDate, currentItem.DataTime, time.Local)
 					timestamp := currentDate.UnixNano() / 1e6
 					timestampStr := fmt.Sprintf("%d", timestamp)
 					val := HbzDiv(currentItem.Value, preItem.Value)

+ 2 - 2
models/predict_edb_data_calculate_hcz.go

@@ -229,7 +229,7 @@ func refreshAllPredictCalculateHcz(to orm.TxOrmer, edbInfoId, source int, fromEd
 				existKey := edbCode + currentItem.DataTime
 				if _, ok := existMap[existKey]; !ok {
 
-					currentDate, _ := time.Parse(utils.FormatDate, currentItem.DataTime)
+					currentDate, _ := time.ParseInLocation(utils.FormatDate, currentItem.DataTime, time.Local)
 					//fmt.Println(currentDate)
 					timestamp := currentDate.UnixNano() / 1e6
 					timestampStr := fmt.Sprintf("%d", timestamp)
@@ -298,4 +298,4 @@ func refreshAllPredictCalculateHcz(to orm.TxOrmer, edbInfoId, source int, fromEd
 		}
 	}
 	return
-}
+}

+ 3 - 3
models/predict_edb_data_calculate_ljztbpj.go

@@ -298,7 +298,7 @@ func SavePredictCalculateLjztbpj(req *EdbInfoCalculateBatchSaveReq, firstEdbInfo
 				err = errors.New("删除所有的累计值同比拼接指标数据失败,Err:" + err.Error())
 				return
 			}
-		}else{
+		} else {
 			return
 		}
 	}
@@ -532,7 +532,7 @@ func refreshAllPredictCalculateLjztbpj(to orm.TxOrmer, edbInfo, firstEdbInfo, se
 		for _, dataTime := range pjEdbDataTimeList {
 			if dataValue, ok := pjDataMap[dataTime]; ok {
 				//时间戳
-				currentDate, _ := time.Parse(utils.FormatDate, dataTime)
+				currentDate, _ := time.ParseInLocation(utils.FormatDate, dataTime, time.Local)
 				timestamp := currentDate.UnixNano() / 1e6
 
 				edbDataLjztbpj := &EdbDataPredictCalculateLjztbpj{
@@ -598,7 +598,7 @@ func refreshAllPredictCalculateLjztbpj(to orm.TxOrmer, edbInfo, firstEdbInfo, se
 			err = tmpErr
 		}
 		return
-	}else{
+	} else {
 		latestDateStr = finalLast.DataTime
 		latestValue = finalLast.Value
 	}

+ 4 - 4
models/predict_edb_data_calculate_ljzzy.go

@@ -188,7 +188,7 @@ func refreshAllPredictCalculateLjzzy(to orm.TxOrmer, edbInfoId, source int, from
 		item := dataList[i]
 		//日其中获取年
 		var itemDate time.Time
-		itemDate, err = time.Parse(utils.FormatDate, item.DataTime)
+		itemDate, err = time.ParseInLocation(utils.FormatDate, item.DataTime, time.Local)
 		if err != nil {
 			return
 		}
@@ -294,7 +294,7 @@ func refreshAllPredictCalculateLjzzy(to orm.TxOrmer, edbInfoId, source int, from
 				//saveValue := utils.SubFloatToString(val, 4)
 				////判断数据是否存在
 				//if existVal, ok := dataMap[date]; !ok {
-				//	dataTime, _ := time.Parse(utils.FormatDate, date)
+				//	dataTime, _ := time.ParseInLocation(utils.FormatDate, date, time.Local)
 				//	timestamp := dataTime.UnixNano() / 1e6
 				//	timeStr := fmt.Sprintf("%d", timestamp)
 				//	if _, existOk := existDataMap[date]; !existOk {
@@ -342,9 +342,9 @@ func refreshAllPredictCalculateLjzzy(to orm.TxOrmer, edbInfoId, source int, from
 			err = tmpErr
 		}
 		return
-	}else{
+	} else {
 		latestDateStr = finalLast.DataTime
 		latestValue = finalLast.Value
 	}
 	return
-}
+}

+ 1 - 1
models/predict_edb_data_calculate_nhcc.go

@@ -561,7 +561,7 @@ func refreshAllPredictCalculateNhcc(to orm.TxOrmer, edbInfo, firstEdbInfo, secon
 		// 判断之前有没有该数据
 		existData, ok := dataMap[currDate]
 		if !ok { //不存在那么就添加吧
-			currentDate, _ := time.Parse(utils.FormatDate, currDate)
+			currentDate, _ := time.ParseInLocation(utils.FormatDate, currDate, time.Local)
 			timestamp := currentDate.UnixNano() / 1e6
 			edbDataNhcc := &EdbDataPredictCalculateNhcc{
 				EdbInfoId:     edbInfo.EdbInfoId,

+ 1 - 1
models/predict_edb_data_calculate_nszydbpjjs.go

@@ -303,7 +303,7 @@ func refreshAllPredictCalculateNszydpjjs(to orm.TxOrmer, edbInfoId, source, form
 		}
 
 		if existVal, existOk := existDataMap[av]; !existOk {
-			currentDate, tmpErr := time.Parse(utils.FormatDate, av)
+			currentDate, tmpErr := time.ParseInLocation(utils.FormatDate, av, time.Local)
 			if tmpErr != nil {
 				err = tmpErr
 				return

+ 4 - 4
models/predict_edb_data_calculate_tbz.go

@@ -175,7 +175,7 @@ func SavePredictCalculateTbz(reqEdbInfoId, classifyId int, edbName, frequency, u
 		currentItem := dataMap[av]
 		if currentItem != nil {
 			//当前日期
-			currentDate, tmpErr := time.Parse(utils.FormatDate, av)
+			currentDate, tmpErr := time.ParseInLocation(utils.FormatDate, av, time.Local)
 			if tmpErr != nil {
 				err = tmpErr
 				return
@@ -184,7 +184,7 @@ func SavePredictCalculateTbz(reqEdbInfoId, classifyId int, edbName, frequency, u
 			preDate := currentDate.AddDate(-1, 0, 0)
 			preDateStr := preDate.Format(utils.FormatDate)
 			if findItem, ok := dataMap[preDateStr]; ok { //上一年同期找到
-				//dataTime, _ := time.Parse(utils.FormatDate, date)
+				//dataTime, _ := time.ParseInLocation(utils.FormatDate, date, time.Local)
 				if _, ok := existMap[edbCode+av]; !ok {
 					timestamp := currentDate.UnixNano() / 1e6
 					timestampStr := fmt.Sprintf("%d", timestamp)
@@ -404,7 +404,7 @@ func RefreshAllPredictCalculateTbz(edbInfoId, source int, fromEdbInfo *EdbInfo,
 		currentItem := dataMap[av]
 		if currentItem != nil {
 			//当前日期
-			currentDate, tmpErr := time.Parse(utils.FormatDate, av)
+			currentDate, tmpErr := time.ParseInLocation(utils.FormatDate, av, time.Local)
 			if tmpErr != nil {
 				err = tmpErr
 				return
@@ -413,7 +413,7 @@ func RefreshAllPredictCalculateTbz(edbInfoId, source int, fromEdbInfo *EdbInfo,
 			preDate := currentDate.AddDate(-1, 0, 0)
 			preDateStr := preDate.Format(utils.FormatDate)
 			if findItem, ok := dataMap[preDateStr]; ok { //上一年同期找到
-				//dataTime, _ := time.Parse(utils.FormatDate, date)
+				//dataTime, _ := time.ParseInLocation(utils.FormatDate, date, time.Local)
 				timestamp := currentDate.UnixNano() / 1e6
 				timestampStr := fmt.Sprintf("%d", timestamp)
 				val := TbzDiv(currentItem.Value, findItem.Value)

+ 4 - 5
models/predict_edb_data_calculate_tcz.go

@@ -142,7 +142,6 @@ func SavePredictCalculateTcz(reqEdbInfoId, classifyId int, edbName, frequency, u
 			return
 		}
 
-
 		// 删除该指标所有的同差数据
 		dataTableName := GetEdbDataTableName(utils.DATA_SOURCE_PREDICT_CALCULATE_TCZ)
 		fmt.Println("dataTableName:", dataTableName)
@@ -181,7 +180,7 @@ func SavePredictCalculateTcz(reqEdbInfoId, classifyId int, edbName, frequency, u
 		currentItem := dataMap[av]
 		if currentItem != nil {
 			//当前日期
-			currentDate, tmpErr := time.Parse(utils.FormatDate, av)
+			currentDate, tmpErr := time.ParseInLocation(utils.FormatDate, av, time.Local)
 			if tmpErr != nil {
 				err = tmpErr
 				return
@@ -190,7 +189,7 @@ func SavePredictCalculateTcz(reqEdbInfoId, classifyId int, edbName, frequency, u
 			preDate := currentDate.AddDate(-1, 0, 0)
 			preDateStr := preDate.Format(utils.FormatDate)
 			if findItem, ok := dataMap[preDateStr]; ok { //上一年同期找到
-				//dataTime, _ := time.Parse(utils.FormatDate, date)
+				//dataTime, _ := time.ParseInLocation(utils.FormatDate, date, time.Local)
 				if _, ok := existMap[edbCode+av]; !ok {
 					timestamp := currentDate.UnixNano() / 1e6
 					timestampStr := fmt.Sprintf("%d", timestamp)
@@ -407,7 +406,7 @@ func RefreshAllPredictCalculateTcz(edbInfoId, source int, fromEdbInfo *EdbInfo,
 		currentItem := dataMap[av]
 		if currentItem != nil {
 			//当前日期
-			currentDate, tmpErr := time.Parse(utils.FormatDate, av)
+			currentDate, tmpErr := time.ParseInLocation(utils.FormatDate, av, time.Local)
 			if tmpErr != nil {
 				err = tmpErr
 				return
@@ -416,7 +415,7 @@ func RefreshAllPredictCalculateTcz(edbInfoId, source int, fromEdbInfo *EdbInfo,
 			preDate := currentDate.AddDate(-1, 0, 0)
 			preDateStr := preDate.Format(utils.FormatDate)
 			if findItem, ok := dataMap[preDateStr]; ok { //上一年同期找到
-				//dataTime, _ := time.Parse(utils.FormatDate, date)
+				//dataTime, _ := time.ParseInLocation(utils.FormatDate, date, time.Local)
 				timestamp := currentDate.UnixNano() / 1e6
 				timestampStr := fmt.Sprintf("%d", timestamp)
 				val := TczSub(currentItem.Value, findItem.Value)

+ 3 - 3
models/predict_edb_data_calculate_time_shift.go

@@ -152,7 +152,7 @@ func SavePredictCalculateTimeShift(req *EdbInfoCalculateBatchSaveReq, fromEdbInf
 			if err != nil {
 				return
 			}
-		}else{
+		} else {
 			return
 		}
 	}
@@ -212,7 +212,7 @@ func refreshAllPredictCalculateTimeShift(to orm.TxOrmer, edbInfoId, source, form
 	if moveType == 2 {
 		shiftDay = -shiftDay
 	}
-	latestDate, _ := time.Parse(utils.FormatDate, fromEdbInfo.LatestDate)
+	latestDate, _ := time.ParseInLocation(utils.FormatDate, fromEdbInfo.LatestDate, time.Local)
 	latestDateStr = latestDate.AddDate(0, 0, shiftDay).Format(utils.FormatDate)
 
 	var dateArr []string
@@ -248,7 +248,7 @@ func refreshAllPredictCalculateTimeShift(to orm.TxOrmer, edbInfoId, source, form
 		currentItem := dataList[i]
 		existKey := edbCode + currentItem.DataTime
 		if _, ok := existMap[existKey]; !ok {
-			currentDate, _ := time.Parse(utils.FormatDate, currentItem.DataTime)
+			currentDate, _ := time.ParseInLocation(utils.FormatDate, currentItem.DataTime, time.Local)
 			newDate := currentDate.AddDate(0, 0, shiftDay)
 
 			timestamp := newDate.UnixNano() / 1e6

+ 5 - 5
models/predict_edb_data_calculate_zjpj.go

@@ -270,7 +270,7 @@ func SavePredictCalculateZjpj(req *EdbInfoCalculateBatchSaveReq, firstEdbInfo, s
 				err = fmt.Errorf("删除历史数据失败,Err:" + err.Error())
 				return
 			}
-		}else{
+		} else {
 			return
 		}
 	}
@@ -349,10 +349,10 @@ func refreshAllPredictCalculateZjpj(to orm.TxOrmer, edbInfo, firstEdbInfo, secon
 	}
 	if edbInfo.CalculateFormula <= secondEdbInfo.LatestDate {
 		latestDateStr = secondEdbInfo.LatestDate
-	}else{
+	} else {
 		if edbInfo.CalculateFormula >= firstEdbInfo.LatestDate {
 			latestDateStr = firstEdbInfo.LatestDate
-		}else {
+		} else {
 			latestDateStr = edbInfo.CalculateFormula
 		}
 	}
@@ -394,7 +394,7 @@ func refreshAllPredictCalculateZjpj(to orm.TxOrmer, edbInfo, firstEdbInfo, secon
 				}
 			} else {
 				//时间戳
-				currentDate, _ := time.Parse(utils.FormatDate, v.DataTime)
+				currentDate, _ := time.ParseInLocation(utils.FormatDate, v.DataTime, time.Local)
 				timestamp := currentDate.UnixNano() / 1e6
 
 				edbDataZjpj := &EdbDataPredictCalculateZjpj{
@@ -452,7 +452,7 @@ func refreshAllPredictCalculateZjpj(to orm.TxOrmer, edbInfo, firstEdbInfo, secon
 				}
 			} else {
 				//时间戳
-				currentDate, _ := time.Parse(utils.FormatDate, v.DataTime)
+				currentDate, _ := time.ParseInLocation(utils.FormatDate, v.DataTime, time.Local)
 				timestamp := currentDate.UnixNano() / 1e6
 
 				edbDataZjpj := &EdbDataPredictCalculateZjpj{

+ 1 - 1
utils/common.go

@@ -631,7 +631,7 @@ func StrDateTimeToWeek(strTime string) string {
 		"Sunday":    "周日",
 	}
 	var ctime = StrTimeToTime(strTime).Format("2006-01-02")
-	startday, _ := time.Parse("2006-01-02", ctime)
+	startday, _ := time.ParseInLocation("2006-01-02", ctime, time.Local)
 	staweek_int := startday.Weekday().String()
 	return WeekDayMap[staweek_int]
 }