feat: CRM/数据统计/员工客户分析 初稿

This commit is contained in:
dhb52
2024-03-01 00:10:23 +08:00
parent fbb624d826
commit 34f68ce4c6
6 changed files with 130 additions and 20 deletions

View File

@@ -6,8 +6,8 @@
<select id="selectCustomerCountGroupbyDate"
resultType="cn.iocoder.yudao.module.crm.controller.admin.statistics.vo.customer.CrmStatisticsCustomerCountVO">
SELECT
count(*) AS count,
DATE_FORMAT( create_time, #{sqlDateFormat,javaType=java.lang.String} ) AS category
DATE_FORMAT( create_time, #{sqlDateFormat,javaType=java.lang.String} ) AS category,
count(*) AS count
FROM
crm_customer
WHERE
@@ -18,15 +18,14 @@
</foreach>
AND create_time BETWEEN #{times[0],javaType=java.time.LocalDateTime} AND
#{times[1],javaType=java.time.LocalDateTime}
GROUP BY
DATE_FORMAT( create_time, #{sqlDateFormat,javaType=java.lang.String} )
GROUP BY category
</select>
<select id="selectDealCustomerCountGroupbyDate"
resultType="cn.iocoder.yudao.module.crm.controller.admin.statistics.vo.customer.CrmStatisticsCustomerCountVO">
SELECT
count( DISTINCT a.id ) AS count,
DATE_FORMAT( b.order_date, #{sqlDateFormat,javaType=java.lang.String} ) AS category
DATE_FORMAT( b.order_date, #{sqlDateFormat,javaType=java.lang.String} ) AS category,
count( DISTINCT a.id ) AS count
FROM
crm_customer AS a
LEFT JOIN crm_contract AS b ON b.customer_id = a.id
@@ -39,8 +38,7 @@
</foreach>
AND b.create_time BETWEEN #{times[0],javaType=java.time.LocalDateTime} AND
#{times[1],javaType=java.time.LocalDateTime}
GROUP BY
DATE_FORMAT( b.order_date, #{sqlDateFormat,javaType=java.lang.String} )
GROUP BY category
</select>
<select id="selectRecordCountGroupbyDate"
@@ -58,8 +56,7 @@
AND create_time BETWEEN #{times[0],javaType=java.time.LocalDateTime} AND
#{times[1],javaType=java.time.LocalDateTime}
AND biz_type = #{bizType,javaType=java.lang.Integer}
GROUP BY
DATE_FORMAT (create_time, #{sqlDateFormat,javaType=java.lang.String} )
GROUP BY category
</select>
<select id="selectDistinctRecordCountGroupbyDate"
@@ -77,7 +74,43 @@
AND create_time BETWEEN #{times[0],javaType=java.time.LocalDateTime} AND
#{times[1],javaType=java.time.LocalDateTime}
AND biz_type = #{bizType,javaType=java.lang.Integer}
GROUP BY DATE_FORMAT (create_time, #{sqlDateFormat,javaType=java.lang.String} )
GROUP BY category
</select>
<select id="selectRecordCountGroupbyType"
resultType="cn.iocoder.yudao.module.crm.controller.admin.statistics.vo.customer.CrmStatisticsCustomerCountVO">
SELECT
type AS category,
count(*) AS count
FROM crm_follow_up_record
WHERE
creator IN
<foreach collection="userIds" item="userId" open="(" close=")" separator=",">
#{userId}
</foreach>
AND create_time BETWEEN #{times[0],javaType=java.time.LocalDateTime} AND
#{times[1],javaType=java.time.LocalDateTime}
AND biz_type = #{bizType,javaType=java.lang.Integer}
GROUP BY category
</select>
<select id="selectCustomerCycleGroupbyDate"
resultType="cn.iocoder.yudao.module.crm.controller.admin.statistics.vo.customer.CrmStatisticsCustomerCountVO">
SELECT
DATE_FORMAT( b.order_date, #{sqlDateFormat,javaType=java.lang.String} ) AS category,
IFNULL( TRUNCATE ( AVG( TIMESTAMPDIFF( DAY, a.create_time, b.order_date )), 1 ), 0 ) AS cycle
FROM crm_customer AS a
LEFT JOIN crm_contract AS b ON b.customer_id = a.id
WHERE
a.deleted = 0 AND b.deleted = 0
AND b.audit_status = 20
AND a.owner_user_id IN
<foreach collection="userIds" item="userId" open="(" close=")" separator=",">
#{userId}
</foreach>
AND b.create_time BETWEEN #{times[0],javaType=java.time.LocalDateTime} AND
#{times[1],javaType=java.time.LocalDateTime}
GROUP BY category
</select>
</mapper>