zhangmei
2025-02-18 8ff59060afb88087ba6b1293f93e1bc0aa80580a
流水统计
15个文件已修改
2个文件已添加
223 ■■■■ 已修改文件
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TBankFlowController.java 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TFlowManagementController.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TInvoiceController.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/mapper/TBankFlowMapper.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/mapper/TFlowManagementMapper.java 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/model/TInvoice.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/query/TInvoiceQuery.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/service/TBankFlowService.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/service/TFlowManagementService.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TBankFlowServiceImpl.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TFlowManagementServiceImpl.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TInvoiceServiceImpl.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TInvoiceToBillServiceImpl.java 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/vo/TBankFlowStatisticsVo.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/vo/TFlowManagementStatisticsVo.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/resources/mapper/system/TBankFlowMapper.xml 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/resources/mapper/system/TFlowManagementMapper.xml 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TBankFlowController.java
@@ -4,11 +4,9 @@
import com.ruoyi.common.basic.PageInfo;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.system.model.TBankFlow;
import com.ruoyi.system.model.TFlowManagement;
import com.ruoyi.system.query.TBankFlowQuery;
import com.ruoyi.system.query.TFlowManagementQuery;
import com.ruoyi.system.service.TBankFlowService;
import com.ruoyi.system.service.TFlowManagementService;
import com.ruoyi.system.vo.TBankFlowStatisticsVo;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
@@ -39,5 +37,11 @@
    public R<PageInfo<TBankFlow>> list(@RequestBody TBankFlowQuery query) {
        return R.ok(flowService.pageList(query));
    }
    @ApiOperation(value = "根据支付方式统计流水金额")
    @PostMapping("/getPaymentStats")
    public R<TBankFlowStatisticsVo> getPaymentStats(@RequestBody TBankFlowQuery query){
        return R.ok(flowService.getPaymentStats(query));
    }
}
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TFlowManagementController.java
@@ -6,6 +6,7 @@
import com.ruoyi.system.model.TFlowManagement;
import com.ruoyi.system.query.TFlowManagementQuery;
import com.ruoyi.system.service.TFlowManagementService;
import com.ruoyi.system.vo.TFlowManagementStatisticsVo;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
@@ -38,6 +39,12 @@
        return R.ok(flowService.pageList(query));
    }
    @ApiOperation(value = "根据支付方式统计流水金额")
    @PostMapping("/getPaymentStats")
    public R<TFlowManagementStatisticsVo> getPaymentStats(@RequestBody TFlowManagementQuery query){
        return R.ok(flowService.getPaymentStats(query));
    }
}
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TInvoiceController.java
@@ -47,8 +47,8 @@
    }
    @ApiOperation(value = "关联账单信息")
    @GetMapping(value = "/getBillByInvoiceId")
    public R<PageInfo<TBill>> getBillByInvoiceId(String invoiceId){
    @GetMapping(value = "/getBillByInvoiceId/{invoiceId}")
    public R<PageInfo<TBill>> getBillByInvoiceId(@PathVariable String invoiceId){
        return R.ok(tBillService.getBillByInvoiceId(invoiceId));
    }
@@ -58,10 +58,10 @@
        TInvoice tInvoice = new TInvoice();
        tInvoice.setId(query.getId());
        tInvoice.setInvoiceVoucher(query.getInvoiceVoucher());
        tInvoice.setInvoiceVoucherName(query.getInvoiceVoucherName());
        tInvoice.setInvoiceTime(query.getInvoiceTime());
        tInvoice.setStatus(2);
        return R.ok(invoiceService.updateById(tInvoice));
    }
}
ruoyi-system/src/main/java/com/ruoyi/system/mapper/TBankFlowMapper.java
@@ -2,6 +2,9 @@
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.system.model.TBankFlow;
import com.ruoyi.system.query.TBankFlowQuery;
import com.ruoyi.system.vo.TBankFlowStatisticsVo;
import org.apache.ibatis.annotations.Param;
/**
 * <p>
@@ -12,5 +15,6 @@
 * @since 2025-02-07
 */
