Procházet zdrojové kódy

【admin】订单列表新增优惠信息,发票列表新增手机号显示&搜索

skyline před 2 roky
rodič
revize
5f1640a92c

+ 7 - 8
admin-web/src/views/admin/invoice/index.vue

@@ -33,6 +33,13 @@
           :model="state.formQuery"
           ref="queryRef"
           size="default" label-width="0px" class="mt5 mb5">
+        <el-input
+            v-model="state.formQuery.phone"
+            placeholder="用户手机号"
+            clearable
+            @blur="loadData(true)"
+            class="wd150 mr10">
+        </el-input>
         <ext-d-select
             v-model="state.formQuery.status"
             placeholder="发票状态"
@@ -56,14 +63,6 @@
             @blur="loadData(true)"
             class="wd150 mr10">
         </el-input>
-        <el-input
-            v-model="state.formQuery.phone"
-            placeholder="电话"
-            clearable
-            @blur="loadData(true)"
-            class="wd150 mr10">
-        </el-input>
-
 
         <el-input
             v-model="state.formQuery.invoiceTitle"

+ 14 - 4
admin-web/src/views/admin/ordering/index.vue

@@ -127,7 +127,7 @@
           <el-tag type="success">{{state.extraData.totalOrders}} 笔</el-tag>
           <span class="ml5">电量:</span>
           <el-tag type="success">{{state.extraData.totalPower}} 度</el-tag>
-          <span class="ml5">实付金额:</span>
+          <span class="ml5">订单金额:</span>
           <el-tag type="success">{{u.fmt.fmtMoney(state.extraData.totalMoney)}} 元</el-tag>
           <span class="ml5"> 实付电费:</span>
           <el-tag type="success">{{u.fmt.fmtMoney(state.extraData.elecMoney)}} 元</el-tag>
@@ -169,6 +169,15 @@
             <template v-else-if="'totalMoney'===field.prop">
               {{u.fmt.fmtMoney(row[field.prop])}}
             </template>
+            <template v-else-if="'payAmount'===field.prop">
+              {{u.fmt.fmtMoney(row[field.prop])}}
+            </template>
+            <template v-else-if="'discountAmount'===field.prop">
+              {{u.fmt.fmtMoney(row[field.prop])}}
+            </template>
+            <template v-else-if="'serviceMoneyDiscount'===field.prop">
+              {{u.fmt.fmtMoney(row[field.prop])}}
+            </template>
             <template v-else-if="'elecMoney'===field.prop">
               {{u.fmt.fmtMoney(row[field.prop])}}
             </template>
