Browse Source

Merge remote-tracking branch 'origin/debug'

Roc 3 năm trước cách đây
mục cha
commit
b710c1bcf8
44 tập tin đã thay đổi với 3137 bổ sung347 xóa
  1. 21 21
      controllers/base_from_calculate.go
  2. 107 0
      controllers/base_from_cffex.go
  3. 107 0
      controllers/base_from_dl.go
  4. 107 0
      controllers/base_from_gie.go
  5. 4 4
      controllers/base_from_lt.go
  6. 3 4
      controllers/base_from_lz.go
  7. 2 2
      controllers/base_from_manual.go
  8. 2 2
      controllers/base_from_mysteel.go
  9. 4 4
      controllers/base_from_pb.go
  10. 107 0
      controllers/base_from_sh.go
  11. 107 0
      controllers/base_from_shfe.go
  12. 3 3
      controllers/base_from_smm.go
  13. 2 2
      controllers/base_from_ths.go
  14. 1 1
      controllers/base_from_wind.go
  15. 107 0
      controllers/base_from_zz.go
  16. 1 1
      main.go
  17. 2 30
      models/base_from_calculate.go
  18. 234 0
      models/base_from_cffex.go
  19. 232 0
      models/base_from_dl.go
  20. 299 0
      models/base_from_gie.go
  21. 1 1
      models/base_from_manual.go
  22. 4 4
      models/base_from_mysteel.go
  23. 233 0
      models/base_from_sh.go
  24. 231 0
      models/base_from_shfe.go
  25. 232 0
      models/base_from_zz.go
  26. 4 2
      models/db.go
  27. 12 1
      models/edb_data_base.go
  28. 187 31
      models/edb_data_calculate_bp.go
  29. 3 29
      models/edb_data_calculate_hbz.go
  30. 3 29
      models/edb_data_calculate_hcz.go
  31. 3 29
      models/edb_data_calculate_ljzzy.go
  32. 3 29
      models/edb_data_calculate_nszydbpjjs.go
  33. 4 30
      models/edb_data_calculate_tbz.go
  34. 3 29
      models/edb_data_calculate_tcz.go
  35. 3 34
      models/edb_data_calculate_time_shift.go
  36. 2 0
      models/edb_data_table.go
  37. 63 0
      models/edb_info_calculate_mapping.go
  38. 108 0
      routers/commentsRouter_controllers.go
  39. 30 0
      routers/router.go
  40. 6 5
      services/base_from_pb.go
  41. 323 8
      swagger/swagger.json
  42. 221 7
      swagger/swagger.yml
  43. 2 3
      utils/config.go
  44. 4 2
      utils/constants.go

+ 21 - 21
controllers/base_from_calculate.go

@@ -543,7 +543,6 @@ func (this *CalculateController) Refresh() {
 		this.Data["json"] = br
 		this.ServeJSON()
 	}()
