skyline пре 2 година
родитељ
комит
0f47b6e712

+ 8 - 3
entity/src/main/java/com/kym/entity/miniapp/Invoice.java

@@ -57,20 +57,25 @@ public class Invoice extends BaseEntity {
     private Double totalPower;
     private Double totalPower;
 
 
     /**
     /**
-     * 累积总金额(
+     * 累积总金额(
      */
      */
     private Integer totalMoney;
     private Integer totalMoney;
 
 
     /**
     /**
-     * 累积电费(
+     * 累积电费(
      */
      */
     private Integer elecMoney;
     private Integer elecMoney;
 
 
     /**
     /**
-     * 累积服务费(
+     * 累积服务费(
      */
      */
     private Integer serviceMoney;
     private Integer serviceMoney;
 
 
+    /**
+     * 服务费优惠金额(分)
+     */
+    private Integer serviceMoneyDiscount;
+
     /**
     /**
      * 接收发票邮箱
      * 接收发票邮箱
      */
      */

+ 1 - 0
entity/src/main/java/com/kym/entity/wechat/InvoiceOrderDetail.java

@@ -16,4 +16,5 @@ public class InvoiceOrderDetail {
     private int totalMoney;
     private int totalMoney;
     private int elecMoney;
     private int elecMoney;
     private int serviceMoney;
     private int serviceMoney;
+    private int serviceMoneyDiscount;
 }
 }

+ 8 - 5
service/src/main/java/com/kym/service/miniapp/impl/InvoiceServiceImpl.java

@@ -14,7 +14,6 @@ import com.kym.mapper.miniapp.InvoiceMapper;
 import com.kym.service.miniapp.ChargeOrderService;
 import com.kym.service.miniapp.ChargeOrderService;
 import com.kym.service.miniapp.InvoiceService;
 import com.kym.service.miniapp.InvoiceService;
 import com.kym.service.wechat.WxPayService;
 import com.kym.service.wechat.WxPayService;
-import jakarta.servlet.http.HttpServletRequest;
 import lombok.extern.slf4j.Slf4j;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.context.annotation.Lazy;
 import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
@@ -70,9 +69,11 @@ public class InvoiceServiceImpl extends ServiceImpl<InvoiceMapper, Invoice> impl
         }
         }
 
 
         var orderDetails = orders.stream().map(item -> new InvoiceOrderDetail()
         var orderDetails = orders.stream().map(item -> new InvoiceOrderDetail()
-                .setStartChargeSeq(item.getStartChargeSeq())
-                .setTotalPower(item.getTotalPower()).setTotalMoney(item.getTotalMoney())
-                .setElecMoney(item.getElecMoney()).setServiceMoney(item.getServiceMoney())).toList();
+                        .setStartChargeSeq(item.getStartChargeSeq())
+                        .setTotalPower(item.getTotalPower()).setTotalMoney(item.getTotalMoney())
+                        .setElecMoney(item.getElecMoney()).setServiceMoney(item.getServiceMoney())
+                        .setServiceMoneyDiscount(item.getServiceMoneyDiscount()))
+                .toList();
 
 
         // 组装invoice
         // 组装invoice
         var invoice = new Invoice()
         var invoice = new Invoice()
@@ -83,7 +84,9 @@ public class InvoiceServiceImpl extends ServiceImpl<InvoiceMapper, Invoice> impl
                 .setInvoiceAmount(orders.stream().mapToInt(ChargeOrder::getTotalMoney).sum())   // 总金额
                 .setInvoiceAmount(orders.stream().mapToInt(ChargeOrder::getTotalMoney).sum())   // 总金额
                 .setElecMoney(orders.stream().mapToInt(ChargeOrder::getElecMoney).sum())    // 电费
                 .setElecMoney(orders.stream().mapToInt(ChargeOrder::getElecMoney).sum())    // 电费
                 .setElecMoney(orders.stream().mapToInt(ChargeOrder::getServiceMoney).sum())    // 服务费
                 .setElecMoney(orders.stream().mapToInt(ChargeOrder::getServiceMoney).sum())    // 服务费
