Browse Source

Merge branch 'bzq1/execl-edit' of eta_server/eta_api into eta/2.0.0

鲍自强 10 months ago
parent
commit
76298794c8
6 changed files with 434 additions and 970 deletions
  1. 415 738
      controllers/target.go
  2. 1 4
      models/data_manage/excel_style.go
  3. 0 1
      models/db.go
  4. 18 148
      models/target.go
  5. 0 78
      services/data/edb_info.go
  6. 0 1
      utils/constants.go

+ 415 - 738
controllers/target.go

@@ -27,6 +27,7 @@ import (
 	"time"
 	"time"
 
 
 	"github.com/rdlucklib/rdluck_tools/paging"
 	"github.com/rdlucklib/rdluck_tools/paging"
+	"github.com/shopspring/decimal"
 	"github.com/tealeg/xlsx"
 	"github.com/tealeg/xlsx"
 )
 )
 
 
@@ -2074,7 +2075,7 @@ func (this *TargetController) TargetItemList() {
 	classifyId, _ := this.GetInt("ClassifyId")
 	classifyId, _ := this.GetInt("ClassifyId")
 	edbShowType, _ := this.GetInt("EdbShowType")
 	edbShowType, _ := this.GetInt("EdbShowType")
 
 
-	list, err := models.GetTargetItemListSort(classifyId, edbShowType, frequency, keyword, tradeCode, classifyIdStrList)
+	list, err := models.GetTargetItemList(classifyId, edbShowType, frequency, keyword, tradeCode, classifyIdStrList)
 	if err != nil {
 	if err != nil {
 		br.ErrMsg = "获取失败,Err:" + err.Error()
 		br.ErrMsg = "获取失败,Err:" + err.Error()
 		br.Msg = "获取失败"
 		br.Msg = "获取失败"
@@ -2923,514 +2924,6 @@ func (this *TargetController) ImportTargetFailListDownload() {
 	this.Ctx.Output.Download(savePath, "失败列表.xlsx")
 	this.Ctx.Output.Download(savePath, "失败列表.xlsx")
 }
 }
 
 
-// ExcelDataAdd
-// @Title 复制EXCEL数据保存
-// @Description 复制EXCEL数据保存
-// @Param  request	body models.ExcelStyleReq true "type json string"
-// @Success 200
-//// @router /target/excel_style/add [post]
-// func (this *TargetController) ExcelDataAdd() {
-// 	br := new(models.BaseResponse).Init()
-// 	var err error
-// 	errs := make([]string, 0)
-// 	defer func() {
-// 		if len(errs) > 0 {
-// 			go alarm_msg.SendAlarmMsg("新增复制EXCEL数据 新增或修改数据失败,Err:"+strings.Join(errs, ","), 3)
-// 		}
-// 		this.Data["json"] = br
-// 		this.ServeJSON()
-// 	}()
-
-// 	sysUser := this.SysUser
-// 	if sysUser == nil {
-// 		br.Msg = "请重新登录"
-// 		return
-// 	}
-
-// 	//频度
-// 	//frequency := this.GetString("Frequency")
-// 	//
-// 	//关键字
-// 	//keyword := this.GetString("Keyword")
-// 	//指标编码
-// 	//tradeCode := this.GetString("TradeCode")
-// 	//
-// 	//userId := sysUser.AdminId
-// 	//超管账号可以查看分类下的所有频度数据
-// 	//if sysUser.RoleTypeCode == utils.ROLE_TYPE_CODE_ADMIN {
-// 	//	userId = 0
-// 	//}
-// 	//
-// 	//list, err := models.GetExcelData()
-// 	//if err != nil {
-// 	//	br.ErrMsg = "获取失败,Err:" + err.Error()
-// 	//	br.Msg = "获取失败"
-// 	//	return
-// 	//}
-
-// 	var req data_manage.ExcelStyleReq
-// 	err = json.Unmarshal(this.Ctx.Input.RequestBody, &req)
-// 	if err != nil {
-// 		br.Msg = "参数解析异常!"
-// 		br.ErrMsg = "参数解析失败,Err:" + err.Error()
-// 		return
-// 	}
-// 	//指标map
-// 	targetMap := make(map[string]*models.Edbinfo)
-// 	var cellDataList []map[string]interface{}
-// 	var dataList [][]map[string]interface{}
-// 	//var configList []map[string]interface{}
-// 	for _, item := range req.CellData {
-// 		v := item.(map[string]interface{})
-// 		cellDataList = append(cellDataList, v)
-// 	}
-
-// 	valueIndex := 0
-
-// 	var secNameList []string
-// 	var frequencyList []string
-// 	var unitList []string
-
-// 	var dateList []string
-// 	dateValueMap := make(map[string]map[int]string)
-// 	//取到所有数据
-// 	for i := range req.Data {
-// 		//取到一行
-// 		if i > 4 {
-// 			//先拿下日期列表
-// 			if req.Data[i] == nil || req.Data[i][0] == nil {
-// 				continue
-// 			}
-// 			//fmt.Println("i:", i)
-// 			//fmt.Println(req.Data[i])
-// 			//fmt.Println(req.Data[i][0])
-// 			dateMap := req.Data[i][0].(map[string]interface{})
-// 			_, ok := dateMap["m"]
-// 			if ok {
-// 				dateList = append(dateList, dateMap["m"].(string))
-// 				//fmt.Println("dateList:", dateList)
-// 			} else {
-// 				continue
-// 			}
-// 		}
-// 		for j, dataArr := range req.Data[i] {
-// 			//每一列
-// 			if dataArr == nil {
-// 				continue
-// 			}
-// 			dataMap := dataArr.(map[string]interface{})
-// 			if dataList == nil {
-// 				dataList = make([][]map[string]interface{}, len(req.Data))
-// 			}
-// 			if dataList[i] == nil {
-// 				dataList[i] = make([]map[string]interface{}, len(req.Data[i]))
-// 			}
-// 			dataList[i][j] = dataMap
-// 			//fmt.Println("dataMap", dataMap["m"])
-// 			v, _ := dataMap["m"]
-// 			//指标名称列表
-// 			if v == "指标名称" {
-// 				for nameIndex := 1; nameIndex < len(req.Data[i]); nameIndex++ {
-// 					if req.Data[i][nameIndex] == nil {
-// 						break
-// 					}
-// 					secNameMap := req.Data[i][nameIndex].(map[string]interface{})
-// 					secName, _ := secNameMap["m"]
-// 					if secName == nil {
-// 						continue
-// 					}
-// 					secNameList = append(secNameList, secNameMap["m"].(string))
-// 					//fmt.Println("secName:", secNameList)
-// 				}
-// 			}
-// 			//频度列表
-// 			if v == "频度" {
-// 				for nameIndex := 1; nameIndex < len(req.Data[i]); nameIndex++ {
-// 					if req.Data[i][nameIndex] == nil {
-// 						break
-// 					}
-// 					frequencyMap := req.Data[i][nameIndex].(map[string]interface{})
-// 					frequency, _ := frequencyMap["m"]
-// 					if frequency == nil {
-// 						continue
-// 					}
-// 					frequencyList = append(frequencyList, frequencyMap["m"].(string))
-// 					//fmt.Println("frequencyList:", frequencyList)
-// 				}
-// 			}
-// 			//单位列表
-// 			if v == "单位" {
-// 				for nameIndex := 1; nameIndex < len(req.Data[i]); nameIndex++ {
-// 					if req.Data[i][nameIndex] == nil {
-// 						break
-// 					}
-// 					unitMap := req.Data[i][nameIndex].(map[string]interface{})
-// 					unit, _ := unitMap["m"]
-// 					if unit == nil {
-// 						continue
-// 					}
-// 					unitList = append(unitList, unitMap["m"].(string))
-// 					//fmt.Println("unitList:", unitList)
-// 				}
-// 			}
-// 			//数据列表
-// 			//var valueList []string
-// 			valueListMap := make(map[int]string)
-// 			if i > 4 {
-// 				for index := 1; index < len(req.Data[i]); index++ {
-// 					if req.Data[i][index] == nil {
-// 						continue
-// 					}
-// 					valueMap := req.Data[i][index].(map[string]interface{})
-// 					value, _ := valueMap["m"]
-// 					if value == nil {
-// 						continue
-// 					}
-// 					valueListMap[index] = valueMap["m"].(string)
-
-// 					// 09-27 千位分隔符时用 "m" 取字符串存数据库会把逗号当小数点,现在换用 "v" 直接取数字再转为字符串,看看会不会有问题
-// 					if ct, ok := valueMap["ct"].(map[string]interface{}); ok {
-// 						fa, _ := ct["fa"]
-// 						if fa == "#,##0.000" {
-// 							value = valueMap["v"]
-// 							floatValue := valueMap["v"].(float64)
-// 							valueListMap[index] = strconv.FormatFloat(floatValue, 'f', -1, 64)
-// 						}
-// 					}
-
-// 					//valueList = append(valueList, valueMap["m"].(string))
-// 					//fmt.Println("valueList:", valueList)
-// 				}
-// 				dateMap := req.Data[i][0].(map[string]interface{})
-// 				date := dateMap["m"].(string)
-// 				dateValueMap[date] = valueListMap
-// 			}
-// 		}
-
-// 		//firstCell := req.Data[i][0]
-// 		//if firstCell == nil {
-// 		//	continue
-// 		//}
-// 		//dataMap := firstCell.(map[string]interface{})
-// 		//if dataList == nil {
-// 		//	dataList = make([][]map[string]interface{}, len(req.Data[i]))
-// 		//}
-// 		//if dataList[i] == nil {
-// 		//	dataList[i] = make([]map[string]interface{}, len(req.Data[i]))
-// 		//}
-// 		//dataList[i][0] = dataMap
-// 		//fmt.Println("dataMap", dataMap["m"])
-// 		//v, _ := dataMap["m"]
-// 		////指标名称
-// 		//if v == "指标名称" {
-// 		//	secNameMap := req.Data[i][1].(map[string]interface{})
-// 		//	secName = secNameMap["m"].(string)
-// 		//	fmt.Println("secName:", secName)
-// 		//}
-// 		////频度
-// 		//if v == "频度" {
-// 		//	frequencyMap := req.Data[i][1].(map[string]interface{})
-// 		//	frequency = frequencyMap["m"].(string)
-// 		//	fmt.Println("frequency:", frequency)
-// 		//}
-// 		////单位
-// 		//if v == "单位" {
-// 		//	unitMap := req.Data[i][1].(map[string]interface{})
-// 		//	unit = unitMap["m"].(string)
-// 		//	fmt.Println("unit:", unit)
-// 		//}
-// 		//
-// 		////日期
-// 		//dateMap := req.Data[i][1].(map[string]interface{})
-// 		//createDate = dateMap["m"].(string)
-// 		//
-// 		////值
-// 		//valueMap := req.Data[i][valueIndex].(map[string]interface{})
-// 		//closeVal = valueMap["m"].(string)
-
-// 		//新增指标
-// 		//errMsg := services.AddEdbItem(secName, unit, frequency, req.ClassifyId, sysUser)
-// 		//if errMsg == "" {
-// 		//	br.Msg = "新增指标异常!"
-// 		//	br.ErrMsg = errMsg
-// 		//	return
-// 		//}
-
-// 		valueIndex++
-// 	}
-
-// 	//var excelId int64
-// 	//保存EXCEL样式
-// 	//{
-// 	//	cellData, err := json.Marshal(cellDataList)
-// 	//	if err != nil {
-// 	//		br.Msg = "参数解析异常!"
-// 	//		br.ErrMsg = "参数解析失败,Err:" + err.Error()
-// 	//		return
-// 	//	}
-// 	//	config, err := json.Marshal(req.Config)
-// 	//	if err != nil {
-// 	//		br.Msg = "参数解析异常!"
-// 	//		br.ErrMsg = "参数解析失败,Err:" + err.Error()
-// 	//		return
-// 	//	}
-// 	//	datas, err := json.Marshal(dataList)
-// 	//	if err != nil {
-// 	//		br.Msg = "参数解析异常!"
-// 	//		br.ErrMsg = "参数解析失败,Err:" + err.Error()
-// 	//		return
-// 	//	}
-// 	//	excelItem := data_manage.ExcelStyle{
-// 	//		CellData: string(cellData),
-// 	//		Config:   string(config),
-// 	//		Data:     string(datas),
-// 	//	}
-// 	//	excelId, err = models.AddExcelData(&excelItem)
-// 	//	if err != nil {
-// 	//		br.ErrMsg = "获取失败,Err:" + err.Error()
-// 	//		br.Msg = "获取失败"
-// 	//		return
-// 	//	}
-// 	//
-// 	//	//判断映射表是否已经存在
-// 	//	count, err := data_manage.GetExcelEdbdataMappingCount(req.ClassifyId, target.TradeCode, frequency)
-// 	//	if err != nil {
-// 	//		br.ErrMsg = "GetExcelEdbdataMappingCount,Err:" + err.Error()
-// 	//		br.Msg = "新增映射表失败"
-// 	//		return
-// 	//	}
-// 	//	mappingItem := data_manage.ExcelEdbdataMapping{
-// 	//		ExcelId:    excelId,
-// 	//		ClassifyId: req.ClassifyId,
-// 	//		Frequency:  frequency,
-// 	//		TradeCode:  target.TradeCode,
-// 	//		CreateTime: time.Now(),
-// 	//	}
-// 	//	if count == 0{
-// 	//		//新增
-// 	//		err := data_manage.AddExcelEdbdataMapping(&mappingItem)
-// 	//		if err != nil {
-// 	//			br.ErrMsg = "AddExcelEdbdataMapping,Err:" + err.Error()
-// 	//			br.Msg = "新增映射表失败"
-// 	//			return
-// 	//		}
-// 	//	}
-// 	//}
-
-// 	// 所有的指标数据map
-// 	edbCodeDataMap := make(map[string]map[string]string)
-
-// 	//操作指标,新增指标及数据等
-// 	{
-// 		for i := 0; i < len(secNameList); i++ {
-// 			//fmt.Println("len(secNameList):", len(secNameList))
-// 			secName := secNameList[i]
-// 			frequency := frequencyList[i]
-
-// 			//防止填了指标名称后没填单位报错
-// 			if len(unitList) < len(secNameList) {
-// 				br.Msg = "单位填写异常!"
-// 				br.ErrMsg = "单位填写异常!"
-// 				return
-// 			}
-// 			unit := unitList[i]
-
-// 			for j, s := range dateList {
-// 				var closeVal string
-// 				//valueList, ok := dateValueMap[s]
-// 				valueMap, ok := dateValueMap[s]
-// 				//fmt.Println("valueMap:", valueMap)
-// 				if ok {
-// 					createDate := dateList[j]
-// 					//if i < len(valueList) {
-// 					//	closeVal = valueList[i]
-// 					//} else {
-// 					//	continue
-// 					//}
-// 					closeVal, ok = valueMap[i+1]
-// 					target, ok2 := targetMap[secName]
-// 					if !ok2 {
-// 						tmpTarget, err := models.GetTargetBySecName(secName)
-// 						if err != nil {
-// 							//如果是找不到该指标,那么新增指标
-// 							if err.Error() == utils.ErrNoRow() {
-// 								//if frequency == "" {
-// 								//	failItem := new(models.EdbdataImportFail)
-// 								//	failItem.SysUserId = strconv.Itoa(sysUser.AdminId)
-// 								//	failItem.ClassifyName = classifyName
-// 								//	failItem.CreateDate = createDate
-// 								//	failItem.SecName = secName
-// 								//	failItem.Close = closeVal
-// 								//	failItem.Remark = "新增指标失败,频度字段为空"
-// 								//	failItem.Frequency = frequency
-// 								//	failItem.Unit = unit
-// 								//	failDatas = append(failDatas, failItem)
-// 								//	continue
-// 								//}
-// 								//if unit == "" {
-// 								//	failItem := new(models.EdbdataImportFail)
-// 								//	failItem.SysUserId = strconv.Itoa(sysUser.AdminId)
-// 								//	failItem.ClassifyName = classifyName
-// 								//	failItem.CreateDate = createDate
-// 								//	failItem.SecName = secName
-// 								//	failItem.Close = closeVal
-// 								//	failItem.Remark = "新增指标失败,单位字段为空"
-// 								//	failItem.Frequency = frequency
-// 								//	failItem.Unit = unit
-// 								//	failDatas = append(failDatas, failItem)
-// 								//	continue
-// 								//}
-
-// 								tmpErr := data.AddEdbInfo(secName, unit, frequency, "", sysUser.Mobile, req.ClassifyId, sysUser.AdminId)
-// 								if tmpErr != nil {
-// 									//fmt.Println("AddEdbInfo err:", err.Error())
-// 									utils.FileLogData.Error("AddEdbInfo err :%s", tmpErr.Error())
-// 									continue
-// 								}
-// 								tmpTarget, tmpErr := models.GetTargetBySecName(secName)
-// 								target = tmpTarget
-// 								targetMap[secName] = target
-// 							} else {
-// 								fmt.Println("导入数据 获取指标:Err:" + err.Error())
-// 							}
-// 						} else {
-// 							target = tmpTarget
-// 							targetMap[secName] = target
-// 						}
-// 					}
-// 					// 判断指标的顺序是否发生改变
-// 					if targetMap[secName].Sort != i {
-// 						edbinfo := models.Edbinfo{TradeCode: target.TradeCode, Sort: i}
-// 						er := edbinfo.Update([]string{"sort"})
-// 						if er != nil {
-// 							fmt.Println("sort update err:", er.Error())
-// 						}
-// 					}
-
-// 					//判断指标数据是否已经存在
-// 					tmpDataMap, ok2 := edbCodeDataMap[target.TradeCode]
-// 					if !ok2 {
-// 						tmpDataMap = make(map[string]string)
-// 						targetDataList, tmpErr := models.GetTargetsDataList(target.TradeCode)
-// 						if tmpErr != nil {
-// 							err = tmpErr
-// 						}
-// 						for _, tmpData := range targetDataList {
-// 							tmpDataMap[tmpData.Dt] = tmpData.Close
-// 						}
-// 						edbCodeDataMap[target.TradeCode] = tmpDataMap
-// 					}
-
-// 					//判断数据是否已经存在
-// 					tmpVal, ok3 := tmpDataMap[createDate]
-// 					//数据已存在,进行更新操作
-// 					if ok3 {
-// 						if closeVal != "" {
-// 							// 库里面的数据
-// 							tmpValDecimal, tmpErr := decimal.NewFromString(tmpVal)
-// 							if tmpErr != nil {
-// 								fmt.Println("tmpVal Parse err:", tmpErr.Error())
-// 								err = tmpErr
-// 								continue
-// 							}
-// 							// 用户填写的数据
-// 							closeValDecimal, tmpErr := decimal.NewFromString(closeVal)
-// 							if tmpErr != nil {
-// 								fmt.Println("closeVal Parse err:", tmpErr.Error())
-// 								err = tmpErr
-// 								continue
-// 							}
-// 							if !tmpValDecimal.Equal(closeValDecimal) {
-// 								fmt.Println("更新数值")
-// 								err = models.ModifyTargetsDataByImport(target.TradeCode, createDate, closeVal)
-// 								if err != nil {
-// 									fmt.Println("ModifyTargetsDataByImport err:", err.Error())
-// 									errs = append(errs, err.Error())
-// 									//go utils.SendEmail(utils.APPNAME+"失败提醒", "导入数据 修改数据失败:Err:"+err.Error(), utils.EmailSendToUsers)
-// 								}
-// 							}
-// 						} else {
-// 							fmt.Println("删除数值")
-// 							err = models.DeleteTargetsDataByImport(target.TradeCode, createDate)
-// 							if err != nil {
-// 								fmt.Println("DeleteTargetsDataByImport err:", err.Error())
-// 								errs = append(errs, err.Error())
-// 								//go utils.SendEmail(utils.APPNAME+"失败提醒", "导入数据 修改数据失败:Err:"+err.Error(), utils.EmailSendToUsers)
-// 							}
-// 						}
-
-// 						if frequency != target.Frequency || unit != target.Unit || req.ClassifyId != target.ClassifyId {
-// 							fmt.Println("更新指标频度或单位")
-// 							err = models.ModifyEdbinfo(target.TradeCode, unit, frequency, req.ClassifyId)
-// 							if err != nil {
-// 								fmt.Println("EditEdbinfo err:", err.Error())
-// 								return
-// 							}
-// 						}
-// 					} else { //数据不存在,进行新增操作
-// 						if target.TradeCode != "" && createDate != "" && closeVal != "" {
-// 							fmt.Println("新增")
-// 							models.AddTargetsDataByImport(target.TradeCode, createDate, closeVal)
-// 							if err != nil {
-// 								fmt.Println("AddTargetsDataByImport err:", err.Error())
-// 								errs = append(errs, err.Error())
-// 								//go utils.SendEmail(utils.APPNAME+"失败提醒", "导入数据 新增数据失败:Err:"+err.Error(), utils.EmailSendToUsers)
-// 							}
-
-// 							tmpDataMap[createDate] = closeVal
-// 							edbCodeDataMap[target.TradeCode] = tmpDataMap
-// 						}
-// 					}
-
-// 					//保存关联表
-// 					//{
-// 					//	//判断映射表是否已经存在
-// 					//	count, err := data_manage.GetExcelEdbdataMappingCount(req.ClassifyId, target.TradeCode, frequency)
-// 					//	if err != nil {
-// 					//		br.ErrMsg = "GetExcelEdbdataMappingCount,Err:" + err.Error()
-// 					//		br.Msg = "新增映射表失败"
-// 					//		return
-// 					//	}
-// 					//	mappingItem := data_manage.ExcelEdbdataMapping{
-// 					//		ExcelId:    excelId,
-// 					//		ClassifyId: req.ClassifyId,
-// 					//		Frequency:  frequency,
-// 					//		TradeCode:  target.TradeCode,
-// 					//		CreateTime: time.Now(),
-// 					//	}
-// 					//	if count == 0{
-// 					//		//新增
-// 					//		err := data_manage.AddExcelEdbdataMapping(&mappingItem)
-// 					//		if err != nil {
-// 					//			br.ErrMsg = "AddExcelEdbdataMapping,Err:" + err.Error()
-// 					//			br.Msg = "新增映射表失败"
-// 					//			return
-// 					//		}
-// 					//	}
-// 					//}
-// 				}
-// 			}
-// 		}
-
-// 		list, err := models.GetTargetItemList(req.ClassifyId, 1, req.Frequency, "", "", []string{})
-// 		if err != nil {
-// 			br.ErrMsg = "获取失败,Err:" + err.Error()
-// 			br.Msg = "获取失败"
-// 			return
-// 		}
-// 		fmt.Println(list)
-// 	}
-
-// 	//resp := models.TargetItemListResp{
-// 	//	List: list,
-// 	//}
-// 	br.Ret = 200
-// 	br.Success = true
-// 	br.Msg = "获取成功"
-// 	//br.Data = resp
-// 	//br.Data = list
-// }
-
 // ExcelDataAdd
 // ExcelDataAdd
 // @Title 复制EXCEL数据保存
 // @Title 复制EXCEL数据保存
 // @Description 复制EXCEL数据保存
 // @Description 复制EXCEL数据保存
@@ -3455,6 +2948,27 @@ func (this *TargetController) ExcelDataAdd() {
 		return
 		return
 	}
 	}
 
 
+	//频度
+	//frequency := this.GetString("Frequency")
+	//
+	//关键字
+	//keyword := this.GetString("Keyword")
+	//指标编码
+	//tradeCode := this.GetString("TradeCode")
+	//
+	//userId := sysUser.AdminId
+	//超管账号可以查看分类下的所有频度数据
+	//if sysUser.RoleTypeCode == utils.ROLE_TYPE_CODE_ADMIN {
+	//	userId = 0
+	//}
+	//
+	//list, err := models.GetExcelData()
+	//if err != nil {
+	//	br.ErrMsg = "获取失败,Err:" + err.Error()
+	//	br.Msg = "获取失败"
+	//	return
+	//}
+
 	var req data_manage.ExcelStyleReq
 	var req data_manage.ExcelStyleReq
 	err = json.Unmarshal(this.Ctx.Input.RequestBody, &req)
 	err = json.Unmarshal(this.Ctx.Input.RequestBody, &req)
 	if err != nil {
 	if err != nil {
@@ -3463,13 +2977,23 @@ func (this *TargetController) ExcelDataAdd() {
 		return
 		return
 	}
 	}
 	//指标map
 	//指标map
+	targetMap := make(map[string]*models.Edbinfo)
+	var cellDataList []map[string]interface{}
 	var dataList [][]map[string]interface{}
 	var dataList [][]map[string]interface{}
+	//var configList []map[string]interface{}
+	for _, item := range req.CellData {
+		v := item.(map[string]interface{})
+		cellDataList = append(cellDataList, v)
+	}
+
+	valueIndex := 0
 
 
 	var secNameList []string
 	var secNameList []string
 	var frequencyList []string
 	var frequencyList []string
 	var unitList []string
 	var unitList []string
 
 
-	secNameToDateMap := make(map[string]map[string]string)
+	var dateList []string
+	dateValueMap := make(map[string]map[int]string)
 	//取到所有数据
 	//取到所有数据
 	for i := range req.Data {
 	for i := range req.Data {
 		//取到一行
 		//取到一行
@@ -3478,265 +3002,418 @@ func (this *TargetController) ExcelDataAdd() {
 			if req.Data[i] == nil || req.Data[i][0] == nil {
 			if req.Data[i] == nil || req.Data[i][0] == nil {
 				continue
 				continue
 			}
 			}
+			//fmt.Println("i:", i)
+			//fmt.Println(req.Data[i])
+			//fmt.Println(req.Data[i][0])
 			dateMap := req.Data[i][0].(map[string]interface{})
 			dateMap := req.Data[i][0].(map[string]interface{})
 			_, ok := dateMap["m"]
 			_, ok := dateMap["m"]
-			date := dateMap["m"].(string)
-			if !ok {
+			if ok {
+				dateList = append(dateList, dateMap["m"].(string))
+				//fmt.Println("dateList:", dateList)
+			} else {
 				continue
 				continue
 			}
 			}
-			// 存储数据
-			for j := 1; j <= len(secNameList); j++ {
-				closeVal := req.Data[i][j].(map[string]interface{})
-				if item, ok := secNameToDateMap[secNameList[j-1]]; ok {
-					tmpVal, ok := closeVal["m"].(string)
-					if !ok || tmpVal == "" {
-						continue
+		}
+		for j, dataArr := range req.Data[i] {
+			//每一列
+			if dataArr == nil {
+				continue
+			}
+			dataMap := dataArr.(map[string]interface{})
+			if dataList == nil {
+				dataList = make([][]map[string]interface{}, len(req.Data))
+			}
+			if dataList[i] == nil {
+				dataList[i] = make([]map[string]interface{}, len(req.Data[i]))
+			}
+			dataList[i][j] = dataMap
+			//fmt.Println("dataMap", dataMap["m"])
+			v, _ := dataMap["m"]
+			//指标名称列表
+			if v == "指标名称" {
+				for nameIndex := 1; nameIndex < len(req.Data[i]); nameIndex++ {
+					if req.Data[i][nameIndex] == nil {
+						break
 					}
 					}
-					item[date] = tmpVal
-				} else {
-					tmpVal, ok := closeVal["m"].(string)
-					if !ok || tmpVal == "" {
+					secNameMap := req.Data[i][nameIndex].(map[string]interface{})
+					secName, _ := secNameMap["m"]
+					if secName == nil {
 						continue
 						continue
 					}
 					}
-					secNameToDateMap[secNameList[j-1]] = map[string]string{
-						date: tmpVal,
-					}
+					secNameList = append(secNameList, secNameMap["m"].(string))
+					//fmt.Println("secName:", secNameList)
 				}
 				}
 			}
 			}
-
-		} else {
-			for j, dataArr := range req.Data[i] {
-				//每一列
-				if dataArr == nil {
-					continue
-				}
-				dataMap := dataArr.(map[string]interface{})
-				if dataList == nil {
-					dataList = make([][]map[string]interface{}, len(req.Data))
-				}
-				if dataList[i] == nil {
-					dataList[i] = make([]map[string]interface{}, len(req.Data[i]))
-				}
-				dataList[i][j] = dataMap
-				//fmt.Println("dataMap", dataMap["m"])
-				v, _ := dataMap["m"]
-				//指标名称列表
-				if v == "指标名称" {
-					for nameIndex := 1; nameIndex < len(req.Data[i]); nameIndex++ {
-						if req.Data[i][nameIndex] == nil {
-							break
-						}
-						secNameMap := req.Data[i][nameIndex].(map[string]interface{})
-						secName, _ := secNameMap["m"]
-						if secName == nil {
-							continue
-						}
-						secNameList = append(secNameList, secNameMap["m"].(string))
-						//fmt.Println("secName:", secNameList)
+			//频度列表
+			if v == "频度" {
+				for nameIndex := 1; nameIndex < len(req.Data[i]); nameIndex++ {
+					if req.Data[i][nameIndex] == nil {
+						break
+					}
+					frequencyMap := req.Data[i][nameIndex].(map[string]interface{})
+					frequency, _ := frequencyMap["m"]
+					if frequency == nil {
+						continue
 					}
 					}
+					frequencyList = append(frequencyList, frequencyMap["m"].(string))
+					//fmt.Println("frequencyList:", frequencyList)
 				}
 				}
-				//频度列表
-				if v == "频度" {
-					for nameIndex := 1; nameIndex < len(req.Data[i]); nameIndex++ {
-						if req.Data[i][nameIndex] == nil {
-							break
-						}
-						frequencyMap := req.Data[i][nameIndex].(map[string]interface{})
-						frequency, _ := frequencyMap["m"]
-						if frequency == nil {
-							continue
-						}
-						frequencyList = append(frequencyList, frequencyMap["m"].(string))
+			}
+			//单位列表
+			if v == "单位" {
+				for nameIndex := 1; nameIndex < len(req.Data[i]); nameIndex++ {
+					if req.Data[i][nameIndex] == nil {
+						break
 					}
 					}
+					unitMap := req.Data[i][nameIndex].(map[string]interface{})
+					unit, _ := unitMap["m"]
+					if unit == nil {
+						continue
+					}
+					unitList = append(unitList, unitMap["m"].(string))
+					//fmt.Println("unitList:", unitList)
 				}
 				}
-				//单位列表
-				if v == "单位" {
-					for nameIndex := 1; nameIndex < len(req.Data[i]); nameIndex++ {
-						if req.Data[i][nameIndex] == nil {
-							break
-						}
-						unitMap := req.Data[i][nameIndex].(map[string]interface{})
-						unit, _ := unitMap["m"]
-						if unit == nil {
-							continue
+			}
+			//数据列表
+			//var valueList []string
+			valueListMap := make(map[int]string)
+			if i > 4 {
+				for index := 1; index < len(req.Data[i]); index++ {
+					if req.Data[i][index] == nil {
+						continue
+					}
+					valueMap := req.Data[i][index].(map[string]interface{})
+					value, _ := valueMap["m"]
+					if value == nil {
+						continue
+					}
+					valueListMap[index] = valueMap["m"].(string)
+
+					// 09-27 千位分隔符时用 "m" 取字符串存数据库会把逗号当小数点,现在换用 "v" 直接取数字再转为字符串,看看会不会有问题
+					if ct, ok := valueMap["ct"].(map[string]interface{}); ok {
+						fa, _ := ct["fa"]
+						if fa == "#,##0.000" {
+							value = valueMap["v"]
+							floatValue := valueMap["v"].(float64)
+							valueListMap[index] = strconv.FormatFloat(floatValue, 'f', -1, 64)
 						}
 						}
-						unitList = append(unitList, unitMap["m"].(string))
 					}
 					}
+
+					//valueList = append(valueList, valueMap["m"].(string))
+					//fmt.Println("valueList:", valueList)
 				}
 				}
+				dateMap := req.Data[i][0].(map[string]interface{})
+				date := dateMap["m"].(string)
+				dateValueMap[date] = valueListMap
 			}
 			}
 		}
 		}
-	}
-
-	// 所有的指标数据map
-	edbCodeInfoMap := make(map[string]*models.EdbInfoItem)
 
 
-	if len(frequencyList) == 0 {
-		br.Ret = 200
-		br.Success = true
-		br.Msg = "保存成功"
-		return
-	}
+		//firstCell := req.Data[i][0]
+		//if firstCell == nil {
+		//	continue
+		//}
+		//dataMap := firstCell.(map[string]interface{})
+		//if dataList == nil {
+		//	dataList = make([][]map[string]interface{}, len(req.Data[i]))
+		//}
+		//if dataList[i] == nil {
+		//	dataList[i] = make([]map[string]interface{}, len(req.Data[i]))
+		//}
+		//dataList[i][0] = dataMap
+		//fmt.Println("dataMap", dataMap["m"])
+		//v, _ := dataMap["m"]
+		////指标名称
+		//if v == "指标名称" {
+		//	secNameMap := req.Data[i][1].(map[string]interface{})
+		//	secName = secNameMap["m"].(string)
+		//	fmt.Println("secName:", secName)
+		//}
+		////频度
+		//if v == "频度" {
+		//	frequencyMap := req.Data[i][1].(map[string]interface{})
+		//	frequency = frequencyMap["m"].(string)
+		//	fmt.Println("frequency:", frequency)
+		//}
+		////单位
+		//if v == "单位" {
+		//	unitMap := req.Data[i][1].(map[string]interface{})
+		//	unit = unitMap["m"].(string)
+		//	fmt.Println("unit:", unit)
+		//}
+		//
+		////日期
+		//dateMap := req.Data[i][1].(map[string]interface{})
+		//createDate = dateMap["m"].(string)
+		//
+		////值
+		//valueMap := req.Data[i][valueIndex].(map[string]interface{})
+		//closeVal = valueMap["m"].(string)
+
+		//新增指标
+		//errMsg := services.AddEdbItem(secName, unit, frequency, req.ClassifyId, sysUser)
+		//if errMsg == "" {
+		//	br.Msg = "新增指标异常!"
+		//	br.ErrMsg = errMsg
+		//	return
+		//}
+
+		valueIndex++
+	}
+
+	//var excelId int64
+	//保存EXCEL样式
+	//{
+	//	cellData, err := json.Marshal(cellDataList)
+	//	if err != nil {
+	//		br.Msg = "参数解析异常!"
+	//		br.ErrMsg = "参数解析失败,Err:" + err.Error()
+	//		return
+	//	}
+	//	config, err := json.Marshal(req.Config)
+	//	if err != nil {
+	//		br.Msg = "参数解析异常!"
+	//		br.ErrMsg = "参数解析失败,Err:" + err.Error()
+	//		return
+	//	}
+	//	datas, err := json.Marshal(dataList)
+	//	if err != nil {
+	//		br.Msg = "参数解析异常!"
+	//		br.ErrMsg = "参数解析失败,Err:" + err.Error()
+	//		return
+	//	}
+	//	excelItem := data_manage.ExcelStyle{
+	//		CellData: string(cellData),
+	//		Config:   string(config),
+	//		Data:     string(datas),
+	//	}
+	//	excelId, err = models.AddExcelData(&excelItem)
+	//	if err != nil {
+	//		br.ErrMsg = "获取失败,Err:" + err.Error()
+	//		br.Msg = "获取失败"
+	//		return
+	//	}
+	//
+	//	//判断映射表是否已经存在
+	//	count, err := data_manage.GetExcelEdbdataMappingCount(req.ClassifyId, target.TradeCode, frequency)
+	//	if err != nil {
+	//		br.ErrMsg = "GetExcelEdbdataMappingCount,Err:" + err.Error()
+	//		br.Msg = "新增映射表失败"
+	//		return
+	//	}
+	//	mappingItem := data_manage.ExcelEdbdataMapping{
+	//		ExcelId:    excelId,
+	//		ClassifyId: req.ClassifyId,
+	//		Frequency:  frequency,
+	//		TradeCode:  target.TradeCode,
+	//		CreateTime: time.Now(),
+	//	}
+	//	if count == 0{
+	//		//新增
+	//		err := data_manage.AddExcelEdbdataMapping(&mappingItem)
+	//		if err != nil {
+	//			br.ErrMsg = "AddExcelEdbdataMapping,Err:" + err.Error()
+	//			br.Msg = "新增映射表失败"
+	//			return
+	//		}
+	//	}
+	//}
 
 
-	userId := sysUser.AdminId
-	//超管账号可以查看分类下的所有频度数据
-	if sysUser.RoleTypeCode == utils.ROLE_TYPE_CODE_ADMIN {
-		userId = 0
-	}
-	//获取账户所拥有权限的分类id集合
-	classifyIdStrList, err := data.GetEdbClassifyListByAdminId(int64(userId))
-	if err != nil {
-		br.Msg = "获取分类数据失败"
-		return
-	}
-	IsVaild := 0
-	for _, classifyId := range classifyIdStrList {
-		if strconv.Itoa(req.ClassifyId) == classifyId {
-			IsVaild += 1
-		}
-		if strconv.Itoa(req.OldClassifyId) == classifyId {
-			IsVaild += 1
-		}
-	}
-	if IsVaild != 2 {
-		br.Msg = "操作权限不足,请检查分类操作权限"
-		br.ErrMsg = "操作权限不足"
-		return
-	}
+	// 所有的指标数据map
+	edbCodeDataMap := make(map[string]map[string]string)
+
+	//操作指标,新增指标及数据等
+	{
+		for i := 0; i < len(secNameList); i++ {
+			//fmt.Println("len(secNameList):", len(secNameList))
+			secName := secNameList[i]
+			frequency := frequencyList[i]
+
+			//防止填了指标名称后没填单位报错
+			if len(unitList) < len(secNameList) {
+				br.Msg = "单位填写异常!"
+				br.ErrMsg = "单位填写异常!"
+				return
+			}
+			unit := unitList[i]
+
+			for j, s := range dateList {
+				var closeVal string
+				//valueList, ok := dateValueMap[s]
+				valueMap, ok := dateValueMap[s]
+				//fmt.Println("valueMap:", valueMap)
+				if ok {
+					createDate := dateList[j]
+					//if i < len(valueList) {
+					//	closeVal = valueList[i]
+					//} else {
+					//	continue
+					//}
+					closeVal, ok = valueMap[i+1]
+					target, ok2 := targetMap[secName]
+					if !ok2 {
+						tmpTarget, err := models.GetTargetBySecName(secName)
+						if err != nil {
+							//如果是找不到该指标,那么新增指标
+							if err.Error() == utils.ErrNoRow() {
+								//if frequency == "" {
+								//	failItem := new(models.EdbdataImportFail)
+								//	failItem.SysUserId = strconv.Itoa(sysUser.AdminId)
+								//	failItem.ClassifyName = classifyName
+								//	failItem.CreateDate = createDate
+								//	failItem.SecName = secName
+								//	failItem.Close = closeVal
+								//	failItem.Remark = "新增指标失败,频度字段为空"
+								//	failItem.Frequency = frequency
+								//	failItem.Unit = unit
+								//	failDatas = append(failDatas, failItem)
+								//	continue
+								//}
+								//if unit == "" {
+								//	failItem := new(models.EdbdataImportFail)
+								//	failItem.SysUserId = strconv.Itoa(sysUser.AdminId)
+								//	failItem.ClassifyName = classifyName
+								//	failItem.CreateDate = createDate
+								//	failItem.SecName = secName
+								//	failItem.Close = closeVal
+								//	failItem.Remark = "新增指标失败,单位字段为空"
+								//	failItem.Frequency = frequency
+								//	failItem.Unit = unit
+								//	failDatas = append(failDatas, failItem)
+								//	continue
+								//}
+
+								tmpErr := data.AddEdbInfo(secName, unit, frequency, "", sysUser.Mobile, req.ClassifyId, sysUser.AdminId)
+								if tmpErr != nil {
+									//fmt.Println("AddEdbInfo err:", err.Error())
+									utils.FileLogData.Error("AddEdbInfo err :%s", tmpErr.Error())
+									continue
+								}
+								tmpTarget, tmpErr := models.GetTargetBySecName(secName)
+								target = tmpTarget
+								targetMap[secName] = target
+							} else {
+								fmt.Println("导入数据 获取指标:Err:" + err.Error())
+							}
+						} else {
+							target = tmpTarget
+							targetMap[secName] = target
+						}
+					}
 
 
-	// 获取当前类所有的有效指标
-	list, err := models.GetTargetItemListSort(req.ClassifyId, 1, req.Frequence, "", "", classifyIdStrList)
-	if err != nil {
-		br.Msg = "获取指标失败"
-		br.ErrMsg = "获取有效指标失败,系统错误,Err:" + err.Error()
-		return
-	}
+					//判断指标数据是否已经存在
+					tmpDataMap, ok2 := edbCodeDataMap[target.TradeCode]
+					if !ok2 {
+						tmpDataMap = make(map[string]string)
+						targetDataList, tmpErr := models.GetTargetsDataList(target.TradeCode)
+						if tmpErr != nil {
+							err = tmpErr
+						}
+						for _, tmpData := range targetDataList {
+							tmpDataMap[tmpData.Dt] = tmpData.Close
+						}
+						edbCodeDataMap[target.TradeCode] = tmpDataMap
+					}
 
 
-	for _, item := range list {
-		edbCodeInfoMap[item.SecName] = item
-	}
-	//历史的类别下的指标
-	oldEdbCodeInfoMap := make(map[string]*models.EdbInfoItem)
-	if req.ClassifyId != req.OldClassifyId || req.Frequence != req.OldFrequence {
-		// 获取历史类所有的有效指标
-		oldList, err := models.GetTargetItemListSort(req.OldClassifyId, 1, req.OldFrequence, "", "", classifyIdStrList)
-		if err != nil {
-			br.Msg = "获取指标失败"
-			br.ErrMsg = "获取有效指标失败,系统错误,Err:" + err.Error()
-			return
-		}
-		for _, item := range oldList {
-			edbCodeInfoMap[item.SecName] = item
-			oldEdbCodeInfoMap[item.SecName] = item
-		}
-	} else {
-		// 如果没有更换指标类别和频度,那就保持一致
-		oldEdbCodeInfoMap = edbCodeInfoMap
-	}
+					//判断数据是否已经存在
+					tmpVal, ok3 := tmpDataMap[createDate]
+					//数据已存在,进行更新操作
+					if ok3 {
+						if closeVal != "" {
+							// 库里面的数据
+							tmpValDecimal, tmpErr := decimal.NewFromString(tmpVal)
+							if tmpErr != nil {
+								fmt.Println("tmpVal Parse err:", tmpErr.Error())
+								err = tmpErr
+								continue
+							}
+							// 用户填写的数据
+							closeValDecimal, tmpErr := decimal.NewFromString(closeVal)
+							if tmpErr != nil {
+								fmt.Println("closeVal Parse err:", tmpErr.Error())
+								err = tmpErr
+								continue
+							}
+							if !tmpValDecimal.Equal(closeValDecimal) {
+								fmt.Println("更新数值")
+								err = models.ModifyTargetsDataByImport(target.TradeCode, createDate, closeVal)
+								if err != nil {
+									fmt.Println("ModifyTargetsDataByImport err:", err.Error())
+									errs = append(errs, err.Error())
+									//go utils.SendEmail(utils.APPNAME+"失败提醒", "导入数据 修改数据失败:Err:"+err.Error(), utils.EmailSendToUsers)
+								}
+							}
+						} else {
+							fmt.Println("删除数值")
+							err = models.DeleteTargetsDataByImport(target.TradeCode, createDate)
+							if err != nil {
+								fmt.Println("DeleteTargetsDataByImport err:", err.Error())
+								errs = append(errs, err.Error())
+								//go utils.SendEmail(utils.APPNAME+"失败提醒", "导入数据 修改数据失败:Err:"+err.Error(), utils.EmailSendToUsers)
+							}
+						}
 
 
-	// 删除历史类别下的指标及数据
-	if req.TradeCode == "" {
-		// TradeCode == "" 表示当前数据不是经过搜索的数据,可以进行删除指标操作
-		deleteTraceCodeList := make([]string, 0)
-		for k, v := range oldEdbCodeInfoMap {
-			if _, ok := secNameToDateMap[k]; !ok {
-				deleteTraceCodeList = append(deleteTraceCodeList, v.TradeCode)
-			}
-		}
-		// 删除指标
-		err = models.DeleteEdbinfoByTraceCodeList(deleteTraceCodeList)
-		if err != nil {
-			br.Msg = "excel保存失败"
-			br.ErrMsg = "指标及指标数据删除失败,Err:" + err.Error()
-			return
-		}
-	}
+						if frequency != target.Frequency || unit != target.Unit || req.ClassifyId != target.ClassifyId {
+							fmt.Println("更新指标频度或单位")
+							err = models.ModifyEdbinfo(target.TradeCode, unit, frequency, req.ClassifyId)
+							if err != nil {
+								fmt.Println("EditEdbinfo err:", err.Error())
+								return
+							}
+						}
+					} else { //数据不存在,进行新增操作
+						if target.TradeCode != "" && createDate != "" && closeVal != "" {
+							fmt.Println("新增")
+							models.AddTargetsDataByImport(target.TradeCode, createDate, closeVal)
+							if err != nil {
+								fmt.Println("AddTargetsDataByImport err:", err.Error())
+								errs = append(errs, err.Error())
+								//go utils.SendEmail(utils.APPNAME+"失败提醒", "导入数据 新增数据失败:Err:"+err.Error(), utils.EmailSendToUsers)
+							}
+
+							tmpDataMap[createDate] = closeVal
+							edbCodeDataMap[target.TradeCode] = tmpDataMap
+						}
+					}
 
 
-	// 获得需要新增的指标
-	addEdbInfoList := make([]*models.Edbinfo, 0)
-	sortEdbInfoList := make([]*models.Edbinfo, 0)
-	for i, v := range secNameList {
-		if item, ok := edbCodeInfoMap[v]; !ok {
-			t := new(models.Edbinfo)
-			t.SecName = v
-			t.Unit = unitList[i]
-			t.Remark = "手动"
-			t.Frequency = frequencyList[i]
-			t.ClassifyId = req.ClassifyId
-			t.UserId = sysUser.AdminId
-			t.Sort = len(list) + i
-			addEdbInfoList = append(addEdbInfoList, t)
-			edbCodeInfoMap[t.SecName] = &models.EdbInfoItem{
-				TradeCode: t.TradeCode,
-				SecName:   t.SecName,
-				Unit:      t.Unit,
-				Frequency: t.Frequency,
-				UserId:    t.UserId,
-			}
-		} else {
-			t := new(models.Edbinfo)
-			t.TradeCode = item.TradeCode
-			if req.Frequence != req.OldFrequence || req.ClassifyId != req.OldClassifyId {
-				t.Sort = len(list) + i
-			} else {
-				if req.TradeCode != "" {
-					// 如果是搜索的指标,那就保存原来的排序
-					t.Sort = item.Sort
-				} else {
-					t.Sort = i
+					//保存关联表
+					//{
+					//	//判断映射表是否已经存在
+					//	count, err := data_manage.GetExcelEdbdataMappingCount(req.ClassifyId, target.TradeCode, frequency)
+					//	if err != nil {
+					//		br.ErrMsg = "GetExcelEdbdataMappingCount,Err:" + err.Error()
+					//		br.Msg = "新增映射表失败"
+					//		return
+					//	}
+					//	mappingItem := data_manage.ExcelEdbdataMapping{
+					//		ExcelId:    excelId,
+					//		ClassifyId: req.ClassifyId,
+					//		Frequency:  frequency,
+					//		TradeCode:  target.TradeCode,
+					//		CreateTime: time.Now(),
+					//	}
+					//	if count == 0{
+					//		//新增
+					//		err := data_manage.AddExcelEdbdataMapping(&mappingItem)
+					//		if err != nil {
+					//			br.ErrMsg = "AddExcelEdbdataMapping,Err:" + err.Error()
+					//			br.Msg = "新增映射表失败"
+					//			return
+					//		}
+					//	}
+					//}
 				}
 				}
 			}
 			}
-			t.Frequency = req.Frequence
-			t.ClassifyId = req.ClassifyId
-			sortEdbInfoList = append(sortEdbInfoList, t)
-		}
-	}
-	// 更新指标频度,分类,顺序
-	for _, v := range sortEdbInfoList {
-		err = v.Update([]string{"frequency", "classify_id", "sort"})
-		if err != nil {
-			br.Msg = "excel保存失败"
-			br.ErrMsg = "excel更新顺序失败,Err:" + err.Error()
-			return
-		}
-	}
-	// 新增指标
-	msg, err := data.MultiAddEdbInfo(addEdbInfoList, sysUser.Mobile)
-	if err != nil {
-		if msg != "" {
-			br.Msg = msg
-		} else {
-			br.Msg = "指标保存失败"
-		}
-		br.ErrMsg = "新增指标失败,系统错误,Err:" + err.Error()
-		return
-	}
-	for _, v := range addEdbInfoList {
-		edbCodeInfoMap[v.SecName].TradeCode = v.TradeCode
-	}
-	// 新增指标数据
-	addEdbDataList := make([]*models.Edbdata, 0)
-	for _, v := range secNameList {
-		// 指标数据
-		for date, closeVal := range secNameToDateMap[v] {
-			t := new(models.Edbdata)
-			// 理论上这里面不应该出现空值
-			t.TradeCode = edbCodeInfoMap[v].TradeCode
-			t.Dt = date
-			t.Close = closeVal
-			t.ModifyTime = time.Now()
-			addEdbDataList = append(addEdbDataList, t)
 		}
 		}
 	}
 	}
-	err = models.MultiAddEdbdata(addEdbDataList)
-	if err != nil {
-		br.Msg = "excel保存失败"
-		br.ErrMsg = "新增指标数据失败,系统错误,Err:" + err.Error()
-		return
-	}
 
 
+	//resp := models.TargetItemListResp{
+	//	List: list,
+	//}
 	br.Ret = 200
 	br.Ret = 200
 	br.Success = true
 	br.Success = true
-	br.Msg = "保存成功"
+	br.Msg = "获取成功"
+	//br.Data = resp
+	//br.Data = list
 }
 }
 
 
 // ExcelDataEdit
 // ExcelDataEdit

