diff --git a/anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/finbillapplication/FinBillApplication.java b/anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/finbillapplication/FinBillApplication.java
index 1a82b0a612..64b4863ab1 100644
--- a/anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/finbillapplication/FinBillApplication.java
+++ b/anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/finbillapplication/FinBillApplication.java
@@ -87,4 +87,6 @@ public class FinBillApplication extends BaseEntity {
private String nodeState;
@ApiModelProperty(value = "是否延迟开票")
private Integer isDelayBill;
+
+ private String taskId;
}
diff --git a/anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/finbillapplication/FinBillApplicationFeign.java b/anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/finbillapplication/FinBillApplicationFeign.java
index ded1855671..82dea9ae61 100644
--- a/anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/finbillapplication/FinBillApplicationFeign.java
+++ b/anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/finbillapplication/FinBillApplicationFeign.java
@@ -25,18 +25,21 @@
*********************************************************/
package com.yxt.anrui.fin.api.finbillapplication;
-import com.yxt.anrui.fin.api.flow.FlowTaskVo;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
+import com.yxt.anrui.fin.api.finbillapplication.flowable.FinBillCompleteDto;
+import com.yxt.anrui.fin.api.finbillapplication.flowable.FinBillNodeQuery;
+import com.yxt.anrui.fin.api.finbillapplication.flowable.FinBillNodeVo;
+import com.yxt.anrui.fin.api.finbillapplication.flowable.FinBillTaskQuery;
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 io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.cloud.openfeign.SpringQueryMap;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
-import java.util.Map;
+import java.util.List;
/**
* Project: anrui-fin(开票申请管理)
@@ -77,16 +80,16 @@ public interface FinBillApplicationFeign {
/*************************流程管理接口********************************/
- @ApiOperation("列表提交开票申请审批流程")
+ /* @ApiOperation("列表提交开票申请审批流程")
@PostMapping("/submitFinBillApplicationPageList")
public ResultBean submitFinBillApplicationPageList(@RequestBody @Valid SubmitFinBillApplicationPageListDto dto);
-
+*/
@ApiOperation("提交开票申请审批流程")
@PostMapping("/submitFinBillApplication")
public ResultBean submitFinBillApplication(@RequestBody @Valid SubmitFinBillApplicationDto dto);
- @ApiOperation(value = "办理(同意)")
+ /* @ApiOperation(value = "办理(同意)")
@PostMapping("/complete")
public ResultBean complete(@ApiParam(value = "变量集合,json对象") @RequestBody Map variables);
@@ -110,6 +113,30 @@ public interface FinBillApplicationFeign {
@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);
+ @ApiParam(value = "目前没用")@PathVariable(value = "deployId")String deployId);*/
+
+ @ApiOperation(value = "办理(同意)")
+ @PostMapping("/complete")
+ public ResultBean complete(@Valid @RequestBody FinBillCompleteDto query);
+
+ @ApiOperation(value = "获取上一个环节")
+ @GetMapping(value = "/getPreviousNodesForReject")
+ ResultBean> getPreviousNodesForReject(@Valid @SpringQueryMap FinBillNodeQuery query);
+
+ @ApiOperation(value = "获取下一个环节")
+ @GetMapping(value = "/getNextNodesForSubmit")
+ ResultBean> getNextNodesForSubmit(@Valid @SpringQueryMap FinBillNodeQuery query);
+
+ @ApiOperation(value = "驳回任务")
+ @PostMapping(value = "/reject")
+ public ResultBean taskReject(@Valid @RequestBody FinBillTaskQuery query);
+
+ @ApiOperation(value = "撤回流程")
+ @PostMapping(value = "/revokeProcess")
+ public ResultBean revokeProcess(@Valid @RequestBody FinBillTaskQuery query);
+
+ @ApiOperation(value = "终止任务")
+ @PostMapping(value = "/breakProcess")
+ public ResultBean breakProcess(@Valid @RequestBody FinBillTaskQuery query);
}
\ No newline at end of file
diff --git a/anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/finbillapplication/FinBillApplicationFeignFallback.java b/anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/finbillapplication/FinBillApplicationFeignFallback.java
index 73a38be071..8abbf6a24b 100644
--- a/anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/finbillapplication/FinBillApplicationFeignFallback.java
+++ b/anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/finbillapplication/FinBillApplicationFeignFallback.java
@@ -25,6 +25,10 @@
*********************************************************/
package com.yxt.anrui.fin.api.finbillapplication;
+import com.yxt.anrui.fin.api.finbillapplication.flowable.FinBillCompleteDto;
+import com.yxt.anrui.fin.api.finbillapplication.flowable.FinBillNodeQuery;
+import com.yxt.anrui.fin.api.finbillapplication.flowable.FinBillNodeVo;
+import com.yxt.anrui.fin.api.finbillapplication.flowable.FinBillTaskQuery;
import com.yxt.anrui.fin.api.flow.FlowTaskVo;
import com.yxt.common.core.query.PagerQuery;
import com.yxt.common.core.result.ResultBean;
@@ -67,10 +71,10 @@ public class FinBillApplicationFeignFallback implements FinBillApplicationFeign
return rb.setMsg("接口anrui-fin/finbillapplication/fetchDetailsBySid无法访问");
}
- @Override
+ /*@Override
public ResultBean submitFinBillApplicationPageList(SubmitFinBillApplicationPageListDto dto) {
return null;
- }
+ }*/
@Override
public ResultBean submitFinBillApplication(SubmitFinBillApplicationDto dto) {
@@ -78,27 +82,32 @@ public class FinBillApplicationFeignFallback implements FinBillApplicationFeign
}
@Override
- public ResultBean complete(Map variables) {
+ public ResultBean complete(FinBillCompleteDto query) {
+ return null;
+ }
+
+ @Override
+ public ResultBean> getPreviousNodesForReject(FinBillNodeQuery query) {
return null;
}
@Override
- public ResultBean revokeProcess(String userSid, String businessSid, FlowTaskVo flowTaskVo) {
+ public ResultBean> getNextNodesForSubmit(FinBillNodeQuery query) {
return null;
}
@Override
- public ResultBean taskReject(String businessSid, FlowTaskVo flowTaskVo) {
+ public ResultBean taskReject(FinBillTaskQuery query) {
return null;
}
@Override
- public ResultBean breakProcess(String businessSid, FlowTaskVo flowTaskVo) {
+ public ResultBean revokeProcess(FinBillTaskQuery query) {
return null;
}
@Override
- public ResultBean flowRecord(String procInsId, String deployId) {
+ public ResultBean breakProcess(FinBillTaskQuery query) {
return null;
}
}
\ No newline at end of file
diff --git a/anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/finbillapplication/SubmitFinBillApplicationDto.java b/anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/finbillapplication/SubmitFinBillApplicationDto.java
index 00887e6ebb..4f8fac78ec 100644
--- a/anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/finbillapplication/SubmitFinBillApplicationDto.java
+++ b/anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/finbillapplication/SubmitFinBillApplicationDto.java
@@ -15,8 +15,9 @@ import lombok.Data;
@Data
public class SubmitFinBillApplicationDto extends FinBillApplicationDto {
- @ApiModelProperty("业务sid")
- private String businessSid;
+ private static final long serialVersionUID = 315255996193475787L;
+/* @ApiModelProperty("业务sid")
+ private String businessSid;*/
@ApiModelProperty("意见")
private String comment;
diff --git a/anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/finbillapplication/flowable/FinBillCompleteDto.java b/anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/finbillapplication/flowable/FinBillCompleteDto.java
new file mode 100644
index 0000000000..0f4f627c41
--- /dev/null
+++ b/anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/finbillapplication/flowable/FinBillCompleteDto.java
@@ -0,0 +1,38 @@
+package com.yxt.anrui.fin.api.finbillapplication.flowable;
+
+import com.yxt.common.core.dto.Dto;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+
+/**
+ * @Author dimengzhe
+ * @Date 2022/9/6 14:57
+ * @Description
+ */
+@Data
+public class FinBillCompleteDto implements Dto {
+ private static final long serialVersionUID = 6378752532534735663L;
+
+ @ApiModelProperty(value = "用户sid")
+ @NotBlank(message = "参数错误:userSid")
+ private String userSid;
+ @ApiModelProperty(value = "用户全路径sid")
+ @NotBlank(message = "参数错误:orgSidPath")
+ 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/anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/finbillapplication/flowable/FinBillNodeQuery.java b/anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/finbillapplication/flowable/FinBillNodeQuery.java
new file mode 100644
index 0000000000..5d89639d6f
--- /dev/null
+++ b/anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/finbillapplication/flowable/FinBillNodeQuery.java
@@ -0,0 +1,21 @@
+package com.yxt.anrui.fin.api.finbillapplication.flowable;
+
+import com.yxt.common.core.query.Query;
+import io.swagger.annotations.ApiModelProperty;
+
+import javax.validation.constraints.NotBlank;
+
+/**
+ * @Author dimengzhe
+ * @Date 2022/9/6 15:04
+ * @Description
+ */
+public class FinBillNodeQuery implements Query {
+ private static final long serialVersionUID = 9117613683840483366L;
+
+ @ApiModelProperty(value = "环节定义id")
+ @NotBlank(message = "参数错误:taskDefKey")
+ private String taskDefKey;
+ @ApiModelProperty(value = "业务sid")
+ private String businessSid;
+}
diff --git a/anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/finbillapplication/flowable/FinBillNodeVo.java b/anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/finbillapplication/flowable/FinBillNodeVo.java
new file mode 100644
index 0000000000..dcf68a57ed
--- /dev/null
+++ b/anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/finbillapplication/flowable/FinBillNodeVo.java
@@ -0,0 +1,26 @@
+package com.yxt.anrui.fin.api.finbillapplication.flowable;
+
+import com.yxt.common.core.vo.Vo;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @Author dimengzhe
+ * @Date 2022/9/6 15:03
+ * @Description
+ */
+@Data
+public class FinBillNodeVo implements Vo {
+ private static final long serialVersionUID = -833419512294877848L;
+
+ @ApiModelProperty(value = "节点名称")
+ private String name;
+ @ApiModelProperty(value = "节点id")
+ private String id;
+ @ApiModelProperty(value = "审批组")
+ private List candidateGroups;
+ @ApiModelProperty(value = "是否是最后环节")
+ private String endTask;
+}
diff --git a/anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/finbillapplication/flowable/FinBillTaskQuery.java b/anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/finbillapplication/flowable/FinBillTaskQuery.java
new file mode 100644
index 0000000000..7c5dd72aee
--- /dev/null
+++ b/anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/finbillapplication/flowable/FinBillTaskQuery.java
@@ -0,0 +1,45 @@
+package com.yxt.anrui.fin.api.finbillapplication.flowable;
+
+import com.yxt.common.core.query.Query;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+
+/**
+ * @Author dimengzhe
+ * @Date 2022/9/6 15:06
+ * @Description
+ */
+@Data
+public class FinBillTaskQuery implements Query {
+ private static final long serialVersionUID = 1288615499873178778L;
+
+ /**
+ * 终止、驳回、撤回
+ */
+ @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/anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/AnruiFinApplication.java b/anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/AnruiFinApplication.java
index 5018991af4..8bde7bc061 100644
--- a/anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/AnruiFinApplication.java
+++ b/anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/AnruiFinApplication.java
@@ -50,7 +50,7 @@ import org.springframework.cloud.openfeign.EnableFeignClients;
})
@EnableFeignClients(basePackages = {"com.yxt.anrui.crm","com.yxt.anrui.fin",
"com.yxt.anrui.portal", "com.yxt.anrui.buscenter",
- "com.yxt.anrui.base", "com.yxt.anrui.flowable"})
+ "com.yxt.anrui.base", "com.yxt.anrui.flowable","com.yxt.messagecenter"})
public class AnruiFinApplication {
public static void main(String[] args) {
diff --git a/anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/finbillapplication/FinBillApplicationMapper.xml b/anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/finbillapplication/FinBillApplicationMapper.xml
index 779ad4342b..08aa8ea8ac 100644
--- a/anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/finbillapplication/FinBillApplicationMapper.xml
+++ b/anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/finbillapplication/FinBillApplicationMapper.xml
@@ -25,6 +25,9 @@
, procInstSid=#{procInsId}
+
+ , taskId=#{taskId}
+
WHERE sid=#{sid}
\ No newline at end of file
diff --git a/anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/finbillapplication/FinBillApplicationRest.java b/anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/finbillapplication/FinBillApplicationRest.java
index a5f45aab14..56fae086e5 100644
--- a/anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/finbillapplication/FinBillApplicationRest.java
+++ b/anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/finbillapplication/FinBillApplicationRest.java
@@ -25,8 +25,14 @@
*********************************************************/
package com.yxt.anrui.fin.biz.finbillapplication;
+import cn.hutool.core.bean.BeanUtil;
import com.yxt.anrui.fin.api.finbillapplication.*;
-import com.yxt.anrui.fin.api.flow.FlowTaskVo;
+import com.yxt.anrui.fin.api.finbillapplication.flowable.FinBillCompleteDto;
+import com.yxt.anrui.fin.api.finbillapplication.flowable.FinBillNodeQuery;
+import com.yxt.anrui.fin.api.finbillapplication.flowable.FinBillNodeVo;
+import com.yxt.anrui.fin.api.finbillapplication.flowable.FinBillTaskQuery;
+import com.yxt.anrui.flowable.api.utils.ProcDefEnum;
+import com.yxt.anrui.flowable.sqloperationsymbol.BusinessVariables;
import com.yxt.common.core.query.PagerQuery;
import com.yxt.common.core.result.ResultBean;
import com.yxt.common.core.vo.PagerVo;
@@ -35,7 +41,7 @@ import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
-import java.util.Map;
+import java.util.List;
/**
* Project: anrui-fin(开票申请管理)
@@ -83,10 +89,10 @@ public class FinBillApplicationRest implements FinBillApplicationFeign {
return rb.success().setData(vo);
}
- @Override
+ /*@Override
public ResultBean submitFinBillApplicationPageList(SubmitFinBillApplicationPageListDto dto) {
return finBillApplicationService.submitFinBillApplicationPageList(dto);
- }
+ }*/
@Override
public ResultBean submitFinBillApplication(SubmitFinBillApplicationDto dto) {
@@ -94,27 +100,35 @@ public class FinBillApplicationRest implements FinBillApplicationFeign {
}
@Override
- public ResultBean complete(Map variables) {
- return finBillApplicationService.complete(variables);
+ public ResultBean complete(FinBillCompleteDto query) {
+ BusinessVariables bv = new BusinessVariables();
+ BeanUtil.copyProperties(query, bv);
+ bv.setModelId(ProcDefEnum.FINBILLAPPLICATION.getProDefId());
+ return finBillApplicationService.complete(bv);
+ }
+
+ @Override
+ public ResultBean> getPreviousNodesForReject(FinBillNodeQuery query) {
+ return finBillApplicationService.getPreviousNodesForReject(query);
}
@Override
- public ResultBean revokeProcess(String userSid, String businessSid, FlowTaskVo flowTaskVo) {
- return finBillApplicationService.revokeProcess(userSid, businessSid, flowTaskVo);
+ public ResultBean> getNextNodesForSubmit(FinBillNodeQuery query) {
+ return finBillApplicationService.getNextNodesForSubmit(query);
}
@Override
- public ResultBean taskReject(String businessSid, FlowTaskVo flowTaskVo) {
- return finBillApplicationService.taskReject(businessSid, flowTaskVo);
+ public ResultBean taskReject(FinBillTaskQuery query) {
+ return finBillApplicationService.taskReject(query);
}
@Override
- public ResultBean breakProcess(String businessSid, FlowTaskVo flowTaskVo) {
- return finBillApplicationService.breakProcess(businessSid, flowTaskVo);
+ public ResultBean revokeProcess(FinBillTaskQuery query) {
+ return finBillApplicationService.revokeProcess(query);
}
@Override
- public ResultBean flowRecord(String procInsId, String deployId) {
- return finBillApplicationService.flowRecord(procInsId, deployId);
+ public ResultBean breakProcess(FinBillTaskQuery query) {
+ return finBillApplicationService.breakProcess(query);
}
}
diff --git a/anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/finbillapplication/FinBillApplicationService.java b/anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/finbillapplication/FinBillApplicationService.java
index 1f061a4406..c0f4d8bd8d 100644
--- a/anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/finbillapplication/FinBillApplicationService.java
+++ b/anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/finbillapplication/FinBillApplicationService.java
@@ -26,6 +26,7 @@
package com.yxt.anrui.fin.biz.finbillapplication;
import cn.hutool.core.bean.BeanUtil;
+import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.yxt.anrui.base.api.commonappendix.CommonAppendixDto;
@@ -39,6 +40,9 @@ import com.yxt.anrui.buscenter.api.bussalesorder.BusSalesOrderFeign;
import com.yxt.anrui.buscenter.api.bussalesordermodel.BusSalesOrderModelFeign;
import com.yxt.anrui.buscenter.api.bussalesorderprice.BusSalesOrderPriceFeign;
import com.yxt.anrui.fin.api.finbillapplication.*;
+import com.yxt.anrui.fin.api.finbillapplication.flowable.FinBillNodeQuery;
+import com.yxt.anrui.fin.api.finbillapplication.flowable.FinBillNodeVo;
+import com.yxt.anrui.fin.api.finbillapplication.flowable.FinBillTaskQuery;
import com.yxt.anrui.fin.api.finbillapplicationpublic.FinBillApplicationPublic;
import com.yxt.anrui.fin.api.finbillapplicationpublic.FinBillApplicationPublicDto;
import com.yxt.anrui.fin.api.finbillfile.FinBillFile;
@@ -46,39 +50,39 @@ import com.yxt.anrui.fin.api.finbillfile.FinBillFileVo;
import com.yxt.anrui.fin.api.finbillvehicle.FinBillVehicle;
import com.yxt.anrui.fin.api.finbillvehicle.FinBillVehicleDto;
import com.yxt.anrui.fin.api.finbillvehicle.FinBillVehicleVo;
-import com.yxt.anrui.fin.api.flow.FlowTaskVo;
import com.yxt.anrui.fin.biz.finbillapplicationpublic.FinBillApplicationPublicService;
import com.yxt.anrui.fin.biz.finbillfile.FinBillFileService;
import com.yxt.anrui.fin.biz.finbillvehicle.FinBillVehicleService;
import com.yxt.anrui.flowable.api.flow.FlowableFeign;
-import com.yxt.anrui.flowable.api.flowcomment.FlowComment;
+import com.yxt.anrui.flowable.api.flow.UpdateFlowFieldVo;
import com.yxt.anrui.flowable.api.flowtask.FlowTaskFeign;
+import com.yxt.anrui.flowable.api.flowtask.FlowTaskVo;
import com.yxt.anrui.flowable.api.flowtask.LatestTaskVo;
-import com.yxt.anrui.flowable.api.sysformlink.SysFormLinkDto;
import com.yxt.anrui.flowable.api.sysformlink.SysFormLinkFeign;
-import com.yxt.anrui.flowable.api.sysformlink.SysFormLinkFlowStateEnum;
-import com.yxt.anrui.flowable.api.sysformlink.SysFormLinkTypeEnum;
import com.yxt.anrui.flowable.api.utils.ProcDefEnum;
-import com.yxt.anrui.flowable.api.utils.ProcessStateEnum;
import com.yxt.anrui.flowable.sqloperationsymbol.BusinessVariables;
import com.yxt.anrui.portal.api.sysorganization.SysOrganizationFeign;
import com.yxt.anrui.portal.api.sysorganization.SysOrganizationVo;
+import com.yxt.anrui.portal.api.sysstafforg.SysStaffOrg;
import com.yxt.anrui.portal.api.sysstafforg.SysStaffOrgFeign;
import com.yxt.anrui.portal.api.sysstafforg.SysStaffOrgVo;
+import com.yxt.anrui.portal.api.sysuser.SysUserFeign;
+import com.yxt.anrui.portal.api.sysuser.SysUserVo;
import com.yxt.common.base.config.component.FileUploadComponent;
-import org.apache.commons.lang3.StringUtils;
import com.yxt.common.base.service.MybatisBaseService;
import com.yxt.common.base.utils.PagerUtil;
import com.yxt.common.core.query.PagerQuery;
import com.yxt.common.core.result.ResultBean;
import com.yxt.common.core.vo.PagerVo;
-
+import com.yxt.messagecenter.api.message.MessageFeign;
+import com.yxt.messagecenter.api.message.MessageFlowVo;
+import com.yxt.messagecenter.api.message.MessageFlowableQuery;
+import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
+import java.util.stream.Collectors;
/**
* Project: anrui-fin(开票申请管理)
@@ -124,6 +128,10 @@ public class FinBillApplicationService extends MybatisBaseService createQueryWrapper(FinBillApplicationQuery query) {
// todo: 这里根据具体业务调整查询条件
@@ -441,7 +449,7 @@ public class FinBillApplicationService extends MybatisBaseService resultBean = saveOrUpdateDto(dto);
String businessSid = resultBean.getData();
@@ -464,7 +472,7 @@ public class FinBillApplicationService extends MybatisBaseService map = (Map) resultBean1.getData();
//更新业务表中的流程状态
Map paramMap = new HashMap<>();
@@ -474,7 +482,7 @@ public class FinBillApplicationService extends MybatisBaseService variables) {
+ /* public ResultBean complete(Map variables) {
BusinessVariables bv = BusinessVariables.builder().build();
- //bv.setDetailUrl("");
- //bv.setHandleUrl("");
bv.setFormVariables(variables);
ResultBean resultBean = flowTaskFeign.businessComplete(bv);
if (!resultBean.getSuccess()) {
@@ -568,7 +574,7 @@ public class FinBillApplicationService extends MybatisBaseService paramMap = new HashMap<>();
paramMap.put("sid", businessSid);
- /* if (incomingSourceRef.contains("start")) {
- paramMap.put("nodeState", SysFormLinkFlowStateEnum.WITHDRAW.getState());
- paramMap.put("taskDefKey", taskDefKey);
- paramMap.put("flowState", SysFormLinkFlowStateEnum.WITHDRAW.getCode());
- } else {*/
- paramMap.put("nodeState", nodeState);
- paramMap.put("taskDefKey", taskDefKey);
- /*}*/
+
+ paramMap.put("nodeState", nodeState);
+ paramMap.put("taskDefKey", taskDefKey);
updateFlowFiled(paramMap);
return resultBean;
- }
+ }*/
/**
* 驳回
@@ -620,7 +621,7 @@ public class FinBillApplicationService extends MybatisBaseService> resultBean = flowTaskFeign.taskReject(fl);
@@ -634,12 +635,10 @@ public class FinBillApplicationService extends MybatisBaseService variables = new HashMap<>();
+ Map appMap = new HashMap<>();
+ appMap.put("sid", businessSid);
+ variables.put("app", appMap);
+ bv.setFormVariables(variables);
+ if (bv.getTaskId().equals(finBillApplication.getTaskId())) {
+ ResultBean resultBean = flowableFeign.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())) {
+ //极光推送
+ finBillApplication = fetchBySid(businessSid);
+ MessageFlowableQuery messageFlowableQuery = new MessageFlowableQuery();
+ MessageFlowVo messageFlowVo = new MessageFlowVo();
+ BeanUtil.copyProperties(ufVo, messageFlowVo);
+ ufVo.setProcDefId(finBillApplication.getProcDefId());
+ ufVo.setProcInsId(finBillApplication.getProcInstSid());
+ messageFlowableQuery.setUfVo(messageFlowVo);
+ messageFlowableQuery.setAppMap(appMap);
+ messageFlowableQuery.setBusinessSid(businessSid);
+ messageFlowableQuery.setModuleName("开票申请");
+ messageFlowableQuery.setMsgContent(finBillApplication.getCreateByName() + "提交的" + messageFlowableQuery.getModuleName() + ",请审批");
+ messageFlowableQuery.setMsgTitle("业务中心");
+ ResultBean stringResultBean = messageFeign.pushMessage(messageFlowableQuery);
+ }
+ return rb.success().setData(resultBean.getData());
+ } else {
+ return rb.setMsg("操作失败!提交的数据不一致");
+ }
+
+ }
+
+ public ResultBean> getPreviousNodesForReject(FinBillNodeQuery query) {
+ ResultBean> rb = ResultBean.fireFail();
+ BusinessVariables bv = new BusinessVariables();
+ BeanUtil.copyProperties(query, bv);
+ //流程中的参数赋值、若有网关,则赋值网关中判断的字段。
+ Map variables = new HashMap<>();
+ bv.setFormVariables(variables);
+ bv.setModelId(ProcDefEnum.FINBILLAPPLICATION.getProDefId());
+ ResultBean>> resultBean = flowTaskFeign.getPreviousNodesForReject(bv);
+ //判断数组是否为空,若为空则赋值,若不为空,则遍历循环将map中的数据赋值给getNodeVo
+ List voList = Optional.ofNullable(resultBean.getData()).orElse(new ArrayList<>()).stream().map(m -> JSON.parseObject(JSON.toJSONString(m), FinBillNodeVo.class)).collect(Collectors.toList());
+ return rb.success().setData(voList);
+ }
+
+ public ResultBean> getNextNodesForSubmit(FinBillNodeQuery query) {
+ ResultBean> rb = ResultBean.fireFail();
+ BusinessVariables bv = new BusinessVariables();
+ BeanUtil.copyProperties(query, bv);
+ //流程中的参数赋值、若有网关,则赋值网关中判断的字段。
+ Map variables = new HashMap<>();
+ bv.setFormVariables(variables);
+ bv.setModelId(ProcDefEnum.FINBILLAPPLICATION.getProDefId());
+ ResultBean>> resultBean = flowTaskFeign.getNextNodesForSubmit(bv);
+ //判断数组是否为空,若为空则赋值,若不为空,则遍历循环将map中的数据赋值给getNodeVo
+ List voList = Optional.ofNullable(resultBean.getData()).orElse(new ArrayList<>()).stream().map(m -> JSON.parseObject(JSON.toJSONString(m), FinBillNodeVo.class)).collect(Collectors.toList());
+ return rb.success().setData(voList);
+ }
+
+ public ResultBean taskReject(FinBillTaskQuery query) {
+ ResultBean rb = ResultBean.fireFail();
+ String businessSid = query.getBusinessSid();
+ FinBillApplication finBillApplication = fetchBySid(businessSid);
+ if (finBillApplication == null) {
+ return rb.setMsg("该申请不存在");
+ }
+ String businessTaskId = finBillApplication.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);
+ flowTaskVo.setValues(variables);
+ ResultBean resultBean = flowableFeign.taskReject(flowTaskVo);
+ if (!resultBean.getSuccess()) {
+ return rb.setMsg(resultBean.getMsg());
+ }
+ UpdateFlowFieldVo ufVo = resultBean.getData();
+ Map map = BeanUtil.beanToMap(ufVo);
+ //更新业务中的流程相关的参数
+ updateFlowFiled(map);
+ //极光推送
+ finBillApplication = fetchBySid(businessSid);
+ MessageFlowableQuery messageFlowableQuery = new MessageFlowableQuery();
+ MessageFlowVo messageFlowVo = new MessageFlowVo();
+ BeanUtil.copyProperties(ufVo, messageFlowVo);
+ String procId = finBillApplication.getProcInstSid();
+ ufVo.setProcInsId(procId);
+ ufVo.setProcDefId(finBillApplication.getProcDefId());
+ messageFlowableQuery.setUfVo(messageFlowVo);
+ messageFlowableQuery.setAppMap(appMap);
+ messageFlowableQuery.setBusinessSid(businessSid);
+ messageFlowableQuery.setModuleName("开票申请");
+ ResultBean> listResultBean = flowTaskFeign.getLatestTasks(procId);
+ String nextNodeUserSids = listResultBean.getData().get(0).getASSIGNEE_();
+ List receiveSidList = Arrays.asList(nextNodeUserSids.split(","));
+ if (receiveSidList.size() == 1 && receiveSidList.get(0).equals(finBillApplication.getCreateBySid())) {
+ messageFlowableQuery.setMsgContent("您提交的" + messageFlowableQuery.getModuleName() + "已被驳回,请重新提交");
+ } else {
+ messageFlowableQuery.setMsgContent(finBillApplication.getCreateByName() + "提交的" + messageFlowableQuery.getModuleName() + ",请审批");
+ }
+ messageFlowableQuery.setMsgTitle("业务中心");
+ ResultBean stringResultBean = messageFeign.pushMessage(messageFlowableQuery);
+ return rb.success();
+ }
+ }
+ return rb.setMsg("操作失败!提交的数据不一致!");
+ }
+
+ public ResultBean revokeProcess(FinBillTaskQuery query) {
+ ResultBean rb = ResultBean.fireFail();
+ if (StringUtils.isBlank(query.getUserSid())) {
+ return rb.setMsg("参数错误:userSid");
+ }
+ FinBillApplication finBillApplication = fetchBySid(query.getBusinessSid());
+ String businessTaskId = finBillApplication.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(FinBillTaskQuery 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("请填写意见");
+ }
+ FinBillApplication finBillApplication = fetchBySid(query.getBusinessSid());
+ String businessTaskId = finBillApplication.getTaskId();
+ if (StringUtils.isNotBlank(businessTaskId)) {
+ 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 submitFinBillApplication(SubmitFinBillApplicationDto dto) {
+ ResultBean rb = ResultBean.fireFail();
+ //根据用户sid获取staffSid
+ ResultBean userVoResultBean = sysUserFeign.fetchBySid(dto.getUserSid());
+ if (!userVoResultBean.getSuccess()) {
+ return rb.setMsg(userVoResultBean.getMsg());
+ }
+ //根据staffSid获取用户的组织全路径
+ ResultBean staffOrgResultBean = sysStaffOrgFeign.getOrgByStaffSid(userVoResultBean.getData().getStaffSid());
+ if (!staffOrgResultBean.getSuccess()) {
+ return rb.setMsg(staffOrgResultBean.getMsg());
+ }
+ //用户的组织全路径
+ String orgSidPath = staffOrgResultBean.getData().getOrgSidPath();
+ FinBillApplication finBillApplication = fetchBySid(dto.getSid());
+ int r = submitBusinessData(dto, finBillApplication);
+ if (r == 3) {
+ return rb.setMsg("该申请不存在");
+ }
+ if (r == 0) {
+ return rb.setMsg("操作失败!提交的数据不一致");
+ }
+ //新增修改保存
+ ResultBean resultBean = saveOrUpdateDto(dto);
+ if (!resultBean.getSuccess()) {
+ return rb.setMsg(resultBean.getMsg());
+ }
+
+ String businessSid = resultBean.getData();
+ //创建BusinessVariables实体对象
+ BusinessVariables bv = new BusinessVariables();
+ //流程中的参数赋值、若有网关,则赋值网关中判断的字段。
+ Map variables = new HashMap<>();
+ Map appMap = new HashMap<>();
+ appMap.put("sid", businessSid);
+ variables.put("app", appMap);
+ //用户的部门全路径sid
+ bv.setOrgSidPath(orgSidPath);
+ //业务sid
+ bv.setBusinessSid(businessSid);
+ //用户sid
+ bv.setUserSid(dto.getUserSid());
+ bv.setFormVariables(variables);
+ //流程定义id
+ bv.setModelId(ProcDefEnum.FINBILLAPPLICATION.getProDefId());
+ if (r == 1) {
+ ResultBean voResultBean = flowableFeign.startProcess(bv);
+ if (!voResultBean.getSuccess()) {
+ return rb.setMsg(voResultBean.getMsg());
+ }
+ UpdateFlowFieldVo ufVo = voResultBean.getData();
+ updateFlowFiled(BeanUtil.beanToMap(ufVo));
+ //极光推送
+ finBillApplication = fetchBySid(businessSid);
+ 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(finBillApplication.getCreateByName()+"提交的"+messageFlowableQuery.getModuleName()+",请审批");
+ messageFlowableQuery.setMsgTitle("业务中心");
+ ResultBean stringResultBean = messageFeign.pushMessage(messageFlowableQuery);
+ return voResultBean;
+ }
+ if (r == 2) {
+ if (StringUtils.isBlank(dto.getInstanceId())) {
+ return rb.setMsg("参数错误:instanceId");
+ }
+ bv.setTaskId(finBillApplication.getTaskId());
+ bv.setTaskDefKey(finBillApplication.getNodeSid());
+ bv.setComment("重新提交");
+ bv.setInstanceId(dto.getInstanceId());
+ return complete(bv);
+ }
+ return rb;
+ }
+
+ private synchronized int submitBusinessData(SubmitFinBillApplicationDto dto, FinBillApplication finBillApplication) {
+ int r = 0;
+ if (StringUtils.isBlank(dto.getSid())) {
+ r = 1;
+ } else {
+ if (finBillApplication != null) {
+ String businessTaskId = finBillApplication.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 submitFinBillApplicationPageList(SubmitFinBillApplicationPageListDto dto) {
ResultBean rb = ResultBean.fireFail();
FinBillApplicationDetailsVo finBillApplicationDetailsVo = fetchDetailsVoBySid(dto.getSid());
String oneBillMoney = finBillApplicationDetailsVo.getOneBillMoney();
@@ -697,18 +974,6 @@ public class FinBillApplicationService extends MybatisBaseService map = (Map) resultBean1.getData();
- //更新业务表中的流程状态
- Map paramMap = new HashMap<>();
- paramMap.put("sid", dto.getSid());
- paramMap.put("procDefId", ProcDefEnum.SEALAPPLY.getProDefId());
- paramMap.put("nodeState", map.get("nodeState"));
- paramMap.put("procInsId", map.get("procInsId"));
- paramMap.put("taskDefKey", map.get("taskDefKey"));
- updateFlowFiled(paramMap);
- }*/
return resultBean1;
} else { // 驳回到发起人后再次提交
variables.put("comment", StringUtils.isNotBlank(dto.getComment()) ? dto.getComment() : "重新提交");
@@ -717,5 +982,5 @@ public class FinBillApplicationService extends MybatisBaseService getFlowOperateTitle(@SpringQueryMap InvoicedQuery query);
+
+
+}
diff --git a/anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/autoservice/invoiced/InvoicedFeignFallback.java b/anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/autoservice/invoiced/InvoicedFeignFallback.java
new file mode 100644
index 0000000000..95dd5d4911
--- /dev/null
+++ b/anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/autoservice/invoiced/InvoicedFeignFallback.java
@@ -0,0 +1,12 @@
+package com.yxt.anrui.terminal.api.autoservice.invoiced;
+
+import org.springframework.stereotype.Component;
+
+/**
+ * @Author dimengzhe
+ * @Date 2022/9/6 14:24
+ * @Description
+ */
+@Component
+public class InvoicedFeignFallback {
+}
diff --git a/anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/autoservice/invoiced/InvoicedVo.java b/anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/autoservice/invoiced/InvoicedVo.java
new file mode 100644
index 0000000000..ff31e85789
--- /dev/null
+++ b/anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/autoservice/invoiced/InvoicedVo.java
@@ -0,0 +1,14 @@
+package com.yxt.anrui.terminal.api.autoservice.invoiced;
+
+import com.yxt.common.core.vo.Vo;
+import lombok.Data;
+
+/**
+ * @Author dimengzhe
+ * @Date 2022/9/6 14:23
+ * @Description
+ */
+@Data
+public class InvoicedVo implements Vo {
+ private static final long serialVersionUID = -6840041901529334038L;
+}
diff --git a/anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/autoservice/invoiced/flowable/InvoicedDto.java b/anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/autoservice/invoiced/flowable/InvoicedDto.java
new file mode 100644
index 0000000000..58bb4a0835
--- /dev/null
+++ b/anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/autoservice/invoiced/flowable/InvoicedDto.java
@@ -0,0 +1,37 @@
+package com.yxt.anrui.terminal.api.autoservice.invoiced.flowable;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.yxt.common.core.dto.Dto;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+
+/**
+ * @Author dimengzhe
+ * @Date 2022/9/6 14:31
+ * @Description
+ */
+@Data
+public class InvoicedDto implements Dto {
+ private static final long serialVersionUID = 3407061622782750121L;
+
+ @ApiModelProperty(value = "任务id")
+ @NotBlank(message = "参数错误:taskId")
+ private String taskId;
+ @ApiModelProperty(value = "流程id")
+ @NotBlank(message = "参数错误:procInsId")
+ @JsonProperty("procInsId")
+ private String instanceId;
+ @ApiModelProperty(value = "意见")
+ private String comment;
+ @ApiModelProperty(value = "业务sid")
+ @NotBlank(message = "参数错误:businessSid")
+ private String businessSid;
+ @ApiModelProperty(value = "用户sid")
+ @NotBlank(message = "参数错误:userSid")
+ private String userSid;
+ @ApiModelProperty(value = "节点id")
+ @NotBlank(message = "参数错误:taskDefKey")
+ private String taskDefKey;
+}
diff --git a/anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/autoservice/invoiced/flowable/InvoicedQuery.java b/anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/autoservice/invoiced/flowable/InvoicedQuery.java
new file mode 100644
index 0000000000..f81302cda7
--- /dev/null
+++ b/anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/autoservice/invoiced/flowable/InvoicedQuery.java
@@ -0,0 +1,25 @@
+package com.yxt.anrui.terminal.api.autoservice.invoiced.flowable;
+
+import com.yxt.common.core.query.Query;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+
+/**
+ * @Author dimengzhe
+ * @Date 2022/9/6 14:43
+ * @Description
+ */
+@Data
+public class InvoicedQuery implements Query {
+ private static final long serialVersionUID = 8705069258932362556L;
+
+ @ApiModelProperty(value = "节点key")
+ private String taskDefKey;
+ @ApiModelProperty(value = "业务sid")
+ private String businessSid;
+ @ApiModelProperty(value = "0 上一环节 1下一环节")
+ @NotNull(message = "参数错误:next")
+ private Integer next;
+}
diff --git a/anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/autoservice/invoiced/flowable/InvoicedTaskQuery.java b/anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/autoservice/invoiced/flowable/InvoicedTaskQuery.java
new file mode 100644
index 0000000000..e4644a92ea
--- /dev/null
+++ b/anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/autoservice/invoiced/flowable/InvoicedTaskQuery.java
@@ -0,0 +1,47 @@
+package com.yxt.anrui.terminal.api.autoservice.invoiced.flowable;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.yxt.common.core.query.Query;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+
+/**
+ * @Author dimengzhe
+ * @Date 2022/9/6 14:38
+ * @Description
+ */
+@Data
+public class InvoicedTaskQuery implements Query {
+ private static final long serialVersionUID = 924360726254030039L;
+
+ /**
+ * 终止、驳回、撤回
+ */
+ @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")
+ @JsonProperty("procInsId")
+ private String instanceId;
+}
diff --git a/anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/biz/autoservice/invoiced/InvoicedRest.java b/anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/biz/autoservice/invoiced/InvoicedRest.java
new file mode 100644
index 0000000000..05284914d5
--- /dev/null
+++ b/anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/biz/autoservice/invoiced/InvoicedRest.java
@@ -0,0 +1,50 @@
+package com.yxt.anrui.terminal.biz.autoservice.invoiced;
+
+import com.yxt.anrui.terminal.api.autoservice.invoiced.InvoicedFeign;
+import com.yxt.anrui.terminal.api.autoservice.invoiced.flowable.InvoicedDto;
+import com.yxt.anrui.terminal.api.autoservice.invoiced.flowable.InvoicedQuery;
+import com.yxt.anrui.terminal.api.autoservice.invoiced.flowable.InvoicedTaskQuery;
+import com.yxt.common.core.result.ResultBean;
+import io.swagger.annotations.Api;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+/**
+ * @Author dimengzhe
+ * @Date 2022/9/6 16:20
+ * @Description
+ */
+@Api(tags = "开票申请")
+@Controller
+@RequestMapping("/autoservice/v1/invoiced")
+public class InvoicedRest implements InvoicedFeign {
+
+ @Autowired
+ private InvoicedService invoicedService;
+
+ @Override
+ public ResultBean agreeInvoicedInfo(InvoicedDto dto) {
+ return invoicedService.agreeInvoicedInfo(dto);
+ }
+
+ @Override
+ public ResultBean rejectInvoicedInfo(InvoicedTaskQuery query) {
+ return invoicedService.rejectInvoicedInfo(query);
+ }
+
+ @Override
+ public ResultBean recallInvoicedInfo(InvoicedTaskQuery query) {
+ return invoicedService.recallInvoicedInfo(query);
+ }
+
+ @Override
+ public ResultBean stopInvoicedInfo(InvoicedTaskQuery query) {
+ return invoicedService.stopInvoicedInfo(query);
+ }
+
+ @Override
+ public ResultBean getFlowOperateTitle(InvoicedQuery query) {
+ return invoicedService.getFlowOperateTitle(query);
+ }
+}
diff --git a/anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/biz/autoservice/invoiced/InvoicedService.java b/anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/biz/autoservice/invoiced/InvoicedService.java
new file mode 100644
index 0000000000..8c3c17b32e
--- /dev/null
+++ b/anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/biz/autoservice/invoiced/InvoicedService.java
@@ -0,0 +1,123 @@
+package com.yxt.anrui.terminal.biz.autoservice.invoiced;
+
+import cn.hutool.core.bean.BeanUtil;
+import com.yxt.anrui.fin.api.finbillapplication.FinBillApplicationFeign;
+import com.yxt.anrui.fin.api.finbillapplication.flowable.FinBillCompleteDto;
+import com.yxt.anrui.fin.api.finbillapplication.flowable.FinBillNodeQuery;
+import com.yxt.anrui.fin.api.finbillapplication.flowable.FinBillNodeVo;
+import com.yxt.anrui.fin.api.finbillapplication.flowable.FinBillTaskQuery;
+import com.yxt.anrui.portal.api.sysstafforg.SysStaffOrg;
+import com.yxt.anrui.portal.api.sysstafforg.SysStaffOrgFeign;
+import com.yxt.anrui.portal.api.sysuser.SysUserFeign;
+import com.yxt.anrui.portal.api.sysuser.SysUserVo;
+import com.yxt.anrui.terminal.api.autoservice.invoiced.flowable.InvoicedDto;
+import com.yxt.anrui.terminal.api.autoservice.invoiced.flowable.InvoicedQuery;
+import com.yxt.anrui.terminal.api.autoservice.invoiced.flowable.InvoicedTaskQuery;
+import com.yxt.common.core.result.ResultBean;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.Collections;
+import java.util.List;
+
+/**
+ * @Author dimengzhe
+ * @Date 2022/9/6 16:21
+ * @Description
+ */
+@Service
+public class InvoicedService {
+
+ @Autowired
+ private FinBillApplicationFeign finBillApplicationFeign;
+ @Autowired
+ private SysUserFeign sysUserFeign;
+ @Autowired
+ private SysStaffOrgFeign sysStaffOrgFeign;
+
+ public ResultBean agreeInvoicedInfo(InvoicedDto dto) {
+ ResultBean rb = ResultBean.fireFail();
+ //根据用户sid获取staffSid
+ ResultBean userVoResultBean = sysUserFeign.fetchBySid(dto.getUserSid());
+ if (!userVoResultBean.getSuccess()) {
+ return rb.setMsg(userVoResultBean.getMsg());
+ }
+ //根据staffSid获取用户的组织全路径
+ ResultBean staffOrgResultBean = sysStaffOrgFeign.getOrgByStaffSid(userVoResultBean.getData().getStaffSid());
+ if (!staffOrgResultBean.getSuccess()) {
+ return rb.setMsg(staffOrgResultBean.getMsg());
+ }
+ //用户的组织全路径
+ String orgSidPath = staffOrgResultBean.getData().getOrgSidPath();
+ FinBillCompleteDto finBillCompleteDto = new FinBillCompleteDto();
+ BeanUtil.copyProperties(dto, finBillCompleteDto);
+ finBillCompleteDto.setOrgSidPath(orgSidPath);
+ ResultBean resultBean = finBillApplicationFeign.complete(finBillCompleteDto);
+ if (!resultBean.getSuccess()) {
+ return rb.setMsg(resultBean.getMsg());
+ }
+ return rb.success().setData(resultBean.getData());
+ }
+
+ public ResultBean rejectInvoicedInfo(InvoicedTaskQuery query) {
+ ResultBean rb = ResultBean.fireFail();
+ FinBillTaskQuery finBillTaskQuery = new FinBillTaskQuery();
+ BeanUtil.copyProperties(query, finBillTaskQuery);
+ ResultBean resultBean = finBillApplicationFeign.taskReject(finBillTaskQuery);
+ if (!resultBean.getSuccess()) {
+ return rb.setMsg(resultBean.getMsg());
+ }
+ return rb.success().setData(resultBean.getData());
+ }
+
+ public ResultBean recallInvoicedInfo(InvoicedTaskQuery query) {
+ ResultBean rb = ResultBean.fireFail();
+ FinBillTaskQuery finBillTaskQuery = new FinBillTaskQuery();
+ BeanUtil.copyProperties(query, finBillTaskQuery);
+ ResultBean resultBean = finBillApplicationFeign.revokeProcess(finBillTaskQuery);
+ if (!resultBean.getSuccess()) {
+ return rb.setMsg(resultBean.getMsg());
+ }
+ return rb.success().setData(resultBean.getData());
+ }
+
+ public ResultBean stopInvoicedInfo(InvoicedTaskQuery query) {
+ ResultBean rb = ResultBean.fireFail();
+ FinBillTaskQuery finBillTaskQuery = new FinBillTaskQuery();
+ BeanUtil.copyProperties(query, finBillTaskQuery);
+ ResultBean resultBean = finBillApplicationFeign.breakProcess(finBillTaskQuery);
+ if (!resultBean.getSuccess()) {
+ return rb.setMsg(resultBean.getMsg());
+ }
+ return rb.success().setData(resultBean.getData());
+ }
+
+ public ResultBean getFlowOperateTitle(InvoicedQuery query) {
+ ResultBean rb = ResultBean.fireFail();
+ //0 上一环节 1下一环节
+ int next = query.getNext();
+ FinBillNodeQuery getNodeQuery = new FinBillNodeQuery();
+ BeanUtil.copyProperties(query, getNodeQuery);
+ String data = "";
+ if (next == 0) {
+ ResultBean> getPreviousNodesForReject = finBillApplicationFeign.getPreviousNodesForReject(getNodeQuery);
+ if (getPreviousNodesForReject.getSuccess()) {
+ getPreviousNodesForReject.getData().removeAll(Collections.singleton(null));
+ data = getPreviousNodesForReject.getData().get(0).getName();
+ } else {
+ return rb.setMsg(getPreviousNodesForReject.getMsg());
+ }
+ } else if (next == 1) {
+ ResultBean> getNextNodesForSubmit = finBillApplicationFeign.getNextNodesForSubmit(getNodeQuery);
+ if (getNextNodesForSubmit.getSuccess()) {
+ getNextNodesForSubmit.getData().removeAll(Collections.singleton(null));
+ data = getNextNodesForSubmit.getData().get(0).getName();
+ } else {
+ return rb.setMsg(getNextNodesForSubmit.getMsg());
+ }
+ } else {
+ return rb.setMsg("参数错误:next");
+ }
+ return rb.success().setData(data);
+ }
+}