|
@@ -1077,3 +1077,127 @@ func CheckExistByEdbNameAndEdbInfoId(edbInfoType, edbInfoId int, edbName, lang s
|
|
|
//指标已经入库的情况
|
|
|
return checkExistByEdbNameAndEdbInfoId(edbInfoType, edbInfoId, edbName, lang)
|
|
|
}
|
|
|
+
|
|
|
+// AddStaticPredictEdbInfo 新增静态指标数据
|
|
|
+func AddStaticPredictEdbInfo(sourceEdbInfoId, classifyId int, edbName, frequency, unit string, sysUserId int, sysUserName, lang string) (edbInfo *models.EdbInfo, err error, errMsg string) {
|
|
|
+ var sourceEdbInfo *models.EdbInfo
|
|
|
+ // 来源指标信息校验
|
|
|
+ {
|
|
|
+ sourceEdbInfo, err = models.GetEdbInfoById(sourceEdbInfoId)
|
|
|
+ if err != nil && err.Error() != utils.ErrNoRow() {
|
|
|
+ errMsg = "新增失败"
|
|
|
+ err = errors.New("获取来源指标失败,Err:" + err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if sourceEdbInfo == nil {
|
|
|
+ errMsg = "找不到该来源指标"
|
|
|
+ err = errors.New(errMsg)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ var classifyInfo *models.EdbClassify
|
|
|
+ // 来源分类信息校验
|
|
|
+ {
|
|
|
+ classifyInfo, err = models.GetEdbClassifyById(classifyId)
|
|
|
+ if err != nil && err.Error() != utils.ErrNoRow() {
|
|
|
+ errMsg = "新增失败"
|
|
|
+ err = errors.New("获取预测指标分类失败,Err:" + err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if classifyInfo == nil {
|
|
|
+ errMsg = "找不到该预测指标分类"
|
|
|
+ err = errors.New(errMsg)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ //必须是预测指标分类
|
|
|
+ if classifyInfo.ClassifyType != 1 {
|
|
|
+ errMsg = "预测指标分类异常,不是预测指标分类"
|
|
|
+ err = errors.New(errMsg)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ edbName = strings.Trim(edbName, " ")
|
|
|
+
|
|
|
+ edbCode := sourceEdbInfo.EdbCode + "_" + time.Now().Format(utils.FormatShortDateTimeUnSpace)
|
|
|
+
|
|
|
+ // 根据指标名称和指标ID校验库中是否还存在其他同名指标
|
|
|
+ existEdbName, err := CheckExistByEdbNameAndEdbInfoId(0, 0, edbName, lang)
|
|
|
+ if err != nil {
|
|
|
+ errMsg = "判断指标名称是否存在失败"
|
|
|
+ err = errors.New("判断指标名称是否存在失败,Err:" + err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if existEdbName {
|
|
|
+ errMsg = "指标名称已存在,请重新填写"
|
|
|
+ err = errors.New(errMsg)
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ timestamp := strconv.FormatInt(time.Now().UnixNano(), 10)
|
|
|
+ edbInfo = &models.EdbInfo{
|
|
|
+ //EdbInfoId: 0,
|
|
|
+ EdbInfoType: sourceEdbInfo.EdbInfoType,
|
|
|
+ SourceName: sourceEdbInfo.SourceName,
|
|
|
+ Source: utils.DATA_SOURCE_PREDICT_STATIC,
|
|
|
+ EdbCode: edbCode,
|
|
|
+ EdbName: edbName,
|
|
|
+ EdbNameSource: edbName,
|
|
|
+ Frequency: frequency,
|
|
|
+ Unit: unit,
|
|
|
+ StartDate: sourceEdbInfo.StartDate,
|
|
|
+ EndDate: sourceEdbInfo.EndDate,
|
|
|
+ ClassifyId: classifyId,
|
|
|
+ SysUserId: sysUserId,
|
|
|
+ SysUserRealName: sysUserName,
|
|
|
+ UniqueCode: utils.MD5(utils.DATA_PREFIX + "_" + timestamp),
|
|
|
+ CreateTime: time.Now(),
|
|
|
+ ModifyTime: time.Now(),
|
|
|
+ MinValue: sourceEdbInfo.MinValue,
|
|
|
+ MaxValue: sourceEdbInfo.MaxValue,
|
|
|
+ EndValue: sourceEdbInfo.EndValue,
|
|
|
+ CalculateFormula: sourceEdbInfo.CalculateFormula,
|
|
|
+ EdbType: 2,
|
|
|
+ //Sort: sourceEdbInfo.,
|
|
|
+ LatestDate: sourceEdbInfo.LatestDate,
|
|
|
+ LatestValue: sourceEdbInfo.LatestValue,
|
|
|
+ MoveType: sourceEdbInfo.MoveType,
|
|
|
+ MoveFrequency: sourceEdbInfo.MoveFrequency,
|
|
|
+ NoUpdate: sourceEdbInfo.NoUpdate,
|
|
|
+ IsUpdate: sourceEdbInfo.IsUpdate,
|
|
|
+ ServerUrl: "",
|
|
|
+ EdbNameEn: edbName,
|
|
|
+ UnitEn: sourceEdbInfo.UnitEn,
|
|
|
+ DataDateType: sourceEdbInfo.DataDateType,
|
|
|
+ Sort: models.GetAddEdbMaxSortByClassifyId(classifyId, utils.PREDICT_EDB_INFO_TYPE),
|
|
|
+ }
|
|
|
+
|
|
|
+ // 关联关系表
|
|
|
+ calculateMappingList := make([]*models.EdbInfoCalculateMapping, 0)
|
|
|
+ fromEdbMap := make(map[int]int)
|
|
|
+
|
|
|
+ // 源指标关联关系表
|
|
|
+ calculateMappingItem := &models.EdbInfoCalculateMapping{
|
|
|
+ //EdbInfoCalculateMappingId: 0,
|
|
|
+ //EdbInfoId: 0,
|
|
|
+ Source: edbInfo.Source,
|
|
|
+ SourceName: edbInfo.SourceName,
|
|
|
+ EdbCode: edbInfo.EdbCode,
|
|
|
+ FromEdbInfoId: sourceEdbInfo.EdbInfoId,
|
|
|
+ FromEdbCode: sourceEdbInfo.EdbCode,
|
|
|
+ FromEdbName: sourceEdbInfo.EdbName,
|
|
|
+ FromSource: sourceEdbInfo.Source,
|
|
|
+ FromSourceName: sourceEdbInfo.SourceName,
|
|
|
+ //FromTag: "",
|
|
|
+ Sort: 1,
|
|
|
+ CreateTime: time.Now(),
|
|
|
+ ModifyTime: time.Now(),
|
|
|
+ }
|
|
|
+ fromEdbMap[sourceEdbInfoId] = sourceEdbInfoId
|
|
|
+ calculateMappingList = append(calculateMappingList, calculateMappingItem)
|
|
|
+
|
|
|
+ err, errMsg = models.AddPredictStaticEdb(edbInfo, sourceEdbInfo, calculateMappingList)
|
|
|
+
|
|
|
+ return
|
|
|
+}
|