Browse Source

费用申请流程相关接口

master
dimengzhe 3 years ago
parent
commit
28364d3107
  1. 3
      anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/fincostapply/FinCostapplyMapper.java
  2. 16
      anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/fincostapply/FinCostapplyMapper.xml
  3. 231
      anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/fincostapply/FinCostapplyService.java

3
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(财务) <br/>
@ -74,4 +75,6 @@ public interface FinCostapplyMapper extends BaseMapper<FinCostapply> {
* @return
*/
FinCostapplyDetailsVo fetchDetailsVoBySid(String sid);
int updateFlowFiled(Map<String, Object> map);
}

16
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}
</select>
<update id="updateFlowFiled">
UPDATE fin_costapply
SET nodeState=#{nodeState}
, nodeId=#{taskDefKey}
<if test="procDefId != null and procDefId != ''">
, procDefId=#{procDefId}
</if>
<if test="procInsId != null and procInsId != ''">
, procInstId=#{procInsId}
</if>
<if test="taskId != null and taskId != ''">
, taskId=#{taskId}
</if>
WHERE sid = #{sid}
</update>
</mapper>

231
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(财务) <br/>
@ -60,6 +75,15 @@ import java.util.List;
@Service
public class FinCostapplyService extends MybatisBaseService<FinCostapplyMapper, FinCostapply> {
@Autowired
private SysUserFeign sysUserFeign;
@Autowired
private SysStaffOrgFeign sysStaffOrgFeign;
@Autowired
private FlowableFeign flowableFeign;
@Autowired
private FlowTaskFeign flowTaskFeign;
public PagerVo<FinCostapplyVo> listPageVo(PagerQuery<FinCostapplyQuery> pq) {
FinCostapplyQuery query = pq.getParams();
QueryWrapper<FinCostapply> qw = new QueryWrapper<>();
@ -125,9 +149,108 @@ public class FinCostapplyService extends MybatisBaseService<FinCostapplyMapper,
* @return
*/
public ResultBean submitCostApply(SubmitFinCostDto dto) {
return null;
ResultBean rb = ResultBean.fireFail();
//根据用户sid获取staffSid
ResultBean<SysUserVo> userVoResultBean = sysUserFeign.fetchBySid(dto.getCreateBySid());
if (!userVoResultBean.getSuccess()) {
return rb.setMsg(userVoResultBean.getMsg());
}
//根据staffSid获取用户的组织全路径
ResultBean<SysStaffOrg> 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<String> resultBean = saveOrUpdateDto(dto);
if (!resultBean.getSuccess()) {
return rb.setMsg(resultBean.getMsg());
}
String businessSid = resultBean.getData();
//创建BusinessVariables实体对象
BusinessVariables bv = new BusinessVariables();
//ToDo:流程中的参数赋值
Map<String, Object> 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<UpdateFlowFieldVo> 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<String, Object> map) {
return baseMapper.updateFlowFiled(map);
}
/**
* 费用申请办理
*
@ -135,7 +258,22 @@ public class FinCostapplyService extends MybatisBaseService<FinCostapplyMapper,
* @return
*/
public ResultBean complete(BusinessVariables bv) {
return null;
ResultBean rb = ResultBean.fireFail();
FinCostapply finCostapply = fetchBySid(bv.getBusinessSid());
if (bv.getTaskId().equals(finCostapply.getTaskId())) {
ResultBean<UpdateFlowFieldVo> 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<FinCostapplyMapper,
* @return
*/
public ResultBean<List<FinCostGetNodeVo>> getPreviousNodesForReject(FinCostGetNodeQuery query) {
return null;
ResultBean<List<FinCostGetNodeVo>> rb = ResultBean.fireFail();
BusinessVariables bv = new BusinessVariables();
BeanUtil.copyProperties(query, bv);
bv.setModelId(ProcDefEnum.FINCOSTAPPLY.getProDefId());
ResultBean<List<Map<String, Object>>> resultBean = flowTaskFeign.getPreviousNodesForReject(bv);
//判断数组是否为空,若为空则赋值,若不为空,则遍历循环将map中的数据赋值给getNodeVo
List<FinCostGetNodeVo> 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<FinCostapplyMapper,
* @return
*/
public ResultBean<List<FinCostGetNodeVo>> getNextNodesForSubmit(FinCostGetNodeQuery query) {
return null;
ResultBean<List<FinCostGetNodeVo>> rb = ResultBean.fireFail();
BusinessVariables bv = new BusinessVariables();
BeanUtil.copyProperties(query, bv);
bv.setModelId(ProcDefEnum.FINCOSTAPPLY.getProDefId());
ResultBean<List<Map<String, Object>>> resultBean = flowTaskFeign.getNextNodesForSubmit(bv);
//判断数组是否为空,若为空则赋值,若不为空,则遍历循环将map中的数据赋值给getNodeVo
List<FinCostGetNodeVo> 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<FinCostapplyMapper,
* @return
*/
public ResultBean taskReject(FinCostTaskQuery query) {
return null;
ResultBean rb = ResultBean.fireFail();
FinCostapply finCostapply = fetchBySid(query.getBusinessSid());
if (finCostapply == null) {
return rb.setMsg("该申请不存在");
}
String businessTaskId = finCostapply.getTaskId();
if (StringUtils.isNotBlank(businessTaskId)) {
if (businessTaskId.equals(query.getTaskId())) {
if (StringUtils.isBlank(query.getComment())) {
return rb.setMsg("参数错误:comment");
}
if (StringUtils.isBlank(query.getUserSid())) {
return rb.setMsg("参数错误:userSid");
}
FlowTaskVo flowTaskVo = new FlowTaskVo();
BeanUtil.copyProperties(query, flowTaskVo);
ResultBean<UpdateFlowFieldVo> resultBean = flowableFeign.taskReject(flowTaskVo);
if (!resultBean.getSuccess()) {
return rb.setMsg(resultBean.getMsg());
}
Map<String, Object> map = BeanUtil.beanToMap(resultBean.getData());
//更新业务中的流程相关的参数
updateFlowFiled(map);
return rb.success();
}
}
return rb.setMsg("操作失败!提交的数据不一致!");
}
/**
@ -175,7 +353,25 @@ public class FinCostapplyService extends MybatisBaseService<FinCostapplyMapper,
* @return
*/
public ResultBean revokeProcess(FinCostTaskQuery query) {
return null;
ResultBean rb = ResultBean.fireFail();
if (StringUtils.isBlank(query.getUserSid())) {
return rb.setMsg("参数错误:userSid");
}
FinCostapply finCostapply = fetchBySid(query.getBusinessSid());
String businessTaskId = finCostapply.getTaskId();
if (StringUtils.isNotBlank(businessTaskId)) {
if (businessTaskId.equals(query.getTaskId())) {
FlowTaskVo flowTaskVo = new FlowTaskVo();
BeanUtil.copyProperties(query, flowTaskVo);
ResultBean<UpdateFlowFieldVo> 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<FinCostapplyMapper,
* @return
*/
public ResultBean breakProcess(FinCostTaskQuery query) {
return null;
ResultBean rb = ResultBean.fireFail();
if (StringUtils.isBlank(query.getInstanceId())) {
return rb.setMsg("参数错误:instanceId");
}
if (StringUtils.isBlank(query.getUserSid())) {
return rb.setMsg("参数错误:userSid");
}
FinCostapply finCostapply = fetchBySid(query.getBusinessSid());
String businessTaskId = finCostapply.getTaskId();
if (StringUtils.isNotBlank(businessTaskId)) {
if (businessTaskId.equals(query.getTaskId())) {
FlowTaskVo flowTaskVo = new FlowTaskVo();
BeanUtil.copyProperties(query, flowTaskVo);
ResultBean<UpdateFlowFieldVo> 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("操作失败!提交的数据不一致!");
}
}
Loading…
Cancel
Save