|
|
@ -69,6 +69,7 @@ import com.yxt.anrui.fin.api.finbillapplication.FinBillApplication; |
|
|
|
import com.yxt.anrui.fin.api.finbillapplication.FinBillApplicationDto; |
|
|
|
import com.yxt.anrui.fin.api.finbilltrailer.FinBillTrailerDto; |
|
|
|
import com.yxt.anrui.fin.api.finbillvehicle.FinBillVehicleDto; |
|
|
|
import com.yxt.anrui.fin.api.finbillvehicle.FinBillVehicleVo; |
|
|
|
import com.yxt.anrui.fin.api.fincompanyinvoicing.FinCompanyInvoicing; |
|
|
|
import com.yxt.anrui.fin.api.fincompanyinvoicing.FinCompanyInvoicingDetailsVo; |
|
|
|
import com.yxt.anrui.fin.api.fincompanyinvoicing.FinCompanyInvoicingFeign; |
|
|
@ -129,7 +130,8 @@ public class BusBillApplicationService extends MybatisBaseService<BusBillApplica |
|
|
|
@Autowired |
|
|
|
private LoanNoGuaranteeCreditReviewFeign loanNoGuaranteeCreditReviewFeign; |
|
|
|
|
|
|
|
public ResultBean<String> saveOrUpdateDto(BusBillApplicationDto dto) { |
|
|
|
public ResultBean<DownloanVoUrl> saveOrUpdateDto(BusBillApplicationDto dto) { |
|
|
|
DownloanVoUrl downloanVoUrl = new DownloanVoUrl(); |
|
|
|
ResultBean rb = ResultBean.fireFail(); |
|
|
|
String dtoSid = dto.getSid(); |
|
|
|
List<BusBillTrailerDto> busBillTrailers = dto.getFinBillTrailers(); |
|
|
@ -151,9 +153,11 @@ public class BusBillApplicationService extends MybatisBaseService<BusBillApplica |
|
|
|
BeanUtil.copyProperties(dto, busBillApplication, "sid"); |
|
|
|
busBillApplication.setNum(busBillVehicles.size()); |
|
|
|
busBillApplication.setArrearsMoney("0"); |
|
|
|
dto.setSid(busBillApplication.getSid()); |
|
|
|
String allDownloadUrl = createContractNo(dto); |
|
|
|
downloanVoUrl.setAllDownloadUrl(allDownloadUrl); |
|
|
|
downloanVoUrl.setSid(dto.getSid()); |
|
|
|
busBillApplication.setFileUrl(allDownloadUrl); |
|
|
|
save(busBillApplication); |
|
|
|
createContractNo(dto); |
|
|
|
//主车开票信息
|
|
|
|
for (BusBillVehicleDto busBillVehicleDto : busBillVehicles) { |
|
|
|
BusBillVehicle busBillVehicle = new BusBillVehicle(); |
|
|
@ -207,7 +211,7 @@ public class BusBillApplicationService extends MybatisBaseService<BusBillApplica |
|
|
|
busBillFileDto.setAttachType(BusAttachTypeEnum.ZJ.getAttachType()); |
|
|
|
busBillFileService.saveOrUpdateDto(busBillFileDto); |
|
|
|
} |
|
|
|
return rb.success().setMsg("保存成功").setData(busBillApplication.getSid()); |
|
|
|
return rb.success().setMsg("保存成功").setData(downloanVoUrl); |
|
|
|
} |
|
|
|
BusBillApplication busBillApplication = fetchBySid(dtoSid); |
|
|
|
if (busBillApplication == null) { |
|
|
@ -215,7 +219,12 @@ public class BusBillApplicationService extends MybatisBaseService<BusBillApplica |
|
|
|
} |
|
|
|
dto.setArrearsMoney("0"); |
|
|
|
updateByDto(dto); |
|
|
|
createContractNo(dto); |
|
|
|
String allDownloadUrl = createContractNo(dto); |
|
|
|
downloanVoUrl.setAllDownloadUrl(allDownloadUrl); |
|
|
|
downloanVoUrl.setSid(dto.getSid()); |
|
|
|
busBillApplication = fetchBySid(dtoSid); |
|
|
|
busBillApplication.setFileUrl(allDownloadUrl); |
|
|
|
baseMapper.updateById(busBillApplication); |
|
|
|
busBillFileService.deleteByBusAppSid(dtoSid); |
|
|
|
//附件信息
|
|
|
|
if (carBuyContractImages != null) { |
|
|
@ -279,7 +288,7 @@ public class BusBillApplicationService extends MybatisBaseService<BusBillApplica |
|
|
|
busBillTrailerService.save(busBillTrailer); |
|
|
|
} |
|
|
|
} |
|
|
|
return rb.success().setMsg("修改成功").setData(dtoSid); |
|
|
|
return rb.success().setMsg("修改成功").setData(downloanVoUrl); |
|
|
|
} |
|
|
|
|
|
|
|
public void updateByDto(BusBillApplicationDto dto) { |
|
|
@ -1138,22 +1147,132 @@ public class BusBillApplicationService extends MybatisBaseService<BusBillApplica |
|
|
|
} |
|
|
|
|
|
|
|
public String createContractNo(BusBillApplicationDto dto){ |
|
|
|
/* try { |
|
|
|
ThreadFactory namedThreadFactory = new ThreadFactoryBuilder() |
|
|
|
.setNameFormat("demo-pool-%d").build(); |
|
|
|
ExecutorService pool = new ThreadPoolExecutor(1, 2, |
|
|
|
1000, TimeUnit.MILLISECONDS, |
|
|
|
new LinkedBlockingQueue<Runnable>(1024), namedThreadFactory, new ThreadPoolExecutor.AbortPolicy()); |
|
|
|
Future future1 = pool.submit(() -> { |
|
|
|
String fileUrl = getFileUrl(dto); |
|
|
|
}); |
|
|
|
} catch (Exception e) { |
|
|
|
e.printStackTrace(); |
|
|
|
log.error("生成文件失败:==========================" + e.getMessage()); |
|
|
|
}*/ |
|
|
|
// String fileUrl = getFileUrlNew(dto);
|
|
|
|
String fileUrl = ""; |
|
|
|
return fileUrl; |
|
|
|
String allDownloadUrl = ""; |
|
|
|
boolean showNotice = false;//是否需要生成合同
|
|
|
|
//根据合同号查询销售订单数据
|
|
|
|
BusSalesOrder busSalesOrder = baseMapper.selectByContract(dto.getContractNo()); |
|
|
|
SolutionsDetailsVo loanSolutions = loanSolutionsFeign.selectDetailss(busSalesOrder.getSid()).getData(); |
|
|
|
BusSalesOrderModel busSalesOrderModel = baseMapper.selectByOrderSid(busSalesOrder.getSid()); |
|
|
|
BusSalesOrderPrice busSalesOrderPrice = baseMapper.selectByPrices(busSalesOrder.getSid()); |
|
|
|
int contractBts = 0; |
|
|
|
if("1".equals(busSalesOrder.getPayTypeKey())){ |
|
|
|
contractBts = 1; |
|
|
|
}else{ |
|
|
|
if(StringUtils.isNotBlank(loanSolutions.getTypeKey())){ |
|
|
|
contractBts = 2; |
|
|
|
} |
|
|
|
} |
|
|
|
if(StringUtils.isBlank(dto.getSid())){//新增的,与销售订单数据作对比
|
|
|
|
switch (contractBts){ |
|
|
|
case 1: |
|
|
|
//全款,与销售订单的价格不一样,就notice
|
|
|
|
if(StringUtils.isNotBlank(dto.getOneBillMoney()) && new BigDecimal(dto.getOneBillMoney()).compareTo(busSalesOrderPrice.getSingleFinalPrice()) !=0){ |
|
|
|
showNotice = true; |
|
|
|
}else{ |
|
|
|
//与销售订单的价格一致,判断是否与销售订单的开票名称不一致的情况
|
|
|
|
List<BusBillVehicleDto> finBillVehicleDtoList = dto.getFinBillVehicles(); |
|
|
|
finBillVehicleDtoList = finBillVehicleDtoList.stream().filter(v->!v.getOpenTickSid().equals(busSalesOrder.getAffiliatedCompanySid())).collect(Collectors.toList()); |
|
|
|
finBillVehicleDtoList.removeAll(Collections.singleton(null)); |
|
|
|
showNotice = finBillVehicleDtoList.size()>0; |
|
|
|
} |
|
|
|
break; |
|
|
|
|
|
|
|
case 2: |
|
|
|
showNotice = dto.getFinBillVehicles().size()>0; |
|
|
|
break; |
|
|
|
} |
|
|
|
|
|
|
|
}else{//若是修改的话,且生成过合同的情况下,则与旧数据作对比
|
|
|
|
BusBillApplication finBillApplication = fetchBySid(dto.getSid()); |
|
|
|
if(StringUtils.isBlank(finBillApplication.getFileUrl())){ |
|
|
|
switch (contractBts){ |
|
|
|
case 1: |
|
|
|
//全款,与销售订单的价格不一样,就notice
|
|
|
|
if(StringUtils.isNotBlank(dto.getOneBillMoney()) && new BigDecimal(dto.getOneBillMoney()).compareTo(busSalesOrderPrice.getSingleFinalPrice()) !=0){ |
|
|
|
showNotice = true; |
|
|
|
}else{ |
|
|
|
//与销售订单的价格一致,判断是否与销售订单的开票名称不一致的情况
|
|
|
|
List<BusBillVehicleDto> finBillVehicleDtoList = dto.getFinBillVehicles(); |
|
|
|
finBillVehicleDtoList = finBillVehicleDtoList.stream().filter(v->!v.getOpenTickSid().equals(busSalesOrder.getAffiliatedCompanySid())).collect(Collectors.toList()); |
|
|
|
finBillVehicleDtoList.removeAll(Collections.singleton(null)); |
|
|
|
showNotice = finBillVehicleDtoList.size()>0; |
|
|
|
} |
|
|
|
break; |
|
|
|
|
|
|
|
case 2: |
|
|
|
showNotice = dto.getFinBillVehicles().size()>0; |
|
|
|
break; |
|
|
|
} |
|
|
|
}else{ |
|
|
|
//若有合同,则与旧数据作对比
|
|
|
|
boolean isTrue = false; |
|
|
|
List<BusBillVehicleVo> finBillVehicleVos = busBillVehicleService.fetchByMainSid(dto.getSid()); |
|
|
|
List<BusBillVehicleDto> finBillVehicleVosNew = dto.getFinBillVehicles(); |
|
|
|
switch (contractBts){ |
|
|
|
case 1: |
|
|
|
//全款,与销售订单的价格不一样,则与旧数据作对比
|
|
|
|
if(new BigDecimal(dto.getOneBillMoney()).compareTo(busSalesOrderPrice.getSingleFinalPrice()) != 0){ |
|
|
|
isTrue = true; |
|
|
|
}else{ |
|
|
|
//与销售订单的价格一致,判断是否与销售订单的开票名称不一致的情况,若有不一致的情况,则与旧数据作对比
|
|
|
|
finBillVehicleVosNew = finBillVehicleVosNew.stream().filter(v->!v.getOpenTickSid().equals(busSalesOrder.getAffiliatedCompanySid())).collect(Collectors.toList()); |
|
|
|
finBillVehicleVosNew.removeAll(Collections.singleton(null)); |
|
|
|
isTrue = finBillVehicleVosNew.size()>0; |
|
|
|
} |
|
|
|
if(isTrue){ |
|
|
|
if(new BigDecimal(dto.getOneBillMoney()).compareTo(finBillApplication.getOneBillMoney()) != 0){ |
|
|
|
showNotice = true; |
|
|
|
}else{ |
|
|
|
//如果数量发生变化,则生成合同
|
|
|
|
if(finBillVehicleVos.size() != finBillVehicleVosNew.size()){ |
|
|
|
showNotice = true; |
|
|
|
}else{//数量没发生变化,车辆发生变化,则生成合同
|
|
|
|
List<String> stringList1 = finBillVehicleVos.stream().map(BusBillVehicleVo::getVehSid).collect(Collectors.toList()); |
|
|
|
List<String> stringList2 = finBillVehicleVosNew.stream().map(BusBillVehicleDto::getVehSid).collect(Collectors.toList()); |
|
|
|
Set<String> stringSet3 = new HashSet<>(); |
|
|
|
stringSet3.addAll(stringList1); |
|
|
|
stringSet3.addAll(stringList2); |
|
|
|
if(stringSet3.size() != stringList1.size()){ |
|
|
|
showNotice = true; |
|
|
|
}else{ |
|
|
|
//车辆没发生变化,查询开票信息是否发生变化
|
|
|
|
for (int i = 0; i < finBillVehicleVos.size(); i++) { |
|
|
|
String vehSid = finBillVehicleVos.get(i).getVehSid(); |
|
|
|
String openTickSid = finBillVehicleVos.get(i).getOpenTickSid(); |
|
|
|
String openTickSidNew = finBillVehicleVosNew.stream().filter(vv->vehSid.equals(vv.getVehSid())).collect(Collectors.toList()).get(0).getOpenTickSid(); |
|
|
|
if(!openTickSid.equals(openTickSidNew)){ |
|
|
|
showNotice = true; |
|
|
|
break; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
break; |
|
|
|
|
|
|
|
case 2: |
|
|
|
//车辆数量发生变化,
|
|
|
|
if(finBillVehicleVos.size() != finBillVehicleVosNew.size()){ |
|
|
|
showNotice = true; |
|
|
|
}else{ |
|
|
|
List<String> stringList1 = finBillVehicleVos.stream().map(BusBillVehicleVo::getVehSid).collect(Collectors.toList()); |
|
|
|
List<String> stringList2 = finBillVehicleVosNew.stream().map(BusBillVehicleDto::getVehSid).collect(Collectors.toList()); |
|
|
|
Set<String> stringSet3 = new HashSet<>(); |
|
|
|
stringSet3.addAll(stringList1); |
|
|
|
stringSet3.addAll(stringList2); |
|
|
|
if(stringSet3.size() != stringList1.size()){ |
|
|
|
showNotice = true; |
|
|
|
} |
|
|
|
} |
|
|
|
break; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
if(showNotice){ |
|
|
|
// allDownloadUrl = getFileUrlNew(dto);
|
|
|
|
} |
|
|
|
return allDownloadUrl; |
|
|
|
} |
|
|
|
|
|
|
|
public String getFileUrlNew(BusBillApplicationDto dto) { |
|
|
@ -1550,10 +1669,12 @@ public class BusBillApplicationService extends MybatisBaseService<BusBillApplica |
|
|
|
public ResultBean<DownloanVoUrl> saveInvoicedApplyInfo2Pdf(BusBillApplicationDto dto) { |
|
|
|
ResultBean<DownloanVoUrl> rb = ResultBean.fireFail(); |
|
|
|
DownloanVoUrl downloanVoUrl = new DownloanVoUrl(); |
|
|
|
ResultBean<String> resultBean = saveOrUpdateDto(dto); |
|
|
|
String contractNo = createContractNo(dto); |
|
|
|
downloanVoUrl.setAllDownloadUrl(docPdfComponent.getPrefixTemplateUrl()+contractNo); |
|
|
|
downloanVoUrl.setSid(resultBean.getData()); |
|
|
|
ResultBean<DownloanVoUrl> resultBean = saveOrUpdateDto(dto); |
|
|
|
String allDownloadUrl = resultBean.getData().getAllDownloadUrl(); |
|
|
|
if(StringUtils.isNotBlank(allDownloadUrl)){ |
|
|
|
downloanVoUrl.setAllDownloadUrl(docPdfComponent.getPrefixTemplateUrl()+allDownloadUrl); |
|
|
|
} |
|
|
|
downloanVoUrl.setSid(resultBean.getData().getSid()); |
|
|
|
return rb.success().setData(downloanVoUrl); |
|
|
|
} |
|
|
|
} |