Browse Source

注释开票生成合同

master
dimengzhe 1 year ago
parent
commit
50fca29041
  1. 265
      anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/busbillapplication/BusBillApplicationService.java
  2. 34
      anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/finbillapplication/FinBillApplicationService.java

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

@ -87,6 +87,7 @@ import java.io.InputStream;
import java.math.BigDecimal;
import java.util.*;
import java.util.concurrent.*;
import java.util.stream.Collectors;
@Service
public class BusBillApplicationService extends MybatisBaseService<BusBillApplicationMapper, BusBillApplication> {
@ -144,10 +145,7 @@ public class BusBillApplicationService extends MybatisBaseService<BusBillApplica
BeanUtil.copyProperties(dto, busBillApplication, "sid");
busBillApplication.setNum(busBillVehicles.size());
busBillApplication.setArrearsMoney("0");
/*String fileUrl = getFileUrl(dto);
if(StringUtils.isNotBlank(fileUrl)){
busBillApplication.setFileUrl(fileUrl);
}*/
dto.setSid(busBillApplication.getSid());
save(busBillApplication);
//主车开票信息
for (BusBillVehicleDto busBillVehicleDto : busBillVehicles) {
@ -202,6 +200,7 @@ public class BusBillApplicationService extends MybatisBaseService<BusBillApplica
busBillFileDto.setAttachType(BusAttachTypeEnum.ZJ.getAttachType());
busBillFileService.saveOrUpdateDto(busBillFileDto);
}
createContractNo(dto);
return rb.success().setMsg("保存成功").setData(busBillApplication.getSid());
}
BusBillApplication busBillApplication = fetchBySid(dtoSid);
@ -273,6 +272,7 @@ public class BusBillApplicationService extends MybatisBaseService<BusBillApplica
busBillTrailerService.save(busBillTrailer);
}
}
createContractNo(dto);
return rb.success().setMsg("修改成功").setData(dtoSid);
}
@ -529,7 +529,7 @@ public class BusBillApplicationService extends MybatisBaseService<BusBillApplica
}
public String getFileUrl(BusBillApplicationDto dto) {
/*public String getFileUrl(BusBillApplicationDto dto) {
Map<String, Object> map = new HashMap<>();
Map<String, Object> carMap = new HashMap<>();
Map<String, Object> filemap = new HashMap<>();
@ -778,7 +778,7 @@ public class BusBillApplicationService extends MybatisBaseService<BusBillApplica
}
return fileUrl;
}
}*/
public String blackFile(Map<String, Object> map) {
String ftl = "dai_existingvehicles_black";
@ -839,4 +839,257 @@ public class BusBillApplicationService extends MybatisBaseService<BusBillApplica
WordConvertUtils.doc2pdf(wordPath, targetPath, pdfName);
return pdfName;
}
public String getFileUrl(BusBillApplicationDto dto) {
String fileUrl = "";
String contractNo = dto.getContractNo();
List<File> filesList = new ArrayList<>();
//根据合同号查询销售订单数据
BusSalesOrder busSalesOrder = baseMapper.selectByContract(contractNo);
SolutionsDetailsVo loanSolutions = loanSolutionsFeign.selectDetailss(busSalesOrder.getSid()).getData();
if ("1".equals(busSalesOrder.getPayTypeKey()) || ("2".equals(busSalesOrder.getPayTypeKey()) && StringUtils.isNotBlank(loanSolutions.getTypeKey()))) {
List<BusBillVehicleDto> finBillVehicles = dto.getFinBillVehicles();
BusSalesOrderModel busSalesOrderModel = baseMapper.selectByOrderSid(busSalesOrder.getSid());
BusSalesOrderPrice busSalesOrderPrice = baseMapper.selectByPrices(busSalesOrder.getSid());
//按开票名称sid分组
Map<String, List<BusBillVehicleDto>> groupedByOpenTickSid = finBillVehicles.stream()
.collect(Collectors.groupingBy(BusBillVehicleDto::getOpenTickSid));
//遍历分组并组装每组的数据
groupedByOpenTickSid.forEach((openTickSid, sameOpenTickSidList) -> {
Map<String, Object> map = new HashMap<>();
Map<String, Object> carMap = new HashMap<>();
Map<String, Object> filemap = new HashMap<>();
Map<String, Object> checkMap = new HashMap<>();
FinCompanyInvoicingDetailsVo finCompanyInvoicingDetailsVo = finCompanyInvoicingFeign.fetchDetailsVoBySid(openTickSid).getData();
if (!openTickSid.equals(busSalesOrder.getAffiliatedCompanySid())) {
BusBillVehicleDto finBillVehicleDto = sameOpenTickSidList.get(0);
//生成开票申请书
if (StringUtils.isNotBlank(busSalesOrder.getPurchaseSystemSid())) {
ResultBean<FinCompanyInvoicingDetailsVo> invoicingDetailsVoResultBean = finCompanyInvoicingFeign.getDetailsByUseOrgAndSystem(busSalesOrder.getUseOrgSid(), busSalesOrder.getPurchaseSystemSid());
if (invoicingDetailsVoResultBean.getData() != null) {
map.put("createOrgName", invoicingDetailsVoResultBean.getData().getName());
}
}
map.put("contractNo", busSalesOrder.getContractNo());
List<BillFileVo> list = new ArrayList<>();
BillFileVo billFileVo = new BillFileVo();
if (busSalesOrderModel != null) {
billFileVo.setCarName(busSalesOrderModel.getModelName());
billFileVo.setNum(String.valueOf(sameOpenTickSidList.size()));
billFileVo.setPrice(busSalesOrderPrice.getSingleFinalPrice().toString());
}
if (loanSolutions != null) {
if (StringUtils.isNotBlank(loanSolutions.getMainVehicleAmount())) {
billFileVo.setOpenPrice(loanSolutions.getMainVehicleAmount());
}
}
billFileVo.setType(finBillVehicleDto.getBillTypeValue());//开票类型
list.add(billFileVo);
List<BusBillTrailerDto> lllList = new ArrayList<>();
sameOpenTickSidList.forEach(v -> {
List<BusBillTrailerDto> finBillTrailers = dto.getFinBillTrailers();
finBillTrailers.removeAll(Collections.singleton(null));
finBillTrailers = finBillTrailers.stream().filter(vv -> vv.getVinNo().contains(v.getVinNo())).collect(Collectors.toList());
lllList.addAll(finBillTrailers);
});
Map<String, Object> carNameMap = new HashMap<>();
if (!lllList.isEmpty()) {
for (int i = 0; i < lllList.size(); i++) {
BusBillTrailerDto finBillTrailerDto = lllList.get(i);
billFileVo = new BillFileVo();
BaseTrailer baseTrailer = baseMapper.selectByTrailerNo(finBillTrailerDto.getGcVinNo());
if (baseTrailer != null) {
BaseTrailerModel baseTrailerModel = baseMapper.selectByModelSid(baseTrailer.getTrailerModelSid());
if (baseTrailerModel != null) {
String carName = "外廓-" + Integer.parseInt(baseTrailerModel.getAppearanceSizeLong()) / 1000 + "米" + "\t" + baseTrailerModel.getTrailerTypeValue();
if (carNameMap.containsKey(carName)) {
carNameMap.put(carName, Integer.parseInt(carNameMap.get(carName).toString()) + 1);
continue;
} else {
billFileVo.setType(busSalesOrder.getBillingType());
if (loanSolutions != null) {
if (StringUtils.isNotBlank(loanSolutions.getMainVehicleAmount())) {
billFileVo.setOpenPrice(loanSolutions.getMainVehicleAmount());
}
}
billFileVo.setCarName(carName);
if (busSalesOrderModel != null) {
billFileVo.setPrice(busSalesOrderPrice.getSingleFinalPrice().toString());
}
carNameMap.put(carName, 1);
list.add(billFileVo);
}
}
}
}
}
if (!list.isEmpty()) {
for (int i = 0; i < list.size(); i++) {
BillFileVo billFileVo1 = list.get(i);
String carName = billFileVo1.getCarName();
if (carNameMap.containsKey(carName)) {
billFileVo1.setNum(carNameMap.get(carName).toString());
}
}
}
map.put("list", list);
map.put("name", finBillVehicleDto.getOpenTickName());
String date = DateUtil.today();
List<String> dateString = Arrays.asList(date.split("-"));
String year = dateString.get(0);
String month = dateString.get(1);
String day = dateString.get(2);
map.put("year", year);
map.put("month", month);
map.put("day", day);
if (!"02".equals(finBillVehicleDto.getBillTypeKey())) {
if (finCompanyInvoicingDetailsVo != null) {
//生成车辆登记合同
if (busSalesOrder != null) {
carMap.put("Yf", busSalesOrder.getCustomerName());
carMap.put("invoiceName", finCompanyInvoicingDetailsVo.getName());//开票名称
}
carMap.put("contractNo", "D" + map.get("contractNo"));
if (StringUtils.isNotBlank(busSalesOrder.getPurchaseSystemSid())) {
ResultBean<FinCompanyInvoicingDetailsVo> invoicingDetailsVoResultBean = finCompanyInvoicingFeign.getDetailsByUseOrgAndSystem(busSalesOrder.getUseOrgSid(), busSalesOrder.getPurchaseSystemSid());
if (invoicingDetailsVoResultBean.getData() != null) {
carMap.put("createOrgName", invoicingDetailsVoResultBean.getData().getName());
}
}
carMap.put("date", date);
List<CarContractListVo> carContractListVos = new ArrayList<>();
for (BusBillVehicleDto salesOrderVehicle : sameOpenTickSidList) {
CarContractListVo carContractListVo = new CarContractListVo();
BaseVehicle baseVehicle = baseMapper.selectByVinSid(salesOrderVehicle.getVehSid());
carContractListVo.setBrand(baseVehicle.getModelName());
carContractListVo.setVinNo(baseVehicle.getVinNo());
carContractListVo.setEnginNo(baseVehicle.getEngineNo());
carContractListVos.add(carContractListVo);
}
carMap.put("carLists", carContractListVos);
}
}
}
if (loanSolutions != null) {
if (!dto.getOneBillMoney().equals(loanSolutions.getMainVehicleAmount())) {
String remarks = "";
String date = DateUtil.today();
List<String> dateString = Arrays.asList(date.split("-"));
String year = dateString.get(0);
String month = dateString.get(1);
String day = dateString.get(2);
filemap.put("year", year);
filemap.put("month", month);
filemap.put("day", day);
if (finCompanyInvoicingDetailsVo != null) {
filemap.put("invoiceName", finCompanyInvoicingDetailsVo.getName());//开票名称
filemap.put("customerName", finCompanyInvoicingDetailsVo.getName());//乙方
filemap.put("invoiceNo", finCompanyInvoicingDetailsVo.getTaxpayerNo());//纳税人识别号
filemap.put("idNo", finCompanyInvoicingDetailsVo.getTaxpayerNo());//乙方证件号码
filemap.put("adds", finCompanyInvoicingDetailsVo.getAddress());//户籍地址
} else {
CrmCustomerTemp crmCustomerTemp = baseMapper.selectByCustomerSid(dto.getOpenTickSid());
if (crmCustomerTemp != null) {
filemap.put("invoiceName", crmCustomerTemp.getName());//开票名称
filemap.put("customerName", crmCustomerTemp.getName());//乙方
filemap.put("invoiceNo", crmCustomerTemp.getIDNumber());//纳税人识别号
filemap.put("idNo", crmCustomerTemp.getIDNumber());//乙方证件号码
filemap.put("adds", crmCustomerTemp.getCertificateAddress());//户籍地址
}
}
filemap.put("invoiceType", dto.getOpenTickTypeValue());//开票类型
remarks = "数量" + finBillVehicles.size() + "台,单台成交价: 元。";
filemap.put("remarks", remarks);
filemap.put("busSid", busSalesOrder.getSid());
ResultBean<Map<String, Object>> mapResultBean = commonContractFeign.getModelMap(filemap);
checkMap = mapResultBean.getData();
//生成新车空白合同
checkMap.put("totalPrice", "");
checkMap.put("priceRemarks", "");
checkMap.put("depositTotal", "");
checkMap.put("createOrgName", "");
checkMap.put("payTypeKey", busSalesOrder.getPayTypeKey());
}
}
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());
if (!map.isEmpty()) {
Future<String> future1 = pool.submit(() -> {
return getInvoiceApplyFile(map);
});
if (StringUtils.isNotBlank(future1.get())) {
File file = new File(docPdfComponent.getUploadTemplateUrl() + future1.get());
filesList.add(file);
}
}
if (!carMap.isEmpty()) {
Future<String> future2 = pool.submit(() -> {
return getCarFile(carMap);
});
if (StringUtils.isNotBlank(future2.get())) {
File file = new File(docPdfComponent.getUploadTemplateUrl() + future2.get());
filesList.add(file);
}
}
if("1".equals(busSalesOrder.getPayTypeKey())){
Map<String, Object> finalCheckMap = checkMap;
if (!finalCheckMap.isEmpty()) {
Future<String> future3 = pool.submit(() -> {
return blackFile(finalCheckMap);
});
if (StringUtils.isNotBlank(future3.get())) {
File file = new File(docPdfComponent.getUploadTemplateUrl() + future3.get());
filesList.add(file);
}
}
}
} catch (Exception e) {
e.printStackTrace();
log.error("生成文件失败:==========================" + e.getMessage());
}
});
if (filesList.size() > 0) {
String typeName = contractNo + "开票附件.pdf";
try {
File allFile = WordConvertUtils.mulFile2One(filesList, docPdfComponent.getUploadTemplateUrl() + typeName);
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("-========" + docPdfComponent.getUploadTemplateUrl() + typeName);
fileUrl = typeName;
}
}
if(StringUtils.isNotBlank(fileUrl)){
BusBillApplication finBillApplication = fetchBySid(dto.getSid());
finBillApplication.setFileUrl(fileUrl);
baseMapper.updateById(finBillApplication);
}
return fileUrl;
}
public void 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());
}*/
}
}

