Browse Source

对接OA提取通用方法,核销添加统计

mssql
Yen 3 years ago
parent
commit
bc8e36479c
  1. 2
      src/main/java/com/qs/serve/modules/seeyon/entity/CtpAffairCommit.java
  2. 15
      src/main/java/com/qs/serve/modules/seeyon/service/SeeYonService.java
  3. 70
      src/main/java/com/qs/serve/modules/seeyon/service/impl/SeeYonServiceImpl.java
  4. 4
      src/main/java/com/qs/serve/modules/tbs/common/TbsSeeYonConst.java
  5. 24
      src/main/java/com/qs/serve/modules/tbs/common/VtbVerificationState.java
  6. 51
      src/main/java/com/qs/serve/modules/tbs/controller/TbsCostApplyController.java
  7. 6
      src/main/java/com/qs/serve/modules/tbs/entity/bo/TbsAffairCommitBo.java
  8. 16
      src/main/java/com/qs/serve/modules/tbs/entity/vo/CtpAffairVo.java
  9. 2
      src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyServiceImpl.java
  10. 134
      src/main/java/com/qs/serve/modules/vtb/controller/VtbVerificationController.java
  11. 7
      src/main/java/com/qs/serve/modules/vtb/entity/VtbVerification.java
  12. 3
      src/main/java/com/qs/serve/modules/vtb/entity/VtbVerificationSubject.java
  13. 53
      src/main/java/com/qs/serve/modules/vtb/service/impl/VtbVerificationServiceImpl.java

2
src/main/java/com/qs/serve/modules/seeyon/entity/CtpAffairCommit.java

@ -21,4 +21,6 @@ public class CtpAffairCommit {
private String comment; private String comment;
private String formCode;
} }

15
src/main/java/com/qs/serve/modules/seeyon/service/SeeYonService.java

