skyline 3 tygodni temu
rodzic
commit
38f7d56bc7

+ 13 - 0
admin-web/src/views/admin/ordering/index.vue

@@ -153,6 +153,10 @@
           <SvgIcon name="ele-Search"/>
           查询
         </el-button>
+        <el-button class="ml10" plain size="default" type="warning" @click="handleDownloadExcel">
+          <SvgIcon name="ele-Download"/>
+          导出
+        </el-button>
       </el-form>
 
       <el-card class="w100">
@@ -447,6 +451,15 @@ const copyText = (text: string) => {
   })
 }
 
+const handleDownloadExcel = () => {
+  let url = import.meta.env.VITE_API_URL;
+  if (!url) {
+    url = `${location.origin}/admin/`;
+  }
+  let params = Object.keys(state.formQuery).map(key => `${key}=${state.formQuery[key]}`).join("&")
+  window.open(`${url}/custom/exportChargeOrders?t=${new Date().getTime()}&${params}`, "_blank")
+}
+
 
 //endregion
 

+ 31 - 8
service/src/main/java/com/kym/service/miniapp/impl/ChargeOrderServiceImpl.java

@@ -155,14 +155,18 @@ public class ChargeOrderServiceImpl extends MyBaseServiceImpl<ChargeOrderMapper,
         var result = baseMapper.listChargeOrders(params);
         result = result.stream().map(item ->
                         item.setShortId(KymCache.INSTANCE.getShortIdByEquipmentIdOrConnectorId(item.getConnectorId()))
-                                .setStationName(KymCache.INSTANCE.getStationNameById(item.getStationId())))
+                                .setStationName(KymCache.INSTANCE.getStationNameById(item.getStationId()))
+                                .setPlatformName(PlatformCache.INSTANCE.getPlatformNameByConnectorId(item.getConnectorId())))
                 .toList();
 
-        // stationId,startChargeSeq,connectorId,startTime,endTime,totalPower,totalMoney,elecMoney,serviceMoney,orderStatus,chargeStatus,stopReason,invoiceStatus
         var rows = result.stream().map(item -> {
             var map = new HashMap<String, Object>();
+            map.put("mobilePhone", maskPhone(item.getMobilePhone()));
             map.put("stationId", item.getStationId());
+            map.put("stationName", item.getStationName());
+            map.put("platformName", item.getPlatformName());
             map.put("startChargeSeq", item.getStartChargeSeq());
+            map.put("shortId", item.getShortId());
             map.put("connectorId", item.getConnectorId());
             map.put("startTime", item.getStartTime() == null ? "-" : item.getStartTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
             map.put("endTime", item.getEndTime() == null ? "-" : item.getEndTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
@@ -170,26 +174,38 @@ public class ChargeOrderServiceImpl extends MyBaseServiceImpl<ChargeOrderMapper,
             map.put("totalMoney", BigDecimal.valueOf(item.getTotalMoney()).divide(BigDecimal.valueOf(100)));
             map.put("elecMoney", BigDecimal.valueOf(item.getElecMoney()).divide(BigDecimal.valueOf(100)));
             map.put("serviceMoney", BigDecimal.valueOf(item.getServiceMoney()).divide(BigDecimal.valueOf(100)));
+            map.put("serviceMoneyDiscount", BigDecimal.valueOf(item.getServiceMoneyDiscount()).divide(BigDecimal.valueOf(100)));
+            map.put("payServiceAmount", BigDecimal.valueOf(item.getPayServiceAmount()).divide(BigDecimal.valueOf(100)));
+            map.put("payAmount", BigDecimal.valueOf(item.getPayAmount()).divide(BigDecimal.valueOf(100)));
             map.put("orderStatus", item.getOrderStatus());
             map.put("chargeStatus", item.getChargeStatus());
+            map.put("stopReason", item.getStopReason());
+            map.put("invoiceStatus", item.getInvoiceStatus());
             return map;
         }).toList();
 
-        // 通过工具类创建writer,默认创建xls格式
         ExcelWriter writer = ExcelUtil.getWriter();
 
-        //自定义标题别名
+        writer.addHeaderAlias("mobilePhone", "用户手机号");
         writer.addHeaderAlias("stationId", "站点ID");
+        writer.addHeaderAlias("stationName", "站点名称");
+        writer.addHeaderAlias("platformName", "互联平台");
         writer.addHeaderAlias("startChargeSeq", "充电订单号");
-        writer.addHeaderAlias("connectorId", "充电设备接口编号");
+        writer.addHeaderAlias("shortId", "设备编号");
+        writer.addHeaderAlias("connectorId", "充电设备接口编码");
         writer.addHeaderAlias("startTime", "充电开始时间");
         writer.addHeaderAlias("endTime", "充电结束时间");
         writer.addHeaderAlias("totalPower", "充电量(度)");
-        writer.addHeaderAlias("totalMoney", "累积总金额(元)");
-        writer.addHeaderAlias("elecMoney", "累积电费(元)");
-        writer.addHeaderAlias("serviceMoney", "累积服务费(元)");
+        writer.addHeaderAlias("totalMoney", "订单总金额(元)");
+        writer.addHeaderAlias("elecMoney", "电费(元)");
+        writer.addHeaderAlias("serviceMoney", "服务费(元)");
+        writer.addHeaderAlias("serviceMoneyDiscount", "服务费优惠(元)");
+        writer.addHeaderAlias("payServiceAmount", "实付服务费(元)");
+        writer.addHeaderAlias("payAmount", "实付金额(元)");
         writer.addHeaderAlias("orderStatus", "订单状态");
         writer.addHeaderAlias("chargeStatus", "充电状态");
+        writer.addHeaderAlias("stopReason", "充电停止原因");
+        writer.addHeaderAlias("invoiceStatus", "发票状态");
         exportService.exportExcel("订单列表", writer, rows, response);
     }
 
@@ -338,4 +354,11 @@ public class ChargeOrderServiceImpl extends MyBaseServiceImpl<ChargeOrderMapper,
         return lambdaQuery().in(ChargeOrder::getStartChargeSeq, Arrays.stream(startChargeSeqs).toList()).list();
     }
 
+    private String maskPhone(String phone) {
+        if (phone == null || phone.length() < 7) {
+            return phone == null ? "" : phone;
+        }
+        return phone.substring(0, 3) + "****" + phone.substring(7);
+    }
+
 }