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;
}
}