From 3cb6ee6e1e4ea8b7cc65033f9420b3ae0029b63c Mon Sep 17 00:00:00 2001
From: tangxiaobao <303826152@qq.com>
Date: 星期三, 18 八月 2021 18:53:24 +0800
Subject: [PATCH] Merge branch 'txb'

---
 springcloud_k8s_panzhihuazhihuishequ/applets/src/main/resources/bootstrap.yml                                                                           |   13 
 springcloud_k8s_panzhihuazhihuishequ/auth/pom.xml                                                                                                       |   10 
 springcloud_k8s_panzhihuazhihuishequ/pom.xml                                                                                                            |   11 
 springcloud_k8s_panzhihuazhihuishequ/community_backstage/pom.xml                                                                                        |   14 
 springcloud_k8s_panzhihuazhihuishequ/applets_backstage/pom.xml                                                                                          |   10 
 springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/ComSwSafetyWorkRecordVO.java                         |    2 
 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComSwSafetyWorkRecordServiceImpl.java |    7 
 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/resources/bootstrap.yml                                                                 |   13 
 springcloud_k8s_panzhihuazhihuishequ/shop_backstage/src/main/resources/bootstrap.yml                                                                    |   13 
 springcloud_k8s_panzhihuazhihuishequ/applets_backstage/src/main/resources/bootstrap.yml                                                                 |   12 
 springcloud_k8s_panzhihuazhihuishequ/grid_backstage/src/main/resources/bootstrap.yml                                                                    |   13 
 springcloud_k8s_panzhihuazhihuishequ/config_server/pom.xml                                                                                              |   10 
 springcloud_k8s_panzhihuazhihuishequ/grid_app/src/main/resources/bootstrap.yml                                                                          |   13 
 springcloud_k8s_panzhihuazhihuishequ/timejob/pom.xml                                                                                                    |    9 
 springcloud_k8s_panzhihuazhihuishequ/community_backstage/src/main/java/com/panzhihua/community_backstage/api/ComSwPatrolRecordApi.java                  |  978 +++++++++++++++++++++++++++++++++++++--
 springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/WeatherVO.java                                                 |   23 
 springcloud_k8s_panzhihuazhihuishequ/service_partybuilding/src/main/resources/bootstrap.yml                                                             |   13 
 springcloud_k8s_panzhihuazhihuishequ/service_grid/pom.xml                                                                                               |    9 
 springcloud_k8s_panzhihuazhihuishequ/applets/pom.xml                                                                                                    |   10 
 springcloud_k8s_panzhihuazhihuishequ/eureka_server/src/main/resources/application.yml                                                                   |   13 
 springcloud_k8s_panzhihuazhihuishequ/timejob/src/main/resources/bootstrap.yml                                                                           |   12 
 springcloud_k8s_panzhihuazhihuishequ/service_partybuilding/pom.xml                                                                                      |    9 
 springcloud_k8s_panzhihuazhihuishequ/service_grid/src/main/resources/bootstrap.yml                                                                      |   13 
 springcloud_k8s_panzhihuazhihuishequ/service_user/src/main/resources/bootstrap.yml                                                                      |   13 
 springcloud_k8s_panzhihuazhihuishequ/service_user/pom.xml                                                                                               |   10 
 springcloud_k8s_panzhihuazhihuishequ/grid_backstage/pom.xml                                                                                             |    9 
 springcloud_k8s_panzhihuazhihuishequ/zuul/src/main/resources/bootstrap.yml                                                                              |   17 
 springcloud_k8s_panzhihuazhihuishequ/shop_backstage/pom.xml                                                                                             |    9 
 springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/LiveVO.java                                                    |   26 +
 springcloud_k8s_panzhihuazhihuishequ/community_backstage/src/main/resources/bootstrap.yml                                                               |   13 
 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComMngPopulationServiceImpl.java      |    6 
 springcloud_k8s_panzhihuazhihuishequ/grid_app/pom.xml                                                                                                   |    9 
 springcloud_k8s_panzhihuazhihuishequ/service_community/pom.xml                                                                                          |    9 
 springcloud_k8s_panzhihuazhihuishequ/zuul/pom.xml                                                                                                       |    9 
 springcloud_k8s_panzhihuazhihuishequ/eureka_server/pom.xml                                                                                              |   10 
 springcloud_k8s_panzhihuazhihuishequ/auth/src/main/resources/bootstrap.yml                                                                              |   13 
 springcloud_k8s_panzhihuazhihuishequ/config_server/src/main/resources/application.yml                                                                   |   13 
 37 files changed, 1,317 insertions(+), 79 deletions(-)

