From 6f778262b572c97025b6eae500f09c711001ff01 Mon Sep 17 00:00:00 2001
From: Helius <wangdoubleone@gmail.com>
Date: Sat, 19 Dec 2020 15:52:10 +0800
Subject: [PATCH] finish custom-consume statistics

---
 zq-erp/src/main/resources/templates/views/admin/hive/beautySalon/vip.html                |    5 -
 zq-erp/src/main/resources/mybatis/mapper/hive/AchieveNewDao.xml                          |   41 ++++++----
 zq-erp/src/main/resources/config/application.properties                                  |    6 
 zq-erp/src/main/resources/templates/views/admin/hive/statistics/custom-consume-list.html |  155 ++++++++++++++++++++++++++++++++++++++
 zq-erp/src/main/java/com/matrix/system/hive/statistics/VipStatisticsAction.java          |    8 ++
 5 files changed, 191 insertions(+), 24 deletions(-)

diff --git a/zq-erp/src/main/java/com/matrix/system/hive/statistics/VipStatisticsAction.java b/zq-erp/src/main/java/com/matrix/system/hive/statistics/VipStatisticsAction.java
index 26641eb..e3a384a 100644
--- a/zq-erp/src/main/java/com/matrix/system/hive/statistics/VipStatisticsAction.java
+++ b/zq-erp/src/main/java/com/matrix/system/hive/statistics/VipStatisticsAction.java
@@ -1,7 +1,11 @@
 package com.matrix.system.hive.statistics;
 
+import com.matrix.core.constance.MatrixConstance;
 import com.matrix.core.pojo.AjaxResult;
 import com.matrix.core.pojo.PaginationVO;
