diff --git a/anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/busbillapplication/BusBillApplicationRest.java b/anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/busbillapplication/BusBillApplicationRest.java index 629d28a828..ef3f016ca9 100644 --- a/anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/busbillapplication/BusBillApplicationRest.java +++ b/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 public ResultBean save(@RequestBody BusBillApplicationDto dto) { - return busBillApplicationService.saveOrUpdateDto(dto); + ResultBean rb = ResultBean.fireFail(); + ResultBean resultBean = busBillApplicationService.saveOrUpdateDto(dto); + DownloanVoUrl downloanVoUrl = resultBean.getData(); + return rb.success().setData(downloanVoUrl.getSid()); +// return busBillApplicationService.saveOrUpdateDto(dto); } @Override diff --git a/anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/busbillapplication/BusBillApplicationService.java b/anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/busbillapplication/BusBillApplicationService.java index ecf5bbb4cd..b1a500034d 100644 --- a/anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/busbillapplication/BusBillApplicationService.java +++ b/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.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 saveOrUpdateDto(BusBillApplicationDto dto) { + public ResultBean saveOrUpdateDto(BusBillApplicationDto dto) { + DownloanVoUrl downloanVoUrl = new DownloanVoUrl(); ResultBean rb = ResultBean.fireFail(); String dtoSid = dto.getSid(); List busBillTrailers = dto.getFinBillTrailers(); @@ -151,9 +153,11 @@ public class BusBillApplicationService extends MybatisBaseService(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 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 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 finBillVehicleVos = busBillVehicleService.fetchByMainSid(dto.getSid()); + List 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 stringList1 = finBillVehicleVos.stream().map(BusBillVehicleVo::getVehSid).collect(Collectors.toList()); + List stringList2 = finBillVehicleVosNew.stream().map(BusBillVehicleDto::getVehSid).collect(Collectors.toList()); + Set 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 stringList1 = finBillVehicleVos.stream().map(BusBillVehicleVo::getVehSid).collect(Collectors.toList()); + List stringList2 = finBillVehicleVosNew.stream().map(BusBillVehicleDto::getVehSid).collect(Collectors.toList()); + Set 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 saveInvoicedApplyInfo2Pdf(BusBillApplicationDto dto) { ResultBean rb = ResultBean.fireFail(); DownloanVoUrl downloanVoUrl = new DownloanVoUrl(); - ResultBean resultBean = saveOrUpdateDto(dto); - String contractNo = createContractNo(dto); - downloanVoUrl.setAllDownloadUrl(docPdfComponent.getPrefixTemplateUrl()+contractNo); - downloanVoUrl.setSid(resultBean.getData()); + ResultBean 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); } } \ No newline at end of file