You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
95 lines
4.8 KiB
95 lines
4.8 KiB
|
4 weeks ago
|
<?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="apelet.association.dao.BusinessOpportunitiesMapper">
|
||
|
|
|
||
|
|
<!--
|
||
|
|
按线索来源统计商机转化数据:
|
||
|
|
- oppCount 转化商机数(该来源关联出的商机总数)
|
||
|
|
- winOppCount 赢单商机数(stage_manifestation = '5')
|
||
|
|
- winOppAmount 赢单商机金额(stage_manifestation = '5' 的 predicted_price 合计)
|
||
|
|
- oppTransformAmount 商机转化金额(该来源关联出的所有商机 predicted_price 合计,与是否赢单无关)
|
||
|
|
商机通过 clue_id 关联线索表 member_clue,按线索来源 source 分组统计。
|
||
|
|
-->
|
||
|
|
<select id="selectOppTransformStatBySource"
|
||
|
|
resultType="apelet.association.vo.OppTransformStatVo">
|
||
|
|
SELECT
|
||
|
|
mc.source AS source,
|
||
|
|
COUNT(bo.id) AS oppCount,
|
||
|
|
SUM(CASE WHEN bo.stage_manifestation = '5' THEN 1 ELSE 0 END) AS winOppCount,
|
||
|
|
COALESCE(SUM(CASE WHEN bo.stage_manifestation = '5' THEN bo.predicted_price ELSE 0 END), 0) AS winOppAmount,
|
||
|
|
COALESCE(SUM(bo.predicted_price), 0) AS oppTransformAmount
|
||
|
|
FROM business_opportunities bo
|
||
|
|
INNER JOIN member_clue mc ON bo.clue_id = mc.id
|
||
|
|
WHERE bo.deleted_flag = 1
|
||
|
|
AND mc.deleted_flag = 1
|
||
|
|
GROUP BY mc.source
|
||
|
|
</select>
|
||
|
|
|
||
|
|
<!--
|
||
|
|
按线索来源统计"线索→商机→合同"成交数据:
|
||
|
|
- dealCount 已转商机成交数(报价单 status = '3' 的数量)
|
||
|
|
- dealAmount 已转商机成交金额(报价单 status = '3' 的 qty 合计)
|
||
|
|
说明:合同表 contract 暂无数据(报价单反写逻辑未做),
|
||
|
|
暂以报价单 status = '3'(通过,即已成合同)作为成交口径。
|
||
|
|
报价单 quotation 通过 srcbillid 关联商机 business_opportunities,
|
||
|
|
商机再通过 clue_id 关联线索表 member_clue,按线索来源 source 分组统计。
|
||
|
|
-->
|
||
|
|
<select id="selectDealStatBySource"
|
||
|
|
resultType="apelet.association.vo.DealTransformStatVo">
|
||
|
|
SELECT
|
||
|
|
mc.source AS source,
|
||
|
|
COUNT(DISTINCT q.id) AS dealCount,
|
||
|
|
COALESCE(SUM(q.qty), 0) AS dealAmount
|
||
|
|
FROM quotation q
|
||
|
|
INNER JOIN business_opportunities bo ON q.srcbillid = bo.id
|
||
|
|
INNER JOIN member_clue mc ON bo.clue_id = mc.id
|
||
|
|
WHERE q.status = '3'
|
||
|
|
AND q.deleted_flag = 1
|
||
|
|
AND bo.deleted_flag = 1
|
||
|
|
AND mc.deleted_flag = 1
|
||
|
|
GROUP BY mc.source
|
||
|
|
</select>
|
||
|
|
|
||
|
|
<!--
|
||
|
|
整体汇总统计商机转化数据(不分线索来源,返回单行):
|
||
|
|
- oppCount 转化商机数(关联到线索的商机总数)
|
||
|
|
- winOppCount 赢单商机数(stage_manifestation = '5')
|
||
|
|
- winOppAmount 赢单商机金额(stage_manifestation = '5' 的 predicted_price 合计)
|
||
|
|
- oppTransformAmount 商机转化金额(所有商机 predicted_price 合计,与是否赢单无关)
|
||
|
|
-->
|
||
|
|
<select id="selectOppSummary"
|
||
|
|
resultType="apelet.association.vo.OppTransformStatVo">
|
||
|
|
SELECT
|
||
|
|
COUNT(bo.id) AS oppCount,
|
||
|
|
COALESCE(SUM(CASE WHEN bo.stage_manifestation = '5' THEN 1 ELSE 0 END), 0) AS winOppCount,
|
||
|
|
COALESCE(SUM(CASE WHEN bo.stage_manifestation = '5' THEN bo.predicted_price ELSE 0 END), 0) AS winOppAmount,
|
||
|
|
COALESCE(SUM(bo.predicted_price), 0) AS oppTransformAmount
|
||
|
|
FROM business_opportunities bo
|
||
|
|
INNER JOIN member_clue mc ON bo.clue_id = mc.id
|
||
|
|
WHERE bo.deleted_flag = 1
|
||
|
|
AND mc.deleted_flag = 1
|
||
|
|
</select>
|
||
|
|
|
||
|
|
<!--
|
||
|
|
整体汇总统计"线索→商机→合同"成交数据(不分线索来源,返回单行):
|
||
|
|
- dealCount 已转商机成交数(报价单 status = '3' 的数量)
|
||
|
|
- dealAmount 已转商机成交金额(报价单 status = '3' 的 qty 合计)
|
||
|
|
成交口径同 selectDealStatBySource(合同表 contract 暂无数据,暂以报价单 status='3' 作为成交口径)。
|
||
|
|
-->
|
||
|
|
<select id="selectDealSummary"
|
||
|
|
resultType="apelet.association.vo.DealTransformStatVo">
|
||
|
|
SELECT
|
||
|
|
COUNT(DISTINCT q.id) AS dealCount,
|
||
|
|
COALESCE(SUM(q.qty), 0) AS dealAmount
|
||
|
|
FROM quotation q
|
||
|
|
INNER JOIN business_opportunities bo ON q.srcbillid = bo.id
|
||
|
|
INNER JOIN member_clue mc ON bo.clue_id = mc.id
|
||
|
|
WHERE q.status = '3'
|
||
|
|
AND q.deleted_flag = 1
|
||
|
|
AND bo.deleted_flag = 1
|
||
|
|
AND mc.deleted_flag = 1
|
||
|
|
</select>
|
||
|
|
|
||
|
|
</mapper>
|