Browse Source

添加加签;完成部分费用重构

contract
Yen 2 years ago
parent
commit
b7874ee6a4
  1. 4
      src/main/java/com/qs/serve/modules/seeyon/entity/CtpAffairQo.java
  2. 44
      src/main/java/com/qs/serve/modules/seeyon/entity/bo/CtpAddNodeDTO.java
  3. 29
      src/main/java/com/qs/serve/modules/seeyon/entity/bo/CtpAddNodeParam.java
  4. 4
      src/main/java/com/qs/serve/modules/seeyon/service/SeeYonBaseService.java
  5. 136
      src/main/java/com/qs/serve/modules/seeyon/service/SeeYonOperationService.java
  6. 3
      src/main/java/com/qs/serve/modules/seeyon/service/SeeYonRequestService.java
  7. 22
      src/main/java/com/qs/serve/modules/seeyon/service/impl/SeeYonRequestServiceImpl.java
  8. 1
      src/main/java/com/qs/serve/modules/tbs/common/TbsSeeYonConst.java
  9. 51
      src/main/java/com/qs/serve/modules/tbs/controller/TbsCostApplyController.java
  10. 1
      src/main/java/com/qs/serve/modules/tbs/entity/bo/TbsCostTodoBo.java
  11. 2
      src/main/java/com/qs/serve/modules/tbs/entity/vo/CtpAffairVo.java
  12. 11
      src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyCompensateServiceImpl.java
  13. 199
      src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyOperationServiceImpl.java
  14. 2
      src/main/resources/mapper/sys/SysUserMapper.xml

4
src/main/java/com/qs/serve/modules/seeyon/entity/CtpAffairQo.java

@ -39,12 +39,12 @@ public class CtpAffairQo {
String endTime; String endTime;
/** /**
* 费用申请专用 * 标题
*/ */
String chargeTheme; String chargeTheme;
/** /**
* 费用申请专用 * 申请人名称
*/ */
String userName; String userName;
} }

44
src/main/java/com/qs/serve/modules/seeyon/entity/bo/CtpAddNodeDTO.java

@ -0,0 +1,44 @@
package com.qs.serve.modules.seeyon.entity.bo;
import lombok.Data;
import java.util.List;
/**
* @author YenHex
* @since 2023/5/24
*/
@Data
public class CtpAddNodeDTO {
/**
* 添加审批节点的用户ID
*/
List<String> userIds;
/**
* 是否回退到我
*/
Integer backToMe;
/**
* 用户登陆账号
*/
String userCode;
/**
* 用户致远登陆账号
*/
String userSyId;
/**
* 模板编码
*/
String templateCode;
/**
* 目标id
*/
String targetId;
}

29
src/main/java/com/qs/serve/modules/seeyon/entity/bo/CtpAddNodeParam.java

@ -0,0 +1,29 @@
package com.qs.serve.modules.seeyon.entity.bo;
import lombok.Data;
import java.util.List;
/**
* @author YenHex
* @since 2023/5/24
*/
@Data
public class CtpAddNodeParam {
/**
* 添加审批节点的用户ID
*/
List<String> userIds;
/**
* 是否回退到我
*/
Integer backToMe;
/**
* 目标id
*/
String targetId;
}

4
src/main/java/com/qs/serve/modules/seeyon/service/SeeYonBaseService.java

