MonthlyCustomersDao.xml 8.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  3. <mapper namespace="com.kmall.admin.dao.statistics.MonthlyCustomersDao">
  4. <select id="queryMonthlyCustomers" resultType="com.kmall.admin.entity.MonthlySalesGrowthEntity" >
  5. SELECT
  6. o.merch_sn AS merchSn,
  7. m.merch_name AS merchName,
  8. sum( og.actual_payment_amount ) + sum(og.discounted_price)AS totalSales,
  9. sum( og.number) as totalNumber,
  10. count(DISTINCT o.pay_mobile) as totalCustomers,
  11. <if test='dateFlag == "month"'>
  12. DATE_FORMAT(o.pay_time,'%Y-%m') as yearAndMonth
  13. </if>
  14. <if test='dateFlag == "day"'>
  15. DATE_FORMAT(o.pay_time,'%Y-%m-%d') as yearAndMonth
  16. </if>
  17. FROM
  18. mall_order o
  19. LEFT JOIN mall_merch m ON o.merch_sn = m.merch_sn
  20. LEFT JOIN mall_order_goods og ON o.id = og.order_id
  21. <where>
  22. o.is_onffline_order = '1'
  23. AND o.order_biz_type = '10'
  24. AND o.pay_status = '2'
  25. and o.order_status = '300'
  26. <if test='dateFlag == "month"'>
  27. AND DATE_FORMAT(o.pay_time,'%Y-%m') &gt;= #{startMonth}
  28. AND DATE_FORMAT(o.pay_time,'%Y-%m') &lt;= #{endMonth}
  29. </if>
  30. <if test='dateFlag == "day"'>
  31. AND DATE_FORMAT(o.pay_time,'%Y-%m-%d') &gt;= #{startMonth}
  32. AND DATE_FORMAT(o.pay_time,'%Y-%m-%d') &lt;= #{endMonth}
  33. </if>
  34. <if test="merchSn != null">
  35. and m.merch_sn = #{merchSn}
  36. </if>
  37. </where>
  38. <if test='dateFlag == "month"'>
  39. group by DATE_FORMAT(o.pay_time,'%Y-%m')
  40. </if>
  41. <if test='dateFlag == "day"'>
  42. group by DATE_FORMAT(o.pay_time,'%Y-%m-%d')
  43. </if>
  44. </select>
  45. <select id="queryWeeklyCustomers" resultType="com.kmall.admin.entity.MonthlySalesGrowthEntity">
  46. SELECT
  47. o.merch_sn AS merchSn,
  48. m.merch_name AS merchName,
  49. sum( og.actual_payment_amount/ (1+og.goods_rate) ) + sum(og.discounted_price)AS totalSales,
  50. sum( og.number) as totalNumber,
  51. count(DISTINCT o.id) as totalCustomers,
  52. DATE_FORMAT(o.pay_time,'%Y-%u') as yearAndWeek
  53. FROM
  54. mall_order o
  55. LEFT JOIN mall_merch m ON o.merch_sn = m.merch_sn
  56. LEFT JOIN mall_order_goods og ON o.id = og.order_id
  57. <where>
  58. o.is_onffline_order = '1'
  59. AND o.order_biz_type = '10'
  60. AND o.pay_status = '2'
  61. AND DATE_FORMAT(o.pay_time,'%Y-%u') &gt;= #{startWeek}
  62. AND DATE_FORMAT(o.pay_time,'%Y-%u') &lt;= #{endWeek}
  63. <if test="merchSn != null">
  64. and m.merch_sn = #{merchSn}
  65. </if>
  66. </where>
  67. group by DATE_FORMAT(o.pay_time,'%Y-%u')
  68. </select>
  69. <select id="top10ForProduct" resultType="com.kmall.admin.entity.MonthlySalesGrowthEntity" >
  70. SELECT
  71. m.merch_name AS merchName,
  72. og.goods_name as goodsName,
  73. og.goods_specification_name_value as goodsSpecificationNameValue,
  74. sum( og.number ) AS sales
  75. FROM
  76. mall_order o
  77. LEFT JOIN mall_merch m ON o.merch_sn = m.merch_sn
  78. LEFT JOIN mall_order_goods og ON o.id = og.order_id
  79. <where>
  80. o.is_onffline_order = '1'
  81. AND o.order_biz_type = '10'
  82. AND o.pay_status = '2'
  83. <if test="month != null and month.trim() != ''">
  84. and DATE_FORMAT(o.pay_time,'%Y-%m') = #{month}
  85. </if>
  86. <if test="week != null and week.trim() != ''">
  87. and weekofyear(o.pay_time) = #{week}
  88. </if>
  89. <if test="merchSn != null">
  90. and m.merch_sn = #{merchSn}
  91. </if>
  92. </where>
  93. GROUP BY
  94. og.sku
  95. ORDER BY
  96. sales desc
  97. LIMIT 50
  98. </select>
  99. <select id="top10ByBrand" resultType="com.kmall.admin.entity.MonthlySalesGrowthEntity" >
  100. SELECT
  101. m.merch_name AS merchName,
  102. g.brand as brand,
  103. og.goods_specification_name_value as goodsSpecificationNameValue,
  104. sum( og.number ) AS sales
  105. FROM
  106. mall_order o
  107. LEFT JOIN mall_merch m ON o.merch_sn = m.merch_sn
  108. LEFT JOIN mall_order_goods og ON o.id = og.order_id
  109. LEFT JOIN mall_goods g ON g.id = og.goods_id
  110. <where>
  111. o.is_onffline_order = '1'
  112. AND o.order_biz_type = '10'
  113. AND o.pay_status = '2'
  114. <if test="startDate != null and startDate.trim() != ''">
  115. and DATE_FORMAT(o.pay_time,'%Y-%m-%d') &gt;= #{startDate}
  116. </if>
  117. <if test="endDate != null and endDate.trim() != ''">
  118. and DATE_FORMAT(o.pay_time,'%Y-%m-%d') &lt;= #{endDate}
  119. </if>
  120. <if test="merchSn != null">
  121. and m.merch_sn = #{merchSn}
  122. </if>
  123. </where>
  124. GROUP BY
  125. g.brand
  126. ORDER BY
  127. sales desc
  128. LIMIT 10
  129. </select>
  130. <select id="top10BySupplier" resultType="com.kmall.admin.entity.MonthlySalesGrowthEntity" >
  131. SELECT
  132. m.merch_name AS merchName,
  133. s.child_supplier_name as supplier,
  134. og.goods_specification_name_value as goodsSpecificationNameValue,
  135. sum( og.number ) AS sales
  136. FROM
  137. mall_order o
  138. LEFT JOIN mall_merch m ON o.merch_sn = m.merch_sn
  139. LEFT JOIN mall_order_goods og ON o.id = og.order_id
  140. LEFT JOIN mall_goods g ON g.id = og.goods_id
  141. LEFT JOIN mall_supplier s ON g.supplier_id = s.id
  142. <where>
  143. o.is_onffline_order = '1'
  144. AND o.order_biz_type = '10'
  145. AND o.pay_status = '2'
  146. <if test="startDate != null and startDate.trim() != ''">
  147. and DATE_FORMAT(o.pay_time,'%Y-%m-%d') &gt;= #{startDate}
  148. </if>
  149. <if test="endDate != null and endDate.trim() != ''">
  150. and DATE_FORMAT(o.pay_time,'%Y-%m-%d') &lt;= #{endDate}
  151. </if>
  152. <if test="merchSn != null">
  153. and m.merch_sn = #{merchSn}
  154. </if>
  155. </where>
  156. GROUP BY
  157. s.id
  158. ORDER BY
  159. sales desc
  160. LIMIT 10
  161. </select>
  162. <select id="salesByCategory" resultType="com.kmall.admin.entity.MonthlySalesGrowthEntity">
  163. SELECT
  164. sum( og.number ) AS sales,
  165. cg.NAME AS cgname
  166. FROM
  167. mall_order o
  168. LEFT JOIN mall_merch m ON o.merch_sn = m.merch_sn
  169. LEFT JOIN mall_order_goods og ON o.id = og.order_id
  170. LEFT JOIN mall_product_store_rela a ON a.goods_id = og.goods_id
  171. LEFT JOIN mall_category cg ON a.category_id = cg.id
  172. <where>
  173. o.is_onffline_order = '1'
  174. AND o.order_biz_type = '10'
  175. AND o.pay_status = '2'
  176. <if test="startDate != null and startDate.trim() != ''">
  177. and DATE_FORMAT(o.pay_time,'%Y-%m') &gt;= #{startDate}
  178. </if>
  179. <if test="endDate != null and endDate.trim() != ''">
  180. and DATE_FORMAT(o.pay_time,'%Y-%m') &lt;= #{endDate}
  181. </if>
  182. <if test="merchSn != null">
  183. and m.merch_sn = #{merchSn}
  184. </if>
  185. </where>
  186. GROUP BY
  187. cg.id
  188. limit 20
  189. </select>
  190. <select id="monthlyCategory" resultType="com.kmall.admin.entity.MonthlySalesGrowthEntity" >
  191. SELECT
  192. sum( og.number ) AS sales,
  193. cg.NAME AS cgname,
  194. sum( og.actual_payment_amount/ (1+og.goods_rate) ) + sum(og.discounted_price)AS totalSales,
  195. DATE_FORMAT(o.pay_time,'%Y-%m') as yearAndMonth
  196. FROM
  197. mall_order o
  198. LEFT JOIN mall_order_goods og ON o.id = og.order_id
  199. LEFT JOIN mall_product_store_rela a ON a.goods_id = og.goods_id
  200. LEFT JOIN mall_category cg ON a.category_id = cg.id
  201. LEFT JOIN mall_merch m ON o.merch_sn = m.merch_sn
  202. <where>
  203. o.is_onffline_order = '1'
  204. AND o.order_biz_type = '10'
  205. AND o.pay_status = '2'
  206. AND DATE_FORMAT(o.pay_time,'%Y-%m') &gt;= #{startMonth}
  207. AND DATE_FORMAT(o.pay_time,'%Y-%m') &lt;= #{endMonth}
  208. <if test="merchSn != null">
  209. and m.merch_sn = #{merchSn}
  210. </if>
  211. </where>
  212. GROUP BY
  213. cg.parent_id,DATE_FORMAT(o.pay_time,'%Y-%m')
  214. </select>
  215. <select id="queryAvgSales" resultType="com.kmall.admin.entity.MonthlySalesGrowthEntity">
  216. select
  217. sku ,goodsName,total as totalNumber , saletime as salesMonth , avgSalesNumber , goodsNumber, stockNumber ,number,
  218. (goodsNumber + number) as totalCount,
  219. if(avgSalesNumber * #{monthNumber} &lt; ((avgSalesNumber + goodsNumber + number) - avgSalesNumber*#{size}) ,
  220. avgSalesNumber * #{monthNumber},
  221. (avgSalesNumber + goodsNumber + number) - (avgSalesNumber*#{size}) ) as predeterminedNumber
  222. from (
  223. SELECT
  224. sku,sum( number ) total ,DATE_FORMAT(og.create_time,'%Y-%m') saletime,
  225. sum( og.number ) /1 AS avgSalesNumber ,
  226. IFNULL((
  227. select g.goods_number
  228. from mall_goods g
  229. where g.sku = og.sku
  230. ),0) as goodsNumber,
  231. IFNULL((
  232. select sum(r.stock_num)
  233. from mall_product_store_rela r
  234. where r.sku = og.sku
  235. ),0) stockNumber,
  236. IFNULL((
  237. select sum(d.num)
  238. from mall_goods_transport_info_detail d
  239. where d.sku = og.sku
  240. ),0) as number,
  241. og.goods_name as goodsName
  242. FROM
  243. mall_order o
  244. LEFT JOIN mall_order_goods og ON o.id = og.order_id
  245. LEFT JOIN mall_merch m ON o.merch_sn = m.merch_sn
  246. <where>
  247. o.is_onffline_order = '1'
  248. AND o.order_biz_type = '10'
  249. AND o.pay_status = '2'
  250. AND DATE_FORMAT(og.create_time,'%Y-%m') &gt;= #{startMonth}
  251. and DATE_FORMAT(og.create_time,'%Y-%m') &lt;= #{endMonth}
  252. <if test="merchSn != null">
  253. and m.merch_sn = #{merchSn}
  254. </if>
  255. </where>
  256. group by sku,DATE_FORMAT(og.create_time,'%Y-%m')
  257. ) t
  258. </select>
  259. </mapper>