|
@@ -1231,9 +1231,27 @@ func (this *BaseFromThsHfController) MultiOpt() {
|
|
|
br.Msg = "请选择刷新方式"
|
|
|
return
|
|
|
}
|
|
|
+ resp := new(data_manage.ThsHfIndexMultiOptResp)
|
|
|
|
|
|
- // 批量移动
|
|
|
+ // 指标名称
|
|
|
indexOb := new(data_manage.BaseFromThsHfIndex)
|
|
|
+ indexMap := make(map[int]*data_manage.BaseFromThsHfIndex)
|
|
|
+ {
|
|
|
+ cond := fmt.Sprintf(" AND %s IN (%s)", indexOb.Cols().PrimaryId, utils.GetOrmInReplace(len(params.IndexIds)))
|
|
|
+ pars := make([]interface{}, 0)
|
|
|
+ pars = append(pars, params.IndexIds)
|
|
|
+ list, e := indexOb.GetItemsByCondition(cond, pars, []string{indexOb.Cols().PrimaryId, indexOb.Cols().IndexCode, indexOb.Cols().IndexName}, "")
|
|
|
+ if e != nil {
|
|
|
+ br.Msg = "删除失败"
|
|
|
+ br.ErrMsg = fmt.Sprintf("获取源指标列表失败, %v", e)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ for _, v := range list {
|
|
|
+ indexMap[v.BaseFromThsHfIndexId] = v
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 批量移动
|
|
|
if params.OptType == 1 {
|
|
|
if e := indexOb.UpdateClassifyMulti(params.IndexIds, params.MoveClassifyId); e != nil {
|
|
|
br.Msg = "移动失败"
|
|
@@ -1244,37 +1262,73 @@ func (this *BaseFromThsHfController) MultiOpt() {
|
|
|
|
|
|
// 批量删除
|
|
|
if params.OptType == 2 {
|
|
|
- // 校验是否被引用
|
|
|
- edbMappingOb := new(data_manage.BaseFromEdbMapping)
|
|
|
+ // 被引用的指标需要提示出来, 未被引用的直接删除
|
|
|
+ usedIndexIds := make([]int, 0)
|
|
|
{
|
|
|
+ edbMappingOb := new(data_manage.BaseFromEdbMapping)
|
|
|
cond := fmt.Sprintf(" AND %s IN (%s)", edbMappingOb.Cols().BaseFromIndexId, utils.GetOrmInReplace(len(params.IndexIds)))
|
|
|
pars := make([]interface{}, 0)
|
|
|
pars = append(pars, params.IndexIds)
|
|
|
- count, e := edbMappingOb.GetCountByCondition(cond, pars)
|
|
|
+ list, e := edbMappingOb.GetItemsByCondition(cond, pars, []string{}, "")
|
|
|
if e != nil {
|
|
|
br.Msg = "删除失败"
|
|
|
br.ErrMsg = fmt.Sprintf("获取源指标关联失败, %v", e)
|
|
|
return
|
|
|
}
|
|
|
- if count > 0 {
|
|
|
- br.Msg = "存在指标被引用, 不允许删除"
|
|
|
- return
|
|
|
+ for _, v := range list {
|
|
|
+ if !utils.InArrayByInt(usedIndexIds, v.BaseFromIndexId) {
|
|
|
+ usedIndexIds = append(usedIndexIds, v.BaseFromIndexId)
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- if e := indexOb.MultiRemove(params.IndexIds); e != nil {
|
|
|
- br.Msg = "删除失败"
|
|
|
- br.ErrMsg = fmt.Sprintf("批量删除指标失败, %v", e)
|
|
|
- return
|
|
|
+ // 可删除的指标
|
|
|
+ removeIndexIds := params.IndexIds
|
|
|
+ if len(usedIndexIds) > 0 {
|
|
|
+ removeIndexIds = utils.MinusInt(params.IndexIds, usedIndexIds)
|
|
|
+
|
|
|
+ // 标记不允许删除的
|
|
|
+ for _, v := range usedIndexIds {
|
|
|
+ t := indexMap[v]
|
|
|
+ if t == nil {
|
|
|
+ continue
|
|
|
+ }
|
|
|
+ resp.Fail = append(resp.Fail, &data_manage.ThsHfIndexBaseInfo{
|
|
|
+ IndexId: v,
|
|
|
+ IndexCode: t.IndexCode,
|
|
|
+ IndexName: t.IndexName,
|
|
|
+ })
|
|
|
+ }
|
|
|
}
|
|
|
- dataOb := new(data_manage.BaseFromThsHfData)
|
|
|
- cond := fmt.Sprintf(" %s IN (%s)", dataOb.Cols().BaseFromThsHfIndexId, utils.GetOrmInReplace(len(params.IndexIds)))
|
|
|
- pars := make([]interface{}, 0)
|
|
|
- pars = append(pars, params.IndexIds)
|
|
|
- if e := dataOb.RemoveByCondition(cond, pars); e != nil {
|
|
|
- br.Msg = "删除失败"
|
|
|
- br.ErrMsg = fmt.Sprintf("批量删除指标数据失败, %v", e)
|
|
|
- return
|
|
|
+
|
|
|
+ if len(removeIndexIds) > 0 {
|
|
|
+ if e := indexOb.MultiRemove(removeIndexIds); e != nil {
|
|
|
+ br.Msg = "删除失败"
|
|
|
+ br.ErrMsg = fmt.Sprintf("批量删除指标失败, %v", e)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ dataOb := new(data_manage.BaseFromThsHfData)
|
|
|
+ cond := fmt.Sprintf(" %s IN (%s)", dataOb.Cols().BaseFromThsHfIndexId, utils.GetOrmInReplace(len(removeIndexIds)))
|
|
|
+ pars := make([]interface{}, 0)
|
|
|
+ pars = append(pars, removeIndexIds)
|
|
|
+ if e := dataOb.RemoveByCondition(cond, pars); e != nil {
|
|
|
+ br.Msg = "删除失败"
|
|
|
+ br.ErrMsg = fmt.Sprintf("批量删除指标数据失败, %v", e)
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ // 标记删除成功的
|
|
|
+ for _, v := range removeIndexIds {
|
|
|
+ t := indexMap[v]
|
|
|
+ if t == nil {
|
|
|
+ continue
|
|
|
+ }
|
|
|
+ resp.Success = append(resp.Success, &data_manage.ThsHfIndexBaseInfo{
|
|
|
+ IndexId: v,
|
|
|
+ IndexCode: t.IndexCode,
|
|
|
+ IndexName: t.IndexName,
|
|
|
+ })
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -1294,6 +1348,7 @@ func (this *BaseFromThsHfController) MultiOpt() {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ br.Data = resp
|
|
|
br.Ret = 200
|
|
|
br.Success = true
|
|
|
br.Msg = "操作成功"
|