diff --git a/springcloud_k8s_panzhihuazhihuishequ/applets/pom.xml b/springcloud_k8s_panzhihuazhihuishequ/applets/pom.xml
index 2e9b141..c565b22 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/applets/pom.xml
+++ b/springcloud_k8s_panzhihuazhihuishequ/applets/pom.xml
@@ -50,7 +50,15 @@
             <groupId>com.github.xiaoymin</groupId>
             <artifactId>swagger-bootstrap-ui</artifactId>
         </dependency>
-
+        <!--添加监控依赖包-->
+        <dependency>
+            <groupId>io.micrometer</groupId>
+            <artifactId>micrometer-registry-prometheus</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-actuator</artifactId>
+        </dependency>
     </dependencies>
 
     <build>
diff --git a/springcloud_k8s_panzhihuazhihuishequ/applets/src/main/resources/bootstrap.yml b/springcloud_k8s_panzhihuazhihuishequ/applets/src/main/resources/bootstrap.yml
index fb95e97..4784daa 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/applets/src/main/resources/bootstrap.yml
+++ b/springcloud_k8s_panzhihuazhihuishequ/applets/src/main/resources/bootstrap.yml
@@ -29,4 +29,17 @@
     secret: c7ea9aaa7e391a487e8a5b9ba61045d1
     msgDataFormat: JSON
 
+management:
+  endpoints:
+    web:
+      exposure:
+        include: '*'
+
+  endpoint:
+    health:
+      show-details: always
+
+  metrics:
+    tags:
+      application: applets
 
diff --git a/springcloud_k8s_panzhihuazhihuishequ/applets_backstage/pom.xml b/springcloud_k8s_panzhihuazhihuishequ/applets_backstage/pom.xml
index f6ee856..7adbc20 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/applets_backstage/pom.xml
+++ b/springcloud_k8s_panzhihuazhihuishequ/applets_backstage/pom.xml
@@ -48,7 +48,15 @@
             <artifactId>hystrix-javanica</artifactId>
         </dependency>
 
-
+        <!--添加监控依赖包-->
+        <dependency>
+            <groupId>io.micrometer</groupId>
+            <artifactId>micrometer-registry-prometheus</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-actuator</artifactId>
+        </dependency>
 
     </dependencies>
 
diff --git a/springcloud_k8s_panzhihuazhihuishequ/applets_backstage/src/main/resources/bootstrap.yml b/springcloud_k8s_panzhihuazhihuishequ/applets_backstage/src/main/resources/bootstrap.yml
index a28ca88..8281d29 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/applets_backstage/src/main/resources/bootstrap.yml
+++ b/springcloud_k8s_panzhihuazhihuishequ/applets_backstage/src/main/resources/bootstrap.yml
@@ -20,7 +20,19 @@
     service-url:
       defaultZone: http://${EUREKA_URL:localhost}:8192/eureka
 
+management:
+  endpoints:
+    web:
+      exposure:
+        include: '*'
 
+  endpoint:
+    health:
+      show-details: always
+
+  metrics:
+    tags:
+      application: appletsbackstage
 
 
 
diff --git a/springcloud_k8s_panzhihuazhihuishequ/auth/pom.xml b/springcloud_k8s_panzhihuazhihuishequ/auth/pom.xml
index cc4bcee..a5fd080 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/auth/pom.xml
+++ b/springcloud_k8s_panzhihuazhihuishequ/auth/pom.xml
@@ -92,7 +92,15 @@
             <scope>compile</scope>
         </dependency>
 
-
+        <!--添加监控依赖包-->
+        <dependency>
+            <groupId>io.micrometer</groupId>
+            <artifactId>micrometer-registry-prometheus</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-actuator</artifactId>
+        </dependency>
     </dependencies>
 
     <build>
