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); + } +}