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
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

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.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);
}
}
Loading…
Cancel
Save