Browse Source

百旺开票任务回写开票信息

zxf 3 days ago
parent
commit
4ee5c3db08

+ 4 - 0
jd-logistics-api/jd-logistics-api-system/src/main/java/com/ruoyi/system/api/RemoteMonthSummaryService.java

@@ -11,4 +11,8 @@ import java.util.Map;
 public interface RemoteMonthSummaryService {
     @PostMapping("/monthSummary/creatMontSummary")
     public AjaxResult creatMontSummary(@RequestBody Map param);
+
+
+    @PostMapping("/invoice/updateInvoice")
+    public void updateInvoice();
 }

+ 11 - 8
jd-logistics-modules/jd-logistics-job/src/main/java/com/ruoyi/job/task/FinancialMonthSummaryTask.java

@@ -20,13 +20,9 @@ import java.util.Map;
  */
 @Component("financialMonthSummaryTask")
 public class FinancialMonthSummaryTask {
-
     private static final Logger logger = LoggerFactory.getLogger(FinancialMonthSummaryTask.class);
-
-
     @Autowired
     RemoteMonthSummaryService remoteMonthSummaryService;
-
     /**
      * 每个月月初 执行生成上个月的月度账单
      * @author zxf
@@ -42,12 +38,19 @@ public class FinancialMonthSummaryTask {
         param.put("monthCode",formattedDate);
         remoteMonthSummaryService.creatMontSummary(param);
     }
+
     /**
-     * 每次调账时  都会重新生成该供应商的月度账单
-     *  这里的定时任务  作为方便测试
+     * 每天定时回写电子发票
      * @author zxf
      */
-    public void doTask(Integer deptName, String month) {
-        System.out.println("月度汇总定时任务,部门ID:" + deptName + ", 月份:" + month);
+    public void updateInvoice() {
+        logger.info("已申请电子发票地址查询回写任务开始");
+        remoteMonthSummaryService.updateInvoice();
+        logger.info("电子发票地址回写完成");
     }
+
+
+
+
+
 }

+ 3 - 4
jd-logistics-modules/jd-logistics-system/src/main/java/com/ruoyi/logistics/controller/BizInvoiceController.java

@@ -51,9 +51,8 @@ public class BizInvoiceController {
     /**
      * 发票查询
      */
-    @PostMapping("/selectInvoice")
-    public AjaxResult selectInvoice(@RequestBody Map param) throws JsonProcessingException {
-        Map result=invoiceService.selectInvoice(param);
-        return  AjaxResult.success(result);
+    @PostMapping("/updateInvoice")
+    public void updateInvoice() throws JsonProcessingException {
+       invoiceService.updateInvoice();
     }
 }

+ 1 - 1
jd-logistics-modules/jd-logistics-system/src/main/java/com/ruoyi/logistics/domain/InvoiceRequest.java

@@ -23,7 +23,7 @@ public class InvoiceRequest {
     private  String bz;         //备注
 
 
-
+    private  Long summaryId;         //月度报表id
 
 
 }

+ 2 - 0
jd-logistics-modules/jd-logistics-system/src/main/java/com/ruoyi/logistics/mapper/RptFinancialMonthSummaryMapper.java

@@ -67,4 +67,6 @@ public interface RptFinancialMonthSummaryMapper
     int insertBachRptFinancialMonthSummary(List<Map<String, Object>> monthSummaryList);
 
     List<RptFinancialMonthSummary> selectRptFinancialMonthSummaryListToCheck(RptFinancialMonthSummary rptFinancialMonthSummary);
+
+    int updateRptFinancialMonthSummaryByInvoice(RptFinancialMonthSummary rptFinancialMonthSummary);
 }

+ 2 - 0
jd-logistics-modules/jd-logistics-system/src/main/java/com/ruoyi/logistics/service/IRptFinancialMonthSummaryService.java

@@ -68,4 +68,6 @@ public interface IRptFinancialMonthSummaryService
     int creatMontSummary(Map param);
 
     List<RptFinancialMonthSummary> selectRptFinancialMonthSummaryListToCheck(RptFinancialMonthSummary rptFinancialMonthSummary);
+
+    public int updateRptFinancialMonthSummaryByInvoice(RptFinancialMonthSummary rptFinancialMonthSummary);
 }

