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<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.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<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.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<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) { 
 | 
        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<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); 
 | 
    } 
 | 
  
 | 
} 
 |