Browse Source

完善办理流程url

master
yxt_djz 3 years ago
parent
commit
bfc8de8029
  1. 3
      anrui-flowable/anrui-flowable-api/src/main/java/com/yxt/anrui/flowable/api/flowtask/FlowTaskDto.java
  2. 5
      anrui-flowable/anrui-flowable-api/src/main/java/com/yxt/anrui/flowable/api/flowtask/FlowTaskFeign.java
  3. 2
      anrui-flowable/anrui-flowable-api/src/main/java/com/yxt/anrui/flowable/api/flowtask/FlowTaskFeignFallBack.java
  4. 17
      anrui-flowable/anrui-flowable-api/src/main/java/com/yxt/anrui/flowable/api/sysprourl/SysProUrlFeign.java
  5. 9
      anrui-flowable/anrui-flowable-api/src/main/java/com/yxt/anrui/flowable/api/sysprourl/SysProUrlFeignFallBack.java
  6. 9
      anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flowtask/FlowTaskController.java
  7. 168
      anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flowtask/FlowTaskService.java
  8. 17
      anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/sysprourl/SysProUrlController.java
  9. 3
      anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/sysprourl/SysProUrlMapper.java
  10. 5
      anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/sysprourl/SysProUrlMapper.xml
  11. 9
      anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/sysprourl/SysProUrlService.java
  12. 2
      anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/flow/FlowableService.java

3
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 ;
}

5
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<Page<FlowTaskDto>> businessTodoList(@ApiParam(value = "当前用户sid") @PathVariable(value = "userSid")String userSid,
@RequestBody PagerQuery<BusinessTaskQuery> taskQueryPagerQuery);
@ApiOperation(value = "业务系统查询待办任务列表包含url")
@PostMapping("/businessTodoListForApp/{userSid}")
@ResponseBody
ResultBean<Page<FlowTaskDto>> businessTodoListForApp(@ApiParam(value = "当前用户sid") @PathVariable(value = "userSid")String userSid,
@RequestBody PagerQuery<BusinessTaskQuery> taskQueryPagerQuery);
@ApiOperation(value = "业务系统查询待办任务列表数量")
@GetMapping("/getTodoNum/{userSid}")

2
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<Page<FlowTaskDto>> businessTodoList(String userSid, PagerQuery<BusinessTaskQuery> taskQueryPagerQuery) {
public ResultBean<Page<FlowTaskDto>> businessTodoListForApp(String userSid, PagerQuery<BusinessTaskQuery> taskQueryPagerQuery) {
return null;
}

17
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",
@ -67,8 +68,22 @@ public interface SysProUrlFeign {
*/
@ApiOperation("查询流程与业务表单的url")
@GetMapping("/selectUrlByKey")
ResultBean<SysProUrlVo> selectUrlByKey(@ApiParam(value = "流程定义id") @RequestParam(value = "procDefId") String procDefId,
ResultBean<List<SysProUrlVo>> 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
*
* @param procDefId 流程定义id
* @param taskDefKey 节点id
* @param type 类型1办理2详情
* @return
*/
@ApiOperation("查询流程与业务表单的url")
@GetMapping("/selectUrlByKey")
ResultBean<SysProUrlVo> 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 = "终端:1pc,2移动") @RequestParam(value = "terminal") String terminal);
}

9
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<SysProUrlVo> selectUrlByKey(String procDefId, String taskDefKey, String type) {
public ResultBean<List<SysProUrlVo>> selectUrlByKey(String procDefId, String taskDefKey, String type) {
return null;
}
@Override
public ResultBean<SysProUrlVo> selectUrlByKey(String procDefId, String taskDefKey, String type,String terminal) {
return null;
}
}

