Browse Source

Merge remote-tracking branch 'origin/v1.0' into v1.0

v1.0
15989082884@163.com 2 years ago
parent
commit
ef967d3db7
  1. 2
      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. 2
      src/main/java/com/qs/serve/modules/tbs/service/TbsCostApplyService.java
  7. 20
      src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyOperationServiceImpl.java
  8. 16
      src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyServiceImpl.java
  9. 13
      src/main/java/com/qs/serve/modules/vtb/controller/VtbVerificationController.java
  10. 41
      src/main/java/com/qs/serve/modules/vtb/entity/bo/VtbVerificationContactBo.java
  11. 7
      src/main/java/com/qs/serve/modules/vtb/service/VtbVerificationService.java
  12. 159
      src/main/java/com/qs/serve/modules/vtb/service/impl/VtbVerificationServiceImpl.java

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

@ -335,6 +335,8 @@ public class SysUserController {
if(!StringUtils.hasText(param.getId())) {
param.setId("SU" + IdUtil.getSnowFlakeId());
}
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())){
// sysRoleService.saveUserRole4Edit(userBo.getRoleIds(),param.getId());

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;
}

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

@ -17,6 +17,8 @@ import java.util.List;
public interface TbsCostApplyService extends IService<TbsCostApply> {
TbsCostApply getByCode(String code);
/**
* 作废
* @param id

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)

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

@ -115,7 +115,13 @@ public class TbsCostApplyServiceImpl extends ServiceImpl<TbsCostApplyMapper,TbsC
private TbsBudgetMatchApplication tbsBudgetMatchApplication;
@Override
public TbsCostApply getByCode(String code) {
LambdaQueryWrapper<TbsCostApply> lqw = new LambdaQueryWrapper<>();
lqw.eq(TbsCostApply::getCode,code);
lqw.eq(TbsCostApply::getCancelFlag,0);
return this.getOne(lqw,false);
}
@Override
@Transactional(rollbackFor = Exception.class)
@ -227,7 +233,7 @@ public class TbsCostApplyServiceImpl extends ServiceImpl<TbsCostApplyMapper,TbsC
List<TbsActivity> activityList = tbsActivityMapper.selectList(actLqw);
//判断是否进场费
if(tbsCostApply.getContractFlag().equals(2)){
if(tbsCostApply.getContractFlag()!=null&&tbsCostApply.getContractFlag().equals(2)){
if (activityList.size()>1){
Assert.throwEx("进场费类型只能有一个活动");
}
@ -244,6 +250,12 @@ public class TbsCostApplyServiceImpl extends ServiceImpl<TbsCostApplyMapper,TbsC
List<TbsActivityPayCondition> payConditions = null;
if(tbsCostApply.getContractFlag()!=null&&tbsCostApply.getContractFlag().equals(1)){
LambdaQueryWrapper<TbsCostContract> contractLambdaQueryWrapper = new LambdaQueryWrapper<>();
contractLambdaQueryWrapper.eq(TbsCostContract::getCostApplyId,id);
List<TbsCostContract> contractList = costContractMapper.selectList(contractLambdaQueryWrapper);
if(contractList.size()<1||contractList.get(0).getAttachIds()==null||contractList.get(0).getAttachIds().length<1){
Assert.throwEx("未补充合同内容或未上传合同!!");
}
LambdaQueryWrapper<TbsActivityPayCondition> lqw = new LambdaQueryWrapper<>();
lqw.eq(TbsActivityPayCondition::getCostApplyId,id);
payConditions = tbsActivityPayConditionMapper.selectList(lqw);

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

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

@ -0,0 +1,41 @@
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 {
/** 费用申请编码 */
@NotNull
private String costApplyCode;
/** 核销金额合计 */
@NotNull
private BigDecimal totalCheckAmount;
/** 核销人员工号 */
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

159
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,153 @@ 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.getByCode(param.getCostApplyCode());
if(!costApply.getContractFlag().equals(1)){
Assert.throwEx("非协议类费用,访问拦截");
}
if(!costApply.getChargeState().equals(TbsCostApplyState.State_2_actioning.getCode())){
Assert.throwEx("费用状态不支持");
}
TbsActivity activity = activityService.listByCostApplyId(costApply.getId()).get(0);
BigDecimal surplus = activity.getTotalAmount().subtract(activity.getUsedAmount());
if(surplus.compareTo(param.getTotalCheckAmount())<0){
Assert.throwEx("金额溢出");
}
//Assert.throwEx("功能开发中...");
//添加核销记录
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);
//更新费用
BigDecimal finalAmt = activity.getUsedAmount().add(param.getTotalCheckAmount());
activity.setUsedAmount(finalAmt);
if(finalAmt.compareTo(activity.getTotalAmount())==0) {
activity.setActivityState(TbsActivityState.STATE_1_Finished);
}
activityService.updateById(activity);
//更新活动相关费用
List<TbsActivitySubject> activitySubjectList = activitySubjectService.listByActivityId(activity.getId());
List<TbsActivityCenter> activityCenterList = activityCenterService.listByActivity(activity.getId());
List<TbsActivityCenterGoods> activityCenterGoodsList = activityCenterGoodsService.listByActivityId(activity.getId());
BigDecimal tempTotal = finalAmt;
BigDecimal n100 = new BigDecimal("100");
BigDecimal n10000 = new BigDecimal("10000");
List<TbsActivityCenter> activityCenters4Update = new ArrayList<>();
List<TbsActivitySubject> activitySubject4Update = new ArrayList<>();
for (TbsActivitySubject activitySubject : activitySubjectList) {
BigDecimal surplusAmt = activitySubject.getAmount().subtract(activitySubject.getUsedAmount());
if(surplusAmt.compareTo(BigDecimal.ZERO)<=0){
continue;
}
List<TbsActivityCenterGoods> activityCenterGoods4Update = new ArrayList<>();
//当前科目支付金额
BigDecimal currentSubjectAmt = null;
if(tempTotal.compareTo(surplusAmt)<0){
//余额大于核销金额
currentSubjectAmt = tempTotal;
activitySubject.setUsedAmount(activitySubject.getUsedAmount().add(tempTotal));
//最后一项
for (TbsActivityCenter activityCenter : activityCenterList) {
if(activityCenter.getSubjectId().equals(activitySubject.getSubjectId())){
BigDecimal used = tempTotal.multiply(activityCenter.getCenterRate()).divide(n100,2,RoundingMode.HALF_DOWN);
activityCenter.setUsedAmount(activityCenter.getUsedAmount().add(used));
activityCenters4Update.add(activityCenter);
}
}
for (TbsActivityCenterGoods centerGoods : activityCenterGoodsList) {
if(centerGoods.getSubjectId().equals(activitySubject.getSubjectId())){
BigDecimal used = tempTotal.multiply(centerGoods.getCenterRate())
.multiply(centerGoods.getCenterGoodsRate())
.divide(n10000,2,RoundingMode.HALF_DOWN);
centerGoods.setUsedAmount(centerGoods.getUsedAmount().add(used));
activityCenterGoods4Update.add(centerGoods);
}
}
break;
}else {
//余额小于于核销金额
currentSubjectAmt = surplusAmt;
tempTotal = tempTotal.subtract(surplusAmt);
//设置全部完成
for (TbsActivityCenter activityCenter : activityCenterList) {
if(activityCenter.getSubjectId().equals(activitySubject.getSubjectId())){
activityCenter.setUsedAmount(activityCenter.getCenterAmount());
activityCenters4Update.add(activityCenter);
}
}
for (TbsActivityCenterGoods centerGoods : activityCenterGoodsList) {
if(centerGoods.getSubjectId().equals(activitySubject.getSubjectId())){
centerGoods.setUsedAmount(centerGoods.getCenterGoodsAmount());
activityCenterGoods4Update.add(centerGoods);
}
}
activitySubject.setUsedAmount(activitySubject.getAmount());
}
activitySubject4Update.add(activitySubject);
//跟随活动科目同级
if(CollectionUtil.isNotEmpty(activityCenterGoods4Update)){
activityCenterGoodsService.updateBatchById(activityCenterGoods4Update);
List<VtbFundFlow> addFundFlowList = new ArrayList<>();
buildFundFlows(verification.getId(), addFundFlowList, activityCenterGoods4Update,currentSubjectAmt);
if(CollectionUtil.isNotEmpty(addFundFlowList)){
fundFlowService.saveBatch(addFundFlowList);
}
}
}
if(CollectionUtil.isNotEmpty(activitySubject4Update)){
activitySubjectService.updateBatchById(activitySubject4Update);
}
if(CollectionUtil.isNotEmpty(activityCenters4Update)){
activityCenterService.updateBatchById(activityCenters4Update);
}
//判断是否其它费用也完成
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);
}
}
}
@Override
@Transactional(rollbackFor = Exception.class)
public void removeCheck(Long id) {
@ -335,6 +479,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("当前费用状态不支持");
@ -827,7 +974,7 @@ public class VtbVerificationServiceImpl extends ServiceImpl<VtbVerificationMappe
//可用金额
BigDecimal allowBalance = centerGoods.getCenterGoodsAmount().subtract(centerGoods.getUsedAmount());
if(allowBalance.compareTo(BigDecimal.ZERO)==0){
log.debug("统计不匹配金额allowBalance:{},currentTimeAmount:{}",allowBalance.doubleValue(),currentTimeAmount.doubleValue());
log.warn("统计不匹配金额allowBalance:{},currentTimeAmount:{}",allowBalance.doubleValue(),currentTimeAmount.doubleValue());
unMatchAmount.add(currentTimeAmount);
continue;
}
@ -836,7 +983,7 @@ public class VtbVerificationServiceImpl extends ServiceImpl<VtbVerificationMappe
if(allowBalance.compareTo(currentTimeAmount)<1){
//统计不匹配金额
unMatchAmount = unMatchAmount.add(currentTimeAmount.subtract(allowBalance));
log.debug("统计不匹配金额allowBalance:{},currentTimeAmount:{}",allowBalance.doubleValue(),currentTimeAmount.doubleValue());
log.warn("统计不匹配金额allowBalance:{},currentTimeAmount:{}",allowBalance.doubleValue(),currentTimeAmount.doubleValue());
currentTimeAmount = allowBalance;
}else {
tempBalance = allowBalance.subtract(currentTimeAmount);

Loading…
Cancel
Save