|
@@ -2,6 +2,7 @@ package services
|
|
|
|
|
|
import (
|
|
|
"encoding/json"
|
|
|
+ "errors"
|
|
|
"eta/eta_data_init/models"
|
|
|
"eta/eta_data_init/utils"
|
|
|
"fmt"
|
|
@@ -974,23 +975,440 @@ func InitBaseIndexDataFromDataSourceSmm(filePath string) {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-/*
|
|
|
-// PostEdbLib 调用指标接口
|
|
|
-func PostEdbLib(param map[string]interface{}, method string) (resp *models.BaseResponse, err error) {
|
|
|
- postUrl := utils.EDB_LIB_URL + method
|
|
|
- postData, err := json.Marshal(param)
|
|
|
+// InitDataToEdbInfo
|
|
|
+// @Description: 添加指标到指标库
|
|
|
+// @author: Roc
|
|
|
+// @datetime 2024-01-15 14:12:12
|
|
|
+// @param filePath string
|
|
|
+func InitDataToEdbInfo(filePath string) {
|
|
|
+ var err error
|
|
|
+
|
|
|
+ defer func() {
|
|
|
+ if err != nil {
|
|
|
+ fmt.Println("InitDataToEdbInfo Err:" + err.Error())
|
|
|
+ utils.FileLog.Info("InitDataToEdbInfo Err:" + err.Error())
|
|
|
+ }
|
|
|
+ }()
|
|
|
+
|
|
|
+ //读取excel
|
|
|
+ path, err := filepath.Abs(os.Args[0])
|
|
|
if err != nil {
|
|
|
- return
|
|
|
+ fmt.Println(err)
|
|
|
}
|
|
|
- result, err := HttpPost(postUrl, string(postData), "application/json")
|
|
|
+
|
|
|
+ dir := filepath.Dir(path)
|
|
|
+ fmt.Println("dir:" + dir)
|
|
|
+ dataPath := dir + filePath
|
|
|
+ fmt.Println("dataPath:" + dataPath)
|
|
|
+ f, err := excelize.OpenFile(dataPath)
|
|
|
if err != nil {
|
|
|
+ fmt.Println(err)
|
|
|
return
|
|
|
}
|
|
|
- err = json.Unmarshal(result, &resp)
|
|
|
+ defer func() {
|
|
|
+ // Close the spreadsheet.
|
|
|
+ if err := f.Close(); err != nil {
|
|
|
+ fmt.Println(err)
|
|
|
+ }
|
|
|
+ }()
|
|
|
+ rows, err := f.GetRows("Sheet1")
|
|
|
if err != nil {
|
|
|
+ fmt.Println(err)
|
|
|
return
|
|
|
}
|
|
|
- return resp, nil
|
|
|
+ fmt.Println("rows len:", len(rows))
|
|
|
+
|
|
|
+ // 获取创建人信息
|
|
|
+ mobileMap := make(map[string]*models.Admin)
|
|
|
+ if utils.MYSQL_URL_ETA != "" {
|
|
|
+ admins, e := models.GetSysAdminList(``, make([]interface{}, 0))
|
|
|
+ if e != nil {
|
|
|
+ err = fmt.Errorf("GetSysAdminList err: %s", e.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ for _, v := range admins {
|
|
|
+ if v.Mobile == "" {
|
|
|
+ continue
|
|
|
+ }
|
|
|
+ mobileMap[v.Mobile] = v
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ for rk, row := range rows {
|
|
|
+ if rk > 0 {
|
|
|
+ var classifyFirst, classifySecond, classifyThree, classifyFourth, classifyFifth, classifySixth, indexCode, indexName, frequency, unit, source, mobile, terminalCode string
|
|
|
+ for ck, colCell := range row {
|
|
|
+ colCell = strings.TrimSpace(colCell)
|
|
|
+ switch ck {
|
|
|
+ case 0:
|
|
|
+ classifyFirst = colCell
|
|
|
+ case 1:
|
|
|
+ classifySecond = colCell
|
|
|
+ case 2:
|
|
|
+ classifyThree = colCell
|
|
|
+ case 3:
|
|
|
+ classifyFourth = colCell
|
|
|
+ case 4:
|
|
|
+ classifyFifth = colCell
|
|
|
+ case 5:
|
|
|
+ classifySixth = colCell
|
|
|
+ case 6:
|
|
|
+ indexCode = colCell
|
|
|
+ case 7:
|
|
|
+ indexName = colCell
|
|
|
+ case 8:
|
|
|
+ frequency = colCell
|
|
|
+ case 9:
|
|
|
+ unit = colCell
|
|
|
+ case 10:
|
|
|
+ source = colCell
|
|
|
+ case 11:
|
|
|
+ mobile = colCell
|
|
|
+ case 12:
|
|
|
+ terminalCode = colCell
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 校验excel文件内容
|
|
|
+ {
|
|
|
+ errMsgList := make([]string, 0)
|
|
|
+ if classifyFirst == "" {
|
|
|
+ errMsgList = append(errMsgList, `一级目录不允许为空`)
|
|
|
+ }
|
|
|
+ if indexCode == "" {
|
|
|
+ errMsgList = append(errMsgList, `指标编码不允许为空`)
|
|
|
+ }
|
|
|
+ if indexName == "" {
|
|
|
+ errMsgList = append(errMsgList, `指标名称不允许为空`)
|
|
|
+ }
|
|
|
+ if frequency == "" {
|
|
|
+ errMsgList = append(errMsgList, `频度不允许为空`)
|
|
|
+ }
|
|
|
+ if unit == "" {
|
|
|
+ errMsgList = append(errMsgList, `单位不允许为空`)
|
|
|
+ }
|
|
|
+ if source == "" {
|
|
|
+ errMsgList = append(errMsgList, `指标来源不允许为空`)
|
|
|
+ }
|
|
|
+ if terminalCode == "" {
|
|
|
+ errMsgList = append(errMsgList, `终端号不允许为空`)
|
|
|
+ }
|
|
|
+
|
|
|
+ // 如果有错误信息,那么就不继续执行
|
|
|
+ if len(errMsgList) > 0 {
|
|
|
+ fmt.Println(strings.Join(errMsgList, ";"))
|
|
|
+ fmt.Println(classifyFirst, classifySecond, classifyThree, indexCode, indexName, frequency, unit, source, terminalCode)
|
|
|
+ continue
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 开始入库
|
|
|
+ {
|
|
|
+ //判断指标是否存在
|
|
|
+ switch source {
|
|
|
+ case "钢联":
|
|
|
+ ok, e := VerifyMysteelIndex(indexCode)
|
|
|
+ if e != nil {
|
|
|
+ fmt.Println(indexCode, ";判断指标是否存在失败,Err:"+e.Error())
|
|
|
+ continue
|
|
|
+ }
|
|
|
+ if !ok {
|
|
|
+ fmt.Println("指标:" + indexCode + ";不存在")
|
|
|
+ continue
|
|
|
+ }
|
|
|
+ case "SMM":
|
|
|
+ ok, e := VerifySmmIndex(indexCode)
|
|
|
+ if e != nil {
|
|
|
+ fmt.Println(indexCode, ";判断指标是否存在失败,Err:"+e.Error())
|
|
|
+ continue
|
|
|
+ }
|
|
|
+ if !ok {
|
|
|
+ fmt.Println("指标:" + indexCode + ";不存在")
|
|
|
+ continue
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ var firstId, secondId, thirdId, fourthId, fifthId, lastId int
|
|
|
+ method := "classify/get_or_add"
|
|
|
+ classifyFirstMap := make(map[string]interface{})
|
|
|
+ classifyFirstMap["ClassifyName"] = classifyFirst
|
|
|
+ classifyFirstMap["ParentId"] = 0
|
|
|
+ classifyFirstMap["Level"] = 0
|
|
|
+ classifyFirstMap["ClassifyType"] = 0
|
|
|
+ result, e := PostEdbLib(classifyFirstMap, method)
|
|
|
+ if e != nil {
|
|
|
+ err = fmt.Errorf("ClassifyFirst PostEdbLib err: %s", e.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ resp := new(models.ClassifyResp)
|
|
|
+ if e = json.Unmarshal(result, &resp); e != nil {
|
|
|
+ err = fmt.Errorf("ClassifyFirst json unmarshal err: %s", e.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if resp.Ret != 200 {
|
|
|
+ err = fmt.Errorf("ClassifyFirst resp msg: %s; errMsg: %s", resp.Msg, resp.ErrMsg)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ firstId = resp.Data.ClassifyId
|
|
|
+ lastId = firstId
|
|
|
+
|
|
|
+ // 二级分类
|
|
|
+ if classifySecond != "" {
|
|
|
+ classifySecondMap := make(map[string]interface{})
|
|
|
+ classifySecondMap["ClassifyName"] = classifySecond
|
|
|
+ classifySecondMap["ParentId"] = firstId
|
|
|
+ classifySecondMap["Level"] = 1
|
|
|
+ classifySecondMap["ClassifyType"] = 0
|
|
|
+ res2, e := PostEdbLib(classifySecondMap, method)
|
|
|
+ if e != nil {
|
|
|
+ err = fmt.Errorf("ClassifySecond PostEdbLib err: %s", e.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ resp2 := new(models.ClassifyResp)
|
|
|
+ if e = json.Unmarshal(res2, &resp2); e != nil {
|
|
|
+ err = fmt.Errorf("ClassifySecond json unmarshal err: %s", e.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if resp2.Ret != 200 {
|
|
|
+ err = fmt.Errorf("ClassifySecond resp msg: %s; errMsg: %s", resp2.Msg, resp2.ErrMsg)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ secondId = resp2.Data.ClassifyId
|
|
|
+ lastId = secondId
|
|
|
+ }
|
|
|
+
|
|
|
+ // 三级分类
|
|
|
+ if classifyThree != "" {
|
|
|
+ classifyThreeMap := make(map[string]interface{})
|
|
|
+ classifyThreeMap["ClassifyName"] = classifyThree
|
|
|
+ classifyThreeMap["ParentId"] = secondId
|
|
|
+ classifyThreeMap["Level"] = 2
|
|
|
+ classifyThreeMap["ClassifyType"] = 0
|
|
|
+ res3, e := PostEdbLib(classifyThreeMap, method)
|
|
|
+ if e != nil {
|
|
|
+ err = fmt.Errorf("ClassifyThird PostEdbLib err: %s", e.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ resp3 := new(models.ClassifyResp)
|
|
|
+ if e = json.Unmarshal(res3, &resp3); e != nil {
|
|
|
+ err = fmt.Errorf("ClassifyThird json unmarshal err: %s", e.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if resp3.Ret != 200 {
|
|
|
+ err = fmt.Errorf("ClassifyThird resp msg: %s; errMsg: %s", resp3.Msg, resp3.ErrMsg)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ thirdId = resp3.Data.ClassifyId
|
|
|
+ lastId = thirdId
|
|
|
+ }
|
|
|
+
|
|
|
+ // 四级分类
|
|
|
+ if classifyFourth != "" {
|
|
|
+ classifyFourthMap := make(map[string]interface{})
|
|
|
+ classifyFourthMap["ClassifyName"] = classifyFourth
|
|
|
+ classifyFourthMap["ParentId"] = thirdId
|
|
|
+ classifyFourthMap["Level"] = 3
|
|
|
+ classifyFourthMap["ClassifyType"] = 0
|
|
|
+ res4, e := PostEdbLib(classifyFourthMap, method)
|
|
|
+ if e != nil {
|
|
|
+ err = fmt.Errorf("ClassifyFourth PostEdbLib err: %s", e.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ resp4 := new(models.ClassifyResp)
|
|
|
+ if e = json.Unmarshal(res4, &resp4); e != nil {
|
|
|
+ err = fmt.Errorf("ClassifyFourth json unmarshal err: %s", e.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if resp4.Ret != 200 {
|
|
|
+ err = fmt.Errorf("ClassifyFourth resp msg: %s; errMsg: %s", resp4.Msg, resp4.ErrMsg)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ fourthId = resp4.Data.ClassifyId
|
|
|
+ lastId = fourthId
|
|
|
+ }
|
|
|
+
|
|
|
+ // 五级分类
|
|
|
+ if classifyFifth != "" {
|
|
|
+ classifyFifthMap := make(map[string]interface{})
|
|
|
+ classifyFifthMap["ClassifyName"] = classifyFifth
|
|
|
+ classifyFifthMap["ParentId"] = fourthId
|
|
|
+ classifyFifthMap["Level"] = 4
|
|
|
+ classifyFifthMap["ClassifyType"] = 0
|
|
|
+ res5, e := PostEdbLib(classifyFifthMap, method)
|
|
|
+ if e != nil {
|
|
|
+ err = fmt.Errorf("ClassifyFifth PostEdbLib err: %s", e.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ resp5 := new(models.ClassifyResp)
|
|
|
+ if e = json.Unmarshal(res5, &resp5); e != nil {
|
|
|
+ err = fmt.Errorf("ClassifyFifth json unmarshal err: %s", e.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if resp5.Ret != 200 {
|
|
|
+ err = fmt.Errorf("ClassifyFifth resp msg: %s; errMsg: %s", resp5.Msg, resp5.ErrMsg)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ fifthId = resp5.Data.ClassifyId
|
|
|
+ lastId = fifthId
|
|
|
+ }
|
|
|
+
|
|
|
+ // 六级分类
|
|
|
+ if classifySixth != "" {
|
|
|
+ classifySixthMap := make(map[string]interface{})
|
|
|
+ classifySixthMap["ClassifyName"] = classifySixth
|
|
|
+ classifySixthMap["ParentId"] = fifthId
|
|
|
+ classifySixthMap["Level"] = 5
|
|
|
+ classifySixthMap["ClassifyType"] = 0
|
|
|
+ res6, e := PostEdbLib(classifySixthMap, method)
|
|
|
+ if e != nil {
|
|
|
+ err = fmt.Errorf("ClassifySixth PostEdbLib err: %s", e.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ resp6 := new(models.ClassifyResp)
|
|
|
+ if e = json.Unmarshal(res6, &resp6); e != nil {
|
|
|
+ err = fmt.Errorf("ClassifySixth json unmarshal err: %s", e.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if resp6.Ret != 200 {
|
|
|
+ err = fmt.Errorf("ClassifySixth resp msg: %s; errMsg: %s", resp6.Msg, resp6.ErrMsg)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ lastId = resp6.Data.ClassifyId
|
|
|
+ }
|
|
|
+
|
|
|
+ // 添加指标
|
|
|
+ method = "edb_info/add"
|
|
|
+ sourceId, ok := IndexSourceMap[source]
|
|
|
+ if !ok {
|
|
|
+ fmt.Println("source is not defined")
|
|
|
+ fmt.Println(classifyFirst, classifySecond, classifyThree, indexCode, indexName, frequency, unit, source)
|
|
|
+ continue
|
|
|
+ }
|
|
|
+ indexMap := make(map[string]interface{})
|
|
|
+ indexMap["Source"] = sourceId
|
|
|
+ indexMap["EdbCode"] = indexCode
|
|
|
+ indexMap["EdbName"] = indexName
|
|
|
+ indexMap["Frequency"] = frequency
|
|
|
+ indexMap["Unit"] = unit
|
|
|
+ indexMap["ClassifyId"] = lastId
|
|
|
+ indexMap["TerminalCode"] = terminalCode
|
|
|
+ admin := mobileMap[mobile]
|
|
|
+ if admin != nil {
|
|
|
+ indexMap["AdminId"] = admin.AdminId
|
|
|
+ indexMap["AdminName"] = admin.RealName
|
|
|
+ }
|
|
|
+ result, err = PostEdbLib(indexMap, method)
|
|
|
+ if err != nil {
|
|
|
+ utils.FileLog.Info("初始化指标失败:" + err.Error() + " result:" + string(result))
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ indexResp := new(models.EdbInfoResp)
|
|
|
+ err = json.Unmarshal(result, &indexResp)
|
|
|
+ if err != nil {
|
|
|
+ utils.FileLog.Info("初始化分类2失败:" + err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ if indexResp.Ret != 200 {
|
|
|
+ if strings.Contains(indexResp.Msg, "新增指标失败") {
|
|
|
+ continue
|
|
|
+ } else {
|
|
|
+ fmt.Println("初始化指标失败:" + indexResp.Msg + ";" + indexResp.ErrMsg)
|
|
|
+ utils.FileLog.Info("初始化指标失败:" + indexResp.Msg + ";" + indexResp.ErrMsg)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ }
|
|
|
+ fmt.Println("add index success:" + indexCode)
|
|
|
+
|
|
|
+ //刷新指标
|
|
|
+ method, ok = IndexSourceRefreshMap[sourceId]
|
|
|
+ if !ok {
|
|
|
+ fmt.Println("source refresh path is not defined")
|
|
|
+ fmt.Println(classifyFirst, classifySecond, classifyThree, indexCode, indexName, frequency, unit, source)
|
|
|
+ continue
|
|
|
+ }
|
|
|
+ refreshMap := make(map[string]interface{})
|
|
|
+ refreshMap["EdbInfoId"] = indexResp.Data.EdbInfoId
|
|
|
+ refreshMap["EdbCode"] = indexCode
|
|
|
+ refreshMap["StartDate"] = "1990-01-01"
|
|
|
+ PostEdbLib(refreshMap, method)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
-*/
|
|
|
+// VerifyMysteelIndex
|
|
|
+// @Description: 判断钢联指标编码是否已经入库
|
|
|
+// @author: Roc
|
|
|
+// @datetime 2024-01-15 13:54:48
|
|
|
+// @param indexCode string
|
|
|
+// @return ok bool
|
|
|
+// @return err error
|
|
|
+func VerifyMysteelIndex(indexCode string) (ok bool, err error) {
|
|
|
+ //判断指标是否存在
|
|
|
+ method := "mysteel_chemical/index_detail"
|
|
|
+ indexSearchMap := make(map[string]interface{})
|
|
|
+ indexSearchMap["IndexCode"] = indexCode
|
|
|
+ indexResult, e := PostEdbLib(indexSearchMap, method)
|
|
|
+ if e != nil {
|
|
|
+ err = fmt.Errorf("判断指标是否存在失败, Err: %s", e.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ mysteelIndexResp := new(models.MysteelIndexResp)
|
|
|
+ e = json.Unmarshal(indexResult, &mysteelIndexResp)
|
|
|
+ if e != nil {
|
|
|
+ err = fmt.Errorf("判断指标是否存在失败, Err: %s", e.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if mysteelIndexResp.Ret != 200 {
|
|
|
+ err = errors.New("判断指标是否存在失败,Err:" + mysteelIndexResp.ErrMsg)
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ if mysteelIndexResp.Data.BaseFromMysteelChemicalIndexId <= 0 {
|
|
|
+ fmt.Println("指标:" + indexCode + ";不存在")
|
|
|
+ return
|
|
|
+ }
|
|
|
+ ok = true
|
|
|
+
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+// VerifySmmIndex
|
|
|
+// @Description: 判断有色指标编码是否已经入库
|
|
|
+// @author: Roc
|
|
|
+// @datetime 2024-01-15 13:54:48
|
|
|
+// @param indexCode string
|
|
|
+// @return ok bool
|
|
|
+// @return err error
|
|
|
+func VerifySmmIndex(indexCode string) (ok bool, err error) {
|
|
|
+ //判断指标是否存在
|
|
|
+ method := "smm/index_detail/from_data_source"
|
|
|
+ indexSearchMap := make(map[string]interface{})
|
|
|
+ indexSearchMap["IndexCode"] = indexCode
|
|
|
+ indexResult, e := PostEdbLib(indexSearchMap, method)
|
|
|
+ if e != nil {
|
|
|
+ err = fmt.Errorf("判断指标是否存在失败, Err: %s", e.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ smmIndexResp := new(models.BaseFromSmmIndexResp)
|
|
|
+ e = json.Unmarshal(indexResult, &smmIndexResp)
|
|
|
+ if e != nil {
|
|
|
+ err = fmt.Errorf("判断指标是否存在失败, Err: %s", e.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if smmIndexResp.Ret != 200 {
|
|
|
+ err = errors.New("判断指标是否存在失败,Err:" + smmIndexResp.ErrMsg)
|
|
|
+ return
|
|
|
+
|
|
|
+ }
|
|
|
+ if smmIndexResp.Data.BaseFromSmmIndexId <= 0 {
|
|
|
+ //fmt.Println("指标:" + indexCode + ";不存在")
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ ok = true
|
|
|
+
|
|
|
+ return
|
|
|
+}
|