@ -40,6 +40,7 @@ import com.qs.serve.modules.tbs.common.TbsCostApplyState;
import com.qs.serve.modules.tbs.common.util.TbsBudgetLogBuildUtil ;
import com.qs.serve.modules.tbs.common.util.TbsBudgetLogBuildUtil ;
import com.qs.serve.modules.tbs.entity.* ;
import com.qs.serve.modules.tbs.entity.* ;
import com.qs.serve.modules.tbs.entity.dto.TbsBudgetCostResult ;
import com.qs.serve.modules.tbs.entity.dto.TbsBudgetCostResult ;
import com.qs.serve.modules.tbs.mapper.TbsActivitySubjectMapper ;
import com.qs.serve.modules.tbs.mapper.TbsBudgetMapper ;
import com.qs.serve.modules.tbs.mapper.TbsBudgetMapper ;
import com.qs.serve.modules.tbs.service.* ;
import com.qs.serve.modules.tbs.service.* ;
import com.qs.serve.modules.third.entity.* ;
import com.qs.serve.modules.third.entity.* ;
@ -55,6 +56,7 @@ import com.qs.serve.modules.tzc.service.TzcPolicyItemService;
import com.qs.serve.modules.vtb.common.VtbVerificationState ;
import com.qs.serve.modules.vtb.common.VtbVerificationState ;
import com.qs.serve.modules.vtb.entity.VtbVerification ;
import com.qs.serve.modules.vtb.entity.VtbVerification ;
import com.qs.serve.modules.vtb.entity.VtbVerificationSubject ;
import com.qs.serve.modules.vtb.entity.VtbVerificationSubject ;
import com.qs.serve.modules.vtb.mapper.VtbVerificationSubjectMapper ;
import com.qs.serve.modules.vtb.service.VtbVerificationService ;
import com.qs.serve.modules.vtb.service.VtbVerificationService ;
import com.qs.serve.modules.vtb.service.VtbVerificationSubjectService ;
import com.qs.serve.modules.vtb.service.VtbVerificationSubjectService ;
import lombok.AllArgsConstructor ;
import lombok.AllArgsConstructor ;
@ -1044,6 +1046,26 @@ public class PortalOfCostApplication {
BigDecimal totalAmount = createBo . getAmount ( ) ;
BigDecimal totalAmount = createBo . getAmount ( ) ;
SysUser user = userService . getByAccount ( createBo . getUserCode ( ) ) ;
SysUser user = userService . getByAccount ( createBo . getUserCode ( ) ) ;
LocalDateTime nowTime = LocalDateTime . now ( ) ;
LocalDateTime nowTime = LocalDateTime . now ( ) ;
//移除历史记录
String payCode = createBo . getRemark ( ) ;
LambdaQueryWrapper < VtbVerification > hisVtbLqw = new LambdaQueryWrapper < > ( ) ;
hisVtbLqw . eq ( VtbVerification : : getRemark , payCode ) ;
List < VtbVerification > oldDateList = verificationService . list ( hisVtbLqw ) ;
for ( VtbVerification verification : oldDateList ) {
Long verificationId = verification . getId ( ) ;
verificationService . removeById ( verificationId ) ;
verificationSubjectService . removeByVerificationId ( verificationId ) ;
}
LambdaQueryWrapper < PayPayment > hisPaymentLqw = new LambdaQueryWrapper < > ( ) ;
hisPaymentLqw . eq ( PayPayment : : getRemark , payCode ) ;
List < PayPayment > payPayments = paymentService . list ( hisPaymentLqw ) ;
for ( PayPayment payment : payPayments ) {
Long payId = payment . getId ( ) ;
paymentService . removeById ( payId ) ;
paymentItemService . removeByPaymentId ( payId ) ;
}
//保存核销申请
//保存核销申请
VtbVerification verification = new VtbVerification ( ) ;
VtbVerification verification = new VtbVerification ( ) ;
verification . setDisCode ( createBo . getDispatchCode ( ) ) ;
verification . setDisCode ( createBo . getDispatchCode ( ) ) ;
@ -1063,6 +1085,7 @@ public class PortalOfCostApplication {
verification . setAmount ( totalAmount ) ;
verification . setAmount ( totalAmount ) ;
verification . setAmountRecord ( totalAmount ) ;
verification . setAmountRecord ( totalAmount ) ;
verification . setPaymentState ( ResultFlag . OK ) ;
verification . setPaymentState ( ResultFlag . OK ) ;
verification . setRemark ( payCode ) ;
verificationService . save ( verification ) ;
verificationService . save ( verification ) ;
//协议类的要直接支付
//协议类的要直接支付
@ -1082,19 +1105,33 @@ public class PortalOfCostApplication {
payPayment . setBillNumber ( createBo . getBillNumber ( ) ) ;
payPayment . setBillNumber ( createBo . getBillNumber ( ) ) ;
payPayment . setCreateBy ( user . getName ( ) ) ;
payPayment . setCreateBy ( user . getName ( ) ) ;
payPayment . setCreateTime ( LocalDateTime . now ( ) ) ;
payPayment . setCreateTime ( LocalDateTime . now ( ) ) ;
payPayment . setRemark ( payCode ) ;
paymentService . save ( payPayment ) ;
paymentService . save ( payPayment ) ;
//保存核销费用结果
//保存核销费用结果
BigDecimal subjectSurplus = createBo . getAmount ( ) ;
BigDecimal subjectSurplus = createBo . getAmount ( ) ;
for ( TbsActivitySubject subject : subjectList ) {
for ( TbsActivitySubject subject : subjectList ) {
if ( subjectSurplus . compareTo ( BigDecimal . ZERO ) = = 0 ) {
VtbVerificationSubjectMapper activitySubjectMapper = ( VtbVerificationSubjectMapper ) verificationSubjectService . getBaseMapper ( ) ;
break ;
//科目已用
BigDecimal usedSubjectAmt = activitySubjectMapper . selectSumSubjectAmt ( subject . getActivityId ( ) , subject . getSubjectId ( ) ) ;
if ( usedSubjectAmt = = null ) {
usedSubjectAmt = BigDecimal . ZERO ;
}
//科目还有多少金额未支付
BigDecimal totalUnPay = subject . getAmount ( ) . subtract ( usedSubjectAmt ) ;
if ( totalUnPay . compareTo ( BigDecimal . ZERO ) = = 0 ) {
//修正已支付数据
if ( subject . getUsedAmount ( ) = = null | |
subject . getUsedAmount ( ) . compareTo ( usedSubjectAmt ) ! = 0 ) {
TbsActivitySubject activitySubject = new TbsActivitySubject ( ) ;
activitySubject . setId ( subject . getId ( ) ) ;
activitySubject . setUsedAmount ( usedSubjectAmt ) ;
activitySubjectService . updateById ( subject ) ;
}
continue ;
}
}
//当前项支付多少
//当前项支付多少
BigDecimal currItemAmount ;
BigDecimal currItemAmount ;
//科目还有多少金额未支付
BigDecimal totalUnPay = subject . getUsedAmount ( ) = = null ? subject . getAmount ( ) : subject . getAmount ( ) . subtract ( subject . getUsedAmount ( ) ) ;
//节点金额>科目的剩余金额
//节点金额>科目的剩余金额
if ( totalUnPay . compareTo ( subjectSurplus ) > = 0 ) {
if ( totalUnPay . compareTo ( subjectSurplus ) > = 0 ) {
currItemAmount = subjectSurplus ;
currItemAmount = subjectSurplus ;
@ -1104,7 +1141,7 @@ public class PortalOfCostApplication {
currItemAmount = totalUnPay ;
currItemAmount = totalUnPay ;
}
}
//科目总支付
//科目总支付
BigDecimal totalPay = subject . getUsed Amoun t( ) . add ( currItemAmount ) ;
BigDecimal totalPay = u sedS ubjectAmt. add ( currItemAmount ) ;
VtbVerificationSubject verificationSubject = new VtbVerificationSubject ( ) ;
VtbVerificationSubject verificationSubject = new VtbVerificationSubject ( ) ;
verificationSubject . setVerificationId ( verification . getId ( ) ) ;
verificationSubject . setVerificationId ( verification . getId ( ) ) ;
@ -1149,10 +1186,37 @@ public class PortalOfCostApplication {
activitySubjectService . updateById ( subject ) ;
activitySubjectService . updateById ( subject ) ;
paymentItemService . save ( paymentItem ) ;
paymentItemService . save ( paymentItem ) ;
verificationSubjectService . save ( verificationSubject ) ;
verificationSubjectService . save ( verificationSubject ) ;
}
}
verificationService . successCommit ( verification . getId ( ) , false ) ;
//判断金额是否用完,用完直接更新状态
//根据ActivitySubject更新活动金额
List < TbsActivitySubject > subjectNewList = activitySubjectService . listByActivityId ( activity . getId ( ) ) ;
Map < Long , List < TbsActivitySubject > > groupActSubject = subjectNewList . stream ( )
. collect ( Collectors . groupingBy ( TbsActivitySubject : : getActivityId ) ) ;
//统计费用申请
BigDecimal totalCostAmt = BigDecimal . ZERO ;
for ( Long actId : groupActSubject . keySet ( ) ) {
TbsActivity tbsActivity = activityService . getById ( actId ) ;
List < TbsActivitySubject > activitySubjects = groupActSubject . get ( actId ) ;
//统计活动
BigDecimal totalActAmt = BigDecimal . ZERO ;
for ( TbsActivitySubject actSubject : activitySubjects ) {
if ( actSubject . getUsedAmount ( ) = = null ) {
continue ;
}
totalActAmt = totalActAmt . add ( actSubject . getUsedAmount ( ) ) ;
}
if ( tbsActivity . getTotalAmount ( ) . compareTo ( totalActAmt ) < = 0 ) {
tbsActivity . setActivityState ( 2 ) ;
}
tbsActivity . setUsedAmount ( totalActAmt ) ;
activityService . updateById ( tbsActivity ) ;
totalCostAmt . add ( totalActAmt ) ;
}
costApply . setTotalActivityUsedAmount ( totalCostAmt ) ;
if ( costApply . getTotalActivityAmount ( ) . compareTo ( costApply . getTotalActivityUsedAmount ( ) ) = = 0 ) {
costApply . setChargeState ( 3 ) ;
}
costApplyService . updateById ( costApply ) ;
}
}
/ * *
/ * *