|
@@ -1,6 +1,8 @@
|
|
|
package com.kym.service.miniapp.impl;
|
|
package com.kym.service.miniapp.impl;
|
|
|
|
|
|
|
|
import cn.dev33.satoken.stp.StpUtil;
|
|
import cn.dev33.satoken.stp.StpUtil;
|
|
|
|
|
+import cn.hutool.core.bean.BeanUtil;
|
|
|
|
|
+import cn.hutool.core.util.NumberUtil;
|
|
|
import cn.hutool.poi.excel.ExcelUtil;
|
|
import cn.hutool.poi.excel.ExcelUtil;
|
|
|
import cn.hutool.poi.excel.ExcelWriter;
|
|
import cn.hutool.poi.excel.ExcelWriter;
|
|
|
import com.baomidou.dynamic.datasource.annotation.DS;
|
|
import com.baomidou.dynamic.datasource.annotation.DS;
|
|
@@ -8,12 +10,14 @@ import com.github.pagehelper.PageHelper;
|
|
|
import com.github.yulichang.base.MPJBaseServiceImpl;
|
|
import com.github.yulichang.base.MPJBaseServiceImpl;
|
|
|
import com.github.yulichang.toolkit.JoinWrappers;
|
|
import com.github.yulichang.toolkit.JoinWrappers;
|
|
|
import com.github.yulichang.wrapper.MPJLambdaWrapper;
|
|
import com.github.yulichang.wrapper.MPJLambdaWrapper;
|
|
|
|
|
+import com.kym.common.IQuery;
|
|
|
import com.kym.common.exception.BusinessException;
|
|
import com.kym.common.exception.BusinessException;
|
|
|
import com.kym.common.utils.CommUtil;
|
|
import com.kym.common.utils.CommUtil;
|
|
|
import com.kym.common.utils.OrderUtils;
|
|
import com.kym.common.utils.OrderUtils;
|
|
|
import com.kym.entity.admin.queryParams.InvoiceQueryParam;
|
|
import com.kym.entity.admin.queryParams.InvoiceQueryParam;
|
|
|
import com.kym.entity.common.PageBean;
|
|
import com.kym.entity.common.PageBean;
|
|
|
import com.kym.entity.miniapp.ChargeOrder;
|
|
import com.kym.entity.miniapp.ChargeOrder;
|
|
|
|
|
+import com.kym.entity.miniapp.DataDict;
|
|
|
import com.kym.entity.miniapp.Invoice;
|
|
import com.kym.entity.miniapp.Invoice;
|
|
|
import com.kym.entity.miniapp.User;
|
|
import com.kym.entity.miniapp.User;
|
|
|
import com.kym.entity.miniapp.queryParams.ApplyInvoiceParams;
|
|
import com.kym.entity.miniapp.queryParams.ApplyInvoiceParams;
|
|
@@ -22,6 +26,7 @@ import com.kym.entity.wechat.InvoiceOrderDetail;
|
|
|
import com.kym.entity.wechat.TitleUrl;
|
|
import com.kym.entity.wechat.TitleUrl;
|
|
|
import com.kym.mapper.miniapp.InvoiceMapper;
|
|
import com.kym.mapper.miniapp.InvoiceMapper;
|
|
|
import com.kym.service.miniapp.ChargeOrderService;
|
|
import com.kym.service.miniapp.ChargeOrderService;
|
|
|
|
|
+import com.kym.service.miniapp.DataDictService;
|
|
|
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 lombok.extern.slf4j.Slf4j;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
@@ -29,8 +34,11 @@ import org.springframework.context.annotation.Lazy;
|
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
|
|
|
|
+import java.util.ArrayList;
|
|
|
import java.util.Arrays;
|
|
import java.util.Arrays;
|
|
|
import java.util.List;
|
|
import java.util.List;
|
|
|
|
|
+import java.util.Map;
|
|
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
* <p>
|
|
* <p>
|
|
@@ -47,8 +55,10 @@ public class InvoiceServiceImpl extends MPJBaseServiceImpl<InvoiceMapper, Invoic
|
|
|
|
|
|
|
|
private final ChargeOrderService chargeOrderService;
|
|
private final ChargeOrderService chargeOrderService;
|
|
|
private final WxPayService wxPayService;
|
|
private final WxPayService wxPayService;
|
|
|
|
|
+ private final DataDictService dataDictService;
|
|
|
|
|
|
|
|
- public InvoiceServiceImpl(ChargeOrderService chargeOrderService, @Lazy WxPayService wxPayService) {
|
|
|
|
|
|
|
+ public InvoiceServiceImpl(ChargeOrderService chargeOrderService, @Lazy WxPayService wxPayService,@Lazy DataDictService dataDictService) {
|
|
|
|
|
+ this.dataDictService =dataDictService;
|
|
|
this.chargeOrderService = chargeOrderService;
|
|
this.chargeOrderService = chargeOrderService;
|
|
|
this.wxPayService = wxPayService;
|
|
this.wxPayService = wxPayService;
|
|
|
}
|
|
}
|
|
@@ -146,7 +156,7 @@ public class InvoiceServiceImpl extends MPJBaseServiceImpl<InvoiceMapper, Invoic
|
|
|
return new PageBean<>(list);
|
|
return new PageBean<>(list);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- void invoiceExport(InvoiceQueryParam params){
|
|
|
|
|
|
|
+ void invoiceExport(InvoiceQueryParam params) {
|
|
|
MPJLambdaWrapper<Invoice> wrapper = JoinWrappers.lambda(Invoice.class)
|
|
MPJLambdaWrapper<Invoice> wrapper = JoinWrappers.lambda(Invoice.class)
|
|
|
.selectAsClass(Invoice.class, InvoiceVo.class)
|
|
.selectAsClass(Invoice.class, InvoiceVo.class)
|
|
|
.selectAll(Invoice.class)
|
|
.selectAll(Invoice.class)
|
|
@@ -196,4 +206,62 @@ public class InvoiceServiceImpl extends MPJBaseServiceImpl<InvoiceMapper, Invoic
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public ExcelWriter exportInvoiceList(InvoiceQueryParam params) {
|
|
|
|
|
+ MPJLambdaWrapper<Invoice> wrapper = JoinWrappers.lambda(Invoice.class)
|
|
|
|
|
+ .selectAsClass(Invoice.class, InvoiceVo.class)
|
|
|
|
|
+ .selectAll(Invoice.class)
|
|
|
|
|
+ .select(User::getMobilePhone)
|
|
|
|
|
+ .leftJoin(User.class, User::getId, Invoice::getUserId)
|
|
|
|
|
+ .like(CommUtil.isNotEmptyAndNull(params.getPhone()), User::getMobilePhone, params.getPhone())
|
|
|
|
|
+ .like(CommUtil.isNotEmptyAndNull(params.getInvoiceTitle()), Invoice::getInvoiceTitle, params.getInvoiceTitle())
|
|
|
|
|
+ .like(CommUtil.isNotEmptyAndNull(params.getBiller()), Invoice::getBiller, params.getBiller())
|
|
|
|
|
+ .like(CommUtil.isNotEmptyAndNull(params.getTaxId()), Invoice::getTaxId, params.getTaxId())
|
|
|
|
|
+ .like(CommUtil.isNotEmptyAndNull(params.getInvoiceType()), Invoice::getInvoiceType, params.getInvoiceType())
|
|
|
|
|
+ .like(CommUtil.isNotEmptyAndNull(params.getEmail()), Invoice::getEmail, params.getEmail())
|
|
|
|
|
+ .eq(params.getStatus() != null, Invoice::getStatus, params.getStatus())
|
|
|
|
|
+ .orderByDesc(Invoice::getId);
|
|
|
|
|
+ var list = selectJoinList(InvoiceVo.class, wrapper);
|
|
|
|
|
+ ExcelWriter writer = ExcelUtil.getWriter();
|
|
|
|
|
+//设置要导出到的sheet
|
|
|
|
|
+//自定义excel标题和列名
|
|
|
|
|
+ writer.addHeaderAlias("status", "发票状态");
|
|
|
|
|
+ writer.addHeaderAlias("mobilePhone", "用户手机号");
|
|
|
|
|
+ writer.addHeaderAlias("invoiceTitle", "发票抬头");
|
|
|
|
|
+ writer.addHeaderAlias("taxId", "公司税号");
|
|
|
|
|
+ writer.addHeaderAlias("email", "接收发票邮箱");
|
|
|
|
|
+ writer.addHeaderAlias("invoiceType", "发票类型");
|
|
|
|
|
+ writer.addHeaderAlias("address", "公司地址");
|
|
|
|
|
+ writer.addHeaderAlias("telephone", "购买方电话");
|
|
|
|
|
+ writer.addHeaderAlias("bankName", "开户银行");
|
|
|
|
|
+ writer.addHeaderAlias("bankAccount", "银行账户");
|
|
|
|
|
+ writer.addHeaderAlias("biller", "开票人");
|
|
|
|
|
+ writer.addHeaderAlias("invoiceAmount", "发票金额(元)");
|
|
|
|
|
+ writer.addHeaderAlias("totalPower", "累积充电量(度)");
|
|
|
|
|
+ writer.addHeaderAlias("totalMoney", "累积总金额(元)");
|
|
|
|
|
+ writer.addHeaderAlias("elecMoney", "累积电费(元)");
|
|
|
|
|
+ writer.addHeaderAlias("serviceMoney", "累积服务费(元)");
|
|
|
|
|
+ writer.addHeaderAlias("serviceMoneyDiscount", "服务费优惠金额(元)");
|
|
|
|
|
+
|
|
|
|
|
+ List<DataDict> dataDicts = dataDictService.lambdaQuery().list();
|
|
|
|
|
+ Map<String, String> dictMap = dataDicts.stream().collect(Collectors.toMap(k -> k.getCode() + ":" + k.getValue(), DataDict::getName));
|
|
|
|
|
+//一次性写出内容,使用默认样式,强制输出标题
|
|
|
|
|
+ List<Map<String, Object>> rows = new ArrayList<>();
|
|
|
|
|
+ list.forEach(k -> {
|
|
|
|
|
+ Map<String, Object> m = BeanUtil.beanToMap(k,"mobilePhone","invoiceTitle","taxId","email",
|
|
|
|
|
+ "address","telephone","bankName","bankAccount","biller","totalPower");
|
|
|
|
|
+ m.put("invoiceType", dictMap.getOrDefault("Invoice.type:"+k.getInvoiceType(),""));
|
|
|
|
|
+ m.put("invoiceAmount", NumberUtil.decimalFormat("#.##",k.getInvoiceAmount()/100f));
|
|
|
|
|
+ m.put("totalMoney",NumberUtil.decimalFormat("#.##",k.getTotalMoney()/100f));
|
|
|
|
|
+ m.put("elecMoney", NumberUtil.decimalFormat("#.##",k.getElecMoney()/100f));
|
|
|
|
|
+ m.put("serviceMoney", NumberUtil.decimalFormat("#.##",k.getServiceMoney()/100f));
|
|
|
|
|
+ m.put("serviceMoneyDiscount",NumberUtil.decimalFormat("#.##",k.getServiceMoneyDiscount()/100f));
|
|
|
|
|
+ m.put("status", dictMap.getOrDefault("Invoice.status:"+k.getStatus(),""));
|
|
|
|
|
+ rows.add(m);
|
|
|
|
|
+ });
|
|
|
|
|
+ writer.write(rows, true);
|
|
|
|
|
+
|
|
|
|
|
+ return writer;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
}
|
|
}
|