From bfc8de8029261aa3dc6bd8e6a153f54de9e3a4be Mon Sep 17 00:00:00 2001 From: yxt_djz <313618925@qq.com> Date: Tue, 26 Jul 2022 16:23:13 +0800 Subject: [PATCH] =?UTF-8?q?=20=E5=AE=8C=E5=96=84=E5=8A=9E=E7=90=86?= =?UTF-8?q?=E6=B5=81=E7=A8=8Burl?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../flowable/api/flowtask/FlowTaskDto.java | 3 + .../flowable/api/flowtask/FlowTaskFeign.java | 5 + .../api/flowtask/FlowTaskFeignFallBack.java | 2 +- .../api/sysprourl/SysProUrlFeign.java | 17 +- .../api/sysprourl/SysProUrlFeignFallBack.java | 9 +- .../biz/flowtask/FlowTaskController.java | 9 + .../biz/flowtask/FlowTaskService.java | 168 +++++++++--------- .../biz/sysprourl/SysProUrlController.java | 17 +- .../biz/sysprourl/SysProUrlMapper.java | 3 +- .../biz/sysprourl/SysProUrlMapper.xml | 5 +- .../biz/sysprourl/SysProUrlService.java | 9 +- .../portal/biz/flow/FlowableService.java | 2 +- 12 files changed, 156 insertions(+), 93 deletions(-) diff --git a/anrui-flowable/anrui-flowable-api/src/main/java/com/yxt/anrui/flowable/api/flowtask/FlowTaskDto.java b/anrui-flowable/anrui-flowable-api/src/main/java/com/yxt/anrui/flowable/api/flowtask/FlowTaskDto.java index 15fc8bc4c7..17503c697b 100644 --- a/anrui-flowable/anrui-flowable-api/src/main/java/com/yxt/anrui/flowable/api/flowtask/FlowTaskDto.java +++ b/anrui-flowable/anrui-flowable-api/src/main/java/com/yxt/anrui/flowable/api/flowtask/FlowTaskDto.java @@ -2,6 +2,7 @@ package com.yxt.anrui.flowable.api.flowtask; import com.fasterxml.jackson.annotation.JsonFormat; import com.yxt.anrui.flowable.api.flowcomment.FlowCommentDto; +import com.yxt.anrui.flowable.api.sysprourl.SysProUrlVo; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -112,4 +113,6 @@ public class FlowTaskDto implements Serializable { @ApiModelProperty("是否显示撤回按钮(登录用户与待办人是否为同一个)") private boolean hasRevokeButton = false; + @ApiModelProperty("办理的url") + private SysProUrlVo sysProUrlVo ; } diff --git a/anrui-flowable/anrui-flowable-api/src/main/java/com/yxt/anrui/flowable/api/flowtask/FlowTaskFeign.java b/anrui-flowable/anrui-flowable-api/src/main/java/com/yxt/anrui/flowable/api/flowtask/FlowTaskFeign.java index 7c27577dc9..f0af90fd98 100644 --- a/anrui-flowable/anrui-flowable-api/src/main/java/com/yxt/anrui/flowable/api/flowtask/FlowTaskFeign.java +++ b/anrui-flowable/anrui-flowable-api/src/main/java/com/yxt/anrui/flowable/api/flowtask/FlowTaskFeign.java @@ -53,6 +53,11 @@ public interface FlowTaskFeign { @ResponseBody ResultBean> businessTodoList(@ApiParam(value = "当前用户sid") @PathVariable(value = "userSid")String userSid, @RequestBody PagerQuery taskQueryPagerQuery); + @ApiOperation(value = "业务系统查询待办任务列表包含url") + @PostMapping("/businessTodoListForApp/{userSid}") + @ResponseBody + ResultBean> businessTodoListForApp(@ApiParam(value = "当前用户sid") @PathVariable(value = "userSid")String userSid, + @RequestBody PagerQuery taskQueryPagerQuery); @ApiOperation(value = "业务系统查询待办任务列表数量") @GetMapping("/getTodoNum/{userSid}") diff --git a/anrui-flowable/anrui-flowable-api/src/main/java/com/yxt/anrui/flowable/api/flowtask/FlowTaskFeignFallBack.java b/anrui-flowable/anrui-flowable-api/src/main/java/com/yxt/anrui/flowable/api/flowtask/FlowTaskFeignFallBack.java index 916605e44c..323514639b 100644 --- a/anrui-flowable/anrui-flowable-api/src/main/java/com/yxt/anrui/flowable/api/flowtask/FlowTaskFeignFallBack.java +++ b/anrui-flowable/anrui-flowable-api/src/main/java/com/yxt/anrui/flowable/api/flowtask/FlowTaskFeignFallBack.java @@ -42,7 +42,7 @@ public class FlowTaskFeignFallBack implements FlowTaskFeign { } @Override - public ResultBean> businessTodoList(String userSid, PagerQuery taskQueryPagerQuery) { + public ResultBean> businessTodoListForApp(String userSid, PagerQuery taskQueryPagerQuery) { return null; } diff --git a/anrui-flowable/anrui-flowable-api/src/main/java/com/yxt/anrui/flowable/api/sysprourl/SysProUrlFeign.java b/anrui-flowable/anrui-flowable-api/src/main/java/com/yxt/anrui/flowable/api/sysprourl/SysProUrlFeign.java index 38f03d2ec6..476732296d 100644 --- a/anrui-flowable/anrui-flowable-api/src/main/java/com/yxt/anrui/flowable/api/sysprourl/SysProUrlFeign.java +++ b/anrui-flowable/anrui-flowable-api/src/main/java/com/yxt/anrui/flowable/api/sysprourl/SysProUrlFeign.java @@ -10,6 +10,7 @@ import org.springframework.cloud.openfeign.SpringQueryMap; import org.springframework.web.bind.annotation.*; import javax.validation.Valid; +import java.util.List; @FeignClient( contextId = "anrui-flowable-SysProUrlFeign", @@ -57,6 +58,19 @@ public interface SysProUrlFeign { ResultBean selectAppUrlByTaskDefKey(@Valid @RequestBody AppSysProUrlQuery query); + /** + * pc根据流程定义id,节点id,终端及类型查询流程与业务表单url + * + * @param procDefId 流程定义id + * @param taskDefKey 节点id + * @param type 类型:1办理,2详情 + * @return + */ + @ApiOperation("查询流程与业务表单的url") + @GetMapping("/selectUrlByKey") + ResultBean> selectUrlByKey(@ApiParam(value = "流程定义id") @RequestParam(value = "procDefId") String procDefId, + @ApiParam(value = "节点id") @RequestParam(value = "taskDefKey") String taskDefKey, + @ApiParam(value = "类型:1办理,2详情") @RequestParam(value = "type") String type); /** * pc根据流程定义id,节点id,终端及类型查询流程与业务表单url * @@ -69,6 +83,7 @@ public interface SysProUrlFeign { @GetMapping("/selectUrlByKey") ResultBean selectUrlByKey(@ApiParam(value = "流程定义id") @RequestParam(value = "procDefId") String procDefId, @ApiParam(value = "节点id") @RequestParam(value = "taskDefKey") String taskDefKey, - @ApiParam(value = "类型:1办理,2详情") @RequestParam(value = "type") String type); + @ApiParam(value = "类型:1办理,2详情") @RequestParam(value = "type") String type + ,@ApiParam(value = "终端:1pc,2移动") @RequestParam(value = "terminal") String terminal); } diff --git a/anrui-flowable/anrui-flowable-api/src/main/java/com/yxt/anrui/flowable/api/sysprourl/SysProUrlFeignFallBack.java b/anrui-flowable/anrui-flowable-api/src/main/java/com/yxt/anrui/flowable/api/sysprourl/SysProUrlFeignFallBack.java index 10842f02f1..d9af05be9d 100644 --- a/anrui-flowable/anrui-flowable-api/src/main/java/com/yxt/anrui/flowable/api/sysprourl/SysProUrlFeignFallBack.java +++ b/anrui-flowable/anrui-flowable-api/src/main/java/com/yxt/anrui/flowable/api/sysprourl/SysProUrlFeignFallBack.java @@ -5,6 +5,8 @@ import com.yxt.common.core.result.ResultBean; import com.yxt.common.core.vo.PagerVo; import org.springframework.stereotype.Component; +import java.util.List; + /** * @author dimengzhe * @date 2021/8/20 15:43 @@ -49,7 +51,12 @@ public class SysProUrlFeignFallBack implements SysProUrlFeign { } @Override - public ResultBean selectUrlByKey(String procDefId, String taskDefKey, String type) { + public ResultBean> selectUrlByKey(String procDefId, String taskDefKey, String type) { + return null; + } + + @Override + public ResultBean selectUrlByKey(String procDefId, String taskDefKey, String type,String terminal) { return null; } } diff --git a/anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flowtask/FlowTaskController.java b/anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flowtask/FlowTaskController.java index 50b8a01f9d..d4506bf198 100644 --- a/anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flowtask/FlowTaskController.java +++ b/anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flowtask/FlowTaskController.java @@ -92,6 +92,15 @@ public class FlowTaskController implements FlowTaskFeign { return resultBean; } + @Override + public ResultBean> businessTodoListForApp(String userSid, PagerQuery businessTaskQuery) { + int size = Integer.valueOf(businessTaskQuery.getSize() + ""); + int current = Integer.valueOf(businessTaskQuery.getCurrent() + ""); + List fields = businessTaskQuery.getParams().getFields(); + ResultBean> resultBean = flowTaskService.businessTodoListForApp(userSid, fields, current, size); + return resultBean; + } + @Override public ResultBean getTodoNum(String userSid) { return flowTaskService.getTodoNum(userSid); diff --git a/anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flowtask/FlowTaskService.java b/anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flowtask/FlowTaskService.java index 083ad9802b..b0b201c46a 100644 --- a/anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flowtask/FlowTaskService.java +++ b/anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flowtask/FlowTaskService.java @@ -512,88 +512,6 @@ public class FlowTaskService extends MybatisBaseService().success().setData(Integer.parseInt(String.valueOf(num))); } - /** - * 查询app或pc需要的参数 --( 废弃) - * - * @param task - * @return - */ - private Map> getAppOrPcVariables(FlowTaskDto task) { - List urlList = sysProUrlService.selectListByProcDefId(task.getProcDefId(), task.getTaskDefKey()); - Map> map = new HashMap<>(); - Map appVariables = new HashMap<>(); - Map pcVariables = new HashMap<>(); - - String businessSid = ""; - HistoricTaskInstance historicTaskInstance = historyService.createHistoricTaskInstanceQuery().includeProcessVariables().taskId(task.getTaskId()).singleResult(); - if (historicTaskInstance != null) { - Object businessSidObj = historicTaskInstance.getProcessVariables().get("businessSid"); - businessSid = businessSidObj == null ? "" : businessSidObj.toString(); - } - pcVariables.put("businessSid", businessSid); - if (urlList.size() > 0) { - // 手机端参数 - String name = urlList.get(0).getModulePluginName(); - ResultBean resultBean = appSubsetVersionFeign.getLastBymodulePluginName(name); - if (resultBean.getSuccess() && resultBean.getData() != null) { - AppSubsetVersionVo subsetVersionVo = resultBean.getData(); - appVariables.put("msgSid", ""); - appVariables.put("type", "2"); - appVariables.put("path", subsetVersionVo.getUpdateUrl()); - appVariables.put("modulePluginName", subsetVersionVo.getModulePluginName()); -// appVariables.put("moduleAction", subsetVersionVo.getSourceAction()); - appVariables.put("moduleAction", urlList.get(0).getUrl()); - appVariables.put("moduleVersion", subsetVersionVo.getVersionCode()); - appVariables.put("moduleSid", ""); - JSONObject json = new JSONObject(); - json.put("businessSid", businessSid); - json.put("taskId", task.getTaskId()); - json.put("deployId", task.getDeployId()); - json.put("procInsId", task.getProcInsId()); - appVariables.put("json", json.toJSONString()); - } else { - - } - // pc端参数 - if (urlList.size() == 4) { - pcVariables.put("taskId", task.getTaskId()); - pcVariables.put("deployId", task.getDeployId()); - pcVariables.put("procInsId", task.getProcInsId()); - pcVariables.put("handleUrl", urlList.get(2).getUrl()); - pcVariables.put("detailUrl", urlList.get(3).getUrl()); - } else { - pcVariables.put("taskId", ""); - pcVariables.put("deployId", ""); - pcVariables.put("procInsId", ""); - pcVariables.put("handleUrl", ""); - pcVariables.put("detailUrl", ""); - } - } else { - appVariables.put("msgSid", ""); - appVariables.put("type", ""); - appVariables.put("path", ""); - appVariables.put("modulePluginName", ""); - appVariables.put("moduleAction", ""); - appVariables.put("moduleVersion", 0); - appVariables.put("moduleSid", ""); - JSONObject json = new JSONObject(); - json.put("businessSid", businessSid); - json.put("taskId", ""); - json.put("deployId", ""); - json.put("procInsId", ""); - appVariables.put("json", json.toJSONString()); - - pcVariables.put("taskId", ""); - pcVariables.put("deployId", ""); - pcVariables.put("procInsId", ""); - pcVariables.put("handleUrl", ""); - pcVariables.put("detailUrl", ""); - } - map.put("appVariables", appVariables); - map.put("pcVariables", pcVariables); - return map; - } - /** * 获取流程变量 * @@ -1687,4 +1605,90 @@ public class FlowTaskService extends MybatisBaseService> businessTodoListForApp(String userSid, List params, int pageNum, int pageSize) { + Page page = new Page<>(); + TaskQuery taskQuery = taskService.createTaskQuery(); + // 流程参数 + Map paramMap = new HashMap<>(); + // 挂载表单参数 + for (BusinessTaskParam btq : params) { + paramMap.put(btq.getField(), btq.getValue()); + if (btq.getSqlOperationSymbol().equals(SQLOperationSymbol.NONE)) { + if ("orgSid".equals(btq.getField())) { + String value = btq.getValue(); + String[] split = value.split(","); + for (int i = 0; i < split.length; i++) { + if (i != 0) { + taskQuery.or().processVariableValueLike("orgSid", split[i] + "%"); + } else { + taskQuery.processVariableValueLike("orgSid", split[0] + "%"); + } + } + } + } + } + taskQuery.active() + .includeProcessVariables() + .or() + //.taskCandidateGroupIn(roleSidList) + .taskAssigneeLike("%" + userSid + "%") + .endOr() + .orderByTaskCreateTime().desc(); + // 查询筛选条件 + if (paramMap.get("startDate") != null && StringUtils.isNotBlank(paramMap.get("startDate").toString())) { + taskQuery.taskCreatedAfter(DateUtils.dateStrConvertDate(paramMap.get("startDate").toString(), "yyyy-MM-dd")); + } + if (paramMap.get("endDate") != null && StringUtils.isNotBlank(paramMap.get("endDate").toString())) { + taskQuery.taskCreatedBefore(DateUtils.dateStrConvertDate(paramMap.get("endDate").toString(), "yyyy-MM-dd")); + } + if (paramMap.get("proDefName") != null && StringUtils.isNotBlank(paramMap.get("proDefName").toString())) { + taskQuery.processDefinitionNameLike("%" + paramMap.get("proDefName") + "%"); + } + page.setTotal(taskQuery.count()); + int p = (pageNum - 1) * pageSize; + List taskList = taskQuery.listPage(p, pageSize); + List flowList = new ArrayList<>(); + for (Task task : taskList) { + FlowTaskDto flowTask = new FlowTaskDto(); + Map processVariables = task.getProcessVariables(); + flowTask.setProcessVariables(processVariables); + // 当前流程信息 + flowTask.setTaskId(task.getId()); + flowTask.setTaskDefKey(task.getTaskDefinitionKey()); + flowTask.setCreateTime(task.getCreateTime()); + flowTask.setProcDefId(task.getProcessDefinitionId()); + flowTask.setTaskName(task.getName()); + // 流程定义信息 + ProcessDefinition pd = repositoryService.createProcessDefinitionQuery() + .processDefinitionId(task.getProcessDefinitionId()) + .singleResult(); + flowTask.setDeployId(pd.getDeploymentId()); + flowTask.setProcDefName(pd.getName()); + flowTask.setProcDefVersion(pd.getVersion()); + flowTask.setProcInsId(task.getProcessInstanceId()); + // 流程发起人信息 + HistoricProcessInstance historicProcessInstance = historyService.createHistoricProcessInstanceQuery() + .processInstanceId(task.getProcessInstanceId()) + .singleResult(); + flowTask.setProcessCreateTime(historicProcessInstance.getStartTime()); + ResultBean sysUserVoResultBean = sysUserFeign.fetchBySid(historicProcessInstance.getStartUserId()); + flowTask.setStartUserSid(sysUserVoResultBean.getData().getSid()); + flowTask.setStartUserName(sysUserVoResultBean.getData().getName()); + flowTask.setStartDeptName(sysUserVoResultBean.getData().getOrganizationName()); + ResultBean sysUserVoResultBean2 = sysUserFeign.fetchBySid(userSid); + flowTask.setAssigneeName(sysUserVoResultBean2.getData().getName()); + flowTask.setAssigneeSid(sysUserVoResultBean2.getData().getSid()); + flowTask.setDeptName(sysUserVoResultBean2.getData().getOrganizationName()); + String procDefId = flowTask.getProcDefId(); + String taskDefKey = flowTask.getTaskDefKey(); + ResultBean resultBean1 = sysProUrlService.selectUrlByKey(procDefId, taskDefKey, "1","2"); + SysProUrlVo data = resultBean1.getData(); + flowTask.setSysProUrlVo(data); + flowList.add(flowTask); + } + page.setRecords(flowList); + ResultBean> rb = new ResultBean>(); + return rb.success().setData(page); + } } \ No newline at end of file diff --git a/anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/sysprourl/SysProUrlController.java b/anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/sysprourl/SysProUrlController.java index 38fdf1b38e..839eb5b594 100644 --- a/anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/sysprourl/SysProUrlController.java +++ b/anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/sysprourl/SysProUrlController.java @@ -12,6 +12,8 @@ import com.yxt.common.core.vo.PagerVo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; +import java.util.List; + /** * 流程表单Controller * @@ -100,6 +102,11 @@ public class SysProUrlController implements SysProUrlFeign { return new ResultBean().success().setData(appUrlVo); } + @Override + public ResultBean> selectUrlByKey(String procDefId, String taskDefKey, String type) { + return sysProUrlService.selectUrlByKey(procDefId, taskDefKey, type,null); + } + /** * pc根据流程定义id,节点id,终端及类型查询流程与业务表单url * @@ -109,7 +116,13 @@ public class SysProUrlController implements SysProUrlFeign { * @return */ @Override - public ResultBean selectUrlByKey(String procDefId, String taskDefKey, String type) { - return sysProUrlService.selectUrlByKey(procDefId, taskDefKey, type); + public ResultBean selectUrlByKey(String procDefId, String taskDefKey, String type,String terminal) { + ResultBean rb= ResultBean.fireFail(); + ResultBean> listResultBean = sysProUrlService.selectUrlByKey(procDefId, taskDefKey, type, terminal); + if(listResultBean.getData().size()==1){ + SysProUrlVo sysProUrlVo = listResultBean.getData().get(0); + return new ResultBean().success().setData(sysProUrlVo); + } + return rb.setMsg("查询不到数据"); } } diff --git a/anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/sysprourl/SysProUrlMapper.java b/anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/sysprourl/SysProUrlMapper.java index 7efe7270a0..8574a66872 100644 --- a/anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/sysprourl/SysProUrlMapper.java +++ b/anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/sysprourl/SysProUrlMapper.java @@ -88,5 +88,6 @@ public interface SysProUrlMapper extends BaseMapper { * @param type 类型:1办理,2详情 * @return */ - SysProUrlVo selectUrlByKey(@Param("procDefId") String procDefId, @Param("taskDefKey") String taskDefKey, @Param("type") String type); + List selectUrlByKey(@Param("procDefId") String procDefId, @Param("taskDefKey") String taskDefKey, + @Param("type") String type,@Param("terminal") String terminal); } diff --git a/anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/sysprourl/SysProUrlMapper.xml b/anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/sysprourl/SysProUrlMapper.xml index b1a9603303..90f51fd1b2 100644 --- a/anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/sysprourl/SysProUrlMapper.xml +++ b/anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/sysprourl/SysProUrlMapper.xml @@ -112,7 +112,10 @@ where proc_def_id = #{procDefId} and type = #{type} and taskDefKey = #{taskDefKey} - and terminal = 2 + + and terminal = #{taskDefKey} + +