From 5cd7e4d630e265faac43e7544880430dfce4a9ee Mon Sep 17 00:00:00 2001
From: Helius <wangdoubleone@gmail.com>
Date: Thu, 31 Dec 2020 15:57:36 +0800
Subject: [PATCH] finish baobiao

---
 zq-erp/src/main/java/com/matrix/system/hiveErp/dao/TjVipSumDao.java                          |   12 ++
 zq-erp/src/main/java/com/matrix/system/app/action/ApiStatisticsAction.java                   |   34 ++++++
 zq-erp/src/main/resources/mybatis/mapper/hive/TjVipSumDao.xml                                |  178 +++++++++++++++++++++++++++++++++++
 zq-erp/src/main/java/com/matrix/system/hive/service/imp/DataAnalysisCustomerServiceImpl.java |   56 +++++++++++
 4 files changed, 279 insertions(+), 1 deletions(-)

diff --git a/zq-erp/src/main/java/com/matrix/system/app/action/ApiStatisticsAction.java b/zq-erp/src/main/java/com/matrix/system/app/action/ApiStatisticsAction.java
index c86edcb..3363c1e 100644
--- a/zq-erp/src/main/java/com/matrix/system/app/action/ApiStatisticsAction.java
+++ b/zq-erp/src/main/java/com/matrix/system/app/action/ApiStatisticsAction.java
@@ -184,7 +184,39 @@
     @ApiOperation(value = "员工专项", notes = "员工专项")
     @PostMapping(value = "/findVipBusinessData")
     public AjaxResult findVipBusinessData(@RequestBody @Validated VipStatisticsParamDto vipStatisticsParamDto) {
-        return null;
+        AjaxResult ajaxResult = dataAnalysisCustomerService.getStaffAnalysisResult(vipStatisticsParamDto, new Caculate<BigDecimal>() {
+            @Override
+            public Map<String, BigDecimal> exec(List<StatisticsTimeDaoParam> timeSpaceParam, Long shopId, Long staffId) {
+                switch (vipStatisticsParamDto.getType()) {
+                    case "1" :
+                        return tjVipSumDao.selectStaffOrderAchieve(timeSpaceParam, staffId);
+                    case "2" :
+                        return tjVipSumDao.selectStaffCashAchieve(timeSpaceParam, staffId);
+                    case "3" :
+                        return tjVipSumDao.selectStaffCardAchieve(timeSpaceParam, staffId);
+                    case "4" :
+                        return tjVipSumDao.selectStaffGoodsAchieve(timeSpaceParam, staffId);
+                    case "5" :
+                        return tjVipSumDao.selectStaffCardUseAchieve(timeSpaceParam, staffId);
+                    case "6" :
+                        return tjVipSumDao.selectStaffHisConsumeAchieve(timeSpaceParam, staffId);
+                    case "7" :
+                        return tjVipSumDao.selectStaffFreeConsumeAchieve(timeSpaceParam, staffId);
+                    case "8" :
+                        return tjVipSumDao.selectStaffCommissionAchieve(timeSpaceParam, staffId);
+                    case "9" :
+                        return tjVipSumDao.selectStaffPeopleNum(timeSpaceParam, staffId);
+                    case "10" :
+                        return tjVipSumDao.selectStaffProjNum(timeSpaceParam, staffId);
+                    case "11" :
+                        return tjVipSumDao.selectStaffProjTime(timeSpaceParam, staffId);
+                    default:
+                        return tjVipSumDao.selectStaffOrderAchieve(timeSpaceParam, staffId);
+                }
+            }
+        });
+
+        return setDataList(ajaxResult);
     }
 
 }
diff --git a/zq-erp/src/main/java/com/matrix/system/hive/service/imp/DataAnalysisCustomerServiceImpl.java b/zq-erp/src/main/java/com/matrix/system/hive/service/imp/DataAnalysisCustomerServiceImpl.java
index f9dde6f..1b11435 100644
--- a/zq-erp/src/main/java/com/matrix/system/hive/service/imp/DataAnalysisCustomerServiceImpl.java
+++ b/zq-erp/src/main/java/com/matrix/system/hive/service/imp/DataAnalysisCustomerServiceImpl.java
@@ -3,9 +3,11 @@
 import com.matrix.core.constance.MatrixConstance;
 import com.matrix.core.pojo.AjaxResult;
 import com.matrix.core.tools.WebUtil;
