WarFruitServiceImpl.java 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223
  1. package com.metro.service.impl;
  2. import com.alibaba.excel.EasyExcel;
  3. import com.baomidou.mybatisplus.core.metadata.IPage;
  4. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  5. import com.metro.entity.excel.PoliceStationWarFruitExcel;
  6. import com.metro.entity.excel.PoliceWarFruitExcel;
  7. import com.metro.entity.po.Company;
  8. import com.metro.entity.search.PoliceSearch;
  9. import com.metro.entity.search.WarFruitSearch;
  10. import com.metro.entity.vo.DataShowTopVO;
  11. import com.metro.entity.vo.JPersonVO;
  12. import com.metro.entity.vo.WarFruitTopVO;
  13. import com.metro.entity.vo.WarFruitVO;
  14. import com.metro.mapper.CompanysMapper;
  15. import com.metro.mapper.DataShowMapper;
  16. import com.metro.mapper.WarFruitMapper;
  17. import com.metro.restful.ServiceException;
  18. import com.metro.service.CompanyService;
  19. import com.metro.service.JPersonsService;
  20. import com.metro.service.WarFruitService;
  21. import com.metro.utils.StringUtils;
  22. import org.springframework.beans.BeanUtils;
  23. import org.springframework.beans.factory.annotation.Autowired;
  24. import org.springframework.stereotype.Service;
  25. import javax.annotation.Resource;
  26. import javax.servlet.http.HttpServletResponse;
  27. import java.net.URLEncoder;
  28. import java.text.SimpleDateFormat;
  29. import java.util.ArrayList;
  30. import java.util.List;
  31. import java.util.Map;
  32. /**
  33. * <p>
  34. * 战果统计表 服务实现类
  35. * </p>
  36. *
  37. * @author wxg
  38. * @since 2022-05-19
  39. */
  40. @Service
  41. public class WarFruitServiceImpl implements WarFruitService {
  42. @Autowired
  43. private JPersonsService jPersonsService;
  44. @Resource
  45. private WarFruitMapper warFruitMapper;
  46. @Resource
  47. private CompanysMapper companysMapper;
  48. @Resource
  49. private CompanyService companyService;
  50. @Resource
  51. private DataShowMapper dataShowMapper;
  52. @Override
  53. public WarFruitTopVO polliceOfficeTop10(WarFruitSearch warFruitSearch) {
  54. JPersonVO jPersonVO = this.rootTrue();
  55. if(jPersonVO.getType() == 2)throw new ServiceException("没有权限");
  56. warFruitSearch.setLimitNumber(10);
  57. List<DataShowTopVO> dataShowList = dataShowMapper.polliceOfficeTop10(warFruitSearch);
  58. Map<String, Company> companyMap = companyService.getCompanyMapByList(dataShowList, DataShowTopVO::getCompanyId);
  59. List<String> siteList = new ArrayList<>();//横坐标
  60. List<Integer> numberList = new ArrayList<>();//盘查人数
  61. List<Integer> doubtList = new ArrayList<>();//存疑人数
  62. List<Integer> arrestList = new ArrayList<>();//抓捕人数
  63. for (DataShowTopVO dataShowTopVO : dataShowList) {
  64. siteList.add(companyMap.get(dataShowTopVO.getCompanyId()) == null?"" : companyMap.get(dataShowTopVO.getCompanyId()).getCompanyName());
  65. Integer totalNumber = dataShowTopVO.getTotalNumber() == null ? 0 : dataShowTopVO.getTotalNumber();
  66. Integer todayNumber = dataShowTopVO.getTodayNumber() == null ? 0 : dataShowTopVO.getTodayNumber();
  67. Integer totalDoubtNumber = dataShowTopVO.getTotalDoubtNumber() == null ? 0 : dataShowTopVO.getTotalDoubtNumber();
  68. Integer todayDoubtNumber = dataShowTopVO.getTodayDoubtNumber() == null ? 0 : dataShowTopVO.getTodayDoubtNumber();
  69. Integer totalArrestNumber = dataShowTopVO.getTotalArrestNumber() == null ? 0 : dataShowTopVO.getTotalArrestNumber();
  70. Integer todayArrestNumber = dataShowTopVO.getTodayArrestNumber() == null ? 0 : dataShowTopVO.getTodayArrestNumber();
  71. numberList.add(totalNumber + todayNumber);//之前盘查 + 今日
  72. doubtList.add(totalDoubtNumber + todayDoubtNumber);//之前存疑 + 今日
  73. arrestList.add(totalArrestNumber + todayArrestNumber);//之前抓捕 + 今日
  74. }
  75. WarFruitTopVO warFruitTopVO = new WarFruitTopVO();
  76. warFruitTopVO.setSiteList(siteList);
  77. warFruitTopVO.setNumberList(numberList);
  78. warFruitTopVO.setDoubtList(doubtList);
  79. warFruitTopVO.setArrestList(arrestList);
  80. return warFruitTopVO;
  81. }
  82. @Override
  83. public WarFruitTopVO policeTop10(WarFruitSearch warFruitSearch) {
  84. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  85. JPersonVO jPersonVO = this.rootTrue();
  86. PoliceSearch policeSearch = new PoliceSearch();
  87. policeSearch.setPageNum(0);
  88. policeSearch.setPageSize(10);
  89. policeSearch.setStartTime(warFruitSearch.getStartTime() == null?null:sdf.format(warFruitSearch.getStartTime()));
  90. policeSearch.setEndTime(warFruitSearch.getEndTime() == null?null:sdf.format(warFruitSearch.getStartTime()));
  91. policeSearch.setCompanyId(jPersonVO.getCompanyId() !=null ? jPersonVO.getCompanyId() : null);
  92. policeSearch.setBranchId(jPersonVO.getBranchId() !=null ? jPersonVO.getBranchId() : null);
  93. /*如果是一级账号的话 可以传入派出所*/
  94. if(jPersonVO.getType() == 1 && StringUtils.isNotEmpty(warFruitSearch.getCompanyId())){
  95. policeSearch.setCompanyId(warFruitSearch.getCompanyId());
  96. }
  97. Page<WarFruitVO> page = new Page<>(policeSearch.getPageNum(),policeSearch.getPageSize());
  98. IPage<WarFruitVO> pageList =warFruitMapper.policePageList(page,policeSearch);
  99. List<WarFruitVO> list = pageList.getRecords();
  100. List<String> siteList = new ArrayList<>();//横坐标
  101. List<Integer> numberList = new ArrayList<>();//盘查人数
  102. List<Integer> doubtList = new ArrayList<>();//存起人数
  103. List<Integer> arrestList = new ArrayList<>();//抓捕人数
  104. for (WarFruitVO warFruitVO : list) {
  105. siteList.add(warFruitVO.getXm() != null ?warFruitVO.getXm() :"");
  106. numberList.add(warFruitVO.getNumber());//盘查
  107. doubtList.add(warFruitVO.getDoubtNumber());//存疑
  108. arrestList.add(warFruitVO.getArrestNumber());//抓捕
  109. }
  110. WarFruitTopVO warFruitTopVO = new WarFruitTopVO();
  111. warFruitTopVO.setSiteList(siteList);
  112. warFruitTopVO.setNumberList(numberList);
  113. warFruitTopVO.setDoubtList(doubtList);
  114. warFruitTopVO.setArrestList(arrestList);
  115. return warFruitTopVO;
  116. }
  117. @Override
  118. public IPage<WarFruitVO> policePageList(PoliceSearch policeSearch) {
  119. return this.policePageListType(policeSearch,1);
  120. }
  121. private IPage<WarFruitVO> policePageListType(PoliceSearch policeSearch ,Integer type){
  122. JPersonVO jPersonVO = jPersonsService.getUserInfo();
  123. if(jPersonVO.getType() == 3)policeSearch.setCardId(jPersonVO.getCardId());
  124. if(jPersonVO.getType() == 1 && StringUtils.isNotEmpty(policeSearch.getCompanyId())){
  125. }
  126. else{
  127. policeSearch.setCompanyId(jPersonVO.getCompanyId() !=null ? jPersonVO.getCompanyId() : null);
  128. }
  129. policeSearch.setBranchId(jPersonVO.getBranchId() !=null ? jPersonVO.getBranchId() : null);
  130. policeSearch.setType(type);//需要照片
  131. Page<WarFruitVO> page = new Page<>(policeSearch.getPageNum(),policeSearch.getPageSize());
  132. IPage<WarFruitVO> warFruitVOIPage = warFruitMapper.policePageList(page, policeSearch);
  133. return warFruitVOIPage;
  134. }
  135. @Override
  136. public void excelWarningPageList(PoliceSearch policeSearch, HttpServletResponse response) {
  137. policeSearch.setPageSize(100000);
  138. IPage<WarFruitVO> warFruitVOIPage = this.policePageListType(policeSearch, 0);
  139. List<WarFruitVO> records = warFruitVOIPage.getRecords();
  140. List<PoliceWarFruitExcel> list = new ArrayList<>(records.size());
  141. Map<String, Company> companyMap = companyService.getCompanyMapByList(records, WarFruitVO::getCompanyId);
  142. for (WarFruitVO record : records) {
  143. PoliceWarFruitExcel policeWarFruitExcel = new PoliceWarFruitExcel();
  144. BeanUtils.copyProperties(record,policeWarFruitExcel);
  145. policeWarFruitExcel.setCompanyName(companyMap.get(record.getCompanyId()) == null?"" : companyMap.get(record.getCompanyId()).getCompanyName());
  146. list.add(policeWarFruitExcel);
  147. }
  148. try {
  149. String fileName = "民警战果统计-" + System.currentTimeMillis() + ".xlsx";
  150. response.setHeader("Content-disposition", "attachment;filename=" + URLEncoder.encode(fileName, "UTF-8"));
  151. response.addHeader("Access-Control-Expose-Headers", "Content-Disposition");
  152. response.setContentType("application/vnd.ms-excel;charset=UTF-8");
  153. EasyExcel.write(response.getOutputStream(), PoliceWarFruitExcel.class)
  154. // 导出文件名
  155. .autoCloseStream(Boolean.TRUE).sheet("民警战果统计")
  156. .doWrite(list);
  157. } catch (Exception e) {
  158. e.printStackTrace();
  159. }
  160. }
  161. @Override
  162. public void excelPoliceStationPageList(WarFruitSearch warFruitSearch, HttpServletResponse response) {
  163. JPersonVO jPersonVO = this.rootTrue();
  164. warFruitSearch.setLimitNumber(1000000);
  165. if(jPersonVO.getType() == 2){warFruitSearch.setCompanyId(jPersonVO.getCompanyId());}
  166. List<DataShowTopVO> dataShowList = dataShowMapper.polliceOfficeTop10(warFruitSearch);
  167. Map<String, Company> companyMap = companyService.getCompanyMapByList(dataShowList, DataShowTopVO::getCompanyId);
  168. List<PoliceStationWarFruitExcel> list = new ArrayList<>();
  169. for (DataShowTopVO record : dataShowList) {
  170. PoliceStationWarFruitExcel policeWarFruitExcel = new PoliceStationWarFruitExcel();
  171. policeWarFruitExcel.setCompanyName(companyMap.get(record.getCompanyId()) == null?"" : companyMap.get(record.getCompanyId()).getCompanyName());
  172. Integer totalNumber = record.getTotalNumber();
  173. Integer todayNumber = record.getTodayNumber();
  174. Integer totalDoubtNumber = record.getTotalDoubtNumber();
  175. Integer todayDoubtNumber = record.getTodayDoubtNumber();
  176. Integer totalArrestNumber = record.getTotalArrestNumber();
  177. Integer todayArrestNumber = record.getTodayArrestNumber();
  178. Integer totalExceptionNumber = record.getTotalWarningNumber();
  179. Integer todayExceptionNumber = record.getTotalWarningNumber();
  180. policeWarFruitExcel.setNumber(totalNumber + todayNumber);
  181. policeWarFruitExcel.setDoubtNumber(totalDoubtNumber + todayDoubtNumber);
  182. policeWarFruitExcel.setArrestNumber(totalArrestNumber + todayArrestNumber);
  183. policeWarFruitExcel.setExceptionNumber(totalExceptionNumber + todayExceptionNumber);
  184. policeWarFruitExcel.setPassNumber(totalNumber + todayNumber
  185. - totalDoubtNumber - todayArrestNumber
  186. - totalArrestNumber - todayArrestNumber
  187. - totalExceptionNumber - todayExceptionNumber);
  188. list.add(policeWarFruitExcel);
  189. }
  190. try {
  191. String fileName = "派出所统计-" + System.currentTimeMillis() + ".xlsx";
  192. response.setHeader("Content-disposition", "attachment;filename=" + URLEncoder.encode(fileName, "UTF-8"));
  193. response.addHeader("Access-Control-Expose-Headers", "Content-Disposition");
  194. response.setContentType("application/vnd.ms-excel;charset=UTF-8");
  195. EasyExcel.write(response.getOutputStream(), PoliceStationWarFruitExcel.class)
  196. // 导出文件名
  197. .autoCloseStream(Boolean.TRUE).sheet("派出所统计")
  198. .doWrite(list);
  199. } catch (Exception e) {
  200. e.printStackTrace();
  201. }
  202. }
  203. private JPersonVO rootTrue(){
  204. JPersonVO jPersonVO = jPersonsService.getUserInfo();
  205. Integer adminType = jPersonVO.getType();
  206. if (adminType != 1 && adminType != 2) {
  207. throw new ServiceException("没有权限");
  208. }
  209. return jPersonVO;
  210. }
  211. }