package cn.com.goldenwater.dcproj.service.impl; import cn.com.goldenwater.core.service.AbstractCrudService; import cn.com.goldenwater.dcproj.dao.ChkSafeSpvsEnforceLawStatDao; import cn.com.goldenwater.dcproj.model.ChkSafeSpvsEnforceLawStat; import cn.com.goldenwater.dcproj.param.ChkSafeSpvsEnforceLawStatParam; import cn.com.goldenwater.dcproj.service.ChkSafeSpvsEnforceLawStatService; import cn.com.goldenwater.id.util.UuidUtil; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.ss.usermodel.WorkbookFactory; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.servlet.http.HttpServletResponse; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.OutputStream; import java.net.URLEncoder; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; /** * 成都市水务安全生产'护安'监管执法专项行动统计汇总Service业务层处理 * * @author ruoyi * @date 2023-02-22 */ @Service @Transactional public class ChkSafeSpvsEnforceLawStatServiceImpl extends AbstractCrudService implements ChkSafeSpvsEnforceLawStatService { private Logger logger = LoggerFactory.getLogger(getClass()); @Autowired private ChkSafeSpvsEnforceLawStatDao chkSafeSpvsEnforceLawStatDao; @Value("${export.templatePath}") private String templatePath; /** * 导出模板名称 * 监管执法专项行动 统计汇总表 */ private String templateName = "chkSafeSpvsEnforceLawStatExport.xls"; public ChkSafeSpvsEnforceLawStatServiceImpl(ChkSafeSpvsEnforceLawStatDao chkSafeSpvsEnforceLawStatDao) { super(chkSafeSpvsEnforceLawStatDao); this.chkSafeSpvsEnforceLawStatDao = chkSafeSpvsEnforceLawStatDao; } /** * 增加成都市水务安全生产'护安'监管执法专项行动统计汇总 * * @return 成都市水务安全生产'护安'监管执法专项行动统计汇总 */ @Override public int insert(ChkSafeSpvsEnforceLawStat chkSafeSpvsEnforceLawStat) { logger.debug("ChkSafeSpvsEnforceLawStat 新增"); String uuid = UuidUtil.uuid(); // 生成uuid chkSafeSpvsEnforceLawStat.setId(uuid); chkSafeSpvsEnforceLawStat.setIntm(new Date()); chkSafeSpvsEnforceLawStat.setUptm(chkSafeSpvsEnforceLawStat.getIntm()); chkSafeSpvsEnforceLawStat.setDataStat("0"); //填报状态 1新增 2上报 chkSafeSpvsEnforceLawStat.setFillRepoStat("1"); chkSafeSpvsEnforceLawStat.setChkSubmitDttm(chkSafeSpvsEnforceLawStat.getIntm()); return this.chkSafeSpvsEnforceLawStatDao.insert(chkSafeSpvsEnforceLawStat); } /** * 批量添加 * @param chkSafeSpvsEnforceLawStatList * @return */ @Override public int insertBatchFile(List chkSafeSpvsEnforceLawStatList){ return this.chkSafeSpvsEnforceLawStatDao.insertBatchFile(chkSafeSpvsEnforceLawStatList); } /** * 更新 成都市水务安全生产'护安'监管执法专项行动统计汇总 * 主键更新 * @param chkSafeSpvsEnforceLawStat 成都市水务安全生产'护安'监管执法专项行动统计汇总 * @return 成都市水务安全生产'护安'监管执法专项行动统计汇总 */ @Override public int update(ChkSafeSpvsEnforceLawStat chkSafeSpvsEnforceLawStat) { logger.debug("ChkSafeSpvsEnforceLawStat 更新"); chkSafeSpvsEnforceLawStat.setUptm(new Date()); return this.chkSafeSpvsEnforceLawStatDao.update(chkSafeSpvsEnforceLawStat); } /** * 主键删除 成都市水务安全生产'护安'监管执法专项行动统计汇总 * * @param id 成都市水务安全生产'护安'监管执法专项行动统计汇总主键 * @return 成都市水务安全生产'护安'监管执法专项行动统计汇总 */ @Override public int delete(String id) { logger.debug("ChkSafeSpvsEnforceLawStat 删除"); return this.chkSafeSpvsEnforceLawStatDao.delete(id); } /** * 导出 成都市水务安全生产'护安'监管执法专项行动统计汇总 * * @param chkSafeSpvsEnforceLawStatParam 筛选查询参数 * @param response */ @Override public void export(ChkSafeSpvsEnforceLawStatParam chkSafeSpvsEnforceLawStatParam, HttpServletResponse response) { logger.debug("ChkSafeSpvsEnforceLawStat 导出"); List subTypeList = this.chkSafeSpvsEnforceLawStatDao.querySubTypeTotal(chkSafeSpvsEnforceLawStatParam); List projTypeList = this.chkSafeSpvsEnforceLawStatDao.queryProjTypeTotal(chkSafeSpvsEnforceLawStatParam); List resultList = new ArrayList<>(); if(null != subTypeList ){ resultList.addAll(subTypeList); } if(null !=projTypeList){ resultList.addAll(projTypeList); } String fileName = templatePath + File.separator + templateName ; File file = new File(fileName); if(file.exists()){ // 模板存在 try { FileInputStream inputStream = new FileInputStream(file); Workbook workbook = WorkbookFactory.create(inputStream); exportFile(workbook, resultList, chkSafeSpvsEnforceLawStatParam); writeToResponse(response, workbook, "成都市水务安全生产监管执法专项行动统计汇总表.xls"); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } }else { logger.error("导出模板不存在"); } } /** * 把数据写入excel * @param xssfWorkbook * @param resultList */ private void exportFile(Workbook xssfWorkbook, List resultList , ChkSafeSpvsEnforceLawStatParam chkSafeSpvsEnforceLawStatParam){ Sheet sheet = xssfWorkbook.getSheetAt(0); Date chkSubmitDttm = chkSafeSpvsEnforceLawStatParam.getChkSubmitDttm(); if(null == chkSubmitDttm) { chkSubmitDttm = new Date(); } SimpleDateFormat sdf = new SimpleDateFormat("yyyy年M月d日"); String chkSubmitDttmStr = sdf.format(chkSubmitDttm); String title = String.format("成都市水务安全生产“护安%s”监管执法专项行动统计汇总表", chkSubmitDttmStr.substring(0,4)); setCellValue(sheet,0,0,title); String titleSub = chkSubmitDttmStr ; setCellValue(sheet,1,0,titleSub); SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy.M.d"); String chkSubmitDttmStr2 = sdf2.format(chkSubmitDttm); setCellValue(sheet,2,18,chkSubmitDttmStr2); if(resultList.size()>0){ if(!"2".equals(chkSafeSpvsEnforceLawStatParam.getFillRepoStat())){ String submitDept = resultList.get(0).getChkSubmitDept(); setCellValue(sheet,2,3,submitDept); } // 求合计 ChkSafeSpvsEnforceLawStat total = countTotal(resultList); resultList.add(total); for(int i=0;i resultList){ ChkSafeSpvsEnforceLawStat total = new ChkSafeSpvsEnforceLawStat(); total.setChkGroupNum(resultList.stream().mapToLong(m->m.getChkGroupNum()).sum()); total.setChkPersTime(resultList.stream().mapToLong(m->m.getChkPersTime()).sum()); total.setChkSafeExpertTime(resultList.stream().mapToLong(m->m.getChkSafeExpertTime()).sum()); total.setChkUnitNum(resultList.stream().mapToLong(m->m.getChkUnitNum()).sum()); total.setChkFindDangerTotalNum(resultList.stream().mapToLong(m->m.getChkFindDangerTotalNum()).sum()); total.setChkFindDangerGeneralNum(resultList.stream().mapToLong(m->m.getChkFindDangerGeneralNum()).sum()); total.setChkFindDangerMajorNum(resultList.stream().mapToLong(m->m.getChkFindDangerMajorNum()).sum()); total.setChkRectDangerTotalNum(resultList.stream().mapToLong(m->m.getChkRectDangerTotalNum()).sum()); total.setChkRectDangerGeneralNum(resultList.stream().mapToLong(m->m.getChkRectDangerGeneralNum()).sum()); total.setChkRectDangerMajorNum(resultList.stream().mapToLong(m->m.getChkRectDangerMajorNum()).sum()); total.setSceneEmergencyDisposal(resultList.stream().mapToLong(m->m.getSceneEmergencyDisposal()).sum()); total.setPenaltyRecord(resultList.stream().mapToLong(m->m.getPenaltyRecord()).sum()); total.setPenaltyImposeFine(String.valueOf(resultList.stream().mapToDouble(m->Double.parseDouble(m.getPenaltyImposeFine())).sum())); total.setPenaltyShutProd(resultList.stream().mapToLong(m->m.getPenaltyShutProd()).sum()); total.setPenaltySuspendLicense(resultList.stream().mapToLong(m->m.getPenaltySuspendLicense()).sum()); total.setIssueEnforceLawWrit(resultList.stream().mapToLong(m->m.getIssueEnforceLawWrit()).sum()); total.setInformExposeFreq(resultList.stream().mapToLong(m->m.getInformExposeFreq()).sum()); total.setHandOverCaseGeneral(resultList.stream().mapToLong(m->m.getHandOverCaseGeneral()).sum()); total.setHandOverCaseMajor(resultList.stream().mapToLong(m->m.getHandOverCaseMajor()).sum()); return total; } private void setAllCell(Sheet sheet, int i,ChkSafeSpvsEnforceLawStat lawStat){ setCellValue(sheet, 6+i, 2,String.valueOf(lawStat.getChkGroupNum())); setCellValue(sheet, 6+i, 3,String.valueOf(lawStat.getChkPersTime())); setCellValue(sheet, 6+i, 4,String.valueOf(lawStat.getChkSafeExpertTime())); setCellValue(sheet, 6+i, 5,String.valueOf(lawStat.getChkUnitNum())); setCellValue(sheet, 6+i, 6,String.valueOf(lawStat.getChkFindDangerTotalNum())); setCellValue(sheet, 6+i, 7,String.valueOf(lawStat.getChkFindDangerGeneralNum())); setCellValue(sheet, 6+i, 8,String.valueOf(lawStat.getChkFindDangerMajorNum())); setCellValue(sheet, 6+i, 9,String.valueOf(lawStat.getChkRectDangerTotalNum())); setCellValue(sheet, 6+i, 10,String.valueOf(lawStat.getChkRectDangerGeneralNum())); setCellValue(sheet, 6+i, 11,String.valueOf(lawStat.getChkRectDangerMajorNum())); setCellValue(sheet, 6+i, 12,String.valueOf(lawStat.getSceneEmergencyDisposal())); setCellValue(sheet, 6+i, 13,String.valueOf(lawStat.getPenaltyRecord())); setCellValue(sheet, 6+i, 14,String.valueOf(lawStat.getPenaltyImposeFine())); setCellValue(sheet, 6+i, 15,String.valueOf(lawStat.getPenaltyShutProd())); setCellValue(sheet, 6+i, 16,String.valueOf(lawStat.getPenaltySuspendLicense())); setCellValue(sheet, 6+i, 17,String.valueOf(lawStat.getIssueEnforceLawWrit())); setCellValue(sheet, 6+i, 18,String.valueOf(lawStat.getInformExposeFreq())); setCellValue(sheet, 6+i, 19,String.valueOf(lawStat.getHandOverCaseGeneral())); setCellValue(sheet, 6+i, 20,String.valueOf(lawStat.getHandOverCaseMajor())); } private void setCellValue(Sheet sheet, int rownum, int cellnum, String value) { Cell cell = sheet.getRow(rownum).getCell(cellnum); cell.setCellValue(value); } private void writeToResponse(HttpServletResponse response, Workbook workbook, String name) throws IOException { // 修改模板内容导出新模板 response.setContentType("application/x-msdownload"); String fileNameURL = URLEncoder.encode(name, "UTF-8"); response.setHeader("Content-disposition", "attachment;filename=" + fileNameURL + ";filename*=utf-8''" + fileNameURL); OutputStream out = response.getOutputStream(); workbook.write(out); out.flush(); out.close(); } /** * 批量上报 * @param ids * @return */ @Override public int batchReportByIds(String[] ids ){ return this.chkSafeSpvsEnforceLawStatDao.batchReportByIds(ids,new Date()); } }