public interface TBankFlowMapper extends BaseMapper<TBankFlow> {
    TBankFlowStatisticsVo getPaymentStats(@Param("req") TBankFlowQuery query);
}
ruoyi-system/src/main/java/com/ruoyi/system/mapper/TFlowManagementMapper.java
@@ -2,6 +2,9 @@
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.system.model.TFlowManagement;
import com.ruoyi.system.query.TFlowManagementQuery;
import com.ruoyi.system.vo.TFlowManagementStatisticsVo;
import org.apache.ibatis.annotations.Param;
/**
 * <p>
@@ -12,5 +15,5 @@
 * @since 2025-01-17
 */
public interface TFlowManagementMapper extends BaseMapper<TFlowManagement> {
    TFlowManagementStatisticsVo getPaymentStats(@Param("req") TFlowManagementQuery query);
}
ruoyi-system/src/main/java/com/ruoyi/system/model/TInvoice.java
@@ -80,5 +80,9 @@
    @TableField("contract_number")
    private String contractNumber;
    @ApiModelProperty(value = "开票文件名称")
    @TableField("invoice_voucher_name")
    private String invoiceVoucherName;
}
ruoyi-system/src/main/java/com/ruoyi/system/query/TInvoiceQuery.java
@@ -1,5 +1,6 @@
package com.ruoyi.system.query;
import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.core.domain.BasePage;
import io.swagger.annotations.ApiModel;
@@ -54,4 +55,7 @@
    @ApiModelProperty(value = "开票结束日期")
    private String invoiceEndTime;
    @ApiModelProperty(value = "开票文件名称")
    private String invoiceVoucherName;
}
ruoyi-system/src/main/java/com/ruoyi/system/service/TBankFlowService.java
@@ -3,9 +3,8 @@
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.common.basic.PageInfo;
import com.ruoyi.system.model.TBankFlow;
import com.ruoyi.system.model.TFlowManagement;
import com.ruoyi.system.query.TBankFlowQuery;
import com.ruoyi.system.query.TFlowManagementQuery;
import com.ruoyi.system.vo.TBankFlowStatisticsVo;
import java.util.List;
@@ -21,6 +20,9 @@
    PageInfo<TBankFlow> pageList(TBankFlowQuery query);
    List<TBankFlow> makeQuery(TBankFlowQuery query);
    TBankFlowStatisticsVo getPaymentStats( TBankFlowQuery query);
    List<TBankFlow> searchByBankSerialNumber(String bankSerialNumber);
}
ruoyi-system/src/main/java/com/ruoyi/system/service/TFlowManagementService.java
@@ -4,6 +4,7 @@
import com.ruoyi.common.basic.PageInfo;
import com.ruoyi.system.model.TFlowManagement;
import com.ruoyi.system.query.TFlowManagementQuery;
import com.ruoyi.system.vo.TFlowManagementStatisticsVo;
import java.util.List;
@@ -18,6 +19,7 @@
public interface TFlowManagementService extends IService<TFlowManagement> {
    PageInfo<TFlowManagement> pageList(TFlowManagementQuery query);
    List<TFlowManagement> makeQuery(TFlowManagementQuery query);
    TFlowManagementStatisticsVo getPaymentStats(TFlowManagementQuery req);
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TBankFlowServiceImpl.java
@@ -6,9 +6,9 @@
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.system.mapper.TBankFlowMapper;
import com.ruoyi.system.model.TBankFlow;
import com.ruoyi.system.model.TFlowManagement;
import com.ruoyi.system.query.TBankFlowQuery;
import com.ruoyi.system.service.TBankFlowService;
import com.ruoyi.system.vo.TBankFlowStatisticsVo;
import org.springframework.stereotype.Service;
import java.util.List;
@@ -31,6 +31,7 @@
        pageInfo.setTotal(list.size());
        return pageInfo;
    }
    @Override
    public List<TBankFlow> makeQuery(TBankFlowQuery query) {
        LambdaQueryWrapper<TBankFlow> queryWrapper = new LambdaQueryWrapper<>();
@@ -43,4 +44,21 @@
        ;
        return this.baseMapper.selectList(queryWrapper);
    }
    @Override
    public TBankFlowStatisticsVo getPaymentStats(TBankFlowQuery query) {
        return this.baseMapper.getPaymentStats(query);
    }
    /**
     * 根据银行流水号模糊查询
     * @param bankSerialNumber
     * @return
     */
    @Override
    public List<TBankFlow> searchByBankSerialNumber(String bankSerialNumber) {
        LambdaQueryWrapper<TBankFlow> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.like(StringUtils.isNotEmpty(bankSerialNumber),TBankFlow::getBankSerialNumber,bankSerialNumber);
        return this.baseMapper.selectList(queryWrapper);
    }
}
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TFlowManagementServiceImpl.java
@@ -8,6 +8,7 @@
import com.ruoyi.system.query.TFlowManagementQuery;
import com.ruoyi.system.service.TFlowManagementService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.system.vo.TFlowManagementStatisticsVo;
import org.springframework.stereotype.Service;
import java.util.List;
@@ -44,4 +45,9 @@
        ;
        return this.baseMapper.selectList(queryWrapper);
    }
    @Override
    public TFlowManagementStatisticsVo getPaymentStats(TFlowManagementQuery query) {
        return this.baseMapper.getPaymentStats(query);
    }
}
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TInvoiceServiceImpl.java
@@ -1,23 +1,17 @@
package com.ruoyi.system.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.basic.PageInfo;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.system.mapper.TInvoiceMapper;
import com.ruoyi.system.model.TBill;
import com.ruoyi.system.model.TInvoice;
import com.ruoyi.system.model.TInvoiceToBill;
import com.ruoyi.system.query.TInvoiceQuery;
import com.ruoyi.system.query.TInvoiceToBillQuery;
import com.ruoyi.system.service.TBillService;
import com.ruoyi.system.service.TInvoiceService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.sun.org.apache.regexp.internal.RE;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.bind.annotation.RequestParam;
import java.util.ArrayList;
import java.util.List;
/**
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TInvoiceToBillServiceImpl.java
@@ -1,22 +1,14 @@
package com.ruoyi.system.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.system.model.TInvoice;
import com.ruoyi.system.model.TInvoiceToBill;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.system.mapper.TInvoiceToBillMapper;
import com.ruoyi.system.model.TInvoiceToBill;
import com.ruoyi.system.query.TInvoiceToBillQuery;
import com.ruoyi.system.service.TInvoiceToBillService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
import java.util.List;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.system.mapper.TInvoiceToBillMapper;
import com.ruoyi.system.model.TInvoiceToBill;
import com.ruoyi.system.service.TInvoiceToBillService;
import org.springframework.stereotype.Service;
/**
 * <p>
ruoyi-system/src/main/java/com/ruoyi/system/vo/TBankFlowStatisticsVo.java
New file
@@ -0,0 +1,24 @@
package com.ruoyi.system.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
/**
 * @author 64502
 */
