|
|
@@ -1083,63 +1083,125 @@
|
|
|
<result column="un_settled_amount" property="unSettledAmount"/>
|
|
|
</resultMap>
|
|
|
|
|
|
+ <!-- 优化:一次性查询所有公司数据,替代递归查库 -->
|
|
|
+ <select id="selectAllCompanies" resultMap="BaseResultMap">
|
|
|
+ SELECT
|
|
|
+ eic.id as company_id,
|
|
|
+ eic.parent_id, <!-- 必须加这个,树形结构需要 -->
|
|
|
+ eic.name as company_name,
|
|
|
+ COALESCE(SUM(ipi.jq_receivable_premium + ipi.sy_receivable_premium + ipi.jy_receivable_premium), 0) as total_receivable,
|
|
|
+ COALESCE(SUM(ipi.jq_supervise_costs_premiums + ipi.sy_supervise_costs_premiums + ipi.jy_supervise_costs_premiums), 0) as supervise_fee,
|
|
|
+ COALESCE(SUM(ipi.jq_other_costs_premiums + ipi.sy_other_costs_premiums + ipi.jy_other_costs_premiums), 0) as follow_fee,
|
|
|
+ COALESCE(SUM(invoice_summary.total_invoice), 0) as invoiced_amount,
|
|
|
+ COALESCE(SUM(invoice_summary.settled_invoice), 0) as settled_amount,
|
|
|
+ COALESCE(SUM(invoice_summary.unsettled_invoice), 0) as un_settled_amount
|
|
|
+ FROM
|
|
|
+ esm_ins_company eic
|
|
|
+ LEFT JOIN ins_ply_income ipi ON eic.id = ipi.company_id and ipi.agreement_type = #{agreementType}
|
|
|
+ LEFT JOIN (
|
|
|
+ SELECT
|
|
|
+ ipiil.income_id,
|
|
|
+ ipii.invoice_time,
|
|
|
+ SUM(ipii.receivable_supervise_premium) as total_invoice,
|
|
|
+ SUM(CASE WHEN ipii.status = 1 THEN ipii.receivable_supervise_premium ELSE 0 END) as settled_invoice,
|
|
|
+ SUM(CASE WHEN ipii.status = 0 THEN ipii.receivable_supervise_premium ELSE 0 END) as unsettled_invoice
|
|
|
+ FROM ins_ply_income_invoice_link ipiil
|
|
|
+ LEFT JOIN ins_ply_income_invoice ipii ON ipii.id = ipiil.invoice_id
|
|
|
+ <where>
|
|
|
+ <if test="invoiceTypes != null and invoiceTypes.size() > 0">
|
|
|
+ AND ipii.invoice_type IN
|
|
|
+ <foreach item="item" collection="invoiceTypes" separator="," open="(" close=")">
|
|
|
+ #{item}
|
|
|
+ </foreach>
|
|
|
+ </if>
|
|
|
+ <if test="status != null and status != ''">
|
|
|
+ and ipii.status = #{status}
|
|
|
+ </if>
|
|
|
+ </where>
|
|
|
+ GROUP BY ipiil.income_id, ipii.invoice_time
|
|
|
+ ) invoice_summary ON invoice_summary.income_id = ipi.id
|
|
|
+ LEFT JOIN (
|
|
|
+ SELECT
|
|
|
+ ifo.order_no,
|
|
|
+ SUM(DISTINCT (ifo.jq_commission_premium + ifo.sy_commission_premium + ifo.jy_commission_premium)) as total_commission
|
|
|
+ FROM ins_fee_orders ifo
|
|
|
+ GROUP BY ifo.order_no
|
|
|
+ ) fee_summary ON ipi.order_no = fee_summary.order_no
|
|
|
+ <where>
|
|
|
+ <if test="companyId != null and companyId != ''">
|
|
|
+ AND eic.id = #{companyId}
|
|
|
+ </if>
|
|
|
+ <if test="startTime != null and startTime != ''">
|
|
|
+ AND ipi.signing_time BETWEEN #{startTime} AND #{endTime}
|
|
|
+ AND (
|
|
|
+ invoice_summary.invoice_time BETWEEN #{startTime} AND #{endTime}
|
|
|
+ OR invoice_summary.invoice_time IS NULL
|
|
|
+ )
|
|
|
+ </if>
|
|
|
+ </where>
|
|
|
+ GROUP BY eic.id, eic.name, eic.parent_id;
|
|
|
+ </select>
|
|
|
+
|
|
|
<!-- 获取根级保险公司(parent_id为0) -->
|
|
|
<select id="selectRootCompanies" resultMap="BaseResultMap">
|
|
|
SELECT
|
|
|
- eic.id as company_id,
|
|
|
- eic.name as company_name,
|
|
|
- COALESCE(SUM(ipi.jq_receivable_premium + ipi.sy_receivable_premium + ipi.jy_receivable_premium), 0) as total_receivable,
|
|
|
- COALESCE(SUM(ipi.jq_supervise_costs_premiums + ipi.sy_supervise_costs_premiums + ipi.jy_supervise_costs_premiums), 0) as supervise_fee,
|
|
|
- COALESCE(SUM(ipi.jq_other_costs_premiums + ipi.sy_other_costs_premiums + ipi.jy_other_costs_premiums), 0) as follow_fee,
|
|
|
- COALESCE(SUM(invoice_summary.total_invoice), 0) as invoiced_amount,
|
|
|
- COALESCE(SUM(fee_summary.total_commission) - SUM(invoice_summary.total_invoice), 0) as un_invoiced_amount,
|
|
|
- COALESCE(SUM(invoice_summary.settled_invoice), 0) as settled_amount,
|
|
|
- COALESCE(SUM(invoice_summary.unsettled_invoice), 0) as un_settled_amount
|
|
|
+ eic.id as company_id,
|
|
|
+ eic.name as company_name,
|
|
|
+ COALESCE(SUM(ipi.jq_receivable_premium + ipi.sy_receivable_premium + ipi.jy_receivable_premium), 0) as total_receivable,
|
|
|
+ COALESCE(SUM(ipi.jq_supervise_costs_premiums + ipi.sy_supervise_costs_premiums + ipi.jy_supervise_costs_premiums), 0) as supervise_fee,
|
|
|
+ COALESCE(SUM(ipi.jq_other_costs_premiums + ipi.sy_other_costs_premiums + ipi.jy_other_costs_premiums), 0) as follow_fee,
|
|
|
+ COALESCE(SUM(invoice_summary.total_invoice), 0) as invoiced_amount,
|
|
|
+ COALESCE(SUM(fee_summary.total_commission) - SUM(invoice_summary.total_invoice), 0) as un_invoiced_amount,
|
|
|
+ COALESCE(SUM(invoice_summary.settled_invoice), 0) as settled_amount,
|
|
|
+ COALESCE(SUM(invoice_summary.unsettled_invoice), 0) as un_settled_amount
|
|
|
FROM
|
|
|
- esm_ins_company eic
|
|
|
- LEFT JOIN ins_ply_income ipi ON eic.id = ipi.company_id and ipi.agreement_type = #{settlementReportQueryVo.agreementType}
|
|
|
- LEFT JOIN (
|
|
|
- SELECT
|
|
|
- ipiil.income_id,
|
|
|
- SUM(ipii.receivable_supervise_premium) as total_invoice,
|
|
|
- SUM(CASE WHEN ipii.status = 1 THEN ipii.receivable_supervise_premium ELSE 0 END) as settled_invoice,
|
|
|
- SUM(CASE WHEN ipii.status = 0 THEN ipii.receivable_supervise_premium ELSE 0 END) as unsettled_invoice
|
|
|
- FROM ins_ply_income_invoice_link ipiil
|
|
|
- LEFT JOIN ins_ply_income_invoice ipii
|
|
|
- ON ipii.id = ipiil.invoice_id
|
|
|
- <where>
|
|
|
- <if test="settlementReportQueryVo.invoiceTypes != null and settlementReportQueryVo.invoiceTypes.size() > 0">
|
|
|
- AND ipii.invoice_type IN
|
|
|
- <foreach item="item" collection="settlementReportQueryVo.invoiceTypes" separator="," open="(" close=")">
|
|
|
- #{item}
|
|
|
- </foreach>
|
|
|
- </if>
|
|
|
- <if test="settlementReportQueryVo.status != null and settlementReportQueryVo.status != ''">
|
|
|
- and ipii.status = #{settlementReportQueryVo.status}
|
|
|
- </if>
|
|
|
- </where>
|
|
|
- GROUP BY ipiil.income_id
|
|
|
- ) invoice_summary ON invoice_summary.income_id = ipi.id
|
|
|
+ esm_ins_company eic
|
|
|
+ LEFT JOIN ins_ply_income ipi ON eic.id = ipi.company_id and ipi.agreement_type = #{settlementReportQueryVo.agreementType}
|
|
|
LEFT JOIN (
|
|
|
- SELECT
|
|
|
- ifo.order_no,
|
|
|
- SUM(DISTINCT (ifo.jq_commission_premium + ifo.sy_commission_premium + ifo.jy_commission_premium)) as total_commission
|
|
|
- FROM ins_fee_orders ifo
|
|
|
- GROUP BY ifo.order_no
|
|
|
- ) fee_summary ON ipi.order_no = fee_summary.order_no
|
|
|
- WHERE
|
|
|
- eic.parent_id = 0
|
|
|
- <if test="settlementReportQueryVo.companyId != null and settlementReportQueryVo.companyId != ''">
|
|
|
- and eic.id = #{settlementReportQueryVo.companyId}
|
|
|
+ SELECT
|
|
|
+ ipiil.income_id,
|
|
|
+ ipii.invoice_time,
|
|
|
+ SUM(ipii.receivable_supervise_premium) as total_invoice,
|
|
|
+ SUM(CASE WHEN ipii.status = 1 THEN ipii.receivable_supervise_premium ELSE 0 END) as settled_invoice,
|
|
|
+ SUM(CASE WHEN ipii.status = 0 THEN ipii.receivable_supervise_premium ELSE 0 END) as unsettled_invoice
|
|
|
+ FROM ins_ply_income_invoice_link ipiil
|
|
|
+ LEFT JOIN ins_ply_income_invoice ipii
|
|
|
+ ON ipii.id = ipiil.invoice_id
|
|
|
+ <where>
|
|
|
+ <if test="settlementReportQueryVo.invoiceTypes != null and settlementReportQueryVo.invoiceTypes.size() > 0">
|
|
|
+ AND ipii.invoice_type IN
|
|
|
+ <foreach item="item" collection="settlementReportQueryVo.invoiceTypes" separator="," open="(" close=")">
|
|
|
+ #{item}
|
|
|
+ </foreach>
|
|
|
</if>
|
|
|
- <if test="settlementReportQueryVo.startTime != null and settlementReportQueryVo.startTime != ''">
|
|
|
- AND ipi.signing_time BETWEEN #{settlementReportQueryVo.startTime} AND #{settlementReportQueryVo.endTime}
|
|
|
- AND (invoice_summary.invoiceTime BETWEEN #{settlementReportQueryVo.startTime} AND #{settlementReportQueryVo.endTime}
|
|
|
- OR invoice_summary.invoiceTime IS NULL)
|
|
|
+ <if test="settlementReportQueryVo.status != null and settlementReportQueryVo.status != ''">
|
|
|
+ and ipii.status = #{settlementReportQueryVo.status}
|
|
|
</if>
|
|
|
+ </where>
|
|
|
+ GROUP BY ipiil.income_id, ipii.invoice_time
|
|
|
+ ) invoice_summary ON invoice_summary.income_id = ipi.id
|
|
|
+ LEFT JOIN (
|
|
|
+ SELECT
|
|
|
+ ifo.order_no,
|
|
|
+ SUM(DISTINCT (ifo.jq_commission_premium + ifo.sy_commission_premium + ifo.jy_commission_premium)) as total_commission
|
|
|
+ FROM ins_fee_orders ifo
|
|
|
+ GROUP BY ifo.order_no
|
|
|
+ ) fee_summary ON ipi.order_no = fee_summary.order_no
|
|
|
+ WHERE
|
|
|
+ eic.parent_id = 0
|
|
|
+ <if test="settlementReportQueryVo.companyId != null and settlementReportQueryVo.companyId != ''">
|
|
|
+ and eic.id = #{settlementReportQueryVo.companyId}
|
|
|
+ </if>
|
|
|
+ <if test="settlementReportQueryVo.startTime != null and settlementReportQueryVo.startTime != ''">
|
|
|
+ AND ipi.signing_time BETWEEN #{settlementReportQueryVo.startTime} AND #{settlementReportQueryVo.endTime}
|
|
|
+ AND (
|
|
|
+ invoice_summary.invoice_time BETWEEN #{settlementReportQueryVo.startTime} AND #{settlementReportQueryVo.endTime}
|
|
|
+ OR invoice_summary.invoice_time IS NULL
|
|
|
+ )
|
|
|
+ </if>
|
|
|
GROUP BY
|
|
|
- eic.id,
|
|
|
- eic.name;
|
|
|
+ eic.id,
|
|
|
+ eic.name;
|
|
|
</select>
|
|
|
|
|
|
<!-- 获取子公司 -->
|