package com.dragoninfo.dcuc.authweb.restcontroller.auth; import com.dragoninfo.dcuc.app.entity.ApplyInfo; import com.dragoninfo.dcuc.app.facade.IApplyInfoFacade; import com.dragoninfo.dcuc.auth.auth.facade.IRoleAuthInfoFacade; import com.dragoninfo.dcuc.auth.auth.vo.TreeInfoVO; import com.dragoninfo.dcuc.authweb.restcontroller.auth.vo.AppDropDownVo; import com.dragoninfo.dcuc.authweb.restcontroller.auth.vo.AppRoleCalculateVo; import com.dragoninfo.dcuc.authweb.restcontroller.auth.vo.OrgRptOpeVo; import com.dragoninfo.dcuc.org.entity.OrgInfo; import com.dragoninfo.dcuc.org.facade.IOrgInfoFacade; import com.dragoninfo.duceap.core.response.Result; import com.dragonsoft.duceap.base.entity.search.SearchDTO; import com.dragonsoft.duceap.base.enums.BooleanEnum; import com.dragonsoft.duceap.commons.util.string.StringUtils; import com.dragonsoft.duceap.core.entity.page.PageImpl; import com.dragonsoft.duceap.core.search.Searchable; import com.dragonsoft.duceap.core.search.enums.SearchOperator; import com.dragonsoft.duceap.web.annotation.Permission; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Page; import org.springframework.http.MediaType; import org.springframework.web.bind.annotation.*; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @Api(tags = {"统计报表管理接口"}) @RestController @RequestMapping(value = "/authsvr/v2/rolerpt") public class RoleRptController { /** * 角色权限信息服务 */ @Autowired private IRoleAuthInfoFacade roleAuthInfoFacade; /** * 机构信息服务 */ @Autowired private IOrgInfoFacade iOrgInfoFacade; /** * 应用信息服务 */ @Autowired private IApplyInfoFacade applyInfoFacade; /** * 角色授权报表列表 * * @param searchDTO 查询条件 * @return 角色授权报表列表 */ @ApiOperation(value = "角色授权报表列表") @ApiImplicitParam(name = "searchDTO", value = "查询条件,appId不能为空") @Permission(value = "role_auth") @PostMapping(value = "/roleRptList/_search") public Result> roleRptList(SearchDTO searchDTO) { Searchable searchable = Searchable.toSearchable(searchDTO); String appId = searchable.getSearchFilterByKey("appId_eq").getValue().toString(); Page page = new PageImpl(); if (StringUtils.isNotEmpty(appId)) { ApplyInfo applyInfo = applyInfoFacade.applyDetail(appId); String appOrgId = applyInfo.getOrgId(); //机构下的分配情况,经过权限中心导入的应用机构id不是不填项 if(StringUtils.isBlank(appOrgId)) { return Result.success(page.getTotalElements(),page.getContent()); } searchable.addSearchFilter("appOrgId", SearchOperator.eq, appOrgId); page = roleAuthInfoFacade.getRptList(searchable.toSearchDTO()); for (TreeInfoVO treeInfoVO : page.getContent()) { String orgId = treeInfoVO.getId(); OrgInfo orgInfo = iOrgInfoFacade.detail(orgId); if (orgInfo != null) { treeInfoVO.setCode(orgInfo.getCode()); treeInfoVO.setName(orgInfo.getFullName()); } } } return Result.success(page.getTotalElements(), page.getContent()); } /** * 获取应用角色配额统计信息 * * @param appId 应用id * @return 应用角色配额统计信息 */ @ApiOperation(value = "角色授权报表列表") @ApiImplicitParam(name = "appId", value = "应用id") @Permission(value = "role_auth") @GetMapping(value = "/getRoleQuotasInfo/{appId}") public Result getRoleTjInfo(@PathVariable("appId") String appId) { AppRoleCalculateVo vo = new AppRoleCalculateVo(); ApplyInfo applyInfo = applyInfoFacade.applyDetail(appId); String orgId = applyInfo.getOrgId(); //主客体授权版本,应用所属机构id可为空 if(StringUtils.isBlank(orgId)) { return Result.success(vo); } Map resultMap = roleAuthInfoFacade.getRoleTjInfo(appId, orgId); Object roleNumsObj = resultMap.get("ROLENUMS"); Object initNumsObj = resultMap.get("INITNUMS"); Integer roleNums = roleNumsObj == null ? 0 : (Integer) roleNumsObj; Integer initNums = initNumsObj == null ? 0 : (Integer) initNumsObj; vo.setRoleNums(roleNums); vo.setInitNums(initNums); vo.setAppId(appId); vo.setOrgId(orgId); return Result.success(vo); } /** * 根据选择机构展现该机构下所有机构报表信息 * * @param * @return 机构下所有机构的报表信息 */ @ApiOperation(value = "根据选择机构展现该机构下所有机构报表信息") @ApiImplicitParams({ @ApiImplicitParam(name = "appId", value = "应用id", required = true), @ApiImplicitParam(name = "orgId", value = "机构id", required = false), @ApiImplicitParam(name = "isInit", value = "是否初始化 true 初始化 false不是初始化", required = false) }) @Permission(value = "role_auth") @PostMapping(value = "/orgRptList/_search", produces = MediaType.APPLICATION_JSON_UTF8_VALUE) public Result> orgRptList(@RequestBody OrgRptOpeVo orgRptOpeVo) { String appId = orgRptOpeVo.getAppId(); String orgId = orgRptOpeVo.getOrgId(); Boolean isInit = orgRptOpeVo.getIsInit(); boolean init = isInit != null && isInit.booleanValue(); List orgList = roleAuthInfoFacade.getRptOrgListByPid(appId, orgId, init); return Result.success(orgList); } /** * 获取所有应用 * todo 该接口是否合理 * * @return 应用名列表 */ @ApiOperation(value = "获取所有应用") @ApiImplicitParam(name = "deleted", value = "是否删除 0:未删除 1:已删除", required = false) @GetMapping(value = "/getAppName") public Result> getAppName(@RequestParam(value = "deleted", required = false) String deleted) { //根据当前登录用户获取所属机构的应用列表 List applyInfoList = applyInfoFacade.getAllList(); List result = new ArrayList<>(); for (ApplyInfo applyInfo : applyInfoList) { if (BooleanEnum.TRUE.value.equals(applyInfo.getDeleted())) { continue; } AppDropDownVo vo = new AppDropDownVo(); vo.setCode(applyInfo.getId()); vo.setValue(applyInfo.getApplyName()); result.add(vo); } return Result.success(result); } }