diff --git a/springcloud_k8s_panzhihuazhihuishequ/auth/src/main/resources/bootstrap.yml b/springcloud_k8s_panzhihuazhihuishequ/auth/src/main/resources/bootstrap.yml
index 8f29cff..de1c248 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/auth/src/main/resources/bootstrap.yml
+++ b/springcloud_k8s_panzhihuazhihuishequ/auth/src/main/resources/bootstrap.yml
@@ -17,3 +17,16 @@
       defaultZone: http://${EUREKA_URL:localhost}:8192/eureka
 
 
+management:
+  endpoints:
+    web:
+      exposure:
+        include: '*'
+
+  endpoint:
+    health:
+      show-details: always
+
+  metrics:
+    tags:
+      application: auth
\ No newline at end of file
diff --git a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/LiveVO.java b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/LiveVO.java
new file mode 100644
index 0000000..70e0643
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/LiveVO.java
@@ -0,0 +1,26 @@
+package com.panzhihua.common.model.vos;
+
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @program: springcloud_k8s_panzhihuazhihuishequ
+ * @description: 天气信息对象
+ * @author: huang.hongfa weixin hhf9596 qq 959656820
+ * @create: 2021-8-17 12:55
+ **/
+@Data
+@ApiModel(value = "天气信息返回体")
+public class LiveVO {
+    private String adcode;
+    private String city;
+    private String humidity;
+    private String province;
+    private String reporttime;
+    private String temperature;
+    private String weather;
+    private String winddirection;
+    private String windpower;
+}
diff --git a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/WeatherVO.java b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/WeatherVO.java
new file mode 100644
index 0000000..9750f89
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/WeatherVO.java
@@ -0,0 +1,23 @@
+package com.panzhihua.common.model.vos;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @program: springcloud_k8s_panzhihuazhihuishequ
+ * @description: 天气信息对象
+ * @author: huang.hongfa weixin hhf9596 qq 959656820
+ * @create: 2021-8-17 12:55
+ **/
+@Data
+@ApiModel(value = "天气信息返回体")
+public class WeatherVO {
+    private String count;
+    private String info;
+    private String infocode;
+    private String status;
+    private List<LiveVO> lives;
+}
diff --git a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/ComSwSafetyWorkRecordVO.java b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/ComSwSafetyWorkRecordVO.java
index 79b82fa..7c8defc 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/ComSwSafetyWorkRecordVO.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/ComSwSafetyWorkRecordVO.java
@@ -26,7 +26,7 @@
     /**
      * 安全工作记录id
      */
-    @ApiModelProperty("巡查记录id")
+    @ApiModelProperty("安全工作记录id")
     @JsonSerialize(using = ToStringSerializer.class)
     private Long id;
 
diff --git a/springcloud_k8s_panzhihuazhihuishequ/community_backstage/pom.xml b/springcloud_k8s_panzhihuazhihuishequ/community_backstage/pom.xml
index ff49bba..6477a5e 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/community_backstage/pom.xml
+++ b/springcloud_k8s_panzhihuazhihuishequ/community_backstage/pom.xml
@@ -48,6 +48,20 @@
             <groupId>com.github.xiaoymin</groupId>
             <artifactId>swagger-bootstrap-ui</artifactId>
         </dependency>
+        <dependency>
+            <groupId>com.github.kmood</groupId>
+            <artifactId>officeexport-java</artifactId>
+            <version>1.0.1.6-RELEASE</version>
+        </dependency>
+        <!--添加监控依赖包-->
+        <dependency>
+            <groupId>io.micrometer</groupId>
+            <artifactId>micrometer-registry-prometheus</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-actuator</artifactId>
+        </dependency>
     </dependencies>
 
     <build>
diff --git a/springcloud_k8s_panzhihuazhihuishequ/community_backstage/src/main/java/com/panzhihua/community_backstage/api/ComSwPatrolRecordApi.java b/springcloud_k8s_panzhihuazhihuishequ/community_backstage/src/main/java/com/panzhihua/community_backstage/api/ComSwPatrolRecordApi.java
index 3f4f901..8992b53 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/community_backstage/src/main/java/com/panzhihua/community_backstage/api/ComSwPatrolRecordApi.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/community_backstage/src/main/java/com/panzhihua/community_backstage/api/ComSwPatrolRecordApi.java
@@ -4,6 +4,7 @@
 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;
