Browse Source

异动修复;新增协议类核销流程

v1.0
Yen 2 years ago
parent
commit
c88fa8f7ed
  1. 1
      src/main/java/com/qs/serve/modules/sys/controller/SysUserController.java
  2. 17
      src/main/java/com/qs/serve/modules/tbs/controller/TbsCostApplyCheckController.java
  3. 3
      src/main/java/com/qs/serve/modules/tbs/controller/TbsCostApplyController.java
  4. 4
      src/main/java/com/qs/serve/modules/tbs/entity/bo/TbsAffairCommitBo.java
  5. 27
      src/main/java/com/qs/serve/modules/tbs/entity/bo/TbsCheckCostUpdateBo.java
  6. 20
      src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyOperationServiceImpl.java
  7. 1
      src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyPart1ServiceImpl.java
  8. 13
      src/main/java/com/qs/serve/modules/vtb/controller/VtbVerificationController.java
  9. 45
      src/main/java/com/qs/serve/modules/vtb/entity/bo/VtbVerificationContactBo.java
  10. 7
      src/main/java/com/qs/serve/modules/vtb/service/VtbVerificationService.java
  11. 85
      src/main/java/com/qs/serve/modules/vtb/service/impl/VtbVerificationServiceImpl.java

1
src/main/java/com/qs/serve/modules/sys/controller/SysUserController.java

