|  |  |  | 
|---|
|  |  |  | package com.matrix.system.hive.statistics; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | import com.baomidou.mybatisplus.core.metadata.IPage; | 
|---|
|  |  |  | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; | 
|---|
|  |  |  | 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.core.tools.excl.ExcelSheetPO; | 
|---|
|  |  |  | import com.matrix.core.tools.excl.ExcelVersion; | 
|---|
|  |  |  | import com.matrix.system.common.bean.CustomerDataDictionary; | 
|---|
|  |  |  | import com.matrix.system.common.bean.SysUsers; | 
|---|
|  |  |  | import com.matrix.system.common.constance.AppConstance; | 
|---|
|  |  |  | import com.matrix.system.common.dao.CustomerDataDictionaryDao; | 
|---|
|  |  |  | import com.matrix.system.common.tools.ResponseHeadUtil; | 
|---|
|  |  |  | import com.matrix.system.hive.action.util.QueryUtil; | 
|---|
|  |  |  | import com.matrix.system.hive.bean.AchieveNew; | 
|---|
|  |  |  | import com.matrix.system.hive.dao.AchieveNewDao; | 
|---|
|  |  |  | import com.matrix.system.hive.dto.AchieveNewStatisticsDto; | 
|---|
|  |  |  | import com.matrix.system.hive.plugin.util.CollectionUtils; | 
|---|
|  |  |  | import com.matrix.system.hive.service.AchieveNewService; | 
|---|
|  |  |  | import com.matrix.system.hive.vo.AchieveNewStatisticsVo; | 
|---|
|  |  |  | import org.springframework.beans.factory.annotation.Autowired; | 
|---|
|  |  |  | import org.springframework.stereotype.Controller; | 
|---|
|  |  |  | import org.springframework.transaction.annotation.Transactional; | 
|---|
|  |  |  | import org.springframework.ui.ModelMap; | 
|---|
|  |  |  | import org.springframework.web.bind.annotation.PostMapping; | 
|---|
|  |  |  | import org.springframework.web.bind.annotation.RequestBody; | 
|---|
|  |  |  | import org.springframework.web.bind.annotation.RequestMapping; | 
|---|
|  |  |  | import org.springframework.web.bind.annotation.ResponseBody; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | @Resource | 
|---|
|  |  |  | private AchieveNewService achieveNewService; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private AchieveNewDao achieveNewDao; | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 员工业绩统计 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | @PostMapping(value = "/achieveNewStatistics") | 
|---|
|  |  |  | public @ResponseBody | 
|---|
|  |  |  | AjaxResult achieveNewStatistics(@RequestBody  AchieveNewStatisticsDto queryDto){ | 
|---|
|  |  |  | SysUsers sysUsers = (SysUsers) WebUtil.getSession().getAttribute(MatrixConstance.LOGIN_KEY); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | queryDto.setCompanyId(sysUsers.getCompanyId()); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | Page<AchieveNewStatisticsVo> page = new Page(queryDto.getPageNum(), queryDto.getPageSize()); | 
|---|
|  |  |  | IPage<AchieveNewStatisticsVo> rows = achieveNewDao.achieveNewStatistics(page,queryDto); | 
|---|
|  |  |  | AjaxResult result = AjaxResult.buildSuccessInstance(rows.getRecords(),rows.getTotal()); | 
|---|
|  |  |  | return result; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 门店每日单据明细表 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | @RequestMapping(value = "/findSumDailyInfoNew") | 
|---|
|  |  |  | public @ResponseBody | 
|---|
|  |  |  | AjaxResult findSumDailyInfoNew(AchieveNew achieveNew, PaginationVO pageVo) { | 
|---|
|  |  |  | AjaxResult findSumDailyInfoNew(@RequestBody  AchieveNew achieveNew) { | 
|---|
|  |  |  | SysUsers sysUsers = (SysUsers) WebUtil.getSession().getAttribute(MatrixConstance.LOGIN_KEY); | 
|---|
|  |  |  | if(!AppConstance.ZONGDIAN.equals(sysUsers.getShopName())){ | 
|---|
|  |  |  | achieveNew.setShopId(sysUsers.getShopId()); | 
|---|
|  |  |  | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | @RequestMapping(value = "/findDailyInfoNew") | 
|---|
|  |  |  | public @ResponseBody | 
|---|
|  |  |  | AjaxResult findDailyInfoNew(AchieveNew achieveNew, PaginationVO pageVo) { | 
|---|
|  |  |  | AjaxResult findDailyInfoNew(@RequestBody  AchieveNew achieveNew) { | 
|---|
|  |  |  | SysUsers sysUsers = (SysUsers) WebUtil.getSession().getAttribute(MatrixConstance.LOGIN_KEY); | 
|---|
|  |  |  | achieveNew.setCompanyId(sysUsers.getCompanyId()); | 
|---|
|  |  |  | if(!AppConstance.ZONGDIAN.equals(sysUsers.getShopName())){ | 
|---|
|  |  |  | achieveNew.setShopId(sysUsers.getShopId()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | PaginationVO pageVo = new PaginationVO(); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | pageVo.setOffset(achieveNew.getOffset()); | 
|---|
|  |  |  | pageVo.setLimit(achieveNew.getLimit()); | 
|---|
|  |  |  | pageVo.setSort("datatime"); | 
|---|
|  |  |  | pageVo.setOrder("desc"); | 
|---|
|  |  |  | AjaxResult result = new AjaxResult(AjaxResult.STATUS_SUCCESS, achieveNewService.findDayFlow(achieveNew, pageVo), | 
|---|
|  |  |  | 
|---|
|  |  |  | return result; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @RequestMapping(value = "/exportDailyInfoNew") | 
|---|
|  |  |  | public void exportDailyInfoNew(ModelMap model, HttpServletRequest request, HttpServletResponse response, AchieveNew achieveNew) throws IOException { | 
|---|
|  |  |  | @RequestMapping(value = "/exportAchieveNewStatisticsExcel") | 
|---|
|  |  |  | public void exportAchieveNewStatisticsExcel(ModelMap model, HttpServletRequest request, HttpServletResponse response,   AchieveNewStatisticsDto queryDto) throws IOException { | 
|---|
|  |  |  | //这里是从数据库里查数据并组装成我们想要的数据结构的过程 | 
|---|
|  |  |  | List<ExcelSheetPO> res = new ArrayList<>(); | 
|---|
|  |  |  | ExcelSheetPO orderSheet = new ExcelSheetPO(); | 
|---|
|  |  |  | String title = "每日单据明细"; | 
|---|
|  |  |  | String title = "员工业绩统计"; | 
|---|
|  |  |  | orderSheet.setSheetName(title); | 
|---|
|  |  |  | orderSheet.setTitle(title); | 
|---|
|  |  |  | String[] header = {"年", "月", "日",   "订单类型", "订单编号", "会员级别", "姓名", "项目名称", "总金额", "卡项", "现金单次", "现金产品", "划扣", "本金消耗", "赠消", "提成", "顾问", "美疗师", "人头", "项目个数", "项目时间", "门店"}; | 
|---|
|  |  |  | String[] header = {"规则名称", "门店名称", "业绩归属人", "业绩创建人", "订单金额", "现金", "划扣", "本金消耗", "赠送消耗" | 
|---|
|  |  |  | , "服务提成", "人头", "项目个数", "服务时间", "订单类型"}; | 
|---|
|  |  |  | orderSheet.setHeaders(header); | 
|---|
|  |  |  | SysUsers sysUsers = (SysUsers) WebUtil.getSession().getAttribute(MatrixConstance.LOGIN_KEY); | 
|---|
|  |  |  | if(!AppConstance.ZONGDIAN.equals(sysUsers.getShopName())){ | 
|---|
|  |  |  | queryDto.setShopId(sysUsers.getShopId()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | queryDto.setCompanyId(sysUsers.getCompanyId()); | 
|---|
|  |  |  | Page<AchieveNewStatisticsVo> page = new Page(1, Long.MAX_VALUE); | 
|---|
|  |  |  | IPage<AchieveNewStatisticsVo> rows = achieveNewDao.achieveNewStatistics(page,queryDto); | 
|---|
|  |  |  | List<AchieveNewStatisticsVo> dataList = rows.getRecords(); | 
|---|
|  |  |  | List<List<Object>> list = new ArrayList<>(); | 
|---|
|  |  |  | if (dataList.size() > 0) { | 
|---|
|  |  |  | for (AchieveNewStatisticsVo item : dataList) { | 
|---|
|  |  |  | List<Object> temp = new ArrayList<>(); | 
|---|
|  |  |  | temp.add(item.getRuleName()); | 
|---|
|  |  |  | temp.add(item.getShopName()); | 
|---|
|  |  |  | temp.add(item.getGuwen()); | 
|---|
|  |  |  | temp.add(item.getCreateBy()); | 
|---|
|  |  |  | temp.add(item.getZkTotal()); | 
|---|
|  |  |  | temp.add(item.getGoodsCash()); | 
|---|
|  |  |  | temp.add(item.getCardCash()); | 
|---|
|  |  |  | temp.add(item.getHisConsume()); | 
|---|
|  |  |  | temp.add(item.getFreeConsume()); | 
|---|
|  |  |  | temp.add(item.getProjPercentage()); | 
|---|
|  |  |  | temp.add(item.getNumberOfPeople()); | 
|---|
|  |  |  | temp.add(item.getProjNum()); | 
|---|
|  |  |  | temp.add(item.getProjTime()); | 
|---|
|  |  |  | temp.add(item.getOrderType()); | 
|---|
|  |  |  | list.add(temp); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | orderSheet.setDataList(list); | 
|---|
|  |  |  | res.add(orderSheet); | 
|---|
|  |  |  | response = ResponseHeadUtil.setExcelHead(response); | 
|---|
|  |  |  | response.setHeader("Content-Disposition", | 
|---|
|  |  |  | "attachment;filename=" + java.net.URLEncoder.encode(title + DateUtil.getTimeMark() + ".xlsx".trim(), "UTF-8")); | 
|---|
|  |  |  | OutputStream os = response.getOutputStream(); | 
|---|
|  |  |  | com.matrix.core.tools.excl.ExcelUtil.createWorkbookAtOutStream(ExcelVersion.V2007, res, os, true); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | CustomerDataDictionaryDao dataDictionaryDao; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @RequestMapping(value = "/exportDailyInfoNew") | 
|---|
|  |  |  | public void exportDailyInfoNew(ModelMap model, HttpServletRequest request, HttpServletResponse response, AchieveNew achieveNew) throws IOException { | 
|---|
|  |  |  | SysUsers sysUsers = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | List<CustomerDataDictionary> achieveTyps = dataDictionaryDao.selectByParentCode("YJLX", sysUsers.getCompanyId()); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | List<ExcelSheetPO> res = new ArrayList<>(); | 
|---|
|  |  |  | ExcelSheetPO orderSheet = new ExcelSheetPO(); | 
|---|
|  |  |  | String title = "员工业绩报表"; | 
|---|
|  |  |  | orderSheet.setSheetName(title); | 
|---|
|  |  |  | orderSheet.setTitle(title); | 
|---|
|  |  |  | List<String> headerList =new ArrayList(); | 
|---|
|  |  |  | headerList.add("订单时间"); | 
|---|
|  |  |  | headerList.add("订单编号"); | 
|---|
|  |  |  | headerList.add("订单类型"); | 
|---|
|  |  |  | headerList.add("会员姓名"); | 
|---|
|  |  |  | headerList.add("产品"); | 
|---|
|  |  |  | headerList.add("业绩规则"); | 
|---|
|  |  |  | headerList.add("产品分类"); | 
|---|
|  |  |  | headerList.add("订单金额"); | 
|---|
|  |  |  | headerList.add("现金"); | 
|---|
|  |  |  | headerList.add("划扣"); | 
|---|
|  |  |  | headerList.add("员工"); | 
|---|
|  |  |  | achieveTyps.forEach(item->{headerList.add(item.getValue());}); | 
|---|
|  |  |  | headerList.add("本金消耗"); | 
|---|
|  |  |  | headerList.add("赠消"); | 
|---|
|  |  |  | headerList.add("提成"); | 
|---|
|  |  |  | headerList.add("人头"); | 
|---|
|  |  |  | headerList.add("项目个数"); | 
|---|
|  |  |  | headerList.add("项目时间"); | 
|---|
|  |  |  | headerList.add("顾问"); | 
|---|
|  |  |  | headerList.add("门店"); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | String[] header =  headerList.toArray(new String[headerList.size()]); | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | orderSheet.setHeaders(header); | 
|---|
|  |  |  | if(!AppConstance.ZONGDIAN.equals(sysUsers.getShopName())){ | 
|---|
|  |  |  | achieveNew.setShopId(sysUsers.getShopId()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | if (dataList.size() > 0) { | 
|---|
|  |  |  | for (AchieveNew item : dataList) { | 
|---|
|  |  |  | List<Object> temp = new ArrayList<>(); | 
|---|
|  |  |  | temp.add(item.getYear()); | 
|---|
|  |  |  | temp.add(item.getMonth()); | 
|---|
|  |  |  | temp.add(item.getDay()); | 
|---|
|  |  |  | temp.add(item.getOrderType()); | 
|---|
|  |  |  | temp.add(DateUtil.dateFormatStr(item.getDatatime(), DateUtil.DATE_FORMAT_MM)); | 
|---|
|  |  |  | temp.add(item.getOrderNo()); | 
|---|
|  |  |  | temp.add(item.getLevelName()); | 
|---|
|  |  |  | temp.add(item.getOrderType()); | 
|---|
|  |  |  | temp.add(item.getVipName()); | 
|---|
|  |  |  | temp.add(item.getProName()); | 
|---|
|  |  |  | temp.add(item.getAchieveRuleName()); | 
|---|
|  |  |  | temp.add(item.getCateName()); | 
|---|
|  |  |  | temp.add(item.getZkTotal()); | 
|---|
|  |  |  | temp.add(item.getCardCash()); | 
|---|
|  |  |  | temp.add(item.getProjCash()); | 
|---|
|  |  |  | temp.add(item.getGoodsCash()); | 
|---|
|  |  |  | temp.add(item.getConsume()); | 
|---|
|  |  |  | temp.add(item.getCardCash()); | 
|---|
|  |  |  | temp.add(item.getMeiliao()); | 
|---|
|  |  |  | //动态导出列---- | 
|---|
|  |  |  | achieveTyps.forEach(item2->{ | 
|---|
|  |  |  | if(item2.getValue().equals(item.getAchieveType())){ | 
|---|
|  |  |  | temp.add(item.getGoodsCash()); | 
|---|
|  |  |  | }else{ | 
|---|
|  |  |  | temp.add(""); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | temp.add(item.getHisConsume()); | 
|---|
|  |  |  | temp.add(item.getFreeConsume()); | 
|---|
|  |  |  | temp.add(item.getProjPercentage()); | 
|---|
|  |  |  | temp.add(item.getGuwen()); | 
|---|
|  |  |  | temp.add(item.getMeiliao()); | 
|---|
|  |  |  | temp.add(item.getNumberOfPeople()); | 
|---|
|  |  |  | temp.add(item.getProjNum()); | 
|---|
|  |  |  | temp.add(item.getProjTime()); | 
|---|
|  |  |  | temp.add(item.getGuwen()); | 
|---|
|  |  |  | temp.add(item.getShopName()); | 
|---|
|  |  |  | list.add(temp); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | com.matrix.core.tools.excl.ExcelUtil.createWorkbookAtOutStream(ExcelVersion.V2007, res, os, true); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @RequestMapping(value = "/del") | 
|---|
|  |  |  | @ResponseBody | 
|---|
|  |  |  | public AjaxResult del(Long id) { | 
|---|
|  |  |  | int i = achieveNewService.removeById(id); | 
|---|
|  |  |  | if (i > 0) { | 
|---|
|  |  |  | return AjaxResult.buildSuccessInstance("删除成功"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return AjaxResult.buildFailInstance("删除失败"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @RequestMapping(value = "/add") | 
|---|
|  |  |  | @ResponseBody | 
|---|
|  |  |  | @Transactional | 
|---|
|  |  |  | public AjaxResult add(@RequestBody List<AchieveNew> list) { | 
|---|
|  |  |  | if (CollectionUtils.isNotEmpty(list)) { | 
|---|
|  |  |  | //删除原业绩 | 
|---|
|  |  |  | achieveNewDao.deleteByOrderId(list.get(0).getOrderId()); | 
|---|
|  |  |  | //插入新业绩 | 
|---|
|  |  |  | achieveNewDao.batchInsert(list); | 
|---|
|  |  |  | return AjaxResult.buildSuccessInstance("保存成功"); | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | return AjaxResult.buildFailInstance("未找到业绩数据"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|