|
@@ -1,13 +1,44 @@
|
|
|
package com.dragonsoft.dcuc.approve.facade.api;
|
|
|
|
|
|
+import cn.hutool.core.bean.BeanUtil;
|
|
|
+import cn.hutool.core.map.MapUtil;
|
|
|
+import cn.hutool.core.util.ObjectUtil;
|
|
|
+import com.dragoninfo.dcuc.common.utils.ResponseUtil;
|
|
|
+import com.dragoninfo.dcuc.duceap.enums.ManageDisposeTypeEnum;
|
|
|
+import com.dragonsoft.dcuc.approve.business.IBimBusiness;
|
|
|
+import com.dragonsoft.dcuc.approve.business.IWorkFlowBusiness;
|
|
|
+import com.dragonsoft.dcuc.approve.dto.OperateReqDTO;
|
|
|
+import com.dragonsoft.dcuc.approve.enumresources.*;
|
|
|
+import com.dragonsoft.dcuc.approve.model.ApproveRecordInfo;
|
|
|
+import com.dragonsoft.dcuc.approve.model.req.ApprovalInfoReqVO;
|
|
|
+import com.dragonsoft.dcuc.approve.model.req.ResourceInfoReqVO;
|
|
|
import com.dragonsoft.dcuc.approve.model.req.v3.ZeroTrustApproveCreateReqV3VO;
|
|
|
import com.dragonsoft.dcuc.approve.model.req.v3.ZeroTrustApproveManagerReqV3VO;
|
|
|
+import com.dragonsoft.dcuc.approve.model.resp.OperateRespVO;
|
|
|
+import com.dragonsoft.dcuc.approve.model.resp.bim.ZeroTrustAppItemUserTokenInfoRespVO;
|
|
|
+import com.dragonsoft.dcuc.approve.model.resp.bim.ZeroTrustAppTokenInfoRespVO;
|
|
|
import com.dragonsoft.dcuc.approve.model.resp.v3.ZeroTrustApproveCreateV3RespVO;
|
|
|
import com.dragonsoft.dcuc.approve.model.resp.v3.ZeroTrustMessageRespVO;
|
|
|
import com.dragonsoft.dcuc.approve.model.resp.v3.ZeroTrustResultDataVO;
|
|
|
+import com.dragonsoft.dcuc.approve.model.vo.ApproveTaskRequestVo;
|
|
|
+import com.dragonsoft.dcuc.approve.model.vo.TaskRequestUserInfoDTO;
|
|
|
+import com.dragonsoft.dcuc.approve.service.IApproveRecordService;
|
|
|
+import com.dragonsoft.dcuc.approve.service.IApproveService;
|
|
|
+import com.dragonsoft.dcuc.approve.utils.LangUtil;
|
|
|
+import com.dragonsoft.duceap.base.entity.http.ResponseDTO;
|
|
|
+import com.dragonsoft.duceap.commons.util.enums.EnumUtils;
|
|
|
+import com.dragonsoft.duceap.commons.util.json.JsonUtils;
|
|
|
+import com.dragonsoft.duceap.duwf.api.model.TaskRequest;
|
|
|
+import com.dragonsoft.duceap.duwf.api.model.WorkflowProcessVo;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.web.bind.annotation.RestController;
|
|
|
|
|
|
+import java.util.Collections;
|
|
|
+import java.util.Date;
|
|
|
+import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
+
|
|
|
/**
|
|
|
* <p>
|
|
|
*
|
|
@@ -19,13 +50,161 @@ import org.springframework.web.bind.annotation.RestController;
|
|
|
@Slf4j
|
|
|
@RestController
|
|
|
public class ApiV3ApproveFacade implements IApiV3ApproveFacade {
|
|
|
+
|
|
|
+ private IApproveService approveService;
|
|
|
+
|
|
|
+ private IApproveRecordService approveRecordService;
|
|
|
+
|
|
|
+ private IWorkFlowBusiness workFlowBusiness;
|
|
|
+
|
|
|
+ private IBimBusiness bimBusiness;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ public void setApproveService(IApproveService approveService) {
|
|
|
+ this.approveService = approveService;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ public void setApproveRecordService(IApproveRecordService approveRecordService) {
|
|
|
+ this.approveRecordService = approveRecordService;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ public void setWorkFlowBusiness(IWorkFlowBusiness workFlowBusiness) {
|
|
|
+ this.workFlowBusiness = workFlowBusiness;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ public void setBimBusiness(IBimBusiness bimBusiness) {
|
|
|
+ this.bimBusiness = bimBusiness;
|
|
|
+ }
|
|
|
+
|
|
|
@Override
|
|
|
public ZeroTrustResultDataVO<ZeroTrustApproveCreateV3RespVO> create(ZeroTrustApproveCreateReqV3VO zeroTrustApproveCreateReqV3VO) {
|
|
|
- return null;
|
|
|
+ String appTokenId = zeroTrustApproveCreateReqV3VO.getAppTokenId();
|
|
|
+ String processDefId = zeroTrustApproveCreateReqV3VO.getProcessDefId();
|
|
|
+ String title = zeroTrustApproveCreateReqV3VO.getTitle();
|
|
|
+ String approveTaskClass = zeroTrustApproveCreateReqV3VO.getTaskClass();
|
|
|
+ String approveTaskId = zeroTrustApproveCreateReqV3VO.getTaskId();
|
|
|
+
|
|
|
+ String callbackUrl = zeroTrustApproveCreateReqV3VO.getCallbackUrl();
|
|
|
+ String callerSign = zeroTrustApproveCreateReqV3VO.getCallerSign();
|
|
|
+ // 校验必填参数
|
|
|
+ if (LangUtil.isAnyBlank(appTokenId, processDefId, title, approveTaskClass, approveTaskId, callbackUrl, callerSign)) {
|
|
|
+ return ZeroTrustResultDataVO.operateFailMessage("请传入必填参数");
|
|
|
+ }
|
|
|
+ // todo 验证签名
|
|
|
+
|
|
|
+ Map<String, List<Map<String, String>>> bo = zeroTrustApproveCreateReqV3VO.getBo();
|
|
|
+ Map<String, String> bizData = zeroTrustApproveCreateReqV3VO.getBizData();
|
|
|
+
|
|
|
+ ZeroTrustAppTokenInfoRespVO appTokenInfo = bimBusiness.getAppTokenInfo(appTokenId);
|
|
|
+ if (ObjectUtil.isNull(appTokenInfo)) {
|
|
|
+ return ZeroTrustResultDataVO.resultEnumMessage(ZeroTrustBusinessRespEnum.TOKEN_FAIL);
|
|
|
+ }
|
|
|
+ ZeroTrustAppItemUserTokenInfoRespVO userToken = appTokenInfo.getUserToken();
|
|
|
+ // todo 查询应用令牌信息,获取人员信息
|
|
|
+ String appCode = appTokenInfo.getAppId();
|
|
|
+ String applicantIdcard = userToken.getPid();
|
|
|
+ String applicantName = userToken.getName();
|
|
|
+ String applicantOrgCode = userToken.getOrgCode();
|
|
|
+ String applicantOrgName = "";
|
|
|
+ String applicantPhoneNo = "";
|
|
|
+
|
|
|
+ // 获取processType并校验
|
|
|
+ WorkflowProcessVo workflowProcessVo = workFlowBusiness.queryWorkflowProcessByBusinessCode(processDefId);
|
|
|
+ if (ObjectUtil.isNull(workflowProcessVo)) {
|
|
|
+ return ZeroTrustResultDataVO.operateFailMessage("流程标识不存在");
|
|
|
+ }
|
|
|
+ String processType = workflowProcessVo.getProcessType();
|
|
|
+ String content = "";
|
|
|
+ if (MapUtil.isNotEmpty(bo)) {
|
|
|
+ content = JsonUtils.toJSONString(bo);
|
|
|
+ }
|
|
|
+
|
|
|
+ ResourceInfoReqVO resourceInfoReqVO = new ResourceInfoReqVO();
|
|
|
+ if (MapUtil.isNotEmpty(bizData)) {
|
|
|
+ BeanUtil.copyProperties(bizData, resourceInfoReqVO);
|
|
|
+ }
|
|
|
+
|
|
|
+ ApprovalInfoReqVO approvalInfoReqVO = new ApprovalInfoReqVO();
|
|
|
+ approvalInfoReqVO.setProcessTitle(title);
|
|
|
+ approvalInfoReqVO.setProcessType(processType);
|
|
|
+ approvalInfoReqVO.setBusinessCode(processDefId);
|
|
|
+ approvalInfoReqVO.setAppCode(appCode);
|
|
|
+ approvalInfoReqVO.setApplyContent(content);
|
|
|
+ approvalInfoReqVO.setApplyReason(title + "申请");
|
|
|
+ approvalInfoReqVO.setApplicantIdcard(applicantIdcard);
|
|
|
+ approvalInfoReqVO.setApplicantName(applicantName);
|
|
|
+ approvalInfoReqVO.setApplicantOrgCode(applicantOrgCode);
|
|
|
+ approvalInfoReqVO.setApplicantOrgName(applicantOrgName);
|
|
|
+ approvalInfoReqVO.setApplicantPhoneNo(applicantPhoneNo);
|
|
|
+ approvalInfoReqVO.setPermissionValidType(PermissionValidTypeEnum.LONG.getValue());
|
|
|
+ approvalInfoReqVO.setOperateType(CommitTypeEnum.APPLY_COMMIT.getValue());
|
|
|
+ approvalInfoReqVO.setResourceInfoDTO(resourceInfoReqVO);
|
|
|
+ approvalInfoReqVO.setCallbackUrl(callbackUrl);
|
|
|
+ approvalInfoReqVO.setApproveTaskClass(approveTaskClass);
|
|
|
+ approvalInfoReqVO.setApproveTaskId(approveTaskId);
|
|
|
+
|
|
|
+ ApproveRecordInfo approveRecordInfo = approveService.saveBase(approvalInfoReqVO, ManageDisposeTypeEnum.INSERT, new Date());
|
|
|
+ String processInstanceId = approveRecordInfo.getProcessInstanceId();
|
|
|
+ ZeroTrustApproveCreateV3RespVO zeroTrustApproveCreateV3RespVO = new ZeroTrustApproveCreateV3RespVO();
|
|
|
+ zeroTrustApproveCreateV3RespVO.setProcessInstId(processInstanceId);
|
|
|
+ return ZeroTrustResultDataVO.success(zeroTrustApproveCreateV3RespVO);
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
public ZeroTrustMessageRespVO manage(ZeroTrustApproveManagerReqV3VO zeroTrustApproveManagerReqV3VO) {
|
|
|
- return null;
|
|
|
+ String appTokenId = zeroTrustApproveManagerReqV3VO.getAppTokenId();
|
|
|
+ String processInstId = zeroTrustApproveManagerReqV3VO.getProcessInstId();
|
|
|
+ String actionType = zeroTrustApproveManagerReqV3VO.getActionType();
|
|
|
+
|
|
|
+ if (LangUtil.isAnyBlank(appTokenId, processInstId, actionType)) {
|
|
|
+ return ZeroTrustResultDataVO.operateFailMessage("请传入必填参数");
|
|
|
+ }
|
|
|
+
|
|
|
+ ZeroTrustApproveManageEnum zeroTrustApproveManageEnum = EnumUtils.enumOf(ZeroTrustApproveManageEnum.class, actionType);
|
|
|
+ if (ObjectUtil.isNull(zeroTrustApproveManageEnum)) {
|
|
|
+ return ZeroTrustResultDataVO.operateFailMessage("actionType,参数不正确");
|
|
|
+ }
|
|
|
+ ApproveWorkFlowOperationEnum approveWorkFlowOperationEnum = zeroTrustApproveManageEnum.toApproveWorkFlowOperationEnum();
|
|
|
+ if (ObjectUtil.isNull(approveWorkFlowOperationEnum)) {
|
|
|
+ return ZeroTrustResultDataVO.operateFailMessage("暂不支持该操作");
|
|
|
+ }
|
|
|
+
|
|
|
+ // 获取应用令牌中人员信息
|
|
|
+ ZeroTrustAppTokenInfoRespVO appTokenInfo = bimBusiness.getAppTokenInfo(appTokenId);
|
|
|
+ if (ObjectUtil.isNull(appTokenInfo)) {
|
|
|
+ return ZeroTrustResultDataVO.resultEnumMessage(ZeroTrustBusinessRespEnum.TOKEN_FAIL);
|
|
|
+ }
|
|
|
+ ZeroTrustAppItemUserTokenInfoRespVO userToken = appTokenInfo.getUserToken();
|
|
|
+ String idcard = userToken.getPid();
|
|
|
+ ApproveRecordInfo approveRecordInfo = approveRecordService.findByProcessInstanceId(processInstId);
|
|
|
+ if (ObjectUtil.isNull(approveRecordInfo)) {
|
|
|
+ return ZeroTrustResultDataVO.operateFailMessage("流程实例不存在");
|
|
|
+ }
|
|
|
+ String currentFlowTaskId = approveRecordInfo.getTaskId();
|
|
|
+
|
|
|
+ TaskRequestUserInfoDTO taskRequestUserInfoDTO = new TaskRequestUserInfoDTO();
|
|
|
+ taskRequestUserInfoDTO.setIdCard(idcard);
|
|
|
+
|
|
|
+ TaskRequest<ApproveTaskRequestVo> taskRequest = new TaskRequest<>();
|
|
|
+
|
|
|
+ OperateReqDTO operateReqDTO = OperateReqDTO.builder()
|
|
|
+ .taskId(currentFlowTaskId)
|
|
|
+ .processInstanceId(processInstId)
|
|
|
+ .approveWorkFlowOperationEnum(ApproveWorkFlowOperationEnum.RECALL)
|
|
|
+ .taskRequest(taskRequest)
|
|
|
+ .taskRequestUserInfoDTO(taskRequestUserInfoDTO)
|
|
|
+ .activitiHolderList(Collections.emptyList())
|
|
|
+ .needCheckRedList(false)
|
|
|
+ .build();
|
|
|
+
|
|
|
+ ResponseDTO<OperateRespVO> responseDTO = approveService.approveOperate(operateReqDTO);
|
|
|
+ if (ResponseUtil.isFail(responseDTO)) {
|
|
|
+ return ZeroTrustResultDataVO.operateFailMessage(responseDTO.getMessage());
|
|
|
+ }
|
|
|
+
|
|
|
+ return ZeroTrustMessageRespVO.messageEnumMessage(ZeroTrustBusinessRespEnum.SUCCESS);
|
|
|
}
|
|
|
}
|