Bläddra i källkod

解析涌益咨询指标数据

xyxie 1 år sedan
förälder
incheckning
e68908ad41
3 ändrade filer med 125 tillägg och 14 borttagningar
  1. 1 1
      controllers/base_from_yongyi.go
  2. 48 6
      models/base_from_yongyi.go
  3. 76 7
      services/base_from_yongyi.go

+ 1 - 1
controllers/base_from_yongyi.go

@@ -160,7 +160,7 @@ func (this *YongyiController) HandleExcelData() {
 	}
 
 	// 处理excel表数据
-	err = services.HandleYongyiIndex(req)
+	err = services.HandleYongyiIndex(&req)
 	if err != nil {
 		fmt.Println("HandleMysteelIndex Err:" + err.Error())
 		br.Msg = "处理失败"

+ 48 - 6
models/base_from_yongyi.go

@@ -197,11 +197,12 @@ func (obj BaseFromYongyi) GetSourceName() string {
 }
 
 type BaseFromYongyiIndex struct {
-	YongyiIndexId int64 `orm:"column(base_from_yongyi_index_id);pk"`
+	YongyiIndexId int64 `orm:"column(yongyi_index_id);pk"`
 	IndexCode     string
 	IndexName     string
 	Frequency     string
 	Unit          string
+	ClassifyId    int64
 	StartDate     string
 	EndDate       string
 	Sort          int
@@ -223,14 +224,21 @@ func (y *BaseFromYongyiData) AddMulti(item []*BaseFromYongyiData) (err error) {
 	return
 }
 
-// HandleYongyiExcelDataReq 涌益咨询的excel数据
-type HandleYongyiExcelDataReq struct {
+// HandleYongyiExcelData 涌益咨询的excel数据
+type HandleYongyiExcelData struct {
 	//BaseFilePath   string
 	//RenameFilePath string
-	IndexName    string
-	IndexCode    string
-	ExcelDataMap map[string]string
+	ClassifyName string `description:"指标目录"`
+	IndexName    string `description:"指标名称"`
+	IndexCode    string `description:"指标编码"`
+	Unit         string `description:"单位"`
+	Frequency    string `description:"频度"`
 	TerminalCode string `description:"编码"`
+	ExcelDataMap map[string]string
+}
+
+type HandleYongyiExcelDataReq struct {
+	List []*HandleYongyiExcelData
 }
 
 func (y *BaseFromYongyiData) GetMaxAndMinDateByIndexCode(indexCode string) (item *EdbInfoMaxAndMinInfo, err error) {
@@ -267,3 +275,37 @@ func (y *BaseFromYongyiIndex) Update(updateCols []string) (err error) {
 
 	return
 }
+
+// BaseFromYongyiClassify Yongyi原始数据分类表
+type BaseFromYongyiClassify struct {
+	ClassifyId      int64     `orm:"column(classify_id);pk"`
+	ClassifyName    string    `description:"分类名称"`
+	ParentId        int       `description:"父级id"`
+	SysUserId       int       `description:"创建人id"`
+	SysUserRealName string    `description:"创建人姓名"`
+	Level           int       `description:"层级"`
+	Sort            int       `description:"排序字段,越小越靠前,默认值:10"`
+	ModifyTime      time.Time `description:"修改时间"`
+	CreateTime      time.Time `description:"创建时间"`
+}
+
+func (y *BaseFromYongyiClassify) Add() (lastId int64, err error) {
+	o := orm.NewOrm()
+	lastId, err = o.Insert(y)
+	return
+}
+
+// Update 修改
+func (y *BaseFromYongyiClassify) Update(updateCols []string) (err error) {
+	o := orm.NewOrm()
+	_, err = o.Update(y, updateCols...)
+
+	return
+}
+
+func (y *BaseFromYongyiClassify) GetByClassifyName(classifyName string) (item *BaseFromYongyiClassify, err error) {
+	o := orm.NewOrm()
+	sql := ` SELECT * FROM base_from_yongyi_classify WHERE classify_name=? `
+	err = o.Raw(sql, classifyName).QueryRow(&item)
+	return
+}

+ 76 - 7
services/base_from_yongyi.go

@@ -11,7 +11,20 @@ import (
 )
 
 // HandleYongyiIndex 处理涌益咨询的excel数据
-func HandleYongyiIndex(req models.HandleYongyiExcelDataReq) (err error) {
+func HandleYongyiIndex(req *models.HandleYongyiExcelDataReq) (err error) {
+	for _, v := range req.List {
+		if v.IndexName == "" || v.IndexCode == "" {
+			continue
+		}
+		err = handleYongyiIndex(v)
+		if err != nil {
+			return
+		}
+	}
+	return
+}
+
+func handleYongyiIndex(req *models.HandleYongyiExcelData) (err error) {
 	terminalCode := req.TerminalCode
 	indexName := req.IndexName
 	indexCode := req.IndexCode
@@ -25,6 +38,8 @@ func HandleYongyiIndex(req models.HandleYongyiExcelDataReq) (err error) {
 
 	indexObj := new(models.BaseFromYongyiIndex)
 	dataObj := new(models.BaseFromYongyiData)
+	classifyObj := new(models.BaseFromYongyiClassify)
+
 	var indexId int64
 
 	addDataList := make([]*models.BaseFromYongyiData, 0)
@@ -36,12 +51,52 @@ func HandleYongyiIndex(req models.HandleYongyiExcelDataReq) (err error) {
 		utils.FileLog.Info("未刷新到指标数据:indexName:" + indexName)
 		return
 	}
+	// 判断目录是否存在
+	var classifyId int64
+	now := time.Now()
+	if req.ClassifyName == "" {
+		classifyObj, err = classifyObj.GetByClassifyName(req.ClassifyName)
+		if err != nil {
+			if err.Error() == utils.ErrNoRow() {
+				err = nil
+				//新增分类
+				classifyObj = &models.BaseFromYongyiClassify{
+					ClassifyName:    req.ClassifyName,
+					ParentId:        0,
+					SysUserId:       0,
+					SysUserRealName: "",
+					Level:           1,
+					Sort:            0,
+					ModifyTime:      now,
+					CreateTime:      now,
+				}
+
+				classifyId, err = classifyObj.Add()
+				if err != nil {
+					fmt.Println("add err:" + err.Error())
+					return
+				}
+				classifyObj.ClassifyId = classifyId
+				//修改排序
+				classifyObj.Sort = int(classifyId)
+				err = classifyObj.Update([]string{"Sort"})
+				if err != nil {
+					return
+				}
+			}
+			return
+		} else {
+			classifyId = classifyObj.ClassifyId
+		}
+	}
+
 	//判断指标是否存在
 	var isAdd int
 	item, err := indexObj.GetByIndexCode(indexCode)
 	if err != nil {
 		if err.Error() == utils.ErrNoRow() {
 			isAdd = 1
+			err = nil
 		} else {
 			isAdd = -1
 			fmt.Println("GetByIndexCode Err:" + err.Error())
@@ -58,21 +113,31 @@ func HandleYongyiIndex(req models.HandleYongyiExcelDataReq) (err error) {
 	if isAdd == 1 {
 		indexObj.IndexCode = indexCode
 		indexObj.IndexName = indexName
+		indexObj.Frequency = req.Frequency
+		indexObj.ClassifyId = classifyId
+		indexObj.Unit = req.Unit
 		indexObj.ModifyTime = time.Now()
 		indexObj.CreateTime = time.Now()
 		indexObj.TerminalCode = terminalCode
-
 		indexId, err = indexObj.Add()
 		if err != nil {
 			fmt.Println("add err:" + err.Error())
 			return
 		}
+		indexObj.YongyiIndexId = indexId
 		//修改排序
-		go models.ModifyBaiinfoIndexSort(indexId)
+		indexObj.Sort = int(indexId)
+		err = indexObj.Update([]string{"Sort"})
+		if err != nil {
+			return
+		}
 	} else if isAdd == 2 {
 		if item.TerminalCode == `` && terminalCode != `` {
 			item.TerminalCode = terminalCode
-			item.Update([]string{"TerminalCode"})
+			err = item.Update([]string{"TerminalCode"})
+			if err != nil {
+				return
+			}
 		}
 
 		//获取已存在的所有数据
@@ -151,9 +216,13 @@ func HandleYongyiIndex(req models.HandleYongyiExcelDataReq) (err error) {
 		baseObj := new(models.BaseFromYongyi)
 		var edbInfo *models.EdbInfo
 		edbInfo, err = models.GetEdbInfoByEdbCode(baseObj.GetSource(), indexCode)
-		if err != nil && err.Error() != utils.ErrNoRow() {
-			errMsgList = append(errMsgList, fmt.Sprint("刷新ETA指标异常,指标编码:", indexCode, err.Error()))
-			return
+		if err != nil {
+			if err.Error() != utils.ErrNoRow() {
+				errMsgList = append(errMsgList, fmt.Sprint("刷新ETA指标异常,指标编码:", indexCode, err.Error()))
+				return
+			} else {
+				err = nil
+			}
 		}
 
 		// 已经加入到指标库的话,那么就去更新ETA指标库吧