9
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<Page<FlowTaskDto>> businessTodoListForApp(String userSid, PagerQuery<BusinessTaskQuery> businessTaskQuery) {
int size = Integer.valueOf(businessTaskQuery.getSize() + "");
int current = Integer.valueOf(businessTaskQuery.getCurrent() + "");
List<BusinessTaskParam> fields = businessTaskQuery.getParams().getFields();
ResultBean<Page<FlowTaskDto>> resultBean = flowTaskService.businessTodoListForApp(userSid, fields, current, size);
return resultBean;
}
@Override
public ResultBean<Integer> getTodoNum(String userSid) {
return flowTaskService.getTodoNum(userSid);

168
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<FlowTaskMapper, FlowTask
return new ResultBean<Integer>().success().setData(Integer.parseInt(String.valueOf(num)));
}
/**
* 查询app或pc需要的参数 --( 废弃)
*
* @param task
* @return
*/
private Map<String, Map<String, Object>> getAppOrPcVariables(FlowTaskDto task) {
List<SysProUrlVo> urlList = sysProUrlService.selectListByProcDefId(task.getProcDefId(), task.getTaskDefKey());
Map<String, Map<String, Object>> map = new HashMap<>();
Map<String, Object> appVariables = new HashMap<>();
Map<String, Object> 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<AppSubsetVersionVo> 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<FlowTaskMapper, FlowTask
list.add(map);
return rb.setData(list);
}
public ResultBean<Page<FlowTaskDto>> businessTodoListForApp(String userSid, List<BusinessTaskParam> params, int pageNum, int pageSize) {
Page<FlowTaskDto> page = new Page<>();
TaskQuery taskQuery = taskService.createTaskQuery();
// 流程参数
Map<String, Object> 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<Task> taskList = taskQuery.listPage(p, pageSize);
List<FlowTaskDto> flowList = new ArrayList<>();
for (Task task : taskList) {
FlowTaskDto flowTask = new FlowTaskDto();
Map<String, Object> 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<SysUserVo> sysUserVoResultBean = sysUserFeign.fetchBySid(historicProcessInstance.getStartUserId());
flowTask.setStartUserSid(sysUserVoResultBean.getData().getSid());
flowTask.setStartUserName(sysUserVoResultBean.getData().getName());
flowTask.setStartDeptName(sysUserVoResultBean.getData().getOrganizationName());
ResultBean<SysUserVo> 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<SysProUrlVo> resultBean1 = sysProUrlService.selectUrlByKey(procDefId, taskDefKey, "1","2");
SysProUrlVo data = resultBean1.getData();
flowTask.setSysProUrlVo(data);
flowList.add(flowTask);
}
page.setRecords(flowList);
ResultBean<Page<FlowTaskDto>> rb = new ResultBean<Page<FlowTaskDto>>();
return rb.success().setData(page);
}
}

17
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<AppUrlVo>().success().setData(appUrlVo);
}
@Override
public ResultBean<List<SysProUrlVo>> 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<SysProUrlVo> selectUrlByKey(String procDefId, String taskDefKey, String type) {
return sysProUrlService.selectUrlByKey(procDefId, taskDefKey, type);
public ResultBean<SysProUrlVo> selectUrlByKey(String procDefId, String taskDefKey, String type,String terminal) {
ResultBean<SysProUrlVo> rb= ResultBean.fireFail();
ResultBean<List<SysProUrlVo>> listResultBean = sysProUrlService.selectUrlByKey(procDefId, taskDefKey, type, terminal);
if(listResultBean.getData().size()==1){
SysProUrlVo sysProUrlVo = listResultBean.getData().get(0);
return new ResultBean<SysProUrlVo>().success().setData(sysProUrlVo);
}
return rb.setMsg("查询不到数据");
}
}

3
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<SysProUrl> {
* @param type 类型1办理2详情
* @return
*/
SysProUrlVo selectUrlByKey(@Param("procDefId") String procDefId, @Param("taskDefKey") String taskDefKey, @Param("type") String type);
List<SysProUrlVo> selectUrlByKey(@Param("procDefId") String procDefId, @Param("taskDefKey") String taskDefKey,
@Param("type") String type,@Param("terminal") String terminal);
}

5
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
<if test="taskDefKey != null">
and terminal = #{taskDefKey}
</if>
</select>
<!--<select id="selectUrlByKey">

9
anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/sysprourl/SysProUrlService.java

@ -156,10 +156,13 @@ public class SysProUrlService extends MybatisBaseService<SysProUrlMapper, SysPro
* @param procDefId 流程id
* @param taskDefKey 节点iD
* @param type 类型1办理2详情
* @param terminal 终端的类型
* @return
*/
public ResultBean<SysProUrlVo> selectUrlByKey(String procDefId, String taskDefKey, String type) {
ResultBean<SysProUrlVo> rb = ResultBean.fireFail();
public ResultBean<List<SysProUrlVo>> selectUrlByKey(String procDefId, String taskDefKey,
String type,
String terminal) {
ResultBean<List<SysProUrlVo>> rb = ResultBean.fireFail();
//验证参数
if (StringUtils.isBlank(procDefId)) {
return rb.setMsg("流程定义id不能为空");
@ -170,7 +173,7 @@ public class SysProUrlService extends MybatisBaseService<SysProUrlMapper, SysPro
if (StringUtils.isBlank(type)) {
return rb.setMsg("请指定要操作的类型");
}
SysProUrlVo url = baseMapper.selectUrlByKey(procDefId, taskDefKey, type);
List<SysProUrlVo> url = baseMapper.selectUrlByKey(procDefId, taskDefKey, type,terminal);
return rb.success().setData(url);
}

2
anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/flow/FlowableService.java

@ -509,7 +509,7 @@ public class FlowableService extends MybatisBaseService<FlowableMapper, Flowable
//========================================================================
String procDefId = f.getProcDefId();
String taskDefKey = f.getTaskDefKey();
ResultBean<SysProUrlVo> resultBean1 = sysProUrlFeign.selectUrlByKey(procDefId, taskDefKey, "1");
ResultBean<SysProUrlVo> resultBean1 = sysProUrlFeign.selectUrlByKey(procDefId, taskDefKey, "1","2");
//========================================================================
AppVo appVo = new AppVo();
appVo.setJson(json);

Loading…
Cancel
Save