-	source := utils.DATA_SOURCE_LT
 	var req models.RefreshEdbInfoReq
 	err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
 	if err != nil {
@@ -576,8 +575,9 @@ func (this *CalculateController) Refresh() {
 		var errMsg string
 		endDate := time.Now().Format(utils.FormatDate)
 		edbInfoId := edbInfo.EdbInfoId
+		source := edbInfo.Source
 
-		switch edbInfo.Source {
+		switch source {
 		case utils.DATA_SOURCE_CALCULATE:
 			startDate = edbInfo.StartDate
 			sTime, err := time.Parse(utils.FormatDate, edbInfo.EndDate)
@@ -587,7 +587,7 @@ func (this *CalculateController) Refresh() {
 			startDate = sTime.Format(utils.FormatDate)
 
 			var edbInfoIdBytes []string
-			calculateMap, err := models.GetEdbInfoCalculateDetail(edbInfo.EdbInfoId)
+			calculateMap, err := models.GetEdbInfoCalculateDetailList(edbInfo.EdbInfoId)
 			if err != nil {
 				errMsg = "GetEdbInfoCalculateDetail Err:" + err.Error()
 				break
@@ -602,12 +602,12 @@ func (this *CalculateController) Refresh() {
 				edbInfoList = append(edbInfoList, edbInfo)
 			}
 			err = models.RefreshAllCalculate(edbInfoList, edbInfo.EdbInfoId, source, edbInfo.EdbCode, edbInfo.CalculateFormula, startDate, endDate, edbInfoIdBytes)
-			if err != nil {
+			if err != nil && err.Error() != utils.ErrNoRow() {
 				errMsg = "RefreshCalculate Err:" + err.Error()
 				break
 			}
 		case utils.DATA_SOURCE_CALCULATE_LJZZY: //刷新累计值转月值
-			calculateLjzzy, err := models.GetEdbInfoCalculateLjzzyDetail(edbInfoId)
+			calculateLjzzy, err := models.GetEdbInfoCalculateMappingDetail(edbInfoId)
 			if err != nil {
 				errMsg = "GetEdbInfoCalculateLjzzyDetail Err:" + err.Error()
 				break
@@ -620,12 +620,12 @@ func (this *CalculateController) Refresh() {
 			startDate = edbInfo.StartDate
 			endDate = time.Now().Format(utils.FormatDate)
 			err = models.RefreshAllCalculateLjzzy(edbInfoId, source, fromEdbInfo, calculateLjzzy.EdbCode, startDate, endDate)
-			if err != nil {
+			if err != nil && err.Error() != utils.ErrNoRow() {
 				errMsg = "RefreshAllCalculateLjzzy Err:" + err.Error()
 				break
 			}
 		case utils.DATA_SOURCE_CALCULATE_TBZ: //刷新同比值
-			calculateTbz, err := models.GetEdbInfoCalculateTbzDetail(edbInfoId)
+			calculateTbz, err := models.GetEdbInfoCalculateMappingDetail(edbInfoId)
 			if err != nil {
 				errMsg = "GetEdbInfoCalculateTbzDetail Err:" + err.Error()
 				break
@@ -638,12 +638,12 @@ func (this *CalculateController) Refresh() {
 			startDate = edbInfo.StartDate
 			endDate = time.Now().Format(utils.FormatDate)
 			err = models.RefreshAllCalculateTbz(edbInfoId, source, fromEdbInfo, calculateTbz.EdbCode, startDate, endDate)
-			if err != nil {
+			if err != nil && err.Error() != utils.ErrNoRow() {
 				errMsg = "RefreshAllCalculateTbz Err:" + err.Error()
 				break
 			}
 		case utils.DATA_SOURCE_CALCULATE_TCZ: //同差值
-			calculateTcz, err := models.GetEdbInfoCalculateTczDetail(edbInfoId)
+			calculateTcz, err := models.GetEdbInfoCalculateMappingDetail(edbInfoId)
 			if err != nil {
 				errMsg = "GetEdbInfoCalculateTczDetail Err:" + err.Error()
 				break
@@ -656,12 +656,12 @@ func (this *CalculateController) Refresh() {
 			startDate = edbInfo.StartDate
 			endDate = time.Now().Format(utils.FormatDate)
 			err = models.RefreshAllCalculateTcz(edbInfoId, source, fromEdbInfo, calculateTcz.EdbCode, startDate, endDate)
-			if err != nil {
+			if err != nil && err.Error() != utils.ErrNoRow() {
 				errMsg = "RefreshCalculateTcz Err:" + err.Error()
 				break
 			}
 		case utils.DATA_SOURCE_CALCULATE_NSZYDPJJS: //N数值移动平均计算
-			calculateNszydpjjs, err := models.GetEdbInfoCalculateNszydpjjsDetail(edbInfoId)
+			calculateNszydpjjs, err := models.GetEdbInfoCalculateMappingDetail(edbInfoId)
 			if err != nil {
 				errMsg = "GetEdbInfoCalculateNszydpjjsDetail Err:" + err.Error()
 				break
@@ -674,12 +674,12 @@ func (this *CalculateController) Refresh() {
 			formulaInt, _ := strconv.Atoi(edbInfo.CalculateFormula)
 			startDate = edbInfo.StartDate
 			err = models.RefreshAllCalculateNszydpjjs(edbInfoId, edbInfo.Source, formulaInt, fromEdbInfo, calculateNszydpjjs.EdbCode, startDate)
-			if err != nil {
+			if err != nil && err.Error() != utils.ErrNoRow() {
 				errMsg = "RefreshCalculateNszydpjjs Err:" + err.Error()
 				break
 			}
 		case utils.DATA_SOURCE_CALCULATE_HBZ: //刷新环比值
-			calculateTbz, err := models.GetEdbInfoCalculateHbzDetail(edbInfoId)
+			calculateTbz, err := models.GetEdbInfoCalculateMappingDetail(edbInfoId)
 			if err != nil {
 				errMsg = "GetEdbInfoCalculateHbzDetail Err:" + err.Error()
 				break
@@ -693,12 +693,12 @@ func (this *CalculateController) Refresh() {
 			endDate = time.Now().Format(utils.FormatDate)
 			formulaInt, _ := strconv.Atoi(edbInfo.CalculateFormula)
 			err = models.RefreshAllCalculateHbz(edbInfoId, source, fromEdbInfo, calculateTbz.EdbCode, startDate, endDate, formulaInt)
-			if err != nil {
+			if err != nil && err.Error() != utils.ErrNoRow() {
 				errMsg = "RefreshAllCalculateHbz Err:" + err.Error()
 				break
 			}
 		case utils.DATA_SOURCE_CALCULATE_HCZ: //刷新环差值
-			calculateTbz, err := models.GetEdbInfoCalculateHczDetail(edbInfoId)
+			calculateTbz, err := models.GetEdbInfoCalculateMappingDetail(edbInfoId)
 			if err != nil {
 				errMsg = "GetEdbInfoCalculateHczDetail Err:" + err.Error()
 				break
@@ -712,12 +712,12 @@ func (this *CalculateController) Refresh() {
 			endDate = time.Now().Format(utils.FormatDate)
 			formulaInt, _ := strconv.Atoi(edbInfo.CalculateFormula)
 			err = models.RefreshAllCalculateHcz(edbInfoId, source, fromEdbInfo, calculateTbz.EdbCode, startDate, endDate, formulaInt)
-			if err != nil {
+			if err != nil && err.Error() != utils.ErrNoRow() {
 				errMsg = "RefreshAllCalculateHcz Err:" + err.Error()
 				break
 			}
 		case utils.DATA_SOURCE_CALCULATE_BP: //刷新变频
-			calculateTbz, err := models.GetEdbInfoCalculateBpDetail(edbInfoId)
+			calculateTbz, err := models.GetEdbInfoCalculateMappingDetail(edbInfoId)
 			if err != nil {
 				errMsg = "GetEdbInfoCalculateTbzDetail Err:" + err.Error()
 				break
@@ -730,7 +730,7 @@ func (this *CalculateController) Refresh() {
 			startDate = edbInfo.StartDate
 			endDate = time.Now().Format(utils.FormatDate)
 			err = models.RefreshAllCalculateBp(edbInfoId, source, fromEdbInfo, calculateTbz.EdbCode, startDate, endDate)
-			if err != nil {
+			if err != nil && err.Error() != utils.ErrNoRow() {
 				errMsg = "RefreshAllCalculateBp Err:" + err.Error()
 				break
 			}
@@ -749,18 +749,18 @@ func (this *CalculateController) Refresh() {
 			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)
-			if err != nil {
+			if err != nil && err.Error() != utils.ErrNoRow() {
 				errMsg = "RefreshAllCalculateTimeShift Err:" + err.Error()
 			}
 		case utils.DATA_SOURCE_CALCULATE_ZJPJ: //刷新直接拼接
 			err = models.RefreshAllCalculateZjpj(edbInfo)
-			if err != nil {
+			if err != nil && err.Error() != utils.ErrNoRow() {
 				errMsg = "RefreshAllCalculateZjpj Err:" + err.Error()
 				break
 			}
 		case utils.DATA_SOURCE_CALCULATE_LJZTBPJ: //刷新累计值同比拼接
 			err = models.RefreshAllCalculateLjztbpj(edbInfo)
-			if err != nil {
+			if err != nil && err.Error() != utils.ErrNoRow() {
 				errMsg = "RefreshAllCalculateLjztbpj Err:" + err.Error()
 				break
 			}

+ 107 - 0
controllers/base_from_cffex.go

@@ -0,0 +1,107 @@
+package controllers
+
+import (
+	"encoding/json"
+	"hongze/hongze_edb_lib/models"
+	"hongze/hongze_edb_lib/utils"
+	"strconv"
+	"time"
+)
+
+//中金所
+type CffexController struct {
+	BaseAuthController
+}
+
+// @Title 新增中金所指标接口
+// @Description 新增中金所指标接口
+// @Success 200 {object} models.AddEdbInfoReq
+// @router /add [post]
+func (this *CffexController) 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_CFFEX
+	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.EdbCode
+	if !utils.Rc.IsExist(cacheKey) {
+		utils.Rc.SetNX(cacheKey, 1, 1*time.Minute)
+		err = models.AddEdbDataFromCffex(req.EdbCode)
+		if err != nil {
+			br.Msg = "获取指标信息失败!"
+			br.ErrMsg = "获取指标信息失败 AddEdbDataFromCffex,Err:" + err.Error()
+			return
+		}
+		br.Ret = 200
+		br.Success = true
+		br.Msg = "获取成功"
+	} else {
+		br.Ret = 501
+		br.Success = true
+		br.Msg = "系统处理中,请稍后重试"
+	}
+}
+
+// @Title 刷新中金所指标接口
+// @Description 刷新中金所指标接口
+// @Success 200 {object} models.RefreshEdbInfoReq
+// @router /refresh [post]
+func (this *CffexController) Refresh() {
+	br := new(models.BaseResponse).Init()
+	var cacheKey string
+	defer func() {
+		utils.Rc.Delete(cacheKey)
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+	source := utils.DATA_SOURCE_CFFEX
+	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) {
+		utils.Rc.SetNX(cacheKey, 1, 1*time.Minute)
+		err = models.RefreshEdbDataFromCffex(req.EdbInfoId, req.EdbCode, req.StartDate)
+		if err != nil && err.Error() != utils.ErrNoRow() {
+			br.Msg = "刷新指标信息失败!"
+			br.ErrMsg = "刷新指标信息失败 RefreshEdbDataFromCffex,Err:" + err.Error()
+			return
+		}
+		br.Ret = 200
+		br.Success = true
+		br.Msg = "获取成功"
+	} else {
+		br.Ret = 501
+		br.Success = true
+		br.Msg = "系统处理中,请稍后重试"
+	}
+}

+ 107 - 0
controllers/base_from_dl.go

@@ -0,0 +1,107 @@
+package controllers
+
+import (
+	"encoding/json"
+	"hongze/hongze_edb_lib/models"
+	"hongze/hongze_edb_lib/utils"
+	"strconv"
+	"time"
+)
+
+//大商所
+type DlController struct {
+	BaseAuthController
+}
+
+// @Title 新增大商所指标接口
+// @Description 新增大商所指标接口
+// @Success 200 {object} models.AddEdbInfoReq
+// @router /add [post]
+func (this *DlController) 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_DL
+	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.EdbCode
+	if !utils.Rc.IsExist(cacheKey) {
+		utils.Rc.SetNX(cacheKey, 1, 1*time.Minute)
+		err = models.AddEdbDataFromDl(req.EdbCode)
+		if err != nil {
+			br.Msg = "获取指标信息失败!"
+			br.ErrMsg = "获取指标信息失败 AddEdbDataFromDl,Err:" + err.Error()
+			return
+		}
+		br.Ret = 200
+		br.Success = true
+		br.Msg = "获取成功"
+	} else {
+		br.Ret = 501
+		br.Success = true
+		br.Msg = "系统处理中,请稍后重试"
+	}
+}
+
+// @Title 刷新大商所指标接口
+// @Description 刷新大商所指标接口
+// @Success 200 {object} models.RefreshEdbInfoReq
+// @router /refresh [post]
+func (this *DlController) Refresh() {
+	br := new(models.BaseResponse).Init()
+	var cacheKey string
+	defer func() {
+		utils.Rc.Delete(cacheKey)
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+	source := utils.DATA_SOURCE_DL
+	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) {
+		utils.Rc.SetNX(cacheKey, 1, 1*time.Minute)
+		err = models.RefreshEdbDataFromDl(req.EdbInfoId, req.EdbCode, req.StartDate)
+		if err != nil && err.Error() != utils.ErrNoRow() {
+			br.Msg = "刷新指标信息失败!"
+			br.ErrMsg = "刷新指标信息失败 RefreshEdbDataFromDl,Err:" + err.Error()
+			return
+		}
+		br.Ret = 200
+		br.Success = true
+		br.Msg = "获取成功"
+	} else {
+		br.Ret = 501
+		br.Success = true
+		br.Msg = "系统处理中,请稍后重试"
+	}
+}

+ 107 - 0
controllers/base_from_gie.go

@@ -0,0 +1,107 @@
+package controllers
+
+import (
+	"encoding/json"
+	"hongze/hongze_edb_lib/models"
+	"hongze/hongze_edb_lib/utils"
+	"strconv"
+	"time"
+)
+
+//欧洲天然气
+type GieController struct {
+	BaseAuthController
+}
+
+// @Title 新增欧洲天然气指标接口
+// @Description 新增欧洲天然气指标接口
+// @Success 200 {object} models.AddEdbInfoReq
+// @router /add [post]
+func (this *GieController) 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_GIE
+	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.EdbCode
+	if !utils.Rc.IsExist(cacheKey) {
+		utils.Rc.SetNX(cacheKey, 1, 1*time.Minute)
+		err = models.AddEdbDataFromGie(req.EdbCode)
+		if err != nil {
+			br.Msg = "获取指标信息失败!"
+			br.ErrMsg = "获取指标信息失败 AddEdbDataFromGie,Err:" + err.Error()
+			return
+		}
+		br.Ret = 200
+		br.Success = true
+		br.Msg = "获取成功"
+	} else {
+		br.Ret = 501
+		br.Success = true
+		br.Msg = "系统处理中,请稍后重试"
+	}
+}
+
+// @Title 刷新欧洲天然气指标接口
+// @Description 刷新欧洲天然气指标接口
+// @Success 200 {object} models.RefreshEdbInfoReq
+// @router /refresh [post]
+func (this *GieController) Refresh() {
+	br := new(models.BaseResponse).Init()
+	var cacheKey string
+	defer func() {
+		utils.Rc.Delete(cacheKey)
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+	source := utils.DATA_SOURCE_GIE
+	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) {
+		utils.Rc.SetNX(cacheKey, 1, 1*time.Minute)
+		err = models.RefreshEdbDataFromGie(req.EdbInfoId, req.EdbCode, req.StartDate)
+		if err != nil && err.Error() != utils.ErrNoRow() {
+			br.Msg = "刷新指标信息失败!"
+			br.ErrMsg = "刷新指标信息失败 RefreshEdbDataFromGie,Err:" + err.Error()
+			return
+		}
+		br.Ret = 200
+		br.Success = true
+		br.Msg = "获取成功"
+	} else {
+		br.Ret = 501
+		br.Success = true
+		br.Msg = "系统处理中,请稍后重试"
+	}
+}

+ 4 - 4
controllers/base_from_lt.go

@@ -39,7 +39,7 @@ func (this *LtController) Add() {
 		br.ErrMsg = "请输入指标编码,指标编码为空"
 		return
 	}
-	cacheKey = utils.CACHE_EDB_DATA_ADD+ strconv.Itoa(source) + "_" + req.EdbCode
+	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)
@@ -103,8 +103,8 @@ func (this *LtController) Refresh() {
 			br.ErrMsg = "获取指标信息失败 GetEdbDataFromLt,Err:" + err.Error()
 			return
 		}
-		err = models.RefreshEdbDataFromLt(req.EdbInfoId, req.EdbCode, req.StartDate,dataItem)
-		if err != nil {
+		err = models.RefreshEdbDataFromLt(req.EdbInfoId, req.EdbCode, req.StartDate, dataItem)
+		if err != nil && err.Error() != utils.ErrNoRow() {
 			br.Msg = "刷新指标信息失败!"
 			br.ErrMsg = "刷新指标信息失败 RefreshEdbDataFromLt,Err:" + err.Error()
 			return
@@ -117,4 +117,4 @@ func (this *LtController) Refresh() {
 		br.Success = true
 		br.Msg = "系统处理中,请稍后重试"
 	}
-}
+}

+ 3 - 4
controllers/base_from_lz.go

@@ -38,7 +38,7 @@ func (this *LzController) Add() {
 		br.ErrMsg = "请输入指标编码,指标编码为空"
 		return
 	}
-	cacheKey = utils.CACHE_EDB_DATA_ADD+ strconv.Itoa(source) + "_" + req.EdbCode
+	cacheKey = utils.CACHE_EDB_DATA_ADD + strconv.Itoa(source) + "_" + req.EdbCode
 	if !utils.Rc.IsExist(cacheKey) {
 		utils.Rc.SetNX(cacheKey, 1, 1*time.Minute)
 		err = models.AddEdbDataFromLz(req.EdbCode)
@@ -57,7 +57,6 @@ func (this *LzController) Add() {
 	}
 }
 
-
 // @Title 刷新隆众指标接口
 // @Description 刷新隆众指标接口
 // @Success 200 {object} models.RefreshEdbInfoReq
@@ -92,7 +91,7 @@ func (this *LzController) Refresh() {
 	if !utils.Rc.IsExist(cacheKey) {
 		utils.Rc.SetNX(cacheKey, 1, 1*time.Minute)
 		err = models.RefreshEdbDataFromLz(req.EdbInfoId, req.EdbCode, req.StartDate)
-		if err != nil {
+		if err != nil && err.Error() != utils.ErrNoRow() {
 			br.Msg = "刷新指标信息失败!"
 			br.ErrMsg = "刷新指标信息失败 RefreshEdbDataFromLz,Err:" + err.Error()
 			return
@@ -105,4 +104,4 @@ func (this *LzController) Refresh() {
 		br.Success = true
 		br.Msg = "系统处理中,请稍后重试"
 	}
-}
+}

+ 2 - 2
controllers/base_from_manual.go

@@ -91,7 +91,7 @@ func (this *ManualController) Refresh() {
 	if !utils.Rc.IsExist(cacheKey) {
 		utils.Rc.SetNX(cacheKey, 1, 1*time.Minute)
 		err = models.RefreshEdbDataFromManual(req.EdbInfoId, req.EdbCode, req.StartDate)
-		if err != nil {
+		if err != nil && err.Error() != utils.ErrNoRow() {
 			br.Msg = "刷新指标信息失败!"
 			br.ErrMsg = "刷新指标信息失败 RefreshEdbDataFromManual,Err:" + err.Error()
 			return
@@ -104,4 +104,4 @@ func (this *ManualController) Refresh() {
 		br.Success = true
 		br.Msg = "系统处理中,请稍后重试"
 	}
-}
+}

+ 2 - 2
controllers/base_from_mysteel.go

@@ -91,7 +91,7 @@ func (this *MySteelController) Refresh() {
 	if !utils.Rc.IsExist(cacheKey) {
 		utils.Rc.SetNX(cacheKey, 1, 1*time.Minute)
 		err = models.RefreshEdbDataFromMysteel(req.EdbInfoId, req.EdbCode, req.StartDate)
-		if err != nil {
+		if err != nil && err.Error() != utils.ErrNoRow() {
 			br.Msg = "刷新指标信息失败!"
 			br.ErrMsg = "刷新指标信息失败 RefreshEdbDataFromMysteel,Err:" + err.Error()
 			return
@@ -104,4 +104,4 @@ func (this *MySteelController) Refresh() {
 		br.Success = true
 		br.Msg = "系统处理中,请稍后重试"
 	}
-}
+}

+ 4 - 4
controllers/base_from_pb.go

@@ -42,7 +42,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, utils.BASE_END_DATE)
+		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()
@@ -97,14 +97,14 @@ func (this *PbController) Refresh() {
 	cacheKey = utils.CACHE_EDB_DATA_REFRESH + strconv.Itoa(source) + "_" + req.EdbCode
 	if !utils.Rc.IsExist(cacheKey) {
 		utils.Rc.SetNX(cacheKey, 1, 1*time.Minute)
-		dataItem, err := services.GetEdbDataFromPb(req.EdbCode, req.StartDate, utils.BASE_END_DATE)
+		dataItem, err := services.GetEdbDataFromPb(req.EdbCode, req.StartDate, utils.BASE_END_DATE_UnSpace)
 		if err != nil {
 			br.Msg = "获取指标信息失败!"
 			br.ErrMsg = "获取指标信息失败 GetEdbDataFromPb,Err:" + err.Error()
 			return
 		}
 		err = models.RefreshEdbDataFromPb(req.EdbInfoId, req.EdbCode, req.StartDate, dataItem)
-		if err != nil {
+		if err != nil && err.Error() != utils.ErrNoRow() {
 			br.Msg = "刷新指标信息失败!"
 			br.ErrMsg = "刷新指标信息失败 RefreshEdbDataFromPb,Err:" + err.Error()
 			return
@@ -117,4 +117,4 @@ func (this *PbController) Refresh() {
 		br.Success = true
 		br.Msg = "系统处理中,请稍后重试"
 	}
-}
+}

+ 107 - 0
controllers/base_from_sh.go

@@ -0,0 +1,107 @@
+package controllers
+
+import (
+	"encoding/json"
+	"hongze/hongze_edb_lib/models"
+	"hongze/hongze_edb_lib/utils"
+	"strconv"
+	"time"
+)
+
+//上期所
+type ShController struct {
+	BaseAuthController
+}
+
+// @Title 新增上期所指标接口
+// @Description 新增上期所指标接口
+// @Success 200 {object} models.AddEdbInfoReq
+// @router /add [post]
+func (this *ShController) 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_SH
+	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.EdbCode
+	if !utils.Rc.IsExist(cacheKey) {
+		utils.Rc.SetNX(cacheKey, 1, 1*time.Minute)
+		err = models.AddEdbDataFromSh(req.EdbCode)
+		if err != nil {
+			br.Msg = "获取指标信息失败!"
+			br.ErrMsg = "获取指标信息失败 AddEdbDataFromSh,Err:" + err.Error()
+			return
+		}
+		br.Ret = 200
+		br.Success = true
+		br.Msg = "获取成功"
+	} else {
+		br.Ret = 501
+		br.Success = true
+		br.Msg = "系统处理中,请稍后重试"
+	}
+}
+
+// @Title 刷新上期所指标接口
+// @Description 刷新上期所指标接口
+// @Success 200 {object} models.RefreshEdbInfoReq
+// @router /refresh [post]
+func (this *ShController) Refresh() {
+	br := new(models.BaseResponse).Init()
+	var cacheKey string
+	defer func() {
+		utils.Rc.Delete(cacheKey)
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+	source := utils.DATA_SOURCE_SH
+	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) {
+		utils.Rc.SetNX(cacheKey, 1, 1*time.Minute)
+		err = models.RefreshEdbDataFromSh(req.EdbInfoId, req.EdbCode, req.StartDate)
+		if err != nil && err.Error() != utils.ErrNoRow() {
+			br.Msg = "刷新指标信息失败!"
+			br.ErrMsg = "刷新指标信息失败 RefreshEdbDataFromSh,Err:" + err.Error()
+			return
+		}
+		br.Ret = 200
+		br.Success = true
+		br.Msg = "获取成功"
+	} else {
+		br.Ret = 501
+		br.Success = true
+		br.Msg = "系统处理中,请稍后重试"
+	}
+}

+ 107 - 0
controllers/base_from_shfe.go

@@ -0,0 +1,107 @@
+package controllers
+
+import (
+	"encoding/json"
+	"hongze/hongze_edb_lib/models"
+	"hongze/hongze_edb_lib/utils"
+	"strconv"
+	"time"
+)
+
+//上期能源
+type ShfeController struct {
+	BaseAuthController
+}
+
+// @Title 新增上期能源指标接口
+// @Description 新增上期能源指标接口
+// @Success 200 {object} models.AddEdbInfoReq
+// @router /add [post]
+func (this *ShfeController) 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_CFFEX
+	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.EdbCode
+	if !utils.Rc.IsExist(cacheKey) {
+		utils.Rc.SetNX(cacheKey, 1, 1*time.Minute)
+		err = models.AddEdbDataFromShfe(req.EdbCode)
+		if err != nil {
+			br.Msg = "获取指标信息失败!"
+			br.ErrMsg = "获取指标信息失败 AddEdbDataFromShfe,Err:" + err.Error()
+			return
+		}
+		br.Ret = 200
+		br.Success = true
+		br.Msg = "获取成功"
+	} else {
+		br.Ret = 501
+		br.Success = true
+		br.Msg = "系统处理中,请稍后重试"
+	}
+}
+
+// @Title 刷新上期能源指标接口
+// @Description 刷新上期能源指标接口
+// @Success 200 {object} models.RefreshEdbInfoReq
+// @router /refresh [post]
+func (this *ShfeController) Refresh() {
+	br := new(models.BaseResponse).Init()
+	var cacheKey string
+	defer func() {
+		utils.Rc.Delete(cacheKey)
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+	source := utils.DATA_SOURCE_CFFEX
+	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) {
+		utils.Rc.SetNX(cacheKey, 1, 1*time.Minute)
+		err = models.RefreshEdbDataFromShfe(req.EdbInfoId, req.EdbCode, req.StartDate)
+		if err != nil && err.Error() != utils.ErrNoRow() {
+			br.Msg = "刷新指标信息失败!"
+			br.ErrMsg = "刷新指标信息失败 RefreshEdbDataFromShfe,Err:" + err.Error()
+			return
+		}
+		br.Ret = 200
+		br.Success = true
+		br.Msg = "获取成功"
+	} else {
+		br.Ret = 501
+		br.Success = true
+		br.Msg = "系统处理中,请稍后重试"
+	}
+}

+ 3 - 3
controllers/base_from_smm.go

@@ -38,7 +38,7 @@ func (this *SmmController) Add() {
 		br.ErrMsg = "请输入指标编码,指标编码为空"
 		return
 	}
-	cacheKey = utils.CACHE_EDB_DATA_ADD+ strconv.Itoa(source) + "_" + req.EdbCode
+	cacheKey = utils.CACHE_EDB_DATA_ADD + strconv.Itoa(source) + "_" + req.EdbCode
 	if !utils.Rc.IsExist(cacheKey) {
 		utils.Rc.SetNX(cacheKey, 1, 1*time.Minute)
 		err = models.AddEdbDataFromSmm(req.EdbCode)
@@ -91,7 +91,7 @@ func (this *SmmController) Refresh() {
 	if !utils.Rc.IsExist(cacheKey) {
 		utils.Rc.SetNX(cacheKey, 1, 1*time.Minute)
 		err = models.RefreshEdbDataFromSmm(req.EdbInfoId, req.EdbCode, req.StartDate)
-		if err != nil {
+		if err != nil && err.Error() != utils.ErrNoRow() {
 			br.Msg = "刷新指标信息失败!"
 			br.ErrMsg = "刷新指标信息失败 RefreshEdbDataFromSmm,Err:" + err.Error()
 			return
@@ -104,4 +104,4 @@ func (this *SmmController) Refresh() {
 		br.Success = true
 		br.Msg = "系统处理中,请稍后重试"
 	}
-}
+}

+ 2 - 2
controllers/base_from_ths.go

@@ -104,7 +104,7 @@ func (this *ThsController) Refresh() {
 			return
 		}
 		err = models.RefreshEdbDataFromThs(req.EdbInfoId, req.EdbCode, req.StartDate, dataItem)
-		if err != nil {
+		if err != nil && err.Error() != utils.ErrNoRow() {
 			br.Msg = "刷新指标信息失败!"
 			br.ErrMsg = "刷新指标信息失败 RefreshEdbDataFromThs,Err:" + err.Error()
 			return
@@ -117,4 +117,4 @@ func (this *ThsController) Refresh() {
 		br.Success = true
 		br.Msg = "系统处理中,请稍后重试"
 	}
-}
+}

+ 1 - 1
controllers/base_from_wind.go

@@ -104,7 +104,7 @@ func (this *WindController) Refresh() {
 			return
 		}
 		err = models.RefreshEdbDataFromWind(req.EdbInfoId, req.EdbCode, req.StartDate, dataItem)
-		if err != nil {
+		if err != nil && err.Error() != utils.ErrNoRow() {
 			br.Msg = "刷新指标信息失败!"
 			br.ErrMsg = "刷新指标信息失败 RefreshEdbDataFromWind,Err:" + err.Error()
 			return

+ 107 - 0
controllers/base_from_zz.go

@@ -0,0 +1,107 @@
+package controllers
+
+import (
+	"encoding/json"
+	"hongze/hongze_edb_lib/models"
+	"hongze/hongze_edb_lib/utils"
+	"strconv"
+	"time"
+)
+
+//郑商所
+type ZzController struct {
+	BaseAuthController
+}
+
+// @Title 新增郑商所指标接口
+// @Description 新增郑商所指标接口
+// @Success 200 {object} models.AddEdbInfoReq
+// @router /add [post]
+func (this *ZzController) 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_ZZ
+	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.EdbCode
+	if !utils.Rc.IsExist(cacheKey) {
+		utils.Rc.SetNX(cacheKey, 1, 1*time.Minute)
+		err = models.AddEdbDataFromZz(req.EdbCode)
+		if err != nil {
+			br.Msg = "获取指标信息失败!"
+			br.ErrMsg = "获取指标信息失败 AddEdbDataFromZz,Err:" + err.Error()
+			return
+		}
+		br.Ret = 200
+		br.Success = true
+		br.Msg = "获取成功"
+	} else {
+		br.Ret = 501
+		br.Success = true
+		br.Msg = "系统处理中,请稍后重试"
+	}
+}
+
+// @Title 刷新郑商所指标接口
+// @Description 刷新郑商所指标接口
+// @Success 200 {object} models.RefreshEdbInfoReq
+// @router /refresh [post]
+func (this *ZzController) Refresh() {
+	br := new(models.BaseResponse).Init()
+	var cacheKey string
+	defer func() {
+		utils.Rc.Delete(cacheKey)
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+	source := utils.DATA_SOURCE_ZZ
+	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) {
+		utils.Rc.SetNX(cacheKey, 1, 1*time.Minute)
+		err = models.RefreshEdbDataFromZz(req.EdbInfoId, req.EdbCode, req.StartDate)
+		if err != nil && err.Error() != utils.ErrNoRow() {
+			br.Msg = "刷新指标信息失败!"
+			br.ErrMsg = "刷新指标信息失败 RefreshEdbDataFromZz,Err:" + err.Error()
+			return
+		}
+		br.Ret = 200
+		br.Success = true
+		br.Msg = "获取成功"
+	} else {
+		br.Ret = 501
+		br.Success = true
+		br.Msg = "系统处理中,请稍后重试"
+	}
+}

+ 1 - 1
main.go

@@ -7,8 +7,8 @@ import (
 	"runtime"
 	"time"
 
-	"github.com/beego/beego/v2/server/web"
 	"github.com/beego/beego/v2/adapter/logs"
+	"github.com/beego/beego/v2/server/web"
 	"github.com/beego/beego/v2/server/web/context"
 )
 

+ 2 - 30
models/base_from_calculate.go

@@ -68,7 +68,7 @@ func AddCalculate(edbInfoIdArr []*EdbInfo, edbInfoId int, edbCode, formulaStr st
 		item.DataMap = dataMap
 	}
 	formulaMap := services.CheckFormula(formulaStr)
-	addSql := ` INSERT INTO edb_data_calculate(edb_info_id,edb_code,data_time,value,create_time,modify_time,status,data_timestamp) values `
+	addSql := ` INSERT INTO edb_data_calculate(edb_info_id,edb_code,data_time,value,create_time,modify_time,data_timestamp) values `
 	nowStr := time.Now().Format(utils.FormatDateTime)
 	var isAdd bool
 	for sk, sv := range saveDataMap {
@@ -173,7 +173,7 @@ func RefreshAllCalculate(edbInfoIdArr []*EdbInfo, edbInfoId, source int, edbCode
 	}
 
 	formulaMap := services.CheckFormula(formulaStr)
-	addSql := ` INSERT INTO edb_data_calculate(edb_info_id,edb_code,data_time,value,create_time,modify_time,status,data_timestamp) values `
+	addSql := ` INSERT INTO edb_data_calculate(edb_info_id,edb_code,data_time,value,create_time,modify_time,data_timestamp) values `
 	var isAdd bool
 
 	//获取指标所有数据
@@ -334,31 +334,3 @@ type EdbInfoCalculateBatchEditReq struct {
 		FromTag   string `description:"指标对应标签"`
 	}
 }
-
-type EdbInfoCalculateDetail struct {
-	EdbInfoCalculateId int       `orm:"column(edb_info_calculate_id);pk"`
-	EdbInfoId          int       `description:"指标id"`
-	EdbCode            string    `description:"指标编码"`
-	FromEdbInfoId      int       `description:"计算指标id"`
-	FromEdbCode        string    `description:"计算指标编码"`
-	FromEdbName        string    `description:"计算指标名称"`
-	FromSource         int       `description:"计算指标来源"`
-	FromSourceName     string    `description:"计算指标来源名称"`
-	FromTag            string    `description:"来源指标标签"`
-	Sort               int       `description:"计算指标名称排序"`
-	CreateTime         time.Time `description:"创建时间"`
-	ModifyTime         time.Time `description:"修改时间"`
-	StartDate          string    `description:"开始日期"`
-	EndDate            string    `description:"结束日期"`
-	EdbType            int       `description:"指标类型:1:基础指标,2:计算指标"`
-}
-
-func GetEdbInfoCalculateDetail(edbInfoId int) (list []*EdbInfoCalculateDetail, err error) {
-	o := orm.NewOrm()
-	sql := ` SELECT a.*,b.start_date,b.end_date,b.edb_type FROM edb_info_calculate_mapping AS a
-			INNER JOIN edb_info AS b ON a.from_edb_info_id=b.edb_info_id
-			WHERE a.edb_info_id=? ORDER BY sort ASC `
-
-	_, err = o.Raw(sql, edbInfoId).QueryRows(&list)
-	return
-}

+ 234 - 0
models/base_from_cffex.go

@@ -0,0 +1,234 @@
+package models
+
+import (
+	"fmt"
+	"github.com/beego/beego/v2/client/orm"
+	"hongze/hongze_edb_lib/utils"
+	"strconv"
+	"strings"
+	"time"
+)
+
+type BaseFromTradeCFFEXIndex struct {
+	BaseFromTradeCffexIndexId int `orm:"column(base_from_trade_cffex_index_id);pk"`
+	Rank                      int
+	DealShortName             string
+	DealName                  string
+	DealCode                  string
+	DealValue                 string
+	DealChange                int
+	BuyShortName              string
+	BuyName                   string
+	BuyCode                   string
+	BuyValue                  string
+	BuyChange                 int
+	SoldShortName             string
+	SoldName                  string
+	SoldCode                  string
+	SoldValue                 string
+	SoldChange                int
+	Frequency                 string
+	ClassifyName              string
+	ClassifyType              string
+	CreateTime                time.Time
+	ModifyTime                time.Time
+	DataTime                  string
+}
+
+func GetBaseFromCffexDataAllByIndexCode(indexCode, suffix string) (list []*BaseFromTradeCFFEXIndex, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT * FROM base_from_trade_cffex_index WHERE %s_code=? `
+	sql = fmt.Sprintf(sql, suffix)
+	_, err = o.Raw(sql, indexCode).QueryRows(&list)
+	return
+}
+
+type BaseFromCffexDataSimple struct {
+	Id        int `orm:"column(base_from_trade_cffex_index_id);pk"`
+	DealCode  string
+	BuyCode   string
+	SoldCode  string
+	DataTime  string
+	DealValue string
+	BuyValue  string
+	SoldValue string
+}
+
+func GetCffexDataByTradeCode(condition string, pars []interface{}) (item []*BaseFromCffexDataSimple, err error) {
+	sql := ` SELECT * FROM base_from_trade_cffex_index WHERE 1=1 `
+	o := orm.NewOrm()
+	if condition != "" {
+		sql += condition
+	}
+	sql += ` ORDER BY data_time DESC `
+	_, err = o.Raw(sql, pars).QueryRows(&item)
+	return
+}
+
+//新增中金所指标数据
+func AddEdbDataFromCffex(edbCode string) (err error) {
+	var suffix string
+	if strings.Contains(edbCode, "deal") {
+		suffix = "deal"
+	} else if strings.Contains(edbCode, "buy") {
+		suffix = "buy"
+	} else if strings.Contains(edbCode, "sold") {
+		suffix = "sold"
+	}
+
+	o := orm.NewOrm()
+	cffexBaseDataAll, err := GetBaseFromCffexDataAllByIndexCode(edbCode, suffix)
+	if err != nil && err.Error() != utils.ErrNoRow() {
+		return
+	}
+
+	var isAdd bool
+	addSql := ` INSERT INTO edb_data_cffex(edb_info_id,edb_code,data_time,value,create_time,modify_time,data_timestamp) values `
+	existMap := make(map[string]string)
+
+	for _, sv := range cffexBaseDataAll {
+		eDate := sv.DataTime
+		dataTime, err := time.Parse(utils.FormatDate, eDate)
+		if err != nil {
+			fmt.Println("time.Parse Err:" + eDate)
+			return err
+		}
+		timestamp := dataTime.UnixNano() / 1e6
+		timeStr := fmt.Sprintf("%d", timestamp)
+		if _, ok := existMap[eDate]; !ok {
+			if suffix == "deal" {
+				addSql += GetAddSql("0", edbCode, eDate, timeStr, sv.DealValue)
+			} else if suffix == "buy" {
+				addSql += GetAddSql("0", edbCode, eDate, timeStr, sv.BuyValue)
+			} else {
+				addSql += GetAddSql("0", edbCode, eDate, timeStr, sv.SoldValue)
+			}
+			isAdd = true
+		}
+		if suffix == "deal" {
+			existMap[eDate] = sv.DealValue
+		} else if suffix == "buy" {
+			existMap[eDate] = sv.BuyValue
+		} else {
+			existMap[eDate] = sv.SoldValue
+		}
+	}
+	if isAdd {
+		addSql = strings.TrimRight(addSql, ",")
+		utils.FileLog.Info("addSql:" + addSql)
+		_, err = o.Raw(addSql).Exec()
+		if err != nil {
+			return err
+		}
+	}
+	return
+}
+
+//刷新中金所指标数据
+func RefreshEdbDataFromCffex(edbInfoId int, edbCode, startDate string) (err error) {
+	source := utils.DATA_SOURCE_CFFEX
+	var suffix string
+	if strings.Contains(edbCode, "deal") {
+		suffix = "deal"
+	} else if strings.Contains(edbCode, "buy") {
+		suffix = "buy"
+	} else if strings.Contains(edbCode, "sold") {
+		suffix = "sold"
+	}
+
+	o := orm.NewOrm()
+	if err != nil {
+		return
+	}
+
+	edbInfoIdStr := strconv.Itoa(edbInfoId)
+	//计算数据
+	var condition string
+	var pars []interface{}
+
+	if edbCode != "" {
+		if suffix == "deal" {
+			condition += " AND deal_code=? "
+		} else if suffix == "buy" {
+			condition += " AND buy_code=? "
+		} else {
+			condition += " AND sold_code=? "
+		}
+		pars = append(pars, edbCode)
+	}
+
+	if startDate != "" {
+		condition += " AND data_time>=? "
+		pars = append(pars, startDate)
+	}
+
+	glDataList, err := GetCffexDataByTradeCode(condition, pars)
+
+	//获取指标所有数据
+	var existCondition string
+	var existPars []interface{}
+
+	existCondition += " AND edb_info_id=? "
+	existPars = append(existPars, edbInfoId)
+	if startDate != "" {
+		existCondition += " AND data_time>=? "
+		existPars = append(existPars, startDate)
+	}
+
+	existList, err := GetEdbDataByCondition(source, existCondition, existPars)
+	if err != nil {
+		return err
+	}
+	existMap := make(map[string]*EdbInfoSearchData)
+	for _, v := range existList {
+		existMap[v.DataTime] = v
+	}
+
+	addSql := ` INSERT INTO edb_data_cffex(edb_info_id,edb_code,data_time,value,create_time,modify_time,data_timestamp) values `
+	var isAdd bool
+	for _, v := range glDataList {
+		var value string
+		if suffix == "deal" {
+			value = v.DealValue
+		} else if suffix == "buy" {
+			value = v.BuyValue
+		} else {
+			value = v.SoldValue
+		}
+		item := v
+		itemValue := value
+		if _, ok := existMap[v.DataTime]; !ok {
+			eDate := item.DataTime
+			sValue := itemValue
+			if sValue != "" {
+				dataTime, err := time.Parse(utils.FormatDate, eDate)
+				if err != nil {
+					return err
+				}
+				timestamp := dataTime.UnixNano() / 1e6
+				timeStr := fmt.Sprintf("%d", timestamp)
+				saveValue := sValue
+
+				if findItem, ok := existMap[eDate]; !ok {
+					addSql += GetAddSql(edbInfoIdStr, edbCode, eDate, timeStr, saveValue)
+					isAdd = true
+				} else {
+					if findItem != nil && utils.SubFloatToString(findItem.Value, 30) != sValue {
+						err = ModifyEdbDataById(source, findItem.EdbDataId, sValue)
+						if err != nil {
+							return err
+						}
+					}
+				}
+			}
+		}
+	}
+	if isAdd {
+		addSql = strings.TrimRight(addSql, ",")
+		_, err = o.Raw(addSql).Exec()
+		if err != nil {
+			return err
+		}
+	}
+	return
+}

+ 232 - 0
models/base_from_dl.go

@@ -0,0 +1,232 @@
+package models
+
+import (
+	"fmt"
+	"github.com/beego/beego/v2/client/orm"
+	"hongze/hongze_edb_lib/utils"
+	"strconv"
+	"strings"
+	"time"
+)
+
+type BaseFromTradeDalianIndex struct {
+	BaseFromTradeDalianIndexId int `orm:"column(base_from_trade_dalian_index_id);pk"`
+	Rank                       int
+	DealShortName              string
+	DealName                   string
+	DealCode                   string
+	DealValue                  string
+	DealChange                 int
+	BuyShortName               string
+	BuyName                    string
+	BuyCode                    string
+	BuyValue                   string
+	BuyChange                  int
+	SoldShortName              string
+	SoldName                   string
+	SoldCode                   string
+	SoldValue                  string
+	SoldChange                 int
+	Frequency                  string
+	ClassifyName               string
+	ClassifyType               string
+	CreateTime                 time.Time
+	ModifyTime                 time.Time
+	DataTime                   string
+}
+
+func GetBaseFromDalianDataAllByIndexCode(indexCode, suffix string) (list []*BaseFromTradeDalianIndex, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT * FROM base_from_trade_dalian_index WHERE %s_code=? `
+	sql = fmt.Sprintf(sql, suffix)
+	_, err = o.Raw(sql, indexCode).QueryRows(&list)
+	return
+}
+
+type BaseFromDlDataSimple struct {
+	Id        int `orm:"column(base_from_trade_dalian_index_id);pk"`
+	DealCode  string
+	BuyCode   string
+	SoldCode  string
+	DataTime  string
+	DealValue string
+	BuyValue  string
+	SoldValue string
+}
+
+func GetDlDataByTradeCode(condition string, pars []interface{}) (item []*BaseFromDlDataSimple, err error) {
+	sql := ` SELECT * FROM base_from_trade_dalian_index WHERE 1=1 `
+	o := orm.NewOrm()
+	if condition != "" {
+		sql += condition
+	}
+	sql += ` ORDER BY data_time DESC `
+	_, err = o.Raw(sql, pars).QueryRows(&item)
+	return
+}
+
+//新增郑商所指标数据
+func AddEdbDataFromDl(edbCode string) (err error) {
+	var suffix string
+	if strings.Contains(edbCode, "deal") {
+		suffix = "deal"
+	} else if strings.Contains(edbCode, "buy") {
+		suffix = "buy"
+	} else if strings.Contains(edbCode, "sold") {
+		suffix = "sold"
+	}
+
+	o := orm.NewOrm()
+	dlBaseDataAll, err := GetBaseFromDalianDataAllByIndexCode(edbCode, suffix)
+	if err != nil && err.Error() != utils.ErrNoRow() {
+		return
+	}
+
+	var isAdd bool
+	addSql := ` INSERT INTO edb_data_dl(edb_info_id,edb_code,data_time,value,create_time,modify_time,data_timestamp) values `
+	existMap := make(map[string]string)
+
+	for _, sv := range dlBaseDataAll {
+		eDate := sv.DataTime
+		dataTime, err := time.Parse(utils.FormatDate, eDate)
+		if err != nil {
+			fmt.Println("time.Parse Err:" + eDate)
+			return  err
+		}
+		timestamp := dataTime.UnixNano() / 1e6
+		timeStr := fmt.Sprintf("%d", timestamp)
+		if _, ok := existMap[eDate]; !ok {
+			if suffix == "deal" {
+				addSql += GetAddSql("0", edbCode, eDate, timeStr, sv.DealValue)
+			} else if suffix == "buy" {
+				addSql += GetAddSql("0", edbCode, eDate, timeStr, sv.BuyValue)
+			} else {
+				addSql += GetAddSql("0", edbCode, eDate, timeStr, sv.SoldValue)
+			}
+			isAdd = true
+		}
+		if suffix == "deal" {
+			existMap[eDate] = sv.DealValue
+		} else if suffix == "buy" {
+			existMap[eDate] = sv.BuyValue
+		} else {
+			existMap[eDate] = sv.SoldValue
+		}
+	}
+	if isAdd {
+		addSql = strings.TrimRight(addSql, ",")
+		utils.FileLog.Info("addSql:" + addSql)
+		_, err = o.Raw(addSql).Exec()
+		if err != nil {
+			return err
+		}
+	}
+	return
+}
+
+//刷新大商所指标数据
+func RefreshEdbDataFromDl(edbInfoId int, edbCode, startDate string) (err error) {
+	source := utils.DATA_SOURCE_DL
+	o := orm.NewOrm()
+	if err != nil {
+		return
+	}
+	var suffix string
+	if strings.Contains(edbCode, "deal") {
+		suffix = "deal"
+	} else if strings.Contains(edbCode, "buy") {
+		suffix = "buy"
+	} else if strings.Contains(edbCode, "sold") {
+		suffix = "sold"
+	}
+	edbInfoIdStr := strconv.Itoa(edbInfoId)
+	//计算数据
+	var condition string
+	var pars []interface{}
+
+	if edbCode != "" {
+		if suffix == "deal" {
+			condition += " AND deal_code=? "
+		} else if suffix == "buy" {
+			condition += " AND buy_code=? "
+		} else {
+			condition += " AND sold_code=? "
+		}
+		pars = append(pars, edbCode)
+	}
+
+	if startDate != "" {
+		condition += " AND data_time>=? "
+		pars = append(pars, startDate)
+	}
+
+	glDataList, err := GetDlDataByTradeCode(condition, pars)
+
+	//获取指标所有数据
+	var existCondition string
+	var existPars []interface{}
+
+	existCondition += " AND edb_info_id=? "
+	existPars = append(existPars, edbInfoId)
+	if startDate != "" {
+		existCondition += " AND data_time>=? "
+		existPars = append(existPars, startDate)
+	}
+
+	existList, err := GetEdbDataByCondition(source, existCondition, existPars)
+	if err != nil {
+		return err
+	}
+	existMap := make(map[string]*EdbInfoSearchData)
+	for _, v := range existList {
+		existMap[v.DataTime] = v
+	}
+
+	addSql := ` INSERT INTO edb_data_dl(edb_info_id,edb_code,data_time,value,create_time,modify_time,data_timestamp) values `
+	var isAdd bool
+	for _, v := range glDataList {
+		var value string
+		if suffix == "deal" {
+			value = v.DealValue
+		} else if suffix == "buy" {
+			value = v.BuyValue
+		} else {
+			value = v.SoldValue
+		}
+		item := v
+		itemValue := value
+		if _, ok := existMap[v.DataTime]; !ok {
+			eDate := item.DataTime
+			sValue := itemValue
+			if sValue != "" {
+				dataTime, err := time.Parse(utils.FormatDate, eDate)
+				if err != nil {
+					return err
+				}
+				timestamp := dataTime.UnixNano() / 1e6
+				timeStr := fmt.Sprintf("%d", timestamp)
+				saveValue := sValue
+
+				if findItem, ok := existMap[eDate]; !ok {
+					addSql += GetAddSql(edbInfoIdStr, edbCode, eDate, timeStr, saveValue)
+					isAdd = true
+				} else {
+					if findItem != nil && utils.SubFloatToString(findItem.Value, 30) != sValue {
+						err = ModifyEdbDataById(source, findItem.EdbDataId, sValue)
+						if err != nil {
+							return err
+						}
+					}
+				}
+			}
+		}
+	}
+	if isAdd {
+		addSql = strings.TrimRight(addSql, ",")
+		_, err = o.Raw(addSql).Exec()
+		if err != nil {
+			return err
+		}
+	}
+	return
+}

+ 299 - 0
models/base_from_gie.go

@@ -0,0 +1,299 @@
+package models
+
+import (
+	"fmt"
+	"github.com/beego/beego/v2/client/orm"
+	"hongze/hongze_edb_lib/utils"
+	"strconv"
+	"strings"
+	"time"
+)
+
+type BaseFromTradeEicIndex struct {
+	BaseFromEicIndexId     int `orm:"column(base_from_eic_index_id);pk"`
+	Country                string
+	Type                   string
+	EicCode                string
+	ShortName              string
+	Name                   string
+	Status                 string
+	GasDayStartedOn        string
+	GasInStorage           string
+	GasInStorageCode       string
+	Full                   string
+	FullCode               string
+	Trend                  string
+	TrendCode              string
+	Injection              string
+	InjectionCode          string
+	Withdrawal             string
+	WithdrawalCode         string
+	WorkingGasVolume       string
+	WorkingGasVolumeCode   string
+	InjectionCapacity      string
+	InjectionCapacityCode  string
+	WithdrawalCapacity     string
+	WithdrawalCapacityCode string
+	Info                   string
+	CreateTime             time.Time
+	ModifyTime             time.Time
+}
+
+func GetBaseFromEicDataAllByIndexCode(indexCode, suffix string) (list []*BaseFromTradeEicIndex, err error) {
+	o := orm.NewOrm()
+	var name string
+	if suffix == "" {
+		name = "eic_code"
+	} else if suffix == "GS" {
+		name = "gas_in_storage_code"
+	} else if suffix == "F" {
+		name = "full_code"
+	} else if suffix == "T" {
+		name = "trend_code"
+	} else if suffix == "In" {
+		name = "injection_code"
+	} else if suffix == "Out" {
+		name = "withdrawal_code"
+	} else if suffix == "WGV" {
+		name = "working_gas_volume_code"
+	} else if suffix == "IC" {
+		name = "injection_capacity_code"
+	} else if suffix == "WC" {
+		name = "withdrawal_capacity_code"
+	}
+	sql := `SELECT * FROM base_from_trade_eic_index WHERE %s=? `
+	sql = fmt.Sprintf(sql, name)
+	_, err = o.Raw(sql, indexCode).QueryRows(&list)
+	return
+}
+
+func GetGieDataByTradeCode(condition string, pars []interface{}) (item []*BaseFromTradeEicIndex, err error) {
+	sql := ` SELECT * FROM base_from_trade_eic_index WHERE 1=1 `
+	o := orm.NewOrm()
+	if condition != "" {
+		sql += condition
+	}
+	sql += ` ORDER BY gas_day_started_on DESC `
+	fmt.Println(sql, pars)
+	_, err = o.Raw(sql, pars).QueryRows(&item)
+	return
+}
+
+//新增上期能源指标数据
+func AddEdbDataFromGie(edbCode string) (err error) {
+	var suffix string
+	l := len(edbCode)
+	if strings.Contains(edbCode[l-2:], "GS") {
+		suffix = "GS"
+	} else if strings.Contains(edbCode[l-1:], "F") {
+		suffix = "F"
+	} else if strings.Contains(edbCode[l-1:], "T") {
+		suffix = "T"
+	} else if strings.Contains(edbCode[l-2:], "In") {
+		suffix = "In"
+	} else if strings.Contains(edbCode[l-3:], "Out") {
+		suffix = "Out"
+	} else if strings.Contains(edbCode[l-3:], "WGV") {
+		suffix = "WGV"
+	} else if strings.Contains(edbCode[l-2:], "IC") {
+		suffix = "IC"
+	} else if strings.Contains(edbCode[l-2:], "WC") {
+		suffix = "WC"
+	} else {
+		suffix = ""
+	}
+
+	o := orm.NewOrm()
+	eicBaseDataAll, err := GetBaseFromEicDataAllByIndexCode(edbCode, suffix)
+	if err != nil && err.Error() != utils.ErrNoRow() {
+		fmt.Println("GetBaseFromEicDataAllByIndexCode err:", err)
+		return
+	}
+
+	var isAdd bool
+	addSql := ` INSERT INTO edb_data_gie(edb_info_id,edb_code,data_time,value,create_time,modify_time,data_timestamp) values `
+	existMap := make(map[string]string)
+
+	for _, sv := range eicBaseDataAll {
+		eDate := sv.GasDayStartedOn
+		dataTime, err := time.Parse(utils.FormatDate, eDate)
+		if err != nil {
+			fmt.Println("time.Parse Err:" + eDate)
+			return err
+		}
+		timestamp := dataTime.UnixNano() / 1e6
+		timeStr := fmt.Sprintf("%d", timestamp)
+		//var name string
+		if _, ok := existMap[eDate]; !ok {
+			if suffix == "GS" {
+				//name = "gas_in_storage"
+				addSql += GetAddSql("0", edbCode, eDate, timeStr, sv.GasInStorage)
+				existMap[eDate] = sv.GasInStorage
+			} else if suffix == "F" {
+				//name = "full"
+				addSql += GetAddSql("0", edbCode, eDate, timeStr, sv.Full)
+				existMap[eDate] = sv.Full
+			} else if suffix == "T" {
+				//name = "trend"
+				addSql += GetAddSql("0", edbCode, eDate, timeStr, sv.Trend)
+				existMap[eDate] = sv.Trend
+			} else if suffix == "In" {
+				//name = "injection"
+				addSql += GetAddSql("0", edbCode, eDate, timeStr, sv.Injection)
+				existMap[eDate] = sv.Injection
+			} else if suffix == "Out" {
+				//name = "withdrawal"
+				addSql += GetAddSql("0", edbCode, eDate, timeStr, sv.Withdrawal)
+				existMap[eDate] = sv.Withdrawal
+			} else if suffix == "WGV" {
+				//name = "working_gas_volume"
+				addSql += GetAddSql("0", edbCode, eDate, timeStr, sv.WorkingGasVolume)
+				existMap[eDate] = sv.WorkingGasVolume
+			} else if suffix == "IC" {
+				//name = "injection_capacity"
+				addSql += GetAddSql("0", edbCode, eDate, timeStr, sv.InjectionCapacity)
+				existMap[eDate] = sv.InjectionCapacity
+			} else if suffix == "WC" {
+				//name = "withdrawal_capacity"
+				addSql += GetAddSql("0", edbCode, eDate, timeStr, sv.WithdrawalCapacity)
+				existMap[eDate] = sv.WithdrawalCapacity
+			}
+			isAdd = true
+		}
+	}
+	if isAdd {
+		addSql = strings.TrimRight(addSql, ",")
+		utils.FileLog.Info("addSql:" + addSql)
+		_, err = o.Raw(addSql).Exec()
+		if err != nil {
+			fmt.Println("addSql err:", err)
+			return err
+		}
+	}
+	return
+}
+
+//刷新欧洲天然气指标数据
+func RefreshEdbDataFromGie(edbInfoId int, edbCode, startDate string) (err error) {
+	source := utils.DATA_SOURCE_GIE
+	o := orm.NewOrm()
+	if err != nil {
+		return
+	}
+	var suffix string
+	l := len(edbCode)
+	if strings.Contains(edbCode[l-2:], "GS") {
+		suffix = "GS"
+	} else if strings.Contains(edbCode[l-1:], "F") {
+		suffix = "F"
+	} else if strings.Contains(edbCode[l-1:], "T") {
+		suffix = "T"
+	} else if strings.Contains(edbCode[l-2:], "In") {
+		suffix = "In"
+	} else if strings.Contains(edbCode[l-3:], "Out") {
+		suffix = "Out"
+	} else if strings.Contains(edbCode[l-3:], "WGV") {
+		suffix = "WGV"
+	} else if strings.Contains(edbCode[l-2:], "IC") {
+		suffix = "IC"
+	} else if strings.Contains(edbCode[l-2:], "WC") {
+		suffix = "WC"
+	} else {
+		suffix = ""
+	}
+	edbInfoIdStr := strconv.Itoa(edbInfoId)
+	//计算数据
+	var condition string
+	var pars []interface{}
+
+	if edbCode != "" {
+		condition += " AND eic_code=? "
+		pars = append(pars, edbCode[:l-len(suffix)])
+	}
+
+	if startDate != "" {
+		condition += " AND gas_day_started_on>=? "
+		pars = append(pars, startDate)
+	}
+	eicDataList, err := GetGieDataByTradeCode(condition, pars)
+	fmt.Println("all eicDataList", len(eicDataList))
+	//获取指标所有数据
+	var existCondition string
+	var existPars []interface{}
+
+	existCondition += " AND edb_info_id=? "
+	existPars = append(existPars, edbInfoId)
+	if startDate != "" {
+		existCondition += " AND data_time>=? "
+		existPars = append(existPars, startDate)
+	}
+
+	existList, err := GetEdbDataByCondition(source, existCondition, existPars)
+	if err != nil {
+		return err
+	}
+	existMap := make(map[string]*EdbInfoSearchData)
+	for _, v := range existList {
+		existMap[v.DataTime] = v
+	}
+
+	addSql := ` INSERT INTO edb_data_gie(edb_info_id,edb_code,data_time,value,create_time,modify_time,data_timestamp) values `
+	var isAdd bool
+	dataMap := make(map[string]interface{})
+	for _, v := range eicDataList {
+		var value string
+		if suffix == "GS" {
+			value = v.GasInStorage
+		} else if suffix == "F" {
+			value = v.Full
+		} else if suffix == "T" {
+			value = v.Trend
+		} else if suffix == "In" {
+			value = v.Injection
+		} else if suffix == "Out" {
+			value = v.Withdrawal
+		} else if suffix == "WGV" {
+			value = v.WorkingGasVolume
+		} else if suffix == "IC" {
+			value = v.InjectionCapacity
+		} else if suffix == "WC" {
+			value = v.WithdrawalCapacity
+		}
+		item := v
+		itemValue := value
+		if findItem, ok := existMap[v.GasDayStartedOn]; !ok {
+			eDate := item.GasDayStartedOn
+			sValue := itemValue
+			if sValue != "" {
+				dataTime, err := time.Parse(utils.FormatDate, eDate)
+				if err != nil {
+					return err
+				}
+				timestamp := dataTime.UnixNano() / 1e6
+				timeStr := fmt.Sprintf("%d", timestamp)
+				saveValue := sValue
+
+				if _, ok := dataMap[eDate]; !ok {
+					addSql += GetAddSql(edbInfoIdStr, edbCode, eDate, timeStr, saveValue)
+					isAdd = true
+				}
+			}
+		} else {
+			if findItem != nil && utils.SubFloatToString(findItem.Value, 30) != itemValue {
+				err = ModifyEdbDataById(source, findItem.EdbDataId, itemValue)
+				if err != nil {
+					return err
+				}
+			}
+		}
+		dataMap[v.GasDayStartedOn] = v.GasDayStartedOn
+	}
+	if isAdd {
+		addSql = strings.TrimRight(addSql, ",")
+		_, err = o.Raw(addSql).Exec()
+		if err != nil {
+			return err
+		}
+	}
+	return
+}

+ 1 - 1
models/base_from_manual.go

@@ -149,7 +149,7 @@ func RefreshEdbDataFromManual(edbInfoId int, edbCode, startDate string) (err err
 	}
 	for _, v := range existList {
 		if _, ok := manualMap[v.DataTime]; !ok {
-			go DeleteEdbDataById(v.EdbDataId, utils.DATA_SOURCE_MANUAL)
+			go DeleteEdbDataById(utils.DATA_SOURCE_MANUAL, v.EdbDataId)
 		}
 	}
 	if isAdd {

+ 4 - 4
models/base_from_mysteel.go

@@ -13,8 +13,8 @@ import (
 //钢联
 
 type GlData struct {
-	InputValue string `orm:"column(DATA_VALUE)" description:"日期"`
-	DataTime   string `orm:"column(DATA_DATE)" description:"值"`
+	InputValue float64 `orm:"column(DATA_VALUE)" description:"日期"`
+	DataTime   string  `orm:"column(DATA_DATE)" description:"值"`
 }
 
 func GetGlDataByCondition(condition string, pars []interface{}) (item []*GlData, err error) {
@@ -55,7 +55,7 @@ func AddEdbDataFromMysteel(edbCode string) (err error) {
 		for i := 0; i < dataLen; i++ {
 			item := glDataList[i]
 			eDate := item.DataTime
-			sValue := item.InputValue
+			sValue := utils.SubFloatToString(item.InputValue, 30)
 			if sValue != "" {
 				if _, ok := existMap[eDate]; !ok {
 					dataTime, err := time.Parse(utils.FormatDate, eDate)
@@ -131,7 +131,7 @@ func RefreshEdbDataFromMysteel(edbInfoId int, edbCode, startDate string) (err er
 	for _, v := range glDataList {
 		item := v
 		eDate := item.DataTime
-		sValue := item.InputValue
+		sValue :=utils.SubFloatToString(item.InputValue, 30)
 
 		if findItem, ok := existMap[v.DataTime]; !ok {
 			if sValue != "" {

+ 233 - 0
models/base_from_sh.go

@@ -0,0 +1,233 @@
+package models
+
+import (
+	"fmt"
+	"github.com/beego/beego/v2/client/orm"
+	"hongze/hongze_edb_lib/utils"
+	"strconv"
+	"strings"
+	"time"
+)
+
+type BaseFromTradeShIndex struct {
+	BaseFromTradeShIndexId int `orm:"column(base_from_trade_shanghai_index_id);pk"`
+	Rank                   int
+	DealShortName          string
+	DealName               string
+	DealCode               string
+	DealValue              string
+	DealChange             int
+	BuyShortName           string
+	BuyName                string
+	BuyCode                string
+	BuyValue               string
+	BuyChange              int
+	SoldShortName          string
+	SoldName               string
+	SoldCode               string
+	SoldValue              string
+	SoldChange             int
+	Frequency              string
+	ClassifyName           string
+	ClassifyType           string
+	CreateTime             time.Time
+	ModifyTime             time.Time
+	DataTime               string
+}
+
+type BaseFromShDataSimple struct {
+	Id        int `orm:"column(base_from_trade_shanghai_index_id);pk"`
+	DealCode  string
+	BuyCode   string
+	SoldCode  string
+	DataTime  string
+	DealValue string
+	BuyValue  string
+	SoldValue string
+}
+
+func GetBaseFromShDataAllByIndexCode(indexCode, suffix string) (list []*BaseFromTradeShIndex, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT * FROM base_from_trade_shanghai_index WHERE %s_code=? `
+	sql = fmt.Sprintf(sql, suffix)
+	_, err = o.Raw(sql, indexCode).QueryRows(&list)
+	return
+}
+
+func GetShDataByTradeCode(condition string, pars []interface{}) (item []*BaseFromShDataSimple, err error) {
+	sql := ` SELECT * FROM base_from_trade_shanghai_index WHERE 1=1 `
+	o := orm.NewOrm()
+	if condition != "" {
+		sql += condition
+	}
+	sql += ` ORDER BY data_time DESC `
+	_, err = o.Raw(sql, pars).QueryRows(&item)
+	return
+}
+
+//新增上期所指标数据
+func AddEdbDataFromSh(edbCode string) (err error) {
+	var suffix string
+	if strings.Contains(edbCode, "deal") {
+		suffix = "deal"
+	} else if strings.Contains(edbCode, "buy") {
+		suffix = "buy"
+	} else if strings.Contains(edbCode, "sold") {
+		suffix = "sold"
+	}
+
+	o := orm.NewOrm()
+
+	shBaseDataAll, err := GetBaseFromShDataAllByIndexCode(edbCode, suffix)
+	if err != nil && err.Error() != utils.ErrNoRow() {
+		return
+	}
+
+	var isAdd bool
+	addSql := ` INSERT INTO edb_data_sh(edb_info_id,edb_code,data_time,value,create_time,modify_time,data_timestamp) values `
+	existMap := make(map[string]string)
+
+	for _, sv := range shBaseDataAll {
+		eDate := sv.DataTime
+		dataTime, err := time.Parse(utils.FormatDate, eDate)
+		if err != nil {
+			fmt.Println("time.Parse Err:" + eDate)
+			return  err
+		}
+		timestamp := dataTime.UnixNano() / 1e6
+		timeStr := fmt.Sprintf("%d", timestamp)
+		if _, ok := existMap[eDate]; !ok {
+			if suffix == "deal" {
+				addSql += GetAddSql("0", edbCode, eDate, timeStr, sv.DealValue)
+			} else if suffix == "buy" {
+				addSql += GetAddSql("0", edbCode, eDate, timeStr, sv.BuyValue)
+			} else {
+				addSql += GetAddSql("0", edbCode, eDate, timeStr, sv.SoldValue)
+			}
+			isAdd = true
+		}
+		if suffix == "deal" {
+			existMap[eDate] = sv.DealValue
+		} else if suffix == "buy" {
+			existMap[eDate] = sv.BuyValue
+		} else {
+			existMap[eDate] = sv.SoldValue
+		}
+	}
+	if isAdd {
+		addSql = strings.TrimRight(addSql, ",")
+		utils.FileLog.Info("addSql:" + addSql)
+		_, err = o.Raw(addSql).Exec()
+		if err != nil {
+			return  err
+		}
+	}
+	return
+}
+
+//刷新上期所指标数据
+func RefreshEdbDataFromSh(edbInfoId int, edbCode, startDate string) (err error) {
+	source := utils.DATA_SOURCE_SH
+	o := orm.NewOrm()
+	if err != nil {
+		return
+	}
+	var suffix string
+	if strings.Contains(edbCode, "deal") {
+		suffix = "deal"
+	} else if strings.Contains(edbCode, "buy") {
+		suffix = "buy"
+	} else if strings.Contains(edbCode, "sold") {
+		suffix = "sold"
+	}
+	edbInfoIdStr := strconv.Itoa(edbInfoId)
+	//计算数据
+	var condition string
+	var pars []interface{}
+
+	if edbCode != "" {
+		if suffix == "deal" {
+			condition += " AND deal_code=? "
+		} else if suffix == "buy" {
+			condition += " AND buy_code=? "
+		} else {
+			condition += " AND sold_code=? "
+		}
+		pars = append(pars, edbCode)
+	}
+
+	if startDate != "" {
+		condition += " AND data_time>=? "
+		pars = append(pars, startDate)
+	}
+
+	glDataList, err := GetShDataByTradeCode(condition, pars)
+
+	//获取指标所有数据
+	var existCondition string
+	var existPars []interface{}
+
+	existCondition += " AND edb_info_id=? "
+	existPars = append(existPars, edbInfoId)
+	if startDate != "" {
+		existCondition += " AND data_time>=? "
+		existPars = append(existPars, startDate)
+	}
+
+	existList, err := GetEdbDataByCondition(source, existCondition, existPars)
+	if err != nil {
+		return err
+	}
+	existMap := make(map[string]*EdbInfoSearchData)
+	for _, v := range existList {
+		existMap[v.DataTime] = v
+	}
+
+	addSql := ` INSERT INTO edb_data_sh(edb_info_id,edb_code,data_time,value,create_time,modify_time,data_timestamp) values `
+	var isAdd bool
+	for _, v := range glDataList {
+		var value string
+		if suffix == "deal" {
+			value = v.DealValue
+		} else if suffix == "buy" {
+			value = v.BuyValue
+		} else {
+			value = v.SoldValue
+		}
+		item := v
+		itemValue := value
+		if _, ok := existMap[v.DataTime]; !ok {
+			eDate := item.DataTime
+			sValue := itemValue
+			if sValue != "" {
+				dataTime, err := time.Parse(utils.FormatDate, eDate)
+				if err != nil {
+					return err
+				}
+				timestamp := dataTime.UnixNano() / 1e6
+				timeStr := fmt.Sprintf("%d", timestamp)
+				saveValue := sValue
+
+				if findItem, ok := existMap[eDate]; !ok {
+					addSql += GetAddSql(edbInfoIdStr, edbCode, eDate, timeStr, saveValue)
+					isAdd = true
+				} else {
+					if findItem != nil && utils.SubFloatToString(findItem.Value, 30) != sValue {
+						err = ModifyEdbDataById(source, findItem.EdbDataId, sValue)
+						if err != nil {
+							return err
+						}
+					}
+				}
+			}
+		}
+	}
+	if isAdd {
+		addSql = strings.TrimRight(addSql, ",")
+		_, err = o.Raw(addSql).Exec()
+		if err != nil {
+			return err
+		}
+	}
+	return
+}

+ 231 - 0
models/base_from_shfe.go

@@ -0,0 +1,231 @@
+package models
+
+import (
+	"fmt"
+	"github.com/beego/beego/v2/client/orm"
+	"hongze/hongze_edb_lib/utils"
+	"strconv"
+	"strings"
+	"time"
+)
+
+type BaseFromTradeShfeIndex struct {
+	BaseFromTradeShfeIndexId int `orm:"column(base_from_trade_ine_index_id);pk"`
+	Rank                     int
+	DealShortName            string
+	DealName                 string
+	DealCode                 string
+	DealValue                string
+	DealChange               int
+	BuyShortName             string
+	BuyName                  string
+	BuyCode                  string
+	BuyValue                 string
+	BuyChange                int
+	SoldShortName            string
+	SoldName                 string
+	SoldCode                 string
+	SoldValue                string
+	SoldChange               int
+	Frequency                string
+	ClassifyName             string
+	ClassifyType             string
+	CreateTime               time.Time
+	ModifyTime               time.Time
+	DataTime                 string
+}
+
+func GetBaseFromShfeDataAllByIndexCode(indexCode, suffix string) (list []*BaseFromTradeShfeIndex, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT * FROM base_from_trade_ine_index WHERE %s_code=? `
+	sql = fmt.Sprintf(sql, suffix)
+	_, err = o.Raw(sql, indexCode).QueryRows(&list)
+	return
+}
+
+type BaseFromShfeDataSimple struct {
+	Id        int `orm:"column(base_from_trade_ine_index_id);pk"`
+	DealCode  string
+	BuyCode   string
+	SoldCode  string
+	DataTime  string
+	DealValue string
+	BuyValue  string
+	SoldValue string
+}
+
+func GetShfeDataByTradeCode(condition string, pars []interface{}) (item []*BaseFromShfeDataSimple, err error) {
+	sql := ` SELECT * FROM base_from_trade_ine_index WHERE 1=1 `
+	o := orm.NewOrm()
+	if condition != "" {
+		sql += condition
+	}
+	sql += ` ORDER BY data_time DESC `
+	_, err = o.Raw(sql, pars).QueryRows(&item)
+	return
+}
+
+//新增上期能源指标数据
+func AddEdbDataFromShfe(edbCode string) (err error) {
+	var suffix string
+	if strings.Contains(edbCode, "deal") {
+		suffix = "deal"
+	} else if strings.Contains(edbCode, "buy") {
+		suffix = "buy"
+	} else if strings.Contains(edbCode, "sold") {
+		suffix = "sold"
+	}
+	o := orm.NewOrm()
+	ineBaseDataAll, err := GetBaseFromShfeDataAllByIndexCode(edbCode, suffix)
+	if err != nil && err.Error() != utils.ErrNoRow() {
+		return
+	}
+
+	var isAdd bool
+	addSql := ` INSERT INTO edb_data_ine(edb_info_id,edb_code,data_time,value,create_time,modify_time,data_timestamp) values `
+	existMap := make(map[string]string)
+
+	for _, sv := range ineBaseDataAll {
+		eDate := sv.DataTime
+		dataTime, err := time.Parse(utils.FormatDate, eDate)
+		if err != nil {
+			fmt.Println("time.Parse Err:" + eDate)
+			return err
+		}
+		timestamp := dataTime.UnixNano() / 1e6
+		timeStr := fmt.Sprintf("%d", timestamp)
+		if _, ok := existMap[eDate]; !ok {
+			if suffix == "deal" {
+				addSql += GetAddSql("0", edbCode, eDate, timeStr, sv.DealValue)
+			} else if suffix == "buy" {
+				addSql += GetAddSql("0", edbCode, eDate, timeStr, sv.BuyValue)
+			} else {
+				addSql += GetAddSql("0", edbCode, eDate, timeStr, sv.SoldValue)
+			}
+			isAdd = true
+		}
+		if suffix == "deal" {
+			existMap[eDate] = sv.DealValue
+		} else if suffix == "buy" {
+			existMap[eDate] = sv.BuyValue
+		} else {
+			existMap[eDate] = sv.SoldValue
+		}
+	}
+	if isAdd {
+		addSql = strings.TrimRight(addSql, ",")
+		utils.FileLog.Info("addSql:" + addSql)
+		_, err = o.Raw(addSql).Exec()
+		if err != nil {
+			return err
+		}
+	}
+	return
+}
+
+//刷新上期能源指标数据
+func RefreshEdbDataFromShfe(edbInfoId int, edbCode, startDate string) (err error) {
+	source := utils.DATA_SOURCE_SHFE
+	o := orm.NewOrm()
+	if err != nil {
+		return
+	}
+	var suffix string
+	if strings.Contains(edbCode, "deal") {
+		suffix = "deal"
+	} else if strings.Contains(edbCode, "buy") {
+		suffix = "buy"
+	} else if strings.Contains(edbCode, "sold") {
+		suffix = "sold"
+	}
+	edbInfoIdStr := strconv.Itoa(edbInfoId)
+	//计算数据
+	var condition string
+	var pars []interface{}
+
+	if edbCode != "" {
+		if suffix == "deal" {
+			condition += " AND deal_code=? "
+		} else if suffix == "buy" {
+			condition += " AND buy_code=? "
+		} else {
+			condition += " AND sold_code=? "
+		}
+		pars = append(pars, edbCode)
+	}
+
+	if startDate != "" {
+		condition += " AND data_time>=? "
+		pars = append(pars, startDate)
+	}
+
+	glDataList, err := GetShfeDataByTradeCode(condition, pars)
+
+	//获取指标所有数据
+	var existCondition string
+	var existPars []interface{}
+
+	existCondition += " AND edb_info_id=? "
+	existPars = append(existPars, edbInfoId)
+	if startDate != "" {
+		existCondition += " AND data_time>=? "
+		existPars = append(existPars, startDate)
+	}
+
+	existList, err := GetEdbDataByCondition(source, existCondition, existPars)
+	if err != nil {
+		return err
+	}
+	existMap := make(map[string]*EdbInfoSearchData)
+	for _, v := range existList {
+		existMap[v.DataTime] = v
+	}
+
+	addSql := ` INSERT INTO edb_data_ine(edb_info_id,edb_code,data_time,value,create_time,modify_time,data_timestamp) values `
+	var isAdd bool
+	for _, v := range glDataList {
+		var value string
+		if suffix == "deal" {
+			value = v.DealValue
+		} else if suffix == "buy" {
+			value = v.BuyValue
+		} else {
+			value = v.SoldValue
+		}
+		item := v
+		itemValue := value
+		if _, ok := existMap[v.DataTime]; !ok {
+			eDate := item.DataTime
+			sValue := itemValue
+			if sValue != "" {
+				dataTime, err := time.Parse(utils.FormatDate, eDate)
+				if err != nil {
+					return err
+				}
+				timestamp := dataTime.UnixNano() / 1e6
+				timeStr := fmt.Sprintf("%d", timestamp)
+				saveValue := sValue
+
+				if findItem, ok := existMap[eDate]; !ok {
+					addSql += GetAddSql(edbInfoIdStr, edbCode, eDate, timeStr, saveValue)
+					isAdd = true
+				} else {
+					if findItem != nil && utils.SubFloatToString(findItem.Value, 30) != saveValue {
+						err = ModifyEdbDataById(source, findItem.EdbDataId, saveValue)
+						if err != nil {
+							return err
+						}
+					}
+				}
+			}
+		}
+	}
+	if isAdd {
+		addSql = strings.TrimRight(addSql, ",")
+		_, err = o.Raw(addSql).Exec()
+		if err != nil {
+			return err
+		}
+	}
+	return
+}

+ 232 - 0
models/base_from_zz.go

@@ -0,0 +1,232 @@
+package models
+
+import (
+	"fmt"
+	"github.com/beego/beego/v2/client/orm"
+	"hongze/hongze_edb_lib/utils"
+	"strconv"
+	"strings"
+	"time"
+)
+
+type BaseFromTradeZhengzhouIndex struct {
+	BaseFromTradeZhengzhouIndexId int `orm:"column(base_from_trade_zhengzhou_index_id);pk"`
+	Rank                          int
+	DealShortName                 string
+	DealName                      string
+	DealCode                      string
+	DealValue                     string
+	DealChange                    int
+	BuyShortName                  string
+	BuyName                       string
+	BuyCode                       string
+	BuyValue                      string
+	BuyChange                     int
+	SoldShortName                 string
+	SoldName                      string
+	SoldCode                      string
+	SoldValue                     string
+	SoldChange                    int
+	Frequency                     string
+	ClassifyName                  string
+	ClassifyType                  string
+	CreateTime                    time.Time
+	ModifyTime                    time.Time
+	DataTime                      string
+}
+
+type BaseFromZzDataSimple struct {
+	Id        int `orm:"column(base_from_trade_zhengzhou_index_id);pk"`
+	DealCode  string
+	BuyCode   string
+	SoldCode  string
+	DataTime  string
+	DealValue string
+	BuyValue  string
+	SoldValue string
+}
+
+func GetBaseFromZhengzhouDataAllByIndexCode(indexCode, suffix string) (list []*BaseFromTradeZhengzhouIndex, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT * FROM base_from_trade_zhengzhou_index WHERE %s_code=? `
+	sql = fmt.Sprintf(sql, suffix)
+	_, err = o.Raw(sql, indexCode).QueryRows(&list)
+	return
+}
+
+func GetZzDataByTradeCode(condition string, pars []interface{}) (item []*BaseFromZzDataSimple, err error) {
+	sql := ` SELECT * FROM base_from_trade_zhengzhou_index WHERE 1=1 `
+	o := orm.NewOrm()
+	if condition != "" {
+		sql += condition
+	}
+	sql += ` ORDER BY data_time DESC `
+	_, err = o.Raw(sql, pars).QueryRows(&item)
+	return
+}
+
+//新增郑商所指标数据
+func AddEdbDataFromZz(edbCode string) (err error) {
+	var suffix string
+	if strings.Contains(edbCode, "deal") {
+		suffix = "deal"
+	} else if strings.Contains(edbCode, "buy") {
+		suffix = "buy"
+	} else if strings.Contains(edbCode, "sold") {
+		suffix = "sold"
+	}
+
+	o := orm.NewOrm()
+
+	zzBaseDataAll, err := GetBaseFromZhengzhouDataAllByIndexCode(edbCode, suffix)
+	if err != nil && err.Error() != utils.ErrNoRow() {
+		return
+	}
+
+	var isAdd bool
+	addSql := ` INSERT INTO edb_data_zz(edb_info_id,edb_code,data_time,value,create_time,modify_time,data_timestamp) values `
+	existMap := make(map[string]string)
+	for _, sv := range zzBaseDataAll {
+		eDate := sv.DataTime
+		dataTime, err := time.Parse(utils.FormatDate, eDate)
+		if err != nil {
+			fmt.Println("time.Parse Err:" + eDate)
+			return err
+		}
+		timestamp := dataTime.UnixNano() / 1e6
+		timeStr := fmt.Sprintf("%d", timestamp)
+		if _, ok := existMap[eDate]; !ok {
+			if suffix == "deal" {
+				addSql += GetAddSql("0", edbCode, eDate, timeStr, sv.DealValue)
+			} else if suffix == "buy" {
+				addSql += GetAddSql("0", edbCode, eDate, timeStr, sv.BuyValue)
+			} else {
+				addSql += GetAddSql("0", edbCode, eDate, timeStr, sv.SoldValue)
+			}
+			isAdd = true
+		}
+		if suffix == "deal" {
+			existMap[eDate] = sv.DealValue
+		} else if suffix == "buy" {
+			existMap[eDate] = sv.BuyValue
+		} else {
+			existMap[eDate] = sv.SoldValue
+		}
+	}
+	if isAdd {
+		addSql = strings.TrimRight(addSql, ",")
+		utils.FileLog.Info("addSql:" + addSql)
+		_, err = o.Raw(addSql).Exec()
+		if err != nil {
+			return err
+		}
+	}
+	return
+}
+
+//刷新郑商所指标数据
+func RefreshEdbDataFromZz(edbInfoId int, edbCode, startDate string) (err error) {
+	source := utils.DATA_SOURCE_YS
+	o := orm.NewOrm()
+	if err != nil {
+		return
+	}
+	var suffix string
+	if strings.Contains(edbCode, "deal") {
+		suffix = "deal"
+	} else if strings.Contains(edbCode, "buy") {
+		suffix = "buy"
+	} else if strings.Contains(edbCode, "sold") {
+		suffix = "sold"
+	}
+	edbInfoIdStr := strconv.Itoa(edbInfoId)
+	//计算数据
+	var condition string
+	var pars []interface{}
+
+	if edbCode != "" {
+		if suffix == "deal" {
+			condition += " AND deal_code=? "
+		} else if suffix == "buy" {
+			condition += " AND buy_code=? "
+		} else {
+			condition += " AND sold_code=? "
+		}
+		pars = append(pars, edbCode)
+	}
+
+	if startDate != "" {
+		condition += " AND data_time>=? "
+		pars = append(pars, startDate)
+	}
+
+	glDataList, err := GetZzDataByTradeCode(condition, pars)
+
+	//获取指标所有数据
+	var existCondition string
+	var existPars []interface{}
+
+	existCondition += " AND edb_info_id=? "
+	existPars = append(existPars, edbInfoId)
+	if startDate != "" {
+		existCondition += " AND data_time>=? "
+		existPars = append(existPars, startDate)
+	}
+
+	existList, err := GetEdbDataByCondition(source, existCondition, existPars)
+	if err != nil {
+		return err
+	}
+	existMap := make(map[string]*EdbInfoSearchData)
+	for _, v := range existList {
+		existMap[v.DataTime] = v
+	}
+
+	addSql := ` INSERT INTO edb_data_zz(edb_info_id,edb_code,data_time,value,create_time,modify_time,data_timestamp) values `
+	var isAdd bool
+	for _, v := range glDataList {
+		var value string
+		if suffix == "deal" {
+			value = v.DealValue
+		} else if suffix == "buy" {
+			value = v.BuyValue
+		} else {
+			value = v.SoldValue
+		}
+		item := v
+		itemValue := value
+		if _, ok := existMap[v.DataTime]; !ok {
+			eDate := item.DataTime
+			sValue := itemValue
+			if sValue != "" {
+				dataTime, err := time.Parse(utils.FormatDate, eDate)
+				if err != nil {
+					return err
+				}
+				timestamp := dataTime.UnixNano() / 1e6
+				timeStr := fmt.Sprintf("%d", timestamp)
+				saveValue := sValue
+
+				if findItem, ok := existMap[eDate]; !ok {
+					addSql += GetAddSql(edbInfoIdStr, edbCode, eDate, timeStr, saveValue)
+					isAdd = true
+				} else {
+					if findItem != nil && utils.SubFloatToString(findItem.Value, 30) != sValue {
+						err = ModifyEdbDataById(source, findItem.EdbDataId, sValue)
+						if err != nil {
+							return err
+						}
+					}
+				}
+			}
+		}
+	}
+	if isAdd {
+		addSql = strings.TrimRight(addSql, ",")
+		_, err = o.Raw(addSql).Exec()
+		if err != nil {
+			return err
+		}
+	}
+	return
+}

+ 4 - 2
models/db.go

@@ -1,10 +1,10 @@
 package models
 
 import (
+	"github.com/beego/beego/v2/client/orm"
 	_ "github.com/go-sql-driver/mysql"
 	"hongze/hongze_edb_lib/utils"
 	"time"
-	"github.com/beego/beego/v2/client/orm"
 )
 
 func init() {
@@ -29,8 +29,10 @@ func init() {
 	gl, _ := orm.GetDB("gl")
 	gl.SetConnMaxLifetime(10 * time.Minute)
 
+	orm.Debug = true
 	//注册对象
 	orm.RegisterModel(
-
+		new(EdbDataCalculateZjpj),
+		new(EdbDataCalculateLjztbpj),
 	)
 }

+ 12 - 1
models/edb_data_base.go

@@ -88,7 +88,7 @@ func GetEdbDataByCondition(source int, condition string, pars []interface{}) (it
 func ModifyEdbDataById(source, edbDataId int, value string) (err error) {
 	o := orm.NewOrm()
 	tableName := GetEdbDataTableName(source)
-	sql := ` UPDATE %s SET value=? WHERE edb_data_id=? `
+	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
@@ -109,3 +109,14 @@ type RefreshEdbInfoReq struct {
 	EdbCode   string `description:"指标编码"`
 	StartDate string `description:"开始日期"`
 }
+
+// GetAllEdbDataList 获取所有的指标数据列表
+func GetAllEdbDataList(edbInfoId, source int) (existDataList []*EdbData, err error) {
+	o := orm.NewOrm()
+	dataTableName := GetEdbDataTableName(source)
+	fmt.Println("dataTableName:", dataTableName)
+	sql := `SELECT * FROM %s WHERE edb_info_id=? order by data_time asc`
+	sql = fmt.Sprintf(sql, dataTableName)
+	_, err = o.Raw(sql, edbInfoId).QueryRows(&existDataList)
+	return
+}

+ 187 - 31
models/edb_data_calculate_bp.go

@@ -11,32 +11,6 @@ import (
 	"time"
 )
 
-type EdbInfoCalculateBpDetail struct {
-	EdbInfoCalculateBpId int       `orm:"column(edb_info_calculate_bp_id);pk"`
-	EdbInfoId            int       `description:"指标id"`
-	EdbCode              string    `description:"指标编码"`
-	FromEdbInfoId        int       `description:"计算指标id"`
-	FromEdbCode          string    `description:"计算指标编码"`
-	FromEdbName          string    `description:"计算指标名称"`
-	FromSource           int       `description:"计算指标来源"`
-	FromSourceName       string    `description:"计算指标来源名称"`
-	FromTag              string    `description:"来源指标标签"`
-	Sort                 int       `description:"计算指标名称排序"`
-	CreateTime           time.Time `description:"创建时间"`
-	ModifyTime           time.Time `description:"修改时间"`
-	StartDate            string    `description:"开始日期"`
-	EndDate              string    `description:"结束日期"`
-}
-
-func GetEdbInfoCalculateBpDetail(edbInfoId int) (item *EdbInfoCalculateTbzDetail, err error) {
-	o := orm.NewOrm()
-	sql := ` SELECT a.*,b.start_date,b.end_date FROM edb_info_calculate_mapping AS a
-			INNER JOIN edb_info AS b ON a.from_edb_info_id=b.edb_info_id
-			WHERE a.edb_info_id=? `
-	err = o.Raw(sql, edbInfoId).QueryRow(&item)
-	return
-}
-
 // AddCalculateBp 变频
 func AddCalculateBp(req *EdbInfoCalculateBatchSaveReq, fromEdbInfo *EdbInfo, edbCode, uniqueCode string, sysUserId int, sysUserRealName string) (edbInfoId int, err error) {
 	o := orm.NewOrm()
@@ -123,7 +97,7 @@ func AddCalculateBp(req *EdbInfoCalculateBatchSaveReq, fromEdbInfo *EdbInfo, edb
 		return edbInfoId, err
 	}
 
-	addSql := ` INSERT INTO edb_data_calculate_bp(edb_info_id,edb_code,data_time,value,create_time,modify_time,status,data_timestamp) values `
+	addSql := ` INSERT INTO edb_data_calculate_bp(edb_info_id,edb_code,data_time,value,create_time,modify_time,data_timestamp) values `
 	var isAdd bool
 	existMap := make(map[string]string)
 	dataLen := len(dataList)
@@ -299,7 +273,7 @@ func EditCalculateBp(req *EdbInfoCalculateBatchEditReq, fromEdbInfo *EdbInfo, ed
 		if err != nil {
 			return edbInfoId, err
 		}
-		addSql := ` INSERT INTO edb_data_calculate_bp(edb_info_id,edb_code,data_time,value,create_time,modify_time,status,data_timestamp) values `
+		addSql := ` INSERT INTO edb_data_calculate_bp(edb_info_id,edb_code,data_time,value,create_time,modify_time,data_timestamp) values `
 		var isAdd bool
 		existMap := make(map[string]string)
 		dataLen := len(dataList)
@@ -354,8 +328,8 @@ func EditCalculateBp(req *EdbInfoCalculateBatchEditReq, fromEdbInfo *EdbInfo, ed
 	return
 }
 
-// RefreshAllCalculateBp 刷新所有变频数据
-func RefreshAllCalculateBp(edbInfoId, source int, fromEdbInfo *EdbInfo, edbCode, startDate, endDate string) (err error) {
+// RefreshAllCalculateBpBak 刷新所有变频数据
+func RefreshAllCalculateBpBak(edbInfoId, source int, fromEdbInfo *EdbInfo, edbCode, startDate, endDate string) (err error) {
 	o := orm.NewOrm()
 	to, err := o.Begin()
 	if err != nil {
@@ -417,7 +391,7 @@ func RefreshAllCalculateBp(edbInfoId, source int, fromEdbInfo *EdbInfo, edbCode,
 		existDataMap[v.DataTime] = v.Value
 	}
 	fmt.Println("existDataMap:", existDataMap)
-	addSql := ` INSERT INTO edb_data_calculate_bp(edb_info_id,edb_code,data_time,value,create_time,modify_time,status,data_timestamp) values `
+	addSql := ` INSERT INTO edb_data_calculate_bp(edb_info_id,edb_code,data_time,value,create_time,modify_time,data_timestamp) values `
 	var isAdd bool
 
 	existMap := make(map[string]string)
@@ -494,3 +468,185 @@ func RefreshAllCalculateBp(edbInfoId, source int, fromEdbInfo *EdbInfo, edbCode,
 	}
 	return
 }
+
+func RefreshAllCalculateBp(edbInfoId, source int, fromEdbInfo *EdbInfo, edbCode, startDate, endDate string) (err error) {
+	o := orm.NewOrm()
+	to, err := o.Begin()
+	if err != nil {
+		return
+	}
+	defer func() {
+		if err != nil {
+			fmt.Println("RefreshAllCalculateBp,Err:" + err.Error())
+			_ = to.Rollback()
+		} else {
+			_ = to.Commit()
+		}
+	}()
+
+	if err != nil {
+		return
+	}
+	edbInfoIdStr := strconv.Itoa(edbInfoId)
+	//计算数据
+
+	//计算数据
+	var condition string
+	var pars []interface{}
+	condition += " AND edb_info_id=? "
+	pars = append(pars, fromEdbInfo.EdbInfoId)
+
+	//if startDate != "" {
+	//	condition += " AND data_time>=? "
+	//	pars = append(pars, startDate)
+	//}
+	//if endDate != "" {
+	//	condition += " AND data_time<=? "
+	//	pars = append(pars, endDate)
+	//}
+	//获取来源指标的数据
+	dataList, err := GetEdbDataListAll(condition, pars, fromEdbInfo.Source, 1)
+	if err != nil {
+		return err
+	}
+	var dateArr []string
+	dataMap := make(map[string]*EdbInfoSearchData)
+	fromDataMap := make(map[string]float64)
+	//来源指指标数据
+	for _, v := range dataList {
+		dateArr = append(dateArr, v.DataTime)
+		dataMap[v.DataTime] = v
+		fromDataMap[v.DataTime] = v.Value
+	}
+	fmt.Println("source:", source)
+
+	//获取变频指标所有数据
+	existDataList, err := GetAllEdbDataList(edbInfoId, source)
+	if err != nil {
+		return
+	}
+	//计算指标的map
+	existDataMap := make(map[string]*EdbData, 0)
+
+	addSql := ` INSERT INTO edb_data_calculate_bp(edb_info_id,edb_code,data_time,value,create_time,modify_time,data_timestamp) values `
+	var isAdd bool
+
+	var lastValue float64   //最后数据的值(float64)
+	var lastValueStr string //最后数据的值(string)
+	//待删除的日期
+	removeDateList := make([]string, 0)
+	if len(existDataList) > 0 {
+		//第一个已经入库的日期
+		firstExistDataTimeStr := existDataList[0].DataTime //计算指标数据第一条的日期字符串
+		if len(dateArr) > 0 {
+			firstFromDataTimeStr := dateArr[0]                                                             //来源数据第一条的日期字符串
+			firstExistDataTime, _ := time.Parse(utils.FormatDate, firstExistDataTimeStr)                   //计算指标数据第一条的日期(time类型)
+			firstFromDataTime, _ := time.Parse(utils.FormatDate, firstFromDataTimeStr)                     //来源数据第一条的日期(time类型)
+			nowDateStr := time.Now().Format(utils.FormatDate)                                              //当天日期字符串
+			nowDate, _ := time.ParseInLocation(utils.FormatDate, nowDateStr, firstFromDataTime.Location()) //当天日期(time类型)
+
+			lastValue = fromDataMap[firstFromDataTimeStr]
+			lastValueStr = decimal.NewFromFloat(lastValue).String()
+			//第一步: 判断来源指标的开始时间与计算指标的开始时间是否相等,相等的话,那么就不需要对两个时间之间的数据做处理
+			if firstExistDataTimeStr != firstFromDataTimeStr {
+				if firstExistDataTime.Before(firstFromDataTime) { //如果计算指标第一条数据的开始时间 早于 来源指标的第一条开始时间,那么需要对两个时间之间的计算指标数据做 删除处理
+					for _, v := range existDataList {
+						if v.DataTime == firstFromDataTimeStr {
+							if tmpLastValue, ok := fromDataMap[firstFromDataTimeStr]; ok { //来源指标当天的数据
+								lastValue = tmpLastValue
+								lastValueStr = decimal.NewFromFloat(lastValue).String()
+							}
+							break
+						}
+						removeDateList = append(removeDateList, v.DataTime)
+					}
+				} else {
+					for _, v := range dateArr { //如果计算指标第一条数据的开始时间 晚于 来源指标的第一条开始时间,那么需要对两个时间之间的计算指标数据做 新增处理
+						if v == firstExistDataTimeStr {
+							if tmpLastValue, ok := fromDataMap[v]; ok { //来源指标当天的数据
+								lastValue = tmpLastValue
+								lastValueStr = decimal.NewFromFloat(lastValue).String()
+							}
+							break
+						}
+
+						currentDate, _ := time.Parse(utils.FormatDate, v)
+						timestamp := currentDate.UnixNano() / 1e6
+						timestampStr := fmt.Sprintf("%d", timestamp)
+						addSql += GetAddSql(edbInfoIdStr, edbCode, v, timestampStr, lastValueStr)
+
+						isAdd = true
+					}
+				}
+			}
+
+			//第二步 剩余数据每天修改
+
+			day := int(nowDate.Sub(firstExistDataTime).Hours() / float64(24))
+
+			//第二步: 已经入库的数据处理
+			for _, v := range existDataList {
+				existDataMap[v.DataTime] = v
+			}
+
+			for k := day; k >= 0; k-- {
+				needDay := nowDate.AddDate(0, 0, -k)
+				needDayStr := needDay.Format(utils.FormatDate)
+				tmpExistData, ok := existDataMap[needDayStr]
+				if ok {
+					if tmpLastValue, ok := fromDataMap[tmpExistData.DataTime]; ok { //来源指标当天的数据
+						lastValue = tmpLastValue
+						lastValueStr = decimal.NewFromFloat(lastValue).String()
+					}
+					//如果对应的值不匹配
+					if tmpExistData.Value != lastValueStr {
+						err = ModifyEdbDataById(source, tmpExistData.EdbDataId, lastValueStr)
+						if err != nil {
+							return err
+						}
+					}
+				} else {
+					timestamp := needDay.UnixNano() / 1e6
+					timestampStr := fmt.Sprintf("%d", timestamp)
+					addSql += GetAddSql(edbInfoIdStr, edbCode, needDayStr, timestampStr, lastValueStr)
+
+					isAdd = true
+				}
+			}
+		} else {
+			//如果没有来源指标数据,那么已经入库的计算指标数据需要全部删除
+			tableName := GetEdbDataTableName(source)
+			sql := fmt.Sprintf(` DELETE FROM %s WHERE edb_info_id = ?`, tableName)
+			_, err = o.Raw(sql, edbInfoId).Exec()
+			if err != nil {
+				err = fmt.Errorf("删除所有的变频指标数据失败,Err:" + err.Error())
+				return
+			}
+
+			//for _, v := range existDataList {
+			//	removeDateList = append(removeDateList, v.DataTime)
+			//}
+		}
+	}
+
+	// 删除不需要的指标数据
+	if len(removeDateList) > 0 {
+		removeDateStr := strings.Join(removeDateList, `","`)
+		removeDateStr = `"` + removeDateStr + `"`
+		//如果拼接指标变更了,那么需要删除所有的指标数据
+		tableName := GetEdbDataTableName(source)
+		sql := fmt.Sprintf(` DELETE FROM %s WHERE edb_info_id = ? and data_time in (%s) `, tableName, removeDateStr)
+
+		_, err = o.Raw(sql, edbInfoId).Exec()
+		if err != nil {
+			err = fmt.Errorf("删除不存在的变频指标数据失败,Err:" + err.Error())
+			return
+		}
+	}
+
+	if isAdd {
+		addSql = strings.TrimRight(addSql, ",")
+		_, err = o.Raw(addSql).Exec()
+	}
+	return
+}

+ 3 - 29
models/edb_data_calculate_hbz.go

@@ -11,32 +11,6 @@ import (
 	"time"
 )
 
-type EdbInfoCalculateHbzDetail struct {
-	EdbInfoCalculateTbzId int       `orm:"column(edb_info_calculate_tbz_id);pk"`
-	EdbInfoId             int       `description:"指标id"`
-	EdbCode               string    `description:"指标编码"`
-	FromEdbInfoId         int       `description:"计算指标id"`
-	FromEdbCode           string    `description:"计算指标编码"`
-	FromEdbName           string    `description:"计算指标名称"`
-	FromSource            int       `description:"计算指标来源"`
-	FromSourceName        string    `description:"计算指标来源名称"`
-	FromTag               string    `description:"来源指标标签"`
-	Sort                  int       `description:"计算指标名称排序"`
-	CreateTime            time.Time `description:"创建时间"`
-	ModifyTime            time.Time `description:"修改时间"`
-	StartDate             string    `description:"开始日期"`
-	EndDate               string    `description:"结束日期"`
-}
-
-func GetEdbInfoCalculateHbzDetail(edbInfoId int) (item *EdbInfoCalculateTbzDetail, err error) {
-	o := orm.NewOrm()
-	sql := ` SELECT a.*,b.start_date,b.end_date FROM edb_info_calculate_mapping AS a
-			INNER JOIN edb_info AS b ON a.from_edb_info_id=b.edb_info_id
-			WHERE a.edb_info_id=? `
-	err = o.Raw(sql, edbInfoId).QueryRow(&item)
-	return
-}
-
 // AddCalculateHbz 新增环比值指标
 func AddCalculateHbz(req *EdbInfoCalculateBatchSaveReq, fromEdbInfo *EdbInfo, edbCode, uniqueCode string, sysUserId int, sysUserRealName string, formulaInt int) (edbInfoId int, err error) {
 	o := orm.NewOrm()
@@ -122,7 +96,7 @@ func AddCalculateHbz(req *EdbInfoCalculateBatchSaveReq, fromEdbInfo *EdbInfo, ed
 		return edbInfoId, err
 	}
 
-	addSql := ` INSERT INTO edb_data_calculate_hbz(edb_info_id,edb_code,data_time,value,create_time,modify_time,status,data_timestamp) values `
+	addSql := ` INSERT INTO edb_data_calculate_hbz(edb_info_id,edb_code,data_time,value,create_time,modify_time,data_timestamp) values `
 	var isAdd bool
 	existMap := make(map[string]string)
 	dataLen := len(dataList)
@@ -252,7 +226,7 @@ func EditCalculateHbz(req *EdbInfoCalculateBatchEditReq, fromEdbInfo *EdbInfo, e
 		if err != nil {
 			return edbInfoId, err
 		}
-		addSql := ` INSERT INTO edb_data_calculate_hbz(edb_info_id,edb_code,data_time,value,create_time,modify_time,status,data_timestamp) values `
+		addSql := ` INSERT INTO edb_data_calculate_hbz(edb_info_id,edb_code,data_time,value,create_time,modify_time,data_timestamp) values `
 		var isAdd bool
 		existMap := make(map[string]string)
 		dataLen := len(dataList)
@@ -350,7 +324,7 @@ func RefreshAllCalculateHbz(edbInfoId, source int, fromEdbInfo *EdbInfo, edbCode
 	for _, v := range existDataList {
 		existDataMap[v.DataTime] = v.Value
 	}
-	addSql := ` INSERT INTO edb_data_calculate_hbz(edb_info_id,edb_code,data_time,value,create_time,modify_time,status,data_timestamp) values `
+	addSql := ` INSERT INTO edb_data_calculate_hbz(edb_info_id,edb_code,data_time,value,create_time,modify_time,data_timestamp) values `
 	var isAdd bool
 	existMap := make(map[string]string)
 	dataLen := len(dataList)

+ 3 - 29
models/edb_data_calculate_hcz.go

@@ -11,32 +11,6 @@ import (
 	"time"
 )
 
-type EdbInfoCalculateHczDetail struct {
-	EdbInfoCalculateHczId int       `orm:"column(edb_info_calculate_hcz_id);pk"`
-	EdbInfoId             int       `description:"指标id"`
-	EdbCode               string    `description:"指标编码"`
-	FromEdbInfoId         int       `description:"计算指标id"`
-	FromEdbCode           string    `description:"计算指标编码"`
-	FromEdbName           string    `description:"计算指标名称"`
-	FromSource            int       `description:"计算指标来源"`
-	FromSourceName        string    `description:"计算指标来源名称"`
-	FromTag               string    `description:"来源指标标签"`
-	Sort                  int       `description:"计算指标名称排序"`
-	CreateTime            time.Time `description:"创建时间"`
-	ModifyTime            time.Time `description:"修改时间"`
-	StartDate             string    `description:"开始日期"`
-	EndDate               string    `description:"结束日期"`
-}
-
-func GetEdbInfoCalculateHczDetail(edbInfoId int) (item *EdbInfoCalculateHczDetail, err error) {
-	o := orm.NewOrm()
-	sql := ` SELECT a.*,b.start_date,b.end_date FROM edb_info_calculate_mapping AS a
-			INNER JOIN edb_info AS b ON a.from_edb_info_id=b.edb_info_id
-			WHERE a.edb_info_id=? `
-	err = o.Raw(sql, edbInfoId).QueryRow(&item)
-	return
-}
-
 // AddCalculateHcz 新增环差值指标
 func AddCalculateHcz(req *EdbInfoCalculateBatchSaveReq, fromEdbInfo *EdbInfo, edbCode, uniqueCode string, sysUserId int, sysUserRealName string, formulaInt int) (edbInfoId int, err error) {
 	o := orm.NewOrm()
@@ -123,7 +97,7 @@ func AddCalculateHcz(req *EdbInfoCalculateBatchSaveReq, fromEdbInfo *EdbInfo, ed
 		return edbInfoId, err
 	}
 
-	addSql := ` INSERT INTO edb_data_calculate_hcz(edb_info_id,edb_code,data_time,value,create_time,modify_time,status,data_timestamp) values `
+	addSql := ` INSERT INTO edb_data_calculate_hcz(edb_info_id,edb_code,data_time,value,create_time,modify_time,data_timestamp) values `
 	var isAdd bool
 	existMap := make(map[string]string)
 	dataLen := len(dataList)
@@ -267,7 +241,7 @@ func EditCalculateHcz(req *EdbInfoCalculateBatchEditReq, fromEdbInfo *EdbInfo, e
 			dataMap[v.DataTime] = v
 		}
 
-		addSql := ` INSERT INTO edb_data_calculate_hcz(edb_info_id,edb_code,data_time,value,create_time,modify_time,status,data_timestamp) values `
+		addSql := ` INSERT INTO edb_data_calculate_hcz(edb_info_id,edb_code,data_time,value,create_time,modify_time,data_timestamp) values `
 		var isAdd bool
 		existMap := make(map[string]string)
 		dataLen := len(dataList)
@@ -367,7 +341,7 @@ func RefreshAllCalculateHcz(edbInfoId, source int, fromEdbInfo *EdbInfo, edbCode
 		existDataMap[v.DataTime] = v.Value
 	}
 	fmt.Println("existDataMap:", existDataMap)
-	addSql := ` INSERT INTO edb_data_calculate_hcz(edb_info_id,edb_code,data_time,value,create_time,modify_time,status,data_timestamp) values `
+	addSql := ` INSERT INTO edb_data_calculate_hcz(edb_info_id,edb_code,data_time,value,create_time,modify_time,data_timestamp) values `
 	var isAdd bool
 	existMap := make(map[string]string)
 	dataLen := len(dataList)

+ 3 - 29
models/edb_data_calculate_ljzzy.go

@@ -11,32 +11,6 @@ import (
 	"time"
 )
 
-type EdbInfoCalculateLjzzyDetail struct {
-	EdbInfoCalculateLjzzyId int       `orm:"column(edb_info_calculate_ljzzy_id);pk"`
-	EdbInfoId               int       `description:"指标id"`
-	EdbCode                 string    `description:"指标编码"`
-	FromEdbInfoId           int       `description:"计算指标id"`
-	FromEdbCode             string    `description:"计算指标编码"`
-	FromEdbName             string    `description:"计算指标名称"`
-	FromSource              int       `description:"计算指标来源"`
-	FromSourceName          string    `description:"计算指标来源名称"`
-	FromTag                 string    `description:"来源指标标签"`
-	Sort                    int       `description:"计算指标名称排序"`
-	CreateTime              time.Time `description:"创建时间"`
-	ModifyTime              time.Time `description:"修改时间"`
-	StartDate               string    `description:"开始日期"`
-	EndDate                 string    `description:"结束日期"`
-}
-
-func GetEdbInfoCalculateLjzzyDetail(edbInfoId int) (item *EdbInfoCalculateLjzzyDetail, err error) {
-	o := orm.NewOrm()
-	sql := ` SELECT a.*,b.start_date,b.end_date FROM edb_info_calculate_mapping AS a
-			INNER JOIN edb_info AS b ON a.from_edb_info_id=b.edb_info_id
-			WHERE a.edb_info_id=? `
-	err = o.Raw(sql, edbInfoId).QueryRow(&item)
-	return
-}
-
 // AddCalculateLjzzy 累计值转月
 func AddCalculateLjzzy(req *EdbInfoCalculateBatchSaveReq, fromEdbInfo *EdbInfo, edbCode, uniqueCode string, sysUserId int, sysUserRealName string) (edbInfoId int, err error) {
 	o := orm.NewOrm()
@@ -144,7 +118,7 @@ func AddCalculateLjzzy(req *EdbInfoCalculateBatchSaveReq, fromEdbInfo *EdbInfo,
 		}
 	}
 
-	addSql := ` INSERT INTO edb_data_calculate_ljzzy(edb_info_id,edb_code,data_time,value,create_time,modify_time,status,data_timestamp) values `
+	addSql := ` INSERT INTO edb_data_calculate_ljzzy(edb_info_id,edb_code,data_time,value,create_time,modify_time,data_timestamp) values `
 	var isAdd bool
 	existMap := make(map[string]string)
 	for yk, yv := range yearMap {
@@ -363,7 +337,7 @@ func EditCalculateLjzzy(req *EdbInfoCalculateBatchEditReq, fromEdbInfo *EdbInfo,
 			}
 		}
 
-		addSql := ` INSERT INTO edb_data_calculate_ljzzy(edb_info_id,edb_code,data_time,value,create_time,modify_time,status,data_timestamp) values `
+		addSql := ` INSERT INTO edb_data_calculate_ljzzy(edb_info_id,edb_code,data_time,value,create_time,modify_time,data_timestamp) values `
 		nowStr := time.Now().Format(utils.FormatDateTime)
 		var isAdd bool
 
@@ -502,7 +476,7 @@ func RefreshAllCalculateLjzzy(edbInfoId, source int, fromEdbInfo *EdbInfo, edbCo
 		}
 	}
 
-	addSql := ` INSERT INTO edb_data_calculate_ljzzy(edb_info_id,edb_code,data_time,value,create_time,modify_time,status,data_timestamp) values `
+	addSql := ` INSERT INTO edb_data_calculate_ljzzy(edb_info_id,edb_code,data_time,value,create_time,modify_time,data_timestamp) values `
 	var isAdd bool
 	//获取指标所有数据
 	existDataList := make([]*EdbData, 0)

+ 3 - 29
models/edb_data_calculate_nszydbpjjs.go

@@ -11,32 +11,6 @@ import (
 	"time"
 )
 
-type EdbInfoCalculateNszydpjjsDetail struct {
-	EdbInfoCalculateNszydpjjsId int       `orm:"column(edb_info_calculate_nszydpjjs_id);pk"`
-	EdbInfoId                   int       `description:"指标id"`
-	EdbCode                     string    `description:"指标编码"`
-	FromEdbInfoId               int       `description:"计算指标id"`
-	FromEdbCode                 string    `description:"计算指标编码"`
-	FromEdbName                 string    `description:"计算指标名称"`
-	FromSource                  int       `description:"计算指标来源"`
-	FromSourceName              string    `description:"计算指标来源名称"`
-	FromTag                     string    `description:"来源指标标签"`
-	Sort                        int       `description:"计算指标名称排序"`
-	CreateTime                  time.Time `description:"创建时间"`
-	ModifyTime                  time.Time `description:"修改时间"`
-	StartDate                   string    `description:"开始日期"`
-	EndDate                     string    `description:"结束日期"`
-}
-
-func GetEdbInfoCalculateNszydpjjsDetail(edbInfoId int) (item *EdbInfoCalculateNszydpjjsDetail, err error) {
-	o := orm.NewOrm()
-	sql := ` SELECT a.*,b.start_date,b.end_date FROM edb_info_calculate_mapping AS a
-			INNER JOIN edb_info AS b ON a.from_edb_info_id=b.edb_info_id
-			WHERE a.edb_info_id=? `
-	err = o.Raw(sql, edbInfoId).QueryRow(&item)
-	return
-}
-
 // AddCalculateNszydpjjs N数值移动平均计算
 func AddCalculateNszydpjjs(req *EdbInfoCalculateBatchSaveReq, fromEdbInfo *EdbInfo, edbCode, uniqueCode string, sysUserId int, sysUserRealName string, formulaInt int) (edbInfoId int, err error) {
 	o := orm.NewOrm()
@@ -125,7 +99,7 @@ func AddCalculateNszydpjjs(req *EdbInfoCalculateBatchSaveReq, fromEdbInfo *EdbIn
 		dataMap[v.DataTime] = v
 	}
 
-	addSql := ` INSERT INTO edb_data_calculate_nszydpjjs(edb_info_id,edb_code,data_time,value,create_time,modify_time,status,data_timestamp) values `
+	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
 
 	arrLen := len(dateArr)
@@ -279,7 +253,7 @@ func EditCalculateNszydpjjs(req *EdbInfoCalculateBatchEditReq, fromEdbInfo *EdbI
 			dataMap[v.DataTime] = v
 		}
 
-		addSql := ` INSERT INTO edb_data_calculate_nszydpjjs(edb_info_id,edb_code,data_time,value,create_time,modify_time,status,data_timestamp) values `
+		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
 
 		arrLen := len(dateArr)
@@ -397,7 +371,7 @@ func RefreshAllCalculateNszydpjjs(edbInfoId, source, formulaInt int, fromEdbInfo
 		fromDataMap[v.DataTime] = v
 	}
 
-	addSql := ` INSERT INTO edb_data_calculate_nszydpjjs(edb_info_id,edb_code,data_time,value,create_time,modify_time,status,data_timestamp) values `
+	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)
 	arrLen := len(fromDateArr)

+ 4 - 30
models/edb_data_calculate_tbz.go

@@ -11,32 +11,6 @@ import (
 	"time"
 )
 
-type EdbInfoCalculateTbzDetail struct {
-	EdbInfoCalculateTbzId int       `orm:"column(edb_info_calculate_tbz_id);pk"`
-	EdbInfoId             int       `description:"指标id"`
-	EdbCode               string    `description:"指标编码"`
-	FromEdbInfoId         int       `description:"计算指标id"`
-	FromEdbCode           string    `description:"计算指标编码"`
-	FromEdbName           string    `description:"计算指标名称"`
-	FromSource            int       `description:"计算指标来源"`
-	FromSourceName        string    `description:"计算指标来源名称"`
-	FromTag               string    `description:"来源指标标签"`
-	Sort                  int       `description:"计算指标名称排序"`
-	CreateTime            time.Time `description:"创建时间"`
-	ModifyTime            time.Time `description:"修改时间"`
-	StartDate             string    `description:"开始日期"`
-	EndDate               string    `description:"结束日期"`
-}
-
-func GetEdbInfoCalculateTbzDetail(edbInfoId int) (item *EdbInfoCalculateTbzDetail, err error) {
-	o := orm.NewOrm()
-	sql := ` SELECT a.*,b.start_date,b.end_date FROM edb_info_calculate_mapping AS a
-			INNER JOIN edb_info AS b ON a.from_edb_info_id=b.edb_info_id
-			WHERE a.edb_info_id=? `
-	err = o.Raw(sql, edbInfoId).QueryRow(&item)
-	return
-}
-
 // AddCalculateTbz 同比值
 func AddCalculateTbz(req *EdbInfoCalculateBatchSaveReq, fromEdbInfo *EdbInfo, edbCode, uniqueCode string, sysUserId int, sysUserRealName string) (edbInfoId int, err error) {
 	o := orm.NewOrm()
@@ -130,7 +104,7 @@ func AddCalculateTbz(req *EdbInfoCalculateBatchSaveReq, fromEdbInfo *EdbInfo, ed
 		dataMap[v.DataTime] = v
 	}
 
-	addSql := ` INSERT INTO edb_data_calculate_tbz(edb_info_id,edb_code,data_time,value,create_time,modify_time,status,data_timestamp) values `
+	addSql := ` INSERT INTO edb_data_calculate_tbz(edb_info_id,edb_code,data_time,value,create_time,modify_time,data_timestamp) values `
 	var isAdd bool
 	existMap := make(map[string]string)
 	for _, av := range dateArr {
@@ -376,7 +350,7 @@ func EditCalculateTbz(req *EdbInfoCalculateBatchEditReq, fromEdbInfo *EdbInfo, e
 			dataMap[v.DataTime] = v
 		}
 
-		addSql := ` INSERT INTO edb_data_calculate_tbz(edb_info_id,edb_code,data_time,value,create_time,modify_time,status,data_timestamp) values `
+		addSql := ` INSERT INTO edb_data_calculate_tbz(edb_info_id,edb_code,data_time,value,create_time,modify_time,data_timestamp) values `
 		var isAdd bool
 		for _, av := range dateArr {
 			currentItem := dataMap[av]
@@ -504,8 +478,8 @@ func RefreshAllCalculateTbz(edbInfoId, source int, fromEdbInfo *EdbInfo, edbCode
 		return
 	}
 	defer func() {
-		fmt.Println("RefreshAllCalculateTbz,Err:" + err.Error())
 		if err != nil {
+			fmt.Println("RefreshAllCalculateTbz,Err:" + err.Error())
 			_ = to.Rollback()
 		} else {
 			_ = to.Commit()
@@ -559,7 +533,7 @@ func RefreshAllCalculateTbz(edbInfoId, source int, fromEdbInfo *EdbInfo, edbCode
 		existDataMap[v.DataTime] = v.Value
 	}
 	fmt.Println("existDataMap:", existDataMap)
-	addSql := ` INSERT INTO edb_data_calculate_tbz(edb_info_id,edb_code,data_time,value,create_time,modify_time,status,data_timestamp) values `
+	addSql := ` INSERT INTO edb_data_calculate_tbz(edb_info_id,edb_code,data_time,value,create_time,modify_time,data_timestamp) values `
 	var isAdd bool
 	existAddDataMap := make(map[string]string)
 	for _, av := range dateArr {

+ 3 - 29
models/edb_data_calculate_tcz.go

@@ -11,32 +11,6 @@ import (
 	"time"
 )
 
-type EdbInfoCalculateTczDetail struct {
-	EdbInfoCalculateTczId int       `orm:"column(edb_info_calculate_tcz_id);pk"`
-	EdbInfoId             int       `description:"指标id"`
-	EdbCode               string    `description:"指标编码"`
-	FromEdbInfoId         int       `description:"计算指标id"`
-	FromEdbCode           string    `description:"计算指标编码"`
-	FromEdbName           string    `description:"计算指标名称"`
-	FromSource            int       `description:"计算指标来源"`
-	FromSourceName        string    `description:"计算指标来源名称"`
-	FromTag               string    `description:"来源指标标签"`
-	Sort                  int       `description:"计算指标名称排序"`
-	CreateTime            time.Time `description:"创建时间"`
-	ModifyTime            time.Time `description:"修改时间"`
-	StartDate             string    `description:"开始日期"`
-	EndDate               string    `description:"结束日期"`
-}
-
-func GetEdbInfoCalculateTczDetail(edbInfoId int) (item *EdbInfoCalculateTczDetail, err error) {
-	o := orm.NewOrm()
-	sql := ` SELECT a.*,b.start_date,b.end_date FROM edb_info_calculate_mapping AS a
-			INNER JOIN edb_info AS b ON a.from_edb_info_id=b.edb_info_id
-			WHERE a.edb_info_id=? `
-	err = o.Raw(sql, edbInfoId).QueryRow(&item)
-	return
-}
-
 // AddCalculateTcz 同差值
 func AddCalculateTcz(req *EdbInfoCalculateBatchSaveReq, fromEdbInfo *EdbInfo, edbCode, uniqueCode string, sysUserId int, sysUserRealName string) (edbInfoId int, err error) {
 	o := orm.NewOrm()
@@ -133,7 +107,7 @@ func AddCalculateTcz(req *EdbInfoCalculateBatchSaveReq, fromEdbInfo *EdbInfo, ed
 		dataMap[v.DataTime] = v
 	}
 	fmt.Println("Frequency:", fromEdbInfo.Frequency)
-	addSql := ` INSERT INTO edb_data_calculate_tcz(edb_info_id,edb_code,data_time,value,create_time,modify_time,status,data_timestamp) values `
+	addSql := ` INSERT INTO edb_data_calculate_tcz(edb_info_id,edb_code,data_time,value,create_time,modify_time,data_timestamp) values `
 	var isAdd bool
 	existMap := make(map[string]string)
 	for _, av := range dateArr {
@@ -382,7 +356,7 @@ func EditCalculateTcz(req *EdbInfoCalculateBatchEditReq, fromEdbInfo *EdbInfo, e
 			dataMap[v.DataTime] = v
 		}
 
-		addSql := ` INSERT INTO edb_data_calculate_tcz(edb_info_id,edb_code,data_time,value,create_time,modify_time,status,data_timestamp) values `
+		addSql := ` INSERT INTO edb_data_calculate_tcz(edb_info_id,edb_code,data_time,value,create_time,modify_time,data_timestamp) values `
 		var isAdd bool
 		for ak, av := range dateArr {
 			fmt.Println(ak, av)
@@ -565,7 +539,7 @@ func RefreshAllCalculateTcz(edbInfoId, source int, fromEdbInfo *EdbInfo, edbCode
 		existDataMap[v.DataTime] = v.Value
 	}
 
-	addSql := ` INSERT INTO edb_data_calculate_tcz(edb_info_id,edb_code,data_time,value,create_time,modify_time,status,data_timestamp) values `
+	addSql := ` INSERT INTO edb_data_calculate_tcz(edb_info_id,edb_code,data_time,value,create_time,modify_time,data_timestamp) values `
 	var isAdd bool
 	existAddDataMap := make(map[string]string)
 	for _, av := range dateArr {

+ 3 - 34
models/edb_data_calculate_time_shift.go

@@ -11,37 +11,6 @@ import (
 	"time"
 )
 
-type EdbInfoCalculateMappingView struct {
-	EdbInfoCalculateMappingId int       `orm:"column(edb_info_calculate_mapping_id);pk"`
-	EdbInfoId                 int       `description:"计算指标id"`
-	Source                    int       `description:"计算指标来源"`
-	SourceName                string    `description:"计算指标来源名称"`
-	EdbCode                   string    `description:"计算指标编码"`
-	FromEdbInfoId             int       `description:"基础指标id"`
-	FromEdbCode               string    `description:"基础指标编码"`
-	FromEdbName               string    `description:"基础指标名称"`
-	FromSource                int       `description:"基础指标来源"`
-	FromSourceName            string    `description:"基础指标来源名称"`
-	FromTag                   string    `description:"来源指标标签"`
-	Sort                      int       `description:"计算指标名称排序"`
-	CreateTime                time.Time `description:"创建时间"`
-	ModifyTime                time.Time `description:"修改时间"`
-	StartDate                 string    `description:"开始日期"`
-	EndDate                   string    `description:"结束日期"`
-	CalculateFormula          string    `description:"N值"`
-	MoveType                  int       `description:"移动方式:1:领先(默认),2:滞后"`
-	MoveFrequency             string    `description:"移动频度"`
-}
-
-func GetEdbInfoCalculateMappingDetail(edbInfoId int) (item *EdbInfoCalculateMappingView, err error) {
-	o := orm.NewOrm()
-	sql := ` SELECT a.*,b.start_date,b.end_date,b.calculate_formula,b.move_type,b.move_frequency FROM edb_info_calculate_mapping AS a
-			INNER JOIN edb_info AS b ON a.edb_info_id=b.edb_info_id
-			WHERE a.edb_info_id=? `
-	err = o.Raw(sql, edbInfoId).QueryRow(&item)
-	return
-}
-
 // AddCalculateTimeShift 时间移位
 func AddCalculateTimeShift(req *EdbInfoCalculateBatchSaveReq, fromEdbInfo *EdbInfo, edbCode, uniqueCode string, sysUserId int, sysUserRealName string) (edbInfoId int, err error) {
 	o := orm.NewOrm()
@@ -147,7 +116,7 @@ func AddCalculateTimeShift(req *EdbInfoCalculateBatchSaveReq, fromEdbInfo *EdbIn
 		return edbInfoId, err
 	}
 
-	addSql := ` INSERT INTO edb_data_calculate_time_shift(edb_info_id,edb_code,data_time,value,create_time,modify_time,status,data_timestamp) values `
+	addSql := ` INSERT INTO edb_data_calculate_time_shift(edb_info_id,edb_code,data_time,value,create_time,modify_time,data_timestamp) values `
 	var isAdd bool
 	existMap := make(map[string]string)
 	dataLen := len(dataList)
@@ -297,7 +266,7 @@ func EditCalculateTimeShift(req *EdbInfoCalculateBatchEditReq, fromEdbInfo *EdbI
 		if err != nil {
 			return edbInfoId, err
 		}
-		addSql := ` INSERT INTO edb_data_calculate_time_shift(edb_info_id,edb_code,data_time,value,create_time,modify_time,status,data_timestamp) values `
+		addSql := ` INSERT INTO edb_data_calculate_time_shift(edb_info_id,edb_code,data_time,value,create_time,modify_time,data_timestamp) values `
 		var isAdd bool
 		existMap := make(map[string]string)
 		dataLen := len(dataList)
@@ -414,7 +383,7 @@ func RefreshAllCalculateTimeShift(edbInfoId, source, formulaInt, moveType int, f
 		existDataMap[v.DataTime] = v.Value
 	}
 	fmt.Println("existDataMap:", existDataMap)
-	addSql := ` INSERT INTO edb_data_calculate_time_shift(edb_info_id,edb_code,data_time,value,create_time,modify_time,status,data_timestamp) values `
+	addSql := ` INSERT INTO edb_data_calculate_time_shift(edb_info_id,edb_code,data_time,value,create_time,modify_time,data_timestamp) values `
 	var isAdd bool
 
 	existMap := make(map[string]string)

+ 2 - 0
models/edb_data_table.go

@@ -55,6 +55,8 @@ func GetEdbDataTableName(source int) (tableName string) {
 		tableName = "edb_data_calculate_time_shift"
 	case utils.DATA_SOURCE_CALCULATE_LJZTBPJ:
 		tableName = "edb_data_calculate_ljztbpj"
+	case utils.DATA_SOURCE_LT:
+		tableName = "edb_data_lt"
 	default:
 		tableName = ""
 	}

+ 63 - 0
models/edb_info_calculate_mapping.go

@@ -29,3 +29,66 @@ func AddEdbInfoCalculateMappingMulti(items []*EdbInfoCalculateMapping) (err erro
 	_, err = o.InsertMulti(1, items)
 	return
 }
+
+// EdbInfoCalculateMappingView
+type EdbInfoCalculateMappingView struct {
+	EdbInfoCalculateMappingId int       `orm:"column(edb_info_calculate_mapping_id);pk"`
+	EdbInfoId                 int       `description:"计算指标id"`
+	Source                    int       `description:"计算指标来源"`
+	SourceName                string    `description:"计算指标来源名称"`
+	EdbCode                   string    `description:"计算指标编码"`
+	FromEdbInfoId             int       `description:"基础指标id"`
+	FromEdbCode               string    `description:"基础指标编码"`
+	FromEdbName               string    `description:"基础指标名称"`
+	FromSource                int       `description:"基础指标来源"`
+	FromSourceName            string    `description:"基础指标来源名称"`
+	FromTag                   string    `description:"来源指标标签"`
+	Sort                      int       `description:"计算指标名称排序"`
+	CreateTime                time.Time `description:"创建时间"`
+	ModifyTime                time.Time `description:"修改时间"`
+	StartDate                 string    `description:"开始日期"`
+	EndDate                   string    `description:"结束日期"`
+	CalculateFormula          string    `description:"N值"`
+	MoveType                  int       `description:"移动方式:1:领先(默认),2:滞后"`
+	MoveFrequency             string    `description:"移动频度"`
+}
+
+// GetEdbInfoCalculateMappingDetail 获取单条关联指标
+func GetEdbInfoCalculateMappingDetail(edbInfoId int) (item *EdbInfoCalculateMappingView, err error) {
+	o := orm.NewOrm()
+	sql := ` SELECT a.*,b.start_date,b.end_date,b.calculate_formula,b.move_type,b.move_frequency FROM edb_info_calculate_mapping AS a
+			INNER JOIN edb_info AS b ON a.edb_info_id=b.edb_info_id
+			WHERE a.edb_info_id=? `
+	err = o.Raw(sql, edbInfoId).QueryRow(&item)
+	return
+}
+
+// EdbInfoCalculateDetail
+type EdbInfoCalculateDetail struct {
+	EdbInfoCalculateId int       `orm:"column(edb_info_calculate_id);pk"`
+	EdbInfoId          int       `description:"指标id"`
+	EdbCode            string    `description:"指标编码"`
+	FromEdbInfoId      int       `description:"计算指标id"`
+	FromEdbCode        string    `description:"计算指标编码"`
+	FromEdbName        string    `description:"计算指标名称"`
+	FromSource         int       `description:"计算指标来源"`
+	FromSourceName     string    `description:"计算指标来源名称"`
+	FromTag            string    `description:"来源指标标签"`
+	Sort               int       `description:"计算指标名称排序"`
+	CreateTime         time.Time `description:"创建时间"`
+	ModifyTime         time.Time `description:"修改时间"`
+	StartDate          string    `description:"开始日期"`
+	EndDate            string    `description:"结束日期"`
+	EdbType            int       `description:"指标类型:1:基础指标,2:计算指标"`
+}
+
+// GetEdbInfoCalculateDetailList 获取关联指标列表
+func GetEdbInfoCalculateDetailList(edbInfoId int) (list []*EdbInfoCalculateDetail, err error) {
+	o := orm.NewOrm()
+	sql := ` SELECT a.*,b.start_date,b.end_date,b.edb_type FROM edb_info_calculate_mapping AS a
+			INNER JOIN edb_info AS b ON a.from_edb_info_id=b.edb_info_id
+			WHERE a.edb_info_id=? ORDER BY sort ASC `
+
+	_, err = o.Raw(sql, edbInfoId).QueryRows(&list)
+	return
+}

+ 108 - 0
routers/commentsRouter_controllers.go

@@ -34,6 +34,60 @@ func init() {
             Filters: nil,
             Params: nil})
 
+    beego.GlobalControllerRouter["hongze/hongze_edb_lib/controllers:CffexController"] = append(beego.GlobalControllerRouter["hongze/hongze_edb_lib/controllers:CffexController"],
+        beego.ControllerComments{
+            Method: "Add",
+            Router: "/add",
+            AllowHTTPMethods: []string{"post"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
+    beego.GlobalControllerRouter["hongze/hongze_edb_lib/controllers:CffexController"] = append(beego.GlobalControllerRouter["hongze/hongze_edb_lib/controllers:CffexController"],
+        beego.ControllerComments{
+            Method: "Refresh",
+            Router: "/refresh",
+            AllowHTTPMethods: []string{"post"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
+    beego.GlobalControllerRouter["hongze/hongze_edb_lib/controllers:DlController"] = append(beego.GlobalControllerRouter["hongze/hongze_edb_lib/controllers:DlController"],
+        beego.ControllerComments{
+            Method: "Add",
+            Router: "/add",
+            AllowHTTPMethods: []string{"post"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
+    beego.GlobalControllerRouter["hongze/hongze_edb_lib/controllers:DlController"] = append(beego.GlobalControllerRouter["hongze/hongze_edb_lib/controllers:DlController"],
+        beego.ControllerComments{
+            Method: "Refresh",
+            Router: "/refresh",
+            AllowHTTPMethods: []string{"post"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
+    beego.GlobalControllerRouter["hongze/hongze_edb_lib/controllers:GieController"] = append(beego.GlobalControllerRouter["hongze/hongze_edb_lib/controllers:GieController"],
+        beego.ControllerComments{
+            Method: "Add",
+            Router: "/add",
+            AllowHTTPMethods: []string{"post"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
+    beego.GlobalControllerRouter["hongze/hongze_edb_lib/controllers:GieController"] = append(beego.GlobalControllerRouter["hongze/hongze_edb_lib/controllers:GieController"],
+        beego.ControllerComments{
+            Method: "Refresh",
+            Router: "/refresh",
+            AllowHTTPMethods: []string{"post"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
     beego.GlobalControllerRouter["hongze/hongze_edb_lib/controllers:LtController"] = append(beego.GlobalControllerRouter["hongze/hongze_edb_lib/controllers:LtController"],
         beego.ControllerComments{
             Method: "Add",
@@ -124,6 +178,42 @@ func init() {
             Filters: nil,
             Params: nil})
 
+    beego.GlobalControllerRouter["hongze/hongze_edb_lib/controllers:ShController"] = append(beego.GlobalControllerRouter["hongze/hongze_edb_lib/controllers:ShController"],
+        beego.ControllerComments{
+            Method: "Add",
+            Router: "/add",
+            AllowHTTPMethods: []string{"post"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
+    beego.GlobalControllerRouter["hongze/hongze_edb_lib/controllers:ShController"] = append(beego.GlobalControllerRouter["hongze/hongze_edb_lib/controllers:ShController"],
+        beego.ControllerComments{
+            Method: "Refresh",
+            Router: "/refresh",
+            AllowHTTPMethods: []string{"post"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
+    beego.GlobalControllerRouter["hongze/hongze_edb_lib/controllers:ShfeController"] = append(beego.GlobalControllerRouter["hongze/hongze_edb_lib/controllers:ShfeController"],
+        beego.ControllerComments{
+            Method: "Add",
+            Router: "/add",
+            AllowHTTPMethods: []string{"post"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
+    beego.GlobalControllerRouter["hongze/hongze_edb_lib/controllers:ShfeController"] = append(beego.GlobalControllerRouter["hongze/hongze_edb_lib/controllers:ShfeController"],
+        beego.ControllerComments{
+            Method: "Refresh",
+            Router: "/refresh",
+            AllowHTTPMethods: []string{"post"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
     beego.GlobalControllerRouter["hongze/hongze_edb_lib/controllers:SmmController"] = append(beego.GlobalControllerRouter["hongze/hongze_edb_lib/controllers:SmmController"],
         beego.ControllerComments{
             Method: "Add",
@@ -178,4 +268,22 @@ func init() {
             Filters: nil,
             Params: nil})
 
+    beego.GlobalControllerRouter["hongze/hongze_edb_lib/controllers:ZzController"] = append(beego.GlobalControllerRouter["hongze/hongze_edb_lib/controllers:ZzController"],
+        beego.ControllerComments{
+            Method: "Add",
+            Router: "/add",
+            AllowHTTPMethods: []string{"post"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
+    beego.GlobalControllerRouter["hongze/hongze_edb_lib/controllers:ZzController"] = append(beego.GlobalControllerRouter["hongze/hongze_edb_lib/controllers:ZzController"],
+        beego.ControllerComments{
+            Method: "Refresh",
+            Router: "/refresh",
+            AllowHTTPMethods: []string{"post"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
 }

+ 30 - 0
routers/router.go

@@ -60,6 +60,36 @@ func init() {
 				&controllers.CalculateController{},
 			),
 		),
+		beego.NSNamespace("/zz",
+			beego.NSInclude(
+				&controllers.ZzController{},
+			),
+		),
+		beego.NSNamespace("/dl",
+			beego.NSInclude(
+				&controllers.DlController{},
+			),
+		),
+		beego.NSNamespace("/sh",
+			beego.NSInclude(
+				&controllers.ShController{},
+			),
+		),
+		beego.NSNamespace("/cffex",
+			beego.NSInclude(
+				&controllers.CffexController{},
+			),
+		),
+		beego.NSNamespace("/shfe",
+			beego.NSInclude(
+				&controllers.ShfeController{},
+			),
+		),
+		beego.NSNamespace("/gie",
+			beego.NSInclude(
+				&controllers.GieController{},
+			),
+		),
 	)
 	beego.AddNamespace(ns)
 }

+ 6 - 5
services/base_from_pb.go

@@ -3,9 +3,10 @@ package services
 import (
 	"encoding/json"
 	"fmt"
-	"github.com/rdlucklib/rdluck_tools/http"
 	"hongze/hongze_edb_lib/utils"
 	"net/url"
+
+	"github.com/rdlucklib/rdluck_tools/http"
 )
 
 type EdbDataFromPb struct {
@@ -20,17 +21,17 @@ func GetEdbDataFromPb(edbCode, startDate, endDate string) (item *EdbDataFromPb,
 	edbCode = url.QueryEscape(edbCode)
 	bpUrl := utils.Hz_Pb_Data_Url + `edbInfo/pb?EdbCode=%s&StartDate=%s&EndDate=%s`
 	bpUrl = fmt.Sprintf(bpUrl, edbCode, startDate, endDate)
-	utils.FileLog.Info("bpUrl:%s", bpUrl)
+	utils.FileLog.Info("bpUrl:" + bpUrl)
 	body, err := http.Get(bpUrl)
 	if err != nil {
-		utils.FileLog.Info("GetEdbDataByPb Err:%s", err.Error())
+		utils.FileLog.Info("GetEdbDataByPb Err:"+err.Error())
 		return
 	}
-	utils.FileLog.Info("GetEdbDataByPb result:%s", string(body))
+	utils.FileLog.Info("GetEdbDataByPb result:" + string(body))
 	item = new(EdbDataFromPb)
 	err = json.Unmarshal(body, &item)
 	if err != nil {
-		utils.FileLog.Info("GetEdbDataByPb Unmarshal Err:%s", err.Error())
+		utils.FileLog.Info("GetEdbDataByPb Unmarshal Err:"+err.Error())
 		return
 	}
 	edbCode, _ = url.QueryUnescape(edbCode)

+ 323 - 8
swagger/swagger.json

@@ -26,7 +26,7 @@
                     "200": {
                         "description": "",
                         "schema": {
-                            "$ref": "#/definitions/data_manage.EditEdbInfoReq"
+                            "$ref": "#/definitions/models.EditEdbInfoReq"
                         }
                     }
                 }
@@ -46,7 +46,7 @@
                         "description": "type json string",
                         "required": true,
                         "schema": {
-                            "$ref": "#/definitions/data_manage.EdbInfoCalculateBatchSaveReq"
+                            "$ref": "#/definitions/models.EdbInfoCalculateBatchSaveReq"
                         }
                     }
                 ],
@@ -57,6 +57,125 @@
                 }
             }
         },
+        "/calculate/refresh": {
+            "post": {
+                "tags": [
+                    "calculate"
+                ],
+                "description": "刷新计算指标接口",
+                "operationId": "CalculateController.刷新计算指标接口",
+                "responses": {
+                    "200": {
+                        "description": "",
+                        "schema": {
+                            "$ref": "#/definitions/models.RefreshEdbInfoReq"
+                        }
+                    }
+                }
+            }
+        },
+        "/cffex/add": {
+            "post": {
+                "tags": [
+                    "cffex"
+                ],
+                "description": "新增中金所指标接口",
+                "operationId": "CffexController.新增中金所指标接口",
+                "responses": {
+                    "200": {
+                        "description": "",
+                        "schema": {
+                            "$ref": "#/definitions/models.AddEdbInfoReq"
+                        }
+                    }
+                }
+            }
+        },
+        "/cffex/refresh": {
+            "post": {
+                "tags": [
+                    "cffex"
+                ],
+                "description": "刷新中金所指标接口",
+                "operationId": "CffexController.刷新中金所指标接口",
+                "responses": {
+                    "200": {
+                        "description": "",
+                        "schema": {
+                            "$ref": "#/definitions/models.RefreshEdbInfoReq"
+                        }
+                    }
+                }
+            }
+        },
+        "/dl/add": {
+            "post": {
+                "tags": [
+                    "dl"
+                ],
+                "description": "新增大商所指标接口",
+                "operationId": "DlController.新增大商所指标接口",
+                "responses": {
+                    "200": {
+                        "description": "",
+                        "schema": {
+                            "$ref": "#/definitions/models.AddEdbInfoReq"
+                        }
+                    }
+                }
+            }
+        },
+        "/dl/refresh": {
+            "post": {
+                "tags": [
+                    "dl"
+                ],
+                "description": "刷新大商所指标接口",
+                "operationId": "DlController.刷新大商所指标接口",
+                "responses": {
+                    "200": {
+                        "description": "",
+                        "schema": {
+                            "$ref": "#/definitions/models.RefreshEdbInfoReq"
+                        }
+                    }
+                }
+            }
+        },
+        "/gie/add": {
+            "post": {
+                "tags": [
+                    "gie"
+                ],
+                "description": "新增欧洲天然气指标接口",
+                "operationId": "GieController.新增欧洲天然气指标接口",
+                "responses": {
+                    "200": {
+                        "description": "",
+                        "schema": {
+                            "$ref": "#/definitions/models.AddEdbInfoReq"
+                        }
+                    }
+                }
+            }
+        },
+        "/gie/refresh": {
+            "post": {
+                "tags": [
+                    "gie"
+                ],
+                "description": "刷新欧洲天然气指标接口",
+                "operationId": "GieController.刷新欧洲天然气指标接口",
+                "responses": {
+                    "200": {
+                        "description": "",
+                        "schema": {
+                            "$ref": "#/definitions/models.RefreshEdbInfoReq"
+                        }
+                    }
+                }
+            }
+        },
         "/lt/add": {
             "post": {
                 "tags": [
@@ -227,6 +346,74 @@
                 }
             }
         },
+        "/sh/add": {
+            "post": {
+                "tags": [
+                    "sh"
+                ],
+                "description": "新增上期所指标接口",
+                "operationId": "ShController.新增上期所指标接口",
+                "responses": {
+                    "200": {
+                        "description": "",
+                        "schema": {
+                            "$ref": "#/definitions/models.AddEdbInfoReq"
+                        }
+                    }
+                }
+            }
+        },
+        "/sh/refresh": {
+            "post": {
+                "tags": [
+                    "sh"
+                ],
+                "description": "刷新上期所指标接口",
+                "operationId": "ShController.刷新上期所指标接口",
+                "responses": {
+                    "200": {
+                        "description": "",
+                        "schema": {
+                            "$ref": "#/definitions/models.RefreshEdbInfoReq"
+                        }
+                    }
+                }
+            }
+        },
+        "/shfe/add": {
+            "post": {
+                "tags": [
+                    "shfe"
+                ],
+                "description": "新增上期能源指标接口",
+                "operationId": "ShfeController.新增上期能源指标接口",
+                "responses": {
+                    "200": {
+                        "description": "",
+                        "schema": {
+                            "$ref": "#/definitions/models.AddEdbInfoReq"
+                        }
+                    }
+                }
+            }
+        },
+        "/shfe/refresh": {
+            "post": {
+                "tags": [
+                    "shfe"
+                ],
+                "description": "刷新上期能源指标接口",
+                "operationId": "ShfeController.刷新上期能源指标接口",
+                "responses": {
+                    "200": {
+                        "description": "",
+                        "schema": {
+                            "$ref": "#/definitions/models.RefreshEdbInfoReq"
+                        }
+                    }
+                }
+            }
+        },
         "/smm/add": {
             "post": {
                 "tags": [
@@ -328,15 +515,45 @@
                     }
                 }
             }
+        },
+        "/zz/add": {
+            "post": {
+                "tags": [
+                    "zz"
+                ],
+                "description": "新增郑商所指标接口",
+                "operationId": "ZzController.新增郑商所指标接口",
+                "responses": {
+                    "200": {
+                        "description": "",
+                        "schema": {
+                            "$ref": "#/definitions/models.AddEdbInfoReq"
+                        }
+                    }
+                }
+            }
+        },
+        "/zz/refresh": {
+            "post": {
+                "tags": [
+                    "zz"
+                ],
+                "description": "刷新郑商所指标接口",
+                "operationId": "ZzController.刷新郑商所指标接口",
+                "responses": {
+                    "200": {
+                        "description": "",
+                        "schema": {
+                            "$ref": "#/definitions/models.RefreshEdbInfoReq"
+                        }
+                    }
+                }
+            }
         }
     },
     "definitions": {
-        "data_manage.EdbInfoCalculateBatchSaveReq": {
-            "title": "EdbInfoCalculateBatchSaveReq",
-            "type": "object"
-        },
-        "data_manage.EditEdbInfoReq": {
-            "title": "EditEdbInfoReq",
+        "10659.0xc00059e9f0.false": {
+            "title": "false",
             "type": "object"
         },
         "models.AddEdbInfoReq": {
@@ -349,6 +566,80 @@
                 }
             }
         },
+        "models.EdbInfoCalculateBatchSaveReq": {
+            "title": "EdbInfoCalculateBatchSaveReq",
+            "type": "object",
+            "properties": {
+                "AdminId": {
+                    "description": "添加人id",
+                    "type": "integer",
+                    "format": "int64"
+                },
+                "AdminName": {
+                    "description": "添加人名称",
+                    "type": "string"
+                },
+                "CalculateFormula": {
+                    "description": "计算公式",
+                    "type": "string"
+                },
+                "ClassifyId": {
+                    "description": "分类id",
+                    "type": "integer",
+                    "format": "int64"
+                },
+                "EdbInfoId": {
+                    "description": "指标id",
+                    "type": "integer",
+                    "format": "int64"
+                },
+                "EdbInfoIdArr": {
+                    "type": "array",
+                    "items": {
+                        "$ref": "#/definitions/10659.0xc00059e9f0.false"
+                    }
+                },
+                "EdbName": {
+                    "description": "指标名称",
+                    "type": "string"
+                },
+                "Formula": {
+                    "description": "N值/移动天数",
+                    "type": "string"
+                },
+                "Frequency": {
+                    "description": "频度",
+                    "type": "string"
+                },
+                "FromEdbInfoId": {
+                    "description": "计算来源指标id",
+                    "type": "integer",
+                    "format": "int64"
+                },
+                "MoveFrequency": {
+                    "description": "移动频度:天/周/月/季/年",
+                    "type": "string"
+                },
+                "MoveType": {
+                    "description": "移动方式:1:领先(默认),2:滞后",
+                    "type": "integer",
+                    "format": "int64"
+                },
+                "Source": {
+                    "description": "来源:1:同花顺,2:wind,3:彭博,4:指标运算,5:累计值转月,6:同比值,7:同差值,8:N数值移动平均计算,12:环比值,13:环差值,14:变频",
+                    "type": "integer",
+                    "format": "int64"
+                },
+                "Unit": {
+                    "description": "单位",
+                    "type": "string"
+                }
+            }
+        },
+        "models.EditEdbInfoReq": {
+            "title": "EditEdbInfoReq",
+            "type": "object"
+        },
         "models.RefreshEdbInfoReq": {
             "title": "RefreshEdbInfoReq",
             "type": "object",
@@ -405,6 +696,30 @@
         {
             "name": "calculate",
             "description": "CalculateController 计算指标\n"
+        },
+        {
+            "name": "zz",
+            "description": "郑商所\n"
+        },
+        {
+            "name": "dl",
+            "description": "大商所\n"
+        },
+        {
+            "name": "sh",
+            "description": "上期所\n"
+        },
+        {
+            "name": "cffex",
+            "description": "中金所\n"
+        },
+        {
+            "name": "shfe",
+            "description": "上期能源\n"
+        },
+        {
+            "name": "gie",
+            "description": "欧洲天然气\n"
         }
     ]
 }

+ 221 - 7
swagger/swagger.yml

@@ -21,7 +21,7 @@ paths:
         "200":
           description: ""
           schema:
-            $ref: '#/definitions/data_manage.EditEdbInfoReq'
+            $ref: '#/definitions/models.EditEdbInfoReq'
   /calculate/batch/save:
     post:
       tags:
@@ -34,10 +34,87 @@ paths:
         description: type json string
         required: true
         schema:
-          $ref: '#/definitions/data_manage.EdbInfoCalculateBatchSaveReq'
+          $ref: '#/definitions/models.EdbInfoCalculateBatchSaveReq'
       responses:
         Ret=200:
           description: 返回指标id
+  /calculate/refresh:
+    post:
+      tags:
+      - calculate
+      description: 刷新计算指标接口
+      operationId: CalculateController.刷新计算指标接口
+      responses:
+        "200":
+          description: ""
+          schema:
+            $ref: '#/definitions/models.RefreshEdbInfoReq'
+  /cffex/add:
+    post:
+      tags:
+      - cffex
+      description: 新增中金所指标接口
+      operationId: CffexController.新增中金所指标接口
+      responses:
+        "200":
+          description: ""
+          schema:
+            $ref: '#/definitions/models.AddEdbInfoReq'
+  /cffex/refresh:
+    post:
+      tags:
+      - cffex
+      description: 刷新中金所指标接口
+      operationId: CffexController.刷新中金所指标接口
+      responses:
+        "200":
+          description: ""
+          schema:
+            $ref: '#/definitions/models.RefreshEdbInfoReq'
+  /dl/add:
+    post:
+      tags:
+      - dl
+      description: 新增大商所指标接口
+      operationId: DlController.新增大商所指标接口
+      responses:
+        "200":
+          description: ""
+          schema:
+            $ref: '#/definitions/models.AddEdbInfoReq'
+  /dl/refresh:
+    post:
+      tags:
+      - dl
+      description: 刷新大商所指标接口
+      operationId: DlController.刷新大商所指标接口
+      responses:
+        "200":
+          description: ""
+          schema:
+            $ref: '#/definitions/models.RefreshEdbInfoReq'
+  /gie/add:
+    post:
+      tags:
+      - gie
+      description: 新增欧洲天然气指标接口
+      operationId: GieController.新增欧洲天然气指标接口
+      responses:
+        "200":
+          description: ""
+          schema:
+            $ref: '#/definitions/models.AddEdbInfoReq'
+  /gie/refresh:
+    post:
+      tags:
+      - gie
+      description: 刷新欧洲天然气指标接口
+      operationId: GieController.刷新欧洲天然气指标接口
+      responses:
+        "200":
+          description: ""
+          schema:
+            $ref: '#/definitions/models.RefreshEdbInfoReq'
   /lt/add:
     post:
       tags:
@@ -148,6 +225,50 @@ paths:
           description: ""
           schema:
             $ref: '#/definitions/models.RefreshEdbInfoReq'
+  /sh/add:
+    post:
+      tags:
+      - sh
+      description: 新增上期所指标接口
+      operationId: ShController.新增上期所指标接口
+      responses:
+        "200":
+          description: ""
+          schema:
+            $ref: '#/definitions/models.AddEdbInfoReq'
+  /sh/refresh:
+    post:
+      tags:
+      - sh
+      description: 刷新上期所指标接口
+      operationId: ShController.刷新上期所指标接口
+      responses:
+        "200":
+          description: ""
+          schema:
+            $ref: '#/definitions/models.RefreshEdbInfoReq'
+  /shfe/add:
+    post:
+      tags:
+      - shfe
+      description: 新增上期能源指标接口
+      operationId: ShfeController.新增上期能源指标接口
+      responses:
+        "200":
+          description: ""
+          schema:
+            $ref: '#/definitions/models.AddEdbInfoReq'
+  /shfe/refresh:
+    post:
+      tags:
+      - shfe
+      description: 刷新上期能源指标接口
+      operationId: ShfeController.刷新上期能源指标接口
+      responses:
+        "200":
+          description: ""
+          schema:
+            $ref: '#/definitions/models.RefreshEdbInfoReq'
   /smm/add:
     post:
       tags:
@@ -214,12 +335,31 @@ paths:
           description: ""
           schema:
             $ref: '#/definitions/models.RefreshEdbInfoReq'
+  /zz/add:
+    post:
+      tags:
+      - zz
+      description: 新增郑商所指标接口
+      operationId: ZzController.新增郑商所指标接口
+      responses:
+        "200":
+          description: ""
+          schema:
+            $ref: '#/definitions/models.AddEdbInfoReq'
+  /zz/refresh:
+    post:
+      tags:
+      - zz
+      description: 刷新郑商所指标接口
+      operationId: ZzController.刷新郑商所指标接口
+      responses:
+        "200":
+          description: ""
+          schema:
+            $ref: '#/definitions/models.RefreshEdbInfoReq'
 definitions:
-  data_manage.EdbInfoCalculateBatchSaveReq:
-    title: EdbInfoCalculateBatchSaveReq
-    type: object
-  data_manage.EditEdbInfoReq:
-    title: EditEdbInfoReq
+  10659.0xc00059e9f0.false:
+    title: "false"
     type: object
   models.AddEdbInfoReq:
     title: AddEdbInfoReq
@@ -228,6 +368,62 @@ definitions:
       EdbCode:
         description: 指标编码
         type: string
+  models.EdbInfoCalculateBatchSaveReq:
+    title: EdbInfoCalculateBatchSaveReq
+    type: object
+    properties:
+      AdminId:
+        description: 添加人id
+        type: integer
+        format: int64
+      AdminName:
+        description: 添加人名称
+        type: string
+      CalculateFormula:
+        description: 计算公式
+        type: string
+      ClassifyId:
+        description: 分类id
+        type: integer
+        format: int64
+      EdbInfoId:
+        description: 指标id
+        type: integer
+        format: int64
+      EdbInfoIdArr:
+        type: array
+        items:
+          $ref: '#/definitions/10659.0xc00059e9f0.false'
+      EdbName:
+        description: 指标名称
+        type: string
+      Formula:
+        description: N值/移动天数
+        type: string
+      Frequency:
+        description: 频度
+        type: string
+      FromEdbInfoId:
+        description: 计算来源指标id
+        type: integer
+        format: int64
+      MoveFrequency:
+        description: 移动频度:天/周/月/季/年
+        type: string
+      MoveType:
+        description: 移动方式:1:领先(默认),2:滞后
+        type: integer
+        format: int64
+      Source:
+        description: 来源:1:同花顺,2:wind,3:彭博,4:指标运算,5:累计值转月,6:同比值,7:同差值,8:N数值移动平均计算,12:环比值,13:环差值,14:变频
+        type: integer
+        format: int64
+      Unit:
+        description: 单位
+        type: string
+  models.EditEdbInfoReq:
+    title: EditEdbInfoReq
+    type: object
   models.RefreshEdbInfoReq:
     title: RefreshEdbInfoReq
     type: object
@@ -270,3 +466,21 @@ tags:
 - name: calculate
   description: |
     CalculateController 计算指标
+- name: zz
+  description: |
+    郑商所
+- name: dl
+  description: |
+    大商所
+- name: sh
+  description: |
+    上期所
+- name: cffex
+  description: |
+    中金所
+- name: shfe
+  description: |
+    上期能源
+- name: gie
+  description: |
+    欧洲天然气

+ 2 - 3
utils/config.go

@@ -66,6 +66,5 @@ func init() {
 
 }
 
-//http://adminapi.brilliantstart.cn/admin/
-//http://adminapi.brilliantstart.cn/swagger/
-//http://8.136.199.33:8602/swagger/
+//修改接口文档
+//http://8.136.199.33:8300/swagger/

+ 4 - 2
utils/constants.go

@@ -57,8 +57,10 @@ const (
 
 //基础数据初始化日期
 var (
-	BASE_START_DATE = time.Now().AddDate(-30, 0, 0).Format(FormatDate) //基础数据开始日期
-	BASE_END_DATE   = time.Now().AddDate(4, 0, 0).Format(FormatDate)   //基础数据结束日期
+	BASE_START_DATE         = time.Now().AddDate(-30, 0, 0).Format(FormatDate)        //基础数据开始日期
+	BASE_END_DATE           = time.Now().AddDate(4, 0, 0).Format(FormatDate)          //基础数据结束日期
+	BASE_START_DATE_UnSpace = time.Now().AddDate(-30, 0, 0).Format(FormatDateUnSpace) //基础数据开始日期
+	BASE_END_DATE_UnSpace   = time.Now().AddDate(4, 0, 0).Format(FormatDateUnSpace)   //基础数据结束日期
 )
 
 var (