Quellcode durchsuchen

Merge branch 'pool/825' into debug

# Conflicts:
#	models/db.go
Roc vor 1 Jahr
Ursprung
Commit
8aeb976b6b

+ 55 - 2
controllers/base_from_mysteel_chemical.go

@@ -2,6 +2,7 @@ package controllers
 
 import (
 	"encoding/json"
+	"fmt"
 	"hongze/hongze_edb_lib/logic"
 	"hongze/hongze_edb_lib/models"
 	"hongze/hongze_edb_lib/services"
@@ -175,8 +176,13 @@ func (this *MySteelChemicalController) HandleMysteelIndex() {
 		return
 	}
 
-	services.HandleMysteelIndex(&req)
-
+	err = services.HandleMysteelIndex(&req)
+	if err != nil {
+		fmt.Println("HandleMysteelIndex Err:" + err.Error())
+		br.Msg = "处理失败"
+		br.ErrMsg = "处理失败,Err:" + err.Error()
+		return
+	}
 	br.Ret = 200
 	br.Success = true
 	br.Msg = "处理成功"
@@ -563,3 +569,50 @@ func (this *MySteelChemicalController) MultiUpdateIndex() {
 	br.Success = true
 	br.Msg = "操作成功"
 }
+
+// @Title 处理钢联指标的接口
+// @Description 处理钢联指标的接口
+// @Success 200 {object} models.AddMysteelIndexResp
+// @router /add/mysteel/index [post]
+func (this *MySteelChemicalController) AddMysteelIndex() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+	var req models.AddMysteelIndexResp
+	err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
+	if err != nil {
+		br.Msg = "参数解析异常!"
+		br.ErrMsg = "参数解析失败,Err:" + err.Error()
+		return
+	}
+	mysteelIndexObj := new(models.BaseFromMysteelChemicalIndex)
+	indexItem, err := mysteelIndexObj.GetIndexItem(req.EdbCode)
+	var isAdd bool
+	if err != nil {
+		if err.Error() == utils.ErrNoRow() {
+			isAdd = true
+		} else {
+			br.Msg = "判断指标是否存在失败"
+			br.ErrMsg = "判断指标是否存在失败,Err:" + err.Error()
+			return
+		}
+	}
+	if indexItem == nil {
+		isAdd = true
+	}
+	if isAdd {
+		mysteelIndexObj.IndexCode = req.EdbCode
+		mysteelIndexObj.BaseFromMysteelChemicalClassifyId = req.BaseFromMysteelChemicalClassifyId
+		err = mysteelIndexObj.Add()
+		if err != nil {
+			br.Msg = "新增指标失败"
+			br.ErrMsg = "新增指标失败,Err:" + err.Error()
+			return
+		}
+	}
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "新增成功"
+}

+ 54 - 0
controllers/base_from_mysteel_chemical_classify.go

@@ -0,0 +1,54 @@
+package controllers
+
+import (
+	"encoding/json"
+	"hongze/hongze_edb_lib/models"
+	"hongze/hongze_edb_lib/utils"
+)
+
+// @Title 查询/新增分类
+// @Description 查询/新增分类接口
+// @Param	request	body models.AddMysteelClassifyReq true "type json string"
+// @Success 200 {object} models.EdbClassify
+// @router /mysteel_classify/get_or_add [post]
+func (this *MySteelChemicalController) MysteelClassifyGetOrAdd() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+	var req models.AddMysteelClassifyReq
+	err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
+	if err != nil {
+		br.Msg = "参数解析异常!"
+		br.ErrMsg = "参数解析失败,Err:" + err.Error()
+		return
+	}
+	if req.ClassifyName == "" {
+		br.Msg = "请输入分类名称"
+		br.IsSendEmail = false
+		return
+	}
+	if req.ParentId < 0 {
+		br.Msg = "参数错误"
+		br.IsSendEmail = false
+		return
+	}
+
+	//添加指标
+	edbClassify, err, errMsg := models.SaveMysteelClassify(req.ClassifyName, req.ParentId, req.Level, utils.InitAdminId, utils.InitAdminName)
+	if errMsg != `` {
+		br.Msg = errMsg
+		br.ErrMsg = errMsg
+		if err != nil {
+			br.ErrMsg = errMsg + ";Err:" + err.Error()
+		} else {
+			br.IsSendEmail = false
+		}
+		return
+	}
+	br.Ret = 200
+	br.Msg = "保存成功"
+	br.Success = true
+	br.Data = edbClassify
+}

