feat(bms):新增费用统计分析报表,科目按模板类别归并、仓储拆散租/固定出租两行、行级占营收比,含34列导出与智能分析归因
This commit is contained in:
@@ -0,0 +1,77 @@
|
||||
<?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.mhd.bms.domain.feeAnalysisReport.repository.mapper.FeeAnalysisReportMapper">
|
||||
|
||||
<!-- 公共统计口径:软删/已审核已出账/未红冲/收支方向/组织(组织条件由 §6.5 fillAuthScope 决定是否传入) -->
|
||||
<sql id="common_stat_where">
|
||||
bs.DEL_FLAG = 1
|
||||
AND bs.BILLING_STATE IN (2, 3)
|
||||
AND bs.RED_FLUSH_STATE = 1
|
||||
AND bs.ACCOUNT_EXPENSE_TYPE = #{accountExpenseType}
|
||||
<if test="topOrganizationId != null">
|
||||
AND bs.TOP_ORGANIZATION_ID = #{topOrganizationId}
|
||||
</if>
|
||||
<if test="organizationId != null">
|
||||
AND bs.ORGANIZATION_ID = #{organizationId}
|
||||
</if>
|
||||
</sql>
|
||||
|
||||
<!-- 科目×年月汇总:统计区间跨两个年度(本年+上年),季度组装在Java侧完成 -->
|
||||
<select id="sumBySubjectAndMonth"
|
||||
resultType="com.mhd.bms.domain.feeAnalysisReport.repository.po.FeeSubjectMonthStatPO">
|
||||
SELECT
|
||||
bs.FIRST_SUBJECT_CODE AS firstSubjectCode,
|
||||
bs.FIRST_SUBJECT_NAME AS firstSubjectName,
|
||||
bs.SECOND_SUBJECT_CODE AS secondSubjectCode,
|
||||
bs.SECOND_SUBJECT_NAME AS secondSubjectName,
|
||||
SUBSTR(TO_CHAR(bs.BUSINESS_DATE, 'YYYY-MM'), 1, 7) AS statMonth,
|
||||
SUM(bs.BILLING_AMOUNT) AS totalAmount,
|
||||
CASE WHEN bd.DOCUMENT_FORM_JSON LIKE '%"lease_area":0,%' THEN 'SCATTERED' ELSE 'FIXED' END AS pushMode
|
||||
FROM BILLING_STATEMENT bs
|
||||
LEFT JOIN BUSINESS_DOCUMENT bd ON bd.BUSINESS_DOCUMENT_ID = bs.BUSINESS_DOCUMENT_ID
|
||||
WHERE <include refid="common_stat_where"/>
|
||||
AND bs.BUSINESS_DATE >= TO_DATE(#{beginDate}, 'YYYY-MM-DD')
|
||||
AND bs.BUSINESS_DATE < TO_DATE(#{endDate}, 'YYYY-MM-DD')
|
||||
GROUP BY bs.FIRST_SUBJECT_CODE, bs.FIRST_SUBJECT_NAME,
|
||||
bs.SECOND_SUBJECT_CODE, bs.SECOND_SUBJECT_NAME,
|
||||
CASE WHEN bd.DOCUMENT_FORM_JSON LIKE '%"lease_area":0,%' THEN 'SCATTERED' ELSE 'FIXED' END,
|
||||
SUBSTR(TO_CHAR(bs.BUSINESS_DATE, 'YYYY-MM'), 1, 7)
|
||||
</select>
|
||||
|
||||
<!-- 智能分析:科目×客户×年月,WHERE同上(传入区间覆盖"本期季度+基期季度"两个月窗),用于客户归因 -->
|
||||
<select id="sumBySubjectAndCustomer"
|
||||
resultType="com.mhd.bms.domain.feeAnalysisReport.repository.po.FeeSubjectMonthStatPO">
|
||||
SELECT
|
||||
bs.FIRST_SUBJECT_CODE AS firstSubjectCode,
|
||||
bs.FIRST_SUBJECT_NAME AS firstSubjectName,
|
||||
bs.SECOND_SUBJECT_CODE AS secondSubjectCode,
|
||||
bs.SECOND_SUBJECT_NAME AS secondSubjectName,
|
||||
bs.SETTLEMENT_ENTITY AS customerName,
|
||||
SUBSTR(TO_CHAR(bs.BUSINESS_DATE, 'YYYY-MM'), 1, 7) AS statMonth,
|
||||
SUM(bs.BILLING_AMOUNT) AS totalAmount,
|
||||
CASE WHEN bd.DOCUMENT_FORM_JSON LIKE '%"lease_area":0,%' THEN 'SCATTERED' ELSE 'FIXED' END AS pushMode
|
||||
FROM BILLING_STATEMENT bs
|
||||
LEFT JOIN BUSINESS_DOCUMENT bd ON bd.BUSINESS_DOCUMENT_ID = bs.BUSINESS_DOCUMENT_ID
|
||||
WHERE <include refid="common_stat_where"/>
|
||||
AND bs.BUSINESS_DATE >= TO_DATE(#{beginDate}, 'YYYY-MM-DD')
|
||||
AND bs.BUSINESS_DATE < TO_DATE(#{endDate}, 'YYYY-MM-DD')
|
||||
GROUP BY bs.FIRST_SUBJECT_CODE, bs.FIRST_SUBJECT_NAME,
|
||||
bs.SECOND_SUBJECT_CODE, bs.SECOND_SUBJECT_NAME,
|
||||
CASE WHEN bd.DOCUMENT_FORM_JSON LIKE '%"lease_area":0,%' THEN 'SCATTERED' ELSE 'FIXED' END,
|
||||
SUBSTR(TO_CHAR(bs.BUSINESS_DATE, 'YYYY-MM'), 1, 7)
|
||||
</select>
|
||||
|
||||
<!-- 年份下拉(降序) -->
|
||||
<select id="selectDistinctYears" resultType="java.lang.String">
|
||||
SELECT DISTINCT SUBSTR(TO_CHAR(bs.BUSINESS_DATE, 'YYYY'), 1, 4)
|
||||
FROM BILLING_STATEMENT bs
|
||||
WHERE bs.DEL_FLAG = 1
|
||||
AND bs.BILLING_STATE IN (2, 3)
|
||||
AND bs.RED_FLUSH_STATE = 1
|
||||
AND bs.ACCOUNT_EXPENSE_TYPE = #{accountExpenseType}
|
||||
<if test="topOrganizationId != null">
|
||||
AND bs.TOP_ORGANIZATION_ID = #{topOrganizationId}
|
||||
</if>
|
||||
ORDER BY 1 DESC
|
||||
</select>
|
||||
</mapper>
|
||||
Reference in New Issue
Block a user