diff --git a/anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/fincostapply/FinCostapply.java b/anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/fincostapply/FinCostapply.java index f2fbba7c28..283b2ff22a 100644 --- a/anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/fincostapply/FinCostapply.java +++ b/anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/fincostapply/FinCostapply.java @@ -81,4 +81,15 @@ public class FinCostapply extends BaseEntity { @ApiModelProperty("使用组织") private String useOrgSid; + @ApiModelProperty(value = "流程状态") + private String nodeState; + @ApiModelProperty(value = "节点id") + private String nodeId; + @ApiModelProperty(value = "流程定义id") + private String procDefId; + @ApiModelProperty(value = "流程实例id") + private String procInstId; + @ApiModelProperty(value = "任务id") + private String taskId; + } diff --git a/anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/fincostapply/FinCostapplyFeign.java b/anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/fincostapply/FinCostapplyFeign.java index 9ca1dabc9c..8883834746 100644 --- a/anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/fincostapply/FinCostapplyFeign.java +++ b/anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/fincostapply/FinCostapplyFeign.java @@ -82,8 +82,8 @@ public interface FinCostapplyFeign { /***************************流程相关******************************/ @ApiOperation("提交费用申请审批流程") - @PostMapping("/submitVehicleApply") - public ResultBean submitVehicleApply(@Valid @RequestBody SubmitFinCostDto dto); + @PostMapping("/submitCostApply") + public ResultBean submitCostApply(@Valid @RequestBody SubmitFinCostDto dto); @ApiOperation(value = "办理(同意)") @PostMapping("/complete") diff --git a/anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/fincostapply/FinCostapplyFeignFallback.java b/anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/fincostapply/FinCostapplyFeignFallback.java index 1da1f4ef01..ae4d77a478 100644 --- a/anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/fincostapply/FinCostapplyFeignFallback.java +++ b/anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/fincostapply/FinCostapplyFeignFallback.java @@ -72,7 +72,7 @@ public class FinCostapplyFeignFallback implements FinCostapplyFeign { } @Override - public ResultBean submitVehicleApply(SubmitFinCostDto dto) { + public ResultBean submitCostApply(SubmitFinCostDto dto) { return null; } diff --git a/anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/fincostapply/flow/SubmitFinCostDto.java b/anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/fincostapply/flow/SubmitFinCostDto.java index f6a1ed25d3..dd20e906eb 100644 --- a/anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/fincostapply/flow/SubmitFinCostDto.java +++ b/anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/fincostapply/flow/SubmitFinCostDto.java @@ -1,5 +1,6 @@ package com.yxt.anrui.fin.api.fincostapply.flow; +import com.yxt.anrui.fin.api.fincostapply.FinCostapplyDto; import com.yxt.common.core.dto.Dto; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -10,7 +11,7 @@ import lombok.Data; * @Description */ @Data -public class SubmitFinCostDto implements Dto { +public class SubmitFinCostDto extends FinCostapplyDto { private static final long serialVersionUID = -7652070660634157511L; @ApiModelProperty("意见") diff --git a/anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/finpaymentapply/FinPaymentapply.java b/anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/finpaymentapply/FinPaymentapply.java index 4f97eee12c..531a8b7d46 100644 --- a/anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/finpaymentapply/FinPaymentapply.java +++ b/anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/finpaymentapply/FinPaymentapply.java @@ -83,4 +83,15 @@ public class FinPaymentapply extends BaseEntity { @ApiModelProperty("使用组织") private String useOrgSid; + @ApiModelProperty(value = "流程状态") + private String nodeState; + @ApiModelProperty(value = "节点id") + private String nodeId; + @ApiModelProperty(value = "流程定义id") + private String procDefId; + @ApiModelProperty(value = "流程实例id") + private String procInstId; + @ApiModelProperty(value = "任务id") + private String taskId; + } diff --git a/anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/finpaymentapply/FinPaymentapplyDto.java b/anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/finpaymentapply/FinPaymentapplyDto.java index cf9e2ef93f..764f050e71 100644 --- a/anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/finpaymentapply/FinPaymentapplyDto.java +++ b/anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/finpaymentapply/FinPaymentapplyDto.java @@ -52,7 +52,7 @@ public class FinPaymentapplyDto implements Dto { private static final long serialVersionUID = 1943341584811865051L; private String sid; @ApiModelProperty(value = "用户sid") - private String userSid; + private String createBySid; @ApiModelProperty("申请编号") private String billNo; @ApiModelProperty("申请人姓名") diff --git a/anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/finpaymentapply/FinPaymentapplyFeign.java b/anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/finpaymentapply/FinPaymentapplyFeign.java index 626aba45cf..643d8746c7 100644 --- a/anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/finpaymentapply/FinPaymentapplyFeign.java +++ b/anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/finpaymentapply/FinPaymentapplyFeign.java @@ -82,8 +82,8 @@ public interface FinPaymentapplyFeign { /***************************流程相关******************************/ @ApiOperation("提交付款申请审批流程") - @PostMapping("/submitVehicleApply") - public ResultBean submitVehicleApply(@Valid @RequestBody SubmitFinPayDto dto); + @PostMapping("/submitPayApply") + public ResultBean submitPayApply(@Valid @RequestBody SubmitFinPayDto dto); @ApiOperation(value = "办理(同意)") @PostMapping("/complete") diff --git a/anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/finpaymentapply/FinPaymentapplyFeignFallback.java b/anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/finpaymentapply/FinPaymentapplyFeignFallback.java index 21ebf625fe..96efdf6aeb 100644 --- a/anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/finpaymentapply/FinPaymentapplyFeignFallback.java +++ b/anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/finpaymentapply/FinPaymentapplyFeignFallback.java @@ -72,7 +72,7 @@ public class FinPaymentapplyFeignFallback implements FinPaymentapplyFeign { } @Override - public ResultBean submitVehicleApply(SubmitFinPayDto dto) { + public ResultBean submitPayApply(SubmitFinPayDto dto) { return null; } diff --git a/anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/finpaymentapply/flow/SubmitFinPayDto.java b/anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/finpaymentapply/flow/SubmitFinPayDto.java index 56ace7d41d..4c44d9b6cb 100644 --- a/anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/finpaymentapply/flow/SubmitFinPayDto.java +++ b/anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/finpaymentapply/flow/SubmitFinPayDto.java @@ -1,6 +1,6 @@ package com.yxt.anrui.fin.api.finpaymentapply.flow; -import com.yxt.common.core.dto.Dto; +import com.yxt.anrui.fin.api.finpaymentapply.FinPaymentapplyDto; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -10,7 +10,7 @@ import lombok.Data; * @Description */ @Data -public class SubmitFinPayDto implements Dto { +public class SubmitFinPayDto extends FinPaymentapplyDto { private static final long serialVersionUID = 3279531849930468266L; @ApiModelProperty("意见") diff --git a/anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/fincostapply/FinCostapplyRest.java b/anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/fincostapply/FinCostapplyRest.java index 55650784cb..1fb657282d 100644 --- a/anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/fincostapply/FinCostapplyRest.java +++ b/anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/fincostapply/FinCostapplyRest.java @@ -94,8 +94,8 @@ public class FinCostapplyRest implements FinCostapplyFeign { } @Override - public ResultBean submitVehicleApply(SubmitFinCostDto dto) { - return finCostapplyService.submitVehicleApply(dto); + public ResultBean submitCostApply(SubmitFinCostDto dto) { + return finCostapplyService.submitCostApply(dto); } @Override diff --git a/anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/fincostapply/FinCostapplyService.java b/anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/fincostapply/FinCostapplyService.java index b63d535be3..c9161b3ada 100644 --- a/anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/fincostapply/FinCostapplyService.java +++ b/anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/fincostapply/FinCostapplyService.java @@ -124,7 +124,7 @@ public class FinCostapplyService extends MybatisBaseService @@ -62,4 +63,6 @@ public interface FinPaymentapplyMapper extends BaseMapper { @Select("select * from fin_paymentapply") List selectListVo(); + + int updateFlowFiled(Map map); } \ No newline at end of file diff --git a/anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/finpaymentapply/FinPaymentapplyMapper.xml b/anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/finpaymentapply/FinPaymentapplyMapper.xml index 869ba030fe..8dc2f5711f 100644 --- a/anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/finpaymentapply/FinPaymentapplyMapper.xml +++ b/anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/finpaymentapply/FinPaymentapplyMapper.xml @@ -1,13 +1,37 @@ - - - - - + + + + + + + + UPDATE fin_paymentapply + SET nodeState=#{nodeState} + , nodeId=#{taskDefKey} + + , procDefId=#{procDefId} + + + , procInstId=#{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/finpaymentapply/FinPaymentapplyRest.java b/anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/finpaymentapply/FinPaymentapplyRest.java index 3bd7267c53..757e25875b 100644 --- a/anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/finpaymentapply/FinPaymentapplyRest.java +++ b/anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/finpaymentapply/FinPaymentapplyRest.java @@ -101,8 +101,8 @@ public class FinPaymentapplyRest implements FinPaymentapplyFeign { } @Override - public ResultBean submitVehicleApply(SubmitFinPayDto dto) { - return finPaymentapplyService.submitVehicleApply(dto); + public ResultBean submitPayApply(SubmitFinPayDto dto) { + return finPaymentapplyService.submitPayApply(dto); } @Override diff --git a/anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/finpaymentapply/FinPaymentapplyService.java b/anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/finpaymentapply/FinPaymentapplyService.java index 09e7520dd9..5948b37938 100644 --- a/anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/finpaymentapply/FinPaymentapplyService.java +++ b/anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/finpaymentapply/FinPaymentapplyService.java @@ -26,6 +26,7 @@ package com.yxt.anrui.fin.biz.finpaymentapply; 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.fin.api.finpaymentapply.*; @@ -33,16 +34,30 @@ import com.yxt.anrui.fin.api.finpaymentapply.flow.FinPayGetNodeQuery; import com.yxt.anrui.fin.api.finpaymentapply.flow.FinPayGetNodeVo; import com.yxt.anrui.fin.api.finpaymentapply.flow.FinPayTaskQuery; import com.yxt.anrui.fin.api.finpaymentapply.flow.SubmitFinPayDto; +import com.yxt.anrui.flowable.api.flow.FlowableFeign; +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.utils.ProcDefEnum; import com.yxt.anrui.flowable.sqloperationsymbol.BusinessVariables; +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.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 org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.util.ArrayList; import java.util.List; +import java.util.Map; +import java.util.Optional; +import java.util.stream.Collectors; /** * Project: anrui-fin(财务)
@@ -60,6 +75,14 @@ import java.util.List; @Service public class FinPaymentapplyService extends MybatisBaseService { + @Autowired + private SysUserFeign sysUserFeign; + @Autowired + private SysStaffOrgFeign sysStaffOrgFeign; + @Autowired + private FlowableFeign flowableFeign; + @Autowired + private FlowTaskFeign flowTaskFeign; public PagerVo listPageVo(PagerQuery pq) { FinPaymentapplyQuery query = pq.getParams(); @@ -130,8 +153,106 @@ public class FinPaymentapplyService extends MybatisBaseService userVoResultBean = sysUserFeign.fetchBySid(dto.getCreateBySid()); + 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(); + FinPaymentapply finPaymentapply = fetchBySid(dto.getSid()); + int r = submitBusinessData(dto, finPaymentapply); + 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 = BeanUtil.beanToMap(dto); + //用户的部门全路径sid + bv.setOrgSidPath(orgSidPath); + //业务sid + bv.setBusinessSid(businessSid); + //用户sid + bv.setUserSid(dto.getCreateBySid()); + bv.setFormVariables(variables); + //流程定义id + bv.setModelId(ProcDefEnum.FINPAYAPPLY.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)); + return voResultBean; + } + if (r == 2) { + // ToDo:驳回到发起人后再次提交 + if (StringUtils.isBlank(dto.getInstanceId())) { + return rb.setMsg("参数错误:instanceId"); + } + bv.setTaskId(finPaymentapply.getTaskId()); + bv.setTaskDefKey(finPaymentapply.getNodeId()); + bv.setComment(StringUtils.isNotBlank(dto.getComment()) ? dto.getComment() : "重新提交"); + bv.setInstanceId(dto.getInstanceId()); + return complete(bv); + } + return rb; + } + + /** + * 判断提交的流程是否被允许 + * + * @param dto + * @return + */ + private synchronized int submitBusinessData(SubmitFinPayDto dto, FinPaymentapply finPaymentapply) { + int r = 0; + if (StringUtils.isBlank(dto.getSid())) { + r = 1; + } else { + if (finPaymentapply != null) { + String businessTaskId = finPaymentapply.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; + } + + /** + * 更新流程相关的状态 + * + * @param map + * @return + */ + private int updateFlowFiled(Map map) { + return baseMapper.updateFlowFiled(map); } /** @@ -141,7 +262,22 @@ public class FinPaymentapplyService extends MybatisBaseService resultBean = flowableFeign.handleProsess(bv); + if (!resultBean.getSuccess()) { + return rb.setMsg(resultBean.getMsg()); + } + updateFlowFiled(BeanUtil.beanToMap(resultBean.getData())); + //ToDo:到待付款列表 + if ("Event_end".equals(resultBean.getData().getTaskDefKey())) { + + } + return rb.success().setData(resultBean.getData()); + } else { + return rb.setMsg("操作失败!提交的数据不一致"); + } } /** @@ -151,7 +287,14 @@ public class FinPaymentapplyService extends MybatisBaseService> getPreviousNodesForReject(FinPayGetNodeQuery query) { - return null; + ResultBean> rb = ResultBean.fireFail(); + BusinessVariables bv = new BusinessVariables(); + BeanUtil.copyProperties(query, bv); + bv.setModelId(ProcDefEnum.FINPAYAPPLY.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), FinPayGetNodeVo.class)).collect(Collectors.toList()); + return rb.success().setData(voList); } /** @@ -161,7 +304,14 @@ public class FinPaymentapplyService extends MybatisBaseService> getNextNodesForSubmit(FinPayGetNodeQuery query) { - return null; + ResultBean> rb = ResultBean.fireFail(); + BusinessVariables bv = new BusinessVariables(); + BeanUtil.copyProperties(query, bv); + bv.setModelId(ProcDefEnum.FINPAYAPPLY.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), FinPayGetNodeVo.class)).collect(Collectors.toList()); + return rb.success().setData(voList); } /** @@ -171,7 +321,33 @@ public class FinPaymentapplyService extends MybatisBaseService resultBean = flowableFeign.taskReject(flowTaskVo); + if (!resultBean.getSuccess()) { + return rb.setMsg(resultBean.getMsg()); + } + Map map = BeanUtil.beanToMap(resultBean.getData()); + //更新业务中的流程相关的参数 + updateFlowFiled(map); + return rb.success(); + } + } + return rb.setMsg("操作失败!提交的数据不一致!"); } /** @@ -181,7 +357,25 @@ public class FinPaymentapplyService extends MybatisBaseService 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("操作失败,提交的数据不一致!"); } /** @@ -191,6 +385,27 @@ public class FinPaymentapplyService extends MybatisBaseService resultBean = flowableFeign.breakProcess(flowTaskVo); + if (!resultBean.getSuccess()) { + return rb.setMsg(resultBean.getMsg()); + } + updateFlowFiled(BeanUtil.beanToMap(resultBean.getData())); + return rb.success().setData(resultBean.getData()); + } + } + return rb.setMsg("操作失败!提交的数据不一致!"); } } \ No newline at end of file