|
@@ -0,0 +1,264 @@
|
|
|
+package com.dragoninfo.dcuc.authweb.restcontroller.selfauth.controller;
|
|
|
+
|
|
|
+import com.alibaba.fastjson.JSON;
|
|
|
+import com.dragoninfo.dcuc.auth.auth.dto.*;
|
|
|
+import com.dragoninfo.dcuc.auth.auth.enumresources.WorkFlowSourceEnum;
|
|
|
+import com.dragoninfo.dcuc.auth.auth.facade.IAuthApplyFacade;
|
|
|
+import com.dragoninfo.dcuc.auth.auth.facade.IFunAuthResultFacade;
|
|
|
+import com.dragoninfo.dcuc.authweb.restcontroller.selfauth.vo.*;
|
|
|
+import com.dragoninfo.duceap.core.response.Result;
|
|
|
+import com.dragonsoft.duceap.base.entity.http.ResponseDTO;
|
|
|
+import com.dragonsoft.duceap.base.entity.http.ResponseStatus;
|
|
|
+import com.dragonsoft.duceap.core.search.Searchable;
|
|
|
+import com.dragonsoft.duceap.core.search.enums.SearchOperator;
|
|
|
+import io.swagger.annotations.Api;
|
|
|
+import io.swagger.annotations.ApiImplicitParam;
|
|
|
+import io.swagger.annotations.ApiImplicitParams;
|
|
|
+import io.swagger.annotations.ApiOperation;
|
|
|
+import org.springframework.beans.BeanUtils;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.data.domain.Page;
|
|
|
+import org.springframework.web.bind.annotation.*;
|
|
|
+
|
|
|
+import java.util.*;
|
|
|
+import java.util.stream.Collectors;
|
|
|
+
|
|
|
+
|
|
|
+/**
|
|
|
+ * @author mazq
|
|
|
+ * @date 2021/7/7
|
|
|
+ */
|
|
|
+@Api(tags = "权限自助申请接口")
|
|
|
+@RestController
|
|
|
+@RequestMapping(value = "/authsvr/v2/selfauth")
|
|
|
+public class SelfAuthAppLyController {
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ IAuthApplyFacade selfAuthApplyFacade;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ IFunAuthResultFacade appFunResultFacade;
|
|
|
+
|
|
|
+ @ApiOperation(value = "权限申请单列表")
|
|
|
+ @ApiImplicitParam(name = "searchable", value = "searchable 查询条件flowTitle like; applyType eq ;" +
|
|
|
+ "createTime ge (大于等于); createTime le (小于等于)时间格式:yyyy-MM-dd HH:mm:ss")
|
|
|
+ @PostMapping(value = "authApplySearch")
|
|
|
+ public Result<List<WorkFlowPageViewVo>> authApplySearch(Searchable searchable) {
|
|
|
+ if(null == searchable) {
|
|
|
+ searchable = Searchable.newSearchable();
|
|
|
+ }
|
|
|
+ searchable.addSearchFilter("applySource", SearchOperator.eq, WorkFlowSourceEnum.SELF_AUTH_APPLY.getValue());
|
|
|
+ Page<WorkFlowPageViewDTO> dtoPage = selfAuthApplyFacade.authApplySearch(searchable.toSearchDTO());
|
|
|
+ List<WorkFlowPageViewVo> viewVos = dtoPage.getContent().stream().map(item -> {
|
|
|
+ WorkFlowPageViewVo viewVo = new WorkFlowPageViewVo();
|
|
|
+ BeanUtils.copyProperties(item, viewVo);
|
|
|
+ return viewVo;
|
|
|
+ }).collect(Collectors.toList());
|
|
|
+ return Result.success(dtoPage.getTotalElements(), viewVos);
|
|
|
+ }
|
|
|
+
|
|
|
+ @ApiOperation(value = "权限申请单撤销")
|
|
|
+ @ApiImplicitParam(name = "id", value = "工作流审批单号")
|
|
|
+ @GetMapping(value = "authApplyCancel")
|
|
|
+ public Result authApplyCancel(@RequestParam("applyOrdNo") String applyOrdNo) {
|
|
|
+ ResponseStatus status = selfAuthApplyFacade.authApplyCancel(applyOrdNo);
|
|
|
+ return dealResult(status);
|
|
|
+ }
|
|
|
+
|
|
|
+ @ApiOperation(value = "权限申请单删除")
|
|
|
+ @ApiImplicitParam(name = "applyOrdNo", value = "工作流审批单号")
|
|
|
+ @DeleteMapping(value = "authApplyDelete")
|
|
|
+ public Result authApplyDelete(@RequestParam("applyOrdNo") String applyOrdNo) {
|
|
|
+ ResponseStatus status = selfAuthApplyFacade.authApplyDelete(applyOrdNo);
|
|
|
+ return dealResult(status);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ @ApiOperation(value = "应用功能授权申请保存")
|
|
|
+ @PostMapping(value = "funApplySave")
|
|
|
+ public Result funApplySave(@RequestBody AppFunAuthApplyVo vo) {
|
|
|
+ String jsonString = JSON.toJSONString(vo);
|
|
|
+ AppFunAuthApplyDTO authApplyDTO = JSON.parseObject(jsonString, AppFunAuthApplyDTO.class);
|
|
|
+ WorkFlowDTO workFlow = authApplyDTO.getWorkFlow();
|
|
|
+ workFlow.setApplySource(WorkFlowSourceEnum.SELF_AUTH_APPLY.getValue());
|
|
|
+ Date endTime = getEndTime(workFlow.getEndTime());
|
|
|
+ workFlow.setEndTime(endTime);
|
|
|
+ ResponseStatus status = selfAuthApplyFacade.funApplySave(authApplyDTO);
|
|
|
+ return dealResult(status);
|
|
|
+ }
|
|
|
+
|
|
|
+ private Result dealResult(ResponseStatus status) {
|
|
|
+ if (!ResponseStatus.SUCCESS_CODE.equals(status.getStatusCode())) {
|
|
|
+ return Result.fail(status.getStatusCode(), status.getMessage());
|
|
|
+ } else {
|
|
|
+ return Result.success();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private Date getEndTime(Date endTime) {
|
|
|
+ if (null != endTime) {
|
|
|
+ Calendar calendar = Calendar.getInstance();
|
|
|
+ calendar.setTime(endTime);
|
|
|
+ calendar.add(Calendar.HOUR, 23);
|
|
|
+ calendar.add(Calendar.MINUTE, 59);
|
|
|
+ calendar.add(Calendar.SECOND, 59);
|
|
|
+ return calendar.getTime();
|
|
|
+ }
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
+ @ApiOperation(value = "应用功能权限申请详情")
|
|
|
+ @ApiImplicitParams({
|
|
|
+ @ApiImplicitParam(name = "applyOrdNo", value = "工作流审批单号"),
|
|
|
+ @ApiImplicitParam(name = "needFlowInfo", value = "needFlowInfo 是否需要查询工作流相关信息")
|
|
|
+ })
|
|
|
+ @GetMapping(value = "funApplyDetail")
|
|
|
+ public Result<FunApplyDetailVo> funApplyDetail(@RequestParam("applyOrdNo") String applyOrdNo,
|
|
|
+ @RequestParam(value = "needFlowInfo", required = false) Boolean needFlowInfo) {
|
|
|
+ if(null == needFlowInfo) {
|
|
|
+ needFlowInfo = false;
|
|
|
+ }
|
|
|
+ FunApplyDetailDTO detailDTO = selfAuthApplyFacade.funApplyDetail(applyOrdNo, needFlowInfo);
|
|
|
+ FunApplyDetailVo detailVo = convertToDetailVo(detailDTO);
|
|
|
+ return Result.success(detailVo);
|
|
|
+ }
|
|
|
+
|
|
|
+ private FunApplyDetailVo convertToDetailVo(FunApplyDetailDTO detailDTO) {
|
|
|
+ FunApplyDetailVo detailVo = new FunApplyDetailVo();
|
|
|
+ WorkFlowDTO workFlow = detailDTO.getWorkFlow();
|
|
|
+ WorkFlowVo workFlowVo = new WorkFlowVo();
|
|
|
+ BeanUtils.copyProperties(workFlow, workFlowVo);
|
|
|
+ detailVo.setWorkFlow(workFlowVo);
|
|
|
+ List<AppFunAuthResourceDTO> resourceInfos = detailDTO.getResourceInfos();
|
|
|
+ List<AppFunAuthResourceVo> resourceVoList = Optional.ofNullable(resourceInfos).orElse(new ArrayList<>()).stream().map(item -> {
|
|
|
+ AppFunAuthResourceVo resourceVo = new AppFunAuthResourceVo();
|
|
|
+ BeanUtils.copyProperties(item, resourceVo);
|
|
|
+ return resourceVo;
|
|
|
+ }).collect(Collectors.toList());
|
|
|
+ detailVo.setResourceInfos(resourceVoList);
|
|
|
+
|
|
|
+ List<AppFunAuthResourceDTO> delResourceInfos = detailDTO.getDelResourceInfos();
|
|
|
+ List<AppFunAuthResourceVo> delVoList = Optional.ofNullable(delResourceInfos).orElse(new ArrayList<>())
|
|
|
+ .stream().map(item -> {
|
|
|
+ AppFunAuthResourceVo resourceVo = new AppFunAuthResourceVo();
|
|
|
+ BeanUtils.copyProperties(item, resourceVo);
|
|
|
+ return resourceVo;
|
|
|
+ }).collect(Collectors.toList());
|
|
|
+ detailVo.setDelResourceInfos(delVoList);
|
|
|
+
|
|
|
+
|
|
|
+ List<AppFunAuthResourceDTO> existResourceInfos = detailDTO.getExistResourceInfos();
|
|
|
+ List<AppFunAuthResourceVo> existVoList = Optional.ofNullable(existResourceInfos).orElse(new ArrayList<>())
|
|
|
+ .stream().map(item -> {
|
|
|
+ AppFunAuthResourceVo resourceVo = new AppFunAuthResourceVo();
|
|
|
+ BeanUtils.copyProperties(item, resourceVo);
|
|
|
+ return resourceVo;
|
|
|
+ }).collect(Collectors.toList());
|
|
|
+ detailVo.setExistResourceInfos(existVoList);
|
|
|
+
|
|
|
+ return detailVo;
|
|
|
+ }
|
|
|
+
|
|
|
+ @ApiOperation(value = "应用功能权限申请修改")
|
|
|
+ @PostMapping(value = "funApplyUpdate")
|
|
|
+ public Result funApplyUpdate(@RequestBody AppFunApplyUpdateVo vo){
|
|
|
+ String jsonString = JSON.toJSONString(vo);
|
|
|
+ AppFunApplyUpdateDTO updateDTO = JSON.parseObject(jsonString, AppFunApplyUpdateDTO.class);
|
|
|
+ Date endTime = getEndTime(updateDTO.getEndTime());
|
|
|
+ updateDTO.setEndTime(endTime);
|
|
|
+ ResponseStatus status = selfAuthApplyFacade.funApplyUpdate(updateDTO);
|
|
|
+ return dealResult(status);
|
|
|
+ }
|
|
|
+
|
|
|
+ @ApiOperation(value = "应用功能权限结果列表")
|
|
|
+ @ApiImplicitParam(name = "searchable", value = "searchable 查询条件")
|
|
|
+ @PostMapping(value = "funAuthList")
|
|
|
+ public Result<List<AppFunAuthResultVo>> funAuthList(Searchable searchable){
|
|
|
+ List<AppFunAuthResultDTO> authResultList = appFunResultFacade.findList(searchable.toSearchDTO());
|
|
|
+ List<AppFunAuthResultVo> resultVos = authResultList.stream().map(item -> {
|
|
|
+ AppFunAuthResultVo resultVo = new AppFunAuthResultVo();
|
|
|
+ BeanUtils.copyProperties(item, resultVo);
|
|
|
+ return resultVo;
|
|
|
+ }).collect(Collectors.toList());
|
|
|
+ return Result.success(resultVos);
|
|
|
+ }
|
|
|
+
|
|
|
+ @ApiOperation(value = "获取申请人已被授权的功能id")
|
|
|
+ @ApiImplicitParams(value = {
|
|
|
+ @ApiImplicitParam(name = "userId", value = "用户id"),
|
|
|
+ @ApiImplicitParam(name = "appId", value = "应用id 非必填,不选时查询所有应用")
|
|
|
+ })
|
|
|
+ @GetMapping(value = "userHasAuthFunIds")
|
|
|
+ public Result<List<String>> userHasAuthFunIds(@RequestParam("userId") String userId,
|
|
|
+ @RequestParam(value = "appId" ,required = false) String appId) {
|
|
|
+ List<String> funIds = appFunResultFacade.userHasAuthFunIds(userId, appId);
|
|
|
+ return Result.success(funIds);
|
|
|
+ }
|
|
|
+
|
|
|
+ @ApiOperation(value = "查询审批流程意见")
|
|
|
+ @ApiImplicitParam(name = "applyOrdNo", value = "工作流审批单号")
|
|
|
+ @GetMapping(value = "approvalSuggestion")
|
|
|
+ public Result<List<ApprovalSuggestionVo>> approvalSuggestion(@RequestParam(value = "applyOrdNo") String applyOrdNo){
|
|
|
+ List<ApprovalSuggestionDTO> dtoList = selfAuthApplyFacade.approvalSuggestion(applyOrdNo);
|
|
|
+ List<ApprovalSuggestionVo> collect = dtoList.stream().map(item -> {
|
|
|
+ ApprovalSuggestionVo suggestionVo = new ApprovalSuggestionVo();
|
|
|
+ BeanUtils.copyProperties(item, suggestionVo);
|
|
|
+ return suggestionVo;
|
|
|
+ }).collect(Collectors.toList());
|
|
|
+ return Result.success(collect);
|
|
|
+ }
|
|
|
+
|
|
|
+ @ApiOperation(value = "查询流程状态信息")
|
|
|
+ @ApiImplicitParam(name = "applyOrdNo", value = "工作流审批单号")
|
|
|
+ @GetMapping(value = "processStatusView")
|
|
|
+ public Result<List<ProcessStatusVo>> processStatusView(@RequestParam(value = "applyOrdNo") String applyOrdNo) {
|
|
|
+ List<ProcessStatusDTO> dtoList = selfAuthApplyFacade.processStatusView(applyOrdNo);
|
|
|
+ List<ProcessStatusVo> collect = dtoList.stream().map(item -> {
|
|
|
+ ProcessStatusVo statusVo = new ProcessStatusVo();
|
|
|
+ BeanUtils.copyProperties(item, statusVo);
|
|
|
+ return statusVo;
|
|
|
+ }).collect(Collectors.toList());
|
|
|
+ return Result.success(collect);
|
|
|
+ }
|
|
|
+
|
|
|
+ @ApiOperation(value = "查询流程图信息")
|
|
|
+ @ApiImplicitParam(name = "applyOrdNo", value = "工作流审批单号")
|
|
|
+ @GetMapping(value = "processPicView")
|
|
|
+ public Result<ProcessPicVo> processPicView(@RequestParam(value = "applyOrdNo") String applyOrdNo) {
|
|
|
+ ProcessPicDTO picDTO = selfAuthApplyFacade.processPicView(applyOrdNo);
|
|
|
+ ProcessPicVo picVo = new ProcessPicVo();
|
|
|
+ BeanUtils.copyProperties(picDTO, picVo);
|
|
|
+ return Result.success(picVo);
|
|
|
+ }
|
|
|
+
|
|
|
+ @ApiOperation(value = "查询流程状图节点详情")
|
|
|
+ @ApiImplicitParams(value = {
|
|
|
+ @ApiImplicitParam(name = "applyOrdNo", value = "工作流审批单号"),
|
|
|
+ @ApiImplicitParam(name = "nodeKey", value = "工作流节点标识"),
|
|
|
+ @ApiImplicitParam(name = "nodeStatus", value = "节点状态")
|
|
|
+ })
|
|
|
+ @GetMapping(value = "processNodeView")
|
|
|
+ public Result<ProcessNodeVo> processNodeView(@RequestParam(value = "applyOrdNo") String applyOrdNo,
|
|
|
+ @RequestParam(value = "nodeKey") String nodeKey,
|
|
|
+ @RequestParam(value = "nodeStatus") String nodeStatus) {
|
|
|
+ ProcessNodeDTO nodeDTO = selfAuthApplyFacade.processNodeView(applyOrdNo, nodeKey, nodeStatus);
|
|
|
+ ProcessNodeVo nodeVo = new ProcessNodeVo();
|
|
|
+ BeanUtils.copyProperties(nodeDTO, nodeVo);
|
|
|
+ return Result.success(nodeVo);
|
|
|
+ }
|
|
|
+
|
|
|
+ @ApiOperation(value = "查询流程定义详情")
|
|
|
+ @ApiImplicitParam(value = "applyType 审批类型")
|
|
|
+ @GetMapping("flowDefineInfo")
|
|
|
+ public Result<FlowDefineInfoVo> getFlowDefineInfo(@RequestParam(value = "applyType") String applyType) {
|
|
|
+ ResponseDTO<FlowDefineInfoDTO> status = selfAuthApplyFacade.getFlowDefineInfo(applyType);
|
|
|
+ if(!ResponseStatus.SUCCESS_CODE.equals(status.getStatusCode())) {
|
|
|
+ return Result.fail(status.getStatusCode(), status.getMessage());
|
|
|
+ } else {
|
|
|
+ FlowDefineInfoDTO dto = (FlowDefineInfoDTO) status.getResult();
|
|
|
+ FlowDefineInfoVo vo = new FlowDefineInfoVo();
|
|
|
+ BeanUtils.copyProperties(dto, vo);
|
|
|
+ return Result.success(vo);
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|