Commit 03b754a6 authored by hanfeng's avatar hanfeng

开票

parent 70037a12
...@@ -186,7 +186,7 @@ public class Invoice { ...@@ -186,7 +186,7 @@ public class Invoice {
/** /**
* 开票类型:1-正票;2-红票 * 开票类型:1-正票;2-红票
*/ */
private Integer invoiceType=0; private Integer invoiceType=1;
/** /**
* 开票内容 * 开票内容
*/ */
......
...@@ -31,6 +31,8 @@ public class OrderData { ...@@ -31,6 +31,8 @@ public class OrderData {
* 税率 * 税率
*/ */
private Double taxRate; private Double taxRate;
private String specType;
/** /**
* 单位 * 单位
*/ */
......
...@@ -4,7 +4,6 @@ import com.xxfc.platform.universal.entity.OrderData; ...@@ -4,7 +4,6 @@ import com.xxfc.platform.universal.entity.OrderData;
import lombok.Data; import lombok.Data;
import java.math.BigDecimal;
import java.util.List; import java.util.List;
/** /**
...@@ -14,35 +13,38 @@ import java.util.List; ...@@ -14,35 +13,38 @@ import java.util.List;
*/ */
@Data @Data
public class InvoiceVo { public class InvoiceVo {
/**
* 订单id :多个以逗号隔开
*/
private String orderId;
/** /**
* 发票分类:01 专票,02 货物运输业增值税专用发票,03 机动车销售统一发票, * 发票分类:01 专票,02 货物运输业增值税专用发票,03 机动车销售统一发票,
* 04 增值税普通发票,10 增值税普通发票(电子),11 增值税普通发票(卷票),14 增值税普通发票(卷票) * 04 增值税普通发票,10 增值税普通发票(电子),11 增值税普通发票(卷票),14 增值税普通发票(卷票)
*/ */
private Integer invoiceCategory=10; private Integer invoiceCategory=10;
/** // /**
* 合计金额 // * 合计金额
*/ // */
private BigDecimal invoiceAmount; // private BigDecimal invoiceAmount;
//
// /**
// * 合计税额
// */
// private BigDecimal taxAmount;
//
// /**
// * 价税合计总额
// */
// private BigDecimal invoiceSummaryAmount;
//
// /**
// * 价税合计总额大写
// */
// private String invoiceSummaryAmountText;
/** /**
* 合计税额 * 订单id :多个以逗号隔开
*/
private BigDecimal taxAmount;
/**
* 价税合计总额
*/ */
private BigDecimal invoiceSummaryAmount; private String orderId;
/**
* 价税合计总额大写
*/
private String invoiceSummaryAmountText;
/** /**
* 备注 * 备注
*/ */
...@@ -74,9 +76,10 @@ public class InvoiceVo { ...@@ -74,9 +76,10 @@ public class InvoiceVo {
*/ */
private String content; private String content;
/** /**
* 推送方式:-1,不推送;0,邮箱;1,手机(默认);2,邮箱、手机 * 购方手机
*/ */
private Integer pushMode=2; private String purchaserPhone;
private List<OrderData> orders; private List<OrderData> orders;
......
...@@ -46,9 +46,15 @@ public class InvoiceController { ...@@ -46,9 +46,15 @@ public class InvoiceController {
return ObjectRestResponse.succ(mapList); return ObjectRestResponse.succ(mapList);
} }
@PostMapping @PostMapping("/invoicing")
public ObjectRestResponse Invoicing(@RequestBody InvoiceVo invoiceVo){ public ObjectRestResponse invoicing(@RequestBody InvoiceVo invoiceVo){
invoiceService.Invoicing(invoiceVo); String invoicing = invoiceService.Invoicing(invoiceVo);
return ObjectRestResponse.succ(); return ObjectRestResponse.succ(invoicing);
}
@GetMapping("/result")
public ObjectRestResponse invoiceResult(@RequestParam("invoiceSerialNum")String invoiceSerialNum){
String result= invoiceService.invoiceResult(invoiceSerialNum);
return ObjectRestResponse.succ(result);
} }
} }
...@@ -2,7 +2,7 @@ package com.xxfc.platform.universal.service; ...@@ -2,7 +2,7 @@ package com.xxfc.platform.universal.service;
import com.xxfc.platform.universal.entity.Invoice; import com.xxfc.platform.universal.entity.Invoice;
import com.xxfc.platform.universal.entity.vo.InvoiceVo; import com.xxfc.platform.universal.entity.vo.InvoiceVo;
import com.xxfc.platform.universal.service.Invoice.InvoiceDao; import com.xxfc.platform.universal.service.invoice.InvoiceDao;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
...@@ -12,6 +12,7 @@ import java.util.Map; ...@@ -12,6 +12,7 @@ import java.util.Map;
/** /**
* 发票服务 * 发票服务
*
* @author Administrator * @author Administrator
* @Date: 2019/12/31 10:05 * @Date: 2019/12/31 10:05
* @Description: * @Description:
...@@ -21,30 +22,35 @@ public class InvoiceService { ...@@ -21,30 +22,35 @@ public class InvoiceService {
@Autowired @Autowired
private InvoiceDao invoiceDao; private InvoiceDao invoiceDao;
private static final String salerName="欣新房车网络科技(广东)股份有限公司"; private static final String salerName = "欣新房车网络科技(广东)股份有限公司";
private static final String salerTaxNum="91441900MA53C6713X"; //正式
private static final String salerTel="13926892766"; // private static final String salerTaxNum="91441900MA53C6713X";
private static final String salerAddress="广东省东莞市松山湖园区科汇路1号1栋801室13926892766"; //测试
private static final String salerAccount="中国建设银行股份有限公司东莞虎门连升支行44050110140900000777"; private static final String salerTaxNum = "339901999999142";
private static final String salerTel = "13926892766";
private static final String salerAddress = "广东省东莞市松山湖园区科汇路1号1栋801室13926892766";
private static final String salerAccount = "中国建设银行股份有限公司东莞虎门连升支行44050110140900000777";
//收款人 //收款人
private static final String payee= "郑超"; private static final String payee = "郑超";
//复核人 //复核人
private static final String checker="邹冬梅"; private static final String checker = "邹冬梅";
//开票人 //开票人
private static final String clerk="郑超"; private static final String clerk = "郑超";
// 推送方式:-1,不推送;0,邮箱;1,手机(默认);2,邮箱、手机
private static final Integer pushMode = 2;
public String getDutyParagraphByCode(String code) { public String getDutyParagraphByCode(String code) {
return invoiceDao.getDutyParagraphByCode(code); return invoiceDao.getDutyParagraphByCode(code);
} }
public List<Map<String,String>> corporateName(String name) { public List<Map<String, String>> corporateName(String name) {
return invoiceDao.corporateName(name); return invoiceDao.corporateName(name);
} }
public void Invoicing(InvoiceVo invoiceVo) { public String Invoicing(InvoiceVo invoiceVo) {
Invoice invoice = new Invoice(); Invoice invoice = new Invoice();
BeanUtils.copyProperties(invoice,invoiceVo); BeanUtils.copyProperties(invoiceVo, invoice);
invoice.setSalerName(salerName); invoice.setSalerName(salerName);
invoice.setSalerTaxCode(salerTaxNum); invoice.setSalerTaxCode(salerTaxNum);
invoice.setSalerAddressPhone(salerAddress); invoice.setSalerAddressPhone(salerAddress);
...@@ -52,6 +58,11 @@ public class InvoiceService { ...@@ -52,6 +58,11 @@ public class InvoiceService {
invoice.setPayee(payee); invoice.setPayee(payee);
invoice.setReviewer(checker); invoice.setReviewer(checker);
invoice.setIssuer(clerk); invoice.setIssuer(clerk);
invoiceDao.Invoicing(invoice); invoice.setPushMode(pushMode);
return invoiceDao.Invoicing(invoice);
}
public String invoiceResult(String invoiceSerialNum) {
return invoiceDao.invoiceResult(invoiceSerialNum);
} }
} }
package com.xxfc.platform.universal.service.Invoice; package com.xxfc.platform.universal.service.invoice;
import com.xxfc.platform.universal.entity.Invoice; import com.xxfc.platform.universal.entity.Invoice;
...@@ -15,5 +15,7 @@ public interface InvoiceDao { ...@@ -15,5 +15,7 @@ public interface InvoiceDao {
String getDutyParagraphByCode(String code); String getDutyParagraphByCode(String code);
void Invoicing(Invoice invoice); String Invoicing(Invoice invoice);
String invoiceResult(String invoiceSerialNum);
} }
package com.xxfc.platform.universal.service.Invoice.impl; package com.xxfc.platform.universal.service.invoice.impl;
import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.collection.CollectionUtil;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
...@@ -7,7 +7,7 @@ import com.github.wxiaoqi.security.common.exception.BaseException; ...@@ -7,7 +7,7 @@ import com.github.wxiaoqi.security.common.exception.BaseException;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import com.xxfc.platform.universal.entity.Invoice; import com.xxfc.platform.universal.entity.Invoice;
import com.xxfc.platform.universal.entity.OrderData; import com.xxfc.platform.universal.entity.OrderData;
import com.xxfc.platform.universal.service.Invoice.InvoiceDao; import com.xxfc.platform.universal.service.invoice.InvoiceDao;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import nuonuo.open.sdk.NNOpenSDK; import nuonuo.open.sdk.NNOpenSDK;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
...@@ -16,6 +16,7 @@ import org.springframework.context.annotation.Primary; ...@@ -16,6 +16,7 @@ import org.springframework.context.annotation.Primary;
import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.text.SimpleDateFormat;
import java.util.*; import java.util.*;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
...@@ -42,8 +43,13 @@ public class InvoiceDaoImpl implements InvoiceDao { ...@@ -42,8 +43,13 @@ public class InvoiceDaoImpl implements InvoiceDao {
* 诺诺-诺诺发票 * 诺诺-诺诺发票
*/ */
private static final String taxnum2 = "91441900MA53C6713X"; private static final String taxnum2 = "91441900MA53C6713X";
private static final String appKey2 = "26345711"; //沙箱
private static final String appSecret2 = "901B543442BF41A1"; private static final String appKey2 = "SD26345711";
private static final String appSecret2 = "SD1B543442BF41A1";
// //正式
// private static final String appKey2 = "26345711";
// private static final String appSecret2 = "901B543442BF41A1";
...@@ -101,13 +107,17 @@ public class InvoiceDaoImpl implements InvoiceDao { ...@@ -101,13 +107,17 @@ public class InvoiceDaoImpl implements InvoiceDao {
@Override @Override
public void Invoicing(Invoice invoice) { public String Invoicing(Invoice invoice) {
NNOpenSDK sdk = NNOpenSDK.getIntance(); NNOpenSDK sdk = NNOpenSDK.getIntance();
// API方法名 // API方法名
String method = "nuonuo.electronInvoice.requestBilling"; String method = "nuonuo.electronInvoice.requestBilling";
// SDK请求地址 // SDK请求地址
//沙箱
String url = "https://sandbox.nuonuocs.cn/open/v1/services"; String url = "https://sandbox.nuonuocs.cn/open/v1/services";
//正式
// String url = "https://sdk.nuonuo.com/open/v1/services";
String senid = UUID.randomUUID().toString().replace("-", ""); String senid = UUID.randomUUID().toString().replace("-", "");
HashMap<String, Object> map = new HashMap<>(); HashMap<String, Object> map = new HashMap<>();
HashMap<String, Map<String, Object>> orderMap = new HashMap<>(); HashMap<String, Map<String, Object>> orderMap = new HashMap<>();
...@@ -115,16 +125,16 @@ public class InvoiceDaoImpl implements InvoiceDao { ...@@ -115,16 +125,16 @@ public class InvoiceDaoImpl implements InvoiceDao {
//购方信息 //购方信息
map.put("buyerName",invoice.getPurchaserName()); map.put("buyerName",invoice.getPurchaserName());
map.put("buyerTaxNum", invoice.getPurchaserTaxCode()); map.put("buyerTaxNum", invoice.getPurchaserTaxCode());
map.put("buyerTel", invoice.getPurchaserPhone()); // map.put("buyerTel", invoice.getPurchaserPhone());
map.put("buyerAddress", invoice.getPurchaserAddressPhone()); map.put("buyerAddress", invoice.getPurchaserAddressPhone());
map.put("buyerAccount", invoice.getPurchaserAccountBank()); map.put("buyerAccount", invoice.getPurchaserAccountBank());
map.put("buyerPhone", invoice.getPurchaserPhone()); map.put("buyerPhone", invoice.getPurchaserPhone());
map.put("email", invoice.getPurchaserEmail()); map.put("email", invoice.getPurchaserEmail());
map.put("remark", invoice.getRemark()); map.put("remark", invoice.getRemark());
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//销方信息 //销方信息
map.put("orderNo", invoice.getOrderId()); map.put("orderNo", invoice.getOrderId());
map.put("invoiceDate", new Date()); map.put("invoiceDate",dateFormat.format(new Date()));
map.put("salerName", invoice.getSalerName()); map.put("salerName", invoice.getSalerName());
map.put("salerTaxNum", invoice.getSalerTaxCode()); map.put("salerTaxNum", invoice.getSalerTaxCode());
map.put("salerAddress", invoice.getSalerAddressPhone()); map.put("salerAddress", invoice.getSalerAddressPhone());
...@@ -151,15 +161,39 @@ public class InvoiceDaoImpl implements InvoiceDao { ...@@ -151,15 +161,39 @@ public class InvoiceDaoImpl implements InvoiceDao {
mx.put("price", String.valueOf(order.getPrice())); mx.put("price", String.valueOf(order.getPrice()));
mx.put("taxRate", String.valueOf(order.getTaxRate())); mx.put("taxRate", String.valueOf(order.getTaxRate()));
mx.put("unit", order.getUnit()); mx.put("unit", order.getUnit());
mx.put("specType",order.getSpecType());
arrayList.add(mx); arrayList.add(mx);
} }
String token = getTokenFP();
String jsonString = JSON.toJSONString(orderMap); String jsonString = JSON.toJSONString(orderMap);
String result = sdk.sendPostSyncRequest(url, senid, appKey2, appSecret2, getTokenFP(), taxnum2, method, jsonString); String result = sdk.sendPostSyncRequest(url, senid, appKey2, appSecret2,token , taxnum2, method, jsonString);
System.out.println(result); System.out.println(result);
return result;
} }
@Override
public String invoiceResult(String invoiceSerialNum) {
NNOpenSDK sdk = NNOpenSDK.getIntance();
// API方法名
String method = "nuonuo.electronInvoice.CheckEInvoice";
HashMap<String, List<String>> map = new HashMap<>();
ArrayList<String> arrayList = Lists.newArrayList();
arrayList.add(invoiceSerialNum);
map.put("invoiceSerialNum",arrayList);
String content = JSON.toJSONString(map);
// SDK请求地址
//沙箱
String url = "https://sandbox.nuonuocs.cn/open/v1/services";
//正式
// String url = "https://sdk.nuonuo.com/open/v1/services";
// 唯一标识,由企业自己生成32位随机码
String senid = UUID.randomUUID().toString().replace("-", "");
String result = sdk.sendPostSyncRequest(url, senid, appKey2, appSecret2, getTokenFP(), taxnum2, method, content);
System.out.println(result);
return result;
}
/** /**
......
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