@@ -240,16 +249,17 @@ const state = reactive({
     loading: false,
     columns: [
       {label: '站点ID',  prop: 'stationId',width:100, resizable: true, fixed: 'left'},
-      {label: '手机号',  prop: 'mobilePhone',width:130, resizable: true, fixed: 'left'},
+      {label: '用户手机号',  prop: 'mobilePhone',width:130, resizable: true, fixed: 'left'},
       // {label: '站点ID',  prop: 'stationId',width:100, resizable: true, fixed: 'left'},
       {label: '站点',  prop: 'stationName',width:150, resizable: true, fixed: 'left'},
       {label: '充电订单号', prop: 'startChargeSeq', width:170, resizable: true, fixed: 'left'},
-      {label: '用户手机号', prop: 'mobilePhone', width:140, resizable: true, fixed: 'left'},
       {label: '充电设备接口编码', prop: 'connectorId', width:160, resizable: true},
       {label: '充电开始时间', prop: 'startTime', sortable: 'custom', width:160, resizable: true},
       {label: '充电结束时间', prop: 'endTime', sortable: 'custom',width:160,  resizable: true},
       {label: '充电量(度)', prop: 'totalPower', width:120, resizable: true},
-      {label: '累积总金额(元)', prop: 'totalMoney', width:150, resizable: true},
+      {label: '订单总金额(元)', prop: 'totalMoney', width:150, resizable: true},
+      {label: '服务费优惠(元)', prop: 'serviceMoneyDiscount', width:150, resizable: true},
+      {label: '实付金额(元)', prop: 'payAmount', width:150, resizable: true},
       {label: '累积电费(元)', prop: 'elecMoney', width:140, resizable: true},
       {label: '累积服务费(元)', prop: 'serviceMoney', width:150, resizable: true},
       // {label: '时段数:0~32', prop: 'sumPeriod', width:150, resizable: true},

+ 1 - 1
entity/pom.xml

@@ -33,7 +33,7 @@
         <dependency>
             <groupId>com.github.yulichang</groupId>
             <artifactId>mybatis-plus-join-boot-starter</artifactId>
-            <version>1.4.7.2</version>
+            <version>1.4.8.1</version>
         </dependency>
         <dependency>
             <groupId>org.springframework.boot</groupId>

+ 132 - 0
entity/src/main/java/com/kym/entity/miniapp/vo/InvoiceVo.java

@@ -0,0 +1,132 @@
+package com.kym.entity.miniapp.vo;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.kym.entity.BaseEntity;
+import com.kym.entity.typehandle.InvoiceOrderDetailListTypeHandle;
+import com.kym.entity.wechat.InvoiceOrderDetail;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+import lombok.experimental.Accessors;
+
+import java.util.List;
+
+/**
+ * 发票
+ *
+ * @author skyline
+ * @since 2023-09-15
+ */
+@Setter
+@Getter
+@NoArgsConstructor
+@Accessors(chain = true)
+public class InvoiceVo extends BaseEntity {
+    public static final String TYPE_个人 = "INDIVIDUAL";
+    public static final String TYPE_企业 = "ORGANIZATION";
+
+    public static final int STATUS_待开票 = 0;
+    public static final int STATUS_已开票 = 1;
+    public static final int STATUS_已作废 = 2;
+    public static final int STATUS_开票中 = 3;
+
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 微信发票申请id
+     */
+    private String applyId;
+
+    private Long userId;
+
+    /**
+     * 用户手机号
+     */
+    private String mobilePhone;
+
+    /**
+     * 发票抬头填写人的openid
+     */
+    private String openid;
+
+    /**
+     * 发票关联订单详情
+     */
+    private List<InvoiceOrderDetail> orderDetails;
+
+    /**
+     * 累积充电量(度)
+     */
+    private Double totalPower;
+    /**
+     * 累积总金额(分)
+     */
+    private Integer totalMoney;
+    /**
+     * 累积电费(分)
+     */
+    private Integer elecMoney;
+    /**
+     * 累积服务费(分)
+     */
+    private Integer serviceMoney;
+    /**
+     * 服务费优惠金额(分)
+     */
+    private Integer serviceMoneyDiscount;
+    /**
+     * 接收发票邮箱
+     */
+    private String email;
+    /**
+     * 电话
+     */
+    private String phone;
+    /**
+     * 发票类型:INDIVIDUAL-个人 ORGANIZATION-企业
+     */
+    private String invoiceType;
+    /**
+     * 发票抬头
+     */
+    private String invoiceTitle;
+    /**
+     * 公司税号
+     */
+    private String taxId;
+    /**
+     * 公司地址
+     */
+    private String address;
+    /**
+     * 开户银行
+     */
+    private String bankName;
+    /**
+     * 银行账户
+     */
+    private String bankAccount;
+    /**
+     * 发票金额(单位:分)
+     */
+    private Integer invoiceAmount;
+    /**
+     * 税额详情信息
+     */
+    private String taxInfo;
+    /**
+     * 开票人
+     */
+    private String biller;
+    /**
+     * 发票状态
+     */
+    private Integer status;
+    /**
+     * 备注
+     */
+    private String remark;
+
+}

+ 1 - 6
service/src/main/java/com/kym/service/admin/impl/EquipmentInfoServiceImpl.java

@@ -3,13 +3,9 @@ package com.kym.service.admin.impl;
 import cn.dev33.satoken.stp.StpUtil;
 import com.baomidou.dynamic.datasource.annotation.DS;
 import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder;
-import com.github.pagehelper.PageHelper;
 import com.github.yulichang.base.MPJBaseServiceImpl;
 import com.kym.common.utils.CommUtil;
-import com.kym.entity.admin.ConnectorInfo;
 import com.kym.entity.admin.EquipmentInfo;
-import com.kym.entity.admin.queryParams.EquipmentQueryParam;
-import com.kym.entity.common.PageBean;
 import com.kym.mapper.admin.EquipmentInfoMapper;
 import com.kym.service.admin.ConnectorInfoService;
 import com.kym.service.admin.EquipmentInfoService;
@@ -17,7 +13,6 @@ import com.kym.service.cache.KymCache;
 import jakarta.annotation.PostConstruct;
 import org.springframework.stereotype.Service;
 
-import java.util.Comparator;
 import java.util.Map;
 import java.util.stream.Collectors;
 
@@ -54,7 +49,7 @@ public class EquipmentInfoServiceImpl extends MPJBaseServiceImpl<EquipmentInfoMa
     public Map<Integer, Long> statEquipmentStatus(String stationId) {
         if (CommUtil.null2Long(stationId) <= 0) {
             // 判断数据权限
-            stationId = KymCache.INSTANCE.getAdminUserStationIds(StpUtil.getLoginIdAsLong()).get(0);
+            stationId = KymCache.INSTANCE.getAdminUserStationIds(StpUtil.getLoginIdAsLong()) == null ? null : KymCache.INSTANCE.getAdminUserStationIds(StpUtil.getLoginIdAsLong()).get(0);
         }
         // 获取指定站点下的充电桩
         var equipmentInfos = lambdaQuery().eq(isNotNull(stationId), EquipmentInfo::getStationId, stationId).list();

+ 2 - 1
service/src/main/java/com/kym/service/miniapp/InvoiceService.java

@@ -5,6 +5,7 @@ import com.kym.entity.admin.queryParams.InvoiceQueryParam;
 import com.kym.entity.common.PageBean;
 import com.kym.entity.miniapp.Invoice;
 import com.kym.entity.miniapp.queryParams.ApplyInvoiceParams;
+import com.kym.entity.miniapp.vo.InvoiceVo;
 import com.kym.entity.wechat.TitleUrl;
 
 import java.util.List;
@@ -21,7 +22,7 @@ public interface InvoiceService extends MPJBaseService<Invoice> {
 
     TitleUrl applyInvoice(ApplyInvoiceParams params);
 
-    PageBean<Invoice> listInvoice(InvoiceQueryParam params);
+    PageBean<InvoiceVo> listInvoice(InvoiceQueryParam params);
 
     List<Invoice> listInvoiceForApp(Integer status);
 

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

@@ -220,7 +220,7 @@ public class ChargeOrderServiceImpl extends MPJBaseServiceImpl<ChargeOrderMapper
     public Map<String, Object> stationTodayStat(String stationId) {
         if (CommUtil.null2Long(stationId) <= 0) {
             // 判断数据权限
-            stationId = KymCache.INSTANCE.getAdminUserStationIds(StpUtil.getLoginIdAsLong()).get(0);
+            stationId = KymCache.INSTANCE.getAdminUserStationIds(StpUtil.getLoginIdAsLong()) == null ? null : KymCache.INSTANCE.getAdminUserStationIds(StpUtil.getLoginIdAsLong()).get(0);
         }
 
         return baseMapper.stationTodayStat(stationId);

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

@@ -4,6 +4,8 @@ import cn.dev33.satoken.stp.StpUtil;
 import com.baomidou.dynamic.datasource.annotation.DS;
 import com.github.pagehelper.PageHelper;
 import com.github.yulichang.base.MPJBaseServiceImpl;
+import com.github.yulichang.toolkit.JoinWrappers;
+import com.github.yulichang.wrapper.MPJLambdaWrapper;
 import com.kym.common.exception.BusinessException;
 import com.kym.common.utils.CommUtil;
 import com.kym.common.utils.OrderUtils;
@@ -11,7 +13,9 @@ import com.kym.entity.admin.queryParams.InvoiceQueryParam;
 import com.kym.entity.common.PageBean;
 import com.kym.entity.miniapp.ChargeOrder;
 import com.kym.entity.miniapp.Invoice;
+import com.kym.entity.miniapp.User;
 import com.kym.entity.miniapp.queryParams.ApplyInvoiceParams;
+import com.kym.entity.miniapp.vo.InvoiceVo;
 import com.kym.entity.wechat.InvoiceOrderDetail;
 import com.kym.entity.wechat.TitleUrl;
 import com.kym.mapper.miniapp.InvoiceMapper;
@@ -115,17 +119,21 @@ public class InvoiceServiceImpl extends MPJBaseServiceImpl<InvoiceMapper, Invoic
     }
 
     @Override
-    public PageBean<Invoice> listInvoice(InvoiceQueryParam params) {
+    public PageBean<InvoiceVo> listInvoice(InvoiceQueryParam params) {
         PageHelper.startPage(params.getPageNum(), params.getPageSize());
-        var list = lambdaQuery()
+        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())
-                .like(CommUtil.isNotEmptyAndNull(params.getPhone()), Invoice::getPhone, params.getPhone())
-                .eq(params.getStatus() != null, Invoice::getStatus, params.getStatus())
-                .list();
+                .eq(params.getStatus() != null, Invoice::getStatus, params.getStatus());
+        var list = selectJoinList(InvoiceVo.class, wrapper);
         return new PageBean<>(list);
     }