|
@@ -280,9 +280,11 @@ func ReplaceEdbInRelation(oldEdbInfo, newEdbInfo *data_manage.EdbInfo) {
|
|
|
|
|
|
|
|
|
|
|
|
- if newEdbInfo.EdbType == 2 || newEdbInfo.EdbInfoType == 1 {
|
|
|
-
|
|
|
-
|
|
|
+
|
|
|
+ pageSize := 500
|
|
|
+
|
|
|
+
|
|
|
+ if newEdbInfo.EdbType == 2 {
|
|
|
edbInfoList := make([]*data_manage.EdbInfo, 0)
|
|
|
edbInfoList = append(edbInfoList, newEdbInfo)
|
|
|
calculateEdbMappingListMap, calculateEdbMappingIdsMap, err = data.GetEdbListByEdbInfoId(edbInfoList)
|
|
@@ -296,16 +298,40 @@ func ReplaceEdbInRelation(oldEdbInfo, newEdbInfo *data_manage.EdbInfo) {
|
|
|
err = fmt.Errorf("查询%d指标关联指标列表为空", newEdbInfo.EdbInfoId)
|
|
|
return
|
|
|
}
|
|
|
- }
|
|
|
- indexCodeList = append(indexCodeList, newEdbInfo.EdbCode)
|
|
|
}
|
|
|
-
|
|
|
- refreshIds = append(refreshIds, newEdbInfo.EdbInfoId)*/
|
|
|
-
|
|
|
- pageSize := 500
|
|
|
-
|
|
|
+ total, err := data_manage.GetReplaceEdbInfoRelationTotal(oldEdbInfo.EdbInfoId)
|
|
|
+ if err != nil {
|
|
|
+ err = fmt.Errorf("查询引用表中关联的指标总数失败 err: %v", err)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if total == 0 {
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ totalPage := (total + pageSize - 1) / pageSize
|
|
|
+
|
|
|
+ for i := 0; i < totalPage; i += 1 {
|
|
|
+ startSize := i * pageSize
|
|
|
+ list, e := data_manage.GetReplaceEdbInfoRelationList(oldEdbInfo.EdbInfoId, startSize, pageSize)
|
|
|
+ if e != nil {
|
|
|
+ err = fmt.Errorf("查询图表关联指标列表失败 Err:%s", e)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if len(list) == 0 {
|
|
|
+ break
|
|
|
+ }
|
|
|
+ replaceTotal1, logMsg1, e := replaceEdbInRelation(oldEdbInfo, newEdbInfo, list, childEdbMappingIds, calculateEdbMappingListMap)
|
|
|
+ if e != nil {
|
|
|
+ err = e
|
|
|
+ return
|
|
|
+ }
|
|
|
+ replaceTotal += replaceTotal1
|
|
|
+ logMsg += logMsg1
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
|
|
|
- total, err := data_manage.GetReplaceChildEdbInfoRelationTotal(oldEdbInfo.EdbInfoId)
|
|
|
+ total, err = data_manage.GetReplaceChildEdbInfoRelationTotal(oldEdbInfo.EdbInfoId)
|
|
|
if err != nil {
|
|
|
if err.Error() == utils.ErrNoRow() {
|
|
|
err = nil
|
|
@@ -315,7 +341,7 @@ func ReplaceEdbInRelation(oldEdbInfo, newEdbInfo *data_manage.EdbInfo) {
|
|
|
}
|
|
|
}
|
|
|
if total > 0 {
|
|
|
- totalPage := (total + pageSize - 1) / pageSize
|
|
|
+ totalPage = (total + pageSize - 1) / pageSize
|
|
|
|
|
|
for i := 0; i < totalPage; i += 1 {
|
|
|
startSize := i * pageSize
|
|
@@ -327,7 +353,7 @@ func ReplaceEdbInRelation(oldEdbInfo, newEdbInfo *data_manage.EdbInfo) {
|
|
|
|
|
|
relationIds := make([]int, 0)
|
|
|
for _, v := range tmpList {
|
|
|
- relationIds = append(relationIds, v.EdbInfoRelationId)
|
|
|
+ relationIds = append(relationIds, v.ParentRelationId)
|
|
|
}
|
|
|
if len(relationIds) > 0 {
|
|
|
list, e := data_manage.GetEdbInfoRelationByRelationIds(relationIds)
|
|
@@ -335,8 +361,32 @@ func ReplaceEdbInRelation(oldEdbInfo, newEdbInfo *data_manage.EdbInfo) {
|
|
|
err = fmt.Errorf("查询图表关联指标列表失败 Err:%s", e)
|
|
|
return
|
|
|
}
|
|
|
+
|
|
|
+ edbInfoListMap := make(map[int]struct{})
|
|
|
+ edbInfoIds := make([]int, 0)
|
|
|
+ for _, v := range list {
|
|
|
+ if _, ok := edbInfoListMap[v.EdbInfoId]; !ok {
|
|
|
+ edbInfoListMap[v.EdbInfoId] = struct{}{}
|
|
|
+ edbInfoIds = append(edbInfoIds, v.EdbInfoId)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ edbInfoList := make([]*data_manage.EdbInfo, 0)
|
|
|
+ if len(edbInfoIds) > 0 {
|
|
|
+
|
|
|
+ edbInfoList, err = data_manage.GetEdbInfoByIdList(edbInfoIds)
|
|
|
+ if err != nil {
|
|
|
+ err = fmt.Errorf("查询指标信息失败 Err:%s", err)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ }
|
|
|
+ calculateEdbMappingListMap, calculateEdbMappingIdsMap, err = data.GetEdbListByEdbInfoId(edbInfoList)
|
|
|
+ if err != nil {
|
|
|
+ err = fmt.Errorf("查询指标关联指标列表失败 Err:%s", err)
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
|
|
|
- replaceTotal1, logMsg1, e := replaceEdbInRelation(oldEdbInfo, newEdbInfo, list, childEdbMappingIds, calculateEdbMappingListMap)
|
|
|
+ replaceTotal1, logMsg1, e := UpdateSecondEdbInRelation(list, calculateEdbMappingListMap, calculateEdbMappingIdsMap, edbInfoList)
|
|
|
if e != nil {
|
|
|
err = e
|
|
|
return
|
|
@@ -346,41 +396,12 @@ func ReplaceEdbInRelation(oldEdbInfo, newEdbInfo *data_manage.EdbInfo) {
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
- total, err = data_manage.GetReplaceEdbInfoRelationTotal(oldEdbInfo.EdbInfoId)
|
|
|
- if err != nil {
|
|
|
- err = fmt.Errorf("查询引用表中关联的指标总数失败 err: %v", err)
|
|
|
- return
|
|
|
- }
|
|
|
- if total == 0 {
|
|
|
- return
|
|
|
- }
|
|
|
|
|
|
- totalPage := (total + pageSize - 1) / pageSize
|
|
|
-
|
|
|
- for i := 0; i < totalPage; i += 1 {
|
|
|
- startSize := i * pageSize
|
|
|
- list, e := data_manage.GetReplaceEdbInfoRelationList(oldEdbInfo.EdbInfoId, startSize, pageSize)
|
|
|
- if e != nil {
|
|
|
- err = fmt.Errorf("查询图表关联指标列表失败 Err:%s", e)
|
|
|
- return
|
|
|
- }
|
|
|
- if len(list) == 0 {
|
|
|
- break
|
|
|
- }
|
|
|
- replaceTotal1, logMsg1, e := replaceEdbInRelation(oldEdbInfo, newEdbInfo, list, childEdbMappingIds, calculateEdbMappingListMap)
|
|
|
- if e != nil {
|
|
|
- err = e
|
|
|
- return
|
|
|
- }
|
|
|
- replaceTotal += replaceTotal1
|
|
|
- logMsg += logMsg1
|
|
|
- }
|
|
|
return
|
|
|
}
|
|
|
|
|
|
+
|
|
|
func replaceEdbInRelation(oldEdbInfo, newEdbInfo *data_manage.EdbInfo, list []*data_manage.EdbInfoRelation, childEdbMappingIds []int, calculateEdbMappingListMap map[int]*data_manage.EdbInfoCalculateMapping) (replaceTotal int, logMsg string, err error) {
|
|
|
- nowTime := time.Now()
|
|
|
replaceEdbIds := make([]int, 0)
|
|
|
|
|
|
|
|
@@ -388,14 +409,14 @@ func replaceEdbInRelation(oldEdbInfo, newEdbInfo *data_manage.EdbInfo, list []*d
|
|
|
indexCodeList := make([]string, 0)
|
|
|
addList := make([]*data_manage.EdbInfoRelation, 0)
|
|
|
refreshIds := make([]int, 0)
|
|
|
+ nowTime := time.Now()
|
|
|
for _, v := range list {
|
|
|
if v.RelationType == 0 && (v.ReferObjectType == utils.EDB_RELATION_CALENDAR ||
|
|
|
(v.ReferObjectType == utils.EDB_RELATION_TABLE && v.ReferObjectSubType == utils.BALANCE_TABLE)) {
|
|
|
|
|
|
} else {
|
|
|
replaceEdbIds = append(replaceEdbIds, v.EdbInfoRelationId)
|
|
|
-
|
|
|
- if newEdbInfo.EdbType == 2 || newEdbInfo.EdbInfoType == 1 {
|
|
|
+ if newEdbInfo.EdbType == 2 {
|
|
|
for _, childEdbMappingId := range childEdbMappingIds {
|
|
|
childEdbMapping, ok2 := calculateEdbMappingListMap[childEdbMappingId]
|
|
|
if !ok2 {
|
|
@@ -441,3 +462,72 @@ func replaceEdbInRelation(oldEdbInfo, newEdbInfo *data_manage.EdbInfo, list []*d
|
|
|
}
|
|
|
return
|
|
|
}
|
|
|
+
|
|
|
+func UpdateSecondEdbInRelation(list []*data_manage.EdbInfoRelation, calculateEdbMappingListMap map[int]*data_manage.EdbInfoCalculateMapping, calculateEdbMappingIdsMap map[int][]int, edbInfoList []*data_manage.EdbInfo) (replaceTotal int, logMsg string, err error) {
|
|
|
+ nowTime := time.Now()
|
|
|
+ edbInfoRelationIds := make([]int, 0)
|
|
|
+ indexCodeList := make([]string, 0)
|
|
|
+ addList := make([]*data_manage.EdbInfoRelation, 0)
|
|
|
+ refreshIds := make([]int, 0)
|
|
|
+ edbInfoMap := make(map[int]*data_manage.EdbInfo)
|
|
|
+ for _, v := range edbInfoList {
|
|
|
+ edbInfoMap[v.EdbInfoId] = v
|
|
|
+ }
|
|
|
+
|
|
|
+ for _, v := range list {
|
|
|
+ if v.RelationType == 0 {
|
|
|
+ edbInfoRelationIds = append(edbInfoRelationIds, v.EdbInfoRelationId)
|
|
|
+ edbInfo, ok := edbInfoMap[v.EdbInfoId]
|
|
|
+ if !ok {
|
|
|
+ err = fmt.Errorf("查询指标信息失败 EdbInfoId:%d", v.EdbInfoId)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if edbInfo.EdbType == 2 {
|
|
|
+ childEdbMappingIds, ok := calculateEdbMappingIdsMap[edbInfo.EdbInfoId]
|
|
|
+ if !ok {
|
|
|
+ err = fmt.Errorf("查询%d指标关联指标列表为空", edbInfo.EdbInfoId)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ for _, childEdbMappingId := range childEdbMappingIds {
|
|
|
+ childEdbMapping, ok2 := calculateEdbMappingListMap[childEdbMappingId]
|
|
|
+ if !ok2 {
|
|
|
+ continue
|
|
|
+ }
|
|
|
+
|
|
|
+ if childEdbMapping.FromSource == utils.DATA_SOURCE_MYSTEEL_CHEMICAL {
|
|
|
+ indexCodeList = append(indexCodeList, childEdbMapping.FromEdbCode)
|
|
|
+ }
|
|
|
+ tmp1 := &data_manage.EdbInfoRelation{
|
|
|
+ ReferObjectId: v.ReferObjectId,
|
|
|
+ ReferObjectType: v.ReferObjectType,
|
|
|
+ ReferObjectSubType: v.ReferObjectSubType,
|
|
|
+ EdbInfoId: childEdbMapping.FromEdbInfoId,
|
|
|
+ EdbName: childEdbMapping.FromEdbName,
|
|
|
+ Source: childEdbMapping.FromSource,
|
|
|
+ EdbCode: childEdbMapping.FromEdbCode,
|
|
|
+ CreateTime: nowTime,
|
|
|
+ ModifyTime: nowTime,
|
|
|
+ RelationTime: nowTime,
|
|
|
+ RelationType: 1,
|
|
|
+ RootEdbInfoId: edbInfo.EdbInfoId,
|
|
|
+ ChildEdbInfoId: childEdbMapping.EdbInfoId,
|
|
|
+ }
|
|
|
+ tmp1.RelationCode = fmt.Sprintf("%d_%d_%d_%d", tmp1.RootEdbInfoId, tmp1.ReferObjectId, tmp1.ReferObjectType, tmp1.ReferObjectSubType)
|
|
|
+ addList = append(addList, tmp1)
|
|
|
+ refreshIds = append(refreshIds, childEdbMapping.FromEdbInfoId)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if len(edbInfoRelationIds) > 0 {
|
|
|
+ err = data_manage.UpdateSecondRelationEdbInfoId(edbInfoRelationIds, addList, refreshIds, indexCodeList)
|
|
|
+ if err != nil {
|
|
|
+ logMsg = ""
|
|
|
+ err = fmt.Errorf("替换指标引用表中的指标ID失败 Err:%s", err)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ replaceTotal = len(edbInfoRelationIds)
|
|
|
+ }
|
|
|
+ return
|
|
|
+}
|