package services import ( "encoding/json" "eta/eta_data_init/models" "eta/eta_data_init/utils" "fmt" "github.com/xuri/excelize/v2" "os" "path/filepath" "strings" ) // InitSmmIndexToDataSource 初始化数据源-有色指标数据 func InitSmmIndexToDataSource(filePath string) { var err error defer func() { if err != nil { fmt.Println("InitBaseIndexData Err:" + err.Error()) } }() //读取excel path, err := filepath.Abs(os.Args[0]) if err != nil { fmt.Println(err) } 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 } 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 } classifyMethod := "smm/smm_classify/get_or_add" indexMethod := "smm/add/index/to_data_source" fmt.Println("rows len:", len(rows)) for rk, row := range rows { if rk > 0 { var classifyFirst, classifySecond, classifyThree, indexCode, indexName, frequency, unit, source string for ck, colCell := range row { switch ck { case 0: classifyFirst = colCell case 1: classifySecond = colCell case 2: classifyThree = colCell case 3: indexCode = colCell case 4: indexName = colCell case 5: frequency = colCell case 6: unit = colCell case 7: source = colCell } } if classifySecond != "" && classifyThree != "" && indexCode != "" && indexName != "" && unit != "" && frequency != "" { // 如果频度只有年月日这种,并没有度,那么需要补充 if !strings.Contains(frequency, "度") { frequency = frequency + "度" } classifySecondMap := make(map[string]interface{}) classifySecondMap["ClassifyName"] = classifySecond classifySecondMap["ParentId"] = 0 classifySecondMap["Level"] = 0 classifySecondMap["SysUserId"] = utils.OpUserId classifySecondMap["SysUserRealName"] = utils.OpUserRealName result, err := PostEdbLib(classifySecondMap, classifyMethod) if err != nil { utils.FileLog.Info("初始化分类2失败:" + err.Error()) return } resp := new(models.BaseFromSmmClassifyResp) err = json.Unmarshal(result, &resp) if err != nil { utils.FileLog.Info("初始化分类2失败:" + err.Error()) return } if resp.Ret != 200 { utils.FileLog.Info("初始化分类2失败:" + resp.Msg + ";" + resp.ErrMsg) return } classifyThreeMap := make(map[string]interface{}) classifyThreeMap["ClassifyName"] = classifyThree classifyThreeMap["ParentId"] = resp.Data.ClassifyId classifyThreeMap["Level"] = 1 classifyThreeMap["SysUserId"] = utils.OpUserId classifyThreeMap["SysUserRealName"] = utils.OpUserRealName result, err = PostEdbLib(classifyThreeMap, classifyMethod) if err != nil { utils.FileLog.Info("初始化分类3失败:" + err.Error()) return } resp = new(models.BaseFromSmmClassifyResp) err = json.Unmarshal(result, &resp) if err != nil { utils.FileLog.Info("初始化分类3失败:" + err.Error()) return } if resp.Ret != 200 { utils.FileLog.Info("初始化分类3失败:" + resp.Msg + ";" + resp.ErrMsg) return } indexMap := make(map[string]interface{}) indexMap["EdbCode"] = indexCode indexMap["ClassifyId"] = resp.Data.ClassifyId indexMap["SysUserId"] = utils.OpUserId indexMap["SysUserRealName"] = utils.OpUserRealName result, err = PostEdbLib(indexMap, indexMethod) 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) } else { fmt.Println("data is empty") fmt.Println(classifyFirst, classifySecond, classifyThree, indexCode, indexName, frequency, unit, source) } } } }