+import com.matrix.core.tools.WebUtil;
+import com.matrix.system.common.bean.SysUsers;
+import com.matrix.system.common.constance.AppConstance;
 import com.matrix.system.hive.bean.AchieveNew;
 import com.matrix.system.hive.service.AchieveNewService;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -28,6 +32,10 @@
     @RequestMapping(value = "/vipConsumeStatistics")
     @ResponseBody
     public AjaxResult vipConsumeStatistics(AchieveNew achieveNew, PaginationVO pageVo) {
+        SysUsers sysUsers = (SysUsers) WebUtil.getSession().getAttribute(MatrixConstance.LOGIN_KEY);
+        if(!AppConstance.ZONGDIAN.equals(sysUsers.getShopName())){
+            achieveNew.setShopId(sysUsers.getShopId());
+        }
         List<AchieveNew> list = achieveNewService.findVipConsumeStatisticsList(achieveNew, pageVo);
         int total = achieveNewService.findVipConsumeStatisticsTotal(achieveNew);
         return AjaxResult.buildSuccessInstance(list, total);
diff --git a/zq-erp/src/main/resources/config/application.properties b/zq-erp/src/main/resources/config/application.properties
index 5df391f..128e697 100644
--- a/zq-erp/src/main/resources/config/application.properties
+++ b/zq-erp/src/main/resources/config/application.properties
@@ -4,9 +4,9 @@
 
 #线上测试环境
 
-spring.datasource.username=chuhuan
-spring.datasource.password=chuhuan
-spring.datasource.url=jdbc:mysql://119.3.52.84:3306/hive_plus_test?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&allowMultiQueries=true&transformedBitIsBoolean=true&serverTimezone=GMT%2B8
+spring.datasource.username=ct_test
+spring.datasource.password=123456
+spring.datasource.url=jdbc:mysql://120.27.238.55:3306/hive_test?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&allowMultiQueries=true&transformedBitIsBoolean=true&serverTimezone=GMT%2B8
 
 
 
diff --git a/zq-erp/src/main/resources/mybatis/mapper/hive/AchieveNewDao.xml b/zq-erp/src/main/resources/mybatis/mapper/hive/AchieveNewDao.xml
index 7340d74..c8ab5b1 100644
--- a/zq-erp/src/main/resources/mybatis/mapper/hive/AchieveNewDao.xml
+++ b/zq-erp/src/main/resources/mybatis/mapper/hive/AchieveNewDao.xml
@@ -847,13 +847,15 @@
 	<select id="selectVipConsumeStatisticsList" resultMap="AchieveNewMap">
 		select
 			a.VIP_NAME,
-			d.cnt,
-			b.buyConsume,
-			b.freeConsume,
-			b.hisConsume
+			a.PHONE t9,
+			GROUP_CONCAT(DISTINCT e.su_name) meiliao,
+			d.cnt arrive_cnt,
+			sum(b.buyConsume) goods_cash,
+			sum(b.freeConsume) free_consume,
+			sum(b.hisConsume) his_consume
 		from sys_vip_info a
 		inner join (
-			select vip_id, sum(a.free_consume) freeConsume, sum(a.his_consume) hisConsume, sum(IFNULL(goods_cash, 0) + IFNULL(card_cash, 0)) buyConsume from achieve_new a group by vip_id
+			select vip_id,datatime, sum(a.free_consume) freeConsume, sum(a.his_consume) hisConsume, sum(IFNULL(goods_cash, 0) + IFNULL(card_cash, 0)) buyConsume from achieve_new a group by vip_id
 		) b on a.ID = b.vip_id
 		inner join (
 			select vip_id, count(1) cnt from (
@@ -862,20 +864,23 @@
 										 group by date_format(datatime, '%Y-%m-%d'), vip_id
 									 ) c group by vip_id
 			) d on a.ID=d.vip_id
+
+		left join sys_users e on find_in_set(e.su_id, a.BEATUY_ID)
 		where 1=1
 		<if test="record.vipName != null and record.vipName !=''">
-			and (a.vip_name like CONCAT(CONCAT('%', #{record.vipName}), '%') or a.vip_no=#{record.vipName})
+			and (a.vip_name like CONCAT(CONCAT('%', #{record.vipName}), '%') or a.vip_no=#{record.vipName} or a.phone = #{record.vipName})
 		</if>
 		<if test="record.shopId != null">
-			and a.shop_id=#{shopId}
+			and a.shop_id=#{record.shopId}
 		</if>
 		<if test="record.beginTime != null and record.endTime!=null">
-			and date_format(datatime, '%Y-%m-%d') between #{record.beginTime} and #{record.endTime}
+			and date_format(b.datatime, '%Y-%m-%d') between #{record.beginTime} and #{record.endTime}
 		</if>
 
-		<if test="record.meiliao != null and record.meiliao!=''">
-			and FIND_IN_SET(#{record.meiliao}, a.BEATUY_ID)
+		<if test="record.beaultId != null and record.beaultId!=''">
+			and FIND_IN_SET(#{record.beaultId}, a.BEATUY_ID)
 		</if>
+		group by a.PHONE
 		<if test="pageVo !=null"><!-- 判断pageVo对象是否为空 -->
 			<if test="pageVo.sort !=null  and pageVo.order !=null">
 				order by
@@ -888,11 +893,11 @@
 		</if>
 	</select>
 
-	<select id="selectVipConsumeStatisticsTotal" resultMap="AchieveNewMap">
+	<select id="selectVipConsumeStatisticsTotal" resultType="java.lang.Integer">
 		select count(1)
 		from sys_vip_info a
 		inner join (
-		select vip_id, sum(a.free_consume) freeConsume, sum(a.his_consume) hisConsume, sum(IFNULL(goods_cash, 0) + IFNULL(card_cash, 0)) buyConsume from achieve_new a group by vip_id
+		select vip_id,datatime, sum(a.free_consume) freeConsume, sum(a.his_consume) hisConsume, sum(IFNULL(goods_cash, 0) + IFNULL(card_cash, 0)) buyConsume from achieve_new a group by vip_id
 		) b on a.ID = b.vip_id
 		inner join (
 		select vip_id, count(1) cnt from (
@@ -901,19 +906,21 @@
 		group by date_format(datatime, '%Y-%m-%d'), vip_id
 		) c group by vip_id
 		) d on a.ID=d.vip_id
+
+		left join sys_users e on find_in_set(e.su_id, a.BEATUY_ID)
 		where 1=1
 		<if test="record.vipName != null and record.vipName !=''">
-			and (a.vip_name like CONCAT(CONCAT('%', #{record.vipName}), '%') or a.vip_no=#{record.vipName})
+			and (a.vip_name like CONCAT(CONCAT('%', #{record.vipName}), '%') or a.vip_no=#{record.vipName} or a.phone = #{record.vipName})
 		</if>
 		<if test="record.shopId != null">
-			and a.shop_id=#{shopId}
+			and a.shop_id=#{record.shopId}
 		</if>
 		<if test="record.beginTime != null and record.endTime!=null">
-			and date_format(datatime, '%Y-%m-%d') between #{record.beginTime} and #{record.endTime}
+			and date_format(b.datatime, '%Y-%m-%d') between #{record.beginTime} and #{record.endTime}
 		</if>
 
-		<if test="record.meiliao != null and record.meiliao!=''">
-			and FIND_IN_SET(#{record.meiliao}, a.BEATUY_ID)
+		<if test="record.beaultId != null and record.beaultId!=''">
+			and FIND_IN_SET(#{record.beaultId}, a.BEATUY_ID)
 		</if>
 	</select>
 </mapper>
\ No newline at end of file
diff --git a/zq-erp/src/main/resources/templates/views/admin/hive/beautySalon/vip.html b/zq-erp/src/main/resources/templates/views/admin/hive/beautySalon/vip.html
index 79a7972..001b3c0 100644
--- a/zq-erp/src/main/resources/templates/views/admin/hive/beautySalon/vip.html
+++ b/zq-erp/src/main/resources/templates/views/admin/hive/beautySalon/vip.html
@@ -115,7 +115,7 @@
                     <el-button type="primary" @click="searchVipInfo">查询</el-button>
                 </el-col>
             </el-col>
-            <el-col :span="6" style="float: right; margin-right: 20px;">
+            <el-col :span="8" style="float: right; margin-right: 20px;">
                 <el-button type="primary" plain @click="recharge">充值</el-button>
                 <el-button type="warning" plain @click="addOrder">开单</el-button>
                 <el-button type="success" plain @click="addServiceOrder">开服务单</el-button>
@@ -384,7 +384,6 @@
                     <el-tab-pane label="服务单" name="serviceOrder">
                         <el-row style="line-height: 40px;">
                             <el-col :span="11">
-                                <span>选择时间:</span>
                                 <el-date-picker v-model="serviceOrderTab.selectTime"
                                         type="datetimerange"
                                         range-separator="至" format="yyyy-MM-dd HH:mm"
@@ -476,7 +475,6 @@
                     <el-tab-pane label="订单" name="order">
                         <el-row style="line-height: 40px;">
                             <el-col :span="11">
-                                <span>选择时间:</span>
                                 <el-date-picker v-model="orderTab.selectTime"
                                                 type="datetimerange"
                                                 range-separator="至"
@@ -572,7 +570,6 @@
                     <el-tab-pane label="皮肤检测" name="skinCheck">
                         <el-row style="line-height: 40px;">
                             <el-col :span="11">
-                                <span>选择时间:</span>
                                 <el-date-picker v-model="skinTab.selectTime"
                                                 type="daterange"
                                                 range-separator="至"
diff --git a/zq-erp/src/main/resources/templates/views/admin/hive/statistics/custom-consume-list.html b/zq-erp/src/main/resources/templates/views/admin/hive/statistics/custom-consume-list.html
new file mode 100644
index 0000000..ab383d4
--- /dev/null
+++ b/zq-erp/src/main/resources/templates/views/admin/hive/statistics/custom-consume-list.html
@@ -0,0 +1,155 @@
+
+<!DOCTYPE HTML>
+<html xmlns:th="http://www.thymeleaf.org" xmlns:matrix="http://www.w3.org/1999/xhtml">
+<head>
+<meta charset="utf-8">
+<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
+<meta name="renderer" content="webkit|ie-comp|ie-stand">
+<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+<meta name="viewport"
+	content="width=device-width,initial-scale=1,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no" />
+<meta http-equiv="Cache-Control" content="no-siteapp" />
+<LINK rel="Bookmark" href="../images/favicon.ico">
+<!-- 本框架基本脚本和样式 -->
+<script type="text/javascript"
+        th:src="@{/js/plugin/jquery-2.1.4.min.js}"></script>
+<script type="text/javascript" th:src="@{/js/systools/MBase.js}"></script>
+ 
+</head>
+<body class="gray-bg">
+	 
+
+	<div class="ibox-content">
+		<!-- 搜索框部分start -->
+		<form class="form-inline" id="serchform">
+			<div class="form-group mr-20">
+				<label>日期范围</label>
+				<input name="beginTime" type="text" class="form-control datetimepicker" id="beginTime">-
+				<input name="endTime"  type="text" class="form-control datetimepicker" id="endTime">
+			</div>
+
+			<div class="form-group mr-20">
+				<label>会员</label>
+				<input autocomplete="off" placeholder="姓名/编号/电话"  name="vipName" type="text" class="form-control"  >
+			</div>
+
+			<div class="form-group mr-20">
+				<label>美疗师</label>
+				<select class="form-control autoFull select2"
+						th:data-url="@{/admin/getShopStaffByRoleName?roleName=美疗师}"
+						data-value="suId"
+						data-filed="suName"
+						name="beaultId"
+						id="beaultId">
+					<option value="">--请选择美容师--</option>
+				</select>
+			</div>
+
+			<div class="form-group mr-20">
+				<label>门店</label>
+				<select class="form-control autoFull" data-filed="shopName" name="shopId" id="shopId"
+						th:data-url="@{/admin/shopInfo/findAllWithPermi}">
+					<option value=''>--请选择部所属门店--</option>
+				</select>
+			</div>
+
+			<div class="row mb-10">
+				<div class="col-sm-8">
+					<button  onclick="myGrid.serchData()" type="button" class="btn btn-info btn-sm"><i class="fa fa-search" ></i> 搜索</button>
+					<button  onclick="myGrid.resetForm()" type="button"   class="btn btn-default btn-sm"><i class="fa fa-refresh " ></i> 重置</button>
+<!--					<button  matrix:btn="ygyjbb-exportExcel"  onclick="exportExcel()" type="button" class="btn btn-default btn-sm"><i class="fa fa-download" ></i> 导出</button>-->
+				</div>
+			</div>
+		</form>
+
+
+		<table id="mgrid">
+			<thead>
+				<tr>
+					<th data-formatter="MGrid.indexfn" data-align="center"
+						data-width="30px">序号</th>
+					<th data-field="vipName" data-formatter="buildVipNameJump">姓名</th>
+					<th data-field="meiliao">美疗师</th>
+					<th data-field="arriveCnt">到店次数</th>
+					<th data-field="goodsCash">消费金额</th>
+					<th data-field="hisConsume">消耗本金</th>
+					<th data-field="freeConsume">消耗赠送</th>
+					
+				</tr>
+			</thead>
+		</table>
+	</div>
+
+	<script type="text/javascript" th:src="@{/js/systools/MJsBase.js}"></script>
+	<script type="text/javascript" th:src="@{/js/function/public.js}"></script>
+	<script type="text/javascript">
+		var myGrid;
+		var initParam = {
+				format : "yyyy-mm-dd hh:ii", //默认显示年与日,如果想显示十分秒:"yyyy-mm-dd hh:ii:ss"
+				minView: "hour", 	//"month",只显示年月日的选择,不会再跳转去选择时分秒;如果想要选择时分秒的:"hour"
+			}
+		 MTools.ininDatetimepicker(initParam);
+		//限制结束时间不小于开始时间
+		 MTools.limitStartEndTime({});
+
+		$(function() {
+			MTools.autoFullSelect();
+			myGrid = MGrid.initGrid({
+				url : basePath+"/admin/vipStatistics/vipConsumeStatistics",
+				showExport : true,
+				showFooter : false,
+				height:'auto',
+				width:'auto',
+				exportDataType : "basic", //basic', 'all', 'selected'.
+				exportTypes : [ 'excel', 'xlsx' ], //导出类型
+				exportOptions : {
+					ignoreColumn : [ 0 ],
+					fileName : "客户消费统计" + MTools.getTime(), //文件名称设置
+					worksheetName : 'Sheet1', //表格工作区名称  
+					tableName : '客户消费统计',
+					excelstyles : [ 'background-color', 'color', 'font-size',
+							'font-weight' ],
+				}
+			});
+
+			$('[data-toggle="tooltip"]').tooltip()
+
+		});
+
+		function footCountTitle(data) {
+			return "<b>合计</b>";
+		};
+		function countColumn(data) {
+			console.log(data)
+			 field = this.field;
+			    var resultsumQuantity = parseFloat((data.reduce(function(sum, row) { 
+			    	console.log(sum,row[field]);
+			        return sum + (+row[field]);
+			    }, 0)).toFixed(2));//保留有效数字
+			    return "<b>"+resultsumQuantity+"</b>";
+		};
+
+		function buildVipNameJump(value, row, index) {
+			return '<a  onClick="vipDetail(\'' + row.t9 +'\')"   class="text-primary " >'+value+'</a>';
+		}
+
+		function vipDetail(value) {
+			layer.full(layer.open({
+				type : 2,
+				title : "订单详情",
+				maxmin : true,
+				area : MUI.SIZE_M,
+				content : [basePath+'/admin/redirect/hive/beautySalon/vip?vipPhone=' + value ]
+			}));
+		}
+
+		function exportExcel(){
+
+			var param=MForm.toUrlParam("#serchform");
+
+			window.location.href=basePath+"/admin/achieve/exportDailyInfoNew?"+param;
+		}
+		
+	</script>
+</body>
+</html>

--
Gitblit v1.9.1