From 8e2d30fd6ac9c8cd3ee6d68c8fd575848f37390d Mon Sep 17 00:00:00 2001
From: 罗元桥 <2376770955@qq.com>
Date: 星期二, 31 八月 2021 10:42:13 +0800
Subject: [PATCH] Merge branch 'test' into 'master'

---
 springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/reserve/ComActReserveRegisterDetailedVO.java                |   36 
 springcloud_k8s_panzhihuazhihuishequ/community_backstage/pom.xml                                                                                               |   10 
 springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/community/reserve/ComActReserveRegisterStatisticsDTO.java            |   25 
 springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/ComActActSignExcelVO.java                                   |   36 
 springcloud_k8s_panzhihuazhihuishequ/community_backstage/src/main/java/com/panzhihua/community_backstage/api/CommunityManagerApi.java                          |    8 
 springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/reserve/ComActReserveMakeHandleListAdminVO.java             |   49 
 springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/reserve/ComActReserveRegisterDetailedAnswerVO.java          |   23 
 springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/utlis/FileUtil.java                                                             |   84 
 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActReserveSubServiceImpl.java             |   43 
 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComActActivityDAO.java                                |   10 
 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComActReserveRecordMapper.java                        |  108 
 springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/community/QuestnaireAnswersDTO.java                                  |    4 
 springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/community/reserve/EditReserveAdminDTO.java                           |   50 
 springcloud_k8s_panzhihuazhihuishequ/community_backstage/src/main/java/com/panzhihua/community_backstage/api/ComActReserveApi.java                             |  584 +++
 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/resources/mapper/ComActReserveOperationRecordMapper.xml                                        |   48 
 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/resources/mapper/ComActActivityMapper.xml                                                      |   59 
 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/resources/mapper/ComActReserveSubSelectionMapper.xml                                           |   26 
 springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/community/reserve/PageReserveMakeHandleAdminDTO.java                 |   39 
 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActReserveServiceImpl.java                |  606 +++
 springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/ComActActivityVO.java                                       |   49 
 springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/reserve/ComActReserveMakeDetailAdminVO.java                 |   44 
 springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/reserve/ComOperationListVO.java                             |   68 
 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActActEvaluateServiceImpl.java            |  124 
 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/model/dos/ComActReserveSubSelectionDO.java                |  104 
 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActActRegistServiceImpl.java              |   22 
 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComMngPopulationServiceImpl.java             |   17 
 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/resources/mapper/ComActActPictureMapper.xml                                                    |   20 
 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/resources/mapper/ComSwDangerReportMapper.xml                                                   |   28 
 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/ComActActPictureService.java                      |   16 
 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActActPictureServiceImpl.java             |   22 
 springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/community/reserve/MakeHandleAdminDTO.java                            |   35 
 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComSwDangerReportServiceImpl.java            |   30 
 springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/community/CancelRecordDTO.java                                       |   25 
 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComActReserveAnswerContentMapper.java                 |   47 
 springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/ComActActEvaluateExcelVO.java                               |   41 
 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/ComActActRegistService.java                       |   16 
 springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/reserve/ComActReserveMakeStatisticsAdminVO.java             |   18 
 springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/reserve/ComActReserveRecordListVO.java                      |   98 
 springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/community/reserve/PageReserveMakeAdminDTO.java                       |   30 
 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActReserveRecordServiceImpl.java          |  283 +
 springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/ComActReserveIndexVo.java                                   |   24 
 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/ComActReserveSubSelectionService.java             |   13 
 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActEasyPhotoServiceImpl.java              |   26 
 springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/community/reserve/PageReserveRegisterDetailedAdminDTO.java           |   28 
 springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/service/community/CommunityService.java                                         |  429 ++
 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActServiceImpl.java                       |    4 
 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/ComActReserveRecordService.java                   |   85 
 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/ComActReserveSubService.java                      |   21 
 springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/enums/ReserveRecordStatusEnum.java                                              |   41 
 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/model/dos/ComActActPictureDO.java                         |   67 
 springcloud_k8s_panzhihuazhihuishequ/timejob/src/main/java/com/panzhihua/timejob/jobhandler/CommunityJobHandler.java                                           |   11 
 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/model/dos/ComActReserveAnswerContentDO.java               |  101 
 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActActivityServiceImpl.java               |  166 
 springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/reserve/ComActReserveMakeDetailedExcelAdminVO.java          |   37 
 springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/ComActReserveCommitVO.java                                  |   30 
 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComActActPictureDAO.java                              |   18 
 springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/community/PageUserReserveDTO.java                                    |   12 
 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/resources/mapper/ComActReserveSubMapper.xml                                                    |   28 
 springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/community/reserve/ComActReserveMakeStatisticsDTO.java                |   19 
 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/api/CommonDataApi.java                                    |    1 
 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/resources/mapper/ComActEasyPhotoDOMapper.xml                                                   |   15 
 springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/community/OperationDetailDTO.java                                    |   23 
 springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/reserve/ComActReserveListAdminVO.java                       |   58 
 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/ComActReserveService.java                         |  108 
 springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/ComActEasyPhotoRewardVO.java                                |    9 
 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/resources/mapper/ComActActSignMapper.xml                                                       |   62 
 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/model/dos/ComActActEvaluateDO.java                        |   80 
 springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/easyPhoto/ExportEasyPhotoVO.java                            |    4 
 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/resources/mapper/ComActActEvaluateMapper.xml                                                   |   99 
 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/resources/mapper/ComActReserveMapper.xml                                                       |  182 +
 springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/community/reserve/PageReserveAdminDTO.java                           |   39 
 springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/reserve/ComActReserveSubListVO.java                         |   24 
 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComActActRegistDAO.java                               |   32 
 springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/ComActQuestnaireAnswerContentVO.java                        |    4 
 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/ComActReserveOperationRecordService.java          |   41 
 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActReserveSubSelectionServiceImpl.java    |   19 
 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/ComActActEvaluateService.java                     |   38 
 springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/ComActActRegistVO.java                                      |   68 
 springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/community/reserve/CancelReserveRecordDTO.java                        |   21 
 springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/ActivitySignVO.java                                         |    2 
 springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/reserve/ComActReserveDetailVO.java                          |  134 
 springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/reserve/ComActReserveMakeOperationAdminVO.java              |   50 
 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/ComActActivityService.java                        |   95 
 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/resources/mapper/ComActReserveAnswerContentMapper.xml                                          |   76 
 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActDiscussServiceImpl.java                |    2 
 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComActReserveSubSelectionMapper.java                  |   15 
 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComSwPatrolRecordServiceImpl.java            |    8 
 springcloud_k8s_panzhihuazhihuishequ/applets/src/main/java/com/panzhihua/applets/api/CommunityApi.java                                                         |   14 
 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActReserveOperationRecordServiceImpl.java |   90 
 springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/reserve/ComActReserveMakeRightStatisticsAdminVO.java        |   28 
 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/resources/mapper/ComActReserveRecordMapper.xml                                                 |  313 +
 springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/reserve/ComActReserveDetailAdminVO.java                     |   64 
 springcloud_k8s_panzhihuazhihuishequ/common/pom.xml                                                                                                            |   10 
 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/api/CommunityApi.java                                     |  275 +
 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/model/dos/ComActQuestnaireSubDO.java                      |    2 
 springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/reserve/ComActReserveRegisterStatisticsAdminVO.java         |   25 
 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComActReserveMapper.java                              |   85 
 springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/community/reserve/EditComActReserveStatusDTO.java                    |   27 
 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComActReserveSubMapper.java                           |   29 
 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/model/dos/ComActReserveOperationRecordDO.java             |  123 
 springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/community/reserve/AddReserveAdminDTO.java                            |   49 
 springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/reserve/ComOperationDetailVO.java                           |   15 
 springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/ComSwDangerReportExcelVO.java                               |   43 
 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/model/dos/ComActActRegistDO.java                          |   61 
 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/ComActReserveAnswerContentService.java            |   29 
 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/model/dos/ComActReserveDO.java                            |  180 +
 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComActActSignDAO.java                                 |   14 
 springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/ComActActPictureVO.java                                     |   40 
 springcloud_k8s_panzhihuazhihuishequ/community_backstage/src/main/java/com/panzhihua/community_backstage/api/ComSwPatrolRecordApi.java                         | 1315 ++++---
 springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/reserve/ComActReserveMakeListAdminVO.java                   |   43 
 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/resources/mapper/ComActActRegistMapper.xml                                                     |  124 
 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComActReserveOperationRecordMapper.java               |   26 
 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActReserveAnswerContentServiceImpl.java   |  124 
 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/model/dos/ComActReserveRecordDO.java                      |  152 
 springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/community/reserve/EditComActReserveInfoDTO.java                      |   49 
 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/model/dos/ComSwDangerReportDO.java                        |    2 
 springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/ComActActRegistExcelVO.java                                 |   36 
 springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/ComActActivityStatisticsVO.java                             |   91 
 springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/questnaire/QuestnaiteSubVO.java                             |    2 
 springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/reserve/ComActReserveRegisterExcelAdminVO.java              |   23 
 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/model/dos/ComActActivityDO.java                           |   46 
 springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/ComActActEvaluateVO.java                                    |   78 
 springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/reserve/ComActReserveMakeLeftStatisticsAdminVO.java         |   17 
 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/model/dos/ComActReserveSubDO.java                         |   92 
 springcloud_k8s_panzhihuazhihuishequ/applets/src/main/java/com/panzhihua/applets/api/ComReserveApi.java                                                        |   71 
 springcloud_k8s_panzhihuazhihuishequ/applets/src/main/java/com/panzhihua/applets/api/UserApi.java                                                              |   54 
 springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/utlis/QRCodeUtils.java                                                          |  264 +
 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/api/ComActReserveApi.java                                 |  315 +
 springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/reserve/ComActReserveMakeHandleExcelAdminVO.java            |   49 
 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComActActEvaluateDAO.java                             |   31 
 springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/reserve/ComActReserveMakeRightExcelAdminVO.java             |   25 
 springcloud_k8s_panzhihuazhihuishequ/community_backstage/src/main/java/com/panzhihua/community_backstage/api/CommunityActivityApi.java                         |  371 ++
 132 files changed, 9,715 insertions(+), 655 deletions(-)

diff --git a/springcloud_k8s_panzhihuazhihuishequ/applets/src/main/java/com/panzhihua/applets/api/ComReserveApi.java b/springcloud_k8s_panzhihuazhihuishequ/applets/src/main/java/com/panzhihua/applets/api/ComReserveApi.java
new file mode 100644
index 0000000..4d5a12b
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/applets/src/main/java/com/panzhihua/applets/api/ComReserveApi.java
@@ -0,0 +1,71 @@
+package com.panzhihua.applets.api;
+
+import com.panzhihua.common.controller.BaseController;
+import com.panzhihua.common.model.dtos.community.CancelRecordDTO;
+import com.panzhihua.common.model.dtos.community.OperationDetailDTO;
+import com.panzhihua.common.model.dtos.community.PageUserReserveDTO;
+import com.panzhihua.common.model.vos.R;
+import com.panzhihua.common.model.vos.community.ComActReserveCommitVO;
+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;
+
+/**
+ * 预约/登记服务
+ */
+@Slf4j
+@RestController
+@RequestMapping("reserve")
+@Api(tags = "预约/登记服务")
+public class ComReserveApi extends BaseController {
+    @Resource
+    private CommunityService communityService;
+
+    @ApiOperation("详情")
+    @GetMapping("/detail")
+    public R detail(@RequestParam("id") Long id,@RequestParam("recordId") Long recordId,@RequestParam("isBack") Integer isBack){
+        return communityService.reserveDetail(id,this.getUserId(),recordId,isBack);
+    }
+
+    @ApiOperation("用户提交数据")
+    @PostMapping("/commit")
+    public R commit(@RequestBody ComActReserveCommitVO comActReserveCommitVO){
+        comActReserveCommitVO.setCommunityId(this.getCommunityId());
+        comActReserveCommitVO.setUserId(this.getUserId());
+        return communityService.reserveCommit(comActReserveCommitVO);
+    }
+
+    /**
+     * 我的预约/登记
+     * @param pageUserReserveDTO
+     * @return
+     */
+    @ApiOperation("我的预约/登记")
+    @PostMapping("/userReserveList")
+    public R userReserveList(@RequestBody PageUserReserveDTO pageUserReserveDTO){
+        pageUserReserveDTO.setUserId(this.getUserId());
+        return communityService.userReserveList(pageUserReserveDTO);
+    }
+    /**
+     * 取消预约/登记
+     */
+    @ApiOperation("取消预约/登记")
+    @PostMapping("/cancelReserve")
+    public R userCancelReserve(@RequestBody CancelRecordDTO cancelRecordDTO){
+        return communityService.userCancelReserve(cancelRecordDTO);
+    }
+
+    /**
+     * 预约详情操作记录
+     */
+    @ApiOperation("预约详情操作记录")
+    @PostMapping("/detailOperation")
+    public R reserveOperation(@RequestBody OperationDetailDTO comActReserveOperationRecordDO){
+        comActReserveOperationRecordDO.setUserId(this.getUserId());
+        return communityService.reserveOperation(comActReserveOperationRecordDO);
+    }
+}
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 6ecb423..1cb382a 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
@@ -111,6 +111,20 @@
         return communityService.detailActivity(id, userId);
     }
 
+    @ApiOperation(value = "社区活动/志愿者活动签到")
+    @PostMapping("activity/sign-in")
+    public R activitySignIn(@RequestBody ComActActRegistVO comActActRegistVO) {
+        comActActRegistVO.setUserId(this.getUserId());
+        return communityService.activitySignIn(comActActRegistVO);
+    }
+
+    @ApiOperation(value = "社区活动/志愿者活动评价")
+    @PostMapping("activity/evaluate")
+    public R activityEvaluate(@RequestBody ComActActEvaluateVO comActActEvaluateVO) {
+        comActActEvaluateVO.setUserId(this.getUserId());
+        return communityService.activityEvaluate(comActActEvaluateVO);
+    }
+
     @ApiOperation(value = "报名/取消报名社区活动")
     @PutMapping("signactivity")
     public R signActivity(@RequestBody @Validated(AddGroup.class) SignactivityVO signactivityVO) {
diff --git a/springcloud_k8s_panzhihuazhihuishequ/applets/src/main/java/com/panzhihua/applets/api/UserApi.java b/springcloud_k8s_panzhihuazhihuishequ/applets/src/main/java/com/panzhihua/applets/api/UserApi.java
index 58bb6ce..baaf378 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/applets/src/main/java/com/panzhihua/applets/api/UserApi.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/applets/src/main/java/com/panzhihua/applets/api/UserApi.java
@@ -1,16 +1,29 @@
 package com.panzhihua.applets.api;
 
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Comparator;
+import java.util.Date;
+import java.util.List;
+import java.util.Optional;
+import java.util.TreeSet;
 import java.util.concurrent.atomic.AtomicBoolean;
 import java.util.stream.Collectors;
 
 import javax.annotation.Resource;
 
+import com.panzhihua.common.model.vos.community.ComActActEvaluateVO;
 import org.springframework.beans.BeanUtils;
 import org.springframework.data.redis.core.StringRedisTemplate;
 import org.springframework.util.ObjectUtils;
 import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.*;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
 
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
@@ -23,9 +36,19 @@
 import com.panzhihua.common.model.dtos.user.SysUserFeedbackDTO;
 import com.panzhihua.common.model.vos.LoginUserInfoVO;
 import com.panzhihua.common.model.vos.R;
-import com.panzhihua.common.model.vos.community.*;
+import com.panzhihua.common.model.vos.community.ComActActRegistVO;
+import com.panzhihua.common.model.vos.community.ComActActivityVO;
+import com.panzhihua.common.model.vos.community.ComActEasyPhotoVO;
+import com.panzhihua.common.model.vos.community.ComActMicroWishVO;
+import com.panzhihua.common.model.vos.community.ComActVO;
+import com.panzhihua.common.model.vos.community.ComMngStructAreaVO;
+import com.panzhihua.common.model.vos.community.ComMngStructHouseVO;
 import com.panzhihua.common.model.vos.partybuilding.PartyBuildingMemberVO;
-import com.panzhihua.common.model.vos.user.*;
+import com.panzhihua.common.model.vos.user.ComMngFamilyInfoVO;
+import com.panzhihua.common.model.vos.user.SysUserNoticeVO;
+import com.panzhihua.common.model.vos.user.UpdateUserArchivesVO;
+import com.panzhihua.common.model.vos.user.UserArchivesVO;
+import com.panzhihua.common.model.vos.user.UserPhoneVO;
 import com.panzhihua.common.service.community.CommunityService;
 import com.panzhihua.common.service.partybuilding.PartyBuildingService;
 import com.panzhihua.common.service.user.UserService;
@@ -252,6 +275,29 @@
         if (!ObjectUtils.isEmpty(comActActivityVOS)) {
             List<ComActActivityVO> collect = comActActivityVOS.stream()
                 .sorted(Comparator.comparing(ComActActivityVO::getSingDate).reversed()).collect(Collectors.toList());
+            //当前用户最近签到时间
+            R r2 = communityService.listSignInActivity(userId);
+            if (R.isOk(r2) && !ObjectUtils.isEmpty(r2.getData())) {
+                ArrayList<ComActActRegistVO> comActActRegistVOS = JSONArray.parseArray(JSONArray.toJSONString(r2.getData()), ComActActRegistVO.class).stream()
+                        .sorted(Comparator.comparing(ComActActRegistVO::getCreateAt).reversed())
+                        .collect(Collectors.collectingAndThen(Collectors.toCollection(() ->
+                                new TreeSet<>(Comparator.comparing(f -> String.join("", f.getUserId().toString(), f.getActivityId().toString())))), ArrayList::new));
+                collect.forEach(comActActivityVO -> comActActRegistVOS.forEach(activitySignInVO -> {
+                    if (comActActivityVO.getId().equals(activitySignInVO.getActivityId())) {
+                        comActActivityVO.setActivitySignInDate(activitySignInVO.getCreateAt());
+                    }
+                }));
+            }
+            //当前用户活动评分
+            R r3 = communityService.listEvaluate(userId);
+            if (R.isOk(r3) && !ObjectUtils.isEmpty(r3.getData())) {
+                List<ComActActEvaluateVO> comActActEvaluateVOS = JSONArray.parseArray(JSONArray.toJSONString(r3.getData()), ComActActEvaluateVO.class);
+                collect.forEach(comActActivityVO -> comActActEvaluateVOS.forEach(comActActEvaluateVO -> {
+                    if (comActActEvaluateVO.getActivityId().equals(comActActivityVO.getId())) {
+                        comActActivityVO.setMyRating(comActActEvaluateVO.getStarLevel());
+                    }
+                }));
+            }
             return R.ok(collect);
         }
         return R.ok(comActActivityVOS);
diff --git a/springcloud_k8s_panzhihuazhihuishequ/common/pom.xml b/springcloud_k8s_panzhihuazhihuishequ/common/pom.xml
index f0b2d1d..3812298 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/common/pom.xml
+++ b/springcloud_k8s_panzhihuazhihuishequ/common/pom.xml
@@ -164,6 +164,16 @@
                 </exclusion>
             </exclusions>
         </dependency>
+        <dependency>
+            <groupId>com.google.zxing</groupId>
+            <artifactId>core</artifactId>
+            <version>3.1.0</version>
+        </dependency>
+        <dependency>
+            <groupId>com.google.zxing</groupId>
+            <artifactId>javase</artifactId>
+            <version>3.1.0</version>
+        </dependency>
 
     </dependencies>
 
diff --git a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/enums/ReserveRecordStatusEnum.java b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/enums/ReserveRecordStatusEnum.java
new file mode 100644
index 0000000..1efe109
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/enums/ReserveRecordStatusEnum.java
@@ -0,0 +1,41 @@
+package com.panzhihua.common.enums;
+
+import lombok.Getter;
+
+/**
+ * 预约登记记录状态枚举
+ *
+ * @author lyq
+ */
+@Getter
+public enum ReserveRecordStatusEnum {
+    dcl(1, "待处理"), yycg(2, "预约成功"), yysb(3, "预约失败"), yqx(4, "已取消"), wz(5, "未知");
+
+    private final Integer code;
+    private final String name;
+
+    ReserveRecordStatusEnum(Integer code, String name) {
+        this.code = code;
+        this.name = name;
+    }
+
+    public static int getCodeByName(String name) {
+        for (ReserveRecordStatusEnum item : ReserveRecordStatusEnum.values()) {
+            if (item.name.equals(name)) {
+                return item.getCode();
+            }
+        }
+        return wz.code;
+    }
+
+    public static String getCnDescByName(Integer code) {
+        for (ReserveRecordStatusEnum item : ReserveRecordStatusEnum.values()) {
+            if (item.code.equals(code)) {
+                return item.getName();
+            }
+        }
+        return wz.name;
+    }
+
+
+}
diff --git a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/community/CancelRecordDTO.java b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/community/CancelRecordDTO.java
new file mode 100644
index 0000000..918ad1c
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/community/CancelRecordDTO.java
@@ -0,0 +1,25 @@
+package com.panzhihua.common.model.dtos.community;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+@ApiModel("取消预约/登记参数")
+public class CancelRecordDTO {
+    @ApiModelProperty("记录id")
+    private Long id;
+    /**
+     * 内容
+     */
+    @ApiModelProperty("内容")
+    private String content;
+
+    /**
+     * 备注
+     */
+    @ApiModelProperty("备注")
+    private String remark;
+
+    private Integer status;
+}
diff --git a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/community/OperationDetailDTO.java b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/community/OperationDetailDTO.java
new file mode 100644
index 0000000..a6d9907
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/community/OperationDetailDTO.java
@@ -0,0 +1,23 @@
+package com.panzhihua.common.model.dtos.community;
+
+import lombok.Data;
+
+@Data
+public class OperationDetailDTO {
+    /**
+     * 预约登记记录id
+     */
+    private Long reserveRecordId;
+
+    /**
+     * 用户id
+     */
+    private Long userId;
+
+    /**
+     * 类型(1.本人操作 2.社区操作)
+     */
+    private Integer type;
+
+
+}
diff --git a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/community/PageUserReserveDTO.java b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/community/PageUserReserveDTO.java
new file mode 100644
index 0000000..8ca3d81
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/community/PageUserReserveDTO.java
@@ -0,0 +1,12 @@
+package com.panzhihua.common.model.dtos.community;
+
+import lombok.Data;
+
+@Data
+public class PageUserReserveDTO {
+    private Integer pageNum;
+    private Integer pageSize;
+    private Integer type;
+    private Long userId;
+    private Integer status;
+}
diff --git a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/community/QuestnaireAnswersDTO.java b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/community/QuestnaireAnswersDTO.java
index d9e2ffc..cc20fb1 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/community/QuestnaireAnswersDTO.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/community/QuestnaireAnswersDTO.java
@@ -5,6 +5,7 @@
 import com.panzhihua.common.model.vos.community.ComActQuestnaireAnswerContentVO;
 import com.panzhihua.common.model.vos.community.ComActQuestnaireSubVO;
 
+import com.panzhihua.common.model.vos.community.reserve.ComActReserveRegisterDetailedVO;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
@@ -21,4 +22,7 @@
 
     @ApiModelProperty("题目用户回答列表")
     private List<ComActQuestnaireAnswerContentVO> answers;
+
+    @ApiModelProperty("用户填报记录")
+    private ComActReserveRegisterDetailedVO recordListVO;
 }
diff --git a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/community/reserve/AddReserveAdminDTO.java b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/community/reserve/AddReserveAdminDTO.java
new file mode 100644
index 0000000..148c085
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/community/reserve/AddReserveAdminDTO.java
@@ -0,0 +1,49 @@
+package com.panzhihua.common.model.dtos.community.reserve;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+@ApiModel("新增预约登记请求参数")
+public class AddReserveAdminDTO {
+
+    @ApiModelProperty(value = "类型(1.预约 2.登记)")
+    private Integer type;
+
+    @ApiModelProperty(value = "主题")
+    private String title;
+
+    @ApiModelProperty(value = "数量上限数量(如果不限制数量,这里传0)")
+    private Integer joinAllCount;
+
+    @ApiModelProperty(value = "图标类型(1.预设1 2.预设2 3.预设3 4.预设4 5.用户自定义图片)")
+    private Integer imgType;
+
+    @ApiModelProperty(value = "图标url(当img_type为5时,此字段的值为图标url地址)")
+    private String imgUrl;
+
+    @ApiModelProperty("广告顶部(1.是   2.否)")
+    private Integer adverPositionTop;
+
+    @ApiModelProperty("广告应用(1.是   2.否)")
+    private Integer adverPositionApplication;
+
+    @ApiModelProperty(value = "社区id",hidden = true)
+    private Long communityId;
+
+    @ApiModelProperty(value = "用户id",hidden = true)
+    private Long userId;
+
+    @ApiModelProperty("是否可重复提交(1.是 2.否)")
+    private Integer isRepeat;
+
+    @ApiModelProperty("组件json数据")
+    private String jsonObject;
+
+    @ApiModelProperty("是否发布(1.是 2.否)")
+    private Integer isPublish = 2;
+
+}
diff --git a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/community/reserve/CancelReserveRecordDTO.java b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/community/reserve/CancelReserveRecordDTO.java
new file mode 100644
index 0000000..fb2c74c
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/community/reserve/CancelReserveRecordDTO.java
@@ -0,0 +1,21 @@
+package com.panzhihua.common.model.dtos.community.reserve;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+@ApiModel("取消预约登记请求参数")
+public class CancelReserveRecordDTO {
+
+    @ApiModelProperty(value = "需要取消的预约记录id集合")
+    private List<Long> ids;
+
+    @ApiModelProperty(value = "取消原因")
+    private String remark;
+
+    @ApiModelProperty(value = "用户id",hidden = true)
+    private Long userId;
+}
diff --git a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/community/reserve/ComActReserveMakeStatisticsDTO.java b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/community/reserve/ComActReserveMakeStatisticsDTO.java
new file mode 100644
index 0000000..4b55e05
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/community/reserve/ComActReserveMakeStatisticsDTO.java
@@ -0,0 +1,19 @@
+package com.panzhihua.common.model.dtos.community.reserve;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+@ApiModel("查询预约统计汇总数据请求参数")
+public class ComActReserveMakeStatisticsDTO {
+
+    @ApiModelProperty(value = "开始时间查询")
+    private String startTime;
+
+    @ApiModelProperty(value = "结束时间查询")
+    private String endTime;
+
+    @ApiModelProperty(value = "社区id",hidden = true)
+    private Long communityId;
+}
diff --git a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/community/reserve/ComActReserveRegisterStatisticsDTO.java b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/community/reserve/ComActReserveRegisterStatisticsDTO.java
new file mode 100644
index 0000000..16e0b1d
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/community/reserve/ComActReserveRegisterStatisticsDTO.java
@@ -0,0 +1,25 @@
+package com.panzhihua.common.model.dtos.community.reserve;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+@ApiModel("查询登记统计汇总数据请求参数")
+public class ComActReserveRegisterStatisticsDTO {
+
+    @ApiModelProperty(value = "开始时间查询")
+    private String startTime;
+
+    @ApiModelProperty(value = "结束时间查询")
+    private String endTime;
+
+    @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/model/dtos/community/reserve/EditComActReserveInfoDTO.java b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/community/reserve/EditComActReserveInfoDTO.java
new file mode 100644
index 0000000..9714f8d
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/community/reserve/EditComActReserveInfoDTO.java
@@ -0,0 +1,49 @@
+package com.panzhihua.common.model.dtos.community.reserve;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * 继续预约登记请求参数
+ */
+@Data
+@ApiModel("继续预约登记请求参数")
+public class EditComActReserveInfoDTO {
+    @ApiModelProperty(value = "预约登记id")
+    private Long id;
+    @ApiModelProperty(value = "用户id",hidden = true)
+    private Long userId;
+    @ApiModelProperty(value = "主题")
+    private String title;
+
+    @ApiModelProperty(value = "数量上限数量(如果不限制数量,这里传0)")
+    private Integer joinAllCount;
+
+    @ApiModelProperty(value = "图标类型(1.预设1 2.预设2 3.预设3 4.预设4 5.用户自定义图片)")
+    private Integer imgType;
+
+    @ApiModelProperty(value = "图标url(当img_type为5时,此字段的值为图标url地址)")
+    private String imgUrl;
+
+    @ApiModelProperty("广告顶部(1.是   2.否)")
+    private Integer adverPositionTop;
+
+    @ApiModelProperty("广告应用(1.是   2.否)")
+    private Integer adverPositionApplication;
+
+    @ApiModelProperty("是否可重复提交(1.是 2.否)")
+    private Integer isRepeat;
+
+    @ApiModelProperty("是否发布(1.是 2.否)")
+    private Integer isPublish;
+
+    /**
+     * 类型(1.继续 2.停止 3.发布)
+     */
+    public interface type{
+        int jx = 1;
+        int tz = 2;
+        int fb = 3;
+    }
+}
diff --git a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/community/reserve/EditComActReserveStatusDTO.java b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/community/reserve/EditComActReserveStatusDTO.java
new file mode 100644
index 0000000..a3b75b4
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/community/reserve/EditComActReserveStatusDTO.java
@@ -0,0 +1,27 @@
+package com.panzhihua.common.model.dtos.community.reserve;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * 修改预约登记状态请求参数
+ */
+@Data
+@ApiModel("修改预约登记状态请求参数")
+public class EditComActReserveStatusDTO {
+    @ApiModelProperty(value = "预约登记id")
+    private Long id;
+    @ApiModelProperty(value = "类型(1.停止 2.发布)")
+    private Integer type;
+    @ApiModelProperty(value = "用户id",hidden = true)
+    private Long userId;
+
+    /**
+     * 类型(1.停止 2.发布)
+     */
+    public interface type{
+        int tz = 1;
+        int fb = 2;
+    }
+}
diff --git a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/community/reserve/EditReserveAdminDTO.java b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/community/reserve/EditReserveAdminDTO.java
new file mode 100644
index 0000000..3cae87d
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/community/reserve/EditReserveAdminDTO.java
@@ -0,0 +1,50 @@
+package com.panzhihua.common.model.dtos.community.reserve;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+@ApiModel("编辑预约登记请求参数")
+public class EditReserveAdminDTO {
+
+    @ApiModelProperty(value = "预约登记id")
+    private Long id;
+
+    @ApiModelProperty(value = "类型(1.预约 2.登记)")
+    private Integer type;
+
+    @ApiModelProperty(value = "主题")
+    private String title;
+
+    @ApiModelProperty(value = "数量上限数量(如果不限制数量,这里传0)")
+    private Integer joinAllCount;
+
+    @ApiModelProperty(value = "图标类型(1.预设1 2.预设2 3.预设3 4.预设4 5.用户自定义图片)")
+    private Integer imgType;
+
+    @ApiModelProperty(value = "图标url(当img_type为5时,此字段的值为图标url地址)")
+    private String imgUrl;
+
+    @ApiModelProperty("广告顶部(1.是   2.否)")
+    private Integer adverPositionTop;
+
+    @ApiModelProperty("广告应用(1.是   2.否)")
+    private Integer adverPositionApplication;
+
+    @ApiModelProperty(value = "社区id",hidden = true)
+    private Long communityId;
+
+    @ApiModelProperty(value = "用户id",hidden = true)
+    private Long userId;
+
+    @ApiModelProperty("是否可重复提交(1.是 2.否)")
+    private Integer isRepeat;
+
+    @ApiModelProperty("组件json数据")
+    private String jsonObject;
+
+    @ApiModelProperty("是否发布(1.是 2.否)")
+    private Integer isPublish;
+
+}
diff --git a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/community/reserve/MakeHandleAdminDTO.java b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/community/reserve/MakeHandleAdminDTO.java
new file mode 100644
index 0000000..41f9607
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/community/reserve/MakeHandleAdminDTO.java
@@ -0,0 +1,35 @@
+package com.panzhihua.common.model.dtos.community.reserve;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+@ApiModel("处理预约记录请求参数")
+public class MakeHandleAdminDTO {
+
+    @ApiModelProperty(value = "批量处理id集合")
+    private List<Long> ids;
+
+    @ApiModelProperty(value = "预约成功时间(格式:yyyy-MM-dd HH:mm:ss)")
+    private String makeTime;
+
+    @ApiModelProperty(value = "预约状态(1.同意 2.拒绝)")
+    private Integer isOk;
+
+    @ApiModelProperty(value = "处理备注")
+    private String remark;
+
+    @ApiModelProperty(value = "用户id",hidden = true)
+    private Long userId;
+
+    /**
+     * 预约状态(1.同意 2.拒绝)
+     */
+    public interface isOk{
+        int yes = 1;
+        int no = 2;
+    }
+}
diff --git a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/community/reserve/PageReserveAdminDTO.java b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/community/reserve/PageReserveAdminDTO.java
new file mode 100644
index 0000000..7c4c265
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/community/reserve/PageReserveAdminDTO.java
@@ -0,0 +1,39 @@
+package com.panzhihua.common.model.dtos.community.reserve;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+@ApiModel("分页查询预约登记列表请求参数")
+public class PageReserveAdminDTO {
+
+    @ApiModelProperty(value = "分页-当前页数",example = "1")
+    private Long pageNum = 1L;
+
+    @ApiModelProperty(value = "分页-每页记录数",example = "10")
+    private Long pageSize = 10L;
+
+    @ApiModelProperty(value = "类型(1.预约 2.登记)")
+    private List<Integer> type;
+
+    @ApiModelProperty(value = "状态(1.进行中 2.已停止 3.待发布)")
+    private Integer status;
+
+    @ApiModelProperty(value = "广告位置(1.无 2.首页顶部 3.首页应用)")
+    private Integer advertType;
+
+    @ApiModelProperty(value = "开始时间查询")
+    private String startTime;
+
+    @ApiModelProperty(value = "结束时间查询")
+    private String endTime;
+
+    @ApiModelProperty(value = "关键词")
+    private String keyWord;
+
+    @ApiModelProperty(value = "社区id",hidden = true)
+    private Long communityId;
+}
diff --git a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/community/reserve/PageReserveMakeAdminDTO.java b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/community/reserve/PageReserveMakeAdminDTO.java
new file mode 100644
index 0000000..ce5ae30
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/community/reserve/PageReserveMakeAdminDTO.java
@@ -0,0 +1,30 @@
+package com.panzhihua.common.model.dtos.community.reserve;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+@ApiModel("分页查询预约登记列表请求参数")
+public class PageReserveMakeAdminDTO {
+
+    @ApiModelProperty(value = "分页-当前页数",example = "1")
+    private Long pageNum = 1L;
+
+    @ApiModelProperty(value = "分页-每页记录数",example = "10")
+    private Long pageSize = 10L;
+
+    @ApiModelProperty(value = "预约登记id")
+    private Long reserveId;
+
+    @ApiModelProperty(value = "开始时间查询")
+    private String startTime;
+
+    @ApiModelProperty(value = "结束时间查询")
+    private String endTime;
+
+    @ApiModelProperty(value = "需要导出id集合")
+    private List<Long> ids;
+}
diff --git a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/community/reserve/PageReserveMakeHandleAdminDTO.java b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/community/reserve/PageReserveMakeHandleAdminDTO.java
new file mode 100644
index 0000000..7870b19
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/community/reserve/PageReserveMakeHandleAdminDTO.java
@@ -0,0 +1,39 @@
+package com.panzhihua.common.model.dtos.community.reserve;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+@ApiModel("分页查询预约登记列表请求参数")
+public class PageReserveMakeHandleAdminDTO {
+
+    @ApiModelProperty(value = "分页-当前页数",example = "1")
+    private Long pageNum = 1L;
+
+    @ApiModelProperty(value = "分页-每页记录数",example = "10")
+    private Long pageSize = 10L;
+
+    @ApiModelProperty(value = "关键词")
+    private String keyWord;
+
+    @ApiModelProperty(value = "开始时间查询")
+    private String startTime;
+
+    @ApiModelProperty(value = "结束时间查询")
+    private String endTime;
+
+    @ApiModelProperty(value = "状态集合")
+    private List<Integer> status;
+
+    @ApiModelProperty(value = "预约登记id")
+    private Long reserveId;
+
+    @ApiModelProperty(value = "社区id",hidden = true)
+    private Long communityId;
+
+    @ApiModelProperty(value = "需要导出的id集合")
+    private List<Long> ids;
+}
diff --git a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/community/reserve/PageReserveRegisterDetailedAdminDTO.java b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/community/reserve/PageReserveRegisterDetailedAdminDTO.java
new file mode 100644
index 0000000..ad9f34b
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/community/reserve/PageReserveRegisterDetailedAdminDTO.java
@@ -0,0 +1,28 @@
+package com.panzhihua.common.model.dtos.community.reserve;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+@ApiModel("分页查询预约登记列表请求参数")
+public class PageReserveRegisterDetailedAdminDTO {
+
+    @ApiModelProperty(value = "分页-当前页数",example = "1")
+    private Long pageNum = 1L;
+
+    @ApiModelProperty(value = "分页-每页记录数",example = "10")
+    private Long pageSize = 10L;
+
+    @ApiModelProperty(value = "开始时间查询")
+    private String startTime;
+
+    @ApiModelProperty(value = "结束时间查询")
+    private String endTime;
+
+    @ApiModelProperty(value = "预约登记id")
+    private Long reserveId;
+
+}
diff --git a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/ActivitySignVO.java b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/ActivitySignVO.java
index 7223a0c..8557913 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/ActivitySignVO.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/ActivitySignVO.java
@@ -24,6 +24,8 @@
     private String nickName;
     @ApiModelProperty("身份")
     private String identity;
+    @ApiModelProperty("人群标签")
+    private String tags;
     @ApiModelProperty("手机号")
     private String phone;
     @ApiModelProperty("报名时间")
diff --git a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/ComActActEvaluateExcelVO.java b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/ComActActEvaluateExcelVO.java
new file mode 100644
index 0000000..fbcd2f8
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/ComActActEvaluateExcelVO.java
@@ -0,0 +1,41 @@
+package com.panzhihua.common.model.vos.community;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * title: ComActActEvaluateDO  社区活动评价表
+ * projectName 成都呐喊信息技术有限公司-智慧社区项目
+ * description: 记录和展示社区活动评价内容
+ *
+ * @author txb
+ * @date 2021/8/24 10:21
+ */
+
+@Data
+@ApiModel("社区活动评价表")
+public class ComActActEvaluateExcelVO {
+
+    @ExcelProperty(value = "姓名", index = 1)
+    private String name;
+
+    @ExcelProperty(value = "身份", index = 2)
+    private String identity;
+
+    @ExcelProperty(value = "电话", index = 3)
+    private String phone;
+
+    @ExcelProperty(value = "评价时间", index = 0)
+    private Date createAt;
+
+    @ExcelProperty(value = "评价星级", index = 4)
+    private Integer starLevel;
+
+    @ExcelProperty(value = "评价详情", index = 5)
+    private String evaluateContent;
+}
\ No newline at end of file
diff --git a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/ComActActEvaluateVO.java b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/ComActActEvaluateVO.java
new file mode 100644
index 0000000..501ef1b
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/ComActActEvaluateVO.java
@@ -0,0 +1,78 @@
+package com.panzhihua.common.model.vos.community;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * title: ComActActEvaluateDO  社区活动评价表
+ * projectName 成都呐喊信息技术有限公司-智慧社区项目
+ * description: 记录和展示社区活动评价内容
+ *
+ * @author txb
+ * @date 2021/8/24 10:21
+ */
+
+@Data
+@ApiModel("社区活动评价表")
+public class ComActActEvaluateVO{
+
+    @ApiModelProperty("自增id")
+    private Long id;
+
+    @ApiModelProperty("所属活动id")
+    private Long activityId;
+
+    @ApiModelProperty("用户id, 和用户信息表的相关id关联")
+    private Long userId;
+
+    @ApiModelProperty("名字")
+    private String name;
+
+    @ApiModelProperty("用户昵称")
+    private String nickName;
+
+    @ApiModelProperty("身份")
+    private String identity;
+
+    @ApiModelProperty("手机号")
+    private String phone;
+
+    @ApiModelProperty("人员头像")
+    private String imageUrl;
+
+    @ApiModelProperty(value = "列表人员类型 1 普通居民 2 志愿者", hidden = true)
+    private Integer type;
+
+    @ApiModelProperty("评价时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date createAt;
+
+    @ApiModelProperty("是否是志愿者 0 否 1 是")
+    private Integer isVolunteer;
+
+    @ApiModelProperty("评分星级1.差 2.一般 3.还不错 4.很满意 5.强烈推荐")
+    private Integer starLevel;
+
+    @ApiModelProperty("评价内容")
+    private String evaluateContent;
+
+    @ApiModelProperty("人群标签")
+    private String tags;
+
+    @ApiModelProperty("照片(多张以逗号隔开)")
+    private String photo;
+
+    @ApiModelProperty("用户openid")
+    private String openid;
+
+    @ApiModelProperty(value = "分页-当前页数", example = "1")
+    private Long pageNum = 1L;
+
+    @ApiModelProperty(value = "分页-每页记录数", example = "10")
+    private Long pageSize = 10L;
+}
\ No newline at end of file
diff --git a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/ComActActPictureVO.java b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/ComActActPictureVO.java
new file mode 100644
index 0000000..5eb161c
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/ComActActPictureVO.java
@@ -0,0 +1,40 @@
+package com.panzhihua.common.model.vos.community;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * title: ComActActPictureDO  社区》活动》历史上传图片实体类
+ * projectName 成都呐喊信息技术有限公司-智慧社区项目
+ * description: 社区》活动》历史上传图片实体类
+ *
+ * @author txb
+ * @date 2021/8/27 14:21
+ */
+
+@Data
+@ApiModel("社区活动封面")
+public class ComActActPictureVO {
+
+    @ApiModelProperty("自增id")
+    private Long id;
+
+    @ApiModelProperty("所属活动id")
+    private Long activityId;
+
+    @ApiModelProperty("用户id, 和用户信息表的相关id关联")
+    private Long userId;
+
+    @ApiModelProperty("上传时间")
+    private Date createAt;
+
+    @ApiModelProperty("上传图片")
+    private String uploadPicture;
+
+    @ApiModelProperty("图片名称")
+    private String pictureName;
+}
\ No newline at end of file
diff --git a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/ComActActRegistExcelVO.java b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/ComActActRegistExcelVO.java
new file mode 100644
index 0000000..ff5e447
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/ComActActRegistExcelVO.java
@@ -0,0 +1,36 @@
+package com.panzhihua.common.model.vos.community;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * title: ComActActRegistExcelVO  社区活动签到表
+ * projectName 成都呐喊信息技术有限公司-智慧社区项目
+ * description: 记录和展示社区活动签到内容
+ *
+ * @author txb
+ * @date 2021/8/24 10:21
+ */
+
+@Data
+@ApiModel("社区活动签到表")
+public class ComActActRegistExcelVO {
+
+    @ExcelProperty(value = "姓名", index = 1)
+    private String name;
+
+    @ExcelProperty(value = "身份", index = 2)
+    private String identity;
+
+    @ExcelProperty(value = "电话", index = 4)
+    private String phone;
+
+    @ExcelProperty(value = "签到时间(未签到就是报名时间)", index = 0)
+    private Date createAt;
+
+    @ExcelProperty(value = "人群标签", index = 3)
+    private String tags;
+}
\ No newline at end of file
diff --git a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/ComActActRegistVO.java b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/ComActActRegistVO.java
new file mode 100644
index 0000000..a42430e
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/ComActActRegistVO.java
@@ -0,0 +1,68 @@
+package com.panzhihua.common.model.vos.community;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * title: ComActActEvaluateDO  社区活动签到表
+ * projectName 成都呐喊信息技术有限公司-智慧社区项目
+ * description: 记录和展示社区活动签到内容
+ *
+ * @author txb
+ * @date 2021/8/24 10:21
+ */
+
+@Data
+@ApiModel("社区活动签到表")
+public class ComActActRegistVO {
+
+    @ApiModelProperty("自增id")
+    private Long id;
+
+    @ApiModelProperty("所属活动id")
+    private Long activityId;
+
+    @ApiModelProperty("用户id, 和用户信息表的相关id关联")
+    private Long userId;
+
+    @ApiModelProperty("名字")
+    private String name;
+
+    @ApiModelProperty("用户昵称")
+    private String nickName;
+
+    @ApiModelProperty("身份")
+    private String identity;
+
+    @ApiModelProperty("人群标签")
+    private String tags;
+
+    @ApiModelProperty("手机号")
+    private String phone;
+
+    @ApiModelProperty("人员头像")
+    private String imageUrl;
+
+    @ApiModelProperty(value = "列表人员类型 1 普通居民 2 志愿者", hidden = true)
+    private Integer type;
+
+    @ApiModelProperty("签到时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date createAt;
+
+    @ApiModelProperty("是否是志愿者 0 否 1 是")
+    private Integer isVolunteer;
+
+    @ApiModelProperty("用户openid")
+    private String openid;
+
+    @ApiModelProperty(value = "分页-当前页数", example = "1")
+    private Long pageNum = 1L;
+
+    @ApiModelProperty(value = "分页-每页记录数", example = "10")
+    private Long pageSize = 10L;
+}
\ No newline at end of file
diff --git a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/ComActActSignExcelVO.java b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/ComActActSignExcelVO.java
new file mode 100644
index 0000000..08528a7
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/ComActActSignExcelVO.java
@@ -0,0 +1,36 @@
+package com.panzhihua.common.model.vos.community;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * title: ComActActSignExcelVO  社区活动报名名单
+ * projectName 成都呐喊信息技术有限公司-智慧社区项目
+ * description: 记录和展示社区活动报名名单
+ *
+ * @author txb
+ * @date 2021/8/24 10:21
+ */
+
+@Data
+@ApiModel("社区活动签到表")
+public class ComActActSignExcelVO {
+
+    @ExcelProperty(value = "姓名", index = 1)
+    private String name;
+
+    @ExcelProperty(value = "身份", index = 2)
+    private String identity;
+
+    @ExcelProperty(value = "电话", index = 4)
+    private String phone;
+
+    @ExcelProperty(value = "报名时间", index = 0)
+    private Date createAt;
+
+    @ExcelProperty(value = "人群标签", index = 3)
+    private String tags;
+}
\ No newline at end of file
diff --git a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/ComActActivityStatisticsVO.java b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/ComActActivityStatisticsVO.java
new file mode 100644
index 0000000..478c45f
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/ComActActivityStatisticsVO.java
@@ -0,0 +1,91 @@
+package com.panzhihua.common.model.vos.community;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * 社区活动数据统计返回参数
+ */
+@Data
+@ApiModel("社区活动数据统计返回参数")
+public class ComActActivityStatisticsVO {
+
+    /**
+     * 应报名总人数
+     */
+    @ApiModelProperty("应报名总人数")
+    private Integer signTotal;
+    /**
+     * 应报名总人数Str
+     */
+    @ApiModelProperty("应报名总人数Str")
+    private String signTotalStr;
+    /**
+     * 实际报名总人数
+     */
+    @ApiModelProperty("实际报名总人数")
+    private Integer reallySignTotal;
+    /**
+     * 未报名报名总人数
+     */
+    @ApiModelProperty("未报名报名总人数")
+    private Integer noSignTotal;
+    /**
+     * 未报名报名总人数Str
+     */
+    @ApiModelProperty("未报名报名总人数Str")
+    private String noSignTotalStr;
+    /**
+     * 报名总人数百分比
+     */
+    @ApiModelProperty("报名总人数百分比")
+    private String signPersent;
+    /**
+     * 应签到总人数
+     */
+    @ApiModelProperty("应签到总人数")
+    private Integer registTotal;
+
+    /**
+     * 实际签到总人数
+     */
+    @ApiModelProperty("实际签到总人数")
+    private Integer reallyRegistTotal;
+
+    /**
+     * 未签到总人数
+     */
+    @ApiModelProperty("未签到总人数")
+    private Integer noRegistTotal;
+
+    /**
+     * 签到总人数百分比
+     */
+    @ApiModelProperty("签到总人数百分比")
+    private String registPersent;
+
+    /**
+     * 应评价总人数
+     */
+    @ApiModelProperty("应评价总人数")
+    private Integer evaluateTotal;
+
+    /**
+     * 实际评价总人数
+     */
+    @ApiModelProperty("实际评价总人数")
+    private Integer reallyEvaluateTotal;
+
+    /**
+     * 未评价总人数
+     */
+    @ApiModelProperty("未评价总人数")
+    private Integer noEvaluateTotal;
+
+    /**
+     * 评价人数百分比
+     */
+    @ApiModelProperty("评价人数百分比")
+    private String evaluatePersent;
+}
diff --git a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/ComActActivityVO.java b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/ComActActivityVO.java
index 28211aa..05548ae 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/ComActActivityVO.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/ComActActivityVO.java
@@ -34,6 +34,12 @@
     @ApiModelProperty("活动地址")
     private String activityAddr;
 
+    @ApiModelProperty("纬度")
+    private String lat;
+
+    @ApiModelProperty("经度")
+    private String lng;
+
     @ApiModelProperty("活动状态 1 待发布 2 未开始 3 报名中 4 进行中 5 已结束 6 已取消")
     private Integer status;
 
@@ -56,10 +62,13 @@
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     private Date signUpEnd;
 
+    @ApiModelProperty("参加人群(多个以逗号隔开)")
+    private String aattendPeople;
+
     @ApiModelProperty("志愿者人数下线")
     private Integer volunteerMin;
 
-    @ApiModelProperty("志愿者人数上限")
+    @ApiModelProperty("志愿者人数上限(不需要则不填写)")
     private Integer volunteerMax;
 
     @ApiModelProperty("当前志愿者数量")
@@ -68,7 +77,7 @@
     @ApiModelProperty("参与者人数下线")
     private Integer participantMin;
 
-    @ApiModelProperty("参与者人数上限")
+    @ApiModelProperty("参与者人数上限(不填写则默认不限人数)")
     private Integer participantMax;
 
     @ApiModelProperty("当前参与者数量")
@@ -79,6 +88,25 @@
 
     @ApiModelProperty("是否有奖品 1 有 0  无")
     private Integer hasPrize;
+
+    @ApiModelProperty("是否二维码签到 1 是 0否")
+    private Integer isQrCode;
+
+    @ApiModelProperty("用户最近签到时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date activitySignInDate;
+
+    @ApiModelProperty("联系人姓名")
+    private String contactName;
+
+    @ApiModelProperty("联系人电话")
+    private String contactPhone;
+
+    @ApiModelProperty("是否签到 1 是 0否")
+    private Integer isRegist;
+
+    @ApiModelProperty("是否顶部 1 是 0否")
+    private Integer isTop;
 
     @ApiModelProperty("奖品备注")
     private String prizeRemark;
@@ -91,6 +119,21 @@
 
     @ApiModelProperty("活动奖品集合")
     private List<ComActActPrizeVO> comActActPrizeVOList;
+
+    @ApiModelProperty("活动评价集合")
+    private List<ComActActEvaluateVO> comActActEvaluateVOList;
+
+    @ApiModelProperty("活动评价总数")
+    private Integer evaluateAmount;
+
+    @ApiModelProperty("活动评分星级平均数")
+    private Double evaluateLevel;
+
+    @ApiModelProperty("当前用户对活动的评分")
+    private Integer myRating;
+
+    @ApiModelProperty("活动是否已默认好评")
+    private Integer isDefaultPraise;
 
     @ApiModelProperty(value = "社区id", hidden = true)
     private Long communityId;
@@ -114,7 +157,7 @@
     private Integer isVolunteer = 0;
 
     @ApiModelProperty(value = "当前登录者id", hidden = true)
-    private Integer userId;
+    private Long userId;
 
     @ApiModelProperty("活动参加普通人员集合")
     private List<ActivitySignVO> activitySignVOList;
diff --git a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/ComActEasyPhotoRewardVO.java b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/ComActEasyPhotoRewardVO.java
index 3a72e6c..21e8dce 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/ComActEasyPhotoRewardVO.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/ComActEasyPhotoRewardVO.java
@@ -26,7 +26,16 @@
     @ApiModelProperty("banner图位置问卷调查列表")
     private List<ComActQuestnaireAppVO> bannerQuestnaireList;
 
+    @ApiModelProperty("banner图位置活动列表")
+    private List<ComActActivityVO> bannerActivityList;
+
     @ApiModelProperty("应用位置问卷调查列表")
     private List<ComActQuestnaireAppVO> applicationQuestnaireList;
 
+    @ApiModelProperty("banner预约/登记列表")
+    private List<ComActReserveIndexVo> comActReserveIndexBannerVos;
+
+    @ApiModelProperty("应用预约/登记列表")
+    private List<ComActReserveIndexVo> comActReserveIndexApplicationVos;
+
 }
diff --git a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/ComActQuestnaireAnswerContentVO.java b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/ComActQuestnaireAnswerContentVO.java
index ccfd52a..9898a15 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/ComActQuestnaireAnswerContentVO.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/ComActQuestnaireAnswerContentVO.java
@@ -4,6 +4,7 @@
 
 import com.fasterxml.jackson.annotation.JsonFormat;
 
+import com.panzhihua.common.model.vos.community.reserve.ComActReserveRegisterDetailedVO;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
@@ -28,4 +29,7 @@
     private Integer type;
     @ApiModelProperty("题目选项ID")
     private Long selectionId;
+    @ApiModelProperty("答题记录id")
+    private Long reserveRecordId;
+
 }
diff --git a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/ComActReserveCommitVO.java b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/ComActReserveCommitVO.java
new file mode 100644
index 0000000..7222376
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/ComActReserveCommitVO.java
@@ -0,0 +1,30 @@
+package com.panzhihua.common.model.vos.community;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+@ApiModel("提交预约/登记参数")
+public class ComActReserveCommitVO {
+    @ApiModelProperty("记录id")
+    private Long id;
+    @ApiModelProperty("表单json")
+    private String jsonObject;
+    @ApiModelProperty("用户id")
+    private Long userId;
+    @ApiModelProperty("社区id")
+    private Long communityId;
+    @ApiModelProperty("手机号")
+    private String phone;
+    @ApiModelProperty("类型 1预约 2登记")
+    private Integer type;
+    @ApiModelProperty("预约时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date reserveTime;
+    @ApiModelProperty("姓名")
+    private String name;
+}
diff --git a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/ComActReserveIndexVo.java b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/ComActReserveIndexVo.java
new file mode 100644
index 0000000..becae5f
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/ComActReserveIndexVo.java
@@ -0,0 +1,24 @@
+package com.panzhihua.common.model.vos.community;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+@ApiModel("预约/登记返回参数")
+public class ComActReserveIndexVo {
+
+    private Long id;
+    @ApiModelProperty("标题")
+    private String title;
+    @ApiModelProperty("类型(1.预约 2.登记) ")
+    private Integer type;
+    @ApiModelProperty("图标类型(1.预设1 2.预设2 3.预设3 4.预设4 5.用户自定义图片)")
+    private Integer imgType;
+    @ApiModelProperty("图标url(当img_type为5时,此字段的值为图标url地址)")
+    private String imgUrl;
+    @ApiModelProperty("是否是首页顶部(1.是 2.否)")
+    private Integer adverPositionTop;
+    @ApiModelProperty("是否是首页应用(1.是 2.否)")
+    private Integer adverPositionApplication;
+}
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
index 35304a1..75963ac 100644
--- 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
@@ -1,6 +1,7 @@
 package com.panzhihua.common.model.vos.community;
 
 import java.io.Serializable;
+import java.util.Date;
 
 import com.alibaba.excel.annotation.ExcelProperty;
 
@@ -31,27 +32,57 @@
     private String dangerType;
 
     /**
+     * 状态
+     */
+    @ExcelProperty(value = "状态", index = 3)
+    private String status;
+
+    /**
      * 风险等级
      */
-    @ExcelProperty(value = "风险等级", index = 3)
+    @ExcelProperty(value = "风险等级", index = 4)
     private String dangerLevel;
 
     /**
      * 巡查人员
      */
-    @ExcelProperty(value = "巡查人员", index = 4)
-    private String personName;
+    @ExcelProperty(value = "巡查人员", index = 5)
+    private String ppersonName;
 
     /**
      * 联系电话
      */
-    @ExcelProperty(value = "联系电话", index = 5)
-    private String personPhone;
+    @ExcelProperty(value = "联系电话", index = 6)
+    private String ppersonPhone;
+
+    /**
+     * 填报时间
+     */
+    @ExcelProperty(value = "填报时间", index = 7)
+    private Date createAt;
 
     /**
      * 备注
      */
-    @ExcelProperty(value = "备注", index = 6)
+    @ExcelProperty(value = "备注", index = 8)
     private String remark;
 
+    /**
+     * 整改人员
+     */
+    @ExcelProperty(value = "整改人员", index = 9)
+    private String dpersonName;
+
+    /**
+     * 联系电话
+     */
+    @ExcelProperty(value = "联系电话", index = 10)
+    private String dpersonPhone;
+
+    /**
+     * 整改时间
+     */
+    @ExcelProperty(value = "整改时间", index = 11)
+    private Date rectifyTime;
+
 }
diff --git a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/easyPhoto/ExportEasyPhotoVO.java b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/easyPhoto/ExportEasyPhotoVO.java
index 43791c9..196c798 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/easyPhoto/ExportEasyPhotoVO.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/easyPhoto/ExportEasyPhotoVO.java
@@ -17,11 +17,9 @@
     @ExcelProperty("发生地点")
     private String happenAddr;
     @ExcelProperty("事件类型")
-    private String photoType = "其他";
+    private String photoType;
     @ExcelProperty("联系电话")
     private String phone;
-    @ExcelProperty("处理人名字")
-    private String handlerName;
     @ExcelProperty("创建时间")
     private Date createAt;
 }
diff --git a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/questnaire/QuestnaiteSubVO.java b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/questnaire/QuestnaiteSubVO.java
index 47824a4..ebf7044 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/questnaire/QuestnaiteSubVO.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/questnaire/QuestnaiteSubVO.java
@@ -17,7 +17,7 @@
     private int sort;
     @ApiModelProperty(value = "题目内容")
     private String label;
-    @ApiModelProperty(value = "类型 0单选1多选2问答题", example = "0")
+    @ApiModelProperty(value = "类型 0 单选  1 多选 2 输入框 2姓名输入框 3 手机号 4 身份证 5 文字描述 6 日期选择", example = "0")
     private Integer type;
     @ApiModelProperty(value = "问卷题目选项")
     private List<QuestnaiteSubSelectionVO> options;
diff --git a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/reserve/ComActReserveDetailAdminVO.java b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/reserve/ComActReserveDetailAdminVO.java
new file mode 100644
index 0000000..8e1f7f5
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/reserve/ComActReserveDetailAdminVO.java
@@ -0,0 +1,64 @@
+package com.panzhihua.common.model.vos.community.reserve;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+@ApiModel("预约登记返回参数")
+public class ComActReserveDetailAdminVO {
+
+    @ApiModelProperty("预约登记id")
+    private Long id;
+
+    @ApiModelProperty("社区id")
+    private Long communityId;
+
+    @ApiModelProperty("类型(1.预约 2.登记)")
+    private Integer type;
+
+    @ApiModelProperty("主题")
+    private String title;
+
+    @ApiModelProperty("浏览量")
+    private Integer viewNum;
+
+    @ApiModelProperty("限定参加人总数")
+    private Integer joinAllCount;
+
+    @ApiModelProperty("参加人数")
+    private Integer joinCount;
+
+    @ApiModelProperty("广告位置")
+    private String advertPosition;
+
+    @ApiModelProperty("状态(1.待发布 2.进行中 3.已停止)")
+    private Integer status;
+
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @ApiModelProperty("发布时间")
+    private Date publishTime;
+
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @ApiModelProperty("创建时间")
+    private Date createAt;
+
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @ApiModelProperty("结束时间")
+    private Date endTime;
+
+    @ApiModelProperty("是否是首页顶部(1.是 2.否)")
+    private Integer adverPositionTop;
+
+    @ApiModelProperty("是否是首页应用(1.是 2.否)")
+    private Integer adverPositionApplication;
+
+    @ApiModelProperty("组件json数据")
+    private String jsonObject;
+
+    @ApiModelProperty("是否可重复提交(1.是 2.否)")
+    private Integer isRepeat;
+}
diff --git a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/reserve/ComActReserveDetailVO.java b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/reserve/ComActReserveDetailVO.java
new file mode 100644
index 0000000..6be6238
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/reserve/ComActReserveDetailVO.java
@@ -0,0 +1,134 @@
+package com.panzhihua.common.model.vos.community.reserve;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+public class ComActReserveDetailVO {
+    private Long id;
+
+    /**
+     * 社区id
+     */
+    private Long communityId;
+
+    /**
+     * 类型(1.预约 2.登记)
+     */
+    private Integer type;
+
+    /**
+     * 主题
+     */
+    private String title;
+
+    /**
+     * 浏览量
+     */
+    private Integer viewNum;
+
+    /**
+     * 总参加人数
+     */
+    private Integer joinAllCount;
+
+    /**
+     * 参加人数
+     */
+    private Integer joinCount;
+
+    /**
+     * 图标类型(1.预设1 2.预设2 3.预设3 4.预设4 5.用户自定义图片)
+     */
+    private Integer imgType;
+
+    /**
+     * 图标url(当img_type为5时,此字段的值为图标url地址)
+     */
+    private String imgUrl;
+
+    /**
+     * 状态(1.待发布 2.进行中 3.已停止)
+     */
+    private Integer status;
+
+    /**
+     * 发布时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date publishTime;
+
+    /**
+     * 是否可重复提交(1.是 2.否)
+     */
+    private Integer isRepeat;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+    /**
+     * 组件json数据
+     */
+    private String jsonObject;
+
+    /**
+     * 是否是首页顶部(1.是 2.否)
+     */
+    private Integer adverPositionTop;
+
+    /**
+     * 是否是首页应用(1.是 2.否)
+     */
+    private Integer adverPositionApplication;
+
+    /**
+     * 创建时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date createAt;
+
+    /**
+     * 创建人
+     */
+    private Long createBy;
+
+    /**
+     * 修改时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date updateAt;
+
+    /**
+     * 修改人
+     */
+    private Long updateBy;
+
+    /**
+     * 结束时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date endTime;
+
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date reserveTime;
+
+    private Integer recordStatus;
+
+    /**
+     * 是否已删除(1.是 2.否)
+     */
+    private Integer isDel;
+
+    private Integer isOk;
+    /**
+     * 是否重复(1.是 2.否)
+     */
+    public interface isOk{
+        int y=1;
+        int n=2;
+    }
+}
diff --git a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/reserve/ComActReserveListAdminVO.java b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/reserve/ComActReserveListAdminVO.java
new file mode 100644
index 0000000..9e160a7
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/reserve/ComActReserveListAdminVO.java
@@ -0,0 +1,58 @@
+package com.panzhihua.common.model.vos.community.reserve;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+@ApiModel("预约登记返回参数")
+public class ComActReserveListAdminVO {
+
+    @ApiModelProperty("预约登记id")
+    private Long id;
+
+    @ApiModelProperty("社区id")
+    private Long communityId;
+
+    @ApiModelProperty("类型(1.预约 2.登记)")
+    private Integer type;
+
+    @ApiModelProperty("主题")
+    private String title;
+
+    @ApiModelProperty("浏览量")
+    private Integer viewNum;
+
+    @ApiModelProperty("限定参加人总数")
+    private Integer joinAllCount;
+
+    @ApiModelProperty("参加人数")
+    private Integer joinCount;
+
+    @ApiModelProperty("广告位置")
+    private String advertPosition;
+
+    @ApiModelProperty("状态(1.待发布 2.进行中 3.已停止)")
+    private Integer status;
+
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @ApiModelProperty("发布时间")
+    private Date publishTime;
+
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @ApiModelProperty("创建时间")
+    private Date createAt;
+
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @ApiModelProperty("结束时间")
+    private Date endTime;
+
+    @ApiModelProperty("是否是首页顶部(1.是 2.否)")
+    private Integer adverPositionTop;
+
+    @ApiModelProperty("是否是首页应用(1.是 2.否)")
+    private Integer adverPositionApplication;
+}
diff --git a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/reserve/ComActReserveMakeDetailAdminVO.java b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/reserve/ComActReserveMakeDetailAdminVO.java
new file mode 100644
index 0000000..e764629
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/reserve/ComActReserveMakeDetailAdminVO.java
@@ -0,0 +1,44 @@
+package com.panzhihua.common.model.vos.community.reserve;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+import java.util.List;
+
+@Data
+@ApiModel("预约明细列表返回参数")
+public class ComActReserveMakeDetailAdminVO {
+
+    @ApiModelProperty("用户昵称")
+    private String nickName;
+
+    @ApiModelProperty("预约人")
+    private String name;
+
+    @ApiModelProperty("联系电话")
+    private String phone;
+
+    @ApiModelProperty("预约时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date reserveTime;
+
+    @ApiModelProperty("预约内容")
+    private String content;
+
+    @ApiModelProperty("备注")
+    private String remark;
+
+    @ApiModelProperty("社区备注")
+    private String actRemark;
+
+    @ApiModelProperty("提交时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date createAt;
+
+    @ApiModelProperty("操作记录")
+    private List<ComActReserveMakeOperationAdminVO> operationList;
+
+}
diff --git a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/reserve/ComActReserveMakeDetailedExcelAdminVO.java b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/reserve/ComActReserveMakeDetailedExcelAdminVO.java
new file mode 100644
index 0000000..faf8855
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/reserve/ComActReserveMakeDetailedExcelAdminVO.java
@@ -0,0 +1,37 @@
+package com.panzhihua.common.model.vos.community.reserve;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 预约明细导出返回对象
+ */
+@Data
+public class ComActReserveMakeDetailedExcelAdminVO {
+
+    @ExcelProperty(value = "用户昵称" ,index = 0)
+    private String nickName;
+    @ExcelProperty(value = "预约人" ,index = 1)
+    private String name;
+    @ExcelProperty(value = "联系电话" ,index = 2)
+    private String phone;
+    @ExcelProperty(value = "预约时间" ,index = 3)
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date reserveTime;
+    @ExcelProperty(value = "预约内容" ,index = 4)
+    private String content;
+    @ExcelProperty(value = "备注" ,index = 5)
+    private String remark;
+    @ExcelProperty(value = "社区备注" ,index = 6)
+    private String actRemark;
+    @ExcelProperty(value = "提交时间" ,index = 7)
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date createAt;
+
+
+}
diff --git a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/reserve/ComActReserveMakeHandleExcelAdminVO.java b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/reserve/ComActReserveMakeHandleExcelAdminVO.java
new file mode 100644
index 0000000..c4b2ae1
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/reserve/ComActReserveMakeHandleExcelAdminVO.java
@@ -0,0 +1,49 @@
+package com.panzhihua.common.model.vos.community.reserve;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+@ApiModel("预约明细列表返回参数")
+public class ComActReserveMakeHandleExcelAdminVO {
+
+    @ExcelProperty(value = "用户昵称" ,index = 0)
+    private String nickName;
+
+    @ExcelProperty(value = "预约登记主题" ,index = 1)
+    private String title;
+
+    @ExcelProperty(value = "预约人" ,index = 2)
+    private String name;
+
+    @ExcelProperty(value = "联系电话" ,index = 3)
+    private String phone;
+
+    @ExcelProperty(value = "预约时间" ,index = 4)
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date reserveTime;
+
+    @ExcelProperty(value = "预约内容" ,index = 5)
+    private String content;
+
+    @ExcelProperty(value = "备注" ,index = 6)
+    private String remark;
+
+    @ExcelProperty(value = "社区备注" ,index = 7)
+    private String actRemark;
+
+    @ExcelProperty(value = "提交时间" ,index = 8)
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date createAt;
+
+    @ExcelProperty(value = "状态" ,index = 9)
+    private String status;
+
+
+
+}
diff --git a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/reserve/ComActReserveMakeHandleListAdminVO.java b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/reserve/ComActReserveMakeHandleListAdminVO.java
new file mode 100644
index 0000000..db36a18
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/reserve/ComActReserveMakeHandleListAdminVO.java
@@ -0,0 +1,49 @@
+package com.panzhihua.common.model.vos.community.reserve;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+@ApiModel("预约明细列表返回参数")
+public class ComActReserveMakeHandleListAdminVO {
+
+    @ApiModelProperty("预约记录id")
+    private Long id;
+
+    @ApiModelProperty("用户昵称")
+    private String nickName;
+
+    @ApiModelProperty("预约人")
+    private String name;
+
+    @ApiModelProperty("联系电话")
+    private String phone;
+
+    @ApiModelProperty("预约时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date reserveTime;
+
+    @ApiModelProperty("预约内容")
+    private String content;
+
+    @ApiModelProperty("备注")
+    private String remark;
+
+    @ApiModelProperty("社区备注")
+    private String actRemark;
+
+    @ApiModelProperty("提交时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date createAt;
+
+    @ApiModelProperty("状态(1.待处理 2.预约成功 3.预约失败 4.已取消)")
+    private Integer status;
+
+    @ApiModelProperty("预约登记主题")
+    private String title;
+
+}
diff --git a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/reserve/ComActReserveMakeLeftStatisticsAdminVO.java b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/reserve/ComActReserveMakeLeftStatisticsAdminVO.java
new file mode 100644
index 0000000..0c32ba2
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/reserve/ComActReserveMakeLeftStatisticsAdminVO.java
@@ -0,0 +1,17 @@
+package com.panzhihua.common.model.vos.community.reserve;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+@ApiModel("预约统计左边返回参数")
+public class ComActReserveMakeLeftStatisticsAdminVO {
+
+    @ApiModelProperty("预约日期(格式:yyyy-MM-dd)")
+    private String reserveTime;
+
+    @ApiModelProperty("预约数量")
+    private Integer count;
+
+}
diff --git a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/reserve/ComActReserveMakeListAdminVO.java b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/reserve/ComActReserveMakeListAdminVO.java
new file mode 100644
index 0000000..231f69f
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/reserve/ComActReserveMakeListAdminVO.java
@@ -0,0 +1,43 @@
+package com.panzhihua.common.model.vos.community.reserve;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+@ApiModel("预约明细列表返回参数")
+public class ComActReserveMakeListAdminVO {
+
+    @ApiModelProperty("预约记录id")
+    private Long id;
+
+    @ApiModelProperty("用户昵称")
+    private String nickName;
+
+    @ApiModelProperty("预约人")
+    private String name;
+
+    @ApiModelProperty("联系电话")
+    private String phone;
+
+    @ApiModelProperty("预约时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date reserveTime;
+
+    @ApiModelProperty("预约内容")
+    private String content;
+
+    @ApiModelProperty("备注")
+    private String remark;
+
+    @ApiModelProperty("社区备注")
+    private String actRemark;
+
+    @ApiModelProperty("提交时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date createAt;
+
+}
diff --git a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/reserve/ComActReserveMakeOperationAdminVO.java b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/reserve/ComActReserveMakeOperationAdminVO.java
new file mode 100644
index 0000000..216906c
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/reserve/ComActReserveMakeOperationAdminVO.java
@@ -0,0 +1,50 @@
+package com.panzhihua.common.model.vos.community.reserve;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+import java.util.List;
+
+@Data
+@ApiModel("预约明细操作记录返回参数")
+public class ComActReserveMakeOperationAdminVO {
+
+    @ApiModelProperty("预约登记id")
+    private Long reserveId;
+
+    @ApiModelProperty("预约登记记录id")
+    private Long reserveRecordId;
+
+    @ApiModelProperty("用户id")
+    private Long userId;
+
+    @ApiModelProperty("类型(1.本人操作 2.社区操作)")
+    private Integer type;
+
+    @ApiModelProperty("预约人手机号")
+    private String phone;
+
+    @ApiModelProperty("操作内容")
+    private String reserveContent;
+
+    @ApiModelProperty("操作时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date reserveTime;
+
+    @ApiModelProperty("备注")
+    private String remark;
+
+    @ApiModelProperty("状态(1.提交 2.预约成功 3.预约失败 4.取消)")
+    private Integer status;
+
+    @ApiModelProperty("创建时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date createAt;
+
+    @ApiModelProperty("操作人")
+    private String createByName;
+
+}
diff --git a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/reserve/ComActReserveMakeRightExcelAdminVO.java b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/reserve/ComActReserveMakeRightExcelAdminVO.java
new file mode 100644
index 0000000..a290eda
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/reserve/ComActReserveMakeRightExcelAdminVO.java
@@ -0,0 +1,25 @@
+package com.panzhihua.common.model.vos.community.reserve;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * 预约统计汇总导出返回对象
+ */
+@Data
+public class ComActReserveMakeRightExcelAdminVO {
+
+    @ExcelProperty(value = "日期" ,index = 0)
+    private String reserveTime;
+    @ExcelProperty(value = "预约主题" ,index = 1)
+    private String title;
+    @ExcelProperty(value = "所占百分比" ,index = 2)
+    private BigDecimal tag;
+    @ExcelProperty(value = "预约量" ,index = 3)
+    private Integer count;
+    @ExcelProperty(value = "合计" ,index = 4)
+    private Integer allCount;
+
+}
diff --git a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/reserve/ComActReserveMakeRightStatisticsAdminVO.java b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/reserve/ComActReserveMakeRightStatisticsAdminVO.java
new file mode 100644
index 0000000..58fc633
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/reserve/ComActReserveMakeRightStatisticsAdminVO.java
@@ -0,0 +1,28 @@
+package com.panzhihua.common.model.vos.community.reserve;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+@ApiModel("预约统计右边返回参数")
+public class ComActReserveMakeRightStatisticsAdminVO {
+
+    @ApiModelProperty("日期(格式:yyyy-MM-dd)")
+    private String reserveTime;
+
+    @ApiModelProperty("预约主题")
+    private String title;
+
+    @ApiModelProperty("所占百分比")
+    private BigDecimal tag;
+
+    @ApiModelProperty("预约数量")
+    private Integer count;
+
+    @ApiModelProperty("预约量合计")
+    private Integer allCount;
+
+}
diff --git a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/reserve/ComActReserveMakeStatisticsAdminVO.java b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/reserve/ComActReserveMakeStatisticsAdminVO.java
new file mode 100644
index 0000000..5e28f1a
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/reserve/ComActReserveMakeStatisticsAdminVO.java
@@ -0,0 +1,18 @@
+package com.panzhihua.common.model.vos.community.reserve;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+@ApiModel("预约登记返回参数")
+public class ComActReserveMakeStatisticsAdminVO {
+
+    @ApiModelProperty("预约日期数量统计数据")
+    private List<ComActReserveMakeLeftStatisticsAdminVO> leftStatisticsList;
+
+    @ApiModelProperty("预约统计汇总-右边统计数据")
+    private List<ComActReserveMakeRightStatisticsAdminVO> rightStatisticsList;
+}
diff --git a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/reserve/ComActReserveRecordListVO.java b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/reserve/ComActReserveRecordListVO.java
new file mode 100644
index 0000000..0372d9d
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/reserve/ComActReserveRecordListVO.java
@@ -0,0 +1,98 @@
+package com.panzhihua.common.model.vos.community.reserve;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+public class ComActReserveRecordListVO {
+    private Long id;
+
+    /**
+     * 用户id
+     */
+    private Long userId;
+
+    /**
+     * 预约登记id
+     */
+    private Long reserveId;
+
+    /**
+     * 社区id
+     */
+    private Long communityId;
+
+    /**
+     * 类型(1.预约 2.登记)
+     */
+    private Integer type;
+
+    /**
+     * 提交人名称
+     */
+    private String name;
+
+    /**
+     * 提交人手机号
+     */
+    private String phone;
+
+    /**
+     * 状态(1.待处理 2.预约成功 3.预约失败 4.已取消)
+     */
+    private Integer status;
+
+    /**
+     * 内容
+     */
+    private String content;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+    /**
+     * 社区备注
+     */
+    private String actRemark;
+
+    /**
+     * 预约时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date reserveTime;
+
+    /**
+     * 用户填报json数据
+     */
+    private String jsonObject;
+
+    /**
+     * 创建时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date createAt;
+
+    /**
+     * 创建人
+     */
+    private Long createBy;
+
+    /**
+     * 修改时间
+     */
+    private Date updateAt;
+
+    /**
+     * 修改人
+     */
+    private Long updateBy;
+
+    /**
+     * 标题
+     */
+    private String title;
+}
diff --git a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/reserve/ComActReserveRegisterDetailedAnswerVO.java b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/reserve/ComActReserveRegisterDetailedAnswerVO.java
new file mode 100644
index 0000000..30b970a
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/reserve/ComActReserveRegisterDetailedAnswerVO.java
@@ -0,0 +1,23 @@
+package com.panzhihua.common.model.vos.community.reserve;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+import java.util.List;
+
+@Data
+@ApiModel("登记明细用户填写答案返回参数")
+public class ComActReserveRegisterDetailedAnswerVO {
+
+    @ApiModelProperty("题目id")
+    private Long reserveSubId;
+
+    @ApiModelProperty("题目内容")
+    private String reserveSubContent;
+
+    @ApiModelProperty("回答内容")
+    private String answerContent;
+}
diff --git a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/reserve/ComActReserveRegisterDetailedVO.java b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/reserve/ComActReserveRegisterDetailedVO.java
new file mode 100644
index 0000000..ef5601e
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/reserve/ComActReserveRegisterDetailedVO.java
@@ -0,0 +1,36 @@
+package com.panzhihua.common.model.vos.community.reserve;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+import java.util.List;
+
+@Data
+@ApiModel("登记明细返回参数")
+public class ComActReserveRegisterDetailedVO {
+
+    @ApiModelProperty("流水号")
+    private Long id;
+
+    @ApiModelProperty("用户昵称")
+    private String nickName;
+
+    @ApiModelProperty("身份")
+    private String identity;
+
+    @ApiModelProperty("提交时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date createAt;
+
+    @ApiModelProperty("是否是党员(0.否 1.是)")
+    private Integer isPartymember;
+
+    @ApiModelProperty("是否是志愿者(0.否 1.是)")
+    private Integer isVolunteer;
+
+    @ApiModelProperty("答案列表")
+    private List<ComActReserveRegisterDetailedAnswerVO> answerList;
+}
diff --git a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/reserve/ComActReserveRegisterExcelAdminVO.java b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/reserve/ComActReserveRegisterExcelAdminVO.java
new file mode 100644
index 0000000..e0e01b8
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/reserve/ComActReserveRegisterExcelAdminVO.java
@@ -0,0 +1,23 @@
+package com.panzhihua.common.model.vos.community.reserve;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 登记统计汇总导出返回对象
+ */
+@Data
+public class ComActReserveRegisterExcelAdminVO {
+
+    @ExcelProperty(value = "登记主题" ,index = 0)
+    private String title;
+    @ExcelProperty(value = "所占百分比" ,index = 1)
+    private BigDecimal tag;
+    @ExcelProperty(value = "登记量" ,index = 2)
+    private Integer count;
+
+}
diff --git a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/reserve/ComActReserveRegisterStatisticsAdminVO.java b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/reserve/ComActReserveRegisterStatisticsAdminVO.java
new file mode 100644
index 0000000..aea132c
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/reserve/ComActReserveRegisterStatisticsAdminVO.java
@@ -0,0 +1,25 @@
+package com.panzhihua.common.model.vos.community.reserve;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+@Data
+@ApiModel("登记统计汇总返回参数")
+public class ComActReserveRegisterStatisticsAdminVO {
+
+    @ApiModelProperty("登记主题")
+    private String title;
+
+    @ApiModelProperty("所占百分比")
+    private BigDecimal tag;
+
+    @ApiModelProperty("登记量")
+    private Integer count;
+
+    @ApiModelProperty("登记总量")
+    private Integer allCount;
+}
diff --git a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/reserve/ComActReserveSubListVO.java b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/reserve/ComActReserveSubListVO.java
new file mode 100644
index 0000000..2cef446
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/reserve/ComActReserveSubListVO.java
@@ -0,0 +1,24 @@
+package com.panzhihua.common.model.vos.community.reserve;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+@ApiModel("登记题目列表返回参数返回参数")
+public class ComActReserveSubListVO {
+
+    @ApiModelProperty("题目id")
+    private String id;
+
+    @ApiModelProperty("题目内容")
+    private String content;
+
+    public ComActReserveSubListVO() {
+    }
+
+    public ComActReserveSubListVO(String id, String content){
+        this.id = id;
+        this.content = content;
+    }
+}
diff --git a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/reserve/ComOperationDetailVO.java b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/reserve/ComOperationDetailVO.java
new file mode 100644
index 0000000..9e81c39
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/reserve/ComOperationDetailVO.java
@@ -0,0 +1,15 @@
+package com.panzhihua.common.model.vos.community.reserve;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+@ApiModel
+public class ComOperationDetailVO {
+    private List<ComOperationListVO> list;
+    @ApiModelProperty("1可以继续 2不能继续")
+    private Integer isContinue =2;
+}
diff --git a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/reserve/ComOperationListVO.java b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/reserve/ComOperationListVO.java
new file mode 100644
index 0000000..dfd5177
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/reserve/ComOperationListVO.java
@@ -0,0 +1,68 @@
+package com.panzhihua.common.model.vos.community.reserve;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+public class ComOperationListVO {
+    private Long id;
+
+    /**
+     * 预约登记id
+     */
+    private Long reserveId;
+
+    /**
+     * 预约登记记录id
+     */
+    private Long reserveRecordId;
+
+    /**
+     * 用户id
+     */
+    private Long userId;
+
+    /**
+     * 类型(1.本人操作 2.社区操作)
+     */
+    private Integer type;
+
+    /**
+     * 操作人手机号
+     */
+    private String phone;
+
+    /**
+     * 操作时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date reserveTime;
+
+    /**
+     * 操作内容
+     */
+    private String reserveContent;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+    /**
+     * 状态(1.提交 2.预约成功 3.预约失败 4.取消)
+     */
+    private Integer status;
+
+    /**
+     * 创建时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date createAt;
+
+    /**
+     * 创建人
+     */
+    private Long createBy;
+}
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 1f74741..721600b 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
@@ -2,39 +2,112 @@
 
 import java.util.List;
 
+import com.panzhihua.common.model.dtos.community.*;
+import com.panzhihua.common.model.vos.community.*;
+import io.swagger.annotations.ApiOperation;
 import org.springframework.cloud.openfeign.FeignClient;
-import org.springframework.web.bind.annotation.*;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestParam;
 
 import com.panzhihua.common.model.dtos.AppletesBackstageConfigDTO;
 import com.panzhihua.common.model.dtos.PageDTO;
 import com.panzhihua.common.model.dtos.advertisement.ComOpsAdvDTO;
 import com.panzhihua.common.model.dtos.advertisement.PageComOpsAdvDTO;
-import com.panzhihua.common.model.dtos.community.*;
-import com.panzhihua.common.model.dtos.community.bigscreen.*;
+import com.panzhihua.common.model.dtos.community.bigscreen.BigScreenEventDTO;
+import com.panzhihua.common.model.dtos.community.bigscreen.BigScreenEventDetailDTO;
+import com.panzhihua.common.model.dtos.community.bigscreen.BigScreenStatisticAgeGenderDTO;
+import com.panzhihua.common.model.dtos.community.bigscreen.BigScreenStatisticPartyActivityDTO;
+import com.panzhihua.common.model.dtos.community.bigscreen.PageBigScreenStatisticPartyOrg;
 import com.panzhihua.common.model.dtos.community.bigscreen.work.ScreenActActivityListDTO;
 import com.panzhihua.common.model.dtos.community.bigscreen.work.ScreenActActivityPeopleListDTO;
 import com.panzhihua.common.model.dtos.community.bigscreen.work.ScreenDiscussListDTO;
 import com.panzhihua.common.model.dtos.community.bigscreen.work.ScreenMicroListDTO;
-import com.panzhihua.common.model.dtos.community.easyPhoto.*;
+import com.panzhihua.common.model.dtos.community.easyPhoto.AddEasyPhotoActivityDTO;
+import com.panzhihua.common.model.dtos.community.easyPhoto.AddEasyPhotoClassifyDTO;
+import com.panzhihua.common.model.dtos.community.easyPhoto.EditEasyPhotoActivityDTO;
+import com.panzhihua.common.model.dtos.community.easyPhoto.ExportEasyPhotoDTO;
+import com.panzhihua.common.model.dtos.community.easyPhoto.PageEasyPhotoActivityDTO;
+import com.panzhihua.common.model.dtos.community.easyPhoto.PageEasyPhotoActivityUserDTO;
 import com.panzhihua.common.model.dtos.community.integral.ComActIntegralCommunityRankDTO;
 import com.panzhihua.common.model.dtos.community.integral.admin.AddComActIntegralUserDTO;
 import com.panzhihua.common.model.dtos.community.integral.admin.EditComActIntegralRuleDTO;
 import com.panzhihua.common.model.dtos.community.integral.admin.PageComActIntegralRuleDTO;
 import com.panzhihua.common.model.dtos.community.integral.admin.PageComActIntegralTradeDTO;
 import com.panzhihua.common.model.dtos.community.questnaire.StatisticsSummaryDTO;
+import com.panzhihua.common.model.dtos.community.reserve.*;
 import com.panzhihua.common.model.dtos.community.switchs.SearchCommunityDTO;
-import com.panzhihua.common.model.dtos.community.wallet.*;
+import com.panzhihua.common.model.dtos.community.wallet.ComActWalletDetailDTO;
+import com.panzhihua.common.model.dtos.community.wallet.ComActWalletSettlementAdminDTO;
+import com.panzhihua.common.model.dtos.community.wallet.PageComActWalletAdminDTO;
+import com.panzhihua.common.model.dtos.community.wallet.PageComActWalletTradeAdminDTO;
+import com.panzhihua.common.model.dtos.community.wallet.PageComActWalletTradeDTO;
 import com.panzhihua.common.model.dtos.elders.ComEldersAuthGetResultDTO;
 import com.panzhihua.common.model.dtos.elders.ComEldersAuthPageDTO;
 import com.panzhihua.common.model.dtos.elders.ComEldersAuthUserAddAppDTO;
-import com.panzhihua.common.model.dtos.grid.*;
-import com.panzhihua.common.model.dtos.grid.admin.*;
-import com.panzhihua.common.model.dtos.neighbor.*;
-import com.panzhihua.common.model.dtos.shop.*;
+import com.panzhihua.common.model.dtos.grid.AddComMngHousePopulationDTO;
+import com.panzhihua.common.model.dtos.grid.ComMngVillageListAppDTO;
+import com.panzhihua.common.model.dtos.grid.DelComMngHousePopulationDTO;
+import com.panzhihua.common.model.dtos.grid.PageComMngPopulationDTO;
+import com.panzhihua.common.model.dtos.grid.PageComMngVillageBuildHouseAppDTO;
+import com.panzhihua.common.model.dtos.grid.PagePopulationListDTO;
+import com.panzhihua.common.model.dtos.grid.admin.ComMngPopulationExportDTO;
+import com.panzhihua.common.model.dtos.grid.admin.ComMngPopulationListDTO;
+import com.panzhihua.common.model.dtos.grid.admin.ComMngPopulationRelationHouseDTO;
+import com.panzhihua.common.model.dtos.grid.admin.ComMngPopulationSubordinateDTO;
+import com.panzhihua.common.model.dtos.grid.admin.ComMngVillageListExportAdminDTO;
+import com.panzhihua.common.model.dtos.grid.admin.PageComMngVillagePopulationDTO;
+import com.panzhihua.common.model.dtos.grid.admin.PageComMngVillagePopulationHouseDTO;
+import com.panzhihua.common.model.dtos.neighbor.AddComActNeighborCircleAppDTO;
+import com.panzhihua.common.model.dtos.neighbor.AddNeighborCircleTopicAdminDTO;
+import com.panzhihua.common.model.dtos.neighbor.ComActNeighborAddBrowseAppDTO;
+import com.panzhihua.common.model.dtos.neighbor.ComActNeighborCircleAdminDTO;
+import com.panzhihua.common.model.dtos.neighbor.ComActNeighborCircleAppDTO;
+import com.panzhihua.common.model.dtos.neighbor.ComActNeighborCircleDetailAppDTO;
+import com.panzhihua.common.model.dtos.neighbor.ComActNeighborCircleTopicAdminDTO;
+import com.panzhihua.common.model.dtos.neighbor.ComActNeighborCommentAppDTO;
+import com.panzhihua.common.model.dtos.neighbor.ComActNeighborCommentReplyAppDTO;
+import com.panzhihua.common.model.dtos.neighbor.ComActNeighborFabulousAppDTO;
+import com.panzhihua.common.model.dtos.neighbor.ComActNeighborForwardAppDTO;
+import com.panzhihua.common.model.dtos.neighbor.ComActNeighborReplyAppDTO;
+import com.panzhihua.common.model.dtos.neighbor.DetailNeighborAllCommentByAdminDTO;
+import com.panzhihua.common.model.dtos.neighbor.DetailNeighborCommentReplyByAdminDTO;
+import com.panzhihua.common.model.dtos.shop.ComShopAddressDTO;
+import com.panzhihua.common.model.dtos.shop.ComShopCartDTO;
+import com.panzhihua.common.model.dtos.shop.ComShopEditNubCartDTO;
+import com.panzhihua.common.model.dtos.shop.ComShopFundsExportDTO;
+import com.panzhihua.common.model.dtos.shop.ComShopGoodsDTO;
+import com.panzhihua.common.model.dtos.shop.ComShopOrderCreateDTO;
+import com.panzhihua.common.model.dtos.shop.ComShopOrderDeliverDTO;
+import com.panzhihua.common.model.dtos.shop.ComShopOrderExportDTO;
+import com.panzhihua.common.model.dtos.shop.ComShopOrderPreviewDTO;
+import com.panzhihua.common.model.dtos.shop.ComShopOrderQueryDTO;
+import com.panzhihua.common.model.dtos.shop.ComShopOrderShipDTO;
+import com.panzhihua.common.model.dtos.shop.ComShopSysConfDTO;
+import com.panzhihua.common.model.dtos.shop.OrderPayDTO;
+import com.panzhihua.common.model.dtos.shop.PageComOrderListDTO;
+import com.panzhihua.common.model.dtos.shop.PageComShopAddressDTO;
+import com.panzhihua.common.model.dtos.shop.PageComShopFundsSearchDTO;
+import com.panzhihua.common.model.dtos.shop.PageComShopGoodsDTO;
+import com.panzhihua.common.model.dtos.shop.PageComShopOrderSearchDTO;
+import com.panzhihua.common.model.dtos.shop.PageComShopStoreDTO;
+import com.panzhihua.common.model.dtos.shop.PageComShopSysConfDTO;
+import com.panzhihua.common.model.dtos.shop.WxPayNotifyOrderDTO;
 import com.panzhihua.common.model.dtos.user.PageInputUserDTO;
-import com.panzhihua.common.model.dtos.vaccines.*;
-import com.panzhihua.common.model.vos.*;
-import com.panzhihua.common.model.vos.community.*;
+import com.panzhihua.common.model.dtos.vaccines.VaccinesByAdminDTO;
+import com.panzhihua.common.model.dtos.vaccines.VaccinesEnrollByAdminDTO;
+import com.panzhihua.common.model.dtos.vaccines.VaccinesEnrollByAppDTO;
+import com.panzhihua.common.model.dtos.vaccines.VaccinesEnrollUserByAppDTO;
+import com.panzhihua.common.model.dtos.vaccines.VaccinesInoculationByAdminDTO;
+import com.panzhihua.common.model.vos.BcDictionaryItemVO;
+import com.panzhihua.common.model.vos.BcDictionaryVO;
+import com.panzhihua.common.model.vos.DictionaryVO;
+import com.panzhihua.common.model.vos.R;
+import com.panzhihua.common.model.vos.SystemmanagementConfigVO;
 import com.panzhihua.common.model.vos.community.bigscreen.BigScreenStatisticAgeGender;
 import com.panzhihua.common.model.vos.community.bigscreen.BigScreenStatisticPartyActivity;
 import com.panzhihua.common.model.vos.community.bigscreen.BigScreenStatisticPartyBuild;
@@ -42,6 +115,7 @@
 import com.panzhihua.common.model.vos.community.questnaire.EditComActQuestnaireVo;
 import com.panzhihua.common.model.vos.community.questnaire.QuestnaireVO;
 import com.panzhihua.common.model.vos.community.questnaire.UsersAnswerQuestnaireVO;
+import com.panzhihua.common.model.vos.community.reserve.*;
 import com.panzhihua.common.model.vos.neighbor.AddNeighborCircleAdminVO;
 import com.panzhihua.common.model.vos.neighbor.ChangeCommentReplyStatusByAdminVO;
 import com.panzhihua.common.model.vos.neighbor.ChangeCommentStatusByAdminVO;
@@ -141,6 +215,86 @@
      */
     @PostMapping("listactivitysign")
     R listActivitySign(@RequestBody ActivitySignVO activitySignVO);
+
+    /**
+     * description  getSignLists  查询活动报名名单
+     * @param    activitySignVO  查询参数
+     * @return    R   查询结果
+     * @author txb
+     * @date 2021/8/24 14:03
+     */
+    @PostMapping("/activity/sign/getList")
+    R getSignLists(@RequestBody ActivitySignVO activitySignVO);
+
+    /**
+     * description  listActivityRegists  分页查询活动评价
+     * @param    comActActEvaluateVO  活动评价vo
+     * @return    R   分页查询结果
+     * @author txb
+     * @date 2021/8/24 14:03
+     */
+    @PostMapping("/activity/evaluate/page")
+    R pageActivityEvaluates(@RequestBody ComActActEvaluateVO comActActEvaluateVO);
+
+    /**
+     * description  getEvaluateLists  查询活动评价
+     * @param    comActActEvaluateVO  查询参数
+     * @return    R   查询结果
+     * @author txb
+     * @date 2021/8/24 14:03
+     */
+    @PostMapping("/activity/evaluate/getList")
+    R getEvaluateLists(@RequestBody ComActActEvaluateVO comActActEvaluateVO);
+
+    /**
+     * description  pageActivityRegists  分页查询活动签到
+     * @param    comActActRegistVO  活动签到vo
+     * @return    R   分页查询结果
+     * @author txb
+     * @date 2021/8/24 14:03
+     */
+    @PostMapping("/activity/regist/page")
+    R pageActivityRegists(@RequestBody ComActActRegistVO comActActRegistVO);
+
+    /**
+     * description  getRegistLists  查询活动签到
+     * @param    comActActRegistVO  查询参数
+     * @return    R   查询结果
+     * @author txb
+     * @date 2021/8/25 9:33
+     */
+    @PostMapping("/activity/regist/getList")
+    R getRegistLists(@RequestBody ComActActRegistVO comActActRegistVO);
+
+    /**
+     * description  getRegistLists  查询活动未签到
+     * @param    comActActRegistVO  查询参数
+     * @return    R   查询结果
+     * @author txb
+     * @date 2021/8/25 9:33
+     */
+    @PostMapping("/activity/noRegist/getList")
+    R getNoRegistLists(@RequestBody ComActActRegistVO comActActRegistVO);
+
+    /**
+     * description  activityStagistics  活动数据统计
+     * @param activityId 活动id
+     * @return    R   统计结果
+     * @author txb
+     * @date 2021/8/25 13:33
+     */
+    @GetMapping("/activity/statistics")
+    R activityStatistics(@RequestParam("activityId") Long activityId);
+
+    /**
+     * 获取活动历史封面  getPictureList
+     * @param userId 用户id
+     * @return    R   统计结果
+     * @author txb
+     * @date 2021/8/27 13:33
+     */
+    @GetMapping("/activity/picture/getList")
+    R getPictureList(@RequestParam("userId") Long userId);
 
     /**
      * 活动报名名单
@@ -4787,4 +4941,255 @@
      */
     @GetMapping("/easyphoto/noHandle/list")
     R easyPhotoNoHandleList(@RequestParam("communityId") Long communityId);
+
+    @GetMapping("/reserve/detail")
+    R reserveDetail(@RequestParam("id") Long id,@RequestParam("userId") Long userId,@RequestParam("recordId") Long recordId,@RequestParam("isBack") Integer isBack);
+
+    @PostMapping("/reserve/commit")
+    R reserveCommit(@RequestBody ComActReserveCommitVO comActReserveCommitVO);
+
+    /**
+     * 我的预约/登记
+     * @param pageUserReserveDTO
+     * @return
+     */
+    @PostMapping("/reserve/userReserveList")
+    R userReserveList(@RequestBody PageUserReserveDTO pageUserReserveDTO);
+
+    /**
+     * 取消预约/登记
+     */
+    @PostMapping("/reserve/cancelReserve")
+    R userCancelReserve(@RequestBody CancelRecordDTO comActReserveRecordDO);
+
+    /**
+     * 预约详情操作记录
+     */
+    @PostMapping("/reserve/detailOperation")
+    R reserveOperation(@RequestBody OperationDetailDTO comActReserveOperationRecordDO);
+
+    /**
+     * 社区后台-分页查询预约登记列表
+     * @param pageReserveDTO    请求参数
+     * @return  预约登记列表
+     */
+    @PostMapping("/reserve/admin/page")
+    R pageReserveAdmin(@RequestBody PageReserveAdminDTO pageReserveDTO);
+
+    /**
+     * 社区后台-新增预约登记信息
+     * @param addReserveDTO 请求参数
+     * @return  新增结果
+     */
+    @PostMapping("/reserve/admin/add")
+    R addReserveAdmin(@RequestBody AddReserveAdminDTO addReserveDTO);
+
+    /**
+     * 社区后台-编辑预约登记信息
+     * @param editReserveDTO 请求参数
+     * @return  新增结果
+     */
+    @PostMapping("/reserve/admin/edit")
+    R editReserveAdmin(@RequestBody EditReserveAdminDTO editReserveDTO);
+
+    /**
+     * 社区后台-修改预约登记状态
+     * @param editReserveDTO    请求参数
+     * @return  修改结果
+     */
+    @PostMapping("/reserve/admin/edit/status")
+    R editReserveStatusAdmin(@RequestBody EditComActReserveStatusDTO editReserveDTO);
+
+    /**
+     * 社区后台-继续预约登记
+     * @param editReserveDTO    请求参数
+     * @return  修改结果
+     */
+    @PostMapping("/reserve/admin/edit/info")
+    R editReserveInfoAdmin(@RequestBody EditComActReserveInfoDTO editReserveDTO);
+
+    /**
+     * 社区后台-根据预约登记id查询详情
+     * @param reserveId 预约登记id
+     * @return  预约登记详情
+     */
+    @GetMapping("/reserve/admin/detail")
+    R detailReserveAdmin(@RequestParam("reserveId") Long reserveId);
+
+    /**
+     * 社区后台-根据社区id统计预约类数据
+     * @param makeStatisticsDTO   请求参数
+     * @return  统计预约类数据
+     */
+    @PostMapping("/reserve/admin/make/statistics")
+    R makeStatisticsAdmin(@RequestBody ComActReserveMakeStatisticsDTO makeStatisticsDTO);
+
+    /**
+     * 社区后台-查询导出预约统计汇总数据
+     * @param makeStatisticsDTO   请求参数
+     * @return  统计预约类数据
+     */
+    @PostMapping("/reserve/admin/make/statistics/export")
+    R makeStatisticsExportAdmin(@RequestBody ComActReserveMakeStatisticsDTO makeStatisticsDTO);
+
+    /**
+     * 社区后台-根据预约id查询预约明细
+     * @param pageMakeDTO   请求参数
+     * @return  预约明细
+     */
+    @PostMapping("/reserve/admin/make/page")
+    R pageMakeAdmin(@RequestBody PageReserveMakeAdminDTO pageMakeDTO);
+
+    /**
+     * 根据预约记录id查询预约明细操作记录
+     * @param reserveRecordId   预约记录id
+     * @return  预约明细操作记录
+     */
+    @GetMapping("/reserve/admin/make/detail")
+    R detailMakeAdmin(@RequestParam("reserveRecordId") Long reserveRecordId);
+
+    /**
+     * 批量取消预约记录
+     * @param reserveRecordDTO   请求参数
+     * @return  取消结果
+     */
+    @PostMapping("/reserve/admin/make/cancel")
+    R makeCancelAdmin(@RequestBody CancelReserveRecordDTO reserveRecordDTO);
+
+    /**
+     * 预约明细导出数据查询
+     * @param pageMakeDTO   请求参数
+     * @return  预约明细数据
+     */
+    @PostMapping("/reserve/admin/make/list/export")
+    R exportMakeAdmin(@RequestBody PageReserveMakeAdminDTO pageMakeDTO);
+
+    /**
+     * 分页查询登记统计汇总
+     * @param registerStatisticsDTO 请求参数
+     * @return  登记统计汇总
+     */
+    @PostMapping("/reserve/admin/register/page")
+    R registerStatisticsAdmin(@RequestBody ComActReserveRegisterStatisticsDTO registerStatisticsDTO);
+
+    /**
+     * 导出登记统计汇总
+     * @param registerStatisticsDTO 请求参数
+     * @return  登记统计汇总
+     */
+    @PostMapping("/reserve/admin/register/export")
+    R registerStatisticsExportAdmin(@RequestBody ComActReserveRegisterStatisticsDTO registerStatisticsDTO);
+
+    /**
+     * 分页查询预约处理列表
+     * @param pageMakeHandleDTO 请求参数
+     * @return  预约处理列表
+     */
+    @PostMapping("/reserve/admin/make/handle/page")
+    R pageMakeHandleAdmin(@RequestBody PageReserveMakeHandleAdminDTO pageMakeHandleDTO);
+
+    /**
+     * 批量处理预约记录
+     * @param makeHandleDTO 请求参数
+     * @return  处理结果
+     */
+    @PostMapping("/reserve/admin/make/handle")
+    R makeHandleAdmin(@RequestBody MakeHandleAdminDTO makeHandleDTO);
+
+    /**
+     * 导出预约处理列表数据查询
+     * @param pageMakeHandleDTO 请求参数
+     * @return  预约处理列表
+     */
+    @PostMapping("/reserve/admin/make/handle/export")
+    R exportMakeHandleAdmin(@RequestBody PageReserveMakeHandleAdminDTO pageMakeHandleDTO);
+
+    /**
+     * 删除预约登记信息
+     * @param reserveId 预约登记id
+     * @return  删除结果
+     */
+    @GetMapping("/reserve/admin/delete")
+    R deleteReserveAdmin(@RequestParam("reserveId") Long reserveId);
+
+    /**
+     * 查询社区所有预约信息列表
+     * @param communityId   社区id
+     * @return  预约信息列表
+     */
+    @GetMapping("/reserve/admin/list")
+    R listReserveAdmin(@RequestParam("communityId") Long communityId);
+
+    /**
+     * 导出登记明细数据
+     * @param reserveId 登记id
+     * @return  登记明细数据
+     */
+    @GetMapping("/reserve/admin/register/list/export")
+    R exportRegisterAdmin(@RequestParam("reserveId") Long reserveId);
+
+    /**
+     * 查询预约登记题目列表
+     * @param reserveId 预约登记id
+     * @return  约登记题目列表
+     */
+    @GetMapping("/reserve/admin/subject/list")
+    R subjectListAdmin(@RequestParam("reserveId") Long reserveId);
+
+    /**
+     * 分页查询登记明细列表
+     * @param detailedAdminDTO  请求参数
+     * @return  登记明细列表
+     */
+    @PostMapping("/reserve/admin/register/detailed/list")
+    R registerDetailedListAdmin(@RequestBody PageReserveRegisterDetailedAdminDTO detailedAdminDTO);
+
+    /**
+     * 查询登记详情记录
+     * @param reserveRecordId   登记记录id
+     * @return  登记详情记录
+     */
+    @GetMapping("/reserve/admin/register/detailed/detail")
+    R registerDetailedDetailAdmin(@RequestParam("reserveRecordId") Long reserveRecordId);
+    /**
+     * 活动签到
+     *
+     * @param comActActRegistVO 请求参数
+     * @return 签到结果
+     */
+    @PostMapping("/activity/sign-in")
+    R activitySignIn(@RequestBody ComActActRegistVO comActActRegistVO);
+
+    /**
+     * 用户签到列表
+     *
+     * @param userId 用户id
+     * @return 用户签到记录列表
+     */
+    @GetMapping("/sign-in/user/list")
+    R listSignInActivity(@RequestParam("userId") Long userId);
+
+    /**
+     * 社区活动评价
+     *
+     * @param comActActEvaluateVO 社区评价VO
+     * @return 评价结果
+     */
+    @PostMapping("/activity/evaluate")
+    R activityEvaluate(@RequestBody ComActActEvaluateVO comActActEvaluateVO);
+
+    /**
+     * 用户评价列表
+     *
+     * @param userId 用户id
+     * @return 当前用户对所有活动的评价列表
+     */
+    @GetMapping("/evaluate/user/list")
+    R listEvaluate(@RequestParam("userId") Long userId);
+
+    /**
+     * 定时任务针对活动结束后7天还未评价的用户默认好评
+     */
+    @PostMapping("/activity/default-praise")
+    R timedTaskActivityDefaultPraise();
 }
diff --git a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/utlis/FileUtil.java b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/utlis/FileUtil.java
index 54db2c6..f7690d1 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/utlis/FileUtil.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/utlis/FileUtil.java
@@ -1,7 +1,8 @@
 package com.panzhihua.common.utlis;
 
-import java.io.File;
-import java.io.InputStream;
+import java.io.*;
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipOutputStream;
 
 public class FileUtil {
 
@@ -32,4 +33,83 @@
     public static File readUserHomeFile(String pathName) {
         return new File(System.getProperty("user.home") + File.separator + pathName);
     }
+
+    /**
+     * 压缩文件
+     *
+     * @param sourceFilePath 源文件路径
+     * @param zipFilePath    压缩后文件存储路径
+     * @param zipFilename    压缩文件名
+     */
+    public static void compressToZip(String sourceFilePath, String zipFilePath, String zipFilename) {
+        File sourceFile = new File(sourceFilePath);
+        File zipPath = new File(zipFilePath);
+        if (!zipPath.exists()) {
+            zipPath.mkdirs();
+        }
+        File zipFile = new File(zipPath + File.separator + zipFilename);
+        try (ZipOutputStream zos = new ZipOutputStream(new FileOutputStream(zipFile))) {
+            writeZip(sourceFile, "", zos);
+            //文件压缩完成后,删除被压缩文件
+            boolean flag = deleteDir(sourceFile);
+        } catch (Exception e) {
+            e.printStackTrace();
+            throw new RuntimeException(e.getMessage(), e.getCause());
+        }
+    }
+
+    /**
+     * 遍历所有文件,压缩
+     *
+     * @param file       源文件目录
+     * @param parentPath 压缩文件目录
+     * @param zos        文件流
+     */
+    private static void writeZip(File file, String parentPath, ZipOutputStream zos) {
+        if (file.isDirectory()) {
+            //目录
+            parentPath += file.getName() + File.separator;
+            File[] files = file.listFiles();
+            for (File f : files) {
+                writeZip(f, parentPath, zos);
+            }
+        } else {
+            //文件
+            try (BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file))) {
+                //指定zip文件夹
+                ZipEntry zipEntry = new ZipEntry(parentPath + file.getName());
+                zos.putNextEntry(zipEntry);
+                int len;
+                byte[] buffer = new byte[1024 * 10];
+                while ((len = bis.read(buffer, 0, buffer.length)) != -1) {
+                    zos.write(buffer, 0, len);
+                    zos.flush();
+                }
+            } catch (Exception e) {
+                e.printStackTrace();
+                throw new RuntimeException(e.getMessage(), e.getCause());
+            }
+        }
+
+        /**
+         * 删除文件夹
+         *
+         * @param dir
+         * @return
+         */
+
+    }
+    private static boolean deleteDir (File dir){
+        if (dir.isDirectory()) {
+            String[] children = dir.list();
+            for (int i = 0; i < children.length; i++) {
+                boolean success = deleteDir(new File(dir, children[i]));
+                if (!success) {
+                    return false;
+                }
+            }
+        }
+        //删除空文件夹
+        return dir.delete();
+    }
 }
diff --git a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/utlis/QRCodeUtils.java b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/utlis/QRCodeUtils.java
new file mode 100644
index 0000000..fb808cf
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/utlis/QRCodeUtils.java
@@ -0,0 +1,264 @@
+package com.panzhihua.common.utlis;
+
+import java.awt.BasicStroke;
+import java.awt.Graphics;
+import java.awt.Graphics2D;
+import java.awt.Image;
+import java.awt.Shape;
+import java.awt.geom.RoundRectangle2D;
+import java.awt.image.BufferedImage;
+import java.io.File;
+import java.io.OutputStream;
+import java.util.Hashtable;
+import java.util.Random;
+
+import javax.imageio.ImageIO;
+
+import com.google.zxing.BarcodeFormat;
+import com.google.zxing.BinaryBitmap;
+import com.google.zxing.DecodeHintType;
+import com.google.zxing.EncodeHintType;
+import com.google.zxing.MultiFormatReader;
+import com.google.zxing.MultiFormatWriter;
+import com.google.zxing.Result;
+import com.google.zxing.client.j2se.BufferedImageLuminanceSource;
+import com.google.zxing.common.BitMatrix;
+import com.google.zxing.common.HybridBinarizer;
+import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;
+
+public class QRCodeUtils {
+    private static final String CHARSET = "utf-8";
+    private static final String FORMAT_NAME = "JPG";
+    // 二维码尺寸
+    private static final int QRCODE_SIZE = 300;
+    // LOGO宽度
+    private static final int WIDTH = 60;
+    // LOGO高度
+    private static final int HEIGHT = 60;
+
+    private static BufferedImage createImage(String content, String imgPath,
+                                             boolean needCompress) throws Exception {
+        Hashtable<EncodeHintType, Object> hints = new Hashtable<EncodeHintType, Object>();
+        hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.H);
+        hints.put(EncodeHintType.CHARACTER_SET, CHARSET);
+        hints.put(EncodeHintType.MARGIN, 1);
+        BitMatrix bitMatrix = new MultiFormatWriter().encode(content,
+                BarcodeFormat.QR_CODE, QRCODE_SIZE, QRCODE_SIZE, hints);
+        int width = bitMatrix.getWidth();
+        int height = bitMatrix.getHeight();
+        BufferedImage image = new BufferedImage(width, height,
+                BufferedImage.TYPE_INT_RGB);
+        for (int x = 0; x < width; x++) {
+            for (int y = 0; y < height; y++) {
+                image.setRGB(x, y, bitMatrix.get(x, y) ? 0xFF000000
+                        : 0xFFFFFFFF);
+            }
+        }
+        if (imgPath == null || "".equals(imgPath)) {
+            return image;
+        }
+        // 插入图片
+        QRCodeUtils.insertImage(image, imgPath, needCompress);
+        return image;
+    }
+
+    /**
+     * 插入LOGO
+     *
+     * @param source
+     *            二维码图片
+     * @param imgPath
+     *            LOGO图片地址
+     * @param needCompress
+     *            是否压缩
+     * @throws Exception
+     */
+    private static void insertImage(BufferedImage source, String imgPath,
+                                    boolean needCompress) throws Exception {
+        File file = new File(imgPath);
+        if (!file.exists()) {
+            System.err.println(""+imgPath+"   该文件不存在!");
+            return;
+        }
+        Image src = ImageIO.read(new File(imgPath));
+        int width = src.getWidth(null);
+        int height = src.getHeight(null);
+        if (needCompress) { // 压缩LOGO
+            if (width > WIDTH) {
+                width = WIDTH;
+            }
+            if (height > HEIGHT) {
+                height = HEIGHT;
+            }
+            Image image = src.getScaledInstance(width, height,
+                    Image.SCALE_SMOOTH);
+            BufferedImage tag = new BufferedImage(width, height,
+                    BufferedImage.TYPE_INT_RGB);
+            Graphics g = tag.getGraphics();
+            g.drawImage(image, 0, 0, null); // 绘制缩小后的图
+            g.dispose();
+            src = image;
+        }
+        // 插入LOGO
+        Graphics2D graph = source.createGraphics();
+        int x = (QRCODE_SIZE - width) / 2;
+        int y = (QRCODE_SIZE - height) / 2;
+        graph.drawImage(src, x, y, width, height, null);
+        Shape shape = new RoundRectangle2D.Float(x, y, width, width, 6, 6);
+        graph.setStroke(new BasicStroke(3f));
+        graph.draw(shape);
+        graph.dispose();
+    }
+
+    /**
+     * 生成二维码(内嵌LOGO)
+     *
+     * @param content
+     *            内容
+     * @param imgPath
+     *            LOGO地址
+     * @param destPath
+     *            存放目录
+     * @param needCompress
+     *            是否压缩LOGO
+     * @throws Exception
+     */
+    public static String encode(String content, String imgPath, String destPath,
+                                boolean needCompress) throws Exception {
+        BufferedImage image = QRCodeUtils.createImage(content, imgPath,
+                needCompress);
+        mkdirs(destPath);
+        String file = Snowflake.getId() + ".jpg";
+        ImageIO.write(image, FORMAT_NAME, new File(destPath+"/"+file));
+        return file;
+    }
+
+    /**
+     * 当文件夹不存在时,mkdirs会自动创建多层目录,区别于mkdir.(mkdir如果父目录不存在则会抛出异常)
+     * @date 2013-12-11 上午10:16:36
+     * @param destPath 存放目录
+     */
+    public static void mkdirs(String destPath) {
+        File file =new File(destPath);
+        //当文件夹不存在时,mkdirs会自动创建多层目录,区别于mkdir.(mkdir如果父目录不存在则会抛出异常)
+        if (!file.exists() && !file.isDirectory()) {
+            file.mkdirs();
+        }
+    }
+
+    /**
+     * 生成二维码(内嵌LOGO)
+     *
+     * @param content
+     *            内容
+     * @param imgPath
+     *            LOGO地址
+     * @param destPath
+     *            存储地址
+     * @throws Exception
+     */
+    public static void encode(String content, String imgPath, String destPath)
+            throws Exception {
+        QRCodeUtils.encode(content, imgPath, destPath, false);
+    }
+
+    /**
+     * 生成二维码
+     *
+     * @param content
+     *            内容
+     * @param destPath
+     *            存储地址
+     * @param needCompress
+     *            是否压缩LOGO
+     * @throws Exception
+     */
+    public static void encode(String content, String destPath,
+                              boolean needCompress) throws Exception {
+        QRCodeUtils.encode(content, null, destPath, needCompress);
+    }
+
+    /**
+     * 生成二维码
+     *
+     * @param content
+     *            内容
+     * @param destPath
+     *            存储地址
+     * @throws Exception
+     */
+    public static void encode(String content, String destPath) throws Exception {
+        QRCodeUtils.encode(content, null, destPath, false);
+    }
+
+    /**
+     * 生成二维码(内嵌LOGO)
+     *
+     * @param content
+     *            内容
+     * @param imgPath
+     *            LOGO地址
+     * @param output
+     *            输出流
+     * @param needCompress
+     *            是否压缩LOGO
+     * @throws Exception
+     */
+    public static void encode(String content, String imgPath,
+                              OutputStream output, boolean needCompress) throws Exception {
+        BufferedImage image = QRCodeUtils.createImage(content, imgPath,
+                needCompress);
+        ImageIO.write(image, FORMAT_NAME, output);
+    }
+
+    /**
+     * 生成二维码
+     *
+     * @param content
+     *            内容
+     * @param output
+     *            输出流
+     * @throws Exception
+     */
+    public static void encode(String content, OutputStream output)
+            throws Exception {
+        QRCodeUtils.encode(content, null, output, false);
+    }
+
+    /**
+     * 解析二维码
+     *
+     * @param file
+     *            二维码图片
+     * @return
+     * @throws Exception
+     */
+    public static String decode(File file) throws Exception {
+        BufferedImage image;
+        image = ImageIO.read(file);
+        if (image == null) {
+            return null;
+        }
+        BufferedImageLuminanceSource source = new BufferedImageLuminanceSource(
+                image);
+        BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(source));
+        Result result;
+        Hashtable<DecodeHintType, Object> hints = new Hashtable<DecodeHintType, Object>();
+        hints.put(DecodeHintType.CHARACTER_SET, CHARSET);
+        result = new MultiFormatReader().decode(bitmap, hints);
+        String resultStr = result.getText();
+        return resultStr;
+    }
+
+    /**
+     * 解析二维码
+     *
+     * @param path
+     *            二维码图片地址
+     * @return
+     * @throws Exception
+     */
+    public static String decode(String path) throws Exception {
+        return QRCodeUtils.decode(new File(path));
+    }
+}
diff --git a/springcloud_k8s_panzhihuazhihuishequ/community_backstage/pom.xml b/springcloud_k8s_panzhihuazhihuishequ/community_backstage/pom.xml
index 8141a14..a89e9f1 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/community_backstage/pom.xml
+++ b/springcloud_k8s_panzhihuazhihuishequ/community_backstage/pom.xml
@@ -68,6 +68,16 @@
             <artifactId>minio</artifactId>
             <version>6.0.8</version>
         </dependency>
+<!--        <dependency>-->
+<!--            <groupId>org.jxls</groupId>-->
+<!--            <artifactId>jxls</artifactId>-->
+<!--            <version>2.6.0</version>-->
+<!--        </dependency>-->
+<!--        <dependency>-->
+<!--            <groupId>org.jxls</groupId>-->
+<!--            <artifactId>jxls-poi</artifactId>-->
+<!--            <version>1.1.0</version>-->
+<!--        </dependency>-->
     </dependencies>
 
     <build>
diff --git a/springcloud_k8s_panzhihuazhihuishequ/community_backstage/src/main/java/com/panzhihua/community_backstage/api/ComActReserveApi.java b/springcloud_k8s_panzhihuazhihuishequ/community_backstage/src/main/java/com/panzhihua/community_backstage/api/ComActReserveApi.java
new file mode 100644
index 0000000..b079b08
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/community_backstage/src/main/java/com/panzhihua/community_backstage/api/ComActReserveApi.java
@@ -0,0 +1,584 @@
+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.metadata.style.WriteCellStyle;
+import com.alibaba.excel.write.style.HorizontalCellStyleStrategy;
+import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.panzhihua.common.controller.BaseController;
+import com.panzhihua.common.enums.ReserveRecordStatusEnum;
+import com.panzhihua.common.model.dtos.community.QuestnaireAnswersDTO;
+import com.panzhihua.common.model.dtos.community.reserve.*;
+import com.panzhihua.common.model.vos.LoginUserInfoVO;
+import com.panzhihua.common.model.vos.R;
+import com.panzhihua.common.model.vos.community.ComActQuestnaireAnswerContentVO;
+import com.panzhihua.common.model.vos.community.ComActQuestnaireSubVO;
+import com.panzhihua.common.model.vos.community.ComCvtBusinessVO;
+import com.panzhihua.common.model.vos.community.ComMngPopulationExcelVo;
+import com.panzhihua.common.model.vos.community.questnaire.QuestnaireStatisticsSummaryExcelAdminVO;
+import com.panzhihua.common.model.vos.community.reserve.*;
+import com.panzhihua.common.service.community.CommunityService;
+import com.panzhihua.common.service.user.UserService;
+import com.panzhihua.common.utlis.DateUtils;
+import com.panzhihua.common.utlis.SFTPUtil;
+import com.panzhihua.community_backstage.config.SFTPConfig;
+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.BeanUtils;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.InputStream;
+import java.text.SimpleDateFormat;
+import java.util.*;
+
+/**
+ * @description: 预约登记接口
+ * @author: lyq
+ * @date: 2021-8-23
+ */
+@Slf4j
+@Api(tags = {"预约登记"})
+@RestController
+@RequestMapping("/reserve")
+public class ComActReserveApi extends BaseController {
+
+    @Resource
+    private CommunityService communityService;
+    @Resource
+    private UserService userService;
+    @Resource
+    private SFTPConfig sftpConfig;
+
+    @ApiOperation(value = "分页查询预约登记列表", response = ComActReserveListAdminVO.class)
+    @PostMapping("/page")
+    public R page(@RequestBody PageReserveAdminDTO pageReserveDTO) {
+        Long communityId = this.getCommunityId();
+        pageReserveDTO.setCommunityId(communityId);
+        return communityService.pageReserveAdmin(pageReserveDTO);
+    }
+
+    @ApiOperation(value = "新增预约登记记录")
+    @PostMapping("/add")
+    public R add(@RequestBody AddReserveAdminDTO addReserveDTO) {
+        LoginUserInfoVO loginUserInfo = this.getLoginUserInfo();
+        if (loginUserInfo == null) {
+            return R.fail("请先登录");
+        }
+        addReserveDTO.setCommunityId(loginUserInfo.getCommunityId());
+        addReserveDTO.setUserId(loginUserInfo.getUserId());
+        return communityService.addReserveAdmin(addReserveDTO);
+    }
+
+    @ApiOperation(value = "删除预约登记")
+    @PostMapping("/delete")
+    public R delete(@RequestParam("reserveId") Long reserveId) {
+        return communityService.deleteReserveAdmin(reserveId);
+    }
+
+    @ApiOperation(value = "查询社区所有预约登记列表")
+    @GetMapping("/list")
+    public R list() {
+        LoginUserInfoVO loginUserInfo = this.getLoginUserInfo();
+        if (loginUserInfo == null) {
+            return R.fail("请先登录");
+        }
+        return communityService.listReserveAdmin(loginUserInfo.getCommunityId());
+    }
+
+    @ApiOperation(value = "编辑预约登记记录")
+    @PostMapping("/edit")
+    public R edit(@RequestBody EditReserveAdminDTO editReserveDTO) {
+        LoginUserInfoVO loginUserInfo = this.getLoginUserInfo();
+        if (loginUserInfo == null) {
+            return R.fail("请先登录");
+        }
+        editReserveDTO.setCommunityId(loginUserInfo.getCommunityId());
+        editReserveDTO.setUserId(loginUserInfo.getUserId());
+        return communityService.editReserveAdmin(editReserveDTO);
+    }
+
+    @ApiOperation(value = "修改预约登记状态")
+    @PostMapping("/edit/status")
+    public R editStatus(@RequestBody EditComActReserveStatusDTO editReserveDTO) {
+        LoginUserInfoVO loginUserInfo = this.getLoginUserInfo();
+        if (loginUserInfo == null) {
+            return R.fail("请先登录");
+        }
+        editReserveDTO.setUserId(loginUserInfo.getUserId());
+        return communityService.editReserveStatusAdmin(editReserveDTO);
+    }
+
+    @ApiOperation(value = "点击继续预约登记")
+    @PostMapping("/edit/info")
+    public R editInfo(@RequestBody EditComActReserveInfoDTO editReserveDTO) {
+        LoginUserInfoVO loginUserInfo = this.getLoginUserInfo();
+        if (loginUserInfo == null) {
+            return R.fail("请先登录");
+        }
+        editReserveDTO.setUserId(loginUserInfo.getUserId());
+        return communityService.editReserveInfoAdmin(editReserveDTO);
+    }
+
+    @ApiOperation(value = "预约登记详情")
+    @PostMapping("/detail")
+    public R detail(@RequestParam("reserveId") Long reserveId) {
+        return communityService.detailReserveAdmin(reserveId);
+    }
+
+    @ApiOperation(value = "预约类统计汇总", response = ComActReserveMakeStatisticsAdminVO.class)
+    @PostMapping("/make/statistics")
+    public R makeStatistics(@RequestBody ComActReserveMakeStatisticsDTO makeStatisticsDTO) {
+        LoginUserInfoVO loginUserInfo = this.getLoginUserInfo();
+        if (loginUserInfo == null) {
+            return R.fail("请先登录");
+        }
+        makeStatisticsDTO.setCommunityId(loginUserInfo.getCommunityId());
+        return communityService.makeStatisticsAdmin(makeStatisticsDTO);
+    }
+
+    @ApiOperation(value = "预约登记统计汇总导出")
+    @PostMapping("/make/statistics/export")
+    public R makeStatisticsExport(@RequestBody ComActReserveMakeStatisticsDTO makeStatisticsDTO) {
+        LoginUserInfoVO loginUserInfo = this.getLoginUserInfo();
+        if (loginUserInfo == null) {
+            return R.fail("请先登录");
+        }
+        makeStatisticsDTO.setCommunityId(loginUserInfo.getCommunityId());
+        String url = sftpConfig.getExcelUrl();
+        String name = "预约登记统计汇总导出数据.xlsx";
+        String ftpUrl = "/mnt/data/web/excel/";
+        R r = communityService.makeStatisticsExportAdmin(makeStatisticsDTO);
+        if (R.isOk(r)) {
+            List<ComActReserveMakeRightExcelAdminVO> resultList = new ArrayList<>();
+            List<ComActReserveMakeRightStatisticsAdminVO> rightStatisticsList = JSONArray.parseArray(JSONArray.toJSONString(r.getData()), ComActReserveMakeRightStatisticsAdminVO.class);
+            rightStatisticsList.forEach(rightStatistics -> {
+                ComActReserveMakeRightExcelAdminVO makeRightExcelAdminVO = new ComActReserveMakeRightExcelAdminVO();
+                BeanUtils.copyProperties(rightStatistics,makeRightExcelAdminVO);
+                resultList.add(makeRightExcelAdminVO);
+            });
+            try {
+                SFTPUtil sftp = new SFTPUtil(sftpConfig.getUserName(), sftpConfig.getPassword(), sftpConfig.getHost(), sftpConfig.getPort());
+                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, ComActReserveMakeRightExcelAdminVO.class)
+                                .registerWriteHandler(new LongestMatchColumnWidthStyleStrategy())
+                                .registerWriteHandler(new CustomSheetWriteHandler()).build();
+                        WriteSheet writeSheet = EasyExcel.writerSheet("预约登记统计汇总导出数据").build();
+                        excelWriter.write(resultList, 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;
+    }
+
+    @ApiOperation(value = "分页查询预约明细列表", response = ComActReserveMakeListAdminVO.class)
+    @PostMapping("/make/page")
+    public R pageMake(@RequestBody PageReserveMakeAdminDTO pageMakeDTO) {
+        return communityService.pageMakeAdmin(pageMakeDTO);
+    }
+
+    @ApiOperation(value = "查询预约明细详情", response = ComActReserveMakeDetailAdminVO.class)
+    @GetMapping("/make/detail")
+    public R detailMake(@RequestParam("reserveRecordId") Long reserveRecordId) {
+        return communityService.detailMakeAdmin(reserveRecordId);
+    }
+
+    @ApiOperation(value = "取消预约记录", response = ComActReserveMakeDetailAdminVO.class)
+    @PostMapping("/make/cancel")
+    public R makeCancel(@RequestBody CancelReserveRecordDTO reserveRecordDTO) {
+        LoginUserInfoVO loginUserInfo = this.getLoginUserInfo();
+        if (loginUserInfo == null) {
+            return R.fail("请先登录");
+        }
+        reserveRecordDTO.setUserId(loginUserInfo.getUserId());
+        return communityService.makeCancelAdmin(reserveRecordDTO);
+    }
+
+    @ApiOperation(value = "预约明细导出")
+    @PostMapping("/make/list/export")
+    public R exportMake(@RequestBody PageReserveMakeAdminDTO pageMakeDTO) {
+        String url = sftpConfig.getExcelUrl();
+        String name = "预约明细导出数据.xlsx";
+        String ftpUrl = "/mnt/data/web/excel/";
+        R r = communityService.exportMakeAdmin(pageMakeDTO);
+        if (R.isOk(r)) {
+            List<ComActReserveMakeDetailedExcelAdminVO> resultList = new ArrayList<>();
+            List<ComActReserveMakeListAdminVO> rightStatisticsList = JSONArray.parseArray(JSONArray.toJSONString(r.getData()), ComActReserveMakeListAdminVO.class);
+            rightStatisticsList.forEach(rightStatistics -> {
+                ComActReserveMakeDetailedExcelAdminVO makeRightExcelAdminVO = new ComActReserveMakeDetailedExcelAdminVO();
+                BeanUtils.copyProperties(rightStatistics,makeRightExcelAdminVO);
+                resultList.add(makeRightExcelAdminVO);
+            });
+            try {
+                SFTPUtil sftp = new SFTPUtil(sftpConfig.getUserName(), sftpConfig.getPassword(), sftpConfig.getHost(), sftpConfig.getPort());
+                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, ComActReserveMakeRightExcelAdminVO.class)
+                                .registerWriteHandler(new LongestMatchColumnWidthStyleStrategy())
+                                .registerWriteHandler(new CustomSheetWriteHandler()).build();
+                        WriteSheet writeSheet = EasyExcel.writerSheet("预约明细导出数据").build();
+                        excelWriter.write(resultList, 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;
+    }
+
+    @ApiOperation(value = "登记类统计汇总", response = ComActReserveRegisterStatisticsAdminVO.class)
+    @PostMapping("/register/statistics")
+    public R registerStatistics(@RequestBody ComActReserveRegisterStatisticsDTO registerStatisticsDTO) {
+        LoginUserInfoVO loginUserInfo = this.getLoginUserInfo();
+        if (loginUserInfo == null) {
+            return R.fail("请先登录");
+        }
+        registerStatisticsDTO.setCommunityId(loginUserInfo.getCommunityId());
+        return communityService.registerStatisticsAdmin(registerStatisticsDTO);
+    }
+
+    @ApiOperation(value = "登记类统计导出", response = ComActReserveRegisterStatisticsAdminVO.class)
+    @PostMapping("/register/statistics/export")
+    public R registerStatisticsExport(@RequestBody ComActReserveRegisterStatisticsDTO registerStatisticsDTO) {
+        LoginUserInfoVO loginUserInfo = this.getLoginUserInfo();
+        if (loginUserInfo == null) {
+            return R.fail("请先登录");
+        }
+        registerStatisticsDTO.setCommunityId(loginUserInfo.getCommunityId());
+        String url = sftpConfig.getExcelUrl();
+        String name = "登记统计汇总导出数据.xlsx";
+        String ftpUrl = "/mnt/data/web/excel/";
+        R r = communityService.registerStatisticsExportAdmin(registerStatisticsDTO);
+        if (R.isOk(r)) {
+            List<ComActReserveRegisterExcelAdminVO> resultList = new ArrayList<>();
+            List<ComActReserveRegisterStatisticsAdminVO> rightStatisticsList = JSONArray.parseArray(JSONArray.toJSONString(r.getData()), ComActReserveRegisterStatisticsAdminVO.class);
+            rightStatisticsList.forEach(rightStatistics -> {
+                ComActReserveRegisterExcelAdminVO makeRightExcelAdminVO = new ComActReserveRegisterExcelAdminVO();
+                BeanUtils.copyProperties(rightStatistics,makeRightExcelAdminVO);
+                resultList.add(makeRightExcelAdminVO);
+            });
+            try {
+                SFTPUtil sftp = new SFTPUtil(sftpConfig.getUserName(), sftpConfig.getPassword(), sftpConfig.getHost(), sftpConfig.getPort());
+                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, ComActReserveRegisterExcelAdminVO.class)
+                                .registerWriteHandler(new LongestMatchColumnWidthStyleStrategy())
+                                .registerWriteHandler(new CustomSheetWriteHandler()).build();
+                        WriteSheet writeSheet = EasyExcel.writerSheet("登记统计汇总导出数据").build();
+                        excelWriter.write(resultList, 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;
+    }
+
+    @ApiOperation(value = "分页查询预约处理列表", response = ComActReserveMakeHandleListAdminVO.class)
+    @PostMapping("/make/handle/page")
+    public R pageMakeHandle(@RequestBody PageReserveMakeHandleAdminDTO pageMakeHandleDTO) {
+        LoginUserInfoVO loginUserInfo = this.getLoginUserInfo();
+        if (loginUserInfo == null) {
+            return R.fail("请先登录");
+        }
+        pageMakeHandleDTO.setCommunityId(loginUserInfo.getCommunityId());
+        return communityService.pageMakeHandleAdmin(pageMakeHandleDTO);
+    }
+
+    @ApiOperation(value = "批量处理预约记录")
+    @PostMapping("/make/handle")
+    public R makeHandle(@RequestBody MakeHandleAdminDTO makeHandleDTO) {
+        LoginUserInfoVO loginUserInfo = this.getLoginUserInfo();
+        if (loginUserInfo == null) {
+            return R.fail("请先登录");
+        }
+        makeHandleDTO.setUserId(loginUserInfo.getUserId());
+        return communityService.makeHandleAdmin(makeHandleDTO);
+    }
+
+    @ApiOperation(value = "预约处理列表导出")
+    @PostMapping("/make/handle/export")
+    public R exportMakeHandle(@RequestBody PageReserveMakeHandleAdminDTO pageMakeHandleDTO) {
+        LoginUserInfoVO loginUserInfo = this.getLoginUserInfo();
+        if (loginUserInfo == null) {
+            return R.fail("请先登录");
+        }
+        pageMakeHandleDTO.setCommunityId(loginUserInfo.getCommunityId());
+        String url = sftpConfig.getExcelUrl();
+        String name = "预约处理列表导出数据.xlsx";
+        String ftpUrl = "/mnt/data/web/excel/";
+        R r = communityService.exportMakeHandleAdmin(pageMakeHandleDTO);
+        if (R.isOk(r)) {
+            List<ComActReserveMakeHandleExcelAdminVO> resultList = new ArrayList<>();
+            List<ComActReserveMakeHandleListAdminVO> rightStatisticsList = JSONArray.parseArray(JSONArray.toJSONString(r.getData()), ComActReserveMakeHandleListAdminVO.class);
+            rightStatisticsList.forEach(rightStatistics -> {
+                ComActReserveMakeHandleExcelAdminVO makeRightExcelAdminVO = new ComActReserveMakeHandleExcelAdminVO();
+                BeanUtils.copyProperties(rightStatistics,makeRightExcelAdminVO);
+                makeRightExcelAdminVO.setStatus(ReserveRecordStatusEnum.getCnDescByName(rightStatistics.getStatus()));
+                resultList.add(makeRightExcelAdminVO);
+            });
+            try {
+                SFTPUtil sftp = new SFTPUtil(sftpConfig.getUserName(), sftpConfig.getPassword(), sftpConfig.getHost(), sftpConfig.getPort());
+                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, ComActReserveMakeHandleExcelAdminVO.class)
+                                .registerWriteHandler(new LongestMatchColumnWidthStyleStrategy())
+                                .registerWriteHandler(new CustomSheetWriteHandler()).build();
+                        WriteSheet writeSheet = EasyExcel.writerSheet("预约处理列表导出数据").build();
+                        excelWriter.write(resultList, 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;
+    }
+
+    @ApiOperation(value = "导出登记明细")
+    @GetMapping("/register/list/export")
+    public R exportRegister(@RequestParam("reserveId") Long reserveId) {
+
+        String ftpUrl = "/mnt/data/web/excel/";
+        String name = "登记明细导出数据.xlsx";
+        try {
+            SFTPUtil sftp = new SFTPUtil(sftpConfig.getUserName(), sftpConfig.getPassword(), sftpConfig.getHost(), sftpConfig.getPort());
+            sftp.login();
+            boolean existDir = sftp.isExistDir(ftpUrl + name);
+            if (!existDir) {
+                String property = System.getProperty("user.dir");
+                String fileName = property + File.separator + name;
+                ExcelWriter excelWriter = null;
+                InputStream inputStream = null;
+                try {
+                    /**
+                     * 组合导出数据
+                     * 用户问卷答案
+                     */
+                    R QuestnaireAnswersDTOR = communityService.exportRegisterAdmin(reserveId);
+                    QuestnaireAnswersDTO questnaireAnswersDTOS = JSON.parseObject(JSON.toJSONString(QuestnaireAnswersDTOR.getData()), QuestnaireAnswersDTO.class);
+
+                    List<ComActQuestnaireSubVO> subVOList = questnaireAnswersDTOS.getSubs();
+                    //构造表头
+                    List<List<String>> headList = new ArrayList<List<String>>();
+                    String firstRowContent = "调查结果";
+                    List<String> head0 = new ArrayList<>();
+                    head0.add(firstRowContent);
+                    head0.add("姓名");
+                    headList.add(head0);
+                    List<String> head1 = new ArrayList<>();
+                    head1.add(firstRowContent);
+                    head1.add("提交时间");
+                    headList.add(head1);
+                    subVOList.forEach(sub -> {
+                        List<String> headn = new ArrayList<>();
+                        headn.add(firstRowContent);
+                        headn.add(sub.getContent());
+                        headList.add(headn);
+                    });
+                    List<List<Object>> datalist = new ArrayList<>();
+                    List<ComActQuestnaireAnswerContentVO> answerContentVOList = questnaireAnswersDTOS.getAnswers();
+                    if(answerContentVOList!=null && answerContentVOList.size()>0) {
+                        List<Object> userData = new ArrayList<>();
+                        List<ComActQuestnaireAnswerContentVO> usersAnswers = questnaireAnswersDTOS.getAnswers();
+                        //查询用户回答的所有答案,并新增到答案列表中
+                        ComActReserveRegisterDetailedVO recordListVO = questnaireAnswersDTOS.getRecordListVO();
+                        userData.add(recordListVO.getNickName());
+                        userData.add(DateUtils.format(recordListVO.getCreateAt(),DateUtils.ymdhms_format));
+                        Long reserveRecordId = null;
+                        for (ComActQuestnaireAnswerContentVO userAnswers:usersAnswers) {
+                            if(reserveRecordId == null){
+                                reserveRecordId = userAnswers.getReserveRecordId();
+                            }
+                            if(!reserveRecordId.equals(userAnswers.getReserveRecordId())){
+                                datalist.add(userData);
+                                userData = new ArrayList<>();
+                                userData.add(recordListVO.getNickName());
+                                userData.add(DateUtils.format(recordListVO.getCreateAt(),DateUtils.ymdhms_format));
+                                reserveRecordId = userAnswers.getReserveRecordId();
+                            }
+                            userData.add(userAnswers.getAnswerContent());
+                        }
+                    }
+
+                    WriteCellStyle headWriteCellStyle = new WriteCellStyle();
+                    WriteCellStyle contentWriteCellStyle = new WriteCellStyle();
+
+                    contentWriteCellStyle.setWrapped(true);
+                    HorizontalCellStyleStrategy horizontalCellStyleStrategy =
+                            new HorizontalCellStyleStrategy(headWriteCellStyle, contentWriteCellStyle);
+                    LongestMatchColumnWidthStyleStrategy longestMatchColumnWidthStyleStrategy = new LongestMatchColumnWidthStyleStrategy();
+
+                    excelWriter = EasyExcel.write(fileName, ComMngPopulationExcelVo.class)
+                            .registerWriteHandler(horizontalCellStyleStrategy)
+                            .registerWriteHandler(longestMatchColumnWidthStyleStrategy)
+                            .registerWriteHandler(new CustomSheetWriteHandler()).build();
+                    WriteSheet writeSheet = EasyExcel.writerSheet("登记明细导出数据").head(headList).build();
+                    excelWriter.write(datalist, 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(sftpConfig.getExcelUrl() + name);
+        } catch (Exception e) {
+            e.printStackTrace();
+            log.error("文件传输失败【{}】", e.getMessage());
+            return R.fail();
+        }
+    }
+
+    @ApiOperation(value = "查询题目列表",response = ComActReserveSubListVO.class)
+    @GetMapping("/subject/list")
+    public R subjectList(@RequestParam("reserveId") Long reserveId) {
+        return communityService.subjectListAdmin(reserveId);
+    }
+
+    @ApiOperation(value = "分页查询登记明细列表",response = ComActReserveRegisterDetailedVO.class)
+    @PostMapping("/register/detailed/list")
+    public R registerDetailedList(@RequestBody PageReserveRegisterDetailedAdminDTO detailedAdminDTO) {
+        return communityService.registerDetailedListAdmin(detailedAdminDTO);
+    }
+
+    @ApiOperation(value = "查询登记明细详情",response = ComActReserveRegisterDetailedVO.class)
+    @PostMapping("/register/detailed/detail")
+    public R registerDetailedDetail(@RequestParam("reserveRecordId") Long reserveRecordId) {
+        return communityService.registerDetailedDetailAdmin(reserveRecordId);
+    }
+
+}
diff --git a/springcloud_k8s_panzhihuazhihuishequ/community_backstage/src/main/java/com/panzhihua/community_backstage/api/ComSwPatrolRecordApi.java b/springcloud_k8s_panzhihuazhihuishequ/community_backstage/src/main/java/com/panzhihua/community_backstage/api/ComSwPatrolRecordApi.java
index df989df..efd8d72 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/community_backstage/src/main/java/com/panzhihua/community_backstage/api/ComSwPatrolRecordApi.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/community_backstage/src/main/java/com/panzhihua/community_backstage/api/ComSwPatrolRecordApi.java
@@ -10,6 +10,9 @@
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
 
+import com.jcraft.jsch.SftpException;
+import com.panzhihua.common.utlis.*;
+import org.apache.commons.io.FileUtils;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
@@ -31,9 +34,6 @@
 import com.panzhihua.common.model.vos.community.*;
 import com.panzhihua.common.service.community.CommunityService;
 import com.panzhihua.common.service.partybuilding.PartyBuildingService;
-import com.panzhihua.common.utlis.HttpUtils;
-import com.panzhihua.common.utlis.SFTPUtil;
-import com.panzhihua.common.utlis.StringUtils;
 import com.panzhihua.community_backstage.excel.CustomSheetWriteHandler;
 
 import freemarker.template.Configuration;
@@ -243,7 +243,7 @@
      */
     @ApiOperation(value = "导出台账-隐患报告")
     @PostMapping("/danger/export")
-    public R exportComMngCar(@RequestBody List<Long> dangerReportIds) {
+    public R exportDangerReportBook(@RequestBody List<Long> dangerReportIds) {
         String url = excelUrl;
         String name = "隐患报告台账导出数据.xlsx";
         String ftpUrl = "/mnt/data/web/excel/";
@@ -480,39 +480,69 @@
     @PostMapping("/export/safetyWorkRecord")
     public R exportSafetyWorkRecord(@RequestBody List<Long> ids) {
         Long communityId = this.getLoginUserInfo().getCommunityId();
-        List<String> downLoadUrl = new ArrayList<>();
-        try {
-            for (Long id : ids) {
-                SFTPUtil sftp = new SFTPUtil(userName, password, host, port);
-                sftp.login();
+        SFTPUtil sftp = new SFTPUtil(userName, password, host, port);
+        sftp.login();
+        String property = System.getProperty("user.dir");
+        String sourceFile =property+File.separator+"word"+File.separator+System.currentTimeMillis()+File.separator;
+        String zipFile=property+File.separator+"zip"+File.separator;
+        String ftpUrl = "/mnt/data/web/excel/";
+        for (Long id : ids) {
+            try {
                 Map<String, Object> dataMap = new HashMap<String, Object>();
                 ComSwSafetyWorkRecordVO comSwSafetyWorkRecordVO = JSONObject.parseObject(
                     JSONObject.toJSONString(communityService.detailSafetyWorkRecord(id, communityId).getData()),
                     ComSwSafetyWorkRecordVO.class);
                 // 生成动态模板excel通过ftp工具上传到主节点,然后返回模板下载地址
-                String ftpUrl = "/mnt/data/web/excel/";
                 String name = "安全工作记录_" + comSwSafetyWorkRecordVO.getId() + ".doc";
                 boolean existDir = sftp.isExistDir(ftpUrl + name);
                 if (!existDir) {
-                    String property = System.getProperty("user.dir");
-                    String fileName = property + File.separator + name;
                     // 这里 需要指定写用哪个class去写
                     ExcelWriter excelWriter = null;
                     InputStream inputStream = null;
+                    File file0=new File("d:/safetyWork/file");
+                    if(!file0.isDirectory()&&!file0.exists()){
+                        file0.mkdirs();
+                    }
+                    file0 = new File(sourceFile);
+                    if(!file0.isDirectory()&&!file0.exists()){
+                        file0.mkdirs();
+                    }
+                    sftp.download("/mnt/data/web/", "安全工作记录.ftl", "d:/safetyWork/file/安全工作记录.ftl");
+                    sftp.download("/mnt/data/web/", "blank.jpg", "d:/safetyWork/file/blank.jpg");
                     try {
                         // 日期
-                        dataMap.put("date",
-                            new SimpleDateFormat("yyyy-MM-dd").format(comSwSafetyWorkRecordVO.getPatrolTime()));
+                        if (comSwSafetyWorkRecordVO.getPatrolTime() != null) {
+                            dataMap.put("date",
+                                    new SimpleDateFormat("yyyy-MM-dd").format(comSwSafetyWorkRecordVO.getPatrolTime()));
+                        }else {
+                            dataMap.put("date", "");
+                        }
                         // 巡查类型
                         dataMap.put("patrolType", comSwSafetyWorkRecordVO.getPatrolType());
                         // 社区名称
-                        dataMap.put("communityName", comSwSafetyWorkRecordVO.getCommunityName());
+                        if (StringUtils.isNotEmpty(comSwSafetyWorkRecordVO.getCommunityName())) {
+                            dataMap.put("communityName", comSwSafetyWorkRecordVO.getCommunityName());
+                        }else {
+                            dataMap.put("communityName", "");
+                        }
                         // 地址
-                        dataMap.put("address", comSwSafetyWorkRecordVO.getAddress());
+                        if (StringUtils.isNotEmpty(comSwSafetyWorkRecordVO.getAddress())) {
+                            dataMap.put("address", comSwSafetyWorkRecordVO.getAddress());
+                        }else {
+                            dataMap.put("address", "");
+                        }
                         // 记录内容
-                        dataMap.put("recordContent", comSwSafetyWorkRecordVO.getRecordContent());
+                        if (StringUtils.isNotEmpty(comSwSafetyWorkRecordVO.getRecordContent())) {
+                            dataMap.put("recordContent", comSwSafetyWorkRecordVO.getRecordContent());
+                        }else {
+                            dataMap.put("recordContent", "");
+                        }
                         // 发现记录
-                        dataMap.put("findRecord", comSwSafetyWorkRecordVO.getFindRecord());
+                        if (StringUtils.isNotEmpty(comSwSafetyWorkRecordVO.getFindRecord())) {
+                            dataMap.put("findRecord", comSwSafetyWorkRecordVO.getFindRecord());
+                        }else {
+                            dataMap.put("findRecord", "");
+                        }
                         // 记录照片
                         List<String> photo = new ArrayList<>();
                         if (StringUtils.isNotEmpty(comSwSafetyWorkRecordVO.getRecordPhoto())) {
@@ -522,115 +552,131 @@
                             if (photo.size() == 1) {
                                 for (int i = 0; i < 9; i++) {
                                     if (i < 1) {
-                                        downloadPicture(photo.get(i), comSwSafetyWorkRecordVO.getId() + "_" + i);
+                                        downloadPicture(photo.get(i), comSwSafetyWorkRecordVO.getId() + "_" + i, "d:/safetyWork/file/");
                                         dataMap.put("imgStr" + (i + 1),
-                                            getImageStr("d:/" + comSwSafetyWorkRecordVO.getId() + "_" + i + ".jpg"));
+                                            getImageStr("d:/safetyWork/file/" + comSwSafetyWorkRecordVO.getId() + "_" + i + ".jpg"));
                                     } else {
-                                        dataMap.put("imgStr" + (i + 1), getImageStr("d:/blank.jpg"));
+                                        dataMap.put("imgStr" + (i + 1), getImageStr("d:/safetyWork/file/blank.jpg"));
                                     }
                                 }
                             }
                             if (photo.size() == 2) {
                                 for (int i = 0; i < 9; i++) {
                                     if (i < 2) {
-                                        downloadPicture(photo.get(i), comSwSafetyWorkRecordVO.getId() + "_" + i);
+                                        downloadPicture(photo.get(i), comSwSafetyWorkRecordVO.getId() + "_" + i, "d:/safetyWork/file/");
                                         dataMap.put("imgStr" + (i + 1),
-                                            getImageStr("d:/" + comSwSafetyWorkRecordVO.getId() + "_" + i + ".jpg"));
+                                                getImageStr("d:/safetyWork/file/" + comSwSafetyWorkRecordVO.getId() + "_" + i + ".jpg"));
                                     } else {
-                                        dataMap.put("imgStr" + (i + 1), getImageStr("d:/blank.jpg"));
+                                        dataMap.put("imgStr" + (i + 1), getImageStr("d:/safetyWork/file/blank.jpg"));
                                     }
                                 }
                             }
                             if (photo.size() == 3) {
                                 for (int i = 0; i < 9; i++) {
                                     if (i < 3) {
-                                        downloadPicture(photo.get(i), comSwSafetyWorkRecordVO.getId() + "_" + i);
+                                        downloadPicture(photo.get(i), comSwSafetyWorkRecordVO.getId() + "_" + i, "d:/safetyWork/file/");
                                         dataMap.put("imgStr" + (i + 1),
-                                            getImageStr("d:/" + comSwSafetyWorkRecordVO.getId() + "_" + i + ".jpg"));
+                                                getImageStr("d:/safetyWork/file/" + comSwSafetyWorkRecordVO.getId() + "_" + i + ".jpg"));
                                     } else {
-                                        dataMap.put("imgStr" + (i + 1), getImageStr("d:/blank.jpg"));
+                                        dataMap.put("imgStr" + (i + 1), getImageStr("d:/safetyWork/file/blank.jpg"));
                                     }
                                 }
                             }
                             if (photo.size() == 4) {
                                 for (int i = 0; i < 9; i++) {
                                     if (i < 4) {
-                                        downloadPicture(photo.get(i), comSwSafetyWorkRecordVO.getId() + "_" + i);
+                                        downloadPicture(photo.get(i), comSwSafetyWorkRecordVO.getId() + "_" + i, "d:/safetyWork/file/");
                                         dataMap.put("imgStr" + (i + 1),
-                                            getImageStr("d:/" + comSwSafetyWorkRecordVO.getId() + "_" + i + ".jpg"));
+                                                getImageStr("d:/safetyWork/file/" + comSwSafetyWorkRecordVO.getId() + "_" + i + ".jpg"));
                                     } else {
-                                        dataMap.put("imgStr" + (i + 1), getImageStr("d:/blank.jpg"));
+                                        dataMap.put("imgStr" + (i + 1), getImageStr("d:/safetyWork/file/blank.jpg"));
                                     }
                                 }
                             }
                             if (photo.size() == 5) {
                                 for (int i = 0; i < 9; i++) {
                                     if (i < 5) {
-                                        downloadPicture(photo.get(i), comSwSafetyWorkRecordVO.getId() + "_" + i);
+                                        downloadPicture(photo.get(i), comSwSafetyWorkRecordVO.getId() + "_" + i, "d:/safetyWork/file/");
                                         dataMap.put("imgStr" + (i + 1),
-                                            getImageStr("d:/" + comSwSafetyWorkRecordVO.getId() + "_" + i + ".jpg"));
+                                                getImageStr("d:/safetyWork/file/" + comSwSafetyWorkRecordVO.getId() + "_" + i + ".jpg"));
                                     } else {
-                                        dataMap.put("imgStr" + (i + 1), getImageStr("d:/blank.jpg"));
+                                        dataMap.put("imgStr" + (i + 1), getImageStr("d:/safetyWork/file/blank.jpg"));
                                     }
                                 }
                             }
                             if (photo.size() == 6) {
                                 for (int i = 0; i < 9; i++) {
                                     if (i < 6) {
-                                        downloadPicture(photo.get(i), comSwSafetyWorkRecordVO.getId() + "_" + i);
+                                        downloadPicture(photo.get(i), comSwSafetyWorkRecordVO.getId() + "_" + i, "d:/safetyWork/file/");
                                         dataMap.put("imgStr" + (i + 1),
-                                            getImageStr("d:/" + comSwSafetyWorkRecordVO.getId() + "_" + i + ".jpg"));
+                                                getImageStr("d:/safetyWork/file/" + comSwSafetyWorkRecordVO.getId() + "_" + i + ".jpg"));
                                     } else {
-                                        dataMap.put("imgStr" + (i + 1), getImageStr("d:/blank.jpg"));
+                                        dataMap.put("imgStr" + (i + 1), getImageStr("d:/safetyWork/file/blank.jpg"));
                                     }
                                 }
                             }
                             if (photo.size() == 7) {
                                 for (int i = 0; i < 9; i++) {
                                     if (i < 7) {
-                                        downloadPicture(photo.get(i), comSwSafetyWorkRecordVO.getId() + "_" + i);
+                                        downloadPicture(photo.get(i), comSwSafetyWorkRecordVO.getId() + "_" + i, "d:/safetyWork/file/");
                                         dataMap.put("imgStr" + (i + 1),
-                                            getImageStr("d:/" + comSwSafetyWorkRecordVO.getId() + "_" + i + ".jpg"));
+                                                getImageStr("d:/safetyWork/file/" + comSwSafetyWorkRecordVO.getId() + "_" + i + ".jpg"));
                                     } else {
-                                        dataMap.put("imgStr" + (i + 1), getImageStr("d:/blank.jpg"));
+                                        dataMap.put("imgStr" + (i + 1), getImageStr("d:/safetyWork/file/blank.jpg"));
                                     }
                                 }
                             }
                             if (photo.size() == 8) {
                                 for (int i = 0; i < 9; i++) {
                                     if (i < 8) {
-                                        downloadPicture(photo.get(i), comSwSafetyWorkRecordVO.getId() + "_" + i);
+                                        downloadPicture(photo.get(i), comSwSafetyWorkRecordVO.getId() + "_" + i, "d:/safetyWork/file/");
                                         dataMap.put("imgStr" + (i + 1),
-                                            getImageStr("d:/" + comSwSafetyWorkRecordVO.getId() + "_" + i + ".jpg"));
+                                                getImageStr("d:/safetyWork/file/" + comSwSafetyWorkRecordVO.getId() + "_" + i + ".jpg"));
                                     } else {
-                                        dataMap.put("imgStr" + (i + 1), getImageStr("d:/blank.jpg"));
+                                        dataMap.put("imgStr" + (i + 1), getImageStr("d:/safetyWork/file/blank.jpg"));
                                     }
                                 }
                             }
                             if (photo.size() == 9) {
                                 for (int i = 0; i < 9; i++) {
-                                    downloadPicture(photo.get(i), comSwSafetyWorkRecordVO.getId() + "_" + i);
+                                    downloadPicture(photo.get(i), comSwSafetyWorkRecordVO.getId() + "_" + i, "d:/safetyWork/file/");
                                     dataMap.put("imgStr" + (i + 1),
-                                        getImageStr("d:/" + comSwSafetyWorkRecordVO.getId() + "_" + i + ".jpg"));
+                                            getImageStr("d:/safetyWork/file/" + comSwSafetyWorkRecordVO.getId() + "_" + i + ".jpg"));
                                 }
                             }
                         } else {
                             for (int i = 0; i < 9; i++) {
-                                dataMap.put("imgStr" + (i + 1), getImageStr("d:/blank.jpg"));
+                                dataMap.put("imgStr" + (i + 1), getImageStr("d:/safetyWork/file/blank.jpg"));
                             }
                         }
                         // 备注
-                        dataMap.put("remark", comSwSafetyWorkRecordVO.getRemark());
+                        if (StringUtils.isNotEmpty(comSwSafetyWorkRecordVO.getRemark())) {
+                            dataMap.put("remark", comSwSafetyWorkRecordVO.getRemark());
+                        }else {
+                            dataMap.put("remark", "");
+                        }
                         // 巡查时间
-                        dataMap.put("patrolTime",
-                            new SimpleDateFormat("yyyy-MM-dd").format(comSwSafetyWorkRecordVO.getPatrolTime()));
+                        if (comSwSafetyWorkRecordVO.getPatrolTime() != null) {
+                            dataMap.put("patrolTime",
+                                    new SimpleDateFormat("yyyy-MM-dd").format(comSwSafetyWorkRecordVO.getPatrolTime()));
+                        }else {
+                            dataMap.put("patrolTime", "");
+                        }
                         // 工作人员
-                        dataMap.put("personName", comSwSafetyWorkRecordVO.getPersonName());
+                        if (StringUtils.isNotEmpty(comSwSafetyWorkRecordVO.getPersonName())) {
+                            dataMap.put("personName", comSwSafetyWorkRecordVO.getPersonName());
+                        }else {
+                            dataMap.put("personName", "");
+                        }
                         // 填报人员
-                        dataMap.put("createName", comSwSafetyWorkRecordVO.getCreateName());
+                        if (StringUtils.isNotEmpty(comSwSafetyWorkRecordVO.getCreateName())) {
+                            dataMap.put("createName", comSwSafetyWorkRecordVO.getCreateName());
+                        }else {
+                            dataMap.put("createName", "");
+                        }
                         // 填报时间
                         dataMap.put("createAt",
-                            new SimpleDateFormat("yyyy-MM-dd").format(comSwSafetyWorkRecordVO.getCreateAt()));
+                            new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(comSwSafetyWorkRecordVO.getCreateAt()));
                         // 获取请求url
                         String url = Constants.G_D_WEATHER_URL;
                         // 获取请求参数
@@ -662,12 +708,12 @@
                         // configuration.setClassForTemplateLoading(this.getClass(), "");
 
                         // 指定路径的第二种方式,我的路径是C:/a.ftl
-                        configuration.setDirectoryForTemplateLoading(new File("c:/"));
+                        configuration.setDirectoryForTemplateLoading(new File("d:/safetyWork/file/"));
 
                         // 输出文档路径及名称
                         // File outFile = new File("mnt/data/web/excel/安全工作记录_" + comSwSafetyWorkRecordVO.getId() +
                         // ".doc");
-                        File file = new File(fileName);
+                        File file = new File(sourceFile + name);
 
                         // 以utf-8的编码读取ftl文件
                         Template template = configuration.getTemplate("安全工作记录.ftl", "utf-8");
@@ -675,13 +721,13 @@
                             new OutputStreamWriter(new FileOutputStream(file), StandardCharsets.UTF_8), 10240);
                         template.process(dataMap, out);
                         out.close();
-                        inputStream = new FileInputStream(file);
-                        sftp.uploadMore(ftpUrl, name, inputStream);
-                        sftp.logout();
-                        inputStream.close();
-                        String absolutePath = file.getAbsolutePath();
-                        boolean delete = file.delete();
-                        log.info("删除excel【{}】结果【{}】", absolutePath, delete);
+                        //                        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) {
@@ -689,54 +735,99 @@
                         }
                     }
                 }
-                downLoadUrl.add(excelUrl + name);
+            } catch (Exception e) {
+                e.printStackTrace();
+                log.error("文件传输失败【{}】", e.getMessage());
             }
-            return R.ok(downLoadUrl);
-        } catch (Exception e) {
-            e.printStackTrace();
-            log.error("文件传输失败【{}】", e.getMessage());
         }
-        return R.fail();
+        FileUtil.compressToZip(sourceFile,zipFile,"安全工作记录.zip");
+        String currentDateString = String.valueOf(System.currentTimeMillis());
+        String name = "安全工作记录_"+ currentDateString+".zip";
+        try {
+            InputStream inputStream=new FileInputStream(zipFile+"安全工作记录.zip");
+            sftp.uploadMore(ftpUrl, name , inputStream);
+            sftp.logout();
+            inputStream.close();
+            FileUtils.deleteDirectory(new File(property+File.separator+"word"+File.separator));
+            FileUtils.deleteDirectory(new File(zipFile));
+        } catch (FileNotFoundException e) {
+            e.printStackTrace();
+        } catch (SftpException e) {
+            e.printStackTrace();
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+        return R.ok(excelUrl + name);
     }
 
     @ApiOperation(value = "下载巡查记录报告")
     @PostMapping("/export/patrolRecord")
     public R exportPatrolRecord(@RequestBody List<Long> ids) {
         Long communityId = this.getLoginUserInfo().getCommunityId();
-        List<String> downLoadUrl = new ArrayList<>();
-        try {
-            for (Long id : ids) {
-                SFTPUtil sftp = new SFTPUtil(userName, password, host, port);
-                sftp.login();
+        SFTPUtil sftp = new SFTPUtil(userName, password, host, port);
+        sftp.login();
+        String property = System.getProperty("user.dir");
+        String sourceFile =property+File.separator+"word"+File.separator+System.currentTimeMillis()+File.separator;
+        String zipFile=property+File.separator+"zip"+File.separator;
+        String ftpUrl = "/mnt/data/web/excel/";
+        for (Long id : ids) {
+            try {
                 Map<String, Object> dataMap = new HashMap<String, Object>();
                 ComSwPatrolRecordVO comSwPatrolRecordVO =
                     JSONObject.parseObject(JSONObject.toJSONString(communityService.detailPatrolRecord(id).getData()),
                         ComSwPatrolRecordVO.class);
                 // 生成动态模板excel通过ftp工具上传到主节点,然后返回模板下载地址
-                String ftpUrl = "/mnt/data/web/excel/";
                 String name = "巡查记录_" + comSwPatrolRecordVO.getId() + ".doc";
 
                 boolean existDir = sftp.isExistDir(ftpUrl + name);
                 if (!existDir) {
-                    String property = System.getProperty("user.dir");
-                    String fileName = property + File.separator + name;
                     // 这里 需要指定写用哪个class去写
                     ExcelWriter excelWriter = null;
                     InputStream inputStream = null;
+                    File file0=new File("d:/patrolRecord/file");
+                    if(!file0.isDirectory()&&!file0.exists()){
+                        file0.mkdirs();
+                    }
+                    file0 = new File(sourceFile);
+                    if(!file0.isDirectory()&&!file0.exists()){
+                        file0.mkdirs();
+                    }
+                    sftp.download("/mnt/data/web/", "巡查记录.ftl", "d:/patrolRecord/file/巡查记录.ftl");
+                    sftp.download("/mnt/data/web/", "blank.jpg", "d:/patrolRecord/file/blank.jpg");
                     try {
                         // 日期
-                        dataMap.put("date",
-                            new SimpleDateFormat("yyyy-MM-dd").format(comSwPatrolRecordVO.getPatrolTime()));
+                        if (comSwPatrolRecordVO.getPatrolTime() != null) {
+                            dataMap.put("date",
+                                    new SimpleDateFormat("yyyy-MM-dd").format(comSwPatrolRecordVO.getPatrolTime()));
+                        }else {
+                            dataMap.put("date", "");
+                        }
                         // 巡查类型
-                        dataMap.put("patrolType", comSwPatrolRecordVO.getPatrolType());
+                        if (StringUtils.isNotEmpty(comSwPatrolRecordVO.getPatrolType())) {
+                            dataMap.put("patrolType", comSwPatrolRecordVO.getPatrolType());
+                        }else {
+                            dataMap.put("patrolType", "");
+                        }
                         // 社区名称
                         // dataMap.put("communityName", comSwPatrolRecordVO.getCommunityName());
                         // 地址
-                        dataMap.put("address", comSwPatrolRecordVO.getAddress());
+                        if (StringUtils.isNotEmpty(comSwPatrolRecordVO.getAddress())) {
+                            dataMap.put("address", comSwPatrolRecordVO.getAddress());
+                        }else {
+                            dataMap.put("address", "");
+                        }
                         // 记录内容
-                        dataMap.put("recordContent", comSwPatrolRecordVO.getRecordContent());
+                        if (StringUtils.isNotEmpty(comSwPatrolRecordVO.getRecordContent())) {
+                            dataMap.put("recordContent", comSwPatrolRecordVO.getRecordContent());
+                        }else {
+                            dataMap.put("recordContent", "");
+                        }
                         // 发现记录
-                        dataMap.put("findRecord", comSwPatrolRecordVO.getFindRecord());
+                        if (StringUtils.isNotEmpty(comSwPatrolRecordVO.getFindRecord())) {
+                            dataMap.put("findRecord", comSwPatrolRecordVO.getFindRecord());
+                        }else {
+                            dataMap.put("findRecord", "");
+                        }
                         // 记录照片
                         List<String> photo = new ArrayList<>();
                         if (StringUtils.isNotEmpty(comSwPatrolRecordVO.getRecordPhoto())) {
@@ -746,122 +837,142 @@
                             if (photo.size() == 1) {
                                 for (int i = 0; i < 9; i++) {
                                     if (i < 1) {
-                                        downloadPicture(photo.get(i), comSwPatrolRecordVO.getId() + "_" + i);
+                                        downloadPicture(photo.get(i), comSwPatrolRecordVO.getId() + "_" + i, "d:/patrolRecord/file/");
                                         dataMap.put("imgStr" + (i + 1),
-                                            getImageStr("d:/" + comSwPatrolRecordVO.getId() + "_" + i + ".jpg"));
+                                            getImageStr("d:/patrolRecord/file/" + comSwPatrolRecordVO.getId() + "_" + i + ".jpg"));
                                     } else {
-                                        dataMap.put("imgStr" + (i + 1), getImageStr("d:/blank.jpg"));
+                                        dataMap.put("imgStr" + (i + 1), getImageStr("d:/patrolRecord/file/blank.jpg"));
                                     }
                                 }
                             }
                             if (photo.size() == 2) {
                                 for (int i = 0; i < 9; i++) {
                                     if (i < 2) {
-                                        downloadPicture(photo.get(i), comSwPatrolRecordVO.getId() + "_" + i);
+                                        downloadPicture(photo.get(i), comSwPatrolRecordVO.getId() + "_" + i, "d:/patrolRecord/file/");
                                         dataMap.put("imgStr" + (i + 1),
-                                            getImageStr("d:/" + comSwPatrolRecordVO.getId() + "_" + i + ".jpg"));
+                                                getImageStr("d:/patrolRecord/file/" + comSwPatrolRecordVO.getId() + "_" + i + ".jpg"));
                                     } else {
-                                        dataMap.put("imgStr" + (i + 1), getImageStr("d:/blank.jpg"));
+                                        dataMap.put("imgStr" + (i + 1), getImageStr("d:/patrolRecord/file/blank.jpg"));
                                     }
                                 }
                             }
                             if (photo.size() == 3) {
                                 for (int i = 0; i < 9; i++) {
                                     if (i < 3) {
-                                        downloadPicture(photo.get(i), comSwPatrolRecordVO.getId() + "_" + i);
+                                        downloadPicture(photo.get(i), comSwPatrolRecordVO.getId() + "_" + i, "d:/patrolRecord/file/");
                                         dataMap.put("imgStr" + (i + 1),
-                                            getImageStr("d:/" + comSwPatrolRecordVO.getId() + "_" + i + ".jpg"));
+                                                getImageStr("d:/patrolRecord/file/" + comSwPatrolRecordVO.getId() + "_" + i + ".jpg"));
                                     } else {
-                                        dataMap.put("imgStr" + (i + 1), getImageStr("d:/blank.jpg"));
+                                        dataMap.put("imgStr" + (i + 1), getImageStr("d:/patrolRecord/file/blank.jpg"));
                                     }
                                 }
                             }
                             if (photo.size() == 4) {
                                 for (int i = 0; i < 9; i++) {
                                     if (i < 4) {
-                                        downloadPicture(photo.get(i), comSwPatrolRecordVO.getId() + "_" + i);
+                                        downloadPicture(photo.get(i), comSwPatrolRecordVO.getId() + "_" + i, "d:/patrolRecord/file/");
                                         dataMap.put("imgStr" + (i + 1),
-                                            getImageStr("d:/" + comSwPatrolRecordVO.getId() + "_" + i + ".jpg"));
+                                                getImageStr("d:/patrolRecord/file/" + comSwPatrolRecordVO.getId() + "_" + i + ".jpg"));
                                     } else {
-                                        dataMap.put("imgStr" + (i + 1), getImageStr("d:/blank.jpg"));
+                                        dataMap.put("imgStr" + (i + 1), getImageStr("d:/patrolRecord/file/blank.jpg"));
                                     }
                                 }
                             }
                             if (photo.size() == 5) {
                                 for (int i = 0; i < 9; i++) {
                                     if (i < 5) {
-                                        downloadPicture(photo.get(i), comSwPatrolRecordVO.getId() + "_" + i);
+                                        downloadPicture(photo.get(i), comSwPatrolRecordVO.getId() + "_" + i, "d:/patrolRecord/file/");
                                         dataMap.put("imgStr" + (i + 1),
-                                            getImageStr("d:/" + comSwPatrolRecordVO.getId() + "_" + i + ".jpg"));
+                                                getImageStr("d:/patrolRecord/file/" + comSwPatrolRecordVO.getId() + "_" + i + ".jpg"));
                                     } else {
-                                        dataMap.put("imgStr" + (i + 1), getImageStr("d:/blank.jpg"));
+                                        dataMap.put("imgStr" + (i + 1), getImageStr("d:/patrolRecord/file/blank.jpg"));
                                     }
                                 }
                             }
                             if (photo.size() == 6) {
                                 for (int i = 0; i < 9; i++) {
                                     if (i < 6) {
-                                        downloadPicture(photo.get(i), comSwPatrolRecordVO.getId() + "_" + i);
+                                        downloadPicture(photo.get(i), comSwPatrolRecordVO.getId() + "_" + i, "d:/patrolRecord/file/");
                                         dataMap.put("imgStr" + (i + 1),
-                                            getImageStr("d:/" + comSwPatrolRecordVO.getId() + "_" + i + ".jpg"));
+                                                getImageStr("d:/patrolRecord/file/" + comSwPatrolRecordVO.getId() + "_" + i + ".jpg"));
                                     } else {
-                                        dataMap.put("imgStr" + (i + 1), getImageStr("d:/blank.jpg"));
+                                        dataMap.put("imgStr" + (i + 1), getImageStr("d:/patrolRecord/file/blank.jpg"));
                                     }
                                 }
                             }
                             if (photo.size() == 7) {
                                 for (int i = 0; i < 9; i++) {
                                     if (i < 7) {
-                                        downloadPicture(photo.get(i), comSwPatrolRecordVO.getId() + "_" + i);
+                                        downloadPicture(photo.get(i), comSwPatrolRecordVO.getId() + "_" + i, "d:/patrolRecord/file/");
                                         dataMap.put("imgStr" + (i + 1),
-                                            getImageStr("d:/" + comSwPatrolRecordVO.getId() + "_" + i + ".jpg"));
+                                                getImageStr("d:/patrolRecord/file/" + comSwPatrolRecordVO.getId() + "_" + i + ".jpg"));
                                     } else {
-                                        dataMap.put("imgStr" + (i + 1), getImageStr("d:/blank.jpg"));
+                                        dataMap.put("imgStr" + (i + 1), getImageStr("d:/patrolRecord/file/blank.jpg"));
                                     }
                                 }
                             }
                             if (photo.size() == 8) {
                                 for (int i = 0; i < 9; i++) {
                                     if (i < 8) {
-                                        downloadPicture(photo.get(i), comSwPatrolRecordVO.getId() + "_" + i);
+                                        downloadPicture(photo.get(i), comSwPatrolRecordVO.getId() + "_" + i, "d:/patrolRecord/file/");
                                         dataMap.put("imgStr" + (i + 1),
-                                            getImageStr("d:/" + comSwPatrolRecordVO.getId() + "_" + i + ".jpg"));
+                                                getImageStr("d:/patrolRecord/file/" + comSwPatrolRecordVO.getId() + "_" + i + ".jpg"));
                                     } else {
-                                        dataMap.put("imgStr" + (i + 1), getImageStr("d:/blank.jpg"));
+                                        dataMap.put("imgStr" + (i + 1), getImageStr("d:/patrolRecord/file/blank.jpg"));
                                     }
                                 }
                             }
                             if (photo.size() == 9) {
                                 for (int i = 0; i < 9; i++) {
-                                    downloadPicture(photo.get(i), comSwPatrolRecordVO.getId() + "_" + i);
+                                    downloadPicture(photo.get(i), comSwPatrolRecordVO.getId() + "_" + i, "d:/patrolRecord/file/");
                                     dataMap.put("imgStr" + (i + 1),
-                                        getImageStr("d:/" + comSwPatrolRecordVO.getId() + "_" + i + ".jpg"));
+                                            getImageStr("d:/patrolRecord/file/" + comSwPatrolRecordVO.getId() + "_" + i + ".jpg"));
                                 }
                             }
                         } else {
                             for (int i = 0; i < 9; i++) {
-                                dataMap.put("imgStr" + (i + 1), getImageStr("d:/blank.jpg"));
+                                dataMap.put("imgStr" + (i + 1), getImageStr("d:/patrolRecord/file/blank.jpg"));
                             }
                         }
                         // 备注
-                        dataMap.put("remark", comSwPatrolRecordVO.getRemark());
+                        if (StringUtils.isNotEmpty(comSwPatrolRecordVO.getRemark())) {
+                            dataMap.put("remark", comSwPatrolRecordVO.getRemark());
+                        }else {
+                            dataMap.put("remark", "");
+                        }
                         // 巡查时间
                         // dataMap.put("patrolTime", new
                         // SimpleDateFormat("yyyy-MM-dd").format(comSwPatrolRecordVO.getPatrolTime()));
                         // 工作人员
                         // dataMap.put("personName", comSwPatrolRecordVO.getPersonName());
                         // 巡查人员
-                        dataMap.put("personName", comSwPatrolRecordVO.getPersonName());
+                        if (StringUtils.isNotEmpty(comSwPatrolRecordVO.getPersonName())) {
+                            dataMap.put("personName", comSwPatrolRecordVO.getPersonName());
+                        }else {
+                            dataMap.put("personName", "");
+                        }
                         // 接班时间
-                        dataMap.put("successionTime",
-                            new SimpleDateFormat("yyyy-MM-dd").format(comSwPatrolRecordVO.getSuccessionTime()));
+                        if (comSwPatrolRecordVO.getSuccessionTime() != null) {
+                            dataMap.put("successionTime",
+                                    new SimpleDateFormat("yyyy-MM-dd").format(comSwPatrolRecordVO.getSuccessionTime()));
+                        }else {
+                            dataMap.put("successionTime", "");
+                        }
                         // 接班人员
-                        dataMap.put("successionPerson", comSwPatrolRecordVO.getSuccessionPerson());
+                        if (StringUtils.isNotEmpty(comSwPatrolRecordVO.getSuccessionPerson())) {
+                            dataMap.put("successionPerson", comSwPatrolRecordVO.getSuccessionPerson());
+                        }else {
+                            dataMap.put("successionPerson", "");
+                        }
                         // 填报人员
-                        dataMap.put("createName", comSwPatrolRecordVO.getCreateName());
+                        if (StringUtils.isNotEmpty(comSwPatrolRecordVO.getCreateName())) {
+                            dataMap.put("createName", comSwPatrolRecordVO.getCreateName());
+                        }else {
+                            dataMap.put("createName", "");
+                        }
                         // 填报时间
                         dataMap.put("createAt",
-                            new SimpleDateFormat("yyyy-MM-dd").format(comSwPatrolRecordVO.getCreateAt()));
+                            new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(comSwPatrolRecordVO.getCreateAt()));
                         // 获取请求url
                         String url = Constants.G_D_WEATHER_URL;
                         // 获取请求参数
@@ -893,12 +1004,12 @@
                         // configuration.setClassForTemplateLoading(this.getClass(), "");
 
                         // 指定路径的第二种方式,我的路径是C:/a.ftl
-                        configuration.setDirectoryForTemplateLoading(new File("c:/"));
+                        configuration.setDirectoryForTemplateLoading(new File("d:/patrolRecord/file/"));
 
                         // 输出文档路径及名称
                         // File outFile = new File("mnt/data/web/excel/安全工作记录_" + comSwSafetyWorkRecordVO.getId() +
                         // ".doc");
-                        File file = new File(fileName);
+                        File file = new File(sourceFile + name);
 
                         // 以utf-8的编码读取ftl文件
                         Template template = configuration.getTemplate("巡查记录.ftl", "utf-8");
@@ -906,13 +1017,13 @@
                             new OutputStreamWriter(new FileOutputStream(file), StandardCharsets.UTF_8), 10240);
                         template.process(dataMap, out);
                         out.close();
-                        inputStream = new FileInputStream(file);
-                        sftp.uploadMore(ftpUrl, name, inputStream);
-                        sftp.logout();
-                        inputStream.close();
-                        String absolutePath = file.getAbsolutePath();
-                        boolean delete = file.delete();
-                        log.info("删除excel【{}】结果【{}】", absolutePath, delete);
+//                        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) {
@@ -920,483 +1031,551 @@
                         }
                     }
                 }
-                downLoadUrl.add(excelUrl + name);
+            } catch (Exception e) {
+                e.printStackTrace();
+                log.error("文件传输失败【{}】", e.getMessage());
             }
-            return R.ok(downLoadUrl);
-        } catch (Exception e) {
-            e.printStackTrace();
-            log.error("文件传输失败【{}】", e.getMessage());
         }
-        return R.fail();
+        FileUtil.compressToZip(sourceFile,zipFile,"巡查记录.zip");
+        String currentDateString = String.valueOf(System.currentTimeMillis());
+        String name = "巡查记录_"+ currentDateString+".zip";
+        try {
+            InputStream inputStream=new FileInputStream(zipFile+"巡查记录.zip");
+            sftp.uploadMore(ftpUrl, name , inputStream);
+            sftp.logout();
+            inputStream.close();
+            FileUtils.deleteDirectory(new File(property+File.separator+"word"+File.separator));
+            FileUtils.deleteDirectory(new File(zipFile));
+        } catch (FileNotFoundException e) {
+            e.printStackTrace();
+        } catch (SftpException e) {
+            e.printStackTrace();
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+        return R.ok(excelUrl + name);
     }
 
     @ApiOperation(value = "下载隐患报告")
     @PostMapping("/export/DangerReport")
     public R exportDangerReport(@RequestBody List<Long> ids) {
         Long communityId = this.getLoginUserInfo().getCommunityId();
-        List<String> downLoadUrl = new ArrayList<>();
-        try {
-            for (Long id : ids) {
-                SFTPUtil sftp = new SFTPUtil(userName, password, host, port);
-                sftp.login();
-                Map<String, Object> dataMap = new HashMap<String, Object>();
-                ComSwDangerReportVO comSwDangerReportVO =
-                    JSONObject.parseObject(JSONObject.toJSONString(communityService.detailDangerReport(id).getData()),
-                        ComSwDangerReportVO.class);
-                // 生成动态模板excel通过ftp工具上传到主节点,然后返回模板下载地址
-                String ftpUrl = "/mnt/data/web/excel/";
-                String name = "隐患报告_" + comSwDangerReportVO.getId() + ".doc";
+        SFTPUtil sftp = new SFTPUtil(userName, password, host, port);
+        sftp.login();
+        String property = System.getProperty("user.dir");
+        String sourceFile =property+File.separator+"word"+File.separator+System.currentTimeMillis()+File.separator;
+        String zipFile=property+File.separator+"zip"+File.separator;
+        String ftpUrl = "/mnt/data/web/excel/";
+        for (Long id : ids) {
+            try {
+            Map<String, Object> dataMap = new HashMap<String, Object>();
+            ComSwDangerReportVO comSwDangerReportVO =
+                JSONObject.parseObject(JSONObject.toJSONString(communityService.detailDangerReport(id).getData()),
+                    ComSwDangerReportVO.class);
+            // 生成动态模板excel通过ftp工具上传到主节点,然后返回模板下载地址
+            String name = "隐患报告_" + comSwDangerReportVO.getId() + ".doc";
 
-                boolean existDir = sftp.isExistDir(ftpUrl + name);
-                if (!existDir) {
-                    String property = System.getProperty("user.dir");
-                    String fileName = property + File.separator + name;
-                    // 这里 需要指定写用哪个class去写
-                    ExcelWriter excelWriter = null;
-                    InputStream inputStream = null;
-                    try {
-                        // 日期
+            boolean existDir = sftp.isExistDir(ftpUrl + name);
+            if (!existDir) {
+                // 这里 需要指定写用哪个class去写
+                ExcelWriter excelWriter = null;
+                InputStream inputStream = null;
+                File file0=new File("d:/dangerReport/file");
+                if(!file0.isDirectory()&&!file0.exists()){
+                    file0.mkdirs();
+                }
+                file0 = new File(sourceFile);
+                if(!file0.isDirectory()&&!file0.exists()){
+                    file0.mkdirs();
+                }
+                sftp.download("/mnt/data/web/", "隐患报告.ftl", "d:/dangerReport/file/隐患报告.ftl");
+                sftp.download("/mnt/data/web/", "blank.jpg", "d:/dangerReport/file/blank.jpg");
+                try {
+                    // 日期
+                    if (StringUtils.isNotEmpty(comSwDangerReportVO.getCheckTime())) {
                         dataMap.put("date", comSwDangerReportVO.getCheckTime());
-                        // 巡查类型
+                    } else {
+                        dataMap.put("date", "");
+                    }
+                    // 巡查类型
+                    if (StringUtils.isNotEmpty(comSwDangerReportVO.getPatrolType())) {
                         dataMap.put("patrolType", comSwDangerReportVO.getPatrolType());
-                        // 地址
+                    }else {
+                        dataMap.put("patrolType", "");
+                    }
+                    // 地址
+                    if (StringUtils.isNotEmpty(comSwDangerReportVO.getAddress())) {
                         dataMap.put("address", comSwDangerReportVO.getAddress());
-                        // 隐患名称
+                    }else {
+                        dataMap.put("address", "");
+                    }
+                    // 隐患名称
+                    if (StringUtils.isNotEmpty(comSwDangerReportVO.getDangerName())) {
                         dataMap.put("dangerName", comSwDangerReportVO.getDangerName());
-                        // 排查时间
+                    }else {
+                        dataMap.put("dangerName", "");
+                    }
+                    // 排查时间
+                    if (StringUtils.isNotEmpty(comSwDangerReportVO.getCheckTime())) {
                         dataMap.put("checkTime", comSwDangerReportVO.getCheckTime());
-                        // 排查人员
+                    }else {
+                        dataMap.put("checkTime", "");
+                    }
+                    // 排查人员
+                    if (StringUtils.isNotEmpty(comSwDangerReportVO.getPPersonName())) {
                         dataMap.put("ppersonName", comSwDangerReportVO.getPPersonName());
-                        // 填报人员
+                    }else {
+                        dataMap.put("ppersonName", "");
+                    }
+                    // 填报人员
+                    if (StringUtils.isNotEmpty(comSwDangerReportVO.getCreateName())) {
                         dataMap.put("createName", comSwDangerReportVO.getCreateName());
-                        // 填报时间
-                        dataMap.put("createAt",
-                            new SimpleDateFormat("yyyy-MM-dd").format(comSwDangerReportVO.getCreateAt()));
-                        // 隐患编号
-                        dataMap.put("dangerNo", comSwDangerReportVO.getDangerNo());
-                        // 主体部门、单位或个人全称
-                        if (StringUtils.isNotEmpty(comSwDangerReportVO.getUnitName())) {
-                            dataMap.put("unitName", comSwDangerReportVO.getUnitName());
-                        } else {
-                            dataMap.put("unitName", "");
-                        }
-                        // 隐患简述
-                        if (StringUtils.isNotEmpty(comSwDangerReportVO.getDagerDescription())) {
-                            dataMap.put("dagerDescription", comSwDangerReportVO.getDagerDescription());
-                        } else {
-                            dataMap.put("dagerDescription", "");
-                        }
-                        // 已采取的措施
-                        if (StringUtils.isNotEmpty(comSwDangerReportVO.getTakeSteps())) {
-                            dataMap.put("takeSteps", comSwDangerReportVO.getTakeSteps());
-                        } else {
-                            dataMap.put("takeSteps", "");
-                        }
-                        // 措施照片
-                        List<String> stepsPhoto = new ArrayList<>();
-                        if (StringUtils.isNotEmpty(comSwDangerReportVO.getStepsPhoto())) {
-                            stepsPhoto = Arrays.asList(comSwDangerReportVO.getStepsPhoto().split(","));
-                        }
-                        if (stepsPhoto.size() != 0 && null != stepsPhoto) {
-                            if (stepsPhoto.size() == 1) {
-                                for (int i = 0; i < 9; i++) {
-                                    if (i < 1) {
-                                        downloadPicture(stepsPhoto.get(i), comSwDangerReportVO.getId() + "_steps_" + i);
-                                        dataMap.put("imgStr" + (i + 1),
-                                            getImageStr("d:/" + comSwDangerReportVO.getId() + "_steps_" + i + ".jpg"));
-                                    } else {
-                                        dataMap.put("imgStr" + (i + 1), getImageStr("d:/blank.jpg"));
-                                    }
-                                }
-                                for (int i = 0; i < 9; i++) {
-                                    if (i < 1) {
-                                        dataMap.put("imgStr" + (i + 19),
-                                            getImageStr("d:/" + comSwDangerReportVO.getId() + "_steps_" + i + ".jpg"));
-                                    } else {
-                                        dataMap.put("imgStr" + (i + 19), getImageStr("d:/blank.jpg"));
-                                    }
-                                }
-                            }
-                            if (stepsPhoto.size() == 2) {
-                                for (int i = 0; i < 9; i++) {
-                                    if (i < 2) {
-                                        downloadPicture(stepsPhoto.get(i), comSwDangerReportVO.getId() + "_steps_" + i);
-                                        dataMap.put("imgStr" + (i + 1),
-                                            getImageStr("d:/" + comSwDangerReportVO.getId() + "_steps_" + i + ".jpg"));
-                                    } else {
-                                        dataMap.put("imgStr" + (i + 1), getImageStr("d:/blank.jpg"));
-                                    }
-                                }
-                                for (int i = 0; i < 9; i++) {
-                                    if (i < 2) {
-                                        dataMap.put("imgStr" + (i + 19),
-                                            getImageStr("d:/" + comSwDangerReportVO.getId() + "_steps_" + i + ".jpg"));
-                                    } else {
-                                        dataMap.put("imgStr" + (i + 19), getImageStr("d:/blank.jpg"));
-                                    }
-                                }
-                            }
-                            if (stepsPhoto.size() == 3) {
-                                for (int i = 0; i < 9; i++) {
-                                    if (i < 3) {
-                                        downloadPicture(stepsPhoto.get(i), comSwDangerReportVO.getId() + "_" + i);
-                                        dataMap.put("imgStr" + (i + 1),
-                                            getImageStr("d:/" + comSwDangerReportVO.getId() + "_steps_" + i + ".jpg"));
-                                    } else {
-                                        dataMap.put("imgStr" + (i + 1), getImageStr("d:/blank.jpg"));
-                                    }
-                                }
-                                for (int i = 0; i < 9; i++) {
-                                    if (i < 3) {
-                                        dataMap.put("imgStr" + (i + 19),
-                                            getImageStr("d:/" + comSwDangerReportVO.getId() + "_steps_" + i + ".jpg"));
-                                    } else {
-                                        dataMap.put("imgStr" + (i + 19), getImageStr("d:/blank.jpg"));
-                                    }
-                                }
-                            }
-                            if (stepsPhoto.size() == 4) {
-                                for (int i = 0; i < 9; i++) {
-                                    if (i < 4) {
-                                        downloadPicture(stepsPhoto.get(i), comSwDangerReportVO.getId() + "_steps_" + i);
-                                        dataMap.put("imgStr" + (i + 1),
-                                            getImageStr("d:/" + comSwDangerReportVO.getId() + "_steps_" + i + ".jpg"));
-                                    } else {
-                                        dataMap.put("imgStr" + (i + 1), getImageStr("d:/blank.jpg"));
-                                    }
-                                }
-                                for (int i = 0; i < 9; i++) {
-                                    if (i < 4) {
-                                        dataMap.put("imgStr" + (i + 19),
-                                            getImageStr("d:/" + comSwDangerReportVO.getId() + "_steps_" + i + ".jpg"));
-                                    } else {
-                                        dataMap.put("imgStr" + (i + 19), getImageStr("d:/blank.jpg"));
-                                    }
-                                }
-                            }
-                            if (stepsPhoto.size() == 5) {
-                                for (int i = 0; i < 9; i++) {
-                                    if (i < 5) {
-                                        downloadPicture(stepsPhoto.get(i), comSwDangerReportVO.getId() + "_steps_" + i);
-                                        dataMap.put("imgStr" + (i + 1),
-                                            getImageStr("d:/" + comSwDangerReportVO.getId() + "_steps_" + i + ".jpg"));
-                                    } else {
-                                        dataMap.put("imgStr" + (i + 1), getImageStr("d:/blank.jpg"));
-                                    }
-                                }
-                                for (int i = 0; i < 9; i++) {
-                                    if (i < 5) {
-                                        dataMap.put("imgStr" + (i + 19),
-                                            getImageStr("d:/" + comSwDangerReportVO.getId() + "_steps_" + i + ".jpg"));
-                                    } else {
-                                        dataMap.put("imgStr" + (i + 19), getImageStr("d:/blank.jpg"));
-                                    }
-                                }
-                            }
-                            if (stepsPhoto.size() == 6) {
-                                for (int i = 0; i < 9; i++) {
-                                    if (i < 6) {
-                                        downloadPicture(stepsPhoto.get(i), comSwDangerReportVO.getId() + "_steps_" + i);
-                                        dataMap.put("imgStr" + (i + 1),
-                                            getImageStr("d:/" + comSwDangerReportVO.getId() + "_steps_" + i + ".jpg"));
-                                    } else {
-                                        dataMap.put("imgStr" + (i + 1), getImageStr("d:/blank.jpg"));
-                                    }
-                                }
-                                for (int i = 0; i < 9; i++) {
-                                    if (i < 6) {
-                                        dataMap.put("imgStr" + (i + 19),
-                                            getImageStr("d:/" + comSwDangerReportVO.getId() + "_steps_" + i + ".jpg"));
-                                    } else {
-                                        dataMap.put("imgStr" + (i + 19), getImageStr("d:/blank.jpg"));
-                                    }
-                                }
-                            }
-                            if (stepsPhoto.size() == 7) {
-                                for (int i = 0; i < 9; i++) {
-                                    if (i < 7) {
-                                        downloadPicture(stepsPhoto.get(i), comSwDangerReportVO.getId() + "_steps_" + i);
-                                        dataMap.put("imgStr" + (i + 1),
-                                            getImageStr("d:/" + comSwDangerReportVO.getId() + "_steps_" + i + ".jpg"));
-                                    } else {
-                                        dataMap.put("imgStr" + (i + 1), getImageStr("d:/blank.jpg"));
-                                    }
-                                }
-                                for (int i = 0; i < 9; i++) {
-                                    if (i < 7) {
-                                        dataMap.put("imgStr" + (i + 19),
-                                            getImageStr("d:/" + comSwDangerReportVO.getId() + "_steps_" + i + ".jpg"));
-                                    } else {
-                                        dataMap.put("imgStr" + (i + 19), getImageStr("d:/blank.jpg"));
-                                    }
-                                }
-                            }
-                            if (stepsPhoto.size() == 8) {
-                                for (int i = 0; i < 9; i++) {
-                                    if (i < 8) {
-                                        downloadPicture(stepsPhoto.get(i), comSwDangerReportVO.getId() + "_steps_" + i);
-                                        dataMap.put("imgStr" + (i + 1),
-                                            getImageStr("d:/" + comSwDangerReportVO.getId() + "_steps_" + i + ".jpg"));
-                                    } else {
-                                        dataMap.put("imgStr" + (i + 1), getImageStr("d:/blank.jpg"));
-                                    }
-                                }
-                                for (int i = 0; i < 9; i++) {
-                                    if (i < 8) {
-                                        dataMap.put("imgStr" + (i + 19),
-                                            getImageStr("d:/" + comSwDangerReportVO.getId() + "_steps_" + i + ".jpg"));
-                                    } else {
-                                        dataMap.put("imgStr" + (i + 19), getImageStr("d:/blank.jpg"));
-                                    }
-                                }
-                            }
-                            if (stepsPhoto.size() == 9) {
-                                for (int i = 0; i < 9; i++) {
-                                    downloadPicture(stepsPhoto.get(i), comSwDangerReportVO.getId() + "_steps_" + i);
-                                    dataMap.put("imgStr" + (i + 19),
-                                        getImageStr("d:/" + comSwDangerReportVO.getId() + "_steps_" + i + ".jpg"));
-                                }
-                                for (int i = 0; i < 9; i++) {
-                                    downloadPicture(stepsPhoto.get(i), comSwDangerReportVO.getId() + "_steps_" + i);
+                    }else {
+                        dataMap.put("createName", "");
+                    }
+                    // 填报时间
+                    dataMap.put("createAt",
+                        new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(comSwDangerReportVO.getCreateAt()));
+                    // 隐患编号
+                    dataMap.put("dangerNo", comSwDangerReportVO.getDangerNo());
+                    // 主体部门、单位或个人全称
+                    if (StringUtils.isNotEmpty(comSwDangerReportVO.getUnitName())) {
+                        dataMap.put("unitName", comSwDangerReportVO.getUnitName());
+                    } else {
+                        dataMap.put("unitName", "");
+                    }
+                    // 隐患简述
+                    if (StringUtils.isNotEmpty(comSwDangerReportVO.getDagerDescription())) {
+                        dataMap.put("dagerDescription", comSwDangerReportVO.getDagerDescription());
+                    } else {
+                        dataMap.put("dagerDescription", "");
+                    }
+                    // 已采取的措施
+                    if (StringUtils.isNotEmpty(comSwDangerReportVO.getTakeSteps())) {
+                        dataMap.put("takeSteps", comSwDangerReportVO.getTakeSteps());
+                    } else {
+                        dataMap.put("takeSteps", "");
+                    }
+                    // 措施照片
+                    List<String> stepsPhoto = new ArrayList<>();
+                    if (StringUtils.isNotEmpty(comSwDangerReportVO.getStepsPhoto())) {
+                        stepsPhoto = Arrays.asList(comSwDangerReportVO.getStepsPhoto().split(","));
+                    }
+                    if (stepsPhoto.size() != 0 && null != stepsPhoto) {
+                        if (stepsPhoto.size() == 1) {
+                            for (int i = 0; i < 9; i++) {
+                                if (i < 1) {
+                                    downloadPicture(stepsPhoto.get(i), comSwDangerReportVO.getId() + "_steps_" + i, "d:/dangerReport/file/");
                                     dataMap.put("imgStr" + (i + 1),
-                                        getImageStr("d:/" + comSwDangerReportVO.getId() + "_steps_" + i + ".jpg"));
+                                        getImageStr("d:/dangerReport/file/" + comSwDangerReportVO.getId() + "_steps_" + i + ".jpg"));
+                                } else {
+                                    dataMap.put("imgStr" + (i + 1), getImageStr("d:/dangerReport/file/blank.jpg"));
                                 }
-                            }
-                        } else {
-                            for (int i = 0; i < 9; i++) {
-                                dataMap.put("imgStr" + (i + 1), getImageStr("d:/blank.jpg"));
                             }
                             for (int i = 0; i < 9; i++) {
-                                dataMap.put("imgStr" + (i + 19), getImageStr("d:/blank.jpg"));
+                                if (i < 1) {
+                                    dataMap.put("imgStr" + (i + 19),
+                                        getImageStr("d:/dangerReport/file/" + comSwDangerReportVO.getId() + "_steps_" + i + ".jpg"));
+                                } else {
+                                    dataMap.put("imgStr" + (i + 19), getImageStr("d:/dangerReport/file/blank.jpg"));
+                                }
                             }
                         }
-                        // 社区处理建议
-                        if (StringUtils.isNotEmpty(comSwDangerReportVO.getCommunitySuggestion())) {
-                            dataMap.put("communitySuggestion", comSwDangerReportVO.getCommunitySuggestion());
-                        } else {
-                            dataMap.put("communitySuggestion", "");
-                        }
-                        // 街道安全管理人员建议
-                        if (StringUtils.isNotEmpty(comSwDangerReportVO.getStreetSuggestion())) {
-                            dataMap.put("streetSuggestion", comSwDangerReportVO.getStreetSuggestion());
-                        } else {
-                            dataMap.put("streetSuggestion", "");
-                        }
-                        // 领导意见
-                        if (StringUtils.isNotEmpty(comSwDangerReportVO.getLeaderSuggestion())) {
-                            dataMap.put("leaderSuggestion", comSwDangerReportVO.getLeaderSuggestion());
-                        } else {
-                            dataMap.put("leaderSuggestion", "");
-                        }
-                        // 承办记录
-                        if (StringUtils.isNotEmpty(comSwDangerReportVO.getUndertakeRecord())) {
-                            dataMap.put("undertakeRecord", comSwDangerReportVO.getUndertakeRecord());
-                        } else {
-                            dataMap.put("undertakeRecord", "");
-                        }
-                        // 巡查记录
-                        if (StringUtils.isNotEmpty(comSwDangerReportVO.getRecordContent())) {
-                            dataMap.put("recordContent", comSwDangerReportVO.getRecordContent());
-                        } else {
-                            dataMap.put("recordContent", "");
-                        }
-                        // 发现记录
-                        if (StringUtils.isNotEmpty(comSwDangerReportVO.getFindRecord())) {
-                            dataMap.put("findRecord", comSwDangerReportVO.getFindRecord());
-                        } else {
-                            dataMap.put("findRecord", "");
-                        }
-                        // 记录照片
-                        List<String> photo = new ArrayList<>();
-                        if (StringUtils.isNotEmpty(comSwDangerReportVO.getRecordPhoto())) {
-                            photo = Arrays.asList(comSwDangerReportVO.getRecordPhoto().split(","));
-                        }
-                        if (photo.size() != 0 && null != photo) {
-                            if (photo.size() == 1) {
-                                for (int i = 0; i < 9; i++) {
-                                    if (i < 1) {
-                                        downloadPicture(photo.get(i), comSwDangerReportVO.getId() + "_find_" + i);
-                                        dataMap.put("imgStr" + (i + 10),
-                                            getImageStr("d:/" + comSwDangerReportVO.getId() + "_find_" + i + ".jpg"));
-                                    } else {
-                                        dataMap.put("imgStr" + (i + 10), getImageStr("d:/blank.jpg"));
-                                    }
-                                }
-                            }
-                            if (photo.size() == 2) {
-                                for (int i = 0; i < 9; i++) {
-                                    if (i < 2) {
-                                        downloadPicture(photo.get(i), comSwDangerReportVO.getId() + "_find_" + i);
-                                        dataMap.put("imgStr" + (i + 10),
-                                            getImageStr("d:/" + comSwDangerReportVO.getId() + "_find_" + i + ".jpg"));
-                                    } else {
-                                        dataMap.put("imgStr" + (i + 10), getImageStr("d:/blank.jpg"));
-                                    }
-                                }
-                            }
-                            if (photo.size() == 3) {
-                                for (int i = 0; i < 9; i++) {
-                                    if (i < 3) {
-                                        downloadPicture(photo.get(i), comSwDangerReportVO.getId() + "_find_" + i);
-                                        dataMap.put("imgStr" + (i + 10),
-                                            getImageStr("d:/" + comSwDangerReportVO.getId() + "_find_" + i + ".jpg"));
-                                    } else {
-                                        dataMap.put("imgStr" + (i + 10), getImageStr("d:/blank.jpg"));
-                                    }
-                                }
-                            }
-                            if (photo.size() == 4) {
-                                for (int i = 0; i < 9; i++) {
-                                    if (i < 4) {
-                                        downloadPicture(photo.get(i), comSwDangerReportVO.getId() + "_find_" + i);
-                                        dataMap.put("imgStr" + (i + 10),
-                                            getImageStr("d:/" + comSwDangerReportVO.getId() + "_find_" + i + ".jpg"));
-                                    } else {
-                                        dataMap.put("imgStr" + (i + 10), getImageStr("d:/blank.jpg"));
-                                    }
-                                }
-                            }
-                            if (photo.size() == 5) {
-                                for (int i = 0; i < 9; i++) {
-                                    if (i < 5) {
-                                        downloadPicture(photo.get(i), comSwDangerReportVO.getId() + "_find_" + i);
-                                        dataMap.put("imgStr" + (i + 10),
-                                            getImageStr("d:/" + comSwDangerReportVO.getId() + "_find_" + i + ".jpg"));
-                                    } else {
-                                        dataMap.put("imgStr" + (i + 10), getImageStr("d:/blank.jpg"));
-                                    }
-                                }
-                            }
-                            if (photo.size() == 6) {
-                                for (int i = 0; i < 9; i++) {
-                                    if (i < 6) {
-                                        downloadPicture(photo.get(i), comSwDangerReportVO.getId() + "_find_" + i);
-                                        dataMap.put("imgStr" + (i + 10),
-                                            getImageStr("d:/" + comSwDangerReportVO.getId() + "_find_" + i + ".jpg"));
-                                    } else {
-                                        dataMap.put("imgStr" + (i + 10), getImageStr("d:/blank.jpg"));
-                                    }
-                                }
-                            }
-                            if (photo.size() == 7) {
-                                for (int i = 0; i < 9; i++) {
-                                    if (i < 7) {
-                                        downloadPicture(photo.get(i), comSwDangerReportVO.getId() + "_find_" + i);
-                                        dataMap.put("imgStr" + (i + 10),
-                                            getImageStr("d:/" + comSwDangerReportVO.getId() + "_find_" + i + ".jpg"));
-                                    } else {
-                                        dataMap.put("imgStr" + (i + 10), getImageStr("d:/blank.jpg"));
-                                    }
-                                }
-                            }
-                            if (photo.size() == 8) {
-                                for (int i = 0; i < 9; i++) {
-                                    if (i < 8) {
-                                        downloadPicture(photo.get(i), comSwDangerReportVO.getId() + "_find_" + i);
-                                        dataMap.put("imgStr" + (i + 10),
-                                            getImageStr("d:/" + comSwDangerReportVO.getId() + "_find_" + i + ".jpg"));
-                                    } else {
-                                        dataMap.put("imgStr" + (i + 10), getImageStr("d:/blank.jpg"));
-                                    }
-                                }
-                            }
-                            if (photo.size() == 9) {
-                                for (int i = 0; i < 9; i++) {
-                                    downloadPicture(photo.get(i), comSwDangerReportVO.getId() + "_find_" + i);
-                                    dataMap.put("imgStr" + (i + 10),
-                                        getImageStr("d:/" + comSwDangerReportVO.getId() + "_find_" + i + ".jpg"));
-                                }
-                            }
-                        } else {
+                        if (stepsPhoto.size() == 2) {
                             for (int i = 0; i < 9; i++) {
-                                dataMap.put("imgStr" + (i + 10), getImageStr("d:/blank.jpg"));
+                                if (i < 2) {
+                                    downloadPicture(stepsPhoto.get(i), comSwDangerReportVO.getId() + "_steps_" + i, "d:/dangerReport/file/");
+                                    dataMap.put("imgStr" + (i + 1),
+                                        getImageStr("d:/dangerReport/file/" + comSwDangerReportVO.getId() + "_steps_" + i + ".jpg"));
+                                } else {
+                                    dataMap.put("imgStr" + (i + 1), getImageStr("d:/dangerReport/file/blank.jpg"));
+                                }
+                            }
+                            for (int i = 0; i < 9; i++) {
+                                if (i < 2) {
+                                    dataMap.put("imgStr" + (i + 19),
+                                        getImageStr("d:/dangerReport/file/" + comSwDangerReportVO.getId() + "_steps_" + i + ".jpg"));
+                                } else {
+                                    dataMap.put("imgStr" + (i + 19), getImageStr("d:/dangerReport/file/blank.jpg"));
+                                }
                             }
                         }
-                        // 备注
-                        if (StringUtils.isNotEmpty(comSwDangerReportVO.getRemark())) {
-                            dataMap.put("remark", comSwDangerReportVO.getRemark());
-                        } else {
-                            dataMap.put("remark", "");
+                        if (stepsPhoto.size() == 3) {
+                            for (int i = 0; i < 9; i++) {
+                                if (i < 3) {
+                                    downloadPicture(stepsPhoto.get(i), comSwDangerReportVO.getId() + "_steps_" + i, "d:/dangerReport/file/");
+                                    dataMap.put("imgStr" + (i + 1),
+                                        getImageStr("d:/dangerReport/file/" + comSwDangerReportVO.getId() + "_steps_" + i + ".jpg"));
+                                } else {
+                                    dataMap.put("imgStr" + (i + 1), getImageStr("d:/dangerReport/file/blank.jpg"));
+                                }
+                            }
+                            for (int i = 0; i < 9; i++) {
+                                if (i < 3) {
+                                    dataMap.put("imgStr" + (i + 19),
+                                        getImageStr("d:/dangerReport/file/" + comSwDangerReportVO.getId() + "_steps_" + i + ".jpg"));
+                                } else {
+                                    dataMap.put("imgStr" + (i + 19), getImageStr("d:/dangerReport/file/blank.jpg"));
+                                }
+                            }
                         }
-                        // 整改时间
-                        if (StringUtils.isNotEmpty(comSwDangerReportVO.getRectifyTime())) {
-                            dataMap.put("rectifyTime", comSwDangerReportVO.getRectifyTime());
-                        } else {
-                            dataMap.put("rectifyTime", "");
+                        if (stepsPhoto.size() == 4) {
+                            for (int i = 0; i < 9; i++) {
+                                if (i < 4) {
+                                    downloadPicture(stepsPhoto.get(i), comSwDangerReportVO.getId() + "_steps_" + i, "d:/dangerReport/file/");
+                                    dataMap.put("imgStr" + (i + 1),
+                                        getImageStr("d:/dangerReport/file/" + comSwDangerReportVO.getId() + "_steps_" + i + ".jpg"));
+                                } else {
+                                    dataMap.put("imgStr" + (i + 1), getImageStr("d:/dangerReport/file/blank.jpg"));
+                                }
+                            }
+                            for (int i = 0; i < 9; i++) {
+                                if (i < 4) {
+                                    dataMap.put("imgStr" + (i + 19),
+                                        getImageStr("d:/dangerReport/file/" + comSwDangerReportVO.getId() + "_steps_" + i + ".jpg"));
+                                } else {
+                                    dataMap.put("imgStr" + (i + 19), getImageStr("d:/dangerReport/file/blank.jpg"));
+                                }
+                            }
                         }
-                        // 整改人员
-                        if (StringUtils.isNotEmpty(comSwDangerReportVO.getDPersonName())) {
-                            dataMap.put("dpersonName", comSwDangerReportVO.getDPersonName());
-                        } else {
-                            dataMap.put("dpersonName", "");
+                        if (stepsPhoto.size() == 5) {
+                            for (int i = 0; i < 9; i++) {
+                                if (i < 5) {
+                                    downloadPicture(stepsPhoto.get(i), comSwDangerReportVO.getId() + "_steps_" + i, "d:/dangerReport/file/");
+                                    dataMap.put("imgStr" + (i + 1),
+                                        getImageStr("d:/dangerReport/file/" + comSwDangerReportVO.getId() + "_steps_" + i + ".jpg"));
+                                } else {
+                                    dataMap.put("imgStr" + (i + 1), getImageStr("d:/dangerReport/file/blank.jpg"));
+                                }
+                            }
+                            for (int i = 0; i < 9; i++) {
+                                if (i < 5) {
+                                    dataMap.put("imgStr" + (i + 19),
+                                        getImageStr("d:/dangerReport/file/" + comSwDangerReportVO.getId() + "_steps_" + i + ".jpg"));
+                                } else {
+                                    dataMap.put("imgStr" + (i + 19), getImageStr("d:/dangerReport/file/blank.jpg"));
+                                }
+                            }
                         }
-
-                        // 获取请求url
-                        String url = Constants.G_D_WEATHER_URL;
-                        // 获取请求参数
-                        String param = "key=" + Constants.G_D_WEATHER_KEY + "&city=510400";
-                        String result = HttpUtils.sendGet(url, param);
-                        R r = R.ok(JSON.parseObject(result));
-                        WeatherVO weatherVO =
-                            JSONObject.parseObject(JSONObject.toJSONString(r.getData()), WeatherVO.class);
-                        if (null != weatherVO) {
-                            LiveVO liveVO = weatherVO.getLives().get(0);
-                            // 城市
-                            dataMap.put("city", liveVO.getCity());
-                            // 天气
-                            dataMap.put("weather", liveVO.getWeather());
-                            // 温度
-                            dataMap.put("temperature", liveVO.getTemperature());
-                            // 风向
-                            dataMap.put("winddirection", liveVO.getWinddirection());
-                            // 风力
-                            dataMap.put("windpower", liveVO.getWindpower());
+                        if (stepsPhoto.size() == 6) {
+                            for (int i = 0; i < 9; i++) {
+                                if (i < 6) {
+                                    downloadPicture(stepsPhoto.get(i), comSwDangerReportVO.getId() + "_steps_" + i, "d:/dangerReport/file/");
+                                    dataMap.put("imgStr" + (i + 1),
+                                        getImageStr("d:/dangerReport/file/" + comSwDangerReportVO.getId() + "_steps_" + i + ".jpg"));
+                                } else {
+                                    dataMap.put("imgStr" + (i + 1), getImageStr("d:/dangerReport/file/blank.jpg"));
+                                }
+                            }
+                            for (int i = 0; i < 9; i++) {
+                                if (i < 6) {
+                                    dataMap.put("imgStr" + (i + 19),
+                                        getImageStr("d:/dangerReport/file/" + comSwDangerReportVO.getId() + "_steps_" + i + ".jpg"));
+                                } else {
+                                    dataMap.put("imgStr" + (i + 19), getImageStr("d:/dangerReport/file/blank.jpg"));
+                                }
+                            }
                         }
-                        Configuration configuration = new Configuration(new Version("2.3.0"));
-
-                        configuration.setDefaultEncoding("utf-8");
-                        /**
-                         * 以下是两种指定ftl文件所在目录路径的方式,注意这两种方式都是 指定ftl文件所在目录的路径,而不是ftl文件的路径
-                         */
-                        // 指定路径的第一种方式(根据某个类的相对路径指定)
-                        // configuration.setClassForTemplateLoading(this.getClass(), "");
-
-                        // 指定路径的第二种方式,我的路径是C:/a.ftl
-                        configuration.setDirectoryForTemplateLoading(new File("c:/"));
-
-                        // 输出文档路径及名称
-                        // File outFile = new File("mnt/data/web/excel/安全工作记录_" + comSwSafetyWorkRecordVO.getId() +
-                        // ".doc");
-                        File file = new File(fileName);
-
-                        // 以utf-8的编码读取ftl文件
-                        Template template = configuration.getTemplate("隐患报告.ftl", "utf-8");
-                        Writer out = new BufferedWriter(
-                            new OutputStreamWriter(new FileOutputStream(file), StandardCharsets.UTF_8), 10240);
-                        template.process(dataMap, out);
-                        out.close();
-                        inputStream = new FileInputStream(file);
-                        sftp.uploadMore(ftpUrl, name, inputStream);
-                        sftp.logout();
-                        inputStream.close();
-                        String absolutePath = file.getAbsolutePath();
-                        boolean delete = file.delete();
-                        log.info("删除excel【{}】结果【{}】", absolutePath, delete);
-                    } finally {
-                        // 千万别忘记finish 会帮忙关闭流
-                        if (inputStream != null) {
-                            inputStream.close();
+                        if (stepsPhoto.size() == 7) {
+                            for (int i = 0; i < 9; i++) {
+                                if (i < 7) {
+                                    downloadPicture(stepsPhoto.get(i), comSwDangerReportVO.getId() + "_steps_" + i, "d:/dangerReport/file/");
+                                    dataMap.put("imgStr" + (i + 1),
+                                        getImageStr("d:/dangerReport/file/" + comSwDangerReportVO.getId() + "_steps_" + i + ".jpg"));
+                                } else {
+                                    dataMap.put("imgStr" + (i + 1), getImageStr("d:/dangerReport/file/blank.jpg"));
+                                }
+                            }
+                            for (int i = 0; i < 9; i++) {
+                                if (i < 7) {
+                                    dataMap.put("imgStr" + (i + 19),
+                                        getImageStr("d:/dangerReport/file/" + comSwDangerReportVO.getId() + "_steps_" + i + ".jpg"));
+                                } else {
+                                    dataMap.put("imgStr" + (i + 19), getImageStr("d:/dangerReport/file/blank.jpg"));
+                                }
+                            }
+                        }
+                        if (stepsPhoto.size() == 8) {
+                            for (int i = 0; i < 9; i++) {
+                                if (i < 8) {
+                                    downloadPicture(stepsPhoto.get(i), comSwDangerReportVO.getId() + "_steps_" + i, "d:/dangerReport/file/");
+                                    dataMap.put("imgStr" + (i + 1),
+                                        getImageStr("d:/dangerReport/file/" + comSwDangerReportVO.getId() + "_steps_" + i + ".jpg"));
+                                } else {
+                                    dataMap.put("imgStr" + (i + 1), getImageStr("d:/dangerReport/file/blank.jpg"));
+                                }
+                            }
+                            for (int i = 0; i < 9; i++) {
+                                if (i < 8) {
+                                    dataMap.put("imgStr" + (i + 19),
+                                        getImageStr("d:/dangerReport/file/" + comSwDangerReportVO.getId() + "_steps_" + i + ".jpg"));
+                                } else {
+                                    dataMap.put("imgStr" + (i + 19), getImageStr("d:/dangerReport/file/blank.jpg"));
+                                }
+                            }
+                        }
+                        if (stepsPhoto.size() == 9) {
+                            for (int i = 0; i < 9; i++) {
+                                downloadPicture(stepsPhoto.get(i), comSwDangerReportVO.getId() + "_steps_" + i, "d:/dangerReport/file/");
+                                dataMap.put("imgStr" + (i + 19),
+                                    getImageStr("d:/dangerReport/file/" + comSwDangerReportVO.getId() + "_steps_" + i + ".jpg"));
+                            }
+                            for (int i = 0; i < 9; i++) {
+                                downloadPicture(stepsPhoto.get(i), comSwDangerReportVO.getId() + "_steps_" + i, "d:/dangerReport/file/");
+                                dataMap.put("imgStr" + (i + 1),
+                                    getImageStr("d:/dangerReport/file/" + comSwDangerReportVO.getId() + "_steps_" + i + ".jpg"));
+                            }
+                        }
+                    } else {
+                        for (int i = 0; i < 9; i++) {
+                            dataMap.put("imgStr" + (i + 1), getImageStr("d:/dangerReport/file/blank.jpg"));
+                        }
+                        for (int i = 0; i < 9; i++) {
+                            dataMap.put("imgStr" + (i + 19), getImageStr("d:/dangerReport/file/blank.jpg"));
                         }
                     }
+                    // 社区处理建议
+                    if (StringUtils.isNotEmpty(comSwDangerReportVO.getCommunitySuggestion())) {
+                        dataMap.put("communitySuggestion", comSwDangerReportVO.getCommunitySuggestion());
+                    } else {
+                        dataMap.put("communitySuggestion", "");
+                    }
+                    // 街道安全管理人员建议
+                    if (StringUtils.isNotEmpty(comSwDangerReportVO.getStreetSuggestion())) {
+                        dataMap.put("streetSuggestion", comSwDangerReportVO.getStreetSuggestion());
+                    } else {
+                        dataMap.put("streetSuggestion", "");
+                    }
+                    // 领导意见
+                    if (StringUtils.isNotEmpty(comSwDangerReportVO.getLeaderSuggestion())) {
+                        dataMap.put("leaderSuggestion", comSwDangerReportVO.getLeaderSuggestion());
+                    } else {
+                        dataMap.put("leaderSuggestion", "");
+                    }
+                    // 承办记录
+                    if (StringUtils.isNotEmpty(comSwDangerReportVO.getUndertakeRecord())) {
+                        dataMap.put("undertakeRecord", comSwDangerReportVO.getUndertakeRecord());
+                    } else {
+                        dataMap.put("undertakeRecord", "");
+                    }
+                    // 巡查记录
+                    if (StringUtils.isNotEmpty(comSwDangerReportVO.getRecordContent())) {
+                        dataMap.put("recordContent", comSwDangerReportVO.getRecordContent());
+                    } else {
+                        dataMap.put("recordContent", "");
+                    }
+                    // 发现记录
+                    if (StringUtils.isNotEmpty(comSwDangerReportVO.getFindRecord())) {
+                        dataMap.put("findRecord", comSwDangerReportVO.getFindRecord());
+                    } else {
+                        dataMap.put("findRecord", "");
+                    }
+                    // 记录照片
+                    List<String> photo = new ArrayList<>();
+                    if (StringUtils.isNotEmpty(comSwDangerReportVO.getRecordPhoto())) {
+                        photo = Arrays.asList(comSwDangerReportVO.getRecordPhoto().split(","));
+                    }
+                    if (photo.size() != 0 && null != photo) {
+                        if (photo.size() == 1) {
+                            for (int i = 0; i < 9; i++) {
+                                if (i < 1) {
+                                    downloadPicture(photo.get(i), comSwDangerReportVO.getId() + "_find_" + i, "d:/dangerReport/file/");
+                                    dataMap.put("imgStr" + (i + 10),
+                                        getImageStr("d:/dangerReport/file/" + comSwDangerReportVO.getId() + "_find_" + i + ".jpg"));
+                                } else {
+                                    dataMap.put("imgStr" + (i + 10), getImageStr("d:/dangerReport/file/blank.jpg"));
+                                }
+                            }
+                        }
+                        if (photo.size() == 2) {
+                            for (int i = 0; i < 9; i++) {
+                                if (i < 2) {
+                                    downloadPicture(photo.get(i), comSwDangerReportVO.getId() + "_find_" + i, "d:/dangerReport/file/");
+                                    dataMap.put("imgStr" + (i + 10),
+                                        getImageStr("d:/dangerReport/file/" + comSwDangerReportVO.getId() + "_find_" + i + ".jpg"));
+                                } else {
+                                    dataMap.put("imgStr" + (i + 10), getImageStr("d:/dangerReport/file/blank.jpg"));
+                                }
+                            }
+                        }
+                        if (photo.size() == 3) {
+                            for (int i = 0; i < 9; i++) {
+                                if (i < 3) {
+                                    downloadPicture(photo.get(i), comSwDangerReportVO.getId() + "_find_" + i, "d:/dangerReport/file/");
+                                    dataMap.put("imgStr" + (i + 10),
+                                        getImageStr("d:/dangerReport/file/" + comSwDangerReportVO.getId() + "_find_" + i + ".jpg"));
+                                } else {
+                                    dataMap.put("imgStr" + (i + 10), getImageStr("d:/dangerReport/file/blank.jpg"));
+                                }
+                            }
+                        }
+                        if (photo.size() == 4) {
+                            for (int i = 0; i < 9; i++) {
+                                if (i < 4) {
+                                    downloadPicture(photo.get(i), comSwDangerReportVO.getId() + "_find_" + i, "d:/dangerReport/file/");
+                                    dataMap.put("imgStr" + (i + 10),
+                                        getImageStr("d:/dangerReport/file/" + comSwDangerReportVO.getId() + "_find_" + i + ".jpg"));
+                                } else {
+                                    dataMap.put("imgStr" + (i + 10), getImageStr("d:/dangerReport/file/blank.jpg"));
+                                }
+                            }
+                        }
+                        if (photo.size() == 5) {
+                            for (int i = 0; i < 9; i++) {
+                                if (i < 5) {
+                                    downloadPicture(photo.get(i), comSwDangerReportVO.getId() + "_find_" + i, "d:/dangerReport/file/");
+                                    dataMap.put("imgStr" + (i + 10),
+                                        getImageStr("d:/dangerReport/file/" + comSwDangerReportVO.getId() + "_find_" + i + ".jpg"));
+                                } else {
+                                    dataMap.put("imgStr" + (i + 10), getImageStr("d:/dangerReport/file/blank.jpg"));
+                                }
+                            }
+                        }
+                        if (photo.size() == 6) {
+                            for (int i = 0; i < 9; i++) {
+                                if (i < 6) {
+                                    downloadPicture(photo.get(i), comSwDangerReportVO.getId() + "_find_" + i, "d:/dangerReport/file/");
+                                    dataMap.put("imgStr" + (i + 10),
+                                        getImageStr("d:/dangerReport/file/" + comSwDangerReportVO.getId() + "_find_" + i + ".jpg"));
+                                } else {
+                                    dataMap.put("imgStr" + (i + 10), getImageStr("d:/dangerReport/file/blank.jpg"));
+                                }
+                            }
+                        }
+                        if (photo.size() == 7) {
+                            for (int i = 0; i < 9; i++) {
+                                if (i < 7) {
+                                    downloadPicture(photo.get(i), comSwDangerReportVO.getId() + "_find_" + i, "d:/dangerReport/file/");
+                                    dataMap.put("imgStr" + (i + 10),
+                                        getImageStr("d:/dangerReport/file/" + comSwDangerReportVO.getId() + "_find_" + i + ".jpg"));
+                                } else {
+                                    dataMap.put("imgStr" + (i + 10), getImageStr("d:/dangerReport/file/blank.jpg"));
+                                }
+                            }
+                        }
+                        if (photo.size() == 8) {
+                            for (int i = 0; i < 9; i++) {
+                                if (i < 8) {
+                                    downloadPicture(photo.get(i), comSwDangerReportVO.getId() + "_find_" + i, "d:/dangerReport/file/");
+                                    dataMap.put("imgStr" + (i + 10),
+                                        getImageStr("d:/dangerReport/file/" + comSwDangerReportVO.getId() + "_find_" + i + ".jpg"));
+                                } else {
+                                    dataMap.put("imgStr" + (i + 10), getImageStr("d:/dangerReport/file/blank.jpg"));
+                                }
+                            }
+                        }
+                        if (photo.size() == 9) {
+                            for (int i = 0; i < 9; i++) {
+                                downloadPicture(photo.get(i), comSwDangerReportVO.getId() + "_find_" + i, "d:/dangerReport/file/");
+                                dataMap.put("imgStr" + (i + 10),
+                                    getImageStr("d:/dangerReport/file/" + comSwDangerReportVO.getId() + "_find_" + i + ".jpg"));
+                            }
+                        }
+                    } else {
+                        for (int i = 0; i < 9; i++) {
+                            dataMap.put("imgStr" + (i + 10), getImageStr("d:/dangerReport/file/blank.jpg"));
+                        }
+                    }
+                    // 备注
+                    if (StringUtils.isNotEmpty(comSwDangerReportVO.getRemark())) {
+                        dataMap.put("remark", comSwDangerReportVO.getRemark());
+                    } else {
+                        dataMap.put("remark", "");
+                    }
+                    // 整改时间
+                    if (StringUtils.isNotEmpty(comSwDangerReportVO.getRectifyTime())) {
+                        dataMap.put("rectifyTime", comSwDangerReportVO.getRectifyTime());
+                    } else {
+                        dataMap.put("rectifyTime", "");
+                    }
+                    // 整改人员
+                    if (StringUtils.isNotEmpty(comSwDangerReportVO.getDPersonName())) {
+                        dataMap.put("dpersonName", comSwDangerReportVO.getDPersonName());
+                    } else {
+                        dataMap.put("dpersonName", "");
+                    }
+
+                    // 获取请求url
+                    String url = Constants.G_D_WEATHER_URL;
+                    // 获取请求参数
+                    String param = "key=" + Constants.G_D_WEATHER_KEY + "&city=510400";
+                    String result = HttpUtils.sendGet(url, param);
+                    R r = R.ok(JSON.parseObject(result));
+                    WeatherVO weatherVO =
+                        JSONObject.parseObject(JSONObject.toJSONString(r.getData()), WeatherVO.class);
+                    if (null != weatherVO) {
+                        LiveVO liveVO = weatherVO.getLives().get(0);
+                        // 城市
+                        dataMap.put("city", liveVO.getCity());
+                        // 天气
+                        dataMap.put("weather", liveVO.getWeather());
+                        // 温度
+                        dataMap.put("temperature", liveVO.getTemperature());
+                        // 风向
+                        dataMap.put("winddirection", liveVO.getWinddirection());
+                        // 风力
+                        dataMap.put("windpower", liveVO.getWindpower());
+                    }
+                    Configuration configuration = new Configuration(new Version("2.3.0"));
+
+                    configuration.setDefaultEncoding("utf-8");
+                    /**
+                     * 以下是两种指定ftl文件所在目录路径的方式,注意这两种方式都是 指定ftl文件所在目录的路径,而不是ftl文件的路径
+                     */
+                    // 指定路径的第一种方式(根据某个类的相对路径指定)
+                    // configuration.setClassForTemplateLoading(this.getClass(), "");
+
+                    // 指定路径的第二种方式,我的路径是C:/a.ftl
+                    configuration.setDirectoryForTemplateLoading(new File("d:/dangerReport/file/"));
+
+                    // 输出文档路径及名称
+                    // File outFile = new File("mnt/data/web/excel/安全工作记录_" + comSwSafetyWorkRecordVO.getId() +
+                    // ".doc");
+                    File file = new File(sourceFile+name);
+
+                    // 以utf-8的编码读取ftl文件
+                    Template template = configuration.getTemplate("隐患报告.ftl", "utf-8");
+                    Writer out = new BufferedWriter(
+                        new OutputStreamWriter(new FileOutputStream(file), StandardCharsets.UTF_8), 10240);
+                    template.process(dataMap, out);
+                    out.close();
+//                    inputStream = new FileInputStream(file);
+//                    sftp.uploadMore(ftpUrl, name, inputStream);
+//                    sftp.logout();
+//                    inputStream.close();
+//                        String absolutePath = file.getAbsolutePath();
+//                        boolean delete = file.delete();
+//                        log.info("删除excel【{}】结果【{}】", absolutePath, delete);
+                } finally {
+                    // 千万别忘记finish 会帮忙关闭流
+                    if (inputStream != null) {
+                        inputStream.close();
+                    }
                 }
-                downLoadUrl.add(excelUrl + name);
             }
-            return R.ok(downLoadUrl);
-        } catch (Exception e) {
-            e.printStackTrace();
-            log.error("文件传输失败【{}】", e.getMessage());
+            } catch (Exception e) {
+                e.printStackTrace();
+                log.error("文件传输失败【{}】", e.getMessage());
+            }
         }
-        return R.fail();
+        FileUtil.compressToZip(sourceFile,zipFile,"隐患报告.zip");
+        String currentDateString = String.valueOf(System.currentTimeMillis());
+        String name = "隐患报告_"+ currentDateString+".zip";
+        try {
+            InputStream inputStream=new FileInputStream(zipFile+"隐患报告.zip");
+            sftp.uploadMore(ftpUrl, name , inputStream);
+            sftp.logout();
+            inputStream.close();
+            FileUtils.deleteDirectory(new File(property+File.separator+"word"+File.separator));
+            FileUtils.deleteDirectory(new File(zipFile));
+        } catch (FileNotFoundException e) {
+            e.printStackTrace();
+        } catch (SftpException e) {
+            e.printStackTrace();
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+        return R.ok(excelUrl + name);
     }
 
     private List<List<String>> headDataFilling() {
@@ -1449,7 +1628,7 @@
         return encoder.encode(data);
     }
 
-    public String downloadPicture(String urlString, String fileName) throws Exception {
+    public String downloadPicture(String urlString, String fileName,String dir) throws Exception {
         // 构造URL
         URL url = new URL(urlString);
         // 打开连接
@@ -1461,7 +1640,7 @@
         // 读取到的数据长度
         int len;
         // 输出的文件流
-        String filename = "d:/" + fileName + ".jpg"; // 下载路径及下载图片名称
+        String filename = dir + fileName + ".jpg"; // 下载路径及下载图片名称
         File file = new File(filename);
         FileOutputStream os = new FileOutputStream(file, true);
         // 开始读取
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 24593fb..c7a88bd 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
@@ -1,15 +1,23 @@
 package com.panzhihua.community_backstage.api;
 
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.InputStream;
+import java.io.*;
 import java.math.BigDecimal;
-import java.util.Date;
-import java.util.List;
+import java.nio.charset.StandardCharsets;
+import java.text.SimpleDateFormat;
+import java.util.*;
 
 import javax.annotation.Resource;
 import javax.validation.Valid;
 
+import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy;
+import com.alibaba.fastjson.JSON;
+import com.panzhihua.common.constants.Constants;
+import com.panzhihua.common.model.vos.LiveVO;
+import com.panzhihua.common.model.vos.WeatherVO;
+import com.panzhihua.community_backstage.excel.CustomSheetWriteHandler;
+import freemarker.template.Configuration;
+import freemarker.template.Template;
+import freemarker.template.Version;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.util.ObjectUtils;
 import org.springframework.validation.annotation.Validated;
@@ -40,6 +48,7 @@
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
+import sun.misc.BASE64Encoder;
 
 /**
  * @program: springcloud_k8s_panzhihuazhihuishequ
@@ -86,10 +95,11 @@
 
     @ApiOperation(value = "新增社区活动")
     @PostMapping("activity")
-    public R addActivity(@RequestBody ComActActivityVO ComActActivityVO) {
+    public R addActivity(@RequestBody ComActActivityVO comActActivityVO) {
         Long communityId = this.getCommunityId();
-        ComActActivityVO.setCommunityId(communityId);
-        return communityService.addActivity(ComActActivityVO);
+        comActActivityVO.setCommunityId(communityId);
+        comActActivityVO.setUserId(this.getLoginUserInfo().getUserId());
+        return communityService.addActivity(comActActivityVO);
     }
 
     @ApiOperation(value = "编辑社区活动")
@@ -210,6 +220,335 @@
             return R.fail("活动id主键不能为空");
         }
         return communityService.listActivitySign(activitySignVO);
+    }
+
+    @ApiOperation(value = "excel导出-活动报名名单")
+    @PostMapping("sign/export")
+    public R activityExportSign(@RequestBody ActivitySignVO activitySignVO) {
+        String name = "活动报名名单导出数据.xlsx";
+        String ftpUrl = "/mnt/data/web/excel/";
+        R r = communityService.getSignLists(activitySignVO);
+        if (R.isOk(r)) {
+            List<ComActActSignExcelVO> excelVOS =
+                    JSONArray.parseArray(JSONArray.toJSONString(r.getData()), ComActActSignExcelVO.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, ComActActSignExcelVO.class)
+                                .registerWriteHandler(new LongestMatchColumnWidthStyleStrategy())
+                                .registerWriteHandler(new CustomSheetWriteHandler()).build();
+                        WriteSheet writeSheet = EasyExcel.writerSheet("活动报名名单导出数据").build();
+                        excelWriter.write(excelVOS, 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();
+            }
+        }
+        return R.fail("未查询到用户");
+    }
+
+    @ApiOperation(value = "分页查询活动评价记录", response = ComActActEvaluateVO.class)
+    @PostMapping("evaluate/page")
+    public R pageActivityEvaluates(@RequestBody ComActActEvaluateVO comActActEvaluateVO) {
+        if (ObjectUtils.isEmpty(comActActEvaluateVO.getActivityId())) {
+            return R.fail("活动id主键不能为空");
+        }
+        return communityService.pageActivityEvaluates(comActActEvaluateVO);
+    }
+
+    @ApiOperation(value = "excel导出-活动评价")
+    @PostMapping("evaluate/export")
+    public R activityExportEvaluate(@RequestBody ComActActEvaluateVO comActActEvaluateVO) {
+        String name = "活动评价导出数据.xlsx";
+        String ftpUrl = "/mnt/data/web/excel/";
+        R r = communityService.getEvaluateLists(comActActEvaluateVO);
+        if (R.isOk(r)) {
+            List<ComActActEvaluateExcelVO> excelVOS =
+                    JSONArray.parseArray(JSONArray.toJSONString(r.getData()), ComActActEvaluateExcelVO.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, ComActActEvaluateExcelVO.class)
+                                .registerWriteHandler(new LongestMatchColumnWidthStyleStrategy())
+                                .registerWriteHandler(new CustomSheetWriteHandler()).build();
+                        WriteSheet writeSheet = EasyExcel.writerSheet("活动评价导出数据").build();
+                        excelWriter.write(excelVOS, 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();
+            }
+        }
+        return R.fail("未查询到用户");
+    }
+
+    @ApiOperation(value = "分页查询活动签到记录", response = ComActActRegistVO.class)
+    @PostMapping("regist/page")
+    public R pageActivityRegists(@RequestBody ComActActRegistVO comActActRegistVO) {
+        if (ObjectUtils.isEmpty(comActActRegistVO.getActivityId())) {
+            return R.fail("活动id主键不能为空");
+        }
+        return communityService.pageActivityRegists(comActActRegistVO);
+    }
+
+    @ApiOperation(value = "excel导出-活动签到")
+    @PostMapping("regist/export")
+    public R activityExportRegist(@RequestBody ComActActRegistVO comActActRegistVO) {
+        String name = "活动签到导出数据.xlsx";
+        String ftpUrl = "/mnt/data/web/excel/";
+        R r = communityService.getRegistLists(comActActRegistVO);
+        if (R.isOk(r)) {
+            List<ComActActRegistExcelVO> excelVOS =
+                    JSONArray.parseArray(JSONArray.toJSONString(r.getData()), ComActActRegistExcelVO.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, ComActActRegistExcelVO.class)
+                                .registerWriteHandler(new LongestMatchColumnWidthStyleStrategy())
+                                .registerWriteHandler(new CustomSheetWriteHandler()).build();
+                        WriteSheet writeSheet = EasyExcel.writerSheet("活动签到导出数据").build();
+                        excelWriter.write(excelVOS, 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();
+            }
+        }
+        return R.fail("未查询到用户");
+    }
+
+    @ApiOperation(value = "社区活动数据统计", response = ComActActivityStatisticsVO.class)
+    @GetMapping("statistics")
+    public R activityStatistics(@RequestParam("activityId") Long activityId){
+        return communityService.activityStatistics(activityId);
+    }
+
+    @ApiOperation(value = "excel导出活动签到统计")
+    @GetMapping("statistics/export")
+    public R activityStatisticsExport(@RequestBody ComActActRegistVO comActActRegistVO){
+        String name = "活动签到统计导出数据.xlsx";
+        String ftpUrl = "/mnt/data/web/excel/";
+        //活动签到人员
+        R r = communityService.getRegistLists(comActActRegistVO);
+        //活动未签到人员
+        R r1 = communityService.getNoRegistLists(comActActRegistVO);
+        if (R.isOk(r)) {
+            List<ComActActRegistExcelVO> excelVOS =
+                    JSONArray.parseArray(JSONArray.toJSONString(r.getData()), ComActActRegistExcelVO.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, ComActActRegistExcelVO.class)
+                                .registerWriteHandler(new LongestMatchColumnWidthStyleStrategy())
+                                .registerWriteHandler(new CustomSheetWriteHandler()).build();
+                        WriteSheet writeSheet = EasyExcel.writerSheet("活动签到导出数据").build();
+                        excelWriter.write(excelVOS, 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();
+            }
+        }
+        return R.fail("未查询到用户");
+    }
+
+    @ApiOperation(value = "社区活动签到二维码下载")
+    @GetMapping("qrCode/export")
+    public R activityRegistQRCodeExport(@RequestParam("activityId") Long activityId){
+        try {
+                SFTPUtil sftp = new SFTPUtil(userName, password, host, port);
+                sftp.login();
+                Map<String, Object> dataMap = new HashMap<String, Object>();
+                // 生成动态模板excel通过ftp工具上传到主节点,然后返回模板下载地址
+                String ftpUrl = "/mnt/data/web/excel/";
+                String name = "社区活动签到二维码_" + activityId + ".doc";
+                boolean existDir = sftp.isExistDir(ftpUrl + name);
+                if (!existDir) {
+                    String property = System.getProperty("user.dir");
+                    String fileName = property + File.separator + name;
+                    // 这里 需要指定写用哪个class去写
+                    ExcelWriter excelWriter = null;
+                    InputStream inputStream = null;
+                    File file0=new File("d:/comActivity/file");
+                    if(!file0.isDirectory()&&!file0.exists()){
+                        file0.mkdirs();
+                    }
+                    sftp.download("/mnt/data/web/", "社区活动二维码.ftl", "d:/comActivity/file/社区活动二维码.ftl");
+                    try {
+                        String text = String.valueOf(activityId);
+                        String destPath = "d:/comActivity/file/";
+                        String downFile = QRCodeUtils.encode(text, null, destPath, false);
+                        dataMap.put("imgStr", getImageStr("d:/comActivity/file/" + downFile));
+                        Configuration configuration = new Configuration(new Version("2.3.0"));
+
+                        configuration.setDefaultEncoding("utf-8");
+                        /**
+                         * 以下是两种指定ftl文件所在目录路径的方式,注意这两种方式都是 指定ftl文件所在目录的路径,而不是ftl文件的路径
+                         */
+                        // 指定路径的第一种方式(根据某个类的相对路径指定)
+                        // configuration.setClassForTemplateLoading(this.getClass(), "");
+
+                        // 指定路径的第二种方式,我的路径是C:/a.ftl
+                        configuration.setDirectoryForTemplateLoading(new File("d:/comActivity/file/"));
+
+                        // 输出文档路径及名称
+                        // File outFile = new File("mnt/data/web/excel/安全工作记录_" + comSwSafetyWorkRecordVO.getId() +
+                        // ".doc");
+                        File file = new File(fileName);
+
+                        // 以utf-8的编码读取ftl文件
+                        Template template = configuration.getTemplate("社区活动二维码.ftl", "utf-8");
+                        Writer out = new BufferedWriter(
+                                new OutputStreamWriter(new FileOutputStream(file), StandardCharsets.UTF_8), 10240);
+                        template.process(dataMap, out);
+                        out.close();
+                        inputStream = new FileInputStream(file);
+                        sftp.uploadMore(ftpUrl, name, inputStream);
+                        sftp.logout();
+                        inputStream.close();
+                        String absolutePath = file.getAbsolutePath();
+                        boolean delete = file.delete();
+                        log.info("删除excel【{}】结果【{}】", absolutePath, delete);
+                    } finally {
+                        // 千万别忘记finish 会帮忙关闭流
+                        if (inputStream != null) {
+                            inputStream.close();
+                        }
+                    }
+                }
+            return R.ok(excelUrl + name);
+        } catch (Exception e) {
+            e.printStackTrace();
+            log.error("文件传输失败【{}】", e.getMessage());
+            return R.fail();
+        }
+    }
+
+    @ApiOperation(value = "社区活动查询历史封面", response = ComActActPictureVO.class)
+    @GetMapping("picture/getList")
+    public R getPictureList() {
+        Long userId = this.getLoginUserInfo().getUserId();
+        return communityService.getPictureList(userId);
+    }
+
+    @ApiOperation(value = "查询当前社区标签列表")
+    @GetMapping("userTags/getList")
+    public R getUserTagsList() {
+        Long communityId = this.getLoginUserInfo().getCommunityId();
+        return userService.listTags(communityId);
     }
 
     @ApiOperation(value = "新增社区动态")
@@ -676,4 +1015,20 @@
         }
         return communityService.easyPhotoNoHandleList(loginUserInfo.getCommunityId());
     }
+
+    public String getImageStr(String fileName) {
+        String imgFile = fileName;
+        InputStream in = null;
+        byte[] data = null;
+        try {
+            in = new FileInputStream(imgFile);
+            data = new byte[in.available()];
+            in.read(data);
+            in.close();
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        BASE64Encoder encoder = new BASE64Encoder();
+        return encoder.encode(data);
+    }
 }
diff --git a/springcloud_k8s_panzhihuazhihuishequ/community_backstage/src/main/java/com/panzhihua/community_backstage/api/CommunityManagerApi.java b/springcloud_k8s_panzhihuazhihuishequ/community_backstage/src/main/java/com/panzhihua/community_backstage/api/CommunityManagerApi.java
index 370eddf..6b74536 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/community_backstage/src/main/java/com/panzhihua/community_backstage/api/CommunityManagerApi.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/community_backstage/src/main/java/com/panzhihua/community_backstage/api/CommunityManagerApi.java
@@ -642,10 +642,10 @@
             try {
                 SFTPUtil sftp = new SFTPUtil(userName, password, host, port);
                 sftp.login();
-                boolean existDir = sftp.isExistDir(ftpUrl + name);
+                boolean existDir = sftp.isExistDir(ftpUrl + _name);
                 if (!existDir) {
                     String property = System.getProperty("user.dir");
-                    String fileName = property + File.separator + name;
+                    String fileName = property + File.separator + _name;
                     // 这里 需要指定写用哪个class去写
                     ExcelWriter excelWriter = null;
                     InputStream inputStream = null;
@@ -658,7 +658,7 @@
                         excelWriter.finish();
                         File file = new File(fileName);
                         inputStream = new FileInputStream(file);
-                        sftp.uploadMore(ftpUrl, name, inputStream);
+                        sftp.uploadMore(ftpUrl, _name, inputStream);
                         sftp.logout();
                         inputStream.close();
                         String absolutePath = file.getAbsolutePath();
@@ -674,7 +674,7 @@
                         }
                     }
                 }
-                return R.ok(url + name);
+                return R.ok(url + _name);
             } catch (Exception e) {
                 e.printStackTrace();
                 log.error("文件传输失败【{}】", e.getMessage());
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/api/ComActReserveApi.java b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/api/ComActReserveApi.java
new file mode 100644
index 0000000..d309b0e
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/api/ComActReserveApi.java
@@ -0,0 +1,315 @@
+package com.panzhihua.service_community.api;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.panzhihua.common.model.dtos.community.CancelRecordDTO;
+import com.panzhihua.common.model.dtos.community.OperationDetailDTO;
+import com.panzhihua.common.model.dtos.community.PageUserReserveDTO;
+import com.panzhihua.common.model.vos.R;
+import com.panzhihua.common.model.vos.community.ComActReserveCommitVO;
+import com.panzhihua.service_community.dao.ComActReserveOperationRecordMapper;
+import com.panzhihua.service_community.model.dos.ComActReserveOperationRecordDO;
+import com.panzhihua.service_community.model.dos.ComActReserveRecordDO;
+import com.panzhihua.service_community.service.*;
+import com.panzhihua.common.model.dtos.community.reserve.*;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+/**
+ * 预约登记
+ */
+@Slf4j
+@RestController
+@RequestMapping("/reserve/")
+public class ComActReserveApi {
+
+    @Resource
+    private ComActReserveService comActReserveService;
+    @Resource
+    private ComActReserveRecordService comActReserveRecordService;
+    @Resource
+    private ComActReserveAnswerContentService comActReserveAnswerContentService;
+    @Resource
+    private ComActReserveOperationRecordService comActReserveOperationRecordService;
+    @Resource
+    private ComActReserveSubService comActReserveSubService;
+
+    /**
+     * 社区后台-分页查询预约登记列表
+     * @param pageReserveDTO    请求参数
+     * @return  预约登记列表
+     */
+    @PostMapping("/admin/page")
+    public R pageReserveAdmin(@RequestBody PageReserveAdminDTO pageReserveDTO){
+        return comActReserveService.pageReserveAdmin(pageReserveDTO);
+    }
+
+    /**
+     * 社区后台-新增预约登记信息
+     * @param addReserveDTO 请求参数
+     * @return  新增结果
+     */
+    @PostMapping("/admin/add")
+    public R addReserveAdmin(@RequestBody AddReserveAdminDTO addReserveDTO){
+        return comActReserveService.addReserveAdmin(addReserveDTO);
+    }
+
+    /**
+     * 社区后台-编辑预约登记信息
+     * @param editReserveDTO 请求参数
+     * @return  新增结果
+     */
+    @PostMapping("/admin/edit")
+    public R editReserveAdmin(@RequestBody EditReserveAdminDTO editReserveDTO){
+        return comActReserveService.editReserveAdmin(editReserveDTO);
+    }
+
+    /**
+     * 社区后台-修改预约登记状态
+     * @param editReserveDTO    请求参数
+     * @return  修改结果
+     */
+    @PostMapping("/admin/edit/status")
+    public R editReserveStatusAdmin(@RequestBody EditComActReserveStatusDTO editReserveDTO){
+        return comActReserveService.editReserveStatusAdmin(editReserveDTO);
+    }
+
+    /**
+     * 社区后台-继续预约登记
+     * @param editReserveDTO    请求参数
+     * @return  修改结果
+     */
+    @PostMapping("/admin/edit/info")
+    public R editReserveInfoAdmin(@RequestBody EditComActReserveInfoDTO editReserveDTO){
+        return comActReserveService.editReserveInfoAdmin(editReserveDTO);
+    }
+
+    /**
+     * 社区后台-根据预约登记id查询详情
+     * @param reserveId 预约登记id
+     * @return  预约登记详情
+     */
+    @GetMapping("/admin/detail")
+    public R detailReserveAdmin(@RequestParam("reserveId") Long reserveId){
+        return comActReserveService.detailReserveAdmin(reserveId);
+    }
+
+    /**
+     * 预约登记详情
+     * @param id
+     * @return
+     */
+    @GetMapping("/detail")
+    public R detail(@RequestParam("id") Long id,@RequestParam("userId") Long userId,@RequestParam("recordId") Long recordId,@RequestParam("isBack") Integer isBack){
+        if(id!=null){
+            return comActReserveService.getById(id,userId,recordId,isBack);
+        }
+        return R.fail();
+    }
+
+    /**
+     *
+     */
+
+    /**
+     * 小程序提交预约/登记
+     * @param comActReserveCommitVO
+     * @return
+     */
+    @PostMapping("/commit")
+    public R commit(@RequestBody ComActReserveCommitVO comActReserveCommitVO){
+        return comActReserveService.commit(comActReserveCommitVO);
+    }
+    /**
+     * 社区后台-根据社区id统计预约类数据
+     * @param makeStatisticsDTO   请求参数
+     * @return  统计预约类数据
+     */
+    @PostMapping("/admin/make/statistics")
+    public R makeStatisticsAdmin(@RequestBody ComActReserveMakeStatisticsDTO makeStatisticsDTO){
+        return comActReserveService.makeStatisticsAdmin(makeStatisticsDTO);
+    }
+
+    /**
+     * 社区后台-查询导出预约统计汇总数据
+     * @param makeStatisticsDTO   请求参数
+     * @return  统计预约类数据
+     */
+    @PostMapping("/admin/make/statistics/export")
+    public R makeStatisticsExportAdmin(@RequestBody ComActReserveMakeStatisticsDTO makeStatisticsDTO){
+        return comActReserveService.makeStatisticsExportAdmin(makeStatisticsDTO);
+    }
+
+    /**
+     * 社区后台-根据预约id查询预约明细
+     * @param pageMakeDTO   请求参数
+     * @return  预约明细
+     */
+    @PostMapping("/admin/make/page")
+    public R pageMakeAdmin(@RequestBody PageReserveMakeAdminDTO pageMakeDTO){
+        return comActReserveRecordService.pageMakeAdmin(pageMakeDTO);
+    }
+
+    /**
+     * 根据预约记录id查询预约明细操作记录
+     * @param reserveRecordId   预约记录id
+     * @return  预约明细操作记录
+     */
+    @GetMapping("/admin/make/detail")
+    public R detailMakeAdmin(@RequestParam("reserveRecordId") Long reserveRecordId){
+        return comActReserveRecordService.detailMakeAdmin(reserveRecordId);
+    }
+
+    /**
+     * 批量取消预约记录
+     * @param reserveRecordDTO   请求参数
+     * @return  取消结果
+     */
+    @PostMapping("/admin/make/cancel")
+    public R makeCancelAdmin(@RequestBody CancelReserveRecordDTO reserveRecordDTO){
+        return comActReserveRecordService.makeCancelAdmin(reserveRecordDTO);
+    }
+
+    /**
+     * 预约明细导出数据查询
+     * @param pageMakeDTO   请求参数
+     * @return  预约明细数据
+     */
+    @PostMapping("/admin/make/list/export")
+    public R exportMakeAdmin(@RequestBody PageReserveMakeAdminDTO pageMakeDTO){
+        return comActReserveRecordService.exportMakeAdmin(pageMakeDTO);
+    }
+
+    /**
+     * 分页查询登记统计汇总
+     * @param registerStatisticsDTO 请求参数
+     * @return  登记统计汇总
+     */
+    @PostMapping("/admin/register/page")
+    public R registerStatisticsAdmin(@RequestBody ComActReserveRegisterStatisticsDTO registerStatisticsDTO){
+        return comActReserveRecordService.registerStatisticsAdmin(registerStatisticsDTO);
+    }
+
+    /**
+     * 导出登记统计汇总
+     * @param registerStatisticsDTO 请求参数
+     * @return  登记统计汇总
+     */
+    @PostMapping("/admin/register/export")
+    public R registerStatisticsExportAdmin(@RequestBody ComActReserveRegisterStatisticsDTO registerStatisticsDTO){
+        return comActReserveRecordService.registerStatisticsExportAdmin(registerStatisticsDTO);
+    }
+
+    /**
+     * 分页查询预约处理列表
+     * @param pageMakeHandleDTO 请求参数
+     * @return  预约处理列表
+     */
+    @PostMapping("/admin/make/handle/page")
+    public R pageMakeHandleAdmin(@RequestBody PageReserveMakeHandleAdminDTO pageMakeHandleDTO){
+        return comActReserveRecordService.pageMakeHandleAdmin(pageMakeHandleDTO);
+    }
+
+    /**
+     * 批量处理预约记录
+     * @param makeHandleDTO 请求参数
+     * @return  处理结果
+     */
+    @PostMapping("/admin/make/handle")
+    public R makeHandleAdmin(@RequestBody MakeHandleAdminDTO makeHandleDTO){
+        return comActReserveRecordService.makeHandleAdmin(makeHandleDTO);
+    }
+
+    /**
+     * 导出预约处理列表数据查询
+     * @param pageMakeHandleDTO 请求参数
+     * @return  预约处理列表
+     */
+    @PostMapping("/admin/make/handle/export")
+    public R exportMakeHandleAdmin(@RequestBody PageReserveMakeHandleAdminDTO pageMakeHandleDTO){
+        return comActReserveRecordService.exportMakeHandleAdmin(pageMakeHandleDTO);
+    }
+
+    /**
+     * 删除预约登记信息
+     * @param reserveId 预约登记id
+     * @return  删除结果
+     */
+    @GetMapping("/admin/delete")
+    public R deleteReserveAdmin(@RequestParam("reserveId") Long reserveId){
+        return comActReserveService.deleteReserveAdmin(reserveId);
+    }
+
+    /**
+     * 查询社区所有预约信息列表
+     * @param communityId   社区id
+     * @return  预约信息列表
+     */
+    @GetMapping("/admin/list")
+    public R listReserveAdmin(@RequestParam("communityId") Long communityId){
+        return comActReserveService.listReserveAdmin(communityId);
+    }
+
+    /**
+     * 导出登记明细数据
+     * @param reserveId 登记id
+     * @return  登记明细数据
+     */
+    @GetMapping("/admin/register/list/export")
+    public R exportRegisterAdmin(@RequestParam("reserveId") Long reserveId){
+        return comActReserveAnswerContentService.exportRegisterAdmin(reserveId);
+    }
+
+    /**
+     * 我的预约/登记
+     * @param pageUserReserveDTO
+     * @return
+     */
+    @PostMapping("/userReserveList")
+    public R userReserveList(@RequestBody PageUserReserveDTO pageUserReserveDTO){
+        return comActReserveService.pageReserveList(pageUserReserveDTO);
+    }
+    /**
+     * 取消预约/登记
+     */
+    @PostMapping("/cancelReserve")
+    public R userCancelReserve(@RequestBody CancelRecordDTO cancelRecordDTO){
+        return comActReserveRecordService.cancel(cancelRecordDTO);
+    }
+
+    /**
+     * 预约详情操作记录
+     */
+    @PostMapping("/detailOperation")
+    public R reserveOperation(@RequestBody OperationDetailDTO comActReserveOperationRecordDO){
+        return comActReserveOperationRecordService.detailOperationRecord(comActReserveOperationRecordDO);
+    }
+
+    /**
+     * 查询预约登记题目列表
+     * @param reserveId 预约登记id
+     * @return  约登记题目列表
+     */
+    @GetMapping("/admin/subject/list")
+    public R subjectListAdmin(@RequestParam("reserveId") Long reserveId){
+        return comActReserveSubService.subjectListAdmin(reserveId);
+    }
+
+    /**
+     * 分页查询登记明细列表
+     * @param detailedAdminDTO  请求参数
+     * @return  登记明细列表
+     */
+    @PostMapping("/admin/register/detailed/list")
+    public R registerDetailedListAdmin(@RequestBody PageReserveRegisterDetailedAdminDTO detailedAdminDTO){
+        return comActReserveAnswerContentService.registerDetailedListAdmin(detailedAdminDTO);
+    }
+
+    @GetMapping("/admin/register/detailed/detail")
+    public R registerDetailedDetailAdmin(@RequestParam("reserveRecordId") Long reserveRecordId){
+        return comActReserveRecordService.registerDetailedDetailAdmin(reserveRecordId);
+    }
+}
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 0f1bcca..d572123 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
@@ -805,5 +805,4 @@
     public R villageStatistics(@RequestParam("communityId") Long communityId) {
         return comMngVillageService.villageStatistics(communityId);
     }
-
 }
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 64ba0ec..912692f 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
@@ -1,6 +1,11 @@
 package com.panzhihua.service_community.api;
 
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Comparator;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+import java.util.Optional;
 import java.util.stream.Collectors;
 
 import javax.annotation.Resource;
@@ -9,7 +14,14 @@
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.ObjectUtils;
 import org.springframework.util.StringUtils;
-import org.springframework.web.bind.annotation.*;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
 
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
@@ -17,12 +29,46 @@
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.panzhihua.common.exceptions.ServiceException;
-import com.panzhihua.common.model.dtos.community.*;
+import com.panzhihua.common.model.dtos.community.ComActEasyPhotoCommentDTO;
+import com.panzhihua.common.model.dtos.community.ComActEasyPhotoCommentUserDTO;
+import com.panzhihua.common.model.dtos.community.EldersAuthAddByFamilyDTO;
+import com.panzhihua.common.model.dtos.community.EldersAuthAddDTO;
+import com.panzhihua.common.model.dtos.community.EldersAuthDeleteDTO;
+import com.panzhihua.common.model.dtos.community.EldersAuthEditDTO;
+import com.panzhihua.common.model.dtos.community.EldersAuthFeedbackAddDTO;
+import com.panzhihua.common.model.dtos.community.GrantRewardDTO;
+import com.panzhihua.common.model.dtos.community.PageComActDTO;
+import com.panzhihua.common.model.dtos.community.PageComActEasyPhotoCommentDTO;
+import com.panzhihua.common.model.dtos.community.PageEldersAuthDTO;
+import com.panzhihua.common.model.dtos.community.PageQuestnaireAnswerDTO;
+import com.panzhihua.common.model.dtos.community.PageQuestnaireDTO;
+import com.panzhihua.common.model.dtos.community.PageQuestnaireSubDetailsDTO;
 import com.panzhihua.common.model.dtos.community.easyPhoto.ExportEasyPhotoDTO;
 import com.panzhihua.common.model.dtos.community.questnaire.StatisticsSummaryDTO;
 import com.panzhihua.common.model.vos.R;
 import com.panzhihua.common.model.vos.SystemmanagementConfigVO;
-import com.panzhihua.common.model.vos.community.*;
+import com.panzhihua.common.model.vos.community.ComActActRegistVO;
+import com.panzhihua.common.model.vos.community.ActivitySignVO;
+import com.panzhihua.common.model.vos.community.BatchhouseVO;
+import com.panzhihua.common.model.vos.community.ComActActEvaluateVO;
+import com.panzhihua.common.model.vos.community.ComActActPrizeVO;
+import com.panzhihua.common.model.vos.community.ComActActivityVO;
+import com.panzhihua.common.model.vos.community.ComActDynVO;
+import com.panzhihua.common.model.vos.community.ComActEasyPhotoVO;
+import com.panzhihua.common.model.vos.community.ComActMessageBackVO;
+import com.panzhihua.common.model.vos.community.ComActMessageVO;
+import com.panzhihua.common.model.vos.community.ComActMicroWishVO;
+import com.panzhihua.common.model.vos.community.ComActVO;
+import com.panzhihua.common.model.vos.community.ComMngStructAreaVO;
+import com.panzhihua.common.model.vos.community.ComMngStructHouseVO;
+import com.panzhihua.common.model.vos.community.ComMngStructOtherBuildVO;
+import com.panzhihua.common.model.vos.community.ComMngVolunteerMngAppletsVO;
+import com.panzhihua.common.model.vos.community.ComMngVolunteerMngVO;
+import com.panzhihua.common.model.vos.community.EldersAuthDetailsVO;
+import com.panzhihua.common.model.vos.community.EldersAuthVO;
+import com.panzhihua.common.model.vos.community.ResetComActMessageVO;
+import com.panzhihua.common.model.vos.community.SignactivityVO;
+import com.panzhihua.common.model.vos.community.TodoEventsVO;
 import com.panzhihua.common.model.vos.community.questnaire.EditComActQuestnaireVo;
 import com.panzhihua.common.model.vos.community.questnaire.QuestnaireVO;
 import com.panzhihua.common.model.vos.community.questnaire.UsersAnswerQuestnaireVO;
@@ -30,12 +76,41 @@
 import com.panzhihua.common.model.vos.user.SysUserNoticeVO;
 import com.panzhihua.common.model.vos.user.UserPhoneVO;
 import com.panzhihua.common.service.user.UserService;
-import com.panzhihua.common.utlis.*;
+import com.panzhihua.common.utlis.AgeUtils;
+import com.panzhihua.common.utlis.ClazzUtils;
+import com.panzhihua.common.utlis.DateUtils;
+import com.panzhihua.common.utlis.IdCard;
+import com.panzhihua.common.utlis.WxUtil;
+import com.panzhihua.common.utlis.WxXCXTempSend;
 import com.panzhihua.service_community.dao.ComActActSignDAO;
 import com.panzhihua.service_community.dao.ComEldersAuthHistoryRecordMapper;
 import com.panzhihua.service_community.dao.ComMngPopulationDAO;
-import com.panzhihua.service_community.model.dos.*;
-import com.panzhihua.service_community.service.*;
+import com.panzhihua.service_community.model.dos.ComActActEvaluateDO;
+import com.panzhihua.service_community.model.dos.ComActActPrizeDO;
+import com.panzhihua.service_community.model.dos.ComActDynDO;
+import com.panzhihua.service_community.model.dos.ComActEasyPhotoDO;
+import com.panzhihua.service_community.model.dos.ComActMicroWishDO;
+import com.panzhihua.service_community.model.dos.ComEldersAuthHistoryRecordDO;
+import com.panzhihua.service_community.model.dos.ComEldersAuthUserDO;
+import com.panzhihua.service_community.model.dos.ComMngStructAreaDO;
+import com.panzhihua.service_community.model.dos.EldersAuthDO;
+import com.panzhihua.service_community.service.ComActActEvaluateService;
+import com.panzhihua.service_community.service.ComActActPrizeService;
+import com.panzhihua.service_community.service.ComActActivityService;
+import com.panzhihua.service_community.service.ComActDynService;
+import com.panzhihua.service_community.service.ComActEasyPhotoActivityService;
+import com.panzhihua.service_community.service.ComActEasyPhotoService;
+import com.panzhihua.service_community.service.ComActMessageService;
+import com.panzhihua.service_community.service.ComActMicroWishService;
+import com.panzhihua.service_community.service.ComActQuestnaireService;
+import com.panzhihua.service_community.service.ComActService;
+import com.panzhihua.service_community.service.ComEldersAuthUserService;
+import com.panzhihua.service_community.service.ComMngStructAreaDistrictService;
+import com.panzhihua.service_community.service.ComMngStructAreaService;
+import com.panzhihua.service_community.service.ComMngStructHouseService;
+import com.panzhihua.service_community.service.ComMngStructOtherBuildService;
+import com.panzhihua.service_community.service.ComMngVolunteerMngService;
+import com.panzhihua.service_community.service.EldersAuthService;
 
 import cn.hutool.core.util.IdcardUtil;
 import lombok.extern.slf4j.Slf4j;
@@ -90,6 +165,8 @@
     private ComEldersAuthHistoryRecordMapper comEldersAuthHistoryRecordMapper;
     @Resource
     private ComActEasyPhotoActivityService comActEasyPhotoActivityService;
+    @Resource
+    private ComActActEvaluateService comActActEvaluateService;
 
     /**
      * 新增社区活动
@@ -279,6 +356,7 @@
         if (ObjectUtils.isEmpty(comActActivityVO)) {
             return R.fail("活动不存在");
         }
+        //活动奖品
         List<ComActActPrizeDO> comActActPrizeDOS = comActActPrizeService
             .list(new QueryWrapper<ComActActPrizeDO>().lambda().eq(ComActActPrizeDO::getActivityId, id));
         if (!ObjectUtils.isEmpty(comActActPrizeDOS)) {
@@ -290,6 +368,41 @@
             });
             comActActivityVO.setComActActPrizeVOList(comActActPrizeVOS);
         }
+        //活动评价
+        List<ComActActEvaluateDO> comActActEvaluateDOList = comActActEvaluateService
+                .list(new QueryWrapper<ComActActEvaluateDO>().lambda().eq(ComActActEvaluateDO::getActivityId, id));
+        if (!ObjectUtils.isEmpty(comActActEvaluateDOList)) {
+            List<ComActActEvaluateVO> comActActEvaluateVOList = new ArrayList<>();
+            comActActEvaluateDOList.forEach(comActActEvaluateDO -> {
+                ComActActEvaluateVO comActActEvaluateVO = new ComActActEvaluateVO();
+                BeanUtils.copyProperties(comActActEvaluateDO, comActActEvaluateVO);
+                comActActEvaluateVOList.add(comActActEvaluateVO);
+            });
+            comActActivityVO.setComActActEvaluateVOList(comActActEvaluateVOList);
+            //活动评价总数
+            comActActivityVO.setEvaluateAmount(comActActEvaluateDOList.size());
+            //当前用户对活动的评分
+            Optional.ofNullable(userId).ifPresent(currentUserId -> {
+                Optional<ComActActEvaluateDO> optional = comActActEvaluateDOList.stream()
+                        .filter(comActActEvaluateDO -> comActActEvaluateDO.getUserId().equals(currentUserId)).findFirst();
+                if (optional.isPresent()) {
+                    comActActivityVO.setMyRating(optional.get().getStarLevel());
+                }
+            });
+        }
+        //签到时间
+        Optional.ofNullable(userId).ifPresent(currentUserId -> {
+            R listSignInResult = comActActivityService.listSignInActivity(currentUserId);
+            if (R.isOk(listSignInResult) && !ObjectUtils.isEmpty(listSignInResult.getData())) {
+                Optional<ComActActRegistVO> optional = JSONArray.parseArray(JSONArray.toJSONString(listSignInResult.getData()), ComActActRegistVO.class).stream()
+                        .filter(activitySignInVO -> activitySignInVO.getActivityId().equals(id))
+                        .sorted(Comparator.comparing(ComActActRegistVO::getCreateAt).reversed()).findFirst();
+                if (optional.isPresent()) {
+                    comActActivityVO.setActivitySignInDate(optional.get().getCreateAt());
+                }
+            }
+        });
+        //活动报名名单
         ActivitySignVO activitySignVO = new ActivitySignVO();
         activitySignVO.setActivityId(id);
         R r = comActActivityService.listActivitySigns(activitySignVO);
@@ -330,6 +443,50 @@
     }
 
     /**
+     * 活动签到
+     *
+     * @param comActActRegistVO 请求参数
+     * @return 签到结果
+     */
+    @PostMapping("activity/sign-in")
+    public R activitySignIn(@RequestBody ComActActRegistVO comActActRegistVO) {
+        return comActActivityService.activitySignIn(comActActRegistVO);
+    }
+
+    /**
+     * 用户签到列表
+     *
+     * @param userId 用户id
+     * @return 用户签到记录列表
+     */
+    @GetMapping("/sign-in/user/list")
+    public R listSignInActivity(@RequestParam("userId") Long userId) {
+        return comActActivityService.listSignInActivity(userId);
+    }
+
+    /**
+     * 社区活动评价
+     *
+     * @param comActActEvaluateVO 社区评价VO
+     * @return 评价结果
+     */
+    @PostMapping("activity/evaluate")
+    public R activityEvaluate(@RequestBody ComActActEvaluateVO comActActEvaluateVO) {
+        return comActActEvaluateService.activityEvaluate(comActActEvaluateVO);
+    }
+
+    /**
+     * 用户评价列表
+     *
+     * @param userId 用户id
+     * @return 当前用户对所有活动的评价列表
+     */
+    @GetMapping("/evaluate/user/list")
+    public R listEvaluate(@RequestParam("userId") Long userId) {
+        return comActActEvaluateService.listEvaluate(userId);
+    }
+
+    /**
      * 分页活动报名名单
      *
      * @param activitySignVO
@@ -351,6 +508,102 @@
     @PostMapping("listactivitysigns")
     public R listActivitySigns(@RequestBody ActivitySignVO activitySignVO) {
         return comActActivityService.listActivitySigns(activitySignVO);
+    }
+
+    /**
+     * description  getSignLists  查询活动报名名单
+     * @param    activitySignVO  查询参数
+     * @return    R   查询结果
+     * @author txb
+     * @date 2021/8/24 14:03
+     */
+    @PostMapping("activity/sign/getList")
+    public R getSignLists(@RequestBody ActivitySignVO activitySignVO){
+        return comActActivityService.getSignLists(activitySignVO);
+    }
+
+    /**
+     * description  listActivityRegists  分页查询活动评价
+     * @param    comActActEvaluateVO  活动评价vo
+     * @return    R   分页查询结果
+     * @author txb
+     * @date 2021/8/24 14:03
+     */
+    @PostMapping("activity/evaluate/page")
+    public R pageActivityEvaluates(@RequestBody ComActActEvaluateVO comActActEvaluateVO) {
+        return comActActivityService.pageActivityEvaluates(comActActEvaluateVO);
+    }
+
+    /**
+     * description  getEvaluateLists  查询活动评价
+     * @param    comActActEvaluateVO  查询参数
+     * @return    R   查询结果
+     * @author txb
+     * @date 2021/8/24 14:03
+     */
+    @PostMapping("activity/evaluate/getList")
+    public R getEvaluateLists(@RequestBody ComActActEvaluateVO comActActEvaluateVO){
+        return comActActivityService.getEvaluateLists(comActActEvaluateVO);
+    }
+
+    /**
+     * description  pageActivityRegists  分页查询活动签到
+     * @param    comActActRegistVO  活动签到vo
+     * @return    R   分页查询结果
+     * @author txb
+     * @date 2021/8/24 14:03
+     */
+    @PostMapping("activity/regist/page")
+    public R pageActivityRegists(@RequestBody ComActActRegistVO comActActRegistVO) {
+        return comActActivityService.pageActivityRegists(comActActRegistVO);
+    }
+
+    /**
+     * description  getRegistLists  查询活动签到
+     * @param    comActActRegistVO  查询参数
+     * @return    R   查询结果
+     * @author txb
+     * @date 2021/8/25 9:33
+     */
+    @PostMapping("activity/regist/getList")
+    public R getRegistLists(@RequestBody ComActActRegistVO comActActRegistVO){
+        return comActActivityService.getRegistLists(comActActRegistVO);
+    }
+
+    /**
+     * description  getRegistLists  查询活动未签到
+     * @param    comActActRegistVO  查询参数
+     * @return    R   查询结果
+     * @author txb
+     * @date 2021/8/25 9:33
+     */
+    @PostMapping("activity/noRegist/getList")
+    public R getNoRegistLists(@RequestBody ComActActRegistVO comActActRegistVO){
+        return comActActivityService.getNoRegistLists(comActActRegistVO);
+    }
+
+    /**
+     * description  activityStagistics  活动数据统计
+     * @param activityId 活动id
+     * @return    R   统计结果
+     * @author txb
+     * @date 2021/8/25 13:33
+     */
+    @GetMapping("activity/statistics")
+    public R activityStatistics(@RequestParam("activityId") Long activityId){
+        return comActActivityService.activityStatistics(activityId);
+    }
+
+    /**
+     * 获取活动历史封面  getPictureList
+     * @param userId 用户id
+     * @return    R   统计结果
+     * @author txb
+     * @date 2021/8/27 13:33
+     */
+    @GetMapping("/activity/picture/getList")
+    public R getPictureList(@RequestParam("userId") Long userId){
+        return comActActivityService.getPictureList(userId);
     }
 
     /**
@@ -2130,6 +2383,14 @@
     }
 
     /**
+     * 定时任务针对活动结束后7天还未评价的用户默认好评
+     */
+    @PostMapping("activity/default-praise")
+    public R timedTaskActivityDefaultPraise() {
+        return comActActEvaluateService.timedTaskActivityDefaultPraise();
+    }
+
+    /**
      * 小程序-新增问卷调查浏览数量
      * 
      * @param questId
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComActActEvaluateDAO.java b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComActActEvaluateDAO.java
new file mode 100644
index 0000000..f2885d6
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComActActEvaluateDAO.java
@@ -0,0 +1,31 @@
+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.vos.community.ActivitySignVO;
+import com.panzhihua.common.model.vos.community.ComActActEvaluateExcelVO;
+import com.panzhihua.common.model.vos.community.ComActActEvaluateVO;
+import com.panzhihua.common.model.vos.community.ComActActRegistVO;
+import com.panzhihua.service_community.model.dos.ComActActEvaluateDO;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * title: ComActActEvaluateDAO  社区》活动》活动评价表mapper类
+ * projectName 成都呐喊信息技术有限公司-智慧社区项目
+ * description: 社区》活动》活动评价表mapper类
+ *
+ * @author txb
+ * @date 2021/8/24 10:21
+ */
+@Mapper
+public interface ComActActEvaluateDAO extends BaseMapper<ComActActEvaluateDO> {
+
+    IPage<ComActActEvaluateVO> pageActivityEvaluates(Page page, @Param("comActActEvaluateVO") ComActActEvaluateVO comActActEvaluateVO);
+
+    List<ComActActEvaluateExcelVO> getEvaluateLists(@Param("comActActEvaluateVO") ComActActEvaluateVO comActActEvaluateVO);
+
+}
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComActActPictureDAO.java b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComActActPictureDAO.java
new file mode 100644
index 0000000..c353b6d
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComActActPictureDAO.java
@@ -0,0 +1,18 @@
+package com.panzhihua.service_community.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.panzhihua.service_community.model.dos.ComActActPictureDO;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * title: ComActActPictureDAO  社区》活动》历史上传图片mapper类
+ * projectName 成都呐喊信息技术有限公司-智慧社区项目
+ * description: 社区》活动》历史上传图片mapper类
+ *
+ * @author txb
+ * @date 2021/8/24 10:21
+ */
+@Mapper
+public interface ComActActPictureDAO extends BaseMapper<ComActActPictureDO> {
+
+}
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComActActRegistDAO.java b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComActActRegistDAO.java
new file mode 100644
index 0000000..2b5c44a
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComActActRegistDAO.java
@@ -0,0 +1,32 @@
+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.vos.community.ComActActEvaluateExcelVO;
+import com.panzhihua.common.model.vos.community.ComActActRegistExcelVO;
+import com.panzhihua.common.model.vos.community.ComActActRegistVO;
+import com.panzhihua.service_community.model.dos.ComActActRegistDO;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * title: ComActActRegistDAO  社区》活动》活动签到表mapper类
+ * projectName 成都呐喊信息技术有限公司-智慧社区项目
+ * description: 社区》活动》活动签到表mapper类
+ *
+ * @author txb
+ * @date 2021/8/24 10:21
+ */
+@Mapper
+public interface ComActActRegistDAO extends BaseMapper<ComActActRegistDO> {
+
+
+    IPage<ComActActRegistVO> pageActivityRegists(Page page, @Param("comActActRegistVO") ComActActRegistVO comActActRegistVO);
+
+    List<ComActActRegistExcelVO> getRegistLists(@Param("comActActRegistVO") ComActActRegistVO comActActRegistVO);
+
+    List<ComActActRegistExcelVO> getNoRegistLists(@Param("comActActRegistVO") ComActActRegistVO comActActRegistVO);
+}
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComActActSignDAO.java b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComActActSignDAO.java
index 351155a..3675583 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComActActSignDAO.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComActActSignDAO.java
@@ -3,6 +3,7 @@
 import java.util.List;
 import java.util.Map;
 
+import com.panzhihua.common.model.vos.community.ComActActSignExcelVO;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.annotations.Select;
@@ -26,10 +27,12 @@
     // 居民 党员 志愿者 1 2 3
     @Select("<script> " + "SELECT " + "u.user_id id, " + "u.image_url, " + "u.name, " + "u.nick_name, "
         + "case WHEN u.is_partymember = 1 THEN '党员' WHEN a.is_volunteer = 1 THEN '志愿者' ELSE '居民' END identity, "
-        + "u.phone, " + "a.create_at,  " + "a.is_volunteer  " + "FROM " + "com_act_act_sign a "
+        + "u.phone, " + "u.tags, " + "a.create_at,  " + "a.is_volunteer  " + "FROM " + "com_act_act_sign a "
         + "JOIN sys_user u ON a.user_id = u.user_id  " + "WHERE " + "a.activity_id = #{activitySignVO.activityId}  "
         + "<if test='activitySignVO.phone != null and activitySignVO.phone != &quot;&quot;'>"
         + "AND u.phone = #{activitySignVO.phone}  " + " </if> "
+        + "<if test='activitySignVO.tags != null and activitySignVO.tags != &quot;&quot;'>"
+        + "AND u.tags like concat('%',#{activitySignVO.tags},'%')   " + " </if> "
         + "<if test='activitySignVO.name != null and activitySignVO.name != &quot;&quot;'>"
         + "AND u.`name` = #{activitySignVO.name}  " + " </if> "
         + "<if test='activitySignVO.identity != null and activitySignVO.identity != &quot;&quot; and activitySignVO.identity==1'>"
@@ -58,6 +61,8 @@
         + "AND a.is_volunteer=#{activitySignVO.type}-1   " + " </if> " + " order by a.create_at desc " + "</script>")
     List<ActivitySignVO> listActivitySigns(@Param("activitySignVO") ActivitySignVO activitySignVO);
 
+    List<ComActActSignExcelVO> getSignLists (@Param("activitySignVO") ActivitySignVO activitySignVO);
+
     @Select("<script> " + "SELECT " + " caas.user_id, " + " su.NAME, " + "CASE " + "  WHEN su.is_volunteer = 1 THEN "
         + "  '志愿者' ELSE '居民'  " + " END identity, " + " su.phone, " + " caas.create_at  " + "FROM "
         + " com_act_act_sign AS caas "
@@ -73,4 +78,11 @@
 
     @Select("select openid from sys_user where user_id = #{userId}")
     Map<String, String> getUserOpenId(@Param("userId") Long userId);
+
+    /**
+     * 获取需要默认好评的记录
+     * @param activityIds 活动id list
+     * @return 需要默认好评的记录列表
+     */
+    List<ComActActSignDO> selectNeedEvaluateSignRecords(@Param("activityIds") List<Long> activityIds);
 }
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 02632bb..14e39f5 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
@@ -4,6 +4,7 @@
 import java.util.List;
 import java.util.Map;
 
+import com.panzhihua.common.model.vos.community.ComActActivityStatisticsVO;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.annotations.Select;
@@ -193,4 +194,13 @@
         + "FROM " + " com_act_act_sign AS caas " + " LEFT JOIN sys_user AS su ON su.user_id = caas.user_id  " + "WHERE "
         + " su.is_volunteer = 1  " + " AND activity_id = #{activityId} ")
     ActActivityListVO getScreenActActivityPeopleCount(@Param("activityId") Long activityId);
+
+    ComActActivityStatisticsVO activityStatistics (@Param("activityId") Long activityId);
+
+    /**
+     * 查询置于顶部的进行中活动
+     * @param communityId 社区id
+     * @return 活动列表
+     */
+    List<ComActActivityVO> getIndexTopActivityList(@Param("communityId") Long communityId);
 }
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComActReserveAnswerContentMapper.java b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComActReserveAnswerContentMapper.java
new file mode 100644
index 0000000..28c5dbb
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComActReserveAnswerContentMapper.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.reserve.PageReserveRegisterDetailedAdminDTO;
+import com.panzhihua.common.model.vos.community.reserve.ComActReserveRegisterDetailedAnswerVO;
+import com.panzhihua.common.model.vos.community.reserve.ComActReserveRegisterDetailedVO;
+import com.panzhihua.service_community.model.dos.ComActReserveAnswerContentDO;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * @auther lyq
+ * @create 2021-08-23 10:33:32
+ * @describe 预约登记回答记录内容 mapper类
+ */
+@Mapper
+public interface ComActReserveAnswerContentMapper extends BaseMapper<ComActReserveAnswerContentDO> {
+
+    /**
+     * 查询用户填写登记类答案记录列表
+     * @param reserveId 预约登记id
+     * @return  登记类答案记录列表
+     */
+    List<ComActReserveAnswerContentDO> selectListByReserve(@Param("reserveId")Long reserveId);
+
+    /**
+     * 分页查询用户填写某预约登记记录列表
+     * @param page  分页参数
+     * @param detailedAdminDTO  请求参数
+     * @return  某预约登记记录列表
+     */
+    IPage<ComActReserveRegisterDetailedVO> pageRegisterDetailedListAdmin(Page page, @Param("detailedAdminDTO") PageReserveRegisterDetailedAdminDTO detailedAdminDTO);
+
+    /**
+     * 查询登记记录填写的内容列表
+     * @param reserveRecordId   预约登记记录id
+     * @return  登记记录填写的内容列表
+     */
+    List<ComActReserveRegisterDetailedAnswerVO> getRegisterDetailedAnswerList(@Param("reserveRecordId")Long reserveRecordId);
+
+    ComActReserveRegisterDetailedVO getRegisterDetailedById(@Param("reserveRecordId") Long reserveRecordId);
+
+}
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComActReserveMapper.java b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComActReserveMapper.java
new file mode 100644
index 0000000..ea387bc
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComActReserveMapper.java
@@ -0,0 +1,85 @@
+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.reserve.ComActReserveMakeStatisticsDTO;
+import com.panzhihua.common.model.dtos.community.reserve.PageReserveAdminDTO;
+import com.panzhihua.common.model.vos.community.reserve.ComActReserveListAdminVO;
+import com.panzhihua.common.model.vos.community.reserve.ComActReserveMakeLeftStatisticsAdminVO;
+import com.panzhihua.common.model.vos.community.reserve.ComActReserveMakeRightStatisticsAdminVO;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.panzhihua.common.model.dtos.community.PageUserReserveDTO;
+import com.panzhihua.common.model.vos.community.ComActReserveIndexVo;
+import com.panzhihua.service_community.model.dos.ComActReserveDO;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * @auther lyq
+ * @create 2021-08-23 10:33:11
+ * @describe 预约登记表mapper类
+ */
+@Mapper
+public interface ComActReserveMapper extends BaseMapper<ComActReserveDO> {
+    /**
+     * 查询预约登记首页banner
+     * @param communityId
+     * @return 预约登记首页banner列表
+     */
+    List<ComActReserveIndexVo> indexBanner(Long communityId);
+    /**
+     * 查询预约登记应用列表
+     * @param communityId
+     * @return 预约登记应用列表
+     */
+    List<ComActReserveIndexVo> indexApplication(Long communityId);
+
+    /**
+     * 社区后台-分页查询预约登记列表
+     * @param pageReserveDTO    请求参数
+     * @return  预约登记列表
+     */
+    IPage<ComActReserveListAdminVO> pageReserveAdmin(Page page, @Param("pageReserveDTO") PageReserveAdminDTO pageReserveDTO);
+
+    /**
+     * 根据预约登记id删除预约登记原有题目以及题目选项
+     * @param reserveId 预约登记id
+     */
+    void deleteReserveSubAll(@Param("reserveId") Long reserveId);
+
+    /**
+     * 社区后台-根据社区id查询预约统计汇总左边数据
+     * @param communityId   社区id
+     * @return  预约统计汇总左边数据
+     */
+    List<ComActReserveMakeLeftStatisticsAdminVO> getReserveMakeLeftStatistics(@Param("communityId") Long communityId);
+
+    /**
+     * 社区后台-查询预约统计汇总右边数据
+     * @param makeStatisticsDTO   请求参数
+     * @return  预约统计汇总右边数据
+     */
+    List<ComActReserveMakeRightStatisticsAdminVO> getReserveMakeRightStatistics(@Param("makeStatisticsDTO") ComActReserveMakeStatisticsDTO makeStatisticsDTO);
+
+    /**
+     * 社区后台-根据社区id 查询开始时间到结束时间预约成功数量
+     * @param communityId   社区id
+     * @param startTime 开始时间
+     * @param endTime   结束时间
+     * @return  预约成功数量
+     */
+    Integer getReserveRecordCount(@Param("communityId") Long communityId,@Param("startTime") String startTime,@Param("endTime") String endTime);
+
+    /**
+     * 查询社区所有预约信息列表
+     * @param communityId   社区id
+     * @return  预约信息列表
+     */
+    List<ComActReserveListAdminVO> listReserveAdmin(@Param("communityId") Long communityId);
+
+
+}
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComActReserveOperationRecordMapper.java b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComActReserveOperationRecordMapper.java
new file mode 100644
index 0000000..cf4e3d7
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComActReserveOperationRecordMapper.java
@@ -0,0 +1,26 @@
+package com.panzhihua.service_community.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.panzhihua.common.model.vos.community.reserve.ComActReserveMakeOperationAdminVO;
+import com.panzhihua.service_community.model.dos.ComActReserveOperationRecordDO;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * @auther lyq
+ * @create 2021-08-23 10:33:42
+ * @describe 预约登记操作记录表mapper类
+ */
+@Mapper
+public interface ComActReserveOperationRecordMapper extends BaseMapper<ComActReserveOperationRecordDO> {
+
+    /**
+     * 根据预约记录id查询预约明细操作记录
+     * @param reserveRecordId   预约记录id
+     * @return  预约明细操作记录
+     */
+    List<ComActReserveMakeOperationAdminVO> getMakeOperationList(@Param("reserveRecordId") Long reserveRecordId);
+
+}
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComActReserveRecordMapper.java b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComActReserveRecordMapper.java
new file mode 100644
index 0000000..c9378d4
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComActReserveRecordMapper.java
@@ -0,0 +1,108 @@
+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.OperationDetailDTO;
+import com.panzhihua.common.model.dtos.community.reserve.ComActReserveRegisterStatisticsDTO;
+import com.panzhihua.common.model.dtos.community.reserve.PageReserveMakeAdminDTO;
+import com.panzhihua.common.model.dtos.community.reserve.PageReserveMakeHandleAdminDTO;
+import com.panzhihua.common.model.vos.community.reserve.*;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.panzhihua.common.model.dtos.community.PageUserReserveDTO;
+import com.panzhihua.service_community.model.dos.ComActReserveDO;
+import com.panzhihua.service_community.model.dos.ComActReserveRecordDO;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * @auther lyq
+ * @create 2021-08-23 10:33:53
+ * @describe 预约登记记录表mapper类
+ */
+@Mapper
+public interface ComActReserveRecordMapper extends BaseMapper<ComActReserveRecordDO> {
+    IPage<ComActReserveRecordDO> pageReserveList(Page page, @Param("pageUserReserveDTO") PageUserReserveDTO pageUserReserveDTO);
+
+    /**
+     * 社区后台-根据预约id查询预约明细
+     * @param pageMakeDTO   请求参数
+     * @return  预约明细
+     */
+    IPage<ComActReserveMakeListAdminVO> pageMakeAdmin(Page page, @Param("pageMakeDTO") PageReserveMakeAdminDTO pageMakeDTO);
+
+    /**
+     * 根据预约记录id查询预约记录详细信息
+     * @param reserveRecordId   预约记录id
+     * @return  预约记录详细信息
+     */
+    ComActReserveMakeDetailAdminVO getMakeDetailAdmin(@Param("reserveRecordId") Long reserveRecordId);
+
+    /**
+     * 查询预约记录id集合中是否存在未预约成功的记录
+     * @param ids   预约记录id集合
+     * @return  未预约成功记录的数量
+     */
+    Integer getReserveStatusById(@Param("ids") List<Long> ids);
+
+    /**
+     * 修改预约记录id集合的预约状态为已取消
+     * @param ids   预约记录id集合
+     * @return  修改结果
+     */
+    Integer editReserveStatusById(@Param("ids") List<Long> ids);
+
+    /**
+     * 预约明细导出数据查询
+     * @param pageMakeDTO   请求参数
+     * @return  预约明细数据
+     */
+    List<ComActReserveMakeListAdminVO> exportMakeAdmin(@Param("pageMakeDTO") PageReserveMakeAdminDTO pageMakeDTO);
+
+    /**
+     * 分页查询登记统计汇总
+     * @param registerStatisticsDTO 请求参数
+     * @return  登记统计汇总
+     */
+    IPage<ComActReserveRegisterStatisticsAdminVO> registerStatisticsAdmin(Page page, @Param("registerStatisticsDTO") ComActReserveRegisterStatisticsDTO registerStatisticsDTO);
+
+    /**
+     * 导出登记统计汇总
+     * @param registerStatisticsDTO 请求参数
+     * @return  登记统计汇总
+     */
+    List<ComActReserveRegisterStatisticsAdminVO> registerStatisticsExportAdmin(@Param("registerStatisticsDTO") ComActReserveRegisterStatisticsDTO registerStatisticsDTO);
+
+    /**
+     * 分页查询预约处理列表
+     * @param pageMakeHandleDTO 请求参数
+     * @return  预约处理列表
+     */
+    IPage<ComActReserveMakeHandleListAdminVO> pageMakeHandleAdmin(Page page, @Param("pageMakeHandleDTO") PageReserveMakeHandleAdminDTO pageMakeHandleDTO);
+
+    /**
+     * 查询指定预约记录是否存在不是待处理状态的数据
+     * @param ids   预约记录id集合
+     * @return  不是待处理状态数据条数
+     */
+    Integer getReserveListCountByIds(@Param("ids")List<Long> ids);
+
+    /**
+     * 导出预约处理列表数据查询
+     * @param pageMakeHandleDTO 请求参数
+     * @return  预约处理列表
+     */
+    List<ComActReserveMakeHandleListAdminVO> exportMakeHandleAdmin(@Param("pageMakeHandleDTO") PageReserveMakeHandleAdminDTO pageMakeHandleDTO);
+
+    ComActReserveRegisterDetailedVO getRegisterDetailedByRecordId(@Param("reserveRecordId") Long reserveRecordId);
+
+    /**
+     * 根据reserveRecordId查询操作记录
+     * @param operationDetailDTO
+     * @return
+     */
+    List<ComOperationListVO> queryAll(OperationDetailDTO operationDetailDTO);
+}
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComActReserveSubMapper.java b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComActReserveSubMapper.java
new file mode 100644
index 0000000..3cf1a03
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComActReserveSubMapper.java
@@ -0,0 +1,29 @@
+package com.panzhihua.service_community.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.panzhihua.common.model.vos.community.reserve.ComActReserveSubListVO;
+import com.panzhihua.service_community.model.dos.ComActReserveAnswerContentDO;
+import com.panzhihua.service_community.model.dos.ComActReserveSubDO;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * @auther lyq
+ * @create 2021-08-23 10:34:03
+ * @describe 预约登记题目选项mapper类
+ */
+@Mapper
+public interface ComActReserveSubMapper extends BaseMapper<ComActReserveSubDO> {
+
+    /**
+     * 根据预约登记id查询题目列表
+     * @param reserveId 预约登记id
+     * @return  题目列表
+     */
+    List<ComActReserveSubListVO> getReserveSubjectList(@Param("reserveId") Long reserveId);
+
+
+
+}
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComActReserveSubSelectionMapper.java b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComActReserveSubSelectionMapper.java
new file mode 100644
index 0000000..c99dadd
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComActReserveSubSelectionMapper.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.ComActReserveSubSelectionDO;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * @auther lyq
+ * @create 2021-08-23 10:34:13
+ * @describe 预约登记题目选项 mapper类
+ */
+@Mapper
+public interface ComActReserveSubSelectionMapper extends BaseMapper<ComActReserveSubSelectionDO> {
+
+}
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/model/dos/ComActActEvaluateDO.java b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/model/dos/ComActActEvaluateDO.java
new file mode 100644
index 0000000..1d02ada
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/model/dos/ComActActEvaluateDO.java
@@ -0,0 +1,80 @@
+package com.panzhihua.service_community.model.dos;
+
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+
+/**
+ * title: ComActActEvaluateDO  社区活动评价表
+ * projectName 成都呐喊信息技术有限公司-智慧社区项目
+ * description: 记录和展示社区活动评价内容
+ *
+ * @author txb
+ * @date 2021/8/24 10:21
+ */
+
+@Data
+@TableName("com_act_act_evaluate")
+public class ComActActEvaluateDO implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+    * 自增id
+    */
+    @TableId(type = IdType.INPUT)
+    private Long id;
+
+    /**
+    * 所属活动id
+    */
+    private Long activityId;
+
+    /**
+    * 用户id, 和用户信息表的相关id关联
+    */
+    private Long userId;
+
+    /**
+    * 评价时间
+    */
+    @TableField(fill = FieldFill.INSERT)
+    private Date createAt;
+
+    /**
+    * 是否是志愿者 0 否 1 是
+    */
+    private Integer isVolunteer;
+
+    /**
+    * 评分星级1.差 2.一般 3.还不错 4.很满意 5.强烈推荐
+    */
+    private Integer starLevel;
+
+    /**
+    * 评价内容
+    */
+    private String evaluateContent;
+
+    /**
+    * 照片(多张以逗号隔开)
+    */
+    private String photo;
+
+@Override
+public String toString() {
+        return "ComActActEvaluateDO{" +
+                "id=" + id +
+                ", activityId=" + activityId +
+                ", userId=" + userId +
+                ", createAt=" + createAt +
+                ", isVolunteer=" + isVolunteer +
+                ", starLevel=" + starLevel +
+                ", evaluateContent=" + evaluateContent +
+                ", photo=" + photo +
+        "}";
+        }
+}
\ No newline at end of file
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/model/dos/ComActActPictureDO.java b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/model/dos/ComActActPictureDO.java
new file mode 100644
index 0000000..d77e68b
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/model/dos/ComActActPictureDO.java
@@ -0,0 +1,67 @@
+package com.panzhihua.service_community.model.dos;
+
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * title: ComActActPictureDO  社区》活动》历史上传图片实体类
+ * projectName 成都呐喊信息技术有限公司-智慧社区项目
+ * description: 社区》活动》历史上传图片实体类
+ *
+ * @author txb
+ * @date 2021/8/27 14:21
+ */
+
+@Data
+@TableName("com_act_act_picture")
+public class ComActActPictureDO implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+    * 主键id
+    */
+    @TableId(type = IdType.AUTO)
+    private Long id;
+
+    /**
+    * 所属活动id
+    */
+    private Long activityId;
+
+    /**
+    * 用户id, 和用户信息表的相关id关联
+    */
+    private Long userId;
+
+    /**
+    * 上传时间
+    */
+    @TableField(fill = FieldFill.INSERT)
+    private Date createAt;
+
+    /**
+    * 上传图片
+    */
+    private String uploadPicture;
+
+    /**
+    * 图片名称
+    */
+    private String pictureName;
+
+@Override
+public String toString() {
+        return "ComActActPictureDO{" +
+                "id=" + id +
+                ", activityId=" + activityId +
+                ", userId=" + userId +
+                ", createAt=" + createAt +
+                ", uploadPicture=" + uploadPicture +
+                ", pictureName=" + pictureName +
+        "}";
+        }
+}
\ No newline at end of file
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/model/dos/ComActActRegistDO.java b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/model/dos/ComActActRegistDO.java
new file mode 100644
index 0000000..f10f9c9
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/model/dos/ComActActRegistDO.java
@@ -0,0 +1,61 @@
+package com.panzhihua.service_community.model.dos;
+
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * title: ComActActRegistDO  社区》活动》活动签到表实体类
+ * projectName 成都呐喊信息技术有限公司-智慧社区项目
+ * description: 社区》活动》活动签到表实体类
+ *
+ * @author txb
+ * @date 2021/8/24 10:21
+ */
+
+@Data
+@TableName("com_act_act_regist")
+public class ComActActRegistDO implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+    * 自增id
+    */
+    @TableId(type = IdType.INPUT)
+    private Long id;
+
+    /**
+    * 所属活动id
+    */
+    private Long activityId;
+
+    /**
+    * 用户id, 和用户信息表的相关id关联
+    */
+    private Long userId;
+
+    /**
+    * 签到时间
+    */
+    @TableField(fill = FieldFill.INSERT)
+    private Date createAt;
+
+    /**
+    * 是否是志愿者 0 否 1 是
+    */
+    private Integer isVolunteer;
+
+@Override
+public String toString() {
+        return "ComActActRegistDO{" +
+                "id=" + id +
+                ", activityId=" + activityId +
+                ", userId=" + userId +
+                ", createAt=" + createAt +
+                ", isVolunteer=" + isVolunteer +
+        "}";
+        }
+}
\ No newline at end of file
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/model/dos/ComActActivityDO.java b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/model/dos/ComActActivityDO.java
index 54cec63..b67cd4b 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/model/dos/ComActActivityDO.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/model/dos/ComActActivityDO.java
@@ -5,6 +5,7 @@
 
 import com.baomidou.mybatisplus.annotation.*;
 
+import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
 /**
@@ -40,6 +41,16 @@
     private String activityAddr;
 
     /**
+     * 纬度
+     */
+    private String lat;
+
+    /**
+     * 经度
+     */
+    private String lng;
+
+    /**
      * 活动状态
      */
     private Integer status;
@@ -68,6 +79,12 @@
      * 报名结束时间
      */
     private Date signUpEnd;
+
+    /**
+     * 参加人群
+     */
+    private String aattendPeople;
+
 
     /**
      * 志愿者人数下线
@@ -100,6 +117,31 @@
     private Integer hasPrize;
 
     /**
+     * 是否二维码签到 1 是 0否
+     */
+    private Integer isQrCode;
+
+    /**
+     * 联系人姓名
+     */
+    private String contactName;
+
+    /**
+     * 联系人电话
+     */
+    private String contactPhone;
+
+    /**
+     * 是否签到 1 是 0否
+     */
+    private Integer isRegist;
+
+    /**
+     * 是否顶部 1 是 0否
+     */
+    private Integer isTop;
+
+    /**
      * 奖品备注
      */
     private String prizeRemark;
@@ -124,4 +166,8 @@
      * 社区id
      */
     private Long communityId;
+    /**
+     * 活动是否已默认好评
+     */
+    private Integer isDefaultPraise;
 }
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/model/dos/ComActQuestnaireSubDO.java b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/model/dos/ComActQuestnaireSubDO.java
index 44da3bc..d1177cf 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/model/dos/ComActQuestnaireSubDO.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/model/dos/ComActQuestnaireSubDO.java
@@ -20,7 +20,7 @@
     @TableId(type = IdType.AUTO)
     private Long id;
     /**
-     * 类型 0单选1多选2问答题
+     * 类型 0 单选  1 多选 2 输入框 2姓名输入框 3 手机号 4 身份证 5 文字描述 6 日期选择
      */
     private int type;
     /**
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/model/dos/ComActReserveAnswerContentDO.java b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/model/dos/ComActReserveAnswerContentDO.java
new file mode 100644
index 0000000..bb7adf1
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/model/dos/ComActReserveAnswerContentDO.java
@@ -0,0 +1,101 @@
+package com.panzhihua.service_community.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;
+
+
+/**
+ * @auther lyq
+ * @create 2021-08-23 10:33:32
+ * @describe 预约登记回答记录内容 实体类
+ */
+
+@Data
+@TableName("com_act_reserve_answer_content")
+public class ComActReserveAnswerContentDO implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * id
+     */
+    @TableId(type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 预约登记题目id
+     */
+    private Long reserveSubId;
+
+    /**
+     * 预约登记记录id
+     */
+    private Long reserveRecordId;
+
+    /**
+     * 预约登记题目选项id
+     */
+    private Long reserveSelectionId;
+
+    /**
+     * 用户id
+     */
+    private Long userId;
+
+    /**
+     * 题目类型(1.选项题 2.问答题)
+     */
+    private Integer type;
+
+    /**
+     * 问卷回答选项
+     */
+    private String choice;
+
+    /**
+     * 问卷回答内容
+     */
+    private String answerContent;
+
+    /**
+     * 创建人
+     */
+    private Long createBy;
+
+    /**
+     * 创建时间
+     */
+    private Date createAt;
+
+    /**
+     * 更新人
+     */
+    private String updateBy;
+
+    /**
+     * 更新时间
+     */
+    private Date updateAt;
+
+    @Override
+    public String toString() {
+        return "ComActReserveAnswerContentDO{" +
+                "id=" + id +
+                ", reserveSubId=" + reserveSubId +
+                ", reserveSelectionId=" + reserveSelectionId +
+                ", userId=" + userId +
+                ", type=" + type +
+                ", choice=" + choice +
+                ", answerContent=" + answerContent +
+                ", createBy=" + createBy +
+                ", createAt=" + createAt +
+                ", updateBy=" + updateBy +
+                ", updateAt=" + updateAt +
+                "}";
+    }
+}
\ No newline at end of file
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/model/dos/ComActReserveDO.java b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/model/dos/ComActReserveDO.java
new file mode 100644
index 0000000..25529f3
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/model/dos/ComActReserveDO.java
@@ -0,0 +1,180 @@
+package com.panzhihua.service_community.model.dos;
+
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+
+/**
+ * @auther lyq
+ * @create 2021-08-23 10:33:11
+ * @describe 预约登记表实体类
+ */
+
+@Data
+@TableName("com_act_reserve")
+public class ComActReserveDO implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键id
+     */
+    @TableId(type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 社区id
+     */
+    private Long communityId;
+
+    /**
+     * 类型(1.预约 2.登记)
+     */
+    private Integer type;
+
+    /**
+     * 主题
+     */
+    private String title;
+
+    /**
+     * 浏览量
+     */
+    private Integer viewNum;
+
+    /**
+     * 总参加人数
+     */
+    private Integer joinAllCount;
+
+    /**
+     * 参加人数
+     */
+    private Integer joinCount;
+
+    /**
+     * 图标类型(1.预设1 2.预设2 3.预设3 4.预设4 5.用户自定义图片)
+     */
+    private Integer imgType;
+
+    /**
+     * 图标url(当img_type为5时,此字段的值为图标url地址)
+     */
+    private String imgUrl;
+
+    /**
+     * 状态(1.待发布 2.进行中 3.已停止)
+     */
+    private Integer status;
+
+    /**
+     * 发布时间
+     */
+    private Date publishTime;
+
+    /**
+     * 是否可重复提交(1.是 2.否)
+     */
+    private Integer isRepeat;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+    /**
+     * 组件json数据
+     */
+    private String jsonObject;
+
+    /**
+     * 是否是首页顶部(1.是 2.否)
+     */
+    private Integer adverPositionTop;
+
+    /**
+     * 是否是首页应用(1.是 2.否)
+     */
+    private Integer adverPositionApplication;
+
+    /**
+     * 创建时间
+     */
+    private Date createAt;
+
+    /**
+     * 创建人
+     */
+    private Long createBy;
+
+    /**
+     * 修改时间
+     */
+    private Date updateAt;
+
+    /**
+     * 修改人
+     */
+    private Long updateBy;
+
+    /**
+     * 结束时间
+     */
+    @TableField(value = "end_time", updateStrategy  = FieldStrategy.IGNORED)
+    private Date endTime;
+
+    /**
+     * 是否已删除(1.是 2.否)
+     */
+    private Integer isDel;
+
+    /**
+     * 默认是否枚举(1.是 2.否)
+     */
+    public interface isOk{
+        int yes = 1;
+        int no = 2;
+    }
+
+    /**
+     * 预约登记状态枚举(1.待发布 2.进行中 3.已停止)
+     */
+    public interface status{
+        int dfb = 1;
+        int jxz = 2;
+        int ytz = 3;
+    }
+
+    @Override
+    public String toString() {
+        return "ComActReserveDO{" +
+                "id=" + id +
+                ", communityId=" + communityId +
+                ", type=" + type +
+                ", title=" + title +
+                ", viewNum=" + viewNum +
+                ", joinAllCount=" + joinAllCount +
+                ", joinCount=" + joinCount +
+                ", imgType=" + imgType +
+                ", imgUrl=" + imgUrl +
+                ", status=" + status +
+                ", publishTime=" + publishTime +
+                ", isRepeat=" + isRepeat +
+                ", remark=" + remark +
+                ", jsonObject=" + jsonObject +
+                ", adverPositionTop=" + adverPositionTop +
+                ", adverPositionApplication=" + adverPositionApplication +
+                ", createAt=" + createAt +
+                ", createBy=" + createBy +
+                ", updateAt=" + updateAt +
+                ", updateBy=" + updateBy +
+                "}";
+    }
+    public interface isRepeat{
+        int yes=1;
+        int no=2;
+    }
+}
\ No newline at end of file
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/model/dos/ComActReserveOperationRecordDO.java b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/model/dos/ComActReserveOperationRecordDO.java
new file mode 100644
index 0000000..1e3dcb0
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/model/dos/ComActReserveOperationRecordDO.java
@@ -0,0 +1,123 @@
+package com.panzhihua.service_community.model.dos;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+
+/**
+ * @auther lyq
+ * @create 2021-08-23 10:33:42
+ * @describe 预约登记操作记录表实体类
+ */
+
+@Data
+@TableName("com_act_reserve_operation_record")
+public class ComActReserveOperationRecordDO implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键id
+     */
+    @TableId(type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 预约登记id
+     */
+    private Long reserveId;
+
+    /**
+     * 预约登记记录id
+     */
+    private Long reserveRecordId;
+
+    /**
+     * 用户id
+     */
+    private Long userId;
+
+    /**
+     * 类型(1.本人操作 2.社区操作)
+     */
+    private Integer type;
+
+    /**
+     * 操作人手机号
+     */
+    private String phone;
+
+    /**
+     * 操作时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date reserveTime;
+
+    /**
+     * 操作内容
+     */
+    private String reserveContent;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+    /**
+     * 状态(1.提交 2.预约成功 3.预约失败 4.取消)
+     */
+    private Integer status;
+
+    /**
+     * 创建时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date createAt;
+
+    /**
+     * 创建人
+     */
+    private Long createBy;
+
+    @Override
+    public String toString() {
+        return "ComActReserveOperationRecordDO{" +
+                "id=" + id +
+                ", reserveId=" + reserveId +
+                ", reserveRecordId=" + reserveRecordId +
+                ", userId=" + userId +
+                ", type=" + type +
+                ", phone=" + phone +
+                ", reserveTime=" + reserveTime +
+                ", reserveContent=" + reserveContent +
+                ", remark=" + remark +
+                ", status=" + status +
+                ", createAt=" + createAt +
+                ", createBy=" + createBy +
+                "}";
+    }
+
+    /**
+     * 1本人 2社区
+     */
+    public interface type{
+        int br=1;
+        int sq=2;
+    }
+    /**
+     * 状态(1.提交 2.预约成功 3.预约失败 4.取消)
+     */
+    public interface status{
+        int ytj=1;
+        int cg=2;
+        int sb=3;
+        int qx=4;
+    }
+
+}
\ No newline at end of file
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/model/dos/ComActReserveRecordDO.java b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/model/dos/ComActReserveRecordDO.java
new file mode 100644
index 0000000..f1e295f
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/model/dos/ComActReserveRecordDO.java
@@ -0,0 +1,152 @@
+package com.panzhihua.service_community.model.dos;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+
+/**
+ * @auther lyq
+ * @create 2021-08-23 10:33:53
+ * @describe 预约登记记录表实体类
+ */
+
+@Data
+@TableName("com_act_reserve_record")
+public class ComActReserveRecordDO implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键id
+     */
+    @TableId(type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 用户id
+     */
+    private Long userId;
+
+    /**
+     * 预约登记id
+     */
+    private Long reserveId;
+
+    /**
+     * 社区id
+     */
+    private Long communityId;
+
+    /**
+     * 类型(1.预约 2.登记)
+     */
+    private Integer type;
+
+    /**
+     * 提交人名称
+     */
+    private String name;
+
+    /**
+     * 提交人手机号
+     */
+    private String phone;
+
+    /**
+     * 状态(1.待处理 2.预约成功 3.预约失败 4.已取消)
+     */
+    private Integer status;
+
+    /**
+     * 内容
+     */
+    private String content;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+    /**
+     * 社区备注
+     */
+    private String actRemark;
+
+    /**
+     * 预约时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date reserveTime;
+
+    /**
+     * 用户填报json数据
+     */
+    private String jsonObject;
+
+    /**
+     * 创建时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date createAt;
+
+    /**
+     * 创建人
+     */
+    private Long createBy;
+
+    /**
+     * 修改时间
+     */
+    private Date updateAt;
+
+    /**
+     * 修改人
+     */
+    private Long updateBy;
+
+    @Override
+    public String toString() {
+        return "ComActReserveRecordDO{" +
+                "id=" + id +
+                ", userId=" + userId +
+                ", reserveId=" + reserveId +
+                ", communityId=" + communityId +
+                ", type=" + type +
+                ", name=" + name +
+                ", phone=" + phone +
+                ", status=" + status +
+                ", content=" + content +
+                ", remark=" + remark +
+                ", actRemark=" + actRemark +
+                ", reserveTime=" + reserveTime +
+                ", jsonObject=" + jsonObject +
+                ", createAt=" + createAt +
+                ", createBy=" + createBy +
+                ", updateAt=" + updateAt +
+                ", updateBy=" + updateBy +
+                "}";
+    }
+
+    /**
+     * 状态(1.待处理 2.预约成功 3.预约失败 4.已取消)
+     */
+    public interface status{
+        int dcl = 1;
+        int cg = 2;
+        int sb = 3;
+        int yqx = 4;
+    }
+    /**
+     * 类型(1.预约 2.登记)
+     */
+    public interface type{
+        int yy=1;
+        int dj=2;
+    }
+}
\ No newline at end of file
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/model/dos/ComActReserveSubDO.java b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/model/dos/ComActReserveSubDO.java
new file mode 100644
index 0000000..85018fb
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/model/dos/ComActReserveSubDO.java
@@ -0,0 +1,92 @@
+package com.panzhihua.service_community.model.dos;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+
+/**
+ * @auther lyq
+ * @create 2021-08-23 10:34:03
+ * @describe 预约登记题目选项实体类
+ */
+
+@Data
+@TableName("com_act_reserve_sub")
+public class ComActReserveSubDO implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * id
+     */
+    @TableId(type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 预约登记id
+     */
+    private Long reserveId;
+
+    /**
+     * 序号
+     */
+    private Integer sort;
+
+    /**
+     * 类型 0 单选  1 多选 2 输入框 2姓名输入框 3 手机号 4 身份证 5 文字描述 6 日期选择
+     */
+    private Integer type;
+
+    /**
+     * 问卷调查题目key
+     */
+    @TableField("`key`")
+    private String key;
+
+    /**
+     * 题目内容
+     */
+    private String content;
+
+    /**
+     * 创建人
+     */
+    private Long createBy;
+
+    /**
+     * 创建时间
+     */
+    private Date createAt;
+
+    /**
+     * 更新人
+     */
+    private Long updateBy;
+
+    /**
+     * 更新时间
+     */
+    private Date updateAt;
+
+    @Override
+    public String toString() {
+        return "ComActReserveSubDO{" +
+                "id=" + id +
+                ", reserveId=" + reserveId +
+                ", sort=" + sort +
+                ", type=" + type +
+                ", key=" + key +
+                ", content=" + content +
+                ", createBy=" + createBy +
+                ", createAt=" + createAt +
+                ", updateBy=" + updateBy +
+                ", updateAt=" + updateAt +
+                "}";
+    }
+}
\ No newline at end of file
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/model/dos/ComActReserveSubSelectionDO.java b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/model/dos/ComActReserveSubSelectionDO.java
new file mode 100644
index 0000000..dacedce
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/model/dos/ComActReserveSubSelectionDO.java
@@ -0,0 +1,104 @@
+package com.panzhihua.service_community.model.dos;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+
+/**
+ * @auther lyq
+ * @create 2021-08-23 10:34:13
+ * @describe 预约登记题目选项 实体类
+ */
+
+@Data
+@TableName("com_act_reserve_sub_selection")
+public class ComActReserveSubSelectionDO implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * id
+     */
+    @TableId(type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 预约登记id
+     */
+    private Long reserveId;
+
+    /**
+     * 预约登记题目id
+     */
+    private Long reserveSubId;
+
+    /**
+     * 预约登记选项key
+     */
+    @TableField("`key`")
+    private String key;
+
+    /**
+     * 选项类型 0 固定选项 1 自定义选项
+     */
+    private Integer type;
+
+    /**
+     * 排序
+     */
+    private Integer sort;
+
+    /**
+     * 选项名
+     */
+    private String optionName;
+
+    /**
+     * 选项内容
+     */
+    private String content;
+
+    /**
+     * 创建时间
+     */
+    private Date createAt;
+
+    /**
+     * 创建人
+     */
+    private Long createBy;
+
+    /**
+     * 更新时间
+     */
+    private Date updateAt;
+
+    /**
+     * 更新人
+     */
+    private Long updateBy;
+
+    @Override
+    public String toString() {
+        return "ComActReserveSubSelectionDO{" +
+                "id=" + id +
+                ", reserveId=" + reserveId +
+                ", reserveSubId=" + reserveSubId +
+                ", key=" + key +
+                ", type=" + type +
+                ", sort=" + sort +
+                ", optionName=" + optionName +
+                ", content=" + content +
+                ", 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/ComSwDangerReportDO.java b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/model/dos/ComSwDangerReportDO.java
index 8d90c6b..487cdfa 100644
--- 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
@@ -22,7 +22,7 @@
     /**
      * 主键id
      */
-    @TableId(type = IdType.INPUT)
+    @TableId(value = "id",type = IdType.INPUT)
     private Long id;
 
     /**
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/ComActActEvaluateService.java b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/ComActActEvaluateService.java
new file mode 100644
index 0000000..06e5cee
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/ComActActEvaluateService.java
@@ -0,0 +1,38 @@
+package com.panzhihua.service_community.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.panzhihua.common.model.vos.R;
+import com.panzhihua.common.model.vos.community.ComActActEvaluateVO;
+import com.panzhihua.service_community.model.dos.ComActActEvaluateDO;
+/**
+ * title: ComActActEvaluateService  社区》活动》活动评价表服务类
+ * projectName 成都呐喊信息技术有限公司-智慧社区项目
+ * description: 社区》活动》活动评价表服务类
+ *
+ * @author txb
+ * @date 2021/8/24 10:21
+ */
+public interface ComActActEvaluateService extends IService<ComActActEvaluateDO> {
+
+    /**
+     * 社区活动评价功能
+     *
+     * @param comActActEvaluateVO 社区评价VO
+     * @return 评价结果
+     */
+    R activityEvaluate(ComActActEvaluateVO comActActEvaluateVO);
+
+    /**
+     * 定时任务针对活动结束后7天还未评价的用户默认好评
+     * @return 执行结果
+     */
+    R timedTaskActivityDefaultPraise();
+
+    /**
+     * 用户评价列表
+     *
+     * @param userId 用户id
+     * @return 当前用户对所有活动的评价列表
+     */
+    R listEvaluate(Long userId);
+}
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/ComActActPictureService.java b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/ComActActPictureService.java
new file mode 100644
index 0000000..26f8fec
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/ComActActPictureService.java
@@ -0,0 +1,16 @@
+package com.panzhihua.service_community.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.panzhihua.service_community.model.dos.ComActActPictureDO;
+
+/**
+ * title: ComActActPictureService  社区》活动》历史上传图片服务类
+ * projectName 成都呐喊信息技术有限公司-智慧社区项目
+ * description: 社区》活动》历史上传图片服务类
+ *
+ * @author txb
+ * @date 2021/8/24 10:21
+ */
+public interface ComActActPictureService extends IService<ComActActPictureDO> {
+
+}
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/ComActActRegistService.java b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/ComActActRegistService.java
new file mode 100644
index 0000000..3cbcfeb
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/ComActActRegistService.java
@@ -0,0 +1,16 @@
+package com.panzhihua.service_community.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.panzhihua.service_community.model.dos.ComActActRegistDO;
+
+/**
+ * title: ComActActRegistService  社区》活动》活动签到表服务类
+ * projectName 成都呐喊信息技术有限公司-智慧社区项目
+ * description: 社区》活动》活动签到表服务类
+ *
+ * @author txb
+ * @date 2021/8/24 10:21
+ */
+public interface ComActActRegistService extends IService<ComActActRegistDO> {
+
+}
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/ComActActivityService.java b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/ComActActivityService.java
index 90a0739..d413ccc 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/ComActActivityService.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/ComActActivityService.java
@@ -6,10 +6,12 @@
 import com.panzhihua.common.model.dtos.community.bigscreen.work.ScreenActActivityListDTO;
 import com.panzhihua.common.model.dtos.community.bigscreen.work.ScreenActActivityPeopleListDTO;
 import com.panzhihua.common.model.vos.R;
-import com.panzhihua.common.model.vos.community.ActivitySignVO;
-import com.panzhihua.common.model.vos.community.ComActActivityVO;
-import com.panzhihua.common.model.vos.community.SignactivityVO;
+import com.panzhihua.common.model.vos.community.*;
 import com.panzhihua.service_community.model.dos.ComActActivityDO;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestParam;
 
 /**
  * @program: springcloud_k8s_panzhihuazhihuishequ
@@ -93,6 +95,78 @@
     R listActivitySigns(ActivitySignVO activitySignVO);
 
     /**
+     * description  getSignLists  查询活动报名名单
+     * @param    activitySignVO  查询参数
+     * @return    R   查询结果
+     * @author txb
+     * @date 2021/8/24 14:03
+     */
+    R getSignLists(ActivitySignVO activitySignVO);
+
+    /**
+     * description  listActivityRegists  分页查询活动评价
+     * @param    comActActEvaluateVO  活动评价vo
+     * @return    R   分页查询结果
+     * @author txb
+     * @date 2021/8/24 14:03
+     */
+    R pageActivityEvaluates(ComActActEvaluateVO comActActEvaluateVO);
+
+    /**
+     * description  getEvaluateLists  查询活动评价
+     * @param    comActActEvaluateVO  查询参数
+     * @return    R   查询结果
+     * @author txb
+     * @date 2021/8/24 14:03
+     */
+    R getEvaluateLists(ComActActEvaluateVO comActActEvaluateVO);
+
+    /**
+     * description  pageActivityRegists  分页查询活动签到
+     * @param    comActActRegistVO  活动签到vo
+     * @return    R   分页查询结果
+     * @author txb
+     * @date 2021/8/24 14:03
+     */
+    R pageActivityRegists(ComActActRegistVO comActActRegistVO);
+
+    /**
+     * description  getRegistLists  查询活动签到
+     * @param    comActActRegistVO  查询参数
+     * @return    R   查询结果
+     * @author txb
+     * @date 2021/8/25 9:33
+     */
+    R getRegistLists(ComActActRegistVO comActActRegistVO);
+
+    /**
+     * description  getRegistLists  查询活动未签到
+     * @param    comActActRegistVO  查询参数
+     * @return    R   查询结果
+     * @author txb
+     * @date 2021/8/25 9:33
+     */
+    R getNoRegistLists(ComActActRegistVO comActActRegistVO);
+
+    /**
+     * description  activityStagistics  活动数据统计
+     * @param activityId 活动id
+     * @return    R   统计结果
+     * @author txb
+     * @date 2021/8/25 13:33
+     */
+    R activityStatistics(Long activityId);
+
+    /**
+     * 获取活动历史封面  getPictureList
+     * @param userId 用户id
+     * @return    R   统计结果
+     * @author txb
+     * @date 2021/8/27 13:33
+     */
+    R getPictureList(Long userId);
+
+    /**
      * 分页展示我的所有活动 时间倒序排列
      * 
      * @param comActActivityVO
@@ -169,4 +243,19 @@
      */
     R timedTaskActivityNotice();
 
+    /**
+     * 用户签到
+     *
+     * @param comActActRegistVO 签到参数
+     * @return 签到结果
+     */
+    R activitySignIn(ComActActRegistVO comActActRegistVO);
+
+    /**
+     *用户签到记录列表
+     *
+     * @param userId 用id
+     * @return 用户签到列表
+     */
+    R listSignInActivity(Long userId);
 }
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/ComActReserveAnswerContentService.java b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/ComActReserveAnswerContentService.java
new file mode 100644
index 0000000..2c01310
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/ComActReserveAnswerContentService.java
@@ -0,0 +1,29 @@
+package com.panzhihua.service_community.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.panzhihua.common.model.dtos.community.reserve.PageReserveRegisterDetailedAdminDTO;
+import com.panzhihua.common.model.vos.R;
+import com.panzhihua.service_community.model.dos.ComActReserveAnswerContentDO;
+
+/**
+ * @auther lyq
+ * @create 2021-08-23 10:33:32
+ * @describe 预约登记回答记录内容 服务类
+ */
+public interface ComActReserveAnswerContentService extends IService<ComActReserveAnswerContentDO> {
+
+    /**
+     * 导出登记明细数据
+     * @param reserveId 登记id
+     * @return  登记明细数据
+     */
+    R exportRegisterAdmin(Long reserveId);
+
+    /**
+     * 分页查询登记明细列表
+     * @param detailedAdminDTO  请求参数
+     * @return  登记明细列表
+     */
+    R registerDetailedListAdmin(PageReserveRegisterDetailedAdminDTO detailedAdminDTO);
+
+}
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/ComActReserveOperationRecordService.java b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/ComActReserveOperationRecordService.java
new file mode 100644
index 0000000..404f8b7
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/ComActReserveOperationRecordService.java
@@ -0,0 +1,41 @@
+package com.panzhihua.service_community.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.panzhihua.common.model.dtos.community.OperationDetailDTO;
+import com.panzhihua.common.model.vos.R;
+import com.panzhihua.service_community.model.dos.ComActReserveOperationRecordDO;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @auther lyq
+ * @create 2021-08-23 10:33:42
+ * @describe 预约登记操作记录表服务类
+ */
+public interface ComActReserveOperationRecordService extends IService<ComActReserveOperationRecordDO> {
+
+    /**
+     * 添加预约登记操作记录
+     * @param reserveId 预约登记id
+     * @param reserveRecordId   预约登记记录id
+     * @param userId    用户id
+     * @param type  类型(1.本人操作 2.社区操作)
+     * @param phone 操作人手机号
+     * @param reserveContent    操作内容
+     * @param remark    备注
+     * @param status    状态(1.提交 2.预约成功 3.预约失败 4.取消)
+     * @param createBy  创建人
+     * @param reserveTime  成功预约时间
+     */
+    void addReserveOperationRecord(Long reserveId, Long reserveRecordId, Long userId, Integer type
+            , String phone, String reserveContent,String remark,Integer status,Long createBy,Date reserveTime);
+
+
+    /**
+     * 多条件查询操作记录
+     * @param operationDetailDTO
+     * @return
+     */
+    R detailOperationRecord(OperationDetailDTO operationDetailDTO);
+}
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/ComActReserveRecordService.java b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/ComActReserveRecordService.java
new file mode 100644
index 0000000..72afb21
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/ComActReserveRecordService.java
@@ -0,0 +1,85 @@
+package com.panzhihua.service_community.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.panzhihua.common.model.dtos.community.reserve.*;
+import com.panzhihua.common.model.vos.R;
+import com.panzhihua.common.model.dtos.community.CancelRecordDTO;
+import com.panzhihua.common.model.vos.R;
+import com.panzhihua.service_community.model.dos.ComActReserveRecordDO;
+
+import java.util.List;
+
+/**
+ * @auther lyq
+ * @create 2021-08-23 10:33:53
+ * @describe 预约登记记录表服务类
+ */
+public interface ComActReserveRecordService extends IService<ComActReserveRecordDO> {
+    R cancel(CancelRecordDTO comActReserveRecordDO);
+
+    /**
+     * 社区后台-根据预约id查询预约明细
+     * @param pageMakeDTO   请求参数
+     * @return  预约明细
+     */
+    R pageMakeAdmin(PageReserveMakeAdminDTO pageMakeDTO);
+
+    /**
+     * 根据预约记录id查询预约明细操作记录
+     * @param reserveRecordId   预约记录id
+     * @return  预约明细操作记录
+     */
+    R detailMakeAdmin(Long reserveRecordId);
+
+    /**
+     * 批量取消预约记录
+     * @param reserveRecordDTO   请求参数
+     * @return  取消结果
+     */
+    R makeCancelAdmin(CancelReserveRecordDTO reserveRecordDTO);
+
+    /**
+     * 预约明细导出数据查询
+     * @param pageMakeDTO   请求参数
+     * @return  预约明细数据
+     */
+    R exportMakeAdmin(PageReserveMakeAdminDTO pageMakeDTO);
+
+    /**
+     * 分页查询登记统计汇总
+     * @param registerStatisticsDTO 请求参数
+     * @return  登记统计汇总
+     */
+    R registerStatisticsAdmin(ComActReserveRegisterStatisticsDTO registerStatisticsDTO);
+
+    /**
+     * 导出登记统计汇总
+     * @param registerStatisticsDTO 请求参数
+     * @return  登记统计汇总
+     */
+    R registerStatisticsExportAdmin(ComActReserveRegisterStatisticsDTO registerStatisticsDTO);
+
+    /**
+     * 分页查询预约处理列表
+     * @param pageMakeHandleDTO 请求参数
+     * @return  预约处理列表
+     */
+    R pageMakeHandleAdmin(PageReserveMakeHandleAdminDTO pageMakeHandleDTO);
+
+    /**
+     * 批量处理预约记录
+     * @param makeHandleDTO 请求参数
+     * @return  处理结果
+     */
+    R makeHandleAdmin(MakeHandleAdminDTO makeHandleDTO);
+
+    /**
+     * 导出预约处理列表数据查询
+     * @param pageMakeHandleDTO 请求参数
+     * @return  预约处理列表
+     */
+    R exportMakeHandleAdmin(PageReserveMakeHandleAdminDTO pageMakeHandleDTO);
+
+    R registerDetailedDetailAdmin(Long reserveRecordId);
+
+}
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/ComActReserveService.java b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/ComActReserveService.java
new file mode 100644
index 0000000..49f6aaf
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/ComActReserveService.java
@@ -0,0 +1,108 @@
+package com.panzhihua.service_community.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.panzhihua.common.model.dtos.community.reserve.*;
+import com.panzhihua.common.model.vos.R;
+import com.panzhihua.common.model.dtos.community.PageUserReserveDTO;
+import com.panzhihua.common.model.vos.R;
+import com.panzhihua.common.model.vos.community.ComActReserveCommitVO;
+import com.panzhihua.service_community.model.dos.ComActReserveDO;
+
+/**
+ * @auther lyq
+ * @create 2021-08-23 10:33:11
+ * @describe 预约登记表服务类
+ */
+public interface ComActReserveService extends IService<ComActReserveDO> {
+    /**
+     * 小程序提交预约登记
+     * @param comActReserveCommitVO
+     * @return 预约登记结果
+     */
+    R commit(ComActReserveCommitVO comActReserveCommitVO);
+
+    /**
+     * 小程序我的预约登记
+     * @param pageUserReserveDTO
+     * @return 预约登记列表
+     */
+    R pageReserveList(PageUserReserveDTO pageUserReserveDTO);
+
+    /**
+     * 社区后台-分页查询预约登记列表
+     * @param pageReserveDTO    请求参数
+     * @return  预约登记列表
+     */
+    R pageReserveAdmin(PageReserveAdminDTO pageReserveDTO);
+
+    /**
+     * 社区后台-新增预约登记信息
+     * @param addReserveDTO 请求参数
+     * @return  新增结果
+     */
+    R addReserveAdmin(AddReserveAdminDTO addReserveDTO);
+
+    /**
+     * 社区后台-编辑预约登记信息
+     * @param editReserveDTO 请求参数
+     * @return  新增结果
+     */
+    R editReserveAdmin(EditReserveAdminDTO editReserveDTO);
+
+    /**
+     * 社区后台-修改预约登记状态
+     * @param editReserveDTO    请求参数
+     * @return  修改结果
+     */
+    R editReserveStatusAdmin(EditComActReserveStatusDTO editReserveDTO);
+
+    /**
+     * 社区后台-继续预约登记
+     * @param editReserveDTO    请求参数
+     * @return  修改结果
+     */
+    R editReserveInfoAdmin(EditComActReserveInfoDTO editReserveDTO);
+
+    /**
+     * 社区后台-根据预约登记id查询详情
+     * @param reserveId 预约登记id
+     * @return  预约登记详情
+     */
+    R detailReserveAdmin(Long reserveId);
+
+    /**
+     * 社区后台-根据社区id统计预约类数据
+     * @param makeStatisticsDTO   请求参数
+     * @return  统计预约类数据
+     */
+    R makeStatisticsAdmin(ComActReserveMakeStatisticsDTO makeStatisticsDTO);
+
+    /**
+     * 社区后台-查询导出预约统计汇总数据
+     * @param makeStatisticsDTO   请求参数
+     * @return  统计预约类数据
+     */
+    R makeStatisticsExportAdmin(ComActReserveMakeStatisticsDTO makeStatisticsDTO);
+
+    /**
+     * 删除预约登记信息
+     * @param reserveId 预约登记id
+     * @return  删除结果
+     */
+    R deleteReserveAdmin(Long reserveId);
+
+    /**
+     * 查询社区所有预约信息列表
+     * @param communityId   社区id
+     * @return  预约信息列表
+     */
+    R listReserveAdmin(Long communityId);
+
+    /**
+     * 小程序预约登记查询详情
+     * @param id
+     * @return
+     */
+    R getById(Long id,Long userId,Long recordId,Integer isBack);
+
+}
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/ComActReserveSubSelectionService.java b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/ComActReserveSubSelectionService.java
new file mode 100644
index 0000000..5160fdf
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/ComActReserveSubSelectionService.java
@@ -0,0 +1,13 @@
+package com.panzhihua.service_community.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.panzhihua.service_community.model.dos.ComActReserveSubSelectionDO;
+
+/**
+ * @auther lyq
+ * @create 2021-08-23 10:34:13
+ * @describe 预约登记题目选项 服务类
+ */
+public interface ComActReserveSubSelectionService extends IService<ComActReserveSubSelectionDO> {
+
+}
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/ComActReserveSubService.java b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/ComActReserveSubService.java
new file mode 100644
index 0000000..fc7f07a
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/ComActReserveSubService.java
@@ -0,0 +1,21 @@
+package com.panzhihua.service_community.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.panzhihua.common.model.vos.R;
+import com.panzhihua.service_community.model.dos.ComActReserveSubDO;
+
+/**
+ * @auther lyq
+ * @create 2021-08-23 10:34:03
+ * @describe 预约登记题目选项服务类
+ */
+public interface ComActReserveSubService extends IService<ComActReserveSubDO> {
+
+    /**
+     * 查询预约登记题目列表
+     * @param reserveId 预约登记id
+     * @return  约登记题目列表
+     */
+    R subjectListAdmin(Long reserveId);
+
+}
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActActEvaluateServiceImpl.java b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActActEvaluateServiceImpl.java
new file mode 100644
index 0000000..8381f04
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActActEvaluateServiceImpl.java
@@ -0,0 +1,124 @@
+package com.panzhihua.service_community.service.impl;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.stream.Collectors;
+
+import javax.annotation.Resource;
+
+import org.apache.commons.lang3.ObjectUtils;
+import org.apache.commons.lang3.time.DateUtils;
+import org.springframework.beans.BeanUtils;
+import org.springframework.stereotype.Service;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.panzhihua.common.model.vos.R;
+import com.panzhihua.common.model.vos.community.ComActActEvaluateVO;
+import com.panzhihua.service_community.dao.ComActActEvaluateDAO;
+import com.panzhihua.service_community.dao.ComActActSignDAO;
+import com.panzhihua.service_community.dao.ComActActivityDAO;
+import com.panzhihua.service_community.model.dos.ComActActEvaluateDO;
+import com.panzhihua.service_community.model.dos.ComActActSignDO;
+import com.panzhihua.service_community.model.dos.ComActActivityDO;
+import com.panzhihua.service_community.service.ComActActEvaluateService;
+
+import lombok.extern.slf4j.Slf4j;
+
+/**
+ * title: ComActActEvaluateServiceImpl  社区》活动》活动评价表服务实现类
+ * projectName 成都呐喊信息技术有限公司-智慧社区项目
+ * description: 社区》活动》活动评价表服务实现类
+ *
+ * @author txb
+ * @date 2021/8/24 10:21
+ */
+@Slf4j
+@Service
+public class ComActActEvaluateServiceImpl extends ServiceImpl<ComActActEvaluateDAO, ComActActEvaluateDO> implements ComActActEvaluateService {
+
+    @Resource
+    private ComActActivityDAO comActActivityDAO;
+    @Resource
+    private ComActActSignDAO comActActSignDAO;
+    /**
+     * 社区活动评价
+     *
+     * @param comActActEvaluateVO 社区评价VO
+     * @return 评价结果
+     */
+    @Override
+    public R activityEvaluate(ComActActEvaluateVO comActActEvaluateVO) {
+        ComActActEvaluateDO comActActEvaluateDO = new ComActActEvaluateDO();
+        BeanUtils.copyProperties(comActActEvaluateVO, comActActEvaluateDO);
+        int result = this.baseMapper.insert(comActActEvaluateDO);
+        if (result < 0) {
+            return R.fail();
+        }
+        return R.ok();
+    }
+
+    /**
+     * 定时任务针对活动结束后7天还未评价的用户默认好评
+     */
+    @Override
+    public R timedTaskActivityDefaultPraise() {
+        //获取还未默认好评的活动
+        List<ComActActivityDO> comActActivityDOS = comActActivityDAO.selectList(new QueryWrapper<ComActActivityDO>().lambda()
+                .eq(ComActActivityDO::getStatus, 5)
+                .eq(ComActActivityDO::getIsDefaultPraise, 0)
+                .le(ComActActivityDO::getEndAt, DateUtils.addDays(new Date(), 7)));
+        //获取报名记录
+        if (!ObjectUtils.isEmpty(comActActivityDOS)) {
+            List<Long> activityIds = comActActivityDOS.stream().map(ComActActivityDO::getId).collect(Collectors.toList());
+            List<ComActActSignDO> comActActSignDOS = comActActSignDAO.selectNeedEvaluateSignRecords(activityIds);
+            //批量插入好评
+            if (!ObjectUtils.isEmpty(comActActSignDOS)) {
+                List<ComActActEvaluateDO> comActActEvaluateDOList = comActActSignDOS.stream().map(comActActSignDO -> {
+                    ComActActEvaluateDO comActActEvaluateDO = new ComActActEvaluateDO();
+                    comActActEvaluateDO.setActivityId(comActActSignDO.getActivityId());
+                    comActActEvaluateDO.setIsVolunteer(comActActSignDO.getIsVolunteer());
+                    comActActEvaluateDO.setUserId(comActActSignDO.getUserId());
+                    comActActEvaluateDO.setCreateAt(new Date());
+                    comActActEvaluateDO.setStarLevel(5);
+                    return comActActEvaluateDO;
+                }).collect(Collectors.toList());
+                boolean result = this.saveBatch(comActActEvaluateDOList);
+                if (!result) {
+                    return R.fail("批量插入评价失败");
+                }
+                ComActActivityDO comActActivityDO = new ComActActivityDO();
+                comActActivityDO.setIsDefaultPraise(1);
+                int updateResult = comActActivityDAO.update(comActActivityDO, new UpdateWrapper<ComActActivityDO>()
+                        .lambda().in(ComActActivityDO::getId, activityIds));
+                if (updateResult < 0) {
+                    return R.fail("修改是否已默认评价状态失败");
+                }
+            }
+        }
+        return R.ok();
+    }
+
+    /**
+     * 用户评价列表
+     *
+     * @param userId 用户id
+     * @return 当前用户对所有活动的评价列表
+     */
+    @Override
+    public R listEvaluate(Long userId) {
+        List<ComActActEvaluateDO> comActActEvaluateDOList = this.baseMapper.selectList(new QueryWrapper<ComActActEvaluateDO>()
+                .lambda().eq(ComActActEvaluateDO::getUserId, userId));
+        ArrayList<ComActActEvaluateVO> comActActEvaluateVOS = new ArrayList<>();
+        if (!ObjectUtils.isEmpty(comActActEvaluateDOList)) {
+            comActActEvaluateDOList.forEach(comActActEvaluateDO -> {
+                ComActActEvaluateVO comActActEvaluateVO = new ComActActEvaluateVO();
+                BeanUtils.copyProperties(comActActEvaluateDO, comActActEvaluateVO);
+                comActActEvaluateVOS.add(comActActEvaluateVO);
+            });
+        }
+        return R.ok(comActActEvaluateVOS);
+    }
+}
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActActPictureServiceImpl.java b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActActPictureServiceImpl.java
new file mode 100644
index 0000000..c252acb
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActActPictureServiceImpl.java
@@ -0,0 +1,22 @@
+package com.panzhihua.service_community.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.panzhihua.service_community.dao.ComActActPictureDAO;
+import com.panzhihua.service_community.model.dos.ComActActPictureDO;
+import com.panzhihua.service_community.service.ComActActPictureService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+/**
+ * title: ComActActPictureServiceImpl  社区》活动》历史上传图片服务实现类
+ * projectName 成都呐喊信息技术有限公司-智慧社区项目
+ * description: 社区》活动》历史上传图片服务实现类
+ *
+ * @author txb
+ * @date 2021/8/24 10:21
+ */
+@Slf4j
+@Service
+public class ComActActPictureServiceImpl extends ServiceImpl<ComActActPictureDAO, ComActActPictureDO> implements ComActActPictureService {
+
+}
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActActRegistServiceImpl.java b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActActRegistServiceImpl.java
new file mode 100644
index 0000000..6b5fa6d
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActActRegistServiceImpl.java
@@ -0,0 +1,22 @@
+package com.panzhihua.service_community.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.panzhihua.service_community.dao.ComActActRegistDAO;
+import com.panzhihua.service_community.model.dos.ComActActRegistDO;
+import com.panzhihua.service_community.service.ComActActRegistService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+/**
+ * title: ComActActRegistServiceImpl  社区》活动》活动签到表服务实现类
+ * projectName 成都呐喊信息技术有限公司-智慧社区项目
+ * description: 社区》活动》活动签到表服务实现类
+ *
+ * @author txb
+ * @date 2021/8/24 10:21
+ */
+@Slf4j
+@Service
+public class ComActActRegistServiceImpl extends ServiceImpl<ComActActRegistDAO, ComActActRegistDO> implements ComActActRegistService {
+
+}
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 b91f7cd..a9cffc8 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
@@ -1,12 +1,21 @@
 package com.panzhihua.service_community.service.impl;
 
+import java.text.DecimalFormat;
 import java.util.*;
+import java.util.concurrent.TimeUnit;
 import java.util.stream.Collectors;
 
 import javax.annotation.Resource;
 
+import com.panzhihua.common.model.vos.community.*;
+import com.panzhihua.common.model.vos.screen.ComActPopulationCultureVO;
+import com.panzhihua.service_community.dao.*;
+import com.panzhihua.service_community.model.dos.ComActActEvaluateDO;
+import com.panzhihua.service_community.model.dos.ComActActPictureDO;
 import org.apache.commons.lang3.time.DateUtils;
 import org.springframework.beans.BeanUtils;
+import org.springframework.data.redis.core.StringRedisTemplate;
+import org.springframework.data.redis.core.ValueOperations;
 import org.springframework.stereotype.Service;
 import org.springframework.util.ObjectUtils;
 
@@ -21,13 +30,16 @@
 import com.panzhihua.common.model.vos.IndexDataVO;
 import com.panzhihua.common.model.vos.LoginUserInfoVO;
 import com.panzhihua.common.model.vos.R;
-import com.panzhihua.common.model.vos.community.*;
 import com.panzhihua.common.model.vos.community.screen.work.ActActivityListVO;
 import com.panzhihua.common.service.user.UserService;
 import com.panzhihua.common.utlis.WxUtil;
 import com.panzhihua.common.utlis.WxXCXTempSend;
+import com.panzhihua.service_community.dao.ComActActEvaluateDAO;
+import com.panzhihua.service_community.dao.ComActActRegistDAO;
 import com.panzhihua.service_community.dao.ComActActSignDAO;
 import com.panzhihua.service_community.dao.ComActActivityDAO;
+import com.panzhihua.service_community.model.dos.ComActActEvaluateDO;
+import com.panzhihua.service_community.model.dos.ComActActRegistDO;
 import com.panzhihua.service_community.model.dos.ComActActSignDO;
 import com.panzhihua.service_community.model.dos.ComActActivityDO;
 import com.panzhihua.service_community.service.ComActActivityService;
@@ -44,12 +56,22 @@
 @Service
 public class ComActActivityServiceImpl extends ServiceImpl<ComActActivityDAO, ComActActivityDO>
     implements ComActActivityService {
+    private static final String DELIMITER = ":";
+    private static final String ACTIVITY_SIGN_IN = "ACTIVITY:SIGN:IN";
     @Resource
     private ComActActivityDAO comActActivityDAO;
     @Resource
     private ComActActSignDAO comActActSignDAO;
     @Resource
     private UserService userService;
+    @Resource
+    private ComActActEvaluateDAO comActActEvaluateDAO;
+    @Resource
+    private ComActActRegistDAO comActActRegistDAO;
+    @Resource
+    private StringRedisTemplate stringRedisTemplate;
+    @Resource
+    private ComActActPictureDAO comActActPictureDAO;
 
     /**
      * 新增社区活动
@@ -86,6 +108,13 @@
             .eq(ComActActivityDO::getActivityName, comActActivityDO.getActivityName())
             .orderByDesc(ComActActivityDO::getCreateAt).last(" limit 1 "));
         Long activityId = one.getId();
+
+        //保存上传照片
+        ComActActPictureDO comActActPictureDO = new ComActActPictureDO();
+        comActActPictureDO.setActivityId(activityId);
+        comActActPictureDO.setUserId(comActActivityVO.getUserId());
+        comActActPictureDO.setUploadPicture(comActActivityVO.getCover());
+        comActActPictureDAO.insert(comActActPictureDO);
         return R.ok(activityId);
     }
 
@@ -263,6 +292,73 @@
     public R listActivitySigns(ActivitySignVO activitySignVO) {
         List<ActivitySignVO> activitySignVOS = comActActSignDAO.listActivitySigns(activitySignVO);
         return R.ok(activitySignVOS);
+    }
+
+    @Override
+    public R getSignLists(ActivitySignVO activitySignVO) {
+        return R.ok(comActActSignDAO.getSignLists(activitySignVO));
+    }
+
+    @Override
+    public R pageActivityEvaluates(ComActActEvaluateVO comActActEvaluateVO) {
+        IPage<ComActActEvaluateVO> comActActEvaluateVOIPage = comActActEvaluateDAO
+                .pageActivityEvaluates(new Page(comActActEvaluateVO.getPageNum(), comActActEvaluateVO.getPageSize()), comActActEvaluateVO);
+        return R.ok(comActActEvaluateVOIPage);
+    }
+
+    @Override
+    public R getEvaluateLists(ComActActEvaluateVO comActActEvaluateVO) {
+        return R.ok(comActActEvaluateDAO.getEvaluateLists(comActActEvaluateVO));
+    }
+
+    @Override
+    public R pageActivityRegists(ComActActRegistVO comActActRegistVO) {
+        IPage<ComActActRegistVO> comActActRegistVOIPage = comActActRegistDAO.pageActivityRegists(new Page(comActActRegistVO.getPageNum(), comActActRegistVO.getPageSize()), comActActRegistVO);
+        return R.ok(comActActRegistVOIPage);
+    }
+
+    @Override
+    public R getRegistLists(ComActActRegistVO comActActRegistVO) {
+        return R.ok(comActActRegistDAO.getRegistLists(comActActRegistVO));
+    }
+
+    @Override
+    public R getNoRegistLists(ComActActRegistVO comActActRegistVO) {
+        return R.ok(comActActRegistDAO.getNoRegistLists(comActActRegistVO));
+    }
+
+    @Override
+    public R activityStatistics(Long activityId) {
+        ComActActivityStatisticsVO comActActivityStatisticsVO = comActActivityDAO.activityStatistics(activityId);
+        if (comActActivityStatisticsVO != null) {
+            if (comActActivityStatisticsVO.getSignTotal().equals(0)){
+                comActActivityStatisticsVO.setSignTotalStr("不限");
+                comActActivityStatisticsVO.setNoSignTotalStr("");
+                comActActivityStatisticsVO.setSignPersent("");
+            }else {
+                comActActivityStatisticsVO.setSignTotalStr(String.valueOf(comActActivityStatisticsVO.getSignTotal()));
+                comActActivityStatisticsVO.setNoSignTotalStr(String.valueOf(Integer.valueOf(comActActivityStatisticsVO.getSignTotalStr()) - comActActivityStatisticsVO.getReallySignTotal()));
+                comActActivityStatisticsVO.setSignPersent(getPersent(comActActivityStatisticsVO.getReallySignTotal(),comActActivityStatisticsVO.getSignTotal()));
+            }
+            comActActivityStatisticsVO.setRegistPersent(getPersent(comActActivityStatisticsVO.getReallyRegistTotal(),comActActivityStatisticsVO.getRegistTotal()));
+            comActActivityStatisticsVO.setEvaluatePersent(getPersent(comActActivityStatisticsVO.getReallyEvaluateTotal(),comActActivityStatisticsVO.getEvaluateTotal()));
+        }
+        return R.ok(comActActivityStatisticsVO);
+    }
+
+    @Override
+    public R getPictureList(Long userId) {
+        List<ComActActPictureVO> comActActPictureVOS = new ArrayList<>();
+        List<ComActActPictureDO> comActActPictureDOS = comActActPictureDAO.selectList(new QueryWrapper<ComActActPictureDO>().lambda().
+                eq(ComActActPictureDO::getUserId, userId));
+        if (comActActPictureDOS != null && comActActPictureDOS.size() != 0) {
+            comActActPictureDOS.forEach(comActActPictureDO -> {
+                ComActActPictureVO comActActPictureVO = new ComActActPictureVO();
+                BeanUtils.copyProperties(comActActPictureDO, comActActPictureVO);
+                comActActPictureVOS.add(comActActPictureVO);
+            });
+        }
+        return R.ok(comActActPictureVOS);
     }
 
     /**
@@ -489,6 +585,16 @@
         page.setSize(pageSize);
         page.setCurrent(pageNum);
         IPage<ComActActivityVO> iPage = comActActivityDAO.pageActivityCommunityBack(page, comActActivityVO);
+        iPage.getRecords().forEach(vo ->{
+            List<ComActActEvaluateDO> comActActEvaluateDOList = comActActEvaluateDAO
+                    .selectList(new QueryWrapper<ComActActEvaluateDO>().lambda().eq(ComActActEvaluateDO::getActivityId, vo.getId()));
+            if (comActActEvaluateDOList != null && comActActEvaluateDOList.size() != 0) {
+                //总星级
+                int starNum = comActActEvaluateDOList.stream().mapToInt(ComActActEvaluateDO::getStarLevel).sum();
+                //评分星级=总星级/总评价人数
+                vo.setEvaluateLevel(Double.valueOf(starNum/comActActEvaluateDOList.size()));
+            }
+        });
         return R.ok(iPage);
     }
 
@@ -598,4 +704,62 @@
         return R.ok();
     }
 
+    private String getPersent(int x, int y){
+        if (y == 0) {
+            return "";
+        }
+        if (x == 0) {
+            return "0.00%";
+        }
+        double d1 = x * 1.0;
+        double d2 = y * 1.0;
+        DecimalFormat decimalFormat = new DecimalFormat("##.00%");
+        return decimalFormat.format(d1 / d2);
+    }
+
+    /**
+     * 用户签到
+     *
+     * @param comActActRegistVO 签到参数
+     * @return 签到结果
+     */
+    @Override
+    public R activitySignIn(ComActActRegistVO comActActRegistVO) {
+        Long activityId = comActActRegistVO.getActivityId();
+        Long userId = comActActRegistVO.getUserId();
+        String activitySignInKey = String.join(DELIMITER, ACTIVITY_SIGN_IN, userId.toString(), activityId.toString());
+        if (stringRedisTemplate.hasKey(activitySignInKey)) {
+            return R.fail("你已签到,如要再次签到请三十分钟后尝试!");
+        }
+        ComActActRegistDO comActActRegistDO = new ComActActRegistDO();
+        comActActRegistDO.setActivityId(activityId);
+        comActActRegistDO.setUserId(userId);
+        comActActRegistDO.setIsVolunteer(comActActRegistVO.getIsVolunteer());
+        comActActRegistDO.setCreateAt(new Date());
+        int result = comActActRegistDAO.insert(comActActRegistDO);
+        if (result > 0) {
+            ValueOperations<String, String> opsForValue = stringRedisTemplate.opsForValue();
+            opsForValue.set(activitySignInKey, "", 1800L, TimeUnit.SECONDS);
+        }
+        return R.ok();
+    }
+
+    /**
+     *用户签到记录列表
+     *
+     * @param userId 用id
+     * @return 用户签到列表
+     */
+    @Override
+    public R listSignInActivity(Long userId) {
+        List<ComActActRegistDO> comActActRegistDOS = comActActRegistDAO.selectList(new QueryWrapper<ComActActRegistDO>()
+                .lambda().eq(ComActActRegistDO::getUserId, userId));
+        ArrayList<ComActActRegistVO> comActActRegistVOS = new ArrayList<>();
+        comActActRegistDOS.forEach(comActActRegistDO -> {
+            ComActActRegistVO comActActRegistVO = new ComActActRegistVO();
+            BeanUtils.copyProperties(comActActRegistDO, comActActRegistVO);
+            comActActRegistVOS.add(comActActRegistVO);
+        });
+        return R.ok(comActActRegistVOS);
+    }
 }
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActDiscussServiceImpl.java b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActDiscussServiceImpl.java
index f0926fd..8e3689c 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActDiscussServiceImpl.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActDiscussServiceImpl.java
@@ -469,7 +469,9 @@
                             .collect(Collectors.toList());
                         if (!ObjectUtils.isEmpty(collect)) {
                             String userName = collect.get(0).getUserName();
+                            String userNickName = collect.get(0).getUserNickName();
                             comActDiscussCommentVO1.setUserNameBack(userName);
+                            comActDiscussCommentVO1.setUserNickNameBack(userNickName);
                         }
                         List<ComActDiscussCommentVO> collect1 = records.stream()
                             .filter(comActDiscussCommentVO2 -> comActDiscussCommentVO2.getId().equals(parentId))
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 6f776ae..ad42d5b 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
@@ -65,6 +65,10 @@
     private ComActEasyPhotoFeedbackMapper comActEasyPhotoFeedbackMapper;
     @Resource
     private ComActQuestnaireDAO comActQuestnaireDAO;
+    @Resource
+    private ComActReserveMapper comActReserveMapper;
+    @Resource
+    private ComActActivityDAO comActActivityDAO;
 
     /**
      * 分页查询随手拍
@@ -286,8 +290,8 @@
                     cmActEasyPhotoDO.setTransferTime(nowDate);
                 } else {
                     cmActEasyPhotoDO.setIsReportUrban(ComActEasyPhotoVO.isReportUrban.no);
-                    cmActEasyPhotoDO.setHandlerId(comActEasyPhotoVO.getHandlerId());
                 }
+                cmActEasyPhotoDO.setHandlerId(comActEasyPhotoVO.getHandlerId());
                 cmActEasyPhotoDO.setExamineAt(nowDate);
                 cmActEasyPhotoDO.setActivityType(comActEasyPhotoVO.getActivityType());
                 if (StringUtils.isNotEmpty(comActEasyPhotoVO.getHandleResult())
@@ -352,6 +356,9 @@
                 cmActEasyPhotoDO.setFeedbackAt(nowDate);
                 cmActEasyPhotoDO.setStatus(ComActEasyPhotoDO.status.ywc);
                 cmActEasyPhotoDO.setCompleteId(comActEasyPhotoVO.getUserId());
+                if(comActEasyPhotoVO.getUrbanStatus()!=null&&comActEasyPhotoVO.getUrbanStatus()==2){
+                    cmActEasyPhotoDO.setUrbanStatus(2);
+                }
                 break;
             default:
                 break;
@@ -664,13 +671,28 @@
             easyPhotoRewardVO.setBannerQuestnaireList(bannerQuestnaireList);
         }
 
+        //查询社区正在进行中的banner位置的社区活动
+        List<ComActActivityVO> comActActivityVOList = comActActivityDAO.getIndexTopActivityList(communityId);
+        if (!comActActivityVOList.isEmpty()) {
+            easyPhotoRewardVO.setBannerActivityList(comActActivityVOList);
+        }
+
         // 查询社区正在进行中的应用位置调查问卷列表
         List<ComActQuestnaireAppVO> applicationQuestnaireList =
             comActQuestnaireDAO.getIndexApplicationQuestnaireList(communityId);
         if (!applicationQuestnaireList.isEmpty()) {
             easyPhotoRewardVO.setApplicationQuestnaireList(applicationQuestnaireList);
         }
-
+        //查询社区正在进行中的banner预约/登记列表
+        List<ComActReserveIndexVo> comActReserveIndexVos=comActReserveMapper.indexBanner(communityId);
+        if(!comActReserveIndexVos.isEmpty()){
+            easyPhotoRewardVO.setComActReserveIndexBannerVos(comActReserveIndexVos);
+        }
+        //查询社区正在进行中的应用预约/登记列表
+        List<ComActReserveIndexVo> comActReserveIndexApplicationVos=comActReserveMapper.indexApplication(communityId);
+        if(!comActReserveIndexApplicationVos.isEmpty()){
+            easyPhotoRewardVO.setComActReserveIndexApplicationVos(comActReserveIndexApplicationVos);
+        }
         return R.ok(easyPhotoRewardVO);
     }
 
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActReserveAnswerContentServiceImpl.java b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActReserveAnswerContentServiceImpl.java
new file mode 100644
index 0000000..8017cd1
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActReserveAnswerContentServiceImpl.java
@@ -0,0 +1,124 @@
+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.QuestnaireAnswersDTO;
+import com.panzhihua.common.model.dtos.community.reserve.PageReserveRegisterDetailedAdminDTO;
+import com.panzhihua.common.model.vos.R;
+import com.panzhihua.common.model.vos.community.ComActQuestnaireAnswerContentVO;
+import com.panzhihua.common.model.vos.community.ComActQuestnaireSubVO;
+import com.panzhihua.common.model.vos.community.reserve.ComActReserveRecordListVO;
+import com.panzhihua.common.model.vos.community.reserve.ComActReserveRegisterDetailedAnswerVO;
+import com.panzhihua.common.model.vos.community.reserve.ComActReserveRegisterDetailedVO;
+import com.panzhihua.common.utlis.DateUtils;
+import com.panzhihua.service_community.dao.ComActReserveAnswerContentMapper;
+import com.panzhihua.service_community.dao.ComActReserveSubMapper;
+import com.panzhihua.service_community.model.dos.ComActQuestnaireAnswerContentDO;
+import com.panzhihua.service_community.model.dos.ComActQuestnaireSubDO;
+import com.panzhihua.service_community.model.dos.ComActReserveAnswerContentDO;
+import com.panzhihua.service_community.model.dos.ComActReserveSubDO;
+import com.panzhihua.service_community.service.ComActReserveAnswerContentService;
+import com.panzhihua.service_community.service.ComActReserveSubService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.BeanUtils;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.*;
+
+/**
+ * @auther lyq
+ * @create 2021-08-23 10:33:32
+ * @describe 预约登记回答记录内容 服务实现类
+ */
+@Slf4j
+@Service
+public class ComActReserveAnswerContentServiceImpl extends ServiceImpl<ComActReserveAnswerContentMapper, ComActReserveAnswerContentDO> implements ComActReserveAnswerContentService {
+
+    @Resource
+    private ComActReserveSubMapper comActReserveSubMapper;
+
+    /**
+     * 导出登记明细数据
+     * @param reserveId 登记id
+     * @return  登记明细数据
+     */
+    @Override
+    public R exportRegisterAdmin(Long reserveId){
+        QuestnaireAnswersDTO result = new QuestnaireAnswersDTO();
+
+        //查询题目
+        List<ComActReserveSubDO> list = comActReserveSubMapper.selectList(new QueryWrapper<ComActReserveSubDO>().lambda().eq(ComActReserveSubDO::getReserveId, reserveId));
+        List<ComActQuestnaireSubVO> listSubVo = new ArrayList<>();
+        list.forEach(subDo -> {
+            ComActQuestnaireSubVO comActQuestnaireSubVO = new ComActQuestnaireSubVO();
+            BeanUtils.copyProperties(subDo, comActQuestnaireSubVO);
+            listSubVo.add(comActQuestnaireSubVO);
+        });
+        result.setSubs(listSubVo);
+
+        Long reserveRecordId = null;
+        //查询用户回答
+        List<ComActReserveAnswerContentDO> questnaireAnswerContentDOList = this.baseMapper.selectListByReserve(reserveId);
+        List<ComActQuestnaireAnswerContentVO> vos = new ArrayList<>();
+        for (ComActReserveAnswerContentDO dos:questnaireAnswerContentDOList) {
+            ComActQuestnaireAnswerContentVO vo = new ComActQuestnaireAnswerContentVO();
+            BeanUtils.copyProperties(dos, vo);
+            reserveRecordId = dos.getReserveRecordId();
+            vos.add(vo);
+        }
+        result.setAnswers(vos);
+
+        //查询用户提交信息
+        ComActReserveRegisterDetailedVO recordListVO = this.baseMapper.getRegisterDetailedById(reserveRecordId);
+        if(recordListVO != null){
+            result.setRecordListVO(recordListVO);
+        }
+        return R.ok(result);
+    }
+
+    /**
+     * 分页查询登记明细列表
+     * @param detailedAdminDTO  请求参数
+     * @return  登记明细列表
+     */
+    @Override
+    public R registerDetailedListAdmin(PageReserveRegisterDetailedAdminDTO detailedAdminDTO){
+        IPage<HashMap<String,Object>> resultPage = new Page<>();
+
+        IPage<ComActReserveRegisterDetailedVO> registerDetailedPage = this.baseMapper.pageRegisterDetailedListAdmin(new Page(detailedAdminDTO.getPageNum(),detailedAdminDTO.getPageSize()),detailedAdminDTO);
+        resultPage.setCurrent(registerDetailedPage.getCurrent());
+        resultPage.setTotal(registerDetailedPage.getTotal());
+        resultPage.setSize(registerDetailedPage.getSize());
+        resultPage.setPages(registerDetailedPage.getPages());
+
+        List<HashMap<String,Object>> resultMapList = new ArrayList<>();
+        Integer nub = 1;
+        if(!registerDetailedPage.getRecords().isEmpty()){
+            for (ComActReserveRegisterDetailedVO registerDetailed:registerDetailedPage.getRecords()) {
+                //渲染序号
+                HashMap<String,Object> map = new HashMap<>();
+                map.put("nub",nub);
+                //渲染用户昵称
+                map.put("nickName",registerDetailed.getNickName());
+                //查询记录填写答案并装载到数据集中
+                List<ComActReserveRegisterDetailedAnswerVO> registerDetailedAnswerList = this.baseMapper.getRegisterDetailedAnswerList(registerDetailed.getId());
+                if(!registerDetailedAnswerList.isEmpty()){
+                    for (ComActReserveRegisterDetailedAnswerVO detailed:registerDetailedAnswerList) {
+                        map.put(detailed.getReserveSubId() + "",detailed.getAnswerContent());
+                    }
+                }
+                //渲染登记流水号
+                map.put("id",registerDetailed.getId());
+                //渲染登记时间
+                map.put("time", DateUtils.format(registerDetailed.getCreateAt(),DateUtils.ymdhms_format));
+                resultMapList.add(map);
+                nub++;
+            }
+        }
+        resultPage.setRecords(resultMapList);
+        return R.ok(resultPage);
+    }
+}
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActReserveOperationRecordServiceImpl.java b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActReserveOperationRecordServiceImpl.java
new file mode 100644
index 0000000..8671caa
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActReserveOperationRecordServiceImpl.java
@@ -0,0 +1,90 @@
+package com.panzhihua.service_community.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.panzhihua.common.model.dtos.community.OperationDetailDTO;
+import com.panzhihua.common.model.vos.R;
+import com.panzhihua.common.model.vos.community.reserve.ComOperationDetailVO;
+import com.panzhihua.common.model.vos.community.reserve.ComOperationListVO;
+import com.panzhihua.service_community.dao.ComActReserveMapper;
+import com.panzhihua.service_community.dao.ComActReserveOperationRecordMapper;
+import com.panzhihua.service_community.dao.ComActReserveRecordMapper;
+import com.panzhihua.service_community.model.dos.ComActReserveDO;
+import com.panzhihua.service_community.model.dos.ComActReserveOperationRecordDO;
+import com.panzhihua.service_community.model.dos.ComActReserveRecordDO;
+import com.panzhihua.service_community.service.ComActReserveOperationRecordService;
+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.Date;
+import java.util.List;
+
+/**
+ * @auther lyq
+ * @create 2021-08-23 10:33:42
+ * @describe 预约登记操作记录表服务实现类
+ */
+@Slf4j
+@Service
+public class ComActReserveOperationRecordServiceImpl extends ServiceImpl<ComActReserveOperationRecordMapper, ComActReserveOperationRecordDO> implements ComActReserveOperationRecordService {
+    @Resource
+    private ComActReserveMapper comActReserveMapper;
+    @Resource
+    private ComActReserveRecordMapper comActReserveRecordMapper;
+    /**
+     * 添加预约登记操作记录
+     * @param reserveId 预约登记id
+     * @param reserveRecordId   预约登记记录id
+     * @param userId    用户id
+     * @param type  类型(1.本人操作 2.社区操作)
+     * @param phone 操作人手机号
+     * @param reserveContent    操作内容
+     * @param remark    备注
+     * @param status    状态(1.提交 2.预约成功 3.预约失败 4.取消)
+     * @param createBy  创建人
+     * @param reserveTime  预约成功时间
+     */
+    @Override
+    public void addReserveOperationRecord(Long reserveId, Long reserveRecordId, Long userId, Integer type
+            , String phone, String reserveContent,String remark,Integer status,Long createBy,Date reserveTime){
+        Date nowDate = new Date();
+        ComActReserveOperationRecordDO operationRecordDO = new ComActReserveOperationRecordDO();
+        operationRecordDO.setReserveId(reserveId);
+        operationRecordDO.setReserveRecordId(reserveRecordId);
+        operationRecordDO.setUserId(userId);
+        operationRecordDO.setType(type);
+        operationRecordDO.setPhone(phone);
+        operationRecordDO.setReserveContent(reserveContent);
+        operationRecordDO.setRemark(remark);
+        operationRecordDO.setStatus(status);
+        operationRecordDO.setCreateBy(createBy);
+        operationRecordDO.setCreateAt(nowDate);
+        operationRecordDO.setReserveTime(reserveTime);
+        this.baseMapper.insert(operationRecordDO);
+    }
+
+    @Override
+    public R detailOperationRecord(OperationDetailDTO comActReserveOperationRecordDO) {
+        if(comActReserveOperationRecordDO!=null){
+            ComOperationDetailVO comOperationDetailVO=new ComOperationDetailVO();
+            List<ComOperationListVO> comOperationListVOS=comActReserveRecordMapper.queryAll(comActReserveOperationRecordDO);
+            if(!comOperationListVOS.isEmpty()){
+                comOperationDetailVO.setList(comOperationListVOS);
+                ComActReserveRecordDO comActReserveRecordDO= comActReserveRecordMapper.selectById(comActReserveOperationRecordDO.getReserveRecordId());
+                if(comActReserveRecordDO.getStatus()==ComActReserveRecordDO.status.yqx||comActReserveRecordDO.getStatus()==ComActReserveRecordDO.status.sb){
+                    ComActReserveDO com=comActReserveMapper.selectById(comOperationListVOS.get(0).getReserveId());
+                    if(com!=null&&com.getStatus()==ComActReserveDO.status.jxz){
+                        comOperationDetailVO.setIsContinue(1);
+                    }
+                }
+            }
+
+            return R.ok(comOperationDetailVO);
+        }
+        return R.fail("未查询到数据");
+    }
+
+}
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActReserveRecordServiceImpl.java b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActReserveRecordServiceImpl.java
new file mode 100644
index 0000000..8fa5f01
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActReserveRecordServiceImpl.java
@@ -0,0 +1,283 @@
+package com.panzhihua.service_community.service.impl;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import cn.hutool.core.date.DateUtil;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.panzhihua.common.model.dtos.community.reserve.*;
+import com.panzhihua.common.model.vos.R;
+import com.panzhihua.common.model.vos.community.reserve.*;
+import com.panzhihua.common.utlis.DateUtils;
+import com.panzhihua.service_community.dao.ComActReserveAnswerContentMapper;
+import com.panzhihua.service_community.dao.ComActReserveOperationRecordMapper;
+import com.panzhihua.common.model.dtos.community.CancelRecordDTO;
+import com.panzhihua.common.model.vos.R;
+import com.panzhihua.service_community.dao.ComActReserveOperationRecordMapper;
+import com.panzhihua.service_community.dao.ComActReserveRecordMapper;
+import com.panzhihua.service_community.model.dos.ComActReserveOperationRecordDO;
+import com.panzhihua.service_community.model.dos.ComActReserveRecordDO;
+import com.panzhihua.service_community.service.ComActReserveOperationRecordService;
+import com.panzhihua.service_community.service.ComActReserveRecordService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.annotation.Resource;
+import java.math.BigDecimal;
+import java.math.RoundingMode;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.annotation.Resource;
+
+/**
+ * @auther lyq
+ * @create 2021-08-23 10:33:53
+ * @describe 预约登记记录表服务实现类
+ */
+@Slf4j
+@Service
+public class ComActReserveRecordServiceImpl extends ServiceImpl<ComActReserveRecordMapper, ComActReserveRecordDO> implements ComActReserveRecordService {
+    @Resource
+    private ComActReserveRecordMapper comActReserveRecordMapper;
+    @Resource
+    private ComActReserveAnswerContentMapper comActReserveAnswerContentMapper;
+    @Resource
+    private ComActReserveOperationRecordMapper comActReserveOperationRecordMapper;
+    @Resource
+    private ComActReserveOperationRecordService comActReserveOperationRecordService;
+
+    private final static String CANCEL="用户取消";
+    @Override
+    @Transactional
+    public R cancel(CancelRecordDTO comActReserveRecord) {
+        if(comActReserveRecord!=null&&comActReserveRecord.getId()!=null){
+            //查询当前操作数据并判断取消状态
+            ComActReserveRecordDO comActReserveRecordDO=comActReserveRecordMapper.selectById(comActReserveRecord.getId());
+            if(comActReserveRecordDO!=null&&comActReserveRecordDO.getStatus()!=ComActReserveRecordDO.status.yqx){
+                comActReserveRecordDO.setStatus(ComActReserveRecordDO.status.yqx);
+                comActReserveRecordDO.setRemark(comActReserveRecord.getContent());
+                comActReserveRecordDO.setReserveTime(DateUtil.date());
+                int result =comActReserveRecordMapper.updateById(comActReserveRecordDO);
+                //判断取消状态并添加操作记录
+                if(result>0){
+                    ComActReserveOperationRecordDO comActReserveOperationRecordDO=new ComActReserveOperationRecordDO();
+                    comActReserveOperationRecordDO.setReserveId(comActReserveRecordDO.getReserveId());
+                    comActReserveOperationRecordDO.setReserveRecordId(comActReserveRecordDO.getId());
+                    comActReserveOperationRecordDO.setType(ComActReserveOperationRecordDO.type.br);
+                    comActReserveOperationRecordDO.setCreateAt(DateUtil.date());
+                    comActReserveOperationRecordDO.setReserveContent(CANCEL);
+                    comActReserveOperationRecordDO.setPhone(comActReserveRecordDO.getPhone());
+                    comActReserveOperationRecordDO.setStatus(ComActReserveOperationRecordDO.status.qx);
+                    comActReserveOperationRecordDO.setUserId(comActReserveRecordDO.getUserId());
+                    comActReserveOperationRecordDO.setReserveTime(DateUtil.date());
+                    comActReserveOperationRecordMapper.insert(comActReserveOperationRecordDO);
+                    return R.ok();
+                }
+            }
+            return R.fail("无法重复取消");
+        }
+
+        return R.fail("参数异常");
+    }
+
+
+    /**
+     * 社区后台-根据预约id查询预约明细
+     * @param pageMakeDTO   请求参数
+     * @return  预约明细
+     */
+    @Override
+    public R pageMakeAdmin(PageReserveMakeAdminDTO pageMakeDTO){
+        return R.ok(this.baseMapper.pageMakeAdmin(new Page(pageMakeDTO.getPageNum(),pageMakeDTO.getPageSize()),pageMakeDTO));
+    }
+
+    /**
+     * 根据预约记录id查询预约明细操作记录
+     * @param reserveRecordId   预约记录id
+     * @return  预约明细操作记录
+     */
+    @Override
+    public R detailMakeAdmin(Long reserveRecordId){
+        ComActReserveMakeDetailAdminVO makeDetailAdminVO = this.baseMapper.getMakeDetailAdmin(reserveRecordId);
+        if(makeDetailAdminVO != null){
+            //查询预约明细操作记录
+            List<ComActReserveMakeOperationAdminVO> makeOperationList = comActReserveOperationRecordMapper.getMakeOperationList(reserveRecordId);
+            makeDetailAdminVO.setOperationList(makeOperationList);
+        }
+        return R.ok(makeDetailAdminVO);
+    }
+
+    /**
+     * 批量取消预约记录
+     * @param reserveRecordDTO   请求参数
+     * @return  取消结果
+     */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public R makeCancelAdmin(CancelReserveRecordDTO reserveRecordDTO){
+        Integer count = this.baseMapper.getReserveStatusById(reserveRecordDTO.getIds());
+        if(count > 0){
+            return R.ok("您选择的记录中存在未预约成功,不可进行批量取消");
+        }
+        if(this.baseMapper.editReserveStatusById(reserveRecordDTO.getIds()) > 0){
+            Long userId = reserveRecordDTO.getUserId();
+            reserveRecordDTO.getIds().forEach(id -> {
+                ComActReserveRecordDO reserveRecordDO = comActReserveRecordMapper.selectById(id);
+                if(reserveRecordDO != null){
+                    //添加操作记录
+                    comActReserveOperationRecordService.addReserveOperationRecord(reserveRecordDO.getReserveId()
+                            ,reserveRecordDO.getId(),reserveRecordDO.getUserId(),ComActReserveOperationRecordDO.type.sq,null
+                            ,"社区管理员取消预约",reserveRecordDTO.getRemark(),ComActReserveOperationRecordDO.status.qx,userId,null);
+                }
+            });
+            return R.ok();
+        }else{
+            return R.fail();
+        }
+    }
+
+    /**
+     * 预约明细导出数据查询
+     * @param pageMakeDTO   请求参数
+     * @return  预约明细数据
+     */
+    @Override
+    public R exportMakeAdmin(PageReserveMakeAdminDTO pageMakeDTO){
+        return R.ok(this.baseMapper.exportMakeAdmin(pageMakeDTO));
+    }
+
+    /**
+     * 分页查询登记统计汇总
+     * @param registerStatisticsDTO 请求参数
+     * @return  登记统计汇总
+     */
+    @Override
+    public R registerStatisticsAdmin(ComActReserveRegisterStatisticsDTO registerStatisticsDTO){
+        IPage<ComActReserveRegisterStatisticsAdminVO> registerStatisticsList = this.baseMapper.registerStatisticsAdmin(new Page(registerStatisticsDTO.getPageNum()
+                ,registerStatisticsDTO.getPageSize()),registerStatisticsDTO);
+        registerStatisticsList.getRecords().forEach(registerStatistics -> {
+            BigDecimal tag = BigDecimal.ZERO;
+            if(registerStatistics.getAllCount() > 0){
+                tag = BigDecimal.valueOf(registerStatistics.getCount()).divide(BigDecimal.valueOf(registerStatistics.getAllCount()),4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100));
+            }
+            registerStatistics.setTag(tag);
+        });
+        return R.ok(registerStatisticsList.getRecords());
+    }
+
+    /**
+     * 导出登记统计汇总
+     * @param registerStatisticsDTO 请求参数
+     * @return  登记统计汇总
+     */
+    @Override
+    public R registerStatisticsExportAdmin(ComActReserveRegisterStatisticsDTO registerStatisticsDTO){
+        List<ComActReserveRegisterStatisticsAdminVO> registerStatisticsList = this.baseMapper.registerStatisticsExportAdmin(registerStatisticsDTO);
+        registerStatisticsList.forEach(registerStatistics -> {
+            BigDecimal tag = BigDecimal.ZERO;
+            if(registerStatistics.getAllCount() > 0){
+                tag = BigDecimal.valueOf(registerStatistics.getCount()).divide(BigDecimal.valueOf(registerStatistics.getAllCount()),4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100));
+            }
+            registerStatistics.setTag(tag);
+        });
+        return R.ok(registerStatisticsList);
+    }
+
+    /**
+     * 分页查询预约处理列表
+     * @param pageMakeHandleDTO 请求参数
+     * @return  预约处理列表
+     */
+    @Override
+    public R pageMakeHandleAdmin(PageReserveMakeHandleAdminDTO pageMakeHandleDTO){
+        return R.ok(this.baseMapper.pageMakeHandleAdmin(new Page(pageMakeHandleDTO.getPageNum(),pageMakeHandleDTO.getPageSize()),pageMakeHandleDTO));
+    }
+
+    /**
+     * 批量处理预约记录
+     * @param makeHandleDTO 请求参数
+     * @return  处理结果
+     */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public R makeHandleAdmin(MakeHandleAdminDTO makeHandleDTO){
+        if(makeHandleDTO.getIds() == null || makeHandleDTO.getIds().isEmpty()){
+            return R.fail("请勾选预约记录");
+        }
+        //判断选中的所有记录是否都是待处理记录
+        if(this.baseMapper.getReserveListCountByIds(makeHandleDTO.getIds()) > 0){
+            return R.fail("您勾选的记录中存在不是待处理状态的记录,请核对后再进行处理");
+        }
+        Date nowDate = new Date();
+        Long userId = makeHandleDTO.getUserId();
+        String remark = makeHandleDTO.getRemark();
+        List<ComActReserveRecordDO> updateList = new ArrayList<>();
+        makeHandleDTO.getIds().forEach(id -> {
+            ComActReserveRecordDO reserveRecordDO = this.baseMapper.selectById(id);
+            if(reserveRecordDO != null){
+                Date reserveTime = DateUtils.stringToDate(makeHandleDTO.getMakeTime(),DateUtils.ymdhms_format);
+                //判断处理是否通过
+                if(makeHandleDTO.getIsOk().equals(MakeHandleAdminDTO.isOk.yes)){
+                    reserveRecordDO.setStatus(ComActReserveRecordDO.status.cg);
+                    comActReserveOperationRecordService.addReserveOperationRecord(reserveRecordDO.getReserveId()
+                            ,id,reserveRecordDO.getUserId(),ComActReserveOperationRecordDO.type.sq,null
+                            ,"社区管理员处理预约成功",remark,ComActReserveOperationRecordDO.status.cg,userId,reserveTime);
+                }else if(makeHandleDTO.getIsOk().equals(MakeHandleAdminDTO.isOk.no)){
+                    reserveRecordDO.setStatus(ComActReserveRecordDO.status.sb);
+                    comActReserveOperationRecordService.addReserveOperationRecord(reserveRecordDO.getReserveId()
+                            ,id,reserveRecordDO.getUserId(),ComActReserveOperationRecordDO.type.sq,null
+                            ,"社区管理员处理预约失败",remark,ComActReserveOperationRecordDO.status.sb,userId,null);
+                }
+                reserveRecordDO.setActRemark(remark);
+                reserveRecordDO.setReserveTime(reserveTime);
+                reserveRecordDO.setUpdateAt(nowDate);
+                reserveRecordDO.setUpdateBy(userId);
+                updateList.add(reserveRecordDO);
+            }
+        });
+
+        if(!updateList.isEmpty()){
+            this.updateBatchById(updateList);
+        }
+        return R.ok();
+    }
+
+    /**
+     * 导出预约处理列表数据查询
+     * @param pageMakeHandleDTO 请求参数
+     * @return  预约处理列表
+     */
+    @Override
+    public R exportMakeHandleAdmin(PageReserveMakeHandleAdminDTO pageMakeHandleDTO){
+        return R.ok(this.baseMapper.exportMakeHandleAdmin(pageMakeHandleDTO));
+    }
+
+    @Override
+    public R registerDetailedDetailAdmin(Long reserveRecordId){
+        //查询用户信息
+        ComActReserveRegisterDetailedVO registerDetailedVO = this.baseMapper.getRegisterDetailedByRecordId(reserveRecordId);
+        if(registerDetailedVO != null){
+            //组装用户身份信息
+            StringBuilder sb = new StringBuilder();
+            if(registerDetailedVO.getIsPartymember().equals(1)){
+                sb.append("党员/");
+            }
+            if(registerDetailedVO.getIsVolunteer().equals(1)){
+                sb.append("志愿者/");
+            }
+            if(sb.length() == 0){
+                sb.append("居民/");
+            }
+            String identity = sb.toString();
+            registerDetailedVO.setIdentity(identity.substring(0,identity.length()-1));
+            //查询答题数据
+            List<ComActReserveRegisterDetailedAnswerVO> answerList = comActReserveAnswerContentMapper.getRegisterDetailedAnswerList(reserveRecordId);
+            registerDetailedVO.setAnswerList(answerList);
+        }
+        return R.ok(registerDetailedVO);
+    }
+
+}
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActReserveServiceImpl.java b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActReserveServiceImpl.java
new file mode 100644
index 0000000..c5957c9
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActReserveServiceImpl.java
@@ -0,0 +1,606 @@
+package com.panzhihua.service_community.service.impl;
+
+import com.alibaba.fastjson.JSON;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import cn.hutool.core.date.DateUtil;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.google.common.collect.Lists;
+import com.panzhihua.common.model.dtos.community.reserve.*;
+import com.panzhihua.common.model.vos.R;
+import com.panzhihua.common.model.vos.community.questnaire.QuestnaiteSubSelectionVO;
+import com.panzhihua.common.model.vos.community.questnaire.QuestnaiteSubVO;
+import com.panzhihua.common.model.vos.community.reserve.*;
+import com.panzhihua.common.utlis.StringUtils;
+import com.panzhihua.service_community.dao.ComActReserveMapper;
+import com.panzhihua.service_community.dao.ComActReserveSubMapper;
+import com.panzhihua.service_community.model.dos.*;
+import com.panzhihua.common.model.dtos.community.PageUserReserveDTO;
+import com.panzhihua.common.model.vos.R;
+import com.panzhihua.common.model.vos.community.ComActReserveCommitVO;
+import com.panzhihua.common.model.vos.community.questnaire.QuestnaiteSubVO;
+import com.panzhihua.service_community.dao.*;
+import com.panzhihua.service_community.model.dos.*;
+import com.panzhihua.service_community.service.ComActReserveAnswerContentService;
+import com.panzhihua.service_community.service.ComActReserveRecordService;
+import com.panzhihua.service_community.service.ComActReserveService;
+import com.panzhihua.service_community.service.ComActReserveSubSelectionService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.BeanUtils;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.annotation.Resource;
+import java.math.BigDecimal;
+import java.math.RoundingMode;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @auther lyq
+ * @create 2021-08-23 10:33:11
+ * @describe 预约登记表服务实现类
+ */
+@Slf4j
+@Service
+public class ComActReserveServiceImpl extends ServiceImpl<ComActReserveMapper, ComActReserveDO> implements ComActReserveService {
+    @Resource
+    private ComActReserveMapper comActReserveMapper;
+    @Resource
+    private ComActReserveSubMapper comActReserveSubMapper;
+    @Resource
+    private ComActReserveSubSelectionMapper comActReserveSubSelectionMapper;
+    @Resource
+    private ComActReserveAnswerContentService comActReserveAnswerContentService;
+    @Resource
+    private ComActReserveRecordMapper comActReserveRecordMapper;
+    @Resource
+    private ComActReserveOperationRecordMapper comActReserveOperationRecordMapper;
+    @Resource
+    private ComActReserveSubSelectionService comActReserveSubSelectionService;
+    @Resource
+    private ComActReserveRecordService comActReserveRecordService;
+
+    private final static String COMMIT="用户已提交";
+    @Override
+    @Transactional
+    public R commit(ComActReserveCommitVO comActReserveCommitVO) {
+        if(comActReserveCommitVO!=null){
+            Long userId=comActReserveCommitVO.getUserId();
+            Date nowDate=DateUtil.date();
+            //查询预约登记记录
+            ComActReserveDO comActReserveDO=comActReserveMapper.selectById(comActReserveCommitVO.getId());
+            if(comActReserveDO!=null){
+                //查询当前用户是否已预约并判断是否能继续预约
+                if(comActReserveDO.getJoinAllCount()!=0){
+                    Integer count=comActReserveRecordMapper.selectCount(new QueryWrapper<ComActReserveRecordDO>().eq("reserve_id",comActReserveCommitVO.getId()));
+                    if(count>=comActReserveDO.getJoinAllCount()){
+                        return R.fail("预约已上限");
+                    }
+                }
+
+
+                List<ComActReserveRecordDO> list=comActReserveRecordMapper.selectList(new QueryWrapper<ComActReserveRecordDO>().eq("reserve_id",comActReserveCommitVO.getId()).eq("user_id",comActReserveCommitVO.getUserId()).in("status",1,2,3));
+                if(!list.isEmpty()&&list.size()>1&&comActReserveDO.getIsRepeat()==ComActReserveDO.isRepeat.no){
+                    return R.fail("提交失败,不可重复预约");
+                }
+                else {
+                    List<QuestnaiteSubVO> questnaiteSubVOS = JSON.parseArray(comActReserveCommitVO.getJsonObject(),QuestnaiteSubVO.class);
+                    if(!questnaiteSubVOS.isEmpty()){
+                        Long questId=comActReserveCommitVO.getId();
+                        List<ComActReserveAnswerContentDO> answerContentList=new ArrayList<>();
+                        for(QuestnaiteSubVO questnaiteSub:questnaiteSubVOS){
+                            //查询用户填写题目
+                            ComActReserveSubDO questnaireSubDO = comActReserveSubMapper.selectOne(new QueryWrapper<ComActReserveSubDO>().lambda()
+                                    .eq(ComActReserveSubDO::getReserveId,questId).eq(ComActReserveSubDO::getKey,questnaiteSub.getKey()));
+                            if(questnaireSubDO == null){
+                                log.error("未查询到调查问卷题目,题目名称:" + questnaiteSub.getLabel() + "题目key:" + questnaiteSub.getKey());
+                                continue;
+                            }
+
+                            Long queSubId = questnaireSubDO.getId();
+                            //根据上传的类型查询不同的题目选项
+                            if(questnaiteSub.getType().equals(QuestnaiteSubVO.type.danxuan)){
+
+                                //单选题处理
+                                ComActReserveSubSelectionDO subSelectionDO = comActReserveSubSelectionMapper.selectOne(new QueryWrapper<ComActReserveSubSelectionDO>()
+                                        .lambda().eq(ComActReserveSubSelectionDO::getReserveSubId,queSubId).eq(ComActReserveSubSelectionDO::getReserveId,questId)
+                                        .eq(ComActReserveSubSelectionDO::getKey,questnaiteSub.getValues()));
+                                if(subSelectionDO == null){
+                                    log.error("未查询到调查问卷选项,题目名称:" + questnaiteSub.getLabel() + "选项key:" + questnaiteSub.getValues());
+                                    continue;
+                                }
+
+                                ComActReserveAnswerContentDO answerContentDO = new ComActReserveAnswerContentDO();
+                                answerContentDO.setUserId(userId);
+                                answerContentDO.setCreateAt(nowDate);
+                                answerContentDO.setCreateBy(userId);
+                                answerContentDO.setReserveSelectionId(subSelectionDO.getId());
+                                answerContentDO.setReserveSubId(queSubId);
+                                answerContentDO.setType(1);
+                                answerContentDO.setChoice(subSelectionDO.getOptionName());
+                                answerContentDO.setAnswerContent(subSelectionDO.getContent());
+                                answerContentList.add(answerContentDO);
+                            }else if(questnaiteSub.getType().equals(QuestnaiteSubVO.type.duoxuan)){
+                                //多选题处理
+                                String values = questnaiteSub.getValues();
+                                String []value = values.split(",");
+                                for (int i = 0; i < value.length; i++) {
+                                    ComActReserveSubSelectionDO subSelectionDO = comActReserveSubSelectionMapper.selectOne(new QueryWrapper<ComActReserveSubSelectionDO>()
+                                            .lambda().eq(ComActReserveSubSelectionDO::getReserveSubId,queSubId).eq(ComActReserveSubSelectionDO::getReserveId,questId)
+                                            .eq(ComActReserveSubSelectionDO::getKey,value[i]));
+                                    if(subSelectionDO == null){
+                                        log.error("未查询到调查问卷选项,题目名称:" + questnaiteSub.getLabel() + "选项key:" + questnaiteSub.getValues());
+                                        continue;
+                                    }
+                                    ComActReserveAnswerContentDO answerContentDO = new ComActReserveAnswerContentDO();
+                                    answerContentDO.setUserId(userId);
+                                    answerContentDO.setCreateAt(nowDate);
+                                    answerContentDO.setCreateBy(userId);
+                                    answerContentDO.setReserveSelectionId(subSelectionDO.getId());
+                                    answerContentDO.setReserveSubId(queSubId);
+                                    answerContentDO.setType(1);
+                                    answerContentDO.setChoice(subSelectionDO.getOptionName());
+                                    answerContentDO.setAnswerContent(subSelectionDO.getContent());
+                                    answerContentList.add(answerContentDO);
+                                }
+                            }else{
+                                //问答题处理
+                                String values = questnaiteSub.getValues();
+                                ComActReserveAnswerContentDO answerContentDO = new ComActReserveAnswerContentDO();
+                                answerContentDO.setUserId(userId);
+                                answerContentDO.setCreateAt(nowDate);
+                                answerContentDO.setCreateBy(userId);
+                                answerContentDO.setReserveSubId(queSubId);
+                                answerContentDO.setType(2);
+                                answerContentDO.setAnswerContent(values);
+                                answerContentList.add(answerContentDO);
+                            }
+                        }
+                        if(!answerContentList.isEmpty()){
+                            //更新回答用户数量
+                            Integer joinCount = comActReserveDO.getJoinCount();
+                            comActReserveDO.setJoinCount(joinCount != null ? joinCount + 1 : 1);
+                            comActReserveMapper.updateById(comActReserveDO);
+                            //新增用户答题记录
+                            ComActReserveRecordDO userAnswerDO = new ComActReserveRecordDO();
+                            userAnswerDO.setName(comActReserveCommitVO.getName());
+                            userAnswerDO.setCommunityId(comActReserveCommitVO.getCommunityId());
+                            userAnswerDO.setPhone(comActReserveCommitVO.getPhone());
+                            userAnswerDO.setReserveId(questId);
+                            userAnswerDO.setReserveTime(comActReserveCommitVO.getReserveTime());
+                            userAnswerDO.setUserId(userId);
+                            userAnswerDO.setType(comActReserveCommitVO.getType());
+                            userAnswerDO.setCreateAt(nowDate);
+                            userAnswerDO.setJsonObject(comActReserveCommitVO.getJsonObject());
+                            if(comActReserveCommitVO.getType()==ComActReserveRecordDO.type.yy){
+                                userAnswerDO.setStatus(ComActReserveRecordDO.status.dcl);
+                            }
+                            else {
+                                userAnswerDO.setStatus(ComActReserveRecordDO.status.cg);
+                            }
+                            comActReserveRecordService.saveOrUpdate(userAnswerDO);
+
+                            //给答题记录赋值预约登记记录id
+                            answerContentList.forEach(answerContent -> {
+                                answerContent.setReserveRecordId(userAnswerDO.getId());
+                            });
+                            comActReserveAnswerContentService.saveBatch(answerContentList);
+                            //新增用户操作记录
+                            ComActReserveOperationRecordDO comActReserveOperationRecordDO=new ComActReserveOperationRecordDO();
+                            comActReserveOperationRecordDO.setReserveId(comActReserveCommitVO.getId());
+                            comActReserveOperationRecordDO.setReserveRecordId(userAnswerDO.getId());
+                            comActReserveOperationRecordDO.setType(ComActReserveOperationRecordDO.type.br);
+                            comActReserveOperationRecordDO.setCreateAt(DateUtil.date());
+                            comActReserveOperationRecordDO.setReserveTime(comActReserveCommitVO.getReserveTime());
+                            comActReserveOperationRecordDO.setReserveContent(COMMIT);
+                            comActReserveOperationRecordDO.setPhone(comActReserveCommitVO.getPhone());
+                            comActReserveOperationRecordDO.setStatus(ComActReserveOperationRecordDO.status.ytj);
+                            comActReserveOperationRecordDO.setUserId(comActReserveCommitVO.getUserId());
+                            comActReserveOperationRecordMapper.insert(comActReserveOperationRecordDO);
+                        return R.ok("提交成功");
+                        }
+                    }
+                }
+
+            }
+        }
+        return R.fail("参数错误");
+    }
+
+
+    /**
+     * 社区后台-分页查询预约登记列表
+     * @param pageReserveDTO    请求参数
+     * @return  预约登记列表
+     */
+    @Override
+    public R pageReserveAdmin(PageReserveAdminDTO pageReserveDTO){
+        IPage<ComActReserveListAdminVO> reservePage = this.baseMapper.pageReserveAdmin(new Page(pageReserveDTO.getPageNum(),pageReserveDTO.getPageSize()),pageReserveDTO);
+        reservePage.getRecords().forEach(reserve -> {
+            //判断广告位置
+            StringBuilder sb = new StringBuilder();
+            if(reserve.getAdverPositionTop().equals(ComActQuestnaireDO.isOk.yes)){
+                sb.append("首页顶部,");
+            }
+            if(reserve.getAdverPositionApplication().equals(ComActQuestnaireDO.isOk.yes)){
+                sb.append("首页应用,");
+            }
+            String advertPosition = sb.toString();
+            if(advertPosition.length() > 0){
+                reserve.setAdvertPosition(advertPosition.substring(0,advertPosition.length()-1));
+            }else{
+                reserve.setAdvertPosition("无");
+            }
+        });
+        return R.ok(reservePage);
+    }
+
+    /**
+     * 社区后台-新增预约登记信息
+     * @param addReserveDTO 请求参数
+     * @return  新增结果
+     */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public R addReserveAdmin(AddReserveAdminDTO addReserveDTO){
+        Date nowDate = new Date();
+        Long userId = addReserveDTO.getUserId();
+        //新增预约登记信息
+        ComActReserveDO reserveDO = new ComActReserveDO();
+        BeanUtils.copyProperties(addReserveDTO,reserveDO);
+        reserveDO.setStatus(ComActReserveDO.status.dfb);
+        reserveDO.setCreateAt(nowDate);
+        reserveDO.setCreateBy(userId);
+
+        if(addReserveDTO.getIsPublish().equals(ComActReserveDO.isOk.yes)){
+            reserveDO.setStatus(ComActReserveDO.status.jxz);
+            reserveDO.setPublishTime(nowDate);
+        }
+        this.baseMapper.insert(reserveDO);
+
+        //根据上传的json数据录入选项以及题目到数据库
+        if(StringUtils.isEmpty(addReserveDTO.getJsonObject())){
+            return R.fail("组件json数据为空,录入失败");
+        }
+        List<QuestnaiteSubVO> reserveSubVOS = JSON.parseArray(addReserveDTO.getJsonObject(),QuestnaiteSubVO.class);
+        reserveSubVOS.forEach(reserveSub -> {
+            ComActReserveSubDO comActReserveSubDO = new ComActReserveSubDO();
+            comActReserveSubDO.setType(reserveSub.getType());
+            comActReserveSubDO.setContent(reserveSub.getLabel());
+            comActReserveSubDO.setSort(reserveSub.getSort());
+            comActReserveSubDO.setReserveId(reserveDO.getId());
+            comActReserveSubDO.setCreateBy(userId);
+            comActReserveSubDO.setCreateAt(nowDate);
+            comActReserveSubDO.setKey(reserveSub.getKey());
+            comActReserveSubMapper.insert(comActReserveSubDO);
+
+            ArrayList<ComActReserveSubSelectionDO> subSelectionList = Lists.newArrayList();
+            if(reserveSub.getOptions() != null && !reserveSub.getOptions().isEmpty()) {
+                List<QuestnaiteSubSelectionVO> subOptions = reserveSub.getOptions();
+                for(int i=0; i<subOptions.size(); i++){
+                    QuestnaiteSubSelectionVO subSelect = subOptions.get(i);
+                    ComActReserveSubSelectionDO subSelectionDO = new ComActReserveSubSelectionDO();
+                    subSelectionDO.setReserveSubId(comActReserveSubDO.getId());
+                    if(subSelect.getType().equals(1)){
+                        //添加选项名称
+                        subSelectionDO.setOptionName(subSelect.getOptionName());
+                    }else {
+                        subSelectionDO.setOptionName(String.valueOf(Character.toChars('A' + i)));
+                    }
+                    subSelectionDO.setContent(subSelect.getLabel());
+                    subSelectionDO.setReserveId(reserveDO.getId());
+                    subSelectionDO.setCreateBy(userId);
+                    subSelectionDO.setCreateAt(nowDate);
+                    subSelectionDO.setType(subSelect.getType());
+                    subSelectionDO.setKey(subSelect.getKey());
+                    subSelectionList.add(subSelectionDO);
+                }
+            }
+            comActReserveSubSelectionService.saveBatch(subSelectionList);
+        });
+
+        return R.ok();
+    }
+
+    /**
+     * 社区后台-编辑预约登记信息
+     * @param editReserveDTO 请求参数
+     * @return  新增结果
+     */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public R editReserveAdmin(EditReserveAdminDTO editReserveDTO){
+        Date nowDate = new Date();
+        Long userId = editReserveDTO.getUserId();
+        Long reserveId = editReserveDTO.getId();
+        //查询预约登记信息
+        ComActReserveDO reserveDO = this.baseMapper.selectById(reserveId);
+        if(reserveDO == null){
+            return R.fail("未查询到预约登记记录");
+        }
+        if(!reserveDO.getStatus().equals(ComActReserveDO.status.dfb)){
+            return R.fail("不可修改不是待发布状态的预约登记记录");
+        }
+        BeanUtils.copyProperties(editReserveDTO,reserveDO);
+        reserveDO.setStatus(ComActReserveDO.status.dfb);
+        reserveDO.setUpdateAt(nowDate);
+        reserveDO.setUpdateBy(userId);
+        if(editReserveDTO.getIsPublish().equals(ComActReserveDO.isOk.yes)){
+            reserveDO.setStatus(ComActReserveDO.status.jxz);
+            reserveDO.setPublishTime(nowDate);
+        }
+        this.baseMapper.updateById(reserveDO);
+
+        //根据上传的json数据录入选项以及题目到数据库
+        if(StringUtils.isEmpty(editReserveDTO.getJsonObject())){
+            return R.fail("组件json数据为空,录入失败");
+        }
+
+        //清除原来预约登记题目以及题目选项
+        this.baseMapper.deleteReserveSubAll(reserveId);
+        //清除原有的,添加更新的
+        List<QuestnaiteSubVO> reserveSubVOS = JSON.parseArray(editReserveDTO.getJsonObject(),QuestnaiteSubVO.class);
+        if(reserveSubVOS.isEmpty()){
+            return R.fail("组件json数据为空,录入失败");
+        }
+        reserveSubVOS.forEach(reserveSub -> {
+            ComActReserveSubDO comActReserveSubDO = new ComActReserveSubDO();
+            comActReserveSubDO.setType(reserveSub.getType());
+            comActReserveSubDO.setContent(reserveSub.getLabel());
+            comActReserveSubDO.setSort(reserveSub.getSort());
+            comActReserveSubDO.setReserveId(reserveDO.getId());
+            comActReserveSubDO.setCreateBy(userId);
+            comActReserveSubDO.setCreateAt(nowDate);
+            comActReserveSubDO.setKey(reserveSub.getKey());
+            comActReserveSubMapper.insert(comActReserveSubDO);
+
+            ArrayList<ComActReserveSubSelectionDO> subSelectionList = Lists.newArrayList();
+            if(reserveSub.getOptions() != null && !reserveSub.getOptions().isEmpty()) {
+                List<QuestnaiteSubSelectionVO> subOptions = reserveSub.getOptions();
+                for(int i=0; i<subOptions.size(); i++){
+                    QuestnaiteSubSelectionVO subSelect = subOptions.get(i);
+                    ComActReserveSubSelectionDO subSelectionDO = new ComActReserveSubSelectionDO();
+                    subSelectionDO.setReserveSubId(comActReserveSubDO.getId());
+                    if(subSelect.getType().equals(1)){
+                        //添加选项名称
+                        subSelectionDO.setOptionName(subSelect.getOptionName());
+                    }else {
+                        subSelectionDO.setOptionName(String.valueOf(Character.toChars('A' + i)));
+                    }
+                    subSelectionDO.setContent(subSelect.getLabel());
+                    subSelectionDO.setReserveId(reserveDO.getId());
+                    subSelectionDO.setCreateBy(userId);
+                    subSelectionDO.setCreateAt(nowDate);
+                    subSelectionDO.setType(subSelect.getType());
+                    subSelectionDO.setKey(subSelect.getKey());
+                    subSelectionList.add(subSelectionDO);
+                }
+            }
+            comActReserveSubSelectionService.saveBatch(subSelectionList);
+        });
+        return R.ok();
+    }
+
+    /**
+     * 社区后台-修改预约登记状态
+     * @param editReserveDTO    请求参数
+     * @return  修改结果
+     */
+    @Override
+    public R editReserveStatusAdmin(EditComActReserveStatusDTO editReserveDTO){
+        Date nowDate = new Date();
+        Long userId = editReserveDTO.getUserId();
+        Long reserveId = editReserveDTO.getId();
+        //查询预约登记信息
+        ComActReserveDO reserveDO = this.baseMapper.selectById(reserveId);
+        if(reserveDO == null){
+            return R.fail("未查询到预约登记记录");
+        }
+
+        if(editReserveDTO.getType().equals(EditComActReserveStatusDTO.type.tz)){
+            reserveDO.setStatus(ComActReserveDO.status.ytz);
+            reserveDO.setEndTime(nowDate);
+        }else if(editReserveDTO.getType().equals(EditComActReserveStatusDTO.type.fb)){
+            reserveDO.setStatus(ComActReserveDO.status.jxz);
+            reserveDO.setPublishTime(nowDate);
+        }
+        reserveDO.setUpdateBy(userId);
+        reserveDO.setUpdateAt(nowDate);
+        if(this.baseMapper.updateById(reserveDO) > 0){
+            return R.ok();
+        }else{
+            return R.fail();
+        }
+    }
+
+    /**
+     * 社区后台-继续预约登记
+     * @param editReserveDTO    请求参数
+     * @return  修改结果
+     */
+    @Override
+    public R editReserveInfoAdmin(EditComActReserveInfoDTO editReserveDTO){
+        Date nowDate = new Date();
+        Long userId = editReserveDTO.getUserId();
+        Long reserveId = editReserveDTO.getId();
+        //查询预约登记信息
+        ComActReserveDO reserveDO = this.baseMapper.selectById(reserveId);
+        if(reserveDO == null){
+            return R.fail("未查询到预约登记记录");
+        }
+        BeanUtils.copyProperties(editReserveDTO,reserveDO);
+        reserveDO.setStatus(ComActReserveDO.status.jxz);
+        reserveDO.setUpdateAt(nowDate);
+        reserveDO.setUpdateBy(userId);
+        reserveDO.setEndTime(null);
+        if(this.baseMapper.updateById(reserveDO) > 0){
+            return R.ok();
+        }else{
+            return R.fail();
+        }
+    }
+
+    /**
+     * 社区后台-根据预约登记id查询详情
+     * @param reserveId 预约登记id
+     * @return  预约登记详情
+     */
+    @Override
+    public R detailReserveAdmin(Long reserveId){
+        ComActReserveDetailAdminVO reserveDetailAdminVO = new ComActReserveDetailAdminVO();
+        //查询预约登记信息
+        ComActReserveDO reserveDO = this.baseMapper.selectById(reserveId);
+        BeanUtils.copyProperties(reserveDO,reserveDetailAdminVO);
+        return R.ok(reserveDetailAdminVO);
+    }
+
+    /**
+     * 社区后台-根据社区id统计预约类数据
+     * @param makeStatisticsDTO   请求参数
+     * @return  统计预约类数据
+     */
+    @Override
+    public R makeStatisticsAdmin(ComActReserveMakeStatisticsDTO makeStatisticsDTO){
+        Long communityId = makeStatisticsDTO.getCommunityId();
+        ComActReserveMakeStatisticsAdminVO makeStatisticsAdminVO = new ComActReserveMakeStatisticsAdminVO();
+        //查询预约登记统计汇总左边数据
+        List<ComActReserveMakeLeftStatisticsAdminVO> leftStatisticsList = this.baseMapper.getReserveMakeLeftStatistics(communityId);
+        if(!leftStatisticsList.isEmpty()){
+            makeStatisticsAdminVO.setLeftStatisticsList(leftStatisticsList);
+        }
+
+        //查询预约登记统计汇总右边数据
+        List<ComActReserveMakeRightStatisticsAdminVO> rightStatisticsList = getRightStatisticsList(makeStatisticsDTO);
+        if(!rightStatisticsList.isEmpty()){
+            makeStatisticsAdminVO.setRightStatisticsList(rightStatisticsList);
+        }
+        return R.ok(makeStatisticsAdminVO);
+    }
+
+    /**
+     * 社区后台-查询预约统计汇总右边数据
+     * @param makeStatisticsDTO 请求参数
+     * @return  预约统计汇总右边数据
+     */
+    private List<ComActReserveMakeRightStatisticsAdminVO> getRightStatisticsList(ComActReserveMakeStatisticsDTO makeStatisticsDTO){
+        Long communityId = makeStatisticsDTO.getCommunityId();
+        //查询预约登记统计汇总右边数据
+        List<ComActReserveMakeRightStatisticsAdminVO> rightStatisticsList = this.baseMapper.getReserveMakeRightStatistics(makeStatisticsDTO);
+        if(!rightStatisticsList.isEmpty()){
+            rightStatisticsList.forEach(rightStatistics -> {
+                String date = rightStatistics.getReserveTime();
+                Integer count = this.baseMapper.getReserveRecordCount(communityId,date + " 00:00:00",date + " 23:59:59");
+                rightStatistics.setAllCount(count);
+
+                //计算百分比
+                BigDecimal tag = BigDecimal.ZERO;
+                if(count >= 0){
+                    tag = BigDecimal.valueOf(rightStatistics.getCount()).divide(BigDecimal.valueOf(count),2, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100));
+                }
+                rightStatistics.setTag(tag);
+            });
+        }
+        return rightStatisticsList;
+    }
+
+    /**
+     * 社区后台-查询导出预约统计汇总数据
+     * @param makeStatisticsDTO   请求参数
+     * @return  统计预约类数据
+     */
+    @Override
+    public R makeStatisticsExportAdmin(ComActReserveMakeStatisticsDTO makeStatisticsDTO){
+        return R.ok(getRightStatisticsList(makeStatisticsDTO));
+    }
+
+    /**
+     * 删除预约登记信息
+     * @param reserveId 预约登记id
+     * @return  删除结果
+     */
+    @Override
+    public R deleteReserveAdmin(Long reserveId){
+        //查询预约登记信息
+        ComActReserveDO reserveDO = this.baseMapper.selectById(reserveId);
+        if(reserveDO == null){
+            return R.fail("未查询到预约登记信息");
+        }
+        reserveDO.setIsDel(ComActReserveDO.isOk.yes);
+        reserveDO.setUpdateAt(new Date());
+
+        if(this.baseMapper.updateById(reserveDO) > 0){
+            return R.ok();
+        }else{
+            return R.fail();
+        }
+    }
+
+    /**
+     * 查询社区所有预约信息列表
+     * @param communityId   社区id
+     * @return  预约信息列表
+     */
+    @Override
+    public R listReserveAdmin(Long communityId){
+        return R.ok(this.baseMapper.listReserveAdmin(communityId));
+    }
+
+    @Override
+    public R getById(Long id,Long userId,Long recordId,Integer isBack) {
+        ComActReserveDO comActReserveDO=comActReserveMapper.selectById(id);
+        if(comActReserveDO!=null){
+            ComActReserveDetailVO comActReserveDetailVO=new ComActReserveDetailVO();
+            if(isBack!=1){
+                comActReserveDO.setViewNum(comActReserveDO.getViewNum()+1);
+                BeanUtils.copyProperties(comActReserveDO,comActReserveDetailVO);
+                List<ComActReserveRecordDO> list=comActReserveRecordMapper.selectList(new QueryWrapper<ComActReserveRecordDO>().eq("user_id",userId).eq("reserve_id",id).in("status",1,2).orderByDesc("reserve_time"));
+                List<ComActReserveRecordDO> secondlist=comActReserveRecordMapper.selectList(new QueryWrapper<ComActReserveRecordDO>().eq("user_id",userId).eq("reserve_id",id).orderByDesc("reserve_time"));
+                //判断当前数据是否可重复提交
+                if(comActReserveDO.getIsRepeat()==ComActReserveDetailVO.isOk.y||list.isEmpty()){
+                    comActReserveDetailVO.setIsOk(ComActReserveDetailVO.isOk.n);
+                }else {
+                    comActReserveDetailVO.setIsOk(ComActReserveDetailVO.isOk.y);
+                }
+                //如果用户已提交返回最新一条记录 列表时间倒序排列
+                if(!list.isEmpty()){
+                    comActReserveDetailVO.setJsonObject(list.get(0).getJsonObject());
+                    comActReserveDetailVO.setReserveTime(list.get(0).getReserveTime());
+                }
+                if(!secondlist.isEmpty()&&recordId!=null){
+                    secondlist.forEach(comActReserveRecordDO -> {
+                        if(comActReserveRecordDO.getId().equals(recordId)){
+                            comActReserveDetailVO.setRecordStatus(comActReserveRecordDO.getStatus());
+                        }
+                    });
+                }
+                //更新浏览量
+                comActReserveMapper.updateById(comActReserveDO);
+                return R.ok(comActReserveDetailVO);
+            }
+            ComActReserveRecordDO comActReserveRecordDO =comActReserveRecordMapper.selectById(recordId);
+            if(comActReserveRecordDO!=null){
+                BeanUtils.copyProperties(comActReserveRecordDO,comActReserveDetailVO);
+            }
+            return R.ok(comActReserveDetailVO);
+        }
+        return R.fail("未查询到数据");
+
+    }
+
+    @Override
+    public R pageReserveList(PageUserReserveDTO pageUserReserveDTO) {
+        return R.ok(comActReserveRecordMapper.pageReserveList(new Page<ComActReserveDO>(pageUserReserveDTO.getPageNum(), pageUserReserveDTO.getPageSize()),pageUserReserveDTO));
+    }
+}
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActReserveSubSelectionServiceImpl.java b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActReserveSubSelectionServiceImpl.java
new file mode 100644
index 0000000..101ca44
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActReserveSubSelectionServiceImpl.java
@@ -0,0 +1,19 @@
+package com.panzhihua.service_community.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.panzhihua.service_community.dao.ComActReserveSubSelectionMapper;
+import com.panzhihua.service_community.model.dos.ComActReserveSubSelectionDO;
+import com.panzhihua.service_community.service.ComActReserveSubSelectionService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+/**
+ * @auther lyq
+ * @create 2021-08-23 10:34:13
+ * @describe 预约登记题目选项 服务实现类
+ */
+@Slf4j
+@Service
+public class ComActReserveSubSelectionServiceImpl extends ServiceImpl<ComActReserveSubSelectionMapper, ComActReserveSubSelectionDO> implements ComActReserveSubSelectionService {
+
+}
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActReserveSubServiceImpl.java b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActReserveSubServiceImpl.java
new file mode 100644
index 0000000..a745232
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActReserveSubServiceImpl.java
@@ -0,0 +1,43 @@
+package com.panzhihua.service_community.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.panzhihua.common.model.vos.R;
+import com.panzhihua.common.model.vos.community.reserve.ComActReserveSubListVO;
+import com.panzhihua.service_community.dao.ComActReserveSubMapper;
+import com.panzhihua.service_community.model.dos.ComActReserveSubDO;
+import com.panzhihua.service_community.service.ComActReserveSubService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @auther lyq
+ * @create 2021-08-23 10:34:03
+ * @describe 预约登记题目选项服务实现类
+ */
+@Slf4j
+@Service
+public class ComActReserveSubServiceImpl extends ServiceImpl<ComActReserveSubMapper, ComActReserveSubDO> implements ComActReserveSubService {
+
+    /**
+     * 查询预约登记题目列表
+     * @param reserveId 预约登记id
+     * @return  约登记题目列表
+     */
+    @Override
+    public R subjectListAdmin(Long reserveId){
+        List<ComActReserveSubListVO> resultList = new ArrayList<>(100);
+        resultList.add(new ComActReserveSubListVO("nub","序号"));
+        resultList.add(new ComActReserveSubListVO("nickName","用户昵称"));
+        List<ComActReserveSubListVO> list = this.baseMapper.getReserveSubjectList(reserveId);
+        if(list != null && !list.isEmpty()){
+            resultList.addAll(list);
+        }
+        resultList.add(new ComActReserveSubListVO("id","登记流水"));
+        resultList.add(new ComActReserveSubListVO("time","登记时间"));
+        return R.ok(resultList);
+    }
+
+}
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActServiceImpl.java b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActServiceImpl.java
index 41cd082..b40fda8 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActServiceImpl.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActServiceImpl.java
@@ -102,6 +102,10 @@
         // }
         BeanUtils.copyProperties(comActVO, comActDO);
 
+//        ComActDO selectOne = comActDAO.selectOne(new QueryWrapper<ComActDO>().lambda().eq(ComActDO::getAccount, account));
+//        if (null != selectOne && selectOne.getAccount().equals(comActVO.getAccount())) {
+//            return R.fail("该登录账号重复,请重新修改");
+//        }
         int update = comActDAO.updateById(comActDO);
         if (update > 0) {
             if (a == 1) {
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 418f6a8..501e34b 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
@@ -67,8 +67,7 @@
  */
 @Slf4j
 @Service
-public class ComMngPopulationServiceImpl extends ServiceImpl<ComMngPopulationDAO, ComMngPopulationDO>
-    implements ComMngPopulationService {
+public class ComMngPopulationServiceImpl extends ServiceImpl<ComMngPopulationDAO, ComMngPopulationDO> implements ComMngPopulationService {
     @Resource
     private ComMngPopulationDAO populationDAO;
     @Resource
@@ -551,7 +550,7 @@
         try {
             // 查询社区信息
             log.info("开始查询社区信息数据");
-            ComPopulationActVO populationActVO = comActDAO.getPopulationActById(communityId);
+            ComPopulationActVO populationActVO = comActDAO.getPopulationActById(31L);
             if (populationActVO == null) {
                 log.error("未查询到社区信息");
                 return R.fail("未查询到社区信息");
@@ -561,7 +560,7 @@
             // 查询当前社区标签列表
             List<String> labelList = new ArrayList<>();
             List<ComMngUserTagDO> comMngUserTagDOS = comMngUserTagDAO
-                .selectList(new QueryWrapper<ComMngUserTagDO>().eq("sys_flag", 1).or().eq("community_id", communityId));
+                .selectList(new QueryWrapper<ComMngUserTagDO>().eq("sys_flag", 1).or().eq("community_id", 31));
             if (!ObjectUtils.isEmpty(comMngUserTagDOS)) {
                 labelList = comMngUserTagDOS.stream().map(comMngUserTagDO -> comMngUserTagDO.getTagName())
                     .collect(Collectors.toList());
@@ -633,7 +632,7 @@
                 log.info("开始查询小区街路巷是否存在");
                 // 查询小区街路巷是否存在
                 ComMngVillageDO comMngVillageDO = null;
-                String villageKey = communityId + vo.getRoad() + vo.getDoorNo();
+                String villageKey = 31 + vo.getRoad() + vo.getDoorNo();
                 if (!isOnly(villageKey, villageMap)) {
                     comMngVillageDO = (ComMngVillageDO)villageMap.get(villageKey);
                 } else {
@@ -6662,7 +6661,7 @@
         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.setCultureLevel(PopulCultureLevelEnum.getCnDescByName(vo.getCultureLevel()));
         // mvo.setMarriage(PopulMarriageEnum.getCnDescByName(vo.getMarriage()));
         mvo.setOutOrLocal(PopulOutOrLocalEnum.getCnDescByName(vo.getOutOrLocal()));
         mvo.setIsCorrectGroup(PopulHouseUseEnum.getCnDescByName(vo.getIsCorrectGroup()));
@@ -6678,7 +6677,7 @@
     private void setMajorMistake(ComMngPopulationMajorMistakeExcelVO mvo, ComMngPopulationMajorExcelVO vo) {
         // mvo.setPoliticalOutlook(PopulPoliticalOutlookEnum.getCnDescByName(vo.getPoliticalOutlook()));
         mvo.setIsRent(PopulHouseUseEnum.getCnDescByName(vo.getIsRent()));
-        mvo.setCustodyRelation(PopulRelationEnum.getCnDescByName(vo.getCustodyRelation()));
+//        mvo.setCustodyRelation(PopulRelationEnum.getCnDescByName(vo.getCustodyRelation()));
         // mvo.setRelation(PopulRelationEnum.getCnDescByName(vo.getRelation()));
         mvo.setHouseStatus(PopulHouseStatusEnum.getCnDescByName(vo.getHouseStatus()));
         mvo.setHousePurpose(PopulHousePurposeEnum.getCnDescByName(vo.getHousePurpose()));
@@ -6712,7 +6711,7 @@
         ComMngPopulationRehabilitationExcelVO vo) {
         // mvo.setPoliticalOutlook(PopulPoliticalOutlookEnum.getCnDescByName(vo.getPoliticalOutlook()));
         mvo.setIsRent(PopulHouseUseEnum.getCnDescByName(vo.getIsRent()));
-        mvo.setPatientRelation(PopulRelationEnum.getCnDescByName(vo.getPatientRelation()));
+//        mvo.setPatientRelation(PopulRelationEnum.getCnDescByName(vo.getPatientRelation()));
         mvo.setHouseStatus(PopulHouseStatusEnum.getCnDescByName(vo.getHouseStatus()));
         mvo.setHousePurpose(PopulHousePurposeEnum.getCnDescByName(vo.getHousePurpose()));
         mvo.setControlStatus(PopulHouseControlStatusEnum.getCnDescByName(vo.getControlStatus()));
@@ -6760,7 +6759,7 @@
     }
 
     private void setVeteransMistake(ComMngPopulationVeteransMistakeExcelVO mvo, ComMngPopulationVeteransExcelVO vo) {
-        mvo.setRegiterNature(PopulRegiterNatureEnum.getCnDescByName(vo.getRegiterNature()));
+//        mvo.setRegiterNature(PopulRegiterNatureEnum.getCnDescByName(vo.getRegiterNature()));
         mvo.setPoliticalOutlook(PopulPoliticalOutlookEnum.getCnDescByName(vo.getPoliticalOutlook()));
         mvo.setIsRent(PopulHouseUseEnum.getCnDescByName(vo.getIsRent()));
         // mvo.setPatientRelation(PopulRelationEnum.getCnDescByName(vo.getPatientRelation()));
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
index 76d16e0..7bcbc5e 100644
--- 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
@@ -341,15 +341,27 @@
     @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,","));
-        // });
+         list.forEach(comSwDangerReportExcelVO -> {
+             // 整改人员id查询整改人员的名字和电话
+             StringBuilder dangerNameString = new StringBuilder();
+             StringBuilder dangerPhoneString = new StringBuilder();
+             if (StringUtils.isNotEmpty(comSwDangerReportExcelVO.getDpersonName())) {
+                 String[] dangerIds = comSwDangerReportExcelVO.getDpersonName().split(",");
+                 for (int i = 0; i < dangerIds.length; i++) {
+                     Map<String, String> person = comSwPatrolRecordDAO.getPbServiceTeamById(dangerIds[i]);
+                     if (person != null) {
+                         if (i != 0) {
+                             dangerNameString.append(",");
+                             dangerPhoneString.append(",");
+                         }
+                         dangerNameString.append(person.get("name"));
+                         dangerPhoneString.append(person.get("phone"));
+                     }
+                 }
+                 comSwDangerReportExcelVO.setDpersonName(dangerNameString.toString());
+                 comSwDangerReportExcelVO.setDpersonPhone(dangerPhoneString.toString());
+             }
+         });
         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
index 8645f83..2b6b7ea 100644
--- 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
@@ -93,7 +93,13 @@
         BeanUtils.copyProperties(comSwPatrolRecordAddDTO, comSwPatrolRecordDO);
         Long patrolRecordId = Snowflake.getId();
         comSwPatrolRecordDO.setId(patrolRecordId);
-        comSwPatrolRecordDO.setPatrolTime(new Date());
+        if(StringUtils.isEmpty(comSwPatrolRecordAddDTO.getPatrolTime())){
+            comSwPatrolRecordDO.setPatrolTime(new Date());
+        }else {
+            comSwPatrolRecordDO.setPatrolTime(
+                    DateUtils.stringToDate(comSwPatrolRecordAddDTO.getPatrolTime(), DateUtils.yyyyMMdd_format));
+        }
+//        comSwPatrolRecordDO.setPatrolTime(new Date());
         comSwPatrolRecordDO.setSuccessionTime(
             DateUtils.stringToDate(comSwPatrolRecordAddDTO.getSuccessionTime(), DateUtils.yyyyMMdd_format));
         StringBuilder nameString = new StringBuilder();
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/resources/mapper/ComActActEvaluateMapper.xml b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/resources/mapper/ComActActEvaluateMapper.xml
new file mode 100644
index 0000000..62d80ce
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/resources/mapper/ComActActEvaluateMapper.xml
@@ -0,0 +1,99 @@
+<?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.ComActActEvaluateDAO">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.panzhihua.service_community.model.dos.ComActActEvaluateDO">
+                <id column="id" property="id" />
+                <result column="activity_id" property="activityId" />
+                <result column="user_id" property="userId" />
+                <result column="create_at" property="createAt" />
+                <result column="is_volunteer" property="isVolunteer" />
+                <result column="star_level" property="starLevel" />
+                <result column="evaluate_content" property="evaluateContent" />
+                <result column="photo" property="photo" />
+    </resultMap>
+
+    <!-- 通用查询结果列 -->
+    <sql id="Base_Column_List">
+        id, activity_id, user_id, create_at, is_volunteer, star_level, evaluate_content, photo
+    </sql>
+
+    <select id="pageActivityEvaluates" resultType="com.panzhihua.common.model.vos.community.ComActActEvaluateVO">
+        SELECT
+            caae.id,
+            caae.activity_id,
+            caae.create_at,
+            caae.photo,
+            caae.star_level,
+            caae.evaluate_content,
+            su.user_id,
+            su.`name`,
+            su.nick_name,
+            su.phone,
+            su.image_url,
+            su.tags,
+            caae.is_volunteer,
+            CASE
+
+                WHEN su.is_partymember = 1 THEN
+                    '党员'
+                WHEN caas.is_volunteer = 1 THEN
+                    '志愿者' ELSE '居民'
+                END identity
+
+        FROM
+            com_act_act_evaluate caae
+            LEFT JOIN com_act_act_sign caas ON caae.activity_id = caas.activity_id
+            LEFT JOIN sys_user su ON caae.user_id = su.user_id
+        where caae.activity_id = #{comActActEvaluateVO.activityId}
+        <if test="comActActEvaluateVO.phone != null and comActActEvaluateVO.phone !=''">
+            AND su.phone = #{comActActEvaluateVO.phone}
+        </if>
+        <if test="comActActEvaluateVO.name != null and comActActEvaluateVO.name !=''">
+            AND su.`name` = #{comActActEvaluateVO.name}
+        </if>
+        <if test="comActActEvaluateVO.starLevel != null">
+            AND caae.star_level = #{comActActEvaluateVO.starLevel}
+        </if>
+        <if test="comActActEvaluateVO.createAt != null">
+            AND caae.create_at = #{comActActEvaluateVO.createAt}
+        </if>
+        order by caae.create_at desc
+    </select>
+
+    <select id="getEvaluateLists" resultType="com.panzhihua.common.model.vos.community.ComActActEvaluateExcelVO">
+        SELECT
+        caae.create_at,
+        caae.star_level,
+        caae.evaluate_content,
+        su.`name`,
+        su.phone,
+        CASE
+
+        WHEN su.is_partymember = 1 THEN
+        '党员'
+        WHEN caas.is_volunteer = 1 THEN
+        '志愿者' ELSE '居民'
+        END identity
+
+        FROM
+        com_act_act_evaluate caae
+        LEFT JOIN com_act_act_sign caas ON caae.activity_id = caas.activity_id
+        LEFT JOIN sys_user su ON caae.user_id = su.user_id
+        where caae.activity_id = #{comActActEvaluateVO.activityId}
+        <if test="comActActEvaluateVO.phone != null and comActActEvaluateVO.phone !=''">
+            AND su.phone = #{comActActEvaluateVO.phone}
+        </if>
+        <if test="comActActEvaluateVO.name != null and comActActEvaluateVO.name !=''">
+            AND su.`name` = #{comActActEvaluateVO.name}
+        </if>
+        <if test="comActActEvaluateVO.starLevel != null">
+            AND caae.star_level = #{comActActEvaluateVO.starLevel}
+        </if>
+        <if test="comActActEvaluateVO.createAt != null">
+            AND caae.create_at = #{comActActEvaluateVO.createAt}
+        </if>
+        order by caae.create_at desc
+    </select>
+</mapper>
\ No newline at end of file
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/resources/mapper/ComActActPictureMapper.xml b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/resources/mapper/ComActActPictureMapper.xml
new file mode 100644
index 0000000..d37c9a2
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/resources/mapper/ComActActPictureMapper.xml
@@ -0,0 +1,20 @@
+<?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.ComActActPictureDAO">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.panzhihua.service_community.model.dos.ComActActPictureDO">
+                <id column="id" property="id" />
+                <result column="activity_id" property="activityId" />
+                <result column="user_id" property="userId" />
+                <result column="create_at" property="createAt" />
+                <result column="upload_picture" property="uploadPicture" />
+                <result column="picture_name" property="pictureName" />
+    </resultMap>
+
+    <!-- 通用查询结果列 -->
+    <sql id="Base_Column_List">
+        id, activity_id, user_id, create_at, upload_picture, picture_name
+    </sql>
+
+</mapper>
\ No newline at end of file
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/resources/mapper/ComActActRegistMapper.xml b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/resources/mapper/ComActActRegistMapper.xml
new file mode 100644
index 0000000..ca579a7
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/resources/mapper/ComActActRegistMapper.xml
@@ -0,0 +1,124 @@
+<?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.ComActActRegistDAO">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.panzhihua.service_community.model.dos.ComActActRegistDO">
+                <id column="id" property="id" />
+                <result column="activity_id" property="activityId" />
+                <result column="user_id" property="userId" />
+                <result column="create_at" property="createAt" />
+                <result column="is_volunteer" property="isVolunteer" />
+    </resultMap>
+
+    <!-- 通用查询结果列 -->
+    <sql id="Base_Column_List">
+        id, activity_id, user_id, create_at, is_volunteer
+    </sql>
+
+    <select id="pageActivityRegists" resultType="com.panzhihua.common.model.vos.community.ComActActRegistVO">
+        SELECT
+        caar.id,
+        caar.activity_id,
+        caar.create_at,
+        su.user_id,
+        su.`name`,
+        su.nick_name,
+        su.phone,
+        su.image_url,
+        su.tags,
+        caar.is_volunteer,
+        CASE
+
+        WHEN su.is_partymember = 1 THEN
+        '党员'
+        WHEN caas.is_volunteer = 1 THEN
+        '志愿者' ELSE '居民'
+        END identity
+
+        FROM
+        com_act_act_regist caar
+        LEFT JOIN com_act_act_sign caas ON caar.activity_id = caas.activity_id
+        LEFT JOIN sys_user su ON caar.user_id = su.user_id
+        where caar.activity_id = #{comActActRegistVO.activityId}
+        <if test="comActActRegistVO.phone != null and comActActRegistVO.phone !=''">
+            AND su.phone = #{comActActRegistVO.phone}
+        </if>
+        <if test="comActActRegistVO.name != null and comActActRegistVO.name !=''">
+            AND su.`name` = #{comActActRegistVO.name}
+        </if>
+        <if test="comActActRegistVO.tags != null and comActActRegistVO.tags !=''">
+            AND su.tags like ('%', #{comActActRegistVO.tags}, '%')
+        </if>
+        <if test="comActActRegistVO.createAt != null">
+            AND caar.create_at = #{comActActRegistVO.createAt}
+        </if>
+        order by caar.create_at desc
+    </select>
+
+    <select id="getRegistLists" resultType="com.panzhihua.common.model.vos.community.ComActActRegistExcelVO">
+        SELECT
+        caar.create_at,
+        su.`name`,
+        su.phone,
+        su.tags,
+        CASE
+
+        WHEN su.is_partymember = 1 THEN
+        '党员'
+        WHEN caas.is_volunteer = 1 THEN
+        '志愿者' ELSE '居民'
+        END identity
+
+        FROM
+        com_act_act_regist caar
+        LEFT JOIN com_act_act_sign caas ON caar.activity_id = caas.activity_id
+        LEFT JOIN sys_user su ON caar.user_id = su.user_id
+        where caar.activity_id = #{comActActRegistVO.activityId}
+        <if test="comActActRegistVO.phone != null and comActActRegistVO.phone !=''">
+            AND su.phone = #{comActActRegistVO.phone}
+        </if>
+        <if test="comActActRegistVO.name != null and comActActRegistVO.name !=''">
+            AND su.`name` = #{comActActRegistVO.name}
+        </if>
+        <if test="comActActRegistVO.tags != null and comActActRegistVO.tags !=''">
+            AND su.tags like ('%', #{comActActRegistVO.tags}, '%')
+        </if>
+        <if test="comActActRegistVO.createAt != null">
+            AND caar.create_at = #{comActActRegistVO.createAt}
+        </if>
+        order by caar.create_at desc
+    </select>
+
+    <select id="getNoRegistLists" resultType="com.panzhihua.common.model.vos.community.ComActActRegistExcelVO">
+        SELECT
+            caas.create_at,
+            su.`name`
+            su.phone,
+            su.tags,
+            CASE
+
+                WHEN su.is_partymember = 1 THEN
+                '党员'
+                WHEN caas.is_volunteer = 1 THEN
+                '志愿者' ELSE '居民'
+            END identity
+        FROM
+        `com_act_act_sign` caas
+        LEFT JOIN sys_user su ON caas.user_id = su.user_id
+        WHERE NOT EXISTS ( SELECT 1 FROM com_act_act_regist caar WHERE caas.user_id = caar.user_id )
+        AND caas.activity_id = #{comActActRegistVO.activityId}
+        <if test="comActActRegistVO.phone != null and comActActRegistVO.phone !=''">
+            AND su.phone = #{comActActRegistVO.phone}
+        </if>
+        <if test="comActActRegistVO.name != null and comActActRegistVO.name !=''">
+            AND su.`name` = #{comActActRegistVO.name}
+        </if>
+        <if test="comActActRegistVO.tags != null and comActActRegistVO.tags !=''">
+            AND su.tags like ('%', #{comActActRegistVO.tags}, '%')
+        </if>
+        <if test="comActActRegistVO.createAt != null">
+            AND caar.create_at = #{comActActRegistVO.createAt}
+        </if>
+    </select>
+</mapper>
\ No newline at end of file
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/resources/mapper/ComActActSignMapper.xml b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/resources/mapper/ComActActSignMapper.xml
new file mode 100644
index 0000000..d1ca204
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/resources/mapper/ComActActSignMapper.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.ComActActSignDAO">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.panzhihua.service_community.model.dos.ComActActSignDO">
+                <id column="id" property="id" />
+                <result column="activity_id" property="activityId" />
+                <result column="user_id" property="userId" />
+                <result column="create_at" property="createAt" />
+                <result column="is_volunteer" property="isVolunteer" />
+    </resultMap>
+
+    <!-- 通用查询结果列 -->
+    <sql id="Base_Column_List">
+        id, activity_id, user_id, create_at, is_volunteer
+    </sql>
+
+    <select id="getSignLists" resultType="com.panzhihua.common.model.vos.community.ComActActSignExcelVO">
+        SELECT
+        caas.create_at,
+        su.`name`,
+        su.phone,
+        su.tags,
+        CASE
+
+        WHEN su.is_partymember = 1 THEN
+        '党员'
+        WHEN caas.is_volunteer = 1 THEN
+        '志愿者' ELSE '居民'
+        END identity
+
+        FROM
+        com_act_act_sign caas
+        LEFT JOIN sys_user su ON caas.user_id = su.user_id
+        where caas.activity_id = #{activitySignVO.activityId}
+        <if test="activitySignVO.phone != null and activitySignVO.phone !=''">
+            AND su.phone = #{activitySignVO.phone}
+        </if>
+        <if test="activitySignVO.name != null and activitySignVO.name !=''">
+            AND su.`name` = #{activitySignVO.name}
+        </if>
+        <if test="activitySignVO.createAt != null and activitySignVO.createAt !=''">
+            AND caas.create_at = #{activitySignVO.createAt}
+        </if>
+        <if test="activitySignVO.tags != null and activitySignVO.tags !=''">
+            AND su.tags like concat('%', #{activitySignVO.tags}, '%')
+        </if>
+        order by caas.create_at desc
+    </select>
+
+    <select id="selectNeedEvaluateSignRecords" resultMap="BaseResultMap">
+        SELECT s.id,s.activity_id,s.user_id,s.create_at,s.is_volunteer
+        FROM `com_act_act_sign` s
+        LEFT JOIN `com_act_act_evaluate` e
+        ON s.activity_id=e.activity_id AND s.user_id=e.user_id
+        WHERE s.activity_id IN
+        <foreach collection="activityIds" item="id" index="index" open="(" close=")" separator=",">
+        #{id}
+        </foreach> AND e.id IS NULL
+    </select>
+</mapper>
\ No newline at end of file
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/resources/mapper/ComActActivityMapper.xml b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/resources/mapper/ComActActivityMapper.xml
new file mode 100644
index 0000000..c6830d6
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/resources/mapper/ComActActivityMapper.xml
@@ -0,0 +1,59 @@
+<?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.ComActActivityDAO">
+
+        <!-- 通用查询映射结果 -->
+        <resultMap id="BaseResultMap" type="com.panzhihua.service_community.model.dos.ComActActivityDO">
+                    <id column="id" property="id" />
+                    <result column="activity_name" property="activityName" />
+                    <result column="sponsor_id" property="sponsorId" />
+                    <result column="activity_addr" property="activityAddr" />
+                    <result column="lat" property="lat" />
+                    <result column="lng" property="lng" />
+                    <result column="status" property="status" />
+                    <result column="publish_at" property="publishAt" />
+                    <result column="end_at" property="endAt" />
+                    <result column="begin_at" property="beginAt" />
+                    <result column="sign_up_begin" property="signUpBegin" />
+                    <result column="sign_up_end" property="signUpEnd" />
+                    <result column="aattend_people" property="aattendPeople" />
+                    <result column="volunteer_min" property="volunteerMin" />
+                    <result column="volunteer_max" property="volunteerMax" />
+                    <result column="participant_min" property="participantMin" />
+                    <result column="participant_max" property="participantMax" />
+                    <result column="cover" property="cover" />
+                    <result column="has_prize" property="hasPrize" />
+                    <result column="is_qr_code" property="isQrCode" />
+                    <result column="contact_name" property="contactName" />
+                    <result column="contact_phone" property="contactPhone" />
+                    <result column="is_regist" property="isRegist" />
+                    <result column="is_top" property="isTop" />
+                    <result column="prize_remark" property="prizeRemark" />
+                    <result column="reward_desc" property="rewardDesc" />
+                    <result column="content" property="content" />
+                    <result column="community_id" property="communityId" />
+                    <result column="create_at" property="createAt" />
+                    <result column="cancel_reason" property="cancelReason" />
+        </resultMap>
+
+    <!-- 通用查询结果列 -->
+    <sql id="Base_Column_List">
+        id, activity_name, sponsor_id, activity_addr, lat, lng, status, publish_at, end_at, begin_at, sign_up_begin, sign_up_end, aattend_people, volunteer_min, volunteer_max, participant_min, participant_max, cover, has_prize, is_qr_code, contact_name, contact_phone, is_regist, is_top, prize_remark, reward_desc, content, community_id, create_at, cancel_reason
+    </sql>
+
+    <select id="activityStatistics" resultType="com.panzhihua.common.model.vos.community.ComActActivityStatisticsVO">
+        SELECT IFNULL(volunteer_max,0) + IFNULL(participant_max,0) as signTotal
+             ,(SELECT count(id) FROM com_act_act_sign WHERE activity_id = #{activityId}) as reallySignTotal
+             ,(SELECT count(id) FROM com_act_act_sign WHERE activity_id = #{activityId}) as registTotal
+             ,(SELECT count(id) FROM com_act_act_regist WHERE activity_id = #{activityId}) as reallyRegistTotal
+             ,((SELECT count(id) FROM com_act_act_sign WHERE activity_id = #{activityId}) - (SELECT count(id) FROM com_act_act_regist WHERE activity_id = #{activityId})) as noRegistTotal
+             ,(SELECT count(id) FROM com_act_act_sign WHERE activity_id = #{activityId}) as evaluateTotal
+             ,(SELECT count(id) FROM com_act_act_evaluate WHERE activity_id = #{activityId}) as reallyEvaluateTotal
+             ,((SELECT count(id) FROM com_act_act_sign WHERE activity_id = #{activityId}) - (SELECT count(id) FROM com_act_act_evaluate WHERE activity_id = #{activityId})) as noEvaluateTotal
+        FROM com_act_activity where id = #{activityId}
+    </select>
+    <select id="getIndexTopActivityList" resultMap="BaseResultMap">
+        SELECT * FROM `com_act_activity`
+        WHERE community_id = #{communityId} and is_top = 1 and end_at &gt;= now() and begin_at &lt;= now()
+    </select>
+</mapper>
\ No newline at end of file
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/resources/mapper/ComActEasyPhotoDOMapper.xml b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/resources/mapper/ComActEasyPhotoDOMapper.xml
index 7fa1ddc..3ea3393 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/resources/mapper/ComActEasyPhotoDOMapper.xml
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/resources/mapper/ComActEasyPhotoDOMapper.xml
@@ -89,6 +89,9 @@
         <if test='comActEasyPhotoVO.isReportUrban != null' >
             AND p.`is_report_urban` = #{comActEasyPhotoVO.isReportUrban}
         </if>
+        <if test='comActEasyPhotoVO.classifyId != null' >
+            AND p.`classify_id` = #{comActEasyPhotoVO.classifyId}
+        </if>
         <if test='comActEasyPhotoVO.urbanStatus != null' >
             AND p.`urban_status` = #{comActEasyPhotoVO.urbanStatus}
         </if>
@@ -104,7 +107,7 @@
             AND (u.`name` like concat(#{comActEasyPhotoVO.keyWord},'%') or
             p.happen_addr like concat(#{comActEasyPhotoVO.keyWord},'%') or
             su.`name` like concat(#{comActEasyPhotoVO.keyWord},'%') or
-            p.detail like concat(#{comActEasyPhotoVO.keyWord},'%')
+            p.detail like concat(#{comActEasyPhotoVO.keyWord},'%') or u.phone like concat(#{comActEasyPhotoVO.keyWord},'%')
             )
         </if>
         GROUP BY
@@ -175,13 +178,15 @@
             p.examine_at,
             c.name  communityName,
             p.is_report_urban,
-            p.urban_status
+            p.urban_status,
+            ca.`name` as photoType
         FROM
             com_act_easy_photo p
                 LEFT JOIN sys_user u ON p.sponsor_id = u.user_id
                 LEFT JOIN com_act_easy_photo_user pu ON p.id = pu.easy_photo_id
                 LEFT JOIN sys_user su ON p.handler_id = su.user_id
                 left join com_act c on p.community_id =c.community_id
+                left join com_act_easy_photo_classify ca on ca.id = p.classify_id
         WHERE
             p.del_tag = 0 and p.`is_report_urban` =1
         <if test='communityId != null and communityId != 0'>
@@ -199,7 +204,7 @@
             AND (u.`name` like concat(#{keyWord},'%') or
             p.happen_addr like concat(#{keyWord},'%') or
             su.`name` like concat(#{keyWord},'%') or
-            p.detail like concat(#{keyWord},'%')
+            p.detail like concat(#{keyWord},'%') or u.phone like concat(#{comActEasyPhotoVO.keyWord},'%')
             )
         </if>
         GROUP BY
@@ -231,13 +236,15 @@
         p.examine_at,
         c.name  communityName,
         p.is_report_urban,
-        p.urban_status
+        p.urban_status,
+        ca.`name` as photoType
         FROM
         com_act_easy_photo p
         LEFT JOIN sys_user u ON p.sponsor_id = u.user_id
         LEFT JOIN com_act_easy_photo_user pu ON p.id = pu.easy_photo_id
         LEFT JOIN sys_user su ON p.handler_id = su.user_id
         left join com_act c on p.community_id =c.community_id
+        left join com_act_easy_photo_classify ca on ca.id = p.classify_id
         WHERE
         p.id in
         <foreach collection="list" item="ids" index="index"
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/resources/mapper/ComActReserveAnswerContentMapper.xml b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/resources/mapper/ComActReserveAnswerContentMapper.xml
new file mode 100644
index 0000000..22fc980
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/resources/mapper/ComActReserveAnswerContentMapper.xml
@@ -0,0 +1,76 @@
+<?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.ComActReserveAnswerContentMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.panzhihua.service_community.model.dos.ComActReserveAnswerContentDO">
+        <id column="id" property="id"/>
+        <result column="reserve_sub_id" property="reserveSubId"/>
+        <result column="reserve_selection_id" property="reserveSelectionId"/>
+        <result column="user_id" property="userId"/>
+        <result column="type" property="type"/>
+        <result column="choice" property="choice"/>
+        <result column="answer_content" property="answerContent"/>
+        <result column="create_by" property="createBy"/>
+        <result column="create_at" property="createAt"/>
+        <result column="update_by" property="updateBy"/>
+        <result column="update_at" property="updateAt"/>
+        <result column="reserve_record_id" property="reserveRecordId"/>
+    </resultMap>
+
+    <!-- 通用查询结果列 -->
+    <sql id="Base_Column_List">
+        id, reserve_sub_id, reserve_selection_id, user_id, type, choice, answer_content, create_by, create_at, update_by, update_at, reserve_record_id
+    </sql>
+
+    <select id="selectListByReserve" resultType="com.panzhihua.service_community.model.dos.ComActReserveAnswerContentDO">
+        SELECT
+            ac.*
+        FROM
+            com_act_reserve_answer_content ac
+            LEFT JOIN com_act_reserve_sub qs ON ac.reserve_sub_id = qs.id
+            LEFT JOIN com_act_reserve qn ON qs.reserve_id = qn.id
+        WHERE
+            qn.id = #{reserveId}
+    </select>
+
+    <select id="pageRegisterDetailedListAdmin" parameterType="com.panzhihua.common.model.dtos.community.reserve.PageReserveRegisterDetailedAdminDTO"
+            resultType="com.panzhihua.common.model.vos.community.reserve.ComActReserveRegisterDetailedVO">
+        SELECT
+            carr.id,
+            su.nick_name,
+            carr.create_at
+        FROM
+            com_act_reserve_record AS carr
+            LEFT JOIN sys_user AS su ON su.user_id = carr.user_id
+        WHERE
+            reserve_id = #{detailedAdminDTO.reserveId}
+            <if test='detailedAdminDTO.startTime != null and detailedAdminDTO.startTime != &quot;&quot;'>
+                AND carr.create_at <![CDATA[ >= ]]> #{detailedAdminDTO.startTime}
+            </if>
+            <if test='detailedAdminDTO.endTime != null and detailedAdminDTO.endTime != &quot;&quot;'>
+                AND carr.create_at <![CDATA[ <= ]]> #{detailedAdminDTO.endTime}
+            </if>
+    </select>
+
+    <select id="getRegisterDetailedAnswerList" resultType="com.panzhihua.common.model.vos.community.reserve.ComActReserveRegisterDetailedAnswerVO">
+        SELECT
+            car.content as reserveSubContent, carac.answer_content as answerContent,carac.reserve_sub_id as reserveSubId
+        FROM
+            com_act_reserve_answer_content AS carac
+            LEFT JOIN com_act_reserve_sub AS car ON car.reserve_id = carac.reserve_record_id
+        where carac.reserve_record_id = #{reserveRecordId} order by carac.id asc
+    </select>
+
+    <select id="getRegisterDetailedById" resultType="com.panzhihua.common.model.vos.community.reserve.ComActReserveRegisterDetailedVO">
+        SELECT
+            carr.id,
+            su.nick_name,
+            carr.create_at
+        FROM
+            com_act_reserve_record AS carr
+            LEFT JOIN sys_user AS su ON su.user_id = carr.user_id
+            where carr.id = #{reserveRecordId}
+    </select>
+
+</mapper>
\ No newline at end of file
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/resources/mapper/ComActReserveMapper.xml b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/resources/mapper/ComActReserveMapper.xml
new file mode 100644
index 0000000..8748359
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/resources/mapper/ComActReserveMapper.xml
@@ -0,0 +1,182 @@
+<?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.ComActReserveMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.panzhihua.service_community.model.dos.ComActReserveDO">
+        <id column="id" property="id"/>
+        <result column="community_id" property="communityId"/>
+        <result column="type" property="type"/>
+        <result column="title" property="title"/>
+        <result column="view_num" property="viewNum"/>
+        <result column="join_all_count" property="joinAllCount"/>
+        <result column="join_count" property="joinCount"/>
+        <result column="img_type" property="imgType"/>
+        <result column="img_url" property="imgUrl"/>
+        <result column="status" property="status"/>
+        <result column="publish_time" property="publishTime"/>
+        <result column="is_repeat" property="isRepeat"/>
+        <result column="remark" property="remark"/>
+        <result column="json_object" property="jsonObject"/>
+        <result column="adver_position_top" property="adverPositionTop"/>
+        <result column="adver_position_application" property="adverPositionApplication"/>
+        <result column="create_at" property="createAt"/>
+        <result column="create_by" property="createBy"/>
+        <result column="update_at" property="updateAt"/>
+        <result column="update_by" property="updateBy"/>
+        <result column="end_time" property="endTime"/>
+        <result column="is_del" property="isDel"/>
+    </resultMap>
+
+    <!-- 通用查询结果列 -->
+    <sql id="Base_Column_List">
+        id, community_id, type, title, view_num, join_all_count, join_count, img_type, img_url, status, publish_time, is_repeat, remark, json_object, adver_position_top, adver_position_application, create_at, create_by, update_at, update_by, end_time, is_del
+    </sql>
+
+    <select id="indexBanner" resultType="com.panzhihua.common.model.vos.community.ComActReserveIndexVo">
+        select id,title,type,img_type, img_url,adver_position_top, adver_position_application from com_act_reserve
+        where
+            status = 2 and adver_position_top = 1
+            <if test="communityId !=null">
+                and community_id =#{communityId}
+            </if>
+
+    </select>
+
+    <select id="indexApplication" resultType="com.panzhihua.common.model.vos.community.ComActReserveIndexVo">
+        select id,title,type,img_type, img_url,adver_position_top, adver_position_application from com_act_reserve
+        <where>
+            status = 2 and adver_position_application = 1
+            <if test="communityId !=null">
+                and community_id =#{communityId}
+            </if>
+        </where>
+    </select>
+
+
+
+    <select id="pageReserveAdmin" parameterType="com.panzhihua.common.model.dtos.community.reserve.PageReserveAdminDTO"
+            resultType="com.panzhihua.common.model.vos.community.reserve.ComActReserveListAdminVO">
+        SELECT
+            id,
+            community_id,
+            `type`,
+            title,
+            view_num,
+            join_all_count,
+            join_count,
+            `status`,
+            publish_time,
+            create_at,
+            end_time,
+            adver_position_top,
+            adver_position_application
+        FROM
+            com_act_reserve
+            <where>
+                and is_del = 2
+                <if test="pageReserveDTO.communityId != null">
+                    and community_id = #{pageReserveDTO.communityId}
+                </if>
+                <if test="pageReserveDTO.type != null and pageReserveDTO.type.size > 0">
+                    and `type` in
+                    <foreach collection='pageReserveDTO.type' item='id' index='index' open='(' close=')' separator=',' >
+                        #{id}
+                    </foreach>
+                </if>
+                <if test="pageReserveDTO.status != null">
+                    and status = #{pageReserveDTO.status}
+                </if>
+                <if test="pageReserveDTO.advertType != null and pageReserveDTO.advertType == 1">
+                    and adver_position_top = 2 and adver_position_application = 2
+                </if>
+                <if test="pageReserveDTO.advertType != null and pageReserveDTO.advertType == 2">
+                    and adver_position_top = 1
+                </if>
+                <if test="pageReserveDTO.advertType != null and pageReserveDTO.advertType == 3">
+                    and adver_position_application = 1
+                </if>
+                <if test="pageReserveDTO.keyWord != null and pageReserveDTO.keyWord != &quot;&quot;">
+                    and title like concat (#{pageReserveDTO.keyWord},'%')
+                </if>
+                <if test="pageReserveDTO.startTime != null and pageReserveDTO.startTime != &quot;&quot;">
+                    AND DATE_FORMAT(create_at,'%Y-%m-%d %H:%i:%s') <![CDATA[ >= ]]> #{pageReserveDTO.startTime}
+                </if>
+                <if test="pageReserveDTO.endTime != null and pageReserveDTO.endTime != &quot;&quot;">
+                    AND DATE_FORMAT(create_at,'%Y-%m-%d %H:%i:%s') <![CDATA[ <= ]]> #{pageReserveDTO.endTime}
+                </if>
+            </where>
+            order by create_at desc
+    </select>
+
+    <delete id="deleteReserveSubAll">
+        delete from com_act_reserve_sub where reserve_id = #{reserveId};
+        delete from com_act_reserve_sub_selection where reserve_id = #{reserveId};
+    </delete>
+
+    <select id="getReserveMakeLeftStatistics" resultType="com.panzhihua.common.model.vos.community.reserve.ComActReserveMakeLeftStatisticsAdminVO">
+        SELECT
+            date_format( reserve_time, '%Y-%m-%d' ) AS reserveTime,
+            count( id ) AS count
+        FROM
+            com_act_reserve_record
+        WHERE
+            `status` = 2
+            AND type = 1
+            AND community_id = #{communityId}
+
+            group by reserveTime
+    </select>
+
+    <select id="getReserveMakeRightStatistics" parameterType="com.panzhihua.common.model.dtos.community.reserve.ComActReserveMakeStatisticsDTO"
+            resultType="com.panzhihua.common.model.vos.community.reserve.ComActReserveMakeRightStatisticsAdminVO">
+        SELECT
+            date_format( carr.reserve_time, '%Y-%m-%d' ) AS reserveTime,
+            car.title AS title,
+            count( carr.id ) AS count
+        FROM
+            com_act_reserve_record AS carr
+            LEFT JOIN com_act_reserve AS car ON car.id = carr.reserve_id
+        WHERE
+            carr.`status` = 2
+            AND carr.type = 1
+            AND carr.community_id = #{makeStatisticsDTO.communityId}
+            <if test="makeStatisticsDTO.startTime != null and makeStatisticsDTO.startTime != &quot;&quot;">
+                AND carr.reserve_time <![CDATA[ >= ]]> #{makeStatisticsDTO.startTime}
+            </if>
+            <if test="makeStatisticsDTO.endTime != null and makeStatisticsDTO.endTime != &quot;&quot;">
+                AND carr.reserve_time <![CDATA[ <= ]]> #{makeStatisticsDTO.endTime}
+            </if>
+        GROUP BY
+            reserveTime,
+            car.id
+    </select>
+
+    <select id="getReserveRecordCount" resultType="integer">
+        select count(id) from com_act_reserve_record
+        where `status` = 2 and `type` = 1 and community_id = #{communityId}
+        and reserve_time <![CDATA[ >= ]]> #{startTime}
+        and reserve_time <![CDATA[ <= ]]> #{endTime}
+    </select>
+
+    <select id="listReserveAdmin"  parameterType="com.panzhihua.common.model.dtos.community.reserve.PageReserveAdminDTO"
+            resultType="com.panzhihua.common.model.vos.community.reserve.ComActReserveListAdminVO">
+        SELECT
+            id,
+            community_id,
+            `type`,
+            title,
+            view_num,
+            join_all_count,
+            join_count,
+            `status`,
+            publish_time,
+            create_at,
+            end_time,
+            adver_position_top,
+            adver_position_application
+        FROM
+            com_act_reserve
+            where is_del = 2 and `type` = 1 and community_id = #{communityId}
+    </select>
+</mapper>
\ No newline at end of file
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/resources/mapper/ComActReserveOperationRecordMapper.xml b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/resources/mapper/ComActReserveOperationRecordMapper.xml
new file mode 100644
index 0000000..debd66f
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/resources/mapper/ComActReserveOperationRecordMapper.xml
@@ -0,0 +1,48 @@
+<?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.ComActReserveOperationRecordMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.panzhihua.service_community.model.dos.ComActReserveOperationRecordDO">
+        <id column="id" property="id"/>
+        <result column="reserve_id" property="reserveId"/>
+        <result column="reserve_record_id" property="reserveRecordId"/>
+        <result column="user_id" property="userId"/>
+        <result column="type" property="type"/>
+        <result column="phone" property="phone"/>
+        <result column="reserve_time" property="reserveTime"/>
+        <result column="reserve_content" property="reserveContent"/>
+        <result column="remark" property="remark"/>
+        <result column="status" property="status"/>
+        <result column="create_at" property="createAt"/>
+        <result column="create_by" property="createBy"/>
+    </resultMap>
+
+    <!-- 通用查询结果列 -->
+    <sql id="Base_Column_List">
+        id, reserve_id, reserve_record_id, user_id, type, phone, reserve_time, reserve_content, remark, status, create_at, create_by
+    </sql>
+
+
+    <select id="getMakeOperationList" resultType="com.panzhihua.common.model.vos.community.reserve.ComActReserveMakeOperationAdminVO">
+        SELECT
+            caror.reserve_id,
+            caror.reserve_record_id,
+            caror.create_at,
+            caror.type,
+            caror.`status`,
+            caror.reserve_time,
+            caror.reserve_content,
+            su.`name`,
+            su.phone,
+            caror.remark,
+            su1.`name` as createByName
+        FROM
+            com_act_reserve_operation_record AS caror
+            left join sys_user as su on su.user_id = caror.user_id
+            left join sys_user as su1 on su1.user_id = caror.create_by
+            where caror.reserve_record_id = #{reserveRecordId}
+            order by caror.create_at desc
+    </select>
+
+</mapper>
\ No newline at end of file
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/resources/mapper/ComActReserveRecordMapper.xml b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/resources/mapper/ComActReserveRecordMapper.xml
new file mode 100644
index 0000000..1a9bec3
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/resources/mapper/ComActReserveRecordMapper.xml
@@ -0,0 +1,313 @@
+<?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.ComActReserveRecordMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.panzhihua.service_community.model.dos.ComActReserveRecordDO">
+        <id column="id" property="id"/>
+        <result column="user_id" property="userId"/>
+        <result column="reserve_id" property="reserveId"/>
+        <result column="community_id" property="communityId"/>
+        <result column="type" property="type"/>
+        <result column="name" property="name"/>
+        <result column="phone" property="phone"/>
+        <result column="status" property="status"/>
+        <result column="content" property="content"/>
+        <result column="remark" property="remark"/>
+        <result column="act_remark" property="actRemark"/>
+        <result column="reserve_time" property="reserveTime"/>
+        <result column="json_object" property="jsonObject"/>
+        <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, user_id, reserve_id, community_id, type, name, phone, status, content, remark, act_remark, reserve_time, json_object, create_at, create_by, update_at, update_by
+    </sql>
+
+    <select id="pageReserveList" resultType="com.panzhihua.common.model.vos.community.reserve.ComActReserveRecordListVO">
+        select t.*,t1.title from com_act_reserve_record t left join com_act_reserve t1 on t.reserve_id = t1.id
+        <where>
+            1=1
+            <if test="pageUserReserveDTO.type !=null">
+                and t.type =#{pageUserReserveDTO.type}
+            </if>
+            <if test="pageUserReserveDTO.status !=null">
+                and t.status =#{pageUserReserveDTO.status}
+            </if>
+            <if test="pageUserReserveDTO.userId !=null">
+                and t.user_id =#{pageUserReserveDTO.userId}
+            </if>
+        </where>
+    </select>
+
+    <select id="pageMakeAdmin" parameterType="com.panzhihua.common.model.dtos.community.reserve.PageReserveMakeAdminDTO"
+            resultType="com.panzhihua.common.model.vos.community.reserve.ComActReserveMakeListAdminVO">
+        SELECT
+            carr.id,
+            su.nick_name,
+            carr.`name`,
+            carr.phone,
+            carr.reserve_time,
+            carr.`content`,
+            carr.remark,
+            carr.act_remark,
+            carr.create_at
+        FROM
+            com_act_reserve_record AS carr
+            LEFT JOIN sys_user AS su ON su.user_id = carr.user_id
+            where carr.status = 2 and carr.`type` = 1 and carr.reserve_id = #{pageMakeDTO.reserveId}
+            <if test="pageMakeDTO.startTime != null and pageMakeDTO.startTime != &quot;&quot;">
+                AND carr.reserve_time <![CDATA[ >= ]]> #{pageMakeDTO.startTime}
+            </if>
+            <if test="pageMakeDTO.endTime != null and pageMakeDTO.endTime != &quot;&quot;">
+                AND carr.reserve_time <![CDATA[ <= ]]> #{pageMakeDTO.endTime}
+            </if>
+            order by carr.create_at desc
+    </select>
+
+    <select id="getMakeDetailAdmin" resultType="com.panzhihua.common.model.vos.community.reserve.ComActReserveMakeDetailAdminVO">
+        SELECT
+            carr.id,
+            su.nick_name,
+            carr.`name`,
+            carr.phone,
+            carr.reserve_time,
+            carr.`content`,
+            carr.remark,
+            carr.act_remark,
+            carr.create_at
+        FROM
+            com_act_reserve_record AS carr
+            LEFT JOIN sys_user AS su ON su.user_id = carr.user_id
+            where carr.id = #{reserveRecordId}
+    </select>
+
+    <select id="getReserveStatusById" resultType="integer">
+        select count(id) from com_act_reserve_record where `status` != 2 and id in
+        <foreach collection='ids' item='id' index='index' open='(' close=')' separator=',' >
+            #{id}
+        </foreach>
+    </select>
+
+    <update id="editReserveStatusById">
+        update com_act_reserve_record set `status` = 4 where id in
+        <foreach collection='ids' item='id' index='index' open='(' close=')' separator=',' >
+            #{id}
+        </foreach>
+    </update>
+
+    <select id="exportMakeAdmin" parameterType="com.panzhihua.common.model.dtos.community.reserve.PageReserveMakeAdminDTO"
+            resultType="com.panzhihua.common.model.vos.community.reserve.ComActReserveMakeListAdminVO">
+        SELECT
+        carr.id,
+        su.nick_name,
+        carr.`name`,
+        carr.phone,
+        carr.reserve_time,
+        carr.`content`,
+        carr.remark,
+        carr.act_remark,
+        carr.create_at
+        FROM
+        com_act_reserve_record AS carr
+        LEFT JOIN sys_user AS su ON su.user_id = carr.user_id
+        where carr.status = 2 and carr.`type` = 1 and carr.reserve_id = #{pageMakeDTO.reserveId}
+        <if test="pageMakeDTO.startTime != null and pageMakeDTO.startTime != &quot;&quot;">
+            AND carr.reserve_time <![CDATA[ >= ]]> #{pageMakeDTO.startTime}
+        </if>
+        <if test="pageMakeDTO.endTime != null and pageMakeDTO.endTime != &quot;&quot;">
+            AND carr.reserve_time <![CDATA[ <= ]]> #{pageMakeDTO.endTime}
+        </if>
+        <if test="pageMakeDTO.ids != null and pageMakeDTO.ids.size > 0">
+            AND carr.id in
+            <foreach collection='pageMakeDTO.ids' item='id' index='index' open='(' close=')' separator=',' >
+                #{id}
+            </foreach>
+        </if>
+        order by carr.create_at desc
+    </select>
+
+    <select id="registerStatisticsAdmin" parameterType="com.panzhihua.common.model.dtos.community.reserve.ComActReserveRegisterStatisticsDTO"
+            resultType="com.panzhihua.common.model.vos.community.reserve.ComActReserveRegisterStatisticsAdminVO">
+        SELECT
+            car.title,
+            count( carr.id ) AS count,
+            ( SELECT count( id ) FROM com_act_reserve_record WHERE `type` = 2 AND community_id = #{registerStatisticsDTO.communityId} AND `status` = 2 ) AS allCount
+        FROM
+            com_act_reserve_record AS carr
+            LEFT JOIN com_act_reserve AS car ON car.id = carr.reserve_id
+        WHERE
+            carr.type = 2
+            AND carr.community_id = #{registerStatisticsDTO.communityId}
+            AND carr.`status` = 2
+            <if test="registerStatisticsDTO.startTime != null and registerStatisticsDTO.startTime != &quot;&quot;">
+                AND DATE_FORMAT(carr.create_at,'%Y-%m-%d %H:%i:%s') <![CDATA[ >= ]]> #{registerStatisticsDTO.startTime}
+            </if>
+            <if test="registerStatisticsDTO.endTime != null and registerStatisticsDTO.endTime != &quot;&quot;">
+                AND DATE_FORMAT(carr.create_at,'%Y-%m-%d %H:%i:%s') <![CDATA[ <= ]]> #{registerStatisticsDTO.endTime}
+            </if>
+        GROUP BY
+            car.id
+    </select>
+
+    <select id="registerStatisticsExportAdmin" parameterType="com.panzhihua.common.model.dtos.community.reserve.ComActReserveRegisterStatisticsDTO"
+            resultType="com.panzhihua.common.model.vos.community.reserve.ComActReserveRegisterStatisticsAdminVO">
+        SELECT
+            car.title,
+            count( carr.id ) AS count,
+            ( SELECT count( id ) FROM com_act_reserve_record WHERE `type` = 2 AND community_id = #{registerStatisticsDTO.communityId} AND `status` = 2 ) AS allCount
+        FROM
+            com_act_reserve_record AS carr
+            LEFT JOIN com_act_reserve AS car ON car.id = carr.reserve_id
+        WHERE
+            carr.type = 2
+            AND carr.community_id = #{registerStatisticsDTO.communityId}
+            AND carr.`status` = 2
+            <if test="registerStatisticsDTO.startTime != null and registerStatisticsDTO.startTime != &quot;&quot;">
+                AND DATE_FORMAT(carr.create_at,'%Y-%m-%d %H:%i:%s') <![CDATA[ >= ]]> #{registerStatisticsDTO.startTime}
+            </if>
+            <if test="registerStatisticsDTO.endTime != null and registerStatisticsDTO.endTime != &quot;&quot;">
+                AND DATE_FORMAT(carr.create_at,'%Y-%m-%d %H:%i:%s') <![CDATA[ <= ]]> #{registerStatisticsDTO.endTime}
+            </if>
+        GROUP BY
+            car.id
+    </select>
+
+    <select id="pageMakeHandleAdmin" parameterType="com.panzhihua.common.model.dtos.community.reserve.PageReserveMakeHandleAdminDTO"
+            resultType="com.panzhihua.common.model.vos.community.reserve.ComActReserveMakeHandleListAdminVO">
+        SELECT
+            carr.id,
+            su.nick_name,
+            carr.`name`,
+            carr.phone,
+            carr.reserve_time,
+            carr.`content`,
+            carr.remark,
+            carr.act_remark,
+            carr.`status`,
+            car.`title`,
+            carr.create_at
+        FROM
+            com_act_reserve_record AS carr
+            LEFT JOIN sys_user AS su ON su.user_id = carr.user_id
+            LEFT JOIN com_act_reserve AS car ON car.id = carr.reserve_id
+        WHERE
+            carr.`type` = 1
+            <if test="pageMakeHandleDTO.keyWord != null and pageMakeHandleDTO.keyWord != &quot;&quot;">
+                and (car.`title` like concat (#{pageMakeHandleDTO.keyWord},'%')
+                or carr.`name` like concat (#{pageMakeHandleDTO.keyWord},'%')
+                or su.nick_name like concat (#{pageMakeHandleDTO.keyWord},'%'))
+            </if>
+            <if test="pageMakeHandleDTO.status != null and pageMakeHandleDTO.status.size > 0">
+                and carr.`status` in
+                <foreach collection='pageMakeHandleDTO.status' item='id' index='index' open='(' close=')' separator=',' >
+                    #{id}
+                </foreach>
+            </if>
+            <if test="pageMakeHandleDTO.reserveId != null ">
+                and carr.reserve_id = #{pageMakeHandleDTO.reserveId}
+            </if>
+            <if test="pageMakeHandleDTO.communityId != null ">
+                and carr.community_id = #{pageMakeHandleDTO.communityId}
+            </if>
+            <if test="pageMakeHandleDTO.startTime != null and pageMakeHandleDTO.startTime != &quot;&quot;">
+                AND DATE_FORMAT(carr.reserve_time,'%Y-%m-%d %H:%i:%s') <![CDATA[ >= ]]> #{pageMakeHandleDTO.startTime}
+            </if>
+            <if test="pageMakeHandleDTO.endTime != null and pageMakeHandleDTO.endTime != &quot;&quot;">
+                AND DATE_FORMAT(carr.reserve_time,'%Y-%m-%d %H:%i:%s') <![CDATA[ <= ]]> #{pageMakeHandleDTO.endTime}
+            </if>
+        order by carr.create_at desc
+    </select>
+
+    <select id="getReserveListCountByIds" resultType="integer">
+        select count(id) from com_act_reserve_record where `status` != 1 and `type` = 1 and id in
+        <foreach collection='ids' item='id' index='index' open='(' close=')' separator=',' >
+            #{id}
+        </foreach>
+    </select>
+
+    <select id="exportMakeHandleAdmin" parameterType="com.panzhihua.common.model.dtos.community.reserve.PageReserveMakeHandleAdminDTO"
+            resultType="com.panzhihua.common.model.vos.community.reserve.ComActReserveMakeHandleListAdminVO">
+        SELECT
+        carr.id,
+        su.nick_name,
+        carr.`name`,
+        carr.phone,
+        carr.reserve_time,
+        carr.`content`,
+        carr.remark,
+        carr.act_remark,
+        carr.`status`,
+        car.`title`,
+        carr.create_at
+        FROM
+        com_act_reserve_record AS carr
+        LEFT JOIN sys_user AS su ON su.user_id = carr.user_id
+        LEFT JOIN com_act_reserve AS car ON car.id = carr.reserve_id
+        WHERE
+        carr.`type` = 1
+        <if test="pageMakeHandleDTO.keyWord != null and pageMakeHandleDTO.keyWord != &quot;&quot;">
+            and (car.`title` like concat (#{pageMakeHandleDTO.keyWord},'%')
+            or carr.`name` like concat (#{pageMakeHandleDTO.keyWord},'%')
+            or su.nick_name like concat (#{pageMakeHandleDTO.keyWord},'%'))
+        </if>
+        <if test="pageMakeHandleDTO.status != null and pageMakeHandleDTO.status.size > 0">
+            and carr.`status` in
+            <foreach collection='pageMakeHandleDTO.status' item='id' index='index' open='(' close=')' separator=',' >
+                #{id}
+            </foreach>
+        </if>
+        <if test="pageMakeHandleDTO.reserveId != null ">
+            and carr.reserve_id = #{pageMakeHandleDTO.reserveId}
+        </if>
+        <if test="pageMakeHandleDTO.communityId != null ">
+            and carr.community_id = #{pageMakeHandleDTO.communityId}
+        </if>
+        <if test="pageMakeHandleDTO.startTime != null and pageMakeHandleDTO.startTime != &quot;&quot;">
+            AND DATE_FORMAT(carr.reserve_time,'%Y-%m-%d %H:%i:%s') <![CDATA[ >= ]]> #{pageMakeHandleDTO.startTime}
+        </if>
+        <if test="pageMakeHandleDTO.endTime != null and pageMakeHandleDTO.endTime != &quot;&quot;">
+            AND DATE_FORMAT(carr.reserve_time,'%Y-%m-%d %H:%i:%s') <![CDATA[ <= ]]> #{pageMakeHandleDTO.endTime}
+        </if>
+        <if test="pageMakeHandleDTO.ids != null and pageMakeHandleDTO.ids.size > 0">
+            and carr.id in
+            <foreach collection='pageMakeHandleDTO.ids' item='id' index='index' open='(' close=')' separator=',' >
+                #{id}
+            </foreach>
+        </if>
+        order by carr.create_at desc
+    </select>
+
+    <select id="getRegisterDetailedByRecordId" resultType="com.panzhihua.common.model.vos.community.reserve.ComActReserveRegisterDetailedVO">
+        SELECT
+            carr.create_at,
+            carr.id,
+            su.nick_name,
+            su.is_partymember,
+            su.is_volunteer
+        FROM
+            com_act_reserve_record AS carr
+            LEFT JOIN sys_user AS su ON su.user_id = carr.user_id
+            where carr.id = #{reserveRecordId}
+    </select>
+
+    <select id="queryAll" resultType="com.panzhihua.common.model.vos.community.reserve.ComOperationListVO" parameterType="com.panzhihua.common.model.dtos.community.OperationDetailDTO">
+        select * from com_act_reserve_operation_record
+        <where>
+            <if test="reserveRecordId!=null">
+                and reserve_record_id =#{reserveRecordId}
+            </if>
+            <if test="userId!=null">
+                and user_id =#{userId}
+            </if>
+            <if test="type!=null">
+                and type =#{type}
+            </if>
+        </where>
+        order by create_at desc
+    </select>
+</mapper>
\ No newline at end of file
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/resources/mapper/ComActReserveSubMapper.xml b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/resources/mapper/ComActReserveSubMapper.xml
new file mode 100644
index 0000000..3c453be
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/resources/mapper/ComActReserveSubMapper.xml
@@ -0,0 +1,28 @@
+<?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.ComActReserveSubMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.panzhihua.service_community.model.dos.ComActReserveSubDO">
+        <id column="id" property="id"/>
+        <result column="reserve_id" property="reserveId"/>
+        <result column="sort" property="sort"/>
+        <result column="type" property="type"/>
+        <result column="key" property="key"/>
+        <result column="content" property="content"/>
+        <result column="create_by" property="createBy"/>
+        <result column="create_at" property="createAt"/>
+        <result column="update_by" property="updateBy"/>
+        <result column="update_at" property="updateAt"/>
+    </resultMap>
+
+    <!-- 通用查询结果列 -->
+    <sql id="Base_Column_List">
+        id, reserve_id, sort, type, key, content, create_by, create_at, update_by, update_at
+    </sql>
+
+    <select id="getReserveSubjectList" resultType="com.panzhihua.common.model.vos.community.reserve.ComActReserveSubListVO">
+        select id,content from com_act_reserve_sub where reserve_id = #{reserveId} order by id asc
+    </select>
+
+</mapper>
\ No newline at end of file
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/resources/mapper/ComActReserveSubSelectionMapper.xml b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/resources/mapper/ComActReserveSubSelectionMapper.xml
new file mode 100644
index 0000000..45705b5
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/resources/mapper/ComActReserveSubSelectionMapper.xml
@@ -0,0 +1,26 @@
+<?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.ComActReserveSubSelectionMapper">
+
+        <!-- 通用查询映射结果 -->
+        <resultMap id="BaseResultMap" type="com.panzhihua.service_community.model.dos.ComActReserveSubSelectionDO">
+                    <id column="id" property="id" />
+                    <result column="reserve_id" property="reserveId" />
+                    <result column="reserve_sub_id" property="reserveSubId" />
+                    <result column="key" property="key" />
+                    <result column="type" property="type" />
+                    <result column="sort" property="sort" />
+                    <result column="option_name" property="optionName" />
+                    <result column="content" property="content" />
+                    <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, reserve_id, reserve_sub_id, key, type, sort, option_name, content, 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/ComSwDangerReportMapper.xml b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/resources/mapper/ComSwDangerReportMapper.xml
index 9c80245..9d12b44 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/resources/mapper/ComSwDangerReportMapper.xml
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/resources/mapper/ComSwDangerReportMapper.xml
@@ -137,13 +137,33 @@
 
     <select id="exportDangerReport" resultType="com.panzhihua.common.model.vos.community.ComSwDangerReportExcelVO" parameterType="java.util.List">
         SELECT
-            cspr.person_name AS personName,
-            cspr.person_phone AS personPhone,
+            cspr.person_name AS ppersonName,
+            cspr.person_phone AS ppersonPhone,
             cspr.address,
             csdr.remark,
             csdr.dager_description AS dagerDescription,
-            csdr.danger_type AS dangerType,
-            csdr.danger_level AS dangerLevel
+            case csdr.danger_type
+                when '1' then '火灾隐患'
+                when '2' then '汛情隐患'
+                when '3' then '疫情隐患'
+            end
+            AS dangerType,
+            case csdr.status
+                when '1' then '待处理'
+                when '2' then '待整改'
+                when '3' then '已整改'
+            end
+            AS status,
+            case csdr.danger_level
+                when '1' then '红色预警'
+                when '2' then '橙色预警'
+                when '3' then '黄色预警'
+                when '4' then '蓝色预警'
+            end
+            AS dangerLevel,
+            cspr.create_at AS createAt,
+           csdr.rectify_person AS dpersonName,
+           csdr.rectify_time AS rectifyTime
         FROM
             com_sw_danger_report as csdr
                 left join com_sw_patrol_record_report as csprr on csprr.report_id = csdr.id
diff --git a/springcloud_k8s_panzhihuazhihuishequ/timejob/src/main/java/com/panzhihua/timejob/jobhandler/CommunityJobHandler.java b/springcloud_k8s_panzhihuazhihuishequ/timejob/src/main/java/com/panzhihua/timejob/jobhandler/CommunityJobHandler.java
index b268a3e..45a5521 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/timejob/src/main/java/com/panzhihua/timejob/jobhandler/CommunityJobHandler.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/timejob/src/main/java/com/panzhihua/timejob/jobhandler/CommunityJobHandler.java
@@ -193,4 +193,15 @@
         log.info("执行结果【{}】", r.toString());
         return ReturnT.SUCCESS;
     }
+
+    /**
+     * 定时任务针对活动结束后7天还未评价的用户默认好评
+     */
+    @XxlJob("timedTaskActivityDefaultPraiseJobHandler")
+    public ReturnT<String> timedTaskActivityDefaultPraiseJobHandler(String param) throws Exception {
+        log.info("定时任务针对活动结束后7天还未评价的用户默认好评");
+        R r = communityService.timedTaskActivityDefaultPraise();
+        log.info("执行结果【{}】", r.toString());
+        return ReturnT.SUCCESS;
+    }
 }

--
Gitblit v1.7.1