package services

import (
	aiPredictModel "eta/eta_api/models/ai_predict_model"
	"eta/eta_api/models/data_manage/excel"
	dataSourceModel "eta/eta_api/models/data_source"
	"eta/eta_api/services/elastic"
	excel2 "eta/eta_api/services/excel"
	"eta/eta_api/utils"
	"fmt"
)

// FixNewEs 修复新的es数据
func FixNewEs() {
	fmt.Println("开始修复")
	var err error
	defer func() {
		if err != nil {
			tips := fmt.Sprintf("修复es历史数据失败, %v", err)
			fmt.Println(tips)
			utils.FileLog.Info(tips)
		}
	}()

	// 表格
	if utils.EsExcelIndexName == "" {
		err = fmt.Errorf("表格索引名为空")
		return
	}
	fmt.Println("开始创建表格索引:", utils.EsExcelIndexName)
	indexMapping := `{"mappings":{"properties":{"ExcelInfoId":{"type":"long"},"Source":{"type":"long"},"ExcelType":{"type":"long"},"ExcelName":{"type":"text","fields":{"keyword":{"type":"keyword","ignore_above":256}}},"UniqueCode":{"type":"text","fields":{"keyword":{"type":"keyword","ignore_above":256}}},"ExcelClassifyId":{"type":"long"},"SysUserId":{"type":"long"},"SysUserRealName":{"type":"text","fields":{"keyword":{"type":"keyword","ignore_above":256}}},"Content":{"type":"text","fields":{"keyword":{"type":"keyword","ignore_above":256}}},"ExcelImage":{"type":"text","fields":{"keyword":{"type":"keyword","ignore_above":256}}},"FileUrl":{"type":"text","fields":{"keyword":{"type":"keyword","ignore_above":256}}},"Sort":{"type":"long"},"IsDelete":{"type":"long"},"ModifyTime":{"type":"text","fields":{"keyword":{"type":"keyword","ignore_above":256}}},"CreateTime":{"type":"text","fields":{"keyword":{"type":"keyword","ignore_above":256}}},"IsJoinPermission":{"type":"long"},"ParentId":{"type":"long"},"BalanceType":{"type":"long"},"UpdateUserId":{"type":"long"},"UpdateUserRealName":{"type":"text","fields":{"keyword":{"type":"keyword","ignore_above":256}}},"RelExcelInfoId":{"type":"long"},"VersionName":{"type":"text","fields":{"keyword":{"type":"keyword","ignore_above":256}}},"SourcesFrom":{"type":"text","fields":{"keyword":{"type":"keyword","ignore_above":256}}}}}}`
	if e := elastic.CreateEsIndex(utils.EsExcelIndexName, indexMapping); e != nil {
		err = fmt.Errorf("创建excel索引失败, %v", e)
		return
	}
	fmt.Println("表格索引创建成功")

	fmt.Println("开始修复表格数据")
	excels, e := excel.GetExcelInfoAll()
	if e != nil {
		err = fmt.Errorf("获取所有excel表格失败, %v", e)
		return
	}
	for _, v := range excels {
		fmt.Printf("ExcelId: %d 修复中\n", v.ExcelInfoId)
		excel2.EsAddOrEditExcel(v.ExcelInfoId)
	}
	fmt.Println("表格数据修复成功")

	// 数据源
	fmt.Println("数据源索引名:", utils.EsDataSourceIndexName)
	if utils.EsDataSourceIndexName == "" {
		err = fmt.Errorf("数据源索引名为空")
		return
	}
	fmt.Println("开始创建数据源索引:", utils.EsDataSourceIndexName)
	indexMappingB := `{"mappings":{"properties":{"ClassifyId":{"type":"long"},"CreateTime":{"type":"text","fields":{"keyword":{"type":"keyword","ignore_above":256}}},"EndDate":{"type":"text","fields":{"keyword":{"type":"keyword","ignore_above":256}}},"Frequency":{"type":"text","fields":{"keyword":{"type":"keyword","ignore_above":256}}},"IndexCode":{"type":"text","fields":{"keyword":{"type":"keyword","ignore_above":256}}},"IndexName":{"type":"text","fields":{"keyword":{"type":"keyword","ignore_above":256}}},"IsDeleted":{"type":"long"},"LatestValue":{"type":"text"},"ModifyTime":{"type":"text","fields":{"keyword":{"type":"keyword","ignore_above":256}}},"PrimaryId":{"type":"long"},"Source":{"type":"long"},"SourceName":{"type":"text","fields":{"keyword":{"type":"keyword","ignore_above":256}}},"SubSource":{"type":"long"},"StartDate":{"type":"text","fields":{"keyword":{"type":"keyword","ignore_above":256}}},"Unit":{"type":"text","fields":{"keyword":{"type":"keyword","ignore_above":256}}}}}}`
	//indexMappingB := `{"settings":{"analysis":{"analyzer":{"ik_analyzer":{"type":"custom","tokenizer":"ik_max_word"},"ngram_analyzer":{"type":"custom","tokenizer":"standard","filter":["lowercase","ngram_filter"]}},"filter":{"ngram_filter":{"type":"ngram","min_gram":1,"max_gram":2,"token_chars":["letter","digit"]}}}},"mappings":{"properties":{"ClassifyId":{"type":"long"},"CreateTime":{"type":"text","fields":{"keyword":{"type":"keyword","ignore_above":256}}},"EndDate":{"type":"text","fields":{"keyword":{"type":"keyword","ignore_above":256}}},"Frequency":{"type":"text","analyzer":"ik_smart"},"IndexCode":{"type":"text","fields":{"ngram":{"type":"text","analyzer":"ngram_analyzer","search_analyzer":"standard"},"keyword":{"type":"keyword","ignore_above":256}}},"IndexName":{"type":"text","fields":{"ik":{"type":"text","analyzer":"ik_analyzer","search_analyzer":"ik_analyzer"},"ngram":{"type":"text","analyzer":"ngram_analyzer","search_analyzer":"standard"},"keyword":{"type":"keyword","ignore_above":256}}},"IsDeleted":{"type":"long"},"LatestValue":{"type":"double"},"ModifyTime":{"type":"text","fields":{"keyword":{"type":"keyword","ignore_above":256}}},"PrimaryId":{"type":"long"},"Source":{"type":"long"},"SourceName":{"type":"text","analyzer":"ik_smart"},"SubSource":{"type":"long"},"StartDate":{"type":"text","fields":{"keyword":{"type":"keyword","ignore_above":256}}},"Unit":{"type":"text","analyzer":"ik_smart"}}}}`
	if e := elastic.CreateEsIndex(utils.EsDataSourceIndexName, indexMappingB); e != nil {
		err = fmt.Errorf("创建数据源索引失败, %v", e)
		return
	}
	fmt.Println("数据源索引创建成功")

	fmt.Println("开始修复数据源")
	var cond string
	var pars []interface{}
	// 睿咨得
	rzdOb := new(dataSourceModel.BaseFromRzdIndex)
	{
		list, e := rzdOb.GetItemsByCondition(cond, pars, []string{}, "")
		if e != nil {
			err = fmt.Errorf("获取睿咨得失败, %v", e)
			return
		}
		for _, v := range list {
			indexItem := v.Format2SearchDataSource(v)
			fmt.Printf("写入中:睿咨得-%d\n", indexItem.PrimaryId)
			docId := fmt.Sprintf("%d-%d", indexItem.Source, indexItem.PrimaryId)
			if e := elastic.EsAddOrEditDataSourceIndex(utils.EsDataSourceIndexName, docId, indexItem); e != nil {
				err = fmt.Errorf("睿咨得-写入es失败, %v", e)
				return
			}
		}
	}

	// 泛糖科技
	hisugarOb := new(dataSourceModel.BaseFromHisugarIndex)
	{
		list, e := hisugarOb.GetItemsByCondition(cond, pars, []string{}, "")
		if e != nil {
			err = fmt.Errorf("获取泛糖科技失败, %v", e)
			return
		}
		for _, v := range list {
			indexItem := v.Format2SearchDataSource(v)
			fmt.Printf("写入中:泛糖科技-%d\n", indexItem.PrimaryId)
			docId := fmt.Sprintf("%d-%d", indexItem.Source, indexItem.PrimaryId)
			if e := elastic.EsAddOrEditDataSourceIndex(utils.EsDataSourceIndexName, docId, indexItem); e != nil {
				err = fmt.Errorf("泛糖科技-写入es失败, %v", e)
				return
			}
		}
	}

	// 粮油商务网
	lyOb := new(dataSourceModel.BaseFromLyIndex)
	{
		list, e := lyOb.GetItemsByCondition(cond, pars, []string{}, "")
		if e != nil {
			err = fmt.Errorf("获取粮油商务网失败, %v", e)
			return
		}
		for _, v := range list {
			indexItem := v.Format2SearchDataSource(v)
			fmt.Printf("写入中:粮油商务网-%d\n", indexItem.PrimaryId)
			docId := fmt.Sprintf("%d-%d", indexItem.Source, indexItem.PrimaryId)
			if e := elastic.EsAddOrEditDataSourceIndex(utils.EsDataSourceIndexName, docId, indexItem); e != nil {
				err = fmt.Errorf("粮油商务网-写入es失败, %v", e)
				return
			}
		}
	}

	// 卓创红期
	sciHqOb := new(dataSourceModel.BaseFromSciHqIndex)
	{
		list, e := sciHqOb.GetItemsByCondition(cond, pars, []string{}, "")
		if e != nil {
			err = fmt.Errorf("获取卓创红期失败, %v", e)
			return
		}
		for _, v := range list {
			indexItem := v.Format2SearchDataSource(v)
			fmt.Printf("写入中:卓创红期-%d\n", indexItem.PrimaryId)
			docId := fmt.Sprintf("%d-%d", indexItem.Source, indexItem.PrimaryId)
			if e := elastic.EsAddOrEditDataSourceIndex(utils.EsDataSourceIndexName, docId, indexItem); e != nil {
				err = fmt.Errorf("卓创红期-写入es失败, %v", e)
				return
			}
		}
	}

	// 同花顺高频
	thsHfOb := new(dataSourceModel.BaseFromThsHfIndex)
	{
		list, e := thsHfOb.GetItemsByCondition(cond, pars, []string{}, "")
		if e != nil {
			err = fmt.Errorf("获取同花顺高频失败, %v", e)
			return
		}
		for _, v := range list {
			indexItem := v.Format2SearchDataSource(v)
			fmt.Printf("写入中:同花顺高频-%d\n", indexItem.PrimaryId)
			docId := fmt.Sprintf("%d-%d", indexItem.Source, indexItem.PrimaryId)
			if e := elastic.EsAddOrEditDataSourceIndex(utils.EsDataSourceIndexName, docId, indexItem); e != nil {
				err = fmt.Errorf("同花顺高频-写入es失败, %v", e)
				return
			}
		}
	}

	// 隆众资讯
	oilchemOb := new(dataSourceModel.BaseFromOilchemIndex)
	{
		list, e := oilchemOb.GetItemsByCondition(cond, pars, []string{}, "")
		if e != nil {
			err = fmt.Errorf("获取隆众资讯失败, %v", e)
			return
		}
		for _, v := range list {
			indexItem := v.Format2SearchDataSource(v)
			fmt.Printf("写入中:隆众资讯-%d\n", indexItem.PrimaryId)
			docId := fmt.Sprintf("%d-%d", indexItem.Source, indexItem.PrimaryId)
			if e := elastic.EsAddOrEditDataSourceIndex(utils.EsDataSourceIndexName, docId, indexItem); e != nil {
				err = fmt.Errorf("隆众资讯-写入es失败, %v", e)
				return
			}
		}
	}

	// CCF化纤信息
	ccfOb := new(dataSourceModel.BaseFromCcfIndex)
	{
		list, e := ccfOb.GetItemsByCondition(cond, pars, []string{}, "")
		if e != nil {
			err = fmt.Errorf("获取CCF化纤信息失败, %v", e)
			return
		}
		for _, v := range list {
			indexItem := v.Format2SearchDataSource(v)
			fmt.Printf("写入中:CCF化纤信息-%d\n", indexItem.PrimaryId)
			docId := fmt.Sprintf("%d-%d", indexItem.Source, indexItem.PrimaryId)
			if e := elastic.EsAddOrEditDataSourceIndex(utils.EsDataSourceIndexName, docId, indexItem); e != nil {
				err = fmt.Errorf("CCF化纤信息-写入es失败, %v", e)
				return
			}
		}
	}

	// 上海钢联
	mysteelOb := new(dataSourceModel.BaseFromMysteelChemicalIndex)
	{
		list, e := mysteelOb.GetItemsByCondition(cond, pars, []string{}, "")
		if e != nil {
			err = fmt.Errorf("获取上海钢联失败, %v", e)
			return
		}
		for _, v := range list {
			indexItem := v.Format2SearchDataSource(v)
			fmt.Printf("写入中:上海钢联-%d\n", indexItem.PrimaryId)
			docId := fmt.Sprintf("%d-%d", indexItem.Source, indexItem.PrimaryId)
			if e := elastic.EsAddOrEditDataSourceIndex(utils.EsDataSourceIndexName, docId, indexItem); e != nil {
				err = fmt.Errorf("上海钢联-写入es失败, %v", e)
				return
			}
		}
	}

	// SMM、有色原始数据库
	smmOb := new(dataSourceModel.BaseFromSmmIndex)
	{
		list, e := smmOb.GetItemsByCondition(cond, pars, []string{}, "")
		if e != nil {
			err = fmt.Errorf("获取有色原始数据库失败, %v", e)
			return
		}
		for _, v := range list {
			indexItem := v.Format2SearchDataSource(v)
			fmt.Printf("写入中:有色原始数据库-%d\n", indexItem.PrimaryId)
			docId := fmt.Sprintf("%d-%d", indexItem.Source, indexItem.PrimaryId)
			if e := elastic.EsAddOrEditDataSourceIndex(utils.EsDataSourceIndexName, docId, indexItem); e != nil {
				err = fmt.Errorf("有色原始数据库-写入es失败, %v", e)
				return
			}
		}
	}

	// 百川盈孚
	baiinfoOb := new(dataSourceModel.BaseFromBaiinfoIndex)
	{
		list, e := baiinfoOb.GetItemsByCondition(cond, pars, []string{}, "")
		if e != nil {
			err = fmt.Errorf("获取百川盈孚失败, %v", e)
			return
		}
		for _, v := range list {
			indexItem := v.Format2SearchDataSource(v)
			fmt.Printf("写入中:百川盈孚-%d\n", indexItem.PrimaryId)
			docId := fmt.Sprintf("%d-%d", indexItem.Source, indexItem.PrimaryId)
			if e := elastic.EsAddOrEditDataSourceIndex(utils.EsDataSourceIndexName, docId, indexItem); e != nil {
				err = fmt.Errorf("百川盈孚-写入es失败, %v", e)
				return
			}
		}
	}

	// 红桃3
	sciOb := new(dataSourceModel.BaseFromSciIndex)
	{
		list, e := sciOb.GetItemsByCondition(cond, pars, []string{}, "")
		if e != nil {
			err = fmt.Errorf("获取红桃3失败, %v", e)
			return
		}
		for _, v := range list {
			indexItem := v.Format2SearchDataSource(v)
			fmt.Printf("写入中:红桃3-%d\n", indexItem.PrimaryId)
			docId := fmt.Sprintf("%d-%d", indexItem.Source, indexItem.PrimaryId)
			if e := elastic.EsAddOrEditDataSourceIndex(utils.EsDataSourceIndexName, docId, indexItem); e != nil {
				err = fmt.Errorf("红桃3-写入es失败, %v", e)
				return
			}
		}
	}

	// 中国煤炭市场网
	coalmineOb := new(dataSourceModel.BaseFromCoalmineMapping)
	{
		list, e := coalmineOb.GetItemsByCondition(cond, pars, []string{}, "")
		if e != nil {
			err = fmt.Errorf("获取中国煤炭市场网失败, %v", e)
			return
		}
		for _, v := range list {
			indexItem := v.Format2SearchDataSource(v)
			fmt.Printf("写入中:中国煤炭市场网-%d\n", indexItem.PrimaryId)
			docId := fmt.Sprintf("%d-%d", indexItem.Source, indexItem.PrimaryId)
			if e := elastic.EsAddOrEditDataSourceIndex(utils.EsDataSourceIndexName, docId, indexItem); e != nil {
				err = fmt.Errorf("中国煤炭市场网-写入es失败, %v", e)
				return
			}
		}
	}

	// EIA STEO报告
	eiaOb := new(dataSourceModel.BaseFromEiaSteoIndex)
	{
		list, e := eiaOb.GetItemsByCondition(cond, pars, []string{}, "")
		if e != nil {
			err = fmt.Errorf("获取EIA STEO报告失败, %v", e)
			return
		}
		for _, v := range list {
			indexItem := v.Format2SearchDataSource(v)
			fmt.Printf("写入中:EIA STEO报告-%d\n", indexItem.PrimaryId)
			docId := fmt.Sprintf("%d-%d", indexItem.Source, indexItem.PrimaryId)
			if e := elastic.EsAddOrEditDataSourceIndex(utils.EsDataSourceIndexName, docId, indexItem); e != nil {
				err = fmt.Errorf("EIA STEO报告-写入es失败, %v", e)
				return
			}
		}
	}

	// ICPI消费价格指数
	icpiOb := new(dataSourceModel.BaseFromIcpiIndex)
	{
		list, e := icpiOb.GetItemsByCondition(cond, pars, []string{}, "")
		if e != nil {
			err = fmt.Errorf("获取ICPI消费价格指数失败, %v", e)
			return
		}
		for _, v := range list {
			indexItem := v.Format2SearchDataSource(v)
			fmt.Printf("写入中:ICPI消费价格指数-%d\n", indexItem.PrimaryId)
			docId := fmt.Sprintf("%d-%d", indexItem.Source, indexItem.PrimaryId)
			if e := elastic.EsAddOrEditDataSourceIndex(utils.EsDataSourceIndexName, docId, indexItem); e != nil {
				err = fmt.Errorf("ICPI消费价格指数-写入es失败, %v", e)
				return
			}
		}
	}

	// 涌益咨询
	yongyiOb := new(dataSourceModel.BaseFromYongyiIndex)
	{
		list, e := yongyiOb.GetItemsByCondition(cond, pars, []string{}, "")
		if e != nil {
			err = fmt.Errorf("获取涌益咨询失败, %v", e)
			return
		}
		for _, v := range list {
			indexItem := v.Format2SearchDataSource(v)
			fmt.Printf("写入中:涌益咨询-%d\n", indexItem.PrimaryId)
			docId := fmt.Sprintf("%d-%d", indexItem.Source, indexItem.PrimaryId)
			if e := elastic.EsAddOrEditDataSourceIndex(utils.EsDataSourceIndexName, docId, indexItem); e != nil {
				err = fmt.Errorf("涌益咨询-写入es失败, %v", e)
				return
			}
		}
	}

	// 汾渭数据
	fenweiOb := new(dataSourceModel.BaseFromFenweiIndex)
	{
		list, e := fenweiOb.GetItemsByCondition(cond, pars, []string{}, "")
		if e != nil {
			err = fmt.Errorf("获取汾渭数据失败, %v", e)
			return
		}
		for _, v := range list {
			indexItem := v.Format2SearchDataSource(v)
			fmt.Printf("写入中:汾渭数据-%d\n", indexItem.PrimaryId)
			docId := fmt.Sprintf("%d-%d", indexItem.Source, indexItem.PrimaryId)
			if e := elastic.EsAddOrEditDataSourceIndex(utils.EsDataSourceIndexName, docId, indexItem); e != nil {
				err = fmt.Errorf("汾渭数据-写入es失败, %v", e)
				return
			}
		}
	}

	// 卓创数据
	sci99Ob := new(dataSourceModel.BaseFromSci99Index)
	{
		list, e := sci99Ob.GetItemsByCondition(cond, pars, []string{}, "")
		if e != nil {
			err = fmt.Errorf("获取卓创数据失败, %v", e)
			return
		}
		for _, v := range list {
			indexItem := v.Format2SearchDataSource(v)
			fmt.Printf("写入中:卓创数据-%d\n", indexItem.PrimaryId)
			docId := fmt.Sprintf("%d-%d", indexItem.Source, indexItem.PrimaryId)
			if e := elastic.EsAddOrEditDataSourceIndex(utils.EsDataSourceIndexName, docId, indexItem); e != nil {
				err = fmt.Errorf("卓创数据-写入es失败, %v", e)
				return
			}
		}
	}

	// 钢联原始指标库
	glOb := new(dataSourceModel.BaseFromGlIndex)
	{
		list, e := glOb.GetItemsByCondition(cond, pars, []string{}, "")
		if e != nil {
			err = fmt.Errorf("获取钢联原始指标库失败, %v", e)
			return
		}
		for _, v := range list {
			indexItem := v.Format2SearchDataSource(v)
			fmt.Printf("写入中:钢联原始指标库-%d\n", indexItem.PrimaryId)
			docId := fmt.Sprintf("%d-%d", indexItem.Source, indexItem.PrimaryId)
			if e := elastic.EsAddOrEditDataSourceIndex(utils.EsDataSourceIndexName, docId, indexItem); e != nil {
				err = fmt.Errorf("钢联原始指标库-写入es失败, %v", e)
				return
			}
		}
	}

	// 手工指标录入
	manualOb := new(dataSourceModel.BaseFromManualEdb)
	{
		list, e := manualOb.GetItemsByCondition(cond, pars, []string{}, "")
		if e != nil {
			err = fmt.Errorf("获取手工指标失败, %v", e)
			return
		}
		for _, v := range list {
			indexItem := v.Format2SearchDataSource(v)
			fmt.Printf("写入中:手工指标-%s\n", indexItem.IndexCode)
			docId := fmt.Sprintf("%d-%s", indexItem.Source, indexItem.IndexCode)
			if e := elastic.EsAddOrEditDataSourceIndex(utils.EsDataSourceIndexName, docId, indexItem); e != nil {
				err = fmt.Errorf("手工指标-写入es失败, %v", e)
				return
			}
		}
	}

	// Bloomberg
	bloombergOb := new(dataSourceModel.BaseFromBloombergIndex)
	{
		list, e := bloombergOb.GetItemsByCondition(cond, pars, []string{}, "")
		if e != nil {
			err = fmt.Errorf("获取Bloomberg失败, %v", e)
			return
		}
		for _, v := range list {
			indexItem := v.Format2SearchDataSource(v)
			fmt.Printf("写入中:Bloomberg-%d\n", indexItem.PrimaryId)
			docId := fmt.Sprintf("%d-%d", indexItem.Source, indexItem.PrimaryId)
			if e := elastic.EsAddOrEditDataSourceIndex(utils.EsDataSourceIndexName, docId, indexItem); e != nil {
				err = fmt.Errorf("Bloomberg-写入es失败, %v", e)
				return
			}
		}
	}

	// 煤炭江湖
	mtjhOb := new(dataSourceModel.BaseFromMtjhMapping)
	{
		list, e := mtjhOb.GetItemsByCondition(cond, pars, []string{}, "")
		if e != nil {
			err = fmt.Errorf("获取煤炭江湖失败, %v", e)
			return
		}
		for _, v := range list {
			indexItem := v.Format2SearchDataSource(v)
			fmt.Printf("写入中:煤炭江湖-%d\n", indexItem.PrimaryId)
			docId := fmt.Sprintf("%d-%d", indexItem.Source, indexItem.PrimaryId)
			if e := elastic.EsAddOrEditDataSourceIndex(utils.EsDataSourceIndexName, docId, indexItem); e != nil {
				err = fmt.Errorf("煤炭江湖-写入es失败, %v", e)
				return
			}
		}
	}

	// AI预测模型
	aiPredictOb := new(aiPredictModel.AiPredictModelIndex)
	{
		list, e := aiPredictOb.GetItemsByCondition(cond, pars, []string{}, "")
		if e != nil {
			err = fmt.Errorf("获取AI预测模型失败, %v", e)
			return
		}
		for _, v := range list {
			indexItem := new(dataSourceModel.SearchDataSource)
			indexItem.PrimaryId = v.AiPredictModelIndexId
			indexItem.IndexName = v.IndexName
			indexItem.IndexCode = v.IndexCode
			indexItem.ClassifyId = v.ClassifyId
			indexItem.Source = utils.DATA_SOURCE_AI_PREDICT_MODEL
			indexItem.SourceName = "AI预测模型"
			indexItem.CreateTime = utils.TimeTransferString(utils.FormatDateTime, v.CreateTime)
			indexItem.ModifyTime = utils.TimeTransferString(utils.FormatDateTime, v.ModifyTime)
			fmt.Printf("写入中:AI预测模型-%d\n", indexItem.PrimaryId)
			docId := fmt.Sprintf("%d-%d", indexItem.Source, indexItem.PrimaryId)
			if e := elastic.EsAddOrEditDataSourceIndex(utils.EsDataSourceIndexName, docId, indexItem); e != nil {
				err = fmt.Errorf("AI预测模型-写入es失败, %v", e)
				return
			}
		}
	}

	// 美国农业部
	usdaOb := new(dataSourceModel.BaseFromUsdaFasIndex)
	{
		list, e := usdaOb.GetItemsByCondition(cond, pars, []string{}, "")
		if e != nil {
			err = fmt.Errorf("获取美国农业部失败, %v", e)
			return
		}
		for _, v := range list {
			indexItem := v.Format2SearchDataSource(v)
			fmt.Printf("写入中:美国农业部-%d\n", indexItem.PrimaryId)
			docId := fmt.Sprintf("%d-%d", indexItem.Source, indexItem.PrimaryId)
			if e := elastic.EsAddOrEditDataSourceIndex(utils.EsDataSourceIndexName, docId, indexItem); e != nil {
				err = fmt.Errorf("美国农业部-写入es失败, %v", e)
				return
			}
		}
	}

	// 自有数据
	businessOb := new(dataSourceModel.BaseFromBusinessIndex)
	{
		list, e := businessOb.GetItemsByCondition(cond, pars, []string{}, "")
		if e != nil {
			err = fmt.Errorf("获取自有数据失败, %v", e)
			return
		}
		for _, v := range list {
			indexItem := v.Format2SearchDataSource(v)
			fmt.Printf("写入中:自有数据-%d\n", indexItem.PrimaryId)
			docId := fmt.Sprintf("%d-%d", indexItem.Source, indexItem.PrimaryId)
			if e := elastic.EsAddOrEditDataSourceIndex(utils.EsDataSourceIndexName, docId, indexItem); e != nil {
				err = fmt.Errorf("自有数据-写入es失败, %v", e)
				return
			}
		}
	}

	fmt.Println("修复完成")
}