Prechádzať zdrojové kódy

fix:修改上海有色excel入库逻辑

zqbao 7 mesiacov pred
rodič
commit
97845b693a
2 zmenil súbory, kde vykonal 80 pridanie a 5 odobranie
  1. 53 5
      controllers/shanghai_smm.go
  2. 27 0
      models/base_from_smm.go

+ 53 - 5
controllers/shanghai_smm.go

@@ -216,6 +216,9 @@ func (this *ShanghaiSmmController) RefreshExcel() {
 	}
 	updateIndexList := make([]*models.BaseFromSmmIndex, 0)
 	addDataList := make([]*models.BaseFromSmmData, 0)
+	updateDataList := make([]*models.BaseFromSmmData, 0)
+
+	queryIndexIds := make([]int, 0)
 	for _, v := range req {
 		indexCode := strings.Replace(v.IndexCode, " ", "", -1)
 		indexInfo := ShanghaiSmmCodeToIndexMap[indexCode]
@@ -228,6 +231,29 @@ func (this *ShanghaiSmmController) RefreshExcel() {
 			fmt.Printf("指标名称或指标id有误v.IndexName:%s, v.IndexCode:%s", v.IndexName, v.IndexCode)
 			return
 		}
+		queryIndexIds = append(queryIndexIds, int(indexInfo.BaseFromSmmIndexId))
+	}
+	list, err := models.GetBaseFromSmmDataByIds(queryIndexIds)
+	if err != nil {
+		br.Msg = "查询指标数据失败"
+		br.ErrMsg = "查询指标数据失败,Err:" + err.Error()
+		return
+	}
+	dateDataMap := make(map[int]map[string]string)
+	for _, v := range list {
+		dataMap, ok := dateDataMap[v.BaseFromSmmIndexId]
+		if ok {
+			dataMap[v.DataTime] = v.Value
+		} else {
+			dateDataMap[v.BaseFromSmmIndexId] = map[string]string{
+				v.DataTime: v.Value,
+			}
+		}
+	}
+	for _, v := range req {
+		indexCode := strings.Replace(v.IndexCode, " ", "", -1)
+		indexInfo := ShanghaiSmmCodeToIndexMap[indexCode]
+
 		isAdd := false
 		indexItem := new(models.BaseFromSmmIndex)
 		indexItem.BaseFromSmmIndexId = indexInfo.BaseFromSmmIndexId
@@ -245,21 +271,33 @@ func (this *ShanghaiSmmController) RefreshExcel() {
 		} else {
 			indexItem.StartDate = indexInfo.StartDate
 		}
-		// 如果指标index有更新,那么需要添加指标数据
 		if isAdd {
 			indexItem.IndexName = v.IndexName
 			indexItem.ModifyTime = time.Now()
 			updateIndexList = append(updateIndexList, indexItem)
-			for k, dv := range v.Data {
+		}
+		for k, dv := range v.Data {
+			valueStr := strconv.FormatFloat(dv, 'f', -1, 64)
+			valueRaw := dateDataMap[int(indexInfo.BaseFromSmmIndexId)][k]
+			if valueRaw == "" {
 				dataItem := new(models.BaseFromSmmData)
 				dataItem.BaseFromSmmIndexId = int(indexInfo.BaseFromSmmIndexId)
 				dataItem.IndexCode = indexInfo.IndexCode
 				dataItem.DataTime = k
-				dataItem.Value = strconv.FormatFloat(dv, 'f', -1, 64)
+				dataItem.Value = valueStr
 				dataItem.CreateTime = time.Now()
 				dataItem.ModifyTime = time.Now()
 				dataItem.DataTimestamp = time.Now().UnixMilli()
 				addDataList = append(addDataList, dataItem)
+			} else if valueStr != "" && valueRaw != valueStr {
+				dataItem := new(models.BaseFromSmmData)
+				dataItem.BaseFromSmmIndexId = int(indexInfo.BaseFromSmmIndexId)
+				dataItem.IndexCode = indexInfo.IndexCode
+				dataItem.DataTime = k
+				dataItem.Value = valueStr
+				dataItem.ModifyTime = time.Now()
+				dataItem.DataTimestamp = time.Now().UnixMilli()
+				updateDataList = append(updateDataList, dataItem)
 			}
 		}
 	}
@@ -275,12 +313,22 @@ func (this *ShanghaiSmmController) RefreshExcel() {
 		for _, v := range updateIndexList {
 			err = v.UpdateCols([]string{"end_date", "start_date", "modify_time"})
 			if err != nil {
-				br.Msg = "更新指标数据失败"
-				br.ErrMsg = "更新指标失败,Err:" + err.Error()
+				br.Msg = "更新指标索引失败"
+				br.ErrMsg = "更新指标索引失败,Err:" + err.Error()
 				return
 			}
 		}
 	}
+	// 不修改
+	fmt.Println(len(updateDataList))
+	// if len(updateDataList) > 0 {
+	// 	err = models.UpdateBaseFromSmmDataListByIndexCode(updateDataList)
+	// 	if err != nil {
+	// 		br.Msg = "更新指标数据失败"
+	// 		br.ErrMsg = "更新指标失败,Err:" + err.Error()
+	// 		return
+	// 	}
+	// }
 	br.Ret = 200
 	br.Success = true
 	br.Msg = "数据刷新成功"

+ 27 - 0
models/base_from_smm.go

@@ -37,6 +37,33 @@ func GetBaseFromSmmDataByCondition(condition string, pars []interface{}) (list [
 	return
 }
 
+func UpdateBaseFromSmmDataListByIndexCode(items []*BaseFromSmmData) (err error) {
+	o := orm.NewOrm()
+	sql := `UPDATE base_from_smm_data SET value=? WHERE index_code=? AND data_time=? `
+	stmt, err := o.Raw(sql).Prepare()
+	if err != nil {
+		return
+	}
+	defer stmt.Close()
+	for _, item := range items {
+		_, err = stmt.Exec(item.Value, item.IndexCode, item.DataTime)
+		if err != nil {
+			return
+		}
+	}
+	return
+}
+
+func GetBaseFromSmmDataByIds(smmDataIds []int) (list []*BaseFromSmmData, err error) {
+	if len(smmDataIds) == 0 {
+		return
+	}
+	o := orm.NewOrm()
+	sql := `SELECT * FROM base_from_smm_data WHERE 1=1 AND base_from_smm_index_id in (` + utils.GetOrmInReplace(len(smmDataIds)) + `)`
+	_, err = o.Raw(sql, smmDataIds).QueryRows(&list)
+	return
+}
+
 // 新增有色指标数据
 func AddEdbDataFromSmm(edbCode string, smmBaseDataAll []*BaseFromSmmData) (err error) {
 	o := orm.NewOrm()