@ -3,6 +3,8 @@ package com.qs.serve.modules.seeyon.service;
import com.qs.serve.common.model.dto.PageVo; import com.qs.serve.common.model.dto.PageVo;
import com.qs.serve.common.model.dto.R; import com.qs.serve.common.model.dto.R;
import com.qs.serve.modules.seeyon.entity.*; import com.qs.serve.modules.seeyon.entity.*;
import com.qs.serve.modules.tbs.entity.bo.TbsAffairCommitBo;
import com.qs.serve.modules.tbs.entity.vo.CtpAffairVo;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestBody;
@ -15,6 +17,10 @@ import java.util.List;
*/ */
public interface SeeYonService { public interface SeeYonService {
R<List<CtpAffairVo>> commonListAffairs(String syFormId, String tmpCode);
R<String> commonCommit(TbsAffairCommitBo affairCommit,String formCode);
/** /**
* 通用的创建流程接口 * 通用的创建流程接口
* @param createProcessBo * @param createProcessBo
@ -27,7 +33,14 @@ public interface SeeYonService {
* @param costApplyId * @param costApplyId
* @return * @return
*/ */
R<String> getFormId(Long costApplyId); R<String> getCostFormId(Long costApplyId);
/**
* 获取表单id
* @param checkId
* @return
*/
R<String> getCheckFormId(Long checkId);
/** /**
* 提交 * 提交

70
src/main/java/com/qs/serve/modules/seeyon/service/impl/SeeYonServiceImpl.java

@ -7,16 +7,23 @@ import com.qs.serve.common.util.*;
import com.qs.serve.common.util.model.DateFormatString; import com.qs.serve.common.util.model.DateFormatString;
import com.qs.serve.modules.seeyon.entity.*; import com.qs.serve.modules.seeyon.entity.*;
import com.qs.serve.modules.seeyon.service.SeeYonService; import com.qs.serve.modules.seeyon.service.SeeYonService;
import com.qs.serve.modules.sys.entity.SysUser;
import com.qs.serve.modules.sys.service.SysUserService;
import com.qs.serve.modules.tbs.common.TbsSeeYonConst; import com.qs.serve.modules.tbs.common.TbsSeeYonConst;
import com.qs.serve.modules.tbs.entity.bo.TbsAffairCommitBo;
import com.qs.serve.modules.tbs.entity.vo.CtpAffairVo;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.jetbrains.annotations.Nullable;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate; import org.springframework.web.client.RestTemplate;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.stream.Collectors;
/** /**
* @author YenHex * @author YenHex
@ -28,6 +35,58 @@ import java.util.List;
public class SeeYonServiceImpl implements SeeYonService { public class SeeYonServiceImpl implements SeeYonService {
private SeeYonProperties seeYonProperties; private SeeYonProperties seeYonProperties;
private SysUserService sysUserService;
@Nullable
@Override
public R<List<CtpAffairVo>> commonListAffairs(String syFormId, String tmpCode) {
SysUser sysUser = sysUserService.getById(AuthContextUtils.getSysUserId());
if(!StringUtils.hasText(sysUser.getSyUserId())||!StringUtils.hasText(sysUser.getSyAccount())){
return R.error("当前账号未绑定致远用户信息");
}
CtpAffairQo param = new CtpAffairQo();
param.setFormMainId(syFormId);
param.setTemplateCodes(Arrays.asList(tmpCode));
R<List<CtpAffair>> syResult = this.listFormAffair(param);
List<CtpAffair> ctpAffairs = syResult.getData();
if(ctpAffairs.size()>0){
List<String> oaUserIds = ctpAffairs.stream().map(CtpAffair::getMemberId).collect(Collectors.toList());
List<SysUser> userList = sysUserService.listByOaMemberIds(oaUserIds);
List<CtpAffairVo> result = new ArrayList<>();
for (CtpAffair ctpAffair : ctpAffairs) {
CtpAffairVo ctpAffairVo = new CtpAffairVo();
ctpAffairVo.setAffairInfo(ctpAffair);
for (SysUser user : userList) {
if(ctpAffair.getMemberId().equals(user.getSyUserId())){
ctpAffairVo.setUserInfo(user.toSysUserVo());
}
}
result.add(ctpAffairVo);
}
return R.ok(result);
}
return null;
}
@Override
public R<String> commonCommit(TbsAffairCommitBo affairCommit,String formCode) {
SysUser sysUser = sysUserService.getById(AuthContextUtils.getSysUserId());
sysUser.checkSyAccount();
CtpAffairCommit param = new CtpAffairCommit();
param.setFormCode(formCode);
param.setState(affairCommit.getState());
param.setAffairId(affairCommit.getAffairId());
param.setComment(affairCommit.getComment());
if(affairCommit.getState().equals(1)){
param.setMemberId(sysUser.getSyUserId());
}else if(affairCommit.getState().equals(0)){
param.setMemberId(sysUser.getSyAccount());
}else {
Assert.throwEx("param err2");
}
R<String> result = this.affairCommit(param);
return result;
}
@Override @Override
public R<String> baseCreateProcess(BaseCreateProcessBo createProcessBo) { public R<String> baseCreateProcess(BaseCreateProcessBo createProcessBo) {
@ -36,9 +95,16 @@ public class SeeYonServiceImpl implements SeeYonService {
} }
@Override @Override
public R<String> getFormId(Long costApplyId) { public R<String> getCostFormId(Long costApplyId) {
String title = "获取表单ID";
String url2 = TbsSeeYonConst.API_GET_COST_FORM_ID+"?costApplyId="+costApplyId;
return getBase(url2,title);
}
@Override
public R<String> getCheckFormId(Long checkId) {
String title = "获取表单ID"; String title = "获取表单ID";
String url2 = TbsSeeYonConst.API_GET_FORM_ID+"?costApplyId="+costApplyId; String url2 = TbsSeeYonConst.API_GET_CHECK_FORM_ID+"?checkId="+checkId;
return getBase(url2,title); return getBase(url2,title);
} }

4
src/main/java/com/qs/serve/modules/tbs/common/TbsSeeYonConst.java

@ -10,11 +10,13 @@ public interface TbsSeeYonConst {
String PRE_TITLE_VERIFICATION = "【预算费用核销】"; String PRE_TITLE_VERIFICATION = "【预算费用核销】";
String COST_APPLY_FORM = "CostBill_Test"; String COST_APPLY_FORM = "CostBill_Test";
String VERIFICATION_FORM = "CheckCost_Test";
String API_PROCESS_CREATE = "/process/create"; String API_PROCESS_CREATE = "/process/create";
String API_PROCESS_COMMIT = "/process/commit"; String API_PROCESS_COMMIT = "/process/commit";
String API_PROCESS_CANCEL = "/process/cancel"; String API_PROCESS_CANCEL = "/process/cancel";
String API_GET_FORM_ID = "/process/getFormId"; String API_GET_COST_FORM_ID = "/process/getCostApplyFormId";
String API_GET_CHECK_FORM_ID = "/process/getCheckFormId";
String API_PAGE_AFFAIR = "/process/pageMemberAffair"; String API_PAGE_AFFAIR = "/process/pageMemberAffair";
String API_LIST_AFFAIR = "/process/listFormAffair"; String API_LIST_AFFAIR = "/process/listFormAffair";

24
src/main/java/com/qs/serve/modules/tbs/common/VtbVerificationState.java

@ -0,0 +1,24 @@
package com.qs.serve.modules.tbs.common;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* @author YenHex
* @since 2022/11/28
*/
@Getter
@AllArgsConstructor
public enum VtbVerificationState {
//状态:0=未发布;1=审批中;2=待执行;3=完成;4-被驳回;5-中止
State_0_unPublish(0),
State_1_apply(1),
State_2_actioning(2),
State_3_finished(3),
State_4_refused(4),
State_5_stop(5);
private Integer code;
}

51
src/main/java/com/qs/serve/modules/tbs/controller/TbsCostApplyController.java

@ -33,6 +33,7 @@ import com.qs.serve.modules.tbs.entity.vo.TbsCostApplyVo;
import com.qs.serve.modules.tbs.service.*; import com.qs.serve.modules.tbs.service.*;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.jetbrains.annotations.Nullable;
import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
@ -185,8 +186,6 @@ public class TbsCostApplyController {
return R.ok(); return R.ok();
} }
/** /**
* 更新 * 更新
* @param param * @param param
@ -251,36 +250,13 @@ public class TbsCostApplyController {
*/ */
@GetMapping("/ListAffairs") @GetMapping("/ListAffairs")
public R<List<CtpAffairVo>> pageMemberAffair(Long costApplyId){ public R<List<CtpAffairVo>> pageMemberAffair(Long costApplyId){
SysUser sysUser = sysUserService.getById(AuthContextUtils.getSysUserId());
if(!StringUtils.hasText(sysUser.getSyUserId())||!StringUtils.hasText(sysUser.getSyAccount())){
return R.error("当前账号未绑定致远用户信息");
}
TbsCostApply costApplyParam = tbsCostApplyService.getById(costApplyId); TbsCostApply costApplyParam = tbsCostApplyService.getById(costApplyId);
if(costApplyParam.getSyFormId()==null){ String syFormId = costApplyParam.getSyFormId();
if(syFormId==null){
return R.ok(); return R.ok();
} }
CtpAffairQo param = new CtpAffairQo(); String tmpCode = TbsSeeYonConst.COST_APPLY_FORM;
param.setFormMainId(costApplyParam.getSyFormId()); return seeYonService.commonListAffairs(syFormId, tmpCode);
param.setTemplateCodes(Arrays.asList(TbsSeeYonConst.COST_APPLY_FORM));
R<List<CtpAffair>> syResult = seeYonService.listFormAffair(param);
List<CtpAffair> ctpAffairs = syResult.getData();
if(ctpAffairs.size()>0){
List<String> oaUserIds = ctpAffairs.stream().map(CtpAffair::getMemberId).collect(Collectors.toList());
List<SysUser> userList = sysUserService.listByOaMemberIds(oaUserIds);
List<CtpAffairVo> result = new ArrayList<>();
for (CtpAffair ctpAffair : ctpAffairs) {
CtpAffairVo ctpAffairVo = new CtpAffairVo();
ctpAffairVo.setAffairInfo(ctpAffair);
for (SysUser user : userList) {
if(ctpAffair.getMemberId().equals(user.getSyUserId())){
ctpAffairVo.setUserInfo(user.toSysUserVo());
}
}
result.add(ctpAffairVo);
}
return R.ok(result);
}
return R.ok();
} }
/** /**
@ -301,7 +277,7 @@ public class TbsCostApplyController {
param.setState(state); param.setState(state);
param.setPageNum(pageNum); param.setPageNum(pageNum);
param.setPageSize(pageSize); param.setPageSize(pageSize);
param.setTemplateCodes(Arrays.asList("CostBill_Test")); param.setTemplateCodes(Arrays.asList(TbsSeeYonConst.COST_APPLY_FORM));
R<PageVo<CtpAffair>> syResult = seeYonService.pageMemberAffair(param); R<PageVo<CtpAffair>> syResult = seeYonService.pageMemberAffair(param);
PageVo<CtpAffair> pageVo = syResult.getData(); PageVo<CtpAffair> pageVo = syResult.getData();
List<CtpAffair> ctpAffairs = pageVo.getList(); List<CtpAffair> ctpAffairs = pageVo.getList();
@ -341,24 +317,11 @@ public class TbsCostApplyController {
@SysLog(module = SystemModule.Budget, title = "费用申请", biz = BizType.DELETE) @SysLog(module = SystemModule.Budget, title = "费用申请", biz = BizType.DELETE)
@PreAuthorize("hasRole('tbs:costApply:commit')") @PreAuthorize("hasRole('tbs:costApply:commit')")
public R<?> commitAffair(@RequestBody @Valid TbsAffairCommitBo affairCommit){ public R<?> commitAffair(@RequestBody @Valid TbsAffairCommitBo affairCommit){
SysUser sysUser = sysUserService.getById(AuthContextUtils.getSysUserId());
sysUser.checkSyAccount();
TbsCostApply costApply = tbsCostApplyService.getById(affairCommit.getCostApplyId()); TbsCostApply costApply = tbsCostApplyService.getById(affairCommit.getCostApplyId());
if(!costApply.getChargeState().equals(TbsCostApplyState.State_1_apply.getCode())){ if(!costApply.getChargeState().equals(TbsCostApplyState.State_1_apply.getCode())){
return R.error("费用申请处于未非审批状态!"); return R.error("费用申请处于未非审批状态!");
} }
CtpAffairCommit param = new CtpAffairCommit(); R<String> result = seeYonService.commonCommit(affairCommit,TbsSeeYonConst.COST_APPLY_FORM);
param.setState(affairCommit.getState());
param.setAffairId(affairCommit.getAffairId());
param.setComment(affairCommit.getComment());
if(affairCommit.getState().equals(1)){
param.setMemberId(sysUser.getSyUserId());
}else if(affairCommit.getState().equals(0)){
param.setMemberId(sysUser.getSyAccount());
}else {
Assert.throwEx("param err2");
}
R<String> result = seeYonService.affairCommit(param);
if(result.getStatus()==200){ if(result.getStatus()==200){
// 判断是否含有下个节点 // 判断是否含有下个节点
String flag = result.getData(); String flag = result.getData();

6
src/main/java/com/qs/serve/modules/tbs/entity/bo/TbsAffairCommitBo.java

@ -12,7 +12,7 @@ import javax.validation.constraints.NotNull;
public class TbsAffairCommitBo { public class TbsAffairCommitBo {
/** /**
* 费用申请id * 费用申请id费用申请id
*/ */
@NotNull @NotNull
private Long costApplyId; private Long costApplyId;
@ -21,9 +21,7 @@ public class TbsAffairCommitBo {
@NotNull @NotNull
private Integer state; private Integer state;
/** /** 流程节点id */
* 流程节点id
*/
@NotNull @NotNull
private String affairId; private String affairId;

16
src/main/java/com/qs/serve/modules/tbs/entity/vo/CtpAffairVo.java

@ -2,6 +2,7 @@ package com.qs.serve.modules.tbs.entity.vo;
import com.qs.serve.modules.seeyon.entity.CtpAffair; import com.qs.serve.modules.seeyon.entity.CtpAffair;
import com.qs.serve.modules.tbs.entity.TbsCostApply; import com.qs.serve.modules.tbs.entity.TbsCostApply;
import com.qs.serve.modules.vtb.entity.VtbVerification;
import lombok.Data; import lombok.Data;
/** /**
@ -11,19 +12,16 @@ import lombok.Data;
@Data @Data
public class CtpAffairVo { public class CtpAffairVo {
/** /** 审批信息 */
* 审批信息
*/
private CtpAffair affairInfo; private CtpAffair affairInfo;
/** /** 费用申请信息 */
* 费用申请信息
*/
private TbsCostApply costApply; private TbsCostApply costApply;
/** /** 费用核销信息 */
* 审批人 private VtbVerification verification;
*/
/** 审批人 */
private Object userInfo; private Object userInfo;
} }