@ -1,5 +1,7 @@
package com.qs.serve.modules.seeyon.service; package com.qs.serve.modules.seeyon.service;
import com.qs.serve.modules.sys.mapper.SysUserMapper;
/** /**
* @author YenHex * @author YenHex
* @since 2023/5/23 * @since 2023/5/23
@ -10,6 +12,8 @@ public interface SeeYonBaseService {
SeeYonRequestService getRequestService(); SeeYonRequestService getRequestService();
SysUserMapper getUserMapper();
default boolean testConnection(){ default boolean testConnection(){
return getRequestService().testConnection(); return getRequestService().testConnection();
} }

136
src/main/java/com/qs/serve/modules/seeyon/service/SeeYonOperationService.java

@ -5,8 +5,17 @@ import com.qs.serve.common.model.consts.BudgetLogOptFlag;
import com.qs.serve.common.model.consts.BudgetLogRollbackFlag; import com.qs.serve.common.model.consts.BudgetLogRollbackFlag;
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.common.util.Assert;
import com.qs.serve.common.util.AuthContextUtils;
import com.qs.serve.common.util.StringUtils;
import com.qs.serve.modules.seeyon.entity.CtpAffair;
import com.qs.serve.modules.seeyon.entity.CtpAffairQo; import com.qs.serve.modules.seeyon.entity.CtpAffairQo;
import com.qs.serve.modules.seeyon.entity.bo.CtpAddNodeDTO;
import com.qs.serve.modules.seeyon.entity.bo.CtpAddNodeParam;
import com.qs.serve.modules.seeyon.enums.SyAffairState; import com.qs.serve.modules.seeyon.enums.SyAffairState;
import com.qs.serve.modules.sys.entity.SysUser;
import com.qs.serve.modules.sys.mapper.SysUserMapper;
import com.qs.serve.modules.sys.service.SysUserService;
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.common.TbsSeeYonConst;
import com.qs.serve.modules.tbs.entity.TbsActivity; import com.qs.serve.modules.tbs.entity.TbsActivity;
@ -18,6 +27,7 @@ import org.springframework.web.bind.annotation.RequestBody;
import javax.validation.Valid; import javax.validation.Valid;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@ -27,47 +37,141 @@ import java.util.stream.Collectors;
*/ */
public interface SeeYonOperationService extends SeeYonBaseService{ public interface SeeYonOperationService extends SeeYonBaseService{
SysUserService getSysUserService();
/** /**
* 审批中 * 审批中
* @param targetId * @param param
* @return * @return
*/ */
Object next(String targetId); Object doNext(TbsAffairCommitBo param);
/** /**
* 审批退回 * 审批退回
* @param targetId * @param param
* @return * @return
*/ */
Object backed(String targetId); Object doBacked(TbsAffairCommitBo param);
/** /**
* 审批完成 * 审批完成
* @param targetId * @param param
* @return * @return
*/ */
Object finished(String targetId); Object doFinished(TbsAffairCommitBo param);
/** /**
* 审批拒绝 * 审批拒绝
* @param param
* @return
*/
Object doRefuse(TbsAffairCommitBo param);
/**
* 加签
* @param param
* @return
*/
default R<String> addNode(CtpAddNodeParam param){
getRequestService().testConnection();
CtpAddNodeDTO addNodeDTO = new CtpAddNodeDTO();
addNodeDTO.setUserIds(param.getUserIds());
addNodeDTO.setBackToMe(param.getBackToMe());
addNodeDTO.setTargetId(param.getTargetId());
SysUser sysUser = getUserMapper().selectById(AuthContextUtils.getSysUserId());
addNodeDTO.setUserCode(sysUser.getAccount());
addNodeDTO.setUserSyId(sysUser.getSyUserId());
addNodeDTO.setTemplateCode(getTemplateCode());
return getRequestService().addNode(addNodeDTO);
}
/**
* 查看详情也审批前置校验
* 检查formId是否存在
* @param targetId * @param targetId
* @return * @return
*/ */
Object refuse(String targetId); boolean checkSyFormIdIsNotNull(String targetId);
/** /**
* 审批列表(用于详情页) * 审批列表(用于详情页)
* @param targetId * @param targetId
* @return * @return
*/ */
R<List<CtpAffairVo>> pageAffair(Long targetId); default R<List<CtpAffairVo>> pageAffair(String targetId){
boolean existFormId = checkSyFormIdIsNotNull(targetId);
if (!existFormId){
return R.ok(new ArrayList<>());
}
String templateCode = getTemplateCode();
R<List<CtpAffair>> syResult = getRequestService().commonListAffairs(targetId,null,templateCode);
List<CtpAffair> ctpAffairs = syResult.getData();
if(ctpAffairs.size()>0){
List<String> oaUserIds = ctpAffairs.stream().map(CtpAffair::getMemberId).collect(Collectors.toList());
List<SysUser> userList = getSysUserService().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(new ArrayList<>());
}
/** /**
* 个人审批列表(翻页) * 个人审批列表(翻页)
* @param param * @param param
* @return * @return
*/ */
R<PageVo<CtpAffairVo>> pageMemberAffair(CtpAffairQo param); default R<PageVo<CtpAffairVo>> pageMemberAffair(CtpAffairQo param){
param.setTitle(param.getChargeTheme());
if(param.getUserName()!=null){
param.setApplyUserName(param.getUserName());
}
SysUser sysUser = getUserMapper().selectById(AuthContextUtils.getSysUserId());
if(!StringUtils.hasText(sysUser.getSyUserId())||!StringUtils.hasText(sysUser.getSyAccount())){
Assert.throwEx("当前账号未绑定致远用户信息");
}
param.setMemberId(sysUser.getSyUserId());
param.setTemplateCode(TbsSeeYonConst.CostApplyConf.Code());
R<PageVo<CtpAffair>> syResult = getRequestService().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 = getSysUserService().listByOaMemberIds(oaUserIds);
List<CtpAffairVo> result = new ArrayList<>();
for (CtpAffair ctpAffair : ctpAffairs) {
CtpAffairVo ctpAffairVo = new CtpAffairVo();
for (SysUser user : userList) {
if(ctpAffair.getMemberId().equals(user.getSyUserId())){
ctpAffairVo.setUserInfo(user.toSysUserVo());
}
}
ctpAffairVo.setAffairInfo(ctpAffair);
result.add(ctpAffairVo);
}
//二次封装vo,可重写
this.pageMemberAffair4packageVo(result);
PageVo<CtpAffairVo> costApplyPageVo = PageVo.initNewList(pageVo,result);
return R.ok(costApplyPageVo);
}
return R.byEmptyList();
}
/**
* 个人结果二次封装VO
* @param result
*/
default void pageMemberAffair4packageVo(List<CtpAffairVo> result){}
/** /**
* 审批提交 * 审批提交
@ -75,8 +179,8 @@ public interface SeeYonOperationService extends SeeYonBaseService{
* @return * @return
*/ */
default R<?> commitAffair(TbsAffairCommitBo affairCommit){ default R<?> commitAffair(TbsAffairCommitBo affairCommit){
getRequestService().testConnection();
String syFormId = this.commitGetSyFormId(affairCommit); String syFormId = this.commitGetSyFormId(affairCommit);
String targetId = getTargetIdFromCommit(affairCommit);
R<String> result = getRequestService().commonCommit(affairCommit, getTemplateCode(),syFormId); R<String> result = getRequestService().commonCommit(affairCommit, getTemplateCode(),syFormId);
boolean isBackCommit = affairCommit.getState()==2; boolean isBackCommit = affairCommit.getState()==2;
if(result.getStatus()==200){ if(result.getStatus()==200){
@ -84,18 +188,18 @@ public interface SeeYonOperationService extends SeeYonBaseService{
String flag = result.getData(); String flag = result.getData();
//审批中(next)、完成(finish)、拒绝(refused) //审批中(next)、完成(finish)、拒绝(refused)
if("finish".equals(flag)){ if("finish".equals(flag)){
this.finished(targetId); this.doFinished(affairCommit);
return R.ok(); return R.ok();
}else if ("stop".equals(flag)){ }else if ("stop".equals(flag)){
if(isBackCommit){ if(isBackCommit){
this.backed(targetId); this.doBacked(affairCommit);
return R.ok(); return R.ok();
}else { }else {
this.refuse(targetId); this.doRefuse(affairCommit);
return R.ok(); return R.ok();
} }
}else if ("next".equals(flag)){ }else if ("next".equals(flag)){
this.next(targetId); this.doNext(affairCommit);
return R.ok(); return R.ok();
} }
}else if (result.getStatus()==500){ }else if (result.getStatus()==500){
@ -105,11 +209,11 @@ public interface SeeYonOperationService extends SeeYonBaseService{
} }
/** /**
* 获取提交的目标ID * 获取提交的目标ID(因前期未规范id需要实现该接口进行补偿)
* @param affairCommit * @param affairCommit
* @return * @return
*/ */
String getTargetIdFromCommit(TbsAffairCommitBo affairCommit); String getTargetId(TbsAffairCommitBo affairCommit);
/** /**
* 检查提交审批是否允许,并返回syFormId * 检查提交审批是否允许,并返回syFormId

3
src/main/java/com/qs/serve/modules/seeyon/service/SeeYonRequestService.java

@ -3,6 +3,7 @@ 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.seeyon.entity.bo.CtpAddNodeDTO;
import com.qs.serve.modules.seeyon.enums.SyAffairState; import com.qs.serve.modules.seeyon.enums.SyAffairState;
import com.qs.serve.modules.tbs.entity.bo.TbsAffairCommitBo; import com.qs.serve.modules.tbs.entity.bo.TbsAffairCommitBo;
import com.qs.serve.modules.tbs.entity.vo.CtpAffairVo; import com.qs.serve.modules.tbs.entity.vo.CtpAffairVo;
@ -87,4 +88,6 @@ public interface SeeYonRequestService {
*/ */
R<List<CtpAffair>> listFormAffair(CtpAffairQo ctpAffairQo); R<List<CtpAffair>> listFormAffair(CtpAffairQo ctpAffairQo);
R<String> addNode(CtpAddNodeDTO addNodeDTO);
} }

22
src/main/java/com/qs/serve/modules/seeyon/service/impl/SeeYonRequestServiceImpl.java

@ -4,6 +4,7 @@ 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.util.*; import com.qs.serve.common.util.*;
import com.qs.serve.modules.seeyon.entity.*; import com.qs.serve.modules.seeyon.entity.*;
import com.qs.serve.modules.seeyon.entity.bo.CtpAddNodeDTO;
import com.qs.serve.modules.seeyon.enums.SyAffairState; import com.qs.serve.modules.seeyon.enums.SyAffairState;
import com.qs.serve.modules.seeyon.service.SeeYonRequestService; import com.qs.serve.modules.seeyon.service.SeeYonRequestService;
import com.qs.serve.modules.sys.entity.SysUser; import com.qs.serve.modules.sys.entity.SysUser;
@ -75,19 +76,19 @@ public class SeeYonRequestServiceImpl implements SeeYonRequestService {
@Override @Override
public R<String> baseCreateProcess(BaseCreateProcessBo createProcessBo) { public R<String> baseCreateProcess(BaseCreateProcessBo createProcessBo) {
String title = "创建流程"; String title = "创建流程";
return seeYonRequestBaseService.postBase(TbsSeeYonConst.API_PROCESS_CREATE,createProcessBo,title); return seeYonRequestBaseService.postBase(TbsSeeYonConst.API_PROCESS_CREATE,createProcessBo,title);
} }
@Override @Override
public R<String> createCallbackStatus(BaseCreateCallbackBo createCallbackBo) { public R<String> createCallbackStatus(BaseCreateCallbackBo createCallbackBo) {
String title = "创建流程后回调"; String title = "创建流程后回调";
return seeYonRequestBaseService.postBase(TbsSeeYonConst.API_PROCESS_CREATE_CALLBACK,createCallbackBo,title); return seeYonRequestBaseService.postBase(TbsSeeYonConst.API_PROCESS_CREATE_CALLBACK,createCallbackBo,title);
} }
@Override @Override
public R<String> getFormId(String templateCode, Long targetId) { public R<String> getFormId(String templateCode, Long targetId) {
String title = "获取表单ID"; String title = "获取表单ID";
String url2 = TbsSeeYonConst.API_GET_FORM_ID+"?templateCode="+templateCode+"&targetId="+targetId; String url2 = TbsSeeYonConst.API_GET_FORM_ID+"?templateCode="+templateCode+"&targetId="+targetId;
return seeYonRequestBaseService.getBase(url2,title); return seeYonRequestBaseService.getBase(url2,title);
} }
@ -95,19 +96,19 @@ public class SeeYonRequestServiceImpl implements SeeYonRequestService {
@Override @Override
public R<String> affairCommit(CtpAffairCommit affairCommit) { public R<String> affairCommit(CtpAffairCommit affairCommit) {
String title = "审批流程"; String title = "审批流程";
return seeYonRequestBaseService.postBase(TbsSeeYonConst.API_PROCESS_COMMIT,affairCommit,title); return seeYonRequestBaseService.postBase(TbsSeeYonConst.API_PROCESS_COMMIT,affairCommit,title);
} }
@Override @Override
public R<String> affairCancel(CtpAffairCancel affairCancel) { public R<String> affairCancel(CtpAffairCancel affairCancel) {
String title = "取消流程"; String title = "取消流程";
return seeYonRequestBaseService.postBase(TbsSeeYonConst.API_PROCESS_CANCEL,affairCancel,title); return seeYonRequestBaseService.postBase(TbsSeeYonConst.API_PROCESS_CANCEL,affairCancel,title);
} }
@Override @Override
public R<PageVo<CtpAffair>> pageMemberAffair(CtpAffairQo ctpAffairQo) { public R<PageVo<CtpAffair>> pageMemberAffair(CtpAffairQo ctpAffairQo) {
String title = "用户审批流程"; String title = "用户审批流程";
R<String> result = seeYonRequestBaseService.postBase(TbsSeeYonConst.API_PAGE_AFFAIR,ctpAffairQo,title); R<String> result = seeYonRequestBaseService.postBase(TbsSeeYonConst.API_PAGE_AFFAIR,ctpAffairQo,title);
if(result.getStatus()==200){ if(result.getStatus()==200){
PageVo<?> pageVo = JsonUtil.jsonToPojo(result.getData(),PageVo.class); PageVo<?> pageVo = JsonUtil.jsonToPojo(result.getData(),PageVo.class);
@ -127,7 +128,7 @@ public class SeeYonRequestServiceImpl implements SeeYonRequestService {
@Override @Override
public SyAffairState checkAffairState(String targetId,String templateCode) { public SyAffairState checkAffairState(String targetId,String templateCode) {
String title = "校验OA节点状态"; String title = "校验OA节点状态";
CtpAffairQo param = new CtpAffairQo(); CtpAffairQo param = new CtpAffairQo();
param.setTargetId(targetId); param.setTargetId(targetId);
param.setTemplateCode(templateCode); param.setTemplateCode(templateCode);
@ -146,7 +147,7 @@ public class SeeYonRequestServiceImpl implements SeeYonRequestService {
@Override @Override
public R<List<CtpAffair>> listFormAffair(CtpAffairQo ctpAffairQo) { public R<List<CtpAffair>> listFormAffair(CtpAffairQo ctpAffairQo) {
String title = "表单审批节点"; String title = "表单审批节点";
R<String> result = seeYonRequestBaseService.postBase(TbsSeeYonConst.API_LIST_AFFAIR,ctpAffairQo,title); R<String> result = seeYonRequestBaseService.postBase(TbsSeeYonConst.API_LIST_AFFAIR,ctpAffairQo,title);
if(result.getStatus()==200){ if(result.getStatus()==200){
List<?> list = JsonUtil.jsonToPojo(result.getData(),List.class); List<?> list = JsonUtil.jsonToPojo(result.getData(),List.class);
@ -164,5 +165,10 @@ public class SeeYonRequestServiceImpl implements SeeYonRequestService {
} }
@Override
public R<String> addNode(CtpAddNodeDTO addNodeDTO) {
String title = "【校验OA节点状态】";
return seeYonRequestBaseService.postBase(TbsSeeYonConst.API_ADD_NODE,addNodeDTO,title);
}
} }

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

@ -43,6 +43,7 @@ public interface TbsSeeYonConst {
String API_PAGE_AFFAIR = "/process/pageMemberAffair"; String API_PAGE_AFFAIR = "/process/pageMemberAffair";
String API_CHECK_AFFAIR = "/process/checkAffair"; String API_CHECK_AFFAIR = "/process/checkAffair";
String API_LIST_AFFAIR = "/process/listFormAffair"; String API_LIST_AFFAIR = "/process/listFormAffair";
String API_ADD_NODE = "/process/addNode";
String XLT_SAVE_CHECK = "/xlt/saveCheck"; String XLT_SAVE_CHECK = "/xlt/saveCheck";
String XLT_SAVE_PAYMENT = "/xlt/savePayment"; String XLT_SAVE_PAYMENT = "/xlt/savePayment";

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

@ -14,7 +14,7 @@ import com.qs.serve.modules.bms.entity.BmsSupplier;
import com.qs.serve.modules.bms.service.BmsSupplierService; import com.qs.serve.modules.bms.service.BmsSupplierService;
import com.qs.serve.modules.seeyon.entity.CtpAffair; import com.qs.serve.modules.seeyon.entity.CtpAffair;
import com.qs.serve.modules.seeyon.entity.CtpAffairQo; import com.qs.serve.modules.seeyon.entity.CtpAffairQo;
import com.qs.serve.modules.seeyon.enums.SyAffairState; import com.qs.serve.modules.seeyon.entity.bo.CtpAddNodeParam;
import com.qs.serve.modules.seeyon.service.SeeYonRequestService; import com.qs.serve.modules.seeyon.service.SeeYonRequestService;
import com.qs.serve.modules.sys.entity.SysUser; import com.qs.serve.modules.sys.entity.SysUser;
import com.qs.serve.modules.sys.service.SysPostUserService; import com.qs.serve.modules.sys.service.SysPostUserService;
@ -32,6 +32,8 @@ import com.qs.serve.modules.tbs.entity.vo.CtpAffairVo;
import com.qs.serve.modules.tbs.entity.vo.TbsBudgetTableVo; import com.qs.serve.modules.tbs.entity.vo.TbsBudgetTableVo;
import com.qs.serve.modules.tbs.entity.vo.TbsCostApplyVo; import com.qs.serve.modules.tbs.entity.vo.TbsCostApplyVo;
import com.qs.serve.modules.tbs.service.*; import com.qs.serve.modules.tbs.service.*;
import com.qs.serve.modules.tbs.service.impl.TbsCostApplyCompensateServiceImpl;
import com.qs.serve.modules.tbs.service.impl.TbsCostApplyOperationServiceImpl;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.security.access.prepost.PreAuthorize;
@ -70,7 +72,8 @@ public class TbsCostApplyController {
private SeeYonRequestService seeYonService; private SeeYonRequestService seeYonService;
private TbsBudgetApplicationService budgetApplicationService; private TbsBudgetApplicationService budgetApplicationService;
private SysPostUserService postUserService; private SysPostUserService postUserService;
private TbsCostApplyCompensateService tbsCostApplyCompensateService; private TbsCostApplyCompensateServiceImpl tbsCostApplyCompensateService;
private TbsCostApplyOperationServiceImpl tbsCostApplyOperationServiceImpl;
/** /**
* 预览 * 预览
@ -241,6 +244,10 @@ public class TbsCostApplyController {
TbsCostApply entity = CopierUtil.copy(param,new TbsCostApply()); TbsCostApply entity = CopierUtil.copy(param,new TbsCostApply());
//entity.setId(IdUtil.getSnowFlakeId()); //entity.setId(IdUtil.getSnowFlakeId());
BmsSupplier supplier = bmsSupplierService.getById(entity.getSupplierId()); BmsSupplier supplier = bmsSupplierService.getById(entity.getSupplierId());
boolean contract = entity.getContractFlag()!=null&&entity.getContractFlag().equals(1);
if(contract&&!supplier.getSupplierFlag().equals(1)){
return R.error("当前用户非供应商");
}
entity.setCode("CA"+IdUtil.timeStampId()); entity.setCode("CA"+IdUtil.timeStampId());
entity.setSupplierCode(supplier.getCode()); entity.setSupplierCode(supplier.getCode());
entity.setSupplierName(supplier.getName()); entity.setSupplierName(supplier.getName());
@ -337,7 +344,17 @@ public class TbsCostApplyController {
* @return * @return
*/ */
@GetMapping("/ListAffairs") @GetMapping("/ListAffairs")
public R<List<CtpAffairVo>> pageMemberAffair(Long costApplyId){ public R<List<CtpAffairVo>> pageAffair(String costApplyId){
return tbsCostApplyOperationServiceImpl.pageAffair(costApplyId);
}
/**
* 审批列表(用于详情页)
* @param costApplyId
* @return
*/
//@GetMapping("/ListAffairs")
public R<List<CtpAffairVo>> pageMemberAffair_old(Long costApplyId){
TbsCostApply costApplyParam = tbsCostApplyService.getById(costApplyId); TbsCostApply costApplyParam = tbsCostApplyService.getById(costApplyId);
if(costApplyParam.getSyFormId()==null){ if(costApplyParam.getSyFormId()==null){
return R.ok(); return R.ok();
@ -369,8 +386,8 @@ public class TbsCostApplyController {
* @param param * @param param
* @return * @return
*/ */
@GetMapping("/pageMemberAffair") //@GetMapping("/pageMemberAffair")
public R<PageVo<CtpAffairVo>> pageMemberAffair(CtpAffairQo param){ public R<PageVo<CtpAffairVo>> pageMemberAffair_old(CtpAffairQo param){
param.setTitle(param.getChargeTheme()); param.setTitle(param.getChargeTheme());
param.setApplyUserName(param.getUserName()); param.setApplyUserName(param.getUserName());
SysUser sysUser = sysUserService.getById(AuthContextUtils.getSysUserId()); SysUser sysUser = sysUserService.getById(AuthContextUtils.getSysUserId());
@ -410,6 +427,16 @@ public class TbsCostApplyController {
return R.byEmptyList(); return R.byEmptyList();
} }
/**
* 审批列表(翻页)
* @param param
* @return
*/
@GetMapping("/pageMemberAffair")
public R<PageVo<CtpAffairVo>> pageMemberAffair(CtpAffairQo param){
return tbsCostApplyOperationServiceImpl.pageMemberAffair(param);
}
/** /**
* 提交审批节点 * 提交审批节点
* @return * @return
@ -502,10 +529,20 @@ public class TbsCostApplyController {
@PostMapping("/compensate") @PostMapping("/compensate")
@SysLog(module = SystemModule.Budget, title = "费用申请", biz = BizType.DELETE) @SysLog(module = SystemModule.Budget, title = "费用申请", biz = BizType.DELETE)
public R<?> compensateOAResult(@RequestBody CompensateDTO param){ public R<?> compensateOAResult(@RequestBody CompensateDTO param){
seeYonService.testConnection(); tbsCostApplyCompensateService.runCompensate(param.getId());
return R.ok(); return R.ok();
} }
/**
* 加签
* @param param
* @return
*/
@PostMapping("/addNode")
@SysLog(module = SystemModule.Budget, title = "费用申请", biz = BizType.DELETE)
public R<String> addNode(@RequestBody CtpAddNodeParam param){
return tbsCostApplyOperationServiceImpl.addNode(param);
}
} }

1
src/main/java/com/qs/serve/modules/tbs/entity/bo/TbsCostTodoBo.java

@ -35,7 +35,6 @@ public class TbsCostTodoBo implements Serializable {
private Long costApplyId; private Long costApplyId;
/** 涉及品牌 */ /** 涉及品牌 */
@NotBlank(message = "涉及品牌不能为空")
@Length(max = 255,message = "涉及品牌长度不能超过255字") @Length(max = 255,message = "涉及品牌长度不能超过255字")
private String brands; private String brands;

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

@ -17,7 +17,7 @@ public class CtpAffairVo {
private CtpAffair affairInfo; private CtpAffair affairInfo;
/** 费用申请信息 */ /** 费用申请信息 */
private TbsCostApply costApply; private Object costApply;
/** 核销信息 */ /** 核销信息 */
private Object policyInfo; private Object policyInfo;

11
src/main/java/com/qs/serve/modules/tbs/service/TbsCostApplyCompensateService.java → src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyCompensateServiceImpl.java

@ -1,10 +1,11 @@
package com.qs.serve.modules.tbs.service; package com.qs.serve.modules.tbs.service.impl;
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.Assert;
import com.qs.serve.modules.seeyon.enums.SyAffairState; import com.qs.serve.modules.seeyon.enums.SyAffairState;
import com.qs.serve.modules.seeyon.service.SeeYonCompensateService; import com.qs.serve.modules.seeyon.service.SeeYonCompensateService;
import com.qs.serve.modules.seeyon.service.SeeYonRequestService; import com.qs.serve.modules.seeyon.service.SeeYonRequestService;
import com.qs.serve.modules.sys.mapper.SysUserMapper;
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.common.TbsSeeYonConst;
import com.qs.serve.modules.tbs.entity.TbsCostApply; import com.qs.serve.modules.tbs.entity.TbsCostApply;
@ -21,10 +22,16 @@ import org.springframework.stereotype.Service;
@Slf4j @Slf4j
@Service @Service
@AllArgsConstructor @AllArgsConstructor
public class TbsCostApplyCompensateService implements SeeYonCompensateService { public class TbsCostApplyCompensateServiceImpl implements SeeYonCompensateService {
private final SeeYonRequestService requestService; private final SeeYonRequestService requestService;
private final TbsCostApplyMapper costApplyMapper; private final TbsCostApplyMapper costApplyMapper;
private final SysUserMapper userMapper;
@Override
public SysUserMapper getUserMapper() {
return userMapper;
}
@Override @Override
public String getTemplateCode() { public String getTemplateCode() {

199
src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyOperationServiceImpl.java

@ -0,0 +1,199 @@
package com.qs.serve.modules.tbs.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.qs.serve.common.model.consts.BudgetLogOptFlag;
import com.qs.serve.common.model.consts.BudgetLogRollbackFlag;
import com.qs.serve.common.model.dto.PageVo;
import com.qs.serve.common.model.dto.R;
import com.qs.serve.common.util.Assert;
import com.qs.serve.modules.seeyon.entity.CtpAffair;
import com.qs.serve.modules.seeyon.entity.CtpAffairQo;
import com.qs.serve.modules.seeyon.entity.bo.CtpAddNodeParam;
import com.qs.serve.modules.seeyon.service.SeeYonOperationService;
import com.qs.serve.modules.seeyon.service.SeeYonRequestService;
import com.qs.serve.modules.sys.mapper.SysUserMapper;
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.entity.TbsActivity;
import com.qs.serve.modules.tbs.entity.TbsBudgetLog;
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.tbs.mapper.TbsActivityMapper;
import com.qs.serve.modules.tbs.mapper.TbsCostApplyMapper;
import com.qs.serve.modules.tbs.service.TbsActivityService;
import com.qs.serve.modules.tbs.service.TbsBudgetLogService;
import com.qs.serve.modules.tbs.service.TbsCostApplyService;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import java.time.LocalDateTime;
import java.util.List;
import java.util.stream.Collectors;
/**
* @author YenHex
* @since 2023/5/24
*/
@Slf4j
@Service
@AllArgsConstructor
public class TbsCostApplyOperationServiceImpl implements SeeYonOperationService {
private final TbsBudgetLogService tbsBudgetLogService;
private final SeeYonRequestService requestService;
private final SysUserService sysUserService;
private final TbsCostApplyService costApplyService;
private final TbsActivityMapper tbsActivityMapper;
private final SysUserMapper userMapper;
@Override
public SysUserService getSysUserService() {
return sysUserService;
}
@Override
public boolean checkSyFormIdIsNotNull(String targetId) {
TbsCostApply costApplyParam = costApplyService.getById(targetId);
if(costApplyParam!=null&&costApplyParam.getSyFormId()!=null){
return true;
}
return false;
}
@Override
public String getTemplateCode() {
return TbsSeeYonConst.CostApplyConf.Code();
}
@Override
public SeeYonRequestService getRequestService() {
return requestService;
}
@Override
public SysUserMapper getUserMapper() {
return userMapper;
}
@Override
public boolean testConnection() {
return SeeYonOperationService.super.testConnection();
}
@Override
public Object doNext(TbsAffairCommitBo param) {
return null;
}
@Override
public Object doBacked(TbsAffairCommitBo param) {
Long costApplyId = Long.parseLong(this.getTargetId(param));
TbsCostApply apply = new TbsCostApply();
apply.setId(costApplyId);
apply.setChargeState(TbsCostApplyState.State_4_refused.getCode());
costApplyService.updateById(apply);
LambdaQueryWrapper<TbsBudgetLog> logLqw = new LambdaQueryWrapper<>();
logLqw.select(TbsBudgetLog::getId);
logLqw.eq(TbsBudgetLog::getCostApplyId,costApplyId);
logLqw.eq(TbsBudgetLog::getRollbackFlag, BudgetLogRollbackFlag.State_0);
List<TbsBudgetLog> budgetLogList = tbsBudgetLogService.list(logLqw);
budgetLogList.forEach(a->a.setRollbackFlag(BudgetLogRollbackFlag.State_1));
tbsBudgetLogService.updateBatchById(budgetLogList);
return null;
}
@Override
public Object doFinished(TbsAffairCommitBo param) {
Long targetId = Long.parseLong(this.getTargetId(param));
TbsCostApply apply = new TbsCostApply();
apply.setId(targetId);
apply.setChargeState(TbsCostApplyState.State_2_actioning.getCode());
costApplyService.updateById(apply);
//更新活动通过时间
TbsActivity tbsActivity = new TbsActivity();
tbsActivity.setCostPassTime(LocalDateTime.now());
tbsActivity.setCostPassFlag(1);
LambdaQueryWrapper<TbsActivity> actLqw = new LambdaQueryWrapper<>();
actLqw.eq(TbsActivity::getCostApplyId,targetId);
tbsActivityMapper.update(tbsActivity,actLqw);
return null;
}
@Override
public Object doRefuse(TbsAffairCommitBo param) {
Long costApplyId = Long.parseLong(this.getTargetId(param));
TbsCostApply apply = new TbsCostApply();
apply.setId(costApplyId);
apply.setChargeState(TbsCostApplyState.State_5_stop.getCode());
costApplyService.updateById(apply);
costApplyService.releaseCost(costApplyId, 1);
//移除日志
LambdaQueryWrapper<TbsBudgetLog> logLqw = new LambdaQueryWrapper<>();
logLqw.eq(TbsBudgetLog::getCostApplyId,costApplyId);
List<TbsBudgetLog> oldLogList = tbsBudgetLogService.list(logLqw);
List<TbsBudgetLog> oldLogList4Upd = oldLogList.stream().map(a->{
TbsBudgetLog budgetLog = new TbsBudgetLog();
budgetLog.setId(a.getId());
budgetLog.setRollbackFlag(BudgetLogRollbackFlag.State_3);
return budgetLog;
}).collect(Collectors.toList());
tbsBudgetLogService.updateBatchById(oldLogList4Upd);
for (TbsBudgetLog budgetLog : oldLogList) {
budgetLog.setCreateBy(null);
budgetLog.setCreateTime(null);
budgetLog.setUpdateBy(null);
budgetLog.setUpdateTime(null);
budgetLog.setId(null);
budgetLog.setAmount(budgetLog.getAmount().negate());
budgetLog.setOptType(BudgetLogOptFlag.State_5);
}
tbsBudgetLogService.saveBatch(oldLogList);
return null;
}
@Override
public void pageMemberAffair4packageVo(List<CtpAffairVo> result) {
List<String> costApplyIds = result.stream()
.filter(a->a.getAffairInfo()!=null)
.map(b->b.getAffairInfo().getCostApplyId())
.collect(Collectors.toList());
List<TbsCostApply> costApplyList = costApplyService.listByIds(costApplyIds);
for (CtpAffairVo affairVo : result) {
CtpAffair ctpAffair = affairVo.getAffairInfo();
if(ctpAffair!=null){
for (TbsCostApply costApply : costApplyList) {
if(costApply.getId().toString().equals(ctpAffair.getCostApplyId())){
affairVo.setCostApply(costApply);
break;
}
}
}
}
}
@Override
public R<?> commitAffair(TbsAffairCommitBo affairCommit) {
return SeeYonOperationService.super.commitAffair(affairCommit);
}
@Override
public String getTargetId(TbsAffairCommitBo affairCommit) {
return affairCommit.getCostApplyId().toString();
}
@Override
public String commitGetSyFormId(TbsAffairCommitBo affairCommit) {
TbsCostApply costApply = costApplyService.getById(affairCommit.getCostApplyId());
if(!costApply.getChargeState().equals(TbsCostApplyState.State_1_apply.getCode())){
Assert.throwEx("费用申请处于未非审批状态");
}
return costApply.getSyFormId();
}
}

2
src/main/resources/mapper/sys/SysUserMapper.xml

@ -63,7 +63,7 @@
<where> <where>
and sys_user.del_flag = '0' and sys_user.del_flag = '0'
<if test="query.id != null and query.id != ''"> and sys_user.id = #{query.id}</if> <if test="query.id != null and query.id != ''"> and sys_user.id = #{query.id}</if>
<if test="query.mobile != null and query.mobile != ''"> and sys_user.mobile = #{query.mobile}</if> <if test="query.mobile != null and query.mobile != ''"> and sys_user.mobile like concat('%',#{query.mobile},'%')</if>
<if test="query.account != null and query.account != ''"> and sys_user.account = #{query.account}</if> <if test="query.account != null and query.account != ''"> and sys_user.account = #{query.account}</if>
<if test="query.name != null and query.name != ''"> and sys_user.name like concat('%',#{query.name},'%') </if> <if test="query.name != null and query.name != ''"> and sys_user.name like concat('%',#{query.name},'%') </if>
<if test="query.code != null and query.code != ''"> and sys_user.code like concat('%',#{query.code},'%') </if> <if test="query.code != null and query.code != ''"> and sys_user.code like concat('%',#{query.code},'%') </if>

Loading…
Cancel
Save