+ 1 - 4
models/data_manage/excel_style.go

@@ -31,11 +31,8 @@ type ExcelStyleReq struct {
 	CellData         []interface{}
 	CellData         []interface{}
 	Config           interface{}
 	Config           interface{}
 	Data             [][]interface{}
 	Data             [][]interface{}
-	TradeCode        string `description:"指标编码"`
-	Frequence        string `description:"频度"`
+	Frequency        string `description:"频度"`
 	ClassifyId       int    `description:"分类id"`
 	ClassifyId       int    `description:"分类id"`
-	OldClassifyId    int    `description:"历史分类id"`
-	OldFrequence     string `description:"历史频度"`
 }
 }
 
 
 type CellData struct {
 type CellData struct {

+ 0 - 1
models/db.go

@@ -105,7 +105,6 @@ func init() {
 		new(VarietyTag),                 // 标签表
 		new(VarietyTag),                 // 标签表
 		new(ResearchVarietyTagRelation), // 研究员标签关系表
 		new(ResearchVarietyTagRelation), // 研究员标签关系表
 		new(ReportPptImg),               //Ppt转报告的图片记录表
 		new(ReportPptImg),               //Ppt转报告的图片记录表
-		new(EdbinfoUser),
 	)
 	)
 
 
 	// 系统表 数据表
 	// 系统表 数据表

+ 18 - 148
models/target.go

@@ -72,32 +72,6 @@ type Edbdata struct {
 	ModifyTime time.Time `orm:"column(modify_time)" description:"修改时间"`
 	ModifyTime time.Time `orm:"column(modify_time)" description:"修改时间"`
 }
 }
 
 
