Bladeren bron

商城相关

zxf 22 uur geleden
bovenliggende
commit
cdd9f49fed

+ 1 - 0
jd-logistics-modules/jd-logistics-system/src/main/java/com/ruoyi/logistics/config/InvoiceConfig.java

@@ -19,4 +19,5 @@ public class InvoiceConfig {
     private String baseUrl;
     private String kpZddm;
     private String serviceSelect;
+    private String shopUrl;
 }

+ 17 - 0
jd-logistics-modules/jd-logistics-system/src/main/java/com/ruoyi/logistics/config/RestTemplateConfig.java

@@ -0,0 +1,17 @@
+package com.ruoyi.logistics.config;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.client.RestTemplate;
+
+@Configuration
+public class RestTemplateConfig {
+
+    /**
+     * 注入 RestTemplate
+     */
+    @Bean
+    public RestTemplate restTemplate() {
+        return new RestTemplate();
+    }
+}

+ 23 - 0
jd-logistics-modules/jd-logistics-system/src/main/java/com/ruoyi/logistics/controller/BizInvoiceController.java

@@ -55,4 +55,27 @@ public class BizInvoiceController {
     public void updateInvoice() throws JsonProcessingException {
        invoiceService.updateInvoice();
     }
+
+
+    /**
+     * 针对已开票月度账单进行回传商城
+     * 回传商城后更新状态
+     */
+    @PostMapping("/returnShop")
+    public AjaxResult returnShop(@RequestBody InvoiceRequest invoiceRequest) {
+        try{
+          Map m=   invoiceService.returnShop(invoiceRequest);
+          if("0".equals(m.get("code").toString())){
+           return  AjaxResult.success("商城同步成功!");
+          }
+          else{
+              return  AjaxResult.error("商城同步失败!");
+          }
+        } catch (Exception e) {
+            logger.error(e.getMessage());
+           return AjaxResult.error("商城推送给失败!");
+        }
+    }
+
+
 }

+ 43 - 0
jd-logistics-modules/jd-logistics-system/src/main/java/com/ruoyi/logistics/domain/OrderRequest.java

@@ -0,0 +1,43 @@
+package com.ruoyi.logistics.domain;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+public class OrderRequest {
+    // 基础字段
+    private String orderNumber;    // 订单编号
+    private String skuId;          // 商品规格编号
+    private String gzTime;        // 过账日期
+    private String outCode;       // SAP客户编码
+    private String userId;        // 商城客户编码
+    private String userCompanyName; // 客户名称
+    private String sapCode;       // SAP供应商编码
+    private String shopName;      // 供应商名称
+
+    // 商品信息
+    private String prodName;      // 商品名称
+    private String prodCount;     // 商品数量
+
+    // 价格/税率
+    private BigDecimal buyPrice;       // 采购单价(含税)
+    private BigDecimal purchaseRate;   // 采购税率
+    private BigDecimal price;          // 进项税率
+    private BigDecimal buyMoney;       // 销售单价(含税)
+    private BigDecimal outputRate;     // 销项税率
+
+    // 时间
+    private String createTime;     // 创建时间
+    private String finallyTime;    // 订单收货时间
+
+    // 支付方式
+    private Integer payType;       // 支付方式 1线上2线下3授信4余额
+
+    // 金额
+    private BigDecimal buyMoneyNoTax; // 采购金额(不含税)
+    private BigDecimal saleMoney;     // 销售金额(含税)
+    private BigDecimal xxse;          // 销项税额
+    private BigDecimal jxse;          // 进项税额
+
+}

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

@@ -33,7 +33,7 @@ public class RptFinancialMonthSummary extends BaseEntity
     @Excel(name = "订单笔数")
     private String transactionCount;
 
-    /** 账单状态 1.待对账 2.已对账 3.待开票 4.已开票 */
+    /** 账单状态 1.待对账 2.已对账 待开票 3.已开票 ,4已回传商城*/
     @Excel(name = "账单状态")
     @Dict("monthly_report_status")
     private String status;
@@ -69,6 +69,8 @@ public class RptFinancialMonthSummary extends BaseEntity
 
     private String bwDzfpXmlUrl;
 
+    private String kprq;
+
     public void setSummaryMonthEnd(String summaryMonthEnd) {
         this.summaryMonthEnd = summaryMonthEnd;
     }
@@ -205,6 +207,14 @@ public class RptFinancialMonthSummary extends BaseEntity
         this.deptName = deptName;
     }
 
+    public void setKprq(String kprq) {
+        this.kprq = kprq;
+    }
+
+    public String getKprq() {
+        return kprq;
+    }
+
     @Override
     public String toString() {
         return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)

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

@@ -17,4 +17,6 @@ public interface InvoiceService {
     Map invoiceIssuance(InvoiceRequest invoiceRequest) throws JsonProcessingException;
 
     void updateInvoice() throws JsonProcessingException;
+
+    Map returnShop(InvoiceRequest invoiceRequest) throws JsonProcessingException;
 }

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

@@ -6,6 +6,7 @@ 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.OrderRequest;
 import com.ruoyi.logistics.domain.RptFinancialMonthSummary;
 import com.ruoyi.logistics.service.IRptFinancialMonthSummaryService;
 import com.ruoyi.logistics.service.InvoiceService;
@@ -20,10 +21,16 @@ import org.springframework.jdbc.core.JdbcTemplate;
 import org.springframework.stereotype.Service;
 import java.math.BigDecimal;
 import com.fasterxml.jackson.core.type.TypeReference;
