From 4351e71d782741143a98f86f6648acd16689165f Mon Sep 17 00:00:00 2001
From: Helius <wangdoubleone@gmail.com>
Date: Fri, 27 May 2022 19:48:02 +0800
Subject: [PATCH] Merge branch 'developer' into hive2.0

---
 zq-erp/src/main/java/com/matrix/system/app/action/ApiStatisticsAction.java |  265 +++++++++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 229 insertions(+), 36 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 83a3a5a..3cdc992 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
@@ -1,28 +1,34 @@
 package com.matrix.system.app.action;
 
+import com.matrix.core.constance.MatrixConstance;
 import com.matrix.core.pojo.AjaxResult;
 import com.matrix.core.pojo.PaginationVO;
+import com.matrix.core.tools.DateUtil;
+import com.matrix.core.tools.WebUtil;
 import com.matrix.system.app.dto.BusinessesDto;
+import com.matrix.system.app.dto.VipStatisticsParamDto;
+import com.matrix.system.app.vo.BeauticianVo;
 import com.matrix.system.app.vo.BusinessesDataShowVo;
+import com.matrix.system.app.vo.VipAchieveDataShowVo;
+import com.matrix.system.common.bean.SysUsers;
 import com.matrix.system.hive.action.util.QueryUtil;
+import com.matrix.system.hive.bean.AchieveNew;
 import com.matrix.system.hive.bean.SysBusinessData;
 import com.matrix.system.hive.dao.SysBusinessDataDao;
 import com.matrix.system.hive.service.imp.DataAnalysisCustomerServiceImpl;
-import com.matrix.system.hiveErp.analysUtil.Caculate;
-import com.matrix.system.hiveErp.analysUtil.StatisticsParamVo;
-import com.matrix.system.hiveErp.analysUtil.StatisticsTimeDaoParam;
+import com.matrix.system.hiveErp.analysUtil.*;
 import com.matrix.system.hiveErp.dao.TjVipSumDao;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiResponse;
 import io.swagger.annotations.ApiResponses;