-func MultiAddEdbdata(edbDataList []*Edbdata) (err error) {
-	if len(edbDataList) == 0 {
-		return
-	}
-	o := orm.NewOrmUsingDB("edb")
-	err = o.DoTx(func(ctx context.Context, txOrm orm.TxOrmer) error {
-		holder := make([]string, 0)
-		tradeCodeList := make([]string, 0)
-		for _, v := range edbDataList {
-			holder = append(holder, "?")
-			tradeCodeList = append(tradeCodeList, v.TradeCode)
-		}
-		sql := "DELETE FROM edbdata WHERE TRADE_CODE in (" + strings.Join(holder, ",") + ")"
-		_, err := txOrm.Raw(sql, tradeCodeList).Exec()
-		if err != nil {
-			return err
-		}
-		_, err = txOrm.InsertMulti(500, edbDataList)
-		if err != nil {
-			return err
-		}
-		return nil
-	})
-	return
-}
-
 func GetDataInfo(tradeCode, creteDate string) (item *Edbdata, err error) {
 func GetDataInfo(tradeCode, creteDate string) (item *Edbdata, err error) {
 	sql := " SELECT * FROM edbdata WHERE TRADE_CODE=? AND DT=? "
 	sql := " SELECT * FROM edbdata WHERE TRADE_CODE=? AND DT=? "
 	o := orm.NewOrmUsingDB("edb")
 	o := orm.NewOrmUsingDB("edb")
@@ -165,40 +139,25 @@ func DeleteAllEdbData(tradeCode string) (err error) {
 	return
 	return
 }
 }
 
 
-// DeleteAllEdbDataByTradeCodeList 根据指标code删除数据
-func DeleteAllEdbDataByTradeCodeList(tradeCodeList []string) (err error) {
-	if len(tradeCodeList) == 0 {
-		return
-	}
-	o := orm.NewOrmUsingDB("edb")
-	var holder []string
-	for range tradeCodeList {
-		holder = append(holder, "?")
-	}
-	sql := ` DELETE FROM edbdata WHERE TRADE_CODE in (` + strings.Join(holder, ",") + `) `
-	_, err = o.Raw(sql, tradeCodeList).Exec()
-	return
-}
-
 type Edbinfo struct {
 type Edbinfo struct {
-	TradeCode    string `orm:"column(TRADE_CODE);pk" description:"指标code"`
-	SecName      string `orm:"column(SEC_NAME);" description:"指标名称"`
-	Unit         string `orm:"column(UNIT);" description:"单位"`
-	Remark       string `orm:"column(REMARK);" description:"备注"`
-	Frequency    string `orm:"column(frequency)" description:"频度"`
-	ClassifyId   int    `orm:"column(classify_id)" description:"分类id"`
-	ClassifyName string `orm:"-" description:"分类名称"`
-	CreateDate   string `orm:"column(create_date)" description:"创建时间"`
-	UserId       int    `orm:"column(user_id)" description:"录入用户id"`
-	UserName     string `orm:"column(user_name)" description:"录入用户名称"`
-	NoticeTime   string `orm:"column(notice_time)" description:"通知时间"`
-	Mobile       string `orm:"column(mobile)" description:"录入者手机号"`
-	Sort         int    `orm:"column(sort)" description:"排序"`
-	ModifyTime  string  `description:"最近一次更新时间"`
-	IsJoinEdb   int8    `description:"指标库是否已添加:0-否;1-是"`
-	StartDate   string  `description:"数据开始日期"`
-	EndDate     string  `description:"数据结束日期"`
-	LatestValue float64 `description:"指标最新值"`
+	TradeCode    string  `orm:"column(TRADE_CODE);pk" description:"指标code"`
+	SecName      string  `orm:"column(SEC_NAME);" description:"指标名称"`
+	Unit         string  `orm:"column(UNIT);" description:"单位"`
+	Remark       string  `orm:"column(REMARK);" description:"备注"`
+	Frequency    string  `orm:"column(frequency)" description:"频度"`
+	ClassifyId   int     `orm:"column(classify_id)" description:"分类id"`
+	ClassifyName string  `orm:"-" description:"分类名称"`
+	CreateDate   string  `orm:"column(create_date)" description:"创建时间"`
+	UserId       int     `orm:"column(user_id)" description:"录入用户id"`
+	UserName     string  `orm:"column(user_name)" description:"录入用户名称"`
+	NoticeTime   string  `orm:"column(notice_time)" description:"通知时间"`
+	Mobile       string  `orm:"column(mobile)" description:"录入者手机号"`
+	Sort         int     `orm:"column(sort)" description:"排序"`
+	ModifyTime   string  `description:"最近一次更新时间"`
+	IsJoinEdb    int8    `description:"指标库是否已添加:0-否;1-是"`
+	StartDate    string  `description:"数据开始日期"`
+	EndDate      string  `description:"数据结束日期"`
+	LatestValue  float64 `description:"指标最新值"`
 }
 }
 
 
 func DeleteEdbinfoByTraceCodeList(tradeCodeList []string) (err error) {
 func DeleteEdbinfoByTraceCodeList(tradeCodeList []string) (err error) {
@@ -353,24 +312,6 @@ func GetEdbinfoBySecName(secName string) (item *Edbinfo, err error) {
 	return
 	return
 }
 }
 
 
-func GetEdbinfoBySecNameList(secNameList []string) (items []*Edbinfo, err error) {
-	if len(secNameList) == 0 {
-		return
-	}
-	sql := `SELECT * FROM edbinfo WHERE  left(TRADE_CODE,1)='W' AND REMARK='手动' `
-	if len(secNameList) > 0 {
-		var holder []string
-		for range secNameList {
-			holder = append(holder, "?")
-		}
-
-		sql += " AND SEC_NAME IN (" + strings.Join(holder, ",") + ") "
-	}
-	o := orm.NewOrmUsingDB("edb")
-	_, err = o.Raw(sql, secNameList).QueryRows(&items)
-	return
-}
-
 func GetEdbinfoByTradeCode(tradeCode string) (item *Edbinfo, err error) {
 func GetEdbinfoByTradeCode(tradeCode string) (item *Edbinfo, err error) {
 	sql := `SELECT * FROM edbinfo WHERE TRADE_CODE=? `
 	sql := `SELECT * FROM edbinfo WHERE TRADE_CODE=? `
 	o := orm.NewOrmUsingDB("edb")
 	o := orm.NewOrmUsingDB("edb")
@@ -397,13 +338,6 @@ func AddEdbinfo(tradeCode, secName, unit, remark, frequency, noticeTime string,
 		IsJoinEdb:  0,
 		IsJoinEdb:  0,
 	}
 	}
 	_, err = o.Insert(edbInfo)
 	_, err = o.Insert(edbInfo)
-
-	return
-}
-
-func MultiAddEdbinfoV2(edbInfoList []*Edbinfo) (err error) {
-	o := orm.NewOrmUsingDB("edb")
-	_, err = o.InsertMulti(len(edbInfoList), edbInfoList)
 	return
 	return
 }
 }
 
 
@@ -414,18 +348,6 @@ func AddEdbinfoUser(tradeCode, mobile string) (err error) {
 	return
 	return
 }
 }
 
 