+import com.matrix.system.app.dto.VipStatisticsParamDto;
 import com.matrix.system.common.bean.SysCompany;
 import com.matrix.system.common.bean.SysUsers;
 import com.matrix.system.common.dao.SysCompanyDao;
+import com.matrix.system.common.dao.SysUsersDao;
 import com.matrix.system.common.tools.DataAuthUtil;
 import com.matrix.system.hive.bean.SysShopInfo;
 import com.matrix.system.hive.dao.SysShopInfoDao;
@@ -27,6 +29,9 @@
 
     @Autowired
     private SysCompanyDao sysCompanyDao;
+
+    @Autowired
+    private SysUsersDao sysUsersDao;
 
     /**
      * 按店铺查询数据通用格式执行方法,支持时、日、月、年维度
@@ -133,4 +138,55 @@
         result.setStatus(AjaxResult.STATUS_SUCCESS);
         return result;
     }
+
+    public AjaxResult getStaffAnalysisResult(VipStatisticsParamDto statisticsParam, Caculate caculate) {
+        AjaxResult result = new AjaxResult();
+
+        //根据计算横坐标
+        List<Date> xAxis = StatisticsTimeUtil.getTimeSpace(statisticsParam.getBeginTime(), statisticsParam.getEndTime(), statisticsParam.getStatisticsUnit());
+
+        //获取所有门店
+        SysUsers user = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY);
+
+        Long staffId = null;
+        if (statisticsParam.getStaffId() == null) {
+            staffId = user.getSuId();
+        } else {
+            staffId = statisticsParam.getStaffId();
+        }
+        SysUsers sysUsers = sysUsersDao.selectById(staffId);
+
+        //定义数据项内容
+        List<SeriesVo> series = new ArrayList<>();
+
+        //定义数据主体
+        String[] legendData = new String[1];
+
+        int i = 0;
+
+        //按门店统计数据
+        List<StatisticsTimeDaoParam> timeSpaceParam = StatisticsTimeUtil.buidParam(xAxis);
+
+        legendData[0] = sysUsers.getSuName();
+        //数据项内容
+        SeriesVo storeInfoSeries = new SeriesVo();
+        storeInfoSeries.setName(sysUsers.getSuName());
+        //调用计算器获取数据库统计的结果
+        Map<String, Integer> yAxisMap = caculate.exec(timeSpaceParam, null, sysUsers.getSuId());
+        //把统计结果转成数组格式
+        storeInfoSeries.setData(StatisticsTimeUtil.getSeries(yAxisMap));
+        series.add(storeInfoSeries);
+
+        //构造返回对象
+        Map<Object, Object> data = new HashMap<>();
+        data.put("legendData", legendData);
+        data.put("series", series);
+        StatisticsParamVo statisticsParam1 = new StatisticsParamVo();
+        statisticsParam1.setStatisticsUnit(statisticsParam.getStatisticsUnit());
+        String[] xData = StatisticsTimeUtil.getFormartDateList(xAxis, statisticsParam1);
+        data.put("xAxis", Arrays.copyOf(xData, xData.length - 1));
+        result.setMapInfo(data);
+        result.setStatus(AjaxResult.STATUS_SUCCESS);
+        return result;
+    }
 }
diff --git a/zq-erp/src/main/java/com/matrix/system/hiveErp/dao/TjVipSumDao.java b/zq-erp/src/main/java/com/matrix/system/hiveErp/dao/TjVipSumDao.java
index fb61fb0..21c325f 100644
--- a/zq-erp/src/main/java/com/matrix/system/hiveErp/dao/TjVipSumDao.java
+++ b/zq-erp/src/main/java/com/matrix/system/hiveErp/dao/TjVipSumDao.java
@@ -36,4 +36,16 @@
 	Map<String, BigDecimal> selectCashRefund(@Param("list") List<StatisticsTimeDaoParam> timeSpaceParam, @Param("shopId") Long shopId, @Param("companyId") Long companyId);
 
 	List<VipAchieveDataShowVo> selectVipAchieveInPage(@Param("record") AchieveNew achieveNew, @Param("pageVo") PaginationVO pageVo);
+
+	Map<String, BigDecimal> selectStaffOrderAchieve(@Param("list") List<StatisticsTimeDaoParam> timeSpaceParam, @Param("staffId") Long staffId);
+	Map<String, BigDecimal> selectStaffCashAchieve(@Param("list") List<StatisticsTimeDaoParam> timeSpaceParam, @Param("staffId") Long staffId);
+	Map<String, BigDecimal> selectStaffCardAchieve(@Param("list") List<StatisticsTimeDaoParam> timeSpaceParam, @Param("staffId") Long staffId);
+	Map<String, BigDecimal> selectStaffGoodsAchieve(@Param("list") List<StatisticsTimeDaoParam> timeSpaceParam, @Param("staffId") Long staffId);
+	Map<String, BigDecimal> selectStaffCardUseAchieve(@Param("list") List<StatisticsTimeDaoParam> timeSpaceParam, @Param("staffId") Long staffId);
+	Map<String, BigDecimal> selectStaffHisConsumeAchieve(@Param("list") List<StatisticsTimeDaoParam> timeSpaceParam, @Param("staffId") Long staffId);
+	Map<String, BigDecimal> selectStaffFreeConsumeAchieve(@Param("list") List<StatisticsTimeDaoParam> timeSpaceParam, @Param("staffId") Long staffId);
+	Map<String, BigDecimal> selectStaffCommissionAchieve(@Param("list") List<StatisticsTimeDaoParam> timeSpaceParam, @Param("staffId") Long staffId);
+	Map<String, BigDecimal> selectStaffPeopleNum(@Param("list") List<StatisticsTimeDaoParam> timeSpaceParam, @Param("staffId") Long staffId);
+	Map<String, BigDecimal> selectStaffProjNum(@Param("list") List<StatisticsTimeDaoParam> timeSpaceParam, @Param("staffId") Long staffId);
+	Map<String, BigDecimal> selectStaffProjTime(@Param("list") List<StatisticsTimeDaoParam> timeSpaceParam, @Param("staffId") Long staffId);
 }
\ No newline at end of file
diff --git a/zq-erp/src/main/resources/mybatis/mapper/hive/TjVipSumDao.xml b/zq-erp/src/main/resources/mybatis/mapper/hive/TjVipSumDao.xml
index d68d376..43e968b 100644
--- a/zq-erp/src/main/resources/mybatis/mapper/hive/TjVipSumDao.xml
+++ b/zq-erp/src/main/resources/mybatis/mapper/hive/TjVipSumDao.xml
@@ -283,5 +283,183 @@
 		</if>
 	</select>
 
+	<select id="selectStaffOrderAchieve" resultType="java.util.TreeMap">
+		select
+		<foreach collection="list" index="index" item="item"   separator=","  >
+			(
+			select
+				IFNULL(SUM((IFNULL(a.card_cash,0) +IFNULL(a.proj_cash,0) + IFNULL(a.goods_cash,0))),0)
+			from  achieve_new a
+			where   <![CDATA[datatime > #{item.beginTime}   and  datatime < #{item.endTime} ]]>
+			<if test="staffId != null and staffId != 0">
+				and sale_id=#{staffId}
+			</if>
+			) as t${index}
+
+		</foreach>
+		from area where id=1
+	</select>
+
+	<select id="selectStaffCashAchieve" resultType="java.util.TreeMap">
+		select
+		<foreach collection="list" index="index" item="item"   separator=","  >
+			(
+			select
+			IFNULL(SUM((IFNULL(a.proj_cash,0))),0)
+			from  achieve_new a
+			where   <![CDATA[datatime > #{item.beginTime}   and  datatime < #{item.endTime} ]]>
+			<if test="staffId != null and staffId != 0">
+				and sale_id=#{staffId}
+			</if>
+			) as t${index}
+
+		</foreach>
+		from area where id=1
+	</select>
+
+	<select id="selectStaffCardAchieve" resultType="java.util.TreeMap">
+		select
+		<foreach collection="list" index="index" item="item"   separator=","  >
+			(
+			select
+			IFNULL(SUM((IFNULL(a.card_cash,0))),0)
+			from  achieve_new a
+			where   <![CDATA[datatime > #{item.beginTime}   and  datatime < #{item.endTime} ]]>
+			<if test="staffId != null and staffId != 0">
+				and sale_id=#{staffId}
+			</if>
+			) as t${index}
+
+		</foreach>
+		from area where id=1
+	</select>
+
+	<select id="selectStaffGoodsAchieve" resultType="java.util.TreeMap">
+		select
+		<foreach collection="list" index="index" item="item"   separator=","  >
+			(
+			select
+			IFNULL(SUM((IFNULL(a.goods_cash,0))),0)
+			from  achieve_new a
+			where   <![CDATA[datatime > #{item.beginTime}   and  datatime < #{item.endTime} ]]>
+			<if test="staffId != null and staffId != 0">
+				and sale_id=#{staffId}
+			</if>
+			) as t${index}
+		</foreach>
+		from area where id=1
+	</select>
+
+	<select id="selectStaffCardUseAchieve" resultType="java.util.TreeMap">
+		select
+		<foreach collection="list" index="index" item="item"   separator=","  >
+			(
+			select
+			IFNULL(SUM((IFNULL(a.consume,0))),0)
+			from  achieve_new a
+			where   <![CDATA[datatime > #{item.beginTime}   and  datatime < #{item.endTime} ]]>
+			<if test="staffId != null and staffId != 0">
+				and sale_id=#{staffId}
+			</if>
+			) as t${index}
+		</foreach>
+		from area where id=1
+	</select>
+
+	<select id="selectStaffHisConsumeAchieve" resultType="java.util.TreeMap">
+		select
+		<foreach collection="list" index="index" item="item"   separator=","  >
+			(
+			select
+			IFNULL(SUM((IFNULL(a.his_consume,0))),0)
+			from  achieve_new a
+			where   <![CDATA[datatime > #{item.beginTime}   and  datatime < #{item.endTime} ]]>
+			<if test="staffId != null and staffId != 0">
+				and beault_id=#{staffId}
+			</if>
+			) as t${index}
+		</foreach>
+		from area where id=1
+	</select>
+
+	<select id="selectStaffFreeConsumeAchieve" resultType="java.util.TreeMap">
+		select
+		<foreach collection="list" index="index" item="item"   separator=","  >
+			(
+			select
+			IFNULL(SUM((IFNULL(a.free_consume,0))),0)
+			from  achieve_new a
+			where   <![CDATA[datatime > #{item.beginTime}   and  datatime < #{item.endTime} ]]>
+			<if test="staffId != null and staffId != 0">
+				and beault_id=#{staffId}
+			</if>
+			) as t${index}
+		</foreach>
+		from area where id=1
+	</select>
+
+	<select id="selectStaffCommissionAchieve" resultType="java.util.TreeMap">
+		select
+		<foreach collection="list" index="index" item="item"   separator=","  >
+			(
+			select
+			IFNULL(SUM((IFNULL(a.proj_percentage,0))),0)
+			from  achieve_new a
+			where   <![CDATA[datatime > #{item.beginTime}   and  datatime < #{item.endTime} ]]>
+			<if test="staffId != null and staffId != 0">
+				and beault_id=#{staffId}
+			</if>
+			) as t${index}
+		</foreach>
+		from area where id=1
+	</select>
+
+	<select id="selectStaffPeopleNum" resultType="java.util.TreeMap">
+		select
+		<foreach collection="list" index="index" item="item"   separator=","  >
+			(
+			select
+			IFNULL(SUM((IFNULL(a.number_of_people,0))),0)
+			from  achieve_new a
+			where   <![CDATA[datatime > #{item.beginTime}   and  datatime < #{item.endTime} ]]>
+			<if test="staffId != null and staffId != 0">
+				and beault_id=#{staffId}
+			</if>
+			) as t${index}
+		</foreach>
+		from area where id=1
+	</select>
+
+	<select id="selectStaffProjNum" resultType="java.util.TreeMap">
+		select
+		<foreach collection="list" index="index" item="item"   separator=","  >
+			(
+			select
+			IFNULL(SUM((IFNULL(a.proj_num,0))),0)
+			from  achieve_new a
+			where   <![CDATA[datatime > #{item.beginTime}   and  datatime < #{item.endTime} ]]>
+			<if test="staffId != null and staffId != 0">
+				and beault_id=#{staffId}
+			</if>
+			) as t${index}
+		</foreach>
+		from area where id=1
+	</select>
+
+	<select id="selectStaffProjTime" resultType="java.util.TreeMap">
+		select
+		<foreach collection="list" index="index" item="item"   separator=","  >
+			(
+			select
+			IFNULL(SUM((IFNULL(a.proj_time,0))),0)
+			from  achieve_new a
+			where   <![CDATA[datatime > #{item.beginTime}   and  datatime < #{item.endTime} ]]>
+			<if test="staffId != null and staffId != 0">
+				and beault_id=#{staffId}
+			</if>
+			) as t${index}
+		</foreach>
+		from area where id=1
+	</select>
 </mapper>
 	

--
Gitblit v1.9.1