@Data
@ApiModel(value = "系统流水统计VO")
public class TBankFlowStatisticsVo {
    @ApiModelProperty(value = "流水总额")
    private BigDecimal totalFlowMoney;
    @ApiModelProperty(value = "已抵扣金额")
    private BigDecimal totalDeductionMoney;
    @ApiModelProperty(value = "剩余未抵扣")
    private BigDecimal totalRemainingMoney;
}
ruoyi-system/src/main/java/com/ruoyi/system/vo/TFlowManagementStatisticsVo.java
New file
@@ -0,0 +1,27 @@
package com.ruoyi.system.vo;
import com.baomidou.mybatisplus.annotation.TableField;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
/**
 * @author 64502
 */
@Data
@ApiModel(value = "系统流水统计VO")
public class TFlowManagementStatisticsVo {
    @ApiModelProperty(value = "系统流水总额")
    private BigDecimal totalAmount;
    @ApiModelProperty(value = "微信")
    private BigDecimal wechatAmount;
    @ApiModelProperty(value = "支付宝")
    private BigDecimal alipayAmount;
    @ApiModelProperty(value = "线下支付")
    private BigDecimal offlineAmount;
}
ruoyi-system/src/main/resources/mapper/system/TBankFlowMapper.xml
@@ -26,4 +26,40 @@
        id, bank_serial_number, flow_money, deduction_money, remaining_money, pay_time, payer, flow_status, pay_type, payment_bill_id, create_time, update_time, create_by, update_by, disabled
    </sql>
    <!-- 定义结果映射 -->
    <resultMap id="PaymentStatsResultMap" type="com.ruoyi.system.vo.TBankFlowStatisticsVo">
        <result property="totalFlowMoney" column="totalFlowMoney" />
        <result property="totalDeductionMoney" column="totalDeductionMoney" />
        <result property="totalRemainingMoney" column="totalRemainingMoney" />
    </resultMap>
    <!-- 统计总额和微信支付金额 -->
    <select id="getPaymentStats" resultMap="PaymentStatsResultMap">
        SELECT
        SUM(flow_money) AS totalFlowMoney,
        SUM(deduction_money) AS totalDeductionMoney,
        SUM(remaining_money) AS totalRemainingMoney
        FROM
        t_bank_flow
        <where>
            <if test="req.bankSerialNumber != null and req.bankSerialNumber != ''">
                and bank_serial_number = #{req.bankSerialNumber}
            </if>
            <if test="req.payer != null and req.payer != ''">
                and payer like concat('%', #{req.payer}, '%')
            </if>
            <if test="req.flowStatus != null and req.flowStatus != ''">
                and flow_status = #{req.flowStatus}
            </if>
            <if test="req.payStartTime != null and req.payStartTime != ''">
                and pay_time &gt;= #{req.payStartTime}
            </if>
            <if test="req.payEndTime != null and req.payEndTime != ''">
                and pay_time &lt;= #{req.payEndTime}
            </if>
            AND disabled = ${@com.ruoyi.common.enums.DisabledEnum@NO.getCode()}
        </where>
    </select>
</mapper>
ruoyi-system/src/main/resources/mapper/system/TFlowManagementMapper.xml
@@ -28,4 +28,46 @@
        id, sys_serial_number, bank_serial_number, flow_money, deduction_money, remaining_money, pay_time, payer, flow_status, flow_type, pay_type, payment_bill_id, create_time, update_time, create_by, update_by, disabled
    </sql>
    <!-- 定义结果映射 -->
    <resultMap id="PaymentStatsResultMap" type="com.ruoyi.system.vo.TFlowManagementStatisticsVo">
        <result property="totalAmount" column="total_amount" />
        <result property="wechatAmount" column="wechat_amount" />
        <result property="alipayAmount" column="alipay_amount" />
        <result property="offlineAmount" column="offline_amount" />
    </resultMap>
    <!-- 统计总额和微信支付金额 -->
    <select id="getPaymentStats" resultMap="PaymentStatsResultMap">
        SELECT SUM(flow_money) AS total_amount,
               SUM(CASE WHEN pay_type = 1 THEN flow_money ELSE 0 END ) AS wechat_amount,
               SUM(CASE WHEN pay_type = 2 THEN flow_money ELSE 0 END ) AS alipay_amount,
               SUM(CASE WHEN pay_type = 3 THEN flow_money ELSE 0 END ) AS offline_amount
        FROM
            t_flow_management
        <where>
            <if test="req.sysSerialNumber != null and req.sysSerialNumber != ''">
                 and sys_serial_number = #{req.sysSerialNumber}
            </if>
            <if test="req.bankSerialNumber != null and req.bankSerialNumber != ''">
                 and bank_serial_number = #{req.bankSerialNumber}
            </if>
            <if test="req.payer != null and req.payer != ''">
                 and payer like concat('%', #{req.payer}, '%')
            </if>
            <if test="req.payType != null and req.payType != ''">
                 and pay_type = #{req.payType}
            </if>
            <if test="req.payStartTime != null and req.payStartTime != ''">
                 and pay_time &gt;= #{req.payStartTime}
            </if>
            <if test="req.payEndTime != null and req.payEndTime != ''">
                 and pay_time &lt;= #{req.payEndTime}
            </if>
            AND disabled = ${@com.ruoyi.common.enums.DisabledEnum@NO.getCode()}
        </where>
    </select>
</mapper>