瀏覽代碼

电子发票业务流程优化

lishiqiang 2 周之前
父節點
當前提交
bcbde49962

+ 0 - 33
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/service/invoice/InvoiceHangxinService.java

@@ -1,33 +0,0 @@
-package com.yc.ship.module.trade.service.invoice;
-
-import cn.hutool.json.JSONObject;
-import com.yc.ship.framework.common.pojo.CommonResult;
-import com.yc.ship.module.trade.dal.dataobject.invoice.InvoiceDO;
-
-public interface InvoiceHangxinService {
-
-    Boolean login (String username, String password);
-
-    /**
-     *  登录第一步(申请登录)
-     * @param username
-     * @param password
-     * @param userIdentity
-     * @return
-     */
-    JSONObject loginStepOne(String username, String password,String userIdentity);
-
-    /**
-     * 登录第二步(确认登录)
-     * @param username
-     * @param smsCode
-     * @return
-     */
-    JSONObject loginStepTwo(String username,String smsCode);
-
-    CommonResult<InvoiceDO> invoiceIssuance (InvoiceDO invoice);
-
-    JSONObject queryInvoiceUrl (Long invoiceId , String invoiceNo, String invoiceDate);
-
-
-}

+ 0 - 7
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/service/invoice/InvoiceService.java

