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.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.SeriesVo; import com.matrix.system.hiveErp.analysUtil.StatisticsParamVo; import com.matrix.system.hiveErp.analysUtil.StatisticsTimeDaoParam; 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.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import java.math.BigDecimal; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; /** * @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) { SysBusinessData sysBusinessData = new SysBusinessData(); // 若shopId为空,则查询门店经营报表 if (businessesDto.getShopId() == null) { sysBusinessData.setShopId(businessesDto.getShopId()); } QueryUtil.setQueryLimitCom(sysBusinessData); if (BusinessesDto.DAY.equals(businessesDto.getType())) { sysBusinessData.setT1("%Y-%m-%d"); } else { sysBusinessData.setT1("%Y-%m"); } 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)); } @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.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); 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.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); 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) { AchieveNew achieveNew = new AchieveNew(); if (BusinessesDto.DAY.equals(businessesDto.getType())) { achieveNew.setT1("%Y-%m-%d"); } else { achieveNew.setT1("%Y-%m"); } SysUsers sysUsers = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY); if (businessesDto.getStaffId() == null) { businessesDto.setStaffId(sysUsers.getSuId()); } achieveNew.setVipId(businessesDto.getStaffId()); PaginationVO pageVo = new PaginationVO(); pageVo.setLimit(businessesDto.getPageSize()); pageVo.setOffset((businessesDto.getPageNum() - 1) * businessesDto.getPageSize()); return AjaxResult.buildSuccessInstance(tjVipSumDao.selectVipAchieveInPage(achieveNew, pageVo)); } @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.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); } }