|
@@ -120,3 +120,55 @@ func ResetEdbRelation(edbInfoId int) {
|
|
|
}
|
|
|
return
|
|
|
}
|
|
|
+
|
|
|
+// 设置成禁用状态
|
|
|
+func DisableEdbInfoNoUpdate(edbInfo *models.EdbInfo) (err error) {
|
|
|
+ // 如果一个计算指标里,包涵的基础指标是停用状态,那么计算指标也要是停用状态停用状态
|
|
|
+ newBaseEdbInfoList := make([]int, 0)
|
|
|
+ hasFind := make(map[int]struct{})
|
|
|
+ newBaseEdbInfoIds, err := FindBaseEdbInfo(edbInfo.EdbInfoId, newBaseEdbInfoList, hasFind)
|
|
|
+ if err != nil {
|
|
|
+ err = fmt.Errorf("查找基础指标信息失败,err:%v", err)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ // 查询是否存在停用指标,如果存在,则计算指标也要是停用状态
|
|
|
+ total, err := models.GetEdbInfoNoUpdateTotalByIdList(newBaseEdbInfoIds)
|
|
|
+ if err != nil {
|
|
|
+ err = fmt.Errorf("查询基础指标信息失败,err:%v", err)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if total > 0 {
|
|
|
+ edbInfo.NoUpdate = 1
|
|
|
+ edbInfo.ModifyTime = time.Now()
|
|
|
+ err = edbInfo.Update([]string{"NoUpdate", "ModifyTime"})
|
|
|
+ if err != nil {
|
|
|
+ err = fmt.Errorf("更新计算指标刷新状态失败,err:%v", err)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+// 找到基础指标的过程
|
|
|
+func FindBaseEdbInfo(edbInfoId int, baseEdbInfoList []int, hasFind map[int]struct{}) (newBaseEdbInfoList []int, err error) {
|
|
|
+ newBaseEdbInfoList = baseEdbInfoList
|
|
|
+ if _, ok := hasFind[edbInfoId]; ok {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ // 先找到所有的引用关系
|
|
|
+ //查询当前计算指标最新的引用指标列表
|
|
|
+ newMappingList, err := models.GetEdbInfoCalculateDetailList(edbInfoId)
|
|
|
+ if err != nil {
|
|
|
+ err = fmt.Errorf("查询当前计算指标最新的指标列表失败,错误信息:%s", err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ hasFind[edbInfoId] = struct{}{}
|
|
|
+ for _, mapping := range newMappingList {
|
|
|
+ if mapping.EdbType == 1 { // 如果是基础指标,则加入,否则继续找
|
|
|
+ newBaseEdbInfoList = append(newBaseEdbInfoList, mapping.FromEdbInfoId)
|
|
|
+ } else {
|
|
|
+ newBaseEdbInfoList, err = FindBaseEdbInfo(mapping.FromEdbInfoId, newBaseEdbInfoList, hasFind)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return
|
|
|
+}
|