+ 1 - 1
jd-logistics-modules/jd-logistics-system/src/main/java/com/ruoyi/logistics/service/InvoiceService.java

@@ -16,5 +16,5 @@ public interface InvoiceService {
 
     Map invoiceIssuance(InvoiceRequest invoiceRequest) throws JsonProcessingException;
 
-    Map selectInvoice(Map param) throws JsonProcessingException;
+    void updateInvoice() throws JsonProcessingException;
 }

+ 62 - 37
jd-logistics-modules/jd-logistics-system/src/main/java/com/ruoyi/logistics/service/impl/InvoiceServiceImpl.java

@@ -6,6 +6,8 @@ import com.ruoyi.common.core.utils.StringUtils;
 import com.ruoyi.common.redis.service.RedisIdGenerator;
 import com.ruoyi.logistics.config.InvoiceConfig;
 import com.ruoyi.logistics.domain.InvoiceRequest;
+import com.ruoyi.logistics.domain.RptFinancialMonthSummary;
+import com.ruoyi.logistics.service.IRptFinancialMonthSummaryService;
 import com.ruoyi.logistics.service.InvoiceService;
 import com.ruoyi.logistics.util.Base64Util;
 import com.ruoyi.logistics.util.HttpUtil;
@@ -14,10 +16,12 @@ import com.ruoyi.logistics.util.TaxAmountCalculator;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.jdbc.core.JdbcTemplate;
 import org.springframework.stereotype.Service;
 import java.math.BigDecimal;
 import com.fasterxml.jackson.core.type.TypeReference;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 
 