+import org.jsoup.helper.DataUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 
 import java.math.BigDecimal;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 /**
  * @author wzy
@@ -48,30 +54,63 @@
     })
     @PostMapping(value = "/findShopBusinessesData")
     public AjaxResult findShopBusinessesData(@RequestBody BusinessesDto businessesDto) {
-        SysBusinessData sysBusinessData = new SysBusinessData();
-        // 若shopId为空,则查询门店经营报表
-        if (businessesDto.getShopId() == null) {
-            sysBusinessData.setShopId(businessesDto.getShopId());
-        }
-        QueryUtil.setQueryLimitCom(sysBusinessData);
-
+        String unit = "";
+        int calenderUnit;
         if (BusinessesDto.DAY.equals(businessesDto.getType())) {
-            sysBusinessData.setT1("%Y-%m-%d");
+            unit = "日";
+            calenderUnit = Calendar.DATE;
         } else {
-            sysBusinessData.setT1("%Y-%m");
+            unit = "月";
+            calenderUnit = Calendar.MONTH;
         }
-        PaginationVO pageVo = new PaginationVO();
-        pageVo.setOffset((businessesDto.getPageNum() - 1) * businessesDto.getPageSize());
-        pageVo.setLimit(businessesDto.getPageSize());
 
-        return AjaxResult.buildSuccessInstance(sysBusinessDataDao.selectApiBusinessDataInPage(sysBusinessData, pageVo), sysBusinessDataDao.selectApiBusinessDataTotal(sysBusinessData));
+        SysUsers user = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY);
+        int start = (businessesDto.getPageNum() - 1) * businessesDto.getPageSize();
+        int size = businessesDto.getPageSize();
+        Calendar calendar = Calendar.getInstance();
+        calendar.add(calenderUnit, 1);
+        calendar.add(calenderUnit, -start);
+        String endTime = DateUtil.dateToString(calendar.getTime(), DateUtil.DATE_FORMAT_DD);
+        calendar.add(calenderUnit, -size);
+        String startTime = DateUtil.dateToString(calendar.getTime(), DateUtil.DATE_FORMAT_DD);
+        List<Date> xAxis = StatisticsTimeUtil.getTimeSpace(startTime, endTime, unit);
+        List<StatisticsTimeDaoParam> timeSpaceParam = StatisticsTimeUtil.buidParam(xAxis);
+        List<StatisticsTimeDaoParam> statisticsTimeDaoParams = timeSpaceParam.subList(0, timeSpaceParam.size() - 2);
+        List<BusinessesDataShowVo> list = sysBusinessDataDao.selectApiBusinessData(statisticsTimeDaoParams, businessesDto.getShopId(), user.getCompanyId());
+
+        List<BusinessesDataShowVo> result = new ArrayList<>();
+        for (int i = list.size() - 1; i >= 0; i--) {
+            BusinessesDataShowVo item = list.get(i);
+            String dataTime = item.getDataTime();
+            if (BusinessesDto.DAY.equals(businessesDto.getType())) {
+                item.setDataTime(DateUtil.dateToString(DateUtil.stringToDate(dataTime, DateUtil.DATE_FORMAT_DD), DateUtil.DATE_FORMAT_DD));
+            } else {
+                item.setDataTime(DateUtil.dateToString(DateUtil.stringToDate(dataTime, DateUtil.MONTH), DateUtil.MONTH));
+            }
+            result.add(item);
+        }
+        return AjaxResult.buildSuccessInstance(result);
+    }
+
+    public static void main(String[] args) {
+        int start = 1;
+
+        int end  = 10;
+
+        Calendar calendar = Calendar.getInstance();
+        calendar.add(Calendar.DATE, start);
+        Date time = calendar.getTime();
+        System.out.println(time);
+        calendar.add(Calendar.DATE, end);
+        System.out.println(calendar.getTime());
+
     }
 
     @ApiOperation(value = "专项", notes = "专项")
     @PostMapping(value = "/findBusinessInCome")
     public AjaxResult findBusinessInCome(@RequestBody @Validated StatisticsParamVo statisticsParam) {
         if (statisticsParam.getShopId() != null) {
-            return dataAnalysisCustomerService.getAnalysisResult(statisticsParam, new Caculate<BigDecimal>() {
+            AjaxResult ajaxResult = dataAnalysisCustomerService.getAnalysisResult(statisticsParam, new Caculate<BigDecimal>() {
                 @Override
                 public Map<String, BigDecimal> exec(List<StatisticsTimeDaoParam> timeSpaceParam, Long shopId, Long companyId) {
                     switch (statisticsParam.getType()) {
@@ -82,22 +121,51 @@
                         case "3" :
                             return tjVipSumDao.selectCardUse(timeSpaceParam, shopId, null);
                         case "4" :
-                            return tjVipSumDao.selectHisConsume(timeSpaceParam, shopId, null);
-                        case "5" :
-                            return tjVipSumDao.selectFreeConsume(timeSpaceParam, shopId, null);
-                        case "6" :
-                            return tjVipSumDao.selectCashRefund(timeSpaceParam, shopId, null);
-                        case "7" :
-                            return tjVipSumDao.selectCardRefund(timeSpaceParam, shopId, null);
-                        case "8" :
                             return tjVipSumDao.selectArrears(timeSpaceParam, shopId, null);
+                        case "5" :
+                            return tjVipSumDao.selectCashRefund(timeSpaceParam, shopId, null);
+                        case "6" :
+                            return tjVipSumDao.selectCardRefund(timeSpaceParam, shopId, null);
+                        case "7":
+                            return tjVipSumDao.selectProductAchieve(timeSpaceParam, shopId, null);
+                        case "8":
+                            return tjVipSumDao.selectCardAchieve(timeSpaceParam, shopId, null);
+                        case "9":
+                            return tjVipSumDao.selectRepayment(timeSpaceParam, shopId, null);
+                        case "10":
+                            return tjVipSumDao.selectPerCustomCnt(timeSpaceParam, shopId, null);
+                        case "11":
+                            return tjVipSumDao.selectCustomGoodsCnt(timeSpaceParam, shopId, null);
+                        case "12":
+                            return tjVipSumDao.selectPerCustomPrice(timeSpaceParam, shopId, null);
+                        case "13":
+                            return tjVipSumDao.selectCost(timeSpaceParam, shopId, null);
+                        case "14":
+                            return tjVipSumDao.selectGrossProfit(timeSpaceParam, shopId, null);
+                        case "15":
+                            return tjVipSumDao.selectGrossProfitRate(timeSpaceParam, shopId, null);
+                        case "16" :
+                            return tjVipSumDao.selectHisConsume(timeSpaceParam, shopId, null);
+                        case "17" :
+                            return tjVipSumDao.selectFreeConsume(timeSpaceParam, shopId, null);
+                        case "18" :
+                            return tjVipSumDao.selectPeopleCnt(timeSpaceParam, shopId, null);
+                        case "19" :
+                            return tjVipSumDao.selectProjConsumeCnt(timeSpaceParam, shopId, null);
+                        case "20" :
+                            return tjVipSumDao.selectTimeLength(timeSpaceParam, shopId, null);
+                        case "21" :
+                            return tjVipSumDao.selectCardAmount(timeSpaceParam, shopId, null);
+                        case "22" :
+                            return tjVipSumDao.selectFreeAmount(timeSpaceParam, shopId, null);
                         default :
                             return tjVipSumDao.selectBusinessInCome(timeSpaceParam, shopId, null);
                     }
                 }
             });
+            return setDataList(ajaxResult);
         } else {
-            return dataAnalysisCustomerService.getCompanyAnalysisResult(statisticsParam, new Caculate<BigDecimal>() {
+            AjaxResult ajaxResult = dataAnalysisCustomerService.getCompanyAnalysisResult(statisticsParam, new Caculate<BigDecimal>() {
                 @Override
                 public Map<String, BigDecimal> exec(List<StatisticsTimeDaoParam> timeSpaceParam, Long shopId, Long companyId) {
                     switch (statisticsParam.getType()) {
@@ -108,21 +176,146 @@
                         case "3" :
                             return tjVipSumDao.selectCardUse(timeSpaceParam, null, companyId);
                         case "4" :
-                            return tjVipSumDao.selectHisConsume(timeSpaceParam, null, companyId);
-                        case "5" :
-                            return tjVipSumDao.selectFreeConsume(timeSpaceParam, null, companyId);
-                        case "6" :
-                            return tjVipSumDao.selectCashRefund(timeSpaceParam, null, companyId);
-                        case "7" :
-                            return tjVipSumDao.selectCardRefund(timeSpaceParam, null, companyId);
-                        case "8" :
                             return tjVipSumDao.selectArrears(timeSpaceParam, null, companyId);
+                        case "5" :
+                            return tjVipSumDao.selectCashRefund(timeSpaceParam, null, companyId);
+                        case "6" :
+                            return tjVipSumDao.selectCardRefund(timeSpaceParam, null, companyId);
+                        case "7":
+                            return tjVipSumDao.selectProductAchieve(timeSpaceParam, null, companyId);
+                        case "8":
+                            return tjVipSumDao.selectCardAchieve(timeSpaceParam, null, companyId);
+                        case "9":
+                            return tjVipSumDao.selectRepayment(timeSpaceParam, null, companyId);
+                        case "10":
+                            return tjVipSumDao.selectPerCustomCnt(timeSpaceParam, null, companyId);
+                        case "11":
+                            return tjVipSumDao.selectCustomGoodsCnt(timeSpaceParam, null, companyId);
+                        case "12":
+                            return tjVipSumDao.selectPerCustomPrice(timeSpaceParam, null, companyId);
+                        case "13":
+                            return tjVipSumDao.selectCost(timeSpaceParam, null, companyId);
+                        case "14":
+                            return tjVipSumDao.selectCost(timeSpaceParam, null, companyId);
+                        case "15":
+                            return tjVipSumDao.selectCost(timeSpaceParam, null, companyId);
+                        case "16" :
+                            return tjVipSumDao.selectHisConsume(timeSpaceParam, null, companyId);
+                        case "17" :
+                            return tjVipSumDao.selectFreeConsume(timeSpaceParam, null, companyId);
+                        case "18" :
+                            return tjVipSumDao.selectPeopleCnt(timeSpaceParam, null, companyId);
+                        case "19" :
+                            return tjVipSumDao.selectProjConsumeCnt(timeSpaceParam, null, companyId);
+                        case "20" :
+                            return tjVipSumDao.selectTimeLength(timeSpaceParam, null, companyId);
+                        case "21" :
+                            return tjVipSumDao.selectCardAmount(timeSpaceParam, null, companyId);
+                        case "22" :
+                            return tjVipSumDao.selectFreeAmount(timeSpaceParam, null, companyId);
                         default :
                             return tjVipSumDao.selectBusinessInCome(timeSpaceParam, null, companyId);
                     }
                 }
             });
+            return setDataList(ajaxResult);
         }
     }
 
+    private AjaxResult setDataList(AjaxResult ajaxResult) {
+        List<SeriesVo> list = (List<SeriesVo>) ajaxResult.getMapInfo().get("series");
+        String[] xAxis = (String[]) ajaxResult.getMapInfo().get("xAxis");
+        String [] data = list.get(0).getData();
+        if (data != null && data.length != 0) {
+            List<Map<String, String>> dataList = new ArrayList<>();
+            for(int i = data.length - 1; i >= 0; i--) {
+                Map<String, String> map = new HashMap<>();
+                map.put(xAxis[i], data[i]);
+                dataList.add(map);
+            }
+            ajaxResult.setRows(dataList);
+        }
+
+        return ajaxResult;
+    }
+
+
+    @ApiOperation(value = "查询员工业绩报表", notes = "查询员工业绩报表")
+    @ApiResponses({
+            @ApiResponse(code = 200, message = "ok", response = VipAchieveDataShowVo.class)
+    })
+    @PostMapping(value = "/findVipAchieve")
+    public AjaxResult findVipAchieve(@RequestBody BusinessesDto businessesDto) {
+        String unit = "";
+        int calenderUnit;
+        if (BusinessesDto.DAY.equals(businessesDto.getType())) {
+            unit = "日";
+            calenderUnit = Calendar.DATE;
+        } else {
+            unit = "月";
+            calenderUnit = Calendar.MONTH;
+        }
+
+        int start = (businessesDto.getPageNum() - 1) * businessesDto.getPageSize();
+        int size = businessesDto.getPageSize();
+        Calendar calendar = Calendar.getInstance();
+        calendar.add(calenderUnit, 1);
+        calendar.add(calenderUnit, -start);
+        String endTime = DateUtil.dateToString(calendar.getTime(), DateUtil.DATE_FORMAT_DD);
+        calendar.add(calenderUnit, -size);
+        String startTime = DateUtil.dateToString(calendar.getTime(), DateUtil.DATE_FORMAT_DD);
+        List<Date> xAxis = StatisticsTimeUtil.getTimeSpace(startTime, endTime, unit);
+        List<StatisticsTimeDaoParam> timeSpaceParam = StatisticsTimeUtil.buidParam(xAxis);
+        List<StatisticsTimeDaoParam> statisticsTimeDaoParams = timeSpaceParam.subList(0, timeSpaceParam.size() - 2);
+        List<VipAchieveDataShowVo> list = tjVipSumDao.selectVipAchieveInPage(statisticsTimeDaoParams, businessesDto.getStaffId());
+
+        List<VipAchieveDataShowVo> result = new ArrayList<>();
+        for (int i = list.size() - 1; i >= 0; i--) {
+            VipAchieveDataShowVo item = list.get(i);
+            String dataTime = item.getTime();
+            if (BusinessesDto.DAY.equals(businessesDto.getType())) {
+                item.setTime(DateUtil.dateToString(DateUtil.stringToDate(dataTime, DateUtil.DATE_FORMAT_DD), DateUtil.DATE_FORMAT_DD));
+            } else {
+                item.setTime(DateUtil.dateToString(DateUtil.stringToDate(dataTime, DateUtil.MONTH), DateUtil.MONTH));
+            }
+            result.add(item);
+        }
+        return AjaxResult.buildSuccessInstance(result);
+    }
+
+    @ApiOperation(value = "员工专项", notes = "员工专项")
+    @PostMapping(value = "/findVipBusinessData")
+    public AjaxResult findVipBusinessData(@RequestBody @Validated VipStatisticsParamDto vipStatisticsParamDto) {
+        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.selectStaffHisConsumeAchieve(timeSpaceParam, staffId);
+                    case "6" :
+                        return tjVipSumDao.selectStaffFreeConsumeAchieve(timeSpaceParam, staffId);
+                    case "7" :
+                        return tjVipSumDao.selectStaffCommissionAchieve(timeSpaceParam, staffId);
+                    case "8" :
+                        return tjVipSumDao.selectStaffPeopleNum(timeSpaceParam, staffId);
+                    case "9" :
+                        return tjVipSumDao.selectStaffProjNum(timeSpaceParam, staffId);
+                    case "10" :
+                        return tjVipSumDao.selectStaffProjTime(timeSpaceParam, staffId);
+                    default:
+                        return tjVipSumDao.selectStaffOrderAchieve(timeSpaceParam, staffId);
+                }
+            }
+        });
+
+        return setDataList(ajaxResult);
+    }
 }

--
Gitblit v1.9.1