package com.metro.service.impl; import com.alibaba.excel.EasyExcel; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.metro.entity.excel.PoliceStationWarFruitExcel; import com.metro.entity.excel.PoliceWarFruitExcel; import com.metro.entity.po.Company; import com.metro.entity.search.PoliceSearch; import com.metro.entity.search.WarFruitSearch; import com.metro.entity.vo.DataShowTopVO; import com.metro.entity.vo.JPersonVO; import com.metro.entity.vo.WarFruitTopVO; import com.metro.entity.vo.WarFruitVO; import com.metro.mapper.CompanysMapper; import com.metro.mapper.DataShowMapper; import com.metro.mapper.WarFruitMapper; import com.metro.restful.ServiceException; import com.metro.service.CompanyService; import com.metro.service.JPersonsService; import com.metro.service.WarFruitService; import com.metro.utils.StringUtils; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import java.net.URLEncoder; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.List; import java.util.Map; /** *

* 战果统计表 服务实现类 *

* * @author wxg * @since 2022-05-19 */ @Service public class WarFruitServiceImpl implements WarFruitService { @Autowired private JPersonsService jPersonsService; @Resource private WarFruitMapper warFruitMapper; @Resource private CompanysMapper companysMapper; @Resource private CompanyService companyService; @Resource private DataShowMapper dataShowMapper; @Override public WarFruitTopVO polliceOfficeTop10(WarFruitSearch warFruitSearch) { JPersonVO jPersonVO = this.rootTrue(); if(jPersonVO.getType() == 2)throw new ServiceException("没有权限"); warFruitSearch.setLimitNumber(10); List dataShowList = dataShowMapper.polliceOfficeTop10(warFruitSearch); Map companyMap = companyService.getCompanyMapByList(dataShowList, DataShowTopVO::getCompanyId); List siteList = new ArrayList<>();//横坐标 List numberList = new ArrayList<>();//盘查人数 List doubtList = new ArrayList<>();//存疑人数 List arrestList = new ArrayList<>();//抓捕人数 for (DataShowTopVO dataShowTopVO : dataShowList) { siteList.add(companyMap.get(dataShowTopVO.getCompanyId()) == null?"" : companyMap.get(dataShowTopVO.getCompanyId()).getCompanyName()); Integer totalNumber = dataShowTopVO.getTotalNumber() == null ? 0 : dataShowTopVO.getTotalNumber(); Integer todayNumber = dataShowTopVO.getTodayNumber() == null ? 0 : dataShowTopVO.getTodayNumber(); Integer totalDoubtNumber = dataShowTopVO.getTotalDoubtNumber() == null ? 0 : dataShowTopVO.getTotalDoubtNumber(); Integer todayDoubtNumber = dataShowTopVO.getTodayDoubtNumber() == null ? 0 : dataShowTopVO.getTodayDoubtNumber(); Integer totalArrestNumber = dataShowTopVO.getTotalArrestNumber() == null ? 0 : dataShowTopVO.getTotalArrestNumber(); Integer todayArrestNumber = dataShowTopVO.getTodayArrestNumber() == null ? 0 : dataShowTopVO.getTodayArrestNumber(); numberList.add(totalNumber + todayNumber);//之前盘查 + 今日 doubtList.add(totalDoubtNumber + todayDoubtNumber);//之前存疑 + 今日 arrestList.add(totalArrestNumber + todayArrestNumber);//之前抓捕 + 今日 } WarFruitTopVO warFruitTopVO = new WarFruitTopVO(); warFruitTopVO.setSiteList(siteList); warFruitTopVO.setNumberList(numberList); warFruitTopVO.setDoubtList(doubtList); warFruitTopVO.setArrestList(arrestList); return warFruitTopVO; } @Override public WarFruitTopVO policeTop10(WarFruitSearch warFruitSearch) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); JPersonVO jPersonVO = this.rootTrue(); PoliceSearch policeSearch = new PoliceSearch(); policeSearch.setPageNum(0); policeSearch.setPageSize(10); policeSearch.setStartTime(warFruitSearch.getStartTime() == null?null:sdf.format(warFruitSearch.getStartTime())); policeSearch.setEndTime(warFruitSearch.getEndTime() == null?null:sdf.format(warFruitSearch.getStartTime())); policeSearch.setCompanyId(jPersonVO.getCompanyId() !=null ? jPersonVO.getCompanyId() : null); policeSearch.setBranchId(jPersonVO.getBranchId() !=null ? jPersonVO.getBranchId() : null); /*如果是一级账号的话 可以传入派出所*/ if(jPersonVO.getType() == 1 && StringUtils.isNotEmpty(warFruitSearch.getCompanyId())){ policeSearch.setCompanyId(warFruitSearch.getCompanyId()); } Page page = new Page<>(policeSearch.getPageNum(),policeSearch.getPageSize()); IPage pageList =warFruitMapper.policePageList(page,policeSearch); List list = pageList.getRecords(); List siteList = new ArrayList<>();//横坐标 List numberList = new ArrayList<>();//盘查人数 List doubtList = new ArrayList<>();//存起人数 List arrestList = new ArrayList<>();//抓捕人数 for (WarFruitVO warFruitVO : list) { siteList.add(warFruitVO.getXm() != null ?warFruitVO.getXm() :""); numberList.add(warFruitVO.getNumber());//盘查 doubtList.add(warFruitVO.getDoubtNumber());//存疑 arrestList.add(warFruitVO.getArrestNumber());//抓捕 } WarFruitTopVO warFruitTopVO = new WarFruitTopVO(); warFruitTopVO.setSiteList(siteList); warFruitTopVO.setNumberList(numberList); warFruitTopVO.setDoubtList(doubtList); warFruitTopVO.setArrestList(arrestList); return warFruitTopVO; } @Override public IPage policePageList(PoliceSearch policeSearch) { return this.policePageListType(policeSearch,1); } private IPage policePageListType(PoliceSearch policeSearch ,Integer type){ JPersonVO jPersonVO = jPersonsService.getUserInfo(); if(jPersonVO.getType() == 3)policeSearch.setCardId(jPersonVO.getCardId()); if(jPersonVO.getType() == 1 && StringUtils.isNotEmpty(policeSearch.getCompanyId())){ } else{ policeSearch.setCompanyId(jPersonVO.getCompanyId() !=null ? jPersonVO.getCompanyId() : null); } policeSearch.setBranchId(jPersonVO.getBranchId() !=null ? jPersonVO.getBranchId() : null); policeSearch.setType(type);//需要照片 Page page = new Page<>(policeSearch.getPageNum(),policeSearch.getPageSize()); IPage warFruitVOIPage = warFruitMapper.policePageList(page, policeSearch); return warFruitVOIPage; } @Override public void excelWarningPageList(PoliceSearch policeSearch, HttpServletResponse response) { policeSearch.setPageSize(100000); IPage warFruitVOIPage = this.policePageListType(policeSearch, 0); List records = warFruitVOIPage.getRecords(); List list = new ArrayList<>(records.size()); Map companyMap = companyService.getCompanyMapByList(records, WarFruitVO::getCompanyId); for (WarFruitVO record : records) { PoliceWarFruitExcel policeWarFruitExcel = new PoliceWarFruitExcel(); BeanUtils.copyProperties(record,policeWarFruitExcel); policeWarFruitExcel.setCompanyName(companyMap.get(record.getCompanyId()) == null?"" : companyMap.get(record.getCompanyId()).getCompanyName()); list.add(policeWarFruitExcel); } try { String fileName = "民警战果统计-" + System.currentTimeMillis() + ".xlsx"; response.setHeader("Content-disposition", "attachment;filename=" + URLEncoder.encode(fileName, "UTF-8")); response.addHeader("Access-Control-Expose-Headers", "Content-Disposition"); response.setContentType("application/vnd.ms-excel;charset=UTF-8"); EasyExcel.write(response.getOutputStream(), PoliceWarFruitExcel.class) // 导出文件名 .autoCloseStream(Boolean.TRUE).sheet("民警战果统计") .doWrite(list); } catch (Exception e) { e.printStackTrace(); } } @Override public void excelPoliceStationPageList(WarFruitSearch warFruitSearch, HttpServletResponse response) { JPersonVO jPersonVO = this.rootTrue(); warFruitSearch.setLimitNumber(1000000); if(jPersonVO.getType() == 2){warFruitSearch.setCompanyId(jPersonVO.getCompanyId());} List dataShowList = dataShowMapper.polliceOfficeTop10(warFruitSearch); Map companyMap = companyService.getCompanyMapByList(dataShowList, DataShowTopVO::getCompanyId); List list = new ArrayList<>(); for (DataShowTopVO record : dataShowList) { PoliceStationWarFruitExcel policeWarFruitExcel = new PoliceStationWarFruitExcel(); policeWarFruitExcel.setCompanyName(companyMap.get(record.getCompanyId()) == null?"" : companyMap.get(record.getCompanyId()).getCompanyName()); Integer totalNumber = record.getTotalNumber(); Integer todayNumber = record.getTodayNumber(); Integer totalDoubtNumber = record.getTotalDoubtNumber(); Integer todayDoubtNumber = record.getTodayDoubtNumber(); Integer totalArrestNumber = record.getTotalArrestNumber(); Integer todayArrestNumber = record.getTodayArrestNumber(); Integer totalExceptionNumber = record.getTotalWarningNumber(); Integer todayExceptionNumber = record.getTotalWarningNumber(); policeWarFruitExcel.setNumber(totalNumber + todayNumber); policeWarFruitExcel.setDoubtNumber(totalDoubtNumber + todayDoubtNumber); policeWarFruitExcel.setArrestNumber(totalArrestNumber + todayArrestNumber); policeWarFruitExcel.setExceptionNumber(totalExceptionNumber + todayExceptionNumber); policeWarFruitExcel.setPassNumber(totalNumber + todayNumber - totalDoubtNumber - todayArrestNumber - totalArrestNumber - todayArrestNumber - totalExceptionNumber - todayExceptionNumber); list.add(policeWarFruitExcel); } try { String fileName = "派出所统计-" + System.currentTimeMillis() + ".xlsx"; response.setHeader("Content-disposition", "attachment;filename=" + URLEncoder.encode(fileName, "UTF-8")); response.addHeader("Access-Control-Expose-Headers", "Content-Disposition"); response.setContentType("application/vnd.ms-excel;charset=UTF-8"); EasyExcel.write(response.getOutputStream(), PoliceStationWarFruitExcel.class) // 导出文件名 .autoCloseStream(Boolean.TRUE).sheet("派出所统计") .doWrite(list); } catch (Exception e) { e.printStackTrace(); } } private JPersonVO rootTrue(){ JPersonVO jPersonVO = jPersonsService.getUserInfo(); Integer adminType = jPersonVO.getType(); if (adminType != 1 && adminType != 2) { throw new ServiceException("没有权限"); } return jPersonVO; } }