@@ -13,16 +14,24 @@
 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;
@@ -31,11 +40,13 @@
 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;
@@ -442,73 +453,862 @@
         }
     }
 
-//    @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>>();
@@ -538,11 +1338,51 @@
         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;
+    }
 }
 
diff --git a/springcloud_k8s_panzhihuazhihuishequ/community_backstage/src/main/resources/bootstrap.yml b/springcloud_k8s_panzhihuazhihuishequ/community_backstage/src/main/resources/bootstrap.yml
index b721eb2..d661da4 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/community_backstage/src/main/resources/bootstrap.yml
+++ b/springcloud_k8s_panzhihuazhihuishequ/community_backstage/src/main/resources/bootstrap.yml
@@ -20,3 +20,16 @@
     service-url:
       defaultZone: http://${EUREKA_URL:localhost}:8192/eureka
 
+management:
+  endpoints:
+    web:
+      exposure:
+        include: '*'
+
+  endpoint:
+    health:
+      show-details: always
+
+  metrics:
+    tags:
+      application: communitybackstage
\ No newline at end of file
diff --git a/springcloud_k8s_panzhihuazhihuishequ/config_server/pom.xml b/springcloud_k8s_panzhihuazhihuishequ/config_server/pom.xml
index 099068c..5e6df14 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/config_server/pom.xml
+++ b/springcloud_k8s_panzhihuazhihuishequ/config_server/pom.xml
@@ -40,7 +40,15 @@
             <artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
         </dependency>
 
-
+        <!--添加监控依赖包-->
+        <dependency>
+            <groupId>io.micrometer</groupId>
+            <artifactId>micrometer-registry-prometheus</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-actuator</artifactId>
+        </dependency>
 
     </dependencies>
 
diff --git a/springcloud_k8s_panzhihuazhihuishequ/config_server/src/main/resources/application.yml b/springcloud_k8s_panzhihuazhihuishequ/config_server/src/main/resources/application.yml
index 93afcd5..f2c7e59 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/config_server/src/main/resources/application.yml
+++ b/springcloud_k8s_panzhihuazhihuishequ/config_server/src/main/resources/application.yml
@@ -26,3 +26,16 @@
           password: huanghongfa123456
 #          basedir: F:\nahan\config-repo\config-repo
 
+management:
+  endpoints:
+    web:
+      exposure:
+        include: '*'
+
+  endpoint:
+    health:
+      show-details: always
+
+  metrics:
+    tags:
+      application: config
\ No newline at end of file
diff --git a/springcloud_k8s_panzhihuazhihuishequ/eureka_server/pom.xml b/springcloud_k8s_panzhihuazhihuishequ/eureka_server/pom.xml
index c6bb15c..9c9f8b3 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/eureka_server/pom.xml
+++ b/springcloud_k8s_panzhihuazhihuishequ/eureka_server/pom.xml
@@ -25,7 +25,15 @@
             <artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
         </dependency>
 
-
+        <!--添加监控依赖包-->
+        <dependency>
+            <groupId>io.micrometer</groupId>
+            <artifactId>micrometer-registry-prometheus</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-actuator</artifactId>
+        </dependency>
 
     </dependencies>
 
diff --git a/springcloud_k8s_panzhihuazhihuishequ/eureka_server/src/main/resources/application.yml b/springcloud_k8s_panzhihuazhihuishequ/eureka_server/src/main/resources/application.yml
index e24b601..d0495ed 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/eureka_server/src/main/resources/application.yml
+++ b/springcloud_k8s_panzhihuazhihuishequ/eureka_server/src/main/resources/application.yml
@@ -14,3 +14,16 @@
         enable-self-preservation: false  #是否开启自我保护模式
         eviction‐interval‐timer‐in‐ms: 10000 #服务注册表清理间隔(单位毫秒,默认是60*1000)
 
+management:
+    endpoints:
+        web:
+            exposure:
+                include: '*'
+
+    endpoint:
+        health:
+            show-details: always
+
+    metrics:
+        tags:
+            application: eureka
\ No newline at end of file
diff --git a/springcloud_k8s_panzhihuazhihuishequ/grid_app/pom.xml b/springcloud_k8s_panzhihuazhihuishequ/grid_app/pom.xml
index 1e99969..f0b125f 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/grid_app/pom.xml
+++ b/springcloud_k8s_panzhihuazhihuishequ/grid_app/pom.xml
@@ -48,6 +48,15 @@
             <groupId>com.github.xiaoymin</groupId>
             <artifactId>swagger-bootstrap-ui</artifactId>
         </dependency>
