| 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.*; | 
| 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.*; | 
|   | 
| /** | 
|  * @author wzy | 
|  * @date 2020-12-28 | 
|  **/ | 
| @Api(value = "ApiStatisticsAction", tags = "报表接口类") | 
| @RestController | 
| @RequestMapping(value = "/api/statistics") | 
| public class ApiStatisticsAction { | 
|   | 
|     @Autowired | 
|     TjVipSumDao tjVipSumDao; | 
|   | 
|     @Autowired | 
|     private SysBusinessDataDao sysBusinessDataDao; | 
|   | 
|     @Autowired | 
|     private DataAnalysisCustomerServiceImpl dataAnalysisCustomerService; | 
|   | 
|     @ApiOperation(value = "公司经营报表/门店经营报表") | 
|     @ApiResponses({ | 
|             @ApiResponse(code = 200, message = "ok", response = BusinessesDataShowVo.class) | 
|     }) | 
|     @PostMapping(value = "/findShopBusinessesData") | 
|     public AjaxResult findShopBusinessesData(@RequestBody BusinessesDto businessesDto) { | 
|         String unit = ""; | 
|         int calenderUnit; | 
|         if (BusinessesDto.DAY.equals(businessesDto.getType())) { | 
|             unit = "日"; | 
|             calenderUnit = Calendar.DATE; | 
|         } else { | 
|             unit = "月"; | 
|             calenderUnit = Calendar.MONTH; | 
|         } | 
|   | 
|         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) { | 
|             AjaxResult ajaxResult = dataAnalysisCustomerService.getAnalysisResult(statisticsParam, new Caculate<BigDecimal>() { | 
|                 @Override | 
|                 public Map<String, BigDecimal> exec(List<StatisticsTimeDaoParam> timeSpaceParam, Long shopId, Long companyId) { | 
|                     switch (statisticsParam.getType()) { | 
|                         case "1" : | 
|                             return tjVipSumDao.selectBusinessInCome(timeSpaceParam, shopId, null); | 
|                         case "2" : | 
|                             return tjVipSumDao.selectCashIncome(timeSpaceParam, shopId, null); | 
|                         case "3" : | 
|                             return tjVipSumDao.selectCardUse(timeSpaceParam, shopId, null); | 
|                         case "4" : | 
|                             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 { | 
|             AjaxResult ajaxResult = dataAnalysisCustomerService.getCompanyAnalysisResult(statisticsParam, new Caculate<BigDecimal>() { | 
|                 @Override | 
|                 public Map<String, BigDecimal> exec(List<StatisticsTimeDaoParam> timeSpaceParam, Long shopId, Long companyId) { | 
|                     switch (statisticsParam.getType()) { | 
|                         case "1" : | 
|                             return tjVipSumDao.selectBusinessInCome(timeSpaceParam, null, companyId); | 
|                         case "2" : | 
|                             return tjVipSumDao.selectCashIncome(timeSpaceParam, null, companyId); | 
|                         case "3" : | 
|                             return tjVipSumDao.selectCardUse(timeSpaceParam, null, companyId); | 
|                         case "4" : | 
|                             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); | 
|     } | 
| } |