Эх сурвалжийг харах

Merge remote-tracking branch 'origin/master'

Roc 1 жил өмнө
parent
commit
8bb9ede76f

+ 7 - 0
controllers/data_manage/edb_info.go

@@ -9,6 +9,7 @@ import (
 	"eta/eta_mobile/models/data_manage/response"
 	"eta/eta_mobile/models/data_manage/response"
 	"eta/eta_mobile/services/alarm_msg"
 	"eta/eta_mobile/services/alarm_msg"
 	"eta/eta_mobile/services/data"
 	"eta/eta_mobile/services/data"
+	"eta/eta_mobile/services/data_stat"
 	"eta/eta_mobile/services/elastic"
 	"eta/eta_mobile/services/elastic"
 	"eta/eta_mobile/utils"
 	"eta/eta_mobile/utils"
 	"fmt"
 	"fmt"
@@ -2108,7 +2109,13 @@ func (this *EdbInfoController) EdbInfoEdit() {
 
 
 	//添加es
 	//添加es
 	data.AddOrEditEdbInfoToEs(req.EdbInfoId)
 	data.AddOrEditEdbInfoToEs(req.EdbInfoId)
+	// 修改关联的预测指标基础信息
+	go data.ModifyPredictEdbBaseInfoBySourceEdb(edbInfo)
 
 
+	// 添加钢联指标更新日志
+	if edbInfo.Source == utils.DATA_SOURCE_MYSTEEL_CHEMICAL {
+		go data_stat.AddEdbInfoUpdateLog(req.EdbInfoId, 1, "", sysUser)
+	}
 	br.Ret = 200
 	br.Ret = 200
 	br.Success = true
 	br.Success = true
 	br.Msg = "保存成功"
 	br.Msg = "保存成功"

+ 4 - 0
models/data_manage/edb_info.go

@@ -46,6 +46,10 @@ type EdbInfo struct {
 	Calendar         string  `description:"公历/农历" orm:"default(公历);"`
 	Calendar         string  `description:"公历/农历" orm:"default(公历);"`
 	DataDateType     string  `orm:"column(data_date_type);size(255);null;default(交易日)"`
 	DataDateType     string  `orm:"column(data_date_type);size(255);null;default(交易日)"`
 	ManualSave       int     `description:"是否有手动保存过上下限: 0-否; 1-是"`
 	ManualSave       int     `description:"是否有手动保存过上下限: 0-否; 1-是"`
+	TerminalCode     string  `description:"终端编码,用于配置在机器上"`
+	DataUpdateTime   string  `description:"最近一次数据发生变化的时间"`
+	ErDataUpdateDate string  `description:"本次更新,数据发生变化的最早日期"`
+	SourceIndexName  string  `description:"数据源中的指标名称"`
 }
 }
 
 
 type EdbInfoFullClassify struct {
 type EdbInfoFullClassify struct {

+ 80 - 0
models/data_stat/edb_info_delete_log.go

@@ -0,0 +1,80 @@
+package data_stat
+
+import (
+	"github.com/beego/beego/v2/client/orm"
+)
+
+// EdbInfoDeleteLog 指标删除日志表
+type EdbInfoDeleteLog struct {
+	Id                 uint64  `orm:"column(id);pk"`
+	EdbInfoId          int     `description:"指标ID"`
+	EdbInfoType        int     `description:"指标类型,0:普通指标,1:预测指标"`
+	SourceName         string  `description:"来源名称"`
+	Source             int     `description:"来源id"`
+	EdbCode            string  `description:"指标编码"`
+	EdbName            string  `description:"指标名称"`
+	EdbNameEn          string  `description:"英文指标名称"`
+	EdbNameSource      string  `description:"指标名称来源"`
+	Frequency          string  `description:"频率"`
+	Unit               string  `description:"单位"`
+	UnitEn             string  `description:"英文单位"`
+	StartDate          string  `description:"起始日期"`
+	EndDate            string  `description:"终止日期"`
+	SysUserId          int     `description:"创建人ID"`
+	SysUserRealName    string  `description:"创建人姓名"`
+	UniqueCode         string  `description:"指标唯一编码"`
+	EdbCreateTime      string  `description:"指标创建时间"`
+	EdbModifyTime      string  `description:"指标修改时间"`
+	CreateTime         string  `description:"创建时间即删除时间"`
+	MinValue           float64 `description:"指标最小值"`
+	MaxValue           float64 `description:"指标最大值"`
+	CalculateFormula   string  `description:"计算公式"`
+	EdbType            int     `description:"指标类型:1:基础指标,2:计算指标"`
+	LatestDate         string  `description:"数据最新日期"`
+	LatestValue        float64 `description:"数据最新值"`
+	MoveType           int     `description:"移动方式:1:领先(默认),2:滞后"`
+	MoveFrequency      string  `description:"移动频度"`
+	NoUpdate           int8    `description:"是否停止更新,0:继续更新;1:停止更新"`
+	ChartImage         string  `description:"图表图片"`
+	Calendar           string  `description:"公历/农历" orm:"default(公历);"`
+	DataDateType       string  `orm:"column(data_date_type);size(255);null;default(交易日)"`
+	ManualSave         int     `description:"是否有手动保存过上下限: 0-否; 1-是"`
+	TerminalCode       string  `description:"终端编码,用于配置在机器上"`
+	DelSysUserId       int     `description:"删除人ID"`
+	DelSysUserRealName string  `description:"删除人姓名"`
+	DataUpdateTime     string  `description:"最近一次数据发生变化的时间"`
+	ErDataUpdateDate   string  `description:"本次更新,数据发生变化的最早日期"`
+}
+
+type EdbInfoDeleteLogItem struct {
+	Id                 uint64  `orm:"column(id);"`
+	EdbInfoId          int     `description:"指标ID"`
+	EdbInfoType        int     `description:"指标类型,0:普通指标,1:预测指标"`
+	SourceName         string  `description:"来源名称"`
+	Source             int     `description:"来源id"`
+	EdbCode            string  `description:"指标编码"`
+	EdbName            string  `description:"指标名称"`
+	EdbNameEn          string  `description:"英文指标名称"`
+	EdbNameSource      string  `description:"指标名称来源"`
+	Frequency          string  `description:"频率"`
+	Unit               string  `description:"单位"`
+	StartDate          string  `description:"起始日期"`
+	EndDate            string  `description:"终止日期"`
+	SysUserId          int     `description:"创建人ID"`
+	SysUserRealName    string  `description:"创建人姓名"`
+	EdbCreateTime      string  `description:"指标创建时间"`
+	CreateTime         string  `description:"创建时间即删除时间"`
+	LatestDate         string  `description:"数据最新日期"`
+	LatestValue        float64 `description:"数据最新值"`
+	TerminalCode       string  `description:"终端编码,用于配置在机器上"`
+	DelSysUserId       int     `description:"删除人ID"`
+	DelSysUserRealName string  `description:"删除人姓名"`
+	DataUpdateTime     string  `description:"最近一次数据发生变化的时间"`
+	ErDataUpdateDate   string  `description:"本次更新,数据发生变化的最早日期"`
+}
+
+func AddEdbDeleteLog(item *EdbInfoDeleteLog) (lastId int64, err error) {
+	o := orm.NewOrmUsingDB("data")
+	lastId, err = o.Insert(item)
+	return
+}

+ 70 - 0
models/data_stat/edb_info_update_log.go

@@ -0,0 +1,70 @@
+package data_stat
+
+import (
+	"github.com/beego/beego/v2/client/orm"
+	"time"
+)
+
+// EdbInfoUpdateLog 指标更新/刷新日志列表
+type EdbInfoUpdateLog struct {
+	Id                     uint64    `orm:"column(id);pk"`
+	EdbInfoId              int       `description:"指标ID"`
+	SourceName             string    `description:"来源名称"`
+	Source                 int       `description:"来源id"`
+	EdbCode                string    `description:"指标编码"`
+	EdbName                string    `description:"指标名称"`
+	EdbNameSource          string    `description:"指标名称来源"`
+	Frequency              string    `description:"频率"`
+	Unit                   string    `description:"单位"`
+	StartDate              string    `description:"起始日期"`
+	EndDate                string    `description:"终止日期"`
+	SysUserId              int       `description:"创建人ID"`
+	SysUserRealName        string    `description:"创建人姓名"`
+	UniqueCode             string    `description:"指标唯一编码"`
+	EdbCreateTime          time.Time `description:"指标创建时间"`
+	EdbModifyTime          time.Time `description:"指标修改时间"`
+	CreateTime             time.Time `description:"创建时间"`
+	UpdateSysUserId        int       `description:"变更人ID"`
+	UpdateSysUserRealName  string    `description:"变更人姓名"`
+	LatestDate             string    `description:"数据最新日期"`
+	LatestValue            float64   `description:"数据最新值"`
+	TerminalCode           string    `description:"终端编码,用于配置在机器上"`
+	ErDataUpdateDate       string    `description:"本次更新,数据发生变化的最早日期"`
+	UpdateResult           int       `description:"本次刷新操作结果:1成功,2失败"`
+	UpdateFailedReason     string    `description:"刷新失败原因"`
+	DataUpdateResult       int       `description:"数据更新结果:1成功,2失败"`
+	DataUpdateFailedReason string    `description:"数据未正常更新原因"`
+	DataUpdateTime         string    `description:"数据更新时间"`
+	IsSourceRefresh        int       `description:"是否为终端刷新到数据源的刷新操作:0否,1是"`
+}
+
+type EdbInfoUpdateLogItem struct {
+	Id                    uint64 `orm:"column(id);pk"`
+	EdbInfoId             int    `description:"指标ID"`
+	SourceName            string `description:"来源名称"`
+	Source                int    `description:"来源id"`
+	EdbCode               string `description:"指标编码"`
+	EdbName               string `description:"指标名称"`
+	EdbNameSource         string `description:"指标名称来源"`
+	Frequency             string `description:"频率"`
+	Unit                  string `description:"单位"`
+	StartDate             string `description:"起始日期"`
+	EndDate               string `description:"终止日期"`
+	SysUserId             int    `description:"创建人ID"`
+	SysUserRealName       string `description:"创建人姓名"`
+	UpdateSysUserId       int    `description:"变更人ID"`
+	UpdateSysUserRealName string `description:"变更人姓名"`
+	CreateTime            string
+	UniqueCode            string  `description:"指标唯一编码"`
+	LatestDate            string  `description:"数据最新日期"`
+	LatestValue           float64 `description:"数据最新值"`
+	TerminalCode          string  `description:"终端编码,用于配置在机器上"`
+	DataUpdateTime        string  `description:"最近一次数据发生变化的时间"`
+	ErDataUpdateDate      string  `description:"本次更新,数据发生变化的最早日期"`
+}
+
+func AddEdbUpdateLog(item *EdbInfoUpdateLog) (lastId int64, err error) {
+	o := orm.NewOrmUsingDB("data")
+	lastId, err = o.Insert(item)
+	return
+}

+ 12 - 0
models/db.go

@@ -2,6 +2,7 @@ package models
 
 
 import (
 import (
 	"eta/eta_mobile/models/data_manage"
 	"eta/eta_mobile/models/data_manage"
+	"eta/eta_mobile/models/data_stat"
 	"eta/eta_mobile/models/ppt_english"
 	"eta/eta_mobile/models/ppt_english"
 	"eta/eta_mobile/models/sandbox"
 	"eta/eta_mobile/models/sandbox"
 	saModel "eta/eta_mobile/models/semantic_analysis"
 	saModel "eta/eta_mobile/models/semantic_analysis"
@@ -108,6 +109,9 @@ func init() {
 
 
 	// 初始化部分数据表变量(直接init会有顺序问题=_=!)
 	// 初始化部分数据表变量(直接init会有顺序问题=_=!)
 	data_manage.InitEdbSource()
 	data_manage.InitEdbSource()
+
+	// initDataStat 数据源统计管理相关表
+	initDataStat()
 }
 }
 
 
 // initSystem 系统表 数据表
 // initSystem 系统表 数据表
@@ -249,3 +253,11 @@ func initBusinessConf() {
 		new(BusinessConfOperationRecord), // 商家配置操作记录表
 		new(BusinessConfOperationRecord), // 商家配置操作记录表
 	)
 	)
 }
 }
+
+// initDataStat 数据源统计管理相关表
+func initDataStat() {
+	orm.RegisterModel(
+		new(data_stat.EdbInfoDeleteLog), // 指标删除日志表
+		new(data_stat.EdbInfoUpdateLog), // 指标更新/刷新日志列表
+	)
+}

+ 17 - 7
services/data/chart_info.go

@@ -572,6 +572,7 @@ func GetSeasonEdbInfoDataListByXDateNong(result *data_manage.EdbDataResult, late
 	itemLength := len(result.List[length-1].Items)
 	itemLength := len(result.List[length-1].Items)
 	//获取数据的最新日期
 	//获取数据的最新日期
 	lastDate := result.List[length-1].Items[itemLength-1].DataTime
 	lastDate := result.List[length-1].Items[itemLength-1].DataTime
+	maxY := result.List[length-1].Year
 	lastDateT, tmpErr := time.Parse(utils.FormatDate, lastDate)
 	lastDateT, tmpErr := time.Parse(utils.FormatDate, lastDate)
 	if tmpErr != nil {
 	if tmpErr != nil {
 		err = tmpErr
 		err = tmpErr
@@ -586,6 +587,7 @@ func GetSeasonEdbInfoDataListByXDateNong(result *data_manage.EdbDataResult, late
 	quarterMap := make(map[string][]*data_manage.EdbDataList, 0)
 	quarterMap := make(map[string][]*data_manage.EdbDataList, 0)
 
 
 	//整理出日期
 	//整理出日期
+	var startTmpT, endTmpT time.Time
 	idx := 1
 	idx := 1
 	chartLegendMap := make(map[string]int, 0)
 	chartLegendMap := make(map[string]int, 0)
 	for currentStartYear := startYear; currentStartYear <= endYear; currentStartYear++ {
 	for currentStartYear := startYear; currentStartYear <= endYear; currentStartYear++ {
@@ -624,6 +626,8 @@ func GetSeasonEdbInfoDataListByXDateNong(result *data_manage.EdbDataResult, late
 		}
 		}
 		dataMap[showName] = item
 		dataMap[showName] = item
 		fmt.Println("年份" + showName + "日期" + startStr + " " + endStr)
 		fmt.Println("年份" + showName + "日期" + startStr + " " + endStr)
+		startTmpT = startT
+		endTmpT = endT
 		chartLegendMap[showName] = idx
 		chartLegendMap[showName] = idx
 		idx++
 		idx++
 		if lastDateT.Before(endT) {
 		if lastDateT.Before(endT) {
@@ -646,7 +650,7 @@ func GetSeasonEdbInfoDataListByXDateNong(result *data_manage.EdbDataResult, late
 	}
 	}
 
 
 	//判断哪些点应该落在同一条时间线上
 	//判断哪些点应该落在同一条时间线上
-	maxY := lastDateT.Year()
+	/*maxY := lastDateT.Year()
 	changeFlag := false
 	changeFlag := false
 	if lastDateT.Month() >= 11 {
 	if lastDateT.Month() >= 11 {
 		maxY = maxY + 1
 		maxY = maxY + 1
@@ -654,22 +658,28 @@ func GetSeasonEdbInfoDataListByXDateNong(result *data_manage.EdbDataResult, late
 	if maxY < nowYear {
 	if maxY < nowYear {
 		changeFlag = true
 		changeFlag = true
 		maxY = nowYear
 		maxY = nowYear
-	}
-	endTmp := fmt.Sprintf("%d-%s", maxY, xEndDate)
+	}*/
+	/*endTmp := fmt.Sprintf("%d-%s", maxY, xEndDate)
 	endTmpT, _ := time.Parse(utils.FormatDate, endTmp)
 	endTmpT, _ := time.Parse(utils.FormatDate, endTmp)
 	minY := maxY
 	minY := maxY
 	if jumpYear == 1 {
 	if jumpYear == 1 {
 		minY = maxY - 1
 		minY = maxY - 1
 	}
 	}
 	startTmp := fmt.Sprintf("%d-%s", minY, xStartDate)
 	startTmp := fmt.Sprintf("%d-%s", minY, xStartDate)
-	startTmpT, _ := time.Parse(utils.FormatDate, startTmp)
+	startTmpT, _ := time.Parse(utils.FormatDate, startTmp)*/
 
 
 	fmt.Println("横轴截取日" + startTmpT.Format(utils.FormatDate) + " " + endTmpT.Format(utils.FormatDate))
 	fmt.Println("横轴截取日" + startTmpT.Format(utils.FormatDate) + " " + endTmpT.Format(utils.FormatDate))
+	fmt.Printf("lastDateT.Year() 为%d \n", lastDateT.Year())
+	fmt.Printf("maxY 为%d \n", maxY)
 	for name, dateItem := range dataMap {
 	for name, dateItem := range dataMap {
-		lv, ok1 := yearDataListMap[dateItem.EndDate.Year()]
-		if changeFlag {
-			lv, ok1 = yearDataListMap[dateItem.StartDate.Year()]
+		tY := dateItem.EndDate.Year()
+		if lastDateT.Month() >= 11 {
+			if maxY > endTmpT.Year() {
+				tY = tY + 1
+			}
 		}
 		}
+		lv, ok1 := yearDataListMap[tY]
+		fmt.Printf("name %s yearDataListMap[%d]\n", name, tY)
 		if !ok1 {
 		if !ok1 {
 			continue
 			continue
 		}
 		}

+ 2 - 1
services/data/edb_classify.go

@@ -4,6 +4,7 @@ import (
 	"errors"
 	"errors"
 	"eta/eta_mobile/models/data_manage"
 	"eta/eta_mobile/models/data_manage"
 	"eta/eta_mobile/models/system"
 	"eta/eta_mobile/models/system"
+	"eta/eta_mobile/services/data_stat"
 	"eta/eta_mobile/utils"
 	"eta/eta_mobile/utils"
 	"strconv"
 	"strconv"
 	"time"
 	"time"
@@ -451,7 +452,7 @@ func Delete(classifyId, edbInfoId int, sysUser *system.Admin, requestBody, reque
 			err = errors.New("删除失败,Err:" + tmpErr.Error())
 			err = errors.New("删除失败,Err:" + tmpErr.Error())
 			return
 			return
 		}
 		}
-
+		go data_stat.AddEdbDeleteLog(edbInfo, sysUser)
 		// 返回下一个表格的信息
 		// 返回下一个表格的信息
 		{
 		{
 			var condition string
 			var condition string

+ 61 - 0
services/data_stat/edb_delete_log.go

@@ -0,0 +1,61 @@
+package data_stat
+
+import (
+	"eta/eta_mobile/models/data_manage"
+	"eta/eta_mobile/models/data_stat"
+	"eta/eta_mobile/models/system"
+	"eta/eta_mobile/utils"
+	"fmt"
+	"time"
+)
+
+func AddEdbDeleteLog(edbInfo *data_manage.EdbInfo, sysUser *system.Admin) (err error) {
+	if edbInfo != nil {
+		log := new(data_stat.EdbInfoDeleteLog)
+		log.EdbInfoId = edbInfo.EdbInfoId
+		log.EdbInfoType = edbInfo.EdbInfoType
+		log.SourceName = edbInfo.SourceName
+		log.Source = edbInfo.Source
+		log.EdbCode = edbInfo.EdbCode
+		log.EdbName = edbInfo.EdbName
+		log.EdbNameEn = edbInfo.EdbNameEn
+		log.EdbNameSource = edbInfo.SourceIndexName
+		log.Frequency = edbInfo.Frequency
+		log.Unit = edbInfo.Unit
+		log.UnitEn = edbInfo.UnitEn
+		log.StartDate = edbInfo.StartDate
+		log.EndDate = edbInfo.EndDate
+		log.SysUserId = edbInfo.SysUserId
+		log.SysUserRealName = edbInfo.SysUserRealName
+		log.UniqueCode = edbInfo.UniqueCode
+		log.EdbCreateTime = edbInfo.CreateTime.Format(utils.FormatDateTime)
+		log.EdbModifyTime = edbInfo.ModifyTime.Format(utils.FormatDateTime)
+		log.CreateTime = time.Now().Format(utils.FormatDateTime)
+		log.MinValue = edbInfo.MinValue
+		log.MaxValue = edbInfo.MaxValue
+		log.CalculateFormula = edbInfo.CalculateFormula
+		log.EdbType = edbInfo.EdbType
+		log.LatestDate = edbInfo.LatestDate
+		log.LatestValue = edbInfo.LatestValue
+		log.MoveType = edbInfo.MoveType
+		log.MoveFrequency = edbInfo.MoveFrequency
+		log.NoUpdate = edbInfo.NoUpdate
+		log.ChartImage = edbInfo.ChartImage
+		log.Calendar = edbInfo.Calendar
+		log.DataDateType = edbInfo.DataDateType
+		log.ManualSave = edbInfo.ManualSave
+		log.TerminalCode = edbInfo.TerminalCode
+
+		log.DelSysUserId = sysUser.AdminId
+		log.DelSysUserRealName = sysUser.RealName
+		log.DataUpdateTime = edbInfo.DataUpdateTime
+		log.ErDataUpdateDate = edbInfo.ErDataUpdateDate
+
+		_, err = data_stat.AddEdbDeleteLog(log)
+		if err != nil {
+			err = fmt.Errorf("新增指标删除日志失败,Err: %s", err)
+			return
+		}
+	}
+	return
+}

+ 55 - 0
services/data_stat/edb_info_stat.go

@@ -0,0 +1,55 @@
+package data_stat
+
+import (
+	"eta/eta_mobile/models/data_manage"
+	"eta/eta_mobile/models/data_stat"
+	"eta/eta_mobile/models/system"
+	"fmt"
+	"time"
+)
+
+// AddEdbInfoUpdateLog 添加指标编辑/刷新日志
+func AddEdbInfoUpdateLog(edbInfoId int, updateResult int, updateFailedReason string, sysUser *system.Admin) (err error) {
+	var edbInfo *data_manage.EdbInfo
+	if edbInfoId > 0 {
+		// 获取指标详情
+		edbInfo, err = data_manage.GetEdbInfoById(edbInfoId)
+		if err != nil {
+			err = fmt.Errorf("指标不存在")
+			return
+		}
+		nowTime := time.Now()
+		log := new(data_stat.EdbInfoUpdateLog)
+		log.EdbInfoId = edbInfo.EdbInfoId
+		log.SourceName = edbInfo.SourceName
+		log.Source = edbInfo.Source
+		log.EdbCode = edbInfo.EdbCode
+		log.EdbName = edbInfo.EdbName
+		log.EdbNameSource = edbInfo.SourceIndexName
+		log.Frequency = edbInfo.Frequency
+		log.Unit = edbInfo.Unit
+		log.StartDate = edbInfo.StartDate
+		log.EndDate = edbInfo.EndDate
+		log.SysUserId = edbInfo.SysUserId
+		log.SysUserRealName = edbInfo.SysUserRealName
+		log.UpdateSysUserId = sysUser.AdminId
+		log.UpdateSysUserRealName = sysUser.RealName
+		log.UniqueCode = edbInfo.UniqueCode
+		log.EdbCreateTime = edbInfo.CreateTime
+		log.EdbModifyTime = edbInfo.ModifyTime
+		log.CreateTime = nowTime
+		log.LatestDate = edbInfo.LatestDate
+		log.LatestValue = edbInfo.LatestValue
+		log.TerminalCode = edbInfo.TerminalCode
+		log.UpdateResult = updateResult
+		log.UpdateFailedReason = updateFailedReason
+		log.DataUpdateTime = edbInfo.DataUpdateTime
+		log.ErDataUpdateDate = edbInfo.ErDataUpdateDate
+		_, err = data_stat.AddEdbUpdateLog(log)
+		if err != nil {
+			err = fmt.Errorf("新增指标更新日志失败,Err: %s", err)
+			return
+		}
+	}
+	return
+}