From 28364d31074bac29ea05440d2b14f83076749eff Mon Sep 17 00:00:00 2001
From: dimengzhe <251008545@qq.com>
Date: Mon, 4 Jul 2022 18:00:29 +0800
Subject: [PATCH] =?UTF-8?q?=E8=B4=B9=E7=94=A8=E7=94=B3=E8=AF=B7=E6=B5=81?=
=?UTF-8?q?=E7=A8=8B=E7=9B=B8=E5=85=B3=E6=8E=A5=E5=8F=A3?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../biz/fincostapply/FinCostapplyMapper.java | 3 +
.../biz/fincostapply/FinCostapplyMapper.xml | 16 ++
.../biz/fincostapply/FinCostapplyService.java | 231 +++++++++++++++++-
3 files changed, 243 insertions(+), 7 deletions(-)
diff --git a/anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/fincostapply/FinCostapplyMapper.java b/anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/fincostapply/FinCostapplyMapper.java
index 945bf8e282..e210787578 100644
--- a/anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/fincostapply/FinCostapplyMapper.java
+++ b/anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/fincostapply/FinCostapplyMapper.java
@@ -37,6 +37,7 @@ import com.yxt.anrui.fin.api.fincostapply.FinCostapply;
import com.yxt.anrui.fin.api.fincostapply.FinCostapplyVo;
import java.util.List;
+import java.util.Map;
/**
* Project: anrui-fin(财务)
@@ -74,4 +75,6 @@ public interface FinCostapplyMapper extends BaseMapper {
* @return
*/
FinCostapplyDetailsVo fetchDetailsVoBySid(String sid);
+
+ 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/fincostapply/FinCostapplyMapper.xml b/anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/fincostapply/FinCostapplyMapper.xml
index 7f7160b332..05ee7d6f8e 100644
--- a/anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/fincostapply/FinCostapplyMapper.xml
+++ b/anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/fincostapply/FinCostapplyMapper.xml
@@ -41,4 +41,20 @@
from fin_costapply fc
where fc.sid = #{sid}
+
+
+ UPDATE fin_costapply
+ 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/fincostapply/FinCostapplyService.java b/anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/fincostapply/FinCostapplyService.java
index c9161b3ada..9c41d2d34a 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
@@ -26,6 +26,7 @@
package com.yxt.anrui.fin.biz.fincostapply;
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.fincostapply.*;
@@ -33,16 +34,30 @@ import com.yxt.anrui.fin.api.fincostapply.flow.FinCostGetNodeQuery;
import com.yxt.anrui.fin.api.fincostapply.flow.FinCostGetNodeVo;
import com.yxt.anrui.fin.api.fincostapply.flow.FinCostTaskQuery;
import com.yxt.anrui.fin.api.fincostapply.flow.SubmitFinCostDto;
+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,15 @@ import java.util.List;
@Service
public class FinCostapplyService extends MybatisBaseService {
+ @Autowired
+ private SysUserFeign sysUserFeign;
+ @Autowired
+ private SysStaffOrgFeign sysStaffOrgFeign;
+ @Autowired
+ private FlowableFeign flowableFeign;
+ @Autowired
+ private FlowTaskFeign flowTaskFeign;
+
public PagerVo listPageVo(PagerQuery pq) {
FinCostapplyQuery query = pq.getParams();
QueryWrapper qw = new QueryWrapper<>();
@@ -125,9 +149,108 @@ public class FinCostapplyService 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();
+ FinCostapply finCostapply = fetchBySid(dto.getSid());
+ int r = submitBusinessData(dto, finCostapply);
+ 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();
+ //ToDo:流程中的参数赋值
+ 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.FINCOSTAPPLY.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(finCostapply.getTaskId());
+ bv.setTaskDefKey(finCostapply.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(SubmitFinCostDto dto, FinCostapply finCostapply) {
+ int r = 0;
+ if (StringUtils.isBlank(dto.getSid())) {
+ r = 1;
+ } else {
+ if (finCostapply != null) {
+ String businessTaskId = finCostapply.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);
}
+
/**
* 费用申请办理
*
@@ -135,7 +258,22 @@ public class FinCostapplyService 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("操作失败!提交的数据不一致");
+ }
}
/**
@@ -145,7 +283,14 @@ public class FinCostapplyService extends MybatisBaseService> getPreviousNodesForReject(FinCostGetNodeQuery query) {
- return null;
+ ResultBean> rb = ResultBean.fireFail();
+ BusinessVariables bv = new BusinessVariables();
+ BeanUtil.copyProperties(query, bv);
+ bv.setModelId(ProcDefEnum.FINCOSTAPPLY.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), FinCostGetNodeVo.class)).collect(Collectors.toList());
+ return rb.success().setData(voList);
}
/**
@@ -155,7 +300,14 @@ public class FinCostapplyService extends MybatisBaseService> getNextNodesForSubmit(FinCostGetNodeQuery query) {
- return null;
+ ResultBean> rb = ResultBean.fireFail();
+ BusinessVariables bv = new BusinessVariables();
+ BeanUtil.copyProperties(query, bv);
+ bv.setModelId(ProcDefEnum.FINCOSTAPPLY.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), FinCostGetNodeVo.class)).collect(Collectors.toList());
+ return rb.success().setData(voList);
}
/**
@@ -165,7 +317,33 @@ public class FinCostapplyService 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("操作失败!提交的数据不一致!");
}
/**
@@ -175,7 +353,25 @@ public class FinCostapplyService 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("操作失败,提交的数据不一致!");
}
/**
@@ -185,6 +381,27 @@ public class FinCostapplyService 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