-                .setTotalPower(orders.stream().mapToDouble(ChargeOrder::getTotalPower).sum());   // 总电量
+                .setTotalPower(orders.stream().mapToDouble(ChargeOrder::getTotalPower).sum())   // 总电量
+                .setServiceMoneyDiscount(orders.stream().mapToInt(ChargeOrder::getServiceMoneyDiscount).sum()); //总优惠服务费
+
 //                .setInvoiceType(String.valueOf(params.getInvoiceType()))    // 类型
 //                .setInvoiceType(String.valueOf(params.getInvoiceType()))    // 类型
 //                .setInvoiceTitle(params.getInvoiceTitle())  //抬头
 //                .setInvoiceTitle(params.getInvoiceTitle())  //抬头
 //                .setTaxId(params.getTaxId())    // 税号
 //                .setTaxId(params.getTaxId())    // 税号

+ 5 - 2
service/src/main/java/com/kym/service/wechat/impl/WxPayServiceImpl.java

@@ -754,7 +754,7 @@ public class WxPayServiceImpl implements WxPayService {
     public void fapiaoApplication(String invoiceId) {
     public void fapiaoApplication(String invoiceId) {
         var invoice = invoiceService.lambdaQuery().eq(Invoice::getId, invoiceId).one();
         var invoice = invoiceService.lambdaQuery().eq(Invoice::getId, invoiceId).one();
 
 
-        // TODO: 2023-10-14 订单金额+ ,服务费优惠金额- 服务费优惠金额单独一个item,金额为负数
+        // 订单金额+ ,服务费优惠金额- 服务费优惠金额单独一个item,金额为负数
 
 
         // 电费 税务商品编码:1100101020000000000
         // 电费 税务商品编码:1100101020000000000
         var elecMoney = invoice.getOrderDetails().stream().mapToInt(InvoiceOrderDetail::getElecMoney).sum();
         var elecMoney = invoice.getOrderDetails().stream().mapToInt(InvoiceOrderDetail::getElecMoney).sum();
@@ -762,6 +762,9 @@ public class WxPayServiceImpl implements WxPayService {
         // 服务费 税务商品编码:3040100000000000000
         // 服务费 税务商品编码:3040100000000000000
         var serviceMoney = invoice.getOrderDetails().stream().mapToInt(InvoiceOrderDetail::getElecMoney).sum();
         var serviceMoney = invoice.getOrderDetails().stream().mapToInt(InvoiceOrderDetail::getElecMoney).sum();
         var serviceMoneyItem = new FaPiao.FaPiaoInfomation.IssueItem().setTotalAmount(serviceMoney).setTaxCode("3040100000000000000");
         var serviceMoneyItem = new FaPiao.FaPiaoInfomation.IssueItem().setTotalAmount(serviceMoney).setTaxCode("3040100000000000000");
+        // 服务费优惠 税务商品编码:3040100000000000000
+        var serviceMoneyDiscount = -invoice.getOrderDetails().stream().mapToInt(InvoiceOrderDetail::getServiceMoneyDiscount).sum();
+        var serviceMoneyDiscountItem = new FaPiao.FaPiaoInfomation.IssueItem().setTotalAmount(serviceMoneyDiscount).setTaxCode("3040100000000000000");
 
 
         var headers = new HttpHeaders();
         var headers = new HttpHeaders();
         headers.addHeader("Accept", "application/json");
         headers.addHeader("Accept", "application/json");
@@ -783,7 +786,7 @@ public class WxPayServiceImpl implements WxPayService {
         // fapiao_id为invoice.id
         // fapiao_id为invoice.id
         fapiaoInformation.setFapiao_id(String.valueOf(invoice.getId()))
         fapiaoInformation.setFapiao_id(String.valueOf(invoice.getId()))
                 .setTotal_amount(invoice.getInvoiceAmount())
                 .setTotal_amount(invoice.getInvoiceAmount())
-                .setItems(List.of(elecMoneyItem, serviceMoneyItem));
+                .setItems(List.of(elecMoneyItem, serviceMoneyItem, serviceMoneyDiscountItem));
 
 
         // 请求参数
         // 请求参数
         var fapiao = new FaPiao()
         var fapiao = new FaPiao()