|
|
@@ -130,6 +130,8 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
|
|
|
@Value("${upload.file.url}")
|
|
|
private String uploadUrl;
|
|
|
|
|
|
+ // 常量定义,消除魔法值
|
|
|
+ private static final String SETTLE_STATUS_RESET = "0";
|
|
|
// 车辆险种手续费结算锁
|
|
|
private static final String CAR_INVOICING_COMMISSION_LOCK = "CAR_INVOICING_COMMISSION_LOCK:";
|
|
|
// 车辆险种跟单费结算锁
|
|
|
@@ -1449,18 +1451,45 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
public boolean deleteSettlementById(String id) {
|
|
|
log.info("私有协议-结算记录-删除: id=[{}]",id);
|
|
|
InsPlyIncomeInvoiceSettlement settlement = insPlyIncomeInvoiceSettlementMapper.selectById(id);
|
|
|
if(settlement == null){
|
|
|
- return false;
|
|
|
+ throw new SystemException("结算记录不存在");
|
|
|
}
|
|
|
String invoiceId = settlement.getInvoiceId();
|
|
|
- if(StrUtil.isNotEmpty(invoiceId)){
|
|
|
- insPlyIncomeInvoiceMapper.update(null,
|
|
|
- new LambdaUpdateWrapper<InsPlyIncomeInvoice>()
|
|
|
- .set(InsPlyIncomeInvoice::getStatus,"0").eq(InsPlyIncomeInvoice::getId,invoiceId));
|
|
|
- }
|
|
|
+ if (StrUtil.isBlank(invoiceId)){
|
|
|
+ throw new SystemException("结算记录id不存在");
|
|
|
+ }
|
|
|
+ insPlyIncomeInvoiceMapper.update(null,
|
|
|
+ new LambdaUpdateWrapper<InsPlyIncomeInvoice>()
|
|
|
+ .set(InsPlyIncomeInvoice::getStatus,"0").eq(InsPlyIncomeInvoice::getId,invoiceId));
|
|
|
+
|
|
|
+ // 查询中间表:使用 QueryWrapper,增加逻辑删除过滤
|
|
|
+ LambdaQueryWrapper<InsPlyIncomeInvoiceLink> linkQueryWrapper = new LambdaQueryWrapper<>();
|
|
|
+ linkQueryWrapper.eq(InsPlyIncomeInvoiceLink::getInvoiceId, invoiceId);
|
|
|
+ linkQueryWrapper.eq(InsPlyIncomeInvoiceLink::getIsDelete, SETTLE_STATUS_RESET);
|
|
|
+ List<InsPlyIncomeInvoiceLink> linkList = insPlyIncomeInvoiceLinkMapper.selectList(linkQueryWrapper);
|
|
|
+
|
|
|
+ // 提取incomeId列表
|
|
|
+ List<String> incomeIdList = linkList.stream()
|
|
|
+ .map(InsPlyIncomeInvoiceLink::getIncomeId)
|
|
|
+ .distinct()
|
|
|
+ .collect(Collectors.toList());
|
|
|
+
|
|
|
+ // 构造更新条件,增加主表逻辑删除过滤
|
|
|
+ LambdaUpdateWrapper<InsPlyIncome> incomeUpdateWrapper = new LambdaUpdateWrapper<>();
|
|
|
+ incomeUpdateWrapper.set(InsPlyIncome::getSettlementStatus, SETTLE_STATUS_RESET)
|
|
|
+ .set(InsPlyIncome::getSuperviseSettlement, SETTLE_STATUS_RESET)
|
|
|
+ .set(InsPlyIncome::getOtherSettlement, SETTLE_STATUS_RESET)
|
|
|
+ .set(InsPlyIncome::getJySuperviseSettlement, SETTLE_STATUS_RESET)
|
|
|
+ .set(InsPlyIncome::getJyOtherSettlement, SETTLE_STATUS_RESET)
|
|
|
+ .eq(InsPlyIncome::getIsDelete, SETTLE_STATUS_RESET)
|
|
|
+ .in(InsPlyIncome::getId, incomeIdList);
|
|
|
+
|
|
|
+ // 执行更新
|
|
|
+ baseMapper.update(null, incomeUpdateWrapper);
|
|
|
return insPlyIncomeInvoiceSettlementMapper.deleteById(id) > 0;
|
|
|
}
|
|
|
|