|
@ -257,6 +257,7 @@ public class VtbVerificationServiceImpl extends ServiceImpl<VtbVerificationMappe |
|
|
if(CollectionUtil.isNotEmpty(activityCenterGoods4Update)){ |
|
|
if(CollectionUtil.isNotEmpty(activityCenterGoods4Update)){ |
|
|
activityCenterGoodsService.updateBatchById(activityCenterGoods4Update); |
|
|
activityCenterGoodsService.updateBatchById(activityCenterGoods4Update); |
|
|
List<VtbFundFlow> addFundFlowList = new ArrayList<>(); |
|
|
List<VtbFundFlow> addFundFlowList = new ArrayList<>(); |
|
|
|
|
|
//协议类支持自动分配
|
|
|
buildFundFlows(verification.getId(), addFundFlowList, activityCenterGoods4Update,currentSubjectAmt); |
|
|
buildFundFlows(verification.getId(), addFundFlowList, activityCenterGoods4Update,currentSubjectAmt); |
|
|
if(CollectionUtil.isNotEmpty(addFundFlowList)){ |
|
|
if(CollectionUtil.isNotEmpty(addFundFlowList)){ |
|
|
fundFlowService.saveBatch(addFundFlowList); |
|
|
fundFlowService.saveBatch(addFundFlowList); |
|
@ -1164,9 +1165,19 @@ public class VtbVerificationServiceImpl extends ServiceImpl<VtbVerificationMappe |
|
|
log.info("活动核销提交成功。verificationId:{}",verificationId); |
|
|
log.info("活动核销提交成功。verificationId:{}",verificationId); |
|
|
VtbVerification verification = this.getById(verificationId); |
|
|
VtbVerification verification = this.getById(verificationId); |
|
|
boolean checkZero = verification.getAmount().compareTo(BigDecimal.ZERO)==0; |
|
|
boolean checkZero = verification.getAmount().compareTo(BigDecimal.ZERO)==0; |
|
|
|
|
|
|
|
|
|
|
|
List<VtbVerificationSubjectCenter> subjectCenterList = vtbVerificationSubjectCenterService.listByVerificationId(verificationId); |
|
|
|
|
|
boolean isCenterCommit = subjectCenterList.size()>0; |
|
|
//0元核销只改变状态
|
|
|
//0元核销只改变状态
|
|
|
if(checkZero){ |
|
|
if(checkZero){ |
|
|
|
|
|
//自定义成本中心提交后,无法再自动分配刷新金额
|
|
|
|
|
|
if(isCenterCommit){ |
|
|
|
|
|
//TODO 刷洗自定义金额
|
|
|
|
|
|
|
|
|
|
|
|
}else { |
|
|
|
|
|
//自动分配刷新金额
|
|
|
fundFlowService.flushActivityAmount(verification.getActivityId()); |
|
|
fundFlowService.flushActivityAmount(verification.getActivityId()); |
|
|
|
|
|
} |
|
|
verification = new VtbVerification(); |
|
|
verification = new VtbVerification(); |
|
|
verification.setId(verificationId); |
|
|
verification.setId(verificationId); |
|
|
verification.setVerificationState(VtbVerificationState.Finished.getCode()); |
|
|
verification.setVerificationState(VtbVerificationState.Finished.getCode()); |
|
@ -1191,6 +1202,7 @@ public class VtbVerificationServiceImpl extends ServiceImpl<VtbVerificationMappe |
|
|
List<VtbFundFlow> addFundFlowList = new ArrayList<>(); |
|
|
List<VtbFundFlow> addFundFlowList = new ArrayList<>(); |
|
|
LocalDateTime now = LocalDateTime.now(); |
|
|
LocalDateTime now = LocalDateTime.now(); |
|
|
Date now2 = Date.from(now.atZone(ZoneId.systemDefault()).toInstant()); |
|
|
Date now2 = Date.from(now.atZone(ZoneId.systemDefault()).toInstant()); |
|
|
|
|
|
|
|
|
for (VtbVerificationSubject verificationSubject : verificationSubjects) { |
|
|
for (VtbVerificationSubject verificationSubject : verificationSubjects) { |
|
|
Long subjectId = verificationSubject.getSubjectId(); |
|
|
Long subjectId = verificationSubject.getSubjectId(); |
|
|
BigDecimal usedAmount = verificationSubject.getUsedAmount(); |
|
|
BigDecimal usedAmount = verificationSubject.getUsedAmount(); |
|
@ -1206,7 +1218,17 @@ public class VtbVerificationServiceImpl extends ServiceImpl<VtbVerificationMappe |
|
|
String subjectCenterKey = activityCenter.getCenterType()+":"+activityCenter.getCenterId(); |
|
|
String subjectCenterKey = activityCenter.getCenterType()+":"+activityCenter.getCenterId(); |
|
|
List<TbsActivityCenterGoods> activityGoodsListOfSubjectCenter = activityGoodsOfSubjectCenter.get(subjectCenterKey); |
|
|
List<TbsActivityCenterGoods> activityGoodsListOfSubjectCenter = activityGoodsOfSubjectCenter.get(subjectCenterKey); |
|
|
//当前成本中心分配金额
|
|
|
//当前成本中心分配金额
|
|
|
BigDecimal currentCenterAmount; |
|
|
BigDecimal currentCenterAmount = BigDecimal.ZERO; |
|
|
|
|
|
if(isCenterCommit){ |
|
|
|
|
|
//刷洗自定义成本中心金额
|
|
|
|
|
|
for (VtbVerificationSubjectCenter subjectCenter : subjectCenterList) { |
|
|
|
|
|
if(subjectCenter.getActivityCenterId().equals(activityCenter.getId())){ |
|
|
|
|
|
currentCenterAmount = subjectCenter.getUsedAmount(); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
buildFundFlows(verificationId, addFundFlowList, activityGoodsListOfSubjectCenter,currentCenterAmount); |
|
|
|
|
|
}else { |
|
|
|
|
|
//按比例分配
|
|
|
if(i == activityCenters.size()-1){ |
|
|
if(i == activityCenters.size()-1){ |
|
|
currentCenterAmount = usedAmount.subtract(preCenterAmount); |
|
|
currentCenterAmount = usedAmount.subtract(preCenterAmount); |
|
|
}else { |
|
|
}else { |
|
@ -1218,6 +1240,9 @@ public class VtbVerificationServiceImpl extends ServiceImpl<VtbVerificationMappe |
|
|
buildFundFlows(verificationId, addFundFlowList, activityGoodsListOfSubjectCenter,currentCenterAmount); |
|
|
buildFundFlows(verificationId, addFundFlowList, activityGoodsListOfSubjectCenter,currentCenterAmount); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
//调用支付接口
|
|
|
BmsSubject subject = new BmsSubject(); |
|
|
BmsSubject subject = new BmsSubject(); |
|
|
subject.setSubjectCode(verificationSubject.getSubjectCode()); |
|
|
subject.setSubjectCode(verificationSubject.getSubjectCode()); |
|
|
subject.setSubjectName(verificationSubject.getSubjectName()); |
|
|
subject.setSubjectName(verificationSubject.getSubjectName()); |
|
@ -1267,6 +1292,9 @@ public class VtbVerificationServiceImpl extends ServiceImpl<VtbVerificationMappe |
|
|
// log.error("发送对象到OA服务失败,数据内容如下:{}",JsonUtil.objectToJson(apticlaim));
|
|
|
// log.error("发送对象到OA服务失败,数据内容如下:{}",JsonUtil.objectToJson(apticlaim));
|
|
|
// }
|
|
|
// }
|
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
fundFlowService.saveBatch(addFundFlowList); |
|
|
fundFlowService.saveBatch(addFundFlowList); |
|
|
//更新已用费用记录,并更新活动状态是否完成
|
|
|
//更新已用费用记录,并更新活动状态是否完成
|
|
|
fundFlowService.flushActivityAmount(verification.getActivityId()); |
|
|
fundFlowService.flushActivityAmount(verification.getActivityId()); |
|
@ -1276,6 +1304,7 @@ public class VtbVerificationServiceImpl extends ServiceImpl<VtbVerificationMappe |
|
|
VtbVerificationSubject subjectParam = new VtbVerificationSubject(); |
|
|
VtbVerificationSubject subjectParam = new VtbVerificationSubject(); |
|
|
subjectParam.setEffectiveFlag(1); |
|
|
subjectParam.setEffectiveFlag(1); |
|
|
verificationSubjectService.update(subjectParam,subjectLqw); |
|
|
verificationSubjectService.update(subjectParam,subjectLqw); |
|
|
|
|
|
//TODO 更新成本中心维度
|
|
|
|
|
|
|
|
|
BigDecimal totalCostApplyUsed = costApply.getTotalActivityUsedAmount().add(verification.getAmount()); |
|
|
BigDecimal totalCostApplyUsed = costApply.getTotalActivityUsedAmount().add(verification.getAmount()); |
|
|
TbsCostApply updCost = new TbsCostApply(); |
|
|
TbsCostApply updCost = new TbsCostApply(); |
|
@ -1323,7 +1352,7 @@ public class VtbVerificationServiceImpl extends ServiceImpl<VtbVerificationMappe |
|
|
* @param verificationId |
|
|
* @param verificationId |
|
|
* @param addFundFlowList |
|
|
* @param addFundFlowList |
|
|
* @param activityCenterGoodsOfSubject |
|
|
* @param activityCenterGoodsOfSubject |
|
|
* @param usedAmount |
|
|
* @param usedAmount 成本中心维度 |
|
|
*/ |
|
|
*/ |
|
|
private void buildFundFlows(Long verificationId, |
|
|
private void buildFundFlows(Long verificationId, |
|
|
List<VtbFundFlow> addFundFlowList, |
|
|
List<VtbFundFlow> addFundFlowList, |
|
@ -1343,9 +1372,9 @@ public class VtbVerificationServiceImpl extends ServiceImpl<VtbVerificationMappe |
|
|
currentTimeAmount = usedAmount.subtract(totalPrefixAmount); |
|
|
currentTimeAmount = usedAmount.subtract(totalPrefixAmount); |
|
|
}else { |
|
|
}else { |
|
|
currentTimeAmount = usedAmount.multiply(centerGoods.getCenterGoodsRate()) |
|
|
currentTimeAmount = usedAmount.multiply(centerGoods.getCenterGoodsRate()) |
|
|
.multiply(centerGoods.getCenterRate()) |
|
|
//.multiply(centerGoods.getCenterRate())
|
|
|
//四舍五入保留两位小数
|
|
|
//四舍五入保留两位小数
|
|
|
.divide(new BigDecimal("10000"), RoundingMode.HALF_DOWN) |
|
|
.divide(new BigDecimal("100"), RoundingMode.HALF_DOWN) |
|
|
.setScale(2, RoundingMode.DOWN);; |
|
|
.setScale(2, RoundingMode.DOWN);; |
|
|
} |
|
|
} |
|
|
//可用金额
|
|
|
//可用金额
|
|
|