package com.matrix.system.hive.statistics; import cn.hutool.core.util.StrUtil; 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.DateUtil; 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.dao.CustomerDataDictionaryDao; import com.matrix.system.common.tools.DataAuthUtil; 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; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.OutputStream; import java.util.ArrayList; import java.util.List; /** * 业绩统计 */ @Controller @RequestMapping(value = "/admin/achieve") public class AchieveAction { @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 page = new Page(queryDto.getPageNum(), queryDto.getPageSize()); IPage rows = achieveNewDao.achieveNewStatistics(page,queryDto); AjaxResult result = AjaxResult.buildSuccessInstance(rows.getRecords(),rows.getTotal()); return result; } /** * 门店每日单据明细表 */ @RequestMapping(value = "/findSumDailyInfoNew") public @ResponseBody AjaxResult findSumDailyInfoNew(@RequestBody AchieveNew achieveNew) { SysUsers sysUsers = (SysUsers) WebUtil.getSession().getAttribute(MatrixConstance.LOGIN_KEY); if (!DataAuthUtil.hasAllShopAuth()) { achieveNew.setShopId(sysUsers.getShopId()); } AjaxResult result = new AjaxResult(AjaxResult.STATUS_SUCCESS, achieveNewService.findSumDailyInfoNew(achieveNew, null), 0); return result; } /** * 每日单据明细表 */ @RequestMapping(value = "/findDailyInfoNew") public @ResponseBody AjaxResult findDailyInfoNew(@RequestBody AchieveNew achieveNew) { SysUsers sysUsers = (SysUsers) WebUtil.getSession().getAttribute(MatrixConstance.LOGIN_KEY); achieveNew.setCompanyId(sysUsers.getCompanyId()); if (!DataAuthUtil.hasAllShopAuth()) { 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), achieveNewService.findDayFlowTotal(achieveNew, pageVo)); return result; } @RequestMapping(value = "/exportAchieveNewStatisticsExcel") public void exportAchieveNewStatisticsExcel(ModelMap model, HttpServletRequest request, HttpServletResponse response, AchieveNewStatisticsDto queryDto) throws IOException { //这里是从数据库里查数据并组装成我们想要的数据结构的过程 List res = new ArrayList<>(); ExcelSheetPO orderSheet = new ExcelSheetPO(); String title = "员工业绩统计"; orderSheet.setSheetName(title); orderSheet.setTitle(title); String[] header = {"规则名称", "门店名称", "业绩归属人", "业绩创建人", "订单金额", "现金", "划扣", "本金消耗", "赠送消耗" , "服务提成", "人头", "项目个数", "服务时间", "订单类型"}; orderSheet.setHeaders(header); SysUsers sysUsers = (SysUsers) WebUtil.getSession().getAttribute(MatrixConstance.LOGIN_KEY); if (!DataAuthUtil.hasAllShopAuth()) { queryDto.setShopId(sysUsers.getShopId()); } queryDto.setCompanyId(sysUsers.getCompanyId()); Page page = new Page(1, Long.MAX_VALUE); if (StrUtil.isNotBlank(queryDto.getBeginTimeStr())) { queryDto.setBeginTime(DateUtil.stringToDate(queryDto.getBeginTimeStr(), DateUtil.DATE_FORMAT_MM)); } if (StrUtil.isNotBlank(queryDto.getEndTimeStr())) { queryDto.setEndTime(DateUtil.stringToDate(queryDto.getEndTimeStr(), DateUtil.DATE_FORMAT_MM)); } IPage rows = achieveNewDao.achieveNewStatistics(page,queryDto); List dataList = rows.getRecords(); List> list = new ArrayList<>(); if (dataList.size() > 0) { for (AchieveNewStatisticsVo item : dataList) { List 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 achieveTyps = dataDictionaryDao.selectByParentCode("YJLX", sysUsers.getCompanyId()); List res = new ArrayList<>(); ExcelSheetPO orderSheet = new ExcelSheetPO(); String title = "员工业绩报表"; orderSheet.setSheetName(title); orderSheet.setTitle(title); List 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 (!DataAuthUtil.hasAllShopAuth()) { achieveNew.setShopId(sysUsers.getShopId()); } QueryUtil.setQueryLimitCom(achieveNew); List dataList = achieveNewService.findDayFlow(achieveNew, null); List> list = new ArrayList<>(); if (dataList.size() > 0) { for (AchieveNew item : dataList) { List temp = new ArrayList<>(); temp.add(DateUtil.dateFormatStr(item.getDatatime(), DateUtil.DATE_FORMAT_MM)); temp.add(item.getOrderNo()); 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.getGoodsCash()); 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.getNumberOfPeople()); temp.add(item.getProjNum()); temp.add(item.getProjTime()); temp.add(item.getGuwen()); temp.add(item.getShopName()); 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); } @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 list) { if (CollectionUtils.isNotEmpty(list)) { //删除原业绩 achieveNewDao.deleteByOrderId(list.get(0).getOrderId()); //插入新业绩 achieveNewDao.batchInsert(list); return AjaxResult.buildSuccessInstance("保存成功"); } else { return AjaxResult.buildFailInstance("未找到业绩数据"); } } @RequestMapping(value = "/findDailyBeautyList") @ResponseBody public AjaxResult findDailyBeautyList(@RequestBody AchieveNew achieveNew) { SysUsers sysUsers = (SysUsers) WebUtil.getSession().getAttribute(MatrixConstance.LOGIN_KEY); achieveNew.setCompanyId(sysUsers.getCompanyId()); if (!DataAuthUtil.hasAllShopAuth()) { achieveNew.setShopId(sysUsers.getShopId()); } PaginationVO pageVo = new PaginationVO(); pageVo.setOffset(achieveNew.getOffset()); pageVo.setLimit(achieveNew.getLimit()); return AjaxResult.buildSuccessInstance(achieveNewService.findDailyBeautyList(achieveNew, pageVo), achieveNewService.findDailyBeautyListTotal(achieveNew)); } }