<?xml version="1.0" encoding="UTF-8" ?>
|
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
|
<mapper namespace="com.ruoyi.account.mapper.FinanceAccountMapper">
|
|
<select id="selectAccountPageWithBalance" resultType="com.ruoyi.account.pojo.FinanceAccount">
|
SELECT fa.*,
|
(fa.opening_balance + IFNULL(
|
(SELECT SUM(a.direction * a.amount) FROM account a WHERE a.account_id = fa.id), 0)
|
) AS currentBalance
|
FROM finance_account fa
|
WHERE 1=1
|
<if test="c.accountName != null and c.accountName != ''">
|
AND fa.account_name LIKE concat('%', #{c.accountName}, '%')
|
</if>
|
<if test="c.accountType != null and c.accountType != ''">
|
AND fa.account_type = #{c.accountType}
|
</if>
|
<if test="c.status != null and c.status != ''">
|
AND fa.status = #{c.status}
|
</if>
|
ORDER BY fa.id DESC
|
</select>
|
|
<select id="selectBalance" resultType="java.math.BigDecimal">
|
SELECT IFNULL(
|
(SELECT opening_balance FROM finance_account WHERE id = #{accountId}), 0)
|
+ IFNULL(
|
(SELECT SUM(a.direction * a.amount) FROM account a WHERE a.account_id = #{accountId}), 0)
|
</select>
|
|
<select id="selectTotalBalance" resultType="java.math.BigDecimal">
|
SELECT IFNULL(SUM(fa.opening_balance), 0) + IFNULL(
|
(SELECT SUM(a.direction * a.amount)
|
FROM account a INNER JOIN finance_account x ON x.id = a.account_id
|
WHERE x.status = '0'), 0)
|
FROM finance_account fa
|
WHERE fa.status = '0'
|
</select>
|
|
<select id="selectTotalSafetyLine" resultType="java.math.BigDecimal">
|
SELECT IFNULL(SUM(safety_line), 0) FROM finance_account WHERE status = '0'
|
</select>
|
|
<select id="trend" resultType="java.util.Map">
|
SELECT
|
DATE_FORMAT(a.account_date, '%Y-%m-%d') AS `date`,
|
SUM(CASE WHEN a.direction > 0 THEN a.amount ELSE 0 END) AS income,
|
SUM(CASE WHEN a.direction < 0 THEN a.amount ELSE 0 END) AS expense,
|
SUM(a.direction * a.amount) AS net
|
FROM account a
|
WHERE 1=1
|
<if test="accountId != null">
|
AND a.account_id = #{accountId}
|
</if>
|
<if test="start != null and start != ''">
|
AND a.account_date >= DATE_FORMAT(#{start},'%Y-%m-%d')
|
</if>
|
<if test="end != null and end != ''">
|
AND a.account_date <= DATE_FORMAT(#{end},'%Y-%m-%d')
|
</if>
|
GROUP BY DATE_FORMAT(a.account_date, '%Y-%m-%d')
|
ORDER BY `date` ASC
|
</select>
|
|
</mapper>
|