package data_manage_permission import ( "errors" "eta/eta_api/models" "eta/eta_api/models/data_manage" "eta/eta_api/models/data_manage/excel" "eta/eta_api/models/system" "eta/eta_api/utils" "strconv" ) // GetMoveEdbChartList 获取待转移的指标/图表列表 // @param source 来源 :1:手工数据指标 2:钢联化工数据库 3:ETA指标库 4:ETA预测指标 5:图库 6:ETA表格 func GetMoveEdbChartList(source, subSource, userId int, keyword, classify string, startSize, pageSize int) (list []data_manage.MoveEdbChartList, total int, err error) { var condition string var pars []interface{} switch source { case 1: //手工数据指标 if keyword != "" { condition += ` AND (a.SEC_NAME LIKE ? OR a.TRADE_CODE like ? ) ` pars = utils.GetLikeKeywordPars(pars, keyword, 2) } if userId > 0 { condition += ` AND a.user_id = ? ` pars = append(pars, userId) } if classify != "" { condition += ` AND a.classify_id IN (` + classify + `) ` } total, err = models.GetEdbinfoListCount(condition, pars, "", 0) if err != nil { return } tmpList, tmpErr := models.GetEdbinfoList(condition, pars, startSize, pageSize, "", 0) if tmpErr != nil { err = tmpErr return } if len(tmpList) > 0 { adminIdList := make([]int, 0) for _, v := range tmpList { adminIdList = append(adminIdList, v.UserId) } adminList, tmpErr := system.GetAdminListByIdListWithoutEnable(adminIdList) if tmpErr != nil { err = tmpErr return } adminMap := make(map[int]string) for _, adminInfo := range adminList { adminMap[adminInfo.AdminId] = adminInfo.RealName } for _, v := range tmpList { list = append(list, data_manage.MoveEdbChartList{ DataId: v.TradeCode, Code: v.TradeCode, Name: v.SecName, ClassifyName: v.ClassifyName, CreateUserId: v.UserId, CreateUserName: adminMap[v.UserId], }) } } case 2: //钢联化工数据库 if keyword != `` { condition += " AND (index_name like ? OR index_code like ? OR sys_user_real_name like ? ) " pars = utils.GetLikeKeywordPars(pars, keyword, 3) } if userId > 0 { condition += ` AND sys_user_id = ? ` pars = append(pars, userId) } if classify != "" { condition += ` AND base_from_mysteel_chemical_classify_id IN (` + classify + `) ` } total, err = data_manage.GetMysteelChemicalIndexCount(condition, pars) if err != nil { return } tmpList, tmpErr := data_manage.GetMysteelChemicalIndexList(condition, pars, startSize, pageSize) if tmpErr != nil { err = tmpErr return } for _, v := range tmpList { list = append(list, data_manage.MoveEdbChartList{ DataId: strconv.Itoa(v.BaseFromMysteelChemicalIndexId), Code: v.IndexCode, Name: v.IndexName, //ClassifyName: v., CreateUserId: v.SysUserId, CreateUserName: v.SysUserRealName, }) } case 3, 4: //ETA指标库、ETA预测指标 if keyword != `` { condition += " AND (edb_code like ? OR edb_name like ? OR sys_user_real_name like ? ) " pars = utils.GetLikeKeywordPars(pars, keyword, 3) } if userId > 0 { condition += ` AND sys_user_id = ? ` pars = append(pars, userId) } if classify != "" { condition += ` AND classify_id IN (` + classify + `) ` } edbInfoType := 0 //ETA指标库 if source == 4 { //ETA预测指标 edbInfoType = 1 } condition += ` AND edb_info_type = ? ` pars = append(pars, edbInfoType) total, err = data_manage.GetEdbInfoByConditionCount(condition, pars) if err != nil { return } tmpList, tmpErr := data_manage.GetEdbInfoListByCondition(condition, pars, startSize, pageSize) if tmpErr != nil { err = tmpErr return } for _, v := range tmpList { list = append(list, data_manage.MoveEdbChartList{ DataId: strconv.Itoa(v.EdbInfoId), Code: v.EdbCode, Name: v.EdbName, //ClassifyName: v., CreateUserId: v.SysUserId, CreateUserName: v.SysUserRealName, }) } case 5: //图库 if keyword != `` { condition += " AND (chart_name like ? OR sys_user_real_name like ? ) " pars = utils.GetLikeKeywordPars(pars, keyword, 2) } if userId > 0 { condition += ` AND sys_user_id = ? ` pars = append(pars, userId) } if classify != "" { condition += ` AND chart_classify_id IN (` + classify + `) ` } total, err = data_manage.GetChartInfoCountByCondition(condition, pars) if err != nil { return } tmpList, tmpErr := data_manage.GetChartInfoListByCondition(condition, pars, startSize, pageSize) if tmpErr != nil { err = tmpErr return } // 获取所有的图表分类 firstClassifyList, tmpErr := data_manage.GetChartClassifyByParentId(0, 1) if tmpErr != nil { err = tmpErr return } firstClassifyNameMap := make(map[int]string) for _, v := range firstClassifyList { firstClassifyNameMap[v.ChartClassifyId] = v.ChartClassifyName } secondClassList, tmpErr := data_manage.GetChartClassifyAll(1) if tmpErr != nil { err = tmpErr return } secondClassifyNameMap := make(map[int]string) for _, v := range secondClassList { firstName := firstClassifyNameMap[v.ParentId] if firstName != `` { firstName = firstName + " / " } secondClassifyNameMap[v.ChartClassifyId] = firstName + v.ChartClassifyName } for _, v := range tmpList { list = append(list, data_manage.MoveEdbChartList{ DataId: strconv.Itoa(v.ChartInfoId), Name: v.ChartName, ClassifyName: secondClassifyNameMap[v.ChartClassifyId], CreateUserId: v.SysUserId, CreateUserName: v.SysUserRealName, }) } case 6: //ETA表格 if keyword != `` { condition += " AND (excel_name like ? OR sys_user_real_name like ? ) " pars = utils.GetLikeKeywordPars(pars, keyword, 2) } if userId > 0 { condition += ` AND sys_user_id = ? ` pars = append(pars, userId) } if classify != "" { condition += ` AND excel_classify_id IN (` + classify + `) ` } condition += " AND source = ? " pars = append(pars, subSource) total, err = excel.GetExcelInfoCountByCondition(condition, pars) if err != nil { return } tmpList, tmpErr := excel.GetNoContentExcelInfoListByCondition(condition, pars, startSize, pageSize) if tmpErr != nil { err = tmpErr return } // 获取所有的图表分类 firstClassifyList, tmpErr := excel.GetExcelClassifyByParentId(0, subSource) if tmpErr != nil { err = tmpErr return } firstClassifyNameMap := make(map[int]string) for _, v := range firstClassifyList { firstClassifyNameMap[v.ExcelClassifyId] = v.ExcelClassifyName } secondClassList, tmpErr := excel.GetExcelClassifyBySource(subSource) if tmpErr != nil { err = tmpErr return } secondClassifyNameMap := make(map[int]string) for _, v := range secondClassList { firstName := firstClassifyNameMap[v.ParentId] if firstName != `` { firstName = firstName + " / " } secondClassifyNameMap[v.ExcelClassifyId] = firstName + v.ExcelClassifyName } for _, v := range tmpList { list = append(list, data_manage.MoveEdbChartList{ DataId: strconv.Itoa(v.ExcelInfoId), Name: v.ExcelClassifyName, ClassifyName: secondClassifyNameMap[v.ExcelClassifyId], CreateUserId: v.SysUserId, CreateUserName: v.SysUserRealName, }) } default: return } return } // TODO 资产转移要通知到用户(被转移的用户和新用户) // MoveEdbChart 转移指标/图表创建人 // @param source 来源 :1:手工数据指标 2:钢联化工数据库 3:ETA指标库 4:ETA预测指标 5:图库 6:ETA表格 func MoveEdbChart(source, subSource, oldUserId, newUserId int, isSelectAll bool, dataId, noDataId []string, keyword, classify string) (err error, errMsg string) { adminInfo, err := system.GetSysAdminById(newUserId) if err != nil { return } // 如果勾选全部数据,那么 if isSelectAll { // 找出不要的指标ID列表 noDataIdMap := make(map[string]string, 0) for _, v := range noDataId { noDataIdMap[v] = v } // 需要转义的指标/图表ID列表 dataId = make([]string, 0) // 获取所有指标/图表 list, _, tmpErr := GetMoveEdbChartList(source, subSource, oldUserId, keyword, classify, 0, 100000) if tmpErr != nil { err = tmpErr return } for _, v := range list { if _, ok := noDataIdMap[v.DataId]; !ok { dataId = append(dataId, v.DataId) } } } switch source { case 1: //手工数据指标 tmpList, tmpErr := models.GetEdbinfoListByCodeListGroupByUserId(dataId) if tmpErr != nil { err = tmpErr return } if len(tmpList) > 0 { for _, v := range tmpList { if v.UserId == newUserId { errMsg = "新创建人不可和原创建人一致" err = errors.New(errMsg) return } } // 修改创建人 err = models.ModifyEdbinfoUserIdByCodeList(dataId, newUserId) } case 2: //钢联化工数据库 tmpList, tmpErr := data_manage.GetMysteelChemicalIndexListGroupByUserId(dataId) if tmpErr != nil { err = tmpErr return } if len(tmpList) > 0 { for _, v := range tmpList { if v.SysUserId == newUserId { errMsg = "新创建人不可和原创建人一致" err = errors.New(errMsg) return } } // 修改创建人 err = data_manage.ModifyMysteelChemicalIndexUserIdByCodeList(dataId, adminInfo.AdminId, adminInfo.RealName) } case 3, 4: //ETA指标库、ETA预测指标 tmpList, tmpErr := data_manage.GetEdbInfoListGroupByUserId(dataId) if tmpErr != nil { err = tmpErr return } if len(tmpList) > 0 { for _, v := range tmpList { if v.SysUserId == newUserId { errMsg = "新创建人不可和原创建人一致" err = errors.New(errMsg) return } } // 修改创建人 err = data_manage.ModifyEdbInfoUserIdByCodeList(dataId, adminInfo.AdminId, adminInfo.RealName) // 移除当前用户的不可操作权限 { obj := data_manage.EdbInfoNoPermissionAdmin{} for _, v := range dataId { edbInfoId, _ := strconv.Atoi(v) go obj.DeleteByEdbInfoIdAndAdminId(edbInfoId, adminInfo.AdminId) } } } case 5: //图库 tmpList, tmpErr := data_manage.GetChartInfoListGroupByUserId(dataId) if tmpErr != nil { err = tmpErr return } if len(tmpList) > 0 { for _, v := range tmpList { if v.SysUserId == newUserId { errMsg = "新创建人不可和原创建人一致" err = errors.New(errMsg) return } } // 修改创建人 err = data_manage.ModifyChartInfoUserIdByCodeList(dataId, adminInfo.AdminId, adminInfo.RealName) } case 6: // ETA表格 tmpList, tmpErr := excel.GetNoContentExcelListGroupByUserId(dataId) if tmpErr != nil { err = tmpErr return } if len(tmpList) > 0 { for _, v := range tmpList { if v.SysUserId == newUserId { errMsg = "新创建人不可和原创建人一致" err = errors.New(errMsg) return } } // 修改创建人 err = excel.ModifyExcelInfoUserIdByCodeList(dataId, adminInfo.AdminId, adminInfo.RealName) } default: return } return }