@@ -25,13 +25,6 @@ public interface InvoiceService {
     CommonResult applyReInvoicing(InvoicingReqDTO reqDTO);
 
 
-    /**
-     * 查询发票url
-     *
-     * @param id
-     * @return
-     */
-    String queryInvoiceUrl(InvoiceDO invoice);
 
     List<InvoiceDO> queryInvoiceOrder(String orderNo);
 

File diff suppressed because it is too large
+ 32 - 35
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/service/invoice/impl/InvoiceGroupServiceImpl.java


File diff suppressed because it is too large
+ 0 - 434
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/service/invoice/impl/InvoiceHangxinServiceImpl.java


+ 2 - 39
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/service/invoice/impl/InvoiceServiceImpl.java

@@ -1,11 +1,9 @@
 package com.yc.ship.module.trade.service.invoice.impl;
 
-import cn.hutool.core.date.DatePattern;
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.thread.ThreadUtil;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.RandomUtil;
-import cn.hutool.json.JSONObject;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.IdWorker;
 import com.yc.ship.framework.common.lang.Asserts;
@@ -20,14 +18,12 @@ import com.yc.ship.module.trade.api.invoice.dto.InvoicingReqDTO;
 import com.yc.ship.module.trade.controller.admin.invoice.vo.InvoicePageReqVO;
 import com.yc.ship.module.trade.controller.admin.invoice.vo.InvoiceRespVO;
 import com.yc.ship.module.trade.dal.dataobject.invoice.InvoiceDO;
-import com.yc.ship.module.trade.dal.dataobject.invoice.InvoiceDetailDO;
 import com.yc.ship.module.trade.dal.dataobject.order.TradeOrderDO;
 import com.yc.ship.module.trade.dal.mysql.invoice.InvoiceMapper;
 import com.yc.ship.module.trade.enums.SellMethodEnum;
 import com.yc.ship.module.trade.enums.invoice.InvoiceStatusEnum;
 import com.yc.ship.module.trade.service.invoice.InvoiceDetailService;
 import com.yc.ship.module.trade.service.invoice.InvoiceGroupService;
-import com.yc.ship.module.trade.service.invoice.InvoiceHangxinService;
 import com.yc.ship.module.trade.service.invoice.InvoiceService;
 import com.yc.ship.module.trade.service.order.TradeOrderRepositoryService;
 import com.yc.ship.module.trade.service.refund.TradeRefundRepositoryService;
@@ -48,7 +44,6 @@ import java.util.List;
 import java.util.Objects;
 import java.util.concurrent.CompletableFuture;
 import java.util.concurrent.ExecutorService;
-import java.util.stream.Collectors;
 
 import static com.yc.ship.framework.common.exception.util.ServiceExceptionUtil.exception;
 import static com.yc.ship.framework.common.exception.util.ServiceExceptionUtil.exception0;
@@ -69,8 +64,6 @@ public class InvoiceServiceImpl implements InvoiceService {
     private InvoiceMapper invoiceMapper;
     @Resource
     private InvoiceGroupService invoiceGroupService;
-    @Resource
-    private InvoiceHangxinService invoiceHangxinService;
 
     //TODO 待完善
     @Resource
@@ -166,11 +159,8 @@ public class InvoiceServiceImpl implements InvoiceService {
 //        CompletableFuture<CommonResult<InvoiceDO>> future = CompletableFuture.supplyAsync(() -> invoiceHangxinService.invoiceIssuance(invoiceDO), executor);
         String fpSupplier = configApi.getPlatformConfigValueByKey("invoice.supplier");
         CompletableFuture<CommonResult<InvoiceDO>> future = CompletableFuture.supplyAsync(() -> {
-            if (StringUtils.equals("group", fpSupplier)) {
                 return invoiceGroupService.invoiceIssuance(invoiceDO,reqDTO.getRemark());
-            } else {
-                return invoiceHangxinService.invoiceIssuance(invoiceDO);
-            }
+
         }, executor);
         future.thenAcceptAsync(result -> {
             if (result.isSuccess()) {
@@ -184,27 +174,6 @@ public class InvoiceServiceImpl implements InvoiceService {
 
     }
 
-    @Override
-    public String queryInvoiceUrl(InvoiceDO invoice) {
-        if (invoice == null) {
-            throw exception(INVOICE_NOT_EXISTS);
-        }
-        Asserts.isTrue(invoice.getInvoiceStatus().equals(InvoiceStatusEnum.INVOICE_SUCCESS.getValue()), "发票未开票成功,无法查询!");
-        String kprq = DateUtil.format(invoice.getCKprq(), DatePattern.PURE_DATETIME_PATTERN);
-        JSONObject resObj = invoiceHangxinService.queryInvoiceUrl(invoice.getId(), invoice.getCFphm(), kprq);
-        String resultUrl = "";
-        if (null != resObj) {
-            resultUrl = resObj.getStr("DATA");
-            List<InvoiceDetailDO> list = invoiceDetailService.getInvoiceDetails(invoice.getId());
-            List<String> orderNoList = list.stream().map(InvoiceDetailDO::getOrderNo).collect(Collectors.toList());
-            //TODO:
-//            tradeOrderRepositoryService.updateInvoiceStatusByOrderNo(orderNoList, 1);
-            invoice.setCUrl(resultUrl);
-            invoiceMapper.updateById(invoice);
-        }
-        return resultUrl;
-    }
-
     @Override
     public String queryGroupInvoiceUrl(InvoiceDO invoice) {
         if (invoice == null) {
@@ -216,12 +185,6 @@ public class InvoiceServiceImpl implements InvoiceService {
         return "";
     }
 
-    private void validateInvoiceExists(Long id) {
-        if (invoiceMapper.selectById(id) == null) {
-            throw exception(INVOICE_NOT_EXISTS);
-        }
-    }
-
 
     @Override
     public InvoiceDO getInvoice(Long id) {
@@ -262,7 +225,7 @@ public class InvoiceServiceImpl implements InvoiceService {
 
     private InvoiceDO buildInvoice(InvoicingReqDTO reqDTO, BigDecimal price) {
         InvoiceDO invoiceDO = BeanUtils.toBean(reqDTO, InvoiceDO.class);
-        String taxCode = configApi.getPlatformConfigValueByKey("invoice.tax");
+        String taxCode = configApi.getPlatformConfigValueByKey("newinvoice.group.tax");
         String serialNum = RandomUtil.randomNumbers(30 - taxCode.length());
         long id = IdWorker.getId(invoiceDO);
         invoiceDO.setId(id);

+ 14 - 16
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/service/invoice/impl/InvoiceSxlyServiceImpl.java

@@ -44,11 +44,9 @@ public class InvoiceSxlyServiceImpl implements InvoiceSxlyService {
     private InvoiceService invoiceService;
 
 
-
     private final String SUCCESS = "0000";
 
 
-
     /**
      * 开蓝票
      */
@@ -132,7 +130,7 @@ public class InvoiceSxlyServiceImpl implements InvoiceSxlyService {
      * @return
      */
     private JSONObject bulidRequestParam(InvoiceDO invoice) {
-        String taxNum = configApi.getPlatformConfigValueByKey("newinvoice.tax");
+        String taxNum = configApi.getPlatformConfigValueByKey("newinvoice.group.tax");
         String senid = RandomUtil.randomNumbers(30 - taxNum.length());
         //流水号(生成规则:税号 +随机数 长度为30 唯一值)
         String serialNo = taxNum + senid;
@@ -160,17 +158,17 @@ public class InvoiceSxlyServiceImpl implements InvoiceSxlyService {
         //开票类型0-蓝票
         reqObj.put("KPLX", "0");
         //发票种类代码01-专用发票 02-普通发票
-        if(invoice.getInvoiceType()==null){
+        if (invoice.getInvoiceType() == null) {
             reqObj.put("FPZLDM", "02");
-        }else {
+        } else {
             reqObj.put("FPZLDM", InvoiceTypeEnum.valueOf(invoice.getInvoiceType()).getCode());
         }
         //开票员,以电子税局绑定人员为准
         reqObj.put("KPR", invoice.getBuyerClerk());
         //销货方开户行
-        reqObj.put("XHFKHH", configApi.getPlatformConfigValueByKey("invoice.sales.bank"));
+        reqObj.put("XHFKHH", configApi.getPlatformConfigValueByKey("newinvoice.sales.bank"));
         //getPlatformConfigValueByKey
-        reqObj.put("XHFYHZH", configApi.getPlatformConfigValueByKey("invoice.sales.bankaccount"));
+        reqObj.put("XHFYHZH", configApi.getPlatformConfigValueByKey("newinvoice.sales.bankaccount"));
 
         JSONArray detailArray = new JSONArray();
         JSONObject detailObj = null;
@@ -184,15 +182,15 @@ public class InvoiceSxlyServiceImpl implements InvoiceSxlyService {
         detailObj = new JSONObject();
         detailObj.put("XH", index);
         //商品名称
-        detailObj.put("SPMC", configApi.getPlatformConfigValueByKey("invoice.goods.name"));
-        String GoodsCode = configApi.getPlatformConfigValueByKey("invoice.goods.code");
+        detailObj.put("SPMC", configApi.getPlatformConfigValueByKey("newinvoice.goods.name"));
+        String GoodsCode = configApi.getPlatformConfigValueByKey("newinvoice.goods.code");
         String spbm = StrUtil.padAfter(GoodsCode, 19, "0");
         //商品编码
         detailObj.put("SPBM", spbm);
         //商品简码
-        detailObj.put("SPJM", "*" + configApi.getPlatformConfigValueByKey("invoice.goods.simpleCode") + "*");
+        detailObj.put("SPJM", "*" + configApi.getPlatformConfigValueByKey("newinvoice.goods.simpleCode") + "*");
         //税率
-        BigDecimal taxRate = new BigDecimal(configApi.getPlatformConfigValueByKey("invoice.taxRate"));
+        BigDecimal taxRate = new BigDecimal(configApi.getPlatformConfigValueByKey("newinvoice.taxRate"));
         detailObj.put("SLV", taxRate);
         //含税金额
         BigDecimal taxIncludedAmount = invoice.getPrice();
@@ -237,9 +235,9 @@ public class InvoiceSxlyServiceImpl implements InvoiceSxlyService {
      * @throws Exception
      */
     private String sendRequest(JSONObject reqBody, String path, String userName) throws Exception {
-        String url = configApi.getPlatformConfigValueByKey("invoice.url");
-        String secretkey = configApi.getPlatformConfigValueByKey("invoice.secretkey");
-        String appId = configApi.getPlatformConfigValueByKey("invoice.appId");
+        String url = configApi.getPlatformConfigValueByKey("newinvoice.group.url");
+        String secretkey = configApi.getPlatformConfigValueByKey("newinvoice.group.secretkey");
+        String appId = configApi.getPlatformConfigValueByKey("newinvoice.group.secretId");
         // 加密数据
 
         String paramStr = JsonUtils.toJsonString(reqBody);
@@ -252,7 +250,7 @@ public class InvoiceSxlyServiceImpl implements InvoiceSxlyService {
         params.set("DATA", contentData);
         //电子税局登录账号
         params.set("USERNAME", userName);
-        log.error("发票请求参数:{}", url+path+"--"+JsonUtils.toJsonString(params));
+        log.error("发票请求参数:{}", url + path + "--" + JsonUtils.toJsonString(params));
         String resultStr = HttpUtil.createPost(url + path).contentType("application/json")
                 .body(JsonUtils.toJsonString(params))
                 .timeout(15000)
@@ -267,7 +265,7 @@ public class InvoiceSxlyServiceImpl implements InvoiceSxlyService {
     private String decrypt(String data) {
         String result = null;
         try {
-            String secretkey = configApi.getPlatformConfigValueByKey("invoice.secretkey");
+            String secretkey = configApi.getPlatformConfigValueByKey("newinvoice.group.secretkey");
             byte[] encryptedResponse = HexUtil.parseHexStr2Byte(data);
             byte[] decryptedData = DESUtil.decrypt(encryptedResponse, secretkey);
             result = new String(decryptedData).trim();