@ -332,6 +332,7 @@ public class SysUserController {
if(param.getSyAccount()==null){
param.setSyAccount(userBo.getCode());
}
param.setServingState(0);
param.setId("SU"+IdUtil.getSnowFlakeId());
boolean result = sysUserService.save(param);
// if(param.getId()!=null&& com.qs.serve.common.util.CollectionUtil.isNotEmpty(userBo.getRoleIds())){

17
src/main/java/com/qs/serve/modules/tbs/controller/TbsCostApplyCheckController.java

@ -54,25 +54,8 @@ import java.util.List;
@RequestMapping("tbs/costApply")
public class TbsCostApplyCheckController {
// private TbsCostApplyPart1Service costApplyPart1Service;
// private TbsCostContractService costContractService;
private TbsCostApplyService tbsCostApplyService;
// private TbsActivityService tbsActivityService;
// private TbsActivityTemplateService tbsActivityTemplateService;
// private final TbsActivityGoodsService activityGoodsService;
// private final TbsActivitySubjectService activitySubjectService;
// private final TbsActivityCenterService activityCenterService;
// private final TbsActivityCenterGoodsService activityCenterGoodsService;
// private final TbsActivityChannelService activityChannelService;
// private final TbsActivityChannelPointService activityChannelPointService;
// private TbsBudgetLogService tbsBudgetLogService;
// private BmsSupplierService bmsSupplierService;
// private SysUserService sysUserService;
// private SeeYonRequestService seeYonService;
// private TbsBudgetApplicationService budgetApplicationService;
// private SysPostUserService postUserService;
private TbsCostApplyOperationServiceImpl tbsCostApplyOperationServiceImpl;
// private TbsBudgetMatchApplication tbsBudgetMatchApplication;
/**

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

@ -335,6 +335,9 @@ public class TbsCostApplyController {
@Transactional(rollbackFor = Exception.class)
public R<?> deleteById(@PathVariable("id") Long id){
TbsCostApply entity = tbsCostApplyService.getById(id);
if(entity.getCancelFlag().equals(1)||entity.getChangeExtendId()!=null||entity.getChangeSourceId()!=null){
return R.error("异动记录不可删除");
}
if(!entity.getChargeState().equals(0)&&
!entity.getChargeState().equals(TbsCostApplyState.State_5_stop.getCode())){
return R.error("占用预算的申请,不支持删除");

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

@ -41,7 +41,7 @@ public class TbsAffairCommitBo {
private String caseRemark;
/**
* 修改金额列表核销接口专用
* 修改金额列表核销和费用审批接口专用
*/
private List<AffairSubjectLine> affairSubjectLines;
@ -49,7 +49,7 @@ public class TbsAffairCommitBo {
public static class AffairSubjectLine{
/**
* 科目id
* 科目id费用申请活动科目id
*/
private Long subjectId;

27
src/main/java/com/qs/serve/modules/tbs/entity/bo/TbsCheckCostUpdateBo.java

@ -1,27 +0,0 @@
package com.qs.serve.modules.tbs.entity.bo;
import lombok.Data;
import java.math.BigDecimal;
/**
* @author YenHex
* @since 2023/8/1
*/
@Data
public class TbsCheckCostUpdateBo {
/** 活动的科目ID */
private Long activitySubjectId;
/** 调整金额 */
private BigDecimal amount;
/** 人数 */
private Integer countPerson;
/** 场次 */
private Integer countSession;
}

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

@ -4,10 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.qs.serve.common.model.enums.BudgetLogOptFlag;
import com.qs.serve.common.model.consts.BudgetLogRollbackFlag;
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.SpringUtils;
import com.qs.serve.common.util.StringUtils;
import com.qs.serve.common.util.*;
import com.qs.serve.modules.seeyon.entity.CtpAffair;
import com.qs.serve.modules.seeyon.entity.SyAffairStateResult;
import com.qs.serve.modules.seeyon.entity.bo.CtpAddNodeDTO;
@ -25,12 +22,14 @@ import com.qs.serve.modules.tbs.common.TbsCostApplyState;
import com.qs.serve.modules.tbs.common.TbsSeeYonConst;
import com.qs.serve.modules.tbs.common.util.TbsBudgetLogBuildUtil;
import com.qs.serve.modules.tbs.entity.TbsActivity;
import com.qs.serve.modules.tbs.entity.TbsActivitySubject;
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.TbsActivitySlottingFeeMapper;
import com.qs.serve.modules.tbs.mapper.TbsActivitySubjectMapper;
import com.qs.serve.modules.tbs.mapper.TbsBudgetLogMapper;
import com.qs.serve.modules.tbs.service.TbsBudgetLogService;
import com.qs.serve.modules.tbs.service.TbsCostApplyPart1Service;
@ -66,6 +65,7 @@ public class TbsCostApplyOperationServiceImpl implements SeeYonOperationService
private final TbsBudgetLogMapper tbsBudgetLogMapper;
private final TbsCostApplyPart1Service costApplyPart1Service;
private final TbsActivitySubjectMapper activitySubjectMapper;
@Override
public SysUserService getSysUserService() {
@ -319,6 +319,18 @@ public class TbsCostApplyOperationServiceImpl implements SeeYonOperationService
R<String> result = getRequestService().commonCommit(affairCommit, templateCode ,syFormId);
boolean isBackCommit = affairCommit.getState()==2;
if(result.getStatus()==200){
// 更新金额
if(CollectionUtil.isNotEmpty(affairCommit.getAffairSubjectLines())){
List<Long> actSubjectIds = affairCommit.getAffairSubjectLines().stream()
.map(TbsAffairCommitBo.AffairSubjectLine::getSubjectId).collect(Collectors.toList());
LambdaQueryWrapper<TbsActivitySubject> subLqw = new LambdaQueryWrapper<>();
subLqw.in(TbsActivitySubject::getId,actSubjectIds);
subLqw.in(TbsActivitySubject::getCostApplyId,affairCommit.getCostApplyId());
List<TbsActivitySubject> activitySubjectList = activitySubjectMapper.selectList(subLqw);
for (TbsAffairCommitBo.AffairSubjectLine subjectLine : affairCommit.getAffairSubjectLines()) {
//TODO
}
}
// 判断是否含有下个节点
String flag = result.getData();
//审批中(next)、完成(finish)、拒绝(refused)

1
src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyPart1ServiceImpl.java

@ -109,6 +109,7 @@ public class TbsCostApplyPart1ServiceImpl implements TbsCostApplyPart1Service {
List<Long> activityIds = activityList.stream().map(TbsActivity::getId).collect(Collectors.toList());
TbsActivity activity4Update = new TbsActivity();
activity4Update.setCancelFlag(1);
activity4Update.setCostApplyId(newCostApplyId);
LambdaQueryWrapper<TbsActivity> activityLqw = new LambdaQueryWrapper<>();
activityLqw.in(TbsActivity::getId,activityIds);
tbsActivityMapper.update(activity4Update,activityLqw);

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

@ -30,6 +30,7 @@ import com.qs.serve.modules.tbs.service.TbsActivityService;
import com.qs.serve.modules.tbs.service.TbsActivitySubjectService;
import com.qs.serve.modules.tbs.service.TbsCostApplyService;
import com.qs.serve.modules.vtb.entity.*;
import com.qs.serve.modules.vtb.entity.bo.VtbVerificationContactBo;
import com.qs.serve.modules.vtb.service.*;
import com.qs.serve.modules.vtb.service.impl.VtbVerificationOperationServiceImpl;
import lombok.AllArgsConstructor;
@ -73,6 +74,18 @@ public class VtbVerificationController {
private VtbVerificationYardItemService vtbVerificationYardItemService;
private VtbVerificationOperationServiceImpl vtbVerificationOperationService;
/**
* 创建协议类核销记录
* @param param
* @return
*/
@PostMapping("/createContactRecord")
private R<?> createContactRecord(@RequestBody VtbVerificationContactBo param){
vtbVerificationService.createContactRecord(param);
return R.ok();
}
/**
* 作废核销
* @param id

45
src/main/java/com/qs/serve/modules/vtb/entity/bo/VtbVerificationContactBo.java

@ -0,0 +1,45 @@
package com.qs.serve.modules.vtb.entity.bo;
import lombok.Data;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
/**
* @author YenHex
* @since 2023/8/1
*/
@Data
public class VtbVerificationContactBo {
/** 费用申请ID */
@NotNull
private Long costApplyId;
/** 活动ID */
@NotNull
private Long activityId;
/** 核销金额 */
@NotNull
private BigDecimal checkAmount;
/** 核销人员工号 */
private String userCode;
/** 条款编码 */
private String contactCode;
/** 场次 */
private Integer countSession;
/** 人数 */
private Integer countPerson;
/** 支付方式 */
private String payWay;
/** 备注 */
private String remark;
}

7
src/main/java/com/qs/serve/modules/vtb/service/VtbVerificationService.java

@ -5,6 +5,7 @@ import com.qs.serve.common.model.dto.R;
import com.qs.serve.modules.tbs.entity.bo.TbsActivityReopenBo;
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 org.springframework.web.bind.annotation.RequestBody;
import javax.validation.Valid;
@ -16,6 +17,12 @@ import javax.validation.Valid;
*/
public interface VtbVerificationService extends IService<VtbVerification> {
/**
* 创建协议类核销记录
* @param param
*/
void createContactRecord(VtbVerificationContactBo param);
/**
* 作废核销
* @param id

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

@ -38,10 +38,7 @@ import com.qs.serve.modules.tbs.service.impl.TbsCostApplyOperationServiceImpl;
import com.qs.serve.modules.vtb.common.VtbFundFlowType;
import com.qs.serve.modules.vtb.common.VtbVerificationState;
import com.qs.serve.modules.vtb.entity.*;
import com.qs.serve.modules.vtb.entity.bo.VtbVerificationBo;
import com.qs.serve.modules.vtb.entity.bo.VtbVerificationChannelBo;
import com.qs.serve.modules.vtb.entity.bo.VtbVerificationChannelPointBo;
import com.qs.serve.modules.vtb.entity.bo.VtbVerificationSubjectBo;
import com.qs.serve.modules.vtb.entity.bo.*;
import com.qs.serve.modules.seeyon.entity.XltApticlaim;
import com.qs.serve.modules.vtb.mapper.VtbVerificationMapper;
import com.qs.serve.modules.vtb.mapper.VtbVerificationYardItemMapper;
@ -107,6 +104,83 @@ public class VtbVerificationServiceImpl extends ServiceImpl<VtbVerificationMappe
private final BmsRegion2Mapper region2Mapper;
private final TbsCostPercentMapper costPercentMapper;
@Override
@Transactional(rollbackFor = Exception.class)
public void createContactRecord(VtbVerificationContactBo param) {
SysUser sysUser = sysUserService.getByAccount(param.getUserCode());
if(sysUser==null){
Assert.throwEx("工号["+param.getUserCode()+"]在CRM不存在");
}
TbsActivityPayCondition condition = null;
if(StringUtils.hasText(param.getContactCode())){
LambdaQueryWrapper<TbsActivityPayCondition> conditionLqw = new LambdaQueryWrapper<>();
conditionLqw.eq(TbsActivityPayCondition::getCode,param.getContactCode());
condition = activityPayConditionService.getOne(conditionLqw,false);
if(condition==null){
Assert.throwEx("协议编码有误");
}
}
TbsCostApply costApply = costApplyService.getById(param.getCostApplyId());
if(!costApply.getContractFlag().equals(1)){
Assert.throwEx("非协议类费用,访问拦截");
}
if(!costApply.getChargeState().equals(TbsCostApplyState.State_2_actioning.getCode())){
Assert.throwEx("费用状态不支持");
}
TbsActivity activity = activityService.getById(param.getActivityId());
if(!activity.getCostApplyId().equals(param.getCostApplyId())){
Assert.throwEx("参数异常");
}
BigDecimal surplus = activity.getTotalAmount().subtract(activity.getUsedAmount());
if(surplus.compareTo(param.getCheckAmount())<0){
Assert.throwEx("金额溢出");
}
Assert.throwEx("功能开发中...");
BigDecimal finalAmt = activity.getUsedAmount().add(param.getCheckAmount());
//更新费用
activity.setUsedAmount(finalAmt);
if(finalAmt.compareTo(activity.getTotalAmount())==0) {
activity.setActivityState(TbsActivityState.STATE_1_Finished);
}
activityService.updateById(activity);
//TODO 更新活动相关费用
//判断是否其它费用也完成
if(finalAmt.compareTo(activity.getTotalAmount())==0){
LambdaQueryWrapper<TbsActivity> activityLqw = new LambdaQueryWrapper<>();
activityLqw.ne(TbsActivity::getActivityState,TbsActivityState.STATE_1_Finished);
activityLqw.ne(TbsActivity::getReleaseFlag,1);
Long count = activityService.count(activityLqw);
if(count==0){
costApply.setChargeState(TbsCostApplyState.State_3_finished.getCode());
costApplyService.updateById(costApply);
}
}
//添加核销记录
VtbVerification verification = new VtbVerification();
if(condition!=null){
verification.setPayConditionId(condition.getId());
}
verification.setVerificationCode("HX"+CodeGenUtil.generate(CodeGenUtil.SourceKey.Verification));
verification.setVerificationState(VtbVerificationState.Commiting.getCode());
verification.setCostApplyId(costApply.getId());
verification.setActivityId(activity.getId());
verification.setSupplierId(activity.getSupplierId());
verification.setSupplierCode(activity.getSupplierCode());
verification.setSupplierName(activity.getSupplierName());
verification.setUserId(sysUser.getId());
verification.setUserCode(sysUser.getCode());
verification.setUserName(sysUser.getName());
verification.setWayId(0L);
verification.setWayTitle(param.getPayWay());
this.save(verification);
//List<VtbFundFlow> addFundFlowList = new ArrayList<>();
//buildFundFlows(verification.getId(), addFundFlowList, activityGoodsListOfSubjectCenter,currentCenterAmount);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void removeCheck(Long id) {
@ -335,6 +409,9 @@ public class VtbVerificationServiceImpl extends ServiceImpl<VtbVerificationMappe
sysUser.checkSyAccount();
TbsActivity activity = activityService.getById(verificationBo.getActivityId());
TbsCostApply costApply = costApplyService.getById(activity.getCostApplyId());
if(costApply.getCancelFlag().equals(1)){
Assert.throwEx("异动的费用申请不可核销!!");
}
BmsSupplier supplier = bmsSupplierService.getById(activity.getSupplierId());
if(!costApply.getChargeState().equals(TbsCostApplyState.State_2_actioning.getCode())){
Assert.throwEx("当前费用状态不支持");

Loading…
Cancel
Save