diff --git a/anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/flow/FlowableFallback.java b/anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/flow/FlowableFallback.java index 6bc05c025d..5f2cd376ac 100644 --- a/anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/flow/FlowableFallback.java +++ b/anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/flow/FlowableFallback.java @@ -13,12 +13,21 @@ import java.util.Map; @Component public class FlowableFallback implements FlowableFeign{ + @Override + public ResultBean businessStart(String procDefId, String userSid, Map variables) { + return null; + } @Override public ResultBean processPagerList(Integer pageNum, Integer pageSize) { return null; } - @Override + + @Override + public ResultBean myprocess( String userSid, PagerQuery taskQueryPagerQuery) { + return null; + } + @Override public ResultBean todoTaskList(String userSid, PagerQuery pQuery) { return null; } diff --git a/anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/flow/FlowableFeign.java b/anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/flow/FlowableFeign.java index 9db2a7a0e4..efa672af79 100644 --- a/anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/flow/FlowableFeign.java +++ b/anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/flow/FlowableFeign.java @@ -22,6 +22,18 @@ import java.util.Map; path = "v1/flow", fallback = FlowableFallback.class) public interface FlowableFeign { + /** + * 业务系统发起流程申请 + * + * @param procDefId 流程定义id + * @param userSid 用户sid + * @param variables form参数 + * @return + */ + @PostMapping("/businessStart/{procDefId}/{userSid}") + public ResultBean businessStart(@ApiParam(value = "流程定义id") @PathVariable(value = "procDefId") String procDefId, + @ApiParam(value = "用户sid") @PathVariable(value = "userSid") String userSid, + @ApiParam(value = "变量集合,json对象") @RequestBody Map variables); /** * 流程定义列表 一般业务中不需要查询该列表 @@ -34,6 +46,17 @@ public interface FlowableFeign { public ResultBean processPagerList(@ApiParam(value = "当前页码", required = true) @RequestParam("pageNum") Integer pageNum, @ApiParam(value = "每页条数", required = true) @RequestParam("pageSize") Integer pageSize); + /** + * 我的流程 我发起的流程 + * + * @param userSid 用户sid + * @param taskQueryPagerQuery 查询参数 + * @return + */ + @PostMapping("/myprocess/{userSid}") + public ResultBean myprocess(@ApiParam(value = "用户sid") @PathVariable(value = "userSid") String userSid, + @ApiParam(value = "变量集合,json对象") @RequestBody PagerQuery taskQueryPagerQuery); + /** * 待办列表 * diff --git a/anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/flow/app/FlowTaskFinishVo.java b/anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/flow/app/FlowTaskFinishVo.java new file mode 100644 index 0000000000..f83db400cc --- /dev/null +++ b/anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/flow/app/FlowTaskFinishVo.java @@ -0,0 +1,55 @@ +package com.yxt.anrui.portal.api.flow.app; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.yxt.anrui.flowable.api.sysprourl.SysProUrlVo; +import com.yxt.common.core.vo.Vo; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; +import java.util.Map; + +/** + * @Author dimengzhe + * @Date 2022/7/29 17:31 + * @Description + */ +@Data +public class FlowTaskFinishVo implements Vo { + private static final long serialVersionUID = -5936470750210770833L; + + @ApiModelProperty(value = "流程id") + private String deployId; + @ApiModelProperty(value = "流程实例id") + private String procInsId; + @ApiModelProperty(value = "任务id") + private String taskId; + @ApiModelProperty("节点id") + private String taskDefKey; + @ApiModelProperty(value = "app集合") + private AppVo appVariables; + @ApiModelProperty(value = "环节名称") + private String taskName; + @ApiModelProperty(value = "发起部门") + private String startDeptName; + @ApiModelProperty(value = "发起人") + private String startUserName; + @ApiModelProperty(value = "工作名称") + private String procDefName; + @ApiModelProperty(value = "提交日期") + @JsonFormat(pattern = "yyyy-MM-dd") + private Date processCreateTime; + @ApiModelProperty(value = "发起日期") + @JsonFormat(pattern = "yyyy-MM-dd") + private Date createTime; + @JsonIgnore + private Map processVariables; + @ApiModelProperty("办理的url") + @JsonIgnore + private SysProUrlVo sysProUrlVo; + @ApiModelProperty("任务执行人名称") + @JsonProperty("currentHandle") + private String assigneeName; +} diff --git a/anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/flow/FlowableRest.java b/anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/flow/FlowableRest.java index ee0a3ad29f..8f231774b4 100644 --- a/anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/flow/FlowableRest.java +++ b/anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/flow/FlowableRest.java @@ -70,11 +70,21 @@ public class FlowableRest implements FlowableFeign { @Autowired private SysUserService sysUserService; + @Override + public ResultBean businessStart(String procDefId, String userSid, Map variables) { + return flowableService.businessStart(procDefId, userSid, variables); + } + @Override public ResultBean processPagerList(Integer pageNum, Integer pageSize) { return flowableService.processPagerList(pageNum, pageSize); } + @Override + public ResultBean myprocess(String userSid, PagerQuery taskQueryPagerQuery) { + return flowableService.myprocess(userSid, taskQueryPagerQuery); + } + @Override public ResultBean todoTaskList(String userSid, PagerQuery pQuery) { diff --git a/anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/flow/FlowableService.java b/anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/flow/FlowableService.java index 87580b1ee7..6390027992 100644 --- a/anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/flow/FlowableService.java +++ b/anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/flow/FlowableService.java @@ -45,6 +45,7 @@ import com.yxt.anrui.portal.api.flow.*; import com.yxt.anrui.portal.api.flow.app.AppVo; import com.yxt.anrui.portal.api.flow.app.FlowTaskDoQuery; import com.yxt.anrui.portal.api.flow.app.FlowTaskDoVo; +import com.yxt.anrui.portal.api.flow.app.FlowTaskFinishVo; import com.yxt.anrui.portal.biz.appsubsetversion.AppSubsetVersionService; import com.yxt.common.base.service.MybatisBaseService; import com.yxt.common.base.utils.ConstantUtils; @@ -278,10 +279,10 @@ public class FlowableService extends MybatisBaseService> finishApp(PagerQuery pagerQuery) { + ResultBean> rb = ResultBean.fireFail(); + PagerQuery taskQueryPagerQuery = new PagerQuery<>(); + taskQueryPagerQuery.setCurrent(pagerQuery.getCurrent()).setSize(pagerQuery.getSize()); + FlowTaskDoQuery params = pagerQuery.getParams(); + String names = params.getNames(); + String userSid = params.getUserSid(); + BusinessTaskQuery taskQuery = new BusinessTaskQuery(); + List taskParamList = new ArrayList<>(); + if (StringUtils.isNotBlank(names)) { + BusinessTaskParam taskParam = new BusinessTaskParam(); + taskParam.setField("proDefName"); + taskParam.setValue(names); + taskParam.setSqlOperationSymbol(SQLOperationSymbol.LIKE); + taskParamList.add(taskParam); + } + taskQuery.setFields(taskParamList); + taskQueryPagerQuery.setParams(taskQuery); + ResultBean> resultBean = flowTaskFeign.businessDoneListForApp(userSid, taskQueryPagerQuery); + if (!resultBean.getSuccess()) { + return rb.setMsg("流程错误"); + } + PagerVo page = new PagerVo<>(); + List voList = Optional.ofNullable(resultBean.getData().getRecords()).orElse(new ArrayList<>()).stream().map(m -> JSON.parseObject(JSON.toJSONString(m), FlowTaskFinishVo.class)).collect(Collectors.toList()); + voList.removeAll(Collections.singleton(null)); + //定义的app的sid的index集合 + Map> appVer = new HashMap<>(); + for (int i = 0; i < voList.size(); i++) { + FlowTaskFinishVo f = voList.get(i); + Map flowMap = f.getProcessVariables(); + Map appMap = ConstantUtils.getMap(flowMap, "app"); + String json = JSONObject.toJSONString(appMap); + System.out.println(json); + AppVo appVo = new AppVo(); + appVo.setJson(json); + //app版本的sid + String appSid = ""; + //app版本的类型 + String type = ""; + if (f.getSysProUrlVo() != null) { + appVo.setModuleAction(f.getSysProUrlVo().getUrl()); + appSid = f.getSysProUrlVo().getModulePluginName(); + } + //根据appSid查询最新版本的app插件包:以及类型:2插件,1框架 + if (StringUtils.isNotBlank(appSid)) { + if (appSid.contains("#")) { + type = Arrays.asList(appSid.split("#")).get(1); + } + } + if ("1".equals(type)) { + //框架 + + } else if ("2".equals(type)) { + //插件 + String appSid2 = appSid.substring(0, appSid.indexOf("#")); + List integers = appVer.get(appSid2); + if (integers == null) { + integers = new ArrayList<>(); + } + integers.add(i); + appVer.put(appSid2, integers); + } + appVo.setType(type); + voList.get(i).setAppVariables(appVo); + } + // 循环取map:若为同一个app版本,则只查询一次 + for (String key : appVer.keySet()) { + AppSubsetVersionVo appSubsetVersions = appSubsetVersionService.selectByAppSidOne(key); + if (appSubsetVersions != null) { + List integers = appVer.get(key); + for (int i = 0; i < integers.size(); i++) { + voList.get(i).getAppVariables().setPath(appSubsetVersions.getUpdateUrl()); + voList.get(i).getAppVariables().setModuleVersion(appSubsetVersions.getVersionCode()); + voList.get(i).getAppVariables().setModulePluginName(appSubsetVersions.getModulePluginName()); + } + } + } + page.setRecords(voList); + page.setCurrent(resultBean.getData().getCurrent()); + page.setSize(resultBean.getData().getSize()); + page.setTotal(resultBean.getData().getTotal()); + return rb.success().setData(page); + } }