|
@@ -379,6 +379,7 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
|
|
|
|
|
|
|
|
@Override
|
|
@Override
|
|
|
public Boolean deleteInvoiceById(String id) {
|
|
public Boolean deleteInvoiceById(String id) {
|
|
|
|
|
+ log.info("私有协议-开票记录-删除: id=[{}]",id);
|
|
|
return insPlyIncomeInvoiceMapper.deleteById(id) > 0;
|
|
return insPlyIncomeInvoiceMapper.deleteById(id) > 0;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -523,19 +524,21 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
|
|
|
@Override
|
|
@Override
|
|
|
public BigDecimal getInvoicingAmount(String invoicingId) {
|
|
public BigDecimal getInvoicingAmount(String invoicingId) {
|
|
|
BigDecimal ctualReceivedAmount = new BigDecimal(BigInteger.ZERO);
|
|
BigDecimal ctualReceivedAmount = new BigDecimal(BigInteger.ZERO);
|
|
|
-
|
|
|
|
|
// 获取票据的实际收款金额
|
|
// 获取票据的实际收款金额
|
|
|
List<InsPlyIncomeInvoiceSettlement> insPlyIncomeInvoiceSettlements = insPlyIncomeInvoiceSettlementMapper.selectList(new LambdaQueryWrapper<InsPlyIncomeInvoiceSettlement>()
|
|
List<InsPlyIncomeInvoiceSettlement> insPlyIncomeInvoiceSettlements = insPlyIncomeInvoiceSettlementMapper.selectList(new LambdaQueryWrapper<InsPlyIncomeInvoiceSettlement>()
|
|
|
.eq(InsPlyIncomeInvoiceSettlement::getInvoiceId, invoicingId));
|
|
.eq(InsPlyIncomeInvoiceSettlement::getInvoiceId, invoicingId));
|
|
|
for (InsPlyIncomeInvoiceSettlement settlement : insPlyIncomeInvoiceSettlements) {
|
|
for (InsPlyIncomeInvoiceSettlement settlement : insPlyIncomeInvoiceSettlements) {
|
|
|
ctualReceivedAmount = ctualReceivedAmount.add(new BigDecimal(settlement.getActualReceivedAmount()));
|
|
ctualReceivedAmount = ctualReceivedAmount.add(new BigDecimal(settlement.getActualReceivedAmount()));
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
return ctualReceivedAmount;
|
|
return ctualReceivedAmount;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
@Override
|
|
|
public boolean updateIncomeSettlementStatus(String invoiceType, List<String> invoiceIds) {
|
|
public boolean updateIncomeSettlementStatus(String invoiceType, List<String> invoiceIds) {
|
|
|
|
|
+ log.info("更新结算状态: invoiceType=[{}],invoiceIds=[{}]", invoiceType, JSONUtil.toJsonStr(invoiceIds));
|
|
|
|
|
+ if(CollUtil.isEmpty(invoiceIds)) {
|
|
|
|
|
+ return false;
|
|
|
|
|
+ }
|
|
|
long result = 0;
|
|
long result = 0;
|
|
|
switch (invoiceType) {
|
|
switch (invoiceType) {
|
|
|
case "1":
|
|
case "1":
|
|
@@ -572,13 +575,15 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
|
|
|
// 获取应收的金额
|
|
// 获取应收的金额
|
|
|
InsPlyIncomeInvoice insPlyIncomeInvoice = insPlyIncomeInvoiceMapper.selectById(settlementVo.getInvoicingId());
|
|
InsPlyIncomeInvoice insPlyIncomeInvoice = insPlyIncomeInvoiceMapper.selectById(settlementVo.getInvoicingId());
|
|
|
AssertionUtils.isFail(Objects.isNull(insPlyIncomeInvoice), "发票数据不存在");
|
|
AssertionUtils.isFail(Objects.isNull(insPlyIncomeInvoice), "发票数据不存在");
|
|
|
-
|
|
|
|
|
// 实际已经收的了金额
|
|
// 实际已经收的了金额
|
|
|
BigDecimal ctualReceivedAmount = this.getInvoicingAmount(settlementVo.getInvoicingId());
|
|
BigDecimal ctualReceivedAmount = this.getInvoicingAmount(settlementVo.getInvoicingId());
|
|
|
|
|
|
|
|
|
|
+ // 所有需要结算的金额
|
|
|
|
|
+ BigDecimal allToSettlement = insPlyIncomeInvoice.getReceivableSupervisePremium().add(insPlyIncomeInvoice.getOverinflatedAmount());
|
|
|
// 剩余的金额
|
|
// 剩余的金额
|
|
|
- BigDecimal surplusPremium = insPlyIncomeInvoice.getReceivableSupervisePremium().subtract(ctualReceivedAmount);
|
|
|
|
|
- log.info("invoiceId=[{}],一共需要结算的金额[{}],实际已经结算的金额[{}],本次计划结算的金额[{}]",settlementVo.getInvoicingId(), insPlyIncomeInvoice.getReceivableSupervisePremium(),ctualReceivedAmount.toString(),settlementVo.getActualReceivedAmount());
|
|
|
|
|
|
|
+ BigDecimal surplusPremium = allToSettlement.subtract(ctualReceivedAmount);
|
|
|
|
|
+ log.info("invoiceId=[{}],一共需要结算的金额[{}],实际已经结算的金额[{}],本次计划结算的金额[{}]",
|
|
|
|
|
+ settlementVo.getInvoicingId(), allToSettlement,ctualReceivedAmount,settlementVo.getActualReceivedAmount());
|
|
|
// 校验是否超出了剩余的金额
|
|
// 校验是否超出了剩余的金额
|
|
|
AssertionUtils.isFail(surplusPremium.compareTo(settlementVo.getActualReceivedAmount()) < 0, "已超出应收金额,请核对!");
|
|
AssertionUtils.isFail(surplusPremium.compareTo(settlementVo.getActualReceivedAmount()) < 0, "已超出应收金额,请核对!");
|
|
|
|
|
|
|
@@ -602,6 +607,7 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
|
|
|
|
|
|
|
|
// 判断是否已经结算完成
|
|
// 判断是否已经结算完成
|
|
|
if (surplusPremium.compareTo(settlementVo.getActualReceivedAmount()) == 0) {
|
|
if (surplusPremium.compareTo(settlementVo.getActualReceivedAmount()) == 0) {
|
|
|
|
|
+ log.info("序号为[{}]的发票已经结算完成",insPlyIncomeInvoice.getId());
|
|
|
// 更新发票状态
|
|
// 更新发票状态
|
|
|
insPlyIncomeInvoice.setStatus("1");
|
|
insPlyIncomeInvoice.setStatus("1");
|
|
|
insPlyIncomeInvoiceMapper.updateById(insPlyIncomeInvoice);
|
|
insPlyIncomeInvoiceMapper.updateById(insPlyIncomeInvoice);
|
|
@@ -1165,7 +1171,45 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
|
|
|
@Override
|
|
@Override
|
|
|
public Page<InvoiceRecordResult> getInvoiceRecordList(InvoiceRecordQueryVo invoiceRecordQueryVo) {
|
|
public Page<InvoiceRecordResult> getInvoiceRecordList(InvoiceRecordQueryVo invoiceRecordQueryVo) {
|
|
|
log.info("手续费应收-开票记录-查询:invoiceRecordQueryVo=[{}]", JSONUtil.toJsonStr(invoiceRecordQueryVo));
|
|
log.info("手续费应收-开票记录-查询:invoiceRecordQueryVo=[{}]", JSONUtil.toJsonStr(invoiceRecordQueryVo));
|
|
|
- return baseMapper.getInvoiceRecordList(invoiceRecordQueryVo.getPage(), invoiceRecordQueryVo);
|
|
|
|
|
|
|
+
|
|
|
|
|
+ // 将前端的全部转换为空
|
|
|
|
|
+ // 开票方
|
|
|
|
|
+ if("30".equals(invoiceRecordQueryVo.getInvoiceParty())){
|
|
|
|
|
+ invoiceRecordQueryVo.setInvoiceParty(null);
|
|
|
|
|
+ }
|
|
|
|
|
+ // 应收项(车险/非车险)
|
|
|
|
|
+ if("30".equals(invoiceRecordQueryVo.getAccountsReceivable())){
|
|
|
|
|
+ invoiceRecordQueryVo.setAccountsReceivable(null);
|
|
|
|
|
+ }
|
|
|
|
|
+ // 结算状态
|
|
|
|
|
+ if("30".equals(invoiceRecordQueryVo.getSettlementStatus())){
|
|
|
|
|
+ invoiceRecordQueryVo.setSettlementStatus(null);
|
|
|
|
|
+ }
|
|
|
|
|
+ Page<InvoiceRecordResult> invoiceRecordList = baseMapper.getInvoiceRecordList(invoiceRecordQueryVo.getPage(), invoiceRecordQueryVo);
|
|
|
|
|
+ List<InvoiceRecordResult> records = invoiceRecordList.getRecords();
|
|
|
|
|
+ if(CollUtil.isNotEmpty(records)){
|
|
|
|
|
+ records = records.stream().peek(action->{
|
|
|
|
|
+ String settlementStatusName = Constant.settlementStatusMap.get(Objects.toString(action.getStatus(),""));
|
|
|
|
|
+ action.setSettlementStatusName(settlementStatusName);
|
|
|
|
|
+ String invoiceRiskTypeName = Constant.invoiceRiskTypeMap.get(Objects.toString(action.getInvoiceRiskType(), ""));
|
|
|
|
|
+ action.setAccountsReceivable(invoiceRiskTypeName);
|
|
|
|
|
+ action.setInvoiceRiskTypeName(invoiceRiskTypeName);
|
|
|
|
|
+ List<InsPlyIncomeInvoiceSettlement> insPlyIncomeInvoiceSettlements = baseMapper.queryInvoiceSettlementByInvoiceId(action.getId());
|
|
|
|
|
+ BigDecimal settlementAmount = insPlyIncomeInvoiceSettlements.stream()
|
|
|
|
|
+ .map(InsPlyIncomeInvoiceSettlement::getActualReceivedAmount)
|
|
|
|
|
+ .filter(Objects::nonNull).map(BigDecimal::new)
|
|
|
|
|
+ .reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
|
|
+ BigDecimal receivableSupervisePremium = action.getReceivableSupervisePremium() != null ? action.getReceivableSupervisePremium(): BigDecimal.ZERO;
|
|
|
|
|
+ BigDecimal overinflatedAmount = action.getOverinflatedAmount() != null? action.getOverinflatedAmount(): BigDecimal.ZERO;
|
|
|
|
|
+ BigDecimal remainSettlementAmount = receivableSupervisePremium.add(overinflatedAmount).subtract(settlementAmount);
|
|
|
|
|
+ // 设置已结算的金额
|
|
|
|
|
+ action.setSettlementAmount(settlementAmount);
|
|
|
|
|
+ // 设置待结算金额
|
|
|
|
|
+ action.setRemainSettlementAmount(remainSettlementAmount);
|
|
|
|
|
+ }).toList();
|
|
|
|
|
+ invoiceRecordList.setRecords(records);
|
|
|
|
|
+ }
|
|
|
|
|
+ return invoiceRecordList;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
@Override
|
|
@@ -1249,6 +1293,22 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
|
|
|
*/
|
|
*/
|
|
|
@Override
|
|
@Override
|
|
|
public Page<ExportSuperviseSettlementExcelDto> superviseSettlementExcel(Page page, SettlementQueryVo settlementQueryVo) {
|
|
public Page<ExportSuperviseSettlementExcelDto> superviseSettlementExcel(Page page, SettlementQueryVo settlementQueryVo) {
|
|
|
|
|
+ log.info("查询结算手续费结算记录:settlementQueryVo=[{}]", JSONUtil.toJsonStr(settlementQueryVo));
|
|
|
|
|
+ if("30".equals(settlementQueryVo.getInvoiceParty())){
|
|
|
|
|
+ settlementQueryVo.setInvoiceParty(null);
|
|
|
|
|
+ }
|
|
|
|
|
+ if("30".equals(settlementQueryVo.getInvoiceRiskType())){
|
|
|
|
|
+ settlementQueryVo.setInvoiceRiskType(null);
|
|
|
|
|
+ }
|
|
|
|
|
+ if("30".equals(settlementQueryVo.getStatus())){
|
|
|
|
|
+ settlementQueryVo.setStatus(null);
|
|
|
|
|
+ }
|
|
|
|
|
+// if("30".equals(settlementQueryVo.getAccountsReceivable())){
|
|
|
|
|
+// settlementQueryVo.setAccountsReceivable(null);
|
|
|
|
|
+// }
|
|
|
|
|
+// if("accountsReceivable"){
|
|
|
|
|
+//
|
|
|
|
|
+// }
|
|
|
Page<ExportSuperviseSettlementExcelDto> exportSuperviseSettlementExcelDtos = baseMapper.superviseSettlementExcelDtos(page, settlementQueryVo);
|
|
Page<ExportSuperviseSettlementExcelDto> exportSuperviseSettlementExcelDtos = baseMapper.superviseSettlementExcelDtos(page, settlementQueryVo);
|
|
|
exportSuperviseSettlementExcelDtos.getRecords().forEach(dto -> {
|
|
exportSuperviseSettlementExcelDtos.getRecords().forEach(dto -> {
|
|
|
if (dto.getInvoiceParty().equals("1")) {
|
|
if (dto.getInvoiceParty().equals("1")) {
|
|
@@ -1262,6 +1322,7 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
|
|
|
case "3" -> dto.setInvoiceType("驾意险手续费");
|
|
case "3" -> dto.setInvoiceType("驾意险手续费");
|
|
|
case "4" -> dto.setInvoiceType("驾意险跟单费");
|
|
case "4" -> dto.setInvoiceType("驾意险跟单费");
|
|
|
}
|
|
}
|
|
|
|
|
+ dto.setInvoiceTypeName(Constant.invoiceRiskTypeMap.get(Objects.toString(dto.getInvoiceType())));
|
|
|
SysUploadFiles file = sysUploadFilesMapper.selectById(dto.getFileId());
|
|
SysUploadFiles file = sysUploadFilesMapper.selectById(dto.getFileId());
|
|
|
if (file != null) {
|
|
if (file != null) {
|
|
|
dto.setFileUrl(MinioUtils.getPresignedObjectUrl("jzg", file.getFileName()));
|
|
dto.setFileUrl(MinioUtils.getPresignedObjectUrl("jzg", file.getFileName()));
|