Browse Source

优化生成合同的逻辑

master
dimengzhe 1 year ago
parent
commit
d6e69666c8
  1. 6
      anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/busbillapplication/BusBillApplicationRest.java
  2. 173
      anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/busbillapplication/BusBillApplicationService.java

6
anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/busbillapplication/BusBillApplicationRest.java

@ -54,7 +54,11 @@ public class BusBillApplicationRest implements BusBillApplicationFeign {
@Override @Override
public ResultBean save(@RequestBody BusBillApplicationDto dto) { public ResultBean save(@RequestBody BusBillApplicationDto dto) {
return busBillApplicationService.saveOrUpdateDto(dto); ResultBean rb = ResultBean.fireFail();
ResultBean<DownloanVoUrl> resultBean = busBillApplicationService.saveOrUpdateDto(dto);
DownloanVoUrl downloanVoUrl = resultBean.getData();
return rb.success().setData(downloanVoUrl.getSid());
// return busBillApplicationService.saveOrUpdateDto(dto);
} }
@Override @Override

173
anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/busbillapplication/BusBillApplicationService.java

@ -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.finbillapplication.FinBillApplicationDto;
import com.yxt.anrui.fin.api.finbilltrailer.FinBillTrailerDto; import com.yxt.anrui.fin.api.finbilltrailer.FinBillTrailerDto;
import com.yxt.anrui.fin.api.finbillvehicle.FinBillVehicleDto; 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.FinCompanyInvoicing;
import com.yxt.anrui.fin.api.fincompanyinvoicing.FinCompanyInvoicingDetailsVo; import com.yxt.anrui.fin.api.fincompanyinvoicing.FinCompanyInvoicingDetailsVo;
import com.yxt.anrui.fin.api.fincompanyinvoicing.FinCompanyInvoicingFeign; import com.yxt.anrui.fin.api.fincompanyinvoicing.FinCompanyInvoicingFeign;
@ -129,7 +130,8 @@ public class BusBillApplicationService extends MybatisBaseService<BusBillApplica
@Autowired @Autowired
private LoanNoGuaranteeCreditReviewFeign loanNoGuaranteeCreditReviewFeign; private LoanNoGuaranteeCreditReviewFeign loanNoGuaranteeCreditReviewFeign;
public ResultBean<String> saveOrUpdateDto(BusBillApplicationDto dto) { public ResultBean<DownloanVoUrl> saveOrUpdateDto(BusBillApplicationDto dto) {
DownloanVoUrl downloanVoUrl = new DownloanVoUrl();
ResultBean rb = ResultBean.fireFail(); ResultBean rb = ResultBean.fireFail();
String dtoSid = dto.getSid(); String dtoSid = dto.getSid();
List<BusBillTrailerDto> busBillTrailers = dto.getFinBillTrailers(); List<BusBillTrailerDto> busBillTrailers = dto.getFinBillTrailers();
@ -151,9 +153,11 @@ public class BusBillApplicationService extends MybatisBaseService<BusBillApplica
BeanUtil.copyProperties(dto, busBillApplication, "sid"); BeanUtil.copyProperties(dto, busBillApplication, "sid");
busBillApplication.setNum(busBillVehicles.size()); busBillApplication.setNum(busBillVehicles.size());
busBillApplication.setArrearsMoney("0"); busBillApplication.setArrearsMoney("0");
dto.setSid(busBillApplication.getSid()); String allDownloadUrl = createContractNo(dto);
downloanVoUrl.setAllDownloadUrl(allDownloadUrl);
downloanVoUrl.setSid(dto.getSid());
busBillApplication.setFileUrl(allDownloadUrl);
save(busBillApplication); save(busBillApplication);
createContractNo(dto);
//主车开票信息 //主车开票信息
for (BusBillVehicleDto busBillVehicleDto : busBillVehicles) { for (BusBillVehicleDto busBillVehicleDto : busBillVehicles) {
BusBillVehicle busBillVehicle = new BusBillVehicle(); BusBillVehicle busBillVehicle = new BusBillVehicle();
@ -207,7 +211,7 @@ public class BusBillApplicationService extends MybatisBaseService<BusBillApplica
busBillFileDto.setAttachType(BusAttachTypeEnum.ZJ.getAttachType()); busBillFileDto.setAttachType(BusAttachTypeEnum.ZJ.getAttachType());
busBillFileService.saveOrUpdateDto(busBillFileDto); busBillFileService.saveOrUpdateDto(busBillFileDto);
} }
return rb.success().setMsg("保存成功").setData(busBillApplication.getSid()); return rb.success().setMsg("保存成功").setData(downloanVoUrl);
} }
BusBillApplication busBillApplication = fetchBySid(dtoSid); BusBillApplication busBillApplication = fetchBySid(dtoSid);
if (busBillApplication == null) { if (busBillApplication == null) {
@ -215,7 +219,12 @@ public class BusBillApplicationService extends MybatisBaseService<BusBillApplica
} }
dto.setArrearsMoney("0"); dto.setArrearsMoney("0");
updateByDto(dto); 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); busBillFileService.deleteByBusAppSid(dtoSid);
//附件信息 //附件信息
if (carBuyContractImages != null) { if (carBuyContractImages != null) {
@ -279,7 +288,7 @@ public class BusBillApplicationService extends MybatisBaseService<BusBillApplica
busBillTrailerService.save(busBillTrailer); busBillTrailerService.save(busBillTrailer);
} }
} }
return rb.success().setMsg("修改成功").setData(dtoSid); return rb.success().setMsg("修改成功").setData(downloanVoUrl);
} }
public void updateByDto(BusBillApplicationDto dto) { public void updateByDto(BusBillApplicationDto dto) {
@ -1138,22 +1147,132 @@ public class BusBillApplicationService extends MybatisBaseService<BusBillApplica
} }
public String createContractNo(BusBillApplicationDto dto){ public String createContractNo(BusBillApplicationDto dto){
/* try { String allDownloadUrl = "";
ThreadFactory namedThreadFactory = new ThreadFactoryBuilder() boolean showNotice = false;//是否需要生成合同
.setNameFormat("demo-pool-%d").build(); //根据合同号查询销售订单数据
ExecutorService pool = new ThreadPoolExecutor(1, 2, BusSalesOrder busSalesOrder = baseMapper.selectByContract(dto.getContractNo());
1000, TimeUnit.MILLISECONDS, SolutionsDetailsVo loanSolutions = loanSolutionsFeign.selectDetailss(busSalesOrder.getSid()).getData();
new LinkedBlockingQueue<Runnable>(1024), namedThreadFactory, new ThreadPoolExecutor.AbortPolicy()); BusSalesOrderModel busSalesOrderModel = baseMapper.selectByOrderSid(busSalesOrder.getSid());
Future future1 = pool.submit(() -> { BusSalesOrderPrice busSalesOrderPrice = baseMapper.selectByPrices(busSalesOrder.getSid());
String fileUrl = getFileUrl(dto); int contractBts = 0;
}); if("1".equals(busSalesOrder.getPayTypeKey())){
} catch (Exception e) { contractBts = 1;
e.printStackTrace(); }else{
log.error("生成文件失败:==========================" + e.getMessage()); if(StringUtils.isNotBlank(loanSolutions.getTypeKey())){
}*/ contractBts = 2;
// String fileUrl = getFileUrlNew(dto); }
String fileUrl = ""; }
return fileUrl; 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) { public String getFileUrlNew(BusBillApplicationDto dto) {
@ -1550,10 +1669,12 @@ public class BusBillApplicationService extends MybatisBaseService<BusBillApplica
public ResultBean<DownloanVoUrl> saveInvoicedApplyInfo2Pdf(BusBillApplicationDto dto) { public ResultBean<DownloanVoUrl> saveInvoicedApplyInfo2Pdf(BusBillApplicationDto dto) {
ResultBean<DownloanVoUrl> rb = ResultBean.fireFail(); ResultBean<DownloanVoUrl> rb = ResultBean.fireFail();
DownloanVoUrl downloanVoUrl = new DownloanVoUrl(); DownloanVoUrl downloanVoUrl = new DownloanVoUrl();
ResultBean<String> resultBean = saveOrUpdateDto(dto); ResultBean<DownloanVoUrl> resultBean = saveOrUpdateDto(dto);
String contractNo = createContractNo(dto); String allDownloadUrl = resultBean.getData().getAllDownloadUrl();
downloanVoUrl.setAllDownloadUrl(docPdfComponent.getPrefixTemplateUrl()+contractNo); if(StringUtils.isNotBlank(allDownloadUrl)){
downloanVoUrl.setSid(resultBean.getData()); downloanVoUrl.setAllDownloadUrl(docPdfComponent.getPrefixTemplateUrl()+allDownloadUrl);
}
downloanVoUrl.setSid(resultBean.getData().getSid());
return rb.success().setData(downloanVoUrl); return rb.success().setData(downloanVoUrl);
} }
} }
Loading…
Cancel
Save