|
@@ -16,8 +16,14 @@
|
|
|
left join ins_fee_orders ifo on o.id = ifo.order_no
|
|
left join ins_fee_orders ifo on o.id = ifo.order_no
|
|
|
LEFT JOIN ptl_agreement a ON a.id=o.agreement_id AND a.is_delete=0
|
|
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 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}
|
|
|
WHERE o.is_delete = 0
|
|
WHERE o.is_delete = 0
|
|
|
|
|
|
|
|
|
|
+ <if test="q != null and q.salesmanTypes != null and q.salesmanTypes.size() > 0">
|
|
|
|
|
+ AND suji.type_attr IN
|
|
|
|
|
+ <foreach collection="q.salesmanTypes" item="v" open="(" separator="," close=")">#{v}</foreach>
|
|
|
|
|
+ </if>
|
|
|
<if test="q != null and q.partnerCompanyIds != null and q.partnerCompanyIds.size() > 0">
|
|
<if test="q != null and q.partnerCompanyIds != null and q.partnerCompanyIds.size() > 0">
|
|
|
AND a.partner_company_id IN
|
|
AND a.partner_company_id IN
|
|
|
<foreach collection="q.partnerCompanyIds" item="v" open="(" separator="," close=")">#{v}</foreach>
|
|
<foreach collection="q.partnerCompanyIds" item="v" open="(" separator="," close=")">#{v}</foreach>
|
|
@@ -259,4 +265,96 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
</select>
|
|
</select>
|
|
|
|
|
+
|
|
|
|
|
+ <select id="salesmanPage" resultType="com.jzg.commons.entity.report.dto.ReportCompanyQuotationDataDto">
|
|
|
|
|
+ <include refid="base"/>,
|
|
|
|
|
+ company_stat AS (
|
|
|
|
|
+ SELECT
|
|
|
|
|
+ o.company_id AS companyId,
|
|
|
|
|
+ o.company_name AS companyName,
|
|
|
|
|
+ COALESCE(a.partner_company_id,'') partnerCompanyId,
|
|
|
|
|
+ COALESCE(pc.name_simple,'') partnerCompanyName,
|
|
|
|
|
+ COUNT(o.id) AS quoteCountNum,
|
|
|
|
|
+ SUM(CASE WHEN o.order_status IN (1,2,3,4,5,7) THEN 1 ELSE 0 END) AS quoteSuccessNum,
|
|
|
|
|
+ SUM(CASE WHEN o.order_status = 6 THEN 1 ELSE 0 END) AS quoteFailNum,
|
|
|
|
|
+ SUM(CASE WHEN o.quote_time IS NOT NULL THEN CAST(o.quote_time AS DECIMAL(10,2)) ELSE 0 END) AS total_quote_second,
|
|
|
|
|
+ COUNT(CASE WHEN o.quote_time IS NOT NULL THEN 1 END) AS valid_quote_count,
|
|
|
|
|
+ SUM(CASE WHEN o.order_status IN (2,3,4,5,7) THEN 1 ELSE 0 END) AS waitAuditNum,
|
|
|
|
|
+ SUM(CASE WHEN o.order_status = 3 THEN 1 ELSE 0 END) AS staffProcessNum,
|
|
|
|
|
+ SUM(CASE WHEN o.order_status IN (4,5) THEN 1 ELSE 0 END) AS underwritPassNum,
|
|
|
|
|
+ SUM(CASE WHEN o.order_status = 7 THEN 1 ELSE 0 END) AS underwritRejectNum,
|
|
|
|
|
+ SUM(CASE WHEN o.order_status = 5 THEN 1 ELSE 0 END) AS dealOrderNum,
|
|
|
|
|
+ SUM(COUNT(*)) OVER () AS totalQuoteNum
|
|
|
|
|
+ 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
|
|
|
|
|
+ GROUP BY o.company_id, o.company_name,a.partner_company_id,pc.name_simple
|
|
|
|
|
+ )
|
|
|
|
|
+ SELECT
|
|
|
|
|
+ companyId,
|
|
|
|
|
+ companyName,
|
|
|
|
|
+ partnerCompanyId,
|
|
|
|
|
+ partnerCompanyName,
|
|
|
|
|
+ quoteCountNum,
|
|
|
|
|
+ ROUND(quoteCountNum * 100.0 / totalQuoteNum, 2) AS quoteCountNumProportion,
|
|
|
|
|
+ quoteSuccessNum,
|
|
|
|
|
+ quoteFailNum,
|
|
|
|
|
+ CASE WHEN valid_quote_count = 0 THEN 0.00
|
|
|
|
|
+ ELSE ROUND(total_quote_second / valid_quote_count, 2)
|
|
|
|
|
+ END AS avgQuoteTime,
|
|
|
|
|
+ waitAuditNum,
|
|
|
|
|
+ staffProcessNum,
|
|
|
|
|
+ underwritPassNum,
|
|
|
|
|
+ underwritRejectNum,
|
|
|
|
|
+ CASE WHEN waitAuditNum = 0 THEN 0.00 ELSE ROUND(underwritPassNum * 100.0 / waitAuditNum, 2) END AS underwritPassRate,
|
|
|
|
|
+ dealOrderNum,
|
|
|
|
|
+ CASE WHEN quoteCountNum = 0 THEN 0.00 ELSE ROUND(dealOrderNum * 100.0 / quoteCountNum, 2) END AS conversionRate
|
|
|
|
|
+ FROM company_stat
|
|
|
|
|
+ </select>
|
|
|
|
|
+ <select id="salesmanExport" resultType="com.jzg.commons.entity.report.dto.ReportCompanyQuotationDataDto">
|
|
|
|
|
+ <include refid="base"/>,
|
|
|
|
|
+ company_stat AS (
|
|
|
|
|
+ SELECT
|
|
|
|
|
+ o.company_id AS companyId,
|
|
|
|
|
+ o.company_name AS companyName,
|
|
|
|
|
+ COALESCE(a.partner_company_id,'') partnerCompanyId,
|
|
|
|
|
+ COALESCE(pc.name_simple,'') partnerCompanyName,
|
|
|
|
|
+ COUNT(o.id) AS quoteCountNum,
|
|
|
|
|
+ SUM(CASE WHEN o.order_status IN (1,2,3,4,5,7) THEN 1 ELSE 0 END) AS quoteSuccessNum,
|
|
|
|
|
+ SUM(CASE WHEN o.order_status = 6 THEN 1 ELSE 0 END) AS quoteFailNum,
|
|
|
|
|
+ SUM(CASE WHEN o.quote_time IS NOT NULL THEN CAST(o.quote_time AS DECIMAL(10,2)) ELSE 0 END) AS total_quote_second,
|
|
|
|
|
+ COUNT(CASE WHEN o.quote_time IS NOT NULL THEN 1 END) AS valid_quote_count,
|
|
|
|
|
+ SUM(CASE WHEN o.order_status IN (2,3,4,5,7) THEN 1 ELSE 0 END) AS waitAuditNum,
|
|
|
|
|
+ SUM(CASE WHEN o.order_status = 3 THEN 1 ELSE 0 END) AS staffProcessNum,
|
|
|
|
|
+ SUM(CASE WHEN o.order_status IN (4,5) THEN 1 ELSE 0 END) AS underwritPassNum,
|
|
|
|
|
+ SUM(CASE WHEN o.order_status = 7 THEN 1 ELSE 0 END) AS underwritRejectNum,
|
|
|
|
|
+ SUM(CASE WHEN o.order_status = 5 THEN 1 ELSE 0 END) AS dealOrderNum,
|
|
|
|
|
+ SUM(COUNT(*)) OVER () AS totalQuoteNum
|
|
|
|
|
+ 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
|
|
|
|
|
+ GROUP BY o.company_id, o.company_name,a.partner_company_id,pc.name_simple
|
|
|
|
|
+ )
|
|
|
|
|
+ SELECT
|
|
|
|
|
+ companyId,
|
|
|
|
|
+ companyName,
|
|
|
|
|
+ partnerCompanyId,
|
|
|
|
|
+ partnerCompanyName,
|
|
|
|
|
+ quoteCountNum,
|
|
|
|
|
+ ROUND(quoteCountNum * 100.0 / totalQuoteNum, 2) AS quoteCountNumProportion,
|
|
|
|
|
+ quoteSuccessNum,
|
|
|
|
|
+ quoteFailNum,
|
|
|
|
|
+ CASE WHEN valid_quote_count = 0 THEN 0.00
|
|
|
|
|
+ ELSE ROUND(total_quote_second / valid_quote_count, 2)
|
|
|
|
|
+ END AS avgQuoteTime,
|
|
|
|
|
+ waitAuditNum,
|
|
|
|
|
+ staffProcessNum,
|
|
|
|
|
+ underwritPassNum,
|
|
|
|
|
+ underwritRejectNum,
|
|
|
|
|
+ CASE WHEN waitAuditNum = 0 THEN 0.00 ELSE ROUND(underwritPassNum * 100.0 / waitAuditNum, 2) END AS underwritPassRate,
|
|
|
|
|
+ dealOrderNum,
|
|
|
|
|
+ CASE WHEN quoteCountNum = 0 THEN 0.00 ELSE ROUND(dealOrderNum * 100.0 / quoteCountNum, 2) END AS conversionRate
|
|
|
|
|
+ FROM company_stat
|
|
|
|
|
+ </select>
|
|
|
|
|
+
|
|
|
</mapper>
|
|
</mapper>
|