2
src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyServiceImpl.java

@ -75,7 +75,7 @@ public class TbsCostApplyServiceImpl extends ServiceImpl<TbsCostApplyMapper,TbsC
} }
String flowId = flowIdResult.getData(); String flowId = flowIdResult.getData();
String formId = null; String formId = null;
R<String> formIdResult = seeYonService.getFormId(tbsCostApply.getId()); R<String> formIdResult = seeYonService.getCostFormId(tbsCostApply.getId());
if(formIdResult.getStatus()==200){ if(formIdResult.getStatus()==200){
formId = formIdResult.getData(); formId = formIdResult.getData();
} }

134
src/main/java/com/qs/serve/modules/vtb/controller/VtbVerificationController.java

@ -6,12 +6,21 @@ import com.qs.serve.common.model.dto.PageVo;
import com.qs.serve.common.model.dto.R; import com.qs.serve.common.model.dto.R;
import com.qs.serve.common.model.enums.BizType; import com.qs.serve.common.model.enums.BizType;
import com.qs.serve.common.model.enums.SystemModule; import com.qs.serve.common.model.enums.SystemModule;
import com.qs.serve.common.util.CollectionUtil; import com.qs.serve.common.util.*;
import com.qs.serve.common.util.PageUtil; import com.qs.serve.modules.seeyon.entity.CtpAffair;
import com.qs.serve.common.util.CopierUtil; import com.qs.serve.modules.seeyon.entity.CtpAffairCommit;
import com.qs.serve.common.util.StringUtils; import com.qs.serve.modules.seeyon.entity.CtpAffairQo;
import com.qs.serve.modules.seeyon.service.SeeYonService;
import com.qs.serve.modules.sys.entity.SysAttach; import com.qs.serve.modules.sys.entity.SysAttach;
import com.qs.serve.modules.sys.entity.SysUser;
import com.qs.serve.modules.sys.service.SysAttachService; import com.qs.serve.modules.sys.service.SysAttachService;
import com.qs.serve.modules.sys.service.SysUserService;
import com.qs.serve.modules.tbs.common.TbsCostApplyState;
import com.qs.serve.modules.tbs.common.TbsSeeYonConst;
import com.qs.serve.modules.tbs.common.VtbVerificationState;
import com.qs.serve.modules.tbs.entity.TbsCostApply;
import com.qs.serve.modules.tbs.entity.bo.TbsAffairCommitBo;
import com.qs.serve.modules.tbs.entity.vo.CtpAffairVo;
import com.qs.serve.modules.vtb.entity.VtbVerificationChannel; import com.qs.serve.modules.vtb.entity.VtbVerificationChannel;
import com.qs.serve.modules.vtb.entity.VtbVerificationChannelPoint; import com.qs.serve.modules.vtb.entity.VtbVerificationChannelPoint;
import com.qs.serve.modules.vtb.entity.VtbVerificationSubject; import com.qs.serve.modules.vtb.entity.VtbVerificationSubject;
@ -30,8 +39,10 @@ import com.qs.serve.modules.vtb.entity.VtbVerification;
import com.qs.serve.modules.vtb.service.VtbVerificationService; import com.qs.serve.modules.vtb.service.VtbVerificationService;
import javax.validation.Valid; import javax.validation.Valid;
import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.stream.Collectors;
/** /**
* 核销 核销 * 核销 核销
@ -49,14 +60,10 @@ public class VtbVerificationController {
private VtbVerificationChannelPointService vtbVerificationChannelPointService; private VtbVerificationChannelPointService vtbVerificationChannelPointService;
private VtbVerificationSubjectService vtbVerificationSubjectService; private VtbVerificationSubjectService vtbVerificationSubjectService;
private SysAttachService attachService; private SysAttachService attachService;
private SysUserService sysUserService;
private SeeYonService seeYonService;
@GetMapping("/oktest")
public R<?> test(Long id){
vtbVerificationService.successCommit(id);
return R.ok();
}
/** /**
* 翻页 * 翻页
* @param param * @param param
@ -102,8 +109,6 @@ public class VtbVerificationController {
return R.ok(vtbVerification); return R.ok(vtbVerification);
} }
/** /**
* 提交核销 * 提交核销
* @param param * @param param
@ -117,6 +122,111 @@ public class VtbVerificationController {
return R.ok(); return R.ok();
} }
/**
* 审批列表(用于详情页)
* @param verificationId
* @return
*/
@GetMapping("/ListAffairs")
public R<List<CtpAffairVo>> pageMemberAffair(Long verificationId){
VtbVerification verification = vtbVerificationService.getById(verificationId);
String syFormId = verification.getSyFormId();
if(syFormId==null){
return R.ok();
}
String tmpCode = TbsSeeYonConst.VERIFICATION_FORM;
return seeYonService.commonListAffairs(syFormId, tmpCode);
}
/**
* 审批列表(翻页)
* @param state 状态0-未完成与已完成(默认)1-未完成2已完成3-我发起的其它-被拦截
* @param pageNum
* @param pageSize
* @return
*/
@GetMapping("/pageMemberAffair")
public R<PageVo<CtpAffairVo>> pageMemberAffair(Integer state, Integer pageNum, Integer pageSize){
SysUser sysUser = sysUserService.getById(AuthContextUtils.getSysUserId());
if(!StringUtils.hasText(sysUser.getSyUserId())||!StringUtils.hasText(sysUser.getSyAccount())){
return R.error("当前账号未绑定致远用户信息");
}
CtpAffairQo param = new CtpAffairQo();
param.setMemberId(sysUser.getSyUserId());
param.setState(state);
param.setPageNum(pageNum);
param.setPageSize(pageSize);
param.setTemplateCodes(Arrays.asList(TbsSeeYonConst.VERIFICATION_FORM));
R<PageVo<CtpAffair>> syResult = seeYonService.pageMemberAffair(param);
PageVo<CtpAffair> pageVo = syResult.getData();
List<CtpAffair> ctpAffairs = pageVo.getList();
if(ctpAffairs.size()>0){
List<String> oaUserIds = ctpAffairs.stream().map(CtpAffair::getMemberId).collect(Collectors.toList());
List<SysUser> userList = sysUserService.listByOaMemberIds(oaUserIds);
List<String> verificationIds = ctpAffairs.stream().map(CtpAffair::getCostApplyId).collect(Collectors.toList());
List<VtbVerification> vtbVerificationList = vtbVerificationService.listByIds(verificationIds);
List<CtpAffairVo> result = new ArrayList<>();
for (CtpAffair ctpAffair : ctpAffairs) {
CtpAffairVo ctpAffairVo = new CtpAffairVo();
for (VtbVerification verification : vtbVerificationList) {
if(verification.getId().toString().equals(ctpAffair.getCostApplyId())){
ctpAffairVo.setVerification(verification);
break;
}
}
for (SysUser user : userList) {
if(ctpAffair.getMemberId().equals(user.getSyUserId())){
ctpAffairVo.setUserInfo(user.toSysUserVo());
}
}
ctpAffairVo.setAffairInfo(ctpAffair);
result.add(ctpAffairVo);
}
PageVo<CtpAffairVo> costApplyPageVo = PageVo.initNewList(pageVo,result);
return R.ok(costApplyPageVo);
}
return R.byEmptyList();
}
/**
* 提交审批节点
* @return
*/
@PostMapping("/commitAffair")
@SysLog(module = SystemModule.Budget, title = "费用申请", biz = BizType.DELETE)
@PreAuthorize("hasRole('tbs:costApply:commit')")
public R<?> commitAffair(@RequestBody @Valid TbsAffairCommitBo affairCommit){
VtbVerification verification = vtbVerificationService.getById(affairCommit.getCostApplyId());
if(!verification.getVerificationState().equals(VtbVerificationState.State_1_apply.getCode())){
return R.error("费用申请处于未非审批状态!");
}
R<String> result = seeYonService.commonCommit(affairCommit,TbsSeeYonConst.VERIFICATION_FORM);
if(result.getStatus()==200){
// 判断是否含有下个节点
String flag = result.getData();
//审批中(next)、完成(finish)、拒绝(refused)
if("finish".equals(flag)){
VtbVerification vtbVer = new VtbVerification();
vtbVer.setId(verification.getId());
vtbVer.setVerificationState(VtbVerificationState.State_2_actioning.getCode());
vtbVerificationService.updateById(vtbVer);
}else if ("stop".equals(flag)){
VtbVerification vtbVer = new VtbVerification();
vtbVer.setId(verification.getId());
vtbVer.setVerificationState(VtbVerificationState.State_5_stop.getCode());
vtbVerificationService.updateById(vtbVer);
return R.ok();
}else if ("next".equals(flag)){
return R.ok();
}
}else if (result.getStatus()==500){
return result;
}
return R.error("远程调用失败");
}
} }

