新增工具中心和财务报表修改
This commit is contained in:
@@ -191,20 +191,56 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
and date_format(sof.finance_time,'%Y-%m-%d %H:%i:%s') >= date_format(#{beginTime},'%Y-%m-%d %H:%i:%s')
|
||||
and date_format(sof.finance_time,'%Y-%m-%d %H:%i:%s') <= date_format(#{endTime},'%Y-%m-%d %H:%i:%s')
|
||||
</select>
|
||||
|
||||
<select id="getBarData" resultMap="SysOaFinanceResult">
|
||||
<!-- 月度收支对比:仅查询近 6 个月,使用 f.finance_type 判断进(1)出(0)账 -->
|
||||
<select id="getBarData" resultType="com.ruoyi.oa.domain.dto.BarDataDTO">
|
||||
SELECT
|
||||
DATE_FORMAT(a.create_time, '%Y-%m') AS month,
|
||||
SUM(CASE WHEN a.finance_type = '0' THEN b.price ELSE 0 END) AS total_out,
|
||||
SUM(CASE WHEN a.finance_type = '1' THEN b.price ELSE 0 END) AS total_in
|
||||
FROM sys_oa_finance a
|
||||
LEFT JOIN sys_oa_detail b
|
||||
ON a.finance_id = b.finance_id
|
||||
AND a.create_time >= DATE_FORMAT(DATE_SUB(NOW(), INTERVAL 5 MONTH), '%Y-%m-01')
|
||||
AND DATE_ADD(DATE_FORMAT(NOW(), '%Y-%m-01'), INTERVAL 1 MONTH) > a.create_time
|
||||
GROUP BY DATE_FORMAT(a.create_time, '%Y-%m')
|
||||
ORDER BY month;
|
||||
DATE_FORMAT(f.finance_time, '%Y-%m') AS month,
|
||||
SUM(CASE WHEN f.finance_type = '0' THEN d.price ELSE 0 END) AS totalOut,
|
||||
SUM(CASE WHEN f.finance_type = '1' THEN d.price ELSE 0 END) AS totalIn
|
||||
FROM sys_oa_detail d
|
||||
JOIN sys_oa_finance f ON d.finance_id = f.finance_id
|
||||
<where>
|
||||
<!-- 可选的项目过滤 -->
|
||||
<if test="projectId != null and projectId > 0">
|
||||
AND f.project_id = #{projectId}
|
||||
</if>
|
||||
<!-- 只筛近 6 个月:从 5 个月前的第一天到当月最后一天 -->
|
||||
AND f.finance_time BETWEEN
|
||||
DATE_FORMAT(DATE_SUB(CURDATE(), INTERVAL 5 MONTH), '%Y-%m-01')
|
||||
AND LAST_DAY(CURDATE())
|
||||
</where>
|
||||
GROUP BY DATE_FORMAT(f.finance_time, '%Y-%m')
|
||||
ORDER BY month
|
||||
</select>
|
||||
|
||||
<!-- 明细列表:含币种判断(使用 f.remark 来模糊匹配币种),并只查询近 6 个月的数据 -->
|
||||
<select id="getFinanceDetails" resultType="com.ruoyi.oa.domain.dto.FinanceDetailDTO">
|
||||
SELECT
|
||||
DATE_FORMAT(f.finance_time, '%Y-%m-%d') AS date,
|
||||
f.finance_type AS type,
|
||||
CASE
|
||||
WHEN f.remark LIKE '%美金%' OR f.remark LIKE '%美元%' THEN 'USD'
|
||||
ELSE 'CNY'
|
||||
END AS currency,
|
||||
d.price AS amount,
|
||||
f.project_id AS projectId
|
||||
FROM sys_oa_detail d
|
||||
JOIN sys_oa_finance f ON d.finance_id = f.finance_id
|
||||
<where>
|
||||
<!-- 项目过滤 -->
|
||||
<if test="projectId != null and projectId > 0">
|
||||
AND f.project_id = #{projectId}
|
||||
</if>
|
||||
<!-- 进/出账类型过滤 -->
|
||||
<if test="financeType != null and financeType != ''">
|
||||
AND f.finance_type = #{financeType}
|
||||
</if>
|
||||
<!-- 只查询近 6 个月的记录 -->
|
||||
AND f.finance_time BETWEEN
|
||||
DATE_FORMAT(DATE_SUB(CURDATE(), INTERVAL 5 MONTH), '%Y-%m-01')
|
||||
AND LAST_DAY(CURDATE())
|
||||
</where>
|
||||
ORDER BY f.finance_time DESC
|
||||
</select>
|
||||
|
||||
</mapper>
|
||||
|
||||
Reference in New Issue
Block a user