34
anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/finbillapplication/FinBillApplicationService.java

@ -502,10 +502,7 @@ public class FinBillApplicationService extends MybatisBaseService<FinBillApplica
finBillApplication.setBillNo(billNo);
finBillApplication.setNum(finBillVehicles.size());
finBillApplication.setArrearsMoney("0");
/* String fileUrl = getFileUrl(dto);
if (StringUtils.isNotBlank(fileUrl)) {
finBillApplication.setFileUrl(fileUrl);
}*/
dto.setSid(finBillApplication.getSid());
save(finBillApplication);
//主车开票信息
for (FinBillVehicleDto finBillVehicleDto : finBillVehicles) {
@ -590,6 +587,7 @@ public class FinBillApplicationService extends MybatisBaseService<FinBillApplica
finBillFileDto.setAttachType(FinAttachTypeEnum.ZJ.getAttachType());
finBillFileService.saveOrUpdateDto(finBillFileDto);
}
createContractNo(dto);
return rb.success().setMsg("保存成功").setData(finBillApplication.getSid());
}
FinBillApplication finBillApplication = fetchBySid(dtoSid);
@ -684,6 +682,7 @@ public class FinBillApplicationService extends MybatisBaseService<FinBillApplica
finBillTrailerService.save(finBillTrailer);
}
}
createContractNo(dto);
return rb.success().setMsg("修改成功").setData(dtoSid);
}
@ -919,6 +918,7 @@ public class FinBillApplicationService extends MybatisBaseService<FinBillApplica
if(StringUtils.isNotBlank(fileUrl)){
FinBillApplication finBillApplication = fetchBySid(dto.getSid());
finBillApplication.setFileUrl(fileUrl);
baseMapper.updateById(finBillApplication);
}
return fileUrl;
}
@ -1004,10 +1004,6 @@ public class FinBillApplicationService extends MybatisBaseService<FinBillApplica
}
FinBillApplication entity = fetchBySid(dtoSid);
BeanUtil.copyProperties(dto, entity, "id", "sid");
/* String fileUrl = getFileUrl(dto);
if (StringUtils.isNotBlank(fileUrl)) {
entity.setFileUrl(fileUrl);
}*/
baseMapper.updateById(entity);
}
@ -2342,10 +2338,6 @@ public class FinBillApplicationService extends MybatisBaseService<FinBillApplica
BigDecimal totalBillMoney = oneBillMoney.multiply(new BigDecimal(finBillVehicles.size()));
finBillApplication.setTotalBillMoney(totalBillMoney);
dto.setSid(finBillApplication.getSid());
/* String fileUrl = getFileUrl(dto);
if (StringUtils.isNotBlank(fileUrl)) {
finBillApplication.setFileUrl(fileUrl);
}*/
save(finBillApplication);
//主车开票信息
for (FinBillVehicleDto finBillVehicleDto : finBillVehicles) {
@ -2468,6 +2460,7 @@ public class FinBillApplicationService extends MybatisBaseService<FinBillApplica
finBillFileService.saveOrUpdateDto(finBillFileDto);
}
}
createContractNo(dto);
return rb.success().setMsg("保存成功").setData(finBillApplication.getSid());
}
FinBillApplication finBillApplication = fetchBySid(dtoSid);
@ -2599,6 +2592,7 @@ public class FinBillApplicationService extends MybatisBaseService<FinBillApplica
finBillTrailerService.save(finBillTrailer);
}
}
createContractNo(dto);
return rb.success().setMsg("修改成功").setData(dtoSid);
}
@ -5137,4 +5131,20 @@ public class FinBillApplicationService extends MybatisBaseService<FinBillApplica
FinBillApplicationDetailsVo finBillApplicationDetailsVo = baseMapper.selectByCon(contractNo);
return rb.success().setData(finBillApplicationDetailsVo);
}
public void createContractNo(FinBillApplicationDto 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());
}*/
}
}
Loading…
Cancel
Save