+        <!--添加监控依赖包-->
+        <dependency>
+            <groupId>io.micrometer</groupId>
+            <artifactId>micrometer-registry-prometheus</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-actuator</artifactId>
+        </dependency>
     </dependencies>
 
     <build>
diff --git a/springcloud_k8s_panzhihuazhihuishequ/grid_app/src/main/resources/bootstrap.yml b/springcloud_k8s_panzhihuazhihuishequ/grid_app/src/main/resources/bootstrap.yml
index 93a8387..0c315f2 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/grid_app/src/main/resources/bootstrap.yml
+++ b/springcloud_k8s_panzhihuazhihuishequ/grid_app/src/main/resources/bootstrap.yml
@@ -20,3 +20,16 @@
     service-url:
       defaultZone: http://${EUREKA_URL:localhost}:8192/eureka
 
+management:
+  endpoints:
+    web:
+      exposure:
+        include: '*'
+
+  endpoint:
+    health:
+      show-details: always
+
+  metrics:
+    tags:
+      application: gridapp
\ No newline at end of file
diff --git a/springcloud_k8s_panzhihuazhihuishequ/grid_backstage/pom.xml b/springcloud_k8s_panzhihuazhihuishequ/grid_backstage/pom.xml
index 5650d52..44d1176 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/grid_backstage/pom.xml
+++ b/springcloud_k8s_panzhihuazhihuishequ/grid_backstage/pom.xml
@@ -48,6 +48,15 @@
             <groupId>com.github.xiaoymin</groupId>
             <artifactId>swagger-bootstrap-ui</artifactId>
         </dependency>
+        <!--添加监控依赖包-->
+        <dependency>
+            <groupId>io.micrometer</groupId>
+            <artifactId>micrometer-registry-prometheus</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-actuator</artifactId>
+        </dependency>
     </dependencies>
 
     <build>
diff --git a/springcloud_k8s_panzhihuazhihuishequ/grid_backstage/src/main/resources/bootstrap.yml b/springcloud_k8s_panzhihuazhihuishequ/grid_backstage/src/main/resources/bootstrap.yml
index f13b433..fb45df8 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/grid_backstage/src/main/resources/bootstrap.yml
+++ b/springcloud_k8s_panzhihuazhihuishequ/grid_backstage/src/main/resources/bootstrap.yml
@@ -20,3 +20,16 @@
     service-url:
       defaultZone: http://${EUREKA_URL:localhost}:8192/eureka
 
+management:
+  endpoints:
+    web:
+      exposure:
+        include: '*'
+
+  endpoint:
+    health:
+      show-details: always
+
+  metrics:
+    tags:
+      application: gridbackstage
\ No newline at end of file
diff --git a/springcloud_k8s_panzhihuazhihuishequ/pom.xml b/springcloud_k8s_panzhihuazhihuishequ/pom.xml
index 3bc2707..63d76d4 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/pom.xml
+++ b/springcloud_k8s_panzhihuazhihuishequ/pom.xml
@@ -185,6 +185,17 @@
                 <artifactId>feign-httpclient</artifactId>
                 <version>${feign-httpclient.version}</version>
             </dependency>
+            <!--添加监控依赖包-->
+            <dependency>
+                <groupId>io.micrometer</groupId>
+                <artifactId>micrometer-registry-prometheus</artifactId>
+                <version>1.5.1</version>
+            </dependency>
+            <dependency>
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-starter-actuator</artifactId>
+                <version>2.3.4.RELEASE</version>
+            </dependency>
 
         </dependencies>
     </dependencyManagement>
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_community/pom.xml b/springcloud_k8s_panzhihuazhihuishequ/service_community/pom.xml
index c7df5fb..5dafd06 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/service_community/pom.xml
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_community/pom.xml
@@ -73,6 +73,15 @@
             <artifactId>commons-lang</artifactId>
             <version>2.6</version>
         </dependency>
