From b7874ee6a48fa0ea6c83886fce16dde0a9de5f3e Mon Sep 17 00:00:00 2001 From: Yen Date: Wed, 24 May 2023 16:34:17 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=8A=A0=E7=AD=BE;=E5=AE=8C?= =?UTF-8?q?=E6=88=90=E9=83=A8=E5=88=86=E8=B4=B9=E7=94=A8=E9=87=8D=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../modules/seeyon/entity/CtpAffairQo.java | 4 +- .../seeyon/entity/bo/CtpAddNodeDTO.java | 44 ++++ .../seeyon/entity/bo/CtpAddNodeParam.java | 29 +++ .../seeyon/service/SeeYonBaseService.java | 4 + .../service/SeeYonOperationService.java | 136 ++++++++++-- .../seeyon/service/SeeYonRequestService.java | 3 + .../impl/SeeYonRequestServiceImpl.java | 22 +- .../modules/tbs/common/TbsSeeYonConst.java | 1 + .../controller/TbsCostApplyController.java | 51 ++++- .../modules/tbs/entity/bo/TbsCostTodoBo.java | 1 - .../modules/tbs/entity/vo/CtpAffairVo.java | 2 +- .../TbsCostApplyCompensateServiceImpl.java} | 11 +- .../TbsCostApplyOperationServiceImpl.java | 199 ++++++++++++++++++ .../resources/mapper/sys/SysUserMapper.xml | 2 +- 14 files changed, 471 insertions(+), 38 deletions(-) create mode 100644 src/main/java/com/qs/serve/modules/seeyon/entity/bo/CtpAddNodeDTO.java create mode 100644 src/main/java/com/qs/serve/modules/seeyon/entity/bo/CtpAddNodeParam.java rename src/main/java/com/qs/serve/modules/tbs/service/{TbsCostApplyCompensateService.java => impl/TbsCostApplyCompensateServiceImpl.java} (86%) create mode 100644 src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyOperationServiceImpl.java diff --git a/src/main/java/com/qs/serve/modules/seeyon/entity/CtpAffairQo.java b/src/main/java/com/qs/serve/modules/seeyon/entity/CtpAffairQo.java index 7ed59ff8..e6f3efba 100644 --- a/src/main/java/com/qs/serve/modules/seeyon/entity/CtpAffairQo.java +++ b/src/main/java/com/qs/serve/modules/seeyon/entity/CtpAffairQo.java @@ -39,12 +39,12 @@ public class CtpAffairQo { String endTime; /** - * 费用申请专用 + * 标题 */ String chargeTheme; /** - * 费用申请专用 + * 申请人名称 */ String userName; } diff --git a/src/main/java/com/qs/serve/modules/seeyon/entity/bo/CtpAddNodeDTO.java b/src/main/java/com/qs/serve/modules/seeyon/entity/bo/CtpAddNodeDTO.java new file mode 100644 index 00000000..105aa443 --- /dev/null +++ b/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 userIds; + + /** + * 是否回退到我 + */ + Integer backToMe; + + /** + * 用户登陆账号 + */ + String userCode; + + /** + * 用户致远登陆账号 + */ + String userSyId; + + /** + * 模板编码 + */ + String templateCode; + + /** + * 目标id + */ + String targetId; + +} diff --git a/src/main/java/com/qs/serve/modules/seeyon/entity/bo/CtpAddNodeParam.java b/src/main/java/com/qs/serve/modules/seeyon/entity/bo/CtpAddNodeParam.java new file mode 100644 index 00000000..febef91c --- /dev/null +++ b/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 userIds; + + /** + * 是否回退到我 + */ + Integer backToMe; + + /** + * 目标id + */ + String targetId; + +} diff --git a/src/main/java/com/qs/serve/modules/seeyon/service/SeeYonBaseService.java b/src/main/java/com/qs/serve/modules/seeyon/service/SeeYonBaseService.java index 9017c135..b8fd2caa 100644 --- a/src/main/java/com/qs/serve/modules/seeyon/service/SeeYonBaseService.java +++ b/src/main/java/com/qs/serve/modules/seeyon/service/SeeYonBaseService.java @@ -1,5 +1,7 @@ package com.qs.serve.modules.seeyon.service; +import com.qs.serve.modules.sys.mapper.SysUserMapper; + /** * @author YenHex * @since 2023/5/23 @@ -10,6 +12,8 @@ public interface SeeYonBaseService { SeeYonRequestService getRequestService(); + SysUserMapper getUserMapper(); + default boolean testConnection(){ return getRequestService().testConnection(); } diff --git a/src/main/java/com/qs/serve/modules/seeyon/service/SeeYonOperationService.java b/src/main/java/com/qs/serve/modules/seeyon/service/SeeYonOperationService.java index 999baab3..aaca3bfa 100644 --- a/src/main/java/com/qs/serve/modules/seeyon/service/SeeYonOperationService.java +++ b/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.dto.PageVo; 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.bo.CtpAddNodeDTO; +import com.qs.serve.modules.seeyon.entity.bo.CtpAddNodeParam; 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.TbsSeeYonConst; import com.qs.serve.modules.tbs.entity.TbsActivity; @@ -18,6 +27,7 @@ import org.springframework.web.bind.annotation.RequestBody; import javax.validation.Valid; import java.time.LocalDateTime; +import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; @@ -27,47 +37,141 @@ import java.util.stream.Collectors; */ public interface SeeYonOperationService extends SeeYonBaseService{ + + SysUserService getSysUserService(); + /** * 审批中 - * @param targetId + * @param param * @return */ - Object next(String targetId); + Object doNext(TbsAffairCommitBo param); /** * 审批退回 - * @param targetId + * @param param * @return */ - Object backed(String targetId); + Object doBacked(TbsAffairCommitBo param); /** * 审批完成 - * @param targetId + * @param param * @return */ - Object finished(String targetId); + Object doFinished(TbsAffairCommitBo param); /** * 审批拒绝 + * @param param + * @return + */ + Object doRefuse(TbsAffairCommitBo param); + + /** + * 加签 + * @param param + * @return + */ + default R 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 * @return */ - Object refuse(String targetId); + boolean checkSyFormIdIsNotNull(String targetId); /** * 审批列表(用于详情页) * @param targetId * @return */ - R> pageAffair(Long targetId); + default R> pageAffair(String targetId){ + boolean existFormId = checkSyFormIdIsNotNull(targetId); + if (!existFormId){ + return R.ok(new ArrayList<>()); + } + String templateCode = getTemplateCode(); + R> syResult = getRequestService().commonListAffairs(targetId,null,templateCode); + List ctpAffairs = syResult.getData(); + if(ctpAffairs.size()>0){ + List oaUserIds = ctpAffairs.stream().map(CtpAffair::getMemberId).collect(Collectors.toList()); + List userList = getSysUserService().listByOaMemberIds(oaUserIds); + List 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 * @return */ - R> pageMemberAffair(CtpAffairQo param); + default R> 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> syResult = getRequestService().pageMemberAffair(param); + PageVo pageVo = syResult.getData(); + List ctpAffairs = pageVo.getList(); + if(ctpAffairs.size()>0){ + List oaUserIds = ctpAffairs.stream().map(CtpAffair::getMemberId).collect(Collectors.toList()); + List userList = getSysUserService().listByOaMemberIds(oaUserIds); + List 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 costApplyPageVo = PageVo.initNewList(pageVo,result); + return R.ok(costApplyPageVo); + } + return R.byEmptyList(); + } + + /** + * 个人结果二次封装VO + * @param result + */ + default void pageMemberAffair4packageVo(List result){} /** * 审批提交 @@ -75,8 +179,8 @@ public interface SeeYonOperationService extends SeeYonBaseService{ * @return */ default R commitAffair(TbsAffairCommitBo affairCommit){ + getRequestService().testConnection(); String syFormId = this.commitGetSyFormId(affairCommit); - String targetId = getTargetIdFromCommit(affairCommit); R result = getRequestService().commonCommit(affairCommit, getTemplateCode(),syFormId); boolean isBackCommit = affairCommit.getState()==2; if(result.getStatus()==200){ @@ -84,18 +188,18 @@ public interface SeeYonOperationService extends SeeYonBaseService{ String flag = result.getData(); //审批中(next)、完成(finish)、拒绝(refused) if("finish".equals(flag)){ - this.finished(targetId); + this.doFinished(affairCommit); return R.ok(); }else if ("stop".equals(flag)){ if(isBackCommit){ - this.backed(targetId); + this.doBacked(affairCommit); return R.ok(); }else { - this.refuse(targetId); + this.doRefuse(affairCommit); return R.ok(); } }else if ("next".equals(flag)){ - this.next(targetId); + this.doNext(affairCommit); return R.ok(); } }else if (result.getStatus()==500){ @@ -105,11 +209,11 @@ public interface SeeYonOperationService extends SeeYonBaseService{ } /** - * 获取提交的目标ID + * 获取提交的目标ID(因前期未规范id,需要实现该接口进行补偿) * @param affairCommit * @return */ - String getTargetIdFromCommit(TbsAffairCommitBo affairCommit); + String getTargetId(TbsAffairCommitBo affairCommit); /** * 检查提交审批是否允许,并返回syFormId diff --git a/src/main/java/com/qs/serve/modules/seeyon/service/SeeYonRequestService.java b/src/main/java/com/qs/serve/modules/seeyon/service/SeeYonRequestService.java index 639b244e..fa88ab25 100644 --- a/src/main/java/com/qs/serve/modules/seeyon/service/SeeYonRequestService.java +++ b/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.R; 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.tbs.entity.bo.TbsAffairCommitBo; import com.qs.serve.modules.tbs.entity.vo.CtpAffairVo; @@ -87,4 +88,6 @@ public interface SeeYonRequestService { */ R> listFormAffair(CtpAffairQo ctpAffairQo); + R addNode(CtpAddNodeDTO addNodeDTO); + } diff --git a/src/main/java/com/qs/serve/modules/seeyon/service/impl/SeeYonRequestServiceImpl.java b/src/main/java/com/qs/serve/modules/seeyon/service/impl/SeeYonRequestServiceImpl.java index 8e3c61f1..a37d30cd 100644 --- a/src/main/java/com/qs/serve/modules/seeyon/service/impl/SeeYonRequestServiceImpl.java +++ b/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.util.*; 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.service.SeeYonRequestService; import com.qs.serve.modules.sys.entity.SysUser; @@ -75,19 +76,19 @@ public class SeeYonRequestServiceImpl implements SeeYonRequestService { @Override public R baseCreateProcess(BaseCreateProcessBo createProcessBo) { - String title = "创建流程"; + String title = "【创建流程】"; return seeYonRequestBaseService.postBase(TbsSeeYonConst.API_PROCESS_CREATE,createProcessBo,title); } @Override public R createCallbackStatus(BaseCreateCallbackBo createCallbackBo) { - String title = "创建流程后回调"; + String title = "【创建流程后回调】"; return seeYonRequestBaseService.postBase(TbsSeeYonConst.API_PROCESS_CREATE_CALLBACK,createCallbackBo,title); } @Override public R getFormId(String templateCode, Long targetId) { - String title = "获取表单ID"; + String title = "【获取表单ID】"; String url2 = TbsSeeYonConst.API_GET_FORM_ID+"?templateCode="+templateCode+"&targetId="+targetId; return seeYonRequestBaseService.getBase(url2,title); } @@ -95,19 +96,19 @@ public class SeeYonRequestServiceImpl implements SeeYonRequestService { @Override public R affairCommit(CtpAffairCommit affairCommit) { - String title = "审批流程"; + String title = "【审批流程】"; return seeYonRequestBaseService.postBase(TbsSeeYonConst.API_PROCESS_COMMIT,affairCommit,title); } @Override public R affairCancel(CtpAffairCancel affairCancel) { - String title = "取消流程"; + String title = "【取消流程】"; return seeYonRequestBaseService.postBase(TbsSeeYonConst.API_PROCESS_CANCEL,affairCancel,title); } @Override public R> pageMemberAffair(CtpAffairQo ctpAffairQo) { - String title = "用户审批流程"; + String title = "【用户审批流程】"; R result = seeYonRequestBaseService.postBase(TbsSeeYonConst.API_PAGE_AFFAIR,ctpAffairQo,title); if(result.getStatus()==200){ PageVo pageVo = JsonUtil.jsonToPojo(result.getData(),PageVo.class); @@ -127,7 +128,7 @@ public class SeeYonRequestServiceImpl implements SeeYonRequestService { @Override public SyAffairState checkAffairState(String targetId,String templateCode) { - String title = "校验OA节点状态"; + String title = "【校验OA节点状态】"; CtpAffairQo param = new CtpAffairQo(); param.setTargetId(targetId); param.setTemplateCode(templateCode); @@ -146,7 +147,7 @@ public class SeeYonRequestServiceImpl implements SeeYonRequestService { @Override public R> listFormAffair(CtpAffairQo ctpAffairQo) { - String title = "表单审批节点"; + String title = "【表单审批节点】"; R result = seeYonRequestBaseService.postBase(TbsSeeYonConst.API_LIST_AFFAIR,ctpAffairQo,title); if(result.getStatus()==200){ List list = JsonUtil.jsonToPojo(result.getData(),List.class); @@ -164,5 +165,10 @@ public class SeeYonRequestServiceImpl implements SeeYonRequestService { } + @Override + public R addNode(CtpAddNodeDTO addNodeDTO) { + String title = "【校验OA节点状态】"; + return seeYonRequestBaseService.postBase(TbsSeeYonConst.API_ADD_NODE,addNodeDTO,title); + } } diff --git a/src/main/java/com/qs/serve/modules/tbs/common/TbsSeeYonConst.java b/src/main/java/com/qs/serve/modules/tbs/common/TbsSeeYonConst.java index 9442b400..d056dffa 100644 --- a/src/main/java/com/qs/serve/modules/tbs/common/TbsSeeYonConst.java +++ b/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_CHECK_AFFAIR = "/process/checkAffair"; String API_LIST_AFFAIR = "/process/listFormAffair"; + String API_ADD_NODE = "/process/addNode"; String XLT_SAVE_CHECK = "/xlt/saveCheck"; String XLT_SAVE_PAYMENT = "/xlt/savePayment"; diff --git a/src/main/java/com/qs/serve/modules/tbs/controller/TbsCostApplyController.java b/src/main/java/com/qs/serve/modules/tbs/controller/TbsCostApplyController.java index a806d222..743e5687 100644 --- a/src/main/java/com/qs/serve/modules/tbs/controller/TbsCostApplyController.java +++ b/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.seeyon.entity.CtpAffair; 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.sys.entity.SysUser; 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.TbsCostApplyVo; 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.extern.slf4j.Slf4j; import org.springframework.security.access.prepost.PreAuthorize; @@ -70,7 +72,8 @@ public class TbsCostApplyController { private SeeYonRequestService seeYonService; private TbsBudgetApplicationService budgetApplicationService; 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()); //entity.setId(IdUtil.getSnowFlakeId()); 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.setSupplierCode(supplier.getCode()); entity.setSupplierName(supplier.getName()); @@ -337,7 +344,17 @@ public class TbsCostApplyController { * @return */ @GetMapping("/ListAffairs") - public R> pageMemberAffair(Long costApplyId){ + public R> pageAffair(String costApplyId){ + return tbsCostApplyOperationServiceImpl.pageAffair(costApplyId); + } + + /** + * 审批列表(用于详情页) + * @param costApplyId + * @return + */ + //@GetMapping("/ListAffairs") + public R> pageMemberAffair_old(Long costApplyId){ TbsCostApply costApplyParam = tbsCostApplyService.getById(costApplyId); if(costApplyParam.getSyFormId()==null){ return R.ok(); @@ -369,8 +386,8 @@ public class TbsCostApplyController { * @param param * @return */ - @GetMapping("/pageMemberAffair") - public R> pageMemberAffair(CtpAffairQo param){ + //@GetMapping("/pageMemberAffair") + public R> pageMemberAffair_old(CtpAffairQo param){ param.setTitle(param.getChargeTheme()); param.setApplyUserName(param.getUserName()); SysUser sysUser = sysUserService.getById(AuthContextUtils.getSysUserId()); @@ -410,6 +427,16 @@ public class TbsCostApplyController { return R.byEmptyList(); } + /** + * 审批列表(翻页) + * @param param + * @return + */ + @GetMapping("/pageMemberAffair") + public R> pageMemberAffair(CtpAffairQo param){ + return tbsCostApplyOperationServiceImpl.pageMemberAffair(param); + } + /** * 提交审批节点 * @return @@ -502,10 +529,20 @@ public class TbsCostApplyController { @PostMapping("/compensate") @SysLog(module = SystemModule.Budget, title = "费用申请", biz = BizType.DELETE) public R compensateOAResult(@RequestBody CompensateDTO param){ - seeYonService.testConnection(); - + tbsCostApplyCompensateService.runCompensate(param.getId()); return R.ok(); } + /** + * 加签 + * @param param + * @return + */ + @PostMapping("/addNode") + @SysLog(module = SystemModule.Budget, title = "费用申请", biz = BizType.DELETE) + public R addNode(@RequestBody CtpAddNodeParam param){ + return tbsCostApplyOperationServiceImpl.addNode(param); + } + } diff --git a/src/main/java/com/qs/serve/modules/tbs/entity/bo/TbsCostTodoBo.java b/src/main/java/com/qs/serve/modules/tbs/entity/bo/TbsCostTodoBo.java index 0cb4b5ab..4a7b7c25 100644 --- a/src/main/java/com/qs/serve/modules/tbs/entity/bo/TbsCostTodoBo.java +++ b/src/main/java/com/qs/serve/modules/tbs/entity/bo/TbsCostTodoBo.java @@ -35,7 +35,6 @@ public class TbsCostTodoBo implements Serializable { private Long costApplyId; /** 涉及品牌 */ - @NotBlank(message = "涉及品牌不能为空") @Length(max = 255,message = "涉及品牌长度不能超过255字") private String brands; diff --git a/src/main/java/com/qs/serve/modules/tbs/entity/vo/CtpAffairVo.java b/src/main/java/com/qs/serve/modules/tbs/entity/vo/CtpAffairVo.java index a0d05aba..299753a7 100644 --- a/src/main/java/com/qs/serve/modules/tbs/entity/vo/CtpAffairVo.java +++ b/src/main/java/com/qs/serve/modules/tbs/entity/vo/CtpAffairVo.java @@ -17,7 +17,7 @@ public class CtpAffairVo { private CtpAffair affairInfo; /** 费用申请信息 */ - private TbsCostApply costApply; + private Object costApply; /** 核销信息 */ private Object policyInfo; diff --git a/src/main/java/com/qs/serve/modules/tbs/service/TbsCostApplyCompensateService.java b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyCompensateServiceImpl.java similarity index 86% rename from src/main/java/com/qs/serve/modules/tbs/service/TbsCostApplyCompensateService.java rename to src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyCompensateServiceImpl.java index d012f274..e8bbfb57 100644 --- a/src/main/java/com/qs/serve/modules/tbs/service/TbsCostApplyCompensateService.java +++ b/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.util.Assert; import com.qs.serve.modules.seeyon.enums.SyAffairState; import com.qs.serve.modules.seeyon.service.SeeYonCompensateService; 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.TbsSeeYonConst; import com.qs.serve.modules.tbs.entity.TbsCostApply; @@ -21,10 +22,16 @@ import org.springframework.stereotype.Service; @Slf4j @Service @AllArgsConstructor -public class TbsCostApplyCompensateService implements SeeYonCompensateService { +public class TbsCostApplyCompensateServiceImpl implements SeeYonCompensateService { private final SeeYonRequestService requestService; private final TbsCostApplyMapper costApplyMapper; + private final SysUserMapper userMapper; + + @Override + public SysUserMapper getUserMapper() { + return userMapper; + } @Override public String getTemplateCode() { diff --git a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyOperationServiceImpl.java b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyOperationServiceImpl.java new file mode 100644 index 00000000..12f9e25f --- /dev/null +++ b/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 logLqw = new LambdaQueryWrapper<>(); + logLqw.select(TbsBudgetLog::getId); + logLqw.eq(TbsBudgetLog::getCostApplyId,costApplyId); + logLqw.eq(TbsBudgetLog::getRollbackFlag, BudgetLogRollbackFlag.State_0); + List 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 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 logLqw = new LambdaQueryWrapper<>(); + logLqw.eq(TbsBudgetLog::getCostApplyId,costApplyId); + List oldLogList = tbsBudgetLogService.list(logLqw); + List 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 result) { + List costApplyIds = result.stream() + .filter(a->a.getAffairInfo()!=null) + .map(b->b.getAffairInfo().getCostApplyId()) + .collect(Collectors.toList()); + List 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(); + } + +} diff --git a/src/main/resources/mapper/sys/SysUserMapper.xml b/src/main/resources/mapper/sys/SysUserMapper.xml index 7dfaeee9..333be540 100644 --- a/src/main/resources/mapper/sys/SysUserMapper.xml +++ b/src/main/resources/mapper/sys/SysUserMapper.xml @@ -63,7 +63,7 @@ and sys_user.del_flag = '0' and sys_user.id = #{query.id} - and sys_user.mobile = #{query.mobile} + and sys_user.mobile like concat('%',#{query.mobile},'%') and sys_user.account = #{query.account} and sys_user.name like concat('%',#{query.name},'%') and sys_user.code like concat('%',#{query.code},'%')