Browse Source

fix:新增彭博财务数据刷新

Roc 2 years ago
parent
commit
ac53d0d8e1

+ 1 - 1
models/data_manage/edb_data_base.go

@@ -15,7 +15,7 @@ func GetEdbDataTableName(source int) (tableName string) {
 		tableName = "edb_data_ths"
 	case utils.DATA_SOURCE_WIND:
 		tableName = "edb_data_wind"
-	case utils.DATA_SOURCE_PB:
+	case utils.DATA_SOURCE_PB, utils.DATA_SOURCE_PB_FINANCE:
 		tableName = "edb_data_pb"
 	case utils.DATA_SOURCE_CALCULATE:
 		tableName = "edb_data_calculate"

+ 74 - 31
services/data/base_edb_lib.go

@@ -17,35 +17,37 @@ func AddEdbData(source int, edbCode string) (resp *models.BaseResponse, err erro
 	urlStr := ``
 	switch source {
 	case utils.DATA_SOURCE_THS:
-		urlStr = "/ths/add"
+		urlStr = "ths/add"
 	case utils.DATA_SOURCE_WIND:
-		urlStr = "/wind/add"
+		urlStr = "wind/add"
 	case utils.DATA_SOURCE_PB:
-		urlStr = "/pb/add"
+		urlStr = "pb/add"
+	case utils.DATA_SOURCE_PB_FINANCE:
+		urlStr = "pb_finance/add"
 	case utils.DATA_SOURCE_MANUAL:
-		urlStr = "/manual/add"
+		urlStr = "manual/add"
 	case utils.DATA_SOURCE_LZ:
-		urlStr = "/lz/add"
+		urlStr = "lz/add"
 	case utils.DATA_SOURCE_YS:
-		urlStr = "/smm/add"
+		urlStr = "smm/add"
 	case utils.DATA_SOURCE_GL:
-		urlStr = "/mysteel/add"
+		urlStr = "mysteel/add"
 	case utils.DATA_SOURCE_ZZ:
-		urlStr = "/zz/add"
+		urlStr = "zz/add"
 	case utils.DATA_SOURCE_DL:
-		urlStr = "/dl/add"
+		urlStr = "dl/add"
 	case utils.DATA_SOURCE_SH:
-		urlStr = "/sh/add"
+		urlStr = "sh/add"
 	case utils.DATA_SOURCE_CFFEX:
-		urlStr = "/cffex/add"
+		urlStr = "cffex/add"
 	case utils.DATA_SOURCE_SHFE:
-		urlStr = "/shfe/add"
+		urlStr = "shfe/add"
 	case utils.DATA_SOURCE_GIE:
-		urlStr = "/gie/add"
+		urlStr = "gie/add"
 	case utils.DATA_SOURCE_LT:
-		urlStr = "/lt/add"
+		urlStr = "lt/add"
 	case utils.DATA_SOURCE_COAL:
-		urlStr = "/coal/add"
+		urlStr = "coal/add"
 	default:
 	}
 	if urlStr == "" {
@@ -65,35 +67,37 @@ func RefreshEdbData(edbInfoId, source int, edbCode, startDate string) (resp *mod
 	urlStr := ``
 	switch source {
 	case utils.DATA_SOURCE_THS:
-		urlStr = "/ths/refresh"
+		urlStr = "ths/refresh"
 	case utils.DATA_SOURCE_WIND:
-		urlStr = "/wind/refresh"
+		urlStr = "wind/refresh"
 	case utils.DATA_SOURCE_PB:
-		urlStr = "/pb/refresh"
+		urlStr = "pb/refresh"
+	case utils.DATA_SOURCE_PB_FINANCE:
+		urlStr = "pb_finance/refresh"
 	case utils.DATA_SOURCE_MANUAL:
-		urlStr = "/manual/refresh"
+		urlStr = "manual/refresh"
 	case utils.DATA_SOURCE_LZ:
-		urlStr = "/lz/refresh"
+		urlStr = "lz/refresh"
 	case utils.DATA_SOURCE_YS:
-		urlStr = "/smm/refresh"
+		urlStr = "smm/refresh"
 	case utils.DATA_SOURCE_GL:
-		urlStr = "/mysteel/refresh"
+		urlStr = "mysteel/refresh"
 	case utils.DATA_SOURCE_ZZ:
-		urlStr = "/zz/refresh"
+		urlStr = "zz/refresh"
 	case utils.DATA_SOURCE_DL:
-		urlStr = "/dl/refresh"
+		urlStr = "dl/refresh"
 	case utils.DATA_SOURCE_SH:
-		urlStr = "/sh/refresh"
+		urlStr = "sh/refresh"
 	case utils.DATA_SOURCE_CFFEX:
-		urlStr = "/cffex/refresh"
+		urlStr = "cffex/refresh"
 	case utils.DATA_SOURCE_SHFE:
-		urlStr = "/shfe/refresh"
+		urlStr = "shfe/refresh"
 	case utils.DATA_SOURCE_GIE:
-		urlStr = "/gie/refresh"
+		urlStr = "gie/refresh"
 	case utils.DATA_SOURCE_LT:
-		urlStr = "/lt/refresh"
+		urlStr = "lt/refresh"
 	case utils.DATA_SOURCE_COAL:
-		urlStr = "/coal/refresh"
+		urlStr = "coal/refresh"
 	}
 	if urlStr == "" {
 		err = fmt.Errorf(fmt.Sprint("source:", source, ";未实现该指标的刷新接口,请联系管理员"))
@@ -109,7 +113,32 @@ func RefreshEdbCalculateData(edbInfoId int, edbCode, startDate string) (resp *mo
 	param["EdbCode"] = edbCode
 	param["EdbInfoId"] = edbInfoId
 	param["StartDate"] = startDate
-	resp, err = postRefreshEdbData(param, "/calculate/refresh")
+	resp, err = postRefreshEdbData(param, "calculate/refresh")
+	return
+}
+
+// ExecPythonCode 执行python代码
+func ExecPythonCode(pythonCode string) (resp *models.BaseResponse, err error) {
+	param := make(map[string]interface{})
+	param["PythonCode"] = pythonCode
+	urlStr := `/python/exec`
+	resp, err = postRefreshEdbData(param, urlStr)
+	return
+}
+
+// AddPythonEdbData 新增python指标
+func AddPythonEdbData(param string) (resp *models.BaseResponse, err error) {
+	urlStr := ``
+	urlStr = "python/add"
+	resp, err = postAddEdbData(param, urlStr)
+	return
+}
+
+// EditPythonEdbData 编辑python指标
+func EditPythonEdbData(param string) (resp *models.BaseResponse, err error) {
+	urlStr := ``
+	urlStr = "python/edit"
+	resp, err = postAddEdbData(param, urlStr)
 	return
 }
 
@@ -131,6 +160,20 @@ func postRefreshEdbData(param map[string]interface{}, urlStr string) (resp *mode
 	return resp, nil
 }
 
+// postAddEdbData 新增指标数据
+func postAddEdbData(paramStr string, urlStr string) (resp *models.BaseResponse, err error) {
+	postUrl := utils.EDB_LIB_URL + urlStr
+	result, err := HttpPost(postUrl, paramStr, "application/json")
+	if err != nil {
+		return
+	}
+	err = json.Unmarshal(result, &resp)
+	if err != nil {
+		return
+	}
+	return resp, nil
+}
+
 func HttpPost(url, postData string, params ...string) ([]byte, error) {
 	body := ioutil.NopCloser(strings.NewReader(postData))
 	client := &http.Client{}

+ 72 - 1
services/data/edb_info.go

@@ -89,7 +89,7 @@ func RefreshDataFromWind(wg *sync.WaitGroup) (err error) {
 	}()
 	var condition string
 	var pars []interface{}
-	condition += " AND source=? "
+	condition += ` AND source=? and  edb_code not in ("S6451662","S6451679","S6451670","S6451671","s6451669","S6451693","S6451694") `
 	pars = append(pars, utils.DATA_SOURCE_WIND)
 
 	items, err := data_manage.GetEdbInfoByCondition(condition, pars, 0)
@@ -211,6 +211,77 @@ func RefreshDataFromPb(wg *sync.WaitGroup) (err error) {
 	return err
 }
 
+// RefreshDataFromPbFinance 刷新彭博财务指标数据
+func RefreshDataFromPbFinance(wg *sync.WaitGroup) (err error) {
+	defer func() {
+		if err != nil {
+			fmt.Println("RefreshDataFromPb Err:" + err.Error())
+			//go utils.SendEmail(utils.APPNAME+"【"+utils.RunMode+"】"+"失败提醒", "RefreshDataFromPb ErrMsg:"+err.Error(), utils.EmailSendToUsers)
+			go alarm_msg.SendAlarmMsg("RefreshDataFromPb ErrMsg:"+err.Error(), 3)
+		}
+		wg.Done()
+	}()
+	var condition string
+	var pars []interface{}
+	condition += " AND source=? "
+	pars = append(pars, utils.DATA_SOURCE_PB_FINANCE)
+
+	items, err := data_manage.GetEdbInfoByCondition(condition, pars, 0)
+	if err != nil {
+		return errors.New("GetEdbInfoByCondition:" + err.Error())
+	}
+
+	//var endDate string
+	//endDate = time.Now().AddDate(utils.DATA_END_DATE_LIMIT, 0, 0).Format(utils.FormatDateUnSpace)
+	for _, v := range items {
+		startDate := ""
+		if v.Frequency == "日度" {
+			startDate = v.EndDate.AddDate(0, 0, -utils.DATA_REFRESH).Format(utils.FormatDate)
+		} else if v.Frequency == "周度" {
+			startDate = v.EndDate.AddDate(0, 0, -(utils.DATA_REFRESH * 7)).Format(utils.FormatDate)
+		} else if v.Frequency == "月度" {
+			startDate = v.EndDate.AddDate(0, -utils.DATA_REFRESH, 0).Format(utils.FormatDate)
+		} else if v.Frequency == "季度" {
+			startDate = v.EndDate.AddDate(0, -utils.DATA_REFRESH*3, 0).Format(utils.FormatDate)
+		} else if v.Frequency == "年度" {
+			startDate = v.EndDate.AddDate(-utils.DATA_REFRESH, 0, 0).Format(utils.FormatDate)
+		} else {
+			startDate = v.EndDate.AddDate(0, 0, -utils.DATA_REFRESH).Format(utils.FormatDate)
+		}
+		//err = SyncEdbDataByPb(int64(v.EdbInfoId), v.EdbCode, startDate, endDate)
+		//if err != nil {
+		//	return errors.New("SyncEdbDataByPb:" + err.Error())
+		//}
+		resp, err := RefreshEdbData(v.EdbInfoId, v.Source, v.EdbCode, startDate)
+		if err != nil {
+			return errors.New("RefreshEdbData Err:" + err.Error())
+		}
+		if resp.Ret != 200 {
+			return errors.New("RefreshEdbData Err:" + resp.Msg + ";ErrMsg:" + resp.ErrMsg)
+		}
+		item, err := data_manage.GetEdbInfoMaxAndMinInfo(v.Source, v.EdbCode)
+		if err != nil {
+			return err
+		}
+		if item != nil {
+			err = data_manage.ModifyEdbInfoMaxAndMinInfo(v.EdbInfoId, item)
+			if err != nil {
+				return err
+			}
+		}
+		//minDate, maxDate, err := data.GetEdbDataPbMaxOrMinDate(v.EdbInfoId)
+		//if err != nil {
+		//	return errors.New("GetEdbDataThsMaxOrMinDate:" + err.Error())
+		//}
+		//fmt.Println("minDate:" + minDate + ";maxDate:" + maxDate)
+		//err = data.ModifyEdbDataInfoDate(v.EdbInfoId, maxDate)
+		//if err != nil {
+		//	return errors.New("ModifyEdbDataInfoDate:" + err.Error())
+		//}
+	}
+	return err
+}
+
 func CheckDataInterface(cont context.Context) (err error) {
 	go func() {
 		//杭州办公室服务器

+ 3 - 1
services/task.go

@@ -217,7 +217,7 @@ func OneMinute(cont context.Context) (err error) {
 
 func RefreshData(cont context.Context) (err error) {
 	wg := sync.WaitGroup{}
-	wg.Add(9)
+	wg.Add(10)
 	//hour := time.Now().Hour()
 	//if hour != 0 {
 	//}
@@ -226,6 +226,8 @@ func RefreshData(cont context.Context) (err error) {
 	go data.RefreshDataFromThs(&wg)
 	//彭博
 	go data.RefreshDataFromPb(&wg)
+	//彭博财务
+	go data.RefreshDataFromPbFinance(&wg)
 	//手工数据
 	go data.RefreshDataFromManual(&wg)
 	//隆众数据

+ 2 - 0
utils/constants.go

@@ -90,6 +90,8 @@ const (
 	DATA_SOURCE_CALCULATE_LJZTBPJ               //累计值同比拼接->24
 	DATA_SOURCE_LT                              //路透->25
 	DATA_SOURCE_COAL                            //煤炭网->26
+	DATA_SOURCE_PYTHON                          //python代码->27
+	DATA_SOURCE_PB_FINANCE                      //彭博财务数据->28
 )
 
 //http://datawind.hzinsights.com:8040/hz_server