From b200b681bc401bb11c133a79273ba78cb6ebedf8 Mon Sep 17 00:00:00 2001
From: huanghongfa <huanghongfa123456>
Date: 星期五, 30 七月 2021 18:16:37 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 springcloud_k8s_panzhihuazhihuishequ/service_user/src/main/java/com/panzhihua/service_user/dao/LcCompareMemberCodeMapper.java                             |   19 
 springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/listen/ComMngPopulationServeExcelListen.java                               | 1105 ++++++----
 springcloud_k8s_panzhihuazhihuishequ/applets/src/main/java/com/panzhihua/applets/api/CommonApi.java                                                       |   10 
 springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/community/ComSwPatrolRecordPageDTO.java                         |   73 
 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComSwSafetyWorkRecordServiceImpl.java   |   89 
 springcloud_k8s_panzhihuazhihuishequ/community_backstage/src/main/java/com/panzhihua/community_backstage/listen/PartyBuildingMemberExcelListen.java       |    4 
 springcloud_k8s_panzhihuazhihuishequ/grid_backstage/src/main/java/com/panzhihua/grid_backstage/api/EventGridMemberRelationApi.java                        |   15 
 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/resources/mapper/ComActEasyPhotoActivityDOMapper.xml                                      |    2 
 springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/partybuilding/PartyOrganizationVO.java                           |    4 
 springcloud_k8s_panzhihuazhihuishequ/applets/src/main/java/com/panzhihua/applets/api/ComSwPatrolRecordApi.java                                            |  149 +
 springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/ComMngPopulationServeExcelVO.java                      |    3 
 springcloud_k8s_panzhihuazhihuishequ/service_partybuilding/src/main/java/com/panzhihua/service_dangjian/service/PartyOrganizationService.java             |    2 
 springcloud_k8s_panzhihuazhihuishequ/service_grid/src/main/java/com/panzhihua/service_grid/service/impl/EventGridDataServiceImpl.java                     |   39 
 springcloud_k8s_panzhihuazhihuishequ/service_grid/src/main/java/com/panzhihua/service_grid/service/impl/EventServiceImpl.java                             |   25 
 springcloud_k8s_panzhihuazhihuishequ/service_api/src/main/java/com/panzhihua/serviceapi/biz/LcApiService.java                                             |   13 
 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComActDiscussDAO.java                            |   42 
 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComActActivityDAO.java                           |   18 
 springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/ComSwPatrolRecordStatisticsVO.java                     |   35 
 springcloud_k8s_panzhihuazhihuishequ/service_grid/src/main/java/com/panzhihua/service_grid/api/StatisticsApi.java                                         |   14 
 springcloud_k8s_panzhihuazhihuishequ/community_backstage/src/main/java/com/panzhihua/community_backstage/api/PopulationApi.java                           |    4 
 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComMngCarDAO.java                                |    6 
 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActMicroWishServiceImpl.java         |    3 
 springcloud_k8s_panzhihuazhihuishequ/service_api/src/main/java/com/panzhihua/serviceapi/biz/impl/LcApiServiceImpl.java                                    |   19 
 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComMngPopulationServiceImpl.java        |   35 
 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/resources/mapper/ComSwDangerReportMapper.xml                                              |  157 +
 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComMngStructOtherBuildDAO.java                   |    5 
 springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/grid/admin/GridMemberLcListVO.java                               |    2 
 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComSwDangerReportServiceImpl.java       |  175 +
 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActEasyPhotoServiceImpl.java         |   20 
 springcloud_k8s_panzhihuazhihuishequ/service_grid/src/main/java/com/panzhihua/service_grid/dao/EventGridMemberRelationMapper.java                         |    2 
 springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/ComMngPopulationMistakeExcelVO.java                    |  148 +
 springcloud_k8s_panzhihuazhihuishequ/grid_app/src/main/java/com/panzhihua/grid_app/api/StatisticsApi.java                                                 |    7 
 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/ComSwSafetyWorkRecordService.java            |   40 
 springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/service/community/CommunityService.java                                    |  117 +
 springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/grid/EventGridDataEditAdminDTO.java                             |    5 
 springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/community/PageComMngVillageDTO.java                             |    2 
 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActActivityServiceImpl.java          |   10 
 springcloud_k8s_panzhihuazhihuishequ/service_grid/src/main/java/com/panzhihua/service_grid/service/EventService.java                                      |    9 
 springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/grid/EventGridMemberEditAdminDTO.java                           |    8 
 springcloud_k8s_panzhihuazhihuishequ/grid_backstage/src/main/java/com/panzhihua/grid_backstage/api/EventGridDataApi.java                                  |   27 
 springcloud_k8s_panzhihuazhihuishequ/service_api/src/test/java/com/panzhihua/serviceapi/biz/impl/LcApiServiceImplTest.java                                |   14 
 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/model/dos/ComSwPatrolRecordDO.java                   |  162 +
 springcloud_k8s_panzhihuazhihuishequ/service_partybuilding/src/main/java/com/panzhihua/service_dangjian/api/PartyBuildIngApi.java                         |    5 
 springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/grid/GridMemberVO.java                                           |    6 
 springcloud_k8s_panzhihuazhihuishequ/zuul/src/main/java/com/panzhihua/zuul/filters/JWTAuthenticationTokenFilter.java                                      |   16 
 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/api/CommonDataApi.java                               |    2 
 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/api/ComSwPatrolRecordApi.java                        |  168 +
 springcloud_k8s_panzhihuazhihuishequ/service_partybuilding/src/main/java/com/panzhihua/service_dangjian/service/impl/PartyOrganizationServiceImpl.java    |   21 
 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComSwSafetyWorkRecordDAO.java                    |   28 
 springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/service/partybuilding/PartyBuildingService.java                            |    2 
 springcloud_k8s_panzhihuazhihuishequ/community_backstage/src/main/java/com/panzhihua/community_backstage/api/CommonDataApi.java                           |  161 +
 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/ComSwDangerReportService.java                |   68 
 springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/ComSwDangerReportVO.java                               |  267 ++
 springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/ComSwSafetyWorkRecordVO.java                           |  135 +
 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActEasyPhotoActivityServiceImpl.java |    4 
 hs_err_pid36404.log                                                                                                                                       |  198 +
 springcloud_k8s_panzhihuazhihuishequ/service_user/src/main/java/com/panzhihua/service_user/service/impl/UserServiceImpl.java                              |   48 
 springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/enums/SafeWordDangerLevelEnum.java                                         |   45 
 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/ComSwPatrolRecordService.java                |   42 
 springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/community/ComSwDangerReportHandleDTO.java                       |   64 
 springcloud_k8s_panzhihuazhihuishequ/community_backstage/src/main/java/com/panzhihua/community_backstage/api/CommunityPartyBuildingApi.java               |    7 
 springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/community/ComMngPopulationHouseEditDTO.java                     |    6 
 springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/enums/SafeWordStatusEnum.java                                              |   44 
 springcloud_k8s_panzhihuazhihuishequ/service_grid/src/main/resources/mapper/EventMapper.xml                                                               |   40 
 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/model/dos/ComSwPatrolRecordReportDO.java             |   72 
 springcloud_k8s_panzhihuazhihuishequ/service_user/src/main/java/com/panzhihua/service_user/model/dos/LcCompareCodeMemberDO.java                           |   38 
 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComSwPatrolRecordServiceImpl.java       |  130 +
 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/resources/mapper/ComSwSafetyWorkRecordMapper.xml                                          |   62 
 springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/community/ComSwPatrolRecordAddDTO.java                          |  201 +
 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComMngPopulationDAO.java                         |    4 
 springcloud_k8s_panzhihuazhihuishequ/applets/src/main/java/com/panzhihua/applets/api/CommunityApi.java                                                    |    6 
 springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/screen/civil/CivilVillageStatisticsVO.java             |    3 
 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComSwPatrolRecordReportDAO.java                  |   15 
 springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/ComSwPatrolRecordVO.java                               |  234 ++
 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/api/CommunityApi.java                                |    8 
 springcloud_k8s_panzhihuazhihuishequ/service_user/src/main/java/com/panzhihua/service_user/dao/UserDao.java                                               |    6 
 springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/service/grid/GridService.java                                              |   10 
 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComActMessageDAO.java                            |    2 
 springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/grid/EventGridDataAddAdminDTO.java                              |    5 
 springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/ComSwDangerReportExcelVO.java                          |   59 
 springcloud_k8s_panzhihuazhihuishequ/service_grid/src/main/java/com/panzhihua/service_grid/dao/EventMapper.java                                           |    4 
 springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/api/LcApiConstants.java                                                    |    6 
 springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/grid/admin/LcGridMemberDTO.java                                 |   31 
 springcloud_k8s_panzhihuazhihuishequ/service_partybuilding/src/main/java/com/panzhihua/service_dangjian/dao/ComPbOrgDAO.java                              |    9 
 springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/exceptions/ServiceException.java                                           |    8 
 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/resources/mapper/ComSwPatrolRecordMapper.xml                                              |   79 
 springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/grid/EventGridMemberAddDTO.java                                 |    8 
 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/model/dos/ComMngPopulationHouseUserDO.java           |    5 
 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComSwPatrolRecordDAO.java                        |   27 
 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/model/dos/ComSwSafetyWorkRecordDO.java               |   66 
 springcloud_k8s_panzhihuazhihuishequ/service_partybuilding/src/main/java/com/panzhihua/service_dangjian/model/dos/ComPbDynDO.java                         |    5 
 springcloud_k8s_panzhihuazhihuishequ/community_backstage/src/main/java/com/panzhihua/community_backstage/api/ComSwPatrolRecordApi.java                    |  258 ++
 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComActEasyPhotoActivityMapper.java               |    2 
 springcloud_k8s_panzhihuazhihuishequ/service_api/src/main/java/com/panzhihua/serviceapi/api/LcEventApi.java                                               |   31 
 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/model/dos/ComSwDangerReportDO.java                   |  172 +
 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComSwDangerReportDAO.java                        |   47 
 springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/api/GridMemberPageListDTO.java                                  |   50 
 springcloud_k8s_panzhihuazhihuishequ/grid_backstage/src/main/java/com/panzhihua/grid_backstage/api/StatisticsApi.java                                     |   95 
 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/resources/mapper/ComSwPatrolRecordReportMapper.xml                                        |   21 
 springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/grid/admin/excel/GridMemberWorkExportExcelVO.java                |   71 
 springcloud_k8s_panzhihuazhihuishequ/service_partybuilding/src/main/java/com/panzhihua/service_dangjian/service/impl/ComPbMemberServiceImpl.java          |   14 
 springcloud_k8s_panzhihuazhihuishequ/service_grid/src/main/resources/mapper/EventGridMemberRelationMapper.xml                                             |  246 ++
 springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/community/ComSwDangerReportRectifyDTO.java                      |   49 
 springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/service/api/ApiServiceFeign.java                                           |   12 
 springcloud_k8s_panzhihuazhihuishequ/community_backstage/src/main/java/com/panzhihua/community_backstage/api/CommunityActivityApi.java                    |    3 
 105 files changed, 5,559 insertions(+), 630 deletions(-)

diff --git a/hs_err_pid36404.log b/hs_err_pid36404.log
new file mode 100644
index 0000000..04a69c6
--- /dev/null
+++ b/hs_err_pid36404.log
@@ -0,0 +1,198 @@
+#
+# There is insufficient memory for the Java Runtime Environment to continue.
+# Native memory allocation (mmap) failed to map 134217728 bytes for Failed to commit area from 0x0000000081c00000 to 0x0000000089c00000 of length 134217728.
+# Possible reasons:
+#   The system is out of physical RAM or swap space
+#   The process is running with CompressedOops enabled, and the Java Heap may be blocking the growth of the native heap
+# Possible solutions:
+#   Reduce memory load on the system
+#   Increase physical memory or swap space
+#   Check if swap backing store is full
+#   Decrease Java heap size (-Xmx/-Xms)
+#   Decrease number of Java threads
+#   Decrease Java thread stack sizes (-Xss)
+#   Set larger code cache with -XX:ReservedCodeCacheSize=
+# This output file may be truncated or incomplete.
+#
+#  Out of Memory Error (./src/hotspot/os/windows/os_windows.cpp:3301), pid=36404, tid=8528
+#
+# JRE version:  (11.0.11+9) (build )
+# Java VM: OpenJDK 64-Bit Server VM (11.0.11+9-b1341.60, mixed mode, sharing, tiered, compressed oops, g1 gc, windows-amd64)
+# No core dump will be written. Minidumps are not enabled by default on client versions of Windows
+#
+
+---------------  S U M M A R Y ------------
+
+Command Line: org.jetbrains.git4idea.http.GitAskPassApp Username for 'http://gitlab.nhys.cdnhxx.com': 
+
+Host: Intel(R) Core(TM) i5-9400 CPU @ 2.90GHz, 6 cores, 7G,  Windows 10 , 64 bit Build 19041 (10.0.19041.207)
+Time: Mon Jul 19 18:25:39 2021 �й���׼ʱ�� elapsed time: 0.020709 seconds (0d 0h 0m 0s)
+
+---------------  T H R E A D  ---------------
+
+Current thread (0x00000158851b6000):  JavaThread "Unknown thread" [_thread_in_vm, id=8528, stack(0x0000003aed700000,0x0000003aed800000)]
+
+Stack: [0x0000003aed700000,0x0000003aed800000]
+Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
+V  [jvm.dll+0x5f5c8a]
+V  [jvm.dll+0x779405]
+V  [jvm.dll+0x77aa1d]
+V  [jvm.dll+0x77b0d3]
+V  [jvm.dll+0x244bc8]
+V  [jvm.dll+0x5f3084]
+V  [jvm.dll+0x5e7fe5]
+V  [jvm.dll+0x30098b]
+V  [jvm.dll+0x3008fa]
+V  [jvm.dll+0x3007d2]
+V  [jvm.dll+0x3056b6]
+V  [jvm.dll+0x34e353]
+V  [jvm.dll+0x34ea56]
+V  [jvm.dll+0x34e453]
+V  [jvm.dll+0x2db398]
+V  [jvm.dll+0x2dc547]
+V  [jvm.dll+0x757bf7]
+V  [jvm.dll+0x7593ec]
+V  [jvm.dll+0x35b8d9]
+V  [jvm.dll+0x73b38e]
+V  [jvm.dll+0x3c3cc3]
+V  [jvm.dll+0x3c60e1]
+C  [jli.dll+0x5373]
+C  [ucrtbase.dll+0x21542]
+C  [KERNEL32.DLL+0x16fd4]
+C  [ntdll.dll+0x4cec1]
+
+
+---------------  P R O C E S S  ---------------
+
+Threads class SMR info:
+_java_thread_list=0x00000158830a0110, length=0, elements={
+}
+
+Java Threads: ( => current thread )
+
+Other Threads:
+  0x000001588317d000 GCTaskThread "GC Thread#0" [stack: 0x0000003aed800000,0x0000003aed900000] [id=31824]
+  0x00000158851fc800 ConcurrentGCThread "G1 Main Marker" [stack: 0x0000003aed900000,0x0000003aeda00000] [id=9432]
+  0x00000158851fe800 ConcurrentGCThread "G1 Conc#0" [stack: 0x0000003aeda00000,0x0000003aedb00000] [id=28756]
+
+[error occurred during error reporting (printing all threads), id 0xc0000005, EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x00007ffd7a87b9f7]
+
+VM state:not at safepoint (not fully initialized)
+
+VM Mutex/Monitor currently owned by a thread:  ([mutex/lock_event])
+[0x00000158851b2420] Heap_lock - owner thread: 0x00000158851b6000
+
+Heap address: 0x0000000081c00000, size: 2020 MB, Compressed Oops mode: Non-zero based: 0x0000000081c00000
+Narrow klass base: 0x0000000000000000, Narrow klass shift: 0
+
+GC Heap History (0 events):
+No events
+
+Deoptimization events (0 events):
+No events
+
+Classes redefined (0 events):
+No events
+
+Internal exceptions (0 events):
+No events
+
+Events (1 events):
+Event: 0.010 Loaded shared library D:\java\JetBrains\IntelliJ IDEA 2021.1.3\jbr\bin\zip.dll
+
+
+Dynamic libraries:
+0x00007ff6ee870000 - 0x00007ff6ee87a000 	D:\java\JetBrains\IntelliJ IDEA 2021.1.3\jbr\bin\java.exe
+0x00007ffda5130000 - 0x00007ffda5324000 	C:\windows\SYSTEM32\ntdll.dll
+0x00007ffda4c20000 - 0x00007ffda4cdd000 	C:\windows\System32\KERNEL32.DLL
+0x00007ffda2710000 - 0x00007ffda29d7000 	C:\windows\System32\KERNELBASE.dll
+0x00007ffda2ed0000 - 0x00007ffda2fd0000 	C:\windows\System32\ucrtbase.dll
+0x00007ffd9c0b0000 - 0x00007ffd9c0c9000 	D:\java\JetBrains\IntelliJ IDEA 2021.1.3\jbr\bin\jli.dll
+0x00007ffda3720000 - 0x00007ffda38c0000 	C:\windows\System32\USER32.dll
+0x00007ffda2d20000 - 0x00007ffda2d42000 	C:\windows\System32\win32u.dll
+0x00007ffda40e0000 - 0x00007ffda410a000 	C:\windows\System32\GDI32.dll
+0x00007ffda2c10000 - 0x00007ffda2d1a000 	C:\windows\System32\gdi32full.dll
+0x00007ffda2b70000 - 0x00007ffda2c0d000 	C:\windows\System32\msvcp_win.dll
+0x00007ffd8c120000 - 0x00007ffd8c3ba000 	C:\windows\WinSxS\amd64_microsoft.windows.common-controls_6595b64144ccf1df_6.0.19041.1_none_b555e41d4684ddec\COMCTL32.dll
+0x00007ffda4ce0000 - 0x00007ffda4d7e000 	C:\windows\System32\msvcrt.dll
+0x00007ffd9bfd0000 - 0x00007ffd9bfe7000 	D:\java\JetBrains\IntelliJ IDEA 2021.1.3\jbr\bin\VCRUNTIME140.dll
+0x00007ffda4ef0000 - 0x00007ffda4f20000 	C:\windows\System32\IMM32.DLL
+0x00007ffd79c20000 - 0x00007ffd79cbd000 	D:\java\JetBrains\IntelliJ IDEA 2021.1.3\jbr\bin\msvcp140.dll
+0x00007ffd7a590000 - 0x00007ffd7b0d9000 	D:\java\JetBrains\IntelliJ IDEA 2021.1.3\jbr\bin\server\jvm.dll
+0x00007ffda4f30000 - 0x00007ffda4fda000 	C:\windows\System32\ADVAPI32.dll
+0x00007ffda3950000 - 0x00007ffda39eb000 	C:\windows\System32\sechost.dll
+0x00007ffda39f0000 - 0x00007ffda3b13000 	C:\windows\System32\RPCRT4.dll
+0x00007ffda3fa0000 - 0x00007ffda3fa8000 	C:\windows\System32\PSAPI.DLL
+0x00007ffd90640000 - 0x00007ffd90649000 	C:\windows\SYSTEM32\WSOCK32.dll
+0x00007ffda4e80000 - 0x00007ffda4eeb000 	C:\windows\System32\WS2_32.dll
+0x00007ffda2020000 - 0x00007ffda202a000 	C:\windows\SYSTEM32\VERSION.dll
+0x00007ffd88dd0000 - 0x00007ffd88df7000 	C:\windows\SYSTEM32\WINMM.dll
+0x00007ffda2560000 - 0x00007ffda2573000 	C:\windows\System32\kernel.appcore.dll
+0x00007ffd92480000 - 0x00007ffd92491000 	D:\java\JetBrains\IntelliJ IDEA 2021.1.3\jbr\bin\verify.dll
+0x00007ffd8e470000 - 0x00007ffd8e654000 	C:\windows\SYSTEM32\DBGHELP.DLL
+0x00007ffd8da70000 - 0x00007ffd8da9c000 	C:\windows\SYSTEM32\dbgcore.DLL
+0x00007ffda2e50000 - 0x00007ffda2ecf000 	C:\windows\System32\bcryptPrimitives.dll
+0x00007ffd92340000 - 0x00007ffd92369000 	D:\java\JetBrains\IntelliJ IDEA 2021.1.3\jbr\bin\java.dll
+0x00007ffd9e180000 - 0x00007ffd9e18b000 	D:\java\JetBrains\IntelliJ IDEA 2021.1.3\jbr\bin\jimage.dll
+0x00007ffd921c0000 - 0x00007ffd921d8000 	D:\java\JetBrains\IntelliJ IDEA 2021.1.3\jbr\bin\zip.dll
+
+dbghelp: loaded successfully - version: 4.0.5 - missing functions: none
+symbol engine: initialized successfully - sym options: 0x614 - pdb path: .;D:\java\JetBrains\IntelliJ IDEA 2021.1.3\jbr\bin;C:\windows\SYSTEM32;C:\windows\WinSxS\amd64_microsoft.windows.common-controls_6595b64144ccf1df_6.0.19041.1_none_b555e41d4684ddec;D:\java\JetBrains\IntelliJ IDEA 2021.1.3\jbr\bin\server
+
+VM Arguments:
+java_command: org.jetbrains.git4idea.http.GitAskPassApp Username for 'http://gitlab.nhys.cdnhxx.com': 
+java_class_path (initial): D:/java/JetBrains/IntelliJ IDEA 2021.1.3/plugins/git4idea/lib/git4idea-rt.jar;D:/java/JetBrains/IntelliJ IDEA 2021.1.3/lib/xmlrpc-2.0.1.jar;D:/java/JetBrains/IntelliJ IDEA 2021.1.3/lib/commons-codec-1.15.jar
+Launcher Type: SUN_STANDARD
+
+[Global flags]
+     intx CICompilerCount                          = 3                                         {product} {ergonomic}
+     uint ConcGCThreads                            = 2                                         {product} {ergonomic}
+     uint G1ConcRefinementThreads                  = 6                                         {product} {ergonomic}
+   size_t G1HeapRegionSize                         = 1048576                                   {product} {ergonomic}
+    uintx GCDrainStackTargetSize                   = 64                                        {product} {ergonomic}
+   size_t InitialHeapSize                          = 134217728                                 {product} {ergonomic}
+   size_t MarkStackSize                            = 4194304                                   {product} {ergonomic}
+   size_t MaxHeapSize                              = 2118123520                                {product} {ergonomic}
+   size_t MinHeapDeltaBytes                        = 1048576                                   {product} {ergonomic}
+    uintx NonNMethodCodeHeapSize                   = 5830732                                {pd product} {ergonomic}
+    uintx NonProfiledCodeHeapSize                  = 122913754                              {pd product} {ergonomic}
+    uintx ProfiledCodeHeapSize                     = 122913754                              {pd product} {ergonomic}
+    uintx ReservedCodeCacheSize                    = 251658240                              {pd product} {ergonomic}
+     bool SegmentedCodeCache                       = true                                      {product} {ergonomic}
+     bool UseCompressedClassPointers               = true                                 {lp64_product} {ergonomic}
+     bool UseCompressedOops                        = true                                 {lp64_product} {ergonomic}
+     bool UseG1GC                                  = true                                      {product} {ergonomic}
+     bool UseLargePagesIndividualAllocation        = false                                  {pd product} {ergonomic}
+
+Logging:
+Log output configuration:
+ #0: stdout all=warning uptime,level,tags
+ #1: stderr all=off uptime,level,tags
+
+Environment Variables:
+JAVA_HOME=D:\java\jdk1.8.0_102
+CLASSPATH=.;D:\java\jdk1.8.0_102\lib;D:\java\jdk1.8.0_102\lib\tools.jar
+PATH=D:\java\git\mingw64\libexec\git-core;D:\java\git\mingw64\libexec\git-core;D:\java\git\mingw64\bin;D:\java\git\usr\bin;C:\Users\Administrator\bin;C:\windows\system32;C:\windows;C:\windows\System32\Wbem;C:\windows\System32\WindowsPowerShell\v1.0;C:\windows\System32\OpenSSH;D:\java\jdk1.8.0_102\bin;D:\java\jdk1.8.0_102\jre\bin;D:\java\maven-3.8.1\bin;%mysql%\bin;D:\java\git\cmd;C:\Users\Administrator\AppData\Local\Microsoft\WindowsApps
+USERNAME=Administrator
+DISPLAY=:0.0
+LC_ALL=en_US.UTF-8
+OS=Windows_NT
+PROCESSOR_IDENTIFIER=Intel64 Family 6 Model 158 Stepping 10, GenuineIntel
+
+
+
+---------------  S Y S T E M  ---------------
+
+OS: Windows 10 , 64 bit Build 19041 (10.0.19041.207)
+OS uptime: 10 days 7:26 hours
+
+CPU:total 6 (initial active 6) (6 cores per cpu, 1 threads per core) family 6 model 158 stepping 10 microcode 0xb4, cmov, cx8, fxsr, mmx, sse, sse2, sse3, ssse3, sse4.1, sse4.2, popcnt, avx, avx2, aes, clmul, erms, 3dnowpref, lzcnt, tsc, tscinvbit, bmi1, bmi2, adx, fma
+
+Memory: 4k page, system-wide physical 8072M (459M free)
+TotalPageFile size 20873M (AvailPageFile size 36M)
+current process WorkingSet (physical memory assigned to process): 10M, peak: 10M
+current process commit charge ("private bytes"): 56M, peak: 184M
+
+vm_info: OpenJDK 64-Bit Server VM (11.0.11+9-b1341.60) for windows-amd64 JRE (11.0.11+9-b1341.60), built on Jun  4 2021 08:17:54 by "" with MS VC++ 14.0 (VS2015)
+
+END.
diff --git a/springcloud_k8s_panzhihuazhihuishequ/applets/src/main/java/com/panzhihua/applets/api/ComSwPatrolRecordApi.java b/springcloud_k8s_panzhihuazhihuishequ/applets/src/main/java/com/panzhihua/applets/api/ComSwPatrolRecordApi.java
new file mode 100644
index 0000000..025af16
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/applets/src/main/java/com/panzhihua/applets/api/ComSwPatrolRecordApi.java
@@ -0,0 +1,149 @@
+package com.panzhihua.applets.api;
+
+import com.panzhihua.common.controller.BaseController;
+import com.panzhihua.common.model.dtos.community.ComSwDangerReportRectifyDTO;
+import com.panzhihua.common.model.dtos.community.ComSwPatrolRecordAddDTO;
+import com.panzhihua.common.model.dtos.community.ComSwPatrolRecordPageDTO;
+import com.panzhihua.common.model.vos.R;
+import com.panzhihua.common.model.vos.community.ComSwDangerReportVO;
+import com.panzhihua.common.model.vos.community.ComSwPatrolRecordVO;
+import com.panzhihua.common.model.vos.community.ComSwSafetyWorkRecordVO;
+import com.panzhihua.common.service.community.CommunityService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+
+/**
+ * @auther txb
+ * @create 2021-07-23 14:38:38
+ * @describe 社区》安全工作》巡查记录前端控制器
+ */
+@Slf4j
+@Api(tags = {"社区管理/安全工作"})
+@RestController
+@RequestMapping("/patrolRecord")
+public class ComSwPatrolRecordApi extends BaseController {
+
+    @Resource
+    private CommunityService communityService;
+
+    /**
+     * 分页查询巡查记录
+     * @param comSwPatrolRecordPageDTO 查询参数
+     * @return 分页集合
+     */
+    @ApiOperation(value = "分页查询巡查记录", response = ComSwPatrolRecordVO.class)
+    @PostMapping("/pagePatrolRecord")
+    public R pagePatrolRecord(@RequestBody ComSwPatrolRecordPageDTO comSwPatrolRecordPageDTO){
+        Long communityId = this.getCommunityId();
+        if (comSwPatrolRecordPageDTO.getSelectPerson().equals(1)) {
+            comSwPatrolRecordPageDTO.setPatrolPerson(String.valueOf(this.getLoginUserInfo().getUserId()));
+        }
+        comSwPatrolRecordPageDTO.setCommunityId(communityId);
+        return communityService.pagePatrolRecord(comSwPatrolRecordPageDTO);
+    }
+
+    /**
+     * 新增巡查记录
+     * @param comSwPatrolRecordAddDTO 新增参数
+     * @return 新增结果
+     */
+    @ApiOperation(value = "新增巡查记录")
+    @PostMapping("/addPatrolRecord")
+    public R addPatrolRecord(@RequestBody ComSwPatrolRecordAddDTO comSwPatrolRecordAddDTO){
+        Long communityId = this.getCommunityId();
+        comSwPatrolRecordAddDTO.setCommunityId(communityId);
+        return communityService.addPatrolRecord(comSwPatrolRecordAddDTO);
+    }
+
+    /**
+     * 根据巡查记录id查询详情
+     *
+     * @param patrolRecordId 巡查记录id
+     * @return 巡查记录详情查询结果
+     */
+    @ApiOperation(value = "根据巡查记录id查询详情", response = ComSwPatrolRecordVO.class)
+    @PostMapping("/detailPatrolRecord")
+    public R detailPatrolRecord(@RequestParam(value = "patrolRecordId") Long patrolRecordId) {
+        return communityService.detailPatrolRecord(patrolRecordId);
+    }
+
+    /**
+     * 分页查询安全工作记录
+     * @param comSwPatrolRecordPageDTO 查询参数
+     * @return 安全工作记录分页集合
+     */
+    @ApiOperation(value = "分页查询安全工作记录", response = ComSwSafetyWorkRecordVO.class)
+    @PostMapping("/pageSafetyWorkRecord")
+    public R pageSafetyWorkRecord(@RequestBody ComSwPatrolRecordPageDTO comSwPatrolRecordPageDTO){
+        Long communityId = this.getCommunityId();
+        comSwPatrolRecordPageDTO.setCommunityId(communityId);
+        return communityService.pageSafetyWorkRecord(comSwPatrolRecordPageDTO);
+    }
+
+    /**
+     * 根据安全工作记录id查询详情
+     *
+     * @param safetyWorkRecordId 安全工作记录
+     * @return 安全工作记录详情查询结果
+     */
+    @ApiOperation(value = "根据安全工作记录id查询详情", response = ComSwSafetyWorkRecordVO.class)
+    @PostMapping("/detailSafetyWorkRecord")
+    public R detailSafetyWorkRecord(@RequestParam(value = "safetyWorkRecordId") Long safetyWorkRecordId) {
+        return communityService.detailSafetyWorkRecord(safetyWorkRecordId);
+    }
+
+    /**
+     * 分页查询隐患报告
+     * @param comSwPatrolRecordPageDTO 查询参数
+     * @return 隐患报告分页集合
+     */
+    @ApiOperation(value = "分页查询隐患报告", response = ComSwDangerReportVO.class)
+    @PostMapping("/pageDangerReport")
+    public R pageDangerReport(@RequestBody ComSwPatrolRecordPageDTO comSwPatrolRecordPageDTO){
+        Long communityId = this.getCommunityId();
+        comSwPatrolRecordPageDTO.setCommunityId(communityId);
+        return communityService.pageDangerReport(comSwPatrolRecordPageDTO);
+    }
+
+    /**
+     * 根据隐患报告id查询详情
+     *
+     * @param dangerReportId 隐患报告id
+     * @return 隐患报告详情查询结果
+     */
+    @ApiOperation(value = "根据隐患报告id查询详情", response = ComSwDangerReportVO.class)
+    @PostMapping("/detailDangerReport")
+    public R detailDangerReport(@RequestParam(value = "dangerReportId") Long dangerReportId) {
+        return communityService.detailDangerReport(dangerReportId);
+    }
+
+    /**
+     * 根据巡查记录id查询隐患报告详情
+     *
+     * @param patrolRecordId 巡查记录id
+     * @return 隐患报告详情查询结果
+     */
+    @ApiOperation(value = "根据巡查记录id查询隐患报告详情", response = ComSwDangerReportVO.class)
+    @PostMapping("/detailDangerReportByPrId")
+    public R detailDangerReportByPrId(@RequestParam(value = "patrolRecordId") Long patrolRecordId) {
+        return communityService.detailDangerReportByPrId(patrolRecordId);
+    }
+
+    /**
+     * 整改隐患报告
+     *
+     * @param comSwDangerReportRectifyDTO 隐患报告整改参数
+     * @return 整改结果
+     */
+    @ApiOperation(value = "整改隐患报告")
+    @PostMapping("/rectifyDangerReport")
+    public R rectifyDangerReport(@RequestBody ComSwDangerReportRectifyDTO comSwDangerReportRectifyDTO){
+        return communityService.rectifyDangerReport(comSwDangerReportRectifyDTO);
+    }
+
+}
+
diff --git a/springcloud_k8s_panzhihuazhihuishequ/applets/src/main/java/com/panzhihua/applets/api/CommonApi.java b/springcloud_k8s_panzhihuazhihuishequ/applets/src/main/java/com/panzhihua/applets/api/CommonApi.java
index 2b4c66d..2c655c1 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/applets/src/main/java/com/panzhihua/applets/api/CommonApi.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/applets/src/main/java/com/panzhihua/applets/api/CommonApi.java
@@ -107,13 +107,13 @@
             InputStream is = file.getInputStream();
             file.transferTo(file1);
             try {
-                boolean b = wxMaSecCheckService.checkImage(file1);
+//                boolean b = wxMaSecCheckService.checkImage(file1);
                 boolean delete = file1.delete();
                 log.info("临时文件删除【{}】", delete);
-                if (!b) {
-                    return R.fail("图片内容违规");
-                }
-            } catch (WxErrorException e) {
+//                if (!b) {
+//                    return R.fail("图片内容违规");
+//                }
+            } catch (Exception e) {
                 log.error("微信审核图片出错【{}】", e.getMessage());
                 return R.fail("图片上传失败");
 //                e.printStackTrace();
diff --git a/springcloud_k8s_panzhihuazhihuishequ/applets/src/main/java/com/panzhihua/applets/api/CommunityApi.java b/springcloud_k8s_panzhihuazhihuishequ/applets/src/main/java/com/panzhihua/applets/api/CommunityApi.java
index e2ba422..547f2d3 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/applets/src/main/java/com/panzhihua/applets/api/CommunityApi.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/applets/src/main/java/com/panzhihua/applets/api/CommunityApi.java
@@ -96,7 +96,11 @@
     @GetMapping("detailactivity")
     @ApiImplicitParam(name ="id",value = "社区活动主键",required = true)
     public R detailActivity(@RequestParam("id") Long id){
-        Long userId = this.getUserId();
+        Long userId = null;
+        LoginUserInfoVO loginUserInfo = this.getLoginUserInfoSureNoLogin();
+        if(loginUserInfo != null){
+            userId = loginUserInfo.getUserId();
+        }
         return communityService.detailActivity(id,userId);
     }
 
diff --git a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/api/LcApiConstants.java b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/api/LcApiConstants.java
index fef316e..ec115af 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/api/LcApiConstants.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/api/LcApiConstants.java
@@ -58,9 +58,13 @@
      */
     public static final String GRID_GET_EVENT_INFO_AREA_ID_URL = "http://171.217.92.33:53303/area/getAreaGridTreeByAreaId";
     /**
+     * 通过AREAID获取辖区网格数据列表
+     */
+    public static final String GRID_GET_GRID_DATA_AREA_ID_URL = "http://171.217.92.33:53303/gridDefined/getGridInfoByAreaId";
+    /**
      * 获取所有或者根据姓名和工号查询,分页
      */
-    public static final String GRID_GET_GETALL_SEARCH_PAGE_URL = "http://171.217.92.33:53303/gridOperator/getAllOrSearchByPage?areaId=jhRxqEQp&limit=200&page=1";
+    public static final String GRID_GET_GETALL_SEARCH_PAGE_URL = "http://171.217.92.33:53303/gridOperator/getAllOrSearchByPage?areaId=jhRxqEQp";
 
     /**
      * 下面的接口全部都是走访任务接口
diff --git a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/enums/SafeWordDangerLevelEnum.java b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/enums/SafeWordDangerLevelEnum.java
new file mode 100644
index 0000000..66f82f8
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/enums/SafeWordDangerLevelEnum.java
@@ -0,0 +1,45 @@
+package com.panzhihua.common.enums;
+
+import lombok.Getter;
+
+/**
+ * 婚姻状况
+ * 
+ * @author huanghongfa
+ */
+@Getter
+public enum SafeWordDangerLevelEnum
+{
+    RED(1, "红色预警"),
+    ORANGE(2, "橙色预警"),
+    YELLOW(3, "黄色预警"),
+    BLUE(4, "蓝色预警");
+
+    private final Integer code;
+    private final String name;
+
+    SafeWordDangerLevelEnum(Integer code, String name)
+    {
+        this.code = code;
+        this.name = name;
+    }
+
+    public static int getCodeByName(String name) {
+        for (SafeWordDangerLevelEnum item : SafeWordDangerLevelEnum.values()) {
+            if (item.name.equals(name)) {
+                return item.getCode();
+            }
+        }
+        return -1;
+    }
+
+    public static String getCnDescByName(Integer code) {
+        for (SafeWordDangerLevelEnum item : SafeWordDangerLevelEnum.values()) {
+            if (item.code.equals(code)) {
+                return item.getName();
+            }
+        }
+        return "其他";
+    }
+
+}
diff --git a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/enums/SafeWordStatusEnum.java b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/enums/SafeWordStatusEnum.java
new file mode 100644
index 0000000..8a6d3f5
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/enums/SafeWordStatusEnum.java
@@ -0,0 +1,44 @@
+package com.panzhihua.common.enums;
+
+import lombok.Getter;
+
+/**
+ * 婚姻状况
+ * 
+ * @author huanghongfa
+ */
+@Getter
+public enum SafeWordStatusEnum
+{
+    DCL(1, "待处理"),
+    YCL(2, "已处理"),
+    YZG(3, "已整改");
+
+    private final Integer code;
+    private final String name;
+
+    SafeWordStatusEnum(Integer code, String name)
+    {
+        this.code = code;
+        this.name = name;
+    }
+
+    public static int getCodeByName(String name) {
+        for (SafeWordStatusEnum item : SafeWordStatusEnum.values()) {
+            if (item.name.equals(name)) {
+                return item.getCode();
+            }
+        }
+        return -1;
+    }
+
+    public static String getCnDescByName(Integer code) {
+        for (SafeWordStatusEnum item : SafeWordStatusEnum.values()) {
+            if (item.code.equals(code)) {
+                return item.getName();
+            }
+        }
+        return "其他";
+    }
+
+}
diff --git a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/exceptions/ServiceException.java b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/exceptions/ServiceException.java
index 7285a2d..fd8f7d5 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/exceptions/ServiceException.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/exceptions/ServiceException.java
@@ -10,6 +10,7 @@
 
     private String code;
     private String msg;
+    private String data;
     public ServiceException() {
         super();
     }
@@ -27,6 +28,13 @@
         this.msg = errorMsg;
     }
 
+    public ServiceException(String errorCode, String errorMsg,String data) {
+        super(errorCode);
+        this.code = errorCode;
+        this.msg = errorMsg;
+        this.data = data;
+    }
+
     public ServiceException(String errorCode, String errorMsg, Throwable cause) {
         super(errorCode, cause);
         this.code = errorCode;
diff --git a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/listen/ComMngPopulationServeExcelListen.java b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/listen/ComMngPopulationServeExcelListen.java
index 260ebe2..1d55fa8 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/listen/ComMngPopulationServeExcelListen.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/listen/ComMngPopulationServeExcelListen.java
@@ -1,21 +1,31 @@
 package com.panzhihua.common.listen;
 
+import com.alibaba.excel.EasyExcel;
+import com.alibaba.excel.ExcelWriter;
 import com.alibaba.excel.context.AnalysisContext;
 import com.alibaba.excel.event.AnalysisEventListener;
+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.google.common.collect.Lists;
 import com.panzhihua.common.constants.BcDictionaryConstants;
 import com.panzhihua.common.enums.*;
+import com.panzhihua.common.excel.CustomSheetWriteHandler;
 import com.panzhihua.common.exceptions.ServiceException;
 import com.panzhihua.common.model.vos.BcDictionaryVO;
 import com.panzhihua.common.model.vos.R;
 import com.panzhihua.common.model.vos.community.ComMngPopulationImportErrorVO;
+import com.panzhihua.common.model.vos.community.ComMngPopulationMistakeExcelVO;
 import com.panzhihua.common.model.vos.community.ComMngPopulationServeExcelVO;
 import com.panzhihua.common.service.community.CommunityService;
 import com.panzhihua.common.utlis.*;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.util.ObjectUtils;
 
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.InputStream;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.util.*;
@@ -35,114 +45,142 @@
 
     private Map<Integer, String> headData;
 
+    private String userName;
+    // FTP 登录密码
+    private String password;
+    // FTP 服务器地址IP地址
+    private String host;
+    // FTP 端口
+    private int port;
+    private String excelUrl;
 
-    public ComMngPopulationServeExcelListen(CommunityService communityService, Long communityId) {
-        this.communityService = communityService;
-        this.communityId = communityId;
-    }
+    public static String loadUrl;
 
-    /**
-     * 每隔5条存储数据库,实际使用中可以3000条,然后清理list ,方便内存回收
-     */
-    private static final int BATCH_COUNT = 5000;
-    List<Map<Integer, String>> list = new ArrayList<Map<Integer, String>>();
-
-    @Override
-    public void invoke(Map<Integer, String> data, AnalysisContext context) {
-        list.add(data);
-        if (list.size() >= BATCH_COUNT) {
-            saveData();
-            list.clear();
+    public ComMngPopulationServeExcelListen(CommunityService communityService, Long communityId, String userName, String password, String host, int port, String excelUrl) {
+            this.communityService = communityService;
+            this.communityId = communityId;
+            this.userName = userName;
+            this.password = password;
+            this.host = host;
+            this.port = port;
+            this.excelUrl = excelUrl;
         }
-    }
 
-    /**
-     * 这里会一行行的返回头
-     *
-     * @param headMap
-     * @param context
-     */
-    @Override
-    public void invokeHeadMap(Map<Integer, String> headMap, AnalysisContext context) {
-        headSize = headMap.size();
-        headData = headMap;
-    }
+        /**
+         * 每隔5条存储数据库,实际使用中可以3000条,然后清理list ,方便内存回收
+         */
+        private static final int BATCH_COUNT = 5000;
+        List<Map<Integer, String>> list = new ArrayList<Map<Integer, String>>();
 
-    @Override
-    public void doAfterAllAnalysed(AnalysisContext context) {
-        saveData();
-        log.info("所有数据解析完成!");
-    }
+        @Override
+        public void invoke(Map<Integer, String> data, AnalysisContext context) {
+            list.add(data);
+            if (list.size() >= BATCH_COUNT) {
+                saveData();
+                list.clear();
+            }
+        }
 
-    /**
-     * 不是固定的列只能手动处理
-     */
-    private void saveData() {
-        R<List<BcDictionaryVO>> dictionaryR = communityService.listDictionaryByKey(BcDictionaryConstants.FAMILY);
+        /**
+         * 这里会一行行的返回头
+         *
+         * @param headMap
+         * @param context
+         */
+        @Override
+        public void invokeHeadMap(Map<Integer, String> headMap, AnalysisContext context) {
+            headSize = headMap.size();
+            headData = headMap;
+        }
 
-        Map<String,String> dictMap = dictionaryR.getData().stream().collect(Collectors.toMap(BcDictionaryVO::getDictName,BcDictionaryVO::getDictValue));
+        @Override
+        public void doAfterAllAnalysed(AnalysisContext context) {
+            saveData();
+            log.info("所有数据解析完成!");
+        }
+
+        /**
+         * 不是固定的列只能手动处理
+         */
+        private void saveData() {
+            R<List<BcDictionaryVO>> dictionaryR = communityService.listDictionaryByKey(BcDictionaryConstants.FAMILY);
+
+            Map<String,String> dictMap = dictionaryR.getData().stream().collect(Collectors.toMap(BcDictionaryVO::getDictName,BcDictionaryVO::getDictValue));
 //        Map<String,Integer> dictMap = new HashMap<>();
 //        for(BcDictionaryVO vo : dictionaryR.getData()){
 //            dictMap.put(vo.getDictName(),Integer.valueOf(vo.getDictValue()));
 //        }
 
 
-        int index = 2;
-        try {
-            ArrayList<ComMngPopulationServeExcelVO> voList = Lists.newArrayList();
-            List<ComMngPopulationImportErrorVO> populationImportErrorVOList = new ArrayList<>();
-            for (Map<Integer, String> oneData : list) {
-                ComMngPopulationServeExcelVO vo = new ComMngPopulationServeExcelVO();
-                //姓名和身份证都为空,为空户,无需操作,否则就解析年龄,性别,出生年月日
-                if(StringUtils.isNotEmpty(oneData.get(0)) || StringUtils.isNotEmpty(oneData.get(1))){
-                    if(StringUtils.isEmpty(oneData.get(0))){
-                        ComMngPopulationImportErrorVO importErrorVO = new ComMngPopulationImportErrorVO();
-                        importErrorVO.setErrorPosition("第" + index + "行,第1列");
-                        importErrorVO.setErrorMsg("名字不可为空,请填写姓名");
-                        populationImportErrorVOList.add(importErrorVO);
-                        index++;
-                        continue;
-                    }
-                    vo.setName(oneData.get(0));
-                    if(StringUtils.isEmpty(oneData.get(1))){
-                        ComMngPopulationImportErrorVO importErrorVO = new ComMngPopulationImportErrorVO();
-                        importErrorVO.setErrorPosition("第" + index + "行,第2列"+oneData.get(1));
-                        importErrorVO.setErrorMsg("身份证号不可为空,请填写身份证号");
-                        populationImportErrorVOList.add(importErrorVO);
-                        index++;
-                        continue;
-                    }
+            int index = 2;
+            try {
+                ArrayList<ComMngPopulationServeExcelVO> voList = Lists.newArrayList();
+                List<ComMngPopulationImportErrorVO> populationImportErrorVOList = new ArrayList<>();
+                ArrayList<ComMngPopulationMistakeExcelVO> mistakes = Lists.newArrayList();
+                for (Map<Integer, String> oneData : list) {
+                    ComMngPopulationServeExcelVO vo = new ComMngPopulationServeExcelVO();
+                    //姓名和身份证都为空,为空户,无需操作,否则就解析年龄,性别,出生年月日
+                    if(StringUtils.isNotEmpty(oneData.get(0)) || StringUtils.isNotEmpty(oneData.get(1))){
+                        if(StringUtils.isEmpty(oneData.get(0))){
+                            ComMngPopulationMistakeExcelVO mistake = new ComMngPopulationMistakeExcelVO();
+                            ComMngPopulationImportErrorVO importErrorVO = new ComMngPopulationImportErrorVO();
+                            importErrorVO.setErrorPosition("第" + index + "行,第1列");
+                            importErrorVO.setErrorMsg("名字不可为空,请填写姓名");
+                            populationImportErrorVOList.add(importErrorVO);
+                            index++;
+                            setMistake(oneData, mistake);
+                            mistake.setMistake("名字不可为空,请填写姓名");
+                            mistakes.add(mistake);
+                            continue;
+                        }
+                        vo.setName(oneData.get(0));
+                        if(StringUtils.isEmpty(oneData.get(1))){
+                            ComMngPopulationImportErrorVO importErrorVO = new ComMngPopulationImportErrorVO();
+                            ComMngPopulationMistakeExcelVO mistake = new ComMngPopulationMistakeExcelVO();
+                            importErrorVO.setErrorPosition("第" + index + "行,第2列"+oneData.get(1));
+                            importErrorVO.setErrorMsg("身份证号不可为空,请填写身份证号");
+                            populationImportErrorVOList.add(importErrorVO);
+                            index++;
+                            setMistake(oneData, mistake);
+                            mistake.setMistake("身份证号不可为空,请填写身份证号");
+                            mistakes.add(mistake);
+                            continue;
+                        }
 
-                    //判断身份证号码位数
-                    if(oneData.get(1).length() != 18){
-                        ComMngPopulationImportErrorVO importErrorVO = new ComMngPopulationImportErrorVO();
-                        importErrorVO.setErrorPosition("第" + index + "行,第2列"+oneData.get(1));
-                        importErrorVO.setErrorMsg("身份证号位数有误,请检查身份证号码是否正确");
-                        populationImportErrorVOList.add(importErrorVO);
-                        index++;
-                        continue;
-                    }
-                    vo.setCardNo(oneData.get(1));
-                    //根据身份证号码解析年龄以及性别
-                    //获取用户生日
-                    String birthday = vo.getCardNo().substring(6, 14);
-                    if(StringUtils.isNotEmpty(birthday)){
-                        String year = birthday.substring(0,4);
-                        String month = birthday.substring(4,6);
-                        String day = birthday.substring(6,8);
-                        vo.setBirthday(year + "-" + month + "-" + day);
-                    }
+                        //判断身份证号码位数
+                        if(oneData.get(1).length() != 18){
+                            ComMngPopulationImportErrorVO importErrorVO = new ComMngPopulationImportErrorVO();
+                            importErrorVO.setErrorPosition("第" + index + "行,第2列"+oneData.get(1));
+                            importErrorVO.setErrorMsg("身份证号位数有误,请检查身份证号码是否正确");
+                            populationImportErrorVOList.add(importErrorVO);
+                            index++;
+                            ComMngPopulationMistakeExcelVO mistake = new ComMngPopulationMistakeExcelVO();
+                            setMistake(oneData, mistake);
+                            mistake.setMistake("身份证号位数有误,请检查身份证号码是否正确");
+                            mistakes.add(mistake);
+                            continue;
+                        }
+                        vo.setCardNo(oneData.get(1).toUpperCase());
+                        //根据身份证号码解析年龄以及性别
+                        //获取用户生日
+                        String birthday = vo.getCardNo().substring(6, 14);
+                        if(StringUtils.isNotEmpty(birthday)){
+                            String year = birthday.substring(0,4);
+                            String month = birthday.substring(4,6);
+                            String day = birthday.substring(6,8);
+                            vo.setBirthday(year + "-" + month + "-" + day);
+                        }
 //                    //设置用户年龄
 //                    vo.setAge(AgeUtils.getAgeFromBirthTime(birthday));
-                    //获取用户性别
-                    int sex = Integer.parseInt(vo.getCardNo().substring(16, 17));
-                    if(sex%2 == 1){
-                        vo.setSex(PopulSexEnum.nan.getCode());
-                    }else{
-                        vo.setSex(PopulSexEnum.nv.getCode());
+                        //获取用户性别
+                        int sex = Integer.parseInt(vo.getCardNo().substring(16, 17));
+                        if(sex%2 == 1){
+                            vo.setSex(PopulSexEnum.nan.getCode());
+                        }else{
+                            vo.setSex(PopulSexEnum.nv.getCode());
+                        }
                     }
-                }
-                if(StringUtils.isNotEmpty(oneData.get(2))){
+                    if(StringUtils.isNotEmpty(oneData.get(2))){
 //                    String nation = oneData.get(2);
 //                    if(!nation.contains("族")){
 //                        ComMngPopulationImportErrorVO importErrorVO = new ComMngPopulationImportErrorVO();
@@ -152,24 +190,44 @@
 //                        index++;
 //                        continue;
 //                    }
-                    vo.setNation(oneData.get(2));
-                }
-                if(StringUtils.isNotEmpty(oneData.get(3))){
-                    vo.setPoliticalOutlook(PopulPoliticalOutlookEnum.getCodeByName(oneData.get(3)));
-                }
-                if(StringUtils.isNotEmpty(oneData.get(4))){
-                    Integer isOk = PopulHouseUseEnum.getCodeByName(oneData.get(4));
-                    if(isOk.equals(-1)){
-                        ComMngPopulationImportErrorVO importErrorVO = new ComMngPopulationImportErrorVO();
-                        importErrorVO.setErrorPosition("第" + index + "行,第5列");
-                        importErrorVO.setErrorMsg("您填写的是否租住有误");
-                        populationImportErrorVOList.add(importErrorVO);
-                        index++;
-                        continue;
+                        vo.setNation(oneData.get(2));
                     }
-                    vo.setIsRent(isOk);
-                }
-                if(StringUtils.isNotEmpty(oneData.get(5))){
+                    if(StringUtils.isNotEmpty(oneData.get(3))){
+                        vo.setPoliticalOutlook(PopulPoliticalOutlookEnum.getCodeByName(oneData.get(3)));
+                        Integer isOk = PopulPoliticalOutlookEnum.getCodeByName(oneData.get(3));
+                        if(isOk.equals(-1)){
+                            ComMngPopulationImportErrorVO importErrorVO = new ComMngPopulationImportErrorVO();
+                            importErrorVO.setErrorPosition("第" + index + "行,第4列");
+                            importErrorVO.setErrorMsg("您填写的政治面貌有误");
+                            populationImportErrorVOList.add(importErrorVO);
+                            index++;
+                            ComMngPopulationMistakeExcelVO mistake = new ComMngPopulationMistakeExcelVO();
+                            setMistake(oneData, mistake);
+                            mistake.setMistake("您填写的政治面貌有误");
+                            mistakes.add(mistake);
+                            continue;
+                        }
+                        vo.setPoliticalOutlook(isOk);
+                    }
+                    if(StringUtils.isNotEmpty(oneData.get(4))){
+                        Integer isOk = PopulHouseUseEnum.getCodeByName(oneData.get(4));
+                        if(isOk.equals(-1)){
+                            ComMngPopulationImportErrorVO importErrorVO = new ComMngPopulationImportErrorVO();
+                            importErrorVO.setErrorPosition("第" + index + "行,第5列");
+                            importErrorVO.setErrorMsg("您填写的是否租住有误");
+                            populationImportErrorVOList.add(importErrorVO);
+                            index++;
+                            ComMngPopulationMistakeExcelVO mistake = new ComMngPopulationMistakeExcelVO();
+                            setMistake(oneData, mistake);
+                            mistake.setMistake("您填写的是否租住有误");
+                            mistakes.add(mistake);
+                            continue;
+                        }
+                        vo.setIsRent(isOk);
+                    }else {
+                        vo.setIsRent(PopulHouseUseEnum.getCodeByName("否"));
+                    }
+                    if(StringUtils.isNotEmpty(oneData.get(5))){
 
 //                    String ra = convertRelation(oneData.get(5));
 //
@@ -186,243 +244,307 @@
 //                        vo.setRelation(Integer.valueOf(relation));
 //                    }
 //                    String relation = convertMarriage(oneData.get(5));
-                    Integer isOk = PopulRelationEnum.getCodeByName(oneData.get(5));
+                        Integer isOk = PopulRelationEnum.getCodeByName(oneData.get(5));
 
-                    if(isOk.equals(-1)){
+                        if(isOk.equals(-1)){
 //                        vo.setMarriageStr(ma);
+                            ComMngPopulationImportErrorVO importErrorVO = new ComMngPopulationImportErrorVO();
+                            importErrorVO.setErrorPosition("第" + index + "行,第6列");
+                            importErrorVO.setErrorMsg("您填写的与户主关系有误");
+                            populationImportErrorVOList.add(importErrorVO);
+                            index++;
+                            ComMngPopulationMistakeExcelVO mistake = new ComMngPopulationMistakeExcelVO();
+                            setMistake(oneData, mistake);
+                            mistake.setMistake("您填写的与户主关系有误");
+                            mistakes.add(mistake);
+                            continue;
+                        }else{
+                            vo.setRelation(isOk);
+                        }
+                    }
+                    if(StringUtils.isEmpty(oneData.get(6))){
                         ComMngPopulationImportErrorVO importErrorVO = new ComMngPopulationImportErrorVO();
-                        importErrorVO.setErrorPosition("第" + index + "行,第6列");
-                        importErrorVO.setErrorMsg("您填写的与户主关系有误");
+                        importErrorVO.setErrorPosition("第" + index + "行,第7列");
+                        importErrorVO.setErrorMsg("街路巷不可为空");
                         populationImportErrorVOList.add(importErrorVO);
                         index++;
+                        ComMngPopulationMistakeExcelVO mistake = new ComMngPopulationMistakeExcelVO();
+                        setMistake(oneData, mistake);
+                        mistake.setMistake("街路巷不可为空");
+                        mistakes.add(mistake);
                         continue;
-                    }else{
-                        vo.setRelation(isOk);
                     }
-                }
-                if(StringUtils.isEmpty(oneData.get(6))){
-                    ComMngPopulationImportErrorVO importErrorVO = new ComMngPopulationImportErrorVO();
-                    importErrorVO.setErrorPosition("第" + index + "行,第7列");
-                    importErrorVO.setErrorMsg("街路巷不可为空");
-                    populationImportErrorVOList.add(importErrorVO);
-                    index++;
-                    continue;
-                }
-                vo.setRoad(oneData.get(6));
-                if(StringUtils.isEmpty(oneData.get(7))){
-                    ComMngPopulationImportErrorVO importErrorVO = new ComMngPopulationImportErrorVO();
-                    importErrorVO.setErrorPosition("第" + index + "行,第8列");
-                    importErrorVO.setErrorMsg("小区号不可为空");
-                    populationImportErrorVOList.add(importErrorVO);
-                    index++;
-                    continue;
-                }
-                vo.setDoorNo(oneData.get(7).trim());
-                if(StringUtils.isEmpty(oneData.get(8))){
-                    ComMngPopulationImportErrorVO importErrorVO = new ComMngPopulationImportErrorVO();
-                    importErrorVO.setErrorPosition("第" + index + "行,第9列");
-                    importErrorVO.setErrorMsg("楼排号不可为空");
-                    populationImportErrorVOList.add(importErrorVO);
-                    index++;
-                    continue;
-                }
-                vo.setFloor(oneData.get(8).trim());
-                if(StringUtils.isEmpty(oneData.get(9))){
-                    ComMngPopulationImportErrorVO importErrorVO = new ComMngPopulationImportErrorVO();
-                    importErrorVO.setErrorPosition("第" + index + "行,第10列");
-                    importErrorVO.setErrorMsg("单元号不可为空");
-                    populationImportErrorVOList.add(importErrorVO);
-                    index++;
-                    continue;
-                }
-                vo.setUnitNo(oneData.get(9).trim());
-                if(StringUtils.isEmpty(oneData.get(10))){
-                    ComMngPopulationImportErrorVO importErrorVO = new ComMngPopulationImportErrorVO();
-                    importErrorVO.setErrorPosition("第" + index + "行,第11列");
-                    importErrorVO.setErrorMsg("户室不可为空");
-                    populationImportErrorVOList.add(importErrorVO);
-                    index++;
-                    continue;
-                }
-                vo.setHouseNo(oneData.get(10).trim());
-                if(StringUtils.isNotEmpty(oneData.get(11))){
-                    vo.setBuildPurpose(oneData.get(11).trim());
-                }
-                if(StringUtils.isNotEmpty(oneData.get(12))){
-                    vo.setBuildArea(oneData.get(12).trim());
-                }
-                if(StringUtils.isNotEmpty(oneData.get(13))){
-                    Integer isOk = PopulHouseStatusEnum.getCodeByName(oneData.get(13).trim());
-                    if(isOk.equals(-1)){
+                    vo.setRoad(oneData.get(6));
+                    if(StringUtils.isEmpty(oneData.get(7))){
                         ComMngPopulationImportErrorVO importErrorVO = new ComMngPopulationImportErrorVO();
-                        importErrorVO.setErrorPosition("第" + index + "行,第14列");
-                        importErrorVO.setErrorMsg("您填写的房屋状态有误");
+                        importErrorVO.setErrorPosition("第" + index + "行,第8列");
+                        importErrorVO.setErrorMsg("小区号不可为空");
                         populationImportErrorVOList.add(importErrorVO);
                         index++;
+                        ComMngPopulationMistakeExcelVO mistake = new ComMngPopulationMistakeExcelVO();
+                        setMistake(oneData, mistake);
+                        mistake.setMistake("小区号不可为空");
+                        mistakes.add(mistake);
                         continue;
                     }
-                    vo.setHouseStatus(isOk);
-                }
-                if(StringUtils.isNotEmpty(oneData.get(14))){
-                    Integer isOk = PopulHousePurposeEnum.getCodeByName(oneData.get(14).trim());
-                    if(isOk.equals(-1)){
+                    vo.setDoorNo(oneData.get(7).trim());
+                    if(StringUtils.isEmpty(oneData.get(8))){
                         ComMngPopulationImportErrorVO importErrorVO = new ComMngPopulationImportErrorVO();
-                        importErrorVO.setErrorPosition("第" + index + "行,第15列");
-                        importErrorVO.setErrorMsg("您填写的房屋用途有误");
+                        importErrorVO.setErrorPosition("第" + index + "行,第9列");
+                        importErrorVO.setErrorMsg("楼排号不可为空");
                         populationImportErrorVOList.add(importErrorVO);
                         index++;
+                        ComMngPopulationMistakeExcelVO mistake = new ComMngPopulationMistakeExcelVO();
+                        setMistake(oneData, mistake);
+                        mistake.setMistake("楼排号不可为空");
+                        mistakes.add(mistake);
                         continue;
                     }
-                    vo.setHousePurpose(PopulHousePurposeEnum.getCodeByName(oneData.get(14).trim()));
-                }
-                if(StringUtils.isNotEmpty(oneData.get(15))){
-                    Integer isOk = PopulHouseControlStatusEnum.getCodeByName(oneData.get(15));
-                    if(isOk.equals(-1)){
+                    vo.setFloor(oneData.get(8).trim());
+                    if(StringUtils.isEmpty(oneData.get(9))){
                         ComMngPopulationImportErrorVO importErrorVO = new ComMngPopulationImportErrorVO();
-                        importErrorVO.setErrorPosition("第" + index + "行,第16列");
-                        importErrorVO.setErrorMsg("您填写的管控状态有误");
+                        importErrorVO.setErrorPosition("第" + index + "行,第10列");
+                        importErrorVO.setErrorMsg("单元号不可为空");
                         populationImportErrorVOList.add(importErrorVO);
                         index++;
+                        ComMngPopulationMistakeExcelVO mistake = new ComMngPopulationMistakeExcelVO();
+                        setMistake(oneData, mistake);
+                        mistake.setMistake("单元号不可为空");
+                        mistakes.add(mistake);
                         continue;
                     }
-                    vo.setControlStatus(isOk);
-                }
+                    vo.setUnitNo(oneData.get(9).trim());
+                    if(StringUtils.isEmpty(oneData.get(10))){
+                        ComMngPopulationImportErrorVO importErrorVO = new ComMngPopulationImportErrorVO();
+                        importErrorVO.setErrorPosition("第" + index + "行,第11列");
+                        importErrorVO.setErrorMsg("户室不可为空");
+                        populationImportErrorVOList.add(importErrorVO);
+                        index++;
+                        ComMngPopulationMistakeExcelVO mistake = new ComMngPopulationMistakeExcelVO();
+                        setMistake(oneData, mistake);
+                        mistake.setMistake("户室不可为空");
+                        mistakes.add(mistake);
+                        continue;
+                    }
+                    vo.setHouseNo(oneData.get(10).trim());
+                    if(StringUtils.isNotEmpty(oneData.get(11))){
+                        vo.setBuildPurpose(oneData.get(11).trim());
+                    }
+                    if(StringUtils.isNotEmpty(oneData.get(12))){
+                        vo.setBuildArea(oneData.get(12).trim());
+                    }
+                    if(StringUtils.isNotEmpty(oneData.get(13))){
+                        Integer isOk = PopulHouseStatusEnum.getCodeByName(oneData.get(13).trim());
+                        if(isOk.equals(-1)){
+                            ComMngPopulationImportErrorVO importErrorVO = new ComMngPopulationImportErrorVO();
+                            importErrorVO.setErrorPosition("第" + index + "行,第14列");
+                            importErrorVO.setErrorMsg("您填写的房屋状态有误");
+                            populationImportErrorVOList.add(importErrorVO);
+                            index++;
+                            ComMngPopulationMistakeExcelVO mistake = new ComMngPopulationMistakeExcelVO();
+                            setMistake(oneData, mistake);
+                            mistake.setMistake("您填写的房屋状态有误");
+                            mistakes.add(mistake);
+                            continue;
+                        }
+                        vo.setHouseStatus(isOk);
+                    }
+                    if(StringUtils.isNotEmpty(oneData.get(14))){
+                        Integer isOk = PopulHousePurposeEnum.getCodeByName(oneData.get(14).trim());
+                        if(isOk.equals(-1)){
+                            ComMngPopulationImportErrorVO importErrorVO = new ComMngPopulationImportErrorVO();
+                            importErrorVO.setErrorPosition("第" + index + "行,第15列");
+                            importErrorVO.setErrorMsg("您填写的房屋用途有误");
+                            populationImportErrorVOList.add(importErrorVO);
+                            index++;
+                            ComMngPopulationMistakeExcelVO mistake = new ComMngPopulationMistakeExcelVO();
+                            setMistake(oneData, mistake);
+                            mistake.setMistake("您填写的房屋用途有误");
+                            mistakes.add(mistake);
+                            continue;
+                        }
+                        vo.setHousePurpose(PopulHousePurposeEnum.getCodeByName(oneData.get(14).trim()));
+                    }
+                    if(StringUtils.isNotEmpty(oneData.get(15))){
+                        Integer isOk = PopulHouseControlStatusEnum.getCodeByName(oneData.get(15));
+                        if(isOk.equals(-1)){
+                            ComMngPopulationImportErrorVO importErrorVO = new ComMngPopulationImportErrorVO();
+                            importErrorVO.setErrorPosition("第" + index + "行,第16列");
+                            importErrorVO.setErrorMsg("您填写的管控状态有误");
+                            populationImportErrorVOList.add(importErrorVO);
+                            index++;
+                            ComMngPopulationMistakeExcelVO mistake = new ComMngPopulationMistakeExcelVO();
+                            setMistake(oneData, mistake);
+                            mistake.setMistake("您填写的管控状态有误");
+                            mistakes.add(mistake);
+                            continue;
+                        }
+                        vo.setControlStatus(isOk);
+                    }
 
-                if(StringUtils.isNotEmpty(oneData.get(16))){
-                    vo.setPhone(oneData.get(16).trim());
-                }
-                if(StringUtils.isNotEmpty(oneData.get(17))){
-                    vo.setNativePlace(oneData.get(17).trim());
-                }
-                if(StringUtils.isNotEmpty(oneData.get(18))){
-                    vo.setCultureLevel(PopulCultureLevelEnum.getCodeByName(oneData.get(18)));
-                }
-                if(StringUtils.isNotEmpty(oneData.get(19))){
+                    if(StringUtils.isNotEmpty(oneData.get(16))){
+                        vo.setPhone(oneData.get(16).trim());
+                    }
+                    if(StringUtils.isNotEmpty(oneData.get(17))){
+                        vo.setNativePlace(oneData.get(17).trim());
+                    }
+                    if(StringUtils.isNotEmpty(oneData.get(18))){
+                        vo.setCultureLevel(PopulCultureLevelEnum.getCodeByName(oneData.get(18)));
+                        Integer isOk = PopulCultureLevelEnum.getCodeByName(oneData.get(18));
+                        if(isOk.equals(-1)){
+                            ComMngPopulationImportErrorVO importErrorVO = new ComMngPopulationImportErrorVO();
+                            importErrorVO.setErrorPosition("第" + index + "行,第19列");
+                            importErrorVO.setErrorMsg("您填写的文化程度有误");
+                            populationImportErrorVOList.add(importErrorVO);
+                            index++;
+                            ComMngPopulationMistakeExcelVO mistake = new ComMngPopulationMistakeExcelVO();
+                            setMistake(oneData, mistake);
+                            mistake.setMistake("您填写的文化程度有误");
+                            mistakes.add(mistake);
+                            continue;
+                        }
+                        vo.setCultureLevel(isOk);
+                    }
+                    if(StringUtils.isNotEmpty(oneData.get(19))){
 //                    String ma = convertMarriage(oneData.get(19));
-                    Integer isOk = PopulMarriageEnum.getCodeByName(oneData.get(19));
-                    if(isOk.equals(-1)){
+                        Integer isOk = PopulMarriageEnum.getCodeByName(oneData.get(19));
+                        if(isOk.equals(-1)){
 //                        vo.setMarriageStr(ma);
-                        ComMngPopulationImportErrorVO importErrorVO = new ComMngPopulationImportErrorVO();
-                        importErrorVO.setErrorPosition("第" + index + "行,第20列");
-                        importErrorVO.setErrorMsg("您填写的婚姻状况有误");
-                        populationImportErrorVOList.add(importErrorVO);
-                        index++;
-                        continue;
+                            ComMngPopulationImportErrorVO importErrorVO = new ComMngPopulationImportErrorVO();
+                            importErrorVO.setErrorPosition("第" + index + "行,第20列");
+                            importErrorVO.setErrorMsg("您填写的婚姻状况有误");
+                            populationImportErrorVOList.add(importErrorVO);
+                            index++;
+                            ComMngPopulationMistakeExcelVO mistake = new ComMngPopulationMistakeExcelVO();
+                            setMistake(oneData, mistake);
+                            mistake.setMistake("您填写的婚姻状况有误");
+                            mistakes.add(mistake);
+                            continue;
+                        }else{
+                            vo.setMarriage(isOk);
+                        }
+
+                    }
+                    if(StringUtils.isNotEmpty(oneData.get(20))){
+                        vo.setHealthy(oneData.get(20).trim());
+                    }
+                    if(StringUtils.isNotEmpty(oneData.get(21))){
+                        vo.setBloodType(oneData.get(21).trim());
+                    }
+                    if(StringUtils.isNotEmpty(oneData.get(22))){
+                        vo.setReligion(oneData.get(22).trim());
+                    }
+                    if(StringUtils.isNotEmpty(oneData.get(23))){
+                        vo.setProfession(oneData.get(23).trim());
+                    }
+
+                    if(StringUtils.isNotEmpty(oneData.get(24))){
+                        vo.setWorkCompany(oneData.get(24).trim());
+                    }
+                    if(StringUtils.isNotEmpty(oneData.get(25))){
+                        Integer isOk = PopulOutOrLocalEnum.getCodeByName(oneData.get(25));
+                        if(isOk.equals(-1)){
+                            ComMngPopulationImportErrorVO importErrorVO = new ComMngPopulationImportErrorVO();
+                            importErrorVO.setErrorPosition("第" + index + "行,第26列");
+                            importErrorVO.setErrorMsg("您填写的本地/外地有误");
+                            populationImportErrorVOList.add(importErrorVO);
+                            index++;
+                            ComMngPopulationMistakeExcelVO mistake = new ComMngPopulationMistakeExcelVO();
+                            setMistake(oneData, mistake);
+                            mistake.setMistake("您填写的本地/外地有误");
+                            mistakes.add(mistake);
+                            continue;
+                        }
+                        vo.setOutOrLocal(isOk);
+                    }else {
+                        vo.setOutOrLocal(PopulOutOrLocalEnum.getCodeByName("本地"));
+                    }
+                    if(StringUtils.isNotEmpty(oneData.get(26))){
+                        vo.setCensusRegister(oneData.get(26).trim());
+                    }
+                    if(StringUtils.isEmpty(oneData.get(27))){
+                        vo.setResidence(0);
                     }else{
-                        vo.setMarriage(isOk);
+                        vo.setResidence(PopulIsOkEnum.getCodeByName(oneData.get(27).trim()));
+                    }
+                    if(StringUtils.isNotEmpty(oneData.get(28))){
+                        Integer isOk = PopulPersonTypeEnum.getCodeByName(oneData.get(28));
+                        if(isOk.equals(-1)){
+                            ComMngPopulationImportErrorVO importErrorVO = new ComMngPopulationImportErrorVO();
+                            importErrorVO.setErrorPosition("第" + index + "行,第29列");
+                            importErrorVO.setErrorMsg("您填写的人员类型有误");
+                            populationImportErrorVOList.add(importErrorVO);
+                            index++;
+                            ComMngPopulationMistakeExcelVO mistake = new ComMngPopulationMistakeExcelVO();
+                            setMistake(oneData, mistake);
+                            mistake.setMistake("您填写的人员类型有误");
+                            mistakes.add(mistake);
+                            continue;
+                        }
+                        vo.setPersonType(isOk);
+                    }
+                    if(StringUtils.isNotEmpty(oneData.get(29))){
+                        vo.setCountry(oneData.get(29).trim());
+                    }
+                    if(StringUtils.isNotEmpty(oneData.get(30))){
+                        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("YYYY-dd-MM HH:mm:ss");
+                        vo.setDateOfDeparture(simpleDateFormat.parse(oneData.get(30)));
+                    }
+                    if(StringUtils.isNotEmpty(oneData.get(31))){
+                        vo.setPersonStatus(oneData.get(31).trim());
+                    }
+                    if(StringUtils.isNotEmpty(oneData.get(32))){
+                        vo.setMonthlyIncome(oneData.get(32).trim());
+                    }
+                    if(StringUtils.isNotEmpty(oneData.get(33))){
+                        vo.setFamilyStatus(oneData.get(33).trim());
+                    }
+                    if(StringUtils.isNotEmpty(oneData.get(34))){
+                        vo.setGoalInChina(oneData.get(34).trim());
+                    }
+                    if(StringUtils.isNotEmpty(oneData.get(35))){
+                        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("YYYY-dd-MM HH:mm:ss");
+                        vo.setDateOfArrival(simpleDateFormat.parse(oneData.get(35)));
+                    }
+                    if(StringUtils.isNotEmpty(oneData.get(36))){
+                        vo.setRemark(oneData.get(36).trim());
                     }
 
-                }
-                if(StringUtils.isNotEmpty(oneData.get(20))){
-                    vo.setHealthy(oneData.get(20).trim());
-                }
-                if(StringUtils.isNotEmpty(oneData.get(21))){
-                    vo.setBloodType(oneData.get(21).trim());
-                }
-                if(StringUtils.isNotEmpty(oneData.get(22))){
-                    vo.setReligion(oneData.get(22).trim());
-                }
-                if(StringUtils.isNotEmpty(oneData.get(23))){
-                    vo.setProfession(oneData.get(23).trim());
-                }
+                    if(StringUtils.isNotEmpty(oneData.get(37))){
+                        vo.setIdCardPositive(oneData.get(37).trim());
+                    }
+                    if(StringUtils.isNotEmpty(oneData.get(38))){
+                        vo.setIdCardBack(oneData.get(38).trim());
+                    }
+                    if(StringUtils.isNotEmpty(oneData.get(39))){
+                        vo.setHouseHold(oneData.get(39).trim());
+                    }
+                    if(StringUtils.isEmpty(oneData.get(40))){
+                        vo.setDeath(0);
+                    }else{
+                        vo.setDeath(PopulIsOkEnum.getCodeByName(oneData.get(40).trim()));
+                    }
+                    for (int i = 41; i < headSize; i++) {
+                        if (oneData.get(i) != null && oneData.get(i).equals("是")) {
+                            vo.getUserTagStr().add(headData.get(i).substring(0,headData.get(i).indexOf("(")));
+                        }
+                    }
 
-                if(StringUtils.isNotEmpty(oneData.get(24))){
-                    vo.setWorkCompany(oneData.get(24).trim());
-                }
-                if(StringUtils.isNotEmpty(oneData.get(25))){
-                    Integer isOk = PopulOutOrLocalEnum.getCodeByName(oneData.get(25));
-                    if(isOk.equals(-1)){
-                        ComMngPopulationImportErrorVO importErrorVO = new ComMngPopulationImportErrorVO();
-                        importErrorVO.setErrorPosition("第" + index + "行,第26列");
-                        importErrorVO.setErrorMsg("您填写的本地/外地有误");
-                        populationImportErrorVOList.add(importErrorVO);
-                        index++;
+                    //将重复的数据进行MD5加密实现去重
+                    String distinct = vo.getName() + vo.getCardNo() + vo.getRoad() + vo.getDoorNo() + vo.getFloor() + vo.getUnitNo() + vo.getHouseNo();
+                    try {
+                        String distinctPass = PayUtil.MD5(distinct);
+                        if(StringUtils.isNotEmpty(distinctPass)){
+                            vo.setDistinctPass(distinctPass);
+                        }
+                    }catch (Exception e){
+                        log.error("组装MD5加密字段失败,数据表格行数:" + index);
                         continue;
                     }
-                    vo.setOutOrLocal(isOk);
+                    voList.add(vo);
+                    index++;
                 }
-                if(StringUtils.isNotEmpty(oneData.get(26))){
-                    vo.setCensusRegister(oneData.get(26).trim());
-                }
-                if(StringUtils.isEmpty(oneData.get(27))){
-                    vo.setResidence(0);
-                }else{
-                    vo.setResidence(PopulIsOkEnum.getCodeByName(oneData.get(27).trim()));
-                }
-                if(StringUtils.isNotEmpty(oneData.get(28))){
-                    Integer isOk = PopulPersonTypeEnum.getCodeByName(oneData.get(28));
-                    if(isOk.equals(-1)){
-                        ComMngPopulationImportErrorVO importErrorVO = new ComMngPopulationImportErrorVO();
-                        importErrorVO.setErrorPosition("第" + index + "行,第29列");
-                        importErrorVO.setErrorMsg("您填写的人员类型有误");
-                        populationImportErrorVOList.add(importErrorVO);
-                        index++;
-                        continue;
-                    }
-                    vo.setPersonType(isOk);
-                }
-                if(StringUtils.isNotEmpty(oneData.get(29))){
-                    vo.setCountry(oneData.get(29).trim());
-                }
-                if(StringUtils.isNotEmpty(oneData.get(30))){
-                    SimpleDateFormat simpleDateFormat = new SimpleDateFormat("YYYY-dd-MM HH:mm:ss");
-                    vo.setDateOfDeparture(simpleDateFormat.parse(oneData.get(30)));
-                }
-                if(StringUtils.isNotEmpty(oneData.get(31))){
-                    vo.setPersonStatus(oneData.get(31).trim());
-                }
-                if(StringUtils.isNotEmpty(oneData.get(32))){
-                    vo.setMonthlyIncome(oneData.get(32).trim());
-                }
-                if(StringUtils.isNotEmpty(oneData.get(33))){
-                    vo.setFamilyStatus(oneData.get(33).trim());
-                }
-                if(StringUtils.isNotEmpty(oneData.get(34))){
-                    vo.setGoalInChina(oneData.get(34).trim());
-                }
-                if(StringUtils.isNotEmpty(oneData.get(35))){
-                    SimpleDateFormat simpleDateFormat = new SimpleDateFormat("YYYY-dd-MM HH:mm:ss");
-                    vo.setDateOfArrival(simpleDateFormat.parse(oneData.get(35)));
-                }
-                if(StringUtils.isNotEmpty(oneData.get(36))){
-                    vo.setRemark(oneData.get(36).trim());
-                }
-
-                if(StringUtils.isNotEmpty(oneData.get(37))){
-                    vo.setIdCardPositive(oneData.get(37).trim());
-                }
-                if(StringUtils.isNotEmpty(oneData.get(38))){
-                    vo.setIdCardBack(oneData.get(38).trim());
-                }
-                if(StringUtils.isNotEmpty(oneData.get(39))){
-                    vo.setHouseHold(oneData.get(39).trim());
-                }
-                if(StringUtils.isEmpty(oneData.get(40))){
-                    vo.setDeath(0);
-                }else{
-                    vo.setDeath(PopulIsOkEnum.getCodeByName(oneData.get(40).trim()));
-                }
-                for (int i = 41; i < headSize; i++) {
-                    if (oneData.get(i) != null && oneData.get(i).equals("是")) {
-                        vo.getUserTagStr().add(headData.get(i).substring(0,headData.get(i).indexOf("(")));
-                    }
-                }
-
-                //将重复的数据进行MD5加密实现去重
-                String distinct = vo.getName() + vo.getCardNo() + vo.getRoad() + vo.getDoorNo() + vo.getFloor() + vo.getUnitNo() + vo.getHouseNo();
-                try {
-                    String distinctPass = PayUtil.MD5(distinct);
-                    if(StringUtils.isNotEmpty(distinctPass)){
-                        vo.setDistinctPass(distinctPass);
-                    }
-                }catch (Exception e){
-                    log.error("组装MD5加密字段失败,数据表格行数:" + index);
-                    continue;
-                }
-                voList.add(vo);
-                index++;
-            }
-            //客户需要暂时注释,等客户处理完成需要恢复
+                //客户需要暂时注释,等客户处理完成需要恢复
 //            if(populationImportErrorVOList.isEmpty()){
 //                R r = communityService.listSavePopulationServeExcelVO(voList, communityId);
 //                if (!R.isOk(r)) {
@@ -431,137 +553,242 @@
 //            }else{
 //                throw new ServiceException("500", JSON.toJSONString(populationImportErrorVOList));
 //            }
-            //根据list中的IdCard城市来去重
-            List<ComMngPopulationServeExcelVO> newVoList = voList.stream().filter(ListUtils.distinctByKey(ComMngPopulationServeExcelVO::getDistinctPass)).collect(Collectors.toList());
-            R r = communityService.listSavePopulationServeExcelVO(newVoList, communityId);
-            if (!R.isOk(r)) {
-                String errMsg = r.getMsg();
-                List<ComMngPopulationImportErrorVO> errorList = JSON.parseArray(errMsg,ComMngPopulationImportErrorVO.class);
-                if(!errorList.isEmpty()){
-                    populationImportErrorVOList.addAll(errorList);
-                }
-                throw new ServiceException("500", JSON.toJSONString(populationImportErrorVOList));
-            }else{
-                if(!populationImportErrorVOList.isEmpty()){
+                //根据list中的IdCard城市来去重
+                List<ComMngPopulationServeExcelVO> newVoList = voList.stream().filter(ListUtils.distinctByKey(ComMngPopulationServeExcelVO::getDistinctPass)).collect(Collectors.toList());
+                R r = communityService.listSavePopulationServeExcelVO(newVoList, communityId);
+                if (!R.isOk(r)) {
+                    List<ComMngPopulationMistakeExcelVO> list = JSONArray.parseArray(JSONArray.toJSONString(r.getData()), ComMngPopulationMistakeExcelVO.class);
+                    String errMsg = r.getMsg();
+                    List<ComMngPopulationImportErrorVO> errorList = JSON.parseArray(errMsg,ComMngPopulationImportErrorVO.class);
+                    if(!errorList.isEmpty()){
+                        populationImportErrorVOList.addAll(errorList);
+                    }
+                    mistakes.addAll(list);
+                    R result = mistakeExportPopulation(mistakes);
+                    loadUrl = (String)result.getData();
+                    ComMngPopulationImportErrorVO comMngPopulationImportErrorVO = new ComMngPopulationImportErrorVO();
+                    comMngPopulationImportErrorVO.setErrorPosition("loadUrl");
+                    comMngPopulationImportErrorVO.setErrorMsg(loadUrl);
+                    populationImportErrorVOList.add(comMngPopulationImportErrorVO);
                     throw new ServiceException("500", JSON.toJSONString(populationImportErrorVOList));
+                }else{
+//                mistakes.addAll((List<ComMngPopulationMistakeExcelVO>)r.getData());
+                    R result = mistakeExportPopulation(mistakes);
+                    loadUrl = (String)result.getData();
+                    if(!populationImportErrorVOList.isEmpty()){
+                        ComMngPopulationImportErrorVO comMngPopulationImportErrorVO = new ComMngPopulationImportErrorVO();
+                        comMngPopulationImportErrorVO.setErrorPosition("loadUrl");
+                        comMngPopulationImportErrorVO.setErrorMsg(loadUrl);
+                        populationImportErrorVOList.add(comMngPopulationImportErrorVO);
+                        throw new ServiceException("500", JSON.toJSONString(populationImportErrorVOList));
+                    }
                 }
+            } catch (NumberFormatException e) {
+                e.printStackTrace();
+                List<ComMngPopulationImportErrorVO> populationImportErrorVOList = new ArrayList<>();
+                ComMngPopulationImportErrorVO importErrorVO = new ComMngPopulationImportErrorVO();
+                importErrorVO.setErrorPosition("第" + index + "行");
+                importErrorVO.setErrorMsg("数据格式有误,请检查文档内数据");
+                populationImportErrorVOList.add(importErrorVO);
+                throw new ServiceException("500", JSON.toJSONString(populationImportErrorVOList));
+            } catch (ParseException e1) {
+                e1.printStackTrace();
+                List<ComMngPopulationImportErrorVO> populationImportErrorVOList = new ArrayList<>();
+                ComMngPopulationImportErrorVO importErrorVO = new ComMngPopulationImportErrorVO();
+                importErrorVO.setErrorPosition("第" + index + "行");
+                importErrorVO.setErrorMsg("数据格式有误,请检查文档内数据");
+                populationImportErrorVOList.add(importErrorVO);
+                throw new ServiceException("500", JSON.toJSONString(populationImportErrorVOList));
             }
-        } catch (NumberFormatException e) {
-            e.printStackTrace();
-            List<ComMngPopulationImportErrorVO> populationImportErrorVOList = new ArrayList<>();
-            ComMngPopulationImportErrorVO importErrorVO = new ComMngPopulationImportErrorVO();
-            importErrorVO.setErrorPosition("第" + index + "行");
-            importErrorVO.setErrorMsg("数据格式有误,请检查文档内数据");
-            populationImportErrorVOList.add(importErrorVO);
-            throw new ServiceException("500", JSON.toJSONString(populationImportErrorVOList));
-        } catch (ParseException e1) {
-            e1.printStackTrace();
-            List<ComMngPopulationImportErrorVO> populationImportErrorVOList = new ArrayList<>();
-            ComMngPopulationImportErrorVO importErrorVO = new ComMngPopulationImportErrorVO();
-            importErrorVO.setErrorPosition("第" + index + "行");
-            importErrorVO.setErrorMsg("数据格式有误,请检查文档内数据");
-            populationImportErrorVOList.add(importErrorVO);
-            throw new ServiceException("500", JSON.toJSONString(populationImportErrorVOList));
-        }
-    }
-
-    private String convertMarriage(String ma) {
-
-        if(Objects.equals("已",ma) || Objects.equals("一",ma)){
-            ma = "已婚";
-        }else if(Objects.equals("未",ma) || Objects.equals("未婚婚",ma)){
-            ma = "未婚";
-        }else if(Objects.equals("初",ma)){
-            ma = "初婚";
-        }else if(Objects.equals("再",ma)){
-            ma = "再婚";
-        }else if(Objects.equals("复",ma)){
-            ma = "复婚";
-        }else if(Objects.equals("丧",ma) || Objects.equals("丧偶偶",ma)){
-            ma = "丧偶";
-        }else if(Objects.equals("离",ma) || Objects.equals("离异",ma) || Objects.equals("离异婚",ma)){
-            ma = "离婚";
-        }else if(Objects.equals("分",ma)){
-            ma = "分居";
         }
 
-        return ma;
-    }
-
-    private String convertRelation(String ra) {
-        if(ra.contains("户主")){
-            ra = "户主";
-        }else if(Objects.equals(ra,"女儿")){
-            ra = "女";
-        }else if(Objects.equals(ra,"儿子") || Objects.equals(ra,"儿")){
-            ra = "子";
-        }else if(Objects.equals(ra,"大女")){
-            ra = "长女";
-        }else if(Objects.equals(ra,"二女") || Objects.equals(ra,"此女")){
-            ra = "次女";
-        }else if(Objects.equals(ra,"二子")){
-            ra = "次子";
-        }else if(Objects.equals(ra,"长男") || ra.contains("长子")){
-            ra = "长子";
-        }else if(Objects.equals(ra,"非亲属") || ra.contains("女友")  || ra.contains("女朋友")
-                || ra.contains("男友") || ra.contains("男朋友")){
-            ra = "其他";
-        }else if(Objects.equals(ra,"姐")){
-            ra = "姐姐";
-        }else if(Objects.equals(ra,"户主")){
-            ra = "本人";
-        }else if(Objects.equals(ra,"妻子") || Objects.equals(ra,"媳妇")){
-            ra = "妻";
-        }else if(Objects.equals(ra,"哥") || Objects.equals(ra,"哥哥")){
-            ra = "兄";
-        }else if(Objects.equals(ra,"丈夫")){
-            ra = "夫";
-        }else if(Objects.equals(ra,"丈母娘")){
-            ra = "岳母";
-        }else if(Objects.equals(ra,"继子") || Objects.equals(ra,"养子")){
-            ra = "养子或继子";
-        }else if(Objects.equals(ra,"继女") || Objects.equals(ra,"养女")){
-            ra = "养女或继女";
-        }else if(ra.contains("儿媳")||ra.contains("长媳")){
-            ra = "儿媳";
-        }else if(Objects.equals(ra,"三姨") || Objects.equals(ra,"姨姨")){
-            ra = "姨母";
-        }else if(Objects.equals(ra,"二外孙女")){
-            ra = "外孙女";
-        }else if(Objects.equals(ra,"外孙")){
-            ra = "外孙子";
-        }else if(Objects.equals(ra,"侄儿")){
-            ra = "侄子";
-        }else if(ra.contains("表")){
-            ra = "表兄弟、表姐妹";
-        }else if(Objects.equals(ra,"继父") || Objects.equals(ra,"养父")){
-            ra = "继父或养父";
-        }else if(Objects.equals(ra,"父")){
-            ra = "父亲";
-        }else if(Objects.equals(ra,"弟弟")){
-            ra = "弟";
-        }else if(Objects.equals(ra,"孙")){
-            ra = "孙子";
-        }else if(Objects.equals(ra,"孙媳妇") || Objects.equals(ra,"外孙媳妇")){
-            ra = "孙媳妇或外孙媳妇";
-        }else if(Objects.equals(ra,"妹")){
-            ra = "妹妹";
-        }else if(Objects.equals(ra,"祖父母")){
-            ra = "祖父母或外祖父母";
-        }else if(Objects.equals(ra,"姐妹") || Objects.equals(ra,"兄弟")){
-            ra = "兄弟姐妹";
-        }else if(Objects.equals(ra,"其他姐妹") || Objects.equals(ra,"其他兄弟")){
-            ra = "其他兄弟姐妹";
-        }else if(Objects.equals(ra,"奶奶")){
-            ra = "祖母";
-        }else if(Objects.equals(ra,"爷爷")){
-            ra = "祖父";
-        }else if(Objects.equals(ra,"爷爷")){
-            ra = "祖父";
-        }else if(ra.contains("堂")){
-            ra = "堂兄弟、堂姐妹";
+        private void setMistake(Map<Integer, String> map, ComMngPopulationMistakeExcelVO vo){
+            vo.setName(map.get(0));
+            vo.setCardNo(map.get(1));
+            vo.setNation(map.get(2));
+            vo.setPoliticalOutlook(map.get(3));
+            vo.setIsRent(map.get(4));
+            vo.setRelation(map.get(5));
+            vo.setRoad(map.get(6));
+            vo.setDoorNo(map.get(7));
+            vo.setFloor(map.get(8));
+            vo.setUnitNo(map.get(9));
+            vo.setHouseNo(map.get(10));
+            vo.setBuildPurpose(map.get(11));
+            vo.setBuildArea(map.get(12));
+            vo.setHouseStatus(map.get(13));
+            vo.setHousePurpose(map.get(14));
+            vo.setControlStatus(map.get(15));
+            vo.setPhone(map.get(16));
+            vo.setNativePlace(map.get(17));
+            vo.setCultureLevel(map.get(18));
+            vo.setMarriage(map.get(19));
+            vo.setHealthy(map.get(20));
+            vo.setBloodType(map.get(21));
+            vo.setReligion(map.get(22));
+            vo.setProfession(map.get(23));
+            vo.setWorkCompany(map.get(24));
+            vo.setOutOrLocal(map.get(25));
+            vo.setCensusRegister(map.get(26));
+            vo.setResidence(map.get(27));
+//        vo.setAddress(map.get(28));
+            vo.setPersonType(map.get(28));
+            vo.setCountry(map.get(29));
+            vo.setStringOfDeparture(map.get(30));
+            vo.setPersonStatus(map.get(31));
+            vo.setMonthlyIncome(map.get(32));
+            vo.setFamilyStatus(map.get(33));
+            vo.setGoalInChina(map.get(34));
+            vo.setStringOfArrival(map.get(35));
+            vo.setRemark(map.get(36));
+            vo.setIdCardPositive(map.get(37));
+            vo.setIdCardBack(map.get(38));
+            vo.setHouseHold(map.get(39));
+            vo.setDeath(map.get(40));
         }
 
-        return ra;
-    }
+        private R mistakeExportPopulation(List<ComMngPopulationMistakeExcelVO> vo) {
+            //生成动态模板excel通过ftp工具上传到主节点,然后返回模板下载地址
+            String ftpUrl = "/mnt/data/web/excel/";
+            String name = "实有人口错误数据.xlsx";
+            try {
+                SFTPUtil sftp = new SFTPUtil(userName, password, host, port);
+                sftp.login();
+                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 {
+                        excelWriter = EasyExcel.write(fileName, ComMngPopulationMistakeExcelVO.class).registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()).registerWriteHandler(new CustomSheetWriteHandler()).build();
+                        WriteSheet writeSheet = EasyExcel.writerSheet("实有人口错误数据").build();
+                        excelWriter.write(vo, writeSheet);
+                        excelWriter.finish();
+                        File file = new File(fileName);
+                        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();
+                        }
+                        if (excelWriter != null) {
+                            excelWriter.finish();
+                        }
+                    }
+                }
+                return R.ok(excelUrl + name);
+            } catch (Exception e) {
+                e.printStackTrace();
+                log.error("文件传输失败【{}】", e.getMessage());
+                return R.fail();
+            }
+        }
+
+        private String convertMarriage(String ma) {
+
+            if(Objects.equals("已",ma) || Objects.equals("一",ma)){
+                ma = "已婚";
+            }else if(Objects.equals("未",ma) || Objects.equals("未婚婚",ma)){
+                ma = "未婚";
+            }else if(Objects.equals("初",ma)){
+                ma = "初婚";
+            }else if(Objects.equals("再",ma)){
+                ma = "再婚";
+            }else if(Objects.equals("复",ma)){
+                ma = "复婚";
+            }else if(Objects.equals("丧",ma) || Objects.equals("丧偶偶",ma)){
+                ma = "丧偶";
+            }else if(Objects.equals("离",ma) || Objects.equals("离异",ma) || Objects.equals("离异婚",ma)){
+                ma = "离婚";
+            }else if(Objects.equals("分",ma)){
+                ma = "分居";
+            }
+
+            return ma;
+        }
+
+        private String convertRelation(String ra) {
+            if(ra.contains("户主")){
+                ra = "户主";
+            }else if(Objects.equals(ra,"女儿")){
+                ra = "女";
+            }else if(Objects.equals(ra,"儿子") || Objects.equals(ra,"儿")){
+                ra = "子";
+            }else if(Objects.equals(ra,"大女")){
+                ra = "长女";
+            }else if(Objects.equals(ra,"二女") || Objects.equals(ra,"此女")){
+                ra = "次女";
+            }else if(Objects.equals(ra,"二子")){
+                ra = "次子";
+            }else if(Objects.equals(ra,"长男") || ra.contains("长子")){
+                ra = "长子";
+            }else if(Objects.equals(ra,"非亲属") || ra.contains("女友")  || ra.contains("女朋友")
+                    || ra.contains("男友") || ra.contains("男朋友")){
+                ra = "其他";
+            }else if(Objects.equals(ra,"姐")){
+                ra = "姐姐";
+            }else if(Objects.equals(ra,"户主")){
+                ra = "本人";
+            }else if(Objects.equals(ra,"妻子") || Objects.equals(ra,"媳妇")){
+                ra = "妻";
+            }else if(Objects.equals(ra,"哥") || Objects.equals(ra,"哥哥")){
+                ra = "兄";
+            }else if(Objects.equals(ra,"丈夫")){
+                ra = "夫";
+            }else if(Objects.equals(ra,"丈母娘")){
+                ra = "岳母";
+            }else if(Objects.equals(ra,"继子") || Objects.equals(ra,"养子")){
+                ra = "养子或继子";
+            }else if(Objects.equals(ra,"继女") || Objects.equals(ra,"养女")){
+                ra = "养女或继女";
+            }else if(ra.contains("儿媳")||ra.contains("长媳")){
+                ra = "儿媳";
+            }else if(Objects.equals(ra,"三姨") || Objects.equals(ra,"姨姨")){
+                ra = "姨母";
+            }else if(Objects.equals(ra,"二外孙女")){
+                ra = "外孙女";
+            }else if(Objects.equals(ra,"外孙")){
+                ra = "外孙子";
+            }else if(Objects.equals(ra,"侄儿")){
+                ra = "侄子";
+            }else if(ra.contains("表")){
+                ra = "表兄弟、表姐妹";
+            }else if(Objects.equals(ra,"继父") || Objects.equals(ra,"养父")){
+                ra = "继父或养父";
+            }else if(Objects.equals(ra,"父")){
+                ra = "父亲";
+            }else if(Objects.equals(ra,"弟弟")){
+                ra = "弟";
+            }else if(Objects.equals(ra,"孙")){
+                ra = "孙子";
+            }else if(Objects.equals(ra,"孙媳妇") || Objects.equals(ra,"外孙媳妇")){
+                ra = "孙媳妇或外孙媳妇";
+            }else if(Objects.equals(ra,"妹")){
+                ra = "妹妹";
+            }else if(Objects.equals(ra,"祖父母")){
+                ra = "祖父母或外祖父母";
+            }else if(Objects.equals(ra,"姐妹") || Objects.equals(ra,"兄弟")){
+                ra = "兄弟姐妹";
+            }else if(Objects.equals(ra,"其他姐妹") || Objects.equals(ra,"其他兄弟")){
+                ra = "其他兄弟姐妹";
+            }else if(Objects.equals(ra,"奶奶")){
+                ra = "祖母";
+            }else if(Objects.equals(ra,"爷爷")){
+                ra = "祖父";
+            }else if(Objects.equals(ra,"爷爷")){
+                ra = "祖父";
+            }else if(ra.contains("堂")){
+                ra = "堂兄弟、堂姐妹";
+            }
+
+            return ra;
+        }
 }
diff --git a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/api/GridMemberPageListDTO.java b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/api/GridMemberPageListDTO.java
new file mode 100644
index 0000000..1960818
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/api/GridMemberPageListDTO.java
@@ -0,0 +1,50 @@
+package com.panzhihua.common.model.dtos.api;
+
+import lombok.Data;
+
+/**
+ * program 攀枝花智慧社区项目
+ * description 浪潮网格员接口返回对象
+ *
+ * @author manailin
+ * Date 2021-06-22 15:30
+ **/
+@Data
+public class GridMemberPageListDTO {
+
+    private String bindUserId;
+    private String bindUserName;
+    private String birthDate;
+    private String contactPhone;
+    private String createBy;
+    private String createTime;
+    private String dutyType;
+    private String educationCode;
+    private String educationName;
+    private String genderCode;
+    private String genderName;
+    private String gridDutyId;
+    private String gridDutyName;
+    private String id;
+    private String imei;
+    private Integer isLeader;
+    private Integer jobNum;
+    private String lastReportTime;
+    private String latitude;
+    private String locateUpdateTime;
+    private String longitude;
+    private String name;
+    private String nationCode;
+    private String nationName;
+    private String orgDuty;
+    private String orgDutyDate;
+    private String orgId;
+    private String orgName;
+    private String password;
+    private String politicalAffiliationCode;
+    private String politicalAffiliationName;
+    private String standbyPhone;
+    private String updateBy;
+    private String updateTime;
+    private String workState;
+}
diff --git a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/community/ComMngPopulationHouseEditDTO.java b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/community/ComMngPopulationHouseEditDTO.java
index df0bb21..b8334d5 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/community/ComMngPopulationHouseEditDTO.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/community/ComMngPopulationHouseEditDTO.java
@@ -16,18 +16,18 @@
     @ApiModelProperty("实有房屋id")
     private Long id;
 
-    @ApiModelProperty(value = "是否是居住地(1.是 2.否)")
+    @ApiModelProperty(value = "是否是居住地(1.是 0.否)")
     private Integer isResidence;
 
     @ApiModelProperty("与户主关系")
     private Integer relation;
 
     /**
-     * 是否是居住地(1.是 2.否)
+     * 是否是居住地(1.是 0.否)
      */
     public interface isResidence{
         int yes = 1;
-        int no = 2;
+        int no = 0;
     }
 
 }
diff --git a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/community/ComSwDangerReportHandleDTO.java b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/community/ComSwDangerReportHandleDTO.java
new file mode 100644
index 0000000..a6f5803
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/community/ComSwDangerReportHandleDTO.java
@@ -0,0 +1,64 @@
+package com.panzhihua.common.model.dtos.community;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ *  隐患报告处理DTO
+ */
+@Data
+@ApiModel("隐患报告处理DTO")
+public class ComSwDangerReportHandleDTO implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 隐患报告id
+     */
+    @JsonSerialize(using = ToStringSerializer.class)
+    @ApiModelProperty("隐患报告id")
+    private Long dangerReportId;
+
+    /**
+     * 社区id
+     */
+    @ApiModelProperty("社区id")
+    private Long communityId;
+
+    /**
+     * 社区处理建议
+     */
+    @ApiModelProperty("社区处理建议")
+    private String communitySuggestion;
+
+    /**
+     * 街道安全人员管理建议
+     */
+    @ApiModelProperty("街道安全人员管理建议")
+    private String streetSuggestion;
+
+    /**
+     * 承办记录
+     */
+    @ApiModelProperty("承办记录")
+    private String undertakeRecord;
+
+    /**
+     * 领导意见
+     */
+    @ApiModelProperty("领导意见")
+    private String leaderSuggestion;
+
+    /**
+     * 指派人员
+     */
+    @ApiModelProperty("指派人员")
+    private String assignPerson;
+
+}
diff --git a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/community/ComSwDangerReportRectifyDTO.java b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/community/ComSwDangerReportRectifyDTO.java
new file mode 100644
index 0000000..f727a87
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/community/ComSwDangerReportRectifyDTO.java
@@ -0,0 +1,49 @@
+package com.panzhihua.common.model.dtos.community;
+
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ *  隐患报告整改DTO
+ */
+@Data
+@ApiModel("隐患报告整改DTO")
+public class ComSwDangerReportRectifyDTO implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 隐患报告id
+     */
+    @ApiModelProperty("隐患报告id")
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long dangerReportId;
+
+    /**
+     * 社区id
+     */
+    @ApiModelProperty("社区id")
+    private Long communityId;
+
+    /**
+     * 采取措施
+     */
+    @ApiModelProperty("采取措施")
+    private String takeSteps;
+
+    /**
+     * 采取措施照片
+     */
+    @ApiModelProperty("采取措施照片")
+    private String stepsPhoto;
+
+    /**
+     * 整改人员
+     */
+    @ApiModelProperty("整改人员")
+    private String rectifyPerson;
+}
diff --git a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/community/ComSwPatrolRecordAddDTO.java b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/community/ComSwPatrolRecordAddDTO.java
new file mode 100644
index 0000000..d105252
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/community/ComSwPatrolRecordAddDTO.java
@@ -0,0 +1,201 @@
+package com.panzhihua.common.model.dtos.community;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+
+/**
+ * @auther txb
+ * @create 2021-07-23 14:38:38
+ * @describe 社区》安全工作》巡查记录实体类
+ */
+
+@Data
+@ApiModel("新增巡查记录DTO")
+public class ComSwPatrolRecordAddDTO implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 社区id
+     */
+    @ApiModelProperty("社区id")
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long communityId;
+
+    /**
+     * 巡查时间
+     */
+    @ApiModelProperty("巡查时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date PatrolTime;
+
+    /**
+     * 天气
+     */
+    @ApiModelProperty("天气")
+    private String weather;
+
+    /**
+     * 温度
+     */
+    @ApiModelProperty("温度")
+    private String temperature;
+
+    /**
+     * 风
+     */
+    @ApiModelProperty("风")
+    private String wind;
+
+    /**
+    * (取字典表国家标准编码)巡查类型(1.防火巡查2.防汛巡查3.防疫巡查)
+    */
+    @ApiModelProperty("巡查类型(1.防火巡查2.防汛巡查3.防疫巡查),多条以逗号隔开")
+    private String patrolType;
+
+    /**
+    * 巡查领导
+    */
+    @ApiModelProperty("巡查领导")
+    private String patrolLeader;
+
+    /**
+    * 巡查人员
+    */
+    @ApiModelProperty("巡查人员")
+    private String patrolPerson;
+
+    /**
+     * 巡查地址
+     */
+    @ApiModelProperty("巡查地址")
+    private String address;
+
+    /**
+    * 巡查记录
+    */
+    @ApiModelProperty("巡查记录")
+    private String recordContent;
+
+    /**
+    * 发现记录
+    */
+    @ApiModelProperty("发现记录")
+    private String findRecord;
+
+    /**
+    * 记录照片
+    */
+    @ApiModelProperty("记录照片")
+    private String recordPhoto;
+
+    /**
+    * 备注
+    */
+    @ApiModelProperty("备注")
+    private String remark;
+
+    /**
+    * 接班领导
+    */
+    @ApiModelProperty("接班领导")
+    private String successionLeader;
+
+    /**
+    * 接班人员
+    */
+    @ApiModelProperty("接班人员")
+    private String successionPerson;
+
+    /**
+    * 接班时间
+    */
+    @ApiModelProperty("接班时间")
+    private Date successionTime;
+
+    /**
+    * 是否存在隐患(1是 、0否)
+    */
+    @ApiModelProperty("是否存在隐患(1是 、0否)")
+    private Integer isHiddenDanger;
+
+    /**
+    * 隐患名称
+    */
+    @ApiModelProperty("隐患名称")
+    private String dagerName;
+
+    /**
+    * 排查时间
+    */
+    @ApiModelProperty("排查时间")
+    private Date checkTime;
+
+    /**
+    * 主体部门、单位或个人全称
+    */
+    @ApiModelProperty("主体部门、单位或个人全称")
+    private String unitName;
+
+    /**
+    * 隐患简述
+    */
+    @ApiModelProperty("隐患简述")
+    private String dagerDescription;
+
+    /**
+    * 是否立即整改(1是 、0否)
+    */
+    @ApiModelProperty("是否立即整改(1是 、0否)")
+    private Integer isRectifyImmediately;
+
+    /**
+    * 采取措施
+    */
+    @ApiModelProperty("采取措施")
+    private String takeSteps;
+
+    /**
+    * 采取措施照片
+    */
+    @ApiModelProperty("采取措施照片")
+    private String stepsPhoto;
+
+    /**
+    * 整改人员
+    */
+    @ApiModelProperty("整改人员")
+    private String rectifyPerson;
+
+
+    /**
+     * 创建人
+     */
+    @ApiModelProperty("创建人")
+    private Long createBy;
+
+    /**
+     * 巡查类型
+     */
+    public interface patrolType{
+        int huo = 1;
+        int xun = 2;
+        int yi = 3;
+    }
+
+    /**
+     * 是否
+     */
+    public interface isOk{
+        int yes = 1;
+        int no = 0;
+    }
+}
\ No newline at end of file
diff --git a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/community/ComSwPatrolRecordPageDTO.java b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/community/ComSwPatrolRecordPageDTO.java
new file mode 100644
index 0000000..1706212
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/community/ComSwPatrolRecordPageDTO.java
@@ -0,0 +1,73 @@
+package com.panzhihua.common.model.dtos.community;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import com.panzhihua.common.model.helper.encrypt.EncryptQuery;
+import com.panzhihua.common.model.helper.encrypt.EncryptQueryClass;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ *  分页查询巡查记录DTO
+ */
+@Data
+@ApiModel("分页查询巡查记录DTO")
+public class ComSwPatrolRecordPageDTO implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 分页-当前页数
+     */
+    @ApiModelProperty(value = "分页-当前页数",example = "1")
+    private Long pageNum;
+
+    /**
+     * 分页-每页记录数
+     */
+    @ApiModelProperty(value = "分页-每页记录数",example = "10")
+    private Long pageSize;
+
+    /**
+     * 社区id
+     */
+    @ApiModelProperty("社区id")
+    private Long communityId;
+
+    @ApiModelProperty("巡查开始时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date patrolAtBegin;
+
+    @ApiModelProperty("巡查结束时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date patrolAtEnd;
+
+    /**
+     * (取字典表国家标准编码)巡查类型(1.防火巡查2.防汛巡查3.防疫巡查)
+     */
+    @ApiModelProperty("巡查类型(1.防火巡查2.防汛巡查3.防疫巡查),多条以逗号隔开")
+    private String patrolType;
+
+    /**
+     * 巡查人员
+     */
+    @ApiModelProperty("巡查人员")
+    private String patrolPerson;
+
+    /**
+     * 状态(1.待查看 2.待处理 3.待整改 4.已整改)
+     */
+    @ApiModelProperty("状态(1.待处理 2.待整改 3.已整改)")
+    private String status;
+
+    /**
+     * 查看人(1.全部 2.只看我的)
+     */
+    @ApiModelProperty("查看人(1.全部 2.只看我的)")
+    private Integer selectPerson;
+
+}
diff --git a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/community/PageComMngVillageDTO.java b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/community/PageComMngVillageDTO.java
index 967919f..b2949f4 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/community/PageComMngVillageDTO.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/community/PageComMngVillageDTO.java
@@ -9,7 +9,7 @@
  * @description: 实有房屋
  **/
 @Data
-@ApiModel("实有房屋请求参数")
+@ApiModel("小区请求参数")
 public class PageComMngVillageDTO {
 
     @ApiModelProperty("街路巷")
diff --git a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/grid/EventGridDataAddAdminDTO.java b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/grid/EventGridDataAddAdminDTO.java
index 331dd2b..a7c1588 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/grid/EventGridDataAddAdminDTO.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/grid/EventGridDataAddAdminDTO.java
@@ -55,7 +55,10 @@
     private Long gridCommunityId;
 
     @ApiModelProperty(value = "市平台网格关联id", hidden = false, example = "")
-    private Long lcGridId;
+    private String lcGridId;
+
+    @ApiModelProperty(value = "市平台网格关联名称", hidden = false, example = "")
+    private String lcGridName;
 
     @ApiModelProperty(value = "当前登录用户id", hidden = true, example = "1")
     private Long userId;
diff --git a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/grid/EventGridDataEditAdminDTO.java b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/grid/EventGridDataEditAdminDTO.java
index bda0688..dadac2d 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/grid/EventGridDataEditAdminDTO.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/grid/EventGridDataEditAdminDTO.java
@@ -58,7 +58,10 @@
     private Long userId;
 
     @ApiModelProperty(value = "市平台网格关联id", hidden = false, example = "")
-    private Long lcGridId;
+    private String lcGridId;
+
+    @ApiModelProperty(value = "市平台网格关联名称", hidden = false, example = "")
+    private String lcGridName;
 
     @ApiModelProperty(value = "网格所属社区ID", hidden = false, example = "1")
     private Long gridCommunityId;
diff --git a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/grid/EventGridMemberAddDTO.java b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/grid/EventGridMemberAddDTO.java
index fb44e33..41c3bb9 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/grid/EventGridMemberAddDTO.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/grid/EventGridMemberAddDTO.java
@@ -77,7 +77,13 @@
     private Long gridMemberId;
 
     @ApiModelProperty(value = "市平台网格员关联id")
-    private Long lcMemberId;
+    private String lcMemberId;
+
+    @ApiModelProperty(value = "市平台网格员关联名称")
+    private String lcMemberName;
+
+    @ApiModelProperty(value = "市平台网格员关联用户id")
+    private String lcBindUserId;
 
     @ApiModelProperty(value = "楼栋id集合")
     private List<Long> buildingIds;
diff --git a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/grid/EventGridMemberEditAdminDTO.java b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/grid/EventGridMemberEditAdminDTO.java
index 48e5fdd..fd123df 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/grid/EventGridMemberEditAdminDTO.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/grid/EventGridMemberEditAdminDTO.java
@@ -68,7 +68,13 @@
     private Long gridMemberId;
 
     @ApiModelProperty(value = "市平台网格员关联id")
-    private Long lcMemberId;
+    private String lcMemberId;
+
+    @ApiModelProperty(value = "市平台网格员关联名称")
+    private String lcMemberName;
+
+    @ApiModelProperty(value = "市平台网格员关联用户id")
+    private String lcBindUserId;
 
     @ApiModelProperty(value = "楼栋id集合")
     private List<Long> buildingIds;
diff --git a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/grid/admin/LcGridMemberDTO.java b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/grid/admin/LcGridMemberDTO.java
new file mode 100644
index 0000000..a345a41
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/grid/admin/LcGridMemberDTO.java
@@ -0,0 +1,31 @@
+package com.panzhihua.common.model.dtos.grid.admin;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+
+/**
+ * 创建表单
+ *
+ * @author cedoo email:cedoo(a)qq.com
+ * @version 1.0
+ * @since 1.0
+ * @date 2021-05-26
+ * */
+@Data
+@ApiModel("修改网格员状态请求参数")
+public class LcGridMemberDTO {
+
+    @ApiModelProperty(value = "分页-当前页数",example = "1")
+    private Long pageNum = 1L;
+
+    @ApiModelProperty(value = "分页-每页记录数",example = "10")
+    private Long pageSize = 10L;
+
+    @ApiModelProperty(value = "工号或者名字", example = "")
+    private String param;
+
+}
diff --git a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/ComMngPopulationMistakeExcelVO.java b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/ComMngPopulationMistakeExcelVO.java
new file mode 100644
index 0000000..5fdd5cf
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/ComMngPopulationMistakeExcelVO.java
@@ -0,0 +1,148 @@
+package com.panzhihua.common.model.vos.community;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.google.common.collect.Lists;
+import com.panzhihua.common.model.helper.encrypt.EncryptDecryptClass;
+import com.panzhihua.common.model.helper.encrypt.EncryptDecryptField;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * @description: 批量导入实有人口
+ * @author: llming
+ */
+@Data
+@EncryptDecryptClass
+public class ComMngPopulationMistakeExcelVO implements Serializable {
+
+    @ExcelProperty(value = "姓名", index = 0)
+    private String name;
+
+    @EncryptDecryptField
+    private String cardNo;
+
+    @ExcelProperty(value = "民族", index = 2)
+    private String nation;
+
+    @ExcelProperty(value = "政治面貌(群众/中共党员/共青团员)", index = 3)
+    private String politicalOutlook;
+
+    @ExcelProperty(value = "是否租住", index = 4)
+    private String isRent;
+
+    @ExcelProperty(value = "与户主关系(户主/配偶/子女/孙女/父母/其他)", index = 5)
+    private String relation;
+
+    @ExcelProperty(value = "街/路/巷", index = 6)
+    private String road;
+
+    @ExcelProperty(value = "小区号(政府对于每个小区都有特定编号)", index = 7)
+    private String doorNo;
+
+    @ExcelProperty(value = "楼排号", index = 8)
+    private String floor;
+
+    @ExcelProperty(value = "单元号", index = 9)
+    private String unitNo;
+
+    @ExcelProperty(value = "户室(四位数表示。前两位楼层,后两位户号)", index = 10)
+    private String houseNo;
+
+    @ExcelProperty(value = "建筑用途", index = 11)
+    private String buildPurpose;
+
+    @ExcelProperty(value = "建筑面积", index = 12)
+    private String buildArea;
+
+    @ExcelProperty(value = "房屋状态(自住/租住/其他)", index = 13)
+    private String houseStatus;
+
+    @ExcelProperty(value = "房屋用途(住宅/公寓/宿舍/仓库/其他)", index = 14)
+    private String housePurpose;
+
+    @ExcelProperty(value = "管控状态(常规/关注/管控)", index = 15)
+    private String controlStatus;
+
+    @ExcelProperty(value = "联系方式", index = 16)
+    private String phone;
+
+    @ExcelProperty(value = "籍贯", index = 17)
+    private String nativePlace;
+
+    @ExcelProperty(value = "文化程度(1.小学 2.初中 3.高中 4.中专 5.大专 6.本科 7.硕士 8.博士 9.其他)", index = 18)
+    private String cultureLevel;
+
+    @ExcelProperty(value = "婚姻状况(1.未婚 2.已婚 3.离异 4.丧偶 5.分居 6.其他)", index = 19)
+    private String marriage;
+
+    @ExcelProperty(value = "健康状况", index = 20)
+    private String healthy;
+
+    @ExcelProperty(value = "血型", index = 21)
+    private String bloodType;
+
+    @ExcelProperty(value = "宗教信仰", index = 22)
+    private String religion;
+
+    @ExcelProperty(value = "职业", index = 23)
+    private String profession;
+
+    @ExcelProperty(value = "工作单位/学校", index = 24)
+    private String workCompany;
+
+    @ExcelProperty(value = "本地/外地", index = 25)
+    private String outOrLocal;
+
+    @ExcelProperty(value = "户口所在地", index = 26)
+    private String censusRegister;
+
+    @ExcelProperty(value = "是否居住地(是/否)", index = 27)
+    private String residence;
+
+//    @ExcelProperty(value = "居住地址", index = 28)
+//    private String address;
+
+    @ExcelProperty(value = "人员类型(户籍人员/留守人员/外地人员/境外人员)", index = 28)
+    private String personType;
+
+    @ExcelProperty(value = "国家", index = 29)
+    private String country;
+
+    @ExcelProperty(value = "离开日期(境外人员填写)", index = 30)
+    private String StringOfDeparture;
+
+    @ExcelProperty(value = "人员状态(正常/失联/出国)", index = 31)
+    private String personStatus;
+
+    @ExcelProperty(value = "月收入情况", index = 32)
+    private String monthlyIncome;
+
+    @ExcelProperty(value = "家庭情况", index = 33)
+    private String familyStatus;
+
+    @ExcelProperty(value = "来华目的(境外人员填写)", index = 34)
+    private String goalInChina;
+
+    @ExcelProperty(value = "抵达日期(境外人员填写)", index = 35)
+    private String StringOfArrival;
+
+    @ExcelProperty(value = "备注", index = 36)
+    private String remark;
+
+    @ExcelProperty(value = "证件照(人面像)照片", index = 37)
+    private String idCardPositive;
+
+    @ExcelProperty(value = "证件照(国徽面)照片", index = 38)
+    private String idCardBack;
+
+    @ExcelProperty(value = "户口本照片", index = 39)
+    private String houseHold;
+
+    @ExcelProperty(value = "是否死亡(是/否)", index = 40)
+    private String death;
+
+    @ExcelProperty(value = "错误信息", index = 41)
+    private String mistake;
+}
diff --git a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/ComMngPopulationServeExcelVO.java b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/ComMngPopulationServeExcelVO.java
index 0789848..90c6a02 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/ComMngPopulationServeExcelVO.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/ComMngPopulationServeExcelVO.java
@@ -172,6 +172,9 @@
     @ExcelProperty(value = "特殊情况(重大病史/孕)(是/否)", index = 49)
     private Integer specialCase;
 
+    @ExcelProperty(value = "错误信息", index = 50)
+    private Integer mistake;
+
 
     /**
      * 去重字段,使用(姓名+身份证号+街路巷+小区号+楼牌号+单元号+户室)组合字段进行MD5加密实现去重
diff --git a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/ComSwDangerReportExcelVO.java b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/ComSwDangerReportExcelVO.java
new file mode 100644
index 0000000..b36c017
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/ComSwDangerReportExcelVO.java
@@ -0,0 +1,59 @@
+package com.panzhihua.common.model.vos.community;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.panzhihua.common.model.helper.encrypt.EncryptDecryptClass;
+import com.panzhihua.common.model.helper.encrypt.EncryptDecryptField;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @description: 批量导出隐患报告台账管理
+ * @author: Null
+ * @date: 2021/7/28 17:11
+ */
+@Data
+public class ComSwDangerReportExcelVO implements Serializable {
+    /**
+     * 小区名称
+     */
+    @ExcelProperty(value = "安全隐患地址" ,index = 0)
+    private String address;
+    /**
+     * 隐患简述
+     */
+    @ExcelProperty(value = "隐患简述" ,index = 1)
+    private String dagerDescription;
+
+    /**
+     * 隐患类型
+     */
+    @ExcelProperty(value = "隐患类型" ,index = 2)
+    private String dangerType;
+
+    /**
+     * 风险等级
+     */
+    @ExcelProperty(value = "风险等级" ,index = 3)
+    private String dangerLevel;
+
+    /**
+     * 巡查人员
+     */
+    @ExcelProperty(value = "巡查人员" ,index = 4)
+    private String patrolPerson;
+
+    /**
+     * 联系电话
+     */
+    @ExcelProperty(value = "联系电话" ,index = 5)
+    private String patrolPersonPhone;
+
+    /**
+     * 备注
+     */
+    @ExcelProperty(value = "备注" ,index = 6)
+    private String remark;
+
+}
+
diff --git a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/ComSwDangerReportVO.java b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/ComSwDangerReportVO.java
new file mode 100644
index 0000000..86de551
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/ComSwDangerReportVO.java
@@ -0,0 +1,267 @@
+package com.panzhihua.common.model.vos.community;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+
+/**
+ * @auther txb
+ * @create 2021-07-23 14:38:38
+ * @describe 社区》安全工作》巡查记录实体类
+ */
+
+@Data
+@ApiModel("隐患报告表")
+public class ComSwDangerReportVO implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 隐患报告id
+     */
+    @ApiModelProperty("隐患报告id")
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long id;
+
+    /**
+     * 社区id
+     */
+    @ApiModelProperty("社区id")
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long communityId;
+
+    /**
+     * 巡查时间
+     */
+    @ApiModelProperty("巡查时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date PatrolTime;
+
+    /**
+     * 天气
+     */
+    @ApiModelProperty("天气")
+    private String weather;
+
+    /**
+     * 温度
+     */
+    @ApiModelProperty("温度")
+    private String temperature;
+
+    /**
+     * 风
+     */
+    @ApiModelProperty("风")
+    private String wind;
+
+    /**
+    * (取字典表国家标准编码)巡查类型(1.防火巡查2.防汛巡查3.防疫巡查)
+    */
+    @ApiModelProperty("巡查类型(1.防火巡查2.防汛巡查3.防疫巡查),多条以逗号隔开")
+    private String patrolType;
+
+    /**
+    * 巡查人员,多个以逗号隔开
+    */
+    @ApiModelProperty("巡查人员,多个以逗号隔开")
+    private String patrolPerson;
+
+    /**
+     * 巡查人员联系电话,多个以逗号隔开
+     */
+    @ApiModelProperty("巡查人员联系电话,多个以逗号隔开")
+    private String patrolPersonPhone;
+
+    /**
+     * 巡查地址
+     */
+    @ApiModelProperty("巡查地址")
+    private String address;
+
+    /**
+    * 巡查记录
+    */
+    @ApiModelProperty("巡查记录")
+    private String recordContent;
+
+    /**
+    * 发现记录
+    */
+    @ApiModelProperty("发现记录")
+    private String findRecord;
+
+    /**
+    * 记录照片
+    */
+    @ApiModelProperty("记录照片")
+    private String recordPhoto;
+
+    /**
+    * 备注
+    */
+    @ApiModelProperty("备注")
+    private String remark;
+
+    /**
+    * 隐患名称
+    */
+    @ApiModelProperty("隐患名称")
+    private String dagerName;
+
+    /**
+    * 排查时间
+    */
+    @ApiModelProperty("排查时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date checkTime;
+
+    /**
+    * 主体部门、单位或个人全称
+    */
+    @ApiModelProperty("主体部门、单位或个人全称")
+    private String unitName;
+
+    /**
+    * 隐患简述
+    */
+    @ApiModelProperty("隐患简述")
+    private String dagerDescription;
+
+    /**
+     * 隐患编号
+     */
+    @ApiModelProperty("隐患编号")
+    private Integer dangerNo;
+
+    /**
+     * 隐患类型(1.火灾隐患 2.汛情隐患 3.疫情隐患)
+     */
+    @ApiModelProperty("隐患类型(1.火灾隐患 2.汛情隐患 3.疫情隐患)")
+    private String dangerType;
+
+    /**
+     * 状态(1.待查看 2.待处理 3.待整改 4.已整改)
+     */
+    @ApiModelProperty("状态(1.待处理 2.待整改 3.已整改)")
+    private String status;
+
+    /**
+     * 风险等级(1.红色预警 2.橙色预警 3.黄色预警 4.蓝色预警)
+     */
+    @ApiModelProperty("风险等级(1.红色预警 2.橙色预警 3.黄色预警 4.蓝色预警)")
+    private String dangerLevel;
+
+    /**
+    * 采取措施
+    */
+    @ApiModelProperty("采取措施")
+    private String takeSteps;
+
+    /**
+    * 采取措施照片
+    */
+    @ApiModelProperty("采取措施照片")
+    private String stepsPhoto;
+
+    /**
+    * 整改人员
+    */
+    @ApiModelProperty("整改人员")
+    private String rectifyPerson;
+
+    /**
+     * 整改人员联系电话,多个以逗号隔开
+     */
+    @ApiModelProperty("整改人员联系电话,多个以逗号隔开")
+    private String rectifyPersonPhone;
+
+    /**
+     * 整改时间
+     */
+    @ApiModelProperty("整改时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date rectifyTime;
+
+    /**
+     * 社区处理建议
+     */
+    @ApiModelProperty("社区处理建议")
+    private String communitySuggestion;
+
+    /**
+     * 街道安全人员管理建议
+     */
+    @ApiModelProperty("街道安全人员管理建议")
+    private String streetSuggestion;
+
+    /**
+     * 承办记录
+     */
+    @ApiModelProperty("承办记录")
+    private String undertakeRecord;
+
+    /**
+     * 领导意见
+     */
+    @ApiModelProperty("领导意见")
+    private String leaderSuggestion;
+
+    /**
+     * 指派人员
+     */
+    @ApiModelProperty("指派人员")
+    private String assignPerson;
+
+    /**
+    * 创建时间
+    */
+    @ApiModelProperty("创建时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date createAt;
+
+    /**
+    * 更新时间
+    */
+    @ApiModelProperty("更新时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date updateAt;
+
+    /**
+     * 创建人
+     */
+    @ApiModelProperty("创建人")
+    private Long createBy;
+
+    /**
+     * 是否指派
+     */
+    @ApiModelProperty("是否指派(1.是 0.否)")
+    private Integer isAssign;
+
+
+
+    /**
+     * 巡查类型
+     */
+    public interface patrolType{
+        int huo = 1;
+        int xun = 2;
+        int yi = 3;
+    }
+
+    /**
+     * 是否
+     */
+    public interface isOk{
+        int yes = 1;
+        int no = 0;
+    }
+}
\ No newline at end of file
diff --git a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/ComSwPatrolRecordStatisticsVO.java b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/ComSwPatrolRecordStatisticsVO.java
new file mode 100644
index 0000000..625099b
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/ComSwPatrolRecordStatisticsVO.java
@@ -0,0 +1,35 @@
+package com.panzhihua.common.model.vos.community;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * 巡查记录统计返回参数
+ */
+@Data
+@ApiModel("巡查记录统计返回参数")
+public class ComSwPatrolRecordStatisticsVO {
+
+    /**
+     * 巡查记录总数
+     */
+    @ApiModelProperty("巡查记录总数")
+    private Long patrolRecordTotal;
+    /**
+     * 防火巡查
+     */
+    @ApiModelProperty("防火巡查")
+    private Integer localTotal;
+    /**
+     * 防汛巡查
+     */
+    @ApiModelProperty("防汛巡查")
+    private Integer outTotal;
+    /**
+     * 防疫巡查
+     */
+    @ApiModelProperty("防疫巡查")
+    private Integer specialTotal;
+
+}
diff --git a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/ComSwPatrolRecordVO.java b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/ComSwPatrolRecordVO.java
new file mode 100644
index 0000000..03c27cd
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/ComSwPatrolRecordVO.java
@@ -0,0 +1,234 @@
+package com.panzhihua.common.model.vos.community;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+
+/**
+ * @auther txb
+ * @create 2021-07-23 14:38:38
+ * @describe 社区》安全工作》巡查记录实体类
+ */
+
+@Data
+@ApiModel("巡查记录表")
+public class ComSwPatrolRecordVO implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 巡查记录id
+     */
+    @ApiModelProperty("巡查记录id")
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long id;
+
+    /**
+     * 社区id
+     */
+    @ApiModelProperty("社区id")
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long communityId;
+
+    /**
+     * 报告id
+     */
+    @ApiModelProperty("报告id")
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long reportId;
+
+    /**
+     * 巡查时间
+     */
+    @ApiModelProperty("巡查时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date patrolTime;
+
+    /**
+     * 天气
+     */
+    @ApiModelProperty("天气")
+    private String weather;
+
+    /**
+     * 温度
+     */
+    @ApiModelProperty("温度")
+    private String temperature;
+
+    /**
+     * 风
+     */
+    @ApiModelProperty("风")
+    private String wind;
+
+    /**
+    * (取字典表国家标准编码)巡查类型(1.防火巡查2.防汛巡查3.防疫巡查)
+    */
+    @ApiModelProperty("巡查类型(1.防火巡查2.防汛巡查3.防疫巡查),多条以逗号隔开")
+    private String patrolType;
+
+    /**
+    * 巡查领导
+    */
+    @ApiModelProperty("巡查领导")
+    private String patrolLeader;
+
+    /**
+    * 巡查人员
+    */
+    @ApiModelProperty("巡查人员")
+    private String patrolPerson;
+
+    /**
+     * 巡查地址
+     */
+    @ApiModelProperty("巡查地址")
+    private String address;
+
+    /**
+    * 巡查记录
+    */
+    @ApiModelProperty("巡查记录")
+    private String recordContent;
+
+    /**
+    * 发现记录
+    */
+    @ApiModelProperty("发现记录")
+    private String findRecord;
+
+    /**
+    * 记录照片
+    */
+    @ApiModelProperty("记录照片")
+    private String recordPhoto;
+
+    /**
+    * 备注
+    */
+    @ApiModelProperty("备注")
+    private String remark;
+
+    /**
+    * 接班领导
+    */
+    @ApiModelProperty("接班领导")
+    private String successionLeader;
+
+    /**
+    * 接班人员
+    */
+    @ApiModelProperty("接班人员")
+    private String successionPerson;
+
+    /**
+    * 接班时间
+    */
+    @ApiModelProperty("接班时间")
+    private Date successionTime;
+
+    /**
+    * 是否存在隐患(1是 、0否)
+    */
+    @ApiModelProperty("是否存在隐患(1是 、0否)")
+    private Integer isHiddenDanger;
+
+    /**
+    * 隐患名称
+    */
+    @ApiModelProperty("隐患名称")
+    private String dagerName;
+
+    /**
+    * 排查时间
+    */
+    @ApiModelProperty("排查时间")
+    private Date checkTime;
+
+    /**
+    * 主体部门、单位或个人全称
+    */
+    @ApiModelProperty("主体部门、单位或个人全称")
+    private String unitName;
+
+    /**
+    * 隐患简述
+    */
+    @ApiModelProperty("隐患简述")
+    private String dagerDescription;
+
+    /**
+    * 是否立即整改(1是 、0否)
+    */
+    @ApiModelProperty("是否立即整改(1是 、0否)")
+    private Integer isRectifyImmediately;
+
+    /**
+    * 采取措施
+    */
+    @ApiModelProperty("采取措施")
+    private String takeSteps;
+
+    /**
+    * 采取措施照片
+    */
+    @ApiModelProperty("采取措施照片")
+    private String stepsPhoto;
+
+    /**
+    * 整改人员
+    */
+    @ApiModelProperty("整改人员")
+    private String rectifyPerson;
+
+    /**
+    * 创建时间
+    */
+    @ApiModelProperty("创建时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date createAt;
+
+    /**
+    * 更新时间
+    */
+    @ApiModelProperty("更新时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date updateAt;
+
+    /**
+     * 创建人
+     */
+    @ApiModelProperty("创建人")
+    private Long createBy;
+
+    /**
+     * 安全记录/隐患报告显示按钮
+     */
+    @ApiModelProperty("安全记录/隐患报告显示按钮(1.查看安全工作记录 2.隐患报告待填写 3.查看隐患报告)")
+    private Integer displayButton;
+
+    /**
+     * 巡查类型
+     */
+    public interface patrolType{
+        int huo = 1;
+        int xun = 2;
+        int yi = 3;
+    }
+
+    /**
+     * 是否
+     */
+    public interface isOk{
+        int yes = 1;
+        int no = 0;
+    }
+}
\ No newline at end of file
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
new file mode 100644
index 0000000..2ee565f
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/ComSwSafetyWorkRecordVO.java
@@ -0,0 +1,135 @@
+package com.panzhihua.common.model.vos.community;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+
+/**
+ * @auther txb
+ * @create 2021-07-23 14:38:38
+ * @describe 社区》安全工作》巡查记录实体类
+ */
+
+@Data
+@ApiModel("安全工作记录表")
+public class ComSwSafetyWorkRecordVO implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 安全工作记录id
+     */
+    @ApiModelProperty("巡查记录id")
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long id;
+
+    /**
+     * 社区id
+     */
+    @ApiModelProperty("社区id")
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long communityId;
+
+    /**
+     * 巡查时间
+     */
+    @ApiModelProperty("巡查时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date PatrolTime;
+
+    /**
+     * 天气
+     */
+    @ApiModelProperty("天气")
+    private String weather;
+
+    /**
+     * 温度
+     */
+    @ApiModelProperty("温度")
+    private String temperature;
+
+    /**
+     * 风
+     */
+    @ApiModelProperty("风")
+    private String wind;
+
+    /**
+    * (取字典表国家标准编码)巡查类型(1.防火巡查2.防汛巡查3.防疫巡查)
+    */
+    @ApiModelProperty("巡查类型(1.防火巡查2.防汛巡查3.防疫巡查),多条以逗号隔开")
+    private String patrolType;
+
+    /**
+    * 巡查人员
+    */
+    @ApiModelProperty("巡查人员")
+    private String patrolPerson;
+
+    /**
+     * 巡查地址
+     */
+    @ApiModelProperty("巡查地址")
+    private String address;
+
+    /**
+    * 巡查记录
+    */
+    @ApiModelProperty("巡查记录")
+    private String recordContent;
+
+    /**
+    * 发现记录
+    */
+    @ApiModelProperty("发现记录")
+    private String findRecord;
+
+    /**
+    * 记录照片
+    */
+    @ApiModelProperty("记录照片")
+    private String recordPhoto;
+
+    /**
+    * 备注
+    */
+    @ApiModelProperty("备注")
+    private String remark;
+
+    /**
+    * 创建时间
+    */
+    @ApiModelProperty("创建时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date createAt;
+
+    /**
+    * 更新时间
+    */
+    @ApiModelProperty("更新时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date updateAt;
+
+    /**
+     * 创建人
+     */
+    @ApiModelProperty("创建人")
+    private Long createBy;
+
+    /**
+     * 巡查类型
+     */
+    public interface patrolType{
+        int huo = 1;
+        int xun = 2;
+        int yi = 3;
+    }
+}
\ No newline at end of file
diff --git a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/screen/civil/CivilVillageStatisticsVO.java b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/screen/civil/CivilVillageStatisticsVO.java
index 0cbeb95..3555e91 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/screen/civil/CivilVillageStatisticsVO.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/screen/civil/CivilVillageStatisticsVO.java
@@ -1,5 +1,7 @@
 package com.panzhihua.common.model.vos.community.screen.civil;
 
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
@@ -24,6 +26,7 @@
     private String villageImages;
 
     @ApiModelProperty("小区id")
+    @JsonSerialize(using = ToStringSerializer.class)
     private Long villageId;
 
     @ApiModelProperty("总户数")
diff --git a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/grid/GridMemberVO.java b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/grid/GridMemberVO.java
index 756adad..5144d42 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/grid/GridMemberVO.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/grid/GridMemberVO.java
@@ -32,7 +32,11 @@
     @ApiModelProperty(value = "网格员上班结束时间")
     private Integer workEndTime;
     @ApiModelProperty(value = "市平台网格员关联id")
-    private Long lcMemberId;
+    private String lcMemberId;
+    @ApiModelProperty(value = "市平台网格员关联名称")
+    private String lcMemberName;
+    @ApiModelProperty(value = "浪潮网格员绑定的用户ID")
+    private String lcBindUserId;
     @ApiModelProperty(value = "网格员关联楼栋信息")
     private List<GridMemberBuildingVO> memberBuildingList;
 
diff --git a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/grid/admin/GridMemberLcListVO.java b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/grid/admin/GridMemberLcListVO.java
index 81adf0a..d52e80c 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/grid/admin/GridMemberLcListVO.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/grid/admin/GridMemberLcListVO.java
@@ -17,5 +17,7 @@
     private String lcGridMemberId;
     @ApiModelProperty(value = "市平台网格员名称")
     private String lcGridMemberName;
+    @ApiModelProperty(value = "浪潮网格员绑定的用户ID")
+    private String lcBindUserId;
 
 }
diff --git a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/grid/admin/excel/GridMemberWorkExportExcelVO.java b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/grid/admin/excel/GridMemberWorkExportExcelVO.java
new file mode 100644
index 0000000..c6cafdb
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/grid/admin/excel/GridMemberWorkExportExcelVO.java
@@ -0,0 +1,71 @@
+package com.panzhihua.common.model.vos.grid.admin.excel;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.panzhihua.common.model.helper.encrypt.EncryptDecryptClass;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * 网格员工作汇总Excel导出
+ */
+@Data
+@ApiModel("网格员工作汇总Excel导出")
+public class GridMemberWorkExportExcelVO implements Serializable {
+
+    @ExcelProperty(value = "网格员名称" ,index = 0)
+    private String nickName;
+
+    @ExcelProperty(value = "发布突发事件" ,index = 1)
+    private Integer addTFTotal;
+
+    @ExcelProperty(value = "处理突发事件" ,index = 2)
+    private Integer handleTFTotal;
+
+    @ExcelProperty(value = "发布矛盾纠纷" ,index = 3)
+    private Integer addMDTotal;
+
+    @ExcelProperty(value = "处理矛盾纠纷" ,index = 4)
+    private Integer handleMDTotal;
+
+    @ExcelProperty(value = "发布治安隐患" ,index = 5)
+    private Integer addZATotal;
+
+    @ExcelProperty(value = "小区名字" ,index = 6)
+    private Integer handleZATotal;
+
+    @ExcelProperty(value = "发布不稳定因素" ,index = 7)
+    private Integer addBWDTotal;
+
+    @ExcelProperty(value = "处理不稳定因素" ,index = 8)
+    private Integer handleBWDTotal;
+
+    @ExcelProperty(value = "发布公共服务" ,index = 9)
+    private Integer addGGTotal;
+
+    @ExcelProperty(value = "处理公共服务" ,index = 10)
+    private Integer handleGGTotal;
+
+    @ExcelProperty(value = "发布特殊人群" ,index = 11)
+    private Integer addTSTotal;
+
+    @ExcelProperty(value = "处理特殊人群" ,index = 12)
+    private Integer handleTSTotal;
+
+    @ExcelProperty(value = "完成走访任务" ,index = 13)
+    private Integer handleZFTotal;
+
+    @ExcelProperty(value = "处理随手拍" ,index = 14)
+    private Integer easyPhotoTotal;
+
+    @ExcelProperty(value = "发布宣传教育" ,index = 15)
+    private Integer propagandaEducationTotal;
+
+    @ExcelProperty(value = "新增居民数" ,index = 16)
+    private Integer addResidentTotal = 0;
+
+    @ExcelProperty(value = "新增实有房屋数" ,index = 17)
+    private Integer addHouseTotal = 0;
+}
diff --git a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/partybuilding/PartyOrganizationVO.java b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/partybuilding/PartyOrganizationVO.java
index cc0a988..1318141 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/partybuilding/PartyOrganizationVO.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/partybuilding/PartyOrganizationVO.java
@@ -23,4 +23,8 @@
     private Integer countPerson;
     @ApiModelProperty(value = "社区id",hidden = true)
     private Long communityId;
+    @ApiModelProperty(value = "分页-当前页数",example = "1")
+    private Long pageNum = 1L;
+    @ApiModelProperty(value = "分页-每页记录数",example = "10")
+    private Long pageSize = 10L;
 }
diff --git a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/service/api/ApiServiceFeign.java b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/service/api/ApiServiceFeign.java
index 4204f79..b304ab4 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/service/api/ApiServiceFeign.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/service/api/ApiServiceFeign.java
@@ -72,4 +72,16 @@
     @ApiOperation(value = "自动上传重点人员和流动人员走访记录")
     @GetMapping("lc/auto/upload/visit_record")
     void automationUploadVisitRecord();
+
+    @ApiOperation(value = "获取所有或者根据姓名和工号查询,分页")
+    @GetMapping("lc/event/getGridMemberListByAreaIdOrName")
+    R getGridMemberListByAreaIdOrName(@RequestParam("areaId") String areaId,@RequestParam("param") String param,@RequestParam("pageNum") Long pageNum,@RequestParam("pageSize") Long pageSize);
+
+    @ApiOperation(value = "获取指定区域网格树形列表,不包括具体的网格数据")
+    @GetMapping("lc/grid/tree")
+    R getGridTreeByAreaId(@RequestParam("areaId") String areaId);
+
+    @ApiOperation(value = "获取指定区域网格列表")
+    @GetMapping("lc/grid/list")
+    R getGridDataListByAreaId(@RequestParam("areaId") String areaId);
 }
diff --git a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/service/community/CommunityService.java b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/service/community/CommunityService.java
index 53ab2cb..e4986ac 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/service/community/CommunityService.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/service/community/CommunityService.java
@@ -42,6 +42,7 @@
 import com.panzhihua.common.model.vos.shop.ShopStoreVO;
 import com.panzhihua.common.model.vos.user.UserElectronicFileVO;
 import com.panzhihua.common.model.vos.user.UserPhoneVO;
+import io.swagger.annotations.ApiOperation;
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.web.bind.annotation.*;
 
@@ -117,7 +118,7 @@
      * @return 详情
      */
     @PostMapping("detailactivity")
-    R detailActivity(@RequestParam("id") Long id, @RequestParam("userId") Long userId);
+    R detailActivity(@RequestParam("id") Long id, @RequestParam(value = "userId",required = false) Long userId);
 
     /**
      * 分页活动报名名单
@@ -1442,7 +1443,7 @@
      * @return
      */
     @PostMapping("/common/data/car/export")
-    R exportRealCar(ExportComMngCarExcelDTO exportComMngCarExcelDTO);
+    R exportRealCar(@RequestBody ExportComMngCarExcelDTO exportComMngCarExcelDTO);
 
     /**
      * 社区后台实有单位管理列表
@@ -3727,4 +3728,116 @@
      */
     @PostMapping("/easyphoto/readUserReward")
     R readUserReward(@RequestParam("userId") Long userId,@RequestParam("communityId") Long communityId);
+
+    /**
+     * 分页查询巡查记录
+     * @param comSwPatrolRecordPageDTO 查询参数
+     * @return 分页集合
+     */
+    @PostMapping("/patrolRecord/page")
+    R pagePatrolRecord(@RequestBody ComSwPatrolRecordPageDTO comSwPatrolRecordPageDTO);
+
+    /**
+     * 新增巡查记录
+     * @param comSwPatrolRecordAddDTO 新增参数
+     * @return 新增结果
+     */
+    @PostMapping("/patrolRecord/addPatrolRecord")
+    R addPatrolRecord(@RequestBody ComSwPatrolRecordAddDTO comSwPatrolRecordAddDTO);
+
+    /**
+     * 根据巡查记录id查询详情
+     *
+     * @param patrolRecordId 巡查记录id
+     * @return 巡查记录详情查询结果
+     */
+    @PostMapping("/patrolRecord/detail")
+    R detailPatrolRecord(@RequestParam("patrolRecordId") Long patrolRecordId);
+
+    /**
+     * 分页查询安全工作记录
+     * @param comSwPatrolRecordPageDTO 查询参数
+     * @return 安全工作记录分页集合
+     */
+    @PostMapping("/patrolRecord/safetyWorkRecord/page")
+    R pageSafetyWorkRecord(@RequestBody ComSwPatrolRecordPageDTO comSwPatrolRecordPageDTO);
+
+    /**
+     * 根据安全工作记录id查询详情
+     *
+     * @param safetyWorkRecordId 安全工作记录
+     * @return 安全工作记录详情查询结果
+     */
+    @PostMapping("/patrolRecord/safetyWorkRecord/detail")
+    R detailSafetyWorkRecord(@RequestParam(value = "safetyWorkRecordId") Long safetyWorkRecordId);
+
+    /**
+     * 根据巡查记录id查询安全工作记录详情
+     *
+     * @param patrolRecordId 巡查记录id
+     * @return 安全工作记录详情查询结果
+     */
+    @PostMapping("/patrolRecord/safetyWorkRecord/detailByPrId")
+    R detailSafetyWorkRecordByPrId(@RequestParam(value = "patrolRecordId") Long patrolRecordId);
+
+    /**
+     * 分页查询隐患报告
+     * @param comSwPatrolRecordPageDTO 查询参数
+     * @return 隐患报告分页集合
+     */
+    @PostMapping("/patrolRecord/dangerReport/page")
+    R pageDangerReport(@RequestBody ComSwPatrolRecordPageDTO comSwPatrolRecordPageDTO);
+
+    /**
+     * 根据隐患报告id查询详情
+     *
+     * @param dangerReportId 隐患报告id
+     * @return 隐患报告详情查询结果
+     */
+    @PostMapping("/patrolRecord/dangerReport/detail")
+    R detailDangerReport(@RequestParam(value = "dangerReportId") Long dangerReportId);
+
+    /**
+     * 根据巡查记录id查询隐患报告详情
+     *
+     * @param patrolRecordId 巡查记录id
+     * @return 隐患报告详情查询结果
+     */
+    @PostMapping("/patrolRecord/dangerReport/detailByPrId")
+    R detailDangerReportByPrId(@RequestParam(value = "patrolRecordId") Long patrolRecordId);
+
+    /**
+     * 处理隐患报告
+     *
+     * @param comSwDangerReportHandleDTO 隐患报告处理参数
+     * @return 处理结果
+     */
+    @PostMapping("/patrolRecord/dangerReport/handle")
+    R handleDangerReport(@RequestBody ComSwDangerReportHandleDTO comSwDangerReportHandleDTO);
+
+    /**
+     * 整改隐患报告
+     *
+     * @param comSwDangerReportRectifyDTO 隐患报告整改参数
+     * @return 整改结果
+     */
+    @PostMapping("/patrolRecord/dangerReport/rectify")
+    R rectifyDangerReport(@RequestBody ComSwDangerReportRectifyDTO comSwDangerReportRectifyDTO);
+
+    /**
+     * 隐患报告台账导出
+     *
+     * @param dangerReportIds
+     * @return
+     */
+    @PostMapping("/patrolRecord/dangerReport/export")
+    R exportDangerReport(@RequestBody List<Long> dangerReportIds);
+
+    /**
+     * 巡查记录统计接口
+     *
+     * @return 统计结果
+     */
+    @PostMapping("/patrolRecord/statistics")
+    R patrolRecordStatistics(@RequestParam(value = "communityId") Long communityId);
 }
diff --git a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/service/grid/GridService.java b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/service/grid/GridService.java
index 74dad69..562807f 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/service/grid/GridService.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/service/grid/GridService.java
@@ -956,7 +956,7 @@
      * @return 网格统计数据
      */
     @PostMapping("/statistics/getGridEventStatistics")
-    R getGridEventStatisticsByApp(@RequestParam("gridId") Long gridId);
+    R getGridEventStatisticsByApp(@RequestParam("gridId") Long gridId,@RequestParam("userId") Long userId);
 
     /**
      * 查询网格事件统计数据
@@ -1257,4 +1257,12 @@
      */
     @GetMapping("/screen/village/statistics")
     R civilVillageStatistics(@RequestParam("villageId") Long villageId);
+
+    /**
+     * 查询所有网格员工作汇总数据
+     * @param statisticsAdminDTO    请求参数
+     * @return  网格员工作汇总数据
+     */
+    @PostMapping("/statistics/admin/gridMemberStatisticsAll")
+    R gridMemberStatisticsAll(@RequestBody MemberStatisticsAdminDTO statisticsAdminDTO);
 }
diff --git a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/service/partybuilding/PartyBuildingService.java b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/service/partybuilding/PartyBuildingService.java
index 3c81ade..b120014 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/service/partybuilding/PartyBuildingService.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/service/partybuilding/PartyBuildingService.java
@@ -39,7 +39,7 @@
      * @return 党组织集合
      */
     @PostMapping("/partybuildIng/listpartyorganizationAll")
-    R listPartyOrganizationAll(@RequestParam("communityId") Long communityId);
+    R listPartyOrganizationAll(@RequestBody PartyOrganizationVO partyOrganizationVO);
     
     /**
      * 新增党支部
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
new file mode 100644
index 0000000..1c8be1d
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/community_backstage/src/main/java/com/panzhihua/community_backstage/api/ComSwPatrolRecordApi.java
@@ -0,0 +1,258 @@
+package com.panzhihua.community_backstage.api;
+
+import com.alibaba.excel.EasyExcel;
+import com.alibaba.excel.ExcelWriter;
+import com.alibaba.excel.write.metadata.WriteSheet;
+import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy;
+import com.alibaba.fastjson.JSONArray;
+import com.panzhihua.common.controller.BaseController;
+import com.panzhihua.common.model.dtos.community.ComSwDangerReportHandleDTO;
+import com.panzhihua.common.model.dtos.community.ComSwPatrolRecordAddDTO;
+import com.panzhihua.common.model.dtos.community.ComSwPatrolRecordPageDTO;
+import com.panzhihua.common.model.dtos.community.ExportComMngCarExcelDTO;
+import com.panzhihua.common.model.vos.R;
+import com.panzhihua.common.model.vos.community.*;
+import com.panzhihua.common.service.community.CommunityService;
+import com.panzhihua.common.utlis.SFTPUtil;
+import com.panzhihua.community_backstage.excel.CustomSheetWriteHandler;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.InputStream;
+import java.util.List;
+
+/**
+ * @auther txb
+ * @create 2021-07-23 14:38:38
+ * @describe 社区》安全工作》巡查记录前端控制器
+ */
+@Slf4j
+@Api(tags = {"社区管理/安全工作"})
+@RestController
+@RequestMapping("/patrolRecord")
+public class ComSwPatrolRecordApi extends BaseController {
+
+    @Resource
+    private CommunityService communityService;
+
+    // FTP 登录用户名
+    @Value("${ftp.username}")
+    private String userName;
+    // FTP 登录密码
+    @Value("${ftp.password}")
+    private String password;
+    // FTP 服务器地址IP地址
+    @Value("${ftp.host}")
+    private String host;
+    // FTP 端口
+    @Value("${ftp.port}")
+    private int port;
+    @Value("${excel.userurl}")
+    private String excelUrl;
+
+
+    /**
+     * 分页查询巡查记录
+     * @param comSwPatrolRecordPageDTO 查询参数
+     * @return 分页集合
+     */
+    @ApiOperation(value = "分页查询巡查记录", response = ComSwPatrolRecordVO.class)
+    @PostMapping("/pagePatrolRecord")
+    public R pagePatrolRecord(@RequestBody ComSwPatrolRecordPageDTO comSwPatrolRecordPageDTO){
+        Long communityId = this.getCommunityId();
+        comSwPatrolRecordPageDTO.setCommunityId(communityId);
+        return communityService.pagePatrolRecord(comSwPatrolRecordPageDTO);
+    }
+
+    /**
+     * 新增巡查记录
+     * @param comSwPatrolRecordAddDTO 新增参数
+     * @return 新增结果
+     */
+    @ApiOperation(value = "新增巡查记录")
+    @PostMapping("/addPatrolRecord")
+    public R addPatrolRecord(@RequestBody ComSwPatrolRecordAddDTO comSwPatrolRecordAddDTO){
+        Long communityId = this.getCommunityId();
+        comSwPatrolRecordAddDTO.setCommunityId(communityId);
+        return communityService.addPatrolRecord(comSwPatrolRecordAddDTO);
+    }
+
+    /**
+     * 根据巡查记录id查询详情
+     *
+     * @param patrolRecordId 巡查记录id
+     * @return 巡查记录详情查询结果
+     */
+    @ApiOperation(value = "根据巡查记录id查询详情")
+    @PostMapping("/detailPatrolRecord")
+    public R detailPatrolRecord(@RequestParam(value = "patrolRecordId") Long patrolRecordId) {
+        return communityService.detailPatrolRecord(patrolRecordId);
+    }
+
+    /**
+     * 分页查询安全工作记录
+     * @param comSwPatrolRecordPageDTO 查询参数
+     * @return 安全工作记录分页集合
+     */
+    @ApiOperation(value = "分页查询安全工作记录")
+    @PostMapping("/pageSafetyWorkRecord")
+    public R pageSafetyWorkRecord(@RequestBody ComSwPatrolRecordPageDTO comSwPatrolRecordPageDTO){
+        Long communityId = this.getCommunityId();
+        comSwPatrolRecordPageDTO.setCommunityId(communityId);
+        return communityService.pageSafetyWorkRecord(comSwPatrolRecordPageDTO);
+    }
+
+    /**
+     * 根据安全工作记录id查询详情
+     *
+     * @param safetyWorkRecordId 安全工作记录
+     * @return 安全工作记录详情查询结果
+     */
+    @ApiOperation(value = "根据安全工作记录id查询详情")
+    @PostMapping("/detailSafetyWorkRecord")
+    public R detailSafetyWorkRecord(@RequestParam(value = "safetyWorkRecordId") Long safetyWorkRecordId) {
+        return communityService.detailSafetyWorkRecord(safetyWorkRecordId);
+    }
+
+    /**
+     * 根据巡查记录id查询安全工作记录详情
+     *
+     * @param patrolRecordId 巡查记录id
+     * @return 安全工作记录详情查询结果
+     */
+    @ApiOperation(value = "根据巡查记录id查询安全工作记录详情")
+    @PostMapping("/detailSafetyWorkRecordByPrId")
+    public R detailSafetyWorkRecordByPrId(@RequestParam(value = "patrolRecordId") Long patrolRecordId) {
+        return communityService.detailSafetyWorkRecordByPrId(patrolRecordId);
+    }
+
+    /**
+     * 分页查询隐患报告
+     * @param comSwPatrolRecordPageDTO 查询参数
+     * @return 隐患报告分页集合
+     */
+    @ApiOperation(value = "分页查询隐患报告")
+    @PostMapping("/pageDangerReport")
+    public R pageDangerReport(@RequestBody ComSwPatrolRecordPageDTO comSwPatrolRecordPageDTO){
+        Long communityId = this.getCommunityId();
+        comSwPatrolRecordPageDTO.setCommunityId(communityId);
+        return communityService.pageDangerReport(comSwPatrolRecordPageDTO);
+    }
+
+    /**
+     * 根据隐患报告id查询详情
+     *
+     * @param dangerReportId 隐患报告id
+     * @return 隐患报告详情查询结果
+     */
+    @ApiOperation(value = "根据隐患报告id查询详情")
+    @PostMapping("/detailDangerReport")
+    public R detailDangerReport(@RequestParam(value = "dangerReportId") Long dangerReportId) {
+        return communityService.detailDangerReport(dangerReportId);
+    }
+
+    /**
+     * 根据巡查记录id查询隐患报告详情
+     *
+     * @param patrolRecordId 巡查记录id
+     * @return 隐患报告详情查询结果
+     */
+    @ApiOperation(value = "根据隐患报告id查询详情")
+    @PostMapping("/detailDangerReportByPrId")
+    public R detailDangerReportByPrId(@RequestParam(value = "patrolRecordId") Long patrolRecordId) {
+        return communityService.detailDangerReportByPrId(patrolRecordId);
+    }
+
+    /**
+     * 处理隐患报告
+     *
+     * @param comSwDangerReportHandleDTO 隐患报告处理参数
+     * @return 处理结果
+     */
+    @ApiOperation(value = "处理隐患报告")
+    @PostMapping("/handleDangerReport")
+    public R handleDangerReport(@RequestBody ComSwDangerReportHandleDTO comSwDangerReportHandleDTO){
+        return communityService.handleDangerReport(comSwDangerReportHandleDTO);
+    }
+
+    /**
+     * 导出台账-隐患报告
+     *
+     * @param dangerReportIds 隐患报告ids
+     * @return 隐患报告导出结果
+     */
+    @ApiOperation(value = "导出台账-隐患报告")
+    @PostMapping("/danger/export")
+    public R exportComMngCar(@RequestBody List<Long> dangerReportIds) {
+        String url = excelUrl;
+        String name = "隐患报告台账导出数据.xlsx";
+        String ftpUrl = "/mnt/data/web/excel/";
+        //导出勾选了的隐患报告,不勾选则导出本页数据
+        R r = communityService.exportDangerReport(dangerReportIds);
+        if (R.isOk(r)) {
+            List<ComSwDangerReportExcelVO> comSwDangerReportExcelVOS = JSONArray.parseArray(JSONArray.toJSONString(r.getData()), ComSwDangerReportExcelVO.class);
+            try {
+                SFTPUtil sftp = new SFTPUtil(userName, password, host, port);
+                sftp.login();
+                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 {
+                        excelWriter = EasyExcel.write(fileName, ComSwDangerReportExcelVO.class).registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()).registerWriteHandler(new CustomSheetWriteHandler()).build();
+                        WriteSheet writeSheet = EasyExcel.writerSheet("隐患报告台账导出数据").build();
+                        excelWriter.write(comSwDangerReportExcelVOS, writeSheet);
+                        excelWriter.finish();
+                        File file = new File(fileName);
+                        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();
+                        }
+                        if (excelWriter != null) {
+                            excelWriter.finish();
+                        }
+                    }
+                }
+                return R.ok(url + name);
+            } catch (Exception e) {
+                e.printStackTrace();
+                log.error("文件传输失败【{}】", e.getMessage());
+                return R.fail();
+            }
+        }
+        return R.fail("未查询到隐患报告");
+    }
+
+    /**
+     * 巡查记录统计接口
+     *
+     * @return 统计结果
+     */
+    @ApiOperation(value = "巡查记录统计接口", response = ComSwPatrolRecordStatisticsVO.class)
+    @PostMapping("/patrolRecordStatistics")
+    public R patrolRecordStatistics() {
+        //获取登陆用户绑定社区id
+        Long communityId = this.getLoginUserInfo().getCommunityId();
+        return communityService.patrolRecordStatistics(communityId);
+    }
+
+}
+
diff --git a/springcloud_k8s_panzhihuazhihuishequ/community_backstage/src/main/java/com/panzhihua/community_backstage/api/CommonDataApi.java b/springcloud_k8s_panzhihuazhihuishequ/community_backstage/src/main/java/com/panzhihua/community_backstage/api/CommonDataApi.java
index f596031..3be69af 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/community_backstage/src/main/java/com/panzhihua/community_backstage/api/CommonDataApi.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/community_backstage/src/main/java/com/panzhihua/community_backstage/api/CommonDataApi.java
@@ -9,9 +9,7 @@
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.jcraft.jsch.SftpException;
-import com.panzhihua.common.constants.Constants;
 import com.panzhihua.common.controller.BaseController;
-import com.panzhihua.common.enums.PopulIsOkEnum;
 import com.panzhihua.common.enums.PopulPoliticalOutlookEnum;
 import com.panzhihua.common.enums.PopulSexEnum;
 import com.panzhihua.common.listen.*;
@@ -21,17 +19,13 @@
 import com.panzhihua.common.model.vos.R;
 import com.panzhihua.common.model.vos.community.*;
 import com.panzhihua.common.model.vos.user.ComMngTagVO;
-import com.panzhihua.common.model.vos.user.ComMngUserTagVO;
 import com.panzhihua.common.model.vos.user.InputUserInfoVO;
-import com.panzhihua.common.model.vos.user.UserElectronicFileVO;
 import com.panzhihua.common.service.community.CommunityService;
 import com.panzhihua.common.service.user.UserService;
-import com.panzhihua.common.utlis.FileUtil;
 import com.panzhihua.common.utlis.SFTPUtil;
 import com.panzhihua.common.validated.AddGroup;
 import com.panzhihua.community_backstage.easyexcel.UploadEexcelUserDTOListener;
 import com.panzhihua.community_backstage.excel.CustomSheetWriteHandler;
-import com.panzhihua.community_backstage.model.dto.ExcelExportDto;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiOperation;
@@ -73,7 +67,8 @@
     @Value("${excel.userurl}")
     private String excelUrl;
     @Value("${excel.carUrl}")
-    private String carUrl = "http://panzhihua.nhys.cdnhxx.com/web/%e8%bd%a6%e8%be%86%e5%af%bc%e5%85%a5%e6%a8%a1%e6%9d%bf.xlsx";
+    private String carUrl;
+//            = "http://panzhihua.nhys.cdnhxx.com/web/%e8%bd%a6%e8%be%86%e5%af%bc%e5%85%a5%e6%a8%a1%e6%9d%bf.xlsx";
     @Value("${excel.companyUrl}")
     private String companyUrl = "http://panzhihua.nhys.cdnhxx.com/web/%e5%ae%9e%e6%9c%89%e5%8d%95%e4%bd%8d%e5%af%bc%e5%85%a5%e6%a8%a1%e6%9d%bf.xlsx";
     @Value("${excel.assetsUrl}")
@@ -119,7 +114,77 @@
     @ApiOperation(value = "下载模板-车辆管理")
     @GetMapping(value = "/car/download/template")
     public R downloadTemplate(HttpServletResponse response) throws IOException, SftpException {
-        return R.ok(carUrl);
+        //获取登陆用户绑定社区id
+        Long communityId = 2L;//this.getCommunityId();
+        //生成动态模板excel通过ftp工具上传到主节点,然后返回模板下载地址
+        String ftpUrl = "/mnt/data/web/excel/";
+        String name = "车辆导入模板.xlsx";
+        try {
+            SFTPUtil sftp = new SFTPUtil(userName, password, host, port);
+            sftp.login();
+            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 {
+                    List<List<String>> list = new ArrayList<>();
+                    List<String> head0 = new ArrayList<String>();
+                    head0.add("小区名称");
+                    List<String> head1 = new ArrayList<String>();
+                    head1.add("车主姓名");
+                    List<String> head2 = new ArrayList<String>();
+                    head2.add("身份证号码");
+                    List<String> head3 = new ArrayList<String>();
+                    head3.add("联系方式");
+                    List<String> head4 = new ArrayList<String>();
+                    head4.add("车牌号");
+                    List<String> head5 = new ArrayList<String>();
+                    head5.add("品牌型号");
+                    List<String> head6 = new ArrayList<String>();
+                    head6.add("车身颜色");
+                    list.add(head0);
+                    list.add(head1);
+                    list.add(head2);
+                    list.add(head3);
+                    list.add(head4);
+                    list.add(head5);
+                    list.add(head6);
+                    List<List<Object>> dataList = new ArrayList<>();
+                    List<Object> data = new ArrayList<>();
+                    data.add("蓝湖国际");
+                    data.add("张三");
+                    data.add("510802199205054112");
+                    data.add("13888000088");
+                    data.add("川A66666");
+                    data.add("大众s9");
+                    data.add("黑色");
+                    dataList.add(data);
+
+                    EasyExcel.write(fileName).head(list).sheet("车辆导入模板").doWrite(dataList);
+                    File file = new File(fileName);
+                    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();
+                    }
+                }
+            }
+            return R.ok(excelUrl + "车辆导入模板.xlsx");
+        } catch (Exception e) {
+            e.printStackTrace();
+            log.error("文件传输失败【{}】", e.getMessage());
+            return R.fail();
+        }
     }
 
     @ApiOperation(value = "excel导入车辆信息")
@@ -718,10 +783,80 @@
         return communityService.detailComMngRealAssets(id);
     }
 
-    @ApiOperation(value = "下载模板-实有资产导入模板")
+    @ApiOperation(value = "下载模板-社区资产导入模板")
     @GetMapping(value = "/assets/download/template")
     public R downloadRealAssetsTemplate(HttpServletResponse response) throws IOException, SftpException {
-        return R.ok(assetsUrl);
+        //获取登陆用户绑定社区id
+        Long communityId = 2L;//this.getCommunityId();
+        //生成动态模板excel通过ftp工具上传到主节点,然后返回模板下载地址
+        String ftpUrl = "/mnt/data/web/excel/";
+        String name = "社区资产导入模板.xlsx";
+        try {
+            SFTPUtil sftp = new SFTPUtil(userName, password, host, port);
+            sftp.login();
+            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 {
+                    List<List<String>> list = new ArrayList<>();
+                    List<String> head0 = new ArrayList<String>();
+                    head0.add("资产名称");
+                    List<String> head1 = new ArrayList<String>();
+                    head1.add("位置");
+                    List<String> head2 = new ArrayList<String>();
+                    head2.add("分类");
+                    List<String> head3 = new ArrayList<String>();
+                    head3.add("占地面积");
+                    List<String> head4 = new ArrayList<String>();
+                    head4.add("数量");
+                    List<String> head5 = new ArrayList<String>();
+                    head5.add("建筑类型");
+                    List<String> head6 = new ArrayList<String>();
+                    head6.add("楼层类型");
+                    list.add(head0);
+                    list.add(head1);
+                    list.add(head2);
+                    list.add(head3);
+                    list.add(head4);
+                    list.add(head5);
+                    list.add(head6);
+                    List<List<Object>> dataList = new ArrayList<>();
+                    List<Object> data = new ArrayList<>();
+                    data.add("张三");
+                    data.add("位置");
+                    data.add("公共设施");
+                    data.add("500");
+                    data.add("100");
+                    data.add("社区");
+                    data.add("高层");
+                    dataList.add(data);
+
+                    EasyExcel.write(fileName).head(list).sheet("社区资产导入模板").doWrite(dataList);
+                    File file = new File(fileName);
+                    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();
+                    }
+                }
+            }
+            return R.ok(excelUrl + "社区资产导入模板.xlsx");
+        } catch (Exception e) {
+            e.printStackTrace();
+            log.error("文件传输失败【{}】", e.getMessage());
+            return R.fail();
+        }
     }
 
     @ApiOperation(value = "excel导入实有资产信息")
@@ -740,14 +875,14 @@
         return R.ok();
     }
 
-    @ApiOperation(value = "实有资产Excel")
+    @ApiOperation(value = "社区资产导出数据")
     @PostMapping("/assets/export")
     public R exportRealAssets(@RequestBody ExportRealAssetsExcelDTO exportRealAssetsExcelDTO) {
         exportRealAssetsExcelDTO.setCommunityId(this.getCommunityId());
         String url = excelUrl;
 //        String uuid = UUID.randomUUID().toString().replace("-", "");
 //        String name = uuid + ".xlsx";
-        String name = "实有资产导出数据.xlsx";
+        String name = "社区资产导出数据.xlsx";
         String ftpUrl = "/mnt/data/web/excel/";
 //        用户搜索了就下载搜索的用户否则下载所有用户
         R r = communityService.exportRealAssets(exportRealAssetsExcelDTO);
@@ -765,7 +900,7 @@
                     InputStream inputStream = null;
                     try {
                         excelWriter = EasyExcel.write(fileName, ComMngRealAssetsExcelVO.class).registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()).registerWriteHandler(new CustomSheetWriteHandler()).build();
-                        WriteSheet writeSheet = EasyExcel.writerSheet("实有单位导出").build();
+                        WriteSheet writeSheet = EasyExcel.writerSheet("社区资产导出").build();
                         excelWriter.write(eexcelUserDTOS, writeSheet);
                         excelWriter.finish();
                         File file = new File(fileName);
diff --git a/springcloud_k8s_panzhihuazhihuishequ/community_backstage/src/main/java/com/panzhihua/community_backstage/api/CommunityActivityApi.java b/springcloud_k8s_panzhihuazhihuishequ/community_backstage/src/main/java/com/panzhihua/community_backstage/api/CommunityActivityApi.java
index a8433c5..ad4b207 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/community_backstage/src/main/java/com/panzhihua/community_backstage/api/CommunityActivityApi.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/community_backstage/src/main/java/com/panzhihua/community_backstage/api/CommunityActivityApi.java
@@ -314,9 +314,6 @@
                             log.info("新增微心愿未通过审核通知成功【{}】", JSONObject.toJSONString(sysUserNoticeVO));
                         }
                     } else if (type.intValue() == 5) {
-                        if(comActMicroWishVO.getFeedback().length() > 200){
-                            return R.fail("反馈字数不得超过200字");
-                        }
                         sysUserNoticeVO.setTitle("微心愿已完成");
                         sysUserNoticeVO.setBusinessContent(comActMicroWishVO.getFeedback());
                         sysUserNoticeVO.setBusinessStatus(2);
diff --git a/springcloud_k8s_panzhihuazhihuishequ/community_backstage/src/main/java/com/panzhihua/community_backstage/api/CommunityPartyBuildingApi.java b/springcloud_k8s_panzhihuazhihuishequ/community_backstage/src/main/java/com/panzhihua/community_backstage/api/CommunityPartyBuildingApi.java
index 3787f40..c93eecb 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/community_backstage/src/main/java/com/panzhihua/community_backstage/api/CommunityPartyBuildingApi.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/community_backstage/src/main/java/com/panzhihua/community_backstage/api/CommunityPartyBuildingApi.java
@@ -97,11 +97,12 @@
     }
 
     @ApiOperation(value = "社区所有党组织列表", response = PartyOrganizationVO.class)
-    @GetMapping("listpartyorganizationAll")
-    public R listPartyOrganizationAll() {
+    @PostMapping("listpartyorganizationAll")
+    public R listPartyOrganizationAll(@RequestBody PartyOrganizationVO partyOrganizationVO) {
         Long communityId = this.getCommunityId();
+        partyOrganizationVO.setCommunityId(communityId);
         log.info("社区所有党组织社区id【{}】", communityId);
-        return partyBuildingService.listPartyOrganizationAll(communityId);
+        return partyBuildingService.listPartyOrganizationAll(partyOrganizationVO);
     }
 
 
diff --git a/springcloud_k8s_panzhihuazhihuishequ/community_backstage/src/main/java/com/panzhihua/community_backstage/api/PopulationApi.java b/springcloud_k8s_panzhihuazhihuishequ/community_backstage/src/main/java/com/panzhihua/community_backstage/api/PopulationApi.java
index 07aae74..48281e0 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/community_backstage/src/main/java/com/panzhihua/community_backstage/api/PopulationApi.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/community_backstage/src/main/java/com/panzhihua/community_backstage/api/PopulationApi.java
@@ -90,7 +90,7 @@
         InputStream inputStream = null;
         try {
             inputStream = file.getInputStream();
-            ComMngPopulationServeExcelListen comMngPopulationServeExcelListen = new ComMngPopulationServeExcelListen(communityService, this.getCommunityId());
+            ComMngPopulationServeExcelListen comMngPopulationServeExcelListen = new ComMngPopulationServeExcelListen(communityService, this.getCommunityId(),userName,password,host,port,excelUrl);
             EasyExcel.read(inputStream, null, comMngPopulationServeExcelListen).sheet().doRead();
         } catch (IOException e) {
             log.error("导入模板失败【{}】", e.getMessage());
@@ -134,7 +134,7 @@
         try {
             Long communityId = Long.valueOf(request.getParameter("communityId"));
             inputStream = file.getInputStream();
-            ComMngPopulationServeExcelListen comMngPopulationServeExcelListen = new ComMngPopulationServeExcelListen(communityService, communityId);
+            ComMngPopulationServeExcelListen comMngPopulationServeExcelListen = new ComMngPopulationServeExcelListen(communityService, communityId,userName,password,host,port,excelUrl);
             EasyExcel.read(inputStream, null, comMngPopulationServeExcelListen).sheet().doRead();
         } catch (IOException e) {
             log.error("导入模板失败【{}】", e.getMessage());
diff --git a/springcloud_k8s_panzhihuazhihuishequ/community_backstage/src/main/java/com/panzhihua/community_backstage/listen/PartyBuildingMemberExcelListen.java b/springcloud_k8s_panzhihuazhihuishequ/community_backstage/src/main/java/com/panzhihua/community_backstage/listen/PartyBuildingMemberExcelListen.java
index 48f3ece..17e36db 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/community_backstage/src/main/java/com/panzhihua/community_backstage/listen/PartyBuildingMemberExcelListen.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/community_backstage/src/main/java/com/panzhihua/community_backstage/listen/PartyBuildingMemberExcelListen.java
@@ -34,6 +34,10 @@
     private List<PartyBuildingMemberExcelVO> list = new ArrayList<>();
     @Override
     public void invoke(PartyBuildingMemberExcelVO partyBuildingMemberExcelVO, AnalysisContext analysisContext) {
+        Boolean isRepeat = list.stream().anyMatch(v -> v.getIdCard().equals(partyBuildingMemberExcelVO.getIdCard()));
+        if(isRepeat){
+            throw new PartyBuildingMemberException("导入失败,存在多个相同身份证号:" + partyBuildingMemberExcelVO.getIdCard());
+        }
         list.add(partyBuildingMemberExcelVO);
         // 达到BATCH_COUNT了,需要去存储一次数据库,防止数据几万条数据在内存,容易OOM
         if(list.size() >= BATCH_COUNT){
diff --git a/springcloud_k8s_panzhihuazhihuishequ/grid_app/src/main/java/com/panzhihua/grid_app/api/StatisticsApi.java b/springcloud_k8s_panzhihuazhihuishequ/grid_app/src/main/java/com/panzhihua/grid_app/api/StatisticsApi.java
index bf8ca4a..e1b7131 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/grid_app/src/main/java/com/panzhihua/grid_app/api/StatisticsApi.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/grid_app/src/main/java/com/panzhihua/grid_app/api/StatisticsApi.java
@@ -2,6 +2,7 @@
 
 import com.panzhihua.common.controller.BaseController;
 import com.panzhihua.common.model.dtos.grid.GridEventStatisticsDTO;
+import com.panzhihua.common.model.vos.LoginUserInfoVO;
 import com.panzhihua.common.model.vos.R;
 import com.panzhihua.common.model.vos.grid.ComMapGridDetailVO;
 import com.panzhihua.common.model.vos.grid.GridEventStatisticsDetailVO;
@@ -24,10 +25,14 @@
     @ApiOperation(value = "根据网格id查询统计详情-lyq",response = GridEventStatisticsVO.class)
     @PostMapping("event")
     public R getGridDetail(@RequestParam("gridId") Long gridId){
+        LoginUserInfoVO loginUserInfo = this.getLoginUserInfo();
+        if(loginUserInfo == null){
+            return R.fail("请先登录");
+        }
         if(gridId == null){
             return R.fail("参数错误");
         }
-        return gridService.getGridEventStatisticsByApp(gridId);
+        return gridService.getGridEventStatisticsByApp(gridId,loginUserInfo.getUserId());
     }
 
     @ApiOperation(value = "网格id查询统计事件详情-lyq",response = GridEventStatisticsDetailVO.class)
diff --git a/springcloud_k8s_panzhihuazhihuishequ/grid_backstage/src/main/java/com/panzhihua/grid_backstage/api/EventGridDataApi.java b/springcloud_k8s_panzhihuazhihuishequ/grid_backstage/src/main/java/com/panzhihua/grid_backstage/api/EventGridDataApi.java
index 162baa7..6d67918 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/grid_backstage/src/main/java/com/panzhihua/grid_backstage/api/EventGridDataApi.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/grid_backstage/src/main/java/com/panzhihua/grid_backstage/api/EventGridDataApi.java
@@ -1,15 +1,19 @@
 package com.panzhihua.grid_backstage.api;
 
 
+import com.alibaba.fastjson.JSONArray;
 import com.panzhihua.common.controller.BaseController;
+import com.panzhihua.common.model.dtos.api.GridMemberPageListDTO;
 import com.panzhihua.common.model.dtos.grid.*;
 import com.panzhihua.common.model.dtos.grid.admin.EventGridMemberCascadeAddDTO;
+import com.panzhihua.common.model.dtos.grid.admin.LcGridMemberDTO;
 import com.panzhihua.common.model.vos.LoginUserInfoVO;
 import com.panzhihua.common.model.vos.R;
 import com.panzhihua.common.model.vos.grid.EventGridMemberWarnLogAdminVO;
 import com.panzhihua.common.model.vos.grid.GridMemberVO;
 import com.panzhihua.common.model.vos.grid.admin.GridMemberCascadeVO;
 import com.panzhihua.common.model.vos.grid.admin.GridMemberLcListVO;
+import com.panzhihua.common.service.api.ApiServiceFeign;
 import com.panzhihua.common.service.user.UserService;
 import com.panzhihua.common.utlis.ClazzUtils;
 import com.panzhihua.common.utlis.DateUtils;
@@ -22,6 +26,7 @@
 import com.panzhihua.common.service.grid.GridService;
 
 import javax.annotation.Resource;
+import java.util.ArrayList;
 import java.util.List;
 
 /**
@@ -41,6 +46,8 @@
     private GridService gridService;
     @Resource
     private UserService userService;
+    @Resource
+    private ApiServiceFeign apiService;
 
     /**
      * 网格员分页查询
@@ -116,9 +123,23 @@
     }
 
     @ApiOperation(value = "查询市平台网格员列表",response = GridMemberLcListVO.class)
-    @GetMapping("/member/lc/list")
-    public R gridMemberLcList(){
-        return gridService.gridMemberLcList();
+    @PostMapping("/member/lc/list/noToken")
+    public R gridMemberLcList(@RequestBody LcGridMemberDTO memberDTO){
+        List<GridMemberLcListVO> gridMemberLcList = new ArrayList<>();
+        R r = apiService.getGridMemberListByAreaIdOrName("jhRxqEQp",memberDTO.getParam(),memberDTO.getPageNum(),memberDTO.getPageSize());
+        if(R.isOk(r)){
+            List<GridMemberPageListDTO> memberList = JSONArray.parseArray(JSONArray.toJSONString(r.getData()), GridMemberPageListDTO.class);
+            if(!memberList.isEmpty()){
+                memberList.forEach(member -> {
+                    GridMemberLcListVO memberLcListVO = new GridMemberLcListVO();
+                    memberLcListVO.setLcBindUserId(member.getBindUserId());
+                    memberLcListVO.setLcGridMemberId(member.getId());
+                    memberLcListVO.setLcGridMemberName(member.getName());
+                    gridMemberLcList.add(memberLcListVO);
+                });
+            }
+        }
+        return R.ok(gridMemberLcList);
     }
 
     @ApiOperation(value = "添加网格员时级联列表",response = GridMemberCascadeVO.class)
diff --git a/springcloud_k8s_panzhihuazhihuishequ/grid_backstage/src/main/java/com/panzhihua/grid_backstage/api/EventGridMemberRelationApi.java b/springcloud_k8s_panzhihuazhihuishequ/grid_backstage/src/main/java/com/panzhihua/grid_backstage/api/EventGridMemberRelationApi.java
index 8395ee2..17148bb 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/grid_backstage/src/main/java/com/panzhihua/grid_backstage/api/EventGridMemberRelationApi.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/grid_backstage/src/main/java/com/panzhihua/grid_backstage/api/EventGridMemberRelationApi.java
@@ -6,6 +6,7 @@
 import com.panzhihua.common.model.vos.LoginUserInfoVO;
 import com.panzhihua.common.model.vos.R;
 import com.panzhihua.common.model.vos.grid.*;
+import com.panzhihua.common.service.api.ApiServiceFeign;
 import com.panzhihua.common.service.community.CommunityService;
 import com.panzhihua.common.utlis.ClazzUtils;
 import com.panzhihua.common.utlis.StringUtils;
@@ -36,6 +37,8 @@
     private GridService gridService;
     @Resource
     private CommunityService communityService;
+    @Resource
+    private ApiServiceFeign apiService;
 
     @ApiOperation(value = "网格分页查询", response = EventGridAdminVO.class)
     @PostMapping("/event/list")
@@ -100,9 +103,15 @@
     }
 
     @ApiOperation(value = "查询所有关联市平台列表",response = EventLcGridAdminVO.class)
-    @GetMapping("/lc/grid/list")
-    public R getLcGridLists(){
-        return gridService.getLcGridLists();
+    @GetMapping("/lc/grid/list/noToken")
+    public R getLcGridLists(@RequestParam("areaId") String areaId){
+        return apiService.getGridDataListByAreaId(areaId);
+    }
+
+    @ApiOperation(value = "查询西区所有关联市平台树形结构列表",response = EventLcGridAdminVO.class)
+    @GetMapping("/lc/grid/tree/list/noToken")
+    public R getLcGridTreeLists(){
+        return apiService.getGridTreeByAreaId("jhRxqEQp");
     }
 
 }
\ No newline at end of file
diff --git a/springcloud_k8s_panzhihuazhihuishequ/grid_backstage/src/main/java/com/panzhihua/grid_backstage/api/StatisticsApi.java b/springcloud_k8s_panzhihuazhihuishequ/grid_backstage/src/main/java/com/panzhihua/grid_backstage/api/StatisticsApi.java
index 5f7fa90..c2ff6f5 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/grid_backstage/src/main/java/com/panzhihua/grid_backstage/api/StatisticsApi.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/grid_backstage/src/main/java/com/panzhihua/grid_backstage/api/StatisticsApi.java
@@ -1,6 +1,12 @@
 package com.panzhihua.grid_backstage.api;
 
+import com.alibaba.excel.EasyExcel;
+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.panzhihua.common.controller.BaseController;
+import com.panzhihua.common.excel.CustomSheetWriteHandler;
 import com.panzhihua.common.model.dtos.grid.MemberStatisticsAdminDTO;
 import com.panzhihua.common.model.dtos.grid.PageEventManageDTO;
 import com.panzhihua.common.model.vos.LoginUserInfoVO;
@@ -8,15 +14,25 @@
 import com.panzhihua.common.model.vos.grid.EventStatisticsAllAdminVO;
 import com.panzhihua.common.model.vos.grid.EventStatisticsMemberAdminVO;
 import com.panzhihua.common.model.vos.grid.EventVO;
+import com.panzhihua.common.model.vos.grid.admin.excel.ComMngVillageExportExcelVO;
+import com.panzhihua.common.model.vos.grid.admin.excel.GridMemberWorkExportExcelVO;
 import com.panzhihua.common.service.grid.GridService;
 import com.panzhihua.common.utlis.ClazzUtils;
+import com.panzhihua.common.utlis.SFTPUtil;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.List;
 
 /**
  * 统计模块
@@ -26,6 +42,21 @@
 @RequestMapping("/statistics/")
 @Api(tags = {"统计模块 @lyq"})
 public class StatisticsApi extends BaseController {
+
+    // FTP 登录用户名
+    @Value("${ftp.username}")
+    private String userName;
+    // FTP 登录密码
+    @Value("${ftp.password}")
+    private String password;
+    // FTP 服务器地址IP地址
+    @Value("${ftp.host}")
+    private String host;
+    // FTP 端口
+    @Value("${ftp.port}")
+    private int port;
+    @Value("${excel.userurl}")
+    private String excelUrl;
 
     @Resource
     private GridService gridService;
@@ -53,4 +84,68 @@
         return gridService.gridMemberStatistics(statisticsAdminDTO);
     }
 
+    @ApiOperation(value = "网格员统计导出")
+    @PostMapping("/gridMemberStatistics/export")
+    public R gridMemberStatisticsExport(@RequestBody MemberStatisticsAdminDTO statisticsAdminDTO){
+//        LoginUserInfoVO loginUserInfoVO = this.getLoginUserInfo();
+//        if(loginUserInfoVO == null){
+//            return R.fail("请先登录");
+//        }
+//        gridService.gridMemberStatistics(statisticsAdminDTO);
+
+        //生成动态模板excel通过ftp工具上传到主节点,然后返回模板下载地址
+        String ftpUrl = "/mnt/data/web/excel/";
+        String name = "网格员工作情况汇总数据.xlsx";
+        try {
+            SFTPUtil sftp = new SFTPUtil(userName, password, host, port);
+            sftp.login();
+            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 {
+                    List<EventStatisticsMemberAdminVO> populList = JSON.parseArray(JSON.toJSONString(gridService.gridMemberStatisticsAll(statisticsAdminDTO).getData()), EventStatisticsMemberAdminVO.class);
+                    List<GridMemberWorkExportExcelVO> workExportExcelList = new ArrayList<>();
+                    if(!populList.isEmpty()){
+                        populList.forEach(popul -> {
+                            GridMemberWorkExportExcelVO workExportExcelVO = new GridMemberWorkExportExcelVO();
+                            BeanUtils.copyProperties(popul,workExportExcelVO);
+                            workExportExcelList.add(workExportExcelVO);
+                        });
+                    }
+
+                    excelWriter = EasyExcel.write(fileName, GridMemberWorkExportExcelVO.class).registerWriteHandler(new LongestMatchColumnWidthStyleStrategy())
+                            .registerWriteHandler(new CustomSheetWriteHandler()).build();
+                    WriteSheet writeSheet = EasyExcel.writerSheet("网格员工作情况汇总数据").build();
+                    excelWriter.write(workExportExcelList, writeSheet);
+                    excelWriter.finish();
+                    File file = new File(fileName);
+                    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();
+                    }
+                    if (excelWriter != null) {
+                        excelWriter.finish();
+                    }
+                }
+            }
+            return R.ok(excelUrl + name);
+        } catch (Exception e) {
+            e.printStackTrace();
+            log.error("文件传输失败【{}】", e.getMessage());
+            return R.fail();
+        }
+    }
+
 }
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_api/src/main/java/com/panzhihua/serviceapi/api/LcEventApi.java b/springcloud_k8s_panzhihuazhihuishequ/service_api/src/main/java/com/panzhihua/serviceapi/api/LcEventApi.java
index 89e3dd9..bfe7875 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/service_api/src/main/java/com/panzhihua/serviceapi/api/LcEventApi.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_api/src/main/java/com/panzhihua/serviceapi/api/LcEventApi.java
@@ -104,9 +104,9 @@
      */
     @ApiOperation(value = "获取所有或者根据姓名和工号查询,分页")
     @GetMapping("lc/event/getGridMemberListByAreaIdOrName")
-    public R getGridMemberListByAreaIdOrName(String areaId,String param) {
+    public R getGridMemberListByAreaIdOrName(String areaId,String param,Long pageNum,Long pageSize) {
         try {
-            return R.ok(lcApiService.getGridMemberListByAreaIdOrName(areaId,param));
+            return R.ok(lcApiService.getGridMemberListByAreaIdOrName(areaId,param,pageNum,pageSize));
         } catch (Exception e) {
             log.error("获取指定区域网格列表出现错误:{}", e.getMessage());
         }
@@ -114,7 +114,26 @@
     }
 
     /**
-     * description 获取指定区域网格列表
+     * description 获取指定区域网格列表,树形结构。不包括具体的网格数据。
+     *
+     * @param areaId 区域ID
+     * @return String 事件信息
+     * @author manailin
+     * @date 2021/6/10 17:00
+     */
+    @ApiOperation(value = "获取指定区域网格树形列表,不包括具体的网格数据")
+    @GetMapping("lc/grid/tree")
+    public R getGridTreeByAreaId(String areaId) {
+        try {
+            return R.ok(lcApiService.getGridTreeByAreaId(areaId));
+        } catch (Exception e) {
+            log.error("获取指定区域网格列表出现错误:{}", e.getMessage());
+        }
+        return R.ok(Collections.emptyList());
+    }
+
+    /**
+     * description 获取指定区域网格数据列表
      *
      * @param areaId 区域ID
      * @return String 事件信息
@@ -123,16 +142,14 @@
      */
     @ApiOperation(value = "获取指定区域网格列表")
     @GetMapping("lc/grid/list")
-    public R getGridListByAreaId(String areaId) {
+    public R getGridDataListByAreaId(String areaId) {
         try {
-            return R.ok(lcApiService.getGridListByAreaId(areaId));
+            return R.ok(lcApiService.getGridDataListByAreaId(areaId));
         } catch (Exception e) {
             log.error("获取指定区域网格列表出现错误:{}", e.getMessage());
         }
         return R.ok(Collections.emptyList());
     }
-
-
     /**
      * description 流动人口 走访详情
      *
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_api/src/main/java/com/panzhihua/serviceapi/biz/LcApiService.java b/springcloud_k8s_panzhihuazhihuishequ/service_api/src/main/java/com/panzhihua/serviceapi/biz/LcApiService.java
index f4b8455..6556f92 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/service_api/src/main/java/com/panzhihua/serviceapi/biz/LcApiService.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_api/src/main/java/com/panzhihua/serviceapi/biz/LcApiService.java
@@ -77,8 +77,17 @@
      * @author manailin
      * @date 2021/6/10 17:00
      */
-    List<LcGridData> getGridListByAreaId(String areaId);
+    List<LcGridData> getGridTreeByAreaId(String areaId);
 
+    /**
+     * description 获取指定区域网格列表,直接返回网格列表
+     *
+     * @param areaId 区域ID
+     * @return String 事件信息
+     * @author manailin
+     * @date 2021/6/10 17:00
+     */
+    List<LcGridData> getGridDataListByAreaId(String areaId);
     /**
      * description 获取所有或者根据姓名和工号查询,分页
      *
@@ -88,7 +97,7 @@
      * @author manailin
      * @date 2021/6/10 17:00
      */
-    List<GridMemberPageListDTO> getGridMemberListByAreaIdOrName(String areaId,String param);
+    List<GridMemberPageListDTO> getGridMemberListByAreaIdOrName(String areaId,String param,Long pageNum,Long pageSize);
 
     /**
      * description 提交事件登记关联的文件或者图片信息
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_api/src/main/java/com/panzhihua/serviceapi/biz/impl/LcApiServiceImpl.java b/springcloud_k8s_panzhihuazhihuishequ/service_api/src/main/java/com/panzhihua/serviceapi/biz/impl/LcApiServiceImpl.java
index 3fa78ad..605f0d6 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/service_api/src/main/java/com/panzhihua/serviceapi/biz/impl/LcApiServiceImpl.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_api/src/main/java/com/panzhihua/serviceapi/biz/impl/LcApiServiceImpl.java
@@ -24,6 +24,7 @@
 import com.panzhihua.common.service.grid.GridService;
 import com.panzhihua.common.utlis.CopyUtil;
 import com.panzhihua.common.utlis.DateUtils;
+import com.panzhihua.common.utlis.StringUtils;
 import com.panzhihua.serviceapi.biz.LcApiService;
 import com.panzhihua.serviceapi.model.dto.*;
 import lombok.extern.slf4j.Slf4j;
@@ -150,8 +151,18 @@
     }
 
     @Override
-    public List<LcGridData> getGridListByAreaId(String areaId) {
+    public List<LcGridData> getGridTreeByAreaId(String areaId) {
         HttpRequest request = HttpUtil.createPost(LcApiConstants.GRID_GET_EVENT_INFO_AREA_ID_URL);
+        request.auth(getAuthToken());
+        request.form("areaId", areaId);
+        request.form("level", 4);
+        HttpResponse result = request.execute();
+        return JSONArray.parseArray(result.body(), LcGridData.class);
+    }
+
+    @Override
+    public List<LcGridData> getGridDataListByAreaId(String areaId) {
+        HttpRequest request = HttpUtil.createPost(LcApiConstants.GRID_GET_GRID_DATA_AREA_ID_URL);
         request.auth(getAuthToken());
         request.form("areaId", areaId);
         HttpResponse result = request.execute();
@@ -159,11 +170,13 @@
     }
 
     @Override
-    public List<GridMemberPageListDTO> getGridMemberListByAreaIdOrName(String areaId,String param) {
+    public List<GridMemberPageListDTO> getGridMemberListByAreaIdOrName(String areaId,String param,Long pageNum,Long pageSize) {
         HttpRequest request = HttpUtil.createGet(LcApiConstants.GRID_GET_GETALL_SEARCH_PAGE_URL);
         request.auth(getAuthToken());
         request.form("areaId", areaId);
-        if(param !=null){
+        request.form("limit", pageSize);
+        request.form("page", pageNum);
+        if(StringUtils.isNotEmpty(param)){
             request.form("param", param);
         }
         HttpResponse result = request.execute();
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_api/src/test/java/com/panzhihua/serviceapi/biz/impl/LcApiServiceImplTest.java b/springcloud_k8s_panzhihuazhihuishequ/service_api/src/test/java/com/panzhihua/serviceapi/biz/impl/LcApiServiceImplTest.java
index a2c7176..33c5abe 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/service_api/src/test/java/com/panzhihua/serviceapi/biz/impl/LcApiServiceImplTest.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_api/src/test/java/com/panzhihua/serviceapi/biz/impl/LcApiServiceImplTest.java
@@ -184,7 +184,17 @@
     @Test
     void getGridListByAreaId() {
         //jhRxqEQp 代表西区
-        List<LcGridData> list = lcApiService.getGridListByAreaId("jhRxqEQp");
+        List<LcGridData> list = lcApiService.getGridTreeByAreaId("jhRxqEQp");
+        String pretty = JSONArray.toJSONString(list, SerializerFeature.PrettyFormat, SerializerFeature.WriteMapNullValue,
+                SerializerFeature.WriteDateUseDateFormat);
+        log.info(pretty);
+    }
+
+
+    @Test
+    void getGridDataListByAreaId() {
+        //jhRxqEQp 代表西区
+        List<LcGridData> list = lcApiService.getGridDataListByAreaId("2Fxq97CC");
         String pretty = JSONArray.toJSONString(list, SerializerFeature.PrettyFormat, SerializerFeature.WriteMapNullValue,
                 SerializerFeature.WriteDateUseDateFormat);
         log.info(pretty);
@@ -201,7 +211,7 @@
 
     @Test
     void getGridMemberListByAreaIdOrName() {
-        List<GridMemberPageListDTO> data = lcApiService.getGridMemberListByAreaIdOrName("jhRxqEQp", "");
+        List<GridMemberPageListDTO> data = lcApiService.getGridMemberListByAreaIdOrName("jhRxqEQp", "",1L,20L);
         // log.info(data);
     }
 
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/api/ComSwPatrolRecordApi.java b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/api/ComSwPatrolRecordApi.java
new file mode 100644
index 0000000..5b366ee
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/api/ComSwPatrolRecordApi.java
@@ -0,0 +1,168 @@
+package com.panzhihua.service_community.api;
+
+import com.panzhihua.common.model.dtos.community.ComSwDangerReportHandleDTO;
+import com.panzhihua.common.model.dtos.community.ComSwDangerReportRectifyDTO;
+import com.panzhihua.common.model.dtos.community.ComSwPatrolRecordAddDTO;
+import com.panzhihua.common.model.dtos.community.ComSwPatrolRecordPageDTO;
+import com.panzhihua.common.model.vos.R;
+import com.panzhihua.service_community.dao.ComSwSafetyWorkRecordDAO;
+import com.panzhihua.service_community.service.ComSwDangerReportService;
+import com.panzhihua.service_community.service.ComSwPatrolRecordService;
+import com.panzhihua.service_community.service.ComSwSafetyWorkRecordService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+/**
+ * @auther txb
+ * @create 2021-07-23 14:38:38
+ * @describe 社区》安全工作》巡查记录前端控制器
+ */
+@Slf4j
+@RestController
+@RequestMapping("/patrolRecord")
+public class ComSwPatrolRecordApi {
+
+    @Resource
+    private ComSwPatrolRecordService comSwPatrolRecordService;
+
+    @Resource
+    private ComSwSafetyWorkRecordService comSwSafetyWorkRecordService;
+
+    @Resource
+    private ComSwDangerReportService comSwDangerReportService;
+
+    /**
+     * 分页查询巡查记录
+     * @param comSwPatrolRecordPageDTO 查询参数
+     * @return 巡查记录分页集合
+     */
+    @PostMapping("/page")
+    public R pagePatrolRecord(@RequestBody ComSwPatrolRecordPageDTO comSwPatrolRecordPageDTO){
+        return comSwPatrolRecordService.pagePatrolRecord(comSwPatrolRecordPageDTO);
+    }
+
+    /**
+     * 新增巡查记录
+     * @param comSwPatrolRecordAddDTO 新增参数
+     * @return 新增结果
+     */
+    @PostMapping("/addPatrolRecord")
+    @Transactional(rollbackFor = Exception.class)
+    public R addPatrolRecord(@RequestBody ComSwPatrolRecordAddDTO comSwPatrolRecordAddDTO){
+        return comSwPatrolRecordService.addPatrolRecord(comSwPatrolRecordAddDTO);
+    }
+
+    /**
+     * 根据巡查记录id查询详情
+     *
+     * @param patrolRecordId 巡查记录id
+     * @return 巡查记录详情查询结果
+     */
+    @PostMapping("/detail")
+    public R detailPatrolRecord(@RequestParam(value = "patrolRecordId") Long patrolRecordId) {
+        return comSwPatrolRecordService.detailPatrolRecord(patrolRecordId);
+    }
+
+    /**
+     * 分页查询安全工作记录
+     * @param comSwPatrolRecordPageDTO 查询参数
+     * @return 安全工作记录分页集合
+     */
+    @PostMapping("/safetyWorkRecord/page")
+    public R pageSafetyWorkRecord(@RequestBody ComSwPatrolRecordPageDTO comSwPatrolRecordPageDTO){
+        return comSwSafetyWorkRecordService.pageSafetyWorkRecord(comSwPatrolRecordPageDTO);
+    }
+
+    /**
+     * 根据安全工作记录id查询详情
+     *
+     * @param safetyWorkRecordId 安全工作记录
+     * @return 安全工作记录详情查询结果
+     */
+    @PostMapping("/safetyWorkRecord/detail")
+    public R detailSafetyWorkRecord(@RequestParam(value = "safetyWorkRecordId") Long safetyWorkRecordId) {
+        return comSwSafetyWorkRecordService.detailSafetyWorkRecord(safetyWorkRecordId);
+    }
+
+    /**
+     * 根据巡查记录id查询安全工作记录详情
+     *
+     * @param patrolRecordId 巡查记录id
+     * @return 安全工作记录详情查询结果
+     */
+    @PostMapping("/safetyWorkRecord/detailByPrId")
+    public R detailSafetyWorkRecordByPrId(@RequestParam(value = "patrolRecordId") Long patrolRecordId) {
+        return comSwSafetyWorkRecordService.detailSafetyWorkRecordByPrId(patrolRecordId);
+    }
+
+    /**
+     * 分页查询隐患报告
+     * @param comSwPatrolRecordPageDTO 查询参数
+     * @return 隐患报告分页集合
+     */
+    @PostMapping("/dangerReport/page")
+    public R pageDangerReport(@RequestBody ComSwPatrolRecordPageDTO comSwPatrolRecordPageDTO){
+        return comSwDangerReportService.pageDangerReport(comSwPatrolRecordPageDTO);
+    }
+
+    /**
+     * 根据隐患报告id查询详情
+     *
+     * @param dangerReportId 隐患报告id
+     * @return 隐患报告详情查询结果
+     */
+    @PostMapping("/dangerReport/detail")
+    public R detailDangerReport(@RequestParam(value = "dangerReportId") Long dangerReportId) {
+        return comSwDangerReportService.detailDangerReport(dangerReportId);
+    }
+
+    /**
+     * 根据巡查记录id查询隐患报告详情
+     *
+     * @param patrolRecordId 巡查记录id
+     * @return 隐患报告详情查询结果
+     */
+    @PostMapping("/dangerReport/detailByPrId")
+    public R detailDangerReportByPrId(@RequestParam(value = "patrolRecordId") Long patrolRecordId) {
+        return comSwDangerReportService.detailDangerReportByPrId(patrolRecordId);
+    }
+
+    /**
+     * 处理隐患报告
+     *
+     * @param comSwDangerReportHandleDTO 隐患报告处理参数
+     * @return 处理结果
+     */
+    @PostMapping("/dangerReport/handle")
+    public R handleDangerReport(@RequestBody ComSwDangerReportHandleDTO comSwDangerReportHandleDTO){
+        return comSwDangerReportService.handleDangerReport(comSwDangerReportHandleDTO);
+    }
+
+    /**
+     * 整改隐患报告
+     *
+     * @param comSwDangerReportRectifyDTO 隐患报告整改参数
+     * @return 整改结果
+     */
+    @PostMapping("/dangerReport/rectify")
+    public R rectifyDangerReport(@RequestBody ComSwDangerReportRectifyDTO comSwDangerReportRectifyDTO){
+        return comSwDangerReportService.rectifyDangerReport(comSwDangerReportRectifyDTO);
+    }
+
+    /**
+     * 隐患报告台账导出
+     *
+     * @param dangerReportIds
+     * @return
+     */
+    @PostMapping("/dangerReport/export")
+    public R exportDangerReport(@RequestBody List<Long> dangerReportIds){
+        return comSwDangerReportService.exportDangerReport(dangerReportIds);
+    }
+
+}
+
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/api/CommonDataApi.java b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/api/CommonDataApi.java
index 2d43789..5816170 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/api/CommonDataApi.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/api/CommonDataApi.java
@@ -119,7 +119,7 @@
      * @return
      */
     @PostMapping("/car/export")
-    public R exportRealCar(ExportComMngCarExcelDTO exportComMngCarExcelDTO){
+    public R exportRealCar(@RequestBody ExportComMngCarExcelDTO exportComMngCarExcelDTO){
         return comMngCarService.exportRealCar(exportComMngCarExcelDTO);
     }
 
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/api/CommunityApi.java b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/api/CommunityApi.java
index f1c8329..b9b2ab3 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/api/CommunityApi.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/api/CommunityApi.java
@@ -258,7 +258,7 @@
      * @return 详情
      */
     @PostMapping("detailactivity")
-    public R detailActivity(@RequestParam("id") Long id, @RequestParam("userId") Long userId) {
+    public R detailActivity(@RequestParam("id") Long id, @RequestParam(value = "userId",required = false) Long userId) {
         ComActActivityVO comActActivityVO = comActActivityService.inforActivity(id, userId);
         if (ObjectUtils.isEmpty(comActActivityVO)) {
             return R.fail("活动不存在");
@@ -388,9 +388,9 @@
             }
         }
 
-        if(StringUtils.isEmpty(comActDynVO.getCover())){
-            comActDynVO.setCover(comActDynDO.getCover());
-        }
+//        if(StringUtils.isEmpty(comActDynVO.getCover())){
+//            comActDynVO.setCover(comActDynDO.getCover());
+//        }
         BeanUtils.copyProperties(comActDynVO, comActDynDO);
 
         boolean update = comActDynService.updateById(comActDynDO);
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComActActivityDAO.java b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComActActivityDAO.java
index fb01e09..92b3132 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComActActivityDAO.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComActActivityDAO.java
@@ -261,13 +261,17 @@
             "  AND a.community_id =#{communityId}")
     CommunityActivitiesVO selectCommunityActivitiesVO(@Param("communityId") Long communityId, @Param("date")Date date);
 
-    @Select("SELECT COUNT(id) AS totalNum," +
-            "(SELECT COUNT(id) FROM com_act_activity WHERE community_id = #{communityId} AND (status = 3 OR status = 4 OR status = 5) AND create_at LIKE CONCAT(#{nowDate},'%'))AS currentNum," +
-            "(SELECT COUNT(id) FROM com_act_activity WHERE community_id = #{communityId} AND (status = 3 OR status = 4 OR status = 5) AND volunteer_max = 0)AS commonNum," +
-            "(SELECT COUNT(aas.id) FROM com_act_activity a INNER JOIN com_act_act_sign aas ON a.id = aas.activity_id WHERE a.volunteer_max = 0 AND (a.status = 3 OR a.status = 4 OR a.status = 5) AND  a.community_id=#{communityId})AS commonPeopleNum," +
-            "(SELECT COUNT(id) FROM com_act_activity WHERE community_id = #{communityId} AND (status = 3 OR status = 4 OR status = 5) AND participant_max = 0)AS volunteerNum," +
-            "(SELECT COUNT(aas.id) FROM com_act_activity a INNER JOIN com_act_act_sign aas ON a.id = aas.activity_id WHERE a.community_id=#{communityId} AND a.participant_max = 0 AND (a.status = 3 OR a.status = 4 OR a.status = 5))AS volunteerPeopleNum" +
-            " FROM com_act_activity where community_id=#{communityId} AND (status = 3 OR status = 4 OR status = 5)")
+    @Select("SELECT " +
+            " count( caa.id ) as totalNum, " +
+            " (select count(id) from com_act_activity where `status` IN (1,2,3,4,5) and volunteer_min = 0 and community_id = #{communityId}) as commonNum, " +
+            " (select count(id) from com_act_activity where `status` IN (1,2,3,4,5) and volunteer_min > 0 and community_id = #{communityId}) as volunteerNum, " +
+            " (select count(caas.user_id) from com_act_act_sign as caas left join com_act_activity as caa on caa.id = caas.activity_id where caa.`status` IN (1,2,3,4,5) and is_volunteer = 0 and caa.community_id = #{communityId}) as commonPeopleNum, " +
+            " (select count(caas.user_id) from com_act_act_sign as caas left join com_act_activity as caa on caa.id = caas.activity_id where caa.`status` IN (1,2,3,4,5) and is_volunteer = 1 and caa.community_id = #{communityId}) as volunteerPeopleNum, " +
+            " (select count(id) from com_act_activity where `status` IN (1,2,3,4,5) and community_id = #{communityId} and create_at between date_sub(curdate() - day(curdate()) +1,interval 1 month) and now()) as currentNum " +
+            "FROM " +
+            " com_act_activity AS caa  " +
+            "WHERE " +
+            " caa.`status` IN (1,2,3,4,5) and community_id = #{communityId}")
     Map<String, Long> countByCommunityId(@Param("communityId")Long communityId,@Param("nowDate")String nowDate);
 
     @Select("SELECT id,activity_name as content,IF(volunteer_max = 0,'居民活动','志愿者活动') AS typeName  FROM com_act_activity " +
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComActDiscussDAO.java b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComActDiscussDAO.java
index 403aa58..8d7d137 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComActDiscussDAO.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComActDiscussDAO.java
@@ -196,30 +196,28 @@
     ComActDiscussVO selectHaveSignAndHaveVote(@Param("id") Long id, @Param("loginUserId")Long loginUserId);
 
     @Select(" SELECT COUNT(id) AS totalNum," +
-            "(SELECT COUNT(id)  FROM com_act_discuss WHERE community_id = 2 AND create_at LIKE CONCAT('','%'))AS currentNum," +
-            "(SELECT COUNT(id)  FROM com_act_discuss WHERE community_id = 2 AND TYPE = 1)AS imgNum," +
+            "(SELECT COUNT(id)  FROM com_act_discuss WHERE community_id = #{communityId} AND create_at between date_sub(curdate() - day(curdate()) +1,interval 1 month) and now())AS currentNum," +
+            "(SELECT COUNT(id)  FROM com_act_discuss WHERE community_id = #{communityId} AND TYPE = 1)AS imgNum," +
             "(" +
-            "SELECT COUNT(DISTINCT(user_id)) FROM (" +
-            " SELECT c.user_id FROM  com_act_discuss d INNER JOIN com_act_discuss_comment c ON d.id = c.discuss_id WHERE d.community_id = 2 AND d.type = 1 " +
-            " UNION ALL " +
-            " SELECT u.user_id FROM  com_act_discuss d INNER JOIN com_act_discuss_comment c ON d.id = c.discuss_id INNER JOIN com_act_discuss_comment_user u ON c.id = u.disscuss_comment_id  WHERE d.community_id = 2 AND d.type = 1 " +
-            "UNION ALL "  +
-            " SELECT u.user_id FROM  com_act_discuss d INNER JOIN com_act_discuss_option o ON d.id = o.discuss_id INNER JOIN com_act_discuss_option_user u ON o.id = u.discuss_option_id  WHERE d.community_id = 2 AND d.type = 1 " +
-            " UNION ALL " +
-            " SELECT u.user_id FROM  com_act_discuss d INNER JOIN com_act_discuss_user u ON d.id = u.discuss_id WHERE d.community_id = 2 AND d.type = 1 " +
-            ")d " +
-            ")AS commonPeopleNum," +
+            "SELECT " +
+            " count(distinct cadc.user_id) " +
+            "FROM " +
+            " com_act_discuss_comment AS cadc " +
+            " LEFT JOIN com_act_discuss AS cad ON cad.id = cadc.discuss_id " +
+            " where cad.type = 1 and cad.community_id = #{communityId} " +
+            ")AS imgPeopleNum," +
             "(" +
-            "SELECT COUNT(DISTINCT(user_id)) FROM (" +
-            " SELECT c.user_id FROM  com_act_discuss d INNER JOIN com_act_discuss_comment c ON d.id = c.discuss_id WHERE d.community_id = 2 AND d.type = 2 " +
-            " UNION ALL" +
-            " SELECT u.user_id FROM  com_act_discuss d INNER JOIN com_act_discuss_comment c ON d.id = c.discuss_id INNER JOIN com_act_discuss_comment_user u ON c.id = u.disscuss_comment_id  WHERE d.community_id = 2 AND d.type = 2 " +
-            "UNION ALL " +
-            " SELECT u.user_id FROM  com_act_discuss d INNER JOIN com_act_discuss_option o ON d.id = o.discuss_id INNER JOIN com_act_discuss_option_user u ON o.id = u.discuss_option_id  WHERE d.community_id = 2 AND d.type = 2 " +
-            " UNION ALL " +
-            " SELECT u.user_id FROM  com_act_discuss d INNER JOIN com_act_discuss_user u ON d.id = u.discuss_id WHERE d.community_id = 2 AND d.type = 2 " +
-            ")d " +
-            ")AS volunteerPeopleNum " +
+            "select count(user_id) from ( " +
+            "SELECT " +
+            " distinct cadc.user_id " +
+            "FROM " +
+            " com_act_discuss_comment AS cadc " +
+            " LEFT JOIN com_act_discuss AS cad ON cad.id = cadc.discuss_id " +
+            " where cad.type = 2 and cad.community_id = #{communityId} " +
+            " union all " +
+            " SELECT DISTINCT cadou.user_id  FROM com_act_discuss_option_user AS cadou LEFT JOIN com_act_discuss_option AS cado ON cado.id = cadou.discuss_option_id left join com_act_discuss as cad on cad.id = cado.discuss_id where cad.community_id = #{communityId}" +
+            ") t" +
+            ")AS votePeopleNum " +
             " FROM com_act_discuss")
     Map<String, Long> countByCommunityId(@Param("communityId")Long communityId, @Param("date")String date);
 
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComActEasyPhotoActivityMapper.java b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComActEasyPhotoActivityMapper.java
index 3ee00ea..7916c6d 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComActEasyPhotoActivityMapper.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComActEasyPhotoActivityMapper.java
@@ -35,7 +35,7 @@
      * @param endTime   活动结束时间
      * @return  返回冲突的活动数量
      */
-    Integer getEasyPhotoActivityTimeConflict(@Param("startTime") String startTime,@Param("endTime") String endTime,@Param("activityId") Long activityId);
+    Integer getEasyPhotoActivityTimeConflict(@Param("startTime") String startTime,@Param("endTime") String endTime,@Param("activityId") Long activityId,@Param("communityId") Long communityId);
 
     /**
      * 分页查询随手拍活动下居民参与记录
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComActMessageDAO.java b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComActMessageDAO.java
index b42ce60..557ea3d 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComActMessageDAO.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComActMessageDAO.java
@@ -56,7 +56,7 @@
             " com_act_message t LEFT JOIN sys_user u ON t.user_id = u.user_id " +
 			" where t.community_id=#{comActMessageVO.communityId}\n" +
             "<if test='comActMessageVO.userAccount != null and comActMessageVO.userAccount.trim() != &quot;&quot;'>" +
-            " and t.user_account=#{comActMessageVO.userAccount} \n" +
+            " and u.phone=#{comActMessageVO.userAccount} \n" +
             " </if> " +
             "<if test='comActMessageVO.userName != null and comActMessageVO.userName.trim() != &quot;&quot;'>" +
             " and t.user_name=#{comActMessageVO.userName} \n" +
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComMngCarDAO.java b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComMngCarDAO.java
index d3b1499..153e696 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComMngCarDAO.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComMngCarDAO.java
@@ -86,11 +86,11 @@
             "<if test='exportComMngCarExcelDTO.areaName != null and exportComMngCarExcelDTO.areaName.trim() != &quot;&quot;'>" +
             " and t.area_name LIKE concat( #{exportComMngCarExcelDTO.areaName}, '%' )  " +
             " </if> " +
-            "<if test='exportComMngCarExcelDTO.communityId != null and exportComMngCarExcelDTO.communityId != 0'>" +
+            "<if test='exportComMngCarExcelDTO.communityId != null and exportComMngCarExcelDTO.communityId != &quot;&quot;'>" +
             " and t.community_id = #{exportComMngCarExcelDTO.communityId} " +
             " </if> " +
-            "<if test='exportComMngCarExcelDTO.villageId != null and exportComMngCarExcelDTO.villageId != 0'>" +
-            " and t.village_id = #{exportComMngCarExcelDTO.villageId} " +
+            "<if test='exportComMngCarExcelDTO.villageId != null and exportComMngCarExcelDTO.villageId != &quot;&quot;'>" +
+            " and t.area_id = #{exportComMngCarExcelDTO.villageId} " +
             " </if> " +
             "<if test='exportComMngCarExcelDTO.userName != null and exportComMngCarExcelDTO.userName.trim() != &quot;&quot;'>" +
             " and t.user_name LIKE concat( #{exportComMngCarExcelDTO.userName}, '%' )  " +
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComMngPopulationDAO.java b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComMngPopulationDAO.java
index cd6c072..2be86bc 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComMngPopulationDAO.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComMngPopulationDAO.java
@@ -225,9 +225,6 @@
             "<if test='comMngPopulationVO.remark != null and comMngPopulationVO.remark != &quot;&quot;'>" +
             "AND cmp.remark = #{comMngPopulationVO.remark} " +
             " </if> " +
-            "<if test='comMngPopulationVO.address != null and comMngPopulationVO.address != &quot;&quot;'>" +
-            "AND cmp.address like concat('%', #{comMngPopulationVO.address}, '%')  " +
-            " </if> " +
             " </where>" +
             " order by cmp.create_at desc" +
             "</script>")
@@ -1047,6 +1044,7 @@
             " cmp.card_no, " +
             " cmp.label, " +
             " cmp.address, " +
+            " cmp.culture_level, " +
             " cmp.nation, " +
             " cmp.political_outlook, " +
             " cmp.sex, " +
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComMngStructOtherBuildDAO.java b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComMngStructOtherBuildDAO.java
index e419dd0..7c31dc7 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComMngStructOtherBuildDAO.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComMngStructOtherBuildDAO.java
@@ -45,7 +45,10 @@
             "join com_mng_struct_build_type t on b.type_id=t.id\n" +
             " <where>" +
             "<if test='comMngStructOtherBuildVO.name != null and comMngStructOtherBuildVO.name.trim() != &quot;&quot;'>" +
-            "b.name like concat(#{comMngStructOtherBuildVO.name},'%') "+
+            " and b.name like concat(#{comMngStructOtherBuildVO.name},'%') "+
+            " </if> " +
+            "<if test='comMngStructOtherBuildVO.communityId != null'>" +
+            " and b.community_id = #{comMngStructOtherBuildVO.communityId} "+
             " </if> " +
             " </where>" +
             " order by b.create_at desc" +
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComSwDangerReportDAO.java b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComSwDangerReportDAO.java
new file mode 100644
index 0000000..445f6dd
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComSwDangerReportDAO.java
@@ -0,0 +1,47 @@
+package com.panzhihua.service_community.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.panzhihua.common.model.dtos.community.ComSwPatrolRecordPageDTO;
+import com.panzhihua.common.model.vos.R;
+import com.panzhihua.common.model.vos.community.ComSwDangerReportExcelVO;
+import com.panzhihua.common.model.vos.community.ComSwDangerReportVO;
+import com.panzhihua.common.model.vos.community.ComSwSafetyWorkRecordVO;
+import com.panzhihua.service_community.model.dos.ComSwDangerReportDO;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * @auther txb
+ * @create 2021-07-27 14:31:04
+ * @describe mapper类
+ */
+@Mapper
+public interface ComSwDangerReportDAO extends BaseMapper<ComSwDangerReportDO> {
+
+    /**
+     * 分页查询隐患报告
+     * @param comSwPatrolRecordPageDTO 查询参数
+     * @return 隐患报告分页集合
+     */
+    IPage<ComSwDangerReportVO> pageDangerReport(Page page, @Param("comSwPatrolRecordDTO") ComSwPatrolRecordPageDTO comSwPatrolRecordPageDTO);
+
+    /**
+     * 根据隐患报告id查询详情
+     *
+     * @param dangerReportId 隐患报告id
+     * @return 隐患报告详情查询结果
+     */
+    ComSwDangerReportVO detailDangerReport(@Param("dangerReportId") Long dangerReportId);
+
+    /**
+     * 根据隐患报告id批量查询详情
+     *
+     * @param dangerReportIds 隐患报告ids
+     * @return
+     */
+    List<ComSwDangerReportExcelVO> exportDangerReport(@Param("dangerReportIds") List<Long> dangerReportIds);
+}
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComSwPatrolRecordDAO.java b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComSwPatrolRecordDAO.java
new file mode 100644
index 0000000..758c87f
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComSwPatrolRecordDAO.java
@@ -0,0 +1,27 @@
+package com.panzhihua.service_community.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.panzhihua.common.model.dtos.community.ComSwPatrolRecordPageDTO;
+import com.panzhihua.common.model.vos.community.ComSwPatrolRecordVO;
+import com.panzhihua.service_community.model.dos.ComSwPatrolRecordDO;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+
+/**
+ * @auther txb
+ * @create 2021-07-23 14:38:38
+ * @describe 社区》安全工作》巡查记录mapper类
+ */
+@Mapper
+public interface ComSwPatrolRecordDAO extends BaseMapper<ComSwPatrolRecordDO> {
+
+    /**
+     * 分页查询巡查记录
+     * @param comSwPatrolRecordPageDTO 查询参数
+     * @return 分页集合
+     */
+    IPage<ComSwPatrolRecordVO> pagePatrolRecord(Page page, @Param("comSwPatrolRecordDTO") ComSwPatrolRecordPageDTO comSwPatrolRecordPageDTO);
+}
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComSwPatrolRecordReportDAO.java b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComSwPatrolRecordReportDAO.java
new file mode 100644
index 0000000..b05649e
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComSwPatrolRecordReportDAO.java
@@ -0,0 +1,15 @@
+package com.panzhihua.service_community.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.panzhihua.service_community.model.dos.ComSwPatrolRecordReportDO;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * @auther txb
+ * @create 2021-07-27 15:08:24
+ * @describe 社区》安全工作》巡查记录-报告关系表mapper类
+ */
+@Mapper
+public interface ComSwPatrolRecordReportDAO extends BaseMapper<ComSwPatrolRecordReportDO> {
+
+}
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComSwSafetyWorkRecordDAO.java b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComSwSafetyWorkRecordDAO.java
new file mode 100644
index 0000000..4da9108
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComSwSafetyWorkRecordDAO.java
@@ -0,0 +1,28 @@
+package com.panzhihua.service_community.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.panzhihua.common.model.dtos.community.ComSwPatrolRecordPageDTO;
+import com.panzhihua.common.model.vos.community.ComSwPatrolRecordVO;
+import com.panzhihua.common.model.vos.community.ComSwSafetyWorkRecordVO;
+import com.panzhihua.service_community.model.dos.ComSwSafetyWorkRecordDO;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * @auther txb
+ * @create 2021-07-27 14:30:41
+ * @describe mapper类
+ */
+@Mapper
+public interface ComSwSafetyWorkRecordDAO extends BaseMapper<ComSwSafetyWorkRecordDO> {
+
+    /**
+     * 分页查询安全工作记录
+     * @param comSwPatrolRecordPageDTO 查询参数
+     * @return 安全工作记录分页集合
+     */
+    IPage<ComSwSafetyWorkRecordVO> pageSafetyWorkRecord(Page page, @Param("comSwPatrolRecordDTO") ComSwPatrolRecordPageDTO comSwPatrolRecordPageDTO);
+
+}
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/model/dos/ComMngPopulationHouseUserDO.java b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/model/dos/ComMngPopulationHouseUserDO.java
index 00a0c8e..c8bbbe4 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/model/dos/ComMngPopulationHouseUserDO.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/model/dos/ComMngPopulationHouseUserDO.java
@@ -47,6 +47,11 @@
     private Integer relationId;
 
     /**
+     * 人和房屋关系’ (1.是、0.否)
+     */
+    private Integer residence;
+
+    /**
      * 入住开始时间
      */
     private Date startAt;
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/model/dos/ComSwDangerReportDO.java b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/model/dos/ComSwDangerReportDO.java
new file mode 100644
index 0000000..40bd988
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/model/dos/ComSwDangerReportDO.java
@@ -0,0 +1,172 @@
+package com.panzhihua.service_community.model.dos;
+
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+
+/**
+ * @auther txb
+ * @create 2021-07-27 14:31:04
+ * @describe 实体类
+ */
+
+@Data
+@TableName("com_sw_danger_report")
+public class ComSwDangerReportDO implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+    * 主键id
+    */
+    @TableId(type = IdType.INPUT)
+    private Long id;
+
+    /**
+    * 隐患编号
+    */
+    private Integer dangerNo;
+
+    /**
+    * 隐患名称
+    */
+    private String dangerName;
+
+    /**
+    * 隐患类型(1.火灾隐患 2.汛情隐患 3.疫情隐患)
+    */
+    private String dangerType;
+
+    /**
+    * 状态(1.待处理 2.待整改 3.已整改)
+    */
+    private String status;
+
+    /**
+    * 风险等级(1.红色预警 2.橙色预警 3.黄色预警 4.蓝色预警)
+    */
+    private String dangerLevel;
+
+    /**
+    * 排查时间
+    */
+    private Date checkTime;
+
+    /**
+    * 主体部门、单位或个人全称
+    */
+    private String unitName;
+
+    /**
+    * 隐患简述
+    */
+    private String dagerDescription;
+
+    /**
+    * 是否立即整改(1是 、0否)
+    */
+    private Integer isRectifyImmediately;
+
+    /**
+    * 采取措施
+    */
+    private String takeSteps;
+
+    /**
+    * 采取措施照片
+    */
+    private String stepsPhoto;
+
+    /**
+    * 整改人员
+    */
+    private String rectifyPerson;
+
+    /**
+    * 整改时间
+    */
+    private Date rectifyTime;
+
+    /**
+    * 社区处理建议
+    */
+    private String communitySuggestion;
+
+    /**
+    * 街道安全人员管理建议
+    */
+    private String streetSuggestion;
+
+    /**
+    * 承办记录
+    */
+    private String undertakeRecord;
+
+    /**
+     * 领导意见
+     */
+    private String leaderSuggestion;
+
+    /**
+     * 指派人员
+     */
+    private String assignPerson;
+
+    /**
+    * 备注
+    */
+    private String remark;
+
+    /**
+    * 创建时间
+    */
+    @TableField(fill = FieldFill.INSERT)
+    private Date createAt;
+
+    /**
+    * 创建人
+    */
+    private Long createBy;
+
+    /**
+    * 更新时间
+    */
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private Date updateAt;
+
+    /**
+    * 修改人
+    */
+    private Long updateBy;
+
+@Override
+public String toString() {
+        return "ComSwDangerReportDO{" +
+                "id=" + id +
+                ", dangerNo=" + dangerNo +
+                ", dangerName=" + dangerName +
+                ", dangerType=" + dangerType +
+                ", status=" + status +
+                ", dangerLevel=" + dangerLevel +
+                ", checkTime=" + checkTime +
+                ", unitName=" + unitName +
+                ", dagerDescription=" + dagerDescription +
+                ", isRectifyImmediately=" + isRectifyImmediately +
+                ", takeSteps=" + takeSteps +
+                ", stepsPhoto=" + stepsPhoto +
+                ", rectifyPerson=" + rectifyPerson +
+                ", rectifyTime=" + rectifyTime +
+                ", communitySuggestion=" + communitySuggestion +
+                ", streetSuggestion=" + streetSuggestion +
+                ", undertakeRecord=" + undertakeRecord +
+                ", remark=" + remark +
+                ", createAt=" + createAt +
+                ", createBy=" + createBy +
+                ", updateAt=" + updateAt +
+                ", updateBy=" + updateBy +
+        "}";
+        }
+        }
\ No newline at end of file
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/model/dos/ComSwPatrolRecordDO.java b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/model/dos/ComSwPatrolRecordDO.java
new file mode 100644
index 0000000..ddd074a
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/model/dos/ComSwPatrolRecordDO.java
@@ -0,0 +1,162 @@
+package com.panzhihua.service_community.model.dos;
+
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+
+/**
+ * @auther txb
+ * @create 2021-07-23 14:38:38
+ * @describe 社区》安全工作》巡查记录实体类
+ */
+
+@Data
+@TableName("com_sw_patrol_record")
+public class ComSwPatrolRecordDO implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+    * 主键id
+    */
+    @TableId(type = IdType.INPUT)
+    private Long id;
+
+    /**
+     * 社区id
+     */
+    private Long communityId;
+
+    /**
+     * 巡查时间
+     */
+    private Date patrolTime;
+
+    /**
+     * 天气
+     */
+    private String weather;
+
+    /**
+     * 温度
+     */
+    private String temperature;
+
+    /**
+     * 风
+     */
+    private String wind;
+
+    /**
+    * 巡查类型(1.防火巡查2.防汛巡查3.防疫巡查),多条以逗号隔开
+    */
+    private String patrolType;
+
+    /**
+    * 巡查领导
+    */
+    private String patrolLeader;
+
+    /**
+    * 巡查人员
+    */
+    private String patrolPerson;
+
+    /**
+     * 巡查地址
+     */
+    private String address;
+
+    /**
+    * 巡查记录
+    */
+    private String recordContent;
+
+    /**
+    * 发现记录
+    */
+    private String findRecord;
+
+    /**
+    * 记录照片
+    */
+    private String recordPhoto;
+
+    /**
+    * 备注
+    */
+    private String remark;
+
+    /**
+    * 接班领导
+    */
+    private String successionLeader;
+
+    /**
+    * 接班人员
+    */
+    private String successionPerson;
+
+    /**
+    * 接班时间
+    */
+    private Date successionTime;
+
+    /**
+    * 是否存在隐患(1是 、0否)
+    */
+    private Integer isHiddenDanger;
+
+
+    /**
+    * 创建时间
+    */
+    @TableField(fill = FieldFill.INSERT)
+    private Date createAt;
+
+    /**
+     * 创建人
+     */
+    private Long createBy;
+
+    /**
+    * 更新时间
+    */
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private Date updateAt;
+
+    /**
+     * 更新人
+     */
+    private Long updateBy;
+
+    @Override
+    public String toString() {
+        return "ComSwPatrolRecordDO{" +
+                "id=" + id +
+                ", patrolTime=" + patrolTime +
+                ", weather=" + weather +
+                ", temperature=" + temperature +
+                ", wind=" + wind +
+                ", patrolType=" + patrolType +
+                ", patrolLeader=" + patrolLeader +
+                ", patrolPerson=" + patrolPerson +
+                ", address=" + address +
+                ", recordContent=" + recordContent +
+                ", findRecord=" + findRecord +
+                ", recordPhoto=" + recordPhoto +
+                ", remark=" + remark +
+                ", successionLeader=" + successionLeader +
+                ", successionPerson=" + successionPerson +
+                ", successionTime=" + successionTime +
+                ", isHiddenDanger=" + isHiddenDanger +
+                ", createAt=" + createAt +
+                ", createBy=" + createBy +
+                ", updateAt=" + updateAt +
+                ", updateBy=" + updateBy +
+                "}";
+        }
+}
\ No newline at end of file
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/model/dos/ComSwPatrolRecordReportDO.java b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/model/dos/ComSwPatrolRecordReportDO.java
new file mode 100644
index 0000000..1df914e
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/model/dos/ComSwPatrolRecordReportDO.java
@@ -0,0 +1,72 @@
+package com.panzhihua.service_community.model.dos;
+
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+
+/**
+ * @auther txb
+ * @create 2021-07-27 15:08:24
+ * @describe 社区》安全工作》巡查记录-报告关系表实体类
+ */
+
+@Data
+@TableName("com_sw_patrol_record_report")
+public class ComSwPatrolRecordReportDO implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+    * id
+    */
+    @TableId(type = IdType.INPUT)
+    private Long id;
+
+    /**
+    * 巡查记录id
+    */
+    private Long patrolRecordId;
+
+    /**
+    * 报告id
+    */
+    private Long reportId;
+
+    /**
+    * 创建时间
+    */
+    @TableField(fill = FieldFill.INSERT)
+    private Date createAt;
+
+    /**
+    * 创建人
+    */
+    private Long createBy;
+
+    /**
+    * 更新时间
+    */
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private Date updateAt;
+
+    /**
+    * 修改人
+    */
+    private Long updateBy;
+
+@Override
+public String toString() {
+        return "ComSwPatrolRecordReportDO{" +
+                "id=" + id +
+                ", patrolRecordId=" + patrolRecordId +
+                ", reportId=" + reportId +
+                ", createAt=" + createAt +
+                ", createBy=" + createBy +
+                ", updateAt=" + updateAt +
+                ", updateBy=" + updateBy +
+        "}";
+        }
+        }
\ No newline at end of file
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/model/dos/ComSwSafetyWorkRecordDO.java b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/model/dos/ComSwSafetyWorkRecordDO.java
new file mode 100644
index 0000000..e4d461e
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/model/dos/ComSwSafetyWorkRecordDO.java
@@ -0,0 +1,66 @@
+package com.panzhihua.service_community.model.dos;
+
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+
+/**
+ * @auther txb
+ * @create 2021-07-27 14:30:41
+ * @describe 实体类
+ */
+
+@Data
+@TableName("com_sw_safety_work_record")
+public class ComSwSafetyWorkRecordDO implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+    * 主键id
+    */
+    @TableId(type = IdType.INPUT)
+    private Long id;
+
+    /**
+    * 备注
+    */
+    private String remark;
+
+    /**
+    * 创建时间
+    */
+    @TableField(fill = FieldFill.INSERT)
+    private Date createAt;
+
+    /**
+    * 创建人
+    */
+    private Long createBy;
+
+    /**
+    * 更新时间
+    */
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private Date updateAt;
+
+    /**
+    * 修改人
+    */
+    private Long updateBy;
+
+@Override
+public String toString() {
+        return "ComSwSafetyWorkRecordDO{" +
+                "id=" + id +
+                ", remark=" + remark +
+                ", createAt=" + createAt +
+                ", createBy=" + createBy +
+                ", updateAt=" + updateAt +
+                ", updateBy=" + updateBy +
+        "}";
+        }
+        }
\ No newline at end of file
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/ComSwDangerReportService.java b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/ComSwDangerReportService.java
new file mode 100644
index 0000000..c9bd748
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/ComSwDangerReportService.java
@@ -0,0 +1,68 @@
+package com.panzhihua.service_community.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.panzhihua.common.model.dtos.community.ComSwDangerReportHandleDTO;
+import com.panzhihua.common.model.dtos.community.ComSwDangerReportRectifyDTO;
+import com.panzhihua.common.model.dtos.community.ComSwPatrolRecordPageDTO;
+import com.panzhihua.common.model.vos.R;
+import com.panzhihua.service_community.model.dos.ComSwDangerReportDO;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestParam;
+
+import java.util.List;
+
+/**
+ * @auther txb
+ * @create 2021-07-27 14:31:04
+ * @describe 服务类
+ */
+public interface ComSwDangerReportService extends IService<ComSwDangerReportDO> {
+
+    /**
+     * 分页查询隐患报告
+     * @param comSwPatrolRecordPageDTO 查询参数
+     * @return 隐患报告分页集合
+     */
+    R pageDangerReport(ComSwPatrolRecordPageDTO comSwPatrolRecordPageDTO);
+
+    /**
+     * 根据隐患报告id查询详情
+     *
+     * @param dangerReportId 隐患报告id
+     * @return 隐患报告详情查询结果
+     */
+    R detailDangerReport(Long dangerReportId);
+
+    /**
+     * 根据巡查记录id查询隐患报告详情
+     *
+     * @param patrolRecordId 巡查记录id
+     * @return 隐患报告详情查询结果
+     */
+    R detailDangerReportByPrId(Long patrolRecordId);
+
+    /**
+     * 处理隐患报告
+     *
+     * @param comSwDangerReportHandleDTO 隐患报告处理参数
+     * @return 处理结果
+     */
+    R handleDangerReport(ComSwDangerReportHandleDTO comSwDangerReportHandleDTO);
+
+    /**
+     * 整改隐患报告
+     *
+     * @param comSwDangerReportRectifyDTO 隐患报告整改参数
+     * @return 整改结果
+     */
+    R rectifyDangerReport(ComSwDangerReportRectifyDTO comSwDangerReportRectifyDTO);
+
+    /**
+     * 隐患报告台账导出
+     *
+     * @param dangerReportIds
+     * @return
+     */
+    R exportDangerReport(List<Long> dangerReportIds);
+}
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/ComSwPatrolRecordService.java b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/ComSwPatrolRecordService.java
new file mode 100644
index 0000000..e17d2d0
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/ComSwPatrolRecordService.java
@@ -0,0 +1,42 @@
+package com.panzhihua.service_community.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.panzhihua.common.model.dtos.community.ComSwPatrolRecordAddDTO;
+import com.panzhihua.common.model.dtos.community.ComSwPatrolRecordPageDTO;
+import com.panzhihua.common.model.vos.R;
+import com.panzhihua.service_community.model.dos.ComSwPatrolRecordDO;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestParam;
+
+/**
+ * @auther txb
+ * @create 2021-07-23 14:38:38
+ * @describe 社区》安全工作》巡查记录服务类
+ */
+public interface ComSwPatrolRecordService extends IService<ComSwPatrolRecordDO> {
+
+    /**
+     * 分页查询巡查记录
+     *
+     * @param comSwPatrolRecordPageDTO 查询参数
+     * @return 分页集合
+     */
+    R pagePatrolRecord(ComSwPatrolRecordPageDTO comSwPatrolRecordPageDTO);
+
+    /**
+     * 新增巡查记录
+     *
+     * @param comSwPatrolRecordAddDTO 新增参数
+     * @return 新增结果
+     */
+    R addPatrolRecord(ComSwPatrolRecordAddDTO comSwPatrolRecordAddDTO);
+
+    /**
+     * 根据巡查记录id查询详情
+     *
+     * @param patrolRecordId 巡查记录id
+     * @return 巡查记录详情查询结果
+     */
+    R detailPatrolRecord(Long patrolRecordId);
+}
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/ComSwSafetyWorkRecordService.java b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/ComSwSafetyWorkRecordService.java
new file mode 100644
index 0000000..4ee7be1
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/ComSwSafetyWorkRecordService.java
@@ -0,0 +1,40 @@
+package com.panzhihua.service_community.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.panzhihua.common.model.dtos.community.ComSwPatrolRecordPageDTO;
+import com.panzhihua.common.model.vos.R;
+import com.panzhihua.service_community.model.dos.ComSwSafetyWorkRecordDO;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestParam;
+
+/**
+ * @auther txb
+ * @create 2021-07-27 14:30:41
+ * @describe 服务类
+ */
+public interface ComSwSafetyWorkRecordService extends IService<ComSwSafetyWorkRecordDO> {
+
+    /**
+     * 分页查询安全工作记录
+     * @param comSwPatrolRecordPageDTO 查询参数
+     * @return 安全工作记录分页集合
+     */
+    R pageSafetyWorkRecord(ComSwPatrolRecordPageDTO comSwPatrolRecordPageDTO);
+
+    /**
+     * 根据安全工作记录id查询详情
+     *
+     * @param safetyWorkRecordId 安全工作记录
+     * @return 安全工作记录详情查询结果
+     */
+    R detailSafetyWorkRecord(Long safetyWorkRecordId);
+
+    /**
+     * 根据巡查记录id查询安全工作记录详情
+     *
+     * @param patrolRecordId 巡查记录id
+     * @return 安全工作记录详情查询结果
+     */
+    R detailSafetyWorkRecordByPrId(Long patrolRecordId);
+}
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActActivityServiceImpl.java b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActActivityServiceImpl.java
index ce0a352..348df80 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActActivityServiceImpl.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActActivityServiceImpl.java
@@ -2,6 +2,7 @@
 
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -189,7 +190,14 @@
     public ComActActivityVO inforActivity(Long id, Long userId) {
         ComActActivityVO comActActivityVO=comActActivityDAO.inforActivity(id);
         if (!ObjectUtils.isEmpty(comActActivityVO)) {
-            ComActActSignDO comActActSignDO = comActActSignDAO.selectOne(new QueryWrapper<ComActActSignDO>().lambda().eq(ComActActSignDO::getActivityId, id).eq(ComActActSignDO::getUserId, userId));
+
+            LambdaQueryWrapper<ComActActSignDO> actSignQuery = new LambdaQueryWrapper<>();
+            actSignQuery.eq(ComActActSignDO::getActivityId, id);
+            if(userId != null){
+                actSignQuery.eq(ComActActSignDO::getUserId, userId);
+            }
+
+            ComActActSignDO comActActSignDO = comActActSignDAO.selectOne(actSignQuery);
             if (!ObjectUtils.isEmpty(comActActSignDO)) {
                 comActActivityVO.setIsSign(1);
                 comActActivityVO.setIsVolunteer(comActActSignDO.getIsVolunteer());
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActEasyPhotoActivityServiceImpl.java b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActEasyPhotoActivityServiceImpl.java
index 39bd6ea..df1c936 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActEasyPhotoActivityServiceImpl.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActEasyPhotoActivityServiceImpl.java
@@ -68,7 +68,7 @@
     public R addActivity(AddEasyPhotoActivityDTO addEasyPhotoActivityDTO){
 
         //判断当前活动时间是否与其他时间有冲突
-        Integer count = this.baseMapper.getEasyPhotoActivityTimeConflict(addEasyPhotoActivityDTO.getActivityStartAt(),addEasyPhotoActivityDTO.getActivityEndAt(),null);
+        Integer count = this.baseMapper.getEasyPhotoActivityTimeConflict(addEasyPhotoActivityDTO.getActivityStartAt(),addEasyPhotoActivityDTO.getActivityEndAt(),null,addEasyPhotoActivityDTO.getCommunityId());
         if(count > 0){
             return R.fail("在此期间已有活动,请勿重复添加");
         }
@@ -110,7 +110,7 @@
             return R.fail("未查询到活动记录");
         }
 
-        Integer count = this.baseMapper.getEasyPhotoActivityTimeConflict(editEasyPhotoActivityDTO.getActivityStartAt(),editEasyPhotoActivityDTO.getActivityEndAt(),editEasyPhotoActivityDTO.getId());
+        Integer count = this.baseMapper.getEasyPhotoActivityTimeConflict(editEasyPhotoActivityDTO.getActivityStartAt(),editEasyPhotoActivityDTO.getActivityEndAt(),editEasyPhotoActivityDTO.getId(),photoActivityDO.getCommunityId());
         if(count > 0){
             return R.fail("在此期间已有活动,请勿重复添加");
         }
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActEasyPhotoServiceImpl.java b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActEasyPhotoServiceImpl.java
index 5203441..041110a 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActEasyPhotoServiceImpl.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActEasyPhotoServiceImpl.java
@@ -87,15 +87,17 @@
                 if(comActEasyPhotoVO1.getActivityId() != null && comActEasyPhotoVO1.getStatus().equals(ComActEasyPhotoDO.status.ywc)){
                     //查询随手拍活动
                     ComActEasyPhotoActivityDO photoActivityDO = comActEasyPhotoActivityMapper.selectById(comActEasyPhotoVO1.getActivityId());
-                    if(comActEasyPhotoVO1.getActivityType() != null){
-                        if(comActEasyPhotoVO1.getActivityType().equals(ComActEasyPhotoDO.activityType.yz)){
-                            comActEasyPhotoVO1.setActivityMoney(photoActivityDO.getGoodReward());
-                        }else if(comActEasyPhotoVO1.getActivityType().equals(ComActEasyPhotoDO.activityType.jl)){
-                            comActEasyPhotoVO1.setActivityMoney(photoActivityDO.getExcellentReward());
-                        }else if(comActEasyPhotoVO1.getActivityType().equals(ComActEasyPhotoDO.activityType.pt)){
-                            comActEasyPhotoVO1.setActivityMoney(photoActivityDO.getOrdinaryReward());
-                        }else if(comActEasyPhotoVO1.getActivityType().equals(ComActEasyPhotoDO.activityType.yb)){
-                            comActEasyPhotoVO1.setActivityMoney(photoActivityDO.getCommonlyReward());
+                    if(photoActivityDO != null){
+                        if(comActEasyPhotoVO1.getActivityType() != null){
+                            if(comActEasyPhotoVO1.getActivityType().equals(ComActEasyPhotoDO.activityType.yz)){
+                                comActEasyPhotoVO1.setActivityMoney(photoActivityDO.getGoodReward());
+                            }else if(comActEasyPhotoVO1.getActivityType().equals(ComActEasyPhotoDO.activityType.jl)){
+                                comActEasyPhotoVO1.setActivityMoney(photoActivityDO.getExcellentReward());
+                            }else if(comActEasyPhotoVO1.getActivityType().equals(ComActEasyPhotoDO.activityType.pt)){
+                                comActEasyPhotoVO1.setActivityMoney(photoActivityDO.getOrdinaryReward());
+                            }else if(comActEasyPhotoVO1.getActivityType().equals(ComActEasyPhotoDO.activityType.yb)){
+                                comActEasyPhotoVO1.setActivityMoney(photoActivityDO.getCommonlyReward());
+                            }
                         }
                     }
                 }
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActMicroWishServiceImpl.java b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActMicroWishServiceImpl.java
index 90a6729..370cd5f 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActMicroWishServiceImpl.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActMicroWishServiceImpl.java
@@ -149,6 +149,9 @@
                 comActMicroWishDO.setForm(2);
                 break;
             case 5:
+                if(comActMicroWishVO.getFeedback().length() > 200){
+                    return R.fail("反馈字数不得超过200字");
+                }
                 comActMicroWishDO.setFeedbackAt(date);
                 comActMicroWishDO.setStatus(5);//待确认
                 comActMicroWishDO.setFeedback(feedback);
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 59118ed..a2ea07c 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
@@ -363,6 +363,7 @@
     @Override
     @Transactional(rollbackFor = Exception.class)
     public R listSavePopulation(List<ComMngPopulationServeExcelVO> list, Long communityId) throws Exception {
+        List<ComMngPopulationMistakeExcelVO> mistakes = new ArrayList<>();
         List<ComMngPopulationImportErrorVO> populationImportErrorVOList = new ArrayList<>();
         //查询该社区
         ComActDO comActDO = comActDAO.selectById(communityId);
@@ -396,10 +397,15 @@
             ComMngVillageDO comMngVillageDO = comActVillageDAO.selectOne(new QueryWrapper<ComMngVillageDO>().eq("alley", vo.getRoad()).eq("house_num", vo.getDoorNo()).eq("community_id", communityId));
             if (comMngVillageDO == null) {
                 ComMngPopulationImportErrorVO importErrorVO = new ComMngPopulationImportErrorVO();
-                importErrorVO.setErrorMsg("街路巷或小区号不存在");
+                importErrorVO.setErrorMsg("街路巷或小区号不存在,请先在“小区管理”中添加该小区");
                 importErrorVO.setErrorPosition("街路巷:" + vo.getRoad() + ",小区号:" + vo.getDoorNo());
                 populationImportErrorVOList.add(importErrorVO);
 //                index++;
+                ComMngPopulationMistakeExcelVO mistake = new ComMngPopulationMistakeExcelVO();
+                BeanUtils.copyProperties(vo,mistake);
+                setMistake(mistake, vo);
+                mistake.setMistake("街路巷或小区号不存在,请先在“小区管理”中添加该小区:街路巷:"+ vo.getRoad() +",小区号:" + vo.getDoorNo());
+                mistakes.add(mistake);
                 continue;
             }
 
@@ -454,6 +460,7 @@
                     populationHouseUserDO.setPopulId(populationDO.getId());
                     populationHouseUserDO.setRelation(vo.getRelation());
                     populationHouseUserDO.setRelationId(vo.getIsRent());
+                    populationHouseUserDO.setResidence(vo.getResidence());
                     comMngPopulationHouseUserDAO.insert(populationHouseUserDO);
                 }
             }
@@ -466,7 +473,7 @@
         this.saveBatch(populationDOList);*/
 
         if (!populationImportErrorVOList.isEmpty()) {
-            return R.fail(JSON.toJSONString(populationImportErrorVOList));
+            return R.fail(mistakes,JSON.toJSONString(populationImportErrorVOList));
         }
         return R.ok();
     }
@@ -814,6 +821,9 @@
                 populationHouseUserDO.setRelation(houseEditDto.getRelation());
                 if (houseEditDto.getIsResidence().equals(ComMngPopulationHouseEditDTO.isResidence.yes)) {
                     houseId = houseEditDto.getId();//居住地
+                    populationHouseUserDO.setResidence(ComMngPopulationHouseEditDTO.isResidence.yes);
+                }else {
+                    populationHouseUserDO.setResidence(ComMngPopulationHouseEditDTO.isResidence.no);
                 }
                 populationHouseUserDOList.add(populationHouseUserDO);
 
@@ -1268,7 +1278,11 @@
             villageStatisticsList.forEach(village -> {
                 CivilVillageStatisticsVO villageStatisticsVO = this.baseMapper.getCivilScreenVillageStatistics(village.getVillageId());
                 if(villageStatisticsVO != null){
-                    BeanUtils.copyProperties(villageStatisticsVO,village);
+                    village.setPeopleNum(villageStatisticsVO.getPeopleNum());
+                    village.setHouseNum(villageStatisticsVO.getHouseNum());
+                    village.setRegisterNum(villageStatisticsVO.getRegisterNum());
+                    village.setFlowNum(villageStatisticsVO.getFlowNum());
+//                    BeanUtils.copyProperties(villageStatisticsVO,village);
                 }
             });
         }
@@ -1900,4 +1914,19 @@
         return R.ok(this.baseMapper.getVillagePopulationAdmin(new Page(villagePopulationDTO.getPageNum(),villagePopulationDTO.getPageSize()),villagePopulationDTO));
     }
 
+    private void setMistake(ComMngPopulationMistakeExcelVO mvo, ComMngPopulationServeExcelVO vo){
+        mvo.setPoliticalOutlook(PopulPoliticalOutlookEnum.getCnDescByName(vo.getPoliticalOutlook()));
+        mvo.setIsRent(PopulHouseUseEnum.getCnDescByName(vo.getIsRent()));
+        mvo.setRelation(PopulRelationEnum.getCnDescByName(vo.getRelation()));
+        mvo.setHouseStatus(PopulHouseStatusEnum.getCnDescByName(vo.getHouseStatus()));
+        mvo.setHousePurpose(PopulHousePurposeEnum.getCnDescByName(vo.getHousePurpose()));
+        mvo.setControlStatus(PopulHouseControlStatusEnum.getCnDescByName(vo.getControlStatus()));
+        mvo.setCultureLevel(PopulCultureLevelEnum.getCnDescByName(vo.getCultureLevel()));
+        mvo.setMarriage(PopulMarriageEnum.getCnDescByName(vo.getMarriage()));
+        mvo.setOutOrLocal(PopulOutOrLocalEnum.getCnDescByName(vo.getOutOrLocal()));
+        mvo.setResidence(PopulRelationEnum.getCnDescByName(vo.getResidence()));
+        mvo.setPersonType(PopulPersonTypeEnum.getCnDescByName(vo.getPersonType()));
+        mvo.setDeath(PopulOutOrLocalEnum.getCnDescByName(vo.getDeath()));
+    }
+
 }
\ No newline at end of file
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComSwDangerReportServiceImpl.java b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComSwDangerReportServiceImpl.java
new file mode 100644
index 0000000..a659935
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComSwDangerReportServiceImpl.java
@@ -0,0 +1,175 @@
+package com.panzhihua.service_community.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.panzhihua.common.enums.SafeWordStatusEnum;
+import com.panzhihua.common.model.dtos.community.ComSwDangerReportHandleDTO;
+import com.panzhihua.common.model.dtos.community.ComSwDangerReportRectifyDTO;
+import com.panzhihua.common.model.dtos.community.ComSwPatrolRecordPageDTO;
+import com.panzhihua.common.model.vos.LoginUserInfoVO;
+import com.panzhihua.common.model.vos.R;
+import com.panzhihua.common.model.vos.community.ComMngCarExcelVO;
+import com.panzhihua.common.model.vos.community.ComSwDangerReportExcelVO;
+import com.panzhihua.common.model.vos.community.ComSwDangerReportVO;
+import com.panzhihua.common.model.vos.community.ComSwSafetyWorkRecordVO;
+import com.panzhihua.common.service.user.UserService;
+import com.panzhihua.common.utlis.StringUtils;
+import com.panzhihua.service_community.dao.ComSwDangerReportDAO;
+import com.panzhihua.service_community.dao.ComSwPatrolRecordDAO;
+import com.panzhihua.service_community.dao.ComSwPatrolRecordReportDAO;
+import com.panzhihua.service_community.model.dos.ComSwDangerReportDO;
+import com.panzhihua.service_community.model.dos.ComSwPatrolRecordDO;
+import com.panzhihua.service_community.model.dos.ComSwPatrolRecordReportDO;
+import com.panzhihua.service_community.model.dos.ComSwSafetyWorkRecordDO;
+import com.panzhihua.service_community.service.ComSwDangerReportService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.BeanUtils;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+/**
+ * @auther txb
+ * @create 2021-07-27 14:31:04
+ * @describe 服务实现类
+ */
+@Slf4j
+@Service
+public class ComSwDangerReportServiceImpl extends ServiceImpl<ComSwDangerReportDAO, ComSwDangerReportDO> implements ComSwDangerReportService {
+
+    @Resource
+    private ComSwDangerReportDAO comSwDangerReportDAO;
+
+    @Resource
+    private ComSwPatrolRecordDAO comSwPatrolRecordDAO;
+
+    @Resource
+    private ComSwPatrolRecordReportDAO comSwPatrolRecordReportDAO;
+
+    @Resource
+    private UserService userService;
+
+    @Override
+    public R pageDangerReport(ComSwPatrolRecordPageDTO comSwPatrolRecordPageDTO) {
+        Page page = new Page<>();
+        Long pageNum = comSwPatrolRecordPageDTO.getPageNum();
+        Long pageSize = comSwPatrolRecordPageDTO.getPageSize();
+        if (null == pageNum || 0 == pageNum) {
+            pageNum = 1L;
+        }
+        if (null == pageSize || 0 == pageSize) {
+            pageSize = 10L;
+        }
+        page.setSize(pageSize);
+        page.setCurrent(pageNum);
+
+        IPage<ComSwDangerReportVO> iPage = comSwDangerReportDAO.pageDangerReport(page, comSwPatrolRecordPageDTO);
+        if (!iPage.getRecords().isEmpty()) {
+            iPage.getRecords().forEach(comSwDangerReportVO -> {
+                if (StringUtils.isNotEmpty(comSwDangerReportVO.getAssignPerson())) {
+                    comSwDangerReportVO.setIsAssign(ComSwDangerReportVO.isOk.no);
+                }else {
+                    comSwDangerReportVO.setIsAssign(ComSwDangerReportVO.isOk.yes);
+                }
+                List<String> patrolUserIds = Arrays.asList(comSwDangerReportVO.getPatrolPerson().split(","));
+                List<String> patrolPhones = new ArrayList<>();
+                for (String userId : patrolUserIds) {
+                    LoginUserInfoVO loginUserInfoVO = userService.getUserInfoByUserId(userId).getData();
+                    patrolPhones.add(loginUserInfoVO.getPhone());
+                }
+                comSwDangerReportVO.setPatrolPersonPhone(StringUtils.join(patrolPhones,","));
+
+                List<String> rectifyUserIds = Arrays.asList(comSwDangerReportVO.getRectifyPerson().split(","));
+                List<String> rectifyPhones = new ArrayList<>();
+                for (String userId : rectifyUserIds) {
+                    LoginUserInfoVO loginUserInfoVO = userService.getUserInfoByUserId(userId).getData();
+                    rectifyPhones.add(loginUserInfoVO.getPhone());
+                }
+                comSwDangerReportVO.setRectifyPersonPhone(StringUtils.join(rectifyPhones,","));
+            });
+        }
+        return R.ok(iPage);
+    }
+
+    @Override
+    public R detailDangerReport(Long dangerReportId) {
+        ComSwDangerReportDO comSwDangerReportDO = comSwDangerReportDAO.selectById(dangerReportId);
+        if (null == comSwDangerReportDO) {
+            return R.fail("该隐患报告不存在");
+        }
+        ComSwDangerReportVO comSwDangerReportVO = new ComSwDangerReportVO();
+        ComSwPatrolRecordReportDO comSwPatrolRecordReportDO = comSwPatrolRecordReportDAO.selectOne(new QueryWrapper<ComSwPatrolRecordReportDO>().lambda().eq(ComSwPatrolRecordReportDO::getReportId, dangerReportId));
+        if (null != comSwPatrolRecordReportDO) {
+            ComSwPatrolRecordDO comSwPatrolRecordDO = comSwPatrolRecordDAO.selectById(comSwPatrolRecordReportDO.getPatrolRecordId());
+            BeanUtils.copyProperties(comSwPatrolRecordDO, comSwDangerReportVO);
+        }
+        BeanUtils.copyProperties(comSwDangerReportDO, comSwDangerReportVO);
+        return R.ok(comSwDangerReportVO);
+    }
+
+    @Override
+    public R detailDangerReportByPrId(Long patrolRecordId) {
+        ComSwPatrolRecordDO comSwPatrolRecordDO = comSwPatrolRecordDAO.selectById(patrolRecordId);
+        ComSwDangerReportVO comSwDangerReportVO = new ComSwDangerReportVO();
+        ComSwPatrolRecordReportDO comSwPatrolRecordReportDO = comSwPatrolRecordReportDAO.selectOne(new QueryWrapper<ComSwPatrolRecordReportDO>().lambda().eq(ComSwPatrolRecordReportDO::getPatrolRecordId, patrolRecordId));
+        if (null != comSwPatrolRecordReportDO) {
+            ComSwDangerReportDO comSwDangerReportDO = comSwDangerReportDAO.selectById(comSwPatrolRecordReportDO.getReportId());
+            if (null == comSwDangerReportDO) {
+                return R.fail("该隐患报告不存在");
+            }
+            BeanUtils.copyProperties(comSwDangerReportDO, comSwDangerReportVO);
+        }
+        BeanUtils.copyProperties(comSwPatrolRecordDO, comSwDangerReportVO);
+        return R.ok(comSwDangerReportVO);
+    }
+
+    @Override
+    public R handleDangerReport(ComSwDangerReportHandleDTO comSwDangerReportHandleDTO) {
+        ComSwDangerReportDO comSwDangerReportDO = comSwDangerReportDAO.selectById(comSwDangerReportHandleDTO.getDangerReportId());
+        if (null == comSwDangerReportDO) {
+            return R.fail("该隐患报告不存在");
+        }
+        BeanUtils.copyProperties(comSwDangerReportHandleDTO, comSwDangerReportDO);
+        comSwDangerReportDO.setStatus(String.valueOf(SafeWordStatusEnum.YCL.getCode()));
+        int update = comSwDangerReportDAO.updateById(comSwDangerReportDO);
+        if (update > 0) {
+            return R.ok();
+        }
+        return R.fail("处理失败");
+    }
+
+    @Override
+    public R rectifyDangerReport(ComSwDangerReportRectifyDTO comSwDangerReportRectifyDTO) {
+        ComSwDangerReportDO comSwDangerReportDO = comSwDangerReportDAO.selectById(comSwDangerReportRectifyDTO.getDangerReportId());
+        if (null == comSwDangerReportDO) {
+            return R.fail("该隐患报告不存在");
+        }
+        BeanUtils.copyProperties(comSwDangerReportRectifyDTO, comSwDangerReportDO);
+        comSwDangerReportDO.setStatus(String.valueOf(SafeWordStatusEnum.YZG.getCode()));
+        int update = comSwDangerReportDAO.updateById(comSwDangerReportDO);
+        if (update > 0) {
+            return R.ok();
+        }
+        return R.fail("整改失败");
+    }
+
+    @Override
+    public R exportDangerReport(List<Long> dangerReportIds) {
+        List<ComSwDangerReportExcelVO> list = comSwDangerReportDAO.exportDangerReport(dangerReportIds);
+        list.forEach(comSwDangerReportExcelVO -> {
+            List<String> patrolUserIds = Arrays.asList(comSwDangerReportExcelVO.getPatrolPerson().split(","));
+            List<String> patrolPhones = new ArrayList<>();
+            for (String userId : patrolUserIds) {
+                LoginUserInfoVO loginUserInfoVO = userService.getUserInfoByUserId(userId).getData();
+                patrolPhones.add(loginUserInfoVO.getPhone());
+            }
+            comSwDangerReportExcelVO.setPatrolPersonPhone(StringUtils.join(patrolPhones,","));
+        });
+        return R.ok(list);
+    }
+}
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComSwPatrolRecordServiceImpl.java b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComSwPatrolRecordServiceImpl.java
new file mode 100644
index 0000000..47097d4
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComSwPatrolRecordServiceImpl.java
@@ -0,0 +1,130 @@
+package com.panzhihua.service_community.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.panzhihua.common.enums.SafeWordStatusEnum;
+import com.panzhihua.common.model.dtos.community.ComSwPatrolRecordAddDTO;
+import com.panzhihua.common.model.dtos.community.ComSwPatrolRecordPageDTO;
+import com.panzhihua.common.model.vos.R;
+import com.panzhihua.common.model.vos.community.ComMngRealAssetsVO;
+import com.panzhihua.common.model.vos.community.ComSwPatrolRecordVO;
+import com.panzhihua.common.utlis.Snowflake;
+import com.panzhihua.common.utlis.StringUtils;
+import com.panzhihua.service_community.dao.ComSwDangerReportDAO;
+import com.panzhihua.service_community.dao.ComSwPatrolRecordDAO;
+import com.panzhihua.service_community.dao.ComSwPatrolRecordReportDAO;
+import com.panzhihua.service_community.dao.ComSwSafetyWorkRecordDAO;
+import com.panzhihua.service_community.model.dos.*;
+import com.panzhihua.service_community.service.ComSwPatrolRecordService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.BeanUtils;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.Date;
+
+/**
+ * @auther txb
+ * @create 2021-07-23 14:38:38
+ * @describe 社区》安全工作》巡查记录服务实现类
+ */
+@Slf4j
+@Service
+public class ComSwPatrolRecordServiceImpl extends ServiceImpl<ComSwPatrolRecordDAO, ComSwPatrolRecordDO> implements ComSwPatrolRecordService {
+
+    @Resource
+    private ComSwPatrolRecordDAO comSwPatrolRecordDAO;
+
+    @Resource
+    private ComSwSafetyWorkRecordDAO comSwSafetyWorkRecordDAO;
+
+    @Resource
+    private ComSwDangerReportDAO comSwDangerReportDAO;
+
+    @Resource
+    private ComSwPatrolRecordReportDAO comSwPatrolRecordReportDAO;
+
+    @Override
+    public R pagePatrolRecord(ComSwPatrolRecordPageDTO comSwPatrolRecordPageDTO) {
+        Page page = new Page<>();
+        Long pageNum = comSwPatrolRecordPageDTO.getPageNum();
+        Long pageSize = comSwPatrolRecordPageDTO.getPageSize();
+        if (null == pageNum || 0 == pageNum) {
+            pageNum = 1L;
+        }
+        if (null == pageSize || 0 == pageSize) {
+            pageSize = 10L;
+        }
+        page.setSize(pageSize);
+        page.setCurrent(pageNum);
+
+        IPage<ComSwPatrolRecordVO> iPage = comSwPatrolRecordDAO.pagePatrolRecord(page, comSwPatrolRecordPageDTO);
+        return R.ok(iPage);
+    }
+
+    @Override
+    public R addPatrolRecord(ComSwPatrolRecordAddDTO comSwPatrolRecordAddDTO) {
+        //巡查记录
+        ComSwPatrolRecordDO comSwPatrolRecordDO = new ComSwPatrolRecordDO();
+        BeanUtils.copyProperties(comSwPatrolRecordAddDTO, comSwPatrolRecordDO);
+        Long patrolRecordId = Snowflake.getId();
+        comSwPatrolRecordDO.setId(patrolRecordId);
+        comSwPatrolRecordDAO.insert(comSwPatrolRecordDO);
+        //巡查记录和关联报告信息
+        ComSwPatrolRecordReportDO comSwPatrolRecordReportDO = new ComSwPatrolRecordReportDO();
+        Long patrolRecordReport = Snowflake.getId();
+        comSwPatrolRecordReportDO.setId(patrolRecordReport);
+        comSwPatrolRecordReportDO.setPatrolRecordId(patrolRecordId);
+        if (comSwPatrolRecordAddDTO.getIsHiddenDanger().intValue() == ComSwPatrolRecordAddDTO.isOk.yes) {
+            //如果存在安全隐患,自动生成安全隐患报告
+            ComSwDangerReportDO comSwDangerReportDO = new ComSwDangerReportDO();
+            BeanUtils.copyProperties(comSwPatrolRecordAddDTO, comSwDangerReportDO);
+            Long dangerReportId = Snowflake.getId();
+            comSwDangerReportDO.setId(dangerReportId);
+            comSwPatrolRecordReportDO.setReportId(dangerReportId);
+            comSwDangerReportDO.setDangerType(comSwPatrolRecordAddDTO.getPatrolType());
+            if (comSwPatrolRecordAddDTO.getIsRectifyImmediately().intValue() == ComSwPatrolRecordAddDTO.isOk.yes && StringUtils.isNotEmpty(comSwPatrolRecordAddDTO.getTakeSteps())) {
+                comSwDangerReportDO.setStatus(String.valueOf(SafeWordStatusEnum.YZG.getCode()));
+            }
+            comSwDangerReportDO.setRectifyTime(new Date());
+            comSwDangerReportDAO.insert(comSwDangerReportDO);
+        }else {
+            //不存在安全隐患,生成安全工作记录
+            ComSwSafetyWorkRecordDO comSwSafetyWorkRecordDO = new ComSwSafetyWorkRecordDO();
+            BeanUtils.copyProperties(comSwPatrolRecordAddDTO, comSwSafetyWorkRecordDO);
+            Long safetyWorkRecord = Snowflake.getId();
+            comSwSafetyWorkRecordDO.setId(safetyWorkRecord);
+            comSwPatrolRecordReportDO.setReportId(safetyWorkRecord);
+            comSwSafetyWorkRecordDAO.insert(comSwSafetyWorkRecordDO);
+        }
+        comSwPatrolRecordReportDAO.insert(comSwPatrolRecordReportDO);
+        return R.ok();
+    }
+
+    @Override
+    public R detailPatrolRecord(Long patrolRecordId) {
+        ComSwPatrolRecordDO comSwPatrolRecordDO = comSwPatrolRecordDAO.selectById(patrolRecordId);
+        if (null == comSwPatrolRecordDO) {
+            return R.fail("该巡查记录不存在");
+        }
+        ComSwPatrolRecordVO comSwPatrolRecordVO = new ComSwPatrolRecordVO();
+        BeanUtils.copyProperties(comSwPatrolRecordDO, comSwPatrolRecordVO);
+        ComSwPatrolRecordReportDO comSwPatrolRecordReportDO = comSwPatrolRecordReportDAO.selectOne(new QueryWrapper<ComSwPatrolRecordReportDO>().lambda().eq(ComSwPatrolRecordReportDO::getPatrolRecordId, patrolRecordId));
+        if (null != comSwPatrolRecordReportDO) {
+            if (comSwPatrolRecordVO.getIsHiddenDanger().equals(ComSwPatrolRecordVO.isOk.yes)) {
+                if (null != comSwDangerReportDAO.selectById(comSwPatrolRecordReportDO.getReportId())) {
+                    comSwPatrolRecordVO.setDisplayButton(3);
+                }else {
+                    comSwPatrolRecordVO.setDisplayButton(2);
+                }
+            }else{
+                if (null != comSwSafetyWorkRecordDAO.selectById(comSwPatrolRecordReportDO.getReportId())) {
+                    comSwPatrolRecordVO.setDisplayButton(1);
+                }
+            }
+        }
+        return R.ok(comSwPatrolRecordVO);
+    }
+}
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
new file mode 100644
index 0000000..e331396
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComSwSafetyWorkRecordServiceImpl.java
@@ -0,0 +1,89 @@
+package com.panzhihua.service_community.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.panzhihua.common.model.dtos.community.ComSwPatrolRecordPageDTO;
+import com.panzhihua.common.model.vos.R;
+import com.panzhihua.common.model.vos.community.ComSwPatrolRecordVO;
+import com.panzhihua.common.model.vos.community.ComSwSafetyWorkRecordVO;
+import com.panzhihua.service_community.dao.ComSwPatrolRecordDAO;
+import com.panzhihua.service_community.dao.ComSwPatrolRecordReportDAO;
+import com.panzhihua.service_community.dao.ComSwSafetyWorkRecordDAO;
+import com.panzhihua.service_community.model.dos.ComSwPatrolRecordDO;
+import com.panzhihua.service_community.model.dos.ComSwPatrolRecordReportDO;
+import com.panzhihua.service_community.model.dos.ComSwSafetyWorkRecordDO;
+import com.panzhihua.service_community.service.ComSwSafetyWorkRecordService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.BeanUtils;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+
+/**
+ * @auther txb
+ * @create 2021-07-27 14:30:41
+ * @describe 服务实现类
+ */
+@Slf4j
+@Service
+public class ComSwSafetyWorkRecordServiceImpl extends ServiceImpl<ComSwSafetyWorkRecordDAO, ComSwSafetyWorkRecordDO> implements ComSwSafetyWorkRecordService {
+
+    @Resource
+    private ComSwSafetyWorkRecordDAO comSwSafetyWorkRecordDAO;
+
+    @Resource
+    private ComSwPatrolRecordDAO comSwPatrolRecordDAO;
+
+    @Resource
+    private ComSwPatrolRecordReportDAO comSwPatrolRecordReportDAO;
+
+    @Override
+    public R pageSafetyWorkRecord(ComSwPatrolRecordPageDTO comSwPatrolRecordPageDTO) {
+        Page page = new Page<>();
+        Long pageNum = comSwPatrolRecordPageDTO.getPageNum();
+        Long pageSize = comSwPatrolRecordPageDTO.getPageSize();
+        if (null == pageNum || 0 == pageNum) {
+            pageNum = 1L;
+        }
+        if (null == pageSize || 0 == pageSize) {
+            pageSize = 10L;
+        }
+        page.setSize(pageSize);
+        page.setCurrent(pageNum);
+
+        IPage<ComSwSafetyWorkRecordVO> iPage = comSwSafetyWorkRecordDAO.pageSafetyWorkRecord(page, comSwPatrolRecordPageDTO);
+        return R.ok(iPage);
+    }
+
+    @Override
+    public R detailSafetyWorkRecord(Long safetyWorkRecordId) {
+        ComSwSafetyWorkRecordDO swSafetyWorkRecordDO = comSwSafetyWorkRecordDAO.selectById(safetyWorkRecordId);
+        if (null == swSafetyWorkRecordDO) {
+            return R.fail("该安全工作记录不存在");
+        }
+        ComSwPatrolRecordReportDO comSwPatrolRecordReportDO = comSwPatrolRecordReportDAO.selectOne(new QueryWrapper<ComSwPatrolRecordReportDO>().lambda().eq(ComSwPatrolRecordReportDO::getReportId, safetyWorkRecordId));
+        ComSwSafetyWorkRecordVO comSwSafetyWorkRecordVO = new ComSwSafetyWorkRecordVO();
+        if (null != comSwPatrolRecordReportDO) {
+            ComSwPatrolRecordDO comSwPatrolRecordDO = comSwPatrolRecordDAO.selectById(comSwPatrolRecordReportDO.getPatrolRecordId());
+            BeanUtils.copyProperties(comSwPatrolRecordDO, comSwSafetyWorkRecordVO);
+        }
+        return R.ok(comSwSafetyWorkRecordVO);
+    }
+
+    @Override
+    public R detailSafetyWorkRecordByPrId(Long patrolRecordId) {
+        ComSwPatrolRecordDO comSwPatrolRecordDO = comSwPatrolRecordDAO.selectById(patrolRecordId);
+        ComSwPatrolRecordReportDO comSwPatrolRecordReportDO = comSwPatrolRecordReportDAO.selectOne(new QueryWrapper<ComSwPatrolRecordReportDO>().lambda().eq(ComSwPatrolRecordReportDO::getPatrolRecordId, patrolRecordId));
+        if (null != comSwPatrolRecordReportDO) {
+            ComSwSafetyWorkRecordDO comSwSafetyWorkRecordDO = comSwSafetyWorkRecordDAO.selectById(comSwPatrolRecordReportDO.getReportId());
+            if (null == comSwSafetyWorkRecordDO) {
+                return R.fail("该安全工作记录不存在");
+            }
+        }
+        ComSwSafetyWorkRecordVO comSwSafetyWorkRecordVO = new ComSwSafetyWorkRecordVO();
+        BeanUtils.copyProperties(comSwPatrolRecordDO, comSwSafetyWorkRecordVO);
+        return R.ok(comSwSafetyWorkRecordVO);
+    }
+}
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/resources/mapper/ComActEasyPhotoActivityDOMapper.xml b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/resources/mapper/ComActEasyPhotoActivityDOMapper.xml
index fbd0943..78272f3 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/resources/mapper/ComActEasyPhotoActivityDOMapper.xml
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/resources/mapper/ComActEasyPhotoActivityDOMapper.xml
@@ -64,6 +64,8 @@
             and id != #{activityId}
         </if>
 
+        and community_id = #{communityId}
+
     </select>
 
     <select id="pageActivityUser" parameterType="com.panzhihua.common.model.dtos.community.easyPhoto.PageEasyPhotoActivityUserDTO"
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/resources/mapper/ComSwDangerReportMapper.xml b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/resources/mapper/ComSwDangerReportMapper.xml
new file mode 100644
index 0000000..bb722f8
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/resources/mapper/ComSwDangerReportMapper.xml
@@ -0,0 +1,157 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.panzhihua.service_community.dao.ComSwDangerReportDAO">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.panzhihua.service_community.model.dos.ComSwDangerReportDO">
+                <id column="id" property="id" />
+                <result column="danger_no" property="dangerNo" />
+                <result column="danger_name" property="dangerName" />
+                <result column="danger_type" property="dangerType" />
+                <result column="status" property="status" />
+                <result column="danger_level" property="dangerLevel" />
+                <result column="check_time" property="checkTime" />
+                <result column="unit_name" property="unitName" />
+                <result column="dager_description" property="dagerDescription" />
+                <result column="is_rectify_immediately" property="isRectifyImmediately" />
+                <result column="take_steps" property="takeSteps" />
+                <result column="steps_photo" property="stepsPhoto" />
+                <result column="rectify_person" property="rectifyPerson" />
+                <result column="rectify_time" property="rectifyTime" />
+                <result column="community_suggestion" property="communitySuggestion" />
+                <result column="street_suggestion" property="streetSuggestion" />
+                <result column="undertake_record" property="undertakeRecord" />
+                <result column="leader_suggestion" property="leaderSuggestion" />
+                <result column="assign_person" property="assignPerson" />
+                <result column="remark" property="remark" />
+                <result column="create_at" property="createAt" />
+                <result column="create_by" property="createBy" />
+                <result column="update_at" property="updateAt" />
+                <result column="update_by" property="updateBy" />
+    </resultMap>
+
+    <!-- 通用查询结果列 -->
+    <sql id="Base_Column_List">
+    id, danger_no, danger_name, danger_type, status, danger_level, check_time, unit_name, dager_description, is_rectify_immediately, take_steps, steps_photo, rectify_person, rectify_time, community_suggestion, street_suggestion, undertake_record, remark, create_at, create_by, update_at, update_by
+    </sql>
+
+    <select id="pageDangerReport" resultType="com.panzhihua.common.model.vos.community.ComSwDangerReportVO">
+        SELECT
+            csdr.id,
+            cspr.community_id AS communityId,
+            cspr.patrol_time AS patrolTime,
+            cspr.weather,
+            cspr.temperature,
+            cspr.wind,
+            cspr.patrol_type AS patrolType,
+            cspr.patrol_person AS patrolPerson,
+            cspr.address,
+            cspr.record_content AS recordContent,
+            cspr.find_record AS findRecord,
+            cspr.record_photo AS recordPhoto,
+            cspr.create_at AS createAt,
+            cspr.create_by AS createBy,
+            csdr.remark,
+            csdr.danger_name AS dangerName,
+            csdr.check_time AS checkTime,
+            csdr.unit_name AS unitName,
+            csdr.dager_description AS dagerDescription,
+            csdr.danger_no AS dangerNo,
+            csdr.danger_type AS dangerType,
+            csdr.status,
+            csdr.danger_level AS dangerLevel,
+            csdr.take_steps AS takeSteps,
+            csdr.steps_photo AS stepsPhoto,
+            csdr.rectify_person AS rectifyPerson,
+            csdr.rectify_time AS rectifyTime,
+            csdr.community_suggestion AS communitySuggestion,
+            csdr.street_suggestion AS streetSuggestion,
+            csdr.undertake_record AS undertakeRecord,
+            csdr.leader_suggestion AS leaderSuggestion,
+            csdr.assign_person AS assignPerson
+        FROM
+            com_sw_danger_report as csdr
+                left join com_sw_patrol_record_report as csprr on csprr.report_id = csdr.id
+                left join com_sw_patrol_record as cspr on csprr.patrol_record_id = cspr.id
+        <where>
+            <if test='comSwPatrolRecordDTO.communityId != null and comSwPatrolRecordDTO.communityId != ""'>
+                AND cspr.community_id = #{comSwPatrolRecordDTO.communityId}
+            </if>
+            <if test='comSwPatrolRecordDTO.patrolPerson != null and comSwPatrolRecordDTO.patrolPerson != ""'>
+                AND cspr.patrol_person LIKE concat('%',#{comSwPatrolRecordDTO.patrolPerson},'%')
+            </if>
+            <if test='comSwPatrolRecordDTO.patrolType != null and comSwPatrolRecordDTO.patrolType != ""'>
+                AND cspr.patrol_type = #{comSwPatrolRecordDTO.patrolType}
+            </if>
+            <if test='comSwPatrolRecordDTO.status != null and comSwPatrolRecordDTO.status != ""'>
+                AND cspr.patrol_type = #{comSwPatrolRecordDTO.patrolType}
+            </if>
+            <if test='comSwPatrolRecordDTO.patrolAtBegin != null '>
+                AND cspr.patrol_time <![CDATA[ >= ]]> #{comSwPatrolRecordDTO.patrolTime}
+            </if>
+            <if test='comSwPatrolRecordDTO.patrolAtEnd != null '>
+                AND cspr.patrol_time <![CDATA[ <= ]]> #{comSwPatrolRecordDTO.patrolTime}
+            </if>
+        </where>
+        order by csdr.create_at desc
+    </select>
+
+    <select id="detailDangerReport" resultType="com.panzhihua.common.model.vos.community.ComSwDangerReportVO">
+        SELECT
+        csdr.id,
+        cspr.community_id AS communityId,
+        cspr.patrol_time AS patrolTime,
+        cspr.weather,
+        cspr.temperature,
+        cspr.wind,
+        cspr.patrol_type AS patrolType,
+        cspr.patrol_person AS patrolPerson,
+        cspr.address,
+        cspr.record_content AS recordContent,
+        cspr.find_record AS findRecord,
+        cspr.record_photo AS recordPhoto,
+        cspr.create_at AS createAt,
+        cspr.create_by AS createBy,
+        csdr.remark,
+        csdr.danger_name AS dangerName,
+        csdr.check_time AS checkTime,
+        csdr.unit_name AS unitName,
+        csdr.dager_description AS dagerDescription,
+        csdr.danger_no AS dangerNo,
+        csdr.danger_type AS dangerType,
+        csdr.status,
+        csdr.danger_level AS dangerLevel,
+        csdr.take_steps AS takeSteps,
+        csdr.steps_photo AS stepsPhoto,
+        csdr.rectify_person AS rectifyPerson,
+        csdr.rectify_time AS rectifyTime,
+        csdr.community_suggestion AS communitySuggestion,
+        csdr.street_suggestion AS streetSuggestion,
+        csdr.undertake_record AS undertakeRecord,
+        csdr.leader_suggestion AS leaderSuggestion,
+        csdr.assign_person AS assignPerson
+        FROM
+        com_sw_danger_report as csdr
+        left join com_sw_patrol_record_report as csprr on csprr.report_id = csdr.id
+        left join com_sw_patrol_record as cspr on csprr.patrol_record_id = cspr.id
+        where csdr.id = #{dangerReportId}
+    </select>
+
+    <select id="exportDangerReport" resultType="com.panzhihua.common.model.vos.community.ComSwDangerReportExcelVO" parameterType="java.util.List">
+        SELECT
+            cspr.patrol_person AS patrolPerson,
+            cspr.address,
+            csdr.remark,
+            csdr.dager_description AS dagerDescription,
+            csdr.danger_type AS dangerType,
+            csdr.danger_level AS dangerLevel
+        FROM
+            com_sw_danger_report as csdr
+                left join com_sw_patrol_record_report as csprr on csprr.report_id = csdr.id
+                left join com_sw_patrol_record as cspr on csprr.patrol_record_id = cspr.id
+        where csdr.id in
+        <foreach collection="dangerReportIds" item="item" open="(" close=")" separator=",">
+            #{item}
+        </foreach>
+    </select>
+</mapper>
\ No newline at end of file
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/resources/mapper/ComSwPatrolRecordMapper.xml b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/resources/mapper/ComSwPatrolRecordMapper.xml
new file mode 100644
index 0000000..3a5fcd3
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/resources/mapper/ComSwPatrolRecordMapper.xml
@@ -0,0 +1,79 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.panzhihua.service_community.dao.ComSwPatrolRecordDAO">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.panzhihua.service_community.model.dos.ComSwPatrolRecordDO">
+                <id column="id" property="id" />
+                <result column="community_id" property="communityId" />
+                <result column="patrol_time" property="patrolTime" />
+                <result column="weather" property="weather" />
+                <result column="temperature" property="temperature" />
+                <result column="wind" property="wind" />
+                <result column="patrol_type" property="patrolType" />
+                <result column="patrol_leader" property="patrolLeader" />
+                <result column="patrol_person" property="patrolPerson" />
+                <result column="address" property="address" />
+                <result column="record_content" property="recordContent" />
+                <result column="find_record" property="findRecord" />
+                <result column="record_photo" property="recordPhoto" />
+                <result column="remark" property="remark" />
+                <result column="succession_leader" property="successionLeader" />
+                <result column="succession_person" property="successionPerson" />
+                <result column="succession_time" property="successionTime" />
+                <result column="is_hidden_danger" property="isHiddenDanger" />
+                <result column="create_at" property="createAt" />
+                <result column="create_by" property="createBy" />
+                <result column="update_at" property="updateAt" />
+                <result column="update_by" property="updateBy" />
+    </resultMap>
+
+    <!-- 通用查询结果列 -->
+    <sql id="Base_Column_List">
+    id, community_id, patrol_time, weather, temperature, wind, patrol_type, patrol_leader, patrol_person, address, record_content, find_record, record_photo, remark, succession_leader, succession_person, succession_time, is_hidden_danger, create_at, create_by, update_at, update_by
+    </sql>
+
+    <select id="pagePatrolRecord" resultType="com.panzhihua.common.model.vos.community.ComSwPatrolRecordVO">
+        SELECT
+            cspr.id,
+            cspr.community_id AS communityId,
+            cspr.patrol_time AS patrolTime,
+            cspr.weather,
+            cspr.temperature,
+            cspr.wind,
+            cspr.patrol_type AS patrolType,
+            cspr.patrol_person AS patrolPerson,
+            cspr.address,
+            cspr.record_content AS recordContent,
+            cspr.find_record AS findRecord,
+            cspr.record_photo AS recordPhoto,
+            cspr.remark,
+            cspr.succession_person AS successionPerson,
+            cspr.succession_time AS successionTime,
+            cspr.create_at AS createAt,
+            cspr.create_by AS createBy,
+            csprr.report_id AS reportId
+        FROM
+            com_sw_patrol_record as cspr
+        left join com_sw_patrol_record_report as csprr on csprr.patrol_record_id = cspr.id
+        <where>
+            <if test='comSwPatrolRecordDTO.communityId != null and comSwPatrolRecordDTO.communityId != ""'>
+                AND cspr.community_id = #{comSwPatrolRecordDTO.communityId}
+            </if>
+            <if test='comSwPatrolRecordDTO.patrolPerson != null and comSwPatrolRecordDTO.patrolPerson != ""'>
+                AND cspr.patrol_person LIKE concat('%',#{comSwPatrolRecordDTO.patrolPerson},'%')
+            </if>
+            <if test='comSwPatrolRecordDTO.patrolType != null and comSwPatrolRecordDTO.patrolType != ""'>
+                AND cspr.patrol_type = #{comSwPatrolRecordDTO.patrolType}
+            </if>
+            <if test='comSwPatrolRecordDTO.patrolAtBegin != null '>
+                AND cspr.patrol_time <![CDATA[ >= ]]> #{comSwPatrolRecordDTO.patrolTime}
+            </if>
+            <if test='comSwPatrolRecordDTO.patrolAtEnd != null '>
+                AND cspr.patrol_time <![CDATA[ <= ]]> #{comSwPatrolRecordDTO.patrolTime}
+            </if>
+        </where>
+        order by cspr.create_at desc
+    </select>
+
+</mapper>
\ No newline at end of file
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/resources/mapper/ComSwPatrolRecordReportMapper.xml b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/resources/mapper/ComSwPatrolRecordReportMapper.xml
new file mode 100644
index 0000000..8ac3a8c
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/resources/mapper/ComSwPatrolRecordReportMapper.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.panzhihua.service_community.dao.ComSwPatrolRecordReportDAO">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.panzhihua.service_community.model.dos.ComSwPatrolRecordReportDO">
+                <id column="id" property="id" />
+                <result column="patrol_record_id" property="patrolRecordId" />
+                <result column="report_id" property="reportId" />
+                <result column="create_at" property="createAt" />
+                <result column="create_by" property="createBy" />
+                <result column="update_at" property="updateAt" />
+                <result column="update_by" property="updateBy" />
+    </resultMap>
+
+    <!-- 通用查询结果列 -->
+    <sql id="Base_Column_List">
+    id, patrol_record_id, report_id, create_at, create_by, update_at, update_by
+    </sql>
+
+</mapper>
\ No newline at end of file
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/resources/mapper/ComSwSafetyWorkRecordMapper.xml b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/resources/mapper/ComSwSafetyWorkRecordMapper.xml
new file mode 100644
index 0000000..88b3522
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/resources/mapper/ComSwSafetyWorkRecordMapper.xml
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.panzhihua.service_community.dao.ComSwSafetyWorkRecordDAO">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.panzhihua.service_community.model.dos.ComSwSafetyWorkRecordDO">
+        <id column="id" property="id" />
+        <result column="remark" property="remark" />
+        <result column="create_at" property="createAt" />
+        <result column="create_by" property="createBy" />
+        <result column="update_at" property="updateAt" />
+        <result column="update_by" property="updateBy" />
+    </resultMap>
+
+    <!-- 通用查询结果列 -->
+    <sql id="Base_Column_List">
+    id, remark, create_at, create_by, update_at, update_by
+    </sql>
+
+    <select id="pageSafetyWorkRecord" resultType="com.panzhihua.common.model.vos.community.ComSwSafetyWorkRecordVO">
+        SELECT
+        csswr.id,
+        cspr.community_id AS communityId,
+        cspr.patrol_time AS patrolTime,
+        cspr.weather,
+        cspr.temperature,
+        cspr.wind,
+        cspr.patrol_type AS patrolType,
+        cspr.patrol_person AS patrolPerson,
+        cspr.address,
+        cspr.record_content AS recordContent,
+        cspr.find_record AS findRecord,
+        cspr.record_photo AS recordPhoto,
+        csswr.remark,
+        cspr.create_at AS createAt,
+        cspr.create_by AS createBy
+        FROM
+        com_sw_safety_work_record as csswr
+        left join com_sw_patrol_record_report as csprr on csprr.report_id = csswr.id
+        left join com_sw_patrol_record as cspr on csprr.patrol_record_id = cspr.id
+        <where>
+            <if test='comSwPatrolRecordDTO.communityId != null and comSwPatrolRecordDTO.communityId != ""'>
+                AND cspr.community_id = #{comSwPatrolRecordDTO.communityId}
+            </if>
+            <if test='comSwPatrolRecordDTO.patrolPerson != null and comSwPatrolRecordDTO.patrolPerson != ""'>
+                AND cspr.patrol_person LIKE concat('%',#{comSwPatrolRecordDTO.patrolPerson},'%')
+            </if>
+            <if test='comSwPatrolRecordDTO.patrolType != null and comSwPatrolRecordDTO.patrolType != ""'>
+                AND cspr.patrol_type = #{comSwPatrolRecordDTO.patrolType}
+            </if>
+            <if test='comSwPatrolRecordDTO.patrolAtBegin != null '>
+                AND cspr.patrol_time <![CDATA[ >= ]]> #{comSwPatrolRecordDTO.patrolTime}
+            </if>
+            <if test='comSwPatrolRecordDTO.patrolAtEnd != null '>
+                AND cspr.patrol_time <![CDATA[ <= ]]> #{comSwPatrolRecordDTO.patrolTime}
+            </if>
+        </where>
+        order by csswr.create_at desc
+    </select>
+
+
+</mapper>
\ No newline at end of file
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_grid/src/main/java/com/panzhihua/service_grid/api/StatisticsApi.java b/springcloud_k8s_panzhihuazhihuishequ/service_grid/src/main/java/com/panzhihua/service_grid/api/StatisticsApi.java
index c843ea2..70a9501 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/service_grid/src/main/java/com/panzhihua/service_grid/api/StatisticsApi.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_grid/src/main/java/com/panzhihua/service_grid/api/StatisticsApi.java
@@ -43,8 +43,8 @@
      * @return  网格统计数据
      */
     @PostMapping("/getGridEventStatistics")
-    public R getGridEventStatisticsByApp(@RequestParam("gridId") Long gridId){
-        return eventService.getGridEventStatisticsByApp(gridId);
+    public R getGridEventStatisticsByApp(@RequestParam("gridId") Long gridId,@RequestParam("userId") Long userId){
+        return eventService.getGridEventStatisticsByApp(gridId,userId);
     }
 
     /**
@@ -56,4 +56,14 @@
     public R getGridEventDetailStatisticsByApp(@RequestBody GridEventStatisticsDTO statisticsDTO){
         return eventService.getGridEventDetailStatisticsByApp(statisticsDTO);
     }
+
+    /**
+     * 查询所有网格员工作汇总数据
+     * @param statisticsAdminDTO    请求参数
+     * @return  网格员工作汇总数据
+     */
+    @PostMapping("/admin/gridMemberStatisticsAll")
+    public R gridMemberStatisticsAll(@RequestBody MemberStatisticsAdminDTO statisticsAdminDTO){
+        return eventService.gridMemberStatisticsAll(statisticsAdminDTO);
+    }
 }
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_grid/src/main/java/com/panzhihua/service_grid/dao/EventGridMemberRelationMapper.java b/springcloud_k8s_panzhihuazhihuishequ/service_grid/src/main/java/com/panzhihua/service_grid/dao/EventGridMemberRelationMapper.java
index 9be7cca..fca8141 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/service_grid/src/main/java/com/panzhihua/service_grid/dao/EventGridMemberRelationMapper.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_grid/src/main/java/com/panzhihua/service_grid/dao/EventGridMemberRelationMapper.java
@@ -68,4 +68,6 @@
 
     List<EventMapGridCascadeVO> getMapGridsListsByApp(@Param("userId") Long userId, @Param("type") Integer type, @Param("communityId") Long communityId);
 
+    List<EventStatisticsMemberAdminVO> gridMemberStatisticsAll(@Param("statisticsAdminDTO") MemberStatisticsAdminDTO statisticsAdminDTO);
+
 }
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_grid/src/main/java/com/panzhihua/service_grid/dao/EventMapper.java b/springcloud_k8s_panzhihuazhihuishequ/service_grid/src/main/java/com/panzhihua/service_grid/dao/EventMapper.java
index 6201eff..e5ff97e 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/service_grid/src/main/java/com/panzhihua/service_grid/dao/EventMapper.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_grid/src/main/java/com/panzhihua/service_grid/dao/EventMapper.java
@@ -137,4 +137,8 @@
     List<CivilVillageStatisticsVO> getCivilScreenVillageList(@Param("communityId") Long communityId);
 
     ScreenDrawEventPopulationTotalVO getVillagePopulationTotal(@Param("villageId") Long villageId);
+
+    List<Map<String,Object>> getMemberBuildName(@Param("userId") Long userId);
+
+    Integer getPopulationByLabelCount(@Param("floor") String floor,@Param("villageId") Long villageId);
 }
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_grid/src/main/java/com/panzhihua/service_grid/service/EventService.java b/springcloud_k8s_panzhihuazhihuishequ/service_grid/src/main/java/com/panzhihua/service_grid/service/EventService.java
index b651f66..3e5592a 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/service_grid/src/main/java/com/panzhihua/service_grid/service/EventService.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_grid/src/main/java/com/panzhihua/service_grid/service/EventService.java
@@ -229,7 +229,7 @@
      * @param gridId    网格id
      * @return  网格统计数据
      */
-    R getGridEventStatisticsByApp(Long gridId);
+    R getGridEventStatisticsByApp(Long gridId,Long userId);
 
     /**
      * 查询网格事件统计数据
@@ -290,4 +290,11 @@
      * @return  小区统计数据
      */
     R civilVillageStatistics(Long villageId);
+
+    /**
+     * 查询所有网格员工作汇总数据
+     * @param statisticsAdminDTO    请求参数
+     * @return  网格员工作汇总数据
+     */
+    R gridMemberStatisticsAll(MemberStatisticsAdminDTO statisticsAdminDTO);
 }
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_grid/src/main/java/com/panzhihua/service_grid/service/impl/EventGridDataServiceImpl.java b/springcloud_k8s_panzhihuazhihuishequ/service_grid/src/main/java/com/panzhihua/service_grid/service/impl/EventGridDataServiceImpl.java
index 72f9e52..6dee69f 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/service_grid/src/main/java/com/panzhihua/service_grid/service/impl/EventGridDataServiceImpl.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_grid/src/main/java/com/panzhihua/service_grid/service/impl/EventGridDataServiceImpl.java
@@ -12,6 +12,7 @@
 import com.panzhihua.common.model.dtos.grid.PageEventGridDataDTO;
 import com.panzhihua.common.model.vos.R;
 import com.panzhihua.common.model.vos.grid.*;
+import com.panzhihua.common.utlis.Snowflake;
 import com.panzhihua.service_grid.dao.*;
 import com.panzhihua.service_grid.model.dos.*;
 import com.panzhihua.service_grid.service.EventGridDataService;
@@ -206,11 +207,22 @@
 
                 if(eventGridDataDTO.getLcGridId() != null){
                     //关联市平台网格
-                    LcCompareCodeDO compareCodeDO = lcCompareCodeMapper.selectById(eventGridDataDTO.getLcGridId());
+                    LcCompareCodeDO compareCodeDO = lcCompareCodeMapper.selectOne(new QueryWrapper<LcCompareCodeDO>().lambda()
+                            .eq(LcCompareCodeDO::getLcGridId,eventGridDataDTO.getLcGridId()));
                     if(compareCodeDO != null){
                         compareCodeDO.setLocalGridId(gridDataDO.getId().toString());
                         compareCodeDO.setGridName(gridDataDO.getGridName());
+                        compareCodeDO.setUpdateAt(new Date());
                         lcCompareCodeMapper.updateById(compareCodeDO);
+                    }else{
+                        compareCodeDO = new LcCompareCodeDO();
+                        compareCodeDO.setId(Snowflake.getId());
+                        compareCodeDO.setLocalGridId(gridDataDO.getId().toString());
+                        compareCodeDO.setGridName(gridDataDO.getGridName());
+                        compareCodeDO.setLcGridId(eventGridDataDTO.getLcGridId());
+                        compareCodeDO.setLcGridName(eventGridDataDTO.getLcGridName());
+                        compareCodeDO.setCreateAt(new Date());
+                        lcCompareCodeMapper.insert(compareCodeDO);
                     }
                 }
                 return R.ok();
@@ -255,24 +267,29 @@
                     }
                 }
 
+                //查询已存在的关系需要清除
+                lcCompareCodeMapper.delete(new QueryWrapper<LcCompareCodeDO>()
+                        .lambda().eq(LcCompareCodeDO::getLocalGridId,gridDataDO.getId()));
                 if(eventGridDataDTO.getLcGridId() != null){
-
-                    //查询已存在的关系需要清除
-                    LcCompareCodeDO oldCompareCodeDO = lcCompareCodeMapper.selectOne(new QueryWrapper<LcCompareCodeDO>()
-                            .lambda().eq(LcCompareCodeDO::getLocalGridId,gridDataDO.getId()));
-                    if(oldCompareCodeDO != null){
-                        lcCompareCodeMapper.updateLcCompareCode(gridDataDO.getId());
-                    }
-
                     //关联市平台网格
-                    LcCompareCodeDO compareCodeDO = lcCompareCodeMapper.selectById(eventGridDataDTO.getLcGridId());
+                    LcCompareCodeDO compareCodeDO = lcCompareCodeMapper.selectOne(new QueryWrapper<LcCompareCodeDO>().lambda()
+                            .eq(LcCompareCodeDO::getLcGridId,eventGridDataDTO.getLcGridId()));
                     if(compareCodeDO != null){
                         compareCodeDO.setLocalGridId(gridDataDO.getId().toString());
                         compareCodeDO.setGridName(gridDataDO.getGridName());
+                        compareCodeDO.setUpdateAt(new Date());
                         lcCompareCodeMapper.updateById(compareCodeDO);
+                    }else{
+                        compareCodeDO = new LcCompareCodeDO();
+                        compareCodeDO.setId(Snowflake.getId());
+                        compareCodeDO.setLocalGridId(gridDataDO.getId().toString());
+                        compareCodeDO.setGridName(gridDataDO.getGridName());
+                        compareCodeDO.setLcGridId(eventGridDataDTO.getLcGridId());
+                        compareCodeDO.setLcGridName(eventGridDataDTO.getLcGridName());
+                        compareCodeDO.setCreateAt(new Date());
+                        lcCompareCodeMapper.insert(compareCodeDO);
                     }
                 }
-
                 return R.ok();
             }
         }
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_grid/src/main/java/com/panzhihua/service_grid/service/impl/EventServiceImpl.java b/springcloud_k8s_panzhihuazhihuishequ/service_grid/src/main/java/com/panzhihua/service_grid/service/impl/EventServiceImpl.java
index 5a8f15f..7e80a09 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/service_grid/src/main/java/com/panzhihua/service_grid/service/impl/EventServiceImpl.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_grid/src/main/java/com/panzhihua/service_grid/service/impl/EventServiceImpl.java
@@ -1927,11 +1927,24 @@
      * @return  网格统计数据
      */
     @Override
-    public R getGridEventStatisticsByApp(Long gridId){
+    public R getGridEventStatisticsByApp(Long gridId,Long userId){
         GridEventStatisticsVO result = this.baseMapper.getGridEventStatisticsByApp(gridId);
         if(result != null){
             result.setTodayNum(result.getTodayNum() + result.getZfTodayNum());
             result.setMonthNum(result.getMonthNum() + result.getZfMonthNum());
+
+            //查询当前网格员下管理的楼栋名称
+            List<Map<String,Object>> buildNameList = this.baseMapper.getMemberBuildName(userId);
+            Integer specialTotal = 0;
+            if(!buildNameList.isEmpty()){
+                for (Map<String,Object> buildMap:buildNameList) {
+                    String buildName = buildMap.get("name").toString();
+                    Long villageId = Long.parseLong(buildMap.get("village_id").toString());
+                    Integer num = this.baseMapper.getPopulationByLabelCount(buildName,villageId);
+                    specialTotal += num;
+                }
+            }
+            result.setSpecialTotal(specialTotal);
         }
         return R.ok(result);
     }
@@ -2551,4 +2564,14 @@
         result.setVillageTotal(1);
         return R.ok(result);
     }
+
+    /**
+     * 查询所有网格员工作汇总数据
+     * @param statisticsAdminDTO    请求参数
+     * @return  网格员工作汇总数据
+     */
+    @Override
+    public R gridMemberStatisticsAll(MemberStatisticsAdminDTO statisticsAdminDTO){
+        return R.ok(eventGridMemberRelationMapper.gridMemberStatisticsAll(statisticsAdminDTO));
+    }
 }
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_grid/src/main/resources/mapper/EventGridMemberRelationMapper.xml b/springcloud_k8s_panzhihuazhihuishequ/service_grid/src/main/resources/mapper/EventGridMemberRelationMapper.xml
index 3e154b4..13f4ffc 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/service_grid/src/main/resources/mapper/EventGridMemberRelationMapper.xml
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_grid/src/main/resources/mapper/EventGridMemberRelationMapper.xml
@@ -384,4 +384,250 @@
 		</if>
 	</select>
 
+	<select id="gridMemberStatisticsAll" resultType="com.panzhihua.common.model.vos.grid.EventStatisticsMemberAdminVO"
+			parameterType="com.panzhihua.common.model.dtos.grid.MemberStatisticsAdminDTO">
+		SELECT DISTINCT
+		su.nick_name,(
+		SELECT
+		count( id )
+		FROM
+		`event`
+		WHERE
+		event_category = 1
+		AND event_type = 5
+		AND event_status = 2
+		AND grid_member_id = su.user_id
+		<if test="statisticsAdminDTO.startTime!=null and statisticsAdminDTO.startTime != &quot;&quot;">
+			AND DATE_FORMAT(create_at,'%Y-%m-%d %H:%i:%s') <![CDATA[ >= ]]> #{statisticsAdminDTO.startTime}
+		</if>
+		<if test="statisticsAdminDTO.endTime!=null and statisticsAdminDTO.endTime != &quot;&quot;">
+			AND DATE_FORMAT(create_at,'%Y-%m-%d %H:%i:%s') <![CDATA[ <= ]]> #{statisticsAdminDTO.endTime}
+		</if>
+		) AS addTFTotal,
+		(
+		SELECT
+		count( id )
+		FROM
+		`event`
+		WHERE
+		event_category = 1
+		AND event_type = 5
+		AND event_status = 2
+		AND event_process_status = 2
+		AND process_user_id = su.user_id
+		<if test="statisticsAdminDTO.startTime!=null and statisticsAdminDTO.startTime != &quot;&quot;">
+			AND DATE_FORMAT(create_at,'%Y-%m-%d %H:%i:%s') <![CDATA[ >= ]]> #{statisticsAdminDTO.startTime}
+		</if>
+		<if test="statisticsAdminDTO.endTime!=null and statisticsAdminDTO.endTime != &quot;&quot;">
+			AND DATE_FORMAT(create_at,'%Y-%m-%d %H:%i:%s') <![CDATA[ <= ]]> #{statisticsAdminDTO.endTime}
+		</if>
+		) AS handleTFTotal,(
+		SELECT
+		count( id )
+		FROM
+		`event`
+		WHERE
+		event_category = 1
+		AND event_type = 3
+		AND event_status = 2
+		AND grid_member_id = su.user_id
+		<if test="statisticsAdminDTO.startTime!=null and statisticsAdminDTO.startTime != &quot;&quot;">
+			AND DATE_FORMAT(create_at,'%Y-%m-%d %H:%i:%s') <![CDATA[ >= ]]> #{statisticsAdminDTO.startTime}
+		</if>
+		<if test="statisticsAdminDTO.endTime!=null and statisticsAdminDTO.endTime != &quot;&quot;">
+			AND DATE_FORMAT(create_at,'%Y-%m-%d %H:%i:%s') <![CDATA[ <= ]]> #{statisticsAdminDTO.endTime}
+		</if>
+		) AS addMDTotal,
+		(
+		SELECT
+		count( id )
+		FROM
+		`event`
+		WHERE
+		event_category = 1
+		AND event_type = 3
+		AND event_status = 2
+		AND event_process_status = 2
+		AND process_user_id = su.user_id
+		<if test="statisticsAdminDTO.startTime!=null and statisticsAdminDTO.startTime != &quot;&quot;">
+			AND DATE_FORMAT(create_at,'%Y-%m-%d %H:%i:%s') <![CDATA[ >= ]]> #{statisticsAdminDTO.startTime}
+		</if>
+		<if test="statisticsAdminDTO.endTime!=null and statisticsAdminDTO.endTime != &quot;&quot;">
+			AND DATE_FORMAT(create_at,'%Y-%m-%d %H:%i:%s') <![CDATA[ <= ]]> #{statisticsAdminDTO.endTime}
+		</if>
+		) AS handleMDTotal,(
+		SELECT
+		count( id )
+		FROM
+		`event`
+		WHERE
+		event_category = 1
+		AND event_type = 1
+		AND event_status = 2
+		AND grid_member_id = su.user_id
+		<if test="statisticsAdminDTO.startTime!=null and statisticsAdminDTO.startTime != &quot;&quot;">
+			AND DATE_FORMAT(create_at,'%Y-%m-%d %H:%i:%s') <![CDATA[ >= ]]> #{statisticsAdminDTO.startTime}
+		</if>
+		<if test="statisticsAdminDTO.endTime!=null and statisticsAdminDTO.endTime != &quot;&quot;">
+			AND DATE_FORMAT(create_at,'%Y-%m-%d %H:%i:%s') <![CDATA[ <= ]]> #{statisticsAdminDTO.endTime}
+		</if>
+		) AS addZATotal,
+		(
+		SELECT
+		count( id )
+		FROM
+		`event`
+		WHERE
+		event_category = 1
+		AND event_type = 1
+		AND event_status = 2
+		AND event_process_status = 2
+		AND process_user_id = su.user_id
+		<if test="statisticsAdminDTO.startTime!=null and statisticsAdminDTO.startTime != &quot;&quot;">
+			AND DATE_FORMAT(create_at,'%Y-%m-%d %H:%i:%s') <![CDATA[ >= ]]> #{statisticsAdminDTO.startTime}
+		</if>
+		<if test="statisticsAdminDTO.endTime!=null and statisticsAdminDTO.endTime != &quot;&quot;">
+			AND DATE_FORMAT(create_at,'%Y-%m-%d %H:%i:%s') <![CDATA[ <= ]]> #{statisticsAdminDTO.endTime}
+		</if>
+		) AS handleZATotal,(
+		SELECT
+		count( id )
+		FROM
+		`event`
+		WHERE
+		event_category = 1
+		AND event_type = 4
+		AND event_status = 2
+		AND grid_member_id = su.user_id
+		<if test="statisticsAdminDTO.startTime!=null and statisticsAdminDTO.startTime != &quot;&quot;">
+			AND DATE_FORMAT(create_at,'%Y-%m-%d %H:%i:%s') <![CDATA[ >= ]]> #{statisticsAdminDTO.startTime}
+		</if>
+		<if test="statisticsAdminDTO.endTime!=null and statisticsAdminDTO.endTime != &quot;&quot;">
+			AND DATE_FORMAT(create_at,'%Y-%m-%d %H:%i:%s') <![CDATA[ <= ]]> #{statisticsAdminDTO.endTime}
+		</if>
+		) AS addBWDTotal,
+		(
+		SELECT
+		count( id )
+		FROM
+		`event`
+		WHERE
+		event_category = 1
+		AND event_type = 4
+		AND event_status = 2
+		AND event_process_status = 2
+		AND process_user_id = su.user_id
+		<if test="statisticsAdminDTO.startTime!=null and statisticsAdminDTO.startTime != &quot;&quot;">
+			AND DATE_FORMAT(create_at,'%Y-%m-%d %H:%i:%s') <![CDATA[ >= ]]> #{statisticsAdminDTO.startTime}
+		</if>
+		<if test="statisticsAdminDTO.endTime!=null and statisticsAdminDTO.endTime != &quot;&quot;">
+			AND DATE_FORMAT(create_at,'%Y-%m-%d %H:%i:%s') <![CDATA[ <= ]]> #{statisticsAdminDTO.endTime}
+		</if>
+		) AS handleBWDTotal,(
+		SELECT
+		count( id )
+		FROM
+		`event`
+		WHERE
+		event_category = 1
+		AND event_type = 2
+		AND event_status = 2
+		AND grid_member_id = su.user_id
+		<if test="statisticsAdminDTO.startTime!=null and statisticsAdminDTO.startTime != &quot;&quot;">
+			AND DATE_FORMAT(create_at,'%Y-%m-%d %H:%i:%s') <![CDATA[ >= ]]> #{statisticsAdminDTO.startTime}
+		</if>
+		<if test="statisticsAdminDTO.endTime!=null and statisticsAdminDTO.endTime != &quot;&quot;">
+			AND DATE_FORMAT(create_at,'%Y-%m-%d %H:%i:%s') <![CDATA[ <= ]]> #{statisticsAdminDTO.endTime}
+		</if>
+		) AS addGGTotal,
+		(
+		SELECT
+		count( id )
+		FROM
+		`event`
+		WHERE
+		event_category = 1
+		AND event_type = 2
+		AND event_status = 2
+		AND event_process_status = 2
+		AND process_user_id = su.user_id
+		<if test="statisticsAdminDTO.startTime!=null and statisticsAdminDTO.startTime != &quot;&quot;">
+			AND DATE_FORMAT(create_at,'%Y-%m-%d %H:%i:%s') <![CDATA[ >= ]]> #{statisticsAdminDTO.startTime}
+		</if>
+		<if test="statisticsAdminDTO.endTime!=null and statisticsAdminDTO.endTime != &quot;&quot;">
+			AND DATE_FORMAT(create_at,'%Y-%m-%d %H:%i:%s') <![CDATA[ <= ]]> #{statisticsAdminDTO.endTime}
+		</if>
+		) AS handleGGTotal,(
+		SELECT
+		count( id )
+		FROM
+		`event`
+		WHERE
+		event_category = 1
+		AND event_type = 6
+		AND event_status = 2
+		AND grid_member_id = su.user_id
+		<if test="statisticsAdminDTO.startTime!=null and statisticsAdminDTO.startTime != &quot;&quot;">
+			AND DATE_FORMAT(create_at,'%Y-%m-%d %H:%i:%s') <![CDATA[ >= ]]> #{statisticsAdminDTO.startTime}
+		</if>
+		<if test="statisticsAdminDTO.endTime!=null and statisticsAdminDTO.endTime != &quot;&quot;">
+			AND DATE_FORMAT(create_at,'%Y-%m-%d %H:%i:%s') <![CDATA[ <= ]]> #{statisticsAdminDTO.endTime}
+		</if>
+		) AS addTSTotal,
+		(
+		SELECT
+		count( id )
+		FROM
+		`event`
+		WHERE
+		event_category = 1
+		AND event_type = 6
+		AND event_status = 2
+		AND event_process_status = 2
+		AND process_user_id = su.user_id
+		<if test="statisticsAdminDTO.startTime!=null and statisticsAdminDTO.startTime != &quot;&quot;">
+			AND DATE_FORMAT(create_at,'%Y-%m-%d %H:%i:%s') <![CDATA[ >= ]]> #{statisticsAdminDTO.startTime}
+		</if>
+		<if test="statisticsAdminDTO.endTime!=null and statisticsAdminDTO.endTime != &quot;&quot;">
+			AND DATE_FORMAT(create_at,'%Y-%m-%d %H:%i:%s') <![CDATA[ <= ]]> #{statisticsAdminDTO.endTime}
+		</if>
+		) AS handleTSTotal,
+		( SELECT count( id ) FROM event_visiting_tasks WHERE grid_member = su.user_id AND event_status = 2
+		<if test="statisticsAdminDTO.startTime!=null and statisticsAdminDTO.startTime != &quot;&quot;">
+			AND DATE_FORMAT(submit_date,'%Y-%m-%d %H:%i:%s') <![CDATA[ >= ]]> #{statisticsAdminDTO.startTime}
+		</if>
+		<if test="statisticsAdminDTO.endTime!=null and statisticsAdminDTO.endTime != &quot;&quot;">
+			AND DATE_FORMAT(submit_date,'%Y-%m-%d %H:%i:%s') <![CDATA[ <= ]]> #{statisticsAdminDTO.endTime}
+		</if>
+		) AS handleZFTotal,
+		( SELECT count( id ) FROM com_act_easy_photo WHERE handle_status = 2 AND handler_id = su.user_id
+		<if test="statisticsAdminDTO.startTime!=null and statisticsAdminDTO.startTime != &quot;&quot;">
+			AND DATE_FORMAT(feedback_at,'%Y-%m-%d %H:%i:%s') <![CDATA[ >= ]]> #{statisticsAdminDTO.startTime}
+		</if>
+		<if test="statisticsAdminDTO.endTime!=null and statisticsAdminDTO.endTime != &quot;&quot;">
+			AND DATE_FORMAT(feedback_at,'%Y-%m-%d %H:%i:%s') <![CDATA[ <= ]]> #{statisticsAdminDTO.endTime}
+		</if>
+		) AS easyPhotoTotal,
+		( SELECT count( id ) FROM `event` WHERE event_category = 2 AND event_status = 2 AND grid_member_id = su.user_id
+		<if test="statisticsAdminDTO.startTime!=null and statisticsAdminDTO.startTime != &quot;&quot;">
+			AND DATE_FORMAT(create_at,'%Y-%m-%d %H:%i:%s') <![CDATA[ >= ]]> #{statisticsAdminDTO.startTime}
+		</if>
+		<if test="statisticsAdminDTO.endTime!=null and statisticsAdminDTO.endTime != &quot;&quot;">
+			AND DATE_FORMAT(create_at,'%Y-%m-%d %H:%i:%s') <![CDATA[ <= ]]> #{statisticsAdminDTO.endTime}
+		</if>
+		) AS propagandaEducationTotal
+		FROM
+		sys_user AS su
+		LEFT JOIN `event` AS e ON su.user_id = e.grid_member_id
+		WHERE
+		su.type = 6
+		<if test="statisticsAdminDTO.communityId!=null">
+			AND su.community_id = #{statisticsAdminDTO.communityId}
+		</if>
+		<if test="statisticsAdminDTO.nickName!=null and statisticsAdminDTO.nickName != &quot;&quot;">
+			AND su.nick_name like concat (#{statisticsAdminDTO.nickName},'%')
+		</if>
+		ORDER BY su.create_at desc
+	</select>
+
 </mapper>
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_grid/src/main/resources/mapper/EventMapper.xml b/springcloud_k8s_panzhihuazhihuishequ/service_grid/src/main/resources/mapper/EventMapper.xml
index 49eae79..9b774e6 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/service_grid/src/main/resources/mapper/EventMapper.xml
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_grid/src/main/resources/mapper/EventMapper.xml
@@ -604,26 +604,6 @@
 				</if>) AS educationNum,
 			(
 			SELECT
-				count( id )
-			FROM
-				`event`
-			WHERE
-				event_category = 1
-				AND event_type = 6
-				AND event_status = 2
-				AND event_process_status = 2
-				AND process_date BETWEEN DATE_FORMAT( CURDATE(), '%Y-%m-%d %H:%i:%s' )
-			AND NOW()
-			<if test="gridId!=null">
-				AND grid_id = #{gridId}
-			</if>
-			) AS todaySpecialTotal,
-			( SELECT count( id ) FROM `event` WHERE event_category = 1 AND event_type = 6 AND event_status = 2 AND event_process_status = 2
-				<if test="gridId!=null">
-					AND grid_id = #{gridId}
-				</if>) AS specialTotal,
-			(
-			SELECT
 				count( cmph.id )
 			FROM
 				com_mng_population_house AS cmph
@@ -640,7 +620,7 @@
 		event_visiting_tasks
 		WHERE
 		event_status = 2 AND submit_date BETWEEN DATE_FORMAT( CURDATE(), '%Y-%m-%d %H:%i:%s' )
-		AND NOW()
+		AND DATE_SUB( DATE_ADD(CURDATE(), INTERVAL 1 DAY),INTERVAL 1 SECOND)
 		<if test="gridId!=null">
 			AND grid_id = #{gridId}
 		</if>
@@ -864,10 +844,10 @@
 					AND grid_id = #{statisticsDTO.gridId}
 				</if>
 				<if test='statisticsDTO.startTime != null and statisticsDTO.startTime != &quot;&quot;'>
-					AND create_at <![CDATA[ >= ]]> #{statisticsDTO.startTime}
+					AND submit_date <![CDATA[ >= ]]> #{statisticsDTO.startTime}
 				</if>
 				<if test='statisticsDTO.endTime != null and statisticsDTO.endTime != &quot;&quot;'>
-					AND create_at <![CDATA[ <= ]]> #{statisticsDTO.endTime}
+					AND submit_date <![CDATA[ <= ]]> #{statisticsDTO.endTime}
 				</if>
 			) AS eventZFTotal,
 			(
@@ -1351,4 +1331,18 @@
 			village_id = #{villageId}
 	</select>
 
+	<select id="getMemberBuildName" resultType="Map">
+		SELECT
+			cmb.`name`,egmbr.village_id
+		FROM
+			event_grid_member_building_relation AS egmbr
+			LEFT JOIN com_mng_building AS cmb ON cmb.id = egmbr.building_id
+		WHERE
+			egmbr.grid_member_id = #{userId}
+	</select>
+
+	<select id="getPopulationByLabelCount" resultType="Integer">
+		select count(id) from com_mng_population where label is not null and village_id = #{villageId} and floor = #{floor}
+	</select>
+
 </mapper>
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_partybuilding/src/main/java/com/panzhihua/service_dangjian/api/PartyBuildIngApi.java b/springcloud_k8s_panzhihuazhihuishequ/service_partybuilding/src/main/java/com/panzhihua/service_dangjian/api/PartyBuildIngApi.java
index 52340a0..603bf22 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/service_partybuilding/src/main/java/com/panzhihua/service_dangjian/api/PartyBuildIngApi.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_partybuilding/src/main/java/com/panzhihua/service_dangjian/api/PartyBuildIngApi.java
@@ -55,9 +55,8 @@
      * @return 党组织集合
      */
     @PostMapping("listpartyorganizationAll")
-    public R listPartyOrganizationAll(@RequestParam("communityId") Long communityId){
-        List<PartyOrganizationVO> partyOrganizationVOS=partyOrganizationService.listPartyOrganizationAll(communityId);
-        return R.ok(partyOrganizationVOS);
+    public R listPartyOrganizationAll(@RequestBody PartyOrganizationVO partyOrganizationVO){
+        return partyOrganizationService.listPartyOrganizationAll(partyOrganizationVO);
     }
     
     /**
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_partybuilding/src/main/java/com/panzhihua/service_dangjian/dao/ComPbOrgDAO.java b/springcloud_k8s_panzhihuazhihuishequ/service_partybuilding/src/main/java/com/panzhihua/service_dangjian/dao/ComPbOrgDAO.java
index dffb122..0fae03e 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/service_partybuilding/src/main/java/com/panzhihua/service_dangjian/dao/ComPbOrgDAO.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_partybuilding/src/main/java/com/panzhihua/service_dangjian/dao/ComPbOrgDAO.java
@@ -1,8 +1,14 @@
 package com.panzhihua.service_dangjian.dao;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.panzhihua.common.model.vos.partybuilding.PartyOrganizationVO;
 import com.panzhihua.service_dangjian.model.dos.ComPbOrgDO;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+
 /**
  * @program: springcloud_k8s_panzhihuazhihuishequ
  * @description: 党组织
@@ -11,5 +17,8 @@
  **/
 @Mapper
 public interface ComPbOrgDAO extends BaseMapper<ComPbOrgDO> {
+
+    @Select("select id,`name`,`status` from com_pb_org where community_id = #{partyOrganizationVO.communityId}")
+    IPage<PartyOrganizationVO> listPartyOrganizationAll(Page page, @Param("partyOrganizationVO") PartyOrganizationVO partyOrganizationVO);
 	
 }
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_partybuilding/src/main/java/com/panzhihua/service_dangjian/model/dos/ComPbDynDO.java b/springcloud_k8s_panzhihuazhihuishequ/service_partybuilding/src/main/java/com/panzhihua/service_dangjian/model/dos/ComPbDynDO.java
index aee1bb1..3097ca1 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/service_partybuilding/src/main/java/com/panzhihua/service_dangjian/model/dos/ComPbDynDO.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_partybuilding/src/main/java/com/panzhihua/service_dangjian/model/dos/ComPbDynDO.java
@@ -1,8 +1,6 @@
 package com.panzhihua.service_dangjian.model.dos;
 
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.*;
 import lombok.Data;
 
 import java.io.Serializable;
@@ -43,6 +41,7 @@
     /**
      * 封面url
      */
+    @TableField(value = "cover", updateStrategy  = FieldStrategy.IGNORED)
     private String cover;
 
     /**
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_partybuilding/src/main/java/com/panzhihua/service_dangjian/service/PartyOrganizationService.java b/springcloud_k8s_panzhihuazhihuishequ/service_partybuilding/src/main/java/com/panzhihua/service_dangjian/service/PartyOrganizationService.java
index 7c3b14b..d370cb4 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/service_partybuilding/src/main/java/com/panzhihua/service_dangjian/service/PartyOrganizationService.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_partybuilding/src/main/java/com/panzhihua/service_dangjian/service/PartyOrganizationService.java
@@ -22,7 +22,7 @@
      * 平台所有的党组织
      * @return 党组织集合
      */
-    List<PartyOrganizationVO> listPartyOrganizationAll(Long communityId);
+    R listPartyOrganizationAll(PartyOrganizationVO partyOrganizationVO);
     /**
      * 新增党支部
      * @param partyOrganizationVO 党支部基本信息
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_partybuilding/src/main/java/com/panzhihua/service_dangjian/service/impl/ComPbMemberServiceImpl.java b/springcloud_k8s_panzhihuazhihuishequ/service_partybuilding/src/main/java/com/panzhihua/service_dangjian/service/impl/ComPbMemberServiceImpl.java
index aca0448..c89e282 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/service_partybuilding/src/main/java/com/panzhihua/service_dangjian/service/impl/ComPbMemberServiceImpl.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_partybuilding/src/main/java/com/panzhihua/service_dangjian/service/impl/ComPbMemberServiceImpl.java
@@ -141,8 +141,7 @@
         List<ComPbMemberDO> comPbMemberDOS=new ArrayList<>();
         if (!ObjectUtils.isEmpty(list)) {
             List<PartyOrganizationVO> partyOrganizationVOArrayList=partyOrganizationVOS;
-            list.forEach(partyBuildingMemberExcelVO -> {
-
+            for (PartyBuildingMemberExcelVO partyBuildingMemberExcelVO:list) {
                 ComPbMemberDO comPbMemberDO=new ComPbMemberDO();
                 Date date=new Date();
                 comPbMemberDO.setUpdateAt(date);
@@ -150,7 +149,7 @@
                 String orgName = partyBuildingMemberExcelVO.getOrgName();
                 List<PartyOrganizationVO> collect = partyOrganizationVOArrayList.stream().filter(partyOrganizationVO -> orgName.equals(partyOrganizationVO.getName())).collect(Collectors.toList());
                 if (ObjectUtils.isEmpty(collect)) {
-                    throw new PartyBuildingMemberException("导入失败,组织不存在"+partyBuildingMemberExcelVO.getOrgName());
+                    throw new PartyBuildingMemberException("导入失败,组织不存在"+partyBuildingMemberExcelVO.getOrgName() + ",请先在“党支部管理”中添加该党支部");
                 }else{
                     PartyOrganizationVO partyOrganizationVO = collect.get(0);
                     comPbMemberDO.setOrgId(partyOrganizationVO.getId());
@@ -161,7 +160,12 @@
                             .eq(ComPbMemberDO::getCommunityId,partyOrganizationVO.getCommunityId())
                             .in(ComPbMemberDO::getAuditResult,0,1));
                     if(!comPbMemberDOList.isEmpty()){
-                        throw new PartyBuildingMemberException("导入失败,您导入的数据中有已存在的党员信息,已存在的数据:"+ partyBuildingMemberExcelVO.getEmploymentTime() + ",已存在的人名:" + partyBuildingMemberExcelVO.getName());
+                        comPbMemberDOList.forEach(comPbMember -> {
+                            BeanUtils.copyProperties(partyBuildingMemberExcelVO,comPbMember);
+                            this.baseMapper.updateById(comPbMember);
+                        });
+                        continue;
+//                        throw new PartyBuildingMemberException("导入失败,您导入的数据中有已存在的党员信息,已存在的数据:"+ partyBuildingMemberExcelVO.getEmploymentTime() + ",已存在的人名:" + partyBuildingMemberExcelVO.getName());
                     }
                 }
 
@@ -190,7 +194,7 @@
                 comPbMemberDO.setName(partyBuildingMemberExcelVO.getName());
                 comPbMemberDO.setIdCard(partyBuildingMemberExcelVO.getIdCard());
                 comPbMemberDOS.add(comPbMemberDO);
-            });
+            }
         }
         this.saveBatch(comPbMemberDOS);
         return R.ok();
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_partybuilding/src/main/java/com/panzhihua/service_dangjian/service/impl/PartyOrganizationServiceImpl.java b/springcloud_k8s_panzhihuazhihuishequ/service_partybuilding/src/main/java/com/panzhihua/service_dangjian/service/impl/PartyOrganizationServiceImpl.java
index f9f0154..f5a37e3 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/service_partybuilding/src/main/java/com/panzhihua/service_dangjian/service/impl/PartyOrganizationServiceImpl.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_partybuilding/src/main/java/com/panzhihua/service_dangjian/service/impl/PartyOrganizationServiceImpl.java
@@ -2,6 +2,8 @@
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.panzhihua.common.model.dtos.partybuilding.ComListPartyDTO;
 import com.panzhihua.common.model.vos.R;
 import com.panzhihua.common.model.vos.partybuilding.PartyOrganizationVO;
@@ -62,23 +64,16 @@
 	 * @return 党组织集合
 	 */
 	@Override
-	public List<PartyOrganizationVO> listPartyOrganizationAll(Long communityId) {
-		List<PartyOrganizationVO> partyOrganizationVOS = new ArrayList<>();
-		List<ComPbOrgDO> comPbOrgDOS = comPbOrgDAO
-				.selectList(new QueryWrapper<ComPbOrgDO>().lambda().eq(ComPbOrgDO::getCommunityId, communityId));
-		if (!ObjectUtils.isEmpty(comPbOrgDOS)) {
-			comPbOrgDOS.forEach(comPbOrgDO -> {
-				PartyOrganizationVO partyOrganizationVO = new PartyOrganizationVO();
+	public R listPartyOrganizationAll(PartyOrganizationVO partyOrganizationVO) {
+		IPage<PartyOrganizationVO> orgPgaeList = this.comPbOrgDAO.listPartyOrganizationAll(new Page(partyOrganizationVO.getPageNum(),partyOrganizationVO.getPageSize()),partyOrganizationVO);
+		if (!ObjectUtils.isEmpty(orgPgaeList.getRecords())) {
+			orgPgaeList.getRecords().forEach(comPbOrgDO -> {
 				List<ComPbMemberDO> comPbMemberDOs = comPbMemberDAO.selectList(
 						new QueryWrapper<ComPbMemberDO>().lambda().eq(ComPbMemberDO::getOrgId, comPbOrgDO.getId()));
-				partyOrganizationVO.setId(comPbOrgDO.getId());
-				partyOrganizationVO.setName(comPbOrgDO.getName());
-				partyOrganizationVO.setStatus(comPbOrgDO.getStatus());
-				partyOrganizationVO.setCountPerson(comPbMemberDOs.size());
-				partyOrganizationVOS.add(partyOrganizationVO);
+				comPbOrgDO.setCountPerson(comPbMemberDOs.size());
 			});
 		}
-		return partyOrganizationVOS;
+		return R.ok(orgPgaeList);
 	}
 
 	/**
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_user/src/main/java/com/panzhihua/service_user/dao/LcCompareMemberCodeMapper.java b/springcloud_k8s_panzhihuazhihuishequ/service_user/src/main/java/com/panzhihua/service_user/dao/LcCompareMemberCodeMapper.java
new file mode 100644
index 0000000..7326bd8
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_user/src/main/java/com/panzhihua/service_user/dao/LcCompareMemberCodeMapper.java
@@ -0,0 +1,19 @@
+package com.panzhihua.service_user.dao;
+
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.panzhihua.service_user.model.dos.LcCompareCodeMemberDO;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * program 攀枝花智慧社区项目
+ * description 本地网格和浪潮的对码表管理API
+ *
+ * @author manailin
+ * Date 2021-01-22 15:30
+ **/
+@Mapper
+public interface LcCompareMemberCodeMapper extends BaseMapper<LcCompareCodeMemberDO> {
+
+
+}
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_user/src/main/java/com/panzhihua/service_user/dao/UserDao.java b/springcloud_k8s_panzhihuazhihuishequ/service_user/src/main/java/com/panzhihua/service_user/dao/UserDao.java
index 27b094b..c5b6c75 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/service_user/src/main/java/com/panzhihua/service_user/dao/UserDao.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_user/src/main/java/com/panzhihua/service_user/dao/UserDao.java
@@ -414,7 +414,7 @@
     @Update("update lc_compare_code_member set local_grid_member_id = #{userId},grid_member_name = #{userName} where id = #{lcMemberId}")
     void addLcMember(@Param("lcMemberId") Long lcMemberId,@Param("userId") Long userId,@Param("userName") String userName);
 
-    @Update("update lc_compare_code_member set local_grid_member_id = null,grid_member_name = null where local_grid_member_id = #{gridMemberId}")
+    @Delete("delete from lc_compare_code_member where local_grid_member_id = #{gridMemberId}")
     void delLcMember(@Param("gridMemberId") Long gridMemberId);
 
     @Select("select id,village_id,act_id from com_mng_building where id = #{buildingId}")
@@ -423,8 +423,8 @@
     @Delete("delete from event_grid_member_building_relation where grid_member_id = #{gridMemberId}")
     void delGridMemberRelation(@Param("gridMemberId") Long gridMemberId);
 
-    @Select("select id from lc_compare_code_member where local_grid_member_id = #{gridMemberId}")
-    Long getLcMemberId(@Param("gridMemberId") Long gridMemberId);
+    @Select("select lc_grid_member_id,lc_grid_member_name,lc_bind_user_id from lc_compare_code_member where local_grid_member_id = #{gridMemberId}")
+    Map<String,String> getLcMemberId(@Param("gridMemberId") Long gridMemberId);
 
     @Select("select count(id) from event_grid_member_relation where grid_member_id = #{userId}")
     Integer getGridIsOk(@Param("userId") Long userId);
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_user/src/main/java/com/panzhihua/service_user/model/dos/LcCompareCodeMemberDO.java b/springcloud_k8s_panzhihuazhihuishequ/service_user/src/main/java/com/panzhihua/service_user/model/dos/LcCompareCodeMemberDO.java
new file mode 100644
index 0000000..1d68aba
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_user/src/main/java/com/panzhihua/service_user/model/dos/LcCompareCodeMemberDO.java
@@ -0,0 +1,38 @@
+package com.panzhihua.service_user.model.dos;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * Description  本地网格和浪潮的对码表
+ * ClassName    LcCompareCode
+ * @author      manailin
+ */
+ @Data
+ @TableName("lc_compare_code_member")
+public class LcCompareCodeMemberDO implements Serializable {
+	private static final long serialVersionUID = 1L;
+	/**主键*/
+	@TableId(type = IdType.INPUT)
+	private Long id;
+	/**本地网格ID*/
+	private String localGridMemberId;
+	/**网格名称*/
+	private String gridMemberName;
+	/**浪潮市平台网格ID*/
+	private String lcGridMemberId;
+	/**浪潮市平台网格名称*/
+	private String lcGridMemberName;
+	/**浪潮网格员绑定的用户ID*/
+	private String lcBindUserId;
+	/**创建时间*/
+	private Date createAt;
+	/**修改时间*/
+	private Date updateAt;
+
+}
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_user/src/main/java/com/panzhihua/service_user/service/impl/UserServiceImpl.java b/springcloud_k8s_panzhihuazhihuishequ/service_user/src/main/java/com/panzhihua/service_user/service/impl/UserServiceImpl.java
index 174bbb1..2b686cc 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/service_user/src/main/java/com/panzhihua/service_user/service/impl/UserServiceImpl.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_user/src/main/java/com/panzhihua/service_user/service/impl/UserServiceImpl.java
@@ -27,6 +27,7 @@
 import com.panzhihua.common.utlis.IdCard;
 import com.panzhihua.common.utlis.RealNameUtil;
 import com.panzhihua.common.utlis.SensitiveUtil;
+import com.panzhihua.common.utlis.Snowflake;
 import com.panzhihua.service_user.dao.*;
 import com.panzhihua.service_user.model.dos.*;
 import com.panzhihua.service_user.model.dtos.DataKanbanDTO;
@@ -88,6 +89,8 @@
     private EventGridMemberBuildingRelationService buildingRelationService;
     @Resource
     private EventGridMemberBuildingRelationMapper eventGridMemberBuildingRelationMapper;
+    @Resource
+    private LcCompareMemberCodeMapper lcCompareMemberCodeMapper;
 //    @Resource
 //    private GridService gridService;
 
@@ -1938,7 +1941,24 @@
 
             //关联市平台网格员
             if(eventGridMemberAddDTO.getLcMemberId() != null){
-                this.userDao.addLcMember(eventGridMemberAddDTO.getLcMemberId(),sysUserDO.getUserId(),sysUserDO.getNickName());
+                LcCompareCodeMemberDO compareCodeMemberDO = lcCompareMemberCodeMapper.selectOne(new QueryWrapper<LcCompareCodeMemberDO>().lambda()
+                        .eq(LcCompareCodeMemberDO::getLcGridMemberId,eventGridMemberAddDTO.getLcMemberId()));
+                if(compareCodeMemberDO != null){
+                    compareCodeMemberDO.setLocalGridMemberId(sysUserDO.getUserId().toString());
+                    compareCodeMemberDO.setGridMemberName(sysUserDO.getNickName());
+                    compareCodeMemberDO.setUpdateAt(new Date());
+                    lcCompareMemberCodeMapper.updateById(compareCodeMemberDO);
+                }else{
+                    compareCodeMemberDO = new LcCompareCodeMemberDO();
+                    compareCodeMemberDO.setId(Snowflake.getId());
+                    compareCodeMemberDO.setLocalGridMemberId(sysUserDO.getUserId().toString());
+                    compareCodeMemberDO.setGridMemberName(sysUserDO.getNickName());
+                    compareCodeMemberDO.setLcGridMemberId(eventGridMemberAddDTO.getLcMemberId());
+                    compareCodeMemberDO.setLcBindUserId(eventGridMemberAddDTO.getLcBindUserId());
+                    compareCodeMemberDO.setLcGridMemberName(eventGridMemberAddDTO.getLcMemberName());
+                    compareCodeMemberDO.setCreateAt(new Date());
+                    lcCompareMemberCodeMapper.insert(compareCodeMemberDO);
+                }
             }
 
             //网格员关联楼栋
@@ -1988,7 +2008,12 @@
         if(!gridMemberPage.getRecords().isEmpty()){
             gridMemberPage.getRecords().forEach(gridMember -> {
                 //查询网格员关联市平台网格员id
-                gridMember.setLcMemberId(this.userDao.getLcMemberId(gridMember.getUserId()));
+                Map<String,String> lcMemberMap = this.userDao.getLcMemberId(gridMember.getUserId());
+                if(lcMemberMap != null){
+                    gridMember.setLcMemberId(lcMemberMap.get("lc_grid_member_id"));
+                    gridMember.setLcMemberName(lcMemberMap.get("lc_grid_member_name"));
+                    gridMember.setLcBindUserId(lcMemberMap.get("lc_bind_user_id"));
+                }
 
                 //查询网格员关联楼栋信息
                 List<GridMemberBuildingVO> memberBuildingList = eventGridMemberBuildingRelationMapper.getGridMemberBuildingRelation(gridMember.getUserId());
@@ -2041,7 +2066,24 @@
             //关联市平台网格员
             if(gridMemberDTO.getLcMemberId() != null){
                 //关联现有的网格员信息
-                this.userDao.addLcMember(gridMemberDTO.getLcMemberId(),sysUserDO.getUserId(),sysUserDO.getNickName());
+                LcCompareCodeMemberDO compareCodeMemberDO = lcCompareMemberCodeMapper.selectOne(new QueryWrapper<LcCompareCodeMemberDO>().lambda()
+                        .eq(LcCompareCodeMemberDO::getLcGridMemberId,gridMemberDTO.getLcMemberId()));
+                if(compareCodeMemberDO != null){
+                    compareCodeMemberDO.setLocalGridMemberId(sysUserDO.getUserId().toString());
+                    compareCodeMemberDO.setGridMemberName(sysUserDO.getNickName());
+                    compareCodeMemberDO.setUpdateAt(new Date());
+                    lcCompareMemberCodeMapper.updateById(compareCodeMemberDO);
+                }else{
+                    compareCodeMemberDO = new LcCompareCodeMemberDO();
+                    compareCodeMemberDO.setId(Snowflake.getId());
+                    compareCodeMemberDO.setLocalGridMemberId(sysUserDO.getUserId().toString());
+                    compareCodeMemberDO.setGridMemberName(sysUserDO.getNickName());
+                    compareCodeMemberDO.setLcGridMemberId(gridMemberDTO.getLcMemberId());
+                    compareCodeMemberDO.setLcBindUserId(gridMemberDTO.getLcBindUserId());
+                    compareCodeMemberDO.setLcGridMemberName(gridMemberDTO.getLcMemberName());
+                    compareCodeMemberDO.setCreateAt(new Date());
+                    lcCompareMemberCodeMapper.insert(compareCodeMemberDO);
+                }
             }
             //清除原网格员与楼栋关联关系
             this.userDao.delGridMemberRelation(sysUserDO.getUserId());
diff --git a/springcloud_k8s_panzhihuazhihuishequ/zuul/src/main/java/com/panzhihua/zuul/filters/JWTAuthenticationTokenFilter.java b/springcloud_k8s_panzhihuazhihuishequ/zuul/src/main/java/com/panzhihua/zuul/filters/JWTAuthenticationTokenFilter.java
index d642cfd..558ff74 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/zuul/src/main/java/com/panzhihua/zuul/filters/JWTAuthenticationTokenFilter.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/zuul/src/main/java/com/panzhihua/zuul/filters/JWTAuthenticationTokenFilter.java
@@ -86,6 +86,7 @@
 //        boolean detailworkguide = !requestURI.contains("workguide/detailworkguide");
 //        boolean pagedynamic = !requestURI.contains("partybuilding/pagedynamic");
 //        boolean infodynamic = !requestURI.contains("partybuilding/infodynamic");
+
         SafeboxRequestWrapper safeboxRequestWrapper = new SafeboxRequestWrapper(request);
         if (login||doc||css||js||ui||swagger||ico||docs||error||refreshToken||useragreement||wxPay
                 ||wxCgi||isShop||listadvertisement||noToken||bigscreen) {
@@ -198,8 +199,19 @@
                     safeboxRequestWrapper.addHeader(TokenConstant.TOKEN_USERINFO,hexStr );
                 }
             } else {
-                ResultUtil.responseJson(response, R.fail(HttpStatus.UNAUTHORIZED, "token校验失败"));
-                return;
+                //小程序无需登录也可访问地址列表
+                List<String> noLoginUrl = new ArrayList<>();
+                noLoginUrl.add("/api/applets/community/detaildynamic");
+                noLoginUrl.add("/api/applets/community/detailactivity");
+                if(noLoginUrl.contains(requestURI)){
+                    List<SimpleGrantedAuthority> authorities = new ArrayList<>();
+                    authorities.add(new SimpleGrantedAuthority(SecurityConstants.ROLE_APPLETS));
+                    UsernamePasswordAuthenticationToken authentication = new UsernamePasswordAuthenticationToken(null, null, authorities);
+                    SecurityContextHolder.getContext().setAuthentication(authentication);
+                }else {
+                    ResultUtil.responseJson(response, R.fail(HttpStatus.UNAUTHORIZED, "token校验失败"));
+                    return;
+                }
             }
         }
         filterChain.doFilter(safeboxRequestWrapper,response);

--
Gitblit v1.7.1