+        <!--添加监控依赖包-->
+        <dependency>
+            <groupId>io.micrometer</groupId>
+            <artifactId>micrometer-registry-prometheus</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-actuator</artifactId>
+        </dependency>
     </dependencies>
 
 
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComMngPopulationServiceImpl.java b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComMngPopulationServiceImpl.java
index 17ba050..60f59a4 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComMngPopulationServiceImpl.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComMngPopulationServiceImpl.java
@@ -649,6 +649,12 @@
                     populationDO = (ComMngPopulationDO)populationMap.get(populationKey);
                     ComMngPopulationDO updatePopulationDO = updatePopulationDO(vo,populationDO,labelList);
                     updateList.add(updatePopulationDO);
+
+                    ComMngPopulationMistakeExcelVO mistake = new ComMngPopulationMistakeExcelVO();
+                    BeanUtils.copyProperties(vo,mistake);
+                    setMistake(mistake, vo);
+                    mistake.setMistake("该实有人口已存在,执行更新,社区id::"+ populationDO.getActId());
+                    mistakes.add(mistake);
                 }else{
                     //不存在实有人口,则新增
                     populationDO = savePopulationDO(vo, populationActVO, comMngVillageDO,labelList);
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComSwSafetyWorkRecordServiceImpl.java b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComSwSafetyWorkRecordServiceImpl.java
index 2595388..fe9a859 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComSwSafetyWorkRecordServiceImpl.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComSwSafetyWorkRecordServiceImpl.java
@@ -96,6 +96,8 @@
             BeanUtils.copyProperties(comSwPatrolRecordDO, comSwSafetyWorkRecordVO);
         }
 
