|
@@ -1,6 +1,10 @@
|
|
|
package com.dragoninfo.dcuc.auth.auth.business.impl;
|
|
|
|
|
|
import cn.hutool.core.util.StrUtil;
|
|
|
+import com.alibaba.fastjson.JSON;
|
|
|
+import com.alibaba.fastjson.JSONArray;
|
|
|
+import com.alibaba.fastjson.JSONObject;
|
|
|
+import com.alibaba.fastjson.TypeReference;
|
|
|
import com.dragoninfo.dcuc.auth.auth.business.IAuthApplyBusiness;
|
|
|
import com.dragoninfo.dcuc.auth.auth.constance.AuthFlowOpeCons;
|
|
|
import com.dragoninfo.dcuc.auth.auth.dto.*;
|
|
@@ -11,28 +15,42 @@ import com.dragoninfo.dcuc.auth.auth.enumresources.WorkFlowSourceEnum;
|
|
|
import com.dragoninfo.dcuc.auth.auth.enumresources.WorkFlowStatusEnum;
|
|
|
import com.dragoninfo.dcuc.auth.auth.service.IAppFunAuthApplyService;
|
|
|
import com.dragoninfo.dcuc.auth.auth.service.IWorkFlowService;
|
|
|
-import com.dragoninfo.dcuc.auth.config.SubSyncConfig;
|
|
|
+import com.dragoninfo.dcuc.auth.config.DcucAuthApprovalConfig;
|
|
|
+import com.dragoninfo.dcuc.auth.config.DcucAuthConfig;
|
|
|
+import com.dragoninfo.dcuc.auth.constance.ApprovalApiConstance;
|
|
|
import com.dragoninfo.dcuc.auth.util.WorkFlowTimeUtil;
|
|
|
+import com.dragoninfo.dcuc.common.Constants;
|
|
|
+import com.dragoninfo.dcuc.common.entity.ApiPageReq;
|
|
|
+import com.dragoninfo.dcuc.common.entity.ApiSearchReq;
|
|
|
+import com.dragoninfo.dcuc.common.entity.SearchParam;
|
|
|
+import com.dragoninfo.dcuc.common.http.HttpUtil;
|
|
|
import com.dragoninfo.dcuc.duceap.enums.AuthApplyTypeEnum;
|
|
|
-import com.dragoninfo.dcuc.duceap.enums.OperateDisposeTypeEnum;
|
|
|
-import com.dragoninfo.dcuc.user.user.enumresources.OperateTypeEnum;
|
|
|
+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.base.entity.search.SearchDTO;
|
|
|
-import com.dragonsoft.duceap.base.exception.ApplicationException;
|
|
|
+import com.dragonsoft.duceap.base.utils.UserContextUtils;
|
|
|
import com.dragonsoft.duceap.commons.util.UUIDUtils;
|
|
|
+import com.dragonsoft.duceap.commons.util.string.StringUtils;
|
|
|
+import com.dragonsoft.duceap.core.context.ContextUtils;
|
|
|
import com.dragonsoft.duceap.core.search.Searchable;
|
|
|
import com.dragonsoft.duceap.core.search.enums.SearchOperator;
|
|
|
import com.dragonsoft.duceap.core.search.filter.Condition;
|
|
|
import com.google.common.base.Joiner;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
+import org.apache.http.Header;
|
|
|
+import org.apache.http.message.BasicHeader;
|
|
|
import org.springframework.beans.BeanUtils;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.data.domain.Page;
|
|
|
import org.springframework.data.domain.PageImpl;
|
|
|
+import org.springframework.data.domain.Pageable;
|
|
|
import org.springframework.stereotype.Component;
|
|
|
+import org.springframework.web.context.request.RequestAttributes;
|
|
|
+import org.springframework.web.context.request.RequestContextHolder;
|
|
|
+import org.springframework.web.context.request.ServletRequestAttributes;
|
|
|
|
|
|
-import java.text.SimpleDateFormat;
|
|
|
+import javax.servlet.http.HttpServletRequest;
|
|
|
import java.util.*;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
@@ -46,7 +64,10 @@ import java.util.stream.Collectors;
|
|
|
public class AuthApplyBusiness implements IAuthApplyBusiness {
|
|
|
|
|
|
@Autowired
|
|
|
- private SubSyncConfig subSyncConfig;
|
|
|
+ private DcucAuthConfig authConfig;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private DcucAuthApprovalConfig approvalConfig;
|
|
|
|
|
|
@Autowired
|
|
|
private IWorkFlowService workFlowService;
|
|
@@ -67,88 +88,228 @@ public class AuthApplyBusiness implements IAuthApplyBusiness {
|
|
|
workFlowDTO.setApplyType(applyType);
|
|
|
workFlowDTO.setApplySource(WorkFlowSourceEnum.SELF_AUTH_APPLY.getValue());
|
|
|
workFlowDTO.setMessageId(UUIDUtils.getUUID()+ StrUtil.COLON + applyType);
|
|
|
- workFlowDTO.setApplyAppCode(subSyncConfig.getAppCode());
|
|
|
+ workFlowDTO.setApplyAppCode(authConfig.getAppCode());
|
|
|
|
|
|
WorkFlow workFlow = workFlowService.saveWorkFlow(workFlowDTO);
|
|
|
List<AppFunAuthResourceDTO> authResources = authApplyDTO.getResourceInfos();
|
|
|
|
|
|
List<AppFunApplyContent> contentList = funAuthApplyService.saveAuthApplyDetail(workFlow, authResources);
|
|
|
- ResponseStatus status = funApplyPushToApproval(authApplyDTO, contentList);
|
|
|
+ String url = authConfig.getApprovalCenterUrl();
|
|
|
+ String api = ApprovalApiConstance.APPROVAL_CREATE_API;
|
|
|
+ url = Joiner.on(StrUtil.SLASH).join(url, api);
|
|
|
+ ResponseDTO status = funApplyPushToApproval(url, authApplyDTO, contentList);
|
|
|
|
|
|
if(!ResponseStatus.SUCCESS_CODE.equals(status.getStatusCode())){
|
|
|
workFlowService.delById(workFlow.getId());
|
|
|
+ } else {
|
|
|
+ String applicantOrdNo = status.getResult().toString();
|
|
|
+ workFlow.setApplicantOrdNo(applicantOrdNo);
|
|
|
+ workFlowService.update(workFlow);
|
|
|
}
|
|
|
return status;
|
|
|
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public Page<WorkFlowViewDTO> authApplySearch(SearchDTO searchDTO) {
|
|
|
+ public Page<WorkFlowPageViewDTO> authApplySearch(SearchDTO searchDTO) {
|
|
|
Searchable searchable = Searchable.toSearchable(searchDTO);
|
|
|
- parseTime(searchable);
|
|
|
- Page<WorkFlow> workFlowsPage = workFlowService.pageSearch(searchable);
|
|
|
- List<WorkFlow> content = workFlowsPage.getContent();
|
|
|
- List<WorkFlowViewDTO> collect = content.stream().map(item -> {
|
|
|
- WorkFlowViewDTO workFlowViewDTO = new WorkFlowViewDTO();
|
|
|
- BeanUtils.copyProperties(item, workFlowViewDTO);
|
|
|
- return workFlowViewDTO;
|
|
|
+
|
|
|
+ Result<List<WorkFlowPageViewDTO>> result = getApprovalList(searchable);
|
|
|
+ return new PageImpl<>(result.getContent(), searchable.getPage(), result.getTotalElements());
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ * 从审批中心获取申请单列表
|
|
|
+ * @param searchable
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ private Result<List<WorkFlowPageViewDTO>> getApprovalList(Searchable searchable) {
|
|
|
+ ApiSearchReq apiSearchReq = constructApiSearch(searchable);
|
|
|
+ String url = authConfig.getApprovalCenterUrl();
|
|
|
+ String api = ApprovalApiConstance.APPROVAL_PAGE_LIST_API;
|
|
|
+ String pageSearUrl = Joiner.on(StrUtil.SLASH).join(url, api);
|
|
|
+ List<Header> headers = getApprovalHeaders();
|
|
|
+ String responseJson = HttpUtil.postJSON(pageSearUrl, JSON.toJSONString(apiSearchReq), headers, null);
|
|
|
+ if(StringUtils.isBlank(responseJson)) {
|
|
|
+ return Result.fail();
|
|
|
+ }
|
|
|
+ Result<List<ApprovalPageViewDTO>> result = JSON.parseObject(responseJson, new TypeReference<Result<List<ApprovalPageViewDTO>>>() {{
|
|
|
+ }});
|
|
|
+ List<ApprovalPageViewDTO> content = result.getContent();
|
|
|
+ List<WorkFlowPageViewDTO> collect = content.stream().map(item -> {
|
|
|
+ WorkFlowPageViewDTO viewDTO = new WorkFlowPageViewDTO();
|
|
|
+ viewDTO.setApplyType(item.getFlowType());
|
|
|
+ viewDTO.setCreateTime(item.getCreateTime());
|
|
|
+ viewDTO.setDealOperator(item.getUnOperateUsers());
|
|
|
+ viewDTO.setFlowTitle(item.getProcessTitle());
|
|
|
+ viewDTO.setTaskName(item.getTaskName());
|
|
|
+ viewDTO.setApplyOrdNo(item.getApproveNo());
|
|
|
+ return viewDTO;
|
|
|
}).collect(Collectors.toList());
|
|
|
- setOperateFunction(collect);
|
|
|
- return new PageImpl<>(collect,workFlowsPage.getPageable(), workFlowsPage.getTotalElements());
|
|
|
+ return Result.success(result.getTotalElements(), collect);
|
|
|
+ }
|
|
|
+
|
|
|
+ private ApiSearchReq constructApiSearch(Searchable searchable) {
|
|
|
+ Condition flowTitle = searchable.getSearchFilter("flowTitle", SearchOperator.like);
|
|
|
+ Condition applyType = searchable.getSearchFilter("applyType", SearchOperator.eq);
|
|
|
+ Condition createTimeGe = searchable.getSearchFilter("createTime", SearchOperator.ge);
|
|
|
+ Condition createTimeLe = searchable.getSearchFilter("createTime", SearchOperator.le);
|
|
|
+ Pageable page = searchable.getPage();
|
|
|
+ int pageNumber = page.getPageNumber();
|
|
|
+ int pageSize = page.getPageSize();
|
|
|
+ Map<String, SearchParam> filters = new HashMap<>();
|
|
|
+ ApiSearchReq apiSearchReq = new ApiSearchReq();
|
|
|
+ if(flowTitle != null) {
|
|
|
+ SearchParam searchParam = new SearchParam();
|
|
|
+ searchParam.setOperator(SearchOperator.like.getValue());
|
|
|
+ searchParam.setValue(flowTitle.getValue());
|
|
|
+ filters.put("processTitle", searchParam);
|
|
|
+ }
|
|
|
+ if(applyType != null) {
|
|
|
+ SearchParam searchParam = new SearchParam();
|
|
|
+ searchParam.setOperator(SearchOperator.eq.getValue());
|
|
|
+ searchParam.setValue(applyType.getValue());
|
|
|
+ filters.put("flowType", searchParam);
|
|
|
+ }
|
|
|
+ if(createTimeGe != null) {
|
|
|
+ SearchParam searchParam = new SearchParam();
|
|
|
+ searchParam.setOperator(SearchOperator.ge.getValue());
|
|
|
+ searchParam.setValue(createTimeGe.getValue());
|
|
|
+ filters.put("createTime", searchParam);
|
|
|
+ }
|
|
|
+ if(createTimeGe != null) {
|
|
|
+ SearchParam searchParam = new SearchParam();
|
|
|
+ searchParam.setOperator(SearchOperator.le.getValue());
|
|
|
+ searchParam.setValue(createTimeLe.getValue());
|
|
|
+ filters.put("createTime", searchParam);
|
|
|
+ }
|
|
|
+ String idcard = ContextUtils.getUserInfo().getIdcard();
|
|
|
+ log.info("approval list idcard:{}", idcard);
|
|
|
+ SearchParam searchParam = new SearchParam();
|
|
|
+ searchParam.setOperator(SearchOperator.eq.getValue());
|
|
|
+ searchParam.setValue(idcard);
|
|
|
+ filters.put("applicantIdcard", searchParam);
|
|
|
+
|
|
|
+ apiSearchReq.setFilters(filters);
|
|
|
+ ApiPageReq apiPageReq = new ApiPageReq();
|
|
|
+ apiPageReq.setFrom(pageNumber);
|
|
|
+ apiPageReq.setSize(pageSize);
|
|
|
+ apiSearchReq.setPage(apiPageReq);
|
|
|
+ return apiSearchReq;
|
|
|
}
|
|
|
|
|
|
+
|
|
|
@Override
|
|
|
- public Boolean authApplyCancel(String id) {
|
|
|
- WorkFlow workFlow = workFlowService.getById(id);
|
|
|
+ public ResponseStatus authApplyCancel(String applyOrdNo) {
|
|
|
+ WorkFlow workFlow = workFlowService.getByApplyOrdNo(applyOrdNo);
|
|
|
if(null == workFlow) {
|
|
|
- return false;
|
|
|
+ return ResponseStatus.fail("工单不存在");
|
|
|
}
|
|
|
- Boolean cancelResult = workFlowService.cancelWorkFlow(id);
|
|
|
- if(cancelResult) {
|
|
|
- approvalWorkFlowCancel(workFlow);
|
|
|
+ ResponseStatus status = approvalWorkFlowCancel(workFlow);
|
|
|
+ if(!ResponseStatus.SUCCESS_CODE.equals(status.getStatusCode())) {
|
|
|
+ return status;
|
|
|
}
|
|
|
- return true;
|
|
|
+ workFlowService.cancelWorkFlow(workFlow.getId());
|
|
|
+ return ResponseStatus.success();
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public Boolean authApplyDelete(String id) {
|
|
|
- WorkFlow workFlow = workFlowService.getById(id);
|
|
|
+ public ResponseStatus authApplyDelete(String applyOrdNo) {
|
|
|
+ WorkFlow workFlow = workFlowService.getByApplyOrdNo(applyOrdNo);
|
|
|
if(null == workFlow) {
|
|
|
- return false;
|
|
|
+ return ResponseStatus.fail("工单不存在");
|
|
|
+ }
|
|
|
+ ResponseStatus status = approvalWorkFlowDelete(workFlow);
|
|
|
+ if(!ResponseStatus.SUCCESS_CODE.equals(status.getStatusCode())) {
|
|
|
+ return status;
|
|
|
}
|
|
|
- workFlowService.delById(id);
|
|
|
- funAuthApplyService.delByAuthApplyId(id);
|
|
|
- approvalWorkFlowDelete(workFlow);
|
|
|
- return true;
|
|
|
+ workFlowService.delById(workFlow.getId());
|
|
|
+ funAuthApplyService.delByAuthApplyId(workFlow.getId());
|
|
|
+ return ResponseStatus.success();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<ApprovalSuggestionDTO> approvalSuggestion(String applyOrdNo) {
|
|
|
+ String url = authConfig.getApprovalCenterUrl();
|
|
|
+ String api = ApprovalApiConstance.APPROVAL_SUGGEST_API;
|
|
|
+ api = api.replace("{approveNo}", applyOrdNo);
|
|
|
+ String suggestUrl = Joiner.on(StrUtil.SLASH).join(url, api);
|
|
|
+ List<Header> headers = getApprovalHeaders();
|
|
|
+ String get = HttpUtil.get(suggestUrl, null, headers);
|
|
|
+ JSONObject jsonObject = JSON.parseObject(get);
|
|
|
+ String statusCode = jsonObject.getString("statusCode");
|
|
|
+ if(!ResponseStatus.SUCCESS_CODE.equals(statusCode)) {
|
|
|
+ return new ArrayList<>();
|
|
|
+ }
|
|
|
+ JSONArray jsonArray = jsonObject.getJSONArray("result");
|
|
|
+ return JSON.parseObject(jsonArray.toJSONString(), new TypeReference<List<ApprovalSuggestionDTO>>() {{
|
|
|
+ }});
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<ProcessStatusDTO> processStatusView(String applyOrdNo) {
|
|
|
+ String url = authConfig.getApprovalCenterUrl();
|
|
|
+ String api = ApprovalApiConstance.APPROVAL_STATUS_API;
|
|
|
+ api = api.replace("{approveNo}", applyOrdNo);
|
|
|
+ String suggestUrl = Joiner.on(StrUtil.SLASH).join(url, api);
|
|
|
+ List<Header> headers = getApprovalHeaders();
|
|
|
+ String get = HttpUtil.get(suggestUrl, null, headers);
|
|
|
+ JSONObject jsonObject = JSON.parseObject(get);
|
|
|
+ String statusCode = jsonObject.getString("statusCode");
|
|
|
+ if(!ResponseStatus.SUCCESS_CODE.equals(statusCode)) {
|
|
|
+ return new ArrayList<>();
|
|
|
+ }
|
|
|
+ JSONArray jsonArray = jsonObject.getJSONArray("result");
|
|
|
+ return JSON.parseObject(jsonArray.toJSONString(), new TypeReference<List<ProcessStatusDTO>>() {{
|
|
|
+ }});
|
|
|
}
|
|
|
|
|
|
|
|
|
* 删除审批中心工单
|
|
|
* @param workFlow
|
|
|
+ * @return
|
|
|
*/
|
|
|
- private void approvalWorkFlowDelete(WorkFlow workFlow) {
|
|
|
-
|
|
|
+ private ResponseStatus approvalWorkFlowDelete(WorkFlow workFlow) {
|
|
|
+ String url = authConfig.getApprovalCenterUrl();
|
|
|
+ String api = ApprovalApiConstance.APPROVAL_DELETE_API;
|
|
|
+ api = api.replace("{approveNo}", workFlow.getApplicantOrdNo());
|
|
|
+ String cancelUrl = Joiner.on(StrUtil.SLASH).join(url, api);
|
|
|
+ List<Header> headers = getApprovalHeaders();
|
|
|
+ String delete = HttpUtil.delete(cancelUrl, null, headers);
|
|
|
+ log.info("approvalWorkFlowDelete result:{}", delete);
|
|
|
+ ResponseStatus status = JSON.parseObject(delete, ResponseStatus.class);
|
|
|
+ return status;
|
|
|
}
|
|
|
|
|
|
|
|
|
* 撤销审批中心工单
|
|
|
* @param workFlow
|
|
|
+ * @return
|
|
|
*/
|
|
|
- private void approvalWorkFlowCancel(WorkFlow workFlow) {
|
|
|
-
|
|
|
+ private ResponseStatus approvalWorkFlowCancel(WorkFlow workFlow) {
|
|
|
+ String url = authConfig.getApprovalCenterUrl();
|
|
|
+ String api = ApprovalApiConstance.APPROVAL_CANCEL_API;
|
|
|
+ api = api.replace("{approveNo}", workFlow.getApplicantOrdNo());
|
|
|
+ String cancelUrl = Joiner.on(StrUtil.SLASH).join(url, api);
|
|
|
+ List<Header> headers = getApprovalHeaders();
|
|
|
+ String put = HttpUtil.put(cancelUrl, null, headers);
|
|
|
+ log.info("approvalWorkFlowCancel result:{}", put);
|
|
|
+ ResponseStatus status = JSON.parseObject(put, ResponseStatus.class);
|
|
|
+ return status;
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public FunApplyDetailDTO funApplyDetail(String id, Boolean needFlowInfo) {
|
|
|
+ public FunApplyDetailDTO funApplyDetail(String applyOrdNo, Boolean needFlowInfo) {
|
|
|
FunApplyDetailDTO detailDTO = new FunApplyDetailDTO();
|
|
|
- WorkFlow workFlow = workFlowService.getById(id);
|
|
|
+ WorkFlow workFlow = workFlowService.getByApplyOrdNo(applyOrdNo);
|
|
|
if(null == workFlow) {
|
|
|
return detailDTO;
|
|
|
}
|
|
|
WorkFlowDTO workFlowDTO = new WorkFlowDTO();
|
|
|
BeanUtils.copyProperties(workFlow, workFlowDTO);
|
|
|
detailDTO.setWorkFlow(workFlowDTO);
|
|
|
- List<AppFunApplyContent> contentList = funAuthApplyService.getByAuthApplyId(id);
|
|
|
+ List<AppFunApplyContent> contentList = funAuthApplyService.getByAuthApplyId(workFlow.getId());
|
|
|
List<AppFunAuthResourceDTO> collect = contentList.stream().map(item -> {
|
|
|
AppFunAuthResourceDTO resourceDTO = new AppFunAuthResourceDTO();
|
|
|
resourceDTO.setAppId(item.getAppId());
|
|
@@ -156,16 +317,13 @@ public class AuthApplyBusiness implements IAuthApplyBusiness {
|
|
|
return resourceDTO;
|
|
|
}).collect(Collectors.toList());
|
|
|
detailDTO.setResourceInfos(collect);
|
|
|
- if(needFlowInfo) {
|
|
|
- getFlowApprovalInfo(workFlow, detailDTO);
|
|
|
- }
|
|
|
return detailDTO;
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
public ResponseStatus funApplyUpdate(AppFunApplyUpdateDTO updateDTO) {
|
|
|
- String id = updateDTO.getId();
|
|
|
- WorkFlow workFlow = workFlowService.getById(id);
|
|
|
+ String applyOrdNo = updateDTO.getApplyOrdNo();
|
|
|
+ WorkFlow workFlow = workFlowService.getByApplyOrdNo(applyOrdNo);
|
|
|
if(null == workFlow) {
|
|
|
return ResponseStatus.fail();
|
|
|
}
|
|
@@ -213,7 +371,10 @@ public class AuthApplyBusiness implements IAuthApplyBusiness {
|
|
|
appFunAuthApplyDTO.setWorkFlow(workFlowDTO);
|
|
|
appFunAuthApplyDTO.setResourceInfos(resourceInfos);
|
|
|
getUpdateContent(existContent, addContentList, delList);
|
|
|
- return funApplyPushToApproval(appFunAuthApplyDTO, addContentList);
|
|
|
+ String url = authConfig.getApprovalCenterUrl();
|
|
|
+ String api = ApprovalApiConstance.APPROVAL_UPDATE_API;
|
|
|
+ url = Joiner.on(StrUtil.SLASH).join(url, api);
|
|
|
+ return funApplyPushToApproval(url, appFunAuthApplyDTO, addContentList);
|
|
|
}
|
|
|
|
|
|
private void getUpdateContent(List<AppFunApplyContent> existContent, List<AppFunApplyContent> contentList, List<AppFunApplyContent> delList) {
|
|
@@ -228,56 +389,25 @@ public class AuthApplyBusiness implements IAuthApplyBusiness {
|
|
|
contentList.addAll(updateContent);
|
|
|
}
|
|
|
|
|
|
- private void getFlowApprovalInfo(WorkFlow workFlow, FunApplyDetailDTO detailDTO) {
|
|
|
-
|
|
|
- }
|
|
|
|
|
|
-
|
|
|
- * 请求审批服务设置列表上的功能按钮和下一个节点信息
|
|
|
- * @param collect
|
|
|
- */
|
|
|
- private void setOperateFunction(List<WorkFlowViewDTO> collect) {
|
|
|
- collect.forEach(item->{
|
|
|
- item.setShowEdit(true);
|
|
|
- item.setShowRecall(true);
|
|
|
- item.setTaskName("我");
|
|
|
- });
|
|
|
- }
|
|
|
-
|
|
|
- private void parseTime(Searchable searchable) {
|
|
|
- try {
|
|
|
- Condition createTimeGe = searchable.getSearchFilter("createTime", SearchOperator.ge);
|
|
|
- SimpleDateFormat format = new SimpleDateFormat();
|
|
|
- if(null != createTimeGe) {
|
|
|
- String timeStr = createTimeGe.getValue().toString();
|
|
|
- Date parse = format.parse(timeStr);
|
|
|
- searchable.removeSearchFilter("createTime",SearchOperator.ge);
|
|
|
- searchable.addSearchFilter("createTime", SearchOperator.ge, parse);
|
|
|
- }
|
|
|
- Condition createTimeLe = searchable.getSearchFilter("createTime", SearchOperator.le);
|
|
|
- if(null != createTimeLe) {
|
|
|
- String timeStr = createTimeLe.getValue().toString();
|
|
|
- Date parse = format.parse(timeStr);
|
|
|
- searchable.removeSearchFilter("createTime",SearchOperator.le);
|
|
|
- searchable.addSearchFilter("createTime", SearchOperator.le, parse);
|
|
|
- }
|
|
|
- }catch (Exception e) {
|
|
|
- log.error("authApplySearch error.",e);
|
|
|
- throw new ApplicationException("列表查询异常");
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- private ResponseStatus funApplyPushToApproval(AppFunAuthApplyDTO authApplyDTO, List<AppFunApplyContent> contentList) {
|
|
|
+ private ResponseDTO funApplyPushToApproval(String url, AppFunAuthApplyDTO authApplyDTO, List<AppFunApplyContent> contentList) {
|
|
|
ApprovalWorkFlowDTO approvalWorkFlowDTO = prepareFunApplyApprovalWorkFlow(authApplyDTO, contentList);
|
|
|
- return dealPush(approvalWorkFlowDTO);
|
|
|
+ return dealPush(url, approvalWorkFlowDTO);
|
|
|
}
|
|
|
|
|
|
private ApprovalWorkFlowDTO prepareFunApplyApprovalWorkFlow(AppFunAuthApplyDTO authApplyDTO, List<AppFunApplyContent> contentList) {
|
|
|
WorkFlowDTO workFlowDTO = authApplyDTO.getWorkFlow();
|
|
|
ApprovalWorkFlowDTO approvalWorkFlowDTO = new ApprovalWorkFlowDTO();
|
|
|
BeanUtils.copyProperties(workFlowDTO, approvalWorkFlowDTO, "resourceInfoDTO", "startTime", "endTime");
|
|
|
- approvalWorkFlowDTO.setApplyContent(workFlowDTO.getFlowContent());
|
|
|
- approvalWorkFlowDTO.setApplyAppCode(subSyncConfig.getAppCode());
|
|
|
+ setDifferentField(workFlowDTO, approvalWorkFlowDTO);
|
|
|
+ setResourceInfo(authApplyDTO, contentList, approvalWorkFlowDTO);
|
|
|
+ WorkFlowTimeUtil.setApprovalSETime(workFlowDTO, approvalWorkFlowDTO);
|
|
|
+ approvalWorkFlowDTO.setBusinessCode(approvalConfig.getFunAuthBusCode());
|
|
|
+ approvalWorkFlowDTO.setProcessType(approvalConfig.getProcessType());
|
|
|
+ return approvalWorkFlowDTO;
|
|
|
+ }
|
|
|
+
|
|
|
+ private void setResourceInfo(AppFunAuthApplyDTO authApplyDTO, List<AppFunApplyContent> contentList, ApprovalWorkFlowDTO approvalWorkFlowDTO) {
|
|
|
String applicantIdcard = authApplyDTO.getWorkFlow().getApplicantIdcard();
|
|
|
String applicantName = authApplyDTO.getWorkFlow().getApplicantName();
|
|
|
ResourceInfoDTO resourceInfoDTO = new ResourceInfoDTO();
|
|
@@ -315,25 +445,132 @@ public class AuthApplyBusiness implements IAuthApplyBusiness {
|
|
|
resourceInfoDTO.setVisitResourceCode(String.join(StrUtil.COMMA, codeList));
|
|
|
resourceInfoDTO.setVisitResourceName(String.join(StrUtil.COMMA, nameList));
|
|
|
approvalWorkFlowDTO.setResourceInfoDTO(resourceInfoDTO);
|
|
|
- WorkFlowTimeUtil.setApprovalSETime(workFlowDTO, approvalWorkFlowDTO);
|
|
|
- return approvalWorkFlowDTO;
|
|
|
}
|
|
|
|
|
|
+ private void setDifferentField(WorkFlowDTO workFlowDTO, ApprovalWorkFlowDTO approvalWorkFlowDTO) {
|
|
|
+ approvalWorkFlowDTO.setApplyContent(workFlowDTO.getFlowContent());
|
|
|
+ approvalWorkFlowDTO.setApplyAppCode(authConfig.getAppCode());
|
|
|
+ approvalWorkFlowDTO.setProcessTitle(workFlowDTO.getFlowTitle());
|
|
|
+ approvalWorkFlowDTO.setFlowType(workFlowDTO.getApplyType());
|
|
|
+ approvalWorkFlowDTO.setApproveNo(workFlowDTO.getApplicantOrdNo());
|
|
|
+ }
|
|
|
|
|
|
- private ResponseStatus dealPush(ApprovalWorkFlowDTO approvalWorkFlowDTO) {
|
|
|
- ResponseStatus status;
|
|
|
+
|
|
|
+ private ResponseDTO dealPush(String url, ApprovalWorkFlowDTO approvalWorkFlowDTO) {
|
|
|
+ ResponseDTO status;
|
|
|
try {
|
|
|
- log.info("-------pushWorkFlowToServer START---------------");
|
|
|
- status = workFlowService.pushToApproval(approvalWorkFlowDTO);
|
|
|
- log.info("-------pushWorkFlowToServer END---------------");
|
|
|
+ log.info("-------pushToApprovalCenter START---------------");
|
|
|
+ status = pushToApproval(url, approvalWorkFlowDTO);
|
|
|
+ log.info("-------pushToApprovalCenter END---------------");
|
|
|
if(!ResponseStatus.SUCCESS_CODE.equals(status.getStatusCode())) {
|
|
|
- status = new ResponseStatus(ResponseStatus.FAIL_CODE,"approve service faild :"+status.getMessage());
|
|
|
+ status = new ResponseDTO(ResponseStatus.FAIL_CODE,"approve service faild :"+status.getMessage(), null);
|
|
|
}
|
|
|
} catch (Exception e) {
|
|
|
log.error("work flow push error.", e);
|
|
|
- status = new ResponseStatus(ResponseStatus.FAIL_CODE,"push to work flow error");
|
|
|
+ status = new ResponseDTO(ResponseStatus.FAIL_CODE,"push to work flow error", null);
|
|
|
}
|
|
|
return status;
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+ private ResponseDTO pushToApproval(String url, ApprovalWorkFlowDTO approvalWorkFlowDTO) {
|
|
|
+ List<Header> headers = getApprovalHeaders();
|
|
|
+ log.info("approval center push url:{}, flowType:{}",
|
|
|
+ url,
|
|
|
+ approvalWorkFlowDTO.getFlowType());
|
|
|
+ String postBody = JSON.toJSONString(approvalWorkFlowDTO);
|
|
|
+ String response = HttpUtil.postJSON(url, postBody, headers, null);
|
|
|
+ if(StringUtils.isBlank(response)) {
|
|
|
+ return new ResponseDTO(ResponseStatus.FAIL_CODE,"push to approve service failed", null);
|
|
|
+ }
|
|
|
+
|
|
|
+ log.info("approval center push result:{}", response);
|
|
|
+ return JSON.parseObject(response, ResponseDTO.class);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ * 总线调用方式
|
|
|
+ * 授权推送工单到审批服务
|
|
|
+ * @param approvalWorkFlowDTO
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ private ResponseDTO pushToApprovalViaBus(ApprovalWorkFlowDTO approvalWorkFlowDTO) {
|
|
|
+ List<Header> headers = getBusApprovalHeaders();
|
|
|
+ log.info("work flow push url:{}, busSraId:{}, busServiceId:{}, busServiceFunc:{},flowType:{}",
|
|
|
+ approvalConfig.getWorkflowUrl(),
|
|
|
+ approvalConfig.getBusSraId(),
|
|
|
+ approvalConfig.getBusServiceId(),
|
|
|
+ approvalConfig.getBusServiceFunc(),
|
|
|
+ approvalWorkFlowDTO.getFlowType());
|
|
|
+ String postBody = JSON.toJSONString(approvalWorkFlowDTO);
|
|
|
+ log.info("work flow request body:{}", postBody);
|
|
|
+
|
|
|
+ String response = HttpUtil.postJSON(approvalConfig.getWorkflowUrl(), postBody, headers, null);
|
|
|
+ if(org.apache.commons.lang3.StringUtils.isBlank(response)) {
|
|
|
+ return new ResponseDTO(ResponseStatus.FAIL_CODE,"push to approve service failed", null);
|
|
|
+ }
|
|
|
+
|
|
|
+ log.info("work flow push result:{}", response);
|
|
|
+ return JSON.parseObject(response, ResponseDTO.class);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ * 获取通过总线调用审批中心请求头
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ private List<Header> getBusApprovalHeaders() {
|
|
|
+ List<Header> headers = new ArrayList<>();
|
|
|
+ RequestAttributes requestAttributes = RequestContextHolder.getRequestAttributes();
|
|
|
+ String userToken = "";
|
|
|
+ String appToken = "";
|
|
|
+ if (requestAttributes != null) {
|
|
|
+ ServletRequestAttributes servletRequestAttributes = (ServletRequestAttributes) requestAttributes;
|
|
|
+ HttpServletRequest request = servletRequestAttributes.getRequest();
|
|
|
+ userToken = request.getHeader(Constants.USER_TOKEN);
|
|
|
+ appToken = request.getHeader(Constants.APP_TOKEN);
|
|
|
+ BasicHeader appTokenHeader = new BasicHeader(Constants.BUS_SRA_TOKEN, appToken);
|
|
|
+ BasicHeader userTokenHeader = new BasicHeader(Constants.BUS_SRE_TOKEN, userToken);
|
|
|
+ headers.add(appTokenHeader);
|
|
|
+ headers.add(userTokenHeader);
|
|
|
+ }
|
|
|
+
|
|
|
+ String idcard = UserContextUtils.getCurrentUser().getIdcard();
|
|
|
+ BasicHeader busSreIdcardHeader = new BasicHeader(Constants.BUS_SRE_IDCARD , idcard);
|
|
|
+ BasicHeader busSraIdHeader = new BasicHeader("bus_sra_id", approvalConfig.getBusSraId());
|
|
|
+ BasicHeader busServiceIdHeader = new BasicHeader("bus_service_id", approvalConfig.getBusServiceId());
|
|
|
+ BasicHeader busServiceFuncHeader = new BasicHeader("bus_service_func", approvalConfig.getBusServiceFunc());
|
|
|
+ headers.add(busSraIdHeader);
|
|
|
+ headers.add(busSreIdcardHeader);
|
|
|
+ headers.add(busServiceIdHeader);
|
|
|
+ headers.add(busServiceFuncHeader);
|
|
|
+ log.info("userToken:{}, appToken:{}, idcard:{}", appToken, userToken, idcard);
|
|
|
+ return headers;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ * 获取调用审批中心请求头
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ private List<Header> getApprovalHeaders() {
|
|
|
+ List<Header> headers = new ArrayList<>();
|
|
|
+ RequestAttributes requestAttributes = RequestContextHolder.getRequestAttributes();
|
|
|
+ if (requestAttributes != null) {
|
|
|
+ ServletRequestAttributes servletRequestAttributes = (ServletRequestAttributes) requestAttributes;
|
|
|
+ HttpServletRequest request = servletRequestAttributes.getRequest();
|
|
|
+ String userToken = request.getHeader(Constants.USER_TOKEN);
|
|
|
+ String appToken = request.getHeader(Constants.APP_TOKEN);
|
|
|
+ BasicHeader appTokenHeader = new BasicHeader(Constants.APP_TOKEN, appToken);
|
|
|
+ BasicHeader userTokenHeader = new BasicHeader(Constants.USER_TOKEN, userToken);
|
|
|
+ headers.add(appTokenHeader);
|
|
|
+ headers.add(userTokenHeader);
|
|
|
+ }
|
|
|
+ String idcard = UserContextUtils.getCurrentUser().getIdcard();
|
|
|
+ BasicHeader appCodeHeader = new BasicHeader(Constants.APP_CODE, authConfig.getAppCode());
|
|
|
+ BasicHeader idcardHeader = new BasicHeader(Constants.IDCARD, idcard);
|
|
|
+ headers.add(appCodeHeader);
|
|
|
+ headers.add(idcardHeader);
|
|
|
+ return headers;
|
|
|
+ }
|
|
|
+
|
|
|
}
|