UasEisApplicationTests.java 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198
  1. package com.uas.eis;
  2. import com.alibaba.fastjson.JSONArray;
  3. import com.alibaba.fastjson.JSONObject;
  4. import com.uas.eis.config.DonlimConfig;
  5. import com.uas.eis.dao.*;
  6. import com.uas.eis.service.ERPService;
  7. import com.uas.eis.task.ElecInvoiceTask;
  8. import com.uas.eis.task.InvoiceOrderTask;
  9. import nuonuo.open.sdk.NNOpenSDK;
  10. import org.junit.Test;
  11. import org.junit.runner.RunWith;
  12. import org.springframework.beans.factory.annotation.Autowired;
  13. import org.springframework.boot.test.context.SpringBootTest;
  14. import org.springframework.test.context.junit4.SpringRunner;
  15. import java.io.*;
  16. import java.net.URL;
  17. import java.net.URLConnection;
  18. import java.text.SimpleDateFormat;
  19. import java.util.*;
  20. @RunWith(SpringRunner.class)
  21. @SpringBootTest(classes = {UasEisApplication.class})
  22. public class UasEisApplicationTests {
  23. @Autowired
  24. private BaseDao baseDao;
  25. @Autowired
  26. private ERPService erpService;
  27. @Autowired
  28. private DonlimConfig donlimConfig;
  29. @Autowired
  30. private ElecInvoiceTask elecInvoiceTask;
  31. @Autowired
  32. InvoiceOrderTask invoiceOrderTask;
  33. /**
  34. * 开票订单对接
  35. */
  36. @Test
  37. public void Test() {
  38. System.out.println("test");
  39. System.out.println(new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").format(new Date()));
  40. Object ob=baseDao.getFieldDataByCondition("enterprise","EN_WHICHSYSTEM","1=1");
  41. System.out.println(ob.toString());
  42. erpService.pushInvoiceOrder("N_HUASL_SZ",39);
  43. }
  44. /**
  45. * 获取token
  46. */
  47. @Test
  48. public void Test1() {
  49. /*//测试
  50. String appKey = "SD47646161";
  51. String appSecret = "SD681C05C3EA4408";*/
  52. //正式
  53. String appKey = "47646161";
  54. String appSecret = "B6681C05C3EA4408";
  55. // 接口调用
  56. NNOpenSDK sdk = NNOpenSDK.getIntance();
  57. String json = sdk.getMerchantToken(appKey, appSecret);
  58. // 响应报文解析
  59. System.out.println("\n\n\n【商户获取Token】");
  60. System.out.println(json);
  61. }
  62. @Test
  63. public void Test2(){
  64. NNOpenSDK sdk = NNOpenSDK.getIntance();
  65. String taxnum ="339901999999199";////测试
  66. String appKey = "78607195";
  67. String appSecret = "26A860C451744A21";
  68. String method = "nuonuo.OpeMplatform.queryInvoiceList"; // API方法名
  69. String url = "https://sdk.nuonuo.com/open/v1/services";//SDK请求地址
  70. String token = "77f21f617f87135fcd97ef1ueud3dxdi";
  71. String content = "{ \"requestType\": \"1\", \"pageNo\": \"2\", \"pageSize\": \"20\", \"taxnum\": \"339901999999199\", " +
  72. " \"startTime\": \"2023-07-20 00:00:00\", " +
  73. "\"endTime\": \"2023-07-21 00:00:00\" }";
  74. content=sdk.convertToUtf8(content);
  75. String senid = UUID.randomUUID().toString().replace("-", ""); // 唯一标识,32位随机码,无需修改,保持默认即可
  76. String result = sdk.sendPostSyncRequest(url, senid, appKey, appSecret, token, taxnum, method, content);
  77. System.out.println("result:");
  78. System.out.println(result);
  79. }
  80. /**
  81. * 请求开具发票
  82. */
  83. @Test
  84. public void Test3() {
  85. erpService.invoiceOrderSubmitKp("N_HUASL_SZ",5);
  86. }
  87. @Test
  88. public void Test_del() {
  89. erpService.cancelInvoiceOrder("N_HUASL_SZ",7);
  90. }
  91. /**
  92. * nuonuo.OpeMplatform.findOrderState(诺税通Saas订单状态查询接口)
  93. */
  94. @Test
  95. public void TestfindOrderState() {
  96. String OrderCode = "SZ23070005";
  97. SqlRowList io = baseDao.queryForRowSet("SELECT io_id FROM N_HUASL_SZ.invoiceOrder where IO_STATUS ='已审核' and IO_DOCKSTATUS = '对接成功' " +
  98. // "and nvl(IO_INVOICESTATUS,0) in(0,1,6) " +
  99. "and io_code = '"+OrderCode+"'" +
  100. "order by io_id ");
  101. //订单状态(0:待处理 1:处理中 2:已处理 4:提交失败 6:部分待处理 7:无需开票)
  102. //0:待处理 表示订单没有转了开票申请,此状态需要定时获取
  103. //1:处理中 表示订单可能转了开票申请,此状态需要定时获取
  104. //2:已处理 表示订单全部都转了开票申请,没有发票号的情况下要继续获取订单状态。
  105. //4:提交失败 表示订单自动转失败了,此状态需要定时获取
  106. //6:部分待处理 表示订单部分转了开票申请,此状态需要定时获取
  107. //7:无需开票,此状态可以不用管,此状态需要定时获取
  108. while (io.next()){
  109. Map<String, Object> mm = erpService.findOrderState("N_HUASL_SZ", io.getGeneralInt("io_id"));
  110. }
  111. }
  112. @Test
  113. public void TestInvoiceOrderStateUpdate(){
  114. invoiceOrderTask.InvoiceOrderStateUpdate();
  115. }
  116. /**
  117. * 查询订单关联发票接口 nuonuo.OpeMplatform.findOrderRelationInvoice
  118. */
  119. @Test
  120. public void Test5() {
  121. NNOpenSDK sdk = NNOpenSDK.getIntance();
  122. String taxnum ="339901999999199";////测试
  123. String appKey = "78607195";
  124. String appSecret = "26A860C451744A21";
  125. String method = "nuonuo.OpeMplatform.findOrderRelationInvoice"; // API方法名
  126. String url = "https://sdk.nuonuo.com/open/v1/services";//SDK请求地址
  127. String token = "77f21f617f87135fcd97ef1ueud3dxdi";
  128. Map<String,Object> reqParam=new HashMap<>();
  129. reqParam.put("needInvoiceSourceDetail","0");// 是否需要发票所来源的订单明细,1-是, 0-否(不填默认 0) 当为0时,将不回传orderDetailCallBackVOS
  130. //SZ23070026
  131. //betaRTC-202105-003180-209
  132. reqParam.put("originalOrderNo","SZ23070018");//部分待处理-没开票 {"status":"8958","message":"该订单对应的开票单不存在","data":null}
  133. reqParam.put("saleTaxNum","339901999999199");
  134. // invoiceState = 1 开票状态,合并冲销时为空 1:开票成功 2:开票失败
  135. //exceptionMessage 开票异常信息,开票失败状态时返回
  136. String content=JSONArray.toJSONString(reqParam);
  137. // content=sdk.convertToUtf8(content);
  138. // System.out.println(content);
  139. String senid = UUID.randomUUID().toString().replace("-", ""); // 唯一标识,32位随机码,无需修改,保持默认即可
  140. String result = sdk.sendPostSyncRequest(url, senid, appKey, appSecret, token, taxnum, method, content);
  141. System.out.println(result);
  142. }
  143. @Test
  144. public void TestDownLoadElecInvoice(){
  145. Map<String, Object> m = erpService.getElecInvoicesById("N_HUASL_SZ", 25);
  146. System.out.println(JSONObject.toJSONString(m));
  147. // elecInvoiceTask.elecInvoiceDownLoad();
  148. }
  149. //文件转存
  150. //https://inv.jss.com.cn/fp2/2zpnwyKkdvu9dWzE8BhmSnER0Iux3xQRMLidDJhiIE2PziVXY4lL3k83OsK0K06YctW5cf1FFHxraffj-bf16A.pdf
  151. @Test
  152. public void TestPdfDowLoad(){
  153. //下载地址
  154. String fileUrl = "https://inv.jss.com.cn/fp2/2zpnwyKkdvu9dWzE8BhmSnER0Iux3xQRMLidDJhiIE2PziVXY4lL3k83OsK0K06YctW5cf1FFHxraffj-bf16A.pdf";
  155. // 定义要保存的文件的路径
  156. String filePath = "C:\\invoice\\988038486766_00007404.pdf";//开票代码_发票号码
  157. try {
  158. // 创建URL对象
  159. URL url = new URL(fileUrl);
  160. // 打开连接
  161. URLConnection conn = url.openConnection();
  162. // 获取输入流
  163. InputStream in = conn.getInputStream();
  164. // 创建输出流
  165. OutputStream out = new FileOutputStream(filePath);
  166. // 创建缓冲区
  167. byte[] buffer = new byte[1024];
  168. // 读取并写入数据
  169. int len;
  170. while ((len = in.read(buffer)) != -1) {
  171. out.write(buffer, 0, len);
  172. }
  173. // 关闭流
  174. in.close();
  175. out.close();
  176. //存文件 filepath
  177. System.out.println("下载成功");
  178. } catch (Exception e) {
  179. e.printStackTrace();
  180. }
  181. }
  182. @Test
  183. public void TestElecInvoiceAttachSave(){
  184. elecInvoiceTask.elecInvoiceAttachSave();
  185. }
  186. }