+        BeanUtils.copyProperties(swSafetyWorkRecordDO, comSwSafetyWorkRecordVO);
+
         //组装巡查类型
         if(StringUtils.isNotEmpty(comSwSafetyWorkRecordVO.getPatrolType())){
             StringBuilder sb = new StringBuilder();
@@ -143,6 +145,7 @@
 
     @Override
     public R detailSafetyWorkRecordByPrId(Long patrolRecordId, Long communityId) {
+        ComSwSafetyWorkRecordVO comSwSafetyWorkRecordVO = new ComSwSafetyWorkRecordVO();
         ComSwPatrolRecordDO comSwPatrolRecordDO = comSwPatrolRecordDAO.selectById(patrolRecordId);
         ComSwPatrolRecordReportDO comSwPatrolRecordReportDO = comSwPatrolRecordReportDAO.selectOne(new QueryWrapper<ComSwPatrolRecordReportDO>().lambda().eq(ComSwPatrolRecordReportDO::getPatrolRecordId, patrolRecordId));
         if (null != comSwPatrolRecordReportDO) {
@@ -150,9 +153,9 @@
             if (null == comSwSafetyWorkRecordDO) {
                 return R.fail("该安全工作记录不存在");
             }
+            BeanUtils.copyProperties(comSwPatrolRecordDO, comSwSafetyWorkRecordVO);
+            BeanUtils.copyProperties(comSwSafetyWorkRecordDO, comSwSafetyWorkRecordVO);
         }
-        ComSwSafetyWorkRecordVO comSwSafetyWorkRecordVO = new ComSwSafetyWorkRecordVO();
-        BeanUtils.copyProperties(comSwPatrolRecordDO, comSwSafetyWorkRecordVO);
         //所属社区名称
         comSwSafetyWorkRecordVO.setCommunityName(comActDAO.selectById(communityId).getName());
         return R.ok(comSwSafetyWorkRecordVO);
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/resources/bootstrap.yml b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/resources/bootstrap.yml
index f5c3342..4fb0fc1 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/resources/bootstrap.yml
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/resources/bootstrap.yml
@@ -28,3 +28,16 @@
   aesKey: Ryo7M3n8loC5
   sensitive: true
 
+management:
+  endpoints:
+    web:
+      exposure:
+        include: '*'
+
+  endpoint:
+    health:
+      show-details: always
+
+  metrics:
+    tags:
+      application: community
\ No newline at end of file
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_grid/pom.xml b/springcloud_k8s_panzhihuazhihuishequ/service_grid/pom.xml
index d0c8ca2..37afa2c 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/service_grid/pom.xml
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_grid/pom.xml
@@ -73,6 +73,15 @@
             <artifactId>commons-lang</artifactId>
             <version>2.6</version>
         </dependency>
+        <!--添加监控依赖包-->
+        <dependency>
+            <groupId>io.micrometer</groupId>
+            <artifactId>micrometer-registry-prometheus</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-actuator</artifactId>
+        </dependency>
     </dependencies>
 
 
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_grid/src/main/resources/bootstrap.yml b/springcloud_k8s_panzhihuazhihuishequ/service_grid/src/main/resources/bootstrap.yml
index 28648a6..38ecc3c 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/service_grid/src/main/resources/bootstrap.yml
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_grid/src/main/resources/bootstrap.yml
@@ -23,3 +23,16 @@
   aesKey: Ryo7M3n8loC5
   sensitive: true
 
+management:
+  endpoints:
+    web:
+      exposure:
+        include: '*'
+
+  endpoint:
+    health:
+      show-details: always
+
+  metrics:
+    tags:
+      application: grid
\ No newline at end of file
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_partybuilding/pom.xml b/springcloud_k8s_panzhihuazhihuishequ/service_partybuilding/pom.xml
index c9fe17c..d15e21d 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/service_partybuilding/pom.xml
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_partybuilding/pom.xml
@@ -59,6 +59,15 @@
             <groupId>org.springframework.data</groupId>
             <artifactId>spring-data-redis</artifactId>
         </dependency>
+        <!--添加监控依赖包-->
+        <dependency>
+            <groupId>io.micrometer</groupId>
+            <artifactId>micrometer-registry-prometheus</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-actuator</artifactId>
+        </dependency>
     </dependencies>
 
 
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_partybuilding/src/main/resources/bootstrap.yml b/springcloud_k8s_panzhihuazhihuishequ/service_partybuilding/src/main/resources/bootstrap.yml
index 355e0d4..fd3279c 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/service_partybuilding/src/main/resources/bootstrap.yml
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_partybuilding/src/main/resources/bootstrap.yml
@@ -16,3 +16,16 @@
     service-url:
       defaultZone: http://${EUREKA_URL:localhost}:8192/eureka
 
+management:
+  endpoints:
+    web:
+      exposure:
+        include: '*'
+
+  endpoint:
+    health:
+      show-details: always
+
+  metrics:
+    tags:
+      application: partybuilding
\ No newline at end of file
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_user/pom.xml b/springcloud_k8s_panzhihuazhihuishequ/service_user/pom.xml
index 3eeffde..857c67d 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/service_user/pom.xml
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_user/pom.xml
@@ -71,7 +71,15 @@
             <groupId>com.netflix.hystrix</groupId>
             <artifactId>hystrix-javanica</artifactId>
         </dependency>
-
+        <!--添加监控依赖包-->
+        <dependency>
+            <groupId>io.micrometer</groupId>
+            <artifactId>micrometer-registry-prometheus</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-actuator</artifactId>
+        </dependency>
     </dependencies>
 
 
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_user/src/main/resources/bootstrap.yml b/springcloud_k8s_panzhihuazhihuishequ/service_user/src/main/resources/bootstrap.yml
index 8820a34..7e3de73 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/service_user/src/main/resources/bootstrap.yml
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_user/src/main/resources/bootstrap.yml
@@ -16,3 +16,16 @@
     service-url:
       defaultZone: http://${EUREKA_URL:localhost}:8192/eureka
 
+management:
+  endpoints:
+    web:
+      exposure:
+        include: '*'
+
+  endpoint:
+    health:
+      show-details: always
+
+  metrics:
+    tags:
+      application: user
\ No newline at end of file
diff --git a/springcloud_k8s_panzhihuazhihuishequ/shop_backstage/pom.xml b/springcloud_k8s_panzhihuazhihuishequ/shop_backstage/pom.xml
index c671e1d..11562b5 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/shop_backstage/pom.xml
+++ b/springcloud_k8s_panzhihuazhihuishequ/shop_backstage/pom.xml
@@ -47,6 +47,15 @@
             <groupId>com.github.xiaoymin</groupId>
             <artifactId>swagger-bootstrap-ui</artifactId>
         </dependency>
+        <!--添加监控依赖包-->
+        <dependency>
+            <groupId>io.micrometer</groupId>
+            <artifactId>micrometer-registry-prometheus</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-actuator</artifactId>
+        </dependency>
     </dependencies>
 
     <build>
diff --git a/springcloud_k8s_panzhihuazhihuishequ/shop_backstage/src/main/resources/bootstrap.yml b/springcloud_k8s_panzhihuazhihuishequ/shop_backstage/src/main/resources/bootstrap.yml
index bb7fc05..093e51a 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/shop_backstage/src/main/resources/bootstrap.yml
+++ b/springcloud_k8s_panzhihuazhihuishequ/shop_backstage/src/main/resources/bootstrap.yml
@@ -20,3 +20,16 @@
     service-url:
       defaultZone: http://${EUREKA_URL:localhost}:8192/eureka
 
+management:
+  endpoints:
+    web:
+      exposure:
+        include: '*'
+
+  endpoint:
+    health:
+      show-details: always
+
+  metrics:
+    tags:
+      application: shopbackstage
\ No newline at end of file
diff --git a/springcloud_k8s_panzhihuazhihuishequ/timejob/pom.xml b/springcloud_k8s_panzhihuazhihuishequ/timejob/pom.xml
index 827bc33..8583bb5 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/timejob/pom.xml
+++ b/springcloud_k8s_panzhihuazhihuishequ/timejob/pom.xml
@@ -48,6 +48,15 @@
             <artifactId>xxl-job-core</artifactId>
             <version>2.2.0</version>
         </dependency>
+        <!--添加监控依赖包-->
+        <dependency>
+            <groupId>io.micrometer</groupId>
+            <artifactId>micrometer-registry-prometheus</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-actuator</artifactId>
+        </dependency>
     </dependencies>
 
 
diff --git a/springcloud_k8s_panzhihuazhihuishequ/timejob/src/main/resources/bootstrap.yml b/springcloud_k8s_panzhihuazhihuishequ/timejob/src/main/resources/bootstrap.yml
index 8e2542b..f987477 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/timejob/src/main/resources/bootstrap.yml
+++ b/springcloud_k8s_panzhihuazhihuishequ/timejob/src/main/resources/bootstrap.yml
@@ -17,5 +17,17 @@
       defaultZone: http://${EUREKA_URL:localhost}:8192/eureka
 
 
+management:
+  endpoints:
+    web:
+      exposure:
+        include: '*'
 
+  endpoint:
+    health:
+      show-details: always
+
+  metrics:
+    tags:
+      application: timejob
 
diff --git a/springcloud_k8s_panzhihuazhihuishequ/zuul/pom.xml b/springcloud_k8s_panzhihuazhihuishequ/zuul/pom.xml
index 931c0ad..98232ec 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/zuul/pom.xml
+++ b/springcloud_k8s_panzhihuazhihuishequ/zuul/pom.xml
@@ -56,6 +56,15 @@
             <groupId>io.springfox</groupId>
             <artifactId>springfox-swagger-ui</artifactId>
         </dependency>
+        <!--添加监控依赖包-->
+        <dependency>
+            <groupId>io.micrometer</groupId>
+            <artifactId>micrometer-registry-prometheus</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-actuator</artifactId>
+        </dependency>
     </dependencies>
 
 
diff --git a/springcloud_k8s_panzhihuazhihuishequ/zuul/src/main/resources/bootstrap.yml b/springcloud_k8s_panzhihuazhihuishequ/zuul/src/main/resources/bootstrap.yml
index 563c4d2..300ecf7 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/zuul/src/main/resources/bootstrap.yml
+++ b/springcloud_k8s_panzhihuazhihuishequ/zuul/src/main/resources/bootstrap.yml
@@ -84,4 +84,19 @@
       - POST:/api/applets/user/pagemicrowish
       - POST:/api/applets/user/pageeasyphoto
       - POST:/api/applets/neighbor/user/page
-      - GET:/api/applets/user/listfamily
\ No newline at end of file
+      - GET:/api/applets/user/listfamily
+
+
+management:
+  endpoints:
+    web:
+      exposure:
+        include: '*'
+
+  endpoint:
+    health:
+      show-details: always
+
+  metrics:
+    tags:
+      application: zuul
\ No newline at end of file

--
Gitblit v1.7.1