Sfoglia il codice sorgente

Merge branch 'master' into feature/eta1.2.0_edb_calculate

# Conflicts:
#	controllers/base_from_calculate.go
#	controllers/base_from_predict_calculate.go
#	models/base_from_calculate.go
#	models/base_predict_from_calculate.go
xyxie 1 anno fa
parent
commit
ec0e1ab337
100 ha cambiato i file con 1782 aggiunte e 496 eliminazioni
  1. 89 0
      controllers/base_common.go
  2. 18 14
      controllers/base_from_calculate.go
  3. 1 1
      controllers/base_from_jiayue.go
  4. 2 2
      controllers/base_from_lt.go
  5. 9 2
      controllers/base_from_mysteel_chemical.go
  6. 2 3
      controllers/base_from_pb.go
  7. 2 2
      controllers/base_from_pb_finance.go
  8. 11 11
      controllers/base_from_predict_calculate.go
  9. 2 2
      controllers/base_from_ths.go
  10. 38 9
      controllers/base_from_wind.go
  11. 244 0
      controllers/base_from_wind_wsd.go
  12. 30 0
      controllers/edb_info_stat.go
  13. 23 0
      controllers/error.go
  14. 2 2
      controllers/future_good/future_good_edb_info.go
  15. 1 1
      controllers/open/edb_info.go
  16. 12 4
      logic/base_edb_info.go
  17. 1 1
      logic/profit_chart_info.go
  18. 4 0
      main.go
  19. 5 5
      models/base_from_adjust.go
  20. 4 3
      models/base_from_baiinfo.go
  21. 8 11
      models/base_from_calculate.go
  22. 4 3
      models/base_from_cffex.go
  23. 4 3
      models/base_from_coal.go
  24. 5 3
      models/base_from_com_trade.go
  25. 5 3
      models/base_from_dl.go
  26. 5 3
      models/base_from_eia_steo.go
  27. 5 3
      models/base_from_fubao.go
  28. 5 3
      models/base_from_gie.go
  29. 5 3
      models/base_from_google_travel.go
  30. 5 5
      models/base_from_jiayue.go
  31. 5 3
      models/base_from_lt.go
  32. 5 3
      models/base_from_lz.go
  33. 8 6
      models/base_from_manual.go
  34. 5 3
      models/base_from_mysteel.go
  35. 5 3
      models/base_from_mysteel_chemical.go
  36. 5 3
      models/base_from_national_statistics.go
  37. 4 3
      models/base_from_pb.go
  38. 4 3
      models/base_from_pb_finance.go
  39. 2 2
      models/base_from_python.go
  40. 5 3
      models/base_from_sci.go
  41. 5 4
      models/base_from_sh.go
  42. 8 6
      models/base_from_shfe.go
  43. 5 3
      models/base_from_smm.go
  44. 5 3
      models/base_from_stock_plant.go
  45. 5 4
      models/base_from_ths.go
  46. 13 6
      models/base_from_wind.go
  47. 225 0
      models/base_from_wind_wsd.go
  48. 5 3
      models/base_from_zz.go
  49. 7 7
      models/base_predict_from_calculate.go
  50. 60 0
      models/data_stat/edb_info_delete_log.go
  51. 64 0
      models/data_stat/edb_info_update_log.go
  52. 103 0
      models/data_stat/edb_info_update_stat.go
  53. 75 0
      models/data_stat/edb_source_stat.go
  54. 12 0
      models/db.go
  55. 43 4
      models/edb_classify.go
  56. 21 20
      models/edb_data_base.go
  57. 16 14
      models/edb_data_calculate_bp.go
  58. 12 10
      models/edb_data_calculate_cjjx.go
  59. 12 10
      models/edb_data_calculate_correlation.go
  60. 10 8
      models/edb_data_calculate_hbz.go
  61. 11 9
      models/edb_data_calculate_hcz.go
  62. 14 12
      models/edb_data_calculate_jp.go
  63. 11 9
      models/edb_data_calculate_kszs.go
  64. 10 8
      models/edb_data_calculate_ljz.go
  65. 10 8
      models/edb_data_calculate_ljznczj.go
  66. 13 9
      models/edb_data_calculate_ljztbpj.go
  67. 9 7
      models/edb_data_calculate_ljzzj.go
  68. 10 8
      models/edb_data_calculate_ljzzy.go
  69. 13 11
      models/edb_data_calculate_nh.go
  70. 11 5
      models/edb_data_calculate_nhcc.go
  71. 11 9
      models/edb_data_calculate_nszydbpjjs.go
  72. 5 3
      models/edb_data_calculate_percentile.go
  73. 5 3
      models/edb_data_calculate_rjz.go
  74. 4 3
      models/edb_data_calculate_standard_deviation.go
  75. 10 8
      models/edb_data_calculate_tbz.go
  76. 10 8
      models/edb_data_calculate_tcz.go
  77. 10 8
      models/edb_data_calculate_time_shift.go
  78. 1 1
      models/edb_data_calculate_zdyfx.go
  79. 9 5
      models/edb_data_calculate_zjpj.go
  80. 5 3
      models/edb_data_calculate_zsxy.go
  81. 6 2
      models/edb_data_table.go
  82. 124 29
      models/edb_info.go
  83. 1 0
      models/edb_info_calculate_mapping.go
  84. 71 0
      models/edb_terminal.go
  85. 1 0
      models/future_good/future_good_edb_info.go
  86. 8 8
      models/predict_edb_data_calculate_bp.go
  87. 7 7
      models/predict_edb_data_calculate_cjjx.go
  88. 6 6
      models/predict_edb_data_calculate_hbz.go
  89. 6 6
      models/predict_edb_data_calculate_hcz.go
  90. 9 9
      models/predict_edb_data_calculate_jp.go
  91. 7 7
      models/predict_edb_data_calculate_kszs.go
  92. 7 7
      models/predict_edb_data_calculate_ljz.go
  93. 7 7
      models/predict_edb_data_calculate_ljznczj.go
  94. 4 4
      models/predict_edb_data_calculate_ljztbpj.go
  95. 6 6
      models/predict_edb_data_calculate_ljzzj.go
  96. 5 5
      models/predict_edb_data_calculate_ljzzy.go
  97. 8 8
      models/predict_edb_data_calculate_nh.go
  98. 2 2
      models/predict_edb_data_calculate_nhcc.go
  99. 6 6
      models/predict_edb_data_calculate_nszydbpjjs.go
  100. 4 4
      models/predict_edb_data_calculate_percentile.go

+ 89 - 0
controllers/base_common.go

@@ -0,0 +1,89 @@
+package controllers
+
+import (
+	"encoding/json"
+	"net/http"
+	"net/url"
+
+	"github.com/beego/beego/v2/server/web"
+
+	"eta/eta_index_lib/models"
+	"eta/eta_index_lib/utils"
+)
+
+type BaseCommonController struct {
+	web.Controller
+}
+
+func (c *BaseCommonController) ServeJSON(encoding ...bool) {
+	// 方法处理完后,需要后置处理的业务逻辑
+	//if handlerList, ok := AfterHandlerUrlMap[c.Ctx.Request.URL.Path]; ok {
+	//	for _, handler := range handlerList {
+	//		handler(c.Ctx.Input.RequestBody)
+	//	}
+	//}
+
+	var (
+		hasIndent   = false
+		hasEncoding = false
+	)
+	if web.BConfig.RunMode == web.PROD {
+		hasIndent = false
+	}
+	if len(encoding) > 0 && encoding[0] == true {
+		hasEncoding = true
+	}
+	if c.Data["json"] == nil {
+		go utils.SendEmail("异常提醒:", "接口:"+"URI:"+c.Ctx.Input.URI()+";无返回值", utils.EmailSendToUsers)
+		return
+	}
+
+	baseRes := c.Data["json"].(*models.BaseResponse)
+	if baseRes != nil && baseRes.Ret != 408 {
+		body, _ := json.Marshal(baseRes)
+		var requestBody string
+		method := c.Ctx.Input.Method()
+		if method == "GET" {
+			requestBody = c.Ctx.Request.RequestURI
+		} else {
+			requestBody, _ = url.QueryUnescape(string(c.Ctx.Input.RequestBody))
+		}
+		if baseRes.Ret != 200 && baseRes.IsSendEmail {
+			go utils.SendEmail(utils.APP_NAME_CN+"【"+utils.RunMode+"】"+"失败提醒", "URI:"+c.Ctx.Input.URI()+"<br/> "+"Params"+requestBody+" <br/>"+"ErrMsg:"+baseRes.ErrMsg+";<br/>Msg:"+baseRes.Msg+";<br/> Body:"+string(body)+"<br/>", utils.EmailSendToUsers)
+		}
+	}
+	c.JSON(c.Data["json"], hasIndent, hasEncoding)
+}
+
+func (c *BaseCommonController) JSON(data interface{}, hasIndent bool, coding bool) error {
+	c.Ctx.Output.Header("Content-Type", "application/json; charset=utf-8")
+	var content []byte
+	var err error
+	if hasIndent {
+		content, err = json.MarshalIndent(data, "", "  ")
+	} else {
+		content, err = json.Marshal(data)
+	}
+	if err != nil {
+		http.Error(c.Ctx.Output.Context.ResponseWriter, err.Error(), http.StatusInternalServerError)
+		return err
+	}
+	ip := c.Ctx.Input.IP()
+	requestBody, err := url.QueryUnescape(string(c.Ctx.Input.RequestBody))
+	if err != nil {
+		requestBody = string(c.Ctx.Input.RequestBody)
+	}
+	if requestBody == "" {
+		requestBody = c.Ctx.Input.URI()
+	}
+	authorization := c.Ctx.Input.Header("authorization")
+	if authorization == "" {
+		authorization = c.Ctx.Input.Header("Authorization")
+	}
+
+	utils.ApiLog.Info("uri:%s, authorization:%s, requestBody:%s, responseBody:%s, ip:%s", c.Ctx.Input.URI(), authorization, requestBody, content, ip)
+	if coding {
+		content = []byte(utils.StringsToJSON(string(content)))
+	}
+	return c.Ctx.Output.Body(content)
+}

+ 18 - 14
controllers/base_from_calculate.go

@@ -695,7 +695,7 @@ func (this *CalculateController) BatchSave() {
 		condition += " AND edb_info_id =? "
 		pars = append(pars, fromEdbInfoId)
 		condition += " AND value <=0 "
-		checkCount, tmpErr := models.GetEdbDataCount(condition, pars, fromEdbInfo.Source)
+		checkCount, tmpErr := models.GetEdbDataCount(condition, pars, fromEdbInfo.Source, fromEdbInfo.SubSource)
 		if tmpErr != nil && tmpErr.Error() != utils.ErrNoRow() {
 			br.Msg = "判断环比值是否可计算失败"
 			br.ErrMsg = "判断环比值是否可计算失败,Err:" + tmpErr.Error()
@@ -1090,6 +1090,8 @@ func (this *CalculateController) BatchEdit() {
 		}
 	}
 
+	//dataUpdateTime := time.Now().Format(utils.FormatDateTime)
+
 	var sourName, errMsg string
 	var edbInfoId int
 	var baseEdbInfoModel models.BaseEdbInfoInterface
@@ -1124,7 +1126,7 @@ func (this *CalculateController) BatchEdit() {
 		condition += " AND edb_info_id =? "
 		pars = append(pars, req.FromEdbInfoId)
 		condition += " AND value <=0 "
-		checkCount, tmpErr := models.GetEdbDataCount(condition, pars, fromEdbInfo.Source)
+		checkCount, tmpErr := models.GetEdbDataCount(condition, pars, fromEdbInfo.Source, fromEdbInfo.SubSource)
 		if tmpErr != nil && tmpErr.Error() != utils.ErrNoRow() {
 			br.Msg = "判断环比值是否可计算失败"
 			br.ErrMsg = "判断环比值是否可计算失败,Err:" + tmpErr.Error()
@@ -1320,6 +1322,7 @@ func (this *CalculateController) BatchEdit() {
 	}
 
 	// 更新指标最大最小值
+	//err, errMsg = models.UnifiedModifyEdbInfoMaxAndMinInfoTmp(edbInfo, dataUpdateTime)
 	err, errMsg = models.UnifiedModifyEdbInfoMaxAndMinInfo(edbInfo)
 	if err != nil {
 		br.Msg = errMsg
@@ -1394,6 +1397,7 @@ func (this *CalculateController) Refresh() {
 	endDate := time.Now().Format(utils.FormatDate)
 	edbInfoId := edbInfo.EdbInfoId
 	source := edbInfo.Source
+	subSource := edbInfo.SubSource
 
 	var baseEdbInfoModel models.BaseEdbInfoInterface
 	refreshParams := models.RefreshParams{
@@ -1426,7 +1430,7 @@ func (this *CalculateController) Refresh() {
 			edbInfo, _ := models.GetEdbInfoById(v.FromEdbInfoId)
 			edbInfoList = append(edbInfoList, edbInfo)
 		}
-		err = models.RefreshAllCalculate(edbInfoList, edbInfo.EdbInfoId, source, edbInfo.EdbCode, edbInfo.CalculateFormula, startDate, endDate, edbInfoIdBytes, edbInfo.EmptyType, edbInfo.MaxEmptyType)
+		err = models.RefreshAllCalculate(edbInfoList, edbInfo.EdbInfoId, source, subSource, edbInfo.EdbCode, edbInfo.CalculateFormula, startDate, endDate, edbInfoIdBytes, edbInfo.EmptyType, edbInfo.MaxEmptyType)
 		if err != nil && err.Error() != utils.ErrNoRow() {
 			errMsg = "RefreshCalculate Err:" + err.Error()
 			break
@@ -1446,7 +1450,7 @@ func (this *CalculateController) Refresh() {
 		//endDate = time.Now().Format(utils.FormatDate)
 		endDate = ``   //只要填写日期,就会出现问题,还是把日期给去掉吧
 		startDate = `` //只要填写日期,就会出现问题,还是把日期给去掉吧
-		err = models.RefreshAllCalculateLjzzy(edbInfoId, source, fromEdbInfo, calculateLjzzy.EdbCode, startDate, endDate)
+		err = models.RefreshAllCalculateLjzzy(edbInfoId, source, subSource, fromEdbInfo, calculateLjzzy.EdbCode, startDate, endDate)
 		if err != nil && err.Error() != utils.ErrNoRow() {
 			errMsg = "RefreshAllCalculateLjzzy Err:" + err.Error()
 			break
@@ -1464,7 +1468,7 @@ func (this *CalculateController) Refresh() {
 		}
 		//startDate = edbInfo.StartDate
 		endDate = time.Now().Format(utils.FormatDate)
-		err = models.RefreshAllCalculateTbz(edbInfoId, source, fromEdbInfo, calculateTbz.EdbCode, startDate, endDate)
+		err = models.RefreshAllCalculateTbz(edbInfoId, source, subSource, fromEdbInfo, calculateTbz.EdbCode, startDate, endDate)
 		if err != nil && err.Error() != utils.ErrNoRow() {
 			errMsg = "RefreshAllCalculateTbz Err:" + err.Error()
 			break
@@ -1482,7 +1486,7 @@ func (this *CalculateController) Refresh() {
 		}
 		//startDate = edbInfo.StartDate
 		endDate = time.Now().Format(utils.FormatDate)
-		err = models.RefreshAllCalculateTcz(edbInfoId, source, fromEdbInfo, calculateTcz.EdbCode, startDate, endDate)
+		err = models.RefreshAllCalculateTcz(edbInfoId, source, subSource, fromEdbInfo, calculateTcz.EdbCode, startDate, endDate)
 		if err != nil && err.Error() != utils.ErrNoRow() {
 			errMsg = "RefreshCalculateTcz Err:" + err.Error()
 			break
@@ -1501,7 +1505,7 @@ func (this *CalculateController) Refresh() {
 		formulaInt, _ := strconv.Atoi(edbInfo.CalculateFormula)
 		//startDate = edbInfo.StartDate
 		startDate = `` //只要填写日期,就会出现问题,还是把日期给去掉吧
-		err = models.RefreshAllCalculateNszydpjjs(edbInfoId, edbInfo.Source, formulaInt, fromEdbInfo, calculateNszydpjjs.EdbCode, startDate)
+		err = models.RefreshAllCalculateNszydpjjs(edbInfoId, edbInfo.Source, edbInfo.SubSource, formulaInt, fromEdbInfo, calculateNszydpjjs.EdbCode, startDate)
 		if err != nil && err.Error() != utils.ErrNoRow() {
 			errMsg = "RefreshCalculateNszydpjjs Err:" + err.Error()
 			break
@@ -1520,7 +1524,7 @@ func (this *CalculateController) Refresh() {
 		startDate = `` //只要填写日期,就会出现问题,还是把日期给去掉吧
 		endDate = time.Now().Format(utils.FormatDate)
 		formulaInt, _ := strconv.Atoi(edbInfo.CalculateFormula)
-		err = models.RefreshAllCalculateHbz(edbInfoId, source, fromEdbInfo, calculateTbz.EdbCode, startDate, endDate, formulaInt)
+		err = models.RefreshAllCalculateHbz(edbInfoId, source, subSource, fromEdbInfo, calculateTbz.EdbCode, startDate, endDate, formulaInt)
 		if err != nil && err.Error() != utils.ErrNoRow() {
 			errMsg = "RefreshAllCalculateHbz Err:" + err.Error()
 			break
@@ -1539,7 +1543,7 @@ func (this *CalculateController) Refresh() {
 		startDate = `` //只要填写日期,就会出现问题,还是把日期给去掉吧
 		endDate = time.Now().Format(utils.FormatDate)
 		formulaInt, _ := strconv.Atoi(edbInfo.CalculateFormula)
-		err = models.RefreshAllCalculateHcz(edbInfoId, source, fromEdbInfo, calculateTbz.EdbCode, startDate, endDate, formulaInt)
+		err = models.RefreshAllCalculateHcz(edbInfoId, source, subSource, fromEdbInfo, calculateTbz.EdbCode, startDate, endDate, formulaInt)
 		if err != nil && err.Error() != utils.ErrNoRow() {
 			errMsg = "RefreshAllCalculateHcz Err:" + err.Error()
 			break
@@ -1557,7 +1561,7 @@ func (this *CalculateController) Refresh() {
 		}
 		//startDate = edbInfo.StartDate
 		endDate = time.Now().Format(utils.FormatDate)
-		err = models.RefreshAllCalculateBp(edbInfoId, source, fromEdbInfo, calculateTbz.EdbCode, startDate, endDate)
+		err = models.RefreshAllCalculateBp(edbInfoId, source, subSource, fromEdbInfo, calculateTbz.EdbCode, startDate, endDate)
 		if err != nil && err.Error() != utils.ErrNoRow() {
 			errMsg = "RefreshAllCalculateBp Err:" + err.Error()
 			break
@@ -1577,7 +1581,7 @@ func (this *CalculateController) Refresh() {
 		startDate = `` //只要填写日期,就会出现问题,还是把日期给去掉吧
 		endDate = time.Now().Format(utils.FormatDate)
 		formulaInt, _ := strconv.Atoi(calculate.CalculateFormula)
-		err = models.RefreshAllCalculateTimeShift(edbInfoId, source, formulaInt, calculate.MoveType, fromEdbInfo, calculate.EdbCode, startDate, endDate, calculate.MoveFrequency)
+		err = models.RefreshAllCalculateTimeShift(edbInfoId, source, subSource, formulaInt, calculate.MoveType, fromEdbInfo, calculate.EdbCode, startDate, endDate, calculate.MoveFrequency)
 		if err != nil && err.Error() != utils.ErrNoRow() {
 			errMsg = "RefreshAllCalculateTimeShift Err:" + err.Error()
 		}
@@ -1626,7 +1630,7 @@ func (this *CalculateController) Refresh() {
 		}
 		formulaInt, _ := strconv.Atoi(edbInfo.CalculateFormula)
 		startDate = `` //只要填写日期,就会出现问题,还是把日期给去掉吧
-		err = models.RefreshAllCalculateCjjx(edbInfoId, edbInfo.Source, fromEdbInfo, calculateCjjx.EdbCode, startDate, "", edbInfo.Calendar, formulaInt)
+		err = models.RefreshAllCalculateCjjx(edbInfoId, edbInfo.Source, edbInfo.SubSource, fromEdbInfo, calculateCjjx.EdbCode, startDate, "", edbInfo.Calendar, formulaInt)
 		if err != nil && err.Error() != utils.ErrNoRow() {
 			errMsg = "RefreshAllCalculateCjjx Err:" + err.Error()
 			break
@@ -1669,7 +1673,7 @@ func (this *CalculateController) Refresh() {
 		}
 		//startDate = edbInfo.StartDate
 		endDate = time.Now().Format(utils.FormatDate)
-		err = models.RefreshAllCalculateJp(edbInfoId, source, fromEdbInfo, edbInfo.EdbCode, edbInfo.Frequency, edbInfo.CalculateFormula)
+		err = models.RefreshAllCalculateJp(edbInfoId, source, subSource, fromEdbInfo, edbInfo.EdbCode, edbInfo.Frequency, edbInfo.CalculateFormula)
 		if err != nil && err.Error() != utils.ErrNoRow() {
 			errMsg = "RefreshAllCalculateJp Err:" + err.Error()
 			break
@@ -1688,7 +1692,7 @@ func (this *CalculateController) Refresh() {
 		}
 		//startDate = edbInfo.StartDate
 		endDate = time.Now().Format(utils.FormatDate)
-		err = models.RefreshAllCalculateNh(edbInfoId, source, fromEdbInfo, edbInfo.EdbCode)
+		err = models.RefreshAllCalculateNh(edbInfoId, source, subSource, fromEdbInfo, edbInfo.EdbCode)
 		if err != nil && err.Error() != utils.ErrNoRow() {
 			errMsg = "RefreshAllCalculateNh Err:" + err.Error()
 			break

+ 1 - 1
controllers/base_from_jiayue.go

@@ -191,7 +191,7 @@ func (this *JiaYueController) Refresh() {
 	}
 
 	// 刷新指标数据
-	e = models.RefreshEdbDataFromJiaYue(req.Source, req.EdbInfoId, sourceItem.TableName, req.EdbCode, startDate, indexData.IndexData)
+	e = models.RefreshEdbDataFromJiaYue(req.Source, edbInfo.SubSource, req.EdbInfoId, sourceItem.TableName, req.EdbCode, startDate, indexData.IndexData)
 	if e != nil {
 		br.Msg = "刷新失败"
 		br.ErrMsg = "刷新嘉悦指标失败, Err: " + e.Error()

+ 2 - 2
controllers/base_from_lt.go

@@ -43,7 +43,7 @@ func (this *LtController) Add() {
 	cacheKey = utils.CACHE_EDB_DATA_ADD + strconv.Itoa(source) + "_" + req.EdbCode
 	if !utils.Rc.IsExist(cacheKey) {
 		utils.Rc.SetNX(cacheKey, 1, 1*time.Minute)
-		dataItem, err := services.GetEdbDataFromLt(req.EdbCode, utils.BASE_START_DATE, utils.BASE_END_DATE)
+		dataItem, err := services.GetEdbDataFromLt(req.EdbCode, utils.BASE_START_DATE, utils.BASE_END_DATE, "")
 		if err != nil {
 			br.Msg = "获取指标信息失败!"
 			br.ErrMsg = "获取指标信息失败 GetEdbDataFromLt,Err:" + err.Error()
@@ -112,7 +112,7 @@ func (this *LtController) Refresh() {
 		return
 	}
 
-	dataItem, err := services.GetEdbDataFromLt(req.EdbCode, req.StartDate, utils.BASE_END_DATE)
+	dataItem, err := services.GetEdbDataFromLt(req.EdbCode, req.StartDate, utils.BASE_END_DATE, edbInfo.TerminalCode)
 	if err != nil {
 		br.Msg = "获取指标信息失败!"
 		br.ErrMsg = "获取指标信息失败 GetEdbDataFromLt,Err:" + err.Error()

+ 9 - 2
controllers/base_from_mysteel_chemical.go

@@ -107,7 +107,7 @@ func (this *MySteelChemicalController) Refresh() {
 		br.Msg = "系统处理中,请稍后重试"
 		return
 	}
-
+	dataUpdateTime := time.Now().Format(utils.FormatDateTime)
 	utils.Rc.SetNX(cacheKey, 1, 1*time.Minute)
 	err = models.RefreshEdbDataFromMysteelChemical(req.EdbInfoId, req.EdbCode, req.StartDate)
 	if err != nil && err.Error() != utils.ErrNoRow() {
@@ -115,13 +115,20 @@ func (this *MySteelChemicalController) Refresh() {
 		br.ErrMsg = "刷新指标信息失败 RefreshEdbDataFromMysteel,Err:" + err.Error()
 		return
 	}
+
 	// 更新指标最大最小值
-	err, errMsg := models.UnifiedModifyEdbInfoMaxAndMinInfo(edbInfo)
+	erDataUpdateDate, err, errMsg := models.UnifiedModifyEdbInfoMaxAndMinInfoDataUpdate(edbInfo, dataUpdateTime)
 	if err != nil {
 		br.Msg = errMsg
 		br.ErrMsg = err.Error()
 		return
 	}
+	// 添加指标刷新成功日志
+	if erDataUpdateDate != "" {
+		_ = services.AddEdbInfoUpdateLog(edbInfo.EdbInfoId, 1, "", 1, "", 0)
+	} else {
+		_ = services.AddEdbInfoUpdateLog(edbInfo.EdbInfoId, 1, "", 2, "未刷新到数据", 0)
+	}
 
 	// 更新ES
 	go logic.UpdateEs(edbInfo.EdbInfoId)

+ 2 - 3
controllers/base_from_pb.go

@@ -43,7 +43,7 @@ func (this *PbController) Add() {
 	cacheKey = utils.CACHE_EDB_DATA_ADD + strconv.Itoa(source) + "_" + req.EdbCode
 	if !utils.Rc.IsExist(cacheKey) {
 		utils.Rc.SetNX(cacheKey, 1, 1*time.Minute)
-		dataItem, err := services.GetEdbDataFromPb(req.EdbCode, utils.BASE_START_DATE_UnSpace, utils.BASE_END_DATE_UnSpace)
+		dataItem, err := services.GetEdbDataFromPb(req.EdbCode, utils.BASE_START_DATE_UnSpace, utils.BASE_END_DATE_UnSpace, "")
 		if err != nil {
 			br.Msg = "获取指标信息失败!"
 			br.ErrMsg = "获取指标信息失败 GetEdbDataFromPb,Err:" + err.Error()
@@ -115,7 +115,7 @@ func (this *PbController) Refresh() {
 
 	//开始日期格式化
 	startDateTime, _ := time.ParseInLocation(utils.FormatDate, req.StartDate, time.Local)
-	dataItem, err := services.GetEdbDataFromPb(req.EdbCode, startDateTime.Format(utils.FormatDateUnSpace), utils.BASE_END_DATE_UnSpace)
+	dataItem, err := services.GetEdbDataFromPb(req.EdbCode, startDateTime.Format(utils.FormatDateUnSpace), utils.BASE_END_DATE_UnSpace, edbInfo.TerminalCode)
 	if err != nil {
 		br.Msg = "获取指标信息失败!"
 		br.ErrMsg = "获取指标信息失败 GetEdbDataFromPb,Err:" + err.Error()
@@ -127,7 +127,6 @@ func (this *PbController) Refresh() {
 		br.ErrMsg = "刷新指标信息失败 RefreshEdbDataFromPb,Err:" + err.Error()
 		return
 	}
-	// 更新指标最大最小值
 	err, errMsg := models.UnifiedModifyEdbInfoMaxAndMinInfo(edbInfo)
 	if err != nil {
 		br.Msg = errMsg

+ 2 - 2
controllers/base_from_pb_finance.go

@@ -54,7 +54,7 @@ func (this *PbFinanceController) Add() {
 			br.ErrMsg = "指标编码异常,请传入客户编码"
 			return
 		}
-		dataItem, err := services.GetEdbDataFromPbFinance(edbCodeArr[0], edbCodeArr[1], utils.BASE_START_DATE_UnSpace, utils.BASE_END_DATE_UnSpace)
+		dataItem, err := services.GetEdbDataFromPbFinance(edbCodeArr[0], edbCodeArr[1], utils.BASE_START_DATE_UnSpace, utils.BASE_END_DATE_UnSpace, "")
 		if err != nil {
 			br.Msg = "获取指标信息失败!"
 			br.ErrMsg = "获取指标信息失败 GetEdbDataFromPb,Err:" + err.Error()
@@ -136,7 +136,7 @@ func (this *PbFinanceController) Refresh() {
 		br.ErrMsg = "指标编码异常,请传入客户编码"
 		return
 	}
-	dataItem, err := services.GetEdbDataFromPbFinance(edbCodeArr[0], edbCodeArr[1], startDateTime.Format(utils.FormatDateUnSpace), utils.BASE_END_DATE_UnSpace)
+	dataItem, err := services.GetEdbDataFromPbFinance(edbCodeArr[0], edbCodeArr[1], startDateTime.Format(utils.FormatDateUnSpace), utils.BASE_END_DATE_UnSpace, edbInfo.TerminalCode)
 	if err != nil {
 		br.Msg = "获取指标信息失败!"
 		br.ErrMsg = "获取指标信息失败 GetEdbDataFromPb,Err:" + err.Error()

+ 11 - 11
controllers/base_from_predict_calculate.go

@@ -975,7 +975,7 @@ func (this *PredictCalculateController) Refresh() {
 			edbInfo, _ := models.GetEdbInfoById(v.FromEdbInfoId)
 			edbInfoList = append(edbInfoList, edbInfo)
 		}
-		latestDateStr, latestValue, err = models.RefreshAllPredictCalculate(edbInfoList, edbInfo.EdbInfoId, source, edbInfo.EdbCode, edbInfo.CalculateFormula, startDate, edbInfoIdBytes, edbInfo.EmptyType, edbInfo.MaxEmptyType)
+		latestDateStr, latestValue, err = models.RefreshAllPredictCalculate(edbInfoList, edbInfo.EdbInfoId, source, edbInfo.SubSource, edbInfo.EdbCode, edbInfo.CalculateFormula, startDate, edbInfoIdBytes, edbInfo.EmptyType, edbInfo.MaxEmptyType)
 		if err != nil && err.Error() != utils.ErrNoRow() {
 			errMsg = "RefreshCalculate Err:" + err.Error()
 			break
@@ -992,7 +992,7 @@ func (this *PredictCalculateController) Refresh() {
 			break
 		}
 		startDate = edbInfo.StartDate
-		latestDateStr, latestValue, err = models.RefreshAllPredictCalculateTcz(edbInfoId, source, fromEdbInfo, calculateTcz.EdbCode, startDate)
+		latestDateStr, latestValue, err = models.RefreshAllPredictCalculateTcz(edbInfoId, source, edbInfo.SubSource, fromEdbInfo, calculateTcz.EdbCode, startDate)
 		if err != nil && err.Error() != utils.ErrNoRow() {
 			errMsg = "RefreshCalculateTcz Err:" + err.Error()
 			break
@@ -1015,7 +1015,7 @@ func (this *PredictCalculateController) Refresh() {
 			break
 		}
 		startDate = edbInfo.StartDate
-		latestDateStr, latestValue, err = models.RefreshAllPredictCalculateNszydpjjs(edbInfoId, source, formulaInt, fromEdbInfo, calculateInfo.EdbCode, startDate)
+		latestDateStr, latestValue, err = models.RefreshAllPredictCalculateNszydpjjs(edbInfoId, source, edbInfo.SubSource, formulaInt, fromEdbInfo, calculateInfo.EdbCode, startDate)
 		if err != nil && err.Error() != utils.ErrNoRow() {
 			errMsg = "RefreshAllPredictCalculateNszydpjjs Err:" + err.Error()
 			break
@@ -1032,7 +1032,7 @@ func (this *PredictCalculateController) Refresh() {
 			break
 		}
 		endDate = time.Now().Format(utils.FormatDate)
-		latestDateStr, latestValue, err = models.RefreshAllPredictCalculateBp(edbInfoId, source, fromEdbInfo, calculateTbz.EdbCode, startDate, endDate)
+		latestDateStr, latestValue, err = models.RefreshAllPredictCalculateBp(edbInfoId, source, edbInfo.SubSource, fromEdbInfo, calculateTbz.EdbCode, startDate, endDate)
 		if err != nil && err.Error() != utils.ErrNoRow() {
 			errMsg = "RefreshAllPredictCalculateBp Err:" + err.Error()
 			break
@@ -1051,7 +1051,7 @@ func (this *PredictCalculateController) Refresh() {
 		startDate = `` //只要填写日期,就会出现问题,还是把日期给去掉吧
 		endDate = time.Now().Format(utils.FormatDate)
 		formulaInt, _ := strconv.Atoi(edbInfo.CalculateFormula)
-		latestDateStr, latestValue, err = models.RefreshAllPredictCalculateHbz(edbInfoId, source, fromEdbInfo, calculateTbz.EdbCode, startDate, endDate, formulaInt)
+		latestDateStr, latestValue, err = models.RefreshAllPredictCalculateHbz(edbInfoId, source, edbInfo.SubSource, fromEdbInfo, calculateTbz.EdbCode, startDate, endDate, formulaInt)
 		if err != nil && err.Error() != utils.ErrNoRow() {
 			errMsg = "RefreshAllPredictCalculateHbz Err:" + err.Error()
 			break
@@ -1070,7 +1070,7 @@ func (this *PredictCalculateController) Refresh() {
 		startDate = `` //只要填写日期,就会出现问题,还是把日期给去掉吧
 		endDate = time.Now().Format(utils.FormatDate)
 		formulaInt, _ := strconv.Atoi(edbInfo.CalculateFormula)
-		latestDateStr, latestValue, err = models.RefreshAllPredictCalculateHcz(edbInfoId, source, fromEdbInfo, calculateTbz.EdbCode, startDate, endDate, formulaInt)
+		latestDateStr, latestValue, err = models.RefreshAllPredictCalculateHcz(edbInfoId, source, edbInfo.SubSource, fromEdbInfo, calculateTbz.EdbCode, startDate, endDate, formulaInt)
 		if err != nil && err.Error() != utils.ErrNoRow() {
 			errMsg = "RefreshAllPredictCalculateHcz Err:" + err.Error()
 			break
@@ -1088,7 +1088,7 @@ func (this *PredictCalculateController) Refresh() {
 		}
 		endDate = ``   //只要填写日期,就会出现问题,还是把日期给去掉吧
 		startDate = `` //只要填写日期,就会出现问题,还是把日期给去掉吧
-		latestDateStr, latestValue, err = models.RefreshAllPredictCalculateLjzzy(edbInfoId, source, fromEdbInfo, calculateLjzzy.EdbCode, startDate, endDate)
+		latestDateStr, latestValue, err = models.RefreshAllPredictCalculateLjzzy(edbInfoId, source, edbInfo.SubSource, fromEdbInfo, calculateLjzzy.EdbCode, startDate, endDate)
 		if err != nil && err.Error() != utils.ErrNoRow() {
 			errMsg = "RefreshAllPredictCalculateLjzzy Err:" + err.Error()
 			break
@@ -1108,7 +1108,7 @@ func (this *PredictCalculateController) Refresh() {
 		startDate = `` //只要填写日期,就会出现问题,还是把日期给去掉吧
 		endDate = time.Now().Format(utils.FormatDate)
 		formulaInt, _ := strconv.Atoi(calculate.CalculateFormula)
-		latestDateStr, latestValue, err = models.RefreshAllPredictCalculateTimeShift(edbInfoId, source, formulaInt, calculate.MoveType, fromEdbInfo, calculate.EdbCode, startDate, endDate, calculate.MoveFrequency)
+		latestDateStr, latestValue, err = models.RefreshAllPredictCalculateTimeShift(edbInfoId, source, edbInfo.SubSource, formulaInt, calculate.MoveType, fromEdbInfo, calculate.EdbCode, startDate, endDate, calculate.MoveFrequency)
 		if err != nil && err.Error() != utils.ErrNoRow() {
 			errMsg = "RefreshAllCalculateTimeShift Err:" + err.Error()
 		}
@@ -1137,7 +1137,7 @@ func (this *PredictCalculateController) Refresh() {
 		}
 		formulaInt, _ := strconv.Atoi(edbInfo.CalculateFormula)
 		startDate = `` //只要填写日期,就会出现问题,还是把日期给去掉吧
-		latestDateStr, latestValue, err = models.RefreshAllPredictCalculateCjjx(edbInfoId, edbInfo.Source, fromEdbInfo, calculateCjjx.EdbCode, startDate, "", edbInfo.Calendar, formulaInt)
+		latestDateStr, latestValue, err = models.RefreshAllPredictCalculateCjjx(edbInfoId, edbInfo.Source, edbInfo.SubSource, fromEdbInfo, calculateCjjx.EdbCode, startDate, "", edbInfo.Calendar, formulaInt)
 		if err != nil && err.Error() != utils.ErrNoRow() {
 			errMsg = "RefreshAllPredictCalculateCjjx Err:" + err.Error()
 			break
@@ -1159,7 +1159,7 @@ func (this *PredictCalculateController) Refresh() {
 			errMsg = "GetEdbInfoById Err:" + err.Error()
 			break
 		}
-		latestDateStr, latestValue, err = models.RefreshAllPredictCalculateJp(edbInfoId, source, fromEdbInfo, calculateInfo.EdbCode, edbInfo.Frequency, edbInfo.CalculateFormula)
+		latestDateStr, latestValue, err = models.RefreshAllPredictCalculateJp(edbInfoId, source, edbInfo.SubSource, fromEdbInfo, calculateInfo.EdbCode, edbInfo.Frequency, edbInfo.CalculateFormula)
 		if err != nil && err.Error() != utils.ErrNoRow() {
 			errMsg = "RefreshAllPredictCalculateJp Err:" + err.Error()
 			break
@@ -1175,7 +1175,7 @@ func (this *PredictCalculateController) Refresh() {
 			errMsg = "GetEdbInfoById Err:" + err.Error()
 			break
 		}
-		latestDateStr, latestValue, err = models.RefreshAllPredictCalculateNh(edbInfoId, source, fromEdbInfo, calculateInfo.EdbCode, edbInfo.Frequency, edbInfo.CalculateFormula)
+		latestDateStr, latestValue, err = models.RefreshAllPredictCalculateNh(edbInfoId, source, edbInfo.SubSource, fromEdbInfo, calculateInfo.EdbCode, edbInfo.Frequency, edbInfo.CalculateFormula)
 		if err != nil && err.Error() != utils.ErrNoRow() {
 			errMsg = "RefreshAllPredictCalculateNh Err:" + err.Error()
 			break

+ 2 - 2
controllers/base_from_ths.go

@@ -43,7 +43,7 @@ func (this *ThsController) Add() {
 	cacheKey = utils.CACHE_EDB_DATA_ADD + strconv.Itoa(source) + "_" + req.EdbCode
 	if !utils.Rc.IsExist(cacheKey) {
 		utils.Rc.SetNX(cacheKey, 1, 1*time.Minute)
-		dataItem, err := services.GetEdbDataFromThs(req.EdbCode, utils.BASE_START_DATE, utils.BASE_END_DATE)
+		dataItem, err := services.GetEdbDataFromThs(req.EdbCode, utils.BASE_START_DATE, utils.BASE_END_DATE, "")
 		if err != nil {
 			br.Msg = "获取指标信息失败!"
 			br.ErrMsg = "获取指标信息失败 GetEdbDataFromThs,Err:" + err.Error()
@@ -114,7 +114,7 @@ func (this *ThsController) Refresh() {
 	defer func() {
 		utils.Rc.Delete(cacheKey)
 	}()
-	dataItem, err := services.GetEdbDataFromThs(req.EdbCode, req.StartDate, utils.BASE_END_DATE)
+	dataItem, err := services.GetEdbDataFromThs(req.EdbCode, req.StartDate, utils.BASE_END_DATE, edbInfo.TerminalCode)
 	if err != nil {
 		br.Msg = "获取指标信息失败!"
 		br.ErrMsg = "获取指标信息失败 GetEdbDataFromThs,Err:" + err.Error()

+ 38 - 9
controllers/base_from_wind.go

@@ -53,10 +53,11 @@ func (this *WindController) Add() {
 		}
 
 		windUrl := ``
+		terminalCode := ""
 
 		// 试用平台的话,需要额外从弘则这边获取下地址
 		if utils.BusinessCode == utils.HZ_TRIAL_BUSSINESS_CODE {
-			tmpWindUrl, err, errMsg := services.GetHzWindUrl(req.EdbCode, source)
+			tmpWindUrl, tmpTerminalCode, err, errMsg := services.GetHzWindUrl(req.EdbCode, source)
 			if err != nil {
 				br.Msg = "添加失败!"
 				br.ErrMsg = "添加失败,Err:" + err.Error()
@@ -66,20 +67,40 @@ func (this *WindController) Add() {
 				return
 			}
 			windUrl = tmpWindUrl
+			terminalCode = tmpTerminalCode
 		}
 
-		if windUrl == `` {
-			windUrl, err = GetServerUrl()
+		if terminalCode == `` {
+			terminalInfo, err := services.GetTerminal(utils.DATA_SOURCE_WIND, "")
 			if err != nil {
 				br.Msg = "获取可以使用的wind地址失败!"
 				br.ErrMsg = "获取可以使用的wind地址失败,err:" + err.Error()
 				return
 			}
+			windUrl = terminalInfo.ServerUrl
+			terminalCode = terminalInfo.TerminalCode
 		}
 
-		if windUrl == `` {
-			br.Msg = "没有配置wind地址!"
-			br.ErrMsg = "没有配置wind地址"
+		if terminalCode == `` {
+			br.Msg = "没有配置wind终端!"
+			br.ErrMsg = "没有配置wind终端"
+			return
+		}
+
+		if terminalCode == `` {
+			terminalInfo, err := services.GetTerminal(utils.DATA_SOURCE_WIND, "")
+			if err != nil {
+				br.Msg = "获取可以使用的wind地址失败!"
+				br.ErrMsg = "获取可以使用的wind地址失败,err:" + err.Error()
+				return
+			}
+			windUrl = terminalInfo.ServerUrl
+			terminalCode = terminalInfo.TerminalCode
+		}
+
+		if terminalCode == `` {
+			br.Msg = "没有配置wind终端!"
+			br.ErrMsg = "没有配置wind终端"
 			return
 		}
 
@@ -87,6 +108,10 @@ func (this *WindController) Add() {
 		windUrlCacheKey := utils.CACHE_WIND_URL + ":" + req.EdbCode
 		_ = utils.Rc.SetNX(windUrlCacheKey, windUrl, utils.GetTodayLastSecond())
 
+		// 设置指标与终端关系的缓存
+		terminalCodeCacheKey := utils.CACHE_EDB_TERMINAL_CODE_URL + req.EdbCode
+		_ = utils.Rc.Put(terminalCodeCacheKey, terminalCode, utils.GetTodayLastSecond())
+
 		//windUrl = utils.Hz_Wind_Data_Url_LIST[1].Url
 		dataItem, errCode, err := services.GetEdbDataFromWindUrl(windUrl, req.EdbCode, utils.BASE_START_DATE, endDate)
 		//dataItem, errCode, err := services.GetEdbDataFromWind(req.EdbCode, utils.BASE_START_DATE, endDate)
@@ -178,8 +203,13 @@ func (this *WindController) Refresh() {
 	if strings.Contains(req.EdbCode, ".") {
 		endDate = time.Now().Format(utils.FormatDate)
 	}
-
-	dataItem, errCode, err := services.GetEdbDataFromWindUrl(edbInfo.ServerUrl, req.EdbCode, req.StartDate, endDate)
+	//获取对应的终端信息
+	terminal, err := services.GetTerminal(utils.DATA_SOURCE_WIND, edbInfo.TerminalCode)
+	if err != nil {
+		br.Msg = "终端未配置"
+		return
+	}
+	dataItem, errCode, err := services.GetEdbDataFromWindUrl(terminal.ServerUrl, req.EdbCode, req.StartDate, endDate)
 	if errCode == 421 { //指标超限
 		br.Ret = 421
 		br.Msg = "指标超限!"
@@ -216,7 +246,6 @@ func (this *WindController) Refresh() {
 		br.ErrMsg = err.Error()
 		return
 	}
-
 	// 更新ES
 	go logic.UpdateEs(edbInfo.EdbInfoId)
 

+ 244 - 0
controllers/base_from_wind_wsd.go

@@ -0,0 +1,244 @@
+package controllers
+
+import (
+	"encoding/json"
+	"eta/eta_index_lib/logic"
+	"eta/eta_index_lib/models"
+	"eta/eta_index_lib/services"
+	"eta/eta_index_lib/utils"
+	"strconv"
+	"strings"
+	"time"
+)
+
+// wind
+type WindWsdController struct {
+	BaseAuthController
+}
+
+// @Title 新增wind指标接口
+// @Description  新增wind指标接口
+// @Success 200 {object} models.AddEdbInfoReq
+// @router /wsd/add [post]
+func (this *WindWsdController) Add() {
+	br := new(models.BaseResponse).Init()
+	var cacheKey string
+	defer func() {
+		utils.Rc.Delete(cacheKey)
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+	source := utils.DATA_SOURCE_WIND
+	var req models.AddEdbInfoReq
+	err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
+	if err != nil {
+		br.Msg = "参数解析异常!"
+		br.ErrMsg = "参数解析失败,Err:" + err.Error()
+		return
+	}
+	if req.EdbCode == "" {
+		br.Msg = "请输入指标编码!"
+		br.ErrMsg = "请输入指标编码,指标编码为空"
+		return
+	}
+	cacheKey = utils.CACHE_EDB_DATA_ADD + strconv.Itoa(source) + "_" + req.StockCode + req.EdbCode
+	if !utils.Rc.IsExist(cacheKey) {
+		utils.Rc.SetNX(cacheKey, 1, 1*time.Minute)
+
+		//期货数据,就默认到今天,特殊处理下
+		endDate := utils.BASE_END_DATE
+		if strings.Contains(req.EdbCode, ".") {
+			endDate = time.Now().Format(utils.FormatDate)
+		}
+
+		windUrl := ``
+		terminalCode := ""
+
+		// 试用平台的话,需要额外从弘则这边获取下地址
+		if utils.BusinessCode == utils.HZ_TRIAL_BUSSINESS_CODE {
+			tmpWindUrl, tmpTerminalCode, err, errMsg := services.GetHzWindUrl(req.EdbCode, source)
+			if err != nil {
+				br.Msg = "添加失败!"
+				br.ErrMsg = "添加失败,Err:" + err.Error()
+				if errMsg != `` {
+					br.Msg = errMsg
+				}
+				return
+			}
+			windUrl = tmpWindUrl
+			terminalCode = tmpTerminalCode
+		}
+
+		if terminalCode == `` {
+			terminalInfo, err := services.GetTerminal(utils.DATA_SOURCE_WIND, "")
+			if err != nil {
+				br.Msg = "获取可以使用的wind地址失败!"
+				br.ErrMsg = "获取可以使用的wind地址失败,err:" + err.Error()
+				return
+			}
+			windUrl = terminalInfo.ServerUrl
+			terminalCode = terminalInfo.TerminalCode
+		}
+
+		if terminalCode == `` {
+			br.Msg = "没有配置wind终端!"
+			br.ErrMsg = "没有配置wind终端"
+			return
+		}
+
+		if windUrl == `` {
+			windUrl, err = GetServerUrl()
+			if err != nil {
+				br.Msg = "获取可以使用的wind地址失败!"
+				br.ErrMsg = "获取可以使用的wind地址失败,err:" + err.Error()
+				return
+			}
+		}
+
+		if windUrl == `` {
+			br.Msg = "没有配置wind地址!"
+			br.ErrMsg = "没有配置wind地址"
+			return
+		}
+
+		// 设置指标与终端关系的缓存
+		windUrlCacheKey := utils.CACHE_WIND_URL + ":" + req.StockCode + req.EdbCode
+		_ = utils.Rc.SetNX(windUrlCacheKey, windUrl, utils.GetTodayLastSecond())
+
+		//windUrl = utils.Hz_Wind_Data_Url_LIST[1].Url
+		dataItem, errCode, err := services.GetEdbDataFromWindUrlWsd(windUrl, req.StockCode, req.EdbCode, utils.BASE_START_DATE, endDate)
+		if errCode == 421 { //指标超限
+			br.Ret = 421
+			br.Msg = "指标超限!"
+			return
+		}
+		// 指标下架
+		if errCode == services.WindNoAuthCode {
+			br.Ret = 4052
+			br.Msg = "指标已下架"
+			return
+		}
+		if err != nil {
+			br.Msg = "获取指标信息失败!"
+			br.ErrMsg = "获取指标信息失败 GetEdbDataFromWind,Err:" + err.Error()
+			return
+		}
+		err = models.AddEdbDataFromWindWsd(req.StockCode, dataItem)
+		if err != nil {
+			br.Msg = "获取指标信息失败!"
+			br.ErrMsg = "获取指标信息失败 AddEdbDataFromWindWsd,Err:" + err.Error()
+			return
+		}
+		br.Ret = 200
+		br.Success = true
+		br.Msg = "获取成功"
+		//br.Data = dataItem
+	} else {
+		br.Ret = 501
+		br.Success = true
+		br.Msg = "系统处理中,请稍后重试"
+	}
+}
+
+// @Title 刷新wind指标接口
+// @Description 刷新wind指标接口
+// @Success 200 {object} models.RefreshEdbInfoReq
+// @router /wsd/refresh [post]
+func (this *WindWsdController) Refresh() {
+	br := new(models.BaseResponse).Init()
+	var cacheKey string
+	defer func() {
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+	source := utils.DATA_SOURCE_WIND
+	var req models.RefreshEdbInfoReq
+	err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
+	if err != nil {
+		br.Msg = "参数解析异常!"
+		br.ErrMsg = "参数解析失败,Err:" + err.Error()
+		return
+	}
+	if req.EdbCode == "" {
+		br.Msg = "请输入指标编码!"
+		br.ErrMsg = "请输入指标编码,指标编码为空"
+		return
+	}
+	if req.EdbInfoId <= 0 {
+		br.Msg = "请输入指标ID!"
+		br.ErrMsg = "请输入指标ID"
+		return
+	}
+
+	cacheKey = utils.CACHE_EDB_DATA_REFRESH + strconv.Itoa(source) + "_" + req.EdbCode
+	if utils.Rc.IsExist(cacheKey) {
+		br.Ret = 501
+		br.Success = true
+		br.Msg = "系统处理中,请稍后重试"
+		return
+	}
+
+	utils.Rc.SetNX(cacheKey, 1, 1*time.Minute)
+	defer func() {
+		utils.Rc.Delete(cacheKey)
+	}()
+
+	//获取指标信息
+	edbInfo, err := models.GetEdbInfoById(req.EdbInfoId)
+	if err != nil {
+		br.Msg = "查询指标信息失败!"
+		br.ErrMsg = "查询指标信息失败 Err:" + err.Error()
+		return
+	}
+
+	//期货数据,就默认到今天,特殊处理下
+	endDate := utils.BASE_END_DATE
+	if strings.Contains(req.EdbCode, ".") {
+		endDate = time.Now().Format(utils.FormatDate)
+	}
+
+	dataItem, errCode, err := services.GetEdbDataFromWindUrlWsd(edbInfo.ServerUrl, edbInfo.StockCode, edbInfo.IndicatorCode, req.StartDate, endDate)
+	if errCode == 421 { //指标超限
+		br.Ret = 421
+		br.Msg = "指标超限!"
+		return
+	}
+	// 忽略掉指标下架的错误, 并更新指标为停止更新
+	if errCode == services.WindNoAuthCode {
+		edbInfo.NoUpdate = 1
+		edbInfo.ModifyTime = time.Now().Local()
+		if e := edbInfo.Update([]string{"NoUpdate", "ModifyTime"}); e != nil {
+			br.Msg = "刷新失败"
+			br.ErrMsg = "更新wind指标停更失败, Err: " + e.Error()
+			return
+		}
+		br.Ret = 200
+		br.Msg = "操作成功"
+		return
+	}
+	if err != nil {
+		br.Msg = "获取指标信息失败!"
+		br.ErrMsg = "获取指标信息失败 GetEdbDataFromWind,Err:" + err.Error()
+		return
+	}
+	err = models.RefreshEdbDataFromWindWsd(req.EdbInfoId, edbInfo.EdbCode, req.StartDate, dataItem)
+	if err != nil && err.Error() != utils.ErrNoRow() {
+		br.Msg = "刷新指标信息失败!"
+		br.ErrMsg = "刷新指标信息失败 RefreshEdbDataFromWind,Err:" + err.Error()
+		return
+	}
+	// 更新指标最大最小值
+	err, errMsg := models.UnifiedModifyEdbInfoMaxAndMinInfo(edbInfo)
+	if err != nil {
+		br.Msg = errMsg
+		br.ErrMsg = err.Error()
+		return
+	}
+
+	// 更新ES
+	go logic.UpdateEs(edbInfo.EdbInfoId)
+
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "获取成功"
+}

+ 30 - 0
controllers/edb_info_stat.go

@@ -0,0 +1,30 @@
+package controllers
+
+import (
+	"eta/eta_index_lib/models"
+	"eta/eta_index_lib/services"
+)
+
+type EdbInfoStatController struct {
+	BaseAuthController
+}
+
+// SetEdbSourceStat
+// @Title 指标终端更新情况定时汇总
+// @Description 指标终端情况定时汇总
+// @Success 200 {object}
+// @router /source_update [post]
+func (this *EdbInfoStatController) SetEdbSourceStat() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+	// 钢联终端统计汇总
+	_ = services.SetMysteelChemicalEdbInfoUpdateStat()
+	_ = services.SetEdbSourceStat()
+
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "获取成功"
+}

+ 23 - 0
controllers/error.go

@@ -0,0 +1,23 @@
+package controllers
+
+import (
+	"eta/eta_index_lib/models"
+)
+
+// ErrorController
+// @Description: 该控制器处理页面错误请求
+type ErrorController struct {
+	BaseCommonController
+}
+
+func (c *ErrorController) Error404() {
+	c.Data["content"] = "很抱歉您访问的地址或者方法不存在"
+	//c.TplName = "error/404.html"
+
+	br := new(models.BaseResponse).Init()
+
+	br.Msg = "您访问的资源不存在"
+	br.Ret = 404
+	c.Data["json"] = br
+	c.ServeJSON()
+}

+ 2 - 2
controllers/future_good/future_good_edb_info.go

@@ -70,7 +70,7 @@ func (this *FutureGoodEdbInfoController) Add() {
 		}
 		endDate := time.Now().Format(utils.FormatDate)
 
-		dataItem, err := services.GetFutureGoodDataFromThs(req.EdbCode, utils.BASE_START_DATE, endDate)
+		dataItem, err := services.GetFutureGoodDataFromThs(req.EdbCode, utils.BASE_START_DATE, endDate, "")
 		if err != nil {
 			br.Msg = "获取指标信息失败!"
 			br.ErrMsg = "获取指标信息失败 GetFutureGoodDataFromThs,Err:" + err.Error()
@@ -169,7 +169,7 @@ func (this *FutureGoodEdbInfoController) Refresh() {
 	if startDate == `` { // 如果传入的日期为空的话,那么就默认兼容一周的数据吧
 		startDate = endDateTime.AddDate(0, 0, -7).Format(utils.FormatDate)
 	}
-	dataItem, err := services.GetFutureGoodDataFromThs(req.FutureGoodEdbCode, req.StartDate, endDate)
+	dataItem, err := services.GetFutureGoodDataFromThs(req.FutureGoodEdbCode, req.StartDate, endDate, futureGoodEdbInfo.TerminalCode)
 	if err != nil {
 		br.Msg = "获取指标信息失败!"
 		br.ErrMsg = "获取指标信息失败 GetFutureGoodDataFromThs,Err:" + err.Error()

+ 1 - 1
controllers/open/edb_info.go

@@ -55,7 +55,7 @@ func (this *EdbInfoController) Detail() {
 		pars = append(pars, edbInfo.EdbInfoId)
 
 		//获取来源指标的数据
-		dataList, err = models.GetEdbDataListAll(condition, pars, edbInfo.Source, 1)
+		dataList, err = models.GetEdbDataListAll(condition, pars, edbInfo.Source, edbInfo.SubSource, 1)
 	case 1:
 		dataList, err = models.GetPredictEdbDataListAllByStartDate(edbInfo, 1, "")
 	default:

+ 12 - 4
logic/base_edb_info.go

@@ -35,14 +35,22 @@ func RefreshBaseEdbInfo(edbInfo *models.EdbInfo, startDate string) (isHandling b
 		err = errors.New("刷新指标信息失败 RefreshEdbDataFromSci,Err:" + err.Error())
 		return
 	}
+
 	// 更新指标最大最小值
-	err, errMsg = models.UnifiedModifyEdbInfoMaxAndMinInfo(edbInfo)
-	if err != nil {
-		return
+	if edbInfo.Source == utils.DATA_SOURCE_MYSTEEL_CHEMICAL {
+		dataUpdateTime := time.Now().Format(utils.FormatDateTime)
+		_, err, errMsg = models.UnifiedModifyEdbInfoMaxAndMinInfoDataUpdate(edbInfo, dataUpdateTime)
+		if err != nil {
+			return
+		}
+	} else {
+		err, errMsg = models.UnifiedModifyEdbInfoMaxAndMinInfo(edbInfo)
+		if err != nil {
+			return
+		}
 	}
 
 	// 更新ES
 	go UpdateEs(edbInfo.EdbInfoId)
-
 	return
 }

+ 1 - 1
logic/profit_chart_info.go

@@ -216,7 +216,7 @@ func GetProfitChartEdbData(baseEdbInfo *models.EdbInfo, zlFutureGoodEdbInfoList
 
 	// 普通的指标数据
 	baseDataList := make([]*models.EdbDataList, 0)
-	baseDataList, err = models.GetEdbDataList(baseEdbInfo.Source, baseEdbInfo.EdbInfoId, "", "")
+	baseDataList, err = models.GetEdbDataList(baseEdbInfo.Source, baseEdbInfo.SubSource, baseEdbInfo.EdbInfoId, "", "")
 	if err != nil {
 		return
 	}

+ 4 - 0
main.go

@@ -1,6 +1,7 @@
 package main
 
 import (
+	"eta/eta_index_lib/controllers"
 	_ "eta/eta_index_lib/routers"
 	"eta/eta_index_lib/services/alarm_msg"
 	"eta/eta_index_lib/utils"
@@ -17,6 +18,9 @@ func main() {
 		web.BConfig.WebConfig.DirectoryIndex = true
 		web.BConfig.WebConfig.StaticDir["/swagger"] = "swagger"
 	}
+	// 异常处理
+	web.ErrorController(&controllers.ErrorController{})
+
 	web.BConfig.RecoverFunc = Recover
 	web.Run()
 }

+ 5 - 5
models/base_from_adjust.go

@@ -144,7 +144,7 @@ func SaveAdjustEdb(req SaveAdjustEdbReq) (edbInfo *EdbInfo, err error, errMsg st
 		edbCode = edbInfo.EdbCode
 
 		// 清除数据
-		dataTableName := GetEdbDataTableName(utils.DATA_SOURCE_CALCULATE_ADJUST)
+		dataTableName := GetEdbDataTableName(utils.DATA_SOURCE_CALCULATE_ADJUST, edbInfo.SubSource)
 		deleteSql := ` DELETE FROM %s WHERE edb_info_id=? `
 		deleteSql = fmt.Sprintf(deleteSql, dataTableName)
 		_, err = to.Raw(deleteSql, req.EdbInfoId).Exec()
@@ -218,7 +218,7 @@ func SaveAdjustEdb(req SaveAdjustEdbReq) (edbInfo *EdbInfo, err error, errMsg st
 	}
 
 	var isAdd bool
-	dataTableName := GetEdbDataTableName(edbInfo.Source)
+	dataTableName := GetEdbDataTableName(edbInfo.Source, edbInfo.SubSource)
 	addSql := ` INSERT INTO ` + dataTableName + `(edb_info_id,edb_code,data_time,value,create_time,modify_time,data_timestamp) values `
 	for _, item := range dataObj {
 		//值
@@ -255,7 +255,7 @@ func RefreshAllAdjustEdb(edbInfo *EdbInfo, fromEdbInfo *EdbInfo) (err error) {
 	}()
 
 	// 当前数据表名
-	dataTableName := GetEdbDataTableName(edbInfo.Source)
+	dataTableName := GetEdbDataTableName(edbInfo.Source, edbInfo.SubSource)
 
 	// 获取之前的配置
 	var edbAdjustConf *EdbAdjustConf
@@ -271,7 +271,7 @@ func RefreshAllAdjustEdb(edbInfo *EdbInfo, fromEdbInfo *EdbInfo) (err error) {
 	var pars []interface{}
 	condition += " AND edb_info_id=? AND data_time > ? "
 	pars = append(pars, fromEdbInfo.EdbInfoId, edbAdjustConf.SourceEndDate)
-	dataList, err := GetEdbDataListAllByTo(to, condition, pars, fromEdbInfo.Source, 1)
+	dataList, err := GetEdbDataListAllByTo(to, condition, pars, fromEdbInfo.Source, fromEdbInfo.SubSource, 1)
 	if err != nil {
 		return err
 	}
@@ -283,7 +283,7 @@ func RefreshAllAdjustEdb(edbInfo *EdbInfo, fromEdbInfo *EdbInfo) (err error) {
 		var tmpPars []interface{}
 		tmpCondition += " AND edb_info_id=? AND data_time > ? "
 		tmpPars = append(tmpPars, edbInfo.EdbInfoId, edbAdjustConf.SourceEndDate)
-		existDataList, tmpErr := GetEdbDataListAllByTo(to, tmpCondition, tmpPars, edbInfo.Source, 1)
+		existDataList, tmpErr := GetEdbDataListAllByTo(to, tmpCondition, tmpPars, edbInfo.Source, edbInfo.SubSource, 1)
 		if tmpErr != nil {
 			err = tmpErr
 			return

+ 4 - 3
models/base_from_baiinfo.go

@@ -76,6 +76,7 @@ func AddEdbDataFromBaiinfo(edbCode string) (err error) {
 // RefreshEdbDataFromBaiinfo 刷新百川盈弗指标数据
 func RefreshEdbDataFromBaiinfo(edbInfoId int, edbCode, startDate string) (err error) {
 	source := utils.DATA_SOURCE_BAIINFO
+	subSource := utils.DATA_SUB_SOURCE_EDB
 	o := orm.NewOrm()
 	if err != nil {
 		return
@@ -124,7 +125,7 @@ func RefreshEdbDataFromBaiinfo(edbInfoId int, edbCode, startDate string) (err er
 		existPars = append(existPars, startDate)
 	}
 
-	existList, err := GetEdbDataByCondition(source, existCondition, existPars)
+	existList, err := GetEdbDataByCondition(source, subSource, existCondition, existPars)
 	if err != nil {
 		return err
 	}
@@ -151,7 +152,7 @@ func RefreshEdbDataFromBaiinfo(edbInfoId int, edbCode, startDate string) (err er
 			isAdd = true
 		} else {
 			if findItem != nil && utils.SubFloatToString(findItem.Value, 30) != item.Value {
-				err = ModifyEdbDataById(source, findItem.EdbDataId, item.Value)
+				err = ModifyEdbDataById(source, subSource, findItem.EdbDataId, item.Value)
 				if err != nil {
 					return err
 				}
@@ -170,7 +171,7 @@ func RefreshEdbDataFromBaiinfo(edbInfoId int, edbCode, startDate string) (err er
 	}
 
 	// 处理手工数据补充的配置
-	HandleConfigInsertEdbData(realDataMaxDate, edbDataInsertConfig, edbInfoId, source, existMap, isFindConfigDateRealData)
+	HandleConfigInsertEdbData(realDataMaxDate, edbDataInsertConfig, edbInfoId, source, subSource, existMap, isFindConfigDateRealData)
 
 	if isAdd {
 		addSql = strings.TrimRight(addSql, ",")

+ 8 - 11
models/base_from_calculate.go

@@ -112,8 +112,7 @@ func AddCalculateInfo(req EdbInfoCalculateSaveReq, calculateMappingList []*EdbIn
 	}
 
 	//计算数据
-	err = refreshAllCalculate(to, edbInfoList, edbInfo.EdbInfoId, edbInfo.Source, edbInfo.EdbCode, edbInfo.CalculateFormula, "", "", edbInfoIdBytes, edbInfo.EmptyType, edbInfo.MaxEmptyType)
-
+	err = refreshAllCalculate(to, edbInfoList, edbInfo.EdbInfoId, edbInfo.Source, edbInfo.SubSource, edbInfo.EdbCode, edbInfo.CalculateFormula, "", "", edbInfoIdBytes, edbInfo.EmptyType, edbInfo.MaxEmptyType)
 	return
 }
 
@@ -216,8 +215,7 @@ func EditCalculateInfo(edbInfo *EdbInfo, req EdbInfoCalculateSaveReq, formulaSli
 		}
 
 		//计算数据
-		err = refreshAllCalculate(to, edbInfoList, edbInfo.EdbInfoId, edbInfo.Source, edbInfo.EdbCode, edbInfo.CalculateFormula, "", "", edbInfoIdBytes, edbInfo.EmptyType, edbInfo.MaxEmptyType)
-
+		err = refreshAllCalculate(to, edbInfoList, edbInfo.EdbInfoId, edbInfo.Source, edbInfo.SubSource, edbInfo.EdbCode, edbInfo.CalculateFormula, "", "", edbInfoIdBytes, edbInfo.EmptyType, edbInfo.MaxEmptyType)
 	}
 
 	return
@@ -260,7 +258,7 @@ func DeleteCalculateEdbInfo(edbInfoId int) (err error) {
 }
 
 // RefreshAllCalculate 刷新全部数据
-func RefreshAllCalculate(edbInfoIdArr []*EdbInfo, edbInfoId, source int, edbCode, formulaStr, startDate, endDate string, edbInfoIdBytes []string, emptyType, maxEmptyType int) (err error) {
+func RefreshAllCalculate(edbInfoIdArr []*EdbInfo, edbInfoId, source, subSource int, edbCode, formulaStr, startDate, endDate string, edbInfoIdBytes []string, emptyType, maxEmptyType int) (err error) {
 	o := orm.NewOrm()
 	to, err := o.Begin()
 	if err != nil {
@@ -277,13 +275,12 @@ func RefreshAllCalculate(edbInfoIdArr []*EdbInfo, edbInfoId, source int, edbCode
 	fmt.Println(startDate, endDate)
 
 	//计算数据
-	err = refreshAllCalculate(to, edbInfoIdArr, edbInfoId, source, edbCode, formulaStr, startDate, endDate, edbInfoIdBytes, emptyType, maxEmptyType)
-
+	err = refreshAllCalculate(to, edbInfoIdArr, edbInfoId, source, subSource, edbCode, formulaStr, startDate, endDate, edbInfoIdBytes, emptyType, maxEmptyType)
 	return
 }
 
 // refreshAllCalculate 刷新全部数据
-func refreshAllCalculate(to orm.TxOrmer, edbInfoIdArr []*EdbInfo, edbInfoId, source int, edbCode, formulaStr, startDate, endDate string, edbInfoIdBytes []string, emptyType, maxEmptyType int) (err error) {
+func refreshAllCalculate(to orm.TxOrmer, edbInfoIdArr []*EdbInfo, edbInfoId, source, subSource int, edbCode, formulaStr, startDate, endDate string, edbInfoIdBytes []string, emptyType, maxEmptyType int) (err error) {
 	realSaveDataMap := make(map[string]map[int]float64)
 	saveDataMap := make(map[string]map[int]float64)
 
@@ -305,7 +302,7 @@ func refreshAllCalculate(to orm.TxOrmer, edbInfoIdArr []*EdbInfo, edbInfoId, sou
 		//	pars = append(pars, endDate)
 		//}
 		//fmt.Println("v.Source:", v.Source)
-		dataList, err := GetEdbDataListAllByTo(to, condition, pars, v.Source, 1)
+		dataList, err := GetEdbDataListAllByTo(to, condition, pars, v.Source, v.SubSource, 1)
 		if err != nil {
 			return err
 		}
@@ -365,7 +362,7 @@ func refreshAllCalculate(to orm.TxOrmer, edbInfoIdArr []*EdbInfo, edbInfoId, sou
 
 	//获取指标所有数据
 	dataList := make([]*EdbData, 0)
-	dataTableName := GetEdbDataTableName(source)
+	dataTableName := GetEdbDataTableName(source, subSource)
 	sql := `SELECT * FROM %s WHERE edb_info_id=? `
 	sql = fmt.Sprintf(sql, dataTableName)
 	_, err = to.Raw(sql, edbInfoId).QueryRows(&dataList)
@@ -498,7 +495,7 @@ func refreshAllCalculate(to orm.TxOrmer, edbInfoIdArr []*EdbInfo, edbInfoId, sou
 		removeDateStr := strings.Join(removeDateList, `","`)
 		removeDateStr = `"` + removeDateStr + `"`
 		//如果拼接指标变更了,那么需要删除所有的指标数据
-		tableName := GetEdbDataTableName(source)
+		tableName := GetEdbDataTableName(source, subSource)
 		sql := fmt.Sprintf(` DELETE FROM %s WHERE edb_info_id = ? and data_time in (%s) `, tableName, removeDateStr)
 
 		_, err = to.Raw(sql, edbInfoId).Exec()

+ 4 - 3
models/base_from_cffex.go

@@ -127,6 +127,7 @@ func AddEdbDataFromCffex(edbCode string) (err error) {
 // 刷新中金所指标数据
 func RefreshEdbDataFromCffex(edbInfoId int, edbCode, startDate string) (err error) {
 	source := utils.DATA_SOURCE_CFFEX
+	subSource := utils.DATA_SUB_SOURCE_EDB
 	var suffix string
 	if strings.Contains(edbCode, "deal") {
 		suffix = "deal"
@@ -192,7 +193,7 @@ func RefreshEdbDataFromCffex(edbInfoId int, edbCode, startDate string) (err erro
 		existPars = append(existPars, startDate)
 	}
 
-	existList, err := GetEdbDataByCondition(source, existCondition, existPars)
+	existList, err := GetEdbDataByCondition(source, subSource, existCondition, existPars)
 	if err != nil {
 		return err
 	}
@@ -242,7 +243,7 @@ func RefreshEdbDataFromCffex(edbInfoId int, edbCode, startDate string) (err erro
 					isAdd = true
 				} else {
 					if findItem != nil && utils.SubFloatToString(findItem.Value, 30) != sValue {
-						err = ModifyEdbDataById(source, findItem.EdbDataId, sValue)
+						err = ModifyEdbDataById(source, subSource, findItem.EdbDataId, sValue)
 						if err != nil {
 							return err
 						}
@@ -253,7 +254,7 @@ func RefreshEdbDataFromCffex(edbInfoId int, edbCode, startDate string) (err erro
 	}
 
 	// 处理手工数据补充的配置
-	HandleConfigInsertEdbData(realDataMaxDate, edbDataInsertConfig, edbInfoId, source, existMap, isFindConfigDateRealData)
+	HandleConfigInsertEdbData(realDataMaxDate, edbDataInsertConfig, edbInfoId, source, subSource, existMap, isFindConfigDateRealData)
 
 	if isAdd {
 		addSql = strings.TrimRight(addSql, ",")

+ 4 - 3
models/base_from_coal.go

@@ -139,6 +139,7 @@ func AddEdbDataFromCoal(edbCode string) (err error) {
 
 func RefreshEdbDataFromCoal(edbInfoId int, edbCode, startDate string) (err error) {
 	source := utils.DATA_SOURCE_COAL
+	subSource := utils.DATA_SUB_SOURCE_EDB
 	o := orm.NewOrm()
 	if err != nil {
 		return
@@ -200,7 +201,7 @@ func RefreshEdbDataFromCoal(edbInfoId int, edbCode, startDate string) (err error
 		existPars = append(existPars, startDate)
 	}
 
-	existList, err := GetEdbDataByCondition(source, existCondition, existPars)
+	existList, err := GetEdbDataByCondition(source, subSource, existCondition, existPars)
 	if err != nil {
 		return err
 	}
@@ -270,7 +271,7 @@ func RefreshEdbDataFromCoal(edbInfoId int, edbCode, startDate string) (err error
 					isAdd = true
 				} else {
 					if findItem != nil && utils.SubFloatToString(findItem.Value, 30) != sValue {
-						err = ModifyEdbDataById(source, findItem.EdbDataId, sValue)
+						err = ModifyEdbDataById(source, subSource, findItem.EdbDataId, sValue)
 						if err != nil {
 							return err
 						}
@@ -292,7 +293,7 @@ func RefreshEdbDataFromCoal(edbInfoId int, edbCode, startDate string) (err error
 	}
 
 	// 处理手工数据补充的配置
-	HandleConfigInsertEdbData(realDataMaxDate, edbDataInsertConfig, edbInfoId, source, existMap, isFindConfigDateRealData)
+	HandleConfigInsertEdbData(realDataMaxDate, edbDataInsertConfig, edbInfoId, source, subSource, existMap, isFindConfigDateRealData)
 
 	if isAdd {
 		addSql = strings.TrimRight(addSql, ",")

+ 5 - 3
models/base_from_com_trade.go

@@ -127,6 +127,8 @@ func AddEdbDataFromComTrade(edbCode string) (err error) {
 // RefreshEdbDataFromComTrade 刷新UN世贸组织指标数据
 func RefreshEdbDataFromComTrade(edbInfoId int, edbCode, startDate string) (err error) {
 	source := utils.DATA_SOURCE_COM_TRADE
+	subSource := utils.DATA_SUB_SOURCE_EDB
+
 	o := orm.NewOrm()
 	if err != nil {
 		return
@@ -173,7 +175,7 @@ func RefreshEdbDataFromComTrade(edbInfoId int, edbCode, startDate string) (err e
 		existPars = append(existPars, startDate)
 	}
 	//获取指标所有数据
-	existList, err := GetEdbDataByCondition(source, existCondition, existPars)
+	existList, err := GetEdbDataByCondition(source, subSource, existCondition, existPars)
 	if err != nil {
 		return err
 	}
@@ -207,7 +209,7 @@ func RefreshEdbDataFromComTrade(edbInfoId int, edbCode, startDate string) (err e
 			}
 		} else {
 			if findItem != nil && utils.SubFloatToString(findItem.Value, 30) != sValue {
-				err = ModifyEdbDataById(source, findItem.EdbDataId, sValue)
+				err = ModifyEdbDataById(source, subSource, findItem.EdbDataId, sValue)
 				if err != nil {
 					return err
 				}
@@ -227,7 +229,7 @@ func RefreshEdbDataFromComTrade(edbInfoId int, edbCode, startDate string) (err e
 	}
 
 	// 处理手工数据补充的配置
-	HandleConfigInsertEdbData(realDataMaxDate, edbDataInsertConfig, edbInfoId, source, existMap, isFindConfigDateRealData)
+	HandleConfigInsertEdbData(realDataMaxDate, edbDataInsertConfig, edbInfoId, source, subSource, existMap, isFindConfigDateRealData)
 
 	if isAdd {
 		addSql = strings.TrimRight(addSql, ",")

+ 5 - 3
models/base_from_dl.go

@@ -127,6 +127,8 @@ func AddEdbDataFromDl(edbCode string) (err error) {
 // 刷新大商所指标数据
 func RefreshEdbDataFromDl(edbInfoId int, edbCode, startDate string) (err error) {
 	source := utils.DATA_SOURCE_DL
+	subSource := utils.DATA_SUB_SOURCE_EDB
+
 	o := orm.NewOrm()
 	if err != nil {
 		return
@@ -190,7 +192,7 @@ func RefreshEdbDataFromDl(edbInfoId int, edbCode, startDate string) (err error)
 		existPars = append(existPars, startDate)
 	}
 
-	existList, err := GetEdbDataByCondition(source, existCondition, existPars)
+	existList, err := GetEdbDataByCondition(source, subSource, existCondition, existPars)
 	if err != nil {
 		return err
 	}
@@ -229,7 +231,7 @@ func RefreshEdbDataFromDl(edbInfoId int, edbCode, startDate string) (err error)
 					isAdd = true
 				} else {
 					if findItem != nil && utils.SubFloatToString(findItem.Value, 30) != sValue {
-						err = ModifyEdbDataById(source, findItem.EdbDataId, sValue)
+						err = ModifyEdbDataById(source, subSource, findItem.EdbDataId, sValue)
 						if err != nil {
 							return err
 						}
@@ -250,7 +252,7 @@ func RefreshEdbDataFromDl(edbInfoId int, edbCode, startDate string) (err error)
 	}
 
 	// 处理手工数据补充的配置
-	HandleConfigInsertEdbData(realDataMaxDate, edbDataInsertConfig, edbInfoId, source, existMap, isFindConfigDateRealData)
+	HandleConfigInsertEdbData(realDataMaxDate, edbDataInsertConfig, edbInfoId, source, subSource, existMap, isFindConfigDateRealData)
 
 	if isAdd {
 		addSql = strings.TrimRight(addSql, ",")

+ 5 - 3
models/base_from_eia_steo.go

@@ -84,6 +84,8 @@ func AddEdbDataFromEiaSteo(edbCode string) (err error) {
 // RefreshEdbDataFromEiaSteo 刷新钢联指标数据
 func RefreshEdbDataFromEiaSteo(edbInfoId int, edbCode, startDate string) (err error) {
 	source := utils.DATA_SOURCE_EIA_STEO
+	subSource := utils.DATA_SUB_SOURCE_EDB
+
 	o := orm.NewOrm()
 	if err != nil {
 		return
@@ -132,7 +134,7 @@ func RefreshEdbDataFromEiaSteo(edbInfoId int, edbCode, startDate string) (err er
 		existPars = append(existPars, startDate)
 	}
 	//获取指标所有数据
-	existList, err := GetEdbDataByCondition(source, existCondition, existPars)
+	existList, err := GetEdbDataByCondition(source, subSource, existCondition, existPars)
 	if err != nil {
 		return err
 	}
@@ -166,7 +168,7 @@ func RefreshEdbDataFromEiaSteo(edbInfoId int, edbCode, startDate string) (err er
 			}
 		} else {
 			if findItem != nil && utils.SubFloatToString(findItem.Value, 30) != sValue {
-				err = ModifyEdbDataById(source, findItem.EdbDataId, sValue)
+				err = ModifyEdbDataById(source, subSource, findItem.EdbDataId, sValue)
 				if err != nil {
 					return err
 				}
@@ -186,7 +188,7 @@ func RefreshEdbDataFromEiaSteo(edbInfoId int, edbCode, startDate string) (err er
 	}
 
 	// 处理手工数据补充的配置
-	HandleConfigInsertEdbData(realDataMaxDate, edbDataInsertConfig, edbInfoId, source, existMap, isFindConfigDateRealData)
+	HandleConfigInsertEdbData(realDataMaxDate, edbDataInsertConfig, edbInfoId, source, subSource, existMap, isFindConfigDateRealData)
 
 	if isAdd {
 		addSql = strings.TrimRight(addSql, ",")

+ 5 - 3
models/base_from_fubao.go

@@ -59,6 +59,8 @@ func AddEdbDataFromFubao(edbCode string, fubaoData *FuBaoData) (err error) {
 // 刷新路透指标数据
 func RefreshEdbDataFromFubao(edbInfoId int, edbCode, startDate string, fubaoData *FuBaoData) (err error) {
 	source := utils.DATA_SOURCE_FUBAO
+	subSource := utils.DATA_SUB_SOURCE_EDB
+
 	o := orm.NewOrm()
 
 	// 真实数据的最大日期  , 插入规则配置的日期
@@ -85,7 +87,7 @@ func RefreshEdbDataFromFubao(edbInfoId int, edbCode, startDate string, fubaoData
 	//	existPars = append(existPars, startDate)
 	//}
 
-	existList, err := GetEdbDataByCondition(source, existCondition, existPars)
+	existList, err := GetEdbDataByCondition(source, subSource, existCondition, existPars)
 	if err != nil {
 		return err
 	}
@@ -124,7 +126,7 @@ func RefreshEdbDataFromFubao(edbInfoId int, edbCode, startDate string, fubaoData
 			fmt.Println("update end")
 
 			if findItem != nil && utils.SubFloatToString(findItem.Value, 30) != dataItem.PriceStr {
-				err = ModifyEdbDataById(source, findItem.EdbDataId, dataItem.PriceStr)
+				err = ModifyEdbDataById(source, subSource, findItem.EdbDataId, dataItem.PriceStr)
 				if err != nil {
 					return err
 				}
@@ -143,7 +145,7 @@ func RefreshEdbDataFromFubao(edbInfoId int, edbCode, startDate string, fubaoData
 	}
 
 	// 处理手工数据补充的配置
-	HandleConfigInsertEdbData(realDataMaxDate, edbDataInsertConfig, edbInfoId, source, existMap, isFindConfigDateRealData)
+	HandleConfigInsertEdbData(realDataMaxDate, edbDataInsertConfig, edbInfoId, source, subSource, existMap, isFindConfigDateRealData)
 
 	if isAdd {
 		addSql = strings.TrimRight(addSql, ",")

+ 5 - 3
models/base_from_gie.go

@@ -237,6 +237,8 @@ func AddEdbDataFromGie(edbCode string) (err error) {
 // 刷新欧洲天然气指标数据
 func RefreshEdbDataFromGie(edbInfoId int, edbCode, startDate string) (err error) {
 	source := utils.DATA_SOURCE_GIE
+	subSource := utils.DATA_SUB_SOURCE_EDB
+
 	o := orm.NewOrm()
 	if err != nil {
 		return
@@ -311,7 +313,7 @@ func RefreshEdbDataFromGie(edbInfoId int, edbCode, startDate string) (err error)
 		existPars = append(existPars, startDate)
 	}
 
-	existList, err := GetEdbDataByCondition(source, existCondition, existPars)
+	existList, err := GetEdbDataByCondition(source, subSource, existCondition, existPars)
 	if err != nil {
 		return err
 	}
@@ -367,7 +369,7 @@ func RefreshEdbDataFromGie(edbInfoId int, edbCode, startDate string) (err error)
 			}
 		} else {
 			if findItem != nil && utils.SubFloatToString(findItem.Value, 30) != itemValue {
-				err = ModifyEdbDataById(source, findItem.EdbDataId, itemValue)
+				err = ModifyEdbDataById(source, subSource, findItem.EdbDataId, itemValue)
 				if err != nil {
 					return err
 				}
@@ -387,7 +389,7 @@ func RefreshEdbDataFromGie(edbInfoId int, edbCode, startDate string) (err error)
 	}
 
 	// 处理手工数据补充的配置
-	HandleConfigInsertEdbData(realDataMaxDate, edbDataInsertConfig, edbInfoId, source, existMap, isFindConfigDateRealData)
+	HandleConfigInsertEdbData(realDataMaxDate, edbDataInsertConfig, edbInfoId, source, subSource, existMap, isFindConfigDateRealData)
 
 	if isAdd {
 		addSql = strings.TrimRight(addSql, ",")

+ 5 - 3
models/base_from_google_travel.go

@@ -82,6 +82,8 @@ func AddEdbDataGoogleTravel(edbCode string) (err error) {
 // 刷新大商所指标数据
 func RefreshEdbDataGoogleTravel(edbInfoId int, edbCode, startDate string) (err error) {
 	source := utils.DATA_SOURCE_GOOGLE_TRAVEL
+	subSource := utils.DATA_SUB_SOURCE_EDB
+
 	o := orm.NewOrm()
 	if err != nil {
 		return
@@ -131,7 +133,7 @@ func RefreshEdbDataGoogleTravel(edbInfoId int, edbCode, startDate string) (err e
 		existPars = append(existPars, startDate)
 	}
 
-	existList, err := GetEdbDataByCondition(source, existCondition, existPars)
+	existList, err := GetEdbDataByCondition(source, subSource, existCondition, existPars)
 	if err != nil {
 		return err
 	}
@@ -163,7 +165,7 @@ func RefreshEdbDataGoogleTravel(edbInfoId int, edbCode, startDate string) (err e
 					isAdd = true
 				} else {
 					if findItem != nil && utils.SubFloatToString(findItem.Value, 30) != sValue {
-						err = ModifyEdbDataById(source, findItem.EdbDataId, sValue)
+						err = ModifyEdbDataById(source, subSource, findItem.EdbDataId, sValue)
 						if err != nil {
 							return err
 						}
@@ -184,7 +186,7 @@ func RefreshEdbDataGoogleTravel(edbInfoId int, edbCode, startDate string) (err e
 	}
 
 	// 处理手工数据补充的配置
-	HandleConfigInsertEdbData(realDataMaxDate, edbDataInsertConfig, edbInfoId, source, existMap, isFindConfigDateRealData)
+	HandleConfigInsertEdbData(realDataMaxDate, edbDataInsertConfig, edbInfoId, source, subSource, existMap, isFindConfigDateRealData)
 
 	if isAdd {
 		addSql = strings.TrimRight(addSql, ",")

+ 5 - 5
models/base_from_jiayue.go

@@ -112,7 +112,7 @@ func AddEdbDataFromJiaYue(tableName, edbCode string, dataList []BridgeJiaYueInde
 }
 
 // RefreshEdbDataFromJiaYue 刷新嘉悦指标数据
-func RefreshEdbDataFromJiaYue(source, edbInfoId int, tableName, edbCode, startDate string, dataList []BridgeJiaYueIndexData) (err error) {
+func RefreshEdbDataFromJiaYue(source, subSource, edbInfoId int, tableName, edbCode, startDate string, dataList []BridgeJiaYueIndexData) (err error) {
 	if source <= 0 {
 		err = fmt.Errorf("指标来源有误")
 		return
@@ -151,7 +151,7 @@ func RefreshEdbDataFromJiaYue(source, edbInfoId int, tableName, edbCode, startDa
 		pars = append(pars, startDate)
 		startDateTime, _ = time.ParseInLocation(utils.FormatDate, startDate, time.Local)
 	}
-	existList, e := GetEdbDataByCondition(source, cond, pars)
+	existList, e := GetEdbDataByCondition(source, subSource, cond, pars)
 	if e != nil {
 		err = fmt.Errorf("获取指标已有数据失败, Err: %s", e.Error())
 		return
@@ -173,7 +173,7 @@ func RefreshEdbDataFromJiaYue(source, edbInfoId int, tableName, edbCode, startDa
 
 		// 如果传入的开始时间是空的, 且当前数据日期早于传入的开始日期, 那么需要判断下当前日期的数据是否存在
 		if !startDateTime.IsZero() && v.DataTime.Before(startDateTime) {
-			t, e := GetEdbDataByDate(source, edbCode, dataTime)
+			t, e := GetEdbDataByDate(source, subSource, edbCode, dataTime)
 			if e == nil && t != nil {
 				existMap[t.DataTime] = t
 			}
@@ -203,7 +203,7 @@ func RefreshEdbDataFromJiaYue(source, edbInfoId int, tableName, edbCode, startDa
 
 		// 更新数据
 		if exist != nil && utils.SubFloatToString(exist.Value, 30) != val {
-			if e = ModifyEdbDataById(source, exist.EdbDataId, val); e != nil {
+			if e = ModifyEdbDataById(source, subSource, exist.EdbDataId, val); e != nil {
 				err = fmt.Errorf("modify edb data err: %s", e.Error())
 				return
 			}
@@ -211,7 +211,7 @@ func RefreshEdbDataFromJiaYue(source, edbInfoId int, tableName, edbCode, startDa
 	}
 
 	// 处理手工数据补充的配置
-	HandleConfigInsertEdbData(realDataMaxDate, edbDataInsertConfig, edbInfoId, source, existMap, isFindConfigDateRealData)
+	HandleConfigInsertEdbData(realDataMaxDate, edbDataInsertConfig, edbInfoId, source, subSource, existMap, isFindConfigDateRealData)
 
 	// 执行新增
 	if !hasNew {

+ 5 - 3
models/base_from_lt.go

@@ -55,6 +55,8 @@ func AddEdbDataFromLt(edbCode string, ltDataList map[int64]interface{}) (err err
 // 刷新路透指标数据
 func RefreshEdbDataFromLt(edbInfoId int, edbCode, startDate string, ltDataList map[int64]interface{}) (err error) {
 	source := utils.DATA_SOURCE_LT
+	subSource := utils.DATA_SUB_SOURCE_EDB
+
 	o := orm.NewOrm()
 
 	// 真实数据的最大日期  , 插入规则配置的日期
@@ -81,7 +83,7 @@ func RefreshEdbDataFromLt(edbInfoId int, edbCode, startDate string, ltDataList m
 		existPars = append(existPars, startDate)
 	}
 
-	existList, err := GetEdbDataByCondition(source, existCondition, existPars)
+	existList, err := GetEdbDataByCondition(source, subSource, existCondition, existPars)
 	if err != nil {
 		return err
 	}
@@ -123,7 +125,7 @@ func RefreshEdbDataFromLt(edbInfoId int, edbCode, startDate string, ltDataList m
 			isAdd = true
 		} else {
 			if findItem != nil && utils.SubFloatToString(findItem.Value, 30) != saveValue {
-				err = ModifyEdbDataById(source, findItem.EdbDataId, saveValue)
+				err = ModifyEdbDataById(source, subSource, findItem.EdbDataId, saveValue)
 				if err != nil {
 					return err
 				}
@@ -142,7 +144,7 @@ func RefreshEdbDataFromLt(edbInfoId int, edbCode, startDate string, ltDataList m
 	}
 
 	// 处理手工数据补充的配置
-	HandleConfigInsertEdbData(realDataMaxDate, edbDataInsertConfig, edbInfoId, source, existMap, isFindConfigDateRealData)
+	HandleConfigInsertEdbData(realDataMaxDate, edbDataInsertConfig, edbInfoId, source, subSource, existMap, isFindConfigDateRealData)
 
 	if isAdd {
 		addSql = strings.TrimRight(addSql, ",")

+ 5 - 3
models/base_from_lz.go

@@ -78,6 +78,8 @@ func AddEdbDataFromLz(edbCode string) (err error) {
 // 刷新隆众指标数据
 func RefreshEdbDataFromLz(edbInfoId int, edbCode, startDate string) (err error) {
 	source := utils.DATA_SOURCE_LZ
+	subSource := utils.DATA_SUB_SOURCE_EDB
+
 	o := orm.NewOrm()
 
 	// 真实数据的最大日期  , 插入规则配置的日期
@@ -121,7 +123,7 @@ func RefreshEdbDataFromLz(edbInfoId int, edbCode, startDate string) (err error)
 		existPars = append(existPars, startDate)
 	}
 
-	existList, err := GetEdbDataByCondition(source, existCondition, existPars)
+	existList, err := GetEdbDataByCondition(source, subSource, existCondition, existPars)
 	if err != nil {
 		return err
 	}
@@ -149,7 +151,7 @@ func RefreshEdbDataFromLz(edbInfoId int, edbCode, startDate string) (err error)
 			isAdd = true
 		} else {
 			if findItem != nil && utils.SubFloatToString(findItem.Value, 30) != saveValue {
-				err = ModifyEdbDataById(source, findItem.EdbDataId, saveValue)
+				err = ModifyEdbDataById(source, subSource, findItem.EdbDataId, saveValue)
 				if err != nil {
 					return err
 				}
@@ -168,7 +170,7 @@ func RefreshEdbDataFromLz(edbInfoId int, edbCode, startDate string) (err error)
 	}
 
 	// 处理手工数据补充的配置
-	HandleConfigInsertEdbData(realDataMaxDate, edbDataInsertConfig, edbInfoId, source, existMap, isFindConfigDateRealData)
+	HandleConfigInsertEdbData(realDataMaxDate, edbDataInsertConfig, edbInfoId, source, subSource, existMap, isFindConfigDateRealData)
 
 	if isAdd {
 		addSql = strings.TrimRight(addSql, ",")

+ 8 - 6
models/base_from_manual.go

@@ -84,6 +84,8 @@ func AddEdbDataFromManual(edbCode string) (err error) {
 // RefreshEdbDataFromManual 刷新手工指标数据
 func RefreshEdbDataFromManual(edbInfoId int, edbCode, startDate string) (err error) {
 	source := utils.DATA_SOURCE_MANUAL
+	subSource := utils.DATA_SUB_SOURCE_EDB
+
 	o := orm.NewOrm()
 	if err != nil {
 		return
@@ -137,7 +139,7 @@ func RefreshEdbDataFromManual(edbInfoId int, edbCode, startDate string) (err err
 		existPars = append(existPars, startDate)
 	}
 
-	existList, err := GetEdbDataByCondition(source, existCondition, existPars)
+	existList, err := GetEdbDataByCondition(source, subSource, existCondition, existPars)
 	if err != nil {
 		return err
 	}
@@ -174,7 +176,7 @@ func RefreshEdbDataFromManual(edbInfoId int, edbCode, startDate string) (err err
 			isAdd = true
 		} else {
 			if findItem != nil && utils.SubFloatToString(findItem.Value, 30) != item.Close {
-				err = ModifyEdbDataById(source, findItem.EdbDataId, item.Close)
+				err = ModifyEdbDataById(source, subSource, findItem.EdbDataId, item.Close)
 				if err != nil {
 					return err
 				}
@@ -198,7 +200,7 @@ func RefreshEdbDataFromManual(edbInfoId int, edbCode, startDate string) (err err
 
 			// 但是由于引入手动插入最新值,那么需要判断该日期值,是否等于,如果等于,则不删除该日期值
 			if edbDataInsertConfigDateStr == `` || edbDataInsertConfigDateStr != v.DataTime {
-				DeleteEdbDataById(utils.DATA_SOURCE_MANUAL, v.EdbDataId)
+				DeleteEdbDataById(utils.DATA_SOURCE_MANUAL, subSource, v.EdbDataId)
 			}
 		}
 	}
@@ -212,13 +214,13 @@ func RefreshEdbDataFromManual(edbInfoId int, edbCode, startDate string) (err err
 	}
 
 	// 处理手工数据补充的配置
-	HandleConfigInsertEdbData(realDataMaxDate, edbDataInsertConfig, edbInfoId, source, existMap, isFindConfigDateRealData)
+	HandleConfigInsertEdbData(realDataMaxDate, edbDataInsertConfig, edbInfoId, source, subSource, existMap, isFindConfigDateRealData)
 
 	return
 }
 
 // HandleConfigInsertEdbData 处理手工数据补充的配置
-func HandleConfigInsertEdbData(realDataMaxDate time.Time, edbDataInsertConfig *EdbDataInsertConfig, edbInfoId, source int, existMap map[string]*EdbInfoSearchData, isFindConfigDateRealData bool) {
+func HandleConfigInsertEdbData(realDataMaxDate time.Time, edbDataInsertConfig *EdbDataInsertConfig, edbInfoId, source, subSource int, existMap map[string]*EdbInfoSearchData, isFindConfigDateRealData bool) {
 	if edbDataInsertConfig == nil {
 		return
 	}
@@ -237,7 +239,7 @@ func HandleConfigInsertEdbData(realDataMaxDate time.Time, edbDataInsertConfig *E
 		edbDataInsertConfigDateStr := edbDataInsertConfigDate.Format(utils.FormatDate)
 		// 如果没有找到找到配置日期的实际数据,那么就直接删除
 		if item, ok := existMap[edbDataInsertConfigDateStr]; ok && !isFindConfigDateRealData {
-			DeleteEdbDataById(source, item.EdbDataId)
+			DeleteEdbDataById(source, subSource, item.EdbDataId)
 		}
 	} else {
 		o := orm.NewOrm()

+ 5 - 3
models/base_from_mysteel.go

@@ -98,6 +98,8 @@ func AddEdbDataFromMysteel(edbCode string) (err error) {
 // 刷新钢联指标数据
 func RefreshEdbDataFromMysteel(edbInfoId int, edbCode, startDate string) (err error) {
 	source := utils.DATA_SOURCE_GL
+	subSource := utils.DATA_SUB_SOURCE_EDB
+
 	o := orm.NewOrm()
 	if err != nil {
 		return
@@ -146,7 +148,7 @@ func RefreshEdbDataFromMysteel(edbInfoId int, edbCode, startDate string) (err er
 		existPars = append(existPars, startDate)
 	}
 	//获取指标所有数据
-	existList, err := GetEdbDataByCondition(source, existCondition, existPars)
+	existList, err := GetEdbDataByCondition(source, subSource, existCondition, existPars)
 	if err != nil {
 		return err
 	}
@@ -180,7 +182,7 @@ func RefreshEdbDataFromMysteel(edbInfoId int, edbCode, startDate string) (err er
 			}
 		} else {
 			if findItem != nil && utils.SubFloatToString(findItem.Value, 30) != sValue {
-				err = ModifyEdbDataById(source, findItem.EdbDataId, sValue)
+				err = ModifyEdbDataById(source, subSource, findItem.EdbDataId, sValue)
 				if err != nil {
 					return err
 				}
@@ -200,7 +202,7 @@ func RefreshEdbDataFromMysteel(edbInfoId int, edbCode, startDate string) (err er
 	}
 
 	// 处理手工数据补充的配置
-	HandleConfigInsertEdbData(realDataMaxDate, edbDataInsertConfig, edbInfoId, source, existMap, isFindConfigDateRealData)
+	HandleConfigInsertEdbData(realDataMaxDate, edbDataInsertConfig, edbInfoId, source, subSource, existMap, isFindConfigDateRealData)
 
 	if isAdd {
 		addSql = strings.TrimRight(addSql, ",")

+ 5 - 3
models/base_from_mysteel_chemical.go

@@ -84,6 +84,8 @@ func AddEdbDataFromMysteelChemical(edbCode string) (err error) {
 // RefreshEdbDataFromMysteelChemical 刷新钢联指标数据
 func RefreshEdbDataFromMysteelChemical(edbInfoId int, edbCode, startDate string) (err error) {
 	source := utils.DATA_SOURCE_MYSTEEL_CHEMICAL
+	subSource := utils.DATA_SUB_SOURCE_EDB
+
 	o := orm.NewOrm()
 	if err != nil {
 		return
@@ -132,7 +134,7 @@ func RefreshEdbDataFromMysteelChemical(edbInfoId int, edbCode, startDate string)
 		existPars = append(existPars, startDate)
 	}
 	//获取指标所有数据
-	existList, err := GetEdbDataByCondition(source, existCondition, existPars)
+	existList, err := GetEdbDataByCondition(source, subSource, existCondition, existPars)
 	if err != nil {
 		return err
 	}
@@ -166,7 +168,7 @@ func RefreshEdbDataFromMysteelChemical(edbInfoId int, edbCode, startDate string)
 			}
 		} else {
 			if findItem != nil && utils.SubFloatToString(findItem.Value, 30) != sValue {
-				err = ModifyEdbDataById(source, findItem.EdbDataId, sValue)
+				err = ModifyEdbDataById(source, subSource, findItem.EdbDataId, sValue)
 				if err != nil {
 					return err
 				}
@@ -186,7 +188,7 @@ func RefreshEdbDataFromMysteelChemical(edbInfoId int, edbCode, startDate string)
 	}
 
 	// 处理手工数据补充的配置
-	HandleConfigInsertEdbData(realDataMaxDate, edbDataInsertConfig, edbInfoId, source, existMap, isFindConfigDateRealData)
+	HandleConfigInsertEdbData(realDataMaxDate, edbDataInsertConfig, edbInfoId, source, subSource, existMap, isFindConfigDateRealData)
 
 	if isAdd {
 		addSql = strings.TrimRight(addSql, ",")

+ 5 - 3
models/base_from_national_statistics.go

@@ -77,6 +77,8 @@ func AddEdbDataFromNationalStatistics(edbCode string) (err error) {
 // RefreshEdbDataFromNationalStatistics 刷新国家统计局指标数据
 func RefreshEdbDataFromNationalStatistics(edbInfoId int, edbCode, startDate string) (err error) {
 	source := utils.DATA_SOURCE_NATIONAL_STATISTICS
+	subSource := utils.DATA_SUB_SOURCE_EDB
+
 	o := orm.NewOrm()
 	if err != nil {
 		return
@@ -123,7 +125,7 @@ func RefreshEdbDataFromNationalStatistics(edbInfoId int, edbCode, startDate stri
 		existPars = append(existPars, startDate)
 	}
 
-	existList, err := GetEdbDataByCondition(source, existCondition, existPars)
+	existList, err := GetEdbDataByCondition(source, subSource, existCondition, existPars)
 	if err != nil {
 		return err
 	}
@@ -150,7 +152,7 @@ func RefreshEdbDataFromNationalStatistics(edbInfoId int, edbCode, startDate stri
 			isAdd = true
 		} else {
 			if findItem != nil && utils.SubFloatToString(findItem.Value, 30) != item.Value {
-				err = ModifyEdbDataById(source, findItem.EdbDataId, item.Value)
+				err = ModifyEdbDataById(source, subSource, findItem.EdbDataId, item.Value)
 				if err != nil {
 					return err
 				}
@@ -169,7 +171,7 @@ func RefreshEdbDataFromNationalStatistics(edbInfoId int, edbCode, startDate stri
 	}
 
 	// 处理手工数据补充的配置
-	HandleConfigInsertEdbData(realDataMaxDate, edbDataInsertConfig, edbInfoId, source, existMap, isFindConfigDateRealData)
+	HandleConfigInsertEdbData(realDataMaxDate, edbDataInsertConfig, edbInfoId, source, subSource, existMap, isFindConfigDateRealData)
 
 	if isAdd {
 		addSql = strings.TrimRight(addSql, ",")

+ 4 - 3
models/base_from_pb.go

@@ -65,6 +65,7 @@ func AddEdbDataFromPb(edbCode string, item *EdbDataFromPb) (err error) {
 func RefreshEdbDataFromPb(edbInfoId int, edbCode, startDate string, item *EdbDataFromPb) (err error) {
 	o := orm.NewOrm()
 	source := utils.DATA_SOURCE_PB
+	subSource := utils.DATA_SUB_SOURCE_EDB
 
 	// 真实数据的最大日期  , 插入规则配置的日期
 	var realDataMaxDate, edbDataInsertConfigDate time.Time
@@ -88,7 +89,7 @@ func RefreshEdbDataFromPb(edbInfoId int, edbCode, startDate string, item *EdbDat
 
 	condition += " AND data_time>=? "
 	pars = append(pars, startDate)
-	existList, err := GetEdbDataByCondition(source, condition, pars)
+	existList, err := GetEdbDataByCondition(source, subSource, condition, pars)
 	existMap := make(map[string]*EdbInfoSearchData)
 	for _, v := range existList {
 		existMap[v.DataTime] = v
@@ -132,7 +133,7 @@ func RefreshEdbDataFromPb(edbInfoId int, edbCode, startDate string, item *EdbDat
 					}
 				} else {
 					if findItem != nil && utils.SubFloatToString(findItem.Value, 30) != saveValue {
-						err = ModifyEdbDataById(source, findItem.EdbDataId, saveValue)
+						err = ModifyEdbDataById(source, subSource, findItem.EdbDataId, saveValue)
 						if err != nil {
 							return err
 						}
@@ -153,7 +154,7 @@ func RefreshEdbDataFromPb(edbInfoId int, edbCode, startDate string, item *EdbDat
 		}
 
 		// 处理手工数据补充的配置
-		HandleConfigInsertEdbData(realDataMaxDate, edbDataInsertConfig, edbInfoId, source, existMap, isFindConfigDateRealData)
+		HandleConfigInsertEdbData(realDataMaxDate, edbDataInsertConfig, edbInfoId, source, subSource, existMap, isFindConfigDateRealData)
 
 		if isAdd {
 			addSql = strings.TrimRight(addSql, ",")

+ 4 - 3
models/base_from_pb_finance.go

@@ -47,6 +47,7 @@ func AddEdbDataFromPbFinance(edbCode string, item *EdbDataFromPb) (err error) {
 func RefreshEdbDataFromPbFinance(edbInfoId int, edbCode, startDate string, item *EdbDataFromPb) (err error) {
 	o := orm.NewOrm()
 	source := utils.DATA_SOURCE_PB_FINANCE
+	subSource := utils.DATA_SUB_SOURCE_DATE
 
 	// 真实数据的最大日期  , 插入规则配置的日期
 	var realDataMaxDate, edbDataInsertConfigDate time.Time
@@ -70,7 +71,7 @@ func RefreshEdbDataFromPbFinance(edbInfoId int, edbCode, startDate string, item
 
 	condition += " AND data_time>=? "
 	pars = append(pars, startDate)
-	existList, err := GetEdbDataByCondition(source, condition, pars)
+	existList, err := GetEdbDataByCondition(source, subSource, condition, pars)
 	existMap := make(map[string]*EdbInfoSearchData)
 	for _, v := range existList {
 		existMap[v.DataTime] = v
@@ -110,7 +111,7 @@ func RefreshEdbDataFromPbFinance(edbInfoId int, edbCode, startDate string, item
 					}
 				} else {
 					if findItem != nil && utils.SubFloatToString(findItem.Value, 30) != saveValue {
-						err = ModifyEdbDataById(source, findItem.EdbDataId, saveValue)
+						err = ModifyEdbDataById(source, subSource, findItem.EdbDataId, saveValue)
 						if err != nil {
 							return err
 						}
@@ -130,7 +131,7 @@ func RefreshEdbDataFromPbFinance(edbInfoId int, edbCode, startDate string, item
 		}
 
 		// 处理手工数据补充的配置
-		HandleConfigInsertEdbData(realDataMaxDate, edbDataInsertConfig, edbInfoId, source, existMap, isFindConfigDateRealData)
+		HandleConfigInsertEdbData(realDataMaxDate, edbDataInsertConfig, edbInfoId, source, subSource, existMap, isFindConfigDateRealData)
 
 		if isAdd {
 			addSql = strings.TrimRight(addSql, ",")

+ 2 - 2
models/base_from_python.go

@@ -210,7 +210,7 @@ func RefreshAllPythonEdb(edbInfo *EdbInfo, item EdbDataFromPython) (err error) {
 			removeDateStr := strings.Join(removeDateList, `","`)
 			removeDateStr = `"` + removeDateStr + `"`
 			//如果拼接指标变更了,那么需要删除所有的指标数据
-			tableName := GetEdbDataTableName(edbInfo.Source)
+			tableName := GetEdbDataTableName(edbInfo.Source, edbInfo.SubSource)
 			sql := fmt.Sprintf(` DELETE FROM %s WHERE edb_info_id = ? and data_time in (%s) `, tableName, removeDateStr)
 
 			_, err = o.Raw(sql, edbInfo.EdbInfoId).Exec()
@@ -223,7 +223,7 @@ func RefreshAllPythonEdb(edbInfo *EdbInfo, item EdbDataFromPython) (err error) {
 
 	//修改现有的数据中对应的值
 	{
-		tableName := GetEdbDataTableName(edbInfo.Source)
+		tableName := GetEdbDataTableName(edbInfo.Source, edbInfo.SubSource)
 		for edbDate, edbDataValue := range updateEdbDataMap {
 			sql := fmt.Sprintf(` UPDATE  %s set value = ?,modify_time=now() WHERE edb_info_id = ? and data_time = ? `, tableName)
 

+ 5 - 3
models/base_from_sci.go

@@ -101,6 +101,8 @@ func AddEdbDataFromSci(edbCode string) (err error) {
 // RefreshEdbDataFromSci 刷新卓创(红桃3)指标数据
 func RefreshEdbDataFromSci(edbInfoId int, edbCode, startDate string) (err error) {
 	source := utils.DATA_SOURCE_SCI
+	subSource := utils.DATA_SUB_SOURCE_EDB
+
 	o := orm.NewOrm()
 	if err != nil {
 		return
@@ -149,7 +151,7 @@ func RefreshEdbDataFromSci(edbInfoId int, edbCode, startDate string) (err error)
 		existPars = append(existPars, startDate)
 	}
 
-	existList, err := GetEdbDataByCondition(source, existCondition, existPars)
+	existList, err := GetEdbDataByCondition(source, subSource, existCondition, existPars)
 	if err != nil {
 		return err
 	}
@@ -176,7 +178,7 @@ func RefreshEdbDataFromSci(edbInfoId int, edbCode, startDate string) (err error)
 			isAdd = true
 		} else {
 			if findItem != nil && utils.SubFloatToString(findItem.Value, 30) != item.Value {
-				err = ModifyEdbDataById(source, findItem.EdbDataId, item.Value)
+				err = ModifyEdbDataById(source, subSource, findItem.EdbDataId, item.Value)
 				if err != nil {
 					return err
 				}
@@ -195,7 +197,7 @@ func RefreshEdbDataFromSci(edbInfoId int, edbCode, startDate string) (err error)
 	}
 
 	// 处理手工数据补充的配置
-	HandleConfigInsertEdbData(realDataMaxDate, edbDataInsertConfig, edbInfoId, source, existMap, isFindConfigDateRealData)
+	HandleConfigInsertEdbData(realDataMaxDate, edbDataInsertConfig, edbInfoId, source, subSource, existMap, isFindConfigDateRealData)
 
 	if isAdd {
 		addSql = strings.TrimRight(addSql, ",")

+ 5 - 4
models/base_from_sh.go

@@ -128,6 +128,8 @@ func AddEdbDataFromSh(edbCode string) (err error) {
 // 刷新上期所指标数据
 func RefreshEdbDataFromSh(edbInfoId int, edbCode, startDate string) (err error) {
 	source := utils.DATA_SOURCE_SH
+	subSource := utils.DATA_SUB_SOURCE_EDB
+
 	o := orm.NewOrm()
 	if err != nil {
 		return
@@ -191,7 +193,7 @@ func RefreshEdbDataFromSh(edbInfoId int, edbCode, startDate string) (err error)
 		existPars = append(existPars, startDate)
 	}
 
-	existList, err := GetEdbDataByCondition(source, existCondition, existPars)
+	existList, err := GetEdbDataByCondition(source, subSource, existCondition, existPars)
 	if err != nil {
 		return err
 	}
@@ -230,7 +232,7 @@ func RefreshEdbDataFromSh(edbInfoId int, edbCode, startDate string) (err error)
 					isAdd = true
 				} else {
 					if findItem != nil && utils.SubFloatToString(findItem.Value, 30) != sValue {
-						err = ModifyEdbDataById(source, findItem.EdbDataId, sValue)
+						err = ModifyEdbDataById(source, subSource, findItem.EdbDataId, sValue)
 						if err != nil {
 							return err
 						}
@@ -251,7 +253,7 @@ func RefreshEdbDataFromSh(edbInfoId int, edbCode, startDate string) (err error)
 	}
 
 	// 处理手工数据补充的配置
-	HandleConfigInsertEdbData(realDataMaxDate, edbDataInsertConfig, edbInfoId, source, existMap, isFindConfigDateRealData)
+	HandleConfigInsertEdbData(realDataMaxDate, edbDataInsertConfig, edbInfoId, source, subSource, existMap, isFindConfigDateRealData)
 
 	if isAdd {
 		addSql = strings.TrimRight(addSql, ",")
@@ -344,4 +346,3 @@ func ModifyBaseFromTradeShangHaiIndex(dealValue, buyValue, soldValue int, dataId
 	_, err = o.Raw(sql, dealValue, buyValue, soldValue, dataId).Exec()
 	return
 }
-

+ 8 - 6
models/base_from_shfe.go

@@ -126,6 +126,8 @@ func AddEdbDataFromShfe(edbCode string) (err error) {
 // 刷新上期能源指标数据
 func RefreshEdbDataFromShfe(edbInfoId int, edbCode, startDate string) (err error) {
 	source := utils.DATA_SOURCE_SHFE
+	subSource := utils.DATA_SUB_SOURCE_EDB
+
 	o := orm.NewOrm()
 	if err != nil {
 		return
@@ -189,7 +191,7 @@ func RefreshEdbDataFromShfe(edbInfoId int, edbCode, startDate string) (err error
 		existPars = append(existPars, startDate)
 	}
 
-	existList, err := GetEdbDataByCondition(source, existCondition, existPars)
+	existList, err := GetEdbDataByCondition(source, subSource, existCondition, existPars)
 	if err != nil {
 		return err
 	}
@@ -228,7 +230,7 @@ func RefreshEdbDataFromShfe(edbInfoId int, edbCode, startDate string) (err error
 					isAdd = true
 				} else {
 					if findItem != nil && utils.SubFloatToString(findItem.Value, 30) != saveValue {
-						err = ModifyEdbDataById(source, findItem.EdbDataId, saveValue)
+						err = ModifyEdbDataById(source, subSource, findItem.EdbDataId, saveValue)
 						if err != nil {
 							return err
 						}
@@ -249,7 +251,7 @@ func RefreshEdbDataFromShfe(edbInfoId int, edbCode, startDate string) (err error
 	}
 
 	// 处理手工数据补充的配置
-	HandleConfigInsertEdbData(realDataMaxDate, edbDataInsertConfig, edbInfoId, source, existMap, isFindConfigDateRealData)
+	HandleConfigInsertEdbData(realDataMaxDate, edbDataInsertConfig, edbInfoId, source, subSource, existMap, isFindConfigDateRealData)
 
 	if isAdd {
 		addSql = strings.TrimRight(addSql, ",")
@@ -329,8 +331,8 @@ func AddBaseFromTradeMapping(indexName, indexCode, exchange string) (err error)
 }
 
 type RefreshINEExchangeReq struct {
-	Date     string `description:"日期"`
-	Data     IneJSONData
+	Date string `description:"日期"`
+	Data IneJSONData
 }
 
 type IneJSONData struct {
@@ -357,4 +359,4 @@ type OCursor struct {
 	Productsortno    interface{} `json:"PRODUCTSORTNO"`
 	SoldOut          interface{} `json:"CJ3"`
 	Change2          interface{} `json:"CJ2_CHG"`
-}
+}

+ 5 - 3
models/base_from_smm.go

@@ -82,6 +82,8 @@ func AddEdbDataFromSmm(edbCode string) (err error) {
 // RefreshEdbDataFromSmm 刷新有色指标数据
 func RefreshEdbDataFromSmm(edbInfoId int, edbCode, startDate string) (err error) {
 	source := utils.DATA_SOURCE_YS
+	subSource := utils.DATA_SUB_SOURCE_EDB
+
 	o := orm.NewOrm()
 	if err != nil {
 		return
@@ -130,7 +132,7 @@ func RefreshEdbDataFromSmm(edbInfoId int, edbCode, startDate string) (err error)
 		existPars = append(existPars, startDate)
 	}
 
-	existList, err := GetEdbDataByCondition(source, existCondition, existPars)
+	existList, err := GetEdbDataByCondition(source, subSource, existCondition, existPars)
 	if err != nil {
 		return err
 	}
@@ -157,7 +159,7 @@ func RefreshEdbDataFromSmm(edbInfoId int, edbCode, startDate string) (err error)
 			isAdd = true
 		} else {
 			if findItem != nil && utils.SubFloatToString(findItem.Value, 30) != item.Value {
-				err = ModifyEdbDataById(source, findItem.EdbDataId, item.Value)
+				err = ModifyEdbDataById(source, subSource, findItem.EdbDataId, item.Value)
 				if err != nil {
 					return err
 				}
@@ -176,7 +178,7 @@ func RefreshEdbDataFromSmm(edbInfoId int, edbCode, startDate string) (err error)
 	}
 
 	// 处理手工数据补充的配置
-	HandleConfigInsertEdbData(realDataMaxDate, edbDataInsertConfig, edbInfoId, source, existMap, isFindConfigDateRealData)
+	HandleConfigInsertEdbData(realDataMaxDate, edbDataInsertConfig, edbInfoId, source, subSource, existMap, isFindConfigDateRealData)
 
 	if isAdd {
 		addSql = strings.TrimRight(addSql, ",")

+ 5 - 3
models/base_from_stock_plant.go

@@ -32,6 +32,8 @@ func GetStockPlantEdbDataByCondition(condition string, pars []interface{}) (item
 // RefreshEdbDataFromStockPlant 刷新存量装置数据
 func RefreshEdbDataFromStockPlant(edbInfoId int, edbCode, startDate string) (err error) {
 	source := utils.DATA_SOURCE_STOCK_PLANT
+	subSource := utils.DATA_SUB_SOURCE_EDB
+
 	o := orm.NewOrm()
 	if err != nil {
 		return
@@ -71,7 +73,7 @@ func RefreshEdbDataFromStockPlant(edbInfoId int, edbCode, startDate string) (err
 		existPars = append(existPars, startDate)
 	}
 
-	existList, err := GetEdbDataByCondition(source, existCondition, existPars)
+	existList, err := GetEdbDataByCondition(source, subSource, existCondition, existPars)
 	if err != nil {
 		return err
 	}
@@ -101,7 +103,7 @@ func RefreshEdbDataFromStockPlant(edbInfoId int, edbCode, startDate string) (err
 			isAdd = true
 		} else {
 			if findItem != nil && utils.SubFloatToString(findItem.Value, 4) != item.Value {
-				err = ModifyEdbDataById(source, findItem.EdbDataId, item.Value)
+				err = ModifyEdbDataById(source, subSource, findItem.EdbDataId, item.Value)
 				if err != nil {
 					return err
 				}
@@ -112,7 +114,7 @@ func RefreshEdbDataFromStockPlant(edbInfoId int, edbCode, startDate string) (err
 	// 删除不存在的日期数据
 	for _, v := range existList {
 		if _, ok := manualMap[v.DataTime]; !ok {
-			go DeleteEdbDataById(source, v.EdbDataId)
+			go DeleteEdbDataById(source, subSource, v.EdbDataId)
 		}
 	}
 

+ 5 - 4
models/base_from_ths.go

@@ -34,7 +34,7 @@ func AddEdbDataFromThs(edbCode string, item EdbDataFromThs) (err error) {
 
 		var isAdd bool
 		addSql := ` INSERT INTO %s(edb_info_id,edb_code,data_time,value,create_time,modify_time,data_timestamp) values `
-		tableName := GetEdbDataTableName(utils.DATA_SOURCE_THS)
+		tableName := GetEdbDataTableName(utils.DATA_SOURCE_THS, utils.DATA_SUB_SOURCE_EDB)
 		addSql = fmt.Sprintf(addSql, tableName)
 
 		for i := 0; i < dataLen; i++ {
@@ -64,6 +64,7 @@ func AddEdbDataFromThs(edbCode string, item EdbDataFromThs) (err error) {
 func RefreshEdbDataFromThs(edbInfoId int, edbCode, startDate string, item EdbDataFromThs) (err error) {
 	o := orm.NewOrm()
 	source := utils.DATA_SOURCE_THS
+	subSource := utils.DATA_SUB_SOURCE_DATE
 
 	// 真实数据的最大日期  , 插入规则配置的日期
 	var realDataMaxDate, edbDataInsertConfigDate time.Time
@@ -90,7 +91,7 @@ func RefreshEdbDataFromThs(edbInfoId int, edbCode, startDate string, item EdbDat
 			pars = append(pars, startDate)
 		}
 
-		existList, err := GetEdbDataByCondition(source, condition, pars)
+		existList, err := GetEdbDataByCondition(source, subSource, condition, pars)
 		if err != nil {
 			return err
 		}
@@ -125,7 +126,7 @@ func RefreshEdbDataFromThs(edbInfoId int, edbCode, startDate string, item EdbDat
 				}
 			} else {
 				if findItem != nil && utils.SubFloatToString(findItem.Value, 30) != utils.SubFloatToString(sValue, 30) {
-					err = ModifyEdbDataById(source, findItem.EdbDataId, sValueStr)
+					err = ModifyEdbDataById(source, subSource, findItem.EdbDataId, sValueStr)
 					if err != nil {
 						return err
 					}
@@ -144,7 +145,7 @@ func RefreshEdbDataFromThs(edbInfoId int, edbCode, startDate string, item EdbDat
 		}
 
 		// 处理手工数据补充的配置
-		HandleConfigInsertEdbData(realDataMaxDate, edbDataInsertConfig, edbInfoId, source, existMap, isFindConfigDateRealData)
+		HandleConfigInsertEdbData(realDataMaxDate, edbDataInsertConfig, edbInfoId, source, subSource, existMap, isFindConfigDateRealData)
 
 		if isAdd {
 			addSql = strings.TrimRight(addSql, ",")

+ 13 - 6
models/base_from_wind.go

@@ -22,10 +22,14 @@ func AddEdbDataFromWind(edbCode string, item *EdbDataFromWind) (err error) {
 	var isAdd bool
 	addSql := ` INSERT INTO edb_data_wind(edb_info_id,edb_code,data_time,value,create_time,modify_time,data_timestamp) values `
 	for k, v := range item.Dt {
-		timeStr := fmt.Sprintf("%d", v)
+		//timeStr := fmt.Sprintf("%d", v)
 		v = v / 1000
 		t := time.Unix(v, 0)
 		dateTime := t.Format(utils.FormatDate)
+		t, _ = time.ParseInLocation(utils.FormatDate, dateTime, time.Local) // 这里的目的是为了处理成北京时间,所以多转一遍
+		timestamp := t.UnixNano() / 1e6
+		timeStr := fmt.Sprintf("%d", timestamp)
+
 		val := item.Close[k]
 		saveVal := utils.SubFloatToString(val, 20)
 		addSql += GetAddSql("0", edbCode, dateTime, timeStr, saveVal)
@@ -47,6 +51,7 @@ func AddEdbDataFromWind(edbCode string, item *EdbDataFromWind) (err error) {
 func RefreshEdbDataFromWind(edbInfoId int, edbCode, startDate string, item *EdbDataFromWind) (err error) {
 	o := orm.NewOrm()
 	source := utils.DATA_SOURCE_WIND
+	subSource := utils.DATA_SUB_SOURCE_EDB
 
 	// 真实数据的最大日期  , 插入规则配置的日期
 	var realDataMaxDate, edbDataInsertConfigDate time.Time
@@ -75,7 +80,7 @@ func RefreshEdbDataFromWind(edbInfoId int, edbCode, startDate string, item *EdbD
 		startDateTime, _ = time.ParseInLocation(utils.FormatDate, startDate, time.Local)
 	}
 
-	existList, err := GetEdbDataByCondition(source, condition, pars)
+	existList, err := GetEdbDataByCondition(source, subSource, condition, pars)
 	existMap := make(map[string]*EdbInfoSearchData)
 	for _, v := range existList {
 		existMap[v.DataTime] = v
@@ -85,18 +90,20 @@ func RefreshEdbDataFromWind(edbInfoId int, edbCode, startDate string, item *EdbD
 	addMap := make(map[string]string)
 	edbInfoIdStr := strconv.Itoa(edbInfoId)
 	for k, v := range item.Dt {
-		timeStr := fmt.Sprintf("%d", v)
+		//timeStr := fmt.Sprintf("%d", v)
 		v = v / 1000
 		t := time.Unix(v, 0)
 		dateTime := t.Format(utils.FormatDate)
 		t, _ = time.ParseInLocation(utils.FormatDate, dateTime, time.Local) // 这里的目的是为了处理成北京时间,所以多转一遍
+		timestamp := t.UnixNano() / 1e6
+		timeStr := fmt.Sprintf("%d", timestamp)
 
 		val := item.Close[k]
 		saveVal := utils.SubFloatToString(val, 30)
 
 		//如果传入的开始时间是空的,且当前数据日期早于传入的开始日期,那么需要判断下当前日期的数据是否存在
 		if !startDateTime.IsZero() && t.Before(startDateTime) {
-			tmpItem, tmpErr := GetEdbDataByDate(source, edbCode, dateTime)
+			tmpItem, tmpErr := GetEdbDataByDate(source, subSource, edbCode, dateTime)
 			if tmpErr == nil && tmpItem != nil {
 				existMap[tmpItem.DataTime] = tmpItem
 			}
@@ -110,7 +117,7 @@ func RefreshEdbDataFromWind(edbInfoId int, edbCode, startDate string, item *EdbD
 			}
 		} else {
 			if findItem != nil && utils.SubFloatToString(findItem.Value, 30) != saveVal {
-				err = ModifyEdbDataById(source, findItem.EdbDataId, saveVal)
+				err = ModifyEdbDataById(source, subSource, findItem.EdbDataId, saveVal)
 				if err != nil {
 					return err
 				}
@@ -129,7 +136,7 @@ func RefreshEdbDataFromWind(edbInfoId int, edbCode, startDate string, item *EdbD
 	}
 
 	// 处理手工数据补充的配置
-	HandleConfigInsertEdbData(realDataMaxDate, edbDataInsertConfig, edbInfoId, source, existMap, isFindConfigDateRealData)
+	HandleConfigInsertEdbData(realDataMaxDate, edbDataInsertConfig, edbInfoId, source, subSource, existMap, isFindConfigDateRealData)
 
 	if isAdd {
 		addSql = strings.TrimRight(addSql, ",")

+ 225 - 0
models/base_from_wind_wsd.go

@@ -0,0 +1,225 @@
+package models
+
+import (
+	"eta/eta_index_lib/utils"
+	"fmt"
+	"github.com/beego/beego/v2/client/orm"
+	"strconv"
+	"strings"
+	"time"
+)
+
+var windWsd = "wsd"
+
+func AddEdbDataFromWindWsd(stockCode string, item map[string]map[string]interface{}) (err error) {
+	o := orm.NewOrm()
+
+	var isAdd bool
+	addSql := ` INSERT INTO edb_data_wind_wsd(edb_info_id,edb_code,data_time,value,create_time,modify_time,data_timestamp) values `
+
+	indexCodeMap := make(map[string]string)
+	for wk, wv := range item {
+		for vk, vv := range wv {
+			if vv == nil {
+				continue
+			}
+
+			var indexCode string
+			wkInt, err := strconv.ParseInt(wk, 10, 64)
+			if err != nil {
+				fmt.Println("ParseInt Err:" + err.Error() + ";wk:" + wk)
+				return err
+			}
+
+			vk = strings.ToLower(vk)
+			indexCode = windWsd + stockCode + vk
+
+			indexCodeMap[indexCode] = indexCode
+
+			wkInt = wkInt / 1000
+			t := time.Unix(wkInt, 0)
+			if t.After(time.Now()) {
+				continue
+			}
+			dateTime := t.Format(utils.FormatDate)
+
+			dataTime, err := time.ParseInLocation(utils.FormatDate, dateTime, time.Local)
+			if err != nil {
+				return err
+			}
+			timestamp := dataTime.UnixNano() / 1e6
+			timeStr := fmt.Sprintf("%d", timestamp)
+
+			//saveVal := utils.SubFloatToString(val, 20)
+
+			var saveVal string
+			switch vt := vv.(type) {
+			case int:
+				saveVal = strconv.Itoa(vt)
+			case float64:
+				saveVal = utils.SubFloatToFloatStr(vt, 20)
+			case string:
+				saveVal = vt
+			}
+			addSql += GetAddSql("0", indexCode, dateTime, timeStr, saveVal)
+			isAdd = true
+		}
+	}
+
+	if isAdd {
+		for _, v := range indexCodeMap {
+			var count int
+			sql := ` SELECT COUNT(1) FROM edb_data_wind_wsd WHERE edb_code=? `
+			err = o.Raw(sql, v).QueryRow(&count)
+			if err != nil {
+				return err
+			}
+			if count > 0 {
+				sql = ` DELETE FROM edb_data_wind_wsd WHERE edb_code=? `
+				_, err = o.Raw(sql, v).Exec()
+				if err != nil {
+					return err
+				}
+			}
+		}
+
+		addSql = strings.TrimRight(addSql, ",")
+		_, err = o.Raw(addSql).Exec()
+		if err != nil {
+			fmt.Println("sql exec err:" + err.Error())
+			return
+		}
+	}
+	return
+}
+
+// RefreshEdbDataFromWind 刷新wind指标数据
+func RefreshEdbDataFromWindWsd(edbInfoId int, edbCode, startDate string, item map[string]map[string]interface{}) (err error) {
+	o := orm.NewOrm()
+	source := utils.DATA_SOURCE_WIND
+	subSource := utils.DATA_SUB_SOURCE_DATE
+
+	// 真实数据的最大日期  , 插入规则配置的日期
+	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{}
+
+	condition += " AND edb_info_id=? "
+	pars = append(pars, edbInfoId)
+
+	var startDateTime time.Time
+	if startDate != "" {
+		condition += " AND data_time>=? "
+		pars = append(pars, startDate)
+		startDateTime, _ = time.ParseInLocation(utils.FormatDate, startDate, time.Local)
+	}
+
+	existList, err := GetEdbDataByCondition(source, subSource, condition, pars)
+	existMap := make(map[string]*EdbInfoSearchData)
+	for _, v := range existList {
+		existMap[v.DataTime] = v
+	}
+	addSql := ` INSERT INTO edb_data_wind_wsd(edb_info_id,edb_code,data_time,value,create_time,modify_time,data_timestamp) values `
+	var isAdd bool
+	addMap := make(map[string]string)
+	edbInfoIdStr := strconv.Itoa(edbInfoId)
+
+	for wk, wv := range item {
+		for vk, vv := range wv {
+			if vv == nil {
+				continue
+			}
+
+			wkInt, err := strconv.ParseInt(wk, 10, 64)
+			if err != nil {
+				fmt.Println("ParseInt Err:" + err.Error() + ";wk:" + wk)
+				return err
+			}
+
+			vk = strings.ToLower(vk)
+
+			wkInt = wkInt / 1000
+			t := time.Unix(wkInt, 0)
+			if t.After(time.Now()) {
+				continue
+			}
+			dateTime := t.Format(utils.FormatDate)
+
+			dataTime, err := time.ParseInLocation(utils.FormatDate, dateTime, time.Local)
+			if err != nil {
+				return err
+			}
+			timestamp := dataTime.UnixNano() / 1e6
+			timeStr := fmt.Sprintf("%d", timestamp)
+
+			var saveVal string
+			switch vt := vv.(type) {
+			case int:
+				saveVal = strconv.Itoa(vt)
+			case float64:
+				saveVal = utils.SubFloatToFloatStr(vt, 20)
+			case string:
+				saveVal = vt
+			}
+
+			//如果传入的开始时间是空的,且当前数据日期早于传入的开始日期,那么需要判断下当前日期的数据是否存在
+			if !startDateTime.IsZero() && t.Before(startDateTime) {
+				tmpItem, tmpErr := GetEdbDataByDate(source, subSource, edbCode, dateTime)
+				if tmpErr == nil && tmpItem != nil {
+					existMap[tmpItem.DataTime] = tmpItem
+				}
+			}
+
+			if findItem, ok := existMap[dateTime]; !ok {
+				if _, existOk := addMap[dateTime]; !existOk {
+					isAdd = true
+					addSql += GetAddSql(edbInfoIdStr, edbCode, dateTime, timeStr, saveVal)
+					addMap[dateTime] = saveVal
+				}
+			} else {
+				if findItem != nil && utils.SubFloatToString(findItem.Value, 30) != saveVal {
+					err = ModifyEdbDataById(source, subSource, findItem.EdbDataId, saveVal)
+					if err != nil {
+						return err
+					}
+				}
+			}
+
+			// 下面代码主要目的是处理掉手动插入的数据判断
+			{
+				if realDataMaxDate.IsZero() || t.After(realDataMaxDate) {
+					realDataMaxDate = t
+				}
+				if edbDataInsertConfigDate.IsZero() || t.Equal(edbDataInsertConfigDate) {
+					isFindConfigDateRealData = true
+				}
+			}
+		}
+	}
+
+	// 处理手工数据补充的配置
+	HandleConfigInsertEdbData(realDataMaxDate, edbDataInsertConfig, edbInfoId, source, subSource, existMap, isFindConfigDateRealData)
+
+	if isAdd {
+		addSql = strings.TrimRight(addSql, ",")
+		_, err = o.Raw(addSql).Exec()
+		if err != nil {
+			fmt.Println("RefreshEdbDataFromWind add Err", err.Error())
+			return
+		}
+	}
+
+	return
+}

+ 5 - 3
models/base_from_zz.go

@@ -127,6 +127,8 @@ func AddEdbDataFromZz(edbCode string) (err error) {
 // 刷新郑商所指标数据
 func RefreshEdbDataFromZz(edbInfoId int, edbCode, startDate string) (err error) {
 	source := utils.DATA_SOURCE_ZZ
+	subSource := utils.DATA_SUB_SOURCE_DATE
+
 	o := orm.NewOrm()
 	if err != nil {
 		return
@@ -190,7 +192,7 @@ func RefreshEdbDataFromZz(edbInfoId int, edbCode, startDate string) (err error)
 		existPars = append(existPars, startDate)
 	}
 
-	existList, err := GetEdbDataByCondition(source, existCondition, existPars)
+	existList, err := GetEdbDataByCondition(source, subSource, existCondition, existPars)
 	if err != nil {
 		return err
 	}
@@ -230,7 +232,7 @@ func RefreshEdbDataFromZz(edbInfoId int, edbCode, startDate string) (err error)
 					isAdd = true
 				} else {
 					if findItem != nil && utils.SubFloatToString(findItem.Value, 30) != sValue {
-						err = ModifyEdbDataById(source, findItem.EdbDataId, sValue)
+						err = ModifyEdbDataById(source, subSource, findItem.EdbDataId, sValue)
 						if err != nil {
 							return err
 						}
@@ -251,7 +253,7 @@ func RefreshEdbDataFromZz(edbInfoId int, edbCode, startDate string) (err error)
 	}
 
 	// 处理手工数据补充的配置
-	HandleConfigInsertEdbData(realDataMaxDate, edbDataInsertConfig, edbInfoId, source, existMap, isFindConfigDateRealData)
+	HandleConfigInsertEdbData(realDataMaxDate, edbDataInsertConfig, edbInfoId, source, subSource, existMap, isFindConfigDateRealData)
 
 	if isAdd {
 		addSql = strings.TrimRight(addSql, ",")

+ 7 - 7
models/base_predict_from_calculate.go

@@ -78,7 +78,7 @@ func EditPredictCalculate(edbInfo *EdbInfo, calculateMappingList []*EdbInfoCalcu
 	}
 
 	//数据表
-	tableName := GetEdbDataTableName(edbInfo.Source)
+	tableName := GetEdbDataTableName(edbInfo.Source, edbInfo.SubSource)
 	//清空原有数据
 	sql = ` DELETE FROM ` + tableName + ` WHERE edb_info_id = ? `
 	_, err = o.Raw(sql, edbInfo.EdbInfoId).Exec()
@@ -238,12 +238,12 @@ func AddPredictCalculateData(edbInfoIdList []*EdbInfo, edbInfo *EdbInfo, edbCode
 		}
 	}()
 
-	latestDateStr, latestValue, err = refreshAllPredictCalculate(to, edbInfoIdList, edbInfo.EdbInfoId, edbInfo.Source, edbCode, formulaStr, "", edbInfoIdBytes, edbInfo.EmptyType, edbInfo.MaxEmptyType)
+	latestDateStr, latestValue, err = refreshAllPredictCalculate(to, edbInfoIdList, edbInfo.EdbInfoId, edbInfo.Source, edbInfo.SubSource, edbCode, formulaStr, "", edbInfoIdBytes, edbInfo.EmptyType, edbInfo.MaxEmptyType)
 	return
 }
 
 // RefreshAllPredictCalculate 刷新预测计算指标的全部数据
-func RefreshAllPredictCalculate(edbInfoIdList []*EdbInfo, edbInfoId, source int, edbCode, formulaStr, startDate string, edbInfoIdBytes []string, emptyType, maxEmptyType int) (latestDateStr string, latestValue float64, err error) {
+func RefreshAllPredictCalculate(edbInfoIdList []*EdbInfo, edbInfoId, source, subSource int, edbCode, formulaStr, startDate string, edbInfoIdBytes []string, emptyType, maxEmptyType int) (latestDateStr string, latestValue float64, err error) {
 	o := orm.NewOrm()
 	to, err := o.Begin()
 	if err != nil {
@@ -258,13 +258,13 @@ func RefreshAllPredictCalculate(edbInfoIdList []*EdbInfo, edbInfoId, source int,
 		}
 	}()
 
-	latestDateStr, latestValue, err = refreshAllPredictCalculate(to, edbInfoIdList, edbInfoId, source, edbCode, formulaStr, startDate, edbInfoIdBytes, emptyType, maxEmptyType)
+	latestDateStr, latestValue, err = refreshAllPredictCalculate(to, edbInfoIdList, edbInfoId, source, subSource, edbCode, formulaStr, startDate, edbInfoIdBytes, emptyType, maxEmptyType)
 
 	return
 }
 
 // refreshAllPredictCalculate 刷新预测计算指标的全部数据
-func refreshAllPredictCalculate(to orm.TxOrmer, edbInfoIdList []*EdbInfo, edbInfoId, source int, edbCode, formulaStr, startDate string, edbInfoIdBytes []string, emptyType, maxEmptyType int) (latestDateStr string, latestValue float64, err error) {
+func refreshAllPredictCalculate(to orm.TxOrmer, edbInfoIdList []*EdbInfo, edbInfoId, source, subSource int, edbCode, formulaStr, startDate string, edbInfoIdBytes []string, emptyType, maxEmptyType int) (latestDateStr string, latestValue float64, err error) {
 	fmt.Println("startDate:", startDate)
 
 	// 最小的结束日期 , 最晚的数据开始日期
@@ -342,7 +342,7 @@ func refreshAllPredictCalculate(to orm.TxOrmer, edbInfoIdList []*EdbInfo, edbInf
 
 	//获取指标所有数据
 	dataList := make([]*EdbData, 0)
-	dataTableName := GetEdbDataTableName(source)
+	dataTableName := GetEdbDataTableName(source, subSource)
 	sql := `SELECT * FROM %s WHERE edb_info_id=? `
 	sql = fmt.Sprintf(sql, dataTableName)
 	_, err = to.Raw(sql, edbInfoId).QueryRows(&dataList)
@@ -473,7 +473,7 @@ func refreshAllPredictCalculate(to orm.TxOrmer, edbInfoIdList []*EdbInfo, edbInf
 		removeDateStr := strings.Join(removeDateList, `","`)
 		removeDateStr = `"` + removeDateStr + `"`
 		//如果拼接指标变更了,那么需要删除所有的指标数据
-		tableName := GetEdbDataTableName(source)
+		tableName := GetEdbDataTableName(source, subSource)
 		sql := fmt.Sprintf(` DELETE FROM %s WHERE edb_info_id = ? and data_time in (%s) `, tableName, removeDateStr)
 
 		_, err = to.Raw(sql, edbInfoId).Exec()

+ 60 - 0
models/data_stat/edb_info_delete_log.go

@@ -0,0 +1,60 @@
+package data_stat
+
+import (
+	"github.com/beego/beego/v2/client/orm"
+)
+
+// EdbInfoDeleteLog 指标删除日志表
+type EdbInfoDeleteLog struct {
+	Id                 uint64  `orm:"column(id);pk"`
+	EdbInfoId          int     `description:"指标ID"`
+	EdbInfoType        int     `description:"指标类型,0:普通指标,1:预测指标"`
+	SourceName         string  `description:"来源名称"`
+	Source             int     `description:"来源id"`
+	EdbCode            string  `description:"指标编码"`
+	EdbName            string  `description:"指标名称"`
+	EdbNameEn          string  `description:"英文指标名称"`
+	EdbNameSource      string  `description:"指标名称来源"`
+	Frequency          string  `description:"频率"`
+	Unit               string  `description:"单位"`
+	UnitEn             string  `description:"英文单位"`
+	StartDate          string  `description:"起始日期"`
+	EndDate            string  `description:"终止日期"`
+	SysUserId          int     `description:"创建人ID"`
+	SysUserRealName    string  `description:"创建人姓名"`
+	UniqueCode         string  `description:"指标唯一编码"`
+	EdbCreateTime      string  `description:"指标创建时间"`
+	EdbModifyTime      string  `description:"指标修改时间"`
+	CreateTime         string  `description:"创建时间即删除时间"`
+	MinValue           float64 `description:"指标最小值"`
+	MaxValue           float64 `description:"指标最大值"`
+	CalculateFormula   string  `description:"计算公式"`
+	EdbType            int     `description:"指标类型:1:基础指标,2:计算指标"`
+	LatestDate         string  `description:"数据最新日期"`
+	LatestValue        float64 `description:"数据最新值"`
+	MoveType           int     `description:"移动方式:1:领先(默认),2:滞后"`
+	MoveFrequency      string  `description:"移动频度"`
+	NoUpdate           int8    `description:"是否停止更新,0:继续更新;1:停止更新"`
+	ChartImage         string  `description:"图表图片"`
+	Calendar           string  `description:"公历/农历" orm:"default(公历);"`
+	DataDateType       string  `orm:"column(data_date_type);size(255);null;default(交易日)"`
+	ManualSave         int     `description:"是否有手动保存过上下限: 0-否; 1-是"`
+	TerminalCode       string  `description:"终端编码,用于配置在机器上"`
+	DelSysUserId       int     `description:"删除人ID"`
+	DelSysUserRealName string  `description:"删除人姓名"`
+	DataUpdateTime     string  `description:"最近一次数据发生变化的时间"`
+	ErDataUpdateDate   string  `description:"本次更新,数据发生变化的最早日期"`
+}
+
+type EdbInfoDeleteLogNum struct {
+	Source       int    `description:"来源id"`
+	TerminalCode string `description:"终端编码,用于配置在机器上"`
+	Num          int    `description:"被删除的指标数据总数"`
+}
+
+func GetEdbDeleteLogNumByCreateTime(startDate, endDate string) (item []*EdbInfoDeleteLogNum, err error) {
+	o := orm.NewOrm()
+	sql := ` SELECT source, terminal_code, count(*) as num FROM edb_info_delete_log WHERE create_time >= ? and create_time < ? group by source, terminal_code `
+	_, err = o.Raw(sql, startDate, endDate).QueryRows(&item)
+	return
+}

+ 64 - 0
models/data_stat/edb_info_update_log.go

@@ -0,0 +1,64 @@
+package data_stat
+
+import (
+	"github.com/beego/beego/v2/client/orm"
+	"time"
+)
+
+// EdbInfoUpdateLog 指标更新/刷新日志列表
+type EdbInfoUpdateLog struct {
+	Id                     uint64    `orm:"column(id);pk"`
+	EdbInfoId              int       `description:"指标ID"`
+	SourceName             string    `description:"来源名称"`
+	Source                 int       `description:"来源id"`
+	EdbCode                string    `description:"指标编码"`
+	EdbName                string    `description:"指标名称"`
+	EdbNameSource          string    `description:"指标名称来源"`
+	Frequency              string    `description:"频率"`
+	Unit                   string    `description:"单位"`
+	StartDate              string    `description:"起始日期"`
+	EndDate                string    `description:"终止日期"`
+	SysUserId              int       `description:"创建人ID"`
+	SysUserRealName        string    `description:"创建人姓名"`
+	UniqueCode             string    `description:"指标唯一编码"`
+	EdbCreateTime          time.Time `description:"指标创建时间"`
+	EdbModifyTime          time.Time `description:"指标修改时间"`
+	CreateTime             time.Time `description:"创建时间"`
+	UpdateSysUserId        int       `description:"变更人ID"`
+	UpdateSysUserRealName  string    `description:"变更人姓名"`
+	LatestDate             string    `description:"数据最新日期"`
+	LatestValue            float64   `description:"数据最新值"`
+	TerminalCode           string    `description:"终端编码,用于配置在机器上"`
+	ErDataUpdateDate       string    `description:"本次更新,数据发生变化的最早日期"`
+	UpdateResult           int       `description:"本次刷新操作结果:1成功,2失败"`
+	UpdateFailedReason     string    `description:"刷新失败原因"`
+	DataUpdateResult       int       `description:"数据更新结果:1成功,2失败"`
+	DataUpdateFailedReason string    `description:"数据未正常更新原因"`
+	DataUpdateTime         string    `description:"数据更新时间"`
+	IsSourceRefresh        int       `description:"是否为终端刷新到数据源的刷新操作:0否,1是"`
+}
+
+func AddEdbUpdateLog(item *EdbInfoUpdateLog) (lastId int64, err error) {
+	o := orm.NewOrm()
+	lastId, err = o.Insert(item)
+	return
+}
+
+// GetEdbUpdateLogByCondition 获取指标更新记录
+func GetEdbUpdateLogByCondition(condition string, pars []interface{}) (item []*EdbInfoUpdateLog, err error) {
+	o := orm.NewOrm()
+	sql := ` SELECT * FROM edb_info_update_log WHERE 1=1 `
+	if condition != "" {
+		sql += condition
+	}
+	_, err = o.Raw(sql, pars).QueryRows(&item)
+	return
+}
+
+// GetEdbUpdateSourceLogByCreateDate 获取指标终端更新记录
+func GetEdbUpdateSourceLogByCreateDate(source int, startDate, endDate string) (item []*EdbInfoUpdateLog, err error) {
+	o := orm.NewOrm()
+	sql := ` SELECT * FROM edb_info_update_log WHERE source = ? and create_time >= ? and create_time < ? and is_source_refresh =1 order by data_update_result asc, id desc`
+	_, err = o.Raw(sql, source, startDate, endDate).QueryRows(&item)
+	return
+}

+ 103 - 0
models/data_stat/edb_info_update_stat.go

@@ -0,0 +1,103 @@
+package data_stat
+
+import (
+	"github.com/beego/beego/v2/client/orm"
+	"time"
+)
+
+// EdbInfoUpdateStat 指标更新/刷新 汇总表(数据源明细表)
+type EdbInfoUpdateStat struct {
+	Id                     uint64    `orm:"column(id);pk"`
+	EdbInfoId              int       `description:"指标ID"`
+	SourceName             string    `description:"来源名称"`
+	Source                 int       `description:"来源id"`
+	EdbCode                string    `description:"指标编码"`
+	EdbName                string    `description:"指标名称"`
+	EdbNameSource          string    `description:"指标名称来源"`
+	Frequency              string    `description:"频率"`
+	Unit                   string    `description:"单位"`
+	StartDate              string    `description:"起始日期"`
+	EndDate                string    `description:"终止日期"`
+	SysUserId              int       `description:"创建人ID"`
+	SysUserRealName        string    `description:"创建人姓名"`
+	UniqueCode             string    `description:"指标唯一编码"`
+	EdbCreateTime          time.Time `description:"指标创建时间"`
+	EdbModifyTime          time.Time `description:"指标修改时间"`
+	CreateTime             time.Time `description:"记录创建时间"`
+	LatestDate             string    `description:"数据最新日期"`
+	LatestValue            float64   `description:"数据最新值"`
+	TerminalCode           string    `description:"终端编码,用于配置在机器上"`
+	ErDataUpdateDate       string    `description:"本次更新,数据发生变化的最早日期"`
+	DataUpdateResult       int       `description:"数据更新结果:1成功,2失败"`
+	DataUpdateFailedReason string    `description:"数据未正常更新原因"`
+	DataUpdateTime         string    `description:"数据更新时间"`
+	UpdateResult           int       `description:"本次刷新操作结果:1成功,2失败"`
+	UpdateFailedReason     string    `description:"刷新失败原因"`
+	UpdateTime             string    `description:"刷新时间"`
+	ModifyTime             time.Time `description:"修改时间"`
+	IsAdd                  int       `description:"是否是当日新增的指标:1是,2否"`
+	NeedRefresh            int       `description:"今日是否需要定时刷新,1需要,0不需要"`
+	HasRefresh             int       `description:"今日是否发起刷新服务,1是,0否"`
+}
+
+// Add 新增
+func (r *EdbInfoUpdateStat) Add(list []*EdbInfoUpdateStat) (err error) {
+	o := orm.NewOrm()
+	_, err = o.InsertMulti(len(list), list)
+	return
+}
+
+// UpdateEdbUpdateStatMulti 批量更新
+func UpdateEdbUpdateStatMulti(list []*EdbInfoUpdateStat) (err error) {
+	o := orm.NewOrm()
+	sql := `UPDATE edb_info_update_stat 
+SET 
+edb_name = ?,
+edb_name_source = ?,
+frequency = ?,
+unit = ?,
+start_date = ?,
+end_date = ?,
+edb_modify_time = ?,
+latest_date = ?,
+latest_value = ?,
+terminal_code = ?,
+modify_time = ?,
+er_data_update_date = ?,
+is_add = ?,
+need_refresh = ?,
+has_refresh = ?,
+data_update_result = ?,
+data_update_failed_reason = ?,
+data_update_time = ?, 
+update_result = ?,
+update_failed_reason = ?,
+update_time = ?
+WHERE
+	id = ?`
+	p, err := o.Raw(sql).Prepare()
+	if err != nil {
+		return
+	}
+	defer func() {
+		_ = p.Close() // 别忘记关闭 statement
+	}()
+	for _, v := range list {
+		_, err = p.Exec(v.EdbName, v.EdbNameSource, v.Frequency, v.Unit, v.StartDate, v.EndDate, v.EdbModifyTime, v.LatestDate, v.LatestValue, v.TerminalCode, v.ModifyTime, v.ErDataUpdateDate, v.IsAdd, v.NeedRefresh, v.HasRefresh, v.DataUpdateResult, v.DataUpdateFailedReason, v.DataUpdateTime, v.UpdateResult, v.UpdateFailedReason, v.UpdateTime, v.Id)
+		if err != nil {
+			return
+		}
+	}
+	return
+}
+
+// GetEdbUpdateStatByCondition 获取指标更新汇总记录
+func GetEdbUpdateStatByCondition(condition string, pars []interface{}) (item []*EdbInfoUpdateStat, err error) {
+	o := orm.NewOrm()
+	sql := ` SELECT * FROM edb_info_update_stat WHERE 1=1 `
+	if condition != "" {
+		sql += condition
+	}
+	_, err = o.Raw(sql, pars).QueryRows(&item)
+	return
+}

+ 75 - 0
models/data_stat/edb_source_stat.go

@@ -0,0 +1,75 @@
+package data_stat
+
+import (
+	"github.com/beego/beego/v2/client/orm"
+	"time"
+)
+
+// EdbSourceStat 数据源统计表
+type EdbSourceStat struct {
+	Id                int       `orm:"column(id);pk"`
+	SourceName        string    `description:"来源名称"`
+	Source            int       `description:"来源id"`
+	TerminalCode      string    `description:"终端编码,用于配置在机器上"`
+	EdbNum            int       `description:"指标总数"`
+	EdbNewNum         int       `description:"今日新增指标数"`
+	EdbDelNum         int       `description:"今日删除指标数"`
+	NeedRefreshNum    int       `description:"今日需刷新指标"`
+	HasRefreshNum     int       `description:"今日发起刷新任务指标数"`
+	UpdateSuccessNum  int       `description:"今日已更新成功指标数"`
+	UpdateFailedNum   int       `description:"今日已更新失败指标数"`
+	RefreshSuccessNum int       `description:"今日已刷新成功指标数"`
+	RefreshFailedNum  int       `description:"今日已刷新失败指标数"`
+	CreateTime        time.Time `description:"创建时间"`
+	ModifyTime        time.Time `description:"修改时间"`
+}
+
+func GetEdbSourceStatByCondition(condition string, pars []interface{}) (item []*EdbSourceStat, err error) {
+	o := orm.NewOrm()
+	sql := ` SELECT * FROM edb_source_stat WHERE 1=1 `
+	if condition != "" {
+		sql += condition
+	}
+	_, err = o.Raw(sql, pars).QueryRows(&item)
+	return
+}
+
+// Add 新增
+func (r *EdbSourceStat) Add(list []*EdbSourceStat) (err error) {
+	o := orm.NewOrm()
+	_, err = o.InsertMulti(len(list), list)
+	return
+}
+
+// UpdateEdbSourceStatMulti 批量更新
+func UpdateEdbSourceStatMulti(list []*EdbSourceStat) (err error) {
+	o := orm.NewOrm()
+	sql := `UPDATE edb_source_stat 
+SET 
+edb_num=?,                              
+edb_new_num=?,                          
+edb_del_num=?,                          
+need_refresh_num=?,                      
+has_refresh_num=?,                       
+update_success_num=?,                   
+update_failed_num=?,          
+refresh_success_num=?,                   
+refresh_failed_num=?, 
+modify_time=?                           
+WHERE
+	id = ?`
+	p, err := o.Raw(sql).Prepare()
+	if err != nil {
+		return
+	}
+	defer func() {
+		_ = p.Close() // 别忘记关闭 statement
+	}()
+	for _, v := range list {
+		_, err = p.Exec(v.EdbNum, v.EdbNewNum, v.EdbDelNum, v.NeedRefreshNum, v.HasRefreshNum, v.UpdateSuccessNum, v.UpdateFailedNum, v.RefreshSuccessNum, v.RefreshFailedNum, v.ModifyTime, v.Id)
+		if err != nil {
+			return
+		}
+	}
+	return
+}

+ 12 - 0
models/db.go

@@ -1,6 +1,7 @@
 package models
 
 import (
+	"eta/eta_index_lib/models/data_stat"
 	"eta/eta_index_lib/models/excel"
 	"eta/eta_index_lib/models/future_good"
 	"eta/eta_index_lib/models/supply_analysis"
@@ -66,6 +67,8 @@ func init() {
 	// 基础指标表
 	initBaseIndex()
 
+	// initDataStat 数据源统计管理相关表
+	initDataStat()
 	// Eta表格相关
 	initExcel()
 
@@ -111,6 +114,15 @@ func initBaseIndex() {
 	)
 }
 
+// initDataStat 数据源统计管理相关表
+func initDataStat() {
+	orm.RegisterModel(
+		new(data_stat.EdbInfoUpdateLog),  // 指标更新/刷新日志列表
+		new(data_stat.EdbInfoUpdateStat), // 数据源明细表
+		new(data_stat.EdbSourceStat),     // 数据源统计表
+	)
+}
+
 // initExcel Excel
 func initExcel() {
 	orm.RegisterModel(

+ 43 - 4
models/edb_classify.go

@@ -1,6 +1,7 @@
 package models
 
 import (
+	"errors"
 	"eta/eta_index_lib/utils"
 	"github.com/beego/beego/v2/client/orm"
 	"strconv"
@@ -12,6 +13,7 @@ type EdbClassify struct {
 	ClassifyType    uint8     `description:"分类类型,0:普通指标分类,1:预测指标分类"`
 	ClassifyName    string    `description:"分类名称"`
 	ParentId        int       `description:"父级id"`
+	RootId          int       `description:"顶级id"`
 	HasData         int       `description:"是否含有指标数据"`
 	CreateTime      time.Time `description:"创建时间"`
 	ModifyTime      time.Time `description:"修改时间"`
@@ -28,6 +30,13 @@ func AddEdbClassify(item *EdbClassify) (lastId int64, err error) {
 	return
 }
 
+// Update 更新分类基础信息
+func (edbClassify *EdbClassify) Update(cols []string) (err error) {
+	o := orm.NewOrm()
+	_, err = o.Update(edbClassify, cols...)
+	return
+}
+
 func GetEdbClassifyById(classifyId int) (item *EdbClassify, err error) {
 	o := orm.NewOrm()
 	sql := `SELECT * FROM edb_classify WHERE classify_id=? `
@@ -107,14 +116,34 @@ func SaveEdbClassify(classifyName string, parentId, level int, classifyType uint
 	if isAdd {
 		sysUserIdInt, _ := strconv.Atoi(sysUserId)
 		//获取该层级下最大的排序数
-		maxSort, err := GetEdbClassifyMaxSort(parentId, classifyType)
-
+		maxSort, e := GetEdbAndClassifyMaxSort(parentId, classifyType)
+		if e != nil {
+			errMsg = "查询分类信息出错" + e.Error()
+			err = errors.New(errMsg)
+			return
+		}
+		rootId := 0
+		if parentId > 0 {
+			parentClassify, tErr := GetEdbClassifyById(parentId)
+			if tErr != nil {
+				if tErr.Error() == utils.ErrNoRow() {
+					errMsg = "父级分类不存在"
+					err = errors.New(errMsg)
+					return
+				}
+				errMsg = "获取失败"
+				err = errors.New("获取分类信息失败,Err:" + tErr.Error())
+				return
+			}
+			rootId = parentClassify.RootId
+		}
 		timestamp := strconv.FormatInt(time.Now().UnixNano(), 10)
 		classifyInfo = &EdbClassify{
 			//ClassifyId:      0,
 			ClassifyType:    classifyType,
 			ClassifyName:    classifyName,
 			ParentId:        parentId,
+			RootId:          rootId,
 			HasData:         0,
 			CreateTime:      time.Now(),
 			ModifyTime:      time.Now(),
@@ -122,13 +151,23 @@ func SaveEdbClassify(classifyName string, parentId, level int, classifyType uint
 			SysUserRealName: sysUserName,
 			Level:           level + 1,
 			UniqueCode:      utils.MD5(utils.DATA_PREFIX + "_" + timestamp),
-			Sort:            maxSort,
+			Sort:            maxSort + 1,
 		}
-		classifyId, err := AddEdbClassify(classifyInfo)
+		var classifyId int64
+		classifyId, err = AddEdbClassify(classifyInfo)
 		if err != nil {
 			errMsg = "保存分类失败"
+			return
 		}
 		classifyInfo.ClassifyId = int(classifyId)
+		if parentId == 0 { //一级目录的rootId等于自己本身
+			classifyInfo.RootId = int(classifyId)
+			err = classifyInfo.Update([]string{"RootId"})
+			if err != nil {
+				errMsg = "更新分类失败"
+				return
+			}
+		}
 	}
 	return
 }

+ 21 - 20
models/edb_data_base.go

@@ -43,8 +43,9 @@ func GetAddSql(edbInfoId, edbCode, dataTime, timestampStr string, value string)
 }
 
 type AddEdbInfoReq struct {
-	EdbCode string `description:"指标编码"`
-	Source  int    `description:"指标来源ID"`
+	EdbCode   string `description:"指标编码"`
+	Source    int    `description:"指标来源ID"`
+	StockCode string `description:"证券代码"`
 }
 
 // GetEdbInfoCountByCondition 获取指标数量
@@ -59,12 +60,12 @@ func GetEdbInfoCountByCondition(condition string, pars []interface{}) (count int
 }
 
 // GetEdbDataAllByEdbCode 根据指标编码获取指标数据列表
-func GetEdbDataAllByEdbCode(edbCode string, source, limit int) (items []*EdbInfoSearchData, err error) {
+func GetEdbDataAllByEdbCode(edbCode string, source, subSource, limit int) (items []*EdbInfoSearchData, err error) {
 	var pars []interface{}
 	pars = append(pars, edbCode)
 	o := orm.NewOrm()
 
-	tableName := GetEdbDataTableName(source)
+	tableName := GetEdbDataTableName(source, subSource)
 	sql := ` SELECT * FROM %s WHERE edb_code=? ORDER BY data_time DESC`
 	if limit > 0 {
 		sql += `  LIMIT ?  `
@@ -75,9 +76,9 @@ func GetEdbDataAllByEdbCode(edbCode string, source, limit int) (items []*EdbInfo
 	return
 }
 
-func GetEdbDataByCondition(source int, condition string, pars []interface{}) (items []*EdbInfoSearchData, err error) {
+func GetEdbDataByCondition(source, subSource int, condition string, pars []interface{}) (items []*EdbInfoSearchData, err error) {
 	o := orm.NewOrm()
-	tableName := GetEdbDataTableName(source)
+	tableName := GetEdbDataTableName(source, subSource)
 	sql := ` SELECT * FROM %s WHERE 1=1 `
 	if condition != "" {
 		sql += condition
@@ -89,27 +90,27 @@ func GetEdbDataByCondition(source int, condition string, pars []interface{}) (it
 }
 
 // GetEdbDataByDate 根据数据日期获取指标数据
-func GetEdbDataByDate(source int, edbCode, dataTime string) (item *EdbInfoSearchData, err error) {
+func GetEdbDataByDate(source, subSource int, edbCode, dataTime string) (item *EdbInfoSearchData, err error) {
 	o := orm.NewOrm()
-	tableName := GetEdbDataTableName(source)
+	tableName := GetEdbDataTableName(source, subSource)
 	sql := ` SELECT * FROM %s WHERE 1=1 AND edb_code = ? AND data_time =? ORDER BY data_time DESC `
 	sql = fmt.Sprintf(sql, tableName)
 	err = o.Raw(sql, edbCode, dataTime).QueryRow(&item)
 	return
 }
 
-func ModifyEdbDataById(source, edbDataId int, value string) (err error) {
+func ModifyEdbDataById(source, subSource, edbDataId int, value string) (err error) {
 	o := orm.NewOrm()
-	tableName := GetEdbDataTableName(source)
+	tableName := GetEdbDataTableName(source, subSource)
 	sql := ` UPDATE %s SET value=?,modify_time=NOW() WHERE edb_data_id=? `
 	sql = fmt.Sprintf(sql, tableName)
 	_, err = o.Raw(sql, value, edbDataId).Exec()
 	return
 }
 
-func DeleteEdbDataById(source, edbDataId int) (err error) {
+func DeleteEdbDataById(source, subSource, edbDataId int) (err error) {
 	sql := ` DELETE FROM %s WHERE edb_data_id=? `
-	tableName := GetEdbDataTableName(source)
+	tableName := GetEdbDataTableName(source, subSource)
 	sql = fmt.Sprintf(sql, tableName)
 
 	o := orm.NewOrm()
@@ -125,9 +126,9 @@ type RefreshEdbInfoReq struct {
 }
 
 // GetAllEdbDataList 获取所有的指标数据列表
-func GetAllEdbDataList(edbInfoId, source int) (existDataList []*EdbData, err error) {
+func GetAllEdbDataList(edbInfoId, source, subSource int) (existDataList []*EdbData, err error) {
 	o := orm.NewOrm()
-	dataTableName := GetEdbDataTableName(source)
+	dataTableName := GetEdbDataTableName(source, subSource)
 	fmt.Println("dataTableName:", dataTableName)
 	sql := `SELECT * FROM %s WHERE edb_info_id=? order by data_time asc`
 	sql = fmt.Sprintf(sql, dataTableName)
@@ -136,8 +137,8 @@ func GetAllEdbDataList(edbInfoId, source int) (existDataList []*EdbData, err err
 }
 
 // GetAllEdbDataListByTo 获取所有的指标数据列表
-func GetAllEdbDataListByTo(to orm.TxOrmer, edbInfoId, source int) (existDataList []*EdbData, err error) {
-	dataTableName := GetEdbDataTableName(source)
+func GetAllEdbDataListByTo(to orm.TxOrmer, edbInfoId, source, subSource int) (existDataList []*EdbData, err error) {
+	dataTableName := GetEdbDataTableName(source, subSource)
 	fmt.Println("dataTableName:", dataTableName)
 	sql := `SELECT * FROM %s WHERE edb_info_id=? order by data_time asc`
 	sql = fmt.Sprintf(sql, dataTableName)
@@ -146,8 +147,8 @@ func GetAllEdbDataListByTo(to orm.TxOrmer, edbInfoId, source int) (existDataList
 }
 
 // GetFinalLastByTo 获取所有的指标数据列表
-func GetFinalLastByTo(to orm.TxOrmer, edbInfoId, source int, latestDate string) (finalLast EdbInfoSearchData, err error) {
-	dataTableName := GetEdbDataTableName(source)
+func GetFinalLastByTo(to orm.TxOrmer, edbInfoId, source, subSource int, latestDate string) (finalLast EdbInfoSearchData, err error) {
+	dataTableName := GetEdbDataTableName(source, subSource)
 	sql := fmt.Sprintf(` SELECT data_time , value FROM %s WHERE edb_info_id=? and data_time<=? ORDER BY data_time DESC `, dataTableName)
 	err = to.Raw(sql, edbInfoId, latestDate).QueryRow(&finalLast)
 	if err != nil && err.Error() != utils.ErrNoRow() {
@@ -177,8 +178,8 @@ type EdbDataList struct {
 	Value         float64 `description:"数据值"`
 }
 
-func GetEdbDataList(source, endInfoId int, startDate, endDate string) (list []*EdbDataList, err error) {
-	tableName := GetEdbDataTableName(source)
+func GetEdbDataList(source, subSource, endInfoId int, startDate, endDate string) (list []*EdbDataList, err error) {
+	tableName := GetEdbDataTableName(source, subSource)
 	if tableName == "" {
 		err = errors.New("无效的渠道:" + strconv.Itoa(source))
 		list = make([]*EdbDataList, 0)

+ 16 - 14
models/edb_data_calculate_bp.go

@@ -65,6 +65,7 @@ func AddCalculateBp(req *EdbInfoCalculateBatchSaveReq, fromEdbInfo *EdbInfo, edb
 			calculateMappingItem.FromTag = ""
 			calculateMappingItem.Source = edbInfo.Source
 			calculateMappingItem.SourceName = edbInfo.SourceName
+			calculateMappingItem.FromSubSource = edbInfo.SubSource
 			_, err = to.Insert(calculateMappingItem)
 			if err != nil {
 				return
@@ -75,7 +76,7 @@ func AddCalculateBp(req *EdbInfoCalculateBatchSaveReq, fromEdbInfo *EdbInfo, edb
 		if err != nil {
 			return
 		}
-		dataTableName := GetEdbDataTableName(utils.DATA_SOURCE_CALCULATE_BP)
+		dataTableName := GetEdbDataTableName(utils.DATA_SOURCE_CALCULATE_BP, utils.DATA_SUB_SOURCE_EDB)
 		fmt.Println("dataTableName:" + dataTableName)
 		deleteSql := ` DELETE FROM %s WHERE edb_info_id=? `
 		deleteSql = fmt.Sprintf(deleteSql, dataTableName)
@@ -86,7 +87,7 @@ func AddCalculateBp(req *EdbInfoCalculateBatchSaveReq, fromEdbInfo *EdbInfo, edb
 	}
 
 	//计算数据
-	err = refreshAllCalculateBp(to, edbInfo.EdbInfoId, edbInfo.Source, fromEdbInfo, edbInfo.EdbCode, "", "", 0)
+	err = refreshAllCalculateBp(to, edbInfo.EdbInfoId, edbInfo.Source, edbInfo.SubSource, fromEdbInfo, edbInfo.EdbCode, "", "", 0)
 
 	return
 }
@@ -164,6 +165,7 @@ func EditCalculateBp(edbInfo *EdbInfo, req *EdbInfoCalculateBatchEditReq, fromEd
 			Sort:                      1,
 			CreateTime:                time.Now(),
 			ModifyTime:                time.Now(),
+			FromSubSource:             fromEdbInfo.SubSource,
 		}
 		_, err = to.Insert(calculateMappingItem)
 		if err != nil {
@@ -172,13 +174,13 @@ func EditCalculateBp(edbInfo *EdbInfo, req *EdbInfoCalculateBatchEditReq, fromEd
 	}
 
 	//计算数据
-	err = refreshAllCalculateBp(to, edbInfo.EdbInfoId, edbInfo.Source, fromEdbInfo, edbInfo.EdbCode, "", "", 0)
+	err = refreshAllCalculateBp(to, edbInfo.EdbInfoId, edbInfo.Source, edbInfo.SubSource, fromEdbInfo, edbInfo.EdbCode, "", "", 0)
 
 	return
 }
 
 // RefreshAllCalculateBpBak 刷新所有升频数据
-func RefreshAllCalculateBpBak(edbInfoId, source int, fromEdbInfo *EdbInfo, edbCode, startDate, endDate string) (err error) {
+func RefreshAllCalculateBpBak(edbInfoId, source, subSource int, fromEdbInfo *EdbInfo, edbCode, startDate, endDate string) (err error) {
 	o := orm.NewOrm()
 	to, err := o.Begin()
 	if err != nil {
@@ -214,7 +216,7 @@ func RefreshAllCalculateBpBak(edbInfoId, source int, fromEdbInfo *EdbInfo, edbCo
 		pars = append(pars, endDate)
 	}
 
-	dataList, err := GetEdbDataListAllByTo(to, condition, pars, fromEdbInfo.Source, 0)
+	dataList, err := GetEdbDataListAllByTo(to, condition, pars, fromEdbInfo.Source, fromEdbInfo.SubSource, 0)
 	if err != nil {
 		return err
 	}
@@ -227,7 +229,7 @@ func RefreshAllCalculateBpBak(edbInfoId, source int, fromEdbInfo *EdbInfo, edbCo
 	fmt.Println("source:", source)
 	//获取指标所有数据
 	existDataList := make([]*EdbData, 0)
-	dataTableName := GetEdbDataTableName(source)
+	dataTableName := GetEdbDataTableName(source, subSource)
 	fmt.Println("dataTableName:", dataTableName)
 	sql := `SELECT * FROM %s WHERE edb_info_id=? `
 	sql = fmt.Sprintf(sql, dataTableName)
@@ -318,7 +320,7 @@ func RefreshAllCalculateBpBak(edbInfoId, source int, fromEdbInfo *EdbInfo, edbCo
 	return
 }
 
-func RefreshAllCalculateBp(edbInfoId, source int, fromEdbInfo *EdbInfo, edbCode, startDate, endDate string) (err error) {
+func RefreshAllCalculateBp(edbInfoId, source, subSource int, fromEdbInfo *EdbInfo, edbCode, startDate, endDate string) (err error) {
 	o := orm.NewOrm()
 	to, err := o.Begin()
 	if err != nil {
@@ -334,13 +336,13 @@ func RefreshAllCalculateBp(edbInfoId, source int, fromEdbInfo *EdbInfo, edbCode,
 	}()
 
 	// 计算数据
-	err = refreshAllCalculateBp(to, edbInfoId, source, fromEdbInfo, edbCode, startDate, endDate, 1)
+	err = refreshAllCalculateBp(to, edbInfoId, source, subSource, fromEdbInfo, edbCode, startDate, endDate, 1)
 
 	return
 }
 
 // refreshAllCalculateBp 刷新升频数据
-func refreshAllCalculateBp(to orm.TxOrmer, edbInfoId, source int, fromEdbInfo *EdbInfo, edbCode, startDate, endDate string, order int) (err error) {
+func refreshAllCalculateBp(to orm.TxOrmer, edbInfoId, source, subSource int, fromEdbInfo *EdbInfo, edbCode, startDate, endDate string, order int) (err error) {
 	edbInfoIdStr := strconv.Itoa(edbInfoId)
 
 	//计算数据
@@ -358,7 +360,7 @@ func refreshAllCalculateBp(to orm.TxOrmer, edbInfoId, source int, fromEdbInfo *E
 	//	pars = append(pars, endDate)
 	//}
 	//获取来源指标的数据
-	dataList, err := GetEdbDataListAllByTo(to, condition, pars, fromEdbInfo.Source, order)
+	dataList, err := GetEdbDataListAllByTo(to, condition, pars, fromEdbInfo.Source, fromEdbInfo.SubSource, order)
 	if err != nil {
 		return err
 	}
@@ -374,7 +376,7 @@ func refreshAllCalculateBp(to orm.TxOrmer, edbInfoId, source int, fromEdbInfo *E
 	fmt.Println("source:", source)
 
 	//获取升频指标所有数据
-	existDataList, err := GetAllEdbDataListByTo(to, edbInfoId, source)
+	existDataList, err := GetAllEdbDataListByTo(to, edbInfoId, source, subSource)
 	if err != nil {
 		return
 	}
@@ -455,7 +457,7 @@ func refreshAllCalculateBp(to orm.TxOrmer, edbInfoId, source int, fromEdbInfo *E
 					}
 					//如果对应的值不匹配
 					if tmpExistData.Value != lastValueStr {
-						err = ModifyEdbDataById(source, tmpExistData.EdbDataId, lastValueStr)
+						err = ModifyEdbDataById(source, subSource, tmpExistData.EdbDataId, lastValueStr)
 						if err != nil {
 							return err
 						}
@@ -470,7 +472,7 @@ func refreshAllCalculateBp(to orm.TxOrmer, edbInfoId, source int, fromEdbInfo *E
 			}
 		} else {
 			//如果没有来源指标数据,那么已经入库的计算指标数据需要全部删除
-			tableName := GetEdbDataTableName(source)
+			tableName := GetEdbDataTableName(source, subSource)
 			sql := fmt.Sprintf(` DELETE FROM %s WHERE edb_info_id = ?`, tableName)
 			_, err = to.Raw(sql, edbInfoId).Exec()
 			if err != nil {
@@ -536,7 +538,7 @@ func refreshAllCalculateBp(to orm.TxOrmer, edbInfoId, source int, fromEdbInfo *E
 		removeDateStr := strings.Join(removeDateList, `","`)
 		removeDateStr = `"` + removeDateStr + `"`
 		//如果拼接指标变更了,那么需要删除所有的指标数据
-		tableName := GetEdbDataTableName(source)
+		tableName := GetEdbDataTableName(source, subSource)
 		sql := fmt.Sprintf(` DELETE FROM %s WHERE edb_info_id = ? and data_time in (%s) `, tableName, removeDateStr)
 
 		_, err = to.Raw(sql, edbInfoId).Exec()

+ 12 - 10
models/edb_data_calculate_cjjx.go

@@ -69,6 +69,7 @@ func AddCalculateCjjx(req *EdbInfoCalculateBatchSaveReq, fromEdbInfo *EdbInfo, e
 			calculateMappingItem.FromTag = ""
 			calculateMappingItem.Source = edbInfo.Source
 			calculateMappingItem.SourceName = edbInfo.SourceName
+			calculateMappingItem.FromSubSource = edbInfo.SubSource
 			_, err = to.Insert(calculateMappingItem)
 			if err != nil {
 				return
@@ -79,7 +80,7 @@ func AddCalculateCjjx(req *EdbInfoCalculateBatchSaveReq, fromEdbInfo *EdbInfo, e
 		if err != nil {
 			return
 		}
-		dataTableName := GetEdbDataTableName(utils.DATA_SOURCE_CALCULATE_CJJX)
+		dataTableName := GetEdbDataTableName(utils.DATA_SOURCE_CALCULATE_CJJX, utils.DATA_SUB_SOURCE_EDB)
 		fmt.Println("dataTableName:", dataTableName)
 		deleteSql := ` DELETE FROM %s WHERE edb_info_id=? `
 		deleteSql = fmt.Sprintf(deleteSql, dataTableName)
@@ -90,7 +91,7 @@ func AddCalculateCjjx(req *EdbInfoCalculateBatchSaveReq, fromEdbInfo *EdbInfo, e
 	}
 
 	//计算数据
-	err = refreshAllCalculateCjjx(to, edbInfo.EdbInfoId, edbInfo.Source, fromEdbInfo, edbInfo.EdbCode, "", "", edbInfo.Calendar, formulaInt)
+	err = refreshAllCalculateCjjx(to, edbInfo.EdbInfoId, edbInfo.Source, edbInfo.SubSource, fromEdbInfo, edbInfo.EdbCode, "", "", edbInfo.Calendar, formulaInt)
 
 	return
 }
@@ -174,6 +175,7 @@ func EditCalculateCjjx(req *EdbInfoCalculateBatchEditReq, edbInfo, fromEdbInfo *
 				Sort:                      1,
 				CreateTime:                time.Now(),
 				ModifyTime:                time.Now(),
+				FromSubSource:             fromEdbInfo.SubSource,
 			}
 			_, err = to.Insert(calculateMappingItem)
 			if err != nil {
@@ -183,7 +185,7 @@ func EditCalculateCjjx(req *EdbInfoCalculateBatchEditReq, edbInfo, fromEdbInfo *
 	}
 
 	//清空原有数据
-	tableName := GetEdbDataTableName(edbInfo.Source)
+	tableName := GetEdbDataTableName(edbInfo.Source, edbInfo.SubSource)
 	sql := fmt.Sprintf(` DELETE FROM %s WHERE edb_info_id = ? `, tableName)
 	_, err = to.Raw(sql, edbInfo.EdbInfoId).Exec()
 	if err != nil {
@@ -191,13 +193,13 @@ func EditCalculateCjjx(req *EdbInfoCalculateBatchEditReq, edbInfo, fromEdbInfo *
 	}
 
 	//计算数据
-	err = refreshAllCalculateCjjx(to, edbInfo.EdbInfoId, edbInfo.Source, fromEdbInfo, edbInfo.EdbCode, "", "", edbInfo.Calendar, formulaInt)
+	err = refreshAllCalculateCjjx(to, edbInfo.EdbInfoId, edbInfo.Source, edbInfo.SubSource, fromEdbInfo, edbInfo.EdbCode, "", "", edbInfo.Calendar, formulaInt)
 
 	return
 }
 
 // RefreshAllCalculateCjjx 刷新全部超季节性数据
-func RefreshAllCalculateCjjx(edbInfoId, source int, fromEdbInfo *EdbInfo, edbCode, startDate, endDate, calendar string, formulaInt int) (err error) {
+func RefreshAllCalculateCjjx(edbInfoId, source, subSource int, fromEdbInfo *EdbInfo, edbCode, startDate, endDate, calendar string, formulaInt int) (err error) {
 	o := orm.NewOrm()
 	to, err := o.Begin()
 	if err != nil {
@@ -213,13 +215,13 @@ func RefreshAllCalculateCjjx(edbInfoId, source int, fromEdbInfo *EdbInfo, edbCod
 	}()
 
 	// 重新计算
-	err = refreshAllCalculateCjjx(to, edbInfoId, source, fromEdbInfo, edbCode, startDate, endDate, calendar, formulaInt)
+	err = refreshAllCalculateCjjx(to, edbInfoId, source, subSource, fromEdbInfo, edbCode, startDate, endDate, calendar, formulaInt)
 
 	return
 }
 
 // refreshAllCalculateCjjx 刷新全部超季节性数据
-func refreshAllCalculateCjjx(to orm.TxOrmer, edbInfoId, source int, fromEdbInfo *EdbInfo, edbCode, startDate, endDate, calendar string, formulaInt int) (err error) {
+func refreshAllCalculateCjjx(to orm.TxOrmer, edbInfoId, source, subSource int, fromEdbInfo *EdbInfo, edbCode, startDate, endDate, calendar string, formulaInt int) (err error) {
 	if err != nil {
 		return
 	}
@@ -241,7 +243,7 @@ func refreshAllCalculateCjjx(to orm.TxOrmer, edbInfoId, source int, fromEdbInfo
 	//	pars = append(pars, endDate)
 	//}
 
-	dataList, err := GetEdbDataListAllByTo(to, condition, pars, fromEdbInfo.Source, 1)
+	dataList, err := GetEdbDataListAllByTo(to, condition, pars, fromEdbInfo.Source, fromEdbInfo.SubSource, 1)
 	if err != nil {
 		return err
 	}
@@ -260,7 +262,7 @@ func refreshAllCalculateCjjx(to orm.TxOrmer, edbInfoId, source int, fromEdbInfo
 	}
 	//获取指标所有数据
 	existDataList := make([]*EdbData, 0)
-	dataTableName := GetEdbDataTableName(source)
+	dataTableName := GetEdbDataTableName(source, subSource)
 	sql := `SELECT * FROM %s WHERE edb_info_id=? `
 	sql = fmt.Sprintf(sql, dataTableName)
 	_, err = to.Raw(sql, edbInfoId).QueryRows(&existDataList)
@@ -393,7 +395,7 @@ func refreshAllCalculateCjjx(to orm.TxOrmer, edbInfoId, source int, fromEdbInfo
 		removeNum := len(removeDateList)
 		if removeNum > 0 {
 			//如果拼接指标变更了,那么需要删除所有的指标数据
-			tableName := GetEdbDataTableName(source)
+			tableName := GetEdbDataTableName(source, subSource)
 			sql := fmt.Sprintf(` DELETE FROM %s WHERE edb_info_id = ? and data_time in (`+utils.GetOrmInReplace(removeNum)+`) `, tableName)
 			_, err = to.Raw(sql, edbInfoId, removeDateList).Exec()
 			if err != nil {

+ 12 - 10
models/edb_data_calculate_correlation.go

@@ -85,6 +85,7 @@ func AddCalculateCorrelation(req *EdbInfoCalculateBatchSaveReq, edbCode, uniqueC
 		calculateMappingItem.FromTag = v.FromTag
 		calculateMappingItem.Source = edbInfo.Source
 		calculateMappingItem.SourceName = edbInfo.SourceName
+		calculateMappingItem.FromSubSource = edbInfo.SubSource
 		calculateMappingItemList = append(calculateMappingItemList, calculateMappingItem)
 	}
 
@@ -106,7 +107,7 @@ func AddCalculateCorrelation(req *EdbInfoCalculateBatchSaveReq, edbCode, uniqueC
 	}
 
 	//计算数据
-	err, errMsg = refreshAllCalculateCorrelation(to, edbInfo.EdbInfoId, edbInfo.Source, edbInfoA, edbInfoB, edbInfo.EdbCode, edbInfo.CalculateFormula)
+	err, errMsg = refreshAllCalculateCorrelation(to, edbInfo.EdbInfoId, edbInfo.Source, edbInfo.SubSource, edbInfoA, edbInfoB, edbInfo.EdbCode, edbInfo.CalculateFormula)
 
 	return
 }
@@ -148,7 +149,7 @@ func EditCalculateCorrelation(edbInfo *EdbInfo, req *EdbInfoCalculateBatchEditRe
 		return
 	}
 	//清空原有数据
-	tableName := GetEdbDataTableName(edbInfo.Source)
+	tableName := GetEdbDataTableName(edbInfo.Source, edbInfo.SubSource)
 	sql = ` DELETE FROM ` + tableName + ` WHERE edb_info_id = ? `
 	_, err = to.Raw(sql, edbInfo.EdbInfoId).Exec()
 	if err != nil {
@@ -185,6 +186,7 @@ func EditCalculateCorrelation(edbInfo *EdbInfo, req *EdbInfoCalculateBatchEditRe
 		calculateMappingItem.FromTag = v.FromTag
 		calculateMappingItem.Source = edbInfo.Source
 		calculateMappingItem.SourceName = edbInfo.SourceName
+		calculateMappingItem.FromSubSource = edbInfo.SubSource
 		calculateMappingItemList = append(calculateMappingItemList, calculateMappingItem)
 
 	}
@@ -206,7 +208,7 @@ func EditCalculateCorrelation(edbInfo *EdbInfo, req *EdbInfoCalculateBatchEditRe
 	}
 
 	//计算数据
-	err, errMsg = refreshAllCalculateCorrelation(to, edbInfo.EdbInfoId, edbInfo.Source, edbInfoA, edbInfoB, edbInfo.EdbCode, edbInfo.CalculateFormula)
+	err, errMsg = refreshAllCalculateCorrelation(to, edbInfo.EdbInfoId, edbInfo.Source, edbInfo.SubSource, edbInfoA, edbInfoB, edbInfo.EdbCode, edbInfo.CalculateFormula)
 
 	return
 }
@@ -253,7 +255,7 @@ func RefreshAllCalculateCorrelation(edbInfo *EdbInfo) (err error, errMsg string)
 	}()
 
 	// 计算数据
-	err, errMsg = refreshAllCalculateCorrelation(to, edbInfo.EdbInfoId, edbInfo.Source, edbInfoA, edbInfoB, edbInfo.EdbCode, edbInfo.CalculateFormula)
+	err, errMsg = refreshAllCalculateCorrelation(to, edbInfo.EdbInfoId, edbInfo.Source, edbInfo.SubSource, edbInfoA, edbInfoB, edbInfo.EdbCode, edbInfo.CalculateFormula)
 
 	return
 }
@@ -274,12 +276,12 @@ type EdbCalculateFormula struct {
 }
 
 // refreshAllCalculateCorrelation 刷新扩散指数数据
-func refreshAllCalculateCorrelation(to orm.TxOrmer, edbInfoId, source int, edbInfoA, edbInfoB *EdbInfo, edbCode, calculateFormula string) (err error, errMsg string) {
+func refreshAllCalculateCorrelation(to orm.TxOrmer, edbInfoId, source, subSource int, edbInfoA, edbInfoB *EdbInfo, edbCode, calculateFormula string) (err error, errMsg string) {
 	edbInfoIdStr := strconv.Itoa(edbInfoId)
-	tableName := GetEdbDataTableName(utils.DATA_SOURCE_CALCULATE_CORRELATION)
+	tableName := GetEdbDataTableName(utils.DATA_SOURCE_CALCULATE_CORRELATION, utils.DATA_SUB_SOURCE_EDB)
 
 	//获取扩散指数指标所有数据
-	existDataList, err := GetAllEdbDataListByTo(to, edbInfoId, source)
+	existDataList, err := GetAllEdbDataListByTo(to, edbInfoId, source, subSource)
 	if err != nil {
 		return
 	}
@@ -331,7 +333,7 @@ func refreshAllCalculateCorrelation(to orm.TxOrmer, edbInfoId, source int, edbIn
 			existVal, _ := existValDeci.Round(4).Float64()
 			// 判断扩散指数数据的值 与 当前计算出来的结果, 如果两个数据结果不相等的话,那么就修改咯
 			if existVal != currVal {
-				err = ModifyEdbDataById(source, existData.EdbDataId, fmt.Sprint(currVal))
+				err = ModifyEdbDataById(source, subSource, existData.EdbDataId, fmt.Sprint(currVal))
 				if err != nil {
 					return
 				}
@@ -396,7 +398,7 @@ func GetRollingCorrelationChartDataByEdbInfo(edbInfoMappingA, edbInfoMappingB *E
 		pars = append(pars, baseEdbInfo.EdbInfoId)
 
 		//获取来源指标的数据
-		aDataList, err = GetEdbDataListAll(condition, pars, baseEdbInfo.Source, 1)
+		aDataList, err = GetEdbDataListAll(condition, pars, baseEdbInfo.Source, baseEdbInfo.SubSource, 1)
 	case 1:
 		aDataList, err = GetPredictEdbDataListAllByStartDate(baseEdbInfo, 1, "")
 	default:
@@ -414,7 +416,7 @@ func GetRollingCorrelationChartDataByEdbInfo(edbInfoMappingA, edbInfoMappingB *E
 		pars = append(pars, changeEdbInfo.EdbInfoId)
 
 		//获取来源指标的数据
-		bDataList, err = GetEdbDataListAll(condition, pars, changeEdbInfo.Source, 1)
+		bDataList, err = GetEdbDataListAll(condition, pars, changeEdbInfo.Source, changeEdbInfo.SubSource, 1)
 	case 1:
 		bDataList, err = GetPredictEdbDataListAllByStartDate(changeEdbInfo, 1, "")
 	default:

+ 10 - 8
models/edb_data_calculate_hbz.go

@@ -65,6 +65,7 @@ func AddCalculateHbz(req *EdbInfoCalculateBatchSaveReq, fromEdbInfo *EdbInfo, ed
 			calculateMappingItem.FromTag = ""
 			calculateMappingItem.Source = edbInfo.Source
 			calculateMappingItem.SourceName = edbInfo.SourceName
+			calculateMappingItem.FromSubSource = edbInfo.SubSource
 			_, err = to.Insert(calculateMappingItem)
 			if err != nil {
 				return
@@ -75,7 +76,7 @@ func AddCalculateHbz(req *EdbInfoCalculateBatchSaveReq, fromEdbInfo *EdbInfo, ed
 		if err != nil {
 			return
 		}
-		dataTableName := GetEdbDataTableName(utils.DATA_SOURCE_CALCULATE_HBZ)
+		dataTableName := GetEdbDataTableName(utils.DATA_SOURCE_CALCULATE_HBZ, utils.DATA_SUB_SOURCE_EDB)
 		deleteSql := ` DELETE FROM %s WHERE edb_info_id=? `
 		deleteSql = fmt.Sprintf(deleteSql, dataTableName)
 		_, err = to.Raw(deleteSql, req.EdbInfoId).Exec()
@@ -85,7 +86,7 @@ func AddCalculateHbz(req *EdbInfoCalculateBatchSaveReq, fromEdbInfo *EdbInfo, ed
 	}
 
 	//计算数据
-	err = refreshAllCalculateHbz(to, edbInfo.EdbInfoId, edbInfo.Source, fromEdbInfo, edbInfo.EdbCode, "", "", formulaInt)
+	err = refreshAllCalculateHbz(to, edbInfo.EdbInfoId, edbInfo.Source, edbInfo.SubSource, fromEdbInfo, edbInfo.EdbCode, "", "", formulaInt)
 
 	return
 }
@@ -158,6 +159,7 @@ func EditCalculateHbz(edbInfo *EdbInfo, req *EdbInfoCalculateBatchEditReq, fromE
 				Sort:                      1,
 				CreateTime:                time.Now(),
 				ModifyTime:                time.Now(),
+				FromSubSource:             edbInfo.SubSource,
 			}
 			_, err = to.Insert(calculateMappingItem)
 			if err != nil {
@@ -173,13 +175,13 @@ func EditCalculateHbz(edbInfo *EdbInfo, req *EdbInfoCalculateBatchEditReq, fromE
 	}
 
 	//计算数据
-	err = refreshAllCalculateHbz(to, edbInfo.EdbInfoId, edbInfo.Source, fromEdbInfo, edbInfo.EdbCode, "", "", formulaInt)
+	err = refreshAllCalculateHbz(to, edbInfo.EdbInfoId, edbInfo.Source, edbInfo.SubSource, fromEdbInfo, edbInfo.EdbCode, "", "", formulaInt)
 
 	return
 }
 
 // RefreshAllCalculateHbz 刷新所有环比值数据
-func RefreshAllCalculateHbz(edbInfoId, source int, fromEdbInfo *EdbInfo, edbCode, startDate, endDate string, formulaInt int) (err error) {
+func RefreshAllCalculateHbz(edbInfoId, source, subSource int, fromEdbInfo *EdbInfo, edbCode, startDate, endDate string, formulaInt int) (err error) {
 	o := orm.NewOrm()
 	to, err := o.Begin()
 	if err != nil {
@@ -195,12 +197,12 @@ func RefreshAllCalculateHbz(edbInfoId, source int, fromEdbInfo *EdbInfo, edbCode
 	}()
 
 	//计算数据
-	err = refreshAllCalculateHbz(to, edbInfoId, source, fromEdbInfo, edbCode, startDate, endDate, formulaInt)
+	err = refreshAllCalculateHbz(to, edbInfoId, source, subSource, fromEdbInfo, edbCode, startDate, endDate, formulaInt)
 	return
 }
 
 // refreshAllCalculateHbz 刷新所有环比值数据
-func refreshAllCalculateHbz(to orm.TxOrmer, edbInfoId, source int, fromEdbInfo *EdbInfo, edbCode, startDate, endDate string, formulaInt int) (err error) {
+func refreshAllCalculateHbz(to orm.TxOrmer, edbInfoId, source, subSource int, fromEdbInfo *EdbInfo, edbCode, startDate, endDate string, formulaInt int) (err error) {
 	edbInfoIdStr := strconv.Itoa(edbInfoId)
 	//计算数据
 	var condition string
@@ -218,7 +220,7 @@ func refreshAllCalculateHbz(to orm.TxOrmer, edbInfoId, source int, fromEdbInfo *
 	//	pars = append(pars, endDate)
 	//}
 
-	dataList, err := GetEdbDataListAllByTo(to, condition, pars, fromEdbInfo.Source, 0)
+	dataList, err := GetEdbDataListAllByTo(to, condition, pars, fromEdbInfo.Source, fromEdbInfo.SubSource, 0)
 	if err != nil {
 		return err
 	}
@@ -231,7 +233,7 @@ func refreshAllCalculateHbz(to orm.TxOrmer, edbInfoId, source int, fromEdbInfo *
 	fmt.Println("source:", source)
 	//获取指标所有数据
 	existDataList := make([]*EdbData, 0)
-	dataTableName := GetEdbDataTableName(source)
+	dataTableName := GetEdbDataTableName(source, subSource)
 	fmt.Println("dataTableName:", dataTableName)
 	sql := `SELECT * FROM %s WHERE edb_info_id=? `
 	sql = fmt.Sprintf(sql, dataTableName)

+ 11 - 9
models/edb_data_calculate_hcz.go

@@ -66,6 +66,7 @@ func AddCalculateHcz(req *EdbInfoCalculateBatchSaveReq, fromEdbInfo *EdbInfo, ed
 			calculateMappingItem.FromTag = ""
 			calculateMappingItem.Source = edbInfo.Source
 			calculateMappingItem.SourceName = edbInfo.SourceName
+			calculateMappingItem.FromSubSource = fromEdbInfo.SubSource
 			_, err = to.Insert(calculateMappingItem)
 			if err != nil {
 				return
@@ -76,7 +77,7 @@ func AddCalculateHcz(req *EdbInfoCalculateBatchSaveReq, fromEdbInfo *EdbInfo, ed
 		if err != nil {
 			return
 		}
-		dataTableName := GetEdbDataTableName(utils.DATA_SOURCE_CALCULATE_HCZ)
+		dataTableName := GetEdbDataTableName(utils.DATA_SOURCE_CALCULATE_HCZ, utils.DATA_SUB_SOURCE_EDB)
 		deleteSql := ` DELETE FROM %s WHERE edb_info_id=? `
 		deleteSql = fmt.Sprintf(deleteSql, dataTableName)
 		_, err = to.Raw(deleteSql, req.EdbInfoId).Exec()
@@ -86,7 +87,7 @@ func AddCalculateHcz(req *EdbInfoCalculateBatchSaveReq, fromEdbInfo *EdbInfo, ed
 	}
 
 	//计算数据
-	err = refreshAllCalculateHcz(to, edbInfo.EdbInfoId, edbInfo.Source, fromEdbInfo, edbInfo.EdbCode, "", "", formulaInt)
+	err = refreshAllCalculateHcz(to, edbInfo.EdbInfoId, edbInfo.Source, edbInfo.SubSource, fromEdbInfo, edbInfo.EdbCode, "", "", formulaInt)
 
 	return
 }
@@ -159,6 +160,7 @@ func EditCalculateHcz(edbInfo *EdbInfo, req *EdbInfoCalculateBatchEditReq, fromE
 				Sort:                      1,
 				CreateTime:                time.Now(),
 				ModifyTime:                time.Now(),
+				FromSubSource:             fromEdbInfo.SubSource,
 			}
 			_, err = to.Insert(calculateMappingItem)
 			if err != nil {
@@ -174,13 +176,13 @@ func EditCalculateHcz(edbInfo *EdbInfo, req *EdbInfoCalculateBatchEditReq, fromE
 	}
 
 	//计算数据
-	err = refreshAllCalculateHcz(to, edbInfo.EdbInfoId, edbInfo.Source, fromEdbInfo, edbInfo.EdbCode, "", "", formulaInt)
+	err = refreshAllCalculateHcz(to, edbInfo.EdbInfoId, edbInfo.Source, edbInfo.SubSource, fromEdbInfo, edbInfo.EdbCode, "", "", formulaInt)
 
 	return
 }
 
 // RefreshAllCalculateHcz 刷新所有环差值数据
-func RefreshAllCalculateHcz(edbInfoId, source int, fromEdbInfo *EdbInfo, edbCode, startDate, endDate string, formulaInt int) (err error) {
+func RefreshAllCalculateHcz(edbInfoId, source, subSource int, fromEdbInfo *EdbInfo, edbCode, startDate, endDate string, formulaInt int) (err error) {
 	o := orm.NewOrm()
 	to, err := o.Begin()
 	if err != nil {
@@ -196,12 +198,12 @@ func RefreshAllCalculateHcz(edbInfoId, source int, fromEdbInfo *EdbInfo, edbCode
 	}()
 
 	//计算数据
-	err = refreshAllCalculateHcz(to, edbInfoId, source, fromEdbInfo, edbCode, startDate, endDate, formulaInt)
+	err = refreshAllCalculateHcz(to, edbInfoId, source, subSource, fromEdbInfo, edbCode, startDate, endDate, formulaInt)
 	return
 }
 
 // refreshAllCalculateHcz 刷新所有环差值数据
-func refreshAllCalculateHcz(to orm.TxOrmer, edbInfoId, source int, fromEdbInfo *EdbInfo, edbCode, startDate, endDate string, formulaInt int) (err error) {
+func refreshAllCalculateHcz(to orm.TxOrmer, edbInfoId, source, subSource int, fromEdbInfo *EdbInfo, edbCode, startDate, endDate string, formulaInt int) (err error) {
 	edbInfoIdStr := strconv.Itoa(edbInfoId)
 
 	//计算数据
@@ -220,7 +222,7 @@ func refreshAllCalculateHcz(to orm.TxOrmer, edbInfoId, source int, fromEdbInfo *
 	//	pars = append(pars, endDate)
 	//}
 
-	dataList, err := GetEdbDataListAllByTo(to, condition, pars, fromEdbInfo.Source, 0)
+	dataList, err := GetEdbDataListAllByTo(to, condition, pars, fromEdbInfo.Source, fromEdbInfo.SubSource, 0)
 	if err != nil {
 		return err
 	}
@@ -233,7 +235,7 @@ func refreshAllCalculateHcz(to orm.TxOrmer, edbInfoId, source int, fromEdbInfo *
 	fmt.Println("source:", source)
 	//获取指标所有数据
 	existDataList := make([]*EdbData, 0)
-	dataTableName := GetEdbDataTableName(source)
+	dataTableName := GetEdbDataTableName(source, subSource)
 	fmt.Println("dataTableName:", dataTableName)
 
 	var existPars []interface{}
@@ -316,7 +318,7 @@ func refreshAllCalculateHcz(to orm.TxOrmer, edbInfoId, source int, fromEdbInfo *
 		removeDateStr := strings.Join(removeDateList, `","`)
 		removeDateStr = `"` + removeDateStr + `"`
 		//如果拼接指标变更了,那么需要删除所有的指标数据
-		tableName := GetEdbDataTableName(source)
+		tableName := GetEdbDataTableName(source, subSource)
 		sql := fmt.Sprintf(` DELETE FROM %s WHERE edb_info_id = ? and data_time in (%s) `, tableName, removeDateStr)
 
 		_, err = to.Raw(sql, edbInfoId).Exec()

+ 14 - 12
models/edb_data_calculate_jp.go

@@ -92,6 +92,7 @@ func AddCalculateJp(req *EdbInfoCalculateBatchSaveReq, fromEdbInfo *EdbInfo, edb
 			calculateMappingItem.FromTag = ""
 			calculateMappingItem.Source = edbInfo.Source
 			calculateMappingItem.SourceName = edbInfo.SourceName
+			calculateMappingItem.FromSubSource = fromEdbInfo.SubSource
 			_, err = to.Insert(calculateMappingItem)
 			if err != nil {
 				return
@@ -102,7 +103,7 @@ func AddCalculateJp(req *EdbInfoCalculateBatchSaveReq, fromEdbInfo *EdbInfo, edb
 		if err != nil {
 			return
 		}
-		dataTableName := GetEdbDataTableName(utils.DATA_SOURCE_CALCULATE_JP)
+		dataTableName := GetEdbDataTableName(utils.DATA_SOURCE_CALCULATE_JP, utils.DATA_SUB_SOURCE_EDB)
 		fmt.Println("dataTableName:" + dataTableName)
 		deleteSql := ` DELETE FROM %s WHERE edb_info_id=? `
 		deleteSql = fmt.Sprintf(deleteSql, dataTableName)
@@ -113,7 +114,7 @@ func AddCalculateJp(req *EdbInfoCalculateBatchSaveReq, fromEdbInfo *EdbInfo, edb
 	}
 
 	//计算数据
-	err = refreshAllCalculateJp(to, edbInfo.EdbInfoId, edbInfo.Source, fromEdbInfo, edbInfo.EdbCode, edbInfo.Frequency, edbInfo.CalculateFormula)
+	err = refreshAllCalculateJp(to, edbInfo.EdbInfoId, edbInfo.Source, edbInfo.SubSource, fromEdbInfo, edbInfo.EdbCode, edbInfo.Frequency, edbInfo.CalculateFormula)
 
 	return
 }
@@ -170,7 +171,7 @@ func EditCalculateJp(edbInfo *EdbInfo, req *EdbInfoCalculateBatchEditReq, fromEd
 		return
 	}
 	//清空原有数据
-	tableName := GetEdbDataTableName(edbInfo.Source)
+	tableName := GetEdbDataTableName(edbInfo.Source, edbInfo.SubSource)
 	sql = ` DELETE FROM ` + tableName + ` WHERE edb_info_id = ? `
 	_, err = to.Raw(sql, edbInfo.EdbInfoId).Exec()
 	if err != nil {
@@ -193,6 +194,7 @@ func EditCalculateJp(edbInfo *EdbInfo, req *EdbInfoCalculateBatchEditReq, fromEd
 			Sort:                      1,
 			CreateTime:                time.Now(),
 			ModifyTime:                time.Now(),
+			FromSubSource:             fromEdbInfo.SubSource,
 		}
 		_, err = to.Insert(calculateMappingItem)
 		if err != nil {
@@ -201,12 +203,12 @@ func EditCalculateJp(edbInfo *EdbInfo, req *EdbInfoCalculateBatchEditReq, fromEd
 	}
 
 	//计算数据
-	err = refreshAllCalculateJp(to, edbInfo.EdbInfoId, edbInfo.Source, fromEdbInfo, edbInfo.EdbCode, edbInfo.Frequency, edbInfo.CalculateFormula)
+	err = refreshAllCalculateJp(to, edbInfo.EdbInfoId, edbInfo.Source, edbInfo.SubSource, fromEdbInfo, edbInfo.EdbCode, edbInfo.Frequency, edbInfo.CalculateFormula)
 
 	return
 }
 
-func RefreshAllCalculateJp(edbInfoId, source int, fromEdbInfo *EdbInfo, edbCode, edbFrequency, formula string) (err error) {
+func RefreshAllCalculateJp(edbInfoId, source, subSource int, fromEdbInfo *EdbInfo, edbCode, edbFrequency, formula string) (err error) {
 	o := orm.NewOrm()
 	to, err := o.Begin()
 	if err != nil {
@@ -222,13 +224,13 @@ func RefreshAllCalculateJp(edbInfoId, source int, fromEdbInfo *EdbInfo, edbCode,
 	}()
 
 	// 计算数据
-	err = refreshAllCalculateJp(to, edbInfoId, source, fromEdbInfo, edbCode, edbFrequency, formula)
+	err = refreshAllCalculateJp(to, edbInfoId, source, subSource, fromEdbInfo, edbCode, edbFrequency, formula)
 
 	return
 }
 
 // refreshAllCalculateJp 刷新降频数据
-func refreshAllCalculateJp(to orm.TxOrmer, edbInfoId, source int, fromEdbInfo *EdbInfo, edbCode, edbFrequency, formula string) (err error) {
+func refreshAllCalculateJp(to orm.TxOrmer, edbInfoId, source, subSource int, fromEdbInfo *EdbInfo, edbCode, edbFrequency, formula string) (err error) {
 	edbInfoIdStr := strconv.Itoa(edbInfoId)
 
 	//计算数据
@@ -246,7 +248,7 @@ func refreshAllCalculateJp(to orm.TxOrmer, edbInfoId, source int, fromEdbInfo *E
 	//	pars = append(pars, endDate)
 	//}
 	//获取来源指标的数据
-	dataList, err := GetEdbDataListAllByTo(to, condition, pars, fromEdbInfo.Source, 1)
+	dataList, err := GetEdbDataListAllByTo(to, condition, pars, fromEdbInfo.Source, fromEdbInfo.SubSource, 1)
 	if err != nil {
 		return err
 	}
@@ -262,7 +264,7 @@ func refreshAllCalculateJp(to orm.TxOrmer, edbInfoId, source int, fromEdbInfo *E
 	fmt.Println("source:", source)
 
 	//获取降频指标所有数据
-	existDataList, err := GetAllEdbDataListByTo(to, edbInfoId, source)
+	existDataList, err := GetAllEdbDataListByTo(to, edbInfoId, source, subSource)
 	if err != nil {
 		return
 	}
@@ -273,7 +275,7 @@ func refreshAllCalculateJp(to orm.TxOrmer, edbInfoId, source int, fromEdbInfo *E
 		existDataMap[v.DataTime] = v
 	}
 
-	tableName := GetEdbDataTableName(utils.DATA_SOURCE_CALCULATE_JP)
+	tableName := GetEdbDataTableName(utils.DATA_SOURCE_CALCULATE_JP, subSource)
 	addSql := ` INSERT INTO ` + tableName + ` (edb_info_id,edb_code,data_time,value,create_time,modify_time,data_timestamp) values `
 	var isAdd bool
 
@@ -389,7 +391,7 @@ func refreshAllCalculateJp(to orm.TxOrmer, edbInfoId, source int, fromEdbInfo *E
 			existVal, _ := existValDeci.Round(4).Float64()
 			// 判断降频数据的值 与 当前计算出来的结果, 如果两个数据结果不相等的话,那么就修改咯
 			if existVal != currVal {
-				err = ModifyEdbDataById(source, existData.EdbDataId, fmt.Sprint(currVal))
+				err = ModifyEdbDataById(source, subSource, existData.EdbDataId, fmt.Sprint(currVal))
 				if err != nil {
 					return err
 				}
@@ -441,7 +443,7 @@ func refreshAllCalculateJp(to orm.TxOrmer, edbInfoId, source int, fromEdbInfo *E
 			existVal, _ := existValDeci.Round(4).Float64()
 			// 判断降频数据的值 与 当前计算出来的结果, 如果两个数据结果不相等的话,那么就修改咯
 			if existVal != currVal {
-				err = ModifyEdbDataById(source, existData.EdbDataId, fmt.Sprint(currVal))
+				err = ModifyEdbDataById(source, subSource, existData.EdbDataId, fmt.Sprint(currVal))
 				if err != nil {
 					return err
 				}

+ 11 - 9
models/edb_data_calculate_kszs.go

@@ -81,6 +81,7 @@ func AddCalculateKszs(req *EdbInfoCalculateBatchSaveReq, edbCode, uniqueCode str
 		calculateMappingItem.FromTag = v.FromTag
 		calculateMappingItem.Source = edbInfo.Source
 		calculateMappingItem.SourceName = edbInfo.SourceName
+		calculateMappingItem.FromSubSource = edbInfo.SubSource
 		calculateMappingItemList = append(calculateMappingItemList, calculateMappingItem)
 
 		tagMap[v.FromTag] = v.EdbInfoId
@@ -91,7 +92,7 @@ func AddCalculateKszs(req *EdbInfoCalculateBatchSaveReq, edbCode, uniqueCode str
 	}
 
 	//计算数据
-	err = refreshAllCalculateKszs(to, edbInfo.EdbInfoId, edbInfo.Source, relationEdbInfoList, edbInfo.EdbCode, edbInfo.CalculateFormula, tagMap)
+	err = refreshAllCalculateKszs(to, edbInfo.EdbInfoId, edbInfo.Source, edbInfo.SubSource, relationEdbInfoList, edbInfo.EdbCode, edbInfo.CalculateFormula, tagMap)
 
 	return
 }
@@ -133,7 +134,7 @@ func EditCalculateKszs(edbInfo *EdbInfo, req *EdbInfoCalculateBatchEditReq) (err
 		return
 	}
 	//清空原有数据
-	tableName := GetEdbDataTableName(edbInfo.Source)
+	tableName := GetEdbDataTableName(edbInfo.Source, edbInfo.SubSource)
 	sql = ` DELETE FROM ` + tableName + ` WHERE edb_info_id = ? `
 	_, err = to.Raw(sql, edbInfo.EdbInfoId).Exec()
 	if err != nil {
@@ -166,6 +167,7 @@ func EditCalculateKszs(edbInfo *EdbInfo, req *EdbInfoCalculateBatchEditReq) (err
 		calculateMappingItem.FromTag = v.FromTag
 		calculateMappingItem.Source = edbInfo.Source
 		calculateMappingItem.SourceName = edbInfo.SourceName
+		calculateMappingItem.FromSubSource = edbInfo.SubSource
 		calculateMappingItemList = append(calculateMappingItemList, calculateMappingItem)
 
 		tagMap[v.FromTag] = v.EdbInfoId
@@ -176,7 +178,7 @@ func EditCalculateKszs(edbInfo *EdbInfo, req *EdbInfoCalculateBatchEditReq) (err
 	}
 
 	//计算数据
-	err = refreshAllCalculateKszs(to, edbInfo.EdbInfoId, edbInfo.Source, relationEdbInfoList, edbInfo.EdbCode, edbInfo.CalculateFormula, tagMap)
+	err = refreshAllCalculateKszs(to, edbInfo.EdbInfoId, edbInfo.Source, edbInfo.SubSource, relationEdbInfoList, edbInfo.EdbCode, edbInfo.CalculateFormula, tagMap)
 
 	return
 }
@@ -208,7 +210,7 @@ func RefreshAllCalculateKszs(edbInfo *EdbInfo) (err error) {
 	}()
 
 	// 计算数据
-	err = refreshAllCalculateKszs(to, edbInfo.EdbInfoId, edbInfo.Source, relationEdbInfoList, edbInfo.EdbCode, edbInfo.CalculateFormula, tagMap)
+	err = refreshAllCalculateKszs(to, edbInfo.EdbInfoId, edbInfo.Source, edbInfo.SubSource, relationEdbInfoList, edbInfo.EdbCode, edbInfo.CalculateFormula, tagMap)
 
 	return
 }
@@ -220,9 +222,9 @@ type KszsConfig struct {
 }
 
 // refreshAllCalculateKszs 刷新扩散指数数据
-func refreshAllCalculateKszs(to orm.TxOrmer, edbInfoId, source int, relationEdbInfoList []*EdbInfo, edbCode, calculateFormula string, tagMap map[string]int) (err error) {
+func refreshAllCalculateKszs(to orm.TxOrmer, edbInfoId, source, subSource int, relationEdbInfoList []*EdbInfo, edbCode, calculateFormula string, tagMap map[string]int) (err error) {
 	edbInfoIdStr := strconv.Itoa(edbInfoId)
-	tableName := GetEdbDataTableName(utils.DATA_SOURCE_CALCULATE_KSZS)
+	tableName := GetEdbDataTableName(utils.DATA_SOURCE_CALCULATE_KSZS, utils.DATA_SUB_SOURCE_EDB)
 
 	// 获取扩散指标关联的指标id
 	checkEdbInfoIdMap := make(map[int]int)
@@ -246,7 +248,7 @@ func refreshAllCalculateKszs(to orm.TxOrmer, edbInfoId, source int, relationEdbI
 	}
 
 	//获取扩散指数指标所有数据
-	existDataList, err := GetAllEdbDataListByTo(to, edbInfoId, source)
+	existDataList, err := GetAllEdbDataListByTo(to, edbInfoId, source, subSource)
 	if err != nil {
 		return
 	}
@@ -267,7 +269,7 @@ func refreshAllCalculateKszs(to orm.TxOrmer, edbInfoId, source int, relationEdbI
 		var pars []interface{}
 		condition += " AND edb_info_id=? "
 		pars = append(pars, v.EdbInfoId)
-		tmpDataList, tmpErr := GetEdbDataListAllByTo(to, condition, pars, v.Source, 1)
+		tmpDataList, tmpErr := GetEdbDataListAllByTo(to, condition, pars, v.Source, v.SubSource, 1)
 		if tmpErr != nil {
 			err = tmpErr
 			return err
@@ -351,7 +353,7 @@ func refreshAllCalculateKszs(to orm.TxOrmer, edbInfoId, source int, relationEdbI
 			existVal, _ := existValDeci.Round(4).Float64()
 			// 判断扩散指数数据的值 与 当前计算出来的结果, 如果两个数据结果不相等的话,那么就修改咯
 			if existVal != currVal {
-				err = ModifyEdbDataById(source, existData.EdbDataId, fmt.Sprint(currVal))
+				err = ModifyEdbDataById(source, subSource, existData.EdbDataId, fmt.Sprint(currVal))
 				if err != nil {
 					return err
 				}

+ 10 - 8
models/edb_data_calculate_ljz.go

@@ -105,6 +105,7 @@ func (obj Ljz) Add(params AddCalculateBatchParams) (edbInfo *EdbInfo, err error,
 		calculateMappingItem.FromTag = ""
 		calculateMappingItem.Source = edbInfo.Source
 		calculateMappingItem.SourceName = edbInfo.SourceName
+		calculateMappingItem.FromSubSource = fromEdbInfo.SubSource
 		_, err = to.Insert(calculateMappingItem)
 		if err != nil {
 			return
@@ -112,7 +113,7 @@ func (obj Ljz) Add(params AddCalculateBatchParams) (edbInfo *EdbInfo, err error,
 	}
 
 	//计算数据
-	err = obj.refresh(to, edbInfo.EdbInfoId, edbInfo.Source, edbInfo, fromEdbInfo, edbInfo.EdbCode, "")
+	err = obj.refresh(to, edbInfo.EdbInfoId, edbInfo.Source, edbInfo.SubSource, edbInfo, fromEdbInfo, edbInfo.EdbCode, "")
 
 	return
 }
@@ -148,7 +149,7 @@ func (obj Ljz) Edit(params EditCalculateBatchParams) (err error, errMsg string)
 			_ = to.Commit()
 		}
 	}()
-	tableName := GetEdbDataTableName(edbInfo.Source)
+	tableName := GetEdbDataTableName(edbInfo.Source, edbInfo.SubSource)
 
 	var isRecalculate bool
 	if edbInfo.Frequency != req.Frequency {
@@ -181,7 +182,7 @@ func (obj Ljz) Edit(params EditCalculateBatchParams) (err error, errMsg string)
 
 		// 频度被换了,需要重新计算
 		if isRecalculate {
-			err = obj.refresh(to, edbInfo.EdbInfoId, edbInfo.Source, edbInfo, fromEdbInfo, edbInfo.EdbCode, "")
+			err = obj.refresh(to, edbInfo.EdbInfoId, edbInfo.Source, edbInfo.SubSource, edbInfo, fromEdbInfo, edbInfo.EdbCode, "")
 		}
 
 		return
@@ -218,6 +219,7 @@ func (obj Ljz) Edit(params EditCalculateBatchParams) (err error, errMsg string)
 			Sort:                      1,
 			CreateTime:                time.Now(),
 			ModifyTime:                time.Now(),
+			FromSubSource:             fromEdbInfo.SubSource,
 		}
 		_, err = to.Insert(calculateMappingItem)
 		if err != nil {
@@ -226,7 +228,7 @@ func (obj Ljz) Edit(params EditCalculateBatchParams) (err error, errMsg string)
 	}
 
 	//计算数据
-	err = obj.refresh(to, edbInfo.EdbInfoId, edbInfo.Source, edbInfo, fromEdbInfo, edbInfo.EdbCode, "")
+	err = obj.refresh(to, edbInfo.EdbInfoId, edbInfo.Source, edbInfo.SubSource, edbInfo, fromEdbInfo, edbInfo.EdbCode, "")
 
 	return
 }
@@ -259,7 +261,7 @@ func (obj Ljz) Refresh(params RefreshParams) (err error, errMsg string) {
 	}()
 
 	// 计算数据
-	err = obj.refresh(to, params.EdbInfo.EdbInfoId, params.EdbInfo.Source, params.EdbInfo, fromEdbInfo, params.EdbInfo.EdbCode, params.StartDate)
+	err = obj.refresh(to, params.EdbInfo.EdbInfoId, params.EdbInfo.Source, params.EdbInfo.SubSource, params.EdbInfo, fromEdbInfo, params.EdbInfo.EdbCode, params.StartDate)
 
 	return
 }
@@ -279,8 +281,8 @@ func (obj Ljz) GetEdbType() int {
 	return utils.CALCULATE_EDB_TYPE
 }
 
-func (obj Ljz) refresh(to orm.TxOrmer, edbInfoId, source int, edbInfo, fromEdbInfo *EdbInfo, edbCode, startDate string) (err error) {
-	dataTableName := GetEdbDataTableName(source)
+func (obj Ljz) refresh(to orm.TxOrmer, edbInfoId, source, subSource int, edbInfo, fromEdbInfo *EdbInfo, edbCode, startDate string) (err error) {
+	dataTableName := GetEdbDataTableName(source, subSource)
 	edbInfoIdStr := strconv.Itoa(edbInfoId)
 	//计算数据
 	var condition string
@@ -299,7 +301,7 @@ func (obj Ljz) refresh(to orm.TxOrmer, edbInfoId, source int, edbInfo, fromEdbIn
 		isWeekData = true
 	}
 
-	dataList, err := GetEdbDataListAllByTo(to, condition, pars, fromEdbInfo.Source, 1)
+	dataList, err := GetEdbDataListAllByTo(to, condition, pars, fromEdbInfo.Source, fromEdbInfo.SubSource, 1)
 	if err != nil {
 		return err
 	}

+ 10 - 8
models/edb_data_calculate_ljznczj.go

@@ -105,6 +105,7 @@ func (obj LjzNczj) Add(params AddCalculateBatchParams) (edbInfo *EdbInfo, err er
 		calculateMappingItem.FromTag = ""
 		calculateMappingItem.Source = edbInfo.Source
 		calculateMappingItem.SourceName = edbInfo.SourceName
+		calculateMappingItem.FromSubSource = fromEdbInfo.SubSource
 		_, err = to.Insert(calculateMappingItem)
 		if err != nil {
 			return
@@ -112,7 +113,7 @@ func (obj LjzNczj) Add(params AddCalculateBatchParams) (edbInfo *EdbInfo, err er
 	}
 
 	//计算数据
-	err = obj.refresh(to, edbInfo.EdbInfoId, edbInfo.Source, edbInfo, fromEdbInfo, edbInfo.EdbCode, "")
+	err = obj.refresh(to, edbInfo.EdbInfoId, edbInfo.Source, edbInfo.SubSource, edbInfo, fromEdbInfo, edbInfo.EdbCode, "")
 
 	return
 }
@@ -148,7 +149,7 @@ func (obj LjzNczj) Edit(params EditCalculateBatchParams) (err error, errMsg stri
 			_ = to.Commit()
 		}
 	}()
-	tableName := GetEdbDataTableName(edbInfo.Source)
+	tableName := GetEdbDataTableName(edbInfo.Source, edbInfo.SubSource)
 
 	var isRecalculate bool
 	if edbInfo.Frequency != req.Frequency {
@@ -181,7 +182,7 @@ func (obj LjzNczj) Edit(params EditCalculateBatchParams) (err error, errMsg stri
 
 		// 频度被换了,需要重新计算
 		if isRecalculate {
-			err = obj.refresh(to, edbInfo.EdbInfoId, edbInfo.Source, edbInfo, fromEdbInfo, edbInfo.EdbCode, "")
+			err = obj.refresh(to, edbInfo.EdbInfoId, edbInfo.Source, edbInfo.SubSource, edbInfo, fromEdbInfo, edbInfo.EdbCode, "")
 		}
 
 		return
@@ -218,6 +219,7 @@ func (obj LjzNczj) Edit(params EditCalculateBatchParams) (err error, errMsg stri
 			Sort:                      1,
 			CreateTime:                time.Now(),
 			ModifyTime:                time.Now(),
+			FromSubSource:             fromEdbInfo.SubSource,
 		}
 		_, err = to.Insert(calculateMappingItem)
 		if err != nil {
@@ -226,7 +228,7 @@ func (obj LjzNczj) Edit(params EditCalculateBatchParams) (err error, errMsg stri
 	}
 
 	//计算数据
-	err = obj.refresh(to, edbInfo.EdbInfoId, edbInfo.Source, edbInfo, fromEdbInfo, edbInfo.EdbCode, "")
+	err = obj.refresh(to, edbInfo.EdbInfoId, edbInfo.Source, edbInfo.SubSource, edbInfo, fromEdbInfo, edbInfo.EdbCode, "")
 
 	return
 }
@@ -259,7 +261,7 @@ func (obj LjzNczj) Refresh(params RefreshParams) (err error, errMsg string) {
 	}()
 
 	// 计算数据
-	err = obj.refresh(to, params.EdbInfo.EdbInfoId, params.EdbInfo.Source, params.EdbInfo, fromEdbInfo, params.EdbInfo.EdbCode, params.StartDate)
+	err = obj.refresh(to, params.EdbInfo.EdbInfoId, params.EdbInfo.Source, params.EdbInfo.SubSource, params.EdbInfo, fromEdbInfo, params.EdbInfo.EdbCode, params.StartDate)
 
 	return
 }
@@ -279,8 +281,8 @@ func (obj LjzNczj) GetEdbType() int {
 	return utils.CALCULATE_EDB_TYPE
 }
 
-func (obj LjzNczj) refresh(to orm.TxOrmer, edbInfoId, source int, edbInfo, fromEdbInfo *EdbInfo, edbCode, startDate string) (err error) {
-	dataTableName := GetEdbDataTableName(source)
+func (obj LjzNczj) refresh(to orm.TxOrmer, edbInfoId, source, subSource int, edbInfo, fromEdbInfo *EdbInfo, edbCode, startDate string) (err error) {
+	dataTableName := GetEdbDataTableName(source, subSource)
 	edbInfoIdStr := strconv.Itoa(edbInfoId)
 	//计算数据
 	var condition string
@@ -299,7 +301,7 @@ func (obj LjzNczj) refresh(to orm.TxOrmer, edbInfoId, source int, edbInfo, fromE
 		isWeekData = true
 	}
 
-	dataList, err := GetEdbDataListAllByTo(to, condition, pars, fromEdbInfo.Source, 1)
+	dataList, err := GetEdbDataListAllByTo(to, condition, pars, fromEdbInfo.Source, fromEdbInfo.SubSource, 1)
 	if err != nil {
 		return err
 	}

+ 13 - 9
models/edb_data_calculate_ljztbpj.go

@@ -56,7 +56,7 @@ func AddCalculateLjztbpj(req *EdbInfoCalculateBatchSaveReq, firstEdbInfo, second
 		condition += " AND data_time like ? AND edb_info_id=? "
 		pars = append(pars, "%12-31", firstEdbInfo.EdbInfoId)
 
-		lastEdbData, tmpErr := GetLastEdbData(condition, pars, firstEdbInfo.Source)
+		lastEdbData, tmpErr := GetLastEdbData(condition, pars, firstEdbInfo.Source, firstEdbInfo.SubSource)
 		if tmpErr != nil {
 			err = tmpErr
 			return
@@ -69,7 +69,7 @@ func AddCalculateLjztbpj(req *EdbInfoCalculateBatchSaveReq, firstEdbInfo, second
 		condition += " AND data_time <= ? AND edb_info_id=? "
 		pars = append(pars, lastEdbData.DataTime, firstEdbInfo.EdbInfoId)
 
-		firstDataList, tmpErr := GetEdbDataListAllByTo(to, condition, pars, firstEdbInfo.Source, 0)
+		firstDataList, tmpErr := GetEdbDataListAllByTo(to, condition, pars, firstEdbInfo.Source, firstEdbInfo.SubSource, 0)
 		if tmpErr != nil {
 			err = tmpErr
 			return
@@ -127,7 +127,7 @@ func AddCalculateLjztbpj(req *EdbInfoCalculateBatchSaveReq, firstEdbInfo, second
 		edbInfo = tmpEdbInfo
 
 		//删除指标数据
-		dataTableName := GetEdbDataTableName(utils.DATA_SOURCE_CALCULATE_LJZTBPJ)
+		dataTableName := GetEdbDataTableName(utils.DATA_SOURCE_CALCULATE_LJZTBPJ, utils.DATA_SUB_SOURCE_EDB)
 		fmt.Println("dataTableName:" + dataTableName)
 		deleteSql := ` DELETE FROM %s WHERE edb_info_id=? `
 		deleteSql = fmt.Sprintf(deleteSql, dataTableName)
@@ -161,6 +161,7 @@ func AddCalculateLjztbpj(req *EdbInfoCalculateBatchSaveReq, firstEdbInfo, second
 			Sort:                      1,
 			CreateTime:                time.Now(),
 			ModifyTime:                time.Now(),
+			FromSubSource:             firstEdbInfo.SubSource,
 		}
 		insertId, tmpErr := to.Insert(existItemA)
 		if tmpErr != nil {
@@ -187,6 +188,7 @@ func AddCalculateLjztbpj(req *EdbInfoCalculateBatchSaveReq, firstEdbInfo, second
 			Sort:                      1,
 			CreateTime:                time.Now(),
 			ModifyTime:                time.Now(),
+			FromSubSource:             secondEdbInfo.SubSource,
 		}
 		insertId, tmpErr := to.Insert(existItemB)
 		if tmpErr != nil {
@@ -289,6 +291,7 @@ func EditCalculateLjztbpj(req *EdbInfoCalculateBatchEditReq, edbInfo, firstEdbIn
 				Sort:                      1,
 				CreateTime:                time.Now(),
 				ModifyTime:                time.Now(),
+				FromSubSource:             firstEdbInfo.SubSource,
 			}
 			insertId, tmpErr := to.Insert(existItemA)
 			if tmpErr != nil {
@@ -328,6 +331,7 @@ func EditCalculateLjztbpj(req *EdbInfoCalculateBatchEditReq, edbInfo, firstEdbIn
 				Sort:                      2,
 				CreateTime:                time.Now(),
 				ModifyTime:                time.Now(),
+				FromSubSource:             secondEdbInfo.SubSource,
 			}
 
 			insertId, tmpErr := to.Insert(existItemB)
@@ -344,7 +348,7 @@ func EditCalculateLjztbpj(req *EdbInfoCalculateBatchEditReq, edbInfo, firstEdbIn
 	// 如果需要重新计算,那么先删除所有的指标数据,然后再重新计算
 	if isNeedCalculateData {
 		// 删除之前所有的指标数据
-		tableName := GetEdbDataTableName(edbInfo.Source)
+		tableName := GetEdbDataTableName(edbInfo.Source, edbInfo.SubSource)
 		sql = fmt.Sprintf(` DELETE FROM %s WHERE edb_info_id = ? `, tableName)
 		_, err = to.Raw(sql, edbInfo.EdbInfoId).Exec()
 		if err != nil {
@@ -361,7 +365,7 @@ func EditCalculateLjztbpj(req *EdbInfoCalculateBatchEditReq, edbInfo, firstEdbIn
 			condition += " AND data_time like ? AND edb_info_id=? "
 			pars = append(pars, "%12-31", firstEdbInfo.EdbInfoId)
 
-			lastEdbData, tmpErr := GetLastEdbData(condition, pars, firstEdbInfo.Source)
+			lastEdbData, tmpErr := GetLastEdbData(condition, pars, firstEdbInfo.Source, firstEdbInfo.SubSource)
 			if tmpErr != nil {
 				err = tmpErr
 				return
@@ -474,7 +478,7 @@ func refreshAllCalculateLjztbpj(to orm.TxOrmer, edbInfo *EdbInfo, existItemA, ex
 		pars = append(pars, startCalculationDate, existItemA.FromEdbInfoId)
 
 		//第一个指标的数据列表
-		firstDataList, tmpErr := GetEdbDataListAllByTo(to, condition, pars, existItemA.FromSource, 0)
+		firstDataList, tmpErr := GetEdbDataListAllByTo(to, condition, pars, existItemA.FromSource, existItemA.FromSubSource, 0)
 		if tmpErr != nil {
 			return tmpErr
 		}
@@ -512,7 +516,7 @@ func refreshAllCalculateLjztbpj(to orm.TxOrmer, edbInfo *EdbInfo, existItemA, ex
 		pars = append(pars, startCalculationDate, existItemB.FromEdbInfoId)
 
 		//第二个指标的数据列表
-		secondDataList, tmpErr := GetEdbDataListAllByTo(to, condition, pars, existItemB.FromSource, 0)
+		secondDataList, tmpErr := GetEdbDataListAllByTo(to, condition, pars, existItemB.FromSource, existItemB.FromSubSource, 0)
 		if tmpErr != nil {
 			return tmpErr
 		}
@@ -630,7 +634,7 @@ func refreshAllCalculateLjztbpj(to orm.TxOrmer, edbInfo *EdbInfo, existItemA, ex
 			removeDateStr := strings.Join(removeDateList, `","`)
 			removeDateStr = `"` + removeDateStr + `"`
 			//如果拼接指标变更了,那么需要删除所有的指标数据
-			tableName := GetEdbDataTableName(edbInfo.Source)
+			tableName := GetEdbDataTableName(edbInfo.Source, edbInfo.SubSource)
 			sql := fmt.Sprintf(` DELETE FROM %s WHERE edb_info_id = ? and data_time in (%s) `, tableName, removeDateStr)
 
 			_, err = to.Raw(sql, edbInfo.EdbInfoId).Exec()
@@ -643,7 +647,7 @@ func refreshAllCalculateLjztbpj(to orm.TxOrmer, edbInfo *EdbInfo, existItemA, ex
 
 	//修改现有的数据中对应的值
 	{
-		tableName := GetEdbDataTableName(edbInfo.Source)
+		tableName := GetEdbDataTableName(edbInfo.Source, edbInfo.SubSource)
 		for edbDate, edbDataValue := range updateEdbDataMap {
 			sql := fmt.Sprintf(` UPDATE  %s set value = ?,modify_time=now() WHERE edb_info_id = ? and data_time = ? `, tableName)
 

+ 9 - 7
models/edb_data_calculate_ljzzj.go

@@ -79,6 +79,7 @@ func (obj Ljzzj) Add(params AddCalculateBatchParams) (edbInfo *EdbInfo, err erro
 		calculateMappingItem.FromTag = ""
 		calculateMappingItem.Source = edbInfo.Source
 		calculateMappingItem.SourceName = edbInfo.SourceName
+		calculateMappingItem.FromSubSource = fromEdbInfo.SubSource
 		_, err = to.Insert(calculateMappingItem)
 		if err != nil {
 			return
@@ -86,7 +87,7 @@ func (obj Ljzzj) Add(params AddCalculateBatchParams) (edbInfo *EdbInfo, err erro
 	}
 
 	//计算数据
-	err = obj.refresh(to, edbInfo.EdbInfoId, edbInfo.Source, fromEdbInfo, edbInfo.EdbCode)
+	err = obj.refresh(to, edbInfo.EdbInfoId, edbInfo.Source, edbInfo.SubSource, fromEdbInfo, edbInfo.EdbCode)
 
 	return
 }
@@ -115,7 +116,7 @@ func (obj Ljzzj) Edit(params EditCalculateBatchParams) (err error, errMsg string
 			_ = to.Commit()
 		}
 	}()
-	tableName := GetEdbDataTableName(edbInfo.Source)
+	tableName := GetEdbDataTableName(edbInfo.Source, edbInfo.SubSource)
 
 	//修改指标信息
 	edbInfo.EdbName = req.EdbName
@@ -175,6 +176,7 @@ func (obj Ljzzj) Edit(params EditCalculateBatchParams) (err error, errMsg string
 			Sort:                      1,
 			CreateTime:                time.Now(),
 			ModifyTime:                time.Now(),
+			FromSubSource:             fromEdbInfo.SubSource,
 		}
 		_, err = to.Insert(calculateMappingItem)
 		if err != nil {
@@ -183,7 +185,7 @@ func (obj Ljzzj) Edit(params EditCalculateBatchParams) (err error, errMsg string
 	}
 
 	//计算数据
-	err = obj.refresh(to, edbInfo.EdbInfoId, edbInfo.Source, fromEdbInfo, edbInfo.EdbCode)
+	err = obj.refresh(to, edbInfo.EdbInfoId, edbInfo.Source, edbInfo.SubSource, fromEdbInfo, edbInfo.EdbCode)
 
 	return
 }
@@ -216,7 +218,7 @@ func (obj Ljzzj) Refresh(params RefreshParams) (err error, errMsg string) {
 	}()
 
 	// 计算数据
-	err = obj.refresh(to, params.EdbInfo.EdbInfoId, params.EdbInfo.Source, fromEdbInfo, params.EdbInfo.EdbCode)
+	err = obj.refresh(to, params.EdbInfo.EdbInfoId, params.EdbInfo.Source, params.EdbInfo.SubSource, fromEdbInfo, params.EdbInfo.EdbCode)
 
 	return
 }
@@ -236,8 +238,8 @@ func (obj Ljzzj) GetEdbType() int {
 	return utils.CALCULATE_EDB_TYPE
 }
 
-func (obj Ljzzj) refresh(to orm.TxOrmer, edbInfoId, source int, fromEdbInfo *EdbInfo, edbCode string) (err error) {
-	dataTableName := GetEdbDataTableName(source)
+func (obj Ljzzj) refresh(to orm.TxOrmer, edbInfoId, source, subSource int, fromEdbInfo *EdbInfo, edbCode string) (err error) {
+	dataTableName := GetEdbDataTableName(source, subSource)
 	edbInfoIdStr := strconv.Itoa(edbInfoId)
 
 	// 获取来源指标的数据
@@ -245,7 +247,7 @@ func (obj Ljzzj) refresh(to orm.TxOrmer, edbInfoId, source int, fromEdbInfo *Edb
 	var pars []interface{}
 	condition += " AND edb_info_id=? "
 	pars = append(pars, fromEdbInfo.EdbInfoId)
-	dataList, err := GetEdbDataListAllByTo(to, condition, pars, fromEdbInfo.Source, 1)
+	dataList, err := GetEdbDataListAllByTo(to, condition, pars, fromEdbInfo.Source, fromEdbInfo.SubSource, 1)
 	if err != nil {
 		return err
 	}

+ 10 - 8
models/edb_data_calculate_ljzzy.go

@@ -67,6 +67,7 @@ func AddCalculateLjzzy(req *EdbInfoCalculateBatchSaveReq, fromEdbInfo *EdbInfo,
 			calculateMappingItem.FromTag = ""
 			calculateMappingItem.Source = edbInfo.Source
 			calculateMappingItem.SourceName = edbInfo.SourceName
+			calculateMappingItem.FromSubSource = edbInfo.SubSource
 			_, err = to.Insert(calculateMappingItem)
 			if err != nil {
 				return
@@ -77,7 +78,7 @@ func AddCalculateLjzzy(req *EdbInfoCalculateBatchSaveReq, fromEdbInfo *EdbInfo,
 		if err != nil {
 			return
 		}
-		dataTableName := GetEdbDataTableName(utils.DATA_SOURCE_CALCULATE_LJZZY)
+		dataTableName := GetEdbDataTableName(utils.DATA_SOURCE_CALCULATE_LJZZY, utils.DATA_SUB_SOURCE_EDB)
 		deleteSql := ` DELETE FROM %s WHERE edb_info_id=? `
 		deleteSql = fmt.Sprintf(deleteSql, dataTableName)
 		_, err = to.Raw(deleteSql, req.EdbInfoId).Exec()
@@ -87,7 +88,7 @@ func AddCalculateLjzzy(req *EdbInfoCalculateBatchSaveReq, fromEdbInfo *EdbInfo,
 	}
 
 	//计算数据
-	err = refreshAllCalculateLjzzy(to, edbInfo.EdbInfoId, edbInfo.Source, fromEdbInfo, edbInfo.EdbCode, "", "")
+	err = refreshAllCalculateLjzzy(to, edbInfo.EdbInfoId, edbInfo.Source, edbInfo.SubSource, fromEdbInfo, edbInfo.EdbCode, "", "")
 
 	return
 }
@@ -166,6 +167,7 @@ func EditCalculateLjzzy(edbInfo *EdbInfo, req *EdbInfoCalculateBatchEditReq, fro
 			Sort:                      1,
 			CreateTime:                time.Now(),
 			ModifyTime:                time.Now(),
+			FromSubSource:             fromEdbInfo.SubSource,
 		}
 		_, err = to.Insert(calculateMappingItem)
 		if err != nil {
@@ -174,13 +176,13 @@ func EditCalculateLjzzy(edbInfo *EdbInfo, req *EdbInfoCalculateBatchEditReq, fro
 	}
 
 	//计算数据
-	err = refreshAllCalculateLjzzy(to, edbInfo.EdbInfoId, edbInfo.Source, fromEdbInfo, edbInfo.EdbCode, "", "")
+	err = refreshAllCalculateLjzzy(to, edbInfo.EdbInfoId, edbInfo.Source, edbInfo.SubSource, fromEdbInfo, edbInfo.EdbCode, "", "")
 
 	return
 }
 
 // RefreshAllCalculateLjzzy 刷新全部累计值转月数据
-func RefreshAllCalculateLjzzy(edbInfoId, source int, fromEdbInfo *EdbInfo, edbCode, startDate, endDate string) (err error) {
+func RefreshAllCalculateLjzzy(edbInfoId, source, subSource int, fromEdbInfo *EdbInfo, edbCode, startDate, endDate string) (err error) {
 	o := orm.NewOrm()
 	to, err := o.Begin()
 	if err != nil {
@@ -196,12 +198,12 @@ func RefreshAllCalculateLjzzy(edbInfoId, source int, fromEdbInfo *EdbInfo, edbCo
 	}()
 
 	// 计算数据
-	err = refreshAllCalculateLjzzy(to, edbInfoId, source, fromEdbInfo, edbCode, startDate, endDate)
+	err = refreshAllCalculateLjzzy(to, edbInfoId, source, subSource, fromEdbInfo, edbCode, startDate, endDate)
 
 	return
 }
 
-func refreshAllCalculateLjzzy(to orm.TxOrmer, edbInfoId, source int, fromEdbInfo *EdbInfo, edbCode, startDate, endDate string) (err error) {
+func refreshAllCalculateLjzzy(to orm.TxOrmer, edbInfoId, source, subSource int, fromEdbInfo *EdbInfo, edbCode, startDate, endDate string) (err error) {
 	edbInfoIdStr := strconv.Itoa(edbInfoId)
 	//计算数据
 	var condition string
@@ -218,7 +220,7 @@ func refreshAllCalculateLjzzy(to orm.TxOrmer, edbInfoId, source int, fromEdbInfo
 	//	pars = append(pars, endDate)
 	//}
 
-	dataList, err := GetEdbDataListAllByTo(to, condition, pars, fromEdbInfo.Source, 1)
+	dataList, err := GetEdbDataListAllByTo(to, condition, pars, fromEdbInfo.Source, fromEdbInfo.SubSource, 1)
 	if err != nil {
 		return err
 	}
@@ -248,7 +250,7 @@ func refreshAllCalculateLjzzy(to orm.TxOrmer, edbInfoId, source int, fromEdbInfo
 	var isAdd bool
 	//获取指标所有数据
 	existDataList := make([]*EdbData, 0)
-	dataTableName := GetEdbDataTableName(source)
+	dataTableName := GetEdbDataTableName(source, subSource)
 	sql := `SELECT * FROM %s WHERE edb_info_id=? `
 	sql = fmt.Sprintf(sql, dataTableName)
 	_, err = to.Raw(sql, edbInfoId).QueryRows(&existDataList)

+ 13 - 11
models/edb_data_calculate_nh.go

@@ -65,6 +65,7 @@ func AddCalculateNh(req *EdbInfoCalculateBatchSaveReq, fromEdbInfo *EdbInfo, edb
 			calculateMappingItem.FromTag = ""
 			calculateMappingItem.Source = edbInfo.Source
 			calculateMappingItem.SourceName = edbInfo.SourceName
+			calculateMappingItem.FromSubSource = fromEdbInfo.SubSource
 			_, err = to.Insert(calculateMappingItem)
 			if err != nil {
 				return
@@ -75,7 +76,7 @@ func AddCalculateNh(req *EdbInfoCalculateBatchSaveReq, fromEdbInfo *EdbInfo, edb
 		if err != nil {
 			return
 		}
-		dataTableName := GetEdbDataTableName(utils.DATA_SOURCE_CALCULATE_NH)
+		dataTableName := GetEdbDataTableName(utils.DATA_SOURCE_CALCULATE_NH, utils.DATA_SUB_SOURCE_EDB)
 		fmt.Println("dataTableName:" + dataTableName)
 		deleteSql := ` DELETE FROM %s WHERE edb_info_id=? `
 		deleteSql = fmt.Sprintf(deleteSql, dataTableName)
@@ -86,7 +87,7 @@ func AddCalculateNh(req *EdbInfoCalculateBatchSaveReq, fromEdbInfo *EdbInfo, edb
 	}
 
 	//计算数据
-	err = refreshAllCalculateNh(to, edbInfo.EdbInfoId, edbInfo.Source, fromEdbInfo, edbInfo.EdbCode)
+	err = refreshAllCalculateNh(to, edbInfo.EdbInfoId, edbInfo.Source, edbInfo.SubSource, fromEdbInfo, edbInfo.EdbCode)
 
 	return
 }
@@ -143,7 +144,7 @@ func EditCalculateNh(edbInfo *EdbInfo, req *EdbInfoCalculateBatchEditReq, fromEd
 		return
 	}
 	//清空原有数据
-	tableName := GetEdbDataTableName(edbInfo.Source)
+	tableName := GetEdbDataTableName(edbInfo.Source, edbInfo.SubSource)
 	sql = ` DELETE FROM ` + tableName + ` WHERE edb_info_id = ? `
 	_, err = to.Raw(sql, edbInfo.EdbInfoId).Exec()
 	if err != nil {
@@ -166,6 +167,7 @@ func EditCalculateNh(edbInfo *EdbInfo, req *EdbInfoCalculateBatchEditReq, fromEd
 			Sort:                      1,
 			CreateTime:                time.Now(),
 			ModifyTime:                time.Now(),
+			FromSubSource:             fromEdbInfo.SubSource,
 		}
 		_, err = to.Insert(calculateMappingItem)
 		if err != nil {
@@ -174,12 +176,12 @@ func EditCalculateNh(edbInfo *EdbInfo, req *EdbInfoCalculateBatchEditReq, fromEd
 	}
 
 	//计算数据
-	err = refreshAllCalculateNh(to, edbInfo.EdbInfoId, edbInfo.Source, fromEdbInfo, edbInfo.EdbCode)
+	err = refreshAllCalculateNh(to, edbInfo.EdbInfoId, edbInfo.Source, edbInfo.SubSource, fromEdbInfo, edbInfo.EdbCode)
 
 	return
 }
 
-func RefreshAllCalculateNh(edbInfoId, source int, fromEdbInfo *EdbInfo, edbCode string) (err error) {
+func RefreshAllCalculateNh(edbInfoId, source, subSource int, fromEdbInfo *EdbInfo, edbCode string) (err error) {
 	o := orm.NewOrm()
 	to, err := o.Begin()
 	if err != nil {
@@ -195,18 +197,18 @@ func RefreshAllCalculateNh(edbInfoId, source int, fromEdbInfo *EdbInfo, edbCode
 	}()
 
 	// 计算数据
-	err = refreshAllCalculateNh(to, edbInfoId, source, fromEdbInfo, edbCode)
+	err = refreshAllCalculateNh(to, edbInfoId, source, subSource, fromEdbInfo, edbCode)
 
 	return
 }
 
 // refreshAllCalculateNh 刷新年化数据
-func refreshAllCalculateNh(to orm.TxOrmer, edbInfoId, source int, fromEdbInfo *EdbInfo, edbCode string) (err error) {
+func refreshAllCalculateNh(to orm.TxOrmer, edbInfoId, source, subSource int, fromEdbInfo *EdbInfo, edbCode string) (err error) {
 	edbInfoIdStr := strconv.Itoa(edbInfoId)
-	tableName := GetEdbDataTableName(utils.DATA_SOURCE_CALCULATE_NH)
+	tableName := GetEdbDataTableName(utils.DATA_SOURCE_CALCULATE_NH, utils.DATA_SUB_SOURCE_EDB)
 
 	//获取年化指标所有数据
-	existDataList, err := GetAllEdbDataListByTo(to, edbInfoId, source)
+	existDataList, err := GetAllEdbDataListByTo(to, edbInfoId, source, subSource)
 	if err != nil {
 		return
 	}
@@ -225,7 +227,7 @@ func refreshAllCalculateNh(to orm.TxOrmer, edbInfoId, source int, fromEdbInfo *E
 	pars = append(pars, fromEdbInfo.EdbInfoId)
 
 	//获取来源指标的数据
-	fromDataList, err := GetEdbDataListAllByTo(to, condition, pars, fromEdbInfo.Source, 1)
+	fromDataList, err := GetEdbDataListAllByTo(to, condition, pars, fromEdbInfo.Source, fromEdbInfo.SubSource, 1)
 	if err != nil {
 		return err
 	}
@@ -329,7 +331,7 @@ func refreshAllCalculateNh(to orm.TxOrmer, edbInfoId, source int, fromEdbInfo *E
 			existVal, _ := existValDeci.Round(4).Float64()
 			// 判断年化数据的值 与 当前计算出来的结果, 如果两个数据结果不相等的话,那么就修改咯
 			if existVal != currVal {
-				err = ModifyEdbDataById(source, existData.EdbDataId, fmt.Sprint(currVal))
+				err = ModifyEdbDataById(source, subSource, existData.EdbDataId, fmt.Sprint(currVal))
 				if err != nil {
 					return err
 				}

+ 11 - 5
models/edb_data_calculate_nhcc.go

@@ -91,7 +91,7 @@ func AddCalculateNhcc(req *EdbInfoCalculateBatchSaveReq, firstEdbInfo, secondEdb
 		edbInfo = tmpEdbInfo
 
 		//删除指标数据
-		dataTableName := GetEdbDataTableName(utils.DATA_SOURCE_CALCULATE_NHCC)
+		dataTableName := GetEdbDataTableName(utils.DATA_SOURCE_CALCULATE_NHCC, utils.DATA_SUB_SOURCE_EDB)
 		fmt.Println("dataTableName:" + dataTableName)
 		deleteSql := ` DELETE FROM %s WHERE edb_info_id=? `
 		deleteSql = fmt.Sprintf(deleteSql, dataTableName)
@@ -126,6 +126,7 @@ func AddCalculateNhcc(req *EdbInfoCalculateBatchSaveReq, firstEdbInfo, secondEdb
 			Sort:                      1,
 			CreateTime:                time.Now(),
 			ModifyTime:                time.Now(),
+			FromSubSource:             firstEdbInfo.SubSource,
 		}
 		insertId, tmpErr := to.Insert(existItemA)
 		if tmpErr != nil {
@@ -153,6 +154,7 @@ func AddCalculateNhcc(req *EdbInfoCalculateBatchSaveReq, firstEdbInfo, secondEdb
 			Sort:                      1,
 			CreateTime:                time.Now(),
 			ModifyTime:                time.Now(),
+			FromSubSource:             secondEdbInfo.SubSource,
 		}
 		insertId, tmpErr := to.Insert(existItemB)
 		if tmpErr != nil {
@@ -274,6 +276,7 @@ func EditCalculateNhcc(req *EdbInfoCalculateBatchEditReq, edbInfo, firstEdbInfo,
 					Sort:                      1,
 					CreateTime:                time.Now(),
 					ModifyTime:                time.Now(),
+					FromSubSource:             firstEdbInfo.SubSource,
 				}
 				insertId, tmpErr := to.Insert(existItemA)
 				if tmpErr != nil {
@@ -317,6 +320,7 @@ func EditCalculateNhcc(req *EdbInfoCalculateBatchEditReq, edbInfo, firstEdbInfo,
 				Sort:                      2,
 				CreateTime:                time.Now(),
 				ModifyTime:                time.Now(),
+				FromSubSource:             secondEdbInfo.SubSource,
 			}
 			insertId, tmpErr := to.Insert(existItemB)
 			if tmpErr != nil {
@@ -342,7 +346,7 @@ func EditCalculateNhcc(req *EdbInfoCalculateBatchEditReq, edbInfo, firstEdbInfo,
 	if isNeedCalculateData {
 		// 删除之前所有的指标数据
 
-		tableName := GetEdbDataTableName(edbInfo.Source)
+		tableName := GetEdbDataTableName(edbInfo.Source, edbInfo.SubSource)
 		sql := fmt.Sprintf(` DELETE FROM %s WHERE edb_info_id = ? `, tableName)
 		_, err = to.Raw(sql, edbInfo.EdbInfoId).Exec()
 		if err != nil {
@@ -613,7 +617,7 @@ func refreshAllCalculateNhcc(to orm.TxOrmer, edbInfo *EdbInfo, existItemA, exist
 		removeNum := len(removeDateList)
 		if removeNum > 0 {
 			//如果拼接指标变更了,那么需要删除所有的指标数据
-			tableName := GetEdbDataTableName(edbInfo.Source)
+			tableName := GetEdbDataTableName(edbInfo.Source, edbInfo.SubSource)
 			sql := fmt.Sprintf(` DELETE FROM %s WHERE edb_info_id = ? and data_time in (`+utils.GetOrmInReplace(removeNum)+`) `, tableName)
 			_, err = to.Raw(sql, edbInfo.EdbInfoId, removeDateList).Exec()
 			if err != nil {
@@ -667,6 +671,7 @@ func CalculateComputeCorrelation(req *EdbInfoCalculateBatchSaveReq, firstEdbInfo
 			Sort:                      1,
 			CreateTime:                time.Now(),
 			ModifyTime:                time.Now(),
+			FromSubSource:             firstEdbInfo.SubSource,
 		}
 	}
 
@@ -684,6 +689,7 @@ func CalculateComputeCorrelation(req *EdbInfoCalculateBatchSaveReq, firstEdbInfo
 			Sort:                      1,
 			CreateTime:                time.Now(),
 			ModifyTime:                time.Now(),
+			FromSubSource:             secondEdbInfo.SubSource,
 		}
 	}
 
@@ -748,7 +754,7 @@ func getNhccData(to orm.TxOrmer, existItemA, existItemB *EdbInfoCalculateMapping
 		pars = append(pars, existItemA.FromEdbInfoId)
 
 		//第一个指标的数据列表
-		firstDataList, tmpErr := GetEdbDataListAllByTo(to, condition, pars, existItemA.FromSource, 0)
+		firstDataList, tmpErr := GetEdbDataListAllByTo(to, condition, pars, existItemA.FromSource, existItemA.FromSubSource, 0)
 		if tmpErr != nil {
 			err = tmpErr
 			return
@@ -769,7 +775,7 @@ func getNhccData(to orm.TxOrmer, existItemA, existItemB *EdbInfoCalculateMapping
 		pars = append(pars, existItemB.FromEdbInfoId)
 
 		//第二个指标的数据列表
-		secondDataList, err = GetEdbDataListAllByTo(to, condition, pars, existItemB.FromSource, 0)
+		secondDataList, err = GetEdbDataListAllByTo(to, condition, pars, existItemB.FromSource, existItemB.FromSubSource, 0)
 		if err != nil {
 			return
 		}

+ 11 - 9
models/edb_data_calculate_nszydbpjjs.go

@@ -63,6 +63,7 @@ func AddCalculateNszydpjjs(req *EdbInfoCalculateBatchSaveReq, fromEdbInfo *EdbIn
 			calculateMappingItem.FromTag = ""
 			calculateMappingItem.Source = edbInfo.Source
 			calculateMappingItem.SourceName = edbInfo.SourceName
+			calculateMappingItem.FromSubSource = fromEdbInfo.SubSource
 			_, err = to.Insert(calculateMappingItem)
 			if err != nil {
 				return
@@ -73,7 +74,7 @@ func AddCalculateNszydpjjs(req *EdbInfoCalculateBatchSaveReq, fromEdbInfo *EdbIn
 		if err != nil {
 			return
 		}
-		dataTableName := GetEdbDataTableName(utils.DATA_SOURCE_CALCULATE_NSZYDPJJS)
+		dataTableName := GetEdbDataTableName(utils.DATA_SOURCE_CALCULATE_NSZYDPJJS, utils.DATA_SUB_SOURCE_EDB)
 		deleteSql := ` DELETE FROM %s WHERE edb_info_id=? `
 		deleteSql = fmt.Sprintf(deleteSql, dataTableName)
 		_, err = to.Raw(deleteSql, req.EdbInfoId).Exec()
@@ -83,7 +84,7 @@ func AddCalculateNszydpjjs(req *EdbInfoCalculateBatchSaveReq, fromEdbInfo *EdbIn
 	}
 
 	//计算数据
-	err = refreshAllCalculateNszydpjjs(to, edbInfo.EdbInfoId, edbInfo.Source, formulaInt, fromEdbInfo, edbInfo.EdbCode, "")
+	err = refreshAllCalculateNszydpjjs(to, edbInfo.EdbInfoId, edbInfo.Source, edbInfo.SubSource, formulaInt, fromEdbInfo, edbInfo.EdbCode, "")
 	return
 }
 
@@ -156,6 +157,7 @@ func EditCalculateNszydpjjs(edbInfo *EdbInfo, req *EdbInfoCalculateBatchEditReq,
 				Sort:                      1,
 				CreateTime:                time.Now(),
 				ModifyTime:                time.Now(),
+				FromSubSource:             fromEdbInfo.SubSource,
 			}
 			_, err = to.Insert(calculateMappingItem)
 			if err != nil {
@@ -171,13 +173,13 @@ func EditCalculateNszydpjjs(edbInfo *EdbInfo, req *EdbInfoCalculateBatchEditReq,
 	}
 
 	//计算数据
-	err = refreshAllCalculateNszydpjjs(to, edbInfo.EdbInfoId, edbInfo.Source, formulaInt, fromEdbInfo, edbInfo.EdbCode, "")
+	err = refreshAllCalculateNszydpjjs(to, edbInfo.EdbInfoId, edbInfo.Source, edbInfo.SubSource, formulaInt, fromEdbInfo, edbInfo.EdbCode, "")
 
 	return
 }
 
 // RefreshAllCalculateNszydpjjs 刷新全部N数值移动平均计算
-func RefreshAllCalculateNszydpjjs(edbInfoId, source, formulaInt int, fromEdbInfo *EdbInfo, edbCode, startDate string) (err error) {
+func RefreshAllCalculateNszydpjjs(edbInfoId, source, subSource, formulaInt int, fromEdbInfo *EdbInfo, edbCode, startDate string) (err error) {
 	o := orm.NewOrm()
 	to, err := o.Begin()
 	defer func() {
@@ -191,12 +193,12 @@ func RefreshAllCalculateNszydpjjs(edbInfoId, source, formulaInt int, fromEdbInfo
 	}()
 
 	//计算数据
-	err = refreshAllCalculateNszydpjjs(to, edbInfoId, source, formulaInt, fromEdbInfo, edbCode, startDate)
+	err = refreshAllCalculateNszydpjjs(to, edbInfoId, source, subSource, formulaInt, fromEdbInfo, edbCode, startDate)
 	return
 }
 
 // refreshAllCalculateNszydpjjs 更新全部N数值移动平均计算
-func refreshAllCalculateNszydpjjs(to orm.TxOrmer, edbInfoId, source, formulaInt int, fromEdbInfo *EdbInfo, edbCode, startDate string) (err error) {
+func refreshAllCalculateNszydpjjs(to orm.TxOrmer, edbInfoId, source, subSource, formulaInt int, fromEdbInfo *EdbInfo, edbCode, startDate string) (err error) {
 	edbInfoIdStr := strconv.Itoa(edbInfoId)
 	fmt.Println(edbInfoIdStr)
 	fmt.Println("refreshAllCalculateNszydpjjs startDate:", startDate)
@@ -206,7 +208,7 @@ func refreshAllCalculateNszydpjjs(to orm.TxOrmer, edbInfoId, source, formulaInt
 	condition += " AND edb_info_id=? "
 	pars = append(pars, edbInfoId)
 
-	existDataList, err := GetEdbDataListAllV1ByTo(to, condition, pars, source, 0)
+	existDataList, err := GetEdbDataListAllV1ByTo(to, condition, pars, source, subSource, 0)
 	if err != nil {
 		fmt.Println("existDataList GetEdbDataListAll Err:" + err.Error())
 		return err
@@ -230,7 +232,7 @@ func refreshAllCalculateNszydpjjs(to orm.TxOrmer, edbInfoId, source, formulaInt
 	//}
 
 	//fmt.Println("fromPars:", fromPars)
-	fromDataList, err := GetEdbDataListAllV1ByTo(to, fromCondition, fromPars, fromEdbInfo.Source, 0)
+	fromDataList, err := GetEdbDataListAllV1ByTo(to, fromCondition, fromPars, fromEdbInfo.Source, fromEdbInfo.SubSource, 0)
 	if err != nil {
 		fmt.Println("from GetEdbDataListAll Err:" + err.Error())
 		return err
@@ -245,7 +247,7 @@ func refreshAllCalculateNszydpjjs(to orm.TxOrmer, edbInfoId, source, formulaInt
 
 	addSql := ` INSERT INTO edb_data_calculate_nszydpjjs(edb_info_id,edb_code,data_time,value,create_time,modify_time,data_timestamp) values `
 	var isAdd bool
-	dataTableName := GetEdbDataTableName(source)
+	dataTableName := GetEdbDataTableName(source, subSource)
 	arrLen := len(fromDateArr)
 	existAddDataMap := make(map[string]string)
 	for ak, av := range fromDateArr {

+ 5 - 3
models/edb_data_calculate_percentile.go

@@ -75,6 +75,7 @@ func (obj Percentile) Add(params AddCalculateBatchParams) (edbInfo *EdbInfo, err
 		calculateMappingItem.FromTag = ""
 		calculateMappingItem.Source = edbInfo.Source
 		calculateMappingItem.SourceName = edbInfo.SourceName
+		calculateMappingItem.FromSubSource = fromEdbInfo.SubSource
 		_, err = to.Insert(calculateMappingItem)
 		if err != nil {
 			return
@@ -106,7 +107,7 @@ func (obj Percentile) Edit(params EditCalculateBatchParams) (err error, errMsg s
 			_ = to.Commit()
 		}
 	}()
-	tableName := GetEdbDataTableName(edbInfo.Source)
+	tableName := GetEdbDataTableName(edbInfo.Source, edbInfo.SubSource)
 
 	oldEdbInfo := *edbInfo
 
@@ -173,6 +174,7 @@ func (obj Percentile) Edit(params EditCalculateBatchParams) (err error, errMsg s
 			Sort:                      1,
 			CreateTime:                time.Now(),
 			ModifyTime:                time.Now(),
+			FromSubSource:             fromEdbInfo.SubSource,
 		}
 		_, err = to.Insert(calculateMappingItem)
 		if err != nil {
@@ -243,7 +245,7 @@ type PercentileConfig struct {
 // refresh 刷新
 func (obj Percentile) refresh(to orm.TxOrmer, edbInfo, fromEdbInfo *EdbInfo, edbCode string) (err error, errMsg string) {
 	edbInfoId := edbInfo.EdbInfoId
-	dataTableName := GetEdbDataTableName(edbInfo.Source)
+	dataTableName := GetEdbDataTableName(edbInfo.Source, edbInfo.SubSource)
 	edbInfoIdStr := strconv.Itoa(edbInfoId)
 
 	var percentileConfig PercentileConfig
@@ -379,7 +381,7 @@ func (obj Percentile) getPercentileData(fromEdbInfo *EdbInfo, calculateValue int
 		pars = append(pars, fromEdbInfo.EdbInfoId)
 
 		//获取来源指标的数据
-		dataList, err = GetEdbDataListAll(condition, pars, fromEdbInfo.Source, 1)
+		dataList, err = GetEdbDataListAll(condition, pars, fromEdbInfo.Source, fromEdbInfo.SubSource, 1)
 	case 1:
 		dataList, err = GetPredictEdbDataListAllByStartDate(fromEdbInfo, 1, "")
 	default:

+ 5 - 3
models/edb_data_calculate_rjz.go

@@ -66,6 +66,7 @@ func AddCalculateRjz(req *EdbInfoCalculateBatchSaveReq, fromEdbInfo *EdbInfo, ed
 			calculateMappingItem.FromTag = ""
 			calculateMappingItem.Source = edbInfo.Source
 			calculateMappingItem.SourceName = edbInfo.SourceName
+			calculateMappingItem.FromSubSource = fromEdbInfo.SubSource
 			_, err = to.Insert(calculateMappingItem)
 			if err != nil {
 				return
@@ -77,7 +78,7 @@ func AddCalculateRjz(req *EdbInfoCalculateBatchSaveReq, fromEdbInfo *EdbInfo, ed
 		if err != nil {
 			return
 		}
-		dataTableName := GetEdbDataTableName(utils.DATA_SOURCE_CALCULATE_RJZ)
+		dataTableName := GetEdbDataTableName(utils.DATA_SOURCE_CALCULATE_RJZ, utils.DATA_SUB_SOURCE_EDB)
 		deleteSql := ` DELETE FROM %s WHERE edb_info_id=? `
 		deleteSql = fmt.Sprintf(deleteSql, dataTableName)
 		_, err = to.Raw(deleteSql, req.EdbInfoId).Exec()
@@ -164,6 +165,7 @@ func EditCalculateRjz(edbInfo *EdbInfo, req *EdbInfoCalculateBatchEditReq, fromE
 			Sort:                      1,
 			CreateTime:                time.Now(),
 			ModifyTime:                time.Now(),
+			FromSubSource:             fromEdbInfo.SubSource,
 		}
 		_, err = to.Insert(calculateMappingItem)
 		if err != nil {
@@ -218,7 +220,7 @@ func refreshAllCalculateRjz(to orm.TxOrmer, edbInfoId, source int, fromEdbInfo *
 	//	pars = append(pars, endDate)
 	//}
 
-	dataList, err := GetEdbDataListAll(condition, pars, fromEdbInfo.Source, 0)
+	dataList, err := GetEdbDataListAll(condition, pars, fromEdbInfo.Source, fromEdbInfo.SubSource, 0)
 	if err != nil {
 		return err
 	}
@@ -231,7 +233,7 @@ func refreshAllCalculateRjz(to orm.TxOrmer, edbInfoId, source int, fromEdbInfo *
 	fmt.Println("source:", source)
 	//获取指标所有数据
 	existDataList := make([]*EdbData, 0)
-	dataTableName := GetEdbDataTableName(source)
+	dataTableName := GetEdbDataTableName(source, utils.DATA_SUB_SOURCE_EDB)
 	fmt.Println("dataTableName:", dataTableName)
 	sql := `SELECT * FROM %s WHERE edb_info_id=? `
 	sql = fmt.Sprintf(sql, dataTableName)

+ 4 - 3
models/edb_data_calculate_standard_deviation.go

@@ -74,6 +74,7 @@ func (obj StandardDeviation) Add(params AddCalculateBatchParams) (edbInfo *EdbIn
 		calculateMappingItem.FromTag = ""
 		calculateMappingItem.Source = edbInfo.Source
 		calculateMappingItem.SourceName = edbInfo.SourceName
+		calculateMappingItem.FromSubSource = edbInfo.SubSource
 		_, err = to.Insert(calculateMappingItem)
 		if err != nil {
 			return
@@ -105,7 +106,7 @@ func (obj StandardDeviation) Edit(params EditCalculateBatchParams) (err error, e
 			_ = to.Commit()
 		}
 	}()
-	tableName := GetEdbDataTableName(edbInfo.Source)
+	tableName := GetEdbDataTableName(edbInfo.Source, edbInfo.SubSource)
 
 	oldEdbInfo := *edbInfo
 
@@ -235,7 +236,7 @@ func (obj StandardDeviation) GetEdbType() int {
 
 func (obj StandardDeviation) refresh(to orm.TxOrmer, edbInfo, fromEdbInfo *EdbInfo, edbCode string) (err error) {
 	edbInfoId := edbInfo.EdbInfoId
-	dataTableName := GetEdbDataTableName(edbInfo.Source)
+	dataTableName := GetEdbDataTableName(edbInfo.Source, edbInfo.SubSource)
 	edbInfoIdStr := strconv.Itoa(edbInfoId)
 
 	calculateValue, err := strconv.Atoi(edbInfo.CalculateFormula)
@@ -347,7 +348,7 @@ func (obj StandardDeviation) getStandardDeviationData(fromEdbInfo *EdbInfo, calc
 		pars = append(pars, fromEdbInfo.EdbInfoId)
 
 		//获取来源指标的数据
-		dataList, err = GetEdbDataListAll(condition, pars, fromEdbInfo.Source, 1)
+		dataList, err = GetEdbDataListAll(condition, pars, fromEdbInfo.Source, fromEdbInfo.SubSource, 1)
 	case 1:
 		dataList, err = GetPredictEdbDataListAllByStartDate(fromEdbInfo, 1, "")
 	default:

+ 10 - 8
models/edb_data_calculate_tbz.go

@@ -66,6 +66,7 @@ func AddCalculateTbz(req *EdbInfoCalculateBatchSaveReq, fromEdbInfo *EdbInfo, ed
 			calculateMappingItem.FromTag = ""
 			calculateMappingItem.Source = edbInfo.Source
 			calculateMappingItem.SourceName = edbInfo.SourceName
+			calculateMappingItem.FromSubSource = fromEdbInfo.SubSource
 			_, err = to.Insert(calculateMappingItem)
 			if err != nil {
 				return
@@ -77,7 +78,7 @@ func AddCalculateTbz(req *EdbInfoCalculateBatchSaveReq, fromEdbInfo *EdbInfo, ed
 		if err != nil {
 			return
 		}
-		dataTableName := GetEdbDataTableName(utils.DATA_SOURCE_CALCULATE_TBZ)
+		dataTableName := GetEdbDataTableName(utils.DATA_SOURCE_CALCULATE_TBZ, utils.DATA_SUB_SOURCE_EDB)
 		deleteSql := ` DELETE FROM %s WHERE edb_info_id=? `
 		deleteSql = fmt.Sprintf(deleteSql, dataTableName)
 		_, err = to.Raw(deleteSql, req.EdbInfoId).Exec()
@@ -87,7 +88,7 @@ func AddCalculateTbz(req *EdbInfoCalculateBatchSaveReq, fromEdbInfo *EdbInfo, ed
 	}
 
 	//计算数据
-	err = refreshAllCalculateTbz(to, edbInfo.EdbInfoId, edbInfo.Source, fromEdbInfo, edbCode, "", "")
+	err = refreshAllCalculateTbz(to, edbInfo.EdbInfoId, edbInfo.Source, edbInfo.SubSource, fromEdbInfo, edbCode, "", "")
 
 	return
 }
@@ -164,6 +165,7 @@ func EditCalculateTbz(edbInfo *EdbInfo, req *EdbInfoCalculateBatchEditReq, fromE
 			Sort:                      1,
 			CreateTime:                time.Now(),
 			ModifyTime:                time.Now(),
+			FromSubSource:             fromEdbInfo.SubSource,
 		}
 		_, err = to.Insert(calculateMappingItem)
 		if err != nil {
@@ -172,13 +174,13 @@ func EditCalculateTbz(edbInfo *EdbInfo, req *EdbInfoCalculateBatchEditReq, fromE
 	}
 
 	//计算数据
-	err = refreshAllCalculateTbz(to, edbInfo.EdbInfoId, edbInfo.Source, fromEdbInfo, edbInfo.EdbCode, "", "")
+	err = refreshAllCalculateTbz(to, edbInfo.EdbInfoId, edbInfo.Source, edbInfo.SubSource, fromEdbInfo, edbInfo.EdbCode, "", "")
 
 	return
 }
 
 // RefreshAllCalculateTbz 刷新所有同比值数据
-func RefreshAllCalculateTbz(edbInfoId, source int, fromEdbInfo *EdbInfo, edbCode, startDate, endDate string) (err error) {
+func RefreshAllCalculateTbz(edbInfoId, source, subSource int, fromEdbInfo *EdbInfo, edbCode, startDate, endDate string) (err error) {
 	o := orm.NewOrm()
 	to, err := o.Begin()
 	if err != nil {
@@ -194,12 +196,12 @@ func RefreshAllCalculateTbz(edbInfoId, source int, fromEdbInfo *EdbInfo, edbCode
 	}()
 
 	//计算数据
-	err = refreshAllCalculateTbz(to, edbInfoId, source, fromEdbInfo, edbCode, startDate, endDate)
+	err = refreshAllCalculateTbz(to, edbInfoId, source, subSource, fromEdbInfo, edbCode, startDate, endDate)
 	return
 }
 
 // refreshAllCalculateTbz
-func refreshAllCalculateTbz(to orm.TxOrmer, edbInfoId, source int, fromEdbInfo *EdbInfo, edbCode, startDate, endDate string) (err error) {
+func refreshAllCalculateTbz(to orm.TxOrmer, edbInfoId, source, subSource int, fromEdbInfo *EdbInfo, edbCode, startDate, endDate string) (err error) {
 	edbInfoIdStr := strconv.Itoa(edbInfoId)
 	//计算数据
 
@@ -218,7 +220,7 @@ func refreshAllCalculateTbz(to orm.TxOrmer, edbInfoId, source int, fromEdbInfo *
 	//	pars = append(pars, endDate)
 	//}
 
-	dataList, err := GetEdbDataListAll(condition, pars, fromEdbInfo.Source, 0)
+	dataList, err := GetEdbDataListAll(condition, pars, fromEdbInfo.Source, fromEdbInfo.SubSource, 0)
 	if err != nil {
 		return err
 	}
@@ -231,7 +233,7 @@ func refreshAllCalculateTbz(to orm.TxOrmer, edbInfoId, source int, fromEdbInfo *
 	fmt.Println("source:", source)
 	//获取指标所有数据
 	existDataList := make([]*EdbData, 0)
-	dataTableName := GetEdbDataTableName(source)
+	dataTableName := GetEdbDataTableName(source, subSource)
 	fmt.Println("dataTableName:", dataTableName)
 	sql := `SELECT * FROM %s WHERE edb_info_id=? `
 	sql = fmt.Sprintf(sql, dataTableName)

+ 10 - 8
models/edb_data_calculate_tcz.go

@@ -67,6 +67,7 @@ func AddCalculateTcz(req *EdbInfoCalculateBatchSaveReq, fromEdbInfo *EdbInfo, ed
 			calculateMappingItem.FromTag = ""
 			calculateMappingItem.Source = edbInfo.Source
 			calculateMappingItem.SourceName = edbInfo.SourceName
+			calculateMappingItem.FromSubSource = fromEdbInfo.SubSource
 			_, err = to.Insert(calculateMappingItem)
 			if err != nil {
 				return
@@ -77,7 +78,7 @@ func AddCalculateTcz(req *EdbInfoCalculateBatchSaveReq, fromEdbInfo *EdbInfo, ed
 		if err != nil {
 			return
 		}
-		dataTableName := GetEdbDataTableName(utils.DATA_SOURCE_CALCULATE_TCZ)
+		dataTableName := GetEdbDataTableName(utils.DATA_SOURCE_CALCULATE_TCZ, utils.DATA_SUB_SOURCE_EDB)
 		fmt.Println("dataTableName:", dataTableName)
 		deleteSql := ` DELETE FROM %s WHERE edb_info_id=? `
 		deleteSql = fmt.Sprintf(deleteSql, dataTableName)
@@ -88,7 +89,7 @@ func AddCalculateTcz(req *EdbInfoCalculateBatchSaveReq, fromEdbInfo *EdbInfo, ed
 	}
 
 	//计算数据
-	err = refreshAllCalculateTcz(to, edbInfo.EdbInfoId, edbInfo.Source, fromEdbInfo, edbInfo.EdbCode, "", "")
+	err = refreshAllCalculateTcz(to, edbInfo.EdbInfoId, edbInfo.Source, edbInfo.SubSource, fromEdbInfo, edbInfo.EdbCode, "", "")
 
 	return
 }
@@ -167,6 +168,7 @@ func EditCalculateTcz(edbInfo *EdbInfo, req *EdbInfoCalculateBatchEditReq, fromE
 			Sort:                      1,
 			CreateTime:                time.Now(),
 			ModifyTime:                time.Now(),
+			FromSubSource:             fromEdbInfo.SubSource,
 		}
 		_, err = to.Insert(calculateMappingItem)
 		if err != nil {
@@ -175,13 +177,13 @@ func EditCalculateTcz(edbInfo *EdbInfo, req *EdbInfoCalculateBatchEditReq, fromE
 	}
 
 	//计算数据
-	err = refreshAllCalculateTcz(to, edbInfo.EdbInfoId, edbInfo.Source, fromEdbInfo, edbInfo.EdbCode, "", "")
+	err = refreshAllCalculateTcz(to, edbInfo.EdbInfoId, edbInfo.Source, edbInfo.SubSource, fromEdbInfo, edbInfo.EdbCode, "", "")
 
 	return
 }
 
 // RefreshAllCalculateTcz 刷新全部同差值数据
-func RefreshAllCalculateTcz(edbInfoId, source int, fromEdbInfo *EdbInfo, edbCode, startDate, endDate string) (err error) {
+func RefreshAllCalculateTcz(edbInfoId, source, subSource int, fromEdbInfo *EdbInfo, edbCode, startDate, endDate string) (err error) {
 	o := orm.NewOrm()
 	to, err := o.Begin()
 	if err != nil {
@@ -196,12 +198,12 @@ func RefreshAllCalculateTcz(edbInfoId, source int, fromEdbInfo *EdbInfo, edbCode
 		}
 	}()
 
-	err = refreshAllCalculateTcz(to, edbInfoId, source, fromEdbInfo, edbCode, startDate, endDate)
+	err = refreshAllCalculateTcz(to, edbInfoId, source, subSource, fromEdbInfo, edbCode, startDate, endDate)
 
 	return
 }
 
-func refreshAllCalculateTcz(to orm.TxOrmer, edbInfoId, source int, fromEdbInfo *EdbInfo, edbCode, startDate, endDate string) (err error) {
+func refreshAllCalculateTcz(to orm.TxOrmer, edbInfoId, source, subSource int, fromEdbInfo *EdbInfo, edbCode, startDate, endDate string) (err error) {
 	edbInfoIdStr := strconv.Itoa(edbInfoId)
 	//计算数据
 
@@ -220,7 +222,7 @@ func refreshAllCalculateTcz(to orm.TxOrmer, edbInfoId, source int, fromEdbInfo *
 	//	pars = append(pars, endDate)
 	//}
 
-	dataList, err := GetEdbDataListAllByTo(to, condition, pars, fromEdbInfo.Source, 0)
+	dataList, err := GetEdbDataListAllByTo(to, condition, pars, fromEdbInfo.Source, fromEdbInfo.SubSource, 0)
 	if err != nil {
 		return err
 	}
@@ -232,7 +234,7 @@ func refreshAllCalculateTcz(to orm.TxOrmer, edbInfoId, source int, fromEdbInfo *
 	}
 	//获取指标所有数据
 	existDataList := make([]*EdbData, 0)
-	dataTableName := GetEdbDataTableName(source)
+	dataTableName := GetEdbDataTableName(source, subSource)
 	sql := `SELECT * FROM %s WHERE edb_info_id=? `
 	sql = fmt.Sprintf(sql, dataTableName)
 	_, err = to.Raw(sql, edbInfoId).QueryRows(&existDataList)

+ 10 - 8
models/edb_data_calculate_time_shift.go

@@ -68,6 +68,7 @@ func AddCalculateTimeShift(req *EdbInfoCalculateBatchSaveReq, fromEdbInfo *EdbIn
 			calculateMappingItem.FromTag = ""
 			calculateMappingItem.Source = edbInfo.Source
 			calculateMappingItem.SourceName = edbInfo.SourceName
+			calculateMappingItem.FromSubSource = edbInfo.SubSource
 			_, err = to.Insert(calculateMappingItem)
 			if err != nil {
 				return
@@ -78,7 +79,7 @@ func AddCalculateTimeShift(req *EdbInfoCalculateBatchSaveReq, fromEdbInfo *EdbIn
 		if err != nil {
 			return
 		}
-		dataTableName := GetEdbDataTableName(utils.DATA_SOURCE_CALCULATE_TIME_SHIFT)
+		dataTableName := GetEdbDataTableName(utils.DATA_SOURCE_CALCULATE_TIME_SHIFT, utils.DATA_SUB_SOURCE_EDB)
 		fmt.Println("dataTableName:" + dataTableName)
 		deleteSql := ` DELETE FROM %s WHERE edb_info_id=? `
 		deleteSql = fmt.Sprintf(deleteSql, dataTableName)
@@ -91,7 +92,7 @@ func AddCalculateTimeShift(req *EdbInfoCalculateBatchSaveReq, fromEdbInfo *EdbIn
 	formulaInt, _ := strconv.Atoi(req.Formula)
 
 	//计算数据
-	err = refreshAllCalculateTimeShift(to, edbInfo.EdbInfoId, edbInfo.Source, formulaInt, edbInfo.MoveType, fromEdbInfo, edbInfo.EdbCode, "", "", edbInfo.MoveFrequency)
+	err = refreshAllCalculateTimeShift(to, edbInfo.EdbInfoId, edbInfo.Source, edbInfo.SubSource, formulaInt, edbInfo.MoveType, fromEdbInfo, edbInfo.EdbCode, "", "", edbInfo.MoveFrequency)
 
 	return
 }
@@ -168,6 +169,7 @@ func EditCalculateTimeShift(edbInfo *EdbInfo, req *EdbInfoCalculateBatchEditReq,
 					Sort:                      1,
 					CreateTime:                time.Now(),
 					ModifyTime:                time.Now(),
+					FromSubSource:             fromEdbInfo.SubSource,
 				}
 				_, err = to.Insert(calculateMappingItem)
 				if err != nil {
@@ -185,13 +187,13 @@ func EditCalculateTimeShift(edbInfo *EdbInfo, req *EdbInfoCalculateBatchEditReq,
 
 		//计算数据
 		formulaInt, _ := strconv.Atoi(req.Formula)
-		err = refreshAllCalculateTimeShift(to, edbInfo.EdbInfoId, edbInfo.Source, formulaInt, edbInfo.MoveType, fromEdbInfo, edbInfo.EdbCode, "", "", edbInfo.MoveFrequency)
+		err = refreshAllCalculateTimeShift(to, edbInfo.EdbInfoId, edbInfo.Source, edbInfo.SubSource, formulaInt, edbInfo.MoveType, fromEdbInfo, edbInfo.EdbCode, "", "", edbInfo.MoveFrequency)
 	}
 	return
 }
 
 // RefreshAllCalculateTimeShift 刷新所有时间移位数据
-func RefreshAllCalculateTimeShift(edbInfoId, source, formulaInt, moveType int, fromEdbInfo *EdbInfo, edbCode, startDate, endDate, moveFrequency string) (err error) {
+func RefreshAllCalculateTimeShift(edbInfoId, source, subSource, formulaInt, moveType int, fromEdbInfo *EdbInfo, edbCode, startDate, endDate, moveFrequency string) (err error) {
 	o := orm.NewOrm()
 	to, err := o.Begin()
 	if err != nil {
@@ -207,13 +209,13 @@ func RefreshAllCalculateTimeShift(edbInfoId, source, formulaInt, moveType int, f
 	}()
 
 	//计算数据
-	err = refreshAllCalculateTimeShift(to, edbInfoId, source, formulaInt, moveType, fromEdbInfo, edbCode, startDate, endDate, moveFrequency)
+	err = refreshAllCalculateTimeShift(to, edbInfoId, source, subSource, formulaInt, moveType, fromEdbInfo, edbCode, startDate, endDate, moveFrequency)
 
 	return
 }
 
 // refreshAllCalculateTimeShift 刷新所有时间移位数据
-func refreshAllCalculateTimeShift(to orm.TxOrmer, edbInfoId, source, formulaInt, moveType int, fromEdbInfo *EdbInfo, edbCode, startDate, endDate, moveFrequency string) (err error) {
+func refreshAllCalculateTimeShift(to orm.TxOrmer, edbInfoId, source, subSource, formulaInt, moveType int, fromEdbInfo *EdbInfo, edbCode, startDate, endDate, moveFrequency string) (err error) {
 	edbInfoIdStr := strconv.Itoa(edbInfoId)
 
 	//计算数据
@@ -251,7 +253,7 @@ func refreshAllCalculateTimeShift(to orm.TxOrmer, edbInfoId, source, formulaInt,
 		shiftDay = -shiftDay
 	}
 
-	dataList, err := GetEdbDataListAllByTo(to, condition, pars, fromEdbInfo.Source, 0)
+	dataList, err := GetEdbDataListAllByTo(to, condition, pars, fromEdbInfo.Source, fromEdbInfo.SubSource, 0)
 	if err != nil {
 		return err
 	}
@@ -264,7 +266,7 @@ func refreshAllCalculateTimeShift(to orm.TxOrmer, edbInfoId, source, formulaInt,
 	fmt.Println("source:", source)
 	//获取指标所有数据
 	existDataList := make([]*EdbData, 0)
-	dataTableName := GetEdbDataTableName(source)
+	dataTableName := GetEdbDataTableName(source, subSource)
 	fmt.Println("dataTableName:", dataTableName)
 	sql := `SELECT * FROM %s WHERE edb_info_id=? `
 	sql = fmt.Sprintf(sql, dataTableName)

+ 1 - 1
models/edb_data_calculate_zdyfx.go

@@ -190,7 +190,7 @@ type UpdateEdbDataStr struct {
 
 func (obj CustomAnalysis) refresh(to orm.TxOrmer, edbInfo *EdbInfo, dateList []string, dataList []float64) (err error) {
 	edbInfoId := edbInfo.EdbInfoId
-	dataTableName := GetEdbDataTableName(edbInfo.Source)
+	dataTableName := GetEdbDataTableName(edbInfo.Source, edbInfo.SubSource)
 	edbInfoIdStr := strconv.Itoa(edbInfoId)
 
 	if len(dateList) != len(dataList) {

+ 9 - 5
models/edb_data_calculate_zjpj.go

@@ -82,7 +82,7 @@ func AddCalculateZjpj(req *EdbInfoCalculateBatchSaveReq, firstEdbInfo, secondEdb
 		edbInfo = tmpEdbInfo
 
 		//删除指标数据
-		dataTableName := GetEdbDataTableName(utils.DATA_SOURCE_CALCULATE_ZJPJ)
+		dataTableName := GetEdbDataTableName(utils.DATA_SOURCE_CALCULATE_ZJPJ, utils.DATA_SUB_SOURCE_EDB)
 		fmt.Println("dataTableName:" + dataTableName)
 		deleteSql := ` DELETE FROM %s WHERE edb_info_id=? `
 		deleteSql = fmt.Sprintf(deleteSql, dataTableName)
@@ -116,6 +116,7 @@ func AddCalculateZjpj(req *EdbInfoCalculateBatchSaveReq, firstEdbInfo, secondEdb
 			Sort:                      1,
 			CreateTime:                time.Now(),
 			ModifyTime:                time.Now(),
+			FromSubSource:             firstEdbInfo.SubSource,
 		}
 		insertId, tmpErr := to.Insert(existItemA)
 		if tmpErr != nil {
@@ -142,6 +143,7 @@ func AddCalculateZjpj(req *EdbInfoCalculateBatchSaveReq, firstEdbInfo, secondEdb
 			Sort:                      1,
 			CreateTime:                time.Now(),
 			ModifyTime:                time.Now(),
+			FromSubSource:             secondEdbInfo.SubSource,
 		}
 		insertId, tmpErr := to.Insert(existItemB)
 		if tmpErr != nil {
@@ -245,6 +247,7 @@ func EditCalculateZjpj(req *EdbInfoCalculateBatchEditReq, edbInfo, firstEdbInfo,
 					Sort:                      1,
 					CreateTime:                time.Now(),
 					ModifyTime:                time.Now(),
+					FromSubSource:             firstEdbInfo.SubSource,
 				}
 				insertId, tmpErr := to.Insert(existItemA)
 				if tmpErr != nil {
@@ -286,6 +289,7 @@ func EditCalculateZjpj(req *EdbInfoCalculateBatchEditReq, edbInfo, firstEdbInfo,
 				Sort:                      2,
 				CreateTime:                time.Now(),
 				ModifyTime:                time.Now(),
+				FromSubSource:             secondEdbInfo.SubSource,
 			}
 			insertId, tmpErr := to.Insert(existItemB)
 			if tmpErr != nil {
@@ -302,7 +306,7 @@ func EditCalculateZjpj(req *EdbInfoCalculateBatchEditReq, edbInfo, firstEdbInfo,
 	if isNeedCalculateData {
 		// 删除之前所有的指标数据
 
-		tableName := GetEdbDataTableName(edbInfo.Source)
+		tableName := GetEdbDataTableName(edbInfo.Source, edbInfo.SubSource)
 		sql := fmt.Sprintf(` DELETE FROM %s WHERE edb_info_id = ? `, tableName)
 		_, err = to.Raw(sql, edbInfo.EdbInfoId).Exec()
 		if err != nil {
@@ -394,7 +398,7 @@ func refreshAllCalculateZjpj(to orm.TxOrmer, edbInfo *EdbInfo, existItemA, exist
 		pars = append(pars, edbInfo.CalculateFormula, existItemA.FromEdbInfoId)
 
 		//第一个指标的数据列表
-		firstDataList, tmpErr := GetEdbDataListAllByTo(to, condition, pars, existItemA.FromSource, 0)
+		firstDataList, tmpErr := GetEdbDataListAllByTo(to, condition, pars, existItemA.FromSource, existItemA.FromSubSource, 0)
 		if tmpErr != nil {
 			return tmpErr
 		}
@@ -440,7 +444,7 @@ func refreshAllCalculateZjpj(to orm.TxOrmer, edbInfo *EdbInfo, existItemA, exist
 		pars = append(pars, edbInfo.CalculateFormula, existItemB.FromEdbInfoId)
 
 		//第二个指标的数据列表
-		secondDataList, tmpErr := GetEdbDataListAllByTo(to, condition, pars, existItemB.FromSource, 0)
+		secondDataList, tmpErr := GetEdbDataListAllByTo(to, condition, pars, existItemB.FromSource, existItemB.FromSubSource, 0)
 		if tmpErr != nil {
 			return tmpErr
 		}
@@ -491,7 +495,7 @@ func refreshAllCalculateZjpj(to orm.TxOrmer, edbInfo *EdbInfo, existItemA, exist
 			removeDateStr := strings.Join(removeDateList, `","`)
 			removeDateStr = `"` + removeDateStr + `"`
 			//如果拼接指标变更了,那么需要删除所有的指标数据
-			tableName := GetEdbDataTableName(edbInfo.Source)
+			tableName := GetEdbDataTableName(edbInfo.Source, edbInfo.SubSource)
 			sql := fmt.Sprintf(` DELETE FROM %s WHERE edb_info_id = ? and data_time in (%s) `, tableName, removeDateStr)
 
 			_, err = to.Raw(sql, edbInfo.EdbInfoId).Exec()

+ 5 - 3
models/edb_data_calculate_zsxy.go

@@ -73,6 +73,7 @@ func (obj ExponentialSmoothing) Add(params AddCalculateBatchParams) (edbInfo *Ed
 		calculateMappingItem.FromTag = ""
 		calculateMappingItem.Source = edbInfo.Source
 		calculateMappingItem.SourceName = edbInfo.SourceName
+		calculateMappingItem.FromSubSource = fromEdbInfo.SubSource
 		_, err = to.Insert(calculateMappingItem)
 		if err != nil {
 			return
@@ -103,7 +104,7 @@ func (obj ExponentialSmoothing) Edit(params EditCalculateBatchParams) (err error
 			_ = to.Commit()
 		}
 	}()
-	tableName := GetEdbDataTableName(edbInfo.Source)
+	tableName := GetEdbDataTableName(edbInfo.Source, edbInfo.SubSource)
 
 	oldEdbInfo := *edbInfo
 
@@ -170,6 +171,7 @@ func (obj ExponentialSmoothing) Edit(params EditCalculateBatchParams) (err error
 			Sort:                      1,
 			CreateTime:                time.Now(),
 			ModifyTime:                time.Now(),
+			FromSubSource:             fromEdbInfo.SubSource,
 		}
 		_, err = to.Insert(calculateMappingItem)
 		if err != nil {
@@ -233,7 +235,7 @@ func (obj ExponentialSmoothing) GetEdbType() int {
 
 func (obj ExponentialSmoothing) refresh(to orm.TxOrmer, edbInfo, fromEdbInfo *EdbInfo, edbCode string) (err error) {
 	edbInfoId := edbInfo.EdbInfoId
-	dataTableName := GetEdbDataTableName(edbInfo.Source)
+	dataTableName := GetEdbDataTableName(edbInfo.Source, edbInfo.SubSource)
 	edbInfoIdStr := strconv.Itoa(edbInfoId)
 
 	// 获取标准差图表的指标数据
@@ -345,7 +347,7 @@ func CalculateExponentialSmoothingData(fromEdbInfo *EdbInfo, strAlpha string) (n
 		pars = append(pars, fromEdbInfo.EdbInfoId)
 
 		//获取来源指标的数据
-		dataList, err = GetEdbDataListAll(condition, pars, fromEdbInfo.Source, 1)
+		dataList, err = GetEdbDataListAll(condition, pars, fromEdbInfo.Source, fromEdbInfo.SubSource, 1)
 	case 1:
 		dataList, err = GetPredictEdbDataListAllByStartDate(fromEdbInfo, 1, "")
 	default:

+ 6 - 2
models/edb_data_table.go

@@ -5,12 +5,16 @@ import (
 )
 
 // GetEdbDataTableName 指标数据->存储表
-func GetEdbDataTableName(source int) (tableName string) {
+func GetEdbDataTableName(source, subSource int) (tableName string) {
 	switch source {
 	case utils.DATA_SOURCE_THS:
 		tableName = "edb_data_ths"
 	case utils.DATA_SOURCE_WIND:
-		tableName = "edb_data_wind"
+		if subSource == utils.DATA_SUB_SOURCE_DATE {
+			tableName = "edb_data_wind_wsd"
+		} else {
+			tableName = "edb_data_wind"
+		}
 	case utils.DATA_SOURCE_PB, utils.DATA_SOURCE_PB_FINANCE:
 		tableName = "edb_data_pb"
 	case utils.DATA_SOURCE_CALCULATE:

+ 124 - 29
models/edb_info.go

@@ -49,6 +49,14 @@ type EdbInfo struct {
 	MaxEmptyType     int     `description:"MAX、MIN公式空值处理类型(1、等于0;2、跳过空值)"`
 	DataDateType     string  `orm:"column(data_date_type);size(255);null;default(交易日)"`
 	ManualSave       int     `description:"是否有手动保存过上下限: 0-否; 1-是"`
+	TerminalCode     string  `description:"终端编码,用于配置在机器上"`
+	DataUpdateTime   string  `description:"最近一次数据发生变化的时间"`
+	ErDataUpdateDate string  `description:"本次更新,数据发生变化的最早日期"`
+	SourceIndexName  string  `description:"数据源中的指标名称"`
+	SubSource        int     `description:"子数据来源:0:经济数据库,1:日期序列"`
+	SubSourceName    string  `description:"子数据来源名称"`
+	IndicatorCode    string  `description:"指标代码"`
+	StockCode        string  `description:"证券代码"`
 }
 
 func (e *EdbInfo) Add() (err error) {
@@ -164,13 +172,14 @@ type EdbInfoSearchData struct {
 	EdbDataId int     `description:"数据ID"`
 	DataTime  string  `description:"数据日期"`
 	Value     float64 `description:"数据"`
+	EdbCode   string  `description:"指标编码"`
 }
 
 // GetEdbDataListAll 获取指标数据列表 order:1升序,其余值为降序
-func GetEdbDataListAll(condition string, pars []interface{}, source, order int) (item []*EdbInfoSearchData, err error) {
+func GetEdbDataListAll(condition string, pars []interface{}, source, subSource, order int) (item []*EdbInfoSearchData, err error) {
 	o := orm.NewOrm()
 	sql := ``
-	tableName := GetEdbDataTableName(source)
+	tableName := GetEdbDataTableName(source, subSource)
 	sql = ` SELECT * FROM %s WHERE 1=1 `
 	sql = fmt.Sprintf(sql, tableName)
 
@@ -187,9 +196,9 @@ func GetEdbDataListAll(condition string, pars []interface{}, source, order int)
 }
 
 // GetEdbDataListAllByTo 根据事务链接获取指标数据列表 order:1升序,其余值为降序
-func GetEdbDataListAllByTo(to orm.TxOrmer, condition string, pars []interface{}, source, order int) (item []*EdbInfoSearchData, err error) {
+func GetEdbDataListAllByTo(to orm.TxOrmer, condition string, pars []interface{}, source, subSource, order int) (item []*EdbInfoSearchData, err error) {
 	sql := ``
-	tableName := GetEdbDataTableName(source)
+	tableName := GetEdbDataTableName(source, subSource)
 	sql = ` SELECT * FROM %s WHERE 1=1 `
 	sql = fmt.Sprintf(sql, tableName)
 
@@ -216,10 +225,10 @@ type EdbInfoMaxAndMinInfo struct {
 }
 
 // GetEdbInfoMaxAndMinInfo 获取指标的最新数据记录信息
-func GetEdbInfoMaxAndMinInfo(source int, edbCode string) (item *EdbInfoMaxAndMinInfo, err error) {
+func GetEdbInfoMaxAndMinInfo(source, subSource int, edbCode string) (item *EdbInfoMaxAndMinInfo, err error) {
 	o := orm.NewOrm()
 	sql := ``
-	tableName := GetEdbDataTableName(source)
+	tableName := GetEdbDataTableName(source, subSource)
 	sql = ` SELECT MIN(data_time) AS min_date,MAX(data_time) AS max_date,MIN(value) AS min_value,MAX(value) AS max_value FROM %s WHERE edb_code=? `
 	sql = fmt.Sprintf(sql, tableName)
 	err = o.Raw(sql, edbCode).QueryRow(&item)
@@ -232,6 +241,21 @@ func GetEdbInfoMaxAndMinInfo(source int, edbCode string) (item *EdbInfoMaxAndMin
 	return
 }
 
+type EdbIndoDataUpdateTime struct {
+	MinDate string `description:"本次更新,数据发生变化的最早日期"`
+}
+
+// GetEdbDataUpdateTimeByModify 获取指标的刷新时间获取最早的一条记录
+func GetEdbDataUpdateTimeByModify(source, subSource int, edbCode string, dataUpdateTime string) (item *EdbIndoDataUpdateTime, err error) {
+	o := orm.NewOrm()
+	sql := ``
+	tableName := GetEdbDataTableName(source, subSource)
+	sql = ` SELECT MIN(data_time) AS min_date FROM %s WHERE edb_code=? and modify_time>=?`
+	sql = fmt.Sprintf(sql, tableName)
+	err = o.Raw(sql, edbCode, dataUpdateTime).QueryRow(&item)
+	return
+}
+
 // ModifyEdbInfoMaxAndMinInfo 修改指标的最新数据信息
 func ModifyEdbInfoMaxAndMinInfo(edbInfoId int, item *EdbInfoMaxAndMinInfo) (err error) {
 	o := orm.NewOrm()
@@ -248,11 +272,19 @@ func ModifyEdbTimeAndLastInfo(edbInfoId int, item *EdbInfoMaxAndMinInfo) (err er
 	return
 }
 
+// ModifyEdbDataUpdateTime 修改指标刷新,本次数据刷新的最早日期
+func ModifyEdbDataUpdateTime(edbInfoId int, dataUpdateTime, erDataUpdateDate string) (err error) {
+	o := orm.NewOrm()
+	sql := `UPDATE edb_info SET data_update_time = ?, er_data_update_date = ?, modify_time = NOW() WHERE edb_info_id = ?`
+	_, err = o.Raw(sql, dataUpdateTime, erDataUpdateDate, edbInfoId).Exec()
+	return
+}
+
 // GetEdbDataCount 获取edb指标数据的数量; order:1升序,其余值为降序
-func GetEdbDataCount(condition string, pars []interface{}, source int) (count int, err error) {
+func GetEdbDataCount(condition string, pars []interface{}, source, subSource int) (count int, err error) {
 	o := orm.NewOrm()
 	sql := ``
-	tableName := GetEdbDataTableName(source)
+	tableName := GetEdbDataTableName(source, subSource)
 	sql = ` SELECT COUNT(1) AS count FROM %s WHERE 1=1 `
 	sql = fmt.Sprintf(sql, tableName)
 
@@ -264,10 +296,10 @@ func GetEdbDataCount(condition string, pars []interface{}, source int) (count in
 }
 
 // GetLastEdbData 获取最近的一条指标数据
-func GetLastEdbData(condition string, pars []interface{}, source int) (item *EdbInfoSearchData, err error) {
+func GetLastEdbData(condition string, pars []interface{}, source, subSource int) (item *EdbInfoSearchData, err error) {
 	o := orm.NewOrm()
 	sql := ``
-	tableName := GetEdbDataTableName(source)
+	tableName := GetEdbDataTableName(source, subSource)
 	sql = ` SELECT * FROM %s WHERE 1=1 `
 	sql = fmt.Sprintf(sql, tableName)
 
@@ -327,10 +359,10 @@ type EdbInfoSearchDataV1 struct {
 }
 
 // 优化版本-处理数据精度问题
-func GetEdbDataListAllV1(condition string, pars []interface{}, source, order int) (item []*EdbInfoSearchDataV1, err error) {
+func GetEdbDataListAllV1(condition string, pars []interface{}, source, subSource, order int) (item []*EdbInfoSearchDataV1, err error) {
 	o := orm.NewOrm()
 	sql := ``
-	tableName := GetEdbDataTableName(source)
+	tableName := GetEdbDataTableName(source, subSource)
 	sql = ` SELECT * FROM %s WHERE 1=1 `
 	sql = fmt.Sprintf(sql, tableName)
 
@@ -347,9 +379,9 @@ func GetEdbDataListAllV1(condition string, pars []interface{}, source, order int
 }
 
 // GetEdbDataListAllV1ByTo 通过事务链接获取数据列表
-func GetEdbDataListAllV1ByTo(to orm.TxOrmer, condition string, pars []interface{}, source, order int) (item []*EdbInfoSearchDataV1, err error) {
+func GetEdbDataListAllV1ByTo(to orm.TxOrmer, condition string, pars []interface{}, source, subSource, order int) (item []*EdbInfoSearchDataV1, err error) {
 	sql := ``
-	tableName := GetEdbDataTableName(source)
+	tableName := GetEdbDataTableName(source, subSource)
 	sql = ` SELECT * FROM %s WHERE 1=1 `
 	sql = fmt.Sprintf(sql, tableName)
 
@@ -384,7 +416,7 @@ func GetEdbInfoByCondition(condition string, pars []interface{}, order int) (ite
 // UnifiedModifyEdbInfoMaxAndMinInfo 统一修改指标的最大最小值
 func UnifiedModifyEdbInfoMaxAndMinInfo(edbInfo *EdbInfo) (err error, errMsg string) {
 	// 修改最大最小值
-	maxAndMinItem, err := GetEdbInfoMaxAndMinInfo(edbInfo.Source, edbInfo.EdbCode)
+	maxAndMinItem, err := GetEdbInfoMaxAndMinInfo(edbInfo.Source, edbInfo.SubSource, edbInfo.EdbCode)
 	if err != nil {
 		if err.Error() == utils.ErrNoRow() {
 			err = nil
@@ -419,10 +451,36 @@ func UnifiedModifyEdbInfoMaxAndMinInfo(edbInfo *EdbInfo) (err error, errMsg stri
 	return
 }
 
+// UnifiedModifyEdbInfoMaxAndMinInfoDataUpdate 统一修改指标的最大最小值以及数据更新时间点
+func UnifiedModifyEdbInfoMaxAndMinInfoDataUpdate(edbInfo *EdbInfo, dataUpdateTime string) (erDataUpdateDate string, err error, errMsg string) {
+	err, errMsg = UnifiedModifyEdbInfoMaxAndMinInfo(edbInfo)
+	if err != nil {
+		return
+	}
+	// 获取本次刷新,指标数据更新的最早日期
+	erDataUpdateTime, tErr := GetEdbDataUpdateTimeByModify(edbInfo.Source, edbInfo.SubSource, edbInfo.EdbCode, dataUpdateTime)
+	if tErr != nil {
+		if tErr.Error() != utils.ErrNoRow() { //本次刷新指标数据无变化
+			errMsg = "刷新指标失败!"
+			err = errors.New("查询指标刷新,数据更新的最早日期失败,err:" + tErr.Error())
+			return
+		}
+	} else if erDataUpdateTime.MinDate != "" {
+		err = ModifyEdbDataUpdateTime(edbInfo.EdbInfoId, dataUpdateTime, erDataUpdateTime.MinDate)
+		if err != nil {
+			errMsg = "刷新指标失败!"
+			err = errors.New("修改指标数据更新的最早日期失败,err:" + tErr.Error())
+			return
+		}
+		erDataUpdateDate = erDataUpdateTime.MinDate
+	}
+	return
+}
+
 // UnifiedModifyPredictEdbInfoMaxAndMinInfo 统一修改预测运算指标的最大最小值
 func UnifiedModifyPredictEdbInfoMaxAndMinInfo(edbInfo *EdbInfo, latestDateStr string, latestValue float64) (err error, errMsg string) {
 	// 修改最大最小值
-	maxAndMinItem, err := GetEdbInfoMaxAndMinInfo(edbInfo.Source, edbInfo.EdbCode)
+	maxAndMinItem, err := GetEdbInfoMaxAndMinInfo(edbInfo.Source, edbInfo.SubSource, edbInfo.EdbCode)
 	if err != nil {
 		if err.Error() == utils.ErrNoRow() {
 			err = nil
@@ -839,13 +897,13 @@ func GetPredictDataListByPredictEdbConfList(edbInfo, sourceEdbInfoItem *EdbInfo,
 		condition += " AND data_time>=? "
 		pars = append(pars, startDate)
 	}
-	tmpDataList, err := GetEdbDataListAll(condition, pars, sourceEdbInfoItem.Source, 1)
+	tmpDataList, err := GetEdbDataListAll(condition, pars, sourceEdbInfoItem.Source, sourceEdbInfoItem.SubSource, 1)
 	if err != nil {
 		return
 	}
 	// 如果选择了日期,那么需要筛选所有的数据,用于未来指标的生成
 	if startDate != `` {
-		allDataList, err = GetEdbDataListAll(" AND edb_info_id=? ", []interface{}{sourceEdbInfoItem.EdbInfoId}, sourceEdbInfoItem.Source, 1)
+		allDataList, err = GetEdbDataListAll(" AND edb_info_id=? ", []interface{}{sourceEdbInfoItem.EdbInfoId}, sourceEdbInfoItem.Source, sourceEdbInfoItem.SubSource, 1)
 		if err != nil {
 			return
 		}
@@ -908,7 +966,7 @@ func GetPredictEdbDataListAll(edbInfo *EdbInfo, order int) (items []*EdbInfoSear
 		var pars []interface{}
 		condition += " AND edb_info_id=? "
 		pars = append(pars, edbInfo.EdbInfoId)
-		items, err = GetEdbDataListAll(condition, pars, edbInfo.Source, order)
+		items, err = GetEdbDataListAll(condition, pars, edbInfo.Source, edbInfo.SubSource, order)
 	}
 	return
 }
@@ -926,7 +984,7 @@ func GetPredictEdbDataListAllByStartDate(edbInfo *EdbInfo, order int, startDate
 			condition += " AND data_time>=? "
 			pars = append(pars, startDate)
 		}
-		items, err = GetEdbDataListAll(condition, pars, edbInfo.Source, order)
+		items, err = GetEdbDataListAll(condition, pars, edbInfo.Source, edbInfo.SubSource, order)
 	}
 	return
 }
@@ -1003,14 +1061,15 @@ type EdbInfoDetailResp struct {
 }
 
 type AddEdbInfoParams struct {
-	Source     int    `description:"来源id"`
-	EdbCode    string `description:"指标编码"`
-	EdbName    string `description:"指标名称"`
-	Frequency  string `description:"频率"`
-	Unit       string `description:"单位"`
-	ClassifyId int    `description:"分类id"`
-	AdminId    int    `description:"创建人ID"`
-	AdminName  string `description:"创建人姓名"`
+	Source       int    `description:"来源id"`
+	EdbCode      string `description:"指标编码"`
+	EdbName      string `description:"指标名称"`
+	Frequency    string `description:"频率"`
+	Unit         string `description:"单位"`
+	ClassifyId   int    `description:"分类id"`
+	TerminalCode string `description:"终端编码"`
+	AdminId      int    `description:"创建人ID"`
+	AdminName    string `description:"创建人姓名"`
 }
 
 // EdbInfoAdd 添加指标到指标库
@@ -1091,6 +1150,8 @@ func EdbInfoAdd(req *AddEdbInfoParams, serverUrl string, sysUserId int, sysUserR
 		edbType = 2 //计算指标
 	}
 
+	var sourceIndexName string
+
 	// 钢联化工需要校验下信息是否完整
 	if source == utils.DATA_SOURCE_MYSTEEL_CHEMICAL {
 		indexObj := new(BaseFromMysteelChemicalIndex)
@@ -1104,6 +1165,12 @@ func EdbInfoAdd(req *AddEdbInfoParams, serverUrl string, sysUserId int, sysUserR
 			return
 		}
 	}
+	//获取该层级下最大的排序数
+	maxSort, err := GetEdbAndClassifyMaxSort(req.ClassifyId, 0)
+	if err != nil {
+		err = errors.New("查询排序信息失败,Err:" + err.Error())
+		return
+	}
 
 	edbInfo.EdbCode = req.EdbCode
 	edbInfo.EdbName = req.EdbName
@@ -1117,14 +1184,17 @@ func EdbInfoAdd(req *AddEdbInfoParams, serverUrl string, sysUserId int, sysUserR
 	edbInfo.CreateTime = time.Now()
 	edbInfo.ModifyTime = time.Now()
 	edbInfo.ServerUrl = serverUrl
+	edbInfo.TerminalCode = req.TerminalCode
+	edbInfo.Sort = maxSort + 1
 	timestamp := strconv.FormatInt(time.Now().UnixNano(), 10)
 	edbInfo.UniqueCode = utils.MD5(utils.DATA_PREFIX + "_" + req.EdbCode + timestamp)
-	itemVal, err := GetEdbInfoMaxAndMinInfo(source, req.EdbCode)
+	itemVal, err := GetEdbInfoMaxAndMinInfo(source, utils.DATA_SUB_SOURCE_EDB, req.EdbCode)
 	if itemVal != nil && err == nil {
 		edbInfo.MaxValue = itemVal.MaxValue
 		edbInfo.MinValue = itemVal.MinValue
 	}
 	edbInfo.EdbType = edbType
+	edbInfo.SourceIndexName = sourceIndexName
 	edbInfoId, err := AddEdbInfo(edbInfo)
 	if err != nil {
 		err = errors.New("保存失败,Err:" + err.Error())
@@ -1154,3 +1224,28 @@ type ResetEdbClassifyReq struct {
 	ClassifySecond string `description:"二级分类名称"`
 	ClassifyThird  string `description:"三级分类名称"`
 }
+
+// GetEdbInfoMaxSortByClassifyId 获取分类下指标的最大的排序数
+func GetEdbInfoMaxSortByClassifyId(classifyId int) (sort int, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT Max(sort) AS sort FROM edb_info WHERE classify_id=? `
+	err = o.Raw(sql, classifyId).QueryRow(&sort)
+	return
+}
+
+func GetEdbAndClassifyMaxSort(parentId int, classifyType uint8) (maxSort int, err error) {
+	//获取该层级下最大的排序数
+	classifyMaxSort, err := GetEdbClassifyMaxSort(parentId, classifyType)
+	if err != nil {
+		return
+	}
+	maxSort = classifyMaxSort
+	edbMaxSort, err := GetEdbInfoMaxSortByClassifyId(parentId)
+	if err != nil {
+		return
+	}
+	if maxSort < edbMaxSort {
+		maxSort = edbMaxSort
+	}
+	return
+}

+ 1 - 0
models/edb_info_calculate_mapping.go

@@ -22,6 +22,7 @@ type EdbInfoCalculateMapping struct {
 	CreateTime                time.Time `description:"创建时间"`
 	ModifyTime                time.Time `description:"修改时间"`
 	FromTag                   string    `description:"来源指标标签"`
+	FromSubSource             int       `description:"渠道子数据库来源"`
 }
 
 // AddEdbInfoCalculateMappingMulti 批量添加指标关系表

+ 71 - 0
models/edb_terminal.go

@@ -0,0 +1,71 @@
+package models
+
+import (
+	"fmt"
+	"github.com/beego/beego/v2/client/orm"
+	"time"
+)
+
+// EdbTerminal 指标终端
+type EdbTerminal struct {
+	TerminalId   int       `orm:"column(terminal_id);pk"`
+	Source       int       `orm:"column(source)" description:"指标来源类型"`
+	Name         string    `description:"终端别名"`
+	TerminalCode string    `description:"终端编码,用于配置在机器上"`
+	ServerUrl    string    `description:"终端地址"`
+	Num          int       `description:"终端最大指标数"`
+	Status       int       `description:"状态,1启用,2禁用"`
+	Value        string    `description:"终端相关的凭证"`
+	ModifyTime   time.Time `description:"修改时间"`
+	CreateTime   time.Time `description:"创建时间"`
+}
+
+// GetEdbTerminalListBySource 根据指标来源类型获取所有的终端列表
+func GetEdbTerminalListBySource(source int) (items []*EdbTerminal, err error) {
+	o := orm.NewOrm()
+	sql := ` SELECT *  FROM edb_terminal WHERE source = ? and status=1 ORDER BY terminal_id ASC `
+	_, err = o.Raw(sql, source).QueryRows(&items)
+	return
+}
+
+// GetEdbTerminalFirstBySource 根据指标来源类型获取配置的首个终端信息
+func GetEdbTerminalFirstBySource(source int) (item *EdbTerminal, err error) {
+	o := orm.NewOrm()
+	sql := ` SELECT *  FROM edb_terminal WHERE source = ? and status=1 ORDER BY terminal_id ASC Limit 1 `
+	err = o.Raw(sql, source).QueryRow(&item)
+	return
+}
+
+type TerminalCodeCountGroup struct {
+	TerminalCode string
+	Total        int
+}
+
+// GetEdbTerminalByCode 根据终端编码获取终端信息
+func GetEdbTerminalByCode(terminalCode string) (item *EdbTerminal, err error) {
+	o := orm.NewOrm()
+	sql := ` SELECT *  FROM edb_terminal WHERE terminal_code = ? `
+	err = o.Raw(sql, terminalCode).QueryRow(&item)
+	return
+}
+
+// GetEdbCountGroupByTerminal 获取终端code分组总数
+func GetEdbCountGroupByTerminal(source int) (list []TerminalCodeCountGroup, err error) {
+	o := orm.NewOrm()
+	sql := `select terminal_code,count(1) total from edb_info where source = ? AND no_update=0 AND terminal_code != "" group by terminal_code; `
+	_, err = o.Raw(sql, source).QueryRows(&list)
+	return
+}
+
+type BaseIndexTerminalCode struct {
+	TerminalCode string `description:"终端编码,用于配置在机器上"`
+	IndexName    string
+}
+
+// GetBaseIndexTerminalCode 获取数据源的终端code
+func GetBaseIndexTerminalCode(edbCode, tableName string) (item BaseIndexTerminalCode, err error) {
+	o := orm.NewOrm()
+	sql := fmt.Sprintf(`select terminal_code, index_name from %s where index_code = ? `, tableName)
+	err = o.Raw(sql, edbCode).QueryRow(&item)
+	return
+}

+ 1 - 0
models/future_good/future_good_edb_info.go

@@ -26,6 +26,7 @@ type FutureGoodEdbInfo struct {
 	LatestValue         float64   `description:"数据最新的值"`
 	LatestDate          time.Time `description:"数据最新的日期"`
 	ServerUrl           string    `description:"服务器地址"`
+	TerminalCode        string    `description:"终端编码,用于配置在机器上"`
 	CreateTime          time.Time
 	ModifyTime          time.Time
 }

+ 8 - 8
models/predict_edb_data_calculate_bp.go

@@ -144,12 +144,12 @@ func SavePredictCalculateBp(req *EdbInfoCalculateBatchSaveReq, fromEdbInfo *EdbI
 	}
 
 	//计算数据
-	latestDateStr, latestValue, err = refreshAllPredictCalculateBp(to, edbInfo.EdbInfoId, edbInfo.Source, fromEdbInfo, edbInfo.EdbCode, "", "", 0)
+	latestDateStr, latestValue, err = refreshAllPredictCalculateBp(to, edbInfo.EdbInfoId, edbInfo.Source, edbInfo.SubSource, fromEdbInfo, edbInfo.EdbCode, "", "", 0)
 
 	return
 }
 
-func RefreshAllPredictCalculateBp(edbInfoId, source int, fromEdbInfo *EdbInfo, edbCode, startDate, endDate string) (latestDateStr string, latestValue float64, err error) {
+func RefreshAllPredictCalculateBp(edbInfoId, source, subSource int, fromEdbInfo *EdbInfo, edbCode, startDate, endDate string) (latestDateStr string, latestValue float64, err error) {
 	o := orm.NewOrm()
 	to, err := o.Begin()
 	if err != nil {
@@ -165,12 +165,12 @@ func RefreshAllPredictCalculateBp(edbInfoId, source int, fromEdbInfo *EdbInfo, e
 	}()
 
 	// 计算数据
-	latestDateStr, latestValue, err = refreshAllPredictCalculateBp(to, edbInfoId, source, fromEdbInfo, edbCode, startDate, endDate, 1)
+	latestDateStr, latestValue, err = refreshAllPredictCalculateBp(to, edbInfoId, source, subSource, fromEdbInfo, edbCode, startDate, endDate, 1)
 	return
 }
 
 // refreshAllPredictCalculateBp 刷新变频数据
-func refreshAllPredictCalculateBp(to orm.TxOrmer, edbInfoId, source int, fromEdbInfo *EdbInfo, edbCode, startDate, endDate string, order int) (latestDateStr string, latestValue float64, err error) {
+func refreshAllPredictCalculateBp(to orm.TxOrmer, edbInfoId, source, subSource int, fromEdbInfo *EdbInfo, edbCode, startDate, endDate string, order int) (latestDateStr string, latestValue float64, err error) {
 	edbInfoIdStr := strconv.Itoa(edbInfoId)
 	// 获取关联指标数据
 	dataList, err := GetPredictEdbDataListAllByStartDate(fromEdbInfo, order, "")
@@ -191,7 +191,7 @@ func refreshAllPredictCalculateBp(to orm.TxOrmer, edbInfoId, source int, fromEdb
 	fmt.Println("source:", source)
 
 	//获取变频指标所有数据
-	existDataList, err := GetAllEdbDataListByTo(to, edbInfoId, source)
+	existDataList, err := GetAllEdbDataListByTo(to, edbInfoId, source, subSource)
 	if err != nil {
 		return
 	}
@@ -278,7 +278,7 @@ func refreshAllPredictCalculateBp(to orm.TxOrmer, edbInfoId, source int, fromEdb
 					}
 					//如果对应的值不匹配
 					if tmpExistData.Value != lastValueStr {
-						err = ModifyEdbDataById(source, tmpExistData.EdbDataId, lastValueStr)
+						err = ModifyEdbDataById(source, subSource, tmpExistData.EdbDataId, lastValueStr)
 						if err != nil {
 							return
 						}
@@ -295,7 +295,7 @@ func refreshAllPredictCalculateBp(to orm.TxOrmer, edbInfoId, source int, fromEdb
 			}
 		} else {
 			//如果没有来源指标数据,那么已经入库的计算指标数据需要全部删除
-			tableName := GetEdbDataTableName(source)
+			tableName := GetEdbDataTableName(source, subSource)
 			sql := fmt.Sprintf(` DELETE FROM %s WHERE edb_info_id = ?`, tableName)
 			_, err = to.Raw(sql, edbInfoId).Exec()
 			if err != nil {
@@ -367,7 +367,7 @@ func refreshAllPredictCalculateBp(to orm.TxOrmer, edbInfoId, source int, fromEdb
 		removeDateStr := strings.Join(removeDateList, `","`)
 		removeDateStr = `"` + removeDateStr + `"`
 		//如果拼接指标变更了,那么需要删除所有的指标数据
-		tableName := GetEdbDataTableName(source)
+		tableName := GetEdbDataTableName(source, subSource)
 		sql := fmt.Sprintf(` DELETE FROM %s WHERE edb_info_id = ? and data_time in (%s) `, tableName, removeDateStr)
 
 		_, err = to.Raw(sql, edbInfoId).Exec()

+ 7 - 7
models/predict_edb_data_calculate_cjjx.go

@@ -152,7 +152,7 @@ func SavePredictCalculateCjjx(req *EdbInfoCalculateBatchSaveReq, fromEdbInfo *Ed
 		}
 
 		//清空原有数据
-		tableName := GetEdbDataTableName(edbInfo.Source)
+		tableName := GetEdbDataTableName(edbInfo.Source, edbInfo.SubSource)
 		sql := fmt.Sprintf(` DELETE FROM %s WHERE edb_info_id = ? `, tableName)
 		_, err = to.Raw(sql, edbInfo.EdbInfoId).Exec()
 		if err != nil {
@@ -162,13 +162,13 @@ func SavePredictCalculateCjjx(req *EdbInfoCalculateBatchSaveReq, fromEdbInfo *Ed
 	}
 
 	//计算数据
-	latestDateStr, latestValue, err = refreshAllPredictCalculateCjjx(to, edbInfo.EdbInfoId, edbInfo.Source, fromEdbInfo, edbInfo.EdbCode, "", "", edbInfo.Calendar, formulaInt)
+	latestDateStr, latestValue, err = refreshAllPredictCalculateCjjx(to, edbInfo.EdbInfoId, edbInfo.Source, edbInfo.SubSource, fromEdbInfo, edbInfo.EdbCode, "", "", edbInfo.Calendar, formulaInt)
 
 	return
 }
 
 // RefreshAllPredictCalculateCjjx 刷新全部超季节性数据
-func RefreshAllPredictCalculateCjjx(edbInfoId, source int, fromEdbInfo *EdbInfo, edbCode, startDate, endDate, calendar string, formulaInt int) (latestDateStr string, latestValue float64, err error) {
+func RefreshAllPredictCalculateCjjx(edbInfoId, source, subSource int, fromEdbInfo *EdbInfo, edbCode, startDate, endDate, calendar string, formulaInt int) (latestDateStr string, latestValue float64, err error) {
 	o := orm.NewOrm()
 	to, err := o.Begin()
 	if err != nil {
@@ -184,13 +184,13 @@ func RefreshAllPredictCalculateCjjx(edbInfoId, source int, fromEdbInfo *EdbInfo,
 	}()
 
 	// 重新计算
-	latestDateStr, latestValue, err = refreshAllPredictCalculateCjjx(to, edbInfoId, source, fromEdbInfo, edbCode, startDate, endDate, calendar, formulaInt)
+	latestDateStr, latestValue, err = refreshAllPredictCalculateCjjx(to, edbInfoId, source, subSource, fromEdbInfo, edbCode, startDate, endDate, calendar, formulaInt)
 
 	return
 }
 
 // refreshAllPredictCalculateCjjx 刷新全部超季节性数据
-func refreshAllPredictCalculateCjjx(to orm.TxOrmer, edbInfoId, source int, fromEdbInfo *EdbInfo, edbCode, startDate, endDate, calendar string, formulaInt int) (latestDateStr string, latestValue float64, err error) {
+func refreshAllPredictCalculateCjjx(to orm.TxOrmer, edbInfoId, source, subSource int, fromEdbInfo *EdbInfo, edbCode, startDate, endDate, calendar string, formulaInt int) (latestDateStr string, latestValue float64, err error) {
 	edbInfoIdStr := strconv.Itoa(edbInfoId)
 	// 获取关联指标数据
 	dataList, err := GetPredictEdbDataListAllByStartDate(fromEdbInfo, 1, "")
@@ -214,7 +214,7 @@ func refreshAllPredictCalculateCjjx(to orm.TxOrmer, edbInfoId, source int, fromE
 
 	//获取指标所有数据
 	existDataList := make([]*EdbData, 0)
-	dataTableName := GetEdbDataTableName(source)
+	dataTableName := GetEdbDataTableName(source, subSource)
 	sql := `SELECT * FROM %s WHERE edb_info_id=? `
 	sql = fmt.Sprintf(sql, dataTableName)
 	_, err = to.Raw(sql, edbInfoId).QueryRows(&existDataList)
@@ -342,7 +342,7 @@ func refreshAllPredictCalculateCjjx(to orm.TxOrmer, edbInfoId, source int, fromE
 		removeNum := len(removeDateList)
 		if removeNum > 0 {
 			//如果拼接指标变更了,那么需要删除所有的指标数据
-			tableName := GetEdbDataTableName(source)
+			tableName := GetEdbDataTableName(source, subSource)
 			sql := fmt.Sprintf(` DELETE FROM %s WHERE edb_info_id = ? and data_time in (`+utils.GetOrmInReplace(removeNum)+`) `, tableName)
 			_, err = to.Raw(sql, edbInfoId, removeDateList).Exec()
 			if err != nil {

+ 6 - 6
models/predict_edb_data_calculate_hbz.go

@@ -79,7 +79,7 @@ func SavePredictCalculateHbz(req *EdbInfoCalculateBatchSaveReq, fromEdbInfo *Edb
 		latestDateStr = edbInfo.LatestDate
 		latestValue = edbInfo.LatestValue
 		oldCalculateFormula := edbInfo.CalculateFormula
-		dataTableName := GetEdbDataTableName(utils.DATA_SOURCE_PREDICT_CALCULATE_HBZ)
+		dataTableName := GetEdbDataTableName(utils.DATA_SOURCE_PREDICT_CALCULATE_HBZ, utils.DATA_SUB_SOURCE_EDB)
 		//修改指标信息
 		edbInfo.EdbName = req.EdbName
 		edbInfo.EdbNameSource = req.EdbName
@@ -150,12 +150,12 @@ func SavePredictCalculateHbz(req *EdbInfoCalculateBatchSaveReq, fromEdbInfo *Edb
 	}
 
 	//计算数据
-	latestDateStr, latestValue, err = refreshAllPredictCalculateHbz(to, edbInfo.EdbInfoId, edbInfo.Source, fromEdbInfo, edbInfo.EdbCode, "", "", formulaInt)
+	latestDateStr, latestValue, err = refreshAllPredictCalculateHbz(to, edbInfo.EdbInfoId, edbInfo.Source, edbInfo.SubSource, 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) {
+func RefreshAllPredictCalculateHbz(edbInfoId, source, subSource int, fromEdbInfo *EdbInfo, edbCode, startDate, endDate string, formulaInt int) (latestDateStr string, latestValue float64, err error) {
 	o := orm.NewOrm()
 	to, err := o.Begin()
 	if err != nil {
@@ -171,12 +171,12 @@ func RefreshAllPredictCalculateHbz(edbInfoId, source int, fromEdbInfo *EdbInfo,
 	}()
 
 	//计算数据
-	latestDateStr, latestValue, err = refreshAllPredictCalculateHbz(to, edbInfoId, source, fromEdbInfo, edbCode, startDate, endDate, formulaInt)
+	latestDateStr, latestValue, err = refreshAllPredictCalculateHbz(to, edbInfoId, source, subSource, fromEdbInfo, edbCode, startDate, endDate, formulaInt)
 	return
 }
 
 // refreshAllPredictCalculateHbz 刷新所有环比值数据
-func refreshAllPredictCalculateHbz(to orm.TxOrmer, edbInfoId, source int, fromEdbInfo *EdbInfo, edbCode, startDate, endDate string, formulaInt int) (latestDateStr string, latestValue float64, err error) {
+func refreshAllPredictCalculateHbz(to orm.TxOrmer, edbInfoId, source, subSource int, fromEdbInfo *EdbInfo, edbCode, startDate, endDate string, formulaInt int) (latestDateStr string, latestValue float64, err error) {
 	edbInfoIdStr := strconv.Itoa(edbInfoId)
 	// 获取关联指标数据
 	dataList, err := GetPredictEdbDataListAllByStartDate(fromEdbInfo, 0, "")
@@ -193,7 +193,7 @@ func refreshAllPredictCalculateHbz(to orm.TxOrmer, edbInfoId, source int, fromEd
 	fmt.Println("source:", source)
 	//获取指标所有数据
 	existDataList := make([]*EdbData, 0)
-	dataTableName := GetEdbDataTableName(source)
+	dataTableName := GetEdbDataTableName(source, subSource)
 	fmt.Println("dataTableName:", dataTableName)
 	sql := `SELECT * FROM %s WHERE edb_info_id=? `
 	sql = fmt.Sprintf(sql, dataTableName)

+ 6 - 6
models/predict_edb_data_calculate_hcz.go

@@ -149,13 +149,13 @@ func SavePredictCalculateHcz(req *EdbInfoCalculateBatchSaveReq, fromEdbInfo *Edb
 	}
 
 	//计算数据
-	latestDateStr, latestValue, err = refreshAllPredictCalculateHcz(to, edbInfo.EdbInfoId, edbInfo.Source, fromEdbInfo, edbInfo.EdbCode, "", "", formulaInt)
+	latestDateStr, latestValue, err = refreshAllPredictCalculateHcz(to, edbInfo.EdbInfoId, edbInfo.Source, edbInfo.SubSource, fromEdbInfo, edbInfo.EdbCode, "", "", formulaInt)
 
 	return
 }
 
 // RefreshAllPredictCalculateHcz 刷新所有环差值数据
-func RefreshAllPredictCalculateHcz(edbInfoId, source int, fromEdbInfo *EdbInfo, edbCode, startDate, endDate string, formulaInt int) (latestDateStr string, latestValue float64, err error) {
+func RefreshAllPredictCalculateHcz(edbInfoId, source, subSource int, fromEdbInfo *EdbInfo, edbCode, startDate, endDate string, formulaInt int) (latestDateStr string, latestValue float64, err error) {
 	o := orm.NewOrm()
 	to, err := o.Begin()
 	if err != nil {
@@ -171,12 +171,12 @@ func RefreshAllPredictCalculateHcz(edbInfoId, source int, fromEdbInfo *EdbInfo,
 	}()
 
 	//计算数据
-	latestDateStr, latestValue, err = refreshAllPredictCalculateHcz(to, edbInfoId, source, fromEdbInfo, edbCode, startDate, endDate, formulaInt)
+	latestDateStr, latestValue, err = refreshAllPredictCalculateHcz(to, edbInfoId, source, subSource, fromEdbInfo, edbCode, startDate, endDate, formulaInt)
 	return
 }
 
 // refreshAllPredictCalculateHcz 刷新所有环差值数据
-func refreshAllPredictCalculateHcz(to orm.TxOrmer, edbInfoId, source int, fromEdbInfo *EdbInfo, edbCode, startDate, endDate string, formulaInt int) (latestDateStr string, latestValue float64, err error) {
+func refreshAllPredictCalculateHcz(to orm.TxOrmer, edbInfoId, source, subSource int, fromEdbInfo *EdbInfo, edbCode, startDate, endDate string, formulaInt int) (latestDateStr string, latestValue float64, err error) {
 	edbInfoIdStr := strconv.Itoa(edbInfoId)
 	// 获取关联指标数据
 	dataList, err := GetPredictEdbDataListAllByStartDate(fromEdbInfo, 0, "")
@@ -193,7 +193,7 @@ func refreshAllPredictCalculateHcz(to orm.TxOrmer, edbInfoId, source int, fromEd
 	fmt.Println("source:", source)
 	//获取指标所有数据
 	existDataList := make([]*EdbData, 0)
-	dataTableName := GetEdbDataTableName(source)
+	dataTableName := GetEdbDataTableName(source, subSource)
 	fmt.Println("dataTableName:", dataTableName)
 
 	var existPars []interface{}
@@ -288,7 +288,7 @@ func refreshAllPredictCalculateHcz(to orm.TxOrmer, edbInfoId, source int, fromEd
 		removeDateStr := strings.Join(removeDateList, `","`)
 		removeDateStr = `"` + removeDateStr + `"`
 		//如果拼接指标变更了,那么需要删除所有的指标数据
-		tableName := GetEdbDataTableName(source)
+		tableName := GetEdbDataTableName(source, subSource)
 		sql := fmt.Sprintf(` DELETE FROM %s WHERE edb_info_id = ? and data_time in (%s) `, tableName, removeDateStr)
 
 		_, err = to.Raw(sql, edbInfoId).Exec()

+ 9 - 9
models/predict_edb_data_calculate_jp.go

@@ -146,7 +146,7 @@ func SavePredictCalculateJp(reqEdbInfoId, classifyId int, edbName, frequency, un
 		}
 
 		//清空原有已经入库的数据
-		tableName := GetEdbDataTableName(edbInfo.Source)
+		tableName := GetEdbDataTableName(edbInfo.Source, edbInfo.SubSource)
 		sql = ` DELETE FROM ` + tableName + ` WHERE edb_info_id = ? `
 		_, err = to.Raw(sql, edbInfo.EdbInfoId).Exec()
 		if err != nil {
@@ -180,13 +180,13 @@ func SavePredictCalculateJp(reqEdbInfoId, classifyId int, edbName, frequency, un
 	}
 
 	// 计算数据
-	latestDateStr, latestValue, err = refreshAllPredictCalculateJp(to, edbInfo.EdbInfoId, edbInfo.Source, fromEdbInfo, edbCode, edbInfo.Frequency, formula)
+	latestDateStr, latestValue, err = refreshAllPredictCalculateJp(to, edbInfo.EdbInfoId, edbInfo.Source, edbInfo.SubSource, fromEdbInfo, edbCode, edbInfo.Frequency, formula)
 
 	return
 }
 
 // RefreshAllPredictCalculateJp 刷新全部预测降频值数据
-func RefreshAllPredictCalculateJp(edbInfoId, source int, fromEdbInfo *EdbInfo, edbCode, edbFrequency, formula string) (latestDateStr string, latestValue float64, err error) {
+func RefreshAllPredictCalculateJp(edbInfoId, source, subSource int, fromEdbInfo *EdbInfo, edbCode, edbFrequency, formula string) (latestDateStr string, latestValue float64, err error) {
 	o := orm.NewOrm()
 	to, err := o.Begin()
 	if err != nil {
@@ -202,12 +202,12 @@ func RefreshAllPredictCalculateJp(edbInfoId, source int, fromEdbInfo *EdbInfo, e
 	}()
 
 	// 计算数据
-	latestDateStr, latestValue, err = refreshAllPredictCalculateJp(to, edbInfoId, source, fromEdbInfo, edbCode, edbFrequency, formula)
+	latestDateStr, latestValue, err = refreshAllPredictCalculateJp(to, edbInfoId, source, subSource, fromEdbInfo, edbCode, edbFrequency, formula)
 	return
 }
 
 // refreshAllPredictCalculateJp 刷新预测降频数据
-func refreshAllPredictCalculateJp(to orm.TxOrmer, edbInfoId, source int, fromEdbInfo *EdbInfo, edbCode, edbFrequency, formula string) (latestDateStr string, latestValue float64, err error) {
+func refreshAllPredictCalculateJp(to orm.TxOrmer, edbInfoId, source, subSource int, fromEdbInfo *EdbInfo, edbCode, edbFrequency, formula string) (latestDateStr string, latestValue float64, err error) {
 	edbInfoIdStr := strconv.Itoa(edbInfoId)
 	//获取源指标数据
 	fmt.Println("EdbInfoId:", fromEdbInfo.EdbInfoId)
@@ -227,7 +227,7 @@ func refreshAllPredictCalculateJp(to orm.TxOrmer, edbInfoId, source int, fromEdb
 	fmt.Println("source:", source)
 
 	//获取降频指标所有数据
-	existDataList, err := GetAllEdbDataListByTo(to, edbInfoId, source)
+	existDataList, err := GetAllEdbDataListByTo(to, edbInfoId, source, subSource)
 	if err != nil {
 		return
 	}
@@ -239,7 +239,7 @@ func refreshAllPredictCalculateJp(to orm.TxOrmer, edbInfoId, source int, fromEdb
 
 	latestDateStr = fromEdbInfo.LatestDate
 
-	tableName := GetEdbDataTableName(utils.DATA_SOURCE_PREDICT_CALCULATE_JP)
+	tableName := GetEdbDataTableName(utils.DATA_SOURCE_PREDICT_CALCULATE_JP, subSource)
 	addSql := ` INSERT INTO ` + tableName + ` (edb_info_id,edb_code,data_time,value,create_time,modify_time,data_timestamp) values `
 	var isAdd bool
 
@@ -360,7 +360,7 @@ func refreshAllPredictCalculateJp(to orm.TxOrmer, edbInfoId, source int, fromEdb
 			existVal, _ := existValDeci.Round(4).Float64()
 			// 判断降频数据的值 与 当前计算出来的结果, 如果两个数据结果不相等的话,那么就修改咯
 			if existVal != currVal {
-				err = ModifyEdbDataById(source, existData.EdbDataId, fmt.Sprint(currVal))
+				err = ModifyEdbDataById(source, subSource, existData.EdbDataId, fmt.Sprint(currVal))
 				if err != nil {
 					return
 				}
@@ -412,7 +412,7 @@ func refreshAllPredictCalculateJp(to orm.TxOrmer, edbInfoId, source int, fromEdb
 			existVal, _ := existValDeci.Round(4).Float64()
 			// 判断降频数据的值 与 当前计算出来的结果, 如果两个数据结果不相等的话,那么就修改咯
 			if existVal != currVal {
-				err = ModifyEdbDataById(source, existData.EdbDataId, fmt.Sprint(currVal))
+				err = ModifyEdbDataById(source, subSource, existData.EdbDataId, fmt.Sprint(currVal))
 				if err != nil {
 					return
 				}

+ 7 - 7
models/predict_edb_data_calculate_kszs.go

@@ -138,7 +138,7 @@ func SavePredictCalculateKszs(reqEdbInfoId, classifyId int, edbName, frequency,
 			return
 		}
 		//清空原有数据
-		tableName := GetEdbDataTableName(edbInfo.Source)
+		tableName := GetEdbDataTableName(edbInfo.Source, edbInfo.SubSource)
 		sql = ` DELETE FROM ` + tableName + ` WHERE edb_info_id = ? `
 		_, err = to.Raw(sql, edbInfo.EdbInfoId).Exec()
 		if err != nil {
@@ -181,7 +181,7 @@ func SavePredictCalculateKszs(reqEdbInfoId, classifyId int, edbName, frequency,
 	}
 
 	// 计算数据
-	latestDateStr, latestValue, err = refreshAllPredictCalculateKszs(to, edbInfo.EdbInfoId, edbInfo.Source, relationEdbInfoList, edbCode, formula, tagMap)
+	latestDateStr, latestValue, err = refreshAllPredictCalculateKszs(to, edbInfo.EdbInfoId, edbInfo.Source, edbInfo.SubSource, relationEdbInfoList, edbCode, formula, tagMap)
 
 	return
 }
@@ -215,14 +215,14 @@ func RefreshAllPredictCalculateKszs(edbInfo *EdbInfo) (latestDateStr string, lat
 	}()
 
 	// 计算数据
-	latestDateStr, latestValue, err = refreshAllPredictCalculateKszs(to, edbInfo.EdbInfoId, edbInfo.Source, relationEdbInfoList, edbInfo.EdbCode, edbInfo.CalculateFormula, tagMap)
+	latestDateStr, latestValue, err = refreshAllPredictCalculateKszs(to, edbInfo.EdbInfoId, edbInfo.Source, edbInfo.SubSource, relationEdbInfoList, edbInfo.EdbCode, edbInfo.CalculateFormula, tagMap)
 	return
 }
 
 // refreshAllPredictCalculateKszs 刷新预测年化数据
-func refreshAllPredictCalculateKszs(to orm.TxOrmer, edbInfoId, source int, relationEdbInfoList []*EdbInfo, edbCode, calculateFormula string, tagMap map[string]int) (latestDateStr string, latestValue float64, err error) {
+func refreshAllPredictCalculateKszs(to orm.TxOrmer, edbInfoId, source, subSource int, relationEdbInfoList []*EdbInfo, edbCode, calculateFormula string, tagMap map[string]int) (latestDateStr string, latestValue float64, err error) {
 	edbInfoIdStr := strconv.Itoa(edbInfoId)
-	tableName := GetEdbDataTableName(utils.DATA_SOURCE_PREDICT_CALCULATE_KSZS)
+	tableName := GetEdbDataTableName(utils.DATA_SOURCE_PREDICT_CALCULATE_KSZS, subSource)
 
 	// 获取扩散指标关联的指标id
 	checkEdbInfoIdMap := make(map[int]int)
@@ -246,7 +246,7 @@ func refreshAllPredictCalculateKszs(to orm.TxOrmer, edbInfoId, source int, relat
 	}
 
 	//获取当前指标的所有数据
-	existDataList, err := GetAllEdbDataListByTo(to, edbInfoId, source)
+	existDataList, err := GetAllEdbDataListByTo(to, edbInfoId, source, subSource)
 	if err != nil {
 		return
 	}
@@ -361,7 +361,7 @@ func refreshAllPredictCalculateKszs(to orm.TxOrmer, edbInfoId, source int, relat
 			existVal, _ := existValDeci.Round(4).Float64()
 			// 判断扩散指数数据的值 与 当前计算出来的结果, 如果两个数据结果不相等的话,那么就修改咯
 			if existVal != currVal {
-				err = ModifyEdbDataById(source, existData.EdbDataId, fmt.Sprint(currVal))
+				err = ModifyEdbDataById(source, subSource, existData.EdbDataId, fmt.Sprint(currVal))
 				if err != nil {
 					return
 				}

+ 7 - 7
models/predict_edb_data_calculate_ljz.go

@@ -112,7 +112,7 @@ func (obj PredictLjz) Add(params BatchSaveCalculateBatchParams) (edbInfo *EdbInf
 	}
 
 	//计算数据
-	latestDateStr, latestValue, err = obj.refresh(to, edbInfo.EdbInfoId, edbInfo.Source, edbInfo, fromEdbInfo, edbInfo.EdbCode, "")
+	latestDateStr, latestValue, err = obj.refresh(to, edbInfo.EdbInfoId, edbInfo.Source, edbInfo.SubSource, edbInfo, fromEdbInfo, edbInfo.EdbCode, "")
 
 	return
 }
@@ -152,7 +152,7 @@ func (obj PredictLjz) Edit(params BatchSaveCalculateBatchParams) (latestDateStr
 			_ = to.Commit()
 		}
 	}()
-	tableName := GetEdbDataTableName(edbInfo.Source)
+	tableName := GetEdbDataTableName(edbInfo.Source, edbInfo.SubSource)
 
 	var isRecalculate bool
 	if edbInfo.Frequency != req.Frequency {
@@ -185,7 +185,7 @@ func (obj PredictLjz) Edit(params BatchSaveCalculateBatchParams) (latestDateStr
 
 		// 频度被换了,需要重新计算
 		if isRecalculate {
-			latestDateStr, latestValue, err = obj.refresh(to, edbInfo.EdbInfoId, edbInfo.Source, edbInfo, fromEdbInfo, edbInfo.EdbCode, "")
+			latestDateStr, latestValue, err = obj.refresh(to, edbInfo.EdbInfoId, edbInfo.Source, edbInfo.SubSource, edbInfo, fromEdbInfo, edbInfo.EdbCode, "")
 		}
 
 		return
@@ -230,7 +230,7 @@ func (obj PredictLjz) Edit(params BatchSaveCalculateBatchParams) (latestDateStr
 	}
 
 	//计算数据
-	latestDateStr, latestValue, err = obj.refresh(to, edbInfo.EdbInfoId, edbInfo.Source, edbInfo, fromEdbInfo, edbInfo.EdbCode, "")
+	latestDateStr, latestValue, err = obj.refresh(to, edbInfo.EdbInfoId, edbInfo.Source, edbInfo.SubSource, edbInfo, fromEdbInfo, edbInfo.EdbCode, "")
 
 	return
 }
@@ -263,7 +263,7 @@ func (obj PredictLjz) Refresh(params RefreshParams) (latestDateStr string, lates
 	}()
 
 	// 计算数据
-	latestDateStr, latestValue, err = obj.refresh(to, params.EdbInfo.EdbInfoId, params.EdbInfo.Source, params.EdbInfo, fromEdbInfo, params.EdbInfo.EdbCode, params.StartDate)
+	latestDateStr, latestValue, err = obj.refresh(to, params.EdbInfo.EdbInfoId, params.EdbInfo.Source, params.EdbInfo.SubSource, params.EdbInfo, fromEdbInfo, params.EdbInfo.EdbCode, params.StartDate)
 
 	return
 }
@@ -278,8 +278,8 @@ func (obj PredictLjz) GetSourceName() string {
 	return utils.DATA_SOURCE_NAME_PREDICT_CALCULATE_LJZ
 }
 
-func (obj PredictLjz) refresh(to orm.TxOrmer, edbInfoId, source int, edbInfo, fromEdbInfo *EdbInfo, edbCode, startDate string) (latestDateStr string, latestValue float64, err error) {
-	dataTableName := GetEdbDataTableName(source)
+func (obj PredictLjz) refresh(to orm.TxOrmer, edbInfoId, source, subSource int, edbInfo, fromEdbInfo *EdbInfo, edbCode, startDate string) (latestDateStr string, latestValue float64, err error) {
+	dataTableName := GetEdbDataTableName(source, subSource)
 	edbInfoIdStr := strconv.Itoa(edbInfoId)
 
 	var isWeekData bool // 是否周度数据,如果是周度数据的话,是需要变频的,最后结果还需要除以7

+ 7 - 7
models/predict_edb_data_calculate_ljznczj.go

@@ -111,7 +111,7 @@ func (obj PredictLjzNczj) Add(params BatchSaveCalculateBatchParams) (edbInfo *Ed
 	}
 
 	//计算数据
-	latestDateStr, latestValue, err = obj.refresh(to, edbInfo.EdbInfoId, edbInfo.Source, edbInfo, fromEdbInfo, edbInfo.EdbCode, "")
+	latestDateStr, latestValue, err = obj.refresh(to, edbInfo.EdbInfoId, edbInfo.Source, edbInfo.SubSource, edbInfo, fromEdbInfo, edbInfo.EdbCode, "")
 
 	return
 }
@@ -150,7 +150,7 @@ func (obj PredictLjzNczj) Edit(params BatchSaveCalculateBatchParams) (latestDate
 			_ = to.Commit()
 		}
 	}()
-	tableName := GetEdbDataTableName(edbInfo.Source)
+	tableName := GetEdbDataTableName(edbInfo.Source, edbInfo.SubSource)
 
 	var isRecalculate bool
 	if edbInfo.Frequency != req.Frequency {
@@ -183,7 +183,7 @@ func (obj PredictLjzNczj) Edit(params BatchSaveCalculateBatchParams) (latestDate
 
 		// 频度被换了,需要重新计算
 		if isRecalculate {
-			latestDateStr, latestValue, err = obj.refresh(to, edbInfo.EdbInfoId, edbInfo.Source, edbInfo, fromEdbInfo, edbInfo.EdbCode, "")
+			latestDateStr, latestValue, err = obj.refresh(to, edbInfo.EdbInfoId, edbInfo.Source, edbInfo.SubSource, edbInfo, fromEdbInfo, edbInfo.EdbCode, "")
 		}
 
 		return
@@ -228,7 +228,7 @@ func (obj PredictLjzNczj) Edit(params BatchSaveCalculateBatchParams) (latestDate
 	}
 
 	//计算数据
-	latestDateStr, latestValue, err = obj.refresh(to, edbInfo.EdbInfoId, edbInfo.Source, edbInfo, fromEdbInfo, edbInfo.EdbCode, "")
+	latestDateStr, latestValue, err = obj.refresh(to, edbInfo.EdbInfoId, edbInfo.Source, edbInfo.SubSource, edbInfo, fromEdbInfo, edbInfo.EdbCode, "")
 
 	return
 }
@@ -261,7 +261,7 @@ func (obj PredictLjzNczj) Refresh(params RefreshParams) (latestDateStr string, l
 	}()
 
 	// 计算数据
-	latestDateStr, latestValue, err = obj.refresh(to, params.EdbInfo.EdbInfoId, params.EdbInfo.Source, params.EdbInfo, fromEdbInfo, params.EdbInfo.EdbCode, params.StartDate)
+	latestDateStr, latestValue, err = obj.refresh(to, params.EdbInfo.EdbInfoId, params.EdbInfo.Source, params.EdbInfo.SubSource, params.EdbInfo, fromEdbInfo, params.EdbInfo.EdbCode, params.StartDate)
 
 	return
 }
@@ -276,8 +276,8 @@ func (obj PredictLjzNczj) GetSourceName() string {
 	return utils.DATA_SOURCE_NAME_PREDICT_CALCULATE_LJZNCZJ
 }
 
-func (obj PredictLjzNczj) refresh(to orm.TxOrmer, edbInfoId, source int, edbInfo, fromEdbInfo *EdbInfo, edbCode, startDate string) (latestDateStr string, latestValue float64, err error) {
-	dataTableName := GetEdbDataTableName(source)
+func (obj PredictLjzNczj) refresh(to orm.TxOrmer, edbInfoId, source, subSource int, edbInfo, fromEdbInfo *EdbInfo, edbCode, startDate string) (latestDateStr string, latestValue float64, err error) {
+	dataTableName := GetEdbDataTableName(source, subSource)
 	edbInfoIdStr := strconv.Itoa(edbInfoId)
 
 	var isWeekData bool // 是否周度数据,如果是周度数据的话,是需要变频的,最后结果还需要除以7

+ 4 - 4
models/predict_edb_data_calculate_ljztbpj.go

@@ -291,7 +291,7 @@ func SavePredictCalculateLjztbpj(req *EdbInfoCalculateBatchSaveReq, firstEdbInfo
 		// 如果需要重新计算,那么先删除所有的指标数据,然后再重新计算
 		if isNeedCalculateData {
 			// 删除之前所有的指标数据
-			tableName := GetEdbDataTableName(edbInfo.Source)
+			tableName := GetEdbDataTableName(edbInfo.Source, edbInfo.SubSource)
 			sql = fmt.Sprintf(` DELETE FROM %s WHERE edb_info_id = ? `, tableName)
 			_, err = to.Raw(sql, edbInfo.EdbInfoId).Exec()
 			if err != nil {
@@ -451,7 +451,7 @@ func refreshAllPredictCalculateLjztbpj(to orm.TxOrmer, edbInfo, firstEdbInfo, se
 		pars = append(pars, startCalculationDate, existItemB.FromEdbInfoId)
 
 		//第二个指标的数据列表
-		secondDataList, tmpErr := GetEdbDataListAllByTo(to, condition, pars, existItemB.FromSource, 0)
+		secondDataList, tmpErr := GetEdbDataListAllByTo(to, condition, pars, existItemB.FromSource, existItemB.FromSubSource, 0)
 		if tmpErr != nil {
 			err = tmpErr
 			return
@@ -565,7 +565,7 @@ func refreshAllPredictCalculateLjztbpj(to orm.TxOrmer, edbInfo, firstEdbInfo, se
 			removeDateStr := strings.Join(removeDateList, `","`)
 			removeDateStr = `"` + removeDateStr + `"`
 			//如果拼接指标变更了,那么需要删除所有的指标数据
-			tableName := GetEdbDataTableName(edbInfo.Source)
+			tableName := GetEdbDataTableName(edbInfo.Source, edbInfo.SubSource)
 			sql := fmt.Sprintf(` DELETE FROM %s WHERE edb_info_id = ? and data_time in (%s) `, tableName, removeDateStr)
 
 			_, err = to.Raw(sql, edbInfo.EdbInfoId).Exec()
@@ -578,7 +578,7 @@ func refreshAllPredictCalculateLjztbpj(to orm.TxOrmer, edbInfo, firstEdbInfo, se
 
 	//修改现有的数据中对应的值
 	{
-		tableName := GetEdbDataTableName(edbInfo.Source)
+		tableName := GetEdbDataTableName(edbInfo.Source, edbInfo.SubSource)
 		for edbDate, edbDataValue := range updateEdbDataMap {
 			sql := fmt.Sprintf(` UPDATE  %s set value = ?,modify_time=now() WHERE edb_info_id = ? and data_time = ? `, tableName)
 			_, err = to.Raw(sql, edbDataValue, edbInfo.EdbInfoId, edbDate).Exec()

+ 6 - 6
models/predict_edb_data_calculate_ljzzj.go

@@ -87,7 +87,7 @@ func (obj PredictLjzzj) Add(params BatchSaveCalculateBatchParams) (edbInfo *EdbI
 	}
 
 	//计算数据
-	latestDateStr, latestValue, err = obj.refresh(to, edbInfo.EdbInfoId, edbInfo.Source, fromEdbInfo, edbInfo.EdbCode)
+	latestDateStr, latestValue, err = obj.refresh(to, edbInfo.EdbInfoId, edbInfo.Source, edbInfo.SubSource, fromEdbInfo, edbInfo.EdbCode)
 
 	return
 }
@@ -119,7 +119,7 @@ func (obj PredictLjzzj) Edit(params BatchSaveCalculateBatchParams) (latestDateSt
 			_ = to.Commit()
 		}
 	}()
-	tableName := GetEdbDataTableName(edbInfo.Source)
+	tableName := GetEdbDataTableName(edbInfo.Source, edbInfo.SubSource)
 
 	//修改指标信息
 	edbInfo.EdbName = req.EdbName
@@ -187,7 +187,7 @@ func (obj PredictLjzzj) Edit(params BatchSaveCalculateBatchParams) (latestDateSt
 	}
 
 	//计算数据
-	latestDateStr, latestValue, err = obj.refresh(to, edbInfo.EdbInfoId, edbInfo.Source, fromEdbInfo, edbInfo.EdbCode)
+	latestDateStr, latestValue, err = obj.refresh(to, edbInfo.EdbInfoId, edbInfo.Source, edbInfo.SubSource, fromEdbInfo, edbInfo.EdbCode)
 
 	return
 }
@@ -220,7 +220,7 @@ func (obj PredictLjzzj) Refresh(params RefreshParams) (latestDateStr string, lat
 	}()
 
 	// 计算数据
-	latestDateStr, latestValue, err = obj.refresh(to, params.EdbInfo.EdbInfoId, params.EdbInfo.Source, fromEdbInfo, params.EdbInfo.EdbCode)
+	latestDateStr, latestValue, err = obj.refresh(to, params.EdbInfo.EdbInfoId, params.EdbInfo.Source, params.EdbInfo.SubSource, fromEdbInfo, params.EdbInfo.EdbCode)
 
 	return
 }
@@ -235,8 +235,8 @@ func (obj PredictLjzzj) GetSourceName() string {
 	return utils.DATA_SOURCE_NAME_PREDICT_CALCULATE_LJZZJ
 }
 
-func (obj PredictLjzzj) refresh(to orm.TxOrmer, edbInfoId, source int, fromEdbInfo *EdbInfo, edbCode string) (latestDateStr string, latestValue float64, err error) {
-	dataTableName := GetEdbDataTableName(source)
+func (obj PredictLjzzj) refresh(to orm.TxOrmer, edbInfoId, source, subSource int, fromEdbInfo *EdbInfo, edbCode string) (latestDateStr string, latestValue float64, err error) {
+	dataTableName := GetEdbDataTableName(source, subSource)
 	edbInfoIdStr := strconv.Itoa(edbInfoId)
 
 	// 获取来源指标的数据

+ 5 - 5
models/predict_edb_data_calculate_ljzzy.go

@@ -148,13 +148,13 @@ func SavePredictCalculateLjzzy(req *EdbInfoCalculateBatchSaveReq, fromEdbInfo *E
 	}
 
 	//计算数据
-	latestDateStr, latestValue, err = refreshAllPredictCalculateLjzzy(to, edbInfo.EdbInfoId, edbInfo.Source, fromEdbInfo, edbInfo.EdbCode, "", "")
+	latestDateStr, latestValue, err = refreshAllPredictCalculateLjzzy(to, edbInfo.EdbInfoId, edbInfo.Source, edbInfo.SubSource, fromEdbInfo, edbInfo.EdbCode, "", "")
 
 	return
 }
 
 // RefreshAllPredictCalculateLjzzy 刷新全部累计值转月数据
-func RefreshAllPredictCalculateLjzzy(edbInfoId, source int, fromEdbInfo *EdbInfo, edbCode, startDate, endDate string) (latestDateStr string, latestValue float64, err error) {
+func RefreshAllPredictCalculateLjzzy(edbInfoId, source, subSource int, fromEdbInfo *EdbInfo, edbCode, startDate, endDate string) (latestDateStr string, latestValue float64, err error) {
 	o := orm.NewOrm()
 	to, err := o.Begin()
 	if err != nil {
@@ -170,12 +170,12 @@ func RefreshAllPredictCalculateLjzzy(edbInfoId, source int, fromEdbInfo *EdbInfo
 	}()
 
 	// 计算数据
-	latestDateStr, latestValue, err = refreshAllPredictCalculateLjzzy(to, edbInfoId, source, fromEdbInfo, edbCode, startDate, endDate)
+	latestDateStr, latestValue, err = refreshAllPredictCalculateLjzzy(to, edbInfoId, source, subSource, fromEdbInfo, edbCode, startDate, endDate)
 
 	return
 }
 
-func refreshAllPredictCalculateLjzzy(to orm.TxOrmer, edbInfoId, source int, fromEdbInfo *EdbInfo, edbCode, startDate, endDate string) (latestDateStr string, latestValue float64, err error) {
+func refreshAllPredictCalculateLjzzy(to orm.TxOrmer, edbInfoId, source, subSource int, fromEdbInfo *EdbInfo, edbCode, startDate, endDate string) (latestDateStr string, latestValue float64, err error) {
 	edbInfoIdStr := strconv.Itoa(edbInfoId)
 	dataList, err := GetPredictEdbDataListAllByStartDate(fromEdbInfo, 1, startDate)
 	if err != nil {
@@ -208,7 +208,7 @@ func refreshAllPredictCalculateLjzzy(to orm.TxOrmer, edbInfoId, source int, from
 	var isAdd bool
 	//获取指标所有数据
 	existDataList := make([]*EdbData, 0)
-	dataTableName := GetEdbDataTableName(source)
+	dataTableName := GetEdbDataTableName(source, subSource)
 	sql := `SELECT * FROM %s WHERE edb_info_id=? `
 	sql = fmt.Sprintf(sql, dataTableName)
 	_, err = to.Raw(sql, edbInfoId).QueryRows(&existDataList)

+ 8 - 8
models/predict_edb_data_calculate_nh.go

@@ -145,7 +145,7 @@ func SavePredictCalculateNh(reqEdbInfoId, classifyId int, edbName, frequency, un
 		}
 
 		//清空原有已经入库的数据
-		tableName := GetEdbDataTableName(edbInfo.Source)
+		tableName := GetEdbDataTableName(edbInfo.Source, edbInfo.SubSource)
 		sql = ` DELETE FROM ` + tableName + ` WHERE edb_info_id = ? `
 		_, err = to.Raw(sql, edbInfo.EdbInfoId).Exec()
 		if err != nil {
@@ -179,13 +179,13 @@ func SavePredictCalculateNh(reqEdbInfoId, classifyId int, edbName, frequency, un
 	}
 
 	// 计算数据
-	latestDateStr, latestValue, err = refreshAllPredictCalculateNh(to, edbInfo.EdbInfoId, edbInfo.Source, fromEdbInfo, edbCode)
+	latestDateStr, latestValue, err = refreshAllPredictCalculateNh(to, edbInfo.EdbInfoId, edbInfo.Source, edbInfo.SubSource, fromEdbInfo, edbCode)
 
 	return
 }
 
 // RefreshAllPredictCalculateNh 刷新全部预测年化值数据
-func RefreshAllPredictCalculateNh(edbInfoId, source int, fromEdbInfo *EdbInfo, edbCode, edbFrequency, formula string) (latestDateStr string, latestValue float64, err error) {
+func RefreshAllPredictCalculateNh(edbInfoId, source, subSource int, fromEdbInfo *EdbInfo, edbCode, edbFrequency, formula string) (latestDateStr string, latestValue float64, err error) {
 	o := orm.NewOrm()
 	to, err := o.Begin()
 	if err != nil {
@@ -201,17 +201,17 @@ func RefreshAllPredictCalculateNh(edbInfoId, source int, fromEdbInfo *EdbInfo, e
 	}()
 
 	// 计算数据
-	latestDateStr, latestValue, err = refreshAllPredictCalculateNh(to, edbInfoId, source, fromEdbInfo, edbCode)
+	latestDateStr, latestValue, err = refreshAllPredictCalculateNh(to, edbInfoId, source, subSource, fromEdbInfo, edbCode)
 	return
 }
 
 // refreshAllPredictCalculateNh 刷新预测年化数据
-func refreshAllPredictCalculateNh(to orm.TxOrmer, edbInfoId, source int, fromEdbInfo *EdbInfo, edbCode string) (latestDateStr string, latestValue float64, err error) {
+func refreshAllPredictCalculateNh(to orm.TxOrmer, edbInfoId, source, subSource int, fromEdbInfo *EdbInfo, edbCode string) (latestDateStr string, latestValue float64, err error) {
 	edbInfoIdStr := strconv.Itoa(edbInfoId)
-	tableName := GetEdbDataTableName(utils.DATA_SOURCE_PREDICT_CALCULATE_NH)
+	tableName := GetEdbDataTableName(utils.DATA_SOURCE_PREDICT_CALCULATE_NH, subSource)
 
 	//获取年化指标所有数据
-	existDataList, err := GetAllEdbDataListByTo(to, edbInfoId, source)
+	existDataList, err := GetAllEdbDataListByTo(to, edbInfoId, source, subSource)
 	if err != nil {
 		return
 	}
@@ -337,7 +337,7 @@ func refreshAllPredictCalculateNh(to orm.TxOrmer, edbInfoId, source int, fromEdb
 			existVal, _ := existValDeci.Round(4).Float64()
 			// 判断年化数据的值 与 当前计算出来的结果, 如果两个数据结果不相等的话,那么就修改咯
 			if existVal != currVal {
-				err = ModifyEdbDataById(source, existData.EdbDataId, fmt.Sprint(currVal))
+				err = ModifyEdbDataById(source, subSource, existData.EdbDataId, fmt.Sprint(currVal))
 				if err != nil {
 					return
 				}

+ 2 - 2
models/predict_edb_data_calculate_nhcc.go

@@ -290,7 +290,7 @@ func SavePredictCalculateNhcc(req *EdbInfoCalculateBatchSaveReq, firstEdbInfo, s
 		// 如果需要重新计算,那么先删除所有的指标数据,然后再重新计算
 		if isNeedCalculateData {
 			// 删除之前所有的指标数据
-			tableName := GetEdbDataTableName(edbInfo.Source)
+			tableName := GetEdbDataTableName(edbInfo.Source, edbInfo.SubSource)
 			sql := fmt.Sprintf(` DELETE FROM %s WHERE edb_info_id = ? `, tableName)
 			_, err = to.Raw(sql, edbInfo.EdbInfoId).Exec()
 			if err != nil {
@@ -518,7 +518,7 @@ func refreshAllPredictCalculateNhcc(to orm.TxOrmer, edbInfo, firstEdbInfo, secon
 		removeNum := len(removeDateList)
 		if removeNum > 0 {
 			//如果拼接指标变更了,那么需要删除所有的指标数据
-			tableName := GetEdbDataTableName(edbInfo.Source)
+			tableName := GetEdbDataTableName(edbInfo.Source, edbInfo.SubSource)
 			sql := fmt.Sprintf(` DELETE FROM %s WHERE edb_info_id = ? and data_time in (`+utils.GetOrmInReplace(removeNum)+`) `, tableName)
 			_, err = to.Raw(sql, edbInfo.EdbInfoId, removeDateList).Exec()
 			if err != nil {

+ 6 - 6
models/predict_edb_data_calculate_nszydbpjjs.go

@@ -179,7 +179,7 @@ func SavePredictCalculateNszydpjjs(reqEdbInfoId, classifyId int, edbName, freque
 		}
 
 		// 删除该指标所有的同比数据
-		dataTableName := GetEdbDataTableName(utils.DATA_SOURCE_PREDICT_CALCULATE_NSZYDPJJS)
+		dataTableName := GetEdbDataTableName(utils.DATA_SOURCE_PREDICT_CALCULATE_NSZYDPJJS, utils.DATA_SUB_SOURCE_EDB)
 		deleteSql := ` DELETE FROM %s WHERE edb_info_id=? `
 		deleteSql = fmt.Sprintf(deleteSql, dataTableName)
 		_, err = to.Raw(deleteSql, edbInfo.EdbInfoId).Exec()
@@ -188,13 +188,13 @@ func SavePredictCalculateNszydpjjs(reqEdbInfoId, classifyId int, edbName, freque
 		}
 	}
 
-	latestDateStr, latestValue, err = refreshAllPredictCalculateNszydpjjs(to, edbInfo.EdbInfoId, edbInfo.Source, formulaInt, fromEdbInfo, edbInfo.EdbCode, "")
+	latestDateStr, latestValue, err = refreshAllPredictCalculateNszydpjjs(to, edbInfo.EdbInfoId, edbInfo.Source, edbInfo.SubSource, formulaInt, fromEdbInfo, edbInfo.EdbCode, "")
 
 	return
 }
 
 // RefreshAllPredictCalculateNszydpjjs 刷新所有 N数值移动平均计算指标 数据
-func RefreshAllPredictCalculateNszydpjjs(edbInfoId, source, formulaInt int, fromEdbInfo *EdbInfo, edbCode, startDate string) (latestDateStr string, latestValue float64, err error) {
+func RefreshAllPredictCalculateNszydpjjs(edbInfoId, source, subSource, formulaInt int, fromEdbInfo *EdbInfo, edbCode, startDate string) (latestDateStr string, latestValue float64, err error) {
 	o := orm.NewOrm()
 	to, err := o.Begin()
 	if err != nil {
@@ -209,20 +209,20 @@ func RefreshAllPredictCalculateNszydpjjs(edbInfoId, source, formulaInt int, from
 		}
 	}()
 
-	latestDateStr, latestValue, err = refreshAllPredictCalculateNszydpjjs(to, edbInfoId, source, formulaInt, fromEdbInfo, edbCode, startDate)
+	latestDateStr, latestValue, err = refreshAllPredictCalculateNszydpjjs(to, edbInfoId, source, subSource, formulaInt, fromEdbInfo, edbCode, startDate)
 
 	return
 }
 
 // refreshAllPredictCalculateNszydpjjs 更新全部N数值移动平均计算
-func refreshAllPredictCalculateNszydpjjs(to orm.TxOrmer, edbInfoId, source, formulaInt int, fromEdbInfo *EdbInfo, edbCode, startDate string) (latestDateStr string, latestValue float64, err error) {
+func refreshAllPredictCalculateNszydpjjs(to orm.TxOrmer, edbInfoId, source, subSource, formulaInt int, fromEdbInfo *EdbInfo, edbCode, startDate string) (latestDateStr string, latestValue float64, err error) {
 	edbInfoIdStr := strconv.Itoa(edbInfoId)
 	fmt.Println(edbInfoIdStr)
 	fmt.Println("refreshAllCalculateNszydpjjs startDate:", startDate)
 
 	// 获取关联指标数据
 	existDataList := make([]*EdbData, 0)
-	dataTableName := GetEdbDataTableName(source)
+	dataTableName := GetEdbDataTableName(source, subSource)
 	fmt.Println("dataTableName:", dataTableName)
 
 	sql := `SELECT * FROM %s WHERE edb_info_id=? `

+ 4 - 4
models/predict_edb_data_calculate_percentile.go

@@ -129,7 +129,7 @@ func (obj PredictPercentile) Edit(params BatchSaveCalculateBatchParams) (latestD
 			_ = to.Commit()
 		}
 	}()
-	tableName := GetEdbDataTableName(edbInfo.Source)
+	tableName := GetEdbDataTableName(edbInfo.Source, edbInfo.SubSource)
 
 	var isRecalculate bool
 	if edbInfo.CalculateFormula != req.Formula {
@@ -257,7 +257,7 @@ func (obj PredictPercentile) GetSourceName() string {
 
 func (obj PredictPercentile) refresh(to orm.TxOrmer, edbInfo, fromEdbInfo *EdbInfo, edbCode, startDate string) (latestDateStr string, latestValue float64, err error, errMsg string) {
 	edbInfoId := edbInfo.EdbInfoId
-	dataTableName := GetEdbDataTableName(edbInfo.Source)
+	dataTableName := GetEdbDataTableName(edbInfo.Source, edbInfo.SubSource)
 	edbInfoIdStr := strconv.Itoa(edbInfoId)
 
 	var percentileConfig PercentileConfig
@@ -357,7 +357,7 @@ func (obj PredictPercentile) refresh(to orm.TxOrmer, edbInfo, fromEdbInfo *EdbIn
 
 	//确定实际数据的最终值
 	{
-		finalLast, tmpErr := GetFinalLastByTo(to, edbInfoId, edbInfo.Source, fromEdbInfo.LatestDate)
+		finalLast, tmpErr := GetFinalLastByTo(to, edbInfoId, edbInfo.Source, edbInfo.SubSource, fromEdbInfo.LatestDate)
 		if tmpErr != nil && tmpErr.Error() != utils.ErrNoRow() {
 			return
 		}
@@ -382,7 +382,7 @@ func (obj PredictPercentile) getPercentileData(fromEdbInfo *EdbInfo, calculateVa
 		pars = append(pars, fromEdbInfo.EdbInfoId)
 
 		//获取来源指标的数据
-		dataList, err = GetEdbDataListAll(condition, pars, fromEdbInfo.Source, 1)
+		dataList, err = GetEdbDataListAll(condition, pars, fromEdbInfo.Source, fromEdbInfo.SubSource, 1)
 	case 1:
 		dataList, err = GetPredictEdbDataListAllByStartDate(fromEdbInfo, 1, "")
 	default:

Some files were not shown because too many files changed in this diff