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 xAxis = StatisticsTimeUtil.getTimeSpace(startTime, endTime, unit); List timeSpaceParam = StatisticsTimeUtil.buidParam(xAxis); List statisticsTimeDaoParams = timeSpaceParam.subList(0, timeSpaceParam.size() - 2); List list = sysBusinessDataDao.selectApiBusinessData(statisticsTimeDaoParams, businessesDto.getShopId(), user.getCompanyId()); List 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() { @Override public Map exec(List 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); default : return tjVipSumDao.selectBusinessInCome(timeSpaceParam, shopId, null); } } }); return setDataList(ajaxResult); } else { AjaxResult ajaxResult = dataAnalysisCustomerService.getCompanyAnalysisResult(statisticsParam, new Caculate() { @Override public Map exec(List 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); default : return tjVipSumDao.selectBusinessInCome(timeSpaceParam, null, companyId); } } }); return setDataList(ajaxResult); } } private AjaxResult setDataList(AjaxResult ajaxResult) { List list = (List) ajaxResult.getMapInfo().get("series"); String[] xAxis = (String[]) ajaxResult.getMapInfo().get("xAxis"); String [] data = list.get(0).getData(); if (data != null && data.length != 0) { List> dataList = new ArrayList<>(); for(int i = data.length - 1; i >= 0; i--) { Map 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 xAxis = StatisticsTimeUtil.getTimeSpace(startTime, endTime, unit); List timeSpaceParam = StatisticsTimeUtil.buidParam(xAxis); List statisticsTimeDaoParams = timeSpaceParam.subList(0, timeSpaceParam.size() - 2); List list = tjVipSumDao.selectVipAchieveInPage(statisticsTimeDaoParams, businessesDto.getStaffId()); List 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() { @Override public Map exec(List 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); } }