|
|
@@ -0,0 +1,221 @@
|
|
|
+<?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.jzg.console.taskDataReport.mapper.ReportCompanyDataMapper">
|
|
|
+
|
|
|
+ <!-- ==================== 列表汇总查询(按保险公司 × 合作保险公司聚合) ==================== -->
|
|
|
+ <sql id="summaryBase">
|
|
|
+ WITH orders AS (
|
|
|
+ SELECT o.id, o.quote_no, o.agreement_id, o.company_id, o.company_name,
|
|
|
+ o.product_id, o.product_name, o.order_status, o.entry_status,
|
|
|
+ o.audit_status, o.real_quote_user_id, o.order_source,
|
|
|
+ o.docking_person, o.docking_person_phone, o.create_time, o.signing_time,
|
|
|
+ o.system_code
|
|
|
+ FROM ins_orders o
|
|
|
+ LEFT JOIN ptl_agreement a ON a.id = o.agreement_id AND a.is_delete = 0
|
|
|
+ WHERE o.is_delete = 0
|
|
|
+ AND o.company_id IS NOT NULL AND o.company_name IS NOT NULL AND o.company_name != ''
|
|
|
+ <if test="q != null and q.companyId != null and q.companyId != ''">AND o.company_id = #{q.companyId}</if>
|
|
|
+ <if test="q != null and q.recordTimeBegin != null and q.recordTimeBegin != ''">AND DATE_FORMAT(o.create_time,
|
|
|
+ '%Y-%m-%d') >= #{q.recordTimeBegin}
|
|
|
+ </if>
|
|
|
+ <if test="q != null and q.recordTimeEnd != null and q.recordTimeEnd != ''">AND DATE_FORMAT(o.create_time,
|
|
|
+ '%Y-%m-%d') <= #{q.recordTimeEnd}
|
|
|
+ </if>
|
|
|
+ <if test="q != null and q.createTimeBegin != null and q.createTimeBegin != ''">AND DATE_FORMAT(o.create_time,
|
|
|
+ '%Y-%m-%d') >= #{q.createTimeBegin}
|
|
|
+ </if>
|
|
|
+ <if test="q != null and q.createTimeEnd != null and q.createTimeEnd != ''">AND DATE_FORMAT(o.create_time,
|
|
|
+ '%Y-%m-%d') <= #{q.createTimeEnd}
|
|
|
+ </if>
|
|
|
+ <if test="q != null and q.signTimeBegin != null and q.signTimeBegin != ''">AND o.signing_time >=
|
|
|
+ #{q.signTimeBegin}
|
|
|
+ </if>
|
|
|
+ <if test="q != null and q.signTimeEnd != null and q.signTimeEnd != ''">AND o.signing_time <=
|
|
|
+ #{q.signTimeEnd}
|
|
|
+ </if>
|
|
|
+ <if test="q != null and q.systemCode != null and q.systemCode != ''">AND o.system_code = #{q.systemCode}</if>
|
|
|
+ <if test="q != null and q.orderStatus != null and q.orderStatus.size() > 0">
|
|
|
+ AND o.order_status IN
|
|
|
+ <foreach collection="q.orderStatus" item="v" open="(" separator="," close=")">#{v}</foreach>
|
|
|
+ </if>
|
|
|
+ <if test="q != null and q.orderSource != null and q.orderSource.size() > 0">
|
|
|
+ AND o.order_source IN
|
|
|
+ <foreach collection="q.orderSource" item="v" open="(" separator="," close=")">#{v}</foreach>
|
|
|
+ </if>
|
|
|
+ <if test="q != null and q.orderTypes != null and q.orderTypes.size() > 0">
|
|
|
+ AND o.entry_status IN
|
|
|
+ <foreach collection="q.orderTypes" item="v" open="(" separator="," close=")">#{v}</foreach>
|
|
|
+ </if>
|
|
|
+ <if test="q != null and q.riskTypes != null and q.riskTypes.size() > 0">
|
|
|
+ AND o.product_id IN
|
|
|
+ <foreach collection="q.riskTypes" item="v" open="(" separator="," close=")">#{v}</foreach>
|
|
|
+ </if>
|
|
|
+ <if test="q != null and q.productType != null and q.productType.size() > 0">
|
|
|
+ AND o.product_id IN
|
|
|
+ <foreach collection="q.productType" item="v" open="(" separator="," close=")">#{v}</foreach>
|
|
|
+ </if>
|
|
|
+ <if test="q != null and q.orderCheckStatus != null and q.orderCheckStatus.size() > 0">
|
|
|
+ AND o.audit_status IN
|
|
|
+ <foreach collection="q.orderCheckStatus" item="v" open="(" separator="," close=")">#{v}</foreach>
|
|
|
+ </if>
|
|
|
+ )
|
|
|
+ </sql>
|
|
|
+
|
|
|
+ <sql id="summaryAgg"><![CDATA[
|
|
|
+ SELECT ANY_VALUE(o.company_name) companyName,
|
|
|
+ o.company_id companyId,
|
|
|
+ ANY_VALUE(pc.name_simple) partnerCompanyName,
|
|
|
+ a.partner_company_id partnerCompanyId,
|
|
|
+ COUNT(DISTINCT o.id) quoteOrderNum,
|
|
|
+ COUNT(DISTINCT CASE WHEN o.entry_status = 2 THEN o.id END) proxyCustomerOrderNum,
|
|
|
+ COUNT(DISTINCT CASE WHEN o.order_source = 0 THEN o.id END) pcOrderNum,
|
|
|
+ COUNT(DISTINCT CASE WHEN o.order_source = 1 THEN o.id END) appOrderNum,
|
|
|
+ COUNT(DISTINCT CASE WHEN o.order_status = '4' THEN o.id END) payPendingOrderNum,
|
|
|
+ COUNT(DISTINCT CASE WHEN o.order_status = '7' THEN o.id END) underwritRejectNum,
|
|
|
+ ROUND(IFNULL(COUNT(DISTINCT CASE WHEN o.order_status IN ('4','5') THEN o.id END) * 100.0
|
|
|
+ / NULLIF(COUNT(DISTINCT CASE WHEN o.order_status IN ('4','5') THEN o.id END)
|
|
|
+ + COUNT(DISTINCT CASE WHEN o.order_status = '7' THEN o.id END), 0), 0), 2) underwritPassRate,
|
|
|
+ ROUND(IFNULL(COUNT(DISTINCT CASE WHEN o.order_status = '5' THEN o.id END) * 100.0
|
|
|
+ / NULLIF(COUNT(DISTINCT o.id), 0), 0), 2) underwriteRate,
|
|
|
+ COUNT(DISTINCT CASE WHEN o.entry_status = 3 THEN o.id END) additionalRecordingOrderNum,
|
|
|
+ COUNT(DISTINCT CASE WHEN o.entry_status = 3 AND o.audit_status = 0 THEN o.id END) additionalRecordingPendingApprovalOrderNum,
|
|
|
+ COUNT(DISTINCT CASE WHEN o.entry_status = 3 AND o.audit_status = 1 THEN o.id END) additionalRecordingApprovalOrderNum,
|
|
|
+ ANY_VALUE(mgr_info.NAME) manegerName
|
|
|
+ FROM orders o
|
|
|
+ LEFT JOIN ptl_agreement a ON a.id = o.agreement_id AND a.is_delete = 0
|
|
|
+ LEFT JOIN esm_ins_company pc ON pc.id = a.partner_company_id AND pc.is_delete = 0
|
|
|
+ LEFT JOIN sys_user su ON su.mobile = o.real_quote_user_id
|
|
|
+ LEFT JOIN sys_user_jzg_info suji ON su.id = suji.user_id AND suji.system_code = #{q.systemCode} AND suji.type_attr IN ('6','7','8') AND suji.name IS NOT NULL AND suji.name != ''
|
|
|
+ LEFT JOIN sys_dept sd ON sd.id = suji.dept_id
|
|
|
+ LEFT JOIN sys_user_jzg_info mgr_info ON mgr_info.id = suji.leader_id AND mgr_info.system_code = #{q.systemCode}
|
|
|
+ WHERE 1=1
|
|
|
+ AND a.partner_company_id IS NOT NULL
|
|
|
+ AND pc.name_simple IS NOT NULL AND pc.name_simple != ''
|
|
|
+ AND o.company_id IS NOT NULL AND o.company_name IS NOT NULL AND o.company_name != ''
|
|
|
+ ]]>
|
|
|
+ <if test="q != null and q.partnerCompanyIds != null and q.partnerCompanyIds.size() > 0">
|
|
|
+ AND a.partner_company_id IN
|
|
|
+ <foreach collection="q.partnerCompanyIds" item="v" open="(" separator="," close=")">#{v}</foreach>
|
|
|
+ </if>
|
|
|
+ <if test="q != null and q.orgIds != null and q.orgIds.size() > 0">
|
|
|
+ AND sd.id IN
|
|
|
+ <foreach collection="q.orgIds" item="v" open="(" separator="," close=")">#{v}</foreach>
|
|
|
+ </if>
|
|
|
+ GROUP BY o.company_id, a.partner_company_id
|
|
|
+ </sql>
|
|
|
+
|
|
|
+ <select id="page" resultType="com.jzg.commons.entity.report.dto.ReportCompanyDataDto">
|
|
|
+ <include refid="summaryBase"/>
|
|
|
+ <include refid="summaryAgg"/>
|
|
|
+ </select>
|
|
|
+
|
|
|
+ <select id="export" resultType="com.jzg.commons.entity.report.dto.ReportCompanyDataDto">
|
|
|
+ <include refid="summaryBase"/>
|
|
|
+ <include refid="summaryAgg"/>
|
|
|
+ </select>
|
|
|
+
|
|
|
+ <!-- ==================== 明细查询 ==================== -->
|
|
|
+ <sql id="detailSelect"><![CDATA[
|
|
|
+ SELECT ANY_VALUE(o.company_name) companyName,
|
|
|
+ o.company_id companyId,
|
|
|
+ ANY_VALUE(COALESCE(pc.name_simple, '')) partnerCompanyName,
|
|
|
+ a.partner_company_id partnerCompanyId,
|
|
|
+ COUNT(DISTINCT o.id) quoteOrderNum,
|
|
|
+ COUNT(DISTINCT CASE WHEN o.entry_status = 2 THEN o.id END) proxyCustomerOrderNum,
|
|
|
+ COUNT(DISTINCT CASE WHEN o.order_source = 0 THEN o.id END) pcOrderNum,
|
|
|
+ COUNT(DISTINCT CASE WHEN o.order_source = 1 THEN o.id END) appOrderNum,
|
|
|
+ COUNT(DISTINCT CASE WHEN o.order_status = '4' THEN o.id END) payPendingOrderNum,
|
|
|
+ COUNT(DISTINCT CASE WHEN o.order_status = '7' THEN o.id END) underwritRejectNum,
|
|
|
+ ROUND(IFNULL(COUNT(DISTINCT o.id) * 100.0 / NULLIF(COUNT(DISTINCT o.quote_no), 0), 0), 2) quoteOrderRate,
|
|
|
+ ROUND(IFNULL(COUNT(DISTINCT CASE WHEN o.order_status IN ('4', '5') THEN o.id END) * 100.0
|
|
|
+ / NULLIF(COUNT(DISTINCT CASE WHEN o.order_status IN ('4', '5') THEN o.id END)
|
|
|
+ + COUNT(DISTINCT CASE WHEN o.order_status = '7' THEN o.id END), 0), 0),
|
|
|
+ 2) underwritPassRate,
|
|
|
+ ROUND(IFNULL(COUNT(DISTINCT CASE WHEN o.order_status = '5' THEN o.id END) * 100.0
|
|
|
+ / NULLIF(COUNT(DISTINCT o.id), 0), 0), 2) underwriteRate,
|
|
|
+ COUNT(DISTINCT CASE WHEN o.entry_status = 3 THEN o.id END) additionalRecordingOrderNum,
|
|
|
+ COUNT(DISTINCT CASE
|
|
|
+ WHEN o.entry_status = 3 AND o.audit_status = 0
|
|
|
+ THEN o.id END) additionalRecordingPendingApprovalOrderNum,
|
|
|
+ COUNT(DISTINCT CASE
|
|
|
+ WHEN o.entry_status = 3 AND o.audit_status = 1
|
|
|
+ THEN o.id END) additionalRecordingApprovalOrderNum,
|
|
|
+ ANY_VALUE(mgr_info.NAME) manegerName
|
|
|
+ FROM ins_orders o
|
|
|
+ LEFT JOIN ptl_agreement a ON a.id = o.agreement_id AND a.is_delete = 0
|
|
|
+ LEFT JOIN esm_ins_company pc ON pc.id = a.partner_company_id AND pc.is_delete = 0
|
|
|
+ LEFT JOIN sys_user su ON su.mobile = o.real_quote_user_id
|
|
|
+ LEFT JOIN sys_user_jzg_info suji ON su.id = suji.user_id AND suji.system_code = #{q.systemCode} AND
|
|
|
+ suji.type_attr IN ('6', '7', '8') AND suji.name IS NOT NULL AND
|
|
|
+ suji.name != ''
|
|
|
+ LEFT JOIN sys_dept sd ON sd.id = suji.dept_id
|
|
|
+ LEFT JOIN sys_user_jzg_info mgr_info
|
|
|
+ ON mgr_info.id = suji.leader_id AND mgr_info.system_code = #{q.systemCode}
|
|
|
+ WHERE o.is_delete = 0
|
|
|
+ AND a.partner_company_id IS NOT NULL
|
|
|
+ AND pc.name_simple IS NOT NULL
|
|
|
+ AND pc.name_simple != ''
|
|
|
+ AND o.company_id IS NOT NULL
|
|
|
+ AND o.company_name IS NOT NULL
|
|
|
+ AND o.company_name != ''
|
|
|
+ ]]></sql>
|
|
|
+
|
|
|
+ <sql id="detailWhere">
|
|
|
+ <if test="q != null and q.companyId != null and q.companyId != ''">AND o.company_id = #{q.companyId}</if>
|
|
|
+ <if test="q != null and q.recordTimeBegin != null and q.recordTimeBegin != ''">AND DATE_FORMAT(o.create_time,
|
|
|
+ '%Y-%m-%d') >= #{q.recordTimeBegin}
|
|
|
+ </if>
|
|
|
+ <if test="q != null and q.recordTimeEnd != null and q.recordTimeEnd != ''">AND DATE_FORMAT(o.create_time,
|
|
|
+ '%Y-%m-%d') <= #{q.recordTimeEnd}
|
|
|
+ </if>
|
|
|
+ <if test="q != null and q.createTimeBegin != null and q.createTimeBegin != ''">AND DATE_FORMAT(o.create_time,
|
|
|
+ '%Y-%m-%d') >= #{q.createTimeBegin}
|
|
|
+ </if>
|
|
|
+ <if test="q != null and q.createTimeEnd != null and q.createTimeEnd != ''">AND DATE_FORMAT(o.create_time,
|
|
|
+ '%Y-%m-%d') <= #{q.createTimeEnd}
|
|
|
+ </if>
|
|
|
+ <if test="q != null and q.signTimeBegin != null and q.signTimeBegin != ''">AND o.signing_time >=
|
|
|
+ #{q.signTimeBegin}
|
|
|
+ </if>
|
|
|
+ <if test="q != null and q.signTimeEnd != null and q.signTimeEnd != ''">AND o.signing_time <=
|
|
|
+ #{q.signTimeEnd}
|
|
|
+ </if>
|
|
|
+ <if test="q != null and q.systemCode != null and q.systemCode != ''">AND o.system_code = #{q.systemCode}</if>
|
|
|
+ <if test="q != null and q.partnerCompanyIds != null and q.partnerCompanyIds.size() > 0">
|
|
|
+ AND a.partner_company_id IN
|
|
|
+ <foreach collection="q.partnerCompanyIds" item="v" open="(" separator="," close=")">#{v}</foreach>
|
|
|
+ </if>
|
|
|
+ <if test="q != null and q.licenseNo != null and q.licenseNo != ''">AND 1=1</if>
|
|
|
+ <if test="q != null and q.orderStatus != null and q.orderStatus.size() > 0">
|
|
|
+ AND o.order_status IN
|
|
|
+ <foreach collection="q.orderStatus" item="v" open="(" separator="," close=")">#{v}</foreach>
|
|
|
+ </if>
|
|
|
+ <if test="q != null and q.orderSource != null and q.orderSource.size() > 0">
|
|
|
+ AND o.order_source IN
|
|
|
+ <foreach collection="q.orderSource" item="v" open="(" separator="," close=")">#{v}</foreach>
|
|
|
+ </if>
|
|
|
+ <if test="q != null and q.orderTypes != null and q.orderTypes.size() > 0">
|
|
|
+ AND o.entry_status IN
|
|
|
+ <foreach collection="q.orderTypes" item="v" open="(" separator="," close=")">#{v}</foreach>
|
|
|
+ </if>
|
|
|
+ <if test="q != null and q.orgIds != null and q.orgIds.size() > 0">
|
|
|
+ AND sd.id IN
|
|
|
+ <foreach collection="q.orgIds" item="v" open="(" separator="," close=")">#{v}</foreach>
|
|
|
+ </if>
|
|
|
+ </sql>
|
|
|
+
|
|
|
+ <select id="detailPage" resultType="com.jzg.commons.entity.report.dto.ReportCompanyDataDetailDto">
|
|
|
+ <include refid="detailSelect"/>
|
|
|
+ <include refid="detailWhere"/>
|
|
|
+ GROUP BY o.company_id, a.partner_company_id
|
|
|
+ ORDER BY o.company_id, a.partner_company_id
|
|
|
+ </select>
|
|
|
+
|
|
|
+ <select id="detailExport" resultType="com.jzg.commons.entity.report.dto.ReportCompanyDataDetailDto">
|
|
|
+ <include refid="detailSelect"/>
|
|
|
+ <include refid="detailWhere"/>
|
|
|
+ GROUP BY o.company_id, a.partner_company_id
|
|
|
+ ORDER BY o.company_id, a.partner_company_id
|
|
|
+ </select>
|
|
|
+
|
|
|
+</mapper>
|