|
@ -107,6 +107,7 @@ import org.springframework.transaction.annotation.Transactional; |
|
|
import java.math.BigDecimal; |
|
|
import java.math.BigDecimal; |
|
|
import java.util.*; |
|
|
import java.util.*; |
|
|
import java.util.concurrent.*; |
|
|
import java.util.concurrent.*; |
|
|
|
|
|
import java.util.function.Predicate; |
|
|
import java.util.stream.Collectors; |
|
|
import java.util.stream.Collectors; |
|
|
|
|
|
|
|
|
/** |
|
|
/** |
|
@ -275,6 +276,15 @@ public class FinCollectionConfirmationService extends MybatisBaseService<FinColl |
|
|
IPage<FinCollectionConfirmationVo> pagging = baseMapper.selectPageVo(page, qw); |
|
|
IPage<FinCollectionConfirmationVo> pagging = baseMapper.selectPageVo(page, qw); |
|
|
List<FinCollectionConfirmationVo> records = pagging.getRecords(); |
|
|
List<FinCollectionConfirmationVo> records = pagging.getRecords(); |
|
|
for (FinCollectionConfirmationVo record : records) { |
|
|
for (FinCollectionConfirmationVo record : records) { |
|
|
|
|
|
if (StringUtils.isNotBlank(record.getSource())) { |
|
|
|
|
|
if (record.getSource().equals("02")) { |
|
|
|
|
|
record.setLoan(true); |
|
|
|
|
|
} else { |
|
|
|
|
|
record.setLoan(false); |
|
|
|
|
|
} |
|
|
|
|
|
} else { |
|
|
|
|
|
record.setLoan(false); |
|
|
|
|
|
} |
|
|
//是否有余额
|
|
|
//是否有余额
|
|
|
if (StringUtils.isNotBlank(record.getBalance())) { |
|
|
if (StringUtils.isNotBlank(record.getBalance())) { |
|
|
//余额是0
|
|
|
//余额是0
|
|
@ -3523,6 +3533,10 @@ public class FinCollectionConfirmationService extends MybatisBaseService<FinColl |
|
|
if (StringUtils.isNotBlank(data.getVinNo()) && StringUtils.isNotBlank(data.getVehMark())) { |
|
|
if (StringUtils.isNotBlank(data.getVinNo()) && StringUtils.isNotBlank(data.getVehMark())) { |
|
|
rsk.setVinNo(data.getVinNo() + "/" + data.getVehMark()); |
|
|
rsk.setVinNo(data.getVinNo() + "/" + data.getVehMark()); |
|
|
} |
|
|
} |
|
|
|
|
|
String noReturnMoney = finUncollectedReceivablesDetailedJRService.selNoReturnMoneyRsk(receivablesSid); |
|
|
|
|
|
if (StringUtils.isNotBlank(noReturnMoney)) { |
|
|
|
|
|
rsk.setNoReceivableMoney(noReturnMoney); |
|
|
|
|
|
} |
|
|
} |
|
|
} |
|
|
} else { |
|
|
} else { |
|
|
FinUncollectedReceivablesDetailedJR jr = finUncollectedReceivablesDetailedJRService.fetchBySid(receivablesSid); |
|
|
FinUncollectedReceivablesDetailedJR jr = finUncollectedReceivablesDetailedJRService.fetchBySid(receivablesSid); |
|
@ -3534,13 +3548,19 @@ public class FinCollectionConfirmationService extends MybatisBaseService<FinColl |
|
|
if (StringUtils.isNotBlank(data.getVinNo()) && StringUtils.isNotBlank(data.getVehMark())) { |
|
|
if (StringUtils.isNotBlank(data.getVinNo()) && StringUtils.isNotBlank(data.getVehMark())) { |
|
|
rsk.setVinNo(data.getVinNo() + "/" + data.getVehMark()); |
|
|
rsk.setVinNo(data.getVinNo() + "/" + data.getVehMark()); |
|
|
} |
|
|
} |
|
|
|
|
|
String noReturnMoney = finUncollectedReceivablesDetailedJRService.selNoReturnMoneyJR(busSid); |
|
|
|
|
|
if (StringUtils.isNotBlank(noReturnMoney)) { |
|
|
|
|
|
rsk.setNoReceivableMoney(noReturnMoney); |
|
|
|
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
rsk.setCurrentReceivableMoney(v.getCurrentReceivableMoney()); |
|
|
rsk.setReceivablesName(v.getReceivablesName()); |
|
|
rsk.setReceivablesName(v.getReceivablesName()); |
|
|
rsk.setSid(v.getSid()); |
|
|
rsk.setSid(v.getSid()); |
|
|
rsk.setSubscriptionMoney(v.getSubscriptionMoney()); |
|
|
rsk.setSubscriptionMoney(v.getSubscriptionMoney()); |
|
|
rsk.setReceivablesSid(v.getReceivablesSid()); |
|
|
rsk.setReceivablesSid(v.getReceivablesSid()); |
|
|
|
|
|
rsk.setAuditState(String.valueOf(v.getAuditState())); |
|
|
rskList.add(rsk); |
|
|
rskList.add(rsk); |
|
|
}); |
|
|
}); |
|
|
} |
|
|
} |
|
@ -3655,13 +3675,10 @@ public class FinCollectionConfirmationService extends MybatisBaseService<FinColl |
|
|
baseMapper.updateById(confirmation); |
|
|
baseMapper.updateById(confirmation); |
|
|
|
|
|
|
|
|
//===========================================
|
|
|
//===========================================
|
|
|
List<BaseVehicleStateDto> dtoList = new ArrayList<>(); |
|
|
|
|
|
//查询该申请下的所有待审核的款项明细
|
|
|
//查询该申请下的所有待审核的款项明细
|
|
|
|
|
|
|
|
|
BigDecimal subscriptionMoneyAll = new BigDecimal("0"); |
|
|
BigDecimal subscriptionMoneyAll = new BigDecimal("0"); |
|
|
List<FinSelectedReceivablesDetailedVo> finSelectedReceivablesDetailedVos = finSelectedReceivablesDetailedService.fetchByAuditState(sid, 1); |
|
|
List<FinSelectedReceivablesDetailedVo> finSelectedReceivablesDetailedVos = finSelectedReceivablesDetailedService.fetchByAuditState(sid, 1); |
|
|
if (finSelectedReceivablesDetailedVos.size() > 0) { |
|
|
if (finSelectedReceivablesDetailedVos.size() > 0) { |
|
|
if (confirmation.getPushMessgae() == 1) {//简易订单定金
|
|
|
|
|
|
finSelectedReceivablesDetailedVos.stream().forEach(v -> { |
|
|
finSelectedReceivablesDetailedVos.stream().forEach(v -> { |
|
|
//已选款项明细sid
|
|
|
//已选款项明细sid
|
|
|
String selectSid = v.getSid(); |
|
|
String selectSid = v.getSid(); |
|
@ -3672,67 +3689,10 @@ public class FinCollectionConfirmationService extends MybatisBaseService<FinColl |
|
|
finSelectedReceivablesDetailed.setAuditDate(DateUtil.today()); |
|
|
finSelectedReceivablesDetailed.setAuditDate(DateUtil.today()); |
|
|
finSelectedReceivablesDetailedService.updateById(finSelectedReceivablesDetailed); |
|
|
finSelectedReceivablesDetailedService.updateById(finSelectedReceivablesDetailed); |
|
|
}); |
|
|
}); |
|
|
} else { |
|
|
|
|
|
finSelectedReceivablesDetailedVos.stream().forEach(v -> { |
|
|
|
|
|
//已选款项明细sid
|
|
|
|
|
|
String selectSid = v.getSid(); |
|
|
|
|
|
//应收未收款项明细sid
|
|
|
|
|
|
String receivablesSid = v.getReceivablesSid(); |
|
|
|
|
|
FinUncollectedReceivablesDetailed finUncollectedReceivablesDetailed = finUncollectedReceivablesDetailedService.fetchBySid(receivablesSid); |
|
|
|
|
|
if (v.getSubscribedOf() == 0) { |
|
|
|
|
|
//更新认款状态
|
|
|
|
|
|
finUncollectedReceivablesDetailed.setSubscriptionState(finUncollectedReceivablesDetailed.getCurrentReceivableMoney().compareTo(BigDecimal.ZERO) == 0 ? 3 : 2); |
|
|
|
|
|
finUncollectedReceivablesDetailedService.updateById(finUncollectedReceivablesDetailed); |
|
|
|
|
|
} |
|
|
|
|
|
FinSelectedReceivablesDetailed finSelectedReceivablesDetailed = finSelectedReceivablesDetailedService.fetchBySid(selectSid); |
|
|
|
|
|
//更新已选款项明细的审核状态1待审核/2已驳回/3已审核
|
|
|
|
|
|
finSelectedReceivablesDetailed.setAuditState(3); |
|
|
|
|
|
//更新审核时间
|
|
|
|
|
|
finSelectedReceivablesDetailed.setAuditDate(DateUtil.today()); |
|
|
|
|
|
finSelectedReceivablesDetailedService.updateById(finSelectedReceivablesDetailed); |
|
|
|
|
|
//加装配置手续费推送开票管理
|
|
|
|
|
|
finSelectedReceivablesDetailedService.tskpgl(v); |
|
|
|
|
|
//ToDo:查询是否符合待出库的条件
|
|
|
|
|
|
//该合同编号下的该车架号的所有认款金额
|
|
|
|
|
|
if ("2".equals(finUncollectedReceivablesDetailed.getPayTypeKey())) { |
|
|
|
|
|
List<FinSelectedReceivablesDetailedVo> voList = finSelectedReceivablesDetailedService.selectListByVin1(v.getContractNo(), finUncollectedReceivablesDetailed.getBusVinSid(), 3); |
|
|
|
|
|
BigDecimal bigDecimalVinAll = voList.stream().map(FinSelectedReceivablesDetailedVo::getSubscriptionMoney).map(BigDecimal::new).reduce(BigDecimal.ZERO, BigDecimal::add); |
|
|
|
|
|
List<FinUncollectedReceivablesDetailed> unList = finUncollectedReceivablesDetailedService.selectListByBusVinSid1(finUncollectedReceivablesDetailed.getBusVinSid()); |
|
|
|
|
|
BigDecimal unDecimalVinAll = unList.stream().map(FinUncollectedReceivablesDetailed::getReveivableMoney).map(BigDecimal::new).reduce(BigDecimal.ZERO, BigDecimal::add); |
|
|
|
|
|
//查询该合同编号下的销售订单的单车成交价
|
|
|
|
|
|
BigDecimal leftAll = unDecimalVinAll; |
|
|
|
|
|
BigDecimal rightAll = bigDecimalVinAll; |
|
|
|
|
|
if (leftAll.compareTo(rightAll) <= 0) { |
|
|
|
|
|
BaseVehicleStateDto baseVehicleStateDto = new BaseVehicleStateDto(); |
|
|
|
|
|
baseVehicleStateDto.setOperateType(BaseVehicleStateEnum.OperateTypeEnum.FIN_RQ.getTypeKey()); |
|
|
|
|
|
baseVehicleStateDto.setBusSid(finUncollectedReceivablesDetailed.getBusVinSid()); |
|
|
|
|
|
dtoList.add(baseVehicleStateDto); |
|
|
|
|
|
} |
|
|
|
|
|
} else { |
|
|
|
|
|
List<FinSelectedReceivablesDetailedVo> voList = finSelectedReceivablesDetailedService.selectListByVin(v.getContractNo(), finUncollectedReceivablesDetailed.getBusVinSid(), 3); |
|
|
|
|
|
BigDecimal bigDecimalVinAll = voList.stream().map(FinSelectedReceivablesDetailedVo::getSubscriptionMoney).map(BigDecimal::new).reduce(BigDecimal.ZERO, BigDecimal::add); |
|
|
|
|
|
List<FinUncollectedReceivablesDetailed> unList = finUncollectedReceivablesDetailedService.selectListByBusVinSid(finUncollectedReceivablesDetailed.getBusVinSid()); |
|
|
|
|
|
BigDecimal unDecimalVinAll = unList.stream().map(FinUncollectedReceivablesDetailed::getReveivableMoney).map(BigDecimal::new).reduce(BigDecimal.ZERO, BigDecimal::add); |
|
|
|
|
|
//查询该合同编号下的销售订单的单车成交价
|
|
|
|
|
|
BigDecimal leftAll = unDecimalVinAll; |
|
|
|
|
|
BigDecimal rightAll = bigDecimalVinAll; |
|
|
|
|
|
if (leftAll.compareTo(rightAll) <= 0) { |
|
|
|
|
|
BaseVehicleStateDto baseVehicleStateDto = new BaseVehicleStateDto(); |
|
|
|
|
|
baseVehicleStateDto.setOperateType(BaseVehicleStateEnum.OperateTypeEnum.FIN_RQ.getTypeKey()); |
|
|
|
|
|
baseVehicleStateDto.setBusSid(finUncollectedReceivablesDetailed.getBusVinSid()); |
|
|
|
|
|
dtoList.add(baseVehicleStateDto); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
}); |
|
|
|
|
|
} |
|
|
|
|
|
//查询该申请已认款金额总数
|
|
|
//查询该申请已认款金额总数
|
|
|
subscriptionMoneyAll = finSelectedReceivablesDetailedVos.stream().map(FinSelectedReceivablesDetailedVo::getSubscriptionMoney).map(BigDecimal::new).reduce(BigDecimal.ZERO, BigDecimal::add); |
|
|
subscriptionMoneyAll = finSelectedReceivablesDetailedVos.stream().map(FinSelectedReceivablesDetailedVo::getSubscriptionMoney).map(BigDecimal::new).reduce(BigDecimal.ZERO, BigDecimal::add); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
confirmation = fetchBySid(sid); |
|
|
confirmation = fetchBySid(sid); |
|
|
/* //与收款金额作比较:更新认款状态 1未认款/2部分认款/3已认款
|
|
|
|
|
|
confirmation.setPaymentState(confirmation.getCollectionMoney().compareTo(subscriptionMoneyAll) <= 0 ? 3 : subscriptionMoneyAll.compareTo(BigDecimal.ZERO) == 0 ? 1 : 2);*/ |
|
|
|
|
|
//更新收款申请的余额以及审核状态
|
|
|
//更新收款申请的余额以及审核状态
|
|
|
BigDecimal balanceBigDecimal = confirmation.getCollectionMoney().subtract(subscriptionMoneyAll); |
|
|
BigDecimal balanceBigDecimal = confirmation.getCollectionMoney().subtract(subscriptionMoneyAll); |
|
|
confirmation.setBalance(balanceBigDecimal); |
|
|
confirmation.setBalance(balanceBigDecimal); |
|
@ -3744,21 +3704,6 @@ public class FinCollectionConfirmationService extends MybatisBaseService<FinColl |
|
|
confirmation.setConfirmDate(DateUtil.today()); |
|
|
confirmation.setConfirmDate(DateUtil.today()); |
|
|
confirmation.setConfirmNameSid(userSid); |
|
|
confirmation.setConfirmNameSid(userSid); |
|
|
baseMapper.updateById(confirmation); |
|
|
baseMapper.updateById(confirmation); |
|
|
|
|
|
|
|
|
try { |
|
|
|
|
|
ThreadFactory namedThreadFactory = new ThreadFactoryBuilder() |
|
|
|
|
|
.setNameFormat("demo-pool-%d").build(); |
|
|
|
|
|
ExecutorService pool = new ThreadPoolExecutor(2, 100, |
|
|
|
|
|
0L, TimeUnit.MILLISECONDS, |
|
|
|
|
|
new LinkedBlockingQueue<Runnable>(1024), namedThreadFactory, new ThreadPoolExecutor.AbortPolicy()); |
|
|
|
|
|
FinCollectionConfirmation finalConfirmation = confirmation; |
|
|
|
|
|
Future future1 = pool.submit(() -> { |
|
|
|
|
|
pushLoanDiff(finalConfirmation); |
|
|
|
|
|
}); |
|
|
|
|
|
} catch (Exception e) { |
|
|
|
|
|
e.printStackTrace(); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
return rb.success().setMsg("款项确认成功"); |
|
|
return rb.success().setMsg("款项确认成功"); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
@ -4112,12 +4057,23 @@ public class FinCollectionConfirmationService extends MybatisBaseService<FinColl |
|
|
for (AppFinUncollectedReceivablesDetailedRskVo r : ruleList) { |
|
|
for (AppFinUncollectedReceivablesDetailedRskVo r : ruleList) { |
|
|
if (r.getProjectName().equals("月还") || r.getProjectName().equals("资方逾期利息")) { |
|
|
if (r.getProjectName().equals("月还") || r.getProjectName().equals("资方逾期利息")) { |
|
|
if (Integer.valueOf(r.getPeriod()) < Integer.valueOf(v.getPeriod())) { |
|
|
if (Integer.valueOf(r.getPeriod()) < Integer.valueOf(v.getPeriod())) { |
|
|
|
|
|
List<AppFinSelectedReceivablesDetailedRskDto> collect = finSelectedReceivablesDetailedDtos.stream().filter(new Predicate<AppFinSelectedReceivablesDetailedRskDto>() { |
|
|
|
|
|
@Override |
|
|
|
|
|
public boolean test(AppFinSelectedReceivablesDetailedRskDto d) { |
|
|
|
|
|
if (d.getPeriod().equals(r.getPeriod()) && d.getLoanContractNo().equals(r.getLoanContractNo()) && d.getVin().equals(r.getVin())) { |
|
|
|
|
|
return true; |
|
|
|
|
|
} |
|
|
|
|
|
return false; |
|
|
|
|
|
} |
|
|
|
|
|
}).collect(Collectors.toList()); |
|
|
|
|
|
if (collect.isEmpty()) { |
|
|
return rb.setMsg("您的认款顺序与公司认款规则不一致"); |
|
|
return rb.setMsg("您的认款顺序与公司认款规则不一致"); |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
} |
|
|
//汇款确认书保存
|
|
|
//汇款确认书保存
|
|
|
List<String> payConfirmFiles = dto.getPayConfirmFiles(); |
|
|
List<String> payConfirmFiles = dto.getPayConfirmFiles(); |
|
|
if (payConfirmFiles.size() > 0) { |
|
|
if (payConfirmFiles.size() > 0) { |
|
@ -4159,6 +4115,9 @@ public class FinCollectionConfirmationService extends MybatisBaseService<FinColl |
|
|
if (null != v.getConfirmMoney()) { |
|
|
if (null != v.getConfirmMoney()) { |
|
|
finSelectedReceivablesDetailed.setSubscriptionMoney(v.getConfirmMoney()); |
|
|
finSelectedReceivablesDetailed.setSubscriptionMoney(v.getConfirmMoney()); |
|
|
} |
|
|
} |
|
|
|
|
|
if (null != v.getNoReceivable()) { |
|
|
|
|
|
finSelectedReceivablesDetailed.setCurrentReceivableMoney(v.getNoReceivable()); |
|
|
|
|
|
} |
|
|
finSelectedReceivablesDetailed.setReceivablesSid(v.getReceivablesSid()); |
|
|
finSelectedReceivablesDetailed.setReceivablesSid(v.getReceivablesSid()); |
|
|
finSelectedReceivablesDetailed.setCollSid(finalSid); |
|
|
finSelectedReceivablesDetailed.setCollSid(finalSid); |
|
|
finSelectedReceivablesDetailed.setUseOrgSid(finalUseOrgSid); |
|
|
finSelectedReceivablesDetailed.setUseOrgSid(finalUseOrgSid); |
|
@ -4240,7 +4199,7 @@ public class FinCollectionConfirmationService extends MybatisBaseService<FinColl |
|
|
} |
|
|
} |
|
|
String noReturnMoney = finUncollectedReceivablesDetailedJRService.selNoReturnMoneyRsk(receivablesSid); |
|
|
String noReturnMoney = finUncollectedReceivablesDetailedJRService.selNoReturnMoneyRsk(receivablesSid); |
|
|
if (StringUtils.isNotBlank(noReturnMoney)) { |
|
|
if (StringUtils.isNotBlank(noReturnMoney)) { |
|
|
rsk.setNoReceivable(new BigDecimal(noReturnMoney)); |
|
|
rsk.setResidueMoney(new BigDecimal(noReturnMoney)); |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} else { |
|
|
} else { |
|
@ -4255,7 +4214,7 @@ public class FinCollectionConfirmationService extends MybatisBaseService<FinColl |
|
|
} |
|
|
} |
|
|
String noReturnMoney = finUncollectedReceivablesDetailedJRService.selNoReturnMoneyJR(busSid); |
|
|
String noReturnMoney = finUncollectedReceivablesDetailedJRService.selNoReturnMoneyJR(busSid); |
|
|
if (StringUtils.isNotBlank(noReturnMoney)) { |
|
|
if (StringUtils.isNotBlank(noReturnMoney)) { |
|
|
rsk.setNoReceivable(new BigDecimal(noReturnMoney)); |
|
|
rsk.setResidueMoney(new BigDecimal(noReturnMoney)); |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
@ -4268,6 +4227,7 @@ public class FinCollectionConfirmationService extends MybatisBaseService<FinColl |
|
|
} |
|
|
} |
|
|
rsk.setProjectName(v.getReceivablesName()); |
|
|
rsk.setProjectName(v.getReceivablesName()); |
|
|
// rsk.setSid(v.getSid());
|
|
|
// rsk.setSid(v.getSid());
|
|
|
|
|
|
rsk.setNoReceivable(new BigDecimal(v.getCurrentReceivableMoney())); |
|
|
rsk.setConfirmMoney(v.getSubscriptionMoney()); |
|
|
rsk.setConfirmMoney(v.getSubscriptionMoney()); |
|
|
rsk.setReceivablesSid(v.getReceivablesSid()); |
|
|
rsk.setReceivablesSid(v.getReceivablesSid()); |
|
|
rskList.add(rsk); |
|
|
rskList.add(rsk); |
|
|