f60e86758616a2abd77873d95e87bb12856cd671.svn-base 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257
  1. package cn.com.goldenwater.dcproj.service.impl;
  2. import cn.com.goldenwater.core.service.AbstractCrudService;
  3. import cn.com.goldenwater.dcproj.dao.ChkSafeSpvsEnforceLawStatDao;
  4. import cn.com.goldenwater.dcproj.model.ChkSafeSpvsEnforceLawStat;
  5. import cn.com.goldenwater.dcproj.param.ChkSafeSpvsEnforceLawStatParam;
  6. import cn.com.goldenwater.dcproj.service.ChkSafeSpvsEnforceLawStatService;
  7. import cn.com.goldenwater.id.util.UuidUtil;
  8. import org.apache.poi.ss.usermodel.Cell;
  9. import org.apache.poi.ss.usermodel.Sheet;
  10. import org.apache.poi.ss.usermodel.Workbook;
  11. import org.apache.poi.ss.usermodel.WorkbookFactory;
  12. import org.slf4j.Logger;
  13. import org.slf4j.LoggerFactory;
  14. import org.springframework.beans.factory.annotation.Autowired;
  15. import org.springframework.beans.factory.annotation.Value;
  16. import org.springframework.stereotype.Service;
  17. import org.springframework.transaction.annotation.Transactional;
  18. import javax.servlet.http.HttpServletResponse;
  19. import java.io.File;
  20. import java.io.FileInputStream;
  21. import java.io.FileNotFoundException;
  22. import java.io.IOException;
  23. import java.io.OutputStream;
  24. import java.net.URLEncoder;
  25. import java.text.SimpleDateFormat;
  26. import java.util.ArrayList;
  27. import java.util.Date;
  28. import java.util.List;
  29. /**
  30. * 成都市水务安全生产'护安'监管执法专项行动统计汇总Service业务层处理
  31. *
  32. * @author ruoyi
  33. * @date 2023-02-22
  34. */
  35. @Service
  36. @Transactional
  37. public class ChkSafeSpvsEnforceLawStatServiceImpl extends AbstractCrudService<ChkSafeSpvsEnforceLawStat, ChkSafeSpvsEnforceLawStatParam> implements ChkSafeSpvsEnforceLawStatService
  38. {
  39. private Logger logger = LoggerFactory.getLogger(getClass());
  40. @Autowired
  41. private ChkSafeSpvsEnforceLawStatDao chkSafeSpvsEnforceLawStatDao;
  42. @Value("${export.templatePath}")
  43. private String templatePath;
  44. /**
  45. * 导出模板名称
  46. * 监管执法专项行动 统计汇总表
  47. */
  48. private String templateName = "chkSafeSpvsEnforceLawStatExport.xls";
  49. public ChkSafeSpvsEnforceLawStatServiceImpl(ChkSafeSpvsEnforceLawStatDao chkSafeSpvsEnforceLawStatDao) {
  50. super(chkSafeSpvsEnforceLawStatDao);
  51. this.chkSafeSpvsEnforceLawStatDao = chkSafeSpvsEnforceLawStatDao;
  52. }
  53. /**
  54. * 增加成都市水务安全生产'护安'监管执法专项行动统计汇总
  55. *
  56. * @return 成都市水务安全生产'护安'监管执法专项行动统计汇总
  57. */
  58. @Override
  59. public int insert(ChkSafeSpvsEnforceLawStat chkSafeSpvsEnforceLawStat) {
  60. logger.debug("ChkSafeSpvsEnforceLawStat 新增");
  61. String uuid = UuidUtil.uuid(); // 生成uuid
  62. chkSafeSpvsEnforceLawStat.setId(uuid);
  63. chkSafeSpvsEnforceLawStat.setIntm(new Date());
  64. chkSafeSpvsEnforceLawStat.setUptm(chkSafeSpvsEnforceLawStat.getIntm());
  65. chkSafeSpvsEnforceLawStat.setDataStat("0");
  66. //填报状态 1新增 2上报
  67. chkSafeSpvsEnforceLawStat.setFillRepoStat("1");
  68. chkSafeSpvsEnforceLawStat.setChkSubmitDttm(chkSafeSpvsEnforceLawStat.getIntm());
  69. return this.chkSafeSpvsEnforceLawStatDao.insert(chkSafeSpvsEnforceLawStat);
  70. }
  71. /**
  72. * 批量添加
  73. * @param chkSafeSpvsEnforceLawStatList
  74. * @return
  75. */
  76. @Override
  77. public int insertBatchFile(List<ChkSafeSpvsEnforceLawStat> chkSafeSpvsEnforceLawStatList){
  78. return this.chkSafeSpvsEnforceLawStatDao.insertBatchFile(chkSafeSpvsEnforceLawStatList);
  79. }
  80. /**
  81. * 更新 成都市水务安全生产'护安'监管执法专项行动统计汇总
  82. * 主键更新
  83. * @param chkSafeSpvsEnforceLawStat 成都市水务安全生产'护安'监管执法专项行动统计汇总
  84. * @return 成都市水务安全生产'护安'监管执法专项行动统计汇总
  85. */
  86. @Override
  87. public int update(ChkSafeSpvsEnforceLawStat chkSafeSpvsEnforceLawStat) {
  88. logger.debug("ChkSafeSpvsEnforceLawStat 更新");
  89. chkSafeSpvsEnforceLawStat.setUptm(new Date());
  90. return this.chkSafeSpvsEnforceLawStatDao.update(chkSafeSpvsEnforceLawStat);
  91. }
  92. /**
  93. * 主键删除 成都市水务安全生产'护安'监管执法专项行动统计汇总
  94. *
  95. * @param id 成都市水务安全生产'护安'监管执法专项行动统计汇总主键
  96. * @return 成都市水务安全生产'护安'监管执法专项行动统计汇总
  97. */
  98. @Override
  99. public int delete(String id) {
  100. logger.debug("ChkSafeSpvsEnforceLawStat 删除");
  101. return this.chkSafeSpvsEnforceLawStatDao.delete(id);
  102. }
  103. /**
  104. * 导出 成都市水务安全生产'护安'监管执法专项行动统计汇总
  105. *
  106. * @param chkSafeSpvsEnforceLawStatParam 筛选查询参数
  107. * @param response
  108. */
  109. @Override
  110. public void export(ChkSafeSpvsEnforceLawStatParam chkSafeSpvsEnforceLawStatParam, HttpServletResponse response) {
  111. logger.debug("ChkSafeSpvsEnforceLawStat 导出");
  112. List<ChkSafeSpvsEnforceLawStat> subTypeList = this.chkSafeSpvsEnforceLawStatDao.querySubTypeTotal(chkSafeSpvsEnforceLawStatParam);
  113. List<ChkSafeSpvsEnforceLawStat> projTypeList = this.chkSafeSpvsEnforceLawStatDao.queryProjTypeTotal(chkSafeSpvsEnforceLawStatParam);
  114. List<ChkSafeSpvsEnforceLawStat> resultList = new ArrayList<>();
  115. if(null != subTypeList ){
  116. resultList.addAll(subTypeList);
  117. }
  118. if(null !=projTypeList){
  119. resultList.addAll(projTypeList);
  120. }
  121. String fileName = templatePath + File.separator + templateName ;
  122. File file = new File(fileName);
  123. if(file.exists()){
  124. // 模板存在
  125. try {
  126. FileInputStream inputStream = new FileInputStream(file);
  127. Workbook workbook = WorkbookFactory.create(inputStream);
  128. exportFile(workbook, resultList, chkSafeSpvsEnforceLawStatParam);
  129. writeToResponse(response, workbook, "成都市水务安全生产监管执法专项行动统计汇总表.xls");
  130. } catch (FileNotFoundException e) {
  131. e.printStackTrace();
  132. } catch (IOException e) {
  133. e.printStackTrace();
  134. }
  135. }else {
  136. logger.error("导出模板不存在");
  137. }
  138. }
  139. /**
  140. * 把数据写入excel
  141. * @param xssfWorkbook
  142. * @param resultList
  143. */
  144. private void exportFile(Workbook xssfWorkbook, List<ChkSafeSpvsEnforceLawStat> resultList , ChkSafeSpvsEnforceLawStatParam chkSafeSpvsEnforceLawStatParam){
  145. Sheet sheet = xssfWorkbook.getSheetAt(0);
  146. Date chkSubmitDttm = chkSafeSpvsEnforceLawStatParam.getChkSubmitDttm();
  147. if(null == chkSubmitDttm) {
  148. chkSubmitDttm = new Date();
  149. }
  150. SimpleDateFormat sdf = new SimpleDateFormat("yyyy年M月d日");
  151. String chkSubmitDttmStr = sdf.format(chkSubmitDttm);
  152. String title = String.format("成都市水务安全生产“护安%s”监管执法专项行动统计汇总表", chkSubmitDttmStr.substring(0,4));
  153. setCellValue(sheet,0,0,title);
  154. String titleSub = chkSubmitDttmStr ;
  155. setCellValue(sheet,1,0,titleSub);
  156. SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy.M.d");
  157. String chkSubmitDttmStr2 = sdf2.format(chkSubmitDttm);
  158. setCellValue(sheet,2,18,chkSubmitDttmStr2);
  159. if(resultList.size()>0){
  160. if(!"2".equals(chkSafeSpvsEnforceLawStatParam.getFillRepoStat())){
  161. String submitDept = resultList.get(0).getChkSubmitDept();
  162. setCellValue(sheet,2,3,submitDept);
  163. }
  164. // 求合计
  165. ChkSafeSpvsEnforceLawStat total = countTotal(resultList);
  166. resultList.add(total);
  167. for(int i=0;i<resultList.size();i++){
  168. setAllCell(sheet,i,resultList.get(i));
  169. }
  170. }
  171. }
  172. private ChkSafeSpvsEnforceLawStat countTotal(List<ChkSafeSpvsEnforceLawStat> resultList){
  173. ChkSafeSpvsEnforceLawStat total = new ChkSafeSpvsEnforceLawStat();
  174. total.setChkGroupNum(resultList.stream().mapToLong(m->m.getChkGroupNum()).sum());
  175. total.setChkPersTime(resultList.stream().mapToLong(m->m.getChkPersTime()).sum());
  176. total.setChkSafeExpertTime(resultList.stream().mapToLong(m->m.getChkSafeExpertTime()).sum());
  177. total.setChkUnitNum(resultList.stream().mapToLong(m->m.getChkUnitNum()).sum());
  178. total.setChkFindDangerTotalNum(resultList.stream().mapToLong(m->m.getChkFindDangerTotalNum()).sum());
  179. total.setChkFindDangerGeneralNum(resultList.stream().mapToLong(m->m.getChkFindDangerGeneralNum()).sum());
  180. total.setChkFindDangerMajorNum(resultList.stream().mapToLong(m->m.getChkFindDangerMajorNum()).sum());
  181. total.setChkRectDangerTotalNum(resultList.stream().mapToLong(m->m.getChkRectDangerTotalNum()).sum());
  182. total.setChkRectDangerGeneralNum(resultList.stream().mapToLong(m->m.getChkRectDangerGeneralNum()).sum());
  183. total.setChkRectDangerMajorNum(resultList.stream().mapToLong(m->m.getChkRectDangerMajorNum()).sum());
  184. total.setSceneEmergencyDisposal(resultList.stream().mapToLong(m->m.getSceneEmergencyDisposal()).sum());
  185. total.setPenaltyRecord(resultList.stream().mapToLong(m->m.getPenaltyRecord()).sum());
  186. total.setPenaltyImposeFine(String.valueOf(resultList.stream().mapToDouble(m->Double.parseDouble(m.getPenaltyImposeFine())).sum()));
  187. total.setPenaltyShutProd(resultList.stream().mapToLong(m->m.getPenaltyShutProd()).sum());
  188. total.setPenaltySuspendLicense(resultList.stream().mapToLong(m->m.getPenaltySuspendLicense()).sum());
  189. total.setIssueEnforceLawWrit(resultList.stream().mapToLong(m->m.getIssueEnforceLawWrit()).sum());
  190. total.setInformExposeFreq(resultList.stream().mapToLong(m->m.getInformExposeFreq()).sum());
  191. total.setHandOverCaseGeneral(resultList.stream().mapToLong(m->m.getHandOverCaseGeneral()).sum());
  192. total.setHandOverCaseMajor(resultList.stream().mapToLong(m->m.getHandOverCaseMajor()).sum());
  193. return total;
  194. }
  195. private void setAllCell(Sheet sheet, int i,ChkSafeSpvsEnforceLawStat lawStat){
  196. setCellValue(sheet, 6+i, 2,String.valueOf(lawStat.getChkGroupNum()));
  197. setCellValue(sheet, 6+i, 3,String.valueOf(lawStat.getChkPersTime()));
  198. setCellValue(sheet, 6+i, 4,String.valueOf(lawStat.getChkSafeExpertTime()));
  199. setCellValue(sheet, 6+i, 5,String.valueOf(lawStat.getChkUnitNum()));
  200. setCellValue(sheet, 6+i, 6,String.valueOf(lawStat.getChkFindDangerTotalNum()));
  201. setCellValue(sheet, 6+i, 7,String.valueOf(lawStat.getChkFindDangerGeneralNum()));
  202. setCellValue(sheet, 6+i, 8,String.valueOf(lawStat.getChkFindDangerMajorNum()));
  203. setCellValue(sheet, 6+i, 9,String.valueOf(lawStat.getChkRectDangerTotalNum()));
  204. setCellValue(sheet, 6+i, 10,String.valueOf(lawStat.getChkRectDangerGeneralNum()));
  205. setCellValue(sheet, 6+i, 11,String.valueOf(lawStat.getChkRectDangerMajorNum()));
  206. setCellValue(sheet, 6+i, 12,String.valueOf(lawStat.getSceneEmergencyDisposal()));
  207. setCellValue(sheet, 6+i, 13,String.valueOf(lawStat.getPenaltyRecord()));
  208. setCellValue(sheet, 6+i, 14,String.valueOf(lawStat.getPenaltyImposeFine()));
  209. setCellValue(sheet, 6+i, 15,String.valueOf(lawStat.getPenaltyShutProd()));
  210. setCellValue(sheet, 6+i, 16,String.valueOf(lawStat.getPenaltySuspendLicense()));
  211. setCellValue(sheet, 6+i, 17,String.valueOf(lawStat.getIssueEnforceLawWrit()));
  212. setCellValue(sheet, 6+i, 18,String.valueOf(lawStat.getInformExposeFreq()));
  213. setCellValue(sheet, 6+i, 19,String.valueOf(lawStat.getHandOverCaseGeneral()));
  214. setCellValue(sheet, 6+i, 20,String.valueOf(lawStat.getHandOverCaseMajor()));
  215. }
  216. private void setCellValue(Sheet sheet, int rownum, int cellnum, String value) {
  217. Cell cell = sheet.getRow(rownum).getCell(cellnum);
  218. cell.setCellValue(value);
  219. }
  220. private void writeToResponse(HttpServletResponse response, Workbook workbook, String name) throws IOException {
  221. // 修改模板内容导出新模板
  222. response.setContentType("application/x-msdownload");
  223. String fileNameURL = URLEncoder.encode(name, "UTF-8");
  224. response.setHeader("Content-disposition", "attachment;filename=" + fileNameURL + ";filename*=utf-8''" + fileNameURL);
  225. OutputStream out = response.getOutputStream();
  226. workbook.write(out);
  227. out.flush();
  228. out.close();
  229. }
  230. /**
  231. * 批量上报
  232. * @param ids
  233. * @return
  234. */
  235. @Override
  236. public int batchReportByIds(String[] ids ){
  237. return this.chkSafeSpvsEnforceLawStatDao.batchReportByIds(ids,new Date());
  238. }
  239. }