From 6771c8c46b213db07ceedbf0f9d65cefebfaff5c Mon Sep 17 00:00:00 2001 From: God <10745413@qq.com> Date: Thu, 8 Aug 2024 15:14:13 +0800 Subject: [PATCH] =?UTF-8?q?=E7=9B=98=E7=82=B9=E6=8A=A5=E5=91=8A=E5=AE=A1?= =?UTF-8?q?=E6=89=B9=E6=B5=81=E7=A8=8B=E6=8E=A5=E5=8F=A3=E5=BC=80=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../inventroy/WmsInventoryCheckbillRest.java | 59 ++++ .../WmsInventoryCheckbillMapper.java | 3 +- .../WmsInventoryCheckbillMapper.xml | 18 + .../WmsInventoryCheckbillService.java | 329 ++++++++++++++++++ .../flowable/CompleteInventoryCheckDto.java | 35 ++ .../flowable/InventoryCheckDelegateQuery.java | 23 ++ .../flowable/InventoryCheckNodeQuery.java | 18 + .../flowable/InventoryCheckNodeVo.java | 24 ++ .../flowable/InventoryCheckTaskQuery.java | 43 +++ .../flowable/SubmitInventoryCheckDto.java | 19 + .../flowable/flow/BusinessVariables.java | 65 ++++ .../flowable/flow/FlowProcessMapQuery.java | 27 ++ .../feign/flowable/flow/FlowableFeign.java | 38 ++ .../wms/feign/flowable/flow/ProcDefEnum.java | 38 ++ .../flowable/flow/UpdateFlowFieldVo.java | 68 ++++ .../flowable/flow2/FlowDelegateQuery.java | 23 ++ .../wms/feign/flowable/flow2/FlowFeign.java | 36 ++ .../flowable/flowtask/FlowTaskFeign.java | 31 ++ .../feign/flowable/flowtask/FlowTaskVo.java | 53 +++ .../feign/flowable/flowtask/LatestTaskVo.java | 34 ++ .../yxt/wms/feign/message/MessageFeign.java | 26 ++ .../yxt/wms/feign/message/MessageFlowVo.java | 21 ++ .../feign/message/MessageFlowableQuery.java | 32 ++ .../wms/feign/message/PushMessageQuery.java | 34 ++ 24 files changed, 1096 insertions(+), 1 deletion(-) create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorycheckbill/flowable/CompleteInventoryCheckDto.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorycheckbill/flowable/InventoryCheckDelegateQuery.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorycheckbill/flowable/InventoryCheckNodeQuery.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorycheckbill/flowable/InventoryCheckNodeVo.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorycheckbill/flowable/InventoryCheckTaskQuery.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorycheckbill/flowable/SubmitInventoryCheckDto.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/feign/flowable/flow/BusinessVariables.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/feign/flowable/flow/FlowProcessMapQuery.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/feign/flowable/flow/FlowableFeign.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/feign/flowable/flow/ProcDefEnum.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/feign/flowable/flow/UpdateFlowFieldVo.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/feign/flowable/flow2/FlowDelegateQuery.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/feign/flowable/flow2/FlowFeign.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/feign/flowable/flowtask/FlowTaskFeign.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/feign/flowable/flowtask/FlowTaskVo.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/feign/flowable/flowtask/LatestTaskVo.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/feign/message/MessageFeign.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/feign/message/MessageFlowVo.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/feign/message/MessageFlowableQuery.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/feign/message/PushMessageQuery.java diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/apiadmin/inventroy/WmsInventoryCheckbillRest.java b/yxt-wms-biz/src/main/java/com/yxt/wms/apiadmin/inventroy/WmsInventoryCheckbillRest.java index 4ca25de69a..b117c0b7be 100644 --- a/yxt-wms-biz/src/main/java/com/yxt/wms/apiadmin/inventroy/WmsInventoryCheckbillRest.java +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/apiadmin/inventroy/WmsInventoryCheckbillRest.java @@ -25,17 +25,24 @@ *********************************************************/ package com.yxt.wms.apiadmin.inventroy; +import cn.hutool.core.bean.BeanUtil; import com.yxt.common.core.query.PagerQuery; import com.yxt.common.core.result.ResultBean; import com.yxt.common.core.vo.PagerVo; import com.yxt.wms.biz.inventory.wmsinventorycheckbill.*; +import com.yxt.wms.biz.inventory.wmsinventorycheckbill.flowable.*; import com.yxt.wms.biz.inventory.wmsinventorycheckbilldetail.*; import com.yxt.wms.biz.inventory.wmsinventorycheckbillreport.WmsInventoryCheckbillReportDetailsVo; +import com.yxt.wms.feign.flowable.flow.BusinessVariables; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.cloud.openfeign.SpringQueryMap; import org.springframework.web.bind.annotation.*; +import javax.validation.Valid; +import java.util.List; + /** * Project: yxt-wms(仓储)
* File: WmsInventoryCheckbillFeignFallback.java
@@ -124,4 +131,56 @@ public class WmsInventoryCheckbillRest { PagerVo pv = wmsInventoryCheckbillService.detailRackGoodPageList(pq); return rb.success().setData(pv); } + + @ApiOperation("提交") + @PostMapping("/submitApply") + public ResultBean submitApply(@Valid @RequestBody SubmitInventoryCheckDto dto) { + return wmsInventoryCheckbillService.submitApply(dto); + } + + @ApiOperation(value = "办理(同意)") + @PostMapping("/complete") + public ResultBean complete(@Valid @RequestBody CompleteInventoryCheckDto query) { + BusinessVariables bv = new BusinessVariables(); + BeanUtil.copyProperties(query, bv); + bv.setModelId(""); + return wmsInventoryCheckbillService.complete(bv); + } + + @ApiOperation(value = "获取上一个环节") + @GetMapping(value = "/getPreviousNodesForReject") + ResultBean> getPreviousNodesForReject(@Valid @SpringQueryMap InventoryCheckNodeQuery query) { + return wmsInventoryCheckbillService.getPreviousNodesForReject(query); + } + + @ApiOperation(value = "获取下一个环节") + @GetMapping(value = "/getNextNodesForSubmit") + ResultBean> getNextNodesForSubmit(@Valid @SpringQueryMap InventoryCheckNodeQuery query) { + return wmsInventoryCheckbillService.getNextNodesForSubmit(query); + } + + @ApiOperation(value = "驳回任务") + @PostMapping(value = "/reject") + public ResultBean taskReject(@Valid @RequestBody InventoryCheckTaskQuery query) { + return wmsInventoryCheckbillService.taskReject(query); + } + + @ApiOperation(value = "撤回流程") + @PostMapping(value = "/revokeProcess") + public ResultBean revokeProcess(@Valid @RequestBody InventoryCheckTaskQuery query) { + return wmsInventoryCheckbillService.revokeProcess(query); + } + + @ApiOperation(value = "终止任务") + @PostMapping(value = "/breakProcess") + public ResultBean breakProcess(@Valid @RequestBody InventoryCheckTaskQuery query) { + return wmsInventoryCheckbillService.breakProcess(query); + } + + @ApiOperation(value = "加签") + @PostMapping(value = "/delegate") + @ResponseBody + public ResultBean delegate(@RequestBody InventoryCheckDelegateQuery query) { + return wmsInventoryCheckbillService.delegate(query); + } } diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorycheckbill/WmsInventoryCheckbillMapper.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorycheckbill/WmsInventoryCheckbillMapper.java index 514559e216..5101121d94 100644 --- a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorycheckbill/WmsInventoryCheckbillMapper.java +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorycheckbill/WmsInventoryCheckbillMapper.java @@ -39,6 +39,7 @@ import org.apache.ibatis.annotations.Select; import org.apache.ibatis.annotations.Update; import java.util.List; +import java.util.Map; /** * Project: yxt-wms(仓储)
@@ -78,5 +79,5 @@ public interface WmsInventoryCheckbillMapper extends BaseMapper beanToMap); } \ No newline at end of file diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorycheckbill/WmsInventoryCheckbillMapper.xml b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorycheckbill/WmsInventoryCheckbillMapper.xml index 673a84e8d8..1437193f57 100644 --- a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorycheckbill/WmsInventoryCheckbillMapper.xml +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorycheckbill/WmsInventoryCheckbillMapper.xml @@ -197,4 +197,22 @@ ORDER BY createTime DESC LIMIT 1 + + + UPDATE wms_inventory_checkbill + SET nodeState=#{nodeState}, nodeId=#{taskDefKey} + + , finishTime = NOW() + + + , procDefId=#{procDefId} + + + , procInstId=#{procInsId} + + + , taskId=#{taskId} + + WHERE sid=#{sid} + \ No newline at end of file diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorycheckbill/WmsInventoryCheckbillService.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorycheckbill/WmsInventoryCheckbillService.java index 0f9e008a0d..64bda85d97 100644 --- a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorycheckbill/WmsInventoryCheckbillService.java +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorycheckbill/WmsInventoryCheckbillService.java @@ -27,8 +27,10 @@ package com.yxt.wms.biz.inventory.wmsinventorycheckbill; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; +import com.google.common.util.concurrent.ThreadFactoryBuilder; import com.yxt.common.base.config.component.DocPdfComponent; import com.yxt.common.base.utils.WordConvertUtils; import com.yxt.common.core.result.ResultBean; @@ -39,8 +41,21 @@ import com.yxt.wms.biz.base.wmswarehouserack.WmsWarehouseRackService; import com.yxt.wms.biz.inventory.wmsappendix.WmsAppendixService; import com.yxt.wms.biz.inventory.wmsinventory.WmsInventory; import com.yxt.wms.biz.inventory.wmsinventory.WmsInventoryService; +import com.yxt.wms.biz.inventory.wmsinventorycheckbill.flowable.*; import com.yxt.wms.biz.inventory.wmsinventorycheckbilldetail.*; import com.yxt.wms.biz.inventory.wmsinventorycheckbillreport.*; +import com.yxt.wms.feign.flowable.flow.BusinessVariables; +import com.yxt.wms.feign.flowable.flow.FlowableFeign; +import com.yxt.wms.feign.flowable.flow.ProcDefEnum; +import com.yxt.wms.feign.flowable.flow.UpdateFlowFieldVo; +import com.yxt.wms.feign.flowable.flow2.FlowDelegateQuery; +import com.yxt.wms.feign.flowable.flow2.FlowFeign; +import com.yxt.wms.feign.flowable.flowtask.FlowTaskFeign; +import com.yxt.wms.feign.flowable.flowtask.FlowTaskVo; +import com.yxt.wms.feign.flowable.flowtask.LatestTaskVo; +import com.yxt.wms.feign.message.MessageFeign; +import com.yxt.wms.feign.message.MessageFlowVo; +import com.yxt.wms.feign.message.MessageFlowableQuery; import com.yxt.wms.feign.portal.privilege.PrivilegeQuery; import com.yxt.wms.feign.portal.sysorganization.SysOrganizationFeign; import com.yxt.wms.feign.portal.sysorganization.SysOrganizationVo; @@ -53,12 +68,15 @@ import com.yxt.common.base.utils.PagerUtil; import com.yxt.common.core.query.PagerQuery; import com.yxt.common.core.vo.PagerVo; +import org.apache.tomcat.util.threads.ThreadPoolExecutor; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.io.File; import java.io.InputStream; import java.util.*; +import java.util.concurrent.*; +import java.util.stream.Collectors; /** * Project: yxt-wms(仓储)
@@ -96,6 +114,14 @@ public class WmsInventoryCheckbillService extends MybatisBaseService listPageVo(PagerQuery pq) { WmsInventoryCheckbillQuery query = pq.getParams(); @@ -429,4 +455,307 @@ public class WmsInventoryCheckbillService extends MybatisBaseService variables = new HashMap<>(); + Map appMap = new HashMap<>(); + appMap.put("sid", businessSid); + variables.put("app", appMap); + //用户的部门全路径sid + SysOrganizationVo sysOrganization = sysOrganizationFeign.fetchBySid(wmsInventoryCheckbill.getDeptSid()).getData(); + if (sysOrganization != null) { + bv.setOrgSidPath(sysOrganization.getOrgSidPath()); + } + bv.setBusinessSid(businessSid); + bv.setUserSid(dto.getCreateBySid()); + bv.setFormVariables(variables); + if (r == 1) { + //ToDo:流程定义id + bv.setModelId(ProcDefEnum.WMSINVENCHECKREPORT.getProDefId()); + ResultBean voResultBean = flowFeign.startProcess(bv); + if (!voResultBean.getSuccess()) { + return rb.setMsg(voResultBean.getMsg()); + } + UpdateFlowFieldVo ufVo = voResultBean.getData(); + updateFlowFiled(BeanUtil.beanToMap(ufVo)); + wmsInventoryCheckbill = fetchBySid(businessSid); + //==================================添加线程 + try { + ThreadFactory namedThreadFactory = new ThreadFactoryBuilder() + .setNameFormat("demo-pool-%d").build(); + ExecutorService pool = new ThreadPoolExecutor(2, 100, + 0L, TimeUnit.MILLISECONDS, + new LinkedBlockingQueue(1024), namedThreadFactory, new ThreadPoolExecutor.AbortPolicy()); + WmsInventoryCheckbill finalWmsInventoryCheckbill = wmsInventoryCheckbill; + Future future1 = pool.submit(() -> { + //极光推送 + MessageFlowableQuery messageFlowableQuery = new MessageFlowableQuery(); + MessageFlowVo messageFlowVo = new MessageFlowVo(); + BeanUtil.copyProperties(ufVo, messageFlowVo); + messageFlowableQuery.setUfVo(messageFlowVo); + messageFlowableQuery.setAppMap(appMap); + messageFlowableQuery.setBusinessSid(businessSid); + messageFlowableQuery.setModuleName("盘点报告审批"); + messageFlowableQuery.setMsgContent(finalWmsInventoryCheckbill.getCreateByName() + "提交的" + messageFlowableQuery.getModuleName() + ",请审批"); + messageFlowableQuery.setMsgTitle("盘点报告审批"); + ResultBean stringResultBean = messageFeign.pushMessage(messageFlowableQuery); + }); + } catch (Exception e) { + e.printStackTrace(); + } + //==================================添加线程 + return voResultBean; + } + if (r == 2) { + // ToDo:驳回到发起人后再次提交 + if (StringUtils.isBlank(dto.getInstanceId())) { + return rb.setMsg("参数错误:instanceId"); + } + bv.setTaskId(wmsInventoryCheckbill.getTaskId()); + bv.setTaskDefKey(wmsInventoryCheckbill.getNodeId()); + bv.setComment("重新提交"); + bv.setInstanceId(dto.getInstanceId()); + return complete(bv); + } + return rb; + } + + private int updateFlowFiled(Map beanToMap) { + return baseMapper.updateFlowFiled(beanToMap); + } + + + private int submitBusinessData(SubmitInventoryCheckDto dto, WmsInventoryCheckbill wmsInventoryCheckbill) { + int r = 0; + if (StringUtils.isBlank(dto.getSid())) { + r = 1; + } else { + if (wmsInventoryCheckbill != null) { + String businessTaskId = wmsInventoryCheckbill.getTaskId(); + if (StringUtils.isBlank(businessTaskId) && StringUtils.isBlank(dto.getTaskId())) { + //新提交 + r = 1; + } else if (StringUtils.isNotBlank(businessTaskId) && businessTaskId.equals(dto.getTaskId())) { + //二次提交//只有数据一致的时候才能进行下一步 + r = 2; + } + } else { + r = 3; + } + } + return r; + } + + public ResultBean complete(BusinessVariables bv) { + ResultBean rb = ResultBean.fireFail(); + String businessSid = bv.getBusinessSid(); + WmsInventoryCheckbill wmsInventoryCheckbill = fetchBySid(businessSid); + Map variables = new HashMap<>(); + Map appMap = new HashMap<>(); + appMap.put("sid", businessSid); + variables.put("app", appMap); + bv.setFormVariables(variables); + SysOrganizationVo sysOrganization = sysOrganizationFeign.fetchBySid(wmsInventoryCheckbill.getDeptSid()).getData(); + if (sysOrganization != null) { + bv.setOrgSidPath(sysOrganization.getOrgSidPath()); + } + bv.setModelId(wmsInventoryCheckbill.getProcDefId()); + if (bv.getTaskId().equals(wmsInventoryCheckbill.getTaskId())) { + ResultBean resultBean = flowFeign.handleProsess(bv); + if (!resultBean.getSuccess()) { + return rb.setMsg(resultBean.getMsg()); + } + UpdateFlowFieldVo ufVo = resultBean.getData(); + updateFlowFiled(BeanUtil.beanToMap(resultBean.getData())); + if ("Event_end".equals(resultBean.getData().getTaskDefKey())) { + + } else { + //极光推送 + wmsInventoryCheckbill = fetchBySid(businessSid); + MessageFlowableQuery messageFlowableQuery = new MessageFlowableQuery(); + MessageFlowVo messageFlowVo = new MessageFlowVo(); + BeanUtil.copyProperties(ufVo, messageFlowVo); + messageFlowVo.setProcDefId(wmsInventoryCheckbill.getProcDefId()); + messageFlowVo.setProcInsId(wmsInventoryCheckbill.getProcInstId()); + messageFlowableQuery.setUfVo(messageFlowVo); + messageFlowableQuery.setAppMap(appMap); + messageFlowableQuery.setBusinessSid(businessSid); + messageFlowableQuery.setModuleName("盘点报告审批"); + messageFlowableQuery.setMsgContent(wmsInventoryCheckbill.getCreateByName() + "提交的" + messageFlowableQuery.getModuleName() + ",请审批"); + messageFlowableQuery.setMsgTitle("盘点报告审批"); + ResultBean stringResultBean = messageFeign.pushMessage(messageFlowableQuery); + } + return rb.success().setData(resultBean.getData()); + } else { + return rb.setMsg("操作失败!提交的数据不一致"); + } + } + + public ResultBean> getPreviousNodesForReject(InventoryCheckNodeQuery query) { + ResultBean> rb = ResultBean.fireFail(); + BusinessVariables bv = new BusinessVariables(); + BeanUtil.copyProperties(query, bv); + WmsInventoryCheckbill wmsInventoryCheckbill = fetchBySid(query.getBusinessSid()); + bv.setModelId(wmsInventoryCheckbill.getProcDefId()); + ResultBean>> resultBean = flowTaskFeign.getPreviousNodesForReject(bv); + //判断数组是否为空,若为空则赋值,若不为空,则遍历循环将map中的数据赋值给TemplateApplyNodeVo + List voList = Optional.ofNullable(resultBean.getData()).orElse(new ArrayList<>()).stream().map(m -> JSON.parseObject(JSON.toJSONString(m), InventoryCheckNodeVo.class)).collect(Collectors.toList()); + return rb.success().setData(voList); + } + + public ResultBean> getNextNodesForSubmit(InventoryCheckNodeQuery query) { + ResultBean> rb = ResultBean.fireFail(); + BusinessVariables bv = new BusinessVariables(); + BeanUtil.copyProperties(query, bv); + WmsInventoryCheckbill wmsInventoryCheckbill = fetchBySid(query.getBusinessSid()); + bv.setModelId(wmsInventoryCheckbill.getProcDefId()); + ResultBean>> resultBean = flowTaskFeign.getNextNodesForSubmit(bv); + //判断数组是否为空,若为空则赋值,若不为空,则遍历循环将map中的数据赋值给TemplateApplyNodeVo + List voList = Optional.ofNullable(resultBean.getData()).orElse(new ArrayList<>()).stream().map(m -> JSON.parseObject(JSON.toJSONString(m), InventoryCheckNodeVo.class)).collect(Collectors.toList()); + return rb.success().setData(voList); + } + + public ResultBean taskReject(InventoryCheckTaskQuery query) { + ResultBean rb = ResultBean.fireFail(); + String businessSid = query.getBusinessSid(); + WmsInventoryCheckbill wmsInventoryCheckbill = fetchBySid(businessSid); + if (wmsInventoryCheckbill == null) { + return rb.setMsg("该申请不存在"); + } + String businessTaskId = wmsInventoryCheckbill.getTaskId(); + if (StringUtils.isNotBlank(businessTaskId)) { + if (businessTaskId.equals(query.getTaskId())) { + if (StringUtils.isBlank(query.getComment())) { + return rb.setMsg("请填写意见"); + } + if (StringUtils.isBlank(query.getUserSid())) { + return rb.setMsg("参数错误:userSid"); + } + FlowTaskVo flowTaskVo = new FlowTaskVo(); + BeanUtil.copyProperties(query, flowTaskVo); + Map variables = new HashMap<>(); + Map appMap = new HashMap<>(); + appMap.put("sid", businessSid); + variables.put("app", appMap); + ResultBean resultBean = flowableFeign.taskReject(flowTaskVo); + if (!resultBean.getSuccess()) { + return rb.setMsg(resultBean.getMsg()); + } + UpdateFlowFieldVo ufVo = resultBean.getData(); + Map map = BeanUtil.beanToMap(ufVo); + //更新业务中的流程相关的参数 + updateFlowFiled(map); + //极光推送 + wmsInventoryCheckbill = fetchBySid(businessSid); + MessageFlowableQuery messageFlowableQuery = new MessageFlowableQuery(); + MessageFlowVo messageFlowVo = new MessageFlowVo(); + BeanUtil.copyProperties(ufVo, messageFlowVo); + String procId = wmsInventoryCheckbill.getProcInstId(); + messageFlowVo.setProcInsId(procId); + messageFlowVo.setProcDefId(wmsInventoryCheckbill.getProcDefId()); + messageFlowableQuery.setUfVo(messageFlowVo); + messageFlowableQuery.setAppMap(appMap); + messageFlowableQuery.setBusinessSid(businessSid); + messageFlowableQuery.setModuleName("盘点报告审批"); + ResultBean> listResultBean = flowTaskFeign.getLatestTasks(procId); + String nextName = listResultBean.getData().get(0).getName_(); + String nextNodeUserSids = listResultBean.getData().get(0).getASSIGNEE_(); + if ("发起申请".equals(nextName)) { + messageFlowableQuery.setMsgContent("您提交的" + messageFlowableQuery.getModuleName() + "已被驳回,请重新提交"); + } else { + messageFlowableQuery.setMsgContent(wmsInventoryCheckbill.getCreateByName() + "提交的" + messageFlowableQuery.getModuleName() + ",请审批"); + } + + messageFlowableQuery.setMsgTitle("盘点报告审批"); + ResultBean stringResultBean = messageFeign.pushMessage(messageFlowableQuery); + return rb.success(); + } + } + return rb.setMsg("操作失败!提交的数据不一致!"); + } + + public ResultBean revokeProcess(InventoryCheckTaskQuery query) { + ResultBean rb = ResultBean.fireFail(); + if (StringUtils.isBlank(query.getUserSid())) { + return rb.setMsg("参数错误:userSid"); + } + WmsInventoryCheckbill wmsInventoryCheckbill = fetchBySid(query.getBusinessSid()); + String businessTaskId = wmsInventoryCheckbill.getTaskId(); + if (StringUtils.isNotBlank(businessTaskId)) { + if (businessTaskId.equals(query.getTaskId())) { + FlowTaskVo flowTaskVo = new FlowTaskVo(); + BeanUtil.copyProperties(query, flowTaskVo); + ResultBean resultBean = flowableFeign.revokeProcess(flowTaskVo); + if (!resultBean.getSuccess()) { + return rb.setMsg(resultBean.getMsg()); + } + updateFlowFiled(BeanUtil.beanToMap(resultBean.getData())); + return rb.success().setData(resultBean.getData()); + } + } + return rb.setMsg("操作失败,提交的数据不一致!"); + } + + public ResultBean breakProcess(InventoryCheckTaskQuery query) { + ResultBean rb = ResultBean.fireFail(); + if (StringUtils.isBlank(query.getInstanceId())) { + return rb.setMsg("参数错误:instanceId"); + } + if (StringUtils.isBlank(query.getUserSid())) { + return rb.setMsg("参数错误:userSid"); + } + if (StringUtils.isBlank(query.getComment())) { + return rb.setMsg("请填写意见"); + } + WmsInventoryCheckbill wmsInventoryCheckbill = fetchBySid(query.getBusinessSid()); + String businessTaskId = wmsInventoryCheckbill.getTaskId(); + if (StringUtils.isNotBlank(businessTaskId)) { + if (query.getUserSid().equals(wmsInventoryCheckbill.getCreateBySid())) { + FlowTaskVo flowTaskVo = new FlowTaskVo(); + BeanUtil.copyProperties(query, flowTaskVo); + ResultBean resultBean = flowableFeign.breakProcess(flowTaskVo); + if (!resultBean.getSuccess()) { + return rb.setMsg(resultBean.getMsg()); + } + Map map = BeanUtil.beanToMap(resultBean.getData()); + updateFlowFiled(map); + return rb.success().setData(resultBean.getData()); + } else { + if (businessTaskId.equals(query.getTaskId())) { + FlowTaskVo flowTaskVo = new FlowTaskVo(); + BeanUtil.copyProperties(query, flowTaskVo); + ResultBean resultBean = flowableFeign.breakProcess(flowTaskVo); + if (!resultBean.getSuccess()) { + return rb.setMsg(resultBean.getMsg()); + } + Map map = BeanUtil.beanToMap(resultBean.getData()); + updateFlowFiled(map); + return rb.success().setData(resultBean.getData()); + } + } + } + return rb.setMsg("操作失败!提交的数据不一致!"); + } + + public ResultBean delegate(InventoryCheckDelegateQuery query) { + ResultBean rb = ResultBean.fireFail(); + FlowDelegateQuery delegateQuery = new FlowDelegateQuery(); + BeanUtil.copyProperties(query, delegateQuery); + flowFeign.delegate(delegateQuery); + return rb.success(); + } } \ No newline at end of file diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorycheckbill/flowable/CompleteInventoryCheckDto.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorycheckbill/flowable/CompleteInventoryCheckDto.java new file mode 100644 index 0000000000..4d53fde4c8 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorycheckbill/flowable/CompleteInventoryCheckDto.java @@ -0,0 +1,35 @@ +package com.yxt.wms.biz.inventory.wmsinventorycheckbill.flowable; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/5/11 + **/ +@Data +public class CompleteInventoryCheckDto { + + @ApiModelProperty(value = "用户sid") + @NotBlank(message = "参数错误:userSid") + private String userSid; + @ApiModelProperty(value = "用户全路径sid") + private String orgSidPath; + @ApiModelProperty(value = "节点id") + @NotBlank(message = "参数错误:taskDefKey") + private String taskDefKey; + @ApiModelProperty(value = "任务id") + @NotBlank(message = "参数错误:taskId") + private String taskId; + @ApiModelProperty(value = "流程id") + @NotBlank(message = "参数错误:instanceId") + private String instanceId; + @ApiModelProperty(value = "意见") + private String comment; + @ApiModelProperty(value = "业务sid") + @NotBlank(message = "参数错误:businessSid") + private String businessSid; +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorycheckbill/flowable/InventoryCheckDelegateQuery.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorycheckbill/flowable/InventoryCheckDelegateQuery.java new file mode 100644 index 0000000000..41e5c0e27f --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorycheckbill/flowable/InventoryCheckDelegateQuery.java @@ -0,0 +1,23 @@ +package com.yxt.wms.biz.inventory.wmsinventorycheckbill.flowable; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/5/11 + **/ +@Data +public class InventoryCheckDelegateQuery { + + private String userSid; + @ApiModelProperty("流程实例id") + private String instanceId; + @ApiModelProperty("任务Id") + private String taskId; + @ApiModelProperty("审批人sid") + private String assignee; + @ApiModelProperty("填写意见") + private String views; +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorycheckbill/flowable/InventoryCheckNodeQuery.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorycheckbill/flowable/InventoryCheckNodeQuery.java new file mode 100644 index 0000000000..b8e7349559 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorycheckbill/flowable/InventoryCheckNodeQuery.java @@ -0,0 +1,18 @@ +package com.yxt.wms.biz.inventory.wmsinventorycheckbill.flowable; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/5/11 + **/ +@Data +public class InventoryCheckNodeQuery { + + @ApiModelProperty(value = "环节定义id") + private String taskDefKey; + @ApiModelProperty(value = "业务sid") + private String businessSid; +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorycheckbill/flowable/InventoryCheckNodeVo.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorycheckbill/flowable/InventoryCheckNodeVo.java new file mode 100644 index 0000000000..aa660a437a --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorycheckbill/flowable/InventoryCheckNodeVo.java @@ -0,0 +1,24 @@ +package com.yxt.wms.biz.inventory.wmsinventorycheckbill.flowable; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/5/11 + **/ +@Data +public class InventoryCheckNodeVo { + + @ApiModelProperty(value = "节点名称") + private String name; + @ApiModelProperty(value = "节点id") + private String id; + @ApiModelProperty(value = "审批组") + private List candidateGroups; + @ApiModelProperty(value = "是否是最后环节") + private String endTask; +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorycheckbill/flowable/InventoryCheckTaskQuery.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorycheckbill/flowable/InventoryCheckTaskQuery.java new file mode 100644 index 0000000000..1c7a3fd540 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorycheckbill/flowable/InventoryCheckTaskQuery.java @@ -0,0 +1,43 @@ +package com.yxt.wms.biz.inventory.wmsinventorycheckbill.flowable; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/5/11 + **/ +@Data +public class InventoryCheckTaskQuery { + + /** + * 终止、驳回、撤回 + */ + @ApiModelProperty("任务Id") + @NotBlank(message = "参数错误:taskId") + private String taskId; + /** + * 终止、驳回、撤回 + */ + @ApiModelProperty("业务sid") + @NotBlank(message = "参数错误:businessSid") + private String businessSid; + /** + * 终止、驳回 + */ + @ApiModelProperty("任务意见") + private String comment; + /** + * 终止、撤回、驳回 + */ + @ApiModelProperty("用户Sid") + private String userSid; + /** + * 终止 + */ + @ApiModelProperty("流程实例Id") + private String instanceId; +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorycheckbill/flowable/SubmitInventoryCheckDto.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorycheckbill/flowable/SubmitInventoryCheckDto.java new file mode 100644 index 0000000000..5580b88011 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorycheckbill/flowable/SubmitInventoryCheckDto.java @@ -0,0 +1,19 @@ +package com.yxt.wms.biz.inventory.wmsinventorycheckbill.flowable; + +import com.yxt.wms.biz.inventory.wmsinventorycheckbill.WmsInventoryCheckbillDto; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/5/11 + **/ +@Data +public class SubmitInventoryCheckDto extends WmsInventoryCheckbillDto { + + @ApiModelProperty("流程实例id") + private String instanceId; + @ApiModelProperty("任务id") + private String taskId; +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/feign/flowable/flow/BusinessVariables.java b/yxt-wms-biz/src/main/java/com/yxt/wms/feign/flowable/flow/BusinessVariables.java new file mode 100644 index 0000000000..77ef1d4562 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/feign/flowable/flow/BusinessVariables.java @@ -0,0 +1,65 @@ +package com.yxt.wms.feign.flowable.flow; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.HashMap; +import java.util.Map; + +/** + * 业务系统调用flowable流程传递参数的格式 + */ +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class BusinessVariables { + /** + * 分公司sid + */ + public static final String ORGPATH="orgPath"; + /** + * 流程定义的id + */ + private String modelId; + /** + * 审批意见 + */ + private String comment; + /** + * 流程实例的id + */ + private String instanceId; + /** + * taskId + */ + private String taskId; + /** + * 当前用户的id + */ + private String userSid; + /** + * 当前用户部门的全路径 + */ + private String orgSidPath; + /** + * 业务sid + */ + private String businessSid; + /** + * 环节定义的ID + */ + private String taskDefKey; + /** + * nextNodeUserSids 下一环节的用户sid + */ + private String nextNodeUserSids; + /** + * 业务参数,按需传递 + */ + private Map formVariables =new HashMap<>(); + /* @ApiModelProperty("机构sid:切换结构使用") + private String orgPath;*/ +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/feign/flowable/flow/FlowProcessMapQuery.java b/yxt-wms-biz/src/main/java/com/yxt/wms/feign/flowable/flow/FlowProcessMapQuery.java new file mode 100644 index 0000000000..f18bf3b982 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/feign/flowable/flow/FlowProcessMapQuery.java @@ -0,0 +1,27 @@ +package com.yxt.wms.feign.flowable.flow; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Map; + +/** + * @description: 流程获取map + * @author: dimengzhe + * @date: 2023/5/26 + **/ +@Data +public class FlowProcessMapQuery { + + @ApiModelProperty("合同编号") + private String contractNo; + @ApiModelProperty("变量") + private Map variables; + @ApiModelProperty("流程id") + private String proDefKey; + + @ApiModelProperty("是否领票(欠款开票使用)") + private String isLP; + @ApiModelProperty("贷款人姓名") + private String dkrName; +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/feign/flowable/flow/FlowableFeign.java b/yxt-wms-biz/src/main/java/com/yxt/wms/feign/flowable/flow/FlowableFeign.java new file mode 100644 index 0000000000..a000cb7430 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/feign/flowable/flow/FlowableFeign.java @@ -0,0 +1,38 @@ +package com.yxt.wms.feign.flowable.flow; + +import com.yxt.common.core.result.ResultBean; +import com.yxt.wms.feign.flowable.flowtask.FlowTaskVo; +import io.swagger.annotations.ApiOperation; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.ResponseBody; + +import java.util.Map; + +@FeignClient( + contextId = "anrui-flowable-Flowable", + name = "anrui-flowable", + path = "v1/flow") +public interface FlowableFeign { + + @ApiOperation(value = "获取map") + @PostMapping(value = "/getMap") + @ResponseBody + ResultBean> getMap(@RequestBody FlowProcessMapQuery query); + + @ApiOperation(value = "驳回流程") + @PostMapping(value = "/taskReject") + @ResponseBody + ResultBean taskReject(@RequestBody FlowTaskVo fl); + + @ApiOperation(value = "撤回流程") + @PostMapping(value = "/revokeProcess") + @ResponseBody + ResultBean revokeProcess(@RequestBody FlowTaskVo fl); + + @ApiOperation(value = "终止流程") + @PostMapping(value = "/breakProcess") + @ResponseBody + ResultBean breakProcess(@RequestBody FlowTaskVo fl); +} \ No newline at end of file diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/feign/flowable/flow/ProcDefEnum.java b/yxt-wms-biz/src/main/java/com/yxt/wms/feign/flowable/flow/ProcDefEnum.java new file mode 100644 index 0000000000..d22f535e29 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/feign/flowable/flow/ProcDefEnum.java @@ -0,0 +1,38 @@ +package com.yxt.wms.feign.flowable.flow; + +/** + * 流程定义:流程名称与代号枚举类 + */ +public enum ProcDefEnum { + + + /***************************正式流程id***********************************/ + WMSINVENCHECKREPORT("盘点报告审批", ""), + ; + + + ProcDefEnum(String proDefName, String proDefId) { + this.proDefName = proDefName; + this.proDefId = proDefId; + + } + + /** + * 流程类型名称 + */ + private final String proDefName; + + /** + * 流程代号 + */ + private final String proDefId; + + public String getProDefName() { + return proDefName; + } + + public String getProDefId() { + return proDefId; + } +} + diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/feign/flowable/flow/UpdateFlowFieldVo.java b/yxt-wms-biz/src/main/java/com/yxt/wms/feign/flowable/flow/UpdateFlowFieldVo.java new file mode 100644 index 0000000000..aa771581e1 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/feign/flowable/flow/UpdateFlowFieldVo.java @@ -0,0 +1,68 @@ +package com.yxt.wms.feign.flowable.flow; + +public class UpdateFlowFieldVo { + + private String sid; + private String procDefId; + private String nodeState; + private String procInsId; + private String taskDefKey; + private String taskId; + private String nextNodeUserSids; + + public String getNextNodeUserSids() { + return nextNodeUserSids; + } + + public void setNextNodeUserSids(String nextNodeUserSids) { + this.nextNodeUserSids = nextNodeUserSids; + } + + public String getSid() { + return sid; + } + + public void setSid(String sid) { + this.sid = sid; + } + + public String getProcDefId() { + return procDefId; + } + + public void setProcDefId(String procDefId) { + this.procDefId = procDefId; + } + + public String getNodeState() { + return nodeState; + } + + public void setNodeState(String nodeState) { + this.nodeState = nodeState; + } + + public String getProcInsId() { + return procInsId; + } + + public void setProcInsId(String procInsId) { + this.procInsId = procInsId; + } + + public String getTaskDefKey() { + return taskDefKey; + } + + public void setTaskDefKey(String taskDefKey) { + this.taskDefKey = taskDefKey; + } + + public String getTaskId() { + return taskId; + } + + public void setTaskId(String taskId) { + this.taskId = taskId; + } +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/feign/flowable/flow2/FlowDelegateQuery.java b/yxt-wms-biz/src/main/java/com/yxt/wms/feign/flowable/flow2/FlowDelegateQuery.java new file mode 100644 index 0000000000..34d7b38c8a --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/feign/flowable/flow2/FlowDelegateQuery.java @@ -0,0 +1,23 @@ +package com.yxt.wms.feign.flowable.flow2; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @author Administrator + * @description + * @date 2023/10/8 15:58 + */ +@Data +public class FlowDelegateQuery { + @ApiModelProperty + private String userSid; + @ApiModelProperty("流程实例id") + private String instanceId; + @ApiModelProperty("任务Id") + private String taskId; + @ApiModelProperty("审批人sid") + private String assignee; + @ApiModelProperty("填写意见") + private String views; +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/feign/flowable/flow2/FlowFeign.java b/yxt-wms-biz/src/main/java/com/yxt/wms/feign/flowable/flow2/FlowFeign.java new file mode 100644 index 0000000000..902cad1d71 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/feign/flowable/flow2/FlowFeign.java @@ -0,0 +1,36 @@ +package com.yxt.wms.feign.flowable.flow2; + +import com.yxt.common.core.result.ResultBean; +import com.yxt.wms.feign.flowable.flow.BusinessVariables; +import com.yxt.wms.feign.flowable.flow.UpdateFlowFieldVo; +import io.swagger.annotations.ApiOperation; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.ResponseBody; + +@FeignClient( + contextId = "anrui-flowable-Flow", + name = "anrui-flowable", + path = "v2/flow") +public interface FlowFeign { + + @ApiOperation(value = "加签") + @PostMapping(value = "/delegate") + public ResultBean delegate(@RequestBody FlowDelegateQuery flowDelegateQuery); + + @ApiOperation(value = "启动流程") + @PostMapping(value = "/startProcess") + @ResponseBody + ResultBean startProcess(@RequestBody BusinessVariables dto); + + @ApiOperation(value = "处理流程") + @PostMapping(value = "/handleProsess") + @ResponseBody + ResultBean handleProsess(@RequestBody BusinessVariables bv); + + @ApiOperation(value = "转办") + @PostMapping(value = "/assignTask") + public ResultBean assignTask(@RequestBody FlowDelegateQuery flowDelegateQuery); + +} \ No newline at end of file diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/feign/flowable/flowtask/FlowTaskFeign.java b/yxt-wms-biz/src/main/java/com/yxt/wms/feign/flowable/flowtask/FlowTaskFeign.java new file mode 100644 index 0000000000..326b4f117b --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/feign/flowable/flowtask/FlowTaskFeign.java @@ -0,0 +1,31 @@ +package com.yxt.wms.feign.flowable.flowtask; + +import com.yxt.common.core.result.ResultBean; +import com.yxt.wms.feign.flowable.flow.BusinessVariables; +import io.swagger.annotations.ApiOperation; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; + +import java.util.List; + +@FeignClient( + contextId = "anrui-flowable-FlowTask", + name = "anrui-flowable", + path = "v1/flowable/task") +public interface FlowTaskFeign { + + @ApiOperation(value = "获取下一个环节") + @PostMapping(value = "/getNextNodesForSubmit") + ResultBean getNextNodesForSubmit(@RequestBody BusinessVariables bv); + + @ApiOperation(value = "根据流程实例的id获取最新待办环节") + @PostMapping(value = "/获取上一个环节") + ResultBean getPreviousNodesForReject(@RequestBody BusinessVariables bv); + + @ApiOperation(value = "根据流程实例的id获取最新待办环节") + @PostMapping(value = "/getLatestTasks/{procId}") + ResultBean> getLatestTasks(@PathVariable(value = "procId") String procId); + +} \ No newline at end of file diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/feign/flowable/flowtask/FlowTaskVo.java b/yxt-wms-biz/src/main/java/com/yxt/wms/feign/flowable/flowtask/FlowTaskVo.java new file mode 100644 index 0000000000..828b7df325 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/feign/flowable/flowtask/FlowTaskVo.java @@ -0,0 +1,53 @@ +package com.yxt.wms.feign.flowable.flowtask; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + *

流程任务

+ * + * @author XuanXuan + * @date 2021-04-03 + */ +@ApiModel("工作流任务相关--请求参数") +@Data +public class FlowTaskVo { + + @ApiModelProperty("任务Id") + private String taskId; + @ApiModelProperty("业务sid") + private String businessSid; + @ApiModelProperty("用户Id") + private String userId; + @ApiModelProperty("用户Sid") + private String userSid; + + @ApiModelProperty("任务意见") + private String comment; + + @ApiModelProperty("流程实例Id") + private String instanceId; + + @ApiModelProperty("节点") + private String targetKey; + + @ApiModelProperty("流程变量信息") + private Map values=new HashMap<>(); + + @ApiModelProperty("审批人") + private String assignee; + + @ApiModelProperty("候选人") + private List candidateUsers; + + @ApiModelProperty("审批组") + private List candidateGroups; + + + +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/feign/flowable/flowtask/LatestTaskVo.java b/yxt-wms-biz/src/main/java/com/yxt/wms/feign/flowable/flowtask/LatestTaskVo.java new file mode 100644 index 0000000000..9c146d7cce --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/feign/flowable/flowtask/LatestTaskVo.java @@ -0,0 +1,34 @@ +package com.yxt.wms.feign.flowable.flowtask; + +import com.yxt.common.core.vo.Vo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description + * @Author liuguohui + * @Date 2022/1/11 + */ +@ApiModel("最近环节") +@Data +public class LatestTaskVo implements Vo { + + @ApiModelProperty(value = "name_") + private String name_; + + @ApiModelProperty(value = "task_def_key_") + private String task_def_key_; + + @ApiModelProperty(value = "id_") + private String id_; + + @ApiModelProperty(value = "name_") + private String ASSIGNEE_; + + @ApiModelProperty(value = "orgPath") + private String orgPath; + + @ApiModelProperty(value = "incomingSourceRef") + private String incomingSourceRef; +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/feign/message/MessageFeign.java b/yxt-wms-biz/src/main/java/com/yxt/wms/feign/message/MessageFeign.java new file mode 100644 index 0000000000..5f741590af --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/feign/message/MessageFeign.java @@ -0,0 +1,26 @@ +package com.yxt.wms.feign.message; + +import com.yxt.common.core.result.ResultBean; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; + +@Api(tags = "消息体") +@FeignClient( + contextId = "message-center-Message", + name = "message-center", + path = "v1/message") +public interface MessageFeign { + + /** + * 流程审批推送消息 + * + * @param query + * @return + */ + @ApiOperation("流程审批推送消息") + @PostMapping("/pushMessage") + ResultBean pushMessage(@RequestBody MessageFlowableQuery query); +} \ No newline at end of file diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/feign/message/MessageFlowVo.java b/yxt-wms-biz/src/main/java/com/yxt/wms/feign/message/MessageFlowVo.java new file mode 100644 index 0000000000..09d03d8d02 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/feign/message/MessageFlowVo.java @@ -0,0 +1,21 @@ +package com.yxt.wms.feign.message; + +import com.yxt.common.core.vo.Vo; +import lombok.Data; + +/** + * @Author dimengzhe + * @Date 2022/8/25 15:58 + * @Description + */ +@Data +public class MessageFlowVo implements Vo { + + private String sid; + private String procDefId; + private String nodeState; + private String procInsId; + private String taskDefKey; + private String taskId; + private String nextNodeUserSids; +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/feign/message/MessageFlowableQuery.java b/yxt-wms-biz/src/main/java/com/yxt/wms/feign/message/MessageFlowableQuery.java new file mode 100644 index 0000000000..2e5e2b0cc3 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/feign/message/MessageFlowableQuery.java @@ -0,0 +1,32 @@ +package com.yxt.wms.feign.message; + +import com.yxt.common.core.query.Query; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Map; + +/** + * @Author dimengzhe + * @Date 2022/8/25 15:12 + * @Description + */ +@Data +public class MessageFlowableQuery implements Query { + private static final long serialVersionUID = 3618558867479892211L; + @ApiModelProperty("业务sid") + private String businessSid; + @ApiModelProperty("模块名称") + private String moduleName; + @ApiModelProperty("消息内容") + private String msgContent; + @ApiModelProperty("消息标题") + private String msgTitle; + @ApiModelProperty("流程相关参数") + private MessageFlowVo ufVo; + @ApiModelProperty("app所需参数") + private Map appMap; + @ApiModelProperty("申请人") + private String applicationName; + +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/feign/message/PushMessageQuery.java b/yxt-wms-biz/src/main/java/com/yxt/wms/feign/message/PushMessageQuery.java new file mode 100644 index 0000000000..87275c1ebc --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/feign/message/PushMessageQuery.java @@ -0,0 +1,34 @@ +package com.yxt.wms.feign.message; + +import com.yxt.common.core.query.Query; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +/** + * @description: + * @author: dimengzhe + * @date: 2023/8/10 + **/ +@Data +public class PushMessageQuery implements Query { + private static final long serialVersionUID = -5710109873182775336L; + + @ApiModelProperty("业务sid") + private String businessSid; + @ApiModelProperty("模块名称") + private String moduleName; + @ApiModelProperty("消息内容") + private String msgContent; + @ApiModelProperty("消息标题") + private String msgTitle; + @ApiModelProperty("接收人sidList") + private List receivedSids; + /* @ApiModelProperty("跳转地址") + private String msgTargetUri;*/ + @ApiModelProperty("0.内置Activity 1.内置WebView 2.RePlugin插件") + private String app_type; + @ApiModelProperty("插件sid") + private String moduleSid; +}