diff --git a/src/main/java/com/qs/serve/common/framework/manager/AsyncFactory.java b/src/main/java/com/qs/serve/common/framework/manager/AsyncFactory.java index b20be01e..c5b9e8db 100644 --- a/src/main/java/com/qs/serve/common/framework/manager/AsyncFactory.java +++ b/src/main/java/com/qs/serve/common/framework/manager/AsyncFactory.java @@ -303,7 +303,7 @@ public class AsyncFactory { * @param totalAmount * @return */ - public static TimerTask saveVtbSubmit(Long verificationId, BigDecimal totalAmount,Integer state,boolean realaseFlag) { + public static TimerTask saveVtbSubmit(String userCode,Long verificationId, BigDecimal totalAmount,Integer state,boolean realaseFlag) { log.warn("费用释放---verificationId:{} totalAmount:{} state:{} realaseFlag:{}",verificationId,totalAmount,state,realaseFlag); return new TimerTask() { @Override @@ -331,7 +331,7 @@ public class AsyncFactory { return; } if(realaseFlag){ - vtbVerificationService.release(verification.getActivityId(),false); + vtbVerificationService.release(verification.getActivityId(),userCode,false); } } } catch (Exception e) { diff --git a/src/main/java/com/qs/serve/modules/sys/entity/SysUser.java b/src/main/java/com/qs/serve/modules/sys/entity/SysUser.java index 92f4a1d4..9dce6554 100644 --- a/src/main/java/com/qs/serve/modules/sys/entity/SysUser.java +++ b/src/main/java/com/qs/serve/modules/sys/entity/SysUser.java @@ -125,6 +125,9 @@ public class SysUser implements Serializable { @TableField(fill = FieldFill.UPDATE) private LocalDateTime updateTime; + + + /** 更新人 */ @TableField(fill = FieldFill.UPDATE) private String updateBy; @@ -137,6 +140,10 @@ public class SysUser implements Serializable { @JsonIgnore private String tenantId; + /** 在职状态【0->离职;1->在职;】 */ + @TableField(exist = false) + private Integer servingQueryState; + /** 查询参数:部门ID多选 */ @TableField(exist = false) private List multiDeptIds; diff --git a/src/main/java/com/qs/serve/modules/tbs/controller/TbsActivityController.java b/src/main/java/com/qs/serve/modules/tbs/controller/TbsActivityController.java index 1856f323..caae083d 100644 --- a/src/main/java/com/qs/serve/modules/tbs/controller/TbsActivityController.java +++ b/src/main/java/com/qs/serve/modules/tbs/controller/TbsActivityController.java @@ -437,7 +437,8 @@ public class TbsActivityController { @SysLog(module = SystemModule.Budget, title = "费用活动", biz = BizType.DELETE) @PreAuthorize("hasRole('tbs:activity:release')") public R release(@PathVariable("id") Long id){ - verificationService.release(id,true); + SysUser sysUser = sysUserService.getById(AuthContextUtils.getSysUserId()); + verificationService.release(id,sysUser.getCode(),true); return R.ok(); } diff --git a/src/main/java/com/qs/serve/modules/tbs/service/TbsCostTodoService.java b/src/main/java/com/qs/serve/modules/tbs/service/TbsCostTodoService.java index aaa833bf..df1ee4c7 100644 --- a/src/main/java/com/qs/serve/modules/tbs/service/TbsCostTodoService.java +++ b/src/main/java/com/qs/serve/modules/tbs/service/TbsCostTodoService.java @@ -13,6 +13,8 @@ import java.util.List; */ public interface TbsCostTodoService extends IService { + List listByCostId(Long costId); + List selectTbsCostTodoList(TbsCostTodo query); } diff --git a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostTodoServiceImpl.java b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostTodoServiceImpl.java index 67bd4391..bc6a0642 100644 --- a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostTodoServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostTodoServiceImpl.java @@ -1,5 +1,6 @@ package com.qs.serve.modules.tbs.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -21,6 +22,13 @@ import java.util.List; @AllArgsConstructor public class TbsCostTodoServiceImpl extends ServiceImpl implements TbsCostTodoService { + @Override + public List listByCostId(Long costId) { + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.eq(TbsCostTodo::getCostApplyId,costId); + return baseMapper.selectList(lqw); + } + @Override public List selectTbsCostTodoList(TbsCostTodo query) { return baseMapper.selectTbsCostTodoList(query); diff --git a/src/main/java/com/qs/serve/modules/third/PortalOfCostController.java b/src/main/java/com/qs/serve/modules/third/PortalOfCostController.java index 13df6baa..b7353cf9 100644 --- a/src/main/java/com/qs/serve/modules/third/PortalOfCostController.java +++ b/src/main/java/com/qs/serve/modules/third/PortalOfCostController.java @@ -113,7 +113,7 @@ public class PortalOfCostController { } /** - * 协议类费用 释放接口,释放合同不再支付的金额; + * 协议类费用 释放接口 * @param contractBo * @return */ @@ -141,6 +141,35 @@ public class PortalOfCostController { return R.error("支付异常"); } + /** + * 协议类费用 释放接口 + * @param contractBo + * @return + */ + @PostMapping("releaseContractNoPay") + public R releaseContractNoPay(@Valid @RequestBody ProcessReleaseContractBo contractBo, HttpServletRequest request){ + SysSyncLog syncLog = new SysSyncLog(); + syncLog.setFromPlat("协议类不再支付"); + syncLog.setUrl(request.getRequestURI()); + syncLog.setRequestJson(JsonUtil.objectToJson(contractBo)); + syncLog.setEntityClass(ProcessCreateCostApplyBo.class.getName()); + try { + ThirdTokenUtil.checkToken(request); + portalOfCostApplication.releaseContractCost(contractBo); + syncLog.setSuccessStatus(1); + } catch (Exception e) { + log.error("协议类不再支付===>{}", JsonUtil.objectToJson(contractBo)); + syncLog.setFailReason(e.getMessage()); + sysSyncLogService.save(syncLog); + return R.error(e.getMessage()); + } + sysSyncLogService.save(syncLog); + if(syncLog.getSuccessStatus()!=null&&syncLog.getSuccessStatus().equals(1)){ + return R.ok(); + } + return R.error("不再支付异常"); + } + /** * 一站式创建费用(费用申请,根据东哥的数据关联政策生成) * @param createBo diff --git a/src/main/java/com/qs/serve/modules/third/entity/ProcessReleaseContractBo.java b/src/main/java/com/qs/serve/modules/third/entity/ProcessReleaseContractBo.java index 8490b159..60206b79 100644 --- a/src/main/java/com/qs/serve/modules/third/entity/ProcessReleaseContractBo.java +++ b/src/main/java/com/qs/serve/modules/third/entity/ProcessReleaseContractBo.java @@ -17,4 +17,6 @@ public class ProcessReleaseContractBo { /** 核销与支付备注 */ private String remark; + /** 业务操作人 */ + private String userCode; } diff --git a/src/main/java/com/qs/serve/modules/third/entity/ProcessUnPayContractBo.java b/src/main/java/com/qs/serve/modules/third/entity/ProcessUnPayContractBo.java new file mode 100644 index 00000000..35579491 --- /dev/null +++ b/src/main/java/com/qs/serve/modules/third/entity/ProcessUnPayContractBo.java @@ -0,0 +1,25 @@ +package com.qs.serve.modules.third.entity; + +import lombok.Data; + +import java.math.BigDecimal; + +/** + * @author YenHex + * @since 2023/11/13 + */ +@Data +public class ProcessUnPayContractBo { + + /** 核销编码 */ + private String checkCode; + + /** 不再支付金额 */ + private BigDecimal noPayAmt; + + /** 核销与支付备注 */ + private String remark; + + /** 业务操作人 */ + private String userCode; +} diff --git a/src/main/java/com/qs/serve/modules/third/service/PortalOfCostApplication.java b/src/main/java/com/qs/serve/modules/third/service/PortalOfCostApplication.java index ae8e5cad..97c343a6 100644 --- a/src/main/java/com/qs/serve/modules/third/service/PortalOfCostApplication.java +++ b/src/main/java/com/qs/serve/modules/third/service/PortalOfCostApplication.java @@ -53,10 +53,13 @@ import com.qs.serve.modules.tzc.mapper.TzcPolicyItemMapper; import com.qs.serve.modules.tzc.service.TzcPolicyGoodsSyncService; import com.qs.serve.modules.tzc.service.TzcPolicyItemLogService; import com.qs.serve.modules.tzc.service.TzcPolicyItemService; +import com.qs.serve.modules.vtb.common.VtbFundFlowType; import com.qs.serve.modules.vtb.common.VtbVerificationState; +import com.qs.serve.modules.vtb.entity.VtbFundFlow; import com.qs.serve.modules.vtb.entity.VtbVerification; import com.qs.serve.modules.vtb.entity.VtbVerificationSubject; import com.qs.serve.modules.vtb.mapper.VtbVerificationSubjectMapper; +import com.qs.serve.modules.vtb.service.VtbFundFlowService; import com.qs.serve.modules.vtb.service.VtbVerificationService; import com.qs.serve.modules.vtb.service.VtbVerificationSubjectService; import lombok.AllArgsConstructor; @@ -87,6 +90,11 @@ public class PortalOfCostApplication { private final SysSyncLogService sysSyncLogService; private SysTableTempMapper sysTableTempMapper; + private TbsCostTodoService tbsCostTodoService; + private final TbsActivityPayConditionService activityPayConditionService; + private final TbsBudgetService budgetService; + private final TbsBudgetCostItemService budgetCostItemService; + private final VtbFundFlowService fundFlowService; private TbsActivityService activityService; private TbsActivityCenterService activityCenterService; private TbsActivitySubjectService activitySubjectService; @@ -122,6 +130,7 @@ public class PortalOfCostApplication { private TzcPolicyItemService policyItemServiceService; private TzcPolicyItemLogService policyItemLogService; private TzcPolicyGoodsSyncService tzcPolicyGoodsSyncService; + private SysUserService sysUserService; private final XiaoLuTonService xiaoLuTonService; private ProjectApisProperties projectApisProperties; @@ -1230,7 +1239,16 @@ public class PortalOfCostApplication { * @param contractBo */ public void releaseContractCost(ProcessReleaseContractBo contractBo){ - + TbsCostApply costApply = costApplyService.getByCode(contractBo.getCostCode()); + TbsActivity activity = activityService.listByCostApplyId(costApply.getId()).get(0); + List costTodoList = tbsCostTodoService.listByCostId(costApply.getId()); + for (TbsCostTodo costTodo : costTodoList) { + if(costTodo.getCheckStatus().equals(1)){ + Assert.throwEx("协议条款审批中,不在支付失败"); + } + } + SysUser sysUser = sysUserService.getByAccount(contractBo.getCostCode()); + verificationService.release(activity.getId(),sysUser.getCode(),true); } /** diff --git a/src/main/java/com/qs/serve/modules/vtb/service/VtbVerificationApplication.java b/src/main/java/com/qs/serve/modules/vtb/service/VtbVerificationApplication.java index b77e92ed..93e6850a 100644 --- a/src/main/java/com/qs/serve/modules/vtb/service/VtbVerificationApplication.java +++ b/src/main/java/com/qs/serve/modules/vtb/service/VtbVerificationApplication.java @@ -177,11 +177,11 @@ public class VtbVerificationApplication { @NotNull @Transactional(rollbackFor = Exception.class) public R commitAffairSuccess(TbsAffairCommitBo affairCommit, VtbVerification verification, boolean isBackCommit, String flag) { + String userId = AuthContextUtils.getSysUserId(); + SysUser sysUser = sysUserService.getById(userId); try { //保存记录 // 判断是否含有下个节点 - String userId = AuthContextUtils.getSysUserId(); - SysUser sysUser = sysUserService.getById(userId); DataAffairCommit dataAffairCommit = new DataAffairCommit(); dataAffairCommit.setTargetCode(TbsSeeYonConst.CostCheckConf.Code()); dataAffairCommit.setTargetId(verification.getId()+""); @@ -223,7 +223,7 @@ public class VtbVerificationApplication { if (isStop){ backCommitAndStop(verification, isBackCommit); if(isRelease){ - vtbVerificationService.release(verification.getActivityId(),false); + vtbVerificationService.release(verification.getActivityId(),sysUser.getCode(),false); } }else if (!isFinish && !isNext){ return R.error("远程调用返回,非指定状态"); @@ -381,7 +381,7 @@ public class VtbVerificationApplication { if(isFinish){ finishCallBack(verification, totalAmount); if(isRelease){ - vtbVerificationService.release(verification.getActivityId(),false); + vtbVerificationService.release(verification.getActivityId(),sysUser.getCode(),false); } }else { //更新金额 diff --git a/src/main/java/com/qs/serve/modules/vtb/service/VtbVerificationService.java b/src/main/java/com/qs/serve/modules/vtb/service/VtbVerificationService.java index f0ba4ea5..27a6dff7 100644 --- a/src/main/java/com/qs/serve/modules/vtb/service/VtbVerificationService.java +++ b/src/main/java/com/qs/serve/modules/vtb/service/VtbVerificationService.java @@ -9,6 +9,7 @@ import com.qs.serve.modules.vtb.entity.VtbVerification; import com.qs.serve.modules.vtb.entity.bo.VtbVerificationBo; import com.qs.serve.modules.vtb.entity.bo.VtbVerificationContactBo; +import java.math.BigDecimal; import java.util.List; import java.util.Map; @@ -37,7 +38,7 @@ public interface VtbVerificationService extends IService { * 释放活动费用 * @param activityId */ - void release(Long activityId,Boolean throwEx); + void release(Long activityId,String userCode,Boolean throwEx); /** * 取消释放 @@ -101,5 +102,14 @@ public interface VtbVerificationService extends IService { void toPayRequest(Long verificationId); + /** + * 释放前,校验活动,返回释放金额 + * @param activity + * @param filterActTime 拦截活动结束 + * @param isCurrentCommit 是否当前活动占用提交 + * @return + */ + BigDecimal validActivity(boolean cotractFlag, TbsActivity activity, boolean filterActTime, boolean isCurrentCommit); + } diff --git a/src/main/java/com/qs/serve/modules/vtb/service/impl/VtbVerificationServiceImpl.java b/src/main/java/com/qs/serve/modules/vtb/service/impl/VtbVerificationServiceImpl.java index c297b5ac..9f33933e 100644 --- a/src/main/java/com/qs/serve/modules/vtb/service/impl/VtbVerificationServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/vtb/service/impl/VtbVerificationServiceImpl.java @@ -462,7 +462,7 @@ public class VtbVerificationServiceImpl extends ServiceImpl and sys_user.super_flag = #{query.superFlag} and sys_user.login_enable = #{query.loginEnable} and sys_user.serving_state = #{query.servingState} + and sys_user.serving_state = 0 + and sys_user.serving_state in (1,2) and sys_user.sales_flag = #{query.salesFlag} and sys_user.identity_no = #{query.identityNo} and sys_user.remark = #{query.remark}