+ 1 - 2
controllers/edb_info.go

@@ -4,7 +4,6 @@ import (
 	"encoding/json"
 	"hongze/hongze_edb_lib/logic"
 	"hongze/hongze_edb_lib/models"
-	"hongze/hongze_edb_lib/services"
 	"hongze/hongze_edb_lib/utils"
 	"strconv"
 	"time"
@@ -96,7 +95,7 @@ func (this *EdbInfoController) Add() {
 	var windUrl string
 	if isAdd {
 		if req.Source == utils.DATA_SOURCE_WIND {
-			windUrl, err = services.GetWindUrl(req.EdbCode)
+			windUrl, err = GetServerUrl(req.EdbCode)
 			if err != nil {
 				br.Msg = "判断失败!"
 				br.ErrMsg = "判断失败,Err:" + err.Error()

+ 1 - 5
logic/profit_chart_info.go

@@ -477,14 +477,10 @@ func ProfitChartChartData(baseDataList []*models.EdbDataList, futureGoodEdbInfoM
 
 			calculateMap := make(map[int]float64)
 			for _, childFutureGoodEdbInfoId := range childFutureGoodEdbInfoIdList {
-				tmpRealDateTime := findDateTime
-				tmpFindDataValue, tmpIsFind := edbDataMap[childFutureGoodEdbInfoId][findDateTime.Format(utils.FormatDate)]
+				tmpFindDataValue, tmpIsFind := edbDataMap[childFutureGoodEdbInfoId][realDateTime.Format(utils.FormatDate)]
 
 				if tmpIsFind && tmpFindDataValue != 0 {
 					calculateMap[childFutureGoodEdbInfoId] = tmpFindDataValue
-					if maxDate.IsZero() || maxDate.Before(tmpRealDateTime) {
-						maxDate = tmpRealDateTime
-					}
 				}
 			}
 			// 合约的数据不全,不参与计算

+ 27 - 21
models/base_from_mysteel_chemical.go

@@ -200,27 +200,28 @@ func RefreshEdbDataFromMysteelChemical(edbInfoId int, edbCode, startDate string)
 
 // 钢联化工指标数据
 type BaseFromMysteelChemicalIndex struct {
-	BaseFromMysteelChemicalIndexId int64     `orm:"column(base_from_mysteel_chemical_index_id);pk"`
-	IndexCode                      string    `description:"指标编码"`
-	IndexName                      string    `description:"指标名称"`
-	Unit                           string    `description:"单位"`
-	Source                         string    `description:"数据来源"`
-	Frequency                      string    `description:"频度"`
-	StartDate                      time.Time `description:"开始日期"`
-	EndDate                        time.Time `description:"结束日期"`
-	Describe                       string    `description:"指标描述"`
-	UpdateWeek                     string    `description:"更新周期"`
-	UpdateTime                     string    `description:"更新时间,多个时间点用英文,隔开"`
-	UpdateTime2                    string    `description:"更新时间2"`
-	SysUserId                      int       `description:"创建人id"`
-	SysUserRealName                string    `description:"创建人姓名"`
-	FilePath                       string    `description:"文件存储路径"`
-	MergeFilePath                  string    `description:"更新文件"`
-	FileIndex                      int       `description:"文件索引"`
-	MergeUpdateWeek                string    `description:"合并文件的更新周"`
-	UpdateDate                     string    `description:"更新日期"`
-	CreateTime                     time.Time `description:"创建时间"`
-	ModifyTime                     time.Time `description:"修改时间"`
+	BaseFromMysteelChemicalIndexId    int64     `orm:"column(base_from_mysteel_chemical_index_id);pk"`
+	BaseFromMysteelChemicalClassifyId int       `description:"分类id"`
+	IndexCode                         string    `description:"指标编码"`
+	IndexName                         string    `description:"指标名称"`
+	Unit                              string    `description:"单位"`
+	Source                            string    `description:"数据来源"`
+	Frequency                         string    `description:"频度"`
+	StartDate                         time.Time `description:"开始日期"`
+	EndDate                           time.Time `description:"结束日期"`
+	Describe                          string    `description:"指标描述"`
+	UpdateWeek                        string    `description:"更新周期"`
+	UpdateTime                        string    `description:"更新时间,多个时间点用英文,隔开"`
+	UpdateTime2                       string    `description:"更新时间2"`
+	SysUserId                         int       `description:"创建人id"`
+	SysUserRealName                   string    `description:"创建人姓名"`
+	FilePath                          string    `description:"文件存储路径"`
+	MergeFilePath                     string    `description:"更新文件"`
+	FileIndex                         int       `description:"文件索引"`
+	MergeUpdateWeek                   string    `description:"合并文件的更新周"`
+	UpdateDate                        string    `description:"更新日期"`
+	CreateTime                        time.Time `description:"创建时间"`
+	ModifyTime                        time.Time `description:"修改时间"`
 }
 
 // GetIndexRefreshAllByMergeFile 根据合并文件去分组查询需要刷新的文件
@@ -438,3 +439,8 @@ func (r *BaseFromMysteelChemicalData) Add(list []BaseFromMysteelChemicalData) (e
 	_, err = o.InsertMulti(len(list), list)
 	return
 }
+
+type AddMysteelIndexResp struct {
+	EdbCode                           string `description:"指标编码"`
+	BaseFromMysteelChemicalClassifyId int    `description:"指标分类"`
+}

+ 91 - 0
models/base_from_mysteel_chemical_classify.go

@@ -0,0 +1,91 @@
+package models
+
+import (
+	"github.com/beego/beego/v2/client/orm"
+	"hongze/hongze_edb_lib/utils"
+	"strconv"
+	"time"
+)
+
+type BaseFromMysteelChemicalClassify struct {
+	BaseFromMysteelChemicalClassifyId int       `orm:"column(base_from_mysteel_chemical_classify_id);pk"`
+	ClassifyName                      string    `description:"分类名称"`
+	ParentId                          int       `description:"父级id"`
+	SysUserId                         int       `description:"创建人id"`
+	SysUserRealName                   string    `description:"创建人姓名"`
+	Level                             int       `description:"层级"`
+	Sort                              int       `description:"排序字段,越小越靠前,默认值:10"`
+	ModifyTime                        time.Time `description:"修改时间"`
+	CreateTime                        time.Time `description:"创建时间"`
+}
+
+// 判断分类名称是否存在
+func GetMysteelClassify(classifyName string, parentId int) (item *BaseFromMysteelChemicalClassify, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT * FROM base_from_mysteel_chemical_classify WHERE parent_id=? AND classify_name=? `
+	err = o.Raw(sql, parentId, classifyName).QueryRow(&item)
+	return
+}
+
+// GetEdbClassifyMaxSort 获取分类下最大的排序数
+func GetMysteelClassifyMaxSort(parentId int) (sort int, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT Max(sort) AS sort FROM base_from_mysteel_chemical_classify WHERE parent_id=? `
+	err = o.Raw(sql, parentId).QueryRow(&sort)
+	return
+}
+
+func AddMysteelClassify(item *BaseFromMysteelChemicalClassify) (lastId int64, err error) {
+	o := orm.NewOrm()
+	lastId, err = o.Insert(item)
+	return
+}
+
+type AddMysteelClassifyReq struct {
+	ClassifyName string `description:"分类名称"`
+	ParentId     int    `description:"父级id,第一级传0"`
+	Level        int    `description:"层级,第一级传0,其余传上一级的层级"`
+}
+
+// AddEdbClassify 添加指标分类
+func SaveMysteelClassify(classifyName string, parentId, level int, sysUserId, sysUserName string) (classifyInfo *BaseFromMysteelChemicalClassify, err error, errMsg string) {
+	edbClassify, err := GetMysteelClassify(classifyName, parentId)
+
+	var isAdd bool
+	if err != nil {
+		if err.Error() == utils.ErrNoRow() {
+			isAdd = true
+		} else {
+			errMsg = `判断名称是否已存在失败`
+			return
+		}
+	}
+
+	if edbClassify != nil && edbClassify.BaseFromMysteelChemicalClassifyId > 0 {
+		classifyInfo = edbClassify
+		return edbClassify, nil, ""
+	} else {
+		isAdd = true
+	}
+	if isAdd {
+		sysUserIdInt, _ := strconv.Atoi(sysUserId)
+		//获取该层级下最大的排序数
+		maxSort, err := GetMysteelClassifyMaxSort(parentId)
+		classifyInfo = &BaseFromMysteelChemicalClassify{
+			ClassifyName:    classifyName,
+			ParentId:        parentId,
+			CreateTime:      time.Now(),
+			ModifyTime:      time.Now(),
+			SysUserId:       sysUserIdInt,
+			SysUserRealName: sysUserName,
+			Level:           level + 1,
+			Sort:            maxSort,
+		}
+		classifyId, err := AddMysteelClassify(classifyInfo)
+		if err != nil {
+			errMsg = "保存分类失败"
+		}
+		classifyInfo.BaseFromMysteelChemicalClassifyId = int(classifyId)
+	}
+	return
+}

+ 1 - 0
models/db.go

@@ -53,6 +53,7 @@ func init() {
 		new(EdbDataPredictCalculateZjpj),
 		new(EdbAdjustConf), // 数据调整的配置
 		new(EdbDataInsertConfig),
+		new(BaseFromMysteelChemicalClassify),
 	)
 
 	// 注册期货数据 数据表

+ 3 - 2
models/edb_info.go

@@ -988,13 +988,13 @@ func EdbInfoAdd(req *AddEdbInfoParams, serverUrl string, sysUserId int, sysUserR
 	condition += " AND edb_code=? "
 	pars = append(pars, req.EdbCode)
 
-	count, err := GetEdbInfoCountByCondition(condition, pars)
+	items, err := GetEdbInfoByCondition(condition, pars, 0)
 	if err != nil {
 		err = errors.New("判断指标是否存在失败,Err:" + err.Error())
 		return
 	}
 
-	if count > 0 {
+	if len(items) > 0 {
 		sql := ` UPDATE edb_info SET classify_id=?,modify_time=NOW() WHERE edb_code=? `
 		o := orm.NewOrm()
 		_, err = o.Raw(sql, req.ClassifyId, req.EdbCode).Exec()
@@ -1002,6 +1002,7 @@ func EdbInfoAdd(req *AddEdbInfoParams, serverUrl string, sysUserId int, sysUserR
 			err = errors.New("更新指标分类信息失败,Err:" + err.Error())
 			return
 		}
+		edbInfo = items[0]
 		return
 	}
 

+ 18 - 9
routers/commentsRouter.go

@@ -223,15 +223,6 @@ func init() {
             Filters: nil,
             Params: nil})
 
-    beego.GlobalControllerRouter["hongze/hongze_edb_lib/controllers:EdbInfoController"] = append(beego.GlobalControllerRouter["hongze/hongze_edb_lib/controllers:EdbInfoController"],
-        beego.ControllerComments{
-            Method: "Add",
-            Router: `/add`,
-            AllowHTTPMethods: []string{"post"},
-            MethodParams: param.Make(),
-            Filters: nil,
-            Params: nil})
-
     beego.GlobalControllerRouter["hongze/hongze_edb_lib/controllers:EiaSteoController"] = append(beego.GlobalControllerRouter["hongze/hongze_edb_lib/controllers:EiaSteoController"],
         beego.ControllerComments{
             Method: "Add",
@@ -367,6 +358,15 @@ func init() {
             Filters: nil,
             Params: nil})
 
+    beego.GlobalControllerRouter["hongze/hongze_edb_lib/controllers:MySteelChemicalController"] = append(beego.GlobalControllerRouter["hongze/hongze_edb_lib/controllers:MySteelChemicalController"],
+        beego.ControllerComments{
+            Method: "AddMysteelIndex",
+            Router: `/add/mysteel/index`,
+            AllowHTTPMethods: []string{"post"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
     beego.GlobalControllerRouter["hongze/hongze_edb_lib/controllers:MySteelChemicalController"] = append(beego.GlobalControllerRouter["hongze/hongze_edb_lib/controllers:MySteelChemicalController"],
         beego.ControllerComments{
             Method: "GetIndexByFrequency",
@@ -466,6 +466,15 @@ func init() {
             Filters: nil,
             Params: nil})
 
+    beego.GlobalControllerRouter["hongze/hongze_edb_lib/controllers:MySteelChemicalController"] = append(beego.GlobalControllerRouter["hongze/hongze_edb_lib/controllers:MySteelChemicalController"],
+        beego.ControllerComments{
+            Method: "MysteelClassifyGetOrAdd",
+            Router: `/mysteel_classify/get_or_add`,
+            AllowHTTPMethods: []string{"post"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
     beego.GlobalControllerRouter["hongze/hongze_edb_lib/controllers:MySteelChemicalController"] = append(beego.GlobalControllerRouter["hongze/hongze_edb_lib/controllers:MySteelChemicalController"],
         beego.ControllerComments{
             Method: "QueryRefresh",

+ 10 - 7
services/base_from_mysteel_chemical.go

@@ -8,18 +8,20 @@ import (
 	"time"
 )
 
-func HandleMysteelIndex(req *models.HandleMysteelIndexResp) {
+func HandleMysteelIndex(req *models.HandleMysteelIndexResp) (err error) {
 	for _, v := range req.List {
 		if v.IndexName == "" || v.IndexCode == "" {
 			continue
 		}
-		handleIndex(v)
+		err = handleIndex(v)
+		if err != nil {
+			return
+		}
 	}
+	return
 }
 
-func handleIndex(indexItem *models.HandleMysteelIndex) {
-	var err error
-
+func handleIndex(indexItem *models.HandleMysteelIndex) (err error) {
 	//return
 	indexObj := new(models.BaseFromMysteelChemicalIndex)
 	var indexId int64
@@ -103,7 +105,7 @@ func handleIndex(indexItem *models.HandleMysteelIndex) {
 		exitDataList, err := dataObj.GetIndexDataList(indexItem.IndexCode)
 		if err != nil {
 			fmt.Println("GetIndexDataList Err:" + err.Error())
-			return
+			return err
 		}
 		fmt.Println("exitDataListLen:", len(exitDataList))
 		for _, v := range exitDataList {
@@ -119,7 +121,7 @@ func handleIndex(indexItem *models.HandleMysteelIndex) {
 			dateTime, err := time.ParseInLocation(utils.FormatDate, date, time.Local)
 			if err != nil {
 				fmt.Println("time.ParseInLocation Err:" + err.Error())
-				return
+				return err
 			}
 			if !strings.Contains(value, "#N/A") {
 				dataItem := new(models.BaseFromMysteelChemicalData)
@@ -152,4 +154,5 @@ func handleIndex(indexItem *models.HandleMysteelIndex) {
 			fmt.Println("dataObj.Add() Err:" + err.Error())
 		}
 	}
+	return
 }