|
@ -139,6 +139,118 @@ public class PayPaymentServiceImpl extends ServiceImpl<PayPaymentMapper,PayPayme |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
PayPaymentItem payPaymentItem = new PayPaymentItem(); |
|
|
|
|
|
payPaymentItem = CopierUtil.copy(payPayment,payPaymentItem); |
|
|
|
|
|
payPaymentItem.setItemPayAmount(payPayment.getPayAmount()); |
|
|
|
|
|
payPaymentItem.setRemark(payPayment.getRemark()); |
|
|
|
|
|
|
|
|
|
|
|
if(vtbSub!=null) { |
|
|
|
|
|
String verCode = vtbSub.getVerificationSubCode(); |
|
|
|
|
|
if(verCode.contains("_")){ |
|
|
|
|
|
verCode = verCode.substring(0,verCode.indexOf("_")); |
|
|
|
|
|
} |
|
|
|
|
|
payPaymentItem.setVerificationId(vtbSub.getVerificationId()); |
|
|
|
|
|
payPaymentItem.setVerificationMainCode(verCode); |
|
|
|
|
|
payPaymentItem.setVerificationCode(vtbSub.getVerificationSubCode()); |
|
|
|
|
|
payPaymentItem.setVerificationSubjectId(vtbSub.getId()); |
|
|
|
|
|
payPaymentItem.setActivityId(vtbSub.getActivityId()); |
|
|
|
|
|
payPaymentItem.setSubjectCode(vtbSub.getSubjectCode()); |
|
|
|
|
|
payPaymentItem.setSubjectId(vtbSub.getSubjectId()); |
|
|
|
|
|
payPaymentItem.setSubjectName(vtbSub.getSubjectName()); |
|
|
|
|
|
}else if(verificationList.size()>0){ |
|
|
|
|
|
VtbVerification vtbMain = verificationList.get(0); |
|
|
|
|
|
payPaymentItem.setVerificationId(vtbMain.getId()); |
|
|
|
|
|
payPaymentItem.setVerificationMainCode(vtbMain.getVerificationMainCode()); |
|
|
|
|
|
payPaymentItem.setVerificationCode(vtbMain.getVerificationCode()); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
this.save(payPayment); |
|
|
|
|
|
|
|
|
|
|
|
payPaymentItem.setPaymentId(payPayment.getId()); |
|
|
|
|
|
|
|
|
|
|
|
paymentItemService.save(payPaymentItem); |
|
|
|
|
|
|
|
|
|
|
|
return payPayment; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
|
@Transactional(rollbackFor = Exception.class) |
|
|
|
|
|
public PayPayment unpayment(PayPaymentBo paymentBo) { |
|
|
|
|
|
String payType = paymentBo.getPayType(); |
|
|
|
|
|
if(!payType.equals(PaymentType.PAYMENT)&&!payType.equals(PaymentType.UN_PAYMENT)){ |
|
|
|
|
|
Assert.throwEx("支付类型异常"); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
LambdaQueryWrapper<PayPayment> lqw = new LambdaQueryWrapper<>(); |
|
|
|
|
|
lqw.eq(PayPayment::getErpId,paymentBo.getErpId()); |
|
|
|
|
|
if(this.count(lqw)>0){ |
|
|
|
|
|
Assert.throwEx("已存在ERPID"); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
SysUser sysUser = sysUserService.getByAccount(paymentBo.getUserCode()); |
|
|
|
|
|
if(sysUser==null){ |
|
|
|
|
|
Assert.throwEx("人员工号异常"); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
LambdaQueryWrapper<VtbVerification> vtbLqw = new LambdaQueryWrapper<>(); |
|
|
|
|
|
vtbLqw.eq(VtbVerification::getVerificationMainCode,paymentBo.getVerificationSubCode()); |
|
|
|
|
|
List<VtbVerification> verificationList = verificationService.list(vtbLqw); |
|
|
|
|
|
// if(verificationList.size()==0){
|
|
|
|
|
|
// Assert.throwEx("核销编码异常");
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
|
|
VtbVerificationSubject vtbSub = verificationSubjectService.getByVerificationSubjectCode(paymentBo.getVerificationSubCode()); |
|
|
|
|
|
if(vtbSub==null && verificationList.size()==0){ |
|
|
|
|
|
Assert.throwEx("核销编码异常"); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
LambdaQueryWrapper<PayPaymentItem> lambdaQueryWrapper = new LambdaQueryWrapper<>(); |
|
|
|
|
|
lambdaQueryWrapper.eq(PayPaymentItem::getVerificationMainCode,paymentBo.getVerificationSubCode()); |
|
|
|
|
|
List<PayPaymentItem> payPaymentItemList = paymentItemService.list(lambdaQueryWrapper); |
|
|
|
|
|
BigDecimal payedAmount = payPaymentItemList.stream().map(a->a.getItemPayAmount()).reduce(BigDecimal.ZERO,BigDecimal::add); |
|
|
|
|
|
BigDecimal verificationAmount = null; |
|
|
|
|
|
if(vtbSub!=null){ |
|
|
|
|
|
verificationAmount = vtbSub.getUsedAmount(); |
|
|
|
|
|
}else if(verificationList.size()!=0) { |
|
|
|
|
|
verificationAmount = verificationList.stream().map(a -> a.getAmount()).reduce(BigDecimal.ZERO, BigDecimal::add); |
|
|
|
|
|
}else{ |
|
|
|
|
|
Assert.throwEx("核销金额异常"); |
|
|
|
|
|
} |
|
|
|
|
|
BigDecimal notPayAmount = verificationAmount.subtract(payedAmount); |
|
|
|
|
|
|
|
|
|
|
|
if(paymentBo.getPayAmount().compareTo(notPayAmount)>0){ |
|
|
|
|
|
Assert.throwEx("支付金额已超出可支付额"); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
PayPayment payPayment = new PayPayment(); |
|
|
|
|
|
payPayment.setPayType("unPay"); |
|
|
|
|
|
payPayment.setPayCode(paymentBo.getErpId()); |
|
|
|
|
|
payPayment.setPayAmount(paymentBo.getPayAmount()); |
|
|
|
|
|
payPayment.setUserId(sysUser.getId()); |
|
|
|
|
|
payPayment.setUserCode(sysUser.getCode()); |
|
|
|
|
|
payPayment.setUserName(sysUser.getName()); |
|
|
|
|
|
payPayment.setPayTime(paymentBo.getPayTime()); |
|
|
|
|
|
payPayment.setPayDate(paymentBo.getPayDate()); |
|
|
|
|
|
payPayment.setBillNumber(paymentBo.getBillNumber()); |
|
|
|
|
|
payPayment.setRemark(paymentBo.getRemark()); |
|
|
|
|
|
payPayment.setTenantId("001"); |
|
|
|
|
|
payPayment.setErpId(paymentBo.getErpId()); |
|
|
|
|
|
|
|
|
|
|
|
if(vtbSub!=null) { |
|
|
|
|
|
payPayment.setSupplierId(vtbSub.getSupplierId()); |
|
|
|
|
|
payPayment.setSupplierCode(vtbSub.getSupplierCode()); |
|
|
|
|
|
payPayment.setSupplierName(vtbSub.getSupplierName()); |
|
|
|
|
|
payPayment.setCostApplyId(vtbSub.getCostApplyId()); |
|
|
|
|
|
}else if(verificationList.size()>0) { |
|
|
|
|
|
VtbVerification vtbMain = verificationList.get(0); |
|
|
|
|
|
payPayment.setSupplierId(vtbMain.getSupplierId()); |
|
|
|
|
|
payPayment.setSupplierCode(vtbMain.getSupplierCode()); |
|
|
|
|
|
payPayment.setSupplierName(vtbMain.getSupplierName()); |
|
|
|
|
|
payPayment.setCostApplyId(vtbMain.getCostApplyId()); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
PayPaymentItem payPaymentItem = new PayPaymentItem(); |
|
|
PayPaymentItem payPaymentItem = new PayPaymentItem(); |
|
|
payPaymentItem = CopierUtil.copy(payPayment,payPaymentItem); |
|
|
payPaymentItem = CopierUtil.copy(payPayment,payPaymentItem); |
|
|
payPaymentItem.setItemPayAmount(payPayment.getPayAmount()); |
|
|
payPaymentItem.setItemPayAmount(payPayment.getPayAmount()); |
|
|