|
@@ -3363,514 +3363,6 @@ func (this *TargetController) ImportTargetFailListDownload() {
|
|
|
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
|
|
|
// @Title 复制EXCEL数据保存
|
|
|
// @Description 复制EXCEL数据保存
|
|
@@ -3895,6 +3387,27 @@ func (this *TargetController) ExcelDataAdd() {
|
|
|
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 {
|
|
@@ -3903,13 +3416,23 @@ func (this *TargetController) ExcelDataAdd() {
|
|
|
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
|
|
|
|
|
|
- secNameToDateMap := make(map[string]map[string]string)
|
|
|
+ var dateList []string
|
|
|
+ dateValueMap := make(map[string]map[int]string)
|
|
|
//取到所有数据
|
|
|
for i := range req.Data {
|
|
|
//取到一行
|
|
@@ -3918,262 +3441,739 @@ func (this *TargetController) ExcelDataAdd() {
|
|
|
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"]
|
|
|
- date := dateMap["m"].(string)
|
|
|
- if !ok {
|
|
|
+ if ok {
|
|
|
+ dateList = append(dateList, dateMap["m"].(string))
|
|
|
+ //fmt.Println("dateList:", dateList)
|
|
|
+ } else {
|
|
|
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
|
|
|
}
|
|
|
- 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
|
|
|
}
|
|
|
}
|
|
|
- }
|
|
|
+
|
|
|
+ //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
|
|
|
- edbCodeInfoMap := make(map[string]*models.EdbInfoItem)
|
|
|
+ edbCodeDataMap := make(map[string]map[string]string)
|
|
|
|
|
|
- if len(frequencyList) == 0 {
|
|
|
- br.Ret = 200
|
|
|
- br.Success = true
|
|
|
- br.Msg = "保存成功"
|
|
|
- return
|
|
|
- }
|
|
|
+ //操作指标,新增指标及数据等
|
|
|
+ {
|
|
|
+ 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())
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
- //获取账户所拥有权限的分类id集合
|
|
|
- classifyIdStrList, err := data.GetEdbClassifyListByAdminId(int64(sysUser.AdminId))
|
|
|
- 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
|
|
|
- }
|
|
|
+ //判断指标数据是否已经存在
|
|
|
+ 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
|
|
|
+ }
|
|
|
|
|
|
- // 获取当前类所有的有效指标
|
|
|
- list, err := models.GetTargetItemListSort(req.ClassifyId, 1, req.Frequence, "", "", classifyIdStrList)
|
|
|
- if err != nil {
|
|
|
- br.Msg = "获取指标失败"
|
|
|
- br.ErrMsg = "获取有效指标失败,系统错误,Err:" + err.Error()
|
|
|
- return
|
|
|
- }
|
|
|
+ //判断数据是否已经存在
|
|
|
+ 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)
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
- 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
|
|
|
- }
|
|
|
+ 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)
|
|
|
+ }
|
|
|
|
|
|
- // 删除历史类别下的指标及数据
|
|
|
- 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
|
|
|
- }
|
|
|
- }
|
|
|
+ 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"})
|
|
|
+
|
|
|
+ list, err := models.GetTargetItemList(req.ClassifyId, 1, req.Frequency, "", "", []string{})
|
|
|
if err != nil {
|
|
|
- br.Msg = "excel保存失败"
|
|
|
- br.ErrMsg = "excel更新顺序失败,Err:" + err.Error()
|
|
|
+ br.ErrMsg = "获取失败,Err:" + err.Error()
|
|
|
+ br.Msg = "获取失败"
|
|
|
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
|
|
|
+ fmt.Println(list)
|
|
|
}
|
|
|
|
|
|
+ //resp := models.TargetItemListResp{
|
|
|
+ // List: list,
|
|
|
+ //}
|
|
|
br.Ret = 200
|
|
|
br.Success = true
|
|
|
- br.Msg = "保存成功"
|
|
|
+ br.Msg = "获取成功"
|
|
|
+ //br.Data = resp
|
|
|
+ //br.Data = list
|
|
|
}
|
|
|
|
|
|
+// 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
|
|
|
+// }
|
|
|
+
|
|
|
+// 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
|
|
|
+// var dataList [][]map[string]interface{}
|
|
|
+
|
|
|
+// var secNameList []string
|
|
|
+// var frequencyList []string
|
|
|
+// var unitList []string
|
|
|
+
|
|
|
+// secNameToDateMap := make(map[string]map[string]string)
|
|
|
+// //取到所有数据
|
|
|
+// for i := range req.Data {
|
|
|
+// //取到一行
|
|
|
+// if i > 4 {
|
|
|
+// //先拿下日期列表
|
|
|
+// if req.Data[i] == nil || req.Data[i][0] == nil {
|
|
|
+// continue
|
|
|
+// }
|
|
|
+// dateMap := req.Data[i][0].(map[string]interface{})
|
|
|
+// _, ok := dateMap["m"]
|
|
|
+// date := dateMap["m"].(string)
|
|
|
+// if !ok {
|
|
|
+// 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
|
|
|
+// }
|
|
|
+// item[date] = tmpVal
|
|
|
+// } else {
|
|
|
+// tmpVal, ok := closeVal["m"].(string)
|
|
|
+// if !ok || tmpVal == "" {
|
|
|
+// continue
|
|
|
+// }
|
|
|
+// secNameToDateMap[secNameList[j-1]] = map[string]string{
|
|
|
+// date: tmpVal,
|
|
|
+// }
|
|
|
+// }
|
|
|
+// }
|
|
|
+
|
|
|
+// } 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))
|
|
|
+// }
|
|
|
+// }
|
|
|
+// //单位列表
|
|
|
+// 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))
|
|
|
+// }
|
|
|
+// }
|
|
|
+// }
|
|
|
+// }
|
|
|
+// }
|
|
|
+
|
|
|
+// // 所有的指标数据map
|
|
|
+// edbCodeInfoMap := make(map[string]*models.EdbInfoItem)
|
|
|
+
|
|
|
+// if len(frequencyList) == 0 {
|
|
|
+// br.Ret = 200
|
|
|
+// br.Success = true
|
|
|
+// br.Msg = "保存成功"
|
|
|
+// return
|
|
|
+// }
|
|
|
+
|
|
|
+// //获取账户所拥有权限的分类id集合
|
|
|
+// classifyIdStrList, err := data.GetEdbClassifyListByAdminId(int64(sysUser.AdminId))
|
|
|
+// 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
|
|
|
+// }
|
|
|
+
|
|
|
+// // 获取当前类所有的有效指标
|
|
|
+// list, err := models.GetTargetItemListSort(req.ClassifyId, 1, req.Frequence, "", "", classifyIdStrList)
|
|
|
+// if err != nil {
|
|
|
+// br.Msg = "获取指标失败"
|
|
|
+// br.ErrMsg = "获取有效指标失败,系统错误,Err:" + err.Error()
|
|
|
+// return
|
|
|
+// }
|
|
|
+
|
|
|
+// 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
|
|
|
+// }
|
|
|
+
|
|
|
+// // 删除历史类别下的指标及数据
|
|
|
+// 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
|
|
|
+// }
|
|
|
+// }
|
|
|
+
|
|
|
+// // 获得需要新增的指标
|
|
|
+// 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
|
|
|
+// }
|
|
|
+// }
|
|
|
+// 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
|
|
|
+// }
|
|
|
+
|
|
|
+// br.Ret = 200
|
|
|
+// br.Success = true
|
|
|
+// br.Msg = "保存成功"
|
|
|
+// }
|
|
|
+
|
|
|
// ExcelDataEdit
|
|
|
// @Title 在线Excel编辑
|
|
|
// @Description 在线Excel编辑
|