| | |
| | | import com.alibaba.excel.ExcelWriter; |
| | | import com.alibaba.excel.write.metadata.WriteSheet; |
| | | import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy; |
| | | import com.alibaba.fastjson.JSON; |
| | | import com.alibaba.fastjson.JSONArray; |
| | | import com.alibaba.fastjson.JSONObject; |
| | | //import com.kmood.datahandle.DocumentProducer; |
| | |
| | | import com.panzhihua.common.listen.ComMngPopulationServeExcelListen; |
| | | import com.panzhihua.common.listen.ComSwRotaExcelListen; |
| | | import com.panzhihua.common.model.dtos.community.*; |
| | | import com.panzhihua.common.model.vos.LiveVO; |
| | | import com.panzhihua.common.model.vos.R; |
| | | import com.panzhihua.common.model.vos.WeatherVO; |
| | | import com.panzhihua.common.model.vos.community.*; |
| | | import com.panzhihua.common.model.vos.partybuilding.PartyBuildingComPbDynVO; |
| | | import com.panzhihua.common.model.vos.shop.ComShopSysConfVO; |
| | | import com.panzhihua.common.service.community.CommunityService; |
| | | import com.panzhihua.common.service.partybuilding.PartyBuildingService; |
| | | import com.panzhihua.common.utlis.HttpUtils; |
| | | import com.panzhihua.common.utlis.SFTPUtil; |
| | | import com.panzhihua.common.utlis.StringUtils; |
| | | import com.panzhihua.community_backstage.excel.CustomSheetWriteHandler; |
| | | //import freemarker.template.Configuration; |
| | | //import freemarker.template.Template; |
| | | //import freemarker.template.Version; |
| | | import freemarker.template.Configuration; |
| | | import freemarker.template.Template; |
| | | import freemarker.template.Version; |
| | | import io.swagger.annotations.Api; |
| | | import io.swagger.annotations.ApiOperation; |
| | | import lombok.extern.slf4j.Slf4j; |
| | |
| | | import org.springframework.web.bind.annotation.*; |
| | | import org.springframework.web.multipart.MultipartFile; |
| | | import sun.applet.Main; |
| | | import sun.misc.BASE64Encoder; |
| | | |
| | | import javax.annotation.Resource; |
| | | import javax.servlet.http.HttpServletRequest; |
| | | import java.io.*; |
| | | import java.net.URL; |
| | | import java.net.URLConnection; |
| | | import java.text.SimpleDateFormat; |
| | | import java.util.*; |
| | | import java.io.File; |
| | |
| | | } |
| | | } |
| | | |
| | | // @ApiOperation(value = "导出图片测试") |
| | | // @GetMapping("/export/picture") |
| | | // public static void testPictureOutModel () { |
| | | // try { |
| | | // Class<? extends Class> aClass = Main.class.getClass(); |
| | | // ClassLoader classLoader = aClass.getClassLoader(); |
| | | // if (classLoader == null){ |
| | | // classLoader = ClassLoader.getSystemClassLoader(); |
| | | // } |
| | | // String ActualModelPath = classLoader.getResource("model/").toURI().getPath(); |
| | | // String xmlPath = classLoader.getResource("model").toURI().getPath(); |
| | | // String ExportFilePath = classLoader.getResource(".").toURI().getPath() + "/picture.doc"; |
| | | // |
| | | // HashMap<String, Object> map = new HashMap<>(); |
| | | // //读取输出图片 |
| | | // URL introUrl = classLoader.getResource("./picture/微信图片_20210805165019.jpg"); |
| | | //// URL codeUrl = classLoader.getResource("./picture/exportTestPicture-code.png"); |
| | | //// URL titleUrl = classLoader.getResource("./picture/exportTestPicture-title.png"); |
| | | // |
| | | // String intro = Base64.getEncoder().encodeToString(FileUtils.readToBytesByFilepath(introUrl.toURI().getPath())); |
| | | // map.put("intro", intro); |
| | | //// String code = Base64.getEncoder().encodeToString(FileUtils.readToBytesByFilepath(codeUrl.toURI().getPath())); |
| | | //// map.put("code", code); |
| | | //// map.put("title", Base64.getEncoder().encodeToString(FileUtils.readToBytesByFilepath(titleUrl.toURI().getPath()))); |
| | | // //编译输出 |
| | | // DocumentProducer dp = new DocumentProducer(ActualModelPath); |
| | | //// String complie = dp.Complie(xmlPath, "picture.xml", true); |
| | | // dp.produce(map, ExportFilePath); |
| | | // } catch (Exception e) { |
| | | // e.printStackTrace(); |
| | | // } |
| | | // } |
| | | // |
| | | // @ApiOperation(value = "导出图片测试") |
| | | // @PostMapping("/export/picture") |
| | | // public void test(@RequestParam(value = "id") Long id){ |
| | | // Long communityId = this.getLoginUserInfo().getCommunityId(); |
| | | // Map<String,Object> dataMap = new HashMap<String, Object>(); |
| | | // try { |
| | | // ComSwSafetyWorkRecordVO comSwSafetyWorkRecordVO = JSONObject.parseObject(JSONObject.toJSONString(communityService.detailSafetyWorkRecord(id, communityId).getData()),ComSwSafetyWorkRecordVO.class); |
| | | // //日期 |
| | | // dataMap.put("date", new SimpleDateFormat("yyyy-MM-dd").format(comSwSafetyWorkRecordVO.getPatrolTime())); |
| | | // Configuration configuration = new Configuration(new Version("2.3.0")); |
| | | // configuration.setDefaultEncoding("utf-8"); |
| | | // |
| | | // /** |
| | | // * 以下是两种指定ftl文件所在目录路径的方式,注意这两种方式都是 |
| | | // * 指定ftl文件所在目录的路径,而不是ftl文件的路径 |
| | | // */ |
| | | // //指定路径的第一种方式(根据某个类的相对路径指定) |
| | | //// configuration.setClassForTemplateLoading(this.getClass(), ""); |
| | | // |
| | | // //指定路径的第二种方式,我的路径是C:/a.ftl |
| | | // configuration.setDirectoryForTemplateLoading(new File("c:/")); |
| | | // |
| | | // //输出文档路径及名称 |
| | | // File outFile = new File("D:/报销信息导出.doc"); |
| | | // |
| | | // //以utf-8的编码读取ftl文件 |
| | | // Template template = configuration.getTemplate("报告.ftl", "utf-8"); |
| | | // Writer out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outFile), "utf-8"), 10240); |
| | | // template.process(dataMap, out); |
| | | // out.close(); |
| | | // } catch (Exception e) { |
| | | // e.printStackTrace(); |
| | | // } |
| | | // } |
| | | @ApiOperation(value = "下载安全工作记录报告") |
| | | @PostMapping("/export/safetyWorkRecord") |
| | | public R exportSafetyWorkRecord(@RequestBody List<Long> ids){ |
| | | Long communityId = this.getLoginUserInfo().getCommunityId(); |
| | | List<String> downLoadUrl = new ArrayList<>(); |
| | | try { |
| | | for (Long id : ids){ |
| | | SFTPUtil sftp = new SFTPUtil(userName, password, host, port); |
| | | sftp.login(); |
| | | Map<String,Object> dataMap = new HashMap<String, Object>(); |
| | | ComSwSafetyWorkRecordVO comSwSafetyWorkRecordVO = JSONObject.parseObject(JSONObject.toJSONString(communityService.detailSafetyWorkRecord(id, communityId).getData()),ComSwSafetyWorkRecordVO.class); |
| | | //生成动态模板excel通过ftp工具上传到主节点,然后返回模板下载地址 |
| | | String ftpUrl = "/mnt/data/web/excel/"; |
| | | String name = "安全工作记录_" + comSwSafetyWorkRecordVO.getId() + ".doc"; |
| | | boolean existDir = sftp.isExistDir(ftpUrl + name); |
| | | if (!existDir) { |
| | | String property = System.getProperty("user.dir"); |
| | | String fileName = property + File.separator + name; |
| | | // 这里 需要指定写用哪个class去写 |
| | | ExcelWriter excelWriter = null; |
| | | InputStream inputStream = null; |
| | | try { |
| | | //日期 |
| | | dataMap.put("date", new SimpleDateFormat("yyyy-MM-dd").format(comSwSafetyWorkRecordVO.getPatrolTime())); |
| | | //巡查类型 |
| | | dataMap.put("patrolType", comSwSafetyWorkRecordVO.getPatrolType()); |
| | | //社区名称 |
| | | dataMap.put("communityName", comSwSafetyWorkRecordVO.getCommunityName()); |
| | | //地址 |
| | | dataMap.put("address", comSwSafetyWorkRecordVO.getAddress()); |
| | | //记录内容 |
| | | dataMap.put("recordContent", comSwSafetyWorkRecordVO.getRecordContent()); |
| | | //发现记录 |
| | | dataMap.put("findRecord", comSwSafetyWorkRecordVO.getFindRecord()); |
| | | //记录照片 |
| | | List<String> photo = new ArrayList<>(); |
| | | if (StringUtils.isNotEmpty(comSwSafetyWorkRecordVO.getRecordPhoto())) { |
| | | photo = Arrays.asList(comSwSafetyWorkRecordVO.getRecordPhoto().split(",")); |
| | | } |
| | | if (photo.size() != 0 && null != photo) { |
| | | if (photo.size() == 1){ |
| | | for (int i = 0; i < 9; i++){ |
| | | if (i < 1) { |
| | | downloadPicture(photo.get(i), comSwSafetyWorkRecordVO.getId() + "_" + i); |
| | | dataMap.put("imgStr" + (i + 1), getImageStr("d:/" + comSwSafetyWorkRecordVO.getId() + "_" + i + ".jpg")); |
| | | }else { |
| | | dataMap.put("imgStr" + (i + 1), getImageStr("d:/blank.jpg")); |
| | | } |
| | | } |
| | | } |
| | | if (photo.size() == 2){ |
| | | for (int i = 0; i < 9; i++){ |
| | | if (i < 2) { |
| | | downloadPicture(photo.get(i), comSwSafetyWorkRecordVO.getId() + "_" + i); |
| | | dataMap.put("imgStr" + (i + 1), getImageStr("d:/" + comSwSafetyWorkRecordVO.getId() + "_" + i + ".jpg")); |
| | | }else { |
| | | dataMap.put("imgStr" + (i + 1), getImageStr("d:/blank.jpg")); |
| | | } |
| | | } |
| | | } |
| | | if (photo.size() == 3){ |
| | | for (int i = 0; i < 9; i++){ |
| | | if (i < 3) { |
| | | downloadPicture(photo.get(i), comSwSafetyWorkRecordVO.getId() + "_" + i); |
| | | dataMap.put("imgStr" + (i + 1), getImageStr("d:/" + comSwSafetyWorkRecordVO.getId() + "_" + i + ".jpg")); |
| | | }else { |
| | | dataMap.put("imgStr" + (i + 1), getImageStr("d:/blank.jpg")); |
| | | } |
| | | } |
| | | } |
| | | if (photo.size() == 4){ |
| | | for (int i = 0; i < 9; i++){ |
| | | if (i < 4) { |
| | | downloadPicture(photo.get(i), comSwSafetyWorkRecordVO.getId() + "_" + i); |
| | | dataMap.put("imgStr" + (i + 1), getImageStr("d:/" + comSwSafetyWorkRecordVO.getId() + "_" + i + ".jpg")); |
| | | }else { |
| | | dataMap.put("imgStr" + (i + 1), getImageStr("d:/blank.jpg")); |
| | | } |
| | | } |
| | | } |
| | | if (photo.size() == 5){ |
| | | for (int i = 0; i < 9; i++){ |
| | | if (i < 5) { |
| | | downloadPicture(photo.get(i), comSwSafetyWorkRecordVO.getId() + "_" + i); |
| | | dataMap.put("imgStr" + (i + 1), getImageStr("d:/" + comSwSafetyWorkRecordVO.getId() + "_" + i + ".jpg")); |
| | | }else { |
| | | dataMap.put("imgStr" + (i + 1), getImageStr("d:/blank.jpg")); |
| | | } |
| | | } |
| | | } |
| | | if (photo.size() == 6){ |
| | | for (int i = 0; i < 9; i++){ |
| | | if (i < 6) { |
| | | downloadPicture(photo.get(i), comSwSafetyWorkRecordVO.getId() + "_" + i); |
| | | dataMap.put("imgStr" + (i + 1), getImageStr("d:/" + comSwSafetyWorkRecordVO.getId() + "_" + i + ".jpg")); |
| | | }else { |
| | | dataMap.put("imgStr" + (i + 1), getImageStr("d:/blank.jpg")); |
| | | } |
| | | } |
| | | } |
| | | if (photo.size() == 7){ |
| | | for (int i = 0; i < 9; i++){ |
| | | if (i < 7) { |
| | | downloadPicture(photo.get(i), comSwSafetyWorkRecordVO.getId() + "_" + i); |
| | | dataMap.put("imgStr" + (i + 1), getImageStr("d:/" + comSwSafetyWorkRecordVO.getId() + "_" + i + ".jpg")); |
| | | }else { |
| | | dataMap.put("imgStr" + (i + 1), getImageStr("d:/blank.jpg")); |
| | | } |
| | | } |
| | | } |
| | | if (photo.size() == 8){ |
| | | for (int i = 0; i < 9; i++){ |
| | | if (i < 8) { |
| | | downloadPicture(photo.get(i), comSwSafetyWorkRecordVO.getId() + "_" + i); |
| | | dataMap.put("imgStr" + (i + 1), getImageStr("d:/" + comSwSafetyWorkRecordVO.getId() + "_" + i + ".jpg")); |
| | | }else { |
| | | dataMap.put("imgStr" + (i + 1), getImageStr("d:/blank.jpg")); |
| | | } |
| | | } |
| | | } |
| | | if (photo.size() == 9){ |
| | | for (int i = 0; i < 9; i++){ |
| | | downloadPicture(photo.get(i), comSwSafetyWorkRecordVO.getId() + "_" + i); |
| | | dataMap.put("imgStr" + (i + 1), getImageStr("d:/" + comSwSafetyWorkRecordVO.getId() + "_" + i + ".jpg")); |
| | | } |
| | | } |
| | | }else{ |
| | | for (int i = 0; i < 9; i++){ |
| | | dataMap.put("imgStr" + (i + 1), getImageStr("d:/blank.jpg")); |
| | | } |
| | | } |
| | | //备注 |
| | | dataMap.put("remark", comSwSafetyWorkRecordVO.getRemark()); |
| | | //巡查时间 |
| | | dataMap.put("patrolTime", new SimpleDateFormat("yyyy-MM-dd").format(comSwSafetyWorkRecordVO.getPatrolTime())); |
| | | //工作人员 |
| | | dataMap.put("personName", comSwSafetyWorkRecordVO.getPersonName()); |
| | | //填报人员 |
| | | dataMap.put("createName", comSwSafetyWorkRecordVO.getCreateName()); |
| | | //填报时间 |
| | | dataMap.put("createAt", new SimpleDateFormat("yyyy-MM-dd").format(comSwSafetyWorkRecordVO.getCreateAt())); |
| | | //获取请求url |
| | | String url = Constants.G_D_WEATHER_URL; |
| | | //获取请求参数 |
| | | String param = "key=" + Constants.G_D_WEATHER_KEY + "&city=510400"; |
| | | String result = HttpUtils.sendGet(url,param); |
| | | R r = R.ok(JSON.parseObject(result)); |
| | | WeatherVO weatherVO = JSONObject.parseObject(JSONObject.toJSONString(r.getData()), WeatherVO.class);if (null != weatherVO) { |
| | | LiveVO liveVO = weatherVO.getLives().get(0); |
| | | //城市 |
| | | dataMap.put("city", liveVO.getCity()); |
| | | //天气 |
| | | dataMap.put("weather", liveVO.getWeather()); |
| | | //温度 |
| | | dataMap.put("temperature", liveVO.getTemperature()); |
| | | //风向 |
| | | dataMap.put("winddirection", liveVO.getWinddirection()); |
| | | //风力 |
| | | dataMap.put("windpower", liveVO.getWindpower()); |
| | | } |
| | | Configuration configuration = new Configuration(new Version("2.3.0")); |
| | | |
| | | configuration.setDefaultEncoding("utf-8"); |
| | | /** |
| | | * 以下是两种指定ftl文件所在目录路径的方式,注意这两种方式都是 |
| | | * 指定ftl文件所在目录的路径,而不是ftl文件的路径 |
| | | */ |
| | | //指定路径的第一种方式(根据某个类的相对路径指定) |
| | | // configuration.setClassForTemplateLoading(this.getClass(), ""); |
| | | |
| | | //指定路径的第二种方式,我的路径是C:/a.ftl |
| | | configuration.setDirectoryForTemplateLoading(new File("c:/")); |
| | | |
| | | //输出文档路径及名称 |
| | | // File outFile = new File("mnt/data/web/excel/安全工作记录_" + comSwSafetyWorkRecordVO.getId() + ".doc"); |
| | | File file = new File(fileName); |
| | | |
| | | //以utf-8的编码读取ftl文件 |
| | | Template template = configuration.getTemplate("安全工作记录.ftl", "utf-8"); |
| | | Writer out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file), "utf-8"), 10240); |
| | | template.process(dataMap, out); |
| | | out.close(); |
| | | inputStream = new FileInputStream(file); |
| | | sftp.uploadMore(ftpUrl, name, inputStream); |
| | | sftp.logout(); |
| | | inputStream.close(); |
| | | String absolutePath = file.getAbsolutePath(); |
| | | boolean delete = file.delete(); |
| | | log.info("删除excel【{}】结果【{}】", absolutePath, delete); |
| | | } finally { |
| | | // 千万别忘记finish 会帮忙关闭流 |
| | | if (inputStream != null) { |
| | | inputStream.close(); |
| | | } |
| | | } |
| | | } |
| | | downLoadUrl.add(excelUrl + name); |
| | | } |
| | | return R.ok(downLoadUrl); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | log.error("文件传输失败【{}】", e.getMessage()); |
| | | } |
| | | return R.fail(); |
| | | } |
| | | |
| | | @ApiOperation(value = "下载巡查记录报告") |
| | | @PostMapping("/export/patrolRecord") |
| | | public R exportPatrolRecord(@RequestBody List<Long> ids){ |
| | | Long communityId = this.getLoginUserInfo().getCommunityId(); |
| | | List<String> downLoadUrl = new ArrayList<>(); |
| | | try { |
| | | for (Long id : ids) { |
| | | SFTPUtil sftp = new SFTPUtil(userName, password, host, port); |
| | | sftp.login(); |
| | | Map<String, Object> dataMap = new HashMap<String, Object>(); |
| | | ComSwPatrolRecordVO comSwPatrolRecordVO = JSONObject.parseObject(JSONObject.toJSONString(communityService.detailPatrolRecord(id).getData()), ComSwPatrolRecordVO.class); |
| | | //生成动态模板excel通过ftp工具上传到主节点,然后返回模板下载地址 |
| | | String ftpUrl = "/mnt/data/web/excel/"; |
| | | String name = "巡查记录_" + comSwPatrolRecordVO.getId() + ".doc"; |
| | | |
| | | boolean existDir = sftp.isExistDir(ftpUrl + name); |
| | | if (!existDir) { |
| | | String property = System.getProperty("user.dir"); |
| | | String fileName = property + File.separator + name; |
| | | // 这里 需要指定写用哪个class去写 |
| | | ExcelWriter excelWriter = null; |
| | | InputStream inputStream = null; |
| | | try { |
| | | //日期 |
| | | dataMap.put("date", new SimpleDateFormat("yyyy-MM-dd").format(comSwPatrolRecordVO.getPatrolTime())); |
| | | //巡查类型 |
| | | dataMap.put("patrolType", comSwPatrolRecordVO.getPatrolType()); |
| | | //社区名称 |
| | | // dataMap.put("communityName", comSwPatrolRecordVO.getCommunityName()); |
| | | //地址 |
| | | dataMap.put("address", comSwPatrolRecordVO.getAddress()); |
| | | //记录内容 |
| | | dataMap.put("recordContent", comSwPatrolRecordVO.getRecordContent()); |
| | | //发现记录 |
| | | dataMap.put("findRecord", comSwPatrolRecordVO.getFindRecord()); |
| | | //记录照片 |
| | | List<String> photo = new ArrayList<>(); |
| | | if (StringUtils.isNotEmpty(comSwPatrolRecordVO.getRecordPhoto())) { |
| | | photo = Arrays.asList(comSwPatrolRecordVO.getRecordPhoto().split(",")); |
| | | } |
| | | if (photo.size() != 0 && null != photo) { |
| | | if (photo.size() == 1) { |
| | | for (int i = 0; i < 9; i++) { |
| | | if (i < 1) { |
| | | downloadPicture(photo.get(i), comSwPatrolRecordVO.getId() + "_" + i); |
| | | dataMap.put("imgStr" + (i + 1), getImageStr("d:/" + comSwPatrolRecordVO.getId() + "_" + i + ".jpg")); |
| | | } else { |
| | | dataMap.put("imgStr" + (i + 1), getImageStr("d:/blank.jpg")); |
| | | } |
| | | } |
| | | } |
| | | if (photo.size() == 2) { |
| | | for (int i = 0; i < 9; i++) { |
| | | if (i < 2) { |
| | | downloadPicture(photo.get(i), comSwPatrolRecordVO.getId() + "_" + i); |
| | | dataMap.put("imgStr" + (i + 1), getImageStr("d:/" + comSwPatrolRecordVO.getId() + "_" + i + ".jpg")); |
| | | } else { |
| | | dataMap.put("imgStr" + (i + 1), getImageStr("d:/blank.jpg")); |
| | | } |
| | | } |
| | | } |
| | | if (photo.size() == 3) { |
| | | for (int i = 0; i < 9; i++) { |
| | | if (i < 3) { |
| | | downloadPicture(photo.get(i), comSwPatrolRecordVO.getId() + "_" + i); |
| | | dataMap.put("imgStr" + (i + 1), getImageStr("d:/" + comSwPatrolRecordVO.getId() + "_" + i + ".jpg")); |
| | | } else { |
| | | dataMap.put("imgStr" + (i + 1), getImageStr("d:/blank.jpg")); |
| | | } |
| | | } |
| | | } |
| | | if (photo.size() == 4) { |
| | | for (int i = 0; i < 9; i++) { |
| | | if (i < 4) { |
| | | downloadPicture(photo.get(i), comSwPatrolRecordVO.getId() + "_" + i); |
| | | dataMap.put("imgStr" + (i + 1), getImageStr("d:/" + comSwPatrolRecordVO.getId() + "_" + i + ".jpg")); |
| | | } else { |
| | | dataMap.put("imgStr" + (i + 1), getImageStr("d:/blank.jpg")); |
| | | } |
| | | } |
| | | } |
| | | if (photo.size() == 5) { |
| | | for (int i = 0; i < 9; i++) { |
| | | if (i < 5) { |
| | | downloadPicture(photo.get(i), comSwPatrolRecordVO.getId() + "_" + i); |
| | | dataMap.put("imgStr" + (i + 1), getImageStr("d:/" + comSwPatrolRecordVO.getId() + "_" + i + ".jpg")); |
| | | } else { |
| | | dataMap.put("imgStr" + (i + 1), getImageStr("d:/blank.jpg")); |
| | | } |
| | | } |
| | | } |
| | | if (photo.size() == 6) { |
| | | for (int i = 0; i < 9; i++) { |
| | | if (i < 6) { |
| | | downloadPicture(photo.get(i), comSwPatrolRecordVO.getId() + "_" + i); |
| | | dataMap.put("imgStr" + (i + 1), getImageStr("d:/" + comSwPatrolRecordVO.getId() + "_" + i + ".jpg")); |
| | | } else { |
| | | dataMap.put("imgStr" + (i + 1), getImageStr("d:/blank.jpg")); |
| | | } |
| | | } |
| | | } |
| | | if (photo.size() == 7) { |
| | | for (int i = 0; i < 9; i++) { |
| | | if (i < 7) { |
| | | downloadPicture(photo.get(i), comSwPatrolRecordVO.getId() + "_" + i); |
| | | dataMap.put("imgStr" + (i + 1), getImageStr("d:/" + comSwPatrolRecordVO.getId() + "_" + i + ".jpg")); |
| | | } else { |
| | | dataMap.put("imgStr" + (i + 1), getImageStr("d:/blank.jpg")); |
| | | } |
| | | } |
| | | } |
| | | if (photo.size() == 8) { |
| | | for (int i = 0; i < 9; i++) { |
| | | if (i < 8) { |
| | | downloadPicture(photo.get(i), comSwPatrolRecordVO.getId() + "_" + i); |
| | | dataMap.put("imgStr" + (i + 1), getImageStr("d:/" + comSwPatrolRecordVO.getId() + "_" + i + ".jpg")); |
| | | } else { |
| | | dataMap.put("imgStr" + (i + 1), getImageStr("d:/blank.jpg")); |
| | | } |
| | | } |
| | | } |
| | | if (photo.size() == 9) { |
| | | for (int i = 0; i < 9; i++) { |
| | | downloadPicture(photo.get(i), comSwPatrolRecordVO.getId() + "_" + i); |
| | | dataMap.put("imgStr" + (i + 1), getImageStr("d:/" + comSwPatrolRecordVO.getId() + "_" + i + ".jpg")); |
| | | } |
| | | } |
| | | } else { |
| | | for (int i = 0; i < 9; i++) { |
| | | dataMap.put("imgStr" + (i + 1), getImageStr("d:/blank.jpg")); |
| | | } |
| | | } |
| | | //备注 |
| | | dataMap.put("remark", comSwPatrolRecordVO.getRemark()); |
| | | //巡查时间 |
| | | // dataMap.put("patrolTime", new SimpleDateFormat("yyyy-MM-dd").format(comSwPatrolRecordVO.getPatrolTime())); |
| | | //工作人员 |
| | | // dataMap.put("personName", comSwPatrolRecordVO.getPersonName()); |
| | | //巡查人员 |
| | | dataMap.put("personName", comSwPatrolRecordVO.getPersonName()); |
| | | //接班时间 |
| | | dataMap.put("successionTime", new SimpleDateFormat("yyyy-MM-dd").format(comSwPatrolRecordVO.getSuccessionTime())); |
| | | //接班人员 |
| | | dataMap.put("successionPerson", comSwPatrolRecordVO.getSuccessionPerson()); |
| | | //填报人员 |
| | | dataMap.put("createName", comSwPatrolRecordVO.getCreateName()); |
| | | //填报时间 |
| | | dataMap.put("createAt", new SimpleDateFormat("yyyy-MM-dd").format(comSwPatrolRecordVO.getCreateAt())); |
| | | //获取请求url |
| | | String url = Constants.G_D_WEATHER_URL; |
| | | //获取请求参数 |
| | | String param = "key=" + Constants.G_D_WEATHER_KEY + "&city=510400"; |
| | | String result = HttpUtils.sendGet(url, param); |
| | | R r = R.ok(JSON.parseObject(result)); |
| | | WeatherVO weatherVO = JSONObject.parseObject(JSONObject.toJSONString(r.getData()), WeatherVO.class); |
| | | if (null != weatherVO) { |
| | | LiveVO liveVO = weatherVO.getLives().get(0); |
| | | //城市 |
| | | dataMap.put("city", liveVO.getCity()); |
| | | //天气 |
| | | dataMap.put("weather", liveVO.getWeather()); |
| | | //温度 |
| | | dataMap.put("temperature", liveVO.getTemperature()); |
| | | //风向 |
| | | dataMap.put("winddirection", liveVO.getWinddirection()); |
| | | //风力 |
| | | dataMap.put("windpower", liveVO.getWindpower()); |
| | | } |
| | | Configuration configuration = new Configuration(new Version("2.3.0")); |
| | | |
| | | configuration.setDefaultEncoding("utf-8"); |
| | | /** |
| | | * 以下是两种指定ftl文件所在目录路径的方式,注意这两种方式都是 |
| | | * 指定ftl文件所在目录的路径,而不是ftl文件的路径 |
| | | */ |
| | | //指定路径的第一种方式(根据某个类的相对路径指定) |
| | | // configuration.setClassForTemplateLoading(this.getClass(), ""); |
| | | |
| | | //指定路径的第二种方式,我的路径是C:/a.ftl |
| | | configuration.setDirectoryForTemplateLoading(new File("c:/")); |
| | | |
| | | //输出文档路径及名称 |
| | | // File outFile = new File("mnt/data/web/excel/安全工作记录_" + comSwSafetyWorkRecordVO.getId() + ".doc"); |
| | | File file = new File(fileName); |
| | | |
| | | //以utf-8的编码读取ftl文件 |
| | | Template template = configuration.getTemplate("巡查记录.ftl", "utf-8"); |
| | | Writer out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file), "utf-8"), 10240); |
| | | template.process(dataMap, out); |
| | | out.close(); |
| | | inputStream = new FileInputStream(file); |
| | | sftp.uploadMore(ftpUrl, name, inputStream); |
| | | sftp.logout(); |
| | | inputStream.close(); |
| | | String absolutePath = file.getAbsolutePath(); |
| | | boolean delete = file.delete(); |
| | | log.info("删除excel【{}】结果【{}】", absolutePath, delete); |
| | | } finally { |
| | | // 千万别忘记finish 会帮忙关闭流 |
| | | if (inputStream != null) { |
| | | inputStream.close(); |
| | | } |
| | | } |
| | | } |
| | | downLoadUrl.add(excelUrl + name); |
| | | } |
| | | return R.ok(downLoadUrl); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | log.error("文件传输失败【{}】", e.getMessage()); |
| | | } |
| | | return R.fail(); |
| | | } |
| | | |
| | | @ApiOperation(value = "下载隐患报告") |
| | | @PostMapping("/export/DangerReport") |
| | | public R exportDangerReport(@RequestBody List<Long> ids){ |
| | | Long communityId = this.getLoginUserInfo().getCommunityId(); |
| | | List<String> downLoadUrl = new ArrayList<>(); |
| | | try { |
| | | for (Long id : ids) { |
| | | SFTPUtil sftp = new SFTPUtil(userName, password, host, port); |
| | | sftp.login(); |
| | | Map<String, Object> dataMap = new HashMap<String, Object>(); |
| | | ComSwDangerReportVO comSwDangerReportVO = JSONObject.parseObject(JSONObject.toJSONString(communityService.detailDangerReport(id).getData()), ComSwDangerReportVO.class); |
| | | //生成动态模板excel通过ftp工具上传到主节点,然后返回模板下载地址 |
| | | String ftpUrl = "/mnt/data/web/excel/"; |
| | | String name = "隐患报告_" + comSwDangerReportVO.getId() + ".doc"; |
| | | |
| | | boolean existDir = sftp.isExistDir(ftpUrl + name); |
| | | if (!existDir) { |
| | | String property = System.getProperty("user.dir"); |
| | | String fileName = property + File.separator + name; |
| | | // 这里 需要指定写用哪个class去写 |
| | | ExcelWriter excelWriter = null; |
| | | InputStream inputStream = null; |
| | | try { |
| | | //日期 |
| | | dataMap.put("date", comSwDangerReportVO.getCheckTime()); |
| | | //巡查类型 |
| | | dataMap.put("patrolType", comSwDangerReportVO.getPatrolType()); |
| | | //地址 |
| | | dataMap.put("address", comSwDangerReportVO.getAddress()); |
| | | //隐患名称 |
| | | dataMap.put("dangerName", comSwDangerReportVO.getDangerName()); |
| | | //排查时间 |
| | | dataMap.put("checkTime", comSwDangerReportVO.getCheckTime()); |
| | | //排查人员 |
| | | dataMap.put("ppersonName", comSwDangerReportVO.getPPersonName()); |
| | | //填报人员 |
| | | dataMap.put("createName", comSwDangerReportVO.getCreateName()); |
| | | //填报时间 |
| | | dataMap.put("createAt", new SimpleDateFormat("yyyy-MM-dd").format(comSwDangerReportVO.getCreateAt())); |
| | | //隐患编号 |
| | | dataMap.put("dangerNo", comSwDangerReportVO.getDangerNo()); |
| | | //主体部门、单位或个人全称 |
| | | if (StringUtils.isNotEmpty(comSwDangerReportVO.getUnitName())) { |
| | | dataMap.put("unitName", comSwDangerReportVO.getUnitName()); |
| | | }else { |
| | | dataMap.put("unitName", ""); |
| | | } |
| | | //隐患简述 |
| | | if (StringUtils.isNotEmpty(comSwDangerReportVO.getDagerDescription())) { |
| | | dataMap.put("dagerDescription", comSwDangerReportVO.getDagerDescription()); |
| | | }else { |
| | | dataMap.put("dagerDescription", ""); |
| | | } |
| | | //已采取的措施 |
| | | if (StringUtils.isNotEmpty(comSwDangerReportVO.getTakeSteps())) { |
| | | dataMap.put("takeSteps", comSwDangerReportVO.getTakeSteps()); |
| | | }else { |
| | | dataMap.put("takeSteps", ""); |
| | | } |
| | | //措施照片 |
| | | List<String> stepsPhoto = new ArrayList<>(); |
| | | if (StringUtils.isNotEmpty(comSwDangerReportVO.getStepsPhoto())) { |
| | | stepsPhoto = Arrays.asList(comSwDangerReportVO.getStepsPhoto().split(",")); |
| | | } |
| | | if (stepsPhoto.size() != 0 && null != stepsPhoto) { |
| | | if (stepsPhoto.size() == 1) { |
| | | for (int i = 0; i < 9; i++) { |
| | | if (i < 1) { |
| | | downloadPicture(stepsPhoto.get(i), comSwDangerReportVO.getId() + "_steps_" + i); |
| | | dataMap.put("imgStr" + (i + 1), getImageStr("d:/" + comSwDangerReportVO.getId() + "_steps_" + i + ".jpg")); |
| | | } else { |
| | | dataMap.put("imgStr" + (i + 1), getImageStr("d:/blank.jpg")); |
| | | } |
| | | } |
| | | for (int i = 0; i < 9; i++) { |
| | | if (i < 1) { |
| | | dataMap.put("imgStr" + (i + 19), getImageStr("d:/" + comSwDangerReportVO.getId() + "_steps_" + i + ".jpg")); |
| | | } else { |
| | | dataMap.put("imgStr" + (i + 19), getImageStr("d:/blank.jpg")); |
| | | } |
| | | } |
| | | } |
| | | if (stepsPhoto.size() == 2) { |
| | | for (int i = 0; i < 9; i++) { |
| | | if (i < 2) { |
| | | downloadPicture(stepsPhoto.get(i), comSwDangerReportVO.getId() + "_steps_" + i); |
| | | dataMap.put("imgStr" + (i + 1), getImageStr("d:/" + comSwDangerReportVO.getId() + "_steps_" + i + ".jpg")); |
| | | } else { |
| | | dataMap.put("imgStr" + (i + 1), getImageStr("d:/blank.jpg")); |
| | | } |
| | | } |
| | | for (int i = 0; i < 9; i++) { |
| | | if (i < 2) { |
| | | dataMap.put("imgStr" + (i + 19), getImageStr("d:/" + comSwDangerReportVO.getId() + "_steps_" + i + ".jpg")); |
| | | } else { |
| | | dataMap.put("imgStr" + (i + 19), getImageStr("d:/blank.jpg")); |
| | | } |
| | | } |
| | | } |
| | | if (stepsPhoto.size() == 3) { |
| | | for (int i = 0; i < 9; i++) { |
| | | if (i < 3) { |
| | | downloadPicture(stepsPhoto.get(i), comSwDangerReportVO.getId() + "_" + i); |
| | | dataMap.put("imgStr" + (i + 1), getImageStr("d:/" + comSwDangerReportVO.getId() + "_steps_" + i + ".jpg")); |
| | | } else { |
| | | dataMap.put("imgStr" + (i + 1), getImageStr("d:/blank.jpg")); |
| | | } |
| | | } |
| | | for (int i = 0; i < 9; i++) { |
| | | if (i < 3) { |
| | | dataMap.put("imgStr" + (i + 19), getImageStr("d:/" + comSwDangerReportVO.getId() + "_steps_" + i + ".jpg")); |
| | | } else { |
| | | dataMap.put("imgStr" + (i + 19), getImageStr("d:/blank.jpg")); |
| | | } |
| | | } |
| | | } |
| | | if (stepsPhoto.size() == 4) { |
| | | for (int i = 0; i < 9; i++) { |
| | | if (i < 4) { |
| | | downloadPicture(stepsPhoto.get(i), comSwDangerReportVO.getId() + "_steps_" + i); |
| | | dataMap.put("imgStr" + (i + 1), getImageStr("d:/" + comSwDangerReportVO.getId() + "_steps_" + i + ".jpg")); |
| | | } else { |
| | | dataMap.put("imgStr" + (i + 1), getImageStr("d:/blank.jpg")); |
| | | } |
| | | } |
| | | for (int i = 0; i < 9; i++) { |
| | | if (i < 4) { |
| | | dataMap.put("imgStr" + (i + 19), getImageStr("d:/" + comSwDangerReportVO.getId() + "_steps_" + i + ".jpg")); |
| | | } else { |
| | | dataMap.put("imgStr" + (i + 19), getImageStr("d:/blank.jpg")); |
| | | } |
| | | } |
| | | } |
| | | if (stepsPhoto.size() == 5) { |
| | | for (int i = 0; i < 9; i++) { |
| | | if (i < 5) { |
| | | downloadPicture(stepsPhoto.get(i), comSwDangerReportVO.getId() + "_steps_" + i); |
| | | dataMap.put("imgStr" + (i + 1), getImageStr("d:/" + comSwDangerReportVO.getId() + "_steps_" + i + ".jpg")); |
| | | } else { |
| | | dataMap.put("imgStr" + (i + 1), getImageStr("d:/blank.jpg")); |
| | | } |
| | | } |
| | | for (int i = 0; i < 9; i++) { |
| | | if (i < 5) { |
| | | dataMap.put("imgStr" + (i + 19), getImageStr("d:/" + comSwDangerReportVO.getId() + "_steps_" + i + ".jpg")); |
| | | } else { |
| | | dataMap.put("imgStr" + (i + 19), getImageStr("d:/blank.jpg")); |
| | | } |
| | | } |
| | | } |
| | | if (stepsPhoto.size() == 6) { |
| | | for (int i = 0; i < 9; i++) { |
| | | if (i < 6) { |
| | | downloadPicture(stepsPhoto.get(i), comSwDangerReportVO.getId() + "_steps_" + i); |
| | | dataMap.put("imgStr" + (i + 1), getImageStr("d:/" + comSwDangerReportVO.getId() + "_steps_" + i + ".jpg")); |
| | | } else { |
| | | dataMap.put("imgStr" + (i + 1), getImageStr("d:/blank.jpg")); |
| | | } |
| | | } |
| | | for (int i = 0; i < 9; i++) { |
| | | if (i < 6) { |
| | | dataMap.put("imgStr" + (i + 19), getImageStr("d:/" + comSwDangerReportVO.getId() + "_steps_" + i + ".jpg")); |
| | | } else { |
| | | dataMap.put("imgStr" + (i + 19), getImageStr("d:/blank.jpg")); |
| | | } |
| | | } |
| | | } |
| | | if (stepsPhoto.size() == 7) { |
| | | for (int i = 0; i < 9; i++) { |
| | | if (i < 7) { |
| | | downloadPicture(stepsPhoto.get(i), comSwDangerReportVO.getId() + "_steps_" + i); |
| | | dataMap.put("imgStr" + (i + 1), getImageStr("d:/" + comSwDangerReportVO.getId() + "_steps_" + i + ".jpg")); |
| | | } else { |
| | | dataMap.put("imgStr" + (i + 1), getImageStr("d:/blank.jpg")); |
| | | } |
| | | } |
| | | for (int i = 0; i < 9; i++) { |
| | | if (i < 7) { |
| | | dataMap.put("imgStr" + (i + 19), getImageStr("d:/" + comSwDangerReportVO.getId() + "_steps_" + i + ".jpg")); |
| | | } else { |
| | | dataMap.put("imgStr" + (i + 19), getImageStr("d:/blank.jpg")); |
| | | } |
| | | } |
| | | } |
| | | if (stepsPhoto.size() == 8) { |
| | | for (int i = 0; i < 9; i++) { |
| | | if (i < 8) { |
| | | downloadPicture(stepsPhoto.get(i), comSwDangerReportVO.getId() + "_steps_" + i); |
| | | dataMap.put("imgStr" + (i + 1), getImageStr("d:/" + comSwDangerReportVO.getId() + "_steps_" + i + ".jpg")); |
| | | } else { |
| | | dataMap.put("imgStr" + (i + 1), getImageStr("d:/blank.jpg")); |
| | | } |
| | | } |
| | | for (int i = 0; i < 9; i++) { |
| | | if (i < 8) { |
| | | dataMap.put("imgStr" + (i + 19), getImageStr("d:/" + comSwDangerReportVO.getId() + "_steps_" + i + ".jpg")); |
| | | } else { |
| | | dataMap.put("imgStr" + (i + 19), getImageStr("d:/blank.jpg")); |
| | | } |
| | | } |
| | | } |
| | | if (stepsPhoto.size() == 9) { |
| | | for (int i = 0; i < 9; i++) { |
| | | downloadPicture(stepsPhoto.get(i), comSwDangerReportVO.getId() + "_steps_" + i); |
| | | dataMap.put("imgStr" + (i + 19), getImageStr("d:/" + comSwDangerReportVO.getId() + "_steps_" + i + ".jpg")); |
| | | } |
| | | for (int i = 0; i < 9; i++) { |
| | | downloadPicture(stepsPhoto.get(i), comSwDangerReportVO.getId() + "_steps_" + i); |
| | | dataMap.put("imgStr" + (i + 1), getImageStr("d:/" + comSwDangerReportVO.getId() + "_steps_" + i + ".jpg")); |
| | | } |
| | | } |
| | | } else { |
| | | for (int i = 0; i < 9; i++) { |
| | | dataMap.put("imgStr" + (i + 1), getImageStr("d:/blank.jpg")); |
| | | } |
| | | for (int i = 0; i < 9; i++) { |
| | | dataMap.put("imgStr" + (i + 19), getImageStr("d:/blank.jpg")); |
| | | } |
| | | } |
| | | //社区处理建议 |
| | | if (StringUtils.isNotEmpty(comSwDangerReportVO.getCommunitySuggestion())) { |
| | | dataMap.put("communitySuggestion", comSwDangerReportVO.getCommunitySuggestion()); |
| | | }else { |
| | | dataMap.put("communitySuggestion", ""); |
| | | } |
| | | //街道安全管理人员建议 |
| | | if (StringUtils.isNotEmpty(comSwDangerReportVO.getStreetSuggestion())) { |
| | | dataMap.put("streetSuggestion", comSwDangerReportVO.getStreetSuggestion()); |
| | | }else { |
| | | dataMap.put("streetSuggestion", ""); |
| | | } |
| | | //领导意见 |
| | | if (StringUtils.isNotEmpty(comSwDangerReportVO.getLeaderSuggestion())) { |
| | | dataMap.put("leaderSuggestion", comSwDangerReportVO.getLeaderSuggestion()); |
| | | }else { |
| | | dataMap.put("leaderSuggestion", ""); |
| | | } |
| | | //承办记录 |
| | | if (StringUtils.isNotEmpty(comSwDangerReportVO.getUndertakeRecord())) { |
| | | dataMap.put("undertakeRecord", comSwDangerReportVO.getUndertakeRecord()); |
| | | }else { |
| | | dataMap.put("undertakeRecord", ""); |
| | | } |
| | | //巡查记录 |
| | | if (StringUtils.isNotEmpty(comSwDangerReportVO.getRecordContent())) { |
| | | dataMap.put("recordContent", comSwDangerReportVO.getRecordContent()); |
| | | }else { |
| | | dataMap.put("recordContent", ""); |
| | | } |
| | | //发现记录 |
| | | if (StringUtils.isNotEmpty(comSwDangerReportVO.getFindRecord())) { |
| | | dataMap.put("findRecord", comSwDangerReportVO.getFindRecord()); |
| | | }else { |
| | | dataMap.put("findRecord", ""); |
| | | } |
| | | //记录照片 |
| | | List<String> photo = new ArrayList<>(); |
| | | if (StringUtils.isNotEmpty(comSwDangerReportVO.getRecordPhoto())) { |
| | | photo = Arrays.asList(comSwDangerReportVO.getRecordPhoto().split(",")); |
| | | } |
| | | if (photo.size() != 0 && null != photo) { |
| | | if (photo.size() == 1) { |
| | | for (int i = 0; i < 9; i++) { |
| | | if (i < 1) { |
| | | downloadPicture(photo.get(i), comSwDangerReportVO.getId() + "_find_" + i); |
| | | dataMap.put("imgStr" + (i + 10), getImageStr("d:/" + comSwDangerReportVO.getId() + "_find_" + i + ".jpg")); |
| | | } else { |
| | | dataMap.put("imgStr" + (i + 10), getImageStr("d:/blank.jpg")); |
| | | } |
| | | } |
| | | } |
| | | if (photo.size() == 2) { |
| | | for (int i = 0; i < 9; i++) { |
| | | if (i < 2) { |
| | | downloadPicture(photo.get(i), comSwDangerReportVO.getId() + "_find_" + i); |
| | | dataMap.put("imgStr" + (i + 10), getImageStr("d:/" + comSwDangerReportVO.getId() + "_find_" + i + ".jpg")); |
| | | } else { |
| | | dataMap.put("imgStr" + (i + 10), getImageStr("d:/blank.jpg")); |
| | | } |
| | | } |
| | | } |
| | | if (photo.size() == 3) { |
| | | for (int i = 0; i < 9; i++) { |
| | | if (i < 3) { |
| | | downloadPicture(photo.get(i), comSwDangerReportVO.getId() + "_find_" + i); |
| | | dataMap.put("imgStr" + (i + 10), getImageStr("d:/" + comSwDangerReportVO.getId() + "_find_" + i + ".jpg")); |
| | | } else { |
| | | dataMap.put("imgStr" + (i + 10), getImageStr("d:/blank.jpg")); |
| | | } |
| | | } |
| | | } |
| | | if (photo.size() == 4) { |
| | | for (int i = 0; i < 9; i++) { |
| | | if (i < 4) { |
| | | downloadPicture(photo.get(i), comSwDangerReportVO.getId() + "_find_" + i); |
| | | dataMap.put("imgStr" + (i + 10), getImageStr("d:/" + comSwDangerReportVO.getId() + "_find_" + i + ".jpg")); |
| | | } else { |
| | | dataMap.put("imgStr" + (i + 10), getImageStr("d:/blank.jpg")); |
| | | } |
| | | } |
| | | } |
| | | if (photo.size() == 5) { |
| | | for (int i = 0; i < 9; i++) { |
| | | if (i < 5) { |
| | | downloadPicture(photo.get(i), comSwDangerReportVO.getId() + "_find_" + i); |
| | | dataMap.put("imgStr" + (i + 10), getImageStr("d:/" + comSwDangerReportVO.getId() + "_find_" + i + ".jpg")); |
| | | } else { |
| | | dataMap.put("imgStr" + (i + 10), getImageStr("d:/blank.jpg")); |
| | | } |
| | | } |
| | | } |
| | | if (photo.size() == 6) { |
| | | for (int i = 0; i < 9; i++) { |
| | | if (i < 6) { |
| | | downloadPicture(photo.get(i), comSwDangerReportVO.getId() + "_find_" + i); |
| | | dataMap.put("imgStr" + (i + 10), getImageStr("d:/" + comSwDangerReportVO.getId() + "_find_" + i + ".jpg")); |
| | | } else { |
| | | dataMap.put("imgStr" + (i + 10), getImageStr("d:/blank.jpg")); |
| | | } |
| | | } |
| | | } |
| | | if (photo.size() == 7) { |
| | | for (int i = 0; i < 9; i++) { |
| | | if (i < 7) { |
| | | downloadPicture(photo.get(i), comSwDangerReportVO.getId() + "_find_" + i); |
| | | dataMap.put("imgStr" + (i + 10), getImageStr("d:/" + comSwDangerReportVO.getId() + "_find_" + i + ".jpg")); |
| | | } else { |
| | | dataMap.put("imgStr" + (i + 10), getImageStr("d:/blank.jpg")); |
| | | } |
| | | } |
| | | } |
| | | if (photo.size() == 8) { |
| | | for (int i = 0; i < 9; i++) { |
| | | if (i < 8) { |
| | | downloadPicture(photo.get(i), comSwDangerReportVO.getId() + "_find_" + i); |
| | | dataMap.put("imgStr" + (i + 10), getImageStr("d:/" + comSwDangerReportVO.getId() + "_find_" + i + ".jpg")); |
| | | } else { |
| | | dataMap.put("imgStr" + (i + 10), getImageStr("d:/blank.jpg")); |
| | | } |
| | | } |
| | | } |
| | | if (photo.size() == 9) { |
| | | for (int i = 0; i < 9; i++) { |
| | | downloadPicture(photo.get(i), comSwDangerReportVO.getId() + "_find_" + i); |
| | | dataMap.put("imgStr" + (i + 10), getImageStr("d:/" + comSwDangerReportVO.getId() + "_find_" + i + ".jpg")); |
| | | } |
| | | } |
| | | } else { |
| | | for (int i = 0; i < 9; i++) { |
| | | dataMap.put("imgStr" + (i + 10), getImageStr("d:/blank.jpg")); |
| | | } |
| | | } |
| | | //备注 |
| | | if (StringUtils.isNotEmpty(comSwDangerReportVO.getRemark())) { |
| | | dataMap.put("remark", comSwDangerReportVO.getRemark()); |
| | | }else { |
| | | dataMap.put("remark", ""); |
| | | } |
| | | //整改时间 |
| | | if (StringUtils.isNotEmpty(comSwDangerReportVO.getRectifyTime())) { |
| | | dataMap.put("rectifyTime", comSwDangerReportVO.getRectifyTime()); |
| | | }else { |
| | | dataMap.put("rectifyTime", ""); |
| | | } |
| | | //整改人员 |
| | | if (StringUtils.isNotEmpty(comSwDangerReportVO.getDPersonName())) { |
| | | dataMap.put("dpersonName", comSwDangerReportVO.getDPersonName()); |
| | | }else { |
| | | dataMap.put("dpersonName", ""); |
| | | } |
| | | |
| | | //获取请求url |
| | | String url = Constants.G_D_WEATHER_URL; |
| | | //获取请求参数 |
| | | String param = "key=" + Constants.G_D_WEATHER_KEY + "&city=510400"; |
| | | String result = HttpUtils.sendGet(url, param); |
| | | R r = R.ok(JSON.parseObject(result)); |
| | | WeatherVO weatherVO = JSONObject.parseObject(JSONObject.toJSONString(r.getData()), WeatherVO.class); |
| | | if (null != weatherVO) { |
| | | LiveVO liveVO = weatherVO.getLives().get(0); |
| | | //城市 |
| | | dataMap.put("city", liveVO.getCity()); |
| | | //天气 |
| | | dataMap.put("weather", liveVO.getWeather()); |
| | | //温度 |
| | | dataMap.put("temperature", liveVO.getTemperature()); |
| | | //风向 |
| | | dataMap.put("winddirection", liveVO.getWinddirection()); |
| | | //风力 |
| | | dataMap.put("windpower", liveVO.getWindpower()); |
| | | } |
| | | Configuration configuration = new Configuration(new Version("2.3.0")); |
| | | |
| | | configuration.setDefaultEncoding("utf-8"); |
| | | /** |
| | | * 以下是两种指定ftl文件所在目录路径的方式,注意这两种方式都是 |
| | | * 指定ftl文件所在目录的路径,而不是ftl文件的路径 |
| | | */ |
| | | //指定路径的第一种方式(根据某个类的相对路径指定) |
| | | // configuration.setClassForTemplateLoading(this.getClass(), ""); |
| | | |
| | | //指定路径的第二种方式,我的路径是C:/a.ftl |
| | | configuration.setDirectoryForTemplateLoading(new File("c:/")); |
| | | |
| | | //输出文档路径及名称 |
| | | // File outFile = new File("mnt/data/web/excel/安全工作记录_" + comSwSafetyWorkRecordVO.getId() + ".doc"); |
| | | File file = new File(fileName); |
| | | |
| | | //以utf-8的编码读取ftl文件 |
| | | Template template = configuration.getTemplate("隐患报告.ftl", "utf-8"); |
| | | Writer out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file), "utf-8"), 10240); |
| | | template.process(dataMap, out); |
| | | out.close(); |
| | | inputStream = new FileInputStream(file); |
| | | sftp.uploadMore(ftpUrl, name, inputStream); |
| | | sftp.logout(); |
| | | inputStream.close(); |
| | | String absolutePath = file.getAbsolutePath(); |
| | | boolean delete = file.delete(); |
| | | log.info("删除excel【{}】结果【{}】", absolutePath, delete); |
| | | } finally { |
| | | // 千万别忘记finish 会帮忙关闭流 |
| | | if (inputStream != null) { |
| | | inputStream.close(); |
| | | } |
| | | } |
| | | } |
| | | downLoadUrl.add(excelUrl + name); |
| | | } |
| | | return R.ok(downLoadUrl); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | log.error("文件传输失败【{}】", e.getMessage()); |
| | | } |
| | | return R.fail(); |
| | | } |
| | | |
| | | private List<List<String>> headDataFilling(){ |
| | | List<List<String>> list = new ArrayList<List<String>>(); |
| | |
| | | data.add("2021-01-01"); |
| | | data.add("张三、李四、王二"); |
| | | data.add("138000000、138000000、138000000"); |
| | | data.add("王五、王六"); |
| | | data.add("138000000、138000000"); |
| | | data.add("王五"); |
| | | data.add("138000000"); |
| | | data.add("示例"); |
| | | return data; |
| | | } |
| | | |
| | | public String getImageStr(String fileName) { |
| | | String imgFile = fileName; |
| | | InputStream in = null; |
| | | byte[] data = null; |
| | | try { |
| | | in = new FileInputStream(imgFile); |
| | | data = new byte[in.available()]; |
| | | in.read(data); |
| | | in.close(); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } |
| | | BASE64Encoder encoder = new BASE64Encoder(); |
| | | return encoder.encode(data); |
| | | } |
| | | |
| | | public String downloadPicture(String urlString, String fileName) throws Exception { |
| | | // 构造URL |
| | | URL url = new URL(urlString); |
| | | // 打开连接 |
| | | URLConnection con = url.openConnection(); |
| | | // 输入流 |
| | | InputStream is = con.getInputStream(); |
| | | // 1K的数据缓冲 |
| | | byte[] bs = new byte[1024]; |
| | | // 读取到的数据长度 |
| | | int len; |
| | | // 输出的文件流 |
| | | String filename = "d:/" + fileName + ".jpg"; //下载路径及下载图片名称 |
| | | File file = new File(filename); |
| | | FileOutputStream os = new FileOutputStream(file, true); |
| | | // 开始读取 |
| | | while ((len = is.read(bs)) != -1) { |
| | | os.write(bs, 0, len); |
| | | } |
| | | // 完毕,关闭所有链接 |
| | | os.close(); |
| | | is.close(); |
| | | return filename; |
| | | } |
| | | } |
| | | |