+import java.time.LocalDate;
+import java.time.format.DateTimeFormatter;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
-
+import org.springframework.http.HttpEntity;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.MediaType;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.client.RestTemplate;
 
 /**
  * 开票相关接口
@@ -41,6 +48,8 @@ public class InvoiceServiceImpl implements InvoiceService {
     private InvoiceConfig invoiceConfig;
     @Autowired
     JdbcTemplate jdbcTemplate;
+    @Autowired
+    private RestTemplate restTemplate;
 
     @Autowired
     private IRptFinancialMonthSummaryService rptFinancialMonthSummaryService;
@@ -119,6 +128,12 @@ public class InvoiceServiceImpl implements InvoiceService {
             rptFinancialMonthSummary.setStatus("3");
             rptFinancialMonthSummary.setBwDjbh(djbh);
             rptFinancialMonthSummary.setSummaryId(invoiceRequest.getSummaryId());
+            LocalDate now = LocalDate.now();
+            // 定义格式:yyyy-MM-dd
+            DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
+            // 转成字符串
+            String dateStr = now.format(formatter);
+            rptFinancialMonthSummary.setKprq(dateStr);
             rptFinancialMonthSummaryService.updateRptFinancialMonthSummary(rptFinancialMonthSummary);
         }
 
@@ -183,4 +198,62 @@ public class InvoiceServiceImpl implements InvoiceService {
         }
 
     }
+
+    @Override
+    public Map returnShop( InvoiceRequest invoiceRequest) throws JsonProcessingException {
+        //找到月度账单中已开票的单据
+        List<Map<String,Object>> invoiceList= jdbcTemplate.queryForList(" SELECT summary_id,payable_amount ,bw_djbh,kprq,dept_name,invoice_name,dept_code,leader FROM rpt_financial_month_summary a left join  sys_dept b  on  a.dept_id=b.dept_id where  a.summary_id=?  ",invoiceRequest.getSummaryId());
+        if(invoiceList.size()==0){
+            return null;
+        }
+        Map map=invoiceList.get(0);
+        String url = invoiceConfig.getShopUrl();
+        HttpHeaders headers = new HttpHeaders();
+        headers.setContentType(MediaType.APPLICATION_JSON);
+        BigDecimal free= new BigDecimal(map.get("payable_amount").toString());
+        OrderRequest request = new OrderRequest();
+        request.setOrderNumber(map.get("bw_djbh").toString());
+        request.setSkuId("787");
+        request.setGzTime(map.get("kprq").toString());
+        request.setOutCode("3204");
+        request.setUserId(map.get("leader").toString());
+        request.setUserCompanyName(map.get("invoice_name").toString());
+        request.setSapCode(map.get("dept_code").toString());
+        request.setShopName(map.get("dept_name").toString());
+        request.setPayType(1);
+        request.setProdName("快递服务");
+        request.setProdCount("1");
+        request.setBuyMoney(free);   //销售金额  含税
+        request.setBuyPrice(free);  //采购单价  含税
+        request.setSaleMoney(free); // 销售金额  含税
+        request.setPurchaseRate(BigDecimal.valueOf(0.06));    //进项税率
+        request.setPrice(free);       //销售单价    含税
+        BigDecimal[] result =TaxAmountCalculator.calculateFromTaxIncluded(free, BigDecimal.valueOf(0.06));
+        request.setBuyMoneyNoTax(result[0]);   // 采购金额(不含税)
+        request.setJxse(result[1]);           //进项税额
+        BigDecimal[] result1 =TaxAmountCalculator.calculateFromTaxIncluded(free, BigDecimal.valueOf(0.06));
+        request.setOutputRate(BigDecimal.valueOf(0.06));      // 销项税率
+        request.setXxse(result1[1]);            //销项税额
+        HttpEntity<OrderRequest> entity = new HttpEntity<>(request, headers);
+        // ✅ postForEntity
+        ResponseEntity<String> response = restTemplate.postForEntity(url, entity, String.class);
+
+
+        ObjectMapper objectMapper = new ObjectMapper();
+        Map<String, Object> shopMap = objectMapper.readValue(
+                response.getBody(),
+                new TypeReference<Map<String, Object>>() {}
+        );
+        if("0".equals(shopMap.get("code").toString())){
+            //这里成功后也要将单据编号进行回传月度报表
+            RptFinancialMonthSummary rptFinancialMonthSummary= new RptFinancialMonthSummary();
+            rptFinancialMonthSummary.setStatus("4");
+            rptFinancialMonthSummary.setSummaryId(invoiceRequest.getSummaryId());
+            rptFinancialMonthSummaryService.updateRptFinancialMonthSummary(rptFinancialMonthSummary);
+        }
+        return shopMap;
+    }
+
+
+
 }

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

@@ -23,6 +23,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="bwDzfpPdfUrl"    column="bw_dzfp_pdf_url"    />
         <result property="bwDzfpOfdUrl"    column="bw_dzfp_ofd_url"    />
         <result property="bwDzfpXmlUrl"    column="bw_dzfp_xml_url"    />
+        <result property="kprq"    column="kprq"    />
     </resultMap>
 
     <sql id="selectRptFinancialMonthSummaryVo">
@@ -137,6 +138,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <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>
+            <if test="kprq != null">kprq = #{kprq},</if>
         </trim>
         where summary_id = #{summaryId}
     </update>