@@ -35,8 +39,11 @@ public class InvoiceServiceImpl implements InvoiceService {
     private RedisIdGenerator redisIdGenerator;
     @Autowired
     private InvoiceConfig invoiceConfig;
+    @Autowired
+    JdbcTemplate jdbcTemplate;
 
-
+    @Autowired
+    private IRptFinancialMonthSummaryService rptFinancialMonthSummaryService;
 
     /**
      * 电子发票专票开据
@@ -50,7 +57,8 @@ public class InvoiceServiceImpl implements InvoiceService {
         // 1. 组装正票申请的业务报文(content)
         JSONObject content = new JSONObject();
         // 必选参数
-        content.put("djbh", redisIdGenerator.generateUniqueId("BWKP")); // 全局唯一单据编号
+        String djbh=redisIdGenerator.generateUniqueId("BWKP");
+        content.put("djbh", djbh); // 全局唯一单据编号
         content.put("kpzddm", invoiceConfig.getKpZddm());      // 开票终端代码
         content.put("fplxdm", "01");                           // 发票类型:01=专票,02=普票
         content.put("kplx", "0");                              // 开票类型:0=蓝字发票
@@ -100,13 +108,19 @@ public class InvoiceServiceImpl implements InvoiceService {
         requestParam.put("signType", invoiceConfig.getSignType());
         String responseJson = HttpUtil.doPostJson(invoiceConfig.getBaseUrl(), requestParam.toJSONString());
         ObjectMapper objectMapper = new ObjectMapper();
-       // JsonNode jsonNode = objectMapper.readTree(responseJson);
         Map<String, Object> invoiceMap = objectMapper.readValue(
                 responseJson,
                 new TypeReference<Map<String, Object>>() {}
         );
 
-        //这里成功后也要将单据编号进行回传月度报表
+        if("0".equals(invoiceMap.get("code").toString())){
+            //这里成功后也要将单据编号进行回传月度报表
+            RptFinancialMonthSummary rptFinancialMonthSummary= new RptFinancialMonthSummary();
+            rptFinancialMonthSummary.setStatus("3");
+            rptFinancialMonthSummary.setBwDjbh(djbh);
+            rptFinancialMonthSummary.setSummaryId(invoiceRequest.getSummaryId());
+            rptFinancialMonthSummaryService.updateRptFinancialMonthSummary(rptFinancialMonthSummary);
+        }
 
         return invoiceMap;
     }
@@ -120,42 +134,53 @@ public class InvoiceServiceImpl implements InvoiceService {
      */
 
     @Override
-    public Map selectInvoice(Map param) throws JsonProcessingException {
-        // 1.组装查询的报文
-        JSONObject content = new JSONObject();
-        content.put("djbh",param.get("djbh").toString());
-        String contentBase64 = Base64Util.encode(content.toJSONString());
-        // 3. 构建签名参数,生成签名值
-        Map<String, String> signParams = new HashMap<>();
-        signParams.put("appid", invoiceConfig.getAppId());
-        signParams.put("serviceid", invoiceConfig.getServiceSelect());
-        signParams.put("content", contentBase64);
-        String signature = SignUtil.sign("3", invoiceConfig.getAppSecret(), signParams);
-
-        JSONObject requestParam = new JSONObject();
-        requestParam.put("appid", invoiceConfig.getAppId());
-        requestParam.put("serviceid", invoiceConfig.getServiceSelect());
-        requestParam.put("content", contentBase64);
-        requestParam.put("signature", signature);
-        requestParam.put("signType","3");
-        String responseJson = HttpUtil.doPostJson(invoiceConfig.getBaseUrl(), requestParam.toJSONString());
-        ObjectMapper objectMapper = new ObjectMapper();
-        Map<String, Object> invoiceMap = objectMapper.readValue(
-                responseJson,
-                new TypeReference<Map<String, Object>>() {}
-        );
-        if(StringUtils.isNotBlank(invoiceMap.get("data").toString())){
-
-
-            Map<String, Object> dataMap = objectMapper.readValue(
-                    Base64Util.decode(invoiceMap.get("data").toString()),
+    public void updateInvoice() throws JsonProcessingException {
+
+        //查询所有未开票的
+        List<Map<String,Object>> invoiceList= jdbcTemplate.queryForList("SELECT bw_djbh FROM `rpt_financial_month_summary` where bw_djbh is  not null  and  bw_dzfp_pdf_url  is null");
+        for(int i=0;i<invoiceList.size();i++){
+            // 1.组装查询的报文
+            JSONObject content = new JSONObject();
+            String djbh=invoiceList.get(i).get("bw_djbh").toString();
+            content.put("djbh",djbh);
+            String contentBase64 = Base64Util.encode(content.toJSONString());
+            // 3. 构建签名参数,生成签名值
+            Map<String, String> signParams = new HashMap<>();
+            signParams.put("appid", invoiceConfig.getAppId());
+            signParams.put("serviceid", invoiceConfig.getServiceSelect());
+            signParams.put("content", contentBase64);
+            String signature = SignUtil.sign("3", invoiceConfig.getAppSecret(), signParams);
+
+            JSONObject requestParam = new JSONObject();
+            requestParam.put("appid", invoiceConfig.getAppId());
+            requestParam.put("serviceid", invoiceConfig.getServiceSelect());
+            requestParam.put("content", contentBase64);
+            requestParam.put("signature", signature);
+            requestParam.put("signType","3");
+            String responseJson = HttpUtil.doPostJson(invoiceConfig.getBaseUrl(), requestParam.toJSONString());
+            ObjectMapper objectMapper = new ObjectMapper();
+            Map<String, Object> invoiceMap = objectMapper.readValue(
+                    responseJson,
                     new TypeReference<Map<String, Object>>() {}
             );
-            invoiceMap.put("data",dataMap);
+            Map<String, Object> dataMap= new HashMap<>();
+            if(StringUtils.isNotBlank(invoiceMap.get("data").toString())){
+                dataMap = objectMapper.readValue(
+                        Base64Util.decode(invoiceMap.get("data").toString()),
+                        new TypeReference<Map<String, Object>>() {}
+                );
+
+            }
+            //这里  需要将查询到的信息进行回写月度报表里面
+            if("0".equals(invoiceMap.get("code").toString())){
+                RptFinancialMonthSummary rptFinancialMonthSummary= new RptFinancialMonthSummary();
+                rptFinancialMonthSummary.setBwDjbh(djbh);
+                rptFinancialMonthSummary.setBwDzfpPdfUrl(dataMap.get("ofd").toString());
+                rptFinancialMonthSummary.setBwDzfpOfdUrl(dataMap.get("pdf").toString());
+                rptFinancialMonthSummary.setBwDzfpXmlUrl(dataMap.get("xml").toString());
+                rptFinancialMonthSummaryService.updateRptFinancialMonthSummaryByInvoice(rptFinancialMonthSummary);
+            }
         }
-       //这里  需要将查询到的信息进行回写月度报表里面
-
 
-        return invoiceMap;
     }
 }

+ 6 - 0
jd-logistics-modules/jd-logistics-system/src/main/java/com/ruoyi/logistics/service/impl/RptFinancialMonthSummaryServiceImpl.java

@@ -125,4 +125,10 @@ public class RptFinancialMonthSummaryServiceImpl implements IRptFinancialMonthSu
     public List<RptFinancialMonthSummary> selectRptFinancialMonthSummaryListToCheck(RptFinancialMonthSummary rptFinancialMonthSummary) {
         return rptFinancialMonthSummaryMapper.selectRptFinancialMonthSummaryListToCheck(rptFinancialMonthSummary);
     }
+
+    @Override
+    public int updateRptFinancialMonthSummaryByInvoice(RptFinancialMonthSummary rptFinancialMonthSummary) {
+        rptFinancialMonthSummary.setUpdateTime(DateUtils.getNowDate());
+        return rptFinancialMonthSummaryMapper.updateRptFinancialMonthSummaryByInvoice(rptFinancialMonthSummary);
+    }
 }

+ 23 - 0
jd-logistics-modules/jd-logistics-system/src/main/resources/mapper/logistics/RptFinancialMonthSummaryMapper.xml

@@ -141,6 +141,29 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         where summary_id = #{summaryId}
     </update>
 
+    <update id="updateRptFinancialMonthSummaryByInvoice" parameterType="com.ruoyi.logistics.domain.RptFinancialMonthSummary">
+        update rpt_financial_month_summary
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="summaryMonth != null">summary_month = #{summaryMonth},</if>
+            <if test="payableAmount != null">payable_amount = #{payableAmount},</if>
+            <if test="transactionCount != null">transaction_count = #{transactionCount},</if>
+            <if test="status != null">status = #{status},</if>
+            <if test="createTime != null">create_time = #{createTime},</if>
+            <if test="updateTime != null">update_time = #{updateTime},</if>
+            <if test="remark != null">remark = #{remark},</if>
+            <if test="delFlag != null">del_flag = #{delFlag},</if>
+            <if test="createBy != null">create_by = #{createBy},</if>
+            <if test="updateBy != null">update_by = #{updateBy},</if>
+            <if test="deptId != null">dept_id = #{deptId},</if>
+            <if test="userId != null">user_id = #{userId},</if>
+            <if test="bwDjbh != null">bw_djbh = #{bwDjbh},</if>
+            <if test="bwDzfpPdfUrl != null">bw_dzfp_pdf_url = #{bwDzfpPdfUrl},</if>
+            <if test="bwDzfpOfdUrl != null">bw_dzfp_ofd_url = #{bwDzfpOfdUrl},</if>
+            <if test="bwDzfpXmlUrl != null">bw_dzfp_xml_url = #{bwDzfpXmlUrl},</if>
+        </trim>
+        where bw_djbh =  #{bwDjbh}
+    </update>
+
     <delete id="deleteRptFinancialMonthSummaryBySummaryId" parameterType="Long">
         delete from rpt_financial_month_summary where summary_id = #{summaryId}
     </delete>