Commit c8f1af62 authored by hanfeng's avatar hanfeng

开票

parent f0606e79
...@@ -25,9 +25,11 @@ public class Invoice { ...@@ -25,9 +25,11 @@ public class Invoice {
private String orderId; private String orderId;
/** /**
* 公司代码 * 发票订单表id
*/ */
private String companyCode; private Integer orderInvoiceId;
/** /**
* 发票订单号 * 发票订单号
...@@ -35,11 +37,18 @@ public class Invoice { ...@@ -35,11 +37,18 @@ public class Invoice {
private String orderNo; private String orderNo;
/**
* 公司代码
*/
private String companyCode;
/** /**
* 机构代码 * 机构代码
*/ */
private String orgCode; private String orgCode;
/** /**
* 发票代码 * 发票代码
*/ */
......
...@@ -18,13 +18,17 @@ public class InvoiceVo { ...@@ -18,13 +18,17 @@ public class InvoiceVo {
* 发票分类:01 专票,02 货物运输业增值税专用发票,03 机动车销售统一发票, * 发票分类:01 专票,02 货物运输业增值税专用发票,03 机动车销售统一发票,
* 04 增值税普通发票,10 增值税普通发票(电子),11 增值税普通发票(卷票),14 增值税普通发票(卷票) * 04 增值税普通发票,10 增值税普通发票(电子),11 增值税普通发票(卷票),14 增值税普通发票(卷票)
*/ */
private Integer invoiceCategory=10; private Integer invoiceCategory = 10;
/** /**
* 订单id :多个以逗号隔开 * 订单id :多个以逗号隔开
*/ */
private String orderId; private String orderId;
/**
* 发票订单表id
*/
private Integer orderInvoiceId;
/** /**
* 备注 * 备注
...@@ -56,13 +60,13 @@ public class InvoiceVo { ...@@ -56,13 +60,13 @@ public class InvoiceVo {
* 开票内容 * 开票内容
*/ */
private String content; private String content;
/** /**
* 购方手机 * 购方手机
*/ */
private String purchaserPhone; private String purchaserPhone;
private List<OrderData> orders; private List<OrderData> orders;
......
...@@ -82,7 +82,7 @@ public class InvoiceBiz extends BaseBiz<InvoiceMapper, Invoice> { ...@@ -82,7 +82,7 @@ public class InvoiceBiz extends BaseBiz<InvoiceMapper, Invoice> {
* 推送方式:-1,不推送;0,邮箱;1,手机(默认);2,邮箱、手机 * 推送方式:-1,不推送;0,邮箱;1,手机(默认);2,邮箱、手机
*/ */
@Value("${invoice.pushMode}") @Value("${invoice.pushMode}")
private Integer pushMode = 2; private Integer pushMode;
private static final ScheduledExecutorService executorService = new ScheduledThreadPoolExecutor(8); private static final ScheduledExecutorService executorService = new ScheduledThreadPoolExecutor(8);
/** /**
...@@ -113,6 +113,10 @@ public class InvoiceBiz extends BaseBiz<InvoiceMapper, Invoice> { ...@@ -113,6 +113,10 @@ public class InvoiceBiz extends BaseBiz<InvoiceMapper, Invoice> {
* @throws Exception * @throws Exception
*/ */
public String Invoicing(InvoiceVo invoiceVo) throws Exception { public String Invoicing(InvoiceVo invoiceVo) throws Exception {
//没有填写邮箱不需要进行推送
if (StringUtils.isBlank(invoiceVo.getPurchaserEmail())) {
pushMode = -1;
}
Invoice invoice = new Invoice(); Invoice invoice = new Invoice();
long on = snowflakeIdWorker.nextId(); long on = snowflakeIdWorker.nextId();
...@@ -127,6 +131,7 @@ public class InvoiceBiz extends BaseBiz<InvoiceMapper, Invoice> { ...@@ -127,6 +131,7 @@ public class InvoiceBiz extends BaseBiz<InvoiceMapper, Invoice> {
invoice.setReviewer(checker); invoice.setReviewer(checker);
invoice.setIssuer(clerk); invoice.setIssuer(clerk);
invoice.setPushMode(pushMode); invoice.setPushMode(pushMode);
Date invoiceDate = new Date(); Date invoiceDate = new Date();
invoice.setCreateTime(invoiceDate); invoice.setCreateTime(invoiceDate);
invoice.setInvoiceDate(invoiceDate); invoice.setInvoiceDate(invoiceDate);
...@@ -157,24 +162,24 @@ public class InvoiceBiz extends BaseBiz<InvoiceMapper, Invoice> { ...@@ -157,24 +162,24 @@ public class InvoiceBiz extends BaseBiz<InvoiceMapper, Invoice> {
BigDecimal taxExcludedAmount = BigDecimal.ZERO; BigDecimal taxExcludedAmount = BigDecimal.ZERO;
BigDecimal taxIncludedAmount = BigDecimal.ZERO; BigDecimal taxIncludedAmount = BigDecimal.ZERO;
for (OrderData order : orders) { for (OrderData order : orders) {
if (order.getWithTaxFlag()==1) { if (order.getWithTaxFlag() == 1) {
//含价税合计 //含价税合计
BigDecimal taxIncluded = order.getPrice(); BigDecimal taxIncluded = order.getPrice();
//税率 //税率
BigDecimal taxRate = order.getTaxRate(); BigDecimal taxRate = order.getTaxRate();
//不含税单价 //不含税单价
BigDecimal TaxFree = taxIncluded.divide(taxRate.add(new BigDecimal(1)),2,BigDecimal.ROUND_HALF_UP); BigDecimal TaxFree = taxIncluded.divide(taxRate.add(new BigDecimal(1)), 2, BigDecimal.ROUND_HALF_UP);
taxExcludedAmount=taxExcludedAmount.add(TaxFree); taxExcludedAmount = taxExcludedAmount.add(TaxFree);
taxIncludedAmount=taxIncludedAmount.add(taxIncluded); taxIncludedAmount = taxIncludedAmount.add(taxIncluded);
}else { } else {
//不含税单价 //不含税单价
BigDecimal taxFree = order.getPrice(); BigDecimal taxFree = order.getPrice();
//税率 //税率
BigDecimal taxRate = order.getTaxRate(); BigDecimal taxRate = order.getTaxRate();
//含税单价 //含税单价
BigDecimal taxIncluded = taxFree.multiply(taxRate.add(new BigDecimal(1))); BigDecimal taxIncluded = taxFree.multiply(taxRate.add(new BigDecimal(1)));
taxExcludedAmount=taxExcludedAmount.add(taxFree); taxExcludedAmount = taxExcludedAmount.add(taxFree);
taxIncludedAmount=taxIncludedAmount.add(taxIncluded); taxIncludedAmount = taxIncludedAmount.add(taxIncluded);
} }
} }
invoice.setInvoiceAmount(taxExcludedAmount); invoice.setInvoiceAmount(taxExcludedAmount);
...@@ -186,21 +191,22 @@ public class InvoiceBiz extends BaseBiz<InvoiceMapper, Invoice> { ...@@ -186,21 +191,22 @@ public class InvoiceBiz extends BaseBiz<InvoiceMapper, Invoice> {
mapper.insert(invoice); mapper.insert(invoice);
//异步查询开票结果 //异步查询开票结果
schedule(invoiceSerialNum, invoice.getId(),invoice.getOrderId(),null, 0, 5,TimeUnit.SECONDS); schedule(invoiceSerialNum, invoice.getId(), invoice.getOrderId(), null, 0, 5, TimeUnit.SECONDS);
} }
/** /**
* 或去查询结果 * 或去查询结果
*
* @param invoiceSerialNum 发票流水号 * @param invoiceSerialNum 发票流水号
* @param id 发票id * @param id 发票id
* @param orderId 订单id * @param orderId 订单id
* @param lastStatus 上一次产需到的开票状态 * @param lastStatus 上一次产需到的开票状态
* @param count 已经查询过的次数 * @param count 已经查询过的次数
*/ */
public void queryInvoiceResult(String invoiceSerialNum, Integer id,String orderId,Integer lastStatus,Integer count) { public void queryInvoiceResult(String invoiceSerialNum, Integer id, String orderId, Integer lastStatus, Integer count) {
if (count==2){ if (count == 2) {
InvoiceQueryError invoiceQueryError = new InvoiceQueryError(); InvoiceQueryError invoiceQueryError = new InvoiceQueryError();
invoiceQueryError.setInvoiceId(id); invoiceQueryError.setInvoiceId(id);
invoiceQueryError.setInvoiceSerialNum(invoiceSerialNum); invoiceQueryError.setInvoiceSerialNum(invoiceSerialNum);
...@@ -211,24 +217,24 @@ public class InvoiceBiz extends BaseBiz<InvoiceMapper, Invoice> { ...@@ -211,24 +217,24 @@ public class InvoiceBiz extends BaseBiz<InvoiceMapper, Invoice> {
} }
List<Map<String, Object>> result = invoiceResult(invoiceSerialNum); List<Map<String, Object>> result = invoiceResult(invoiceSerialNum);
if (result==null){ if (result == null) {
schedule(invoiceSerialNum, id,orderId,null, ++count, 2,TimeUnit.HOURS); schedule(invoiceSerialNum, id, orderId, null, ++count, 2, TimeUnit.HOURS);
return; return;
} }
log.info("查询到的开票结果={}",result); log.info("查询到的开票结果={}", result);
Map<String, Object> data = result.get(0); Map<String, Object> data = result.get(0);
Integer status = (Integer) data.get("status"); Integer status = (Integer) data.get("status");
String invoiceFileUrl = (String) data.get("invoiceFileUrl"); String invoiceFileUrl = (String) data.get("invoiceFileUrl");
String invoiceCode = (String) data.get("invoiceCode"); String invoiceCode = (String) data.get("invoiceCode");
String invoiceNum = (String) data.get("invoiceNum"); String invoiceNum = (String) data.get("invoiceNum");
String taxIncludedAmountStr = String.valueOf(data.get("taxIncludedAmount")) ; String taxIncludedAmountStr = String.valueOf(data.get("taxIncludedAmount"));
String taxExcludedAmountStr = String.valueOf(data.get("taxExcludedAmount")) ; String taxExcludedAmountStr = String.valueOf(data.get("taxExcludedAmount"));
Invoice invoice = new Invoice(); Invoice invoice = new Invoice();
invoice.setId(id); invoice.setId(id);
invoice.setStatus(status); invoice.setStatus(status);
invoice.setUpdateTime(new Date()); invoice.setUpdateTime(new Date());
if (StringUtils.isNotBlank(taxExcludedAmountStr)&&StringUtils.isNotBlank(taxIncludedAmountStr)) { if (StringUtils.isNotBlank(taxExcludedAmountStr) && StringUtils.isNotBlank(taxIncludedAmountStr)) {
BigDecimal taxExcludedAmount = new BigDecimal(taxExcludedAmountStr); BigDecimal taxExcludedAmount = new BigDecimal(taxExcludedAmountStr);
BigDecimal taxIncludedAmount = new BigDecimal(taxIncludedAmountStr); BigDecimal taxIncludedAmount = new BigDecimal(taxIncludedAmountStr);
invoice.setInvoiceAmount(taxExcludedAmount); invoice.setInvoiceAmount(taxExcludedAmount);
...@@ -237,15 +243,15 @@ public class InvoiceBiz extends BaseBiz<InvoiceMapper, Invoice> { ...@@ -237,15 +243,15 @@ public class InvoiceBiz extends BaseBiz<InvoiceMapper, Invoice> {
invoice.setInvoiceSummaryAmountText(NumberToCN.number2CNMontrayUnit(taxIncludedAmount)); invoice.setInvoiceSummaryAmountText(NumberToCN.number2CNMontrayUnit(taxIncludedAmount));
} }
if (InvoiceStatusEum.ONGOING.getCode().equals(status) || InvoiceStatusEum.UNBILLED.getCode().equals(status)) { if (InvoiceStatusEum.ONGOING.getCode().equals(status) || InvoiceStatusEum.UNBILLED.getCode().equals(status)) {
schedule(invoiceSerialNum, id,orderId,status, ++count, 2,TimeUnit.HOURS); schedule(invoiceSerialNum, id, orderId, status, ++count, 2, TimeUnit.HOURS);
}else if (InvoiceStatusEum.SUCCESS.getCode().equals(status)){ } else if (InvoiceStatusEum.SUCCESS.getCode().equals(status)) {
invoice.setInvoiceCode(invoiceCode); invoice.setInvoiceCode(invoiceCode);
invoice.setInvoiceNo(invoiceNum); invoice.setInvoiceNo(invoiceNum);
invoice.setPictureUrl(invoiceFileUrl); invoice.setPictureUrl(invoiceFileUrl);
setOrderInvoice(orderId, status, invoiceFileUrl); setOrderInvoice(orderId, status, invoiceFileUrl);
}else { } else {
setOrderInvoice(orderId, status,null); setOrderInvoice(orderId, status, null);
} }
mapper.updateByPrimaryKeySelective(invoice); mapper.updateByPrimaryKeySelective(invoice);
...@@ -253,6 +259,7 @@ public class InvoiceBiz extends BaseBiz<InvoiceMapper, Invoice> { ...@@ -253,6 +259,7 @@ public class InvoiceBiz extends BaseBiz<InvoiceMapper, Invoice> {
/** /**
* 设置订单发票表 * 设置订单发票表
*
* @param orderId 订单id * @param orderId 订单id
* @param status 发票查询状态 * @param status 发票查询状态
* @param invoiceFileUrl 发票pdf地址 * @param invoiceFileUrl 发票pdf地址
...@@ -268,6 +275,7 @@ public class InvoiceBiz extends BaseBiz<InvoiceMapper, Invoice> { ...@@ -268,6 +275,7 @@ public class InvoiceBiz extends BaseBiz<InvoiceMapper, Invoice> {
/** /**
* 再次查询开票结果 * 再次查询开票结果
*
* @param invoiceSerialNum * @param invoiceSerialNum
* @param id * @param id
* @param orderId * @param orderId
...@@ -276,9 +284,9 @@ public class InvoiceBiz extends BaseBiz<InvoiceMapper, Invoice> { ...@@ -276,9 +284,9 @@ public class InvoiceBiz extends BaseBiz<InvoiceMapper, Invoice> {
* @param time * @param time
* @param timeUnit * @param timeUnit
*/ */
public void schedule(String invoiceSerialNum, Integer id,String orderId,Integer lastStatus, int count, int time,TimeUnit timeUnit) { public void schedule(String invoiceSerialNum, Integer id, String orderId, Integer lastStatus, int count, int time, TimeUnit timeUnit) {
executorService.schedule(() -> { executorService.schedule(() -> {
queryInvoiceResult(invoiceSerialNum, id,orderId,lastStatus, count); queryInvoiceResult(invoiceSerialNum, id, orderId, lastStatus, count);
}, time, timeUnit); }, time, timeUnit);
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment