diff --git a/anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/listener/BaseVehicleExecutionListener.java b/anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/listener/BaseVehicleExecutionListener.java
new file mode 100644
index 0000000000..9d7494a2d4
--- /dev/null
+++ b/anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/listener/BaseVehicleExecutionListener.java
@@ -0,0 +1,23 @@
+package com.yxt.anrui.flowable.listener;
+
+import org.flowable.engine.delegate.DelegateExecution;
+import org.flowable.engine.delegate.ExecutionListener;
+import org.springframework.stereotype.Component;
+
+/**
+ * @author liuguohui
+ * @version 1.0
+ * @description 建立车辆库存台账
+ * @date 2022/04/11
+ */
+@Component
+public class BaseVehicleExecutionListener implements ExecutionListener {
+
+ @Override
+ public void notify(DelegateExecution execution) {
+ // 入账申请审批通过后,自动生成车辆库存台账
+ // TODO
+ System.out.println("入账申请审批通过后,自动生成车辆库存台账");
+
+ }
+}
diff --git a/anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/flow/FlowTaskVo.java b/anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/flow/FlowTaskVo.java
new file mode 100644
index 0000000000..ad0de3ab5c
--- /dev/null
+++ b/anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/flow/FlowTaskVo.java
@@ -0,0 +1,51 @@
+package com.yxt.anrui.scm.api.flow;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.ArrayList;
+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("用户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=new ArrayList<>();
+
+ @ApiModelProperty("审批组")
+ private List candidateGroups=new ArrayList<>();
+
+}
diff --git a/anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/flow/Flowable.java b/anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/flow/Flowable.java
new file mode 100644
index 0000000000..3dbad13ba3
--- /dev/null
+++ b/anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/flow/Flowable.java
@@ -0,0 +1,8 @@
+package com.yxt.anrui.scm.api.flow;
+
+import com.yxt.common.core.domain.BaseEntity;
+import lombok.Data;
+
+@Data
+public class Flowable extends BaseEntity {
+}
diff --git a/anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmapplyinbound/ScmApplyInboundDto.java b/anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmapplyinbound/ScmApplyInboundDto.java
index cd321ffdda..41a8903d25 100644
--- a/anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmapplyinbound/ScmApplyInboundDto.java
+++ b/anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmapplyinbound/ScmApplyInboundDto.java
@@ -32,6 +32,10 @@ public class ScmApplyInboundDto implements Dto {
@ApiModelProperty("车辆入账单sid")
private String sid;
+
+ @ApiModelProperty("用户sid")
+ @NotBlank(message = "用户sid不能为空")
+ private String userSid;
@ApiModelProperty("申请编号")
@NotBlank(message = "申请编号不能为空")
diff --git a/anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmapplyinbound/ScmApplyInboundFeign.java b/anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmapplyinbound/ScmApplyInboundFeign.java
index dbbee9ce5d..7e1d32552c 100644
--- a/anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmapplyinbound/ScmApplyInboundFeign.java
+++ b/anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmapplyinbound/ScmApplyInboundFeign.java
@@ -1,15 +1,18 @@
package com.yxt.anrui.scm.api.scmapplyinbound;
+import com.yxt.anrui.scm.api.flow.FlowTaskVo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import com.yxt.common.core.query.PagerQuery;
import com.yxt.common.core.result.ResultBean;
import com.yxt.common.core.vo.PagerVo;
+import io.swagger.annotations.ApiParam;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
import java.util.List;
+import java.util.Map;
/**
* Project: anrui-scm(进销存)
@@ -47,4 +50,39 @@ public interface ScmApplyInboundFeign {
@ApiOperation("根据sid查询车辆入账单详情")
@GetMapping("/fetchSid/{sid}")
public ResultBean fetchSid(@PathVariable("sid") String sid);
+
+ /*************************************************审批流程***************************************************/
+ @ApiOperation("提交入账申请")
+ @PostMapping("/submitRecordApplication")
+ public ResultBean submitRecordApplication(@RequestBody @Valid SubmitScmApplyInboundDto dto);
+
+ @ApiOperation(value = "办理(同意)")
+ @PostMapping("/complete")
+ public ResultBean complete(@ApiParam(value = "变量集合,json对象") @RequestBody Map variables);
+
+ @ApiOperation(value = "撤回流程")
+ @PostMapping(value = "/revokeProcess/{userSid}/{businessSid}")
+ public ResultBean revokeProcess(
+ @ApiParam(value = "用户sid") @PathVariable(value = "userSid")String userSid,
+ @ApiParam(value = "业务sid") @PathVariable(value = "businessSid")String businessSid,
+ @ApiParam(value = "工作流任务相关--请求参数") @RequestBody FlowTaskVo flowTaskVo) ;
+
+ @ApiOperation(value = "驳回任务")
+ @PostMapping(value = "/reject/{businessSid}")
+ public ResultBean taskReject(@ApiParam(value = "业务sid") @PathVariable(value = "businessSid")String businessSid,
+ @ApiParam(value = "工作流任务相关--请求参数")@RequestBody FlowTaskVo flowTaskVo);
+
+ @ApiOperation(value = "终止任务")
+ @PostMapping(value = "/breakProcess/{businessSid}")
+ public ResultBean breakProcess(@ApiParam(value = "业务sid") @PathVariable(value = "businessSid")String businessSid,
+ @RequestBody FlowTaskVo flowTaskVo);
+
+ @ApiOperation(value = "流程历史流转记录" )
+ @GetMapping(value = "/task/flowRecord/{procInsId}/{deployId}")
+ public ResultBean flowRecord( @ApiParam(value = "流程实例id")@PathVariable(value = "procInsId")String procInsId,
+ @ApiParam(value = "目前没用")@PathVariable(value = "deployId")String deployId);
+
+
+ /*************************************************审批流程***************************************************/
+
}
\ No newline at end of file
diff --git a/anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmapplyinbound/ScmApplyInboundFeignFallback.java b/anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmapplyinbound/ScmApplyInboundFeignFallback.java
index c4199dd09b..b1af2192b2 100644
--- a/anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmapplyinbound/ScmApplyInboundFeignFallback.java
+++ b/anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmapplyinbound/ScmApplyInboundFeignFallback.java
@@ -1,11 +1,13 @@
package com.yxt.anrui.scm.api.scmapplyinbound;
+import com.yxt.anrui.scm.api.flow.FlowTaskVo;
import com.yxt.common.core.query.PagerQuery;
import com.yxt.common.core.result.ResultBean;
import com.yxt.common.core.vo.PagerVo;
import org.springframework.stereotype.Component;
import java.util.List;
+import java.util.Map;
/**
* Project: anrui-scm(进销存)
@@ -45,4 +47,40 @@ public class ScmApplyInboundFeignFallback implements ScmApplyInboundFeign {
ResultBean rb = ResultBean.fireFail();
return rb.setMsg("接口anrui-scm/scmapplyinbound/fetchSid无法访问");
}
+
+ @Override
+ public ResultBean submitRecordApplication(SubmitScmApplyInboundDto dto) {
+ ResultBean rb = ResultBean.fireFail();
+ return rb.setMsg("接口anrui-scm/scmapplyinbound/submitRecordApplication无法访问");
+ }
+
+ @Override
+ public ResultBean complete(Map variables) {
+ ResultBean rb = ResultBean.fireFail();
+ return rb.setMsg("接口anrui-scm/scmapplyinbound/complete无法访问");
+ }
+
+ @Override
+ public ResultBean revokeProcess(String userSid, String businessSid, FlowTaskVo flowTaskVo) {
+ ResultBean rb = ResultBean.fireFail();
+ return rb.setMsg("接口anrui-scm/scmapplyinbound/revokeProcess无法访问");
+ }
+
+ @Override
+ public ResultBean taskReject(String businessSid, FlowTaskVo flowTaskVo) {
+ ResultBean rb = ResultBean.fireFail();
+ return rb.setMsg("接口anrui-scm/scmapplyinbound/taskReject无法访问");
+ }
+
+ @Override
+ public ResultBean breakProcess(String businessSid, FlowTaskVo flowTaskVo) {
+ ResultBean rb = ResultBean.fireFail();
+ return rb.setMsg("接口anrui-scm/scmapplyinbound/breakProcess无法访问");
+ }
+
+ @Override
+ public ResultBean flowRecord(String procInsId, String deployId) {
+ ResultBean rb = ResultBean.fireFail();
+ return rb.setMsg("接口anrui-scm/scmapplyinbound/flowRecord无法访问");
+ }
}
\ No newline at end of file
diff --git a/anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmapplyinbound/SubmitScmApplyInboundDto.java b/anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmapplyinbound/SubmitScmApplyInboundDto.java
new file mode 100644
index 0000000000..e3de17007f
--- /dev/null
+++ b/anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmapplyinbound/SubmitScmApplyInboundDto.java
@@ -0,0 +1,28 @@
+package com.yxt.anrui.scm.api.scmapplyinbound;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @author liuguohui
+ * @version 1.0
+ * @description
+ * @date 2022/04/13
+ */
+@ApiModel("提交")
+@Data
+public class SubmitScmApplyInboundDto extends ScmApplyInboundDto{
+
+ @ApiModelProperty("业务sid")
+ private String businessSid;
+
+ @ApiModelProperty("意见")
+ private String comment;
+
+ @ApiModelProperty("流程实例id")
+ private String instanceId;
+
+ @ApiModelProperty("任务id")
+ private String taskId;
+}
diff --git a/anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/flow/FlowableMapper.java b/anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/flow/FlowableMapper.java
new file mode 100644
index 0000000000..de95f23617
--- /dev/null
+++ b/anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/flow/FlowableMapper.java
@@ -0,0 +1,12 @@
+package com.yxt.anrui.scm.biz.flow;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.yxt.anrui.buscenter.api.flow.Flowable;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.Map;
+
+@Mapper
+public interface FlowableMapper extends BaseMapper {
+
+}
diff --git a/anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/flow/FlowableMapper.xml b/anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/flow/FlowableMapper.xml
new file mode 100644
index 0000000000..0dc22fb778
--- /dev/null
+++ b/anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/flow/FlowableMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/flow/FlowableService.java b/anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/flow/FlowableService.java
new file mode 100644
index 0000000000..1c09c2acb7
--- /dev/null
+++ b/anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/flow/FlowableService.java
@@ -0,0 +1,99 @@
+/*********************************************************
+ *********************************************************
+ ******************** *******************
+ ************* ************
+ ******* _oo0oo_ *******
+ *** o8888888o ***
+ * 88" . "88 *
+ * (| -_- |) *
+ * 0\ = /0 *
+ * ___/`---'\___ *
+ * .' \\| |// '. *
+ * / \\||| : |||// \ *
+ * / _||||| -:- |||||- \ *
+ * | | \\\ - /// | | *
+ * | \_| ''\---/'' |_/ | *
+ * \ .-\__ '-' ___/-. / *
+ * ___'. .' /--.--\ `. .'___ *
+ * ."" '< `.___\_<|>_/___.' >' "". *
+ * | | : `- \`.;`\ _ /`;.`/ - ` : | | *
+ * \ \ `_. \_ __\ /__ _/ .-` / / *
+ * =====`-.____`.___ \_____/___.-`___.-'===== *
+ * `=---=' *
+ * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ *
+ *********__佛祖保佑__永无BUG__验收通过__钞票多多__*********
+ *********************************************************/
+package com.yxt.anrui.scm.biz.flow;
+
+import cn.hutool.core.bean.BeanUtil;
+import com.alibaba.fastjson.JSONObject;
+import com.yxt.anrui.buscenter.api.flow.*;
+import com.yxt.anrui.flowable.api.flowdefinition.FlowDefinitionFeign;
+import com.yxt.anrui.flowable.api.flowtask.FlowTask;
+import com.yxt.anrui.flowable.api.flowtask.FlowTaskFeign;
+import com.yxt.anrui.flowable.api.flowtask.LatestTaskVo;
+import com.yxt.anrui.flowable.api.sysformlink.SysFormLinkFlowStateEnum;
+import com.yxt.anrui.flowable.api.utils.ProcessStateEnum;
+import com.yxt.anrui.flowable.sqloperationsymbol.BusinessTaskParam;
+import com.yxt.anrui.flowable.sqloperationsymbol.BusinessTaskQuery;
+import com.yxt.anrui.flowable.sqloperationsymbol.BusinessVariables;
+import com.yxt.anrui.flowable.sqloperationsymbol.SQLOperationSymbol;
+import com.yxt.common.base.service.MybatisBaseService;
+import com.yxt.common.base.utils.DateUtils;
+import com.yxt.common.base.utils.StringUtils;
+import com.yxt.common.core.query.PagerQuery;
+import com.yxt.common.core.result.ResultBean;
+import io.swagger.annotations.ApiParam;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+
+import java.util.*;
+
+/**
+ * Project: anrui-parent
+ * File: FlowableService.java
+ * Class: com.yxt.anrui.scm.biz.flow.FlowableService
+ * Description: <描述类的功能>.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2021/10/23 上午11:14
+ *
+ * @author popo
+ * @version 1.0
+ * @since 1.0
+ */
+@Service
+public class FlowableService extends MybatisBaseService {
+ @Autowired
+ private FlowDefinitionFeign flowDefinitionFeign;
+ @Autowired
+ private FlowTaskFeign flowTaskFeign;
+
+ 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) {
+
+ variables.put("procDefId",procDefId);
+ variables.put("userSid",userSid);
+ BusinessVariables bv= BusinessVariables.builder().build();
+ bv.setDetailUrl("");
+ bv.setHandleUrl("");
+ bv.setFormVariables(variables);
+ ResultBean rb = flowDefinitionFeign.businessStart(bv);
+ if (!rb.getSuccess()) {
+ return rb;
+ }
+ String procId = rb.getData().getProcInsId();
+ List list = flowTaskFeign.getLatestTasks(procId).getData();
+ String nodeState = list.get(0).getName_();
+ String task_def_key_ = list.get(0).getTask_def_key_();
+ Map map = new HashMap<>();
+ map.put("sid", variables.get("businessSid").toString());
+ map.put("nodeState", nodeState);
+ map.put("procInsId", rb.getData().getProcInsId());
+ map.put("taskDefKey", task_def_key_);
+ return new ResultBean().success().setData(map);
+ }
+}
diff --git a/anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmapplyinbound/ScmApplyInboundMapper.java b/anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmapplyinbound/ScmApplyInboundMapper.java
index 3cb96fcd0c..310d009f52 100644
--- a/anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmapplyinbound/ScmApplyInboundMapper.java
+++ b/anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmapplyinbound/ScmApplyInboundMapper.java
@@ -12,6 +12,7 @@ import com.yxt.anrui.scm.api.scmapplyinbound.ScmApplyInbound;
import com.yxt.anrui.scm.api.scmapplyinbound.ScmApplyInboundVo;
import java.util.List;
+import java.util.Map;
/**
* Project: anrui-scm(进销存)
@@ -38,4 +39,6 @@ public interface ScmApplyInboundMapper extends BaseMapper {
@Select("select * from scm_apply_inbound")
List selectListVo();
+
+ int updateFlowFiled(Map map);
}
\ No newline at end of file
diff --git a/anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmapplyinbound/ScmApplyInboundMapper.xml b/anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmapplyinbound/ScmApplyInboundMapper.xml
index fdb4f1dc7d..7e323a12f2 100644
--- a/anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmapplyinbound/ScmApplyInboundMapper.xml
+++ b/anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmapplyinbound/ScmApplyInboundMapper.xml
@@ -4,7 +4,7 @@