7
src/main/java/com/qs/serve/modules/vtb/entity/VtbVerification.java

@ -45,9 +45,16 @@ public class VtbVerification implements Serializable {
/** 核销状态 */ /** 核销状态 */
private Integer verificationState; private Integer verificationState;
/** 支付状态:0-未支付;1-已支付 */
private Integer paymentState;
/** 金额 */ /** 金额 */
private BigDecimal amount; private BigDecimal amount;
private String syFormId;
private String syFlowId;
/** 备注 */ /** 备注 */
@Length(max = 255,message = "备注长度不能超过255字") @Length(max = 255,message = "备注长度不能超过255字")
private String remark; private String remark;

3
src/main/java/com/qs/serve/modules/vtb/entity/VtbVerificationSubject.java

@ -65,6 +65,9 @@ public class VtbVerificationSubject implements Serializable {
@NotNull(message = "本次核销额不能为空") @NotNull(message = "本次核销额不能为空")
private BigDecimal usedAmount; private BigDecimal usedAmount;
/** 已支付核销费用 */
private BigDecimal payAmount;
/** 场次 */ /** 场次 */
@NotNull(message = "场次不能为空") @NotNull(message = "场次不能为空")
private Integer countSession; private Integer countSession;

53
src/main/java/com/qs/serve/modules/vtb/service/impl/VtbVerificationServiceImpl.java

@ -3,20 +3,21 @@ package com.qs.serve.modules.vtb.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.qs.serve.common.model.dto.R; import com.qs.serve.common.model.dto.R;
import com.qs.serve.common.util.Assert; import com.qs.serve.common.util.*;
import com.qs.serve.common.util.AuthContextUtils; import com.qs.serve.common.util.model.DateFormatString;
import com.qs.serve.common.util.CollectionUtil;
import com.qs.serve.common.util.CopierUtil;
import com.qs.serve.modules.bms.entity.BmsChannel; import com.qs.serve.modules.bms.entity.BmsChannel;
import com.qs.serve.modules.bms.entity.BmsChannelPoint; import com.qs.serve.modules.bms.entity.BmsChannelPoint;
import com.qs.serve.modules.bms.entity.BmsSubject; import com.qs.serve.modules.bms.entity.BmsSubject;
import com.qs.serve.modules.bms.service.BmsChannelPointService; import com.qs.serve.modules.bms.service.BmsChannelPointService;
import com.qs.serve.modules.bms.service.BmsChannelService; import com.qs.serve.modules.bms.service.BmsChannelService;
import com.qs.serve.modules.bms.service.BmsSubjectService; import com.qs.serve.modules.bms.service.BmsSubjectService;
import com.qs.serve.modules.seeyon.entity.BaseCreateProcessBo;
import com.qs.serve.modules.seeyon.service.SeeYonService;
import com.qs.serve.modules.sys.entity.SysUser; import com.qs.serve.modules.sys.entity.SysUser;
import com.qs.serve.modules.sys.service.SysUserService; import com.qs.serve.modules.sys.service.SysUserService;
import com.qs.serve.modules.tbs.common.TbsActivityState; import com.qs.serve.modules.tbs.common.TbsActivityState;
import com.qs.serve.modules.tbs.common.TbsCostApplyState; import com.qs.serve.modules.tbs.common.TbsCostApplyState;
import com.qs.serve.modules.tbs.common.TbsSeeYonConst;
import com.qs.serve.modules.tbs.entity.*; import com.qs.serve.modules.tbs.entity.*;
import com.qs.serve.modules.tbs.entity.bo.TbsActivityChannelBo; import com.qs.serve.modules.tbs.entity.bo.TbsActivityChannelBo;
import com.qs.serve.modules.tbs.entity.bo.TbsActivityChannelPointBo; import com.qs.serve.modules.tbs.entity.bo.TbsActivityChannelPointBo;
@ -68,6 +69,8 @@ public class VtbVerificationServiceImpl extends ServiceImpl<VtbVerificationMappe
private final VtbVerificationSubjectService verificationSubjectService; private final VtbVerificationSubjectService verificationSubjectService;
private final VtbFundFlowService fundFlowService; private final VtbFundFlowService fundFlowService;
private final SeeYonService seeYonService;
private final SysUserService sysUserService; private final SysUserService sysUserService;
@Override @Override
@ -99,8 +102,8 @@ public class VtbVerificationServiceImpl extends ServiceImpl<VtbVerificationMappe
fundFlow.setActivityId(activity.getId()); fundFlow.setActivityId(activity.getId());
fundFlow.setUsedAmount(releaseAmount); fundFlow.setUsedAmount(releaseAmount);
fundFlowService.save(fundFlow); fundFlowService.save(fundFlow);
//todo 恢复预算 //todo 恢复预算
} }
@Override @Override
@ -140,8 +143,13 @@ public class VtbVerificationServiceImpl extends ServiceImpl<VtbVerificationMappe
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void commit(VtbVerificationBo verificationBo) { public void commit(VtbVerificationBo verificationBo) {
SysUser sysUser = sysUserService.getById(AuthContextUtils.getSysUserId());
sysUser.checkSyAccount();
TbsActivity activity = activityService.getById(verificationBo.getActivityId()); TbsActivity activity = activityService.getById(verificationBo.getActivityId());
TbsCostApply costApply = costApplyService.getById(activity.getCostApplyId()); TbsCostApply costApply = costApplyService.getById(activity.getCostApplyId());
if(!costApply.getChargeState().equals(TbsCostApplyState.State_2_actioning.getCode())){
Assert.throwEx("当前费用状态不支持");
}
validActivity(activity,true); validActivity(activity,true);
VtbVerification verification = new VtbVerification(); VtbVerification verification = new VtbVerification();
verification.setId(verificationBo.getId()); verification.setId(verificationBo.getId());
@ -193,6 +201,10 @@ public class VtbVerificationServiceImpl extends ServiceImpl<VtbVerificationMappe
verification.setAmount(totalAmount); verification.setAmount(totalAmount);
//保存 //保存
this.saveOrUpdate(verification); this.saveOrUpdate(verification);
this.commitSy(sysUser,verification);
if(verification.getSyFormId()==null||verification.getSyFlowId()==null){
Assert.throwEx("远程调用失败");
}
//移除历史提交记录 //移除历史提交记录
if(verificationBo.getId()!=null){ if(verificationBo.getId()!=null){
verificationChannelService.removeByVerificationId(verificationBo.getId()); verificationChannelService.removeByVerificationId(verificationBo.getId());
@ -214,7 +226,36 @@ public class VtbVerificationServiceImpl extends ServiceImpl<VtbVerificationMappe
activityParam.setId(activity.getId()); activityParam.setId(activity.getId());
activityParam.setActivityState(TbsActivityState.STATE_1_Checking); activityParam.setActivityState(TbsActivityState.STATE_1_Checking);
activityService.updateById(activityParam); activityService.updateById(activityParam);
//todo 提交到OA }
/**
* 提交到致远审批流程
* @param sysUser
* @param verification
*/
private void commitSy(SysUser sysUser,VtbVerification verification){
Map<String, Object> data = new HashMap<>(10);
data.put("empId",sysUser.getCode());
data.put("applyTime", DateUtils.format(LocalDateTime.now(), DateFormatString.DATE_TIME));
data.put("verAmount",verification.getAmount());
data.put("verId",verification.getId());
BaseCreateProcessBo createProcess = new BaseCreateProcessBo();
createProcess.setTemplateCode(TbsSeeYonConst.VERIFICATION_FORM);
createProcess.setMemberLoginName(sysUser.getSyAccount());
createProcess.setSubjectTitle(TbsSeeYonConst.PRE_TITLE_VERIFICATION + verification.getRemark());
createProcess.setDataJson(JsonUtil.objectToJson(data));
R<String> flowIdResult = seeYonService.baseCreateProcess(createProcess);
if(flowIdResult.getStatus()!=200){
Assert.throwEx("远程服务调用失败");
}
String flowId = flowIdResult.getData();
String formId = null;
R<String> formIdResult = seeYonService.getCheckFormId(verification.getId());
if(formIdResult.getStatus()==200){
formId = formIdResult.getData();
}
verification.setSyFlowId(flowId);
verification.setSyFormId(formId);
} }

Loading…
Cancel
Save