|
|
@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage; |
|
|
|
import com.google.common.util.concurrent.ThreadFactoryBuilder; |
|
|
|
import com.yxt.anrui.buscenter.api.bussalesorder.BusSalesOrder; |
|
|
|
import com.yxt.anrui.buscenter.api.bussalesorder.flowable.BusSalesOrderDelegateQuery; |
|
|
|
import com.yxt.anrui.fin.api.finselectedreceivablesdetailed.FinSelectedReceivablesDetailed; |
|
|
|
import com.yxt.anrui.fin.api.finselectedreceivablesdetailed.FinSelectedReceivablesDetailedFeign; |
|
|
|
import com.yxt.anrui.fin.api.finuncollectedreceivablesdetailedjr.FinUncollectedReceivablesDetailedJR; |
|
|
@ -29,6 +30,7 @@ import com.yxt.anrui.portal.api.sysuser.SysUserFeign; |
|
|
|
import com.yxt.anrui.portal.api.sysuser.SysUserVo; |
|
|
|
import com.yxt.anrui.riskcenter.api.loanoverduefin.UrlQuery; |
|
|
|
import com.yxt.anrui.riskcenter.api.loanrepaymentplandetails.LoanRepaymentPlanDetails; |
|
|
|
import com.yxt.anrui.riskcenter.api.loanrepaymentschedule.LoanRepaymentSchedule; |
|
|
|
import com.yxt.anrui.riskcenter.api.loansettleapply.*; |
|
|
|
import com.yxt.anrui.riskcenter.api.loansettleapply.flowable.*; |
|
|
|
import com.yxt.anrui.riskcenter.api.loansettlebankcost.LoanSettleBankCost; |
|
|
@ -40,6 +42,7 @@ import com.yxt.anrui.riskcenter.api.loansettlecompanyreduction.LoanSettleCompany |
|
|
|
import com.yxt.anrui.riskcenter.api.loansettlevehicle.LoanSettleVehicleDto; |
|
|
|
import com.yxt.anrui.riskcenter.api.loansolutions.LoanSolutions; |
|
|
|
import com.yxt.anrui.riskcenter.api.loansolutionsdetail.LoanSolutionsDetail; |
|
|
|
import com.yxt.anrui.riskcenter.biz.loanrepaymentschedule.LoanRepaymentScheduleService; |
|
|
|
import com.yxt.anrui.riskcenter.biz.loansettlebankcost.LoanSettleBankCostMapper; |
|
|
|
import com.yxt.anrui.riskcenter.biz.loansettlebankcost.LoanSettleBankCostService; |
|
|
|
import com.yxt.anrui.riskcenter.biz.loansettlecompanycost.LoanSettleCompanyCostMapper; |
|
|
@ -105,7 +108,8 @@ public class LoanSettleApplyService extends MybatisBaseService<LoanSettleApplyMa |
|
|
|
private LoanSolutionsDetailService loanSolutionsDetailService; |
|
|
|
@Autowired |
|
|
|
private FileUploadComponent fileUploadComponent; |
|
|
|
|
|
|
|
@Autowired |
|
|
|
private LoanRepaymentScheduleService loanRepaymentScheduleService; |
|
|
|
@Autowired |
|
|
|
private SysParameterFeign sysParameterFeign; |
|
|
|
@Autowired |
|
|
@ -245,6 +249,7 @@ public class LoanSettleApplyService extends MybatisBaseService<LoanSettleApplyMa |
|
|
|
sid = loanSettleApply.getSid(); |
|
|
|
loanSettleApply.setCreateBySid(dto.getUserSid()); |
|
|
|
loanSettleApply.setOrgSidPath(dto.getOrgPath()); |
|
|
|
loanSettleApply.setState(0); |
|
|
|
LoanSettleBankCostVo loanSettleBankCostVo = dto.getLoanSettleBankCostVo(); |
|
|
|
if (loanSettleBankCostVo != null) { |
|
|
|
loanSettleBankCostService.saveCost(sid, loanSettleBankCostVo); |
|
|
@ -394,9 +399,16 @@ public class LoanSettleApplyService extends MybatisBaseService<LoanSettleApplyMa |
|
|
|
BeanUtil.copyProperties(loanSettleCompanyReduction, loanSettleCompanyReductionVo); |
|
|
|
} |
|
|
|
loanSettleApplyDetailsVo.setLoanSettleCompanyReductionVo(loanSettleCompanyReductionVo); |
|
|
|
if (loanSettleCompanyReduction.getAmountTo().compareTo(BigDecimal.ZERO) > 0) { |
|
|
|
loanSettleApplyDetailsVo.setConfirmAtn(true); |
|
|
|
if (StringUtils.isNotBlank(loanSettleApply.getNodeState())) { |
|
|
|
if (loanSettleApply.getNodeState().equals("已办结")) { |
|
|
|
if (loanSettleApply.getState().intValue() == 0) { |
|
|
|
if (loanSettleCompanyReduction.getAmountTo().compareTo(BigDecimal.ZERO) > 0) { |
|
|
|
loanSettleApplyDetailsVo.setConfirmAtn(true); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
if (StringUtils.isNotBlank(loanSettleApply.getBusSid())) { |
|
|
|
loanSettleApplyDetailsVo.setShowHg(true); |
|
|
@ -449,6 +461,7 @@ public class LoanSettleApplyService extends MybatisBaseService<LoanSettleApplyMa |
|
|
|
SettleApplyCommonVo settleApplyCommonVo = new SettleApplyCommonVo(); |
|
|
|
//根据busVinSid查询还款计划表中数据
|
|
|
|
LoanRepaymentPlanDetails loanRepaymentPlanDetails = baseMapper.selectByBusVinSid(busVinSid); |
|
|
|
String scheduleSid = ""; |
|
|
|
if (loanRepaymentPlanDetails != null) { |
|
|
|
settleApplyCommonVo.setVinNo(loanRepaymentPlanDetails.getVinNo()); |
|
|
|
settleApplyCommonVo.setVehMark(loanRepaymentPlanDetails.getVehMark()); |
|
|
@ -460,6 +473,7 @@ public class LoanSettleApplyService extends MybatisBaseService<LoanSettleApplyMa |
|
|
|
settleApplyCommonVo.setBankName(loanRepaymentPlanDetails.getBankName()); |
|
|
|
settleApplyCommonVo.setBankContractNo(loanRepaymentPlanDetails.getBankContractNo()); |
|
|
|
settleApplyCommonVo.setSaleOrderSid(loanRepaymentPlanDetails.getSalesOrderSid()); |
|
|
|
scheduleSid = loanRepaymentPlanDetails.getScheduleSid(); |
|
|
|
} |
|
|
|
String putBankInterest = baseMapper.selectDzfyqlx(busVinSid); |
|
|
|
settleApplyCommonVo.setPutBankInterest(putBankInterest); |
|
|
@ -467,6 +481,7 @@ public class LoanSettleApplyService extends MybatisBaseService<LoanSettleApplyMa |
|
|
|
String funfCost = baseMapper.selectZjzyf(busVinSid, settingDate); |
|
|
|
String dk = baseMapper.selectDk(busVinSid, settingDate); |
|
|
|
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); |
|
|
|
//计算当日资金占用费根据垫款总额
|
|
|
|
try { |
|
|
|
Date d1 = format.parse(settingDate);//毫秒ms
|
|
|
|
Date d2 = format.parse(DateUtil.today());//毫秒ms
|
|
|
@ -492,13 +507,14 @@ public class LoanSettleApplyService extends MybatisBaseService<LoanSettleApplyMa |
|
|
|
String notDuePrice = baseMapper.selectGsWdq(busVinSid, settingDate); |
|
|
|
settleApplyCommonVo.setNotDuePrice(notDuePrice); |
|
|
|
//贷款保证金
|
|
|
|
//根据销售订单查询金额方案
|
|
|
|
LoanSolutions loanSolutions = loanSolutionsMapper.selectBySaleOrderSid(settleApplyCommonVo.getSaleOrderSid()); |
|
|
|
if (loanSolutions != null) { |
|
|
|
LoanSolutionsDetail loanSolutionsDetail = loanSolutionsDetailService.selectLoanSid(loanSolutions.getSid()); |
|
|
|
if (loanSolutionsDetail != null) { |
|
|
|
settleApplyCommonVo.setLoanDeposit(loanSolutionsDetail.getBondAmounts().toString()); |
|
|
|
} |
|
|
|
//根据销售订单查询还款计划主表
|
|
|
|
LoanRepaymentSchedule schedule = loanRepaymentScheduleService.fetchBySid(scheduleSid); |
|
|
|
if (null != schedule) { |
|
|
|
BigDecimal bondAmounts = BigDecimal.ZERO; |
|
|
|
if (null != schedule.getBondAmounts()) { |
|
|
|
bondAmounts = schedule.getBondAmounts(); |
|
|
|
} |
|
|
|
settleApplyCommonVo.setLoanDeposit(bondAmounts.toString()); |
|
|
|
//贷款保证金扣罚金额
|
|
|
|
String fc_dkbzjkcgz = sysParameterFeign.fetchByParNo("FC_DKBZJKCGZ").getData(); |
|
|
|
if (StringUtils.isNotBlank(fc_dkbzjkcgz)) { |
|
|
@ -516,7 +532,7 @@ public class LoanSettleApplyService extends MybatisBaseService<LoanSettleApplyMa |
|
|
|
int overDueCount = baseMapper.selvehOverdueCount(busVinSid); |
|
|
|
if (overDueCount > i) { |
|
|
|
//大于规定次数扣除全部保证金 deductionAmount
|
|
|
|
settleApplyCommonVo.setDeductionAmount(loanSolutionsDetail.getBondAmounts().toString()); |
|
|
|
settleApplyCommonVo.setDeductionAmount(bondAmounts.toString()); |
|
|
|
} else { |
|
|
|
BigDecimal sum = new BigDecimal(0); |
|
|
|
for (int j = 0; j < overDueCount; j++) { |
|
|
@ -566,6 +582,9 @@ public class LoanSettleApplyService extends MybatisBaseService<LoanSettleApplyMa |
|
|
|
} |
|
|
|
String businessSid = resultBean.getData(); |
|
|
|
loanSettleApply = fetchBySid(businessSid); |
|
|
|
//更新车辆表结清状态
|
|
|
|
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); |
|
|
|
baseMapper.updateBusAndSettleApplyDate(loanSettleApply.getBusVinSid(), "2", sdf.format(new Date())); |
|
|
|
//创建BusinessVariables实体对象
|
|
|
|
BusinessVariables bv = new BusinessVariables(); |
|
|
|
//流程中的参数赋值、若有网关,则赋值网关中判断的字段。
|
|
|
@ -577,8 +596,19 @@ public class LoanSettleApplyService extends MybatisBaseService<LoanSettleApplyMa |
|
|
|
bv.setOrgSidPath(loanSettleApply.getOrgSidPath()); |
|
|
|
bv.setBusinessSid(businessSid); |
|
|
|
bv.setUserSid(dto.getUserSid()); |
|
|
|
String vinNo = ""; |
|
|
|
String vehMark = ""; |
|
|
|
if (StringUtils.isNotBlank(loanSettleApply.getVinNo())) { |
|
|
|
vinNo = loanSettleApply.getVinNo(); |
|
|
|
} |
|
|
|
if (StringUtils.isNotBlank(loanSettleApply.getVehMark())) { |
|
|
|
vehMark = loanSettleApply.getVehMark(); |
|
|
|
} |
|
|
|
String append = "车架号" + "<" + vinNo + "/" + vehMark + ">"; |
|
|
|
if (StringUtils.isNotBlank(loanSettleApply.getBusSid())) { |
|
|
|
variables.put("orderNames", "提前结清申请"); |
|
|
|
variables.put("orderNames", append + "提前结清申请"); |
|
|
|
} else { |
|
|
|
variables.put("orderNames", append + "结清申请"); |
|
|
|
} |
|
|
|
bv.setFormVariables(variables); |
|
|
|
List<String> orgPathList = Arrays.asList(dto.getOrgPath().split("/")); |
|
|
@ -690,12 +720,22 @@ public class LoanSettleApplyService extends MybatisBaseService<LoanSettleApplyMa |
|
|
|
loanSettleApply.setCloseDate(DateUtil.today()); |
|
|
|
loanSettleApply.setSettingDate(DateUtil.today()); |
|
|
|
baseMapper.updateById(loanSettleApply); |
|
|
|
//更新车辆表结清状态
|
|
|
|
baseMapper.updateBus(loanSettleApply.getBusVinSid()); |
|
|
|
// //更新车辆表结清状态
|
|
|
|
// baseMapper.updateBus(loanSettleApply.getBusVinSid(),"1");
|
|
|
|
//推送到结清车辆台账
|
|
|
|
pushSettlevehicle(businessSid); |
|
|
|
//推送应收、结转、减免。
|
|
|
|
pushUnColl(businessSid); |
|
|
|
// pushSettlevehicle(businessSid);
|
|
|
|
LoanSettleCompanyReduction reduction = loanSettleCompanyReductionService.selectByMainSid(businessSid); |
|
|
|
if (null != reduction) { |
|
|
|
//获取公司减免情况
|
|
|
|
BigDecimal amountTo = BigDecimal.ZERO; |
|
|
|
if (null != reduction.getAmountTo()) { |
|
|
|
amountTo = reduction.getAmountTo(); |
|
|
|
} |
|
|
|
if (amountTo.compareTo(BigDecimal.ZERO) <= 0) { |
|
|
|
//推送应收、结转、减免。
|
|
|
|
pushUnColl(businessSid); |
|
|
|
} |
|
|
|
} |
|
|
|
} else { |
|
|
|
//极光推送
|
|
|
|
loanSettleApply = fetchBySid(businessSid); |
|
|
@ -1410,6 +1450,11 @@ public class LoanSettleApplyService extends MybatisBaseService<LoanSettleApplyMa |
|
|
|
} |
|
|
|
Map<String, Object> map = BeanUtil.beanToMap(resultBean.getData()); |
|
|
|
updateFlowFiled(map); |
|
|
|
loanSettleApply = fetchBySid(query.getBusinessSid()); |
|
|
|
if (loanSettleApply.getNodeState().equals("终止")) { |
|
|
|
//修改车辆结算状态为0
|
|
|
|
baseMapper.updateBus(loanSettleApply.getBusVinSid(),"0"); |
|
|
|
} |
|
|
|
return rb.success().setData(resultBean.getData()); |
|
|
|
} else { |
|
|
|
if (businessTaskId.equals(query.getTaskId())) { |
|
|
@ -1421,6 +1466,11 @@ public class LoanSettleApplyService extends MybatisBaseService<LoanSettleApplyMa |
|
|
|
} |
|
|
|
Map<String, Object> map = BeanUtil.beanToMap(resultBean.getData()); |
|
|
|
updateFlowFiled(map); |
|
|
|
loanSettleApply = fetchBySid(query.getBusinessSid()); |
|
|
|
if (loanSettleApply.getNodeState().equals("终止")) { |
|
|
|
//修改车辆结算状态为0
|
|
|
|
baseMapper.updateBus(loanSettleApply.getBusVinSid(),"0"); |
|
|
|
} |
|
|
|
return rb.success().setData(resultBean.getData()); |
|
|
|
} |
|
|
|
} |
|
|
@ -1436,6 +1486,15 @@ public class LoanSettleApplyService extends MybatisBaseService<LoanSettleApplyMa |
|
|
|
return rb.success(); |
|
|
|
} |
|
|
|
|
|
|
|
public ResultBean assignTask(LoanSettleApplyDelegateQuery query) { |
|
|
|
ResultBean rb = ResultBean.fireFail(); |
|
|
|
FlowDelegateQuery delegateQuery = new |
|
|
|
FlowDelegateQuery(); |
|
|
|
BeanUtil.copyProperties(query, delegateQuery); |
|
|
|
flowFeign.assignTask(delegateQuery); |
|
|
|
return rb.success(); |
|
|
|
} |
|
|
|
|
|
|
|
public ResultBean<SettleApplyAppVo> getAppDetails(String sid) { |
|
|
|
ResultBean<SettleApplyAppVo> rb = ResultBean.fireFail(); |
|
|
|
SettleApplyAppVo settleApplyAppVo = new SettleApplyAppVo(); |
|
|
@ -1541,28 +1600,33 @@ public class LoanSettleApplyService extends MybatisBaseService<LoanSettleApplyMa |
|
|
|
if (query != null) { |
|
|
|
//客户名称
|
|
|
|
if (StringUtils.isNotBlank(query.getCustomer())) { |
|
|
|
qw.like("ld.customer", query.getCustomer()); |
|
|
|
qw.like("bs.customerName", query.getCustomer()); |
|
|
|
} |
|
|
|
//贷款人
|
|
|
|
if (StringUtils.isNotBlank(query.getBorrowerName())) { |
|
|
|
qw.like("ld.borrowName", query.getBorrowerName()); |
|
|
|
qw.like("br.borrowerName", query.getBorrowerName()); |
|
|
|
} |
|
|
|
//车牌号
|
|
|
|
if (StringUtils.isNotBlank(query.getVehMark())) { |
|
|
|
qw.like("ld.vehMark", query.getVehMark()); |
|
|
|
qw.like("bv.vehMark", query.getVehMark()); |
|
|
|
} |
|
|
|
//车架号
|
|
|
|
if (StringUtils.isNotBlank(query.getVinNo())) { |
|
|
|
qw.like("bv.linkNo", query.getVinNo()); |
|
|
|
} |
|
|
|
//机构全路径
|
|
|
|
if (StringUtils.isNotBlank(query.getOrgPath())) { |
|
|
|
String useOrgSid = sysStaffOrgFeign.getOrgSidByPath(query.getOrgPath()).getData(); |
|
|
|
qw.eq("ld.useOrgSid", useOrgSid); |
|
|
|
qw.eq("bs.useOrgSid", useOrgSid); |
|
|
|
} |
|
|
|
qw.eq("bv.settleState", 0); |
|
|
|
qw.apply("bv.settleState = '0'OR (bv.settleState = '2' AND date_format (bv.settleApplyDate,'%Y-%m-%d') < CURDATE())"); |
|
|
|
//回购状态,回购申请
|
|
|
|
if (StringUtils.isNotBlank(query.getType())) { |
|
|
|
if (query.getType().equals("1")) { |
|
|
|
qw.eq("bv.repoState", 0); |
|
|
|
} |
|
|
|
} |
|
|
|
qw.orderBy(true, true, "ld.loanContractNo", "bv.linkNo"); |
|
|
|
} |
|
|
|
IPage<LoanSettleApply> page = PagerUtil.queryToPage(pagerQuery); |
|
|
|
IPage<SettleApplyListVo> pagging = baseMapper.getListPage(page, qw); |
|
|
@ -1572,7 +1636,16 @@ public class LoanSettleApplyService extends MybatisBaseService<LoanSettleApplyMa |
|
|
|
|
|
|
|
public ResultBean confirmAtn(String sid) { |
|
|
|
ResultBean rb = ResultBean.fireFail(); |
|
|
|
pushConfirm(sid); |
|
|
|
LoanSettleApply loanSettleApply = fetchBySid(sid); |
|
|
|
String settingDate = loanSettleApply.getSettingDate(); |
|
|
|
String formatDate = DateUtil.formatDate(new Date()); |
|
|
|
if (formatDate.compareTo(settingDate) > 0) { |
|
|
|
return rb.setMsg("只能在结清申请发起当日确认客户结清,若需结清,请重新发起结清申请!"); |
|
|
|
} else { |
|
|
|
pushConfirm(sid); |
|
|
|
loanSettleApply.setState(1); |
|
|
|
baseMapper.updateById(loanSettleApply); |
|
|
|
} |
|
|
|
return rb.success(); |
|
|
|
} |
|
|
|
} |
|
|
|