-type EdbinfoUser struct {
-	EdbinfoUserId int    `orm:"pk" description:"主键"`
-	TradeCode     string `orm:"column(TRADE_CODE);" description:"指标code"`
-	Mobile        string `orm:"column(mobile);" description:"手机号"`
-}
-
-func MultiAddEdbinfoUser(edbInfoUserList []*EdbinfoUser) (err error) {
-	o := orm.NewOrmUsingDB("edb")
-	_, err = o.InsertMulti(len(edbInfoUserList), edbInfoUserList)
-	return
-}
-
 type EdbinfoEditReq struct {
 type EdbinfoEditReq struct {
 	TradeCode  string `description:"指标code"`
 	TradeCode  string `description:"指标code"`
 	SecName    string `description:"指标名称"`
 	SecName    string `description:"指标名称"`
@@ -1339,7 +1261,6 @@ type EdbInfoItem struct {
 	ModifyDate   string     `description:"待更新日期"`
 	ModifyDate   string     `description:"待更新日期"`
 	ModifyTime   string     `description:"最近一次更新时间"`
 	ModifyTime   string     `description:"最近一次更新时间"`
 	Status       string     `description:"状态:未完成/完成"`
 	Status       string     `description:"状态:未完成/完成"`
-	Sort         int        `description:"排序"`
 	IsJoinEdb    int8       `description:"指标库是否已添加:0-否;1-是"`
 	IsJoinEdb    int8       `description:"指标库是否已添加:0-否;1-是"`
 	StartDate    string     `description:"数据开始日期"`
 	StartDate    string     `description:"数据开始日期"`
 	EndDate      string     `description:"数据结束日期"`
 	EndDate      string     `description:"数据结束日期"`
@@ -1398,57 +1319,6 @@ left join edbdata b on a.TRADE_CODE=b.TRADE_CODE `
 
 
 }
 }
 
 
-// GetTargetItemList 获取指标列表数据
-func GetTargetItemListSort(classifyId, edbShowType int, frequency, keyword, tradeCode string, classifyIdStrList []string) (items []*EdbInfoItem, err error) {
-	o := orm.NewOrmUsingDB("edb")
-
-	pars := make([]interface{}, 0)
-
-	sql := ` SELECT a.*,'' modify_date,'' STATUS FROM edbinfo AS a `
-	if edbShowType != 0 {
-		sql = ` SELECT a.*,b.DT,'' modify_date,'' STATUS FROM edbinfo AS a 
-left join edbdata b on a.TRADE_CODE=b.TRADE_CODE `
-	}
-	sql += ` WHERE LEFT(a.TRADE_CODE,1)='W' AND a.REMARK='手动' AND a.classify_id>0 `
-
-	//如果没有分类id集合列表,那么就没有数据了,不用往下执行了,直接返回好了
-	if len(classifyIdStrList) <= 0 {
-		return
-	}
-	if len(classifyIdStrList) > 0 {
-		sql += ` AND a.classify_id in (` + strings.Join(classifyIdStrList, ",") + `)  `
-	}
-	if classifyId > 0 {
-		sql += ` AND a.classify_id=` + strconv.Itoa(classifyId) + ` `
-	}
-	//频度
-	if frequency != "" {
-		sql += ` AND a.frequency="` + frequency + `" `
-	}
-	//关键字
-	if keyword != "" {
-		sql += ` AND (a.SEC_NAME like ?  or a.TRADE_CODE like ? )`
-		pars = utils.GetLikeKeywordPars(pars, keyword, 2)
-	}
-	//指定指标
-	if tradeCode != "" {
-		sql += ` AND a.TRADE_CODE = "` + tradeCode + `" `
-	}
-	//指标里面是否有数据
-	switch edbShowType {
-	case 1:
-		sql += ` AND b.CLOSE is not null `
-	case 2:
-		sql += ` AND b.CLOSE is null `
-	}
-	sql += ` GROUP BY a.TRADE_CODE `
-
-	sql = sql + ` ORDER BY sort ASC, CONVERT(a.SEC_NAME USING gbk )  COLLATE gbk_chinese_ci ASC `
-	_, err = o.Raw(sql, pars).QueryRows(&items)
-	return
-
-}
-
 // GetLzItemList 模糊查询隆众数据库指标列表
 // GetLzItemList 模糊查询隆众数据库指标列表
 func GetLzItemList(keyword string) (items []*data_manage.LongzhongSurveyProduct, err error) {
 func GetLzItemList(keyword string) (items []*data_manage.LongzhongSurveyProduct, err error) {
 	o := orm.NewOrmUsingDB("edb")
 	o := orm.NewOrmUsingDB("edb")

+ 0 - 78
services/data/edb_info.go

@@ -759,84 +759,6 @@ func AddEdbInfo(secName, unit, frequency, noticeTime, mobile string, classifyId,
 	return
 	return
 }
 }
 
 
-// AddEdbInfo 新增手工指标数据
-func MultiAddEdbInfo(edbInfoList []*models.Edbinfo, mobile string) (msg string, err error) {
-	if len(edbInfoList) == 0 {
-		return
-	}
-	var ok bool
-	for i := 0; i < 10; i++ {
-		// 重试加锁
-		ok = utils.Rc.SetNX(utils.CACHE_KEY_EDBINFO_ADD, 1, time.Second*10)
-		if ok {
-			defer func() {
-				_ = utils.Rc.Delete(utils.CACHE_KEY_EDBINFO_ADD)
-			}()
-			break
-		}
-		time.Sleep(100 * time.Millisecond)
-	}
-	if !ok {
-		msg = "当前指标保存过于频繁,请稍后重试"
-		err = errors.New("当前指标保存过于频繁,请稍后重试")
-		return
-	}
-	tradeCode, err := models.GetMaxTradeCode()
-	if err != nil {
-		return
-	}
-	if tradeCode == "" {
-		err = errors.New("最大编码为空")
-		return
-	}
-	maxTradeCodeList, err := utils.GetTradeCodeList(tradeCode, len(edbInfoList))
-	if err != nil {
-		err = errors.New("获取编码信息失败,Err:" + err.Error())
-		return
-	}
-	if len(maxTradeCodeList) == 0 {
-		err = errors.New("编码为空,请联系技术")
-		return
-	}
-	var secNameList []string
-	for _, v := range edbInfoList {
-		secNameList = append(secNameList, v.SecName)
-	}
-	items, err := models.GetEdbinfoBySecNameList(secNameList)
-	if err != nil && err.Error() != utils.ErrNoRow() {
-		err = errors.New("获取信息失败,Err:" + err.Error())
-		return
-	}
-	if len(items) > 0 {
-		var existName []string
-		for _, edbInfo := range items {
-			existName = append(existName, edbInfo.SecName)
-		}
-		msg = fmt.Sprintf("指标名称已存在:%s", strings.Join(existName, ","))
-		err = errors.New("指标名称已存在")
-		return
-	}
-	// 先删除该指标编码的历史数据(避免上海删除指标时,没有删除该指标数据)
-	_ = models.DeleteAllEdbDataByTradeCodeList(maxTradeCodeList)
-	// 再次新增指标
-	edbInfoUserList := make([]*models.EdbinfoUser, 0)
-	for i, v := range maxTradeCodeList {
-		t := new(models.EdbinfoUser)
-		t.TradeCode = v
-		t.Mobile = mobile
-		edbInfoUserList = append(edbInfoUserList, t)
-
-		edbInfoList[i].TradeCode = v
-	}
-	err = models.MultiAddEdbinfoV2(edbInfoList)
-	if err != nil {
-		err = errors.New("新增失败,Err:" + err.Error())
-		return
-	}
-	err = models.MultiAddEdbinfoUser(edbInfoUserList)
-	return
-}
-
 //全部刷新指标
 //全部刷新指标
 //func EdbInfoRefreshAllFromBase(edbInfoId int) (err error) {
 //func EdbInfoRefreshAllFromBase(edbInfoId int) (err error) {
 //	var errmsg string
 //	var errmsg string

+ 0 - 1
utils/constants.go

@@ -219,7 +219,6 @@ const (
 	CACHE_KEY_DAYNEW_REFRESH          = "admin:day_new:refresh"               //每日资讯拉取企业微信聊天记录
 	CACHE_KEY_DAYNEW_REFRESH          = "admin:day_new:refresh"               //每日资讯拉取企业微信聊天记录
 	CACHE_KEY_DAYNEW_TRANSLATE        = "admin:day_new:translate"             //每日资讯中翻英
 	CACHE_KEY_DAYNEW_TRANSLATE        = "admin:day_new:translate"             //每日资讯中翻英
 	CACHE_KEY_ADMIN_OPERATE_RECORD    = "HZ_ADMIN_CACHE_ADMIN_OPERATE_RECORD" //系统用户操作日志队列
 	CACHE_KEY_ADMIN_OPERATE_RECORD    = "HZ_ADMIN_CACHE_ADMIN_OPERATE_RECORD" //系统用户操作日志队列
-	CACHE_KEY_EDBINFO_ADD             = "eta_api:edbinfo:add"                 //手工指标录入的key
 
 
 	CACHE_SYNC_ADMIN        = "hz_crm_eta:sync_admin"        // 同步用户的缓存队列key
 	CACHE_SYNC_ADMIN        = "hz_crm_eta:sync_admin"        // 同步用户的缓存队列key
 	CACHE_SYNC_ROLE         = "hz_crm_eta:sync_role"         // 同步角色的缓存队列key
 	CACHE_SYNC_ROLE         = "hz_crm_eta:sync_role"         // 同步角色的缓存队列key