From 171439bcb3b5e4a636bbb81a93d61396f6e2940e Mon Sep 17 00:00:00 2001
From: zhubaomin <zhubaomin>
Date: 星期一, 17 二月 2025 17:32:09 +0800
Subject: [PATCH] Merge branch 'master' of http://8.140.179.55:20000/r/pipIrr-SV

---
 pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V2/TkDealOpenValveReportV2.java       |   26 
 pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/config/WebSocketConfig.java                  |   19 
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoAllRound/Ar4BaseMapper.java                              |    2 
 pipIrr-platform/pipIrr-global/src/main/resources/application-global(mq民勤系统).yml                                             |   15 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_37_Up.java                            |    2 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_93_Up.java                            |    2 
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voLargeScreen/VoMonitorInfo.java                            |   68 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_5E_Up.java                            |    2 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_A2_Up.java                            |    2 
 pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/Server.java                                              |   18 
 pipIrr-platform/pipIrr-global/src/main/resources/application-global(166web文件花生壳).yml                                        |   15 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_6D_Up.java                            |    2 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_69_Up.java                            |    2 
 pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/web/com/CommandCtrl.java                                 |   19 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_65_Up.java                            |    2 
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voAllRound/VoArIntakeAmountDay.java                         |   48 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_83_Up.java                            |    2 
 pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/config(mq民勤).xml                                                 |    8 
 pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/upgrade/UpgradeManager.java                       |    4 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_23_Up.java                       |    2 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_97_Up.java                            |    2 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_51_Up.java                            |    2 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_26_Up.java                       |    2 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_A1_Up.java                            |    2 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_55_Up.java                       |    2 
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSpecial/VoTopXIntake.java                                 |   53 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_C0_Up.java                            |    2 
 pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/PipIrrRemoteApplication.java                 |   14 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_9602_Up.java                          |    2 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_68_Up.java                            |    2 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_84_Up.java                            |    2 
 pipIrr-platform/pipIrr-global/src/main/resources/mapper/Ar4BaseMapper.xml                                                   |    8 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_92_Up.java                            |    2 
 pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/statistics/StatisticsListener.java   |    2 
 pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/largeScreen/WebSocketHeartBeat.java          |   31 
 pipIrr-platform/pipIrr-global/src/main/resources/application-global.yml                                                     |   15 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_3A_Up.java                            |    2 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_66_Up.java                            |    2 
 pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/largeScreen/Ls4StatisticsCtrl.java   |  158 +
 pipIrr-platform/pipIrr-global/src/main/resources/application-global(test测试系统).yml                                           |   15 
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voAllRound/VoArIntakeOpenCloseValve.java                    |  110 
 pipIrr-platform/pipIrr-global/src/main/resources/mapper/Ar4RemoteMapper.xml                                                 |   34 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_98_Up.java                            |    2 
 pipIrr-platform/pipIrr-global/src/main/resources/application-global(sp沙盘系统).yml                                             |   15 
 pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/dbSv/DbSv.java                            |    2 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/DriverV1.java                                  |    6 
 pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/allRound/Ar4RemoteSv.java                    |   80 
 pipIrr-platform/pipIrr-global/src/main/resources/mapper/Ar4StatisticsMapper.xml                                             |  101 
 pipIrr-platform/pipIrr-web/pipIrr-web-app/src/main/java/com/dy/pipIrrApp/workOrder/WorkOrderCtrl.java                       |    4 
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoAllRound/Ar4RemoteMapper.java                            |   40 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/softUpgrade/state/UpgradeRtu.java                                 |   14 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_1603_Down.java                        |    2 
 pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/config(test测试).xml                                               |    8 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_36_Up.java                            |    2 
 pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/largeScreen/说明.txt                   |    1 
 pipIrr-platform/pipIrr-global/src/main/resources/mapper/Ls4StatisticsMapper.xml                                             |  319 ++
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_3B_Up.java                            |    2 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_9601_Up.java                          |    2 
 pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/PipIrrMwRtuApplication.java                              |    2 
 pipIrr-platform/文档/慧图晋宁系统.txt                                                                                               |    3 
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSpecial/VoTopXClient.java                                 |   55 
 pipIrr-platform/pipIrr-web/pipIrr-web-base/pom.xml                                                                          |    1 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_12_Up.java                            |    2 
 pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/special/QoSteal.java                 |   55 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_6A_Up.java                            |    2 
 pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/report/ReportSv.java                         |   12 
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voAllRound/VoArIntakeAmountMonth.java                       |   34 
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voAllRound/VoArIntakeBase.java                              |    9 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_1602_Down.java                        |    2 
 pipIrr-platform/pipIrr-web/pipIrr-web-wechat/pom.xml                                                                        |   36 
 pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/forTcp/TcpDownCommandObj.java                     |   31 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_9C_Up.java                       |    2 
 pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/upgrade/Test.java                                 |   26 
 pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/msCenter/CenterMsReceiveCtrl.java            |   91 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_99_Up.java                            |    2 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_98_Up.java                       |    2 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_85_Up.java                       |    2 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_21_Up.java                            |    2 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_9601_Up.java                     |    2 
 pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/upgrade/UpgradeUnit.java                          |    6 
 pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/forTcp/TcpSessionCache.java                       |    2 
 pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/msCenter/Register2MwMsCenterListener.java    |   97 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_99_Up.java                            |    2 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_88_Up.java                       |    2 
 pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/special/SpecialCtrl.java             |   96 
 pipIrr-platform/pipIrr-global/src/main/resources/application-database.yml                                                   |    3 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_16_Up.java                       |    2 
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSpecial/VoAbnormalCloseValve.java                         |   37 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_31_Up.java                       |    2 
 pipIrr-platform/pipIrr-web/pipIrr-web-remote/pom.xml                                                                        |    7 
 pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/msCenter/MsCenterConfigVo.java                    |   19 
 pipIrr-platform/pipIrr-web/pipIrr-web-app/src/main/java/com/dy/pipIrrApp/workOrder/WorkOrderSv.java                         |   35 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/DriverParserDataCallback.java                         |   14 
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSpecial/SpecialMapper.java                               |   46 
 pipIrr-platform/pipIrr-global/src/main/resources/mapper/SpecialMapper.xml                                                   |  132 +
 pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/allRound/Ar4RemoteCtrl.java                  |   17 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_50_Up.java                       |    2 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_68_Up.java                            |    2 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_5C_Up.java                       |    2 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_3C_Up.java                            |    2 
 pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V1/TkDealCloseValveReport.java        |   26 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_3C_Up.java                            |    2 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_02_Up.java                            |    2 
 pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/allRound/说明.txt                      |    1 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_22_Up.java                       |    2 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_38_Up.java                            |    2 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_84_Up.java                            |    2 
 pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/special/QoAbnormalCloseValve.java    |   56 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_1601_Down.java                        |    3 
 pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/tasks/RtuUpTask.java                              |   11 
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSpecial/VoSteal.java                                      |  140 +
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoPr/PrIntakeMapper.java                                   |    7 
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSt/VoMonthAmount.java                                     |    5 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_A2_Up.java                            |    2 
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSt/VoDayIntakeAmount.java                                 |   10 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_38_Up.java                            |    2 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_C2_Up.java                       |    2 
 pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmOpenCloseValveHistoryMapper.xml                                   |    8 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_81_Up.java                            |    2 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_25_Up.java                       |    2 
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/rtuMw/Web2RtuMw.java                                        |   83 
 pipIrr-platform/pipIrr-global/src/main/resources/mapper/PrIntakeMapper.xml                                                  |    7 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_93_Up.java                            |    2 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_81_Up.java                            |    2 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_9603_Up.java                          |    2 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_80_Up.java                       |    2 
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoAllRound/Ar4StatisticsMapper.java                        |   54 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_02_Up.java                            |    2 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_65_Up.java                            |    2 
 pipIrr-platform/文档/dbSQL/area_code_2023.sql                                                                                 |    0 
 pipIrr-platform/pipIrr-web/pipIrr-web-sell/pom.xml                                                                          |   12 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_97_Up.java                            |    2 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_3B_Up.java                            |    2 
 pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/msCenter/CenterMsReceiveSv.java              |   25 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_6D_Up.java                            |    2 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_68_Up.java                       |    2 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_83_Up.java                       |    2 
 pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/msCenter/TestMsResource.java                      |   59 
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voLargeScreen/VoCurrentInfo.java                            |   61 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_37_Up.java                            |    2 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_10_Up.java                       |    2 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_86_Up.java                       |    2 
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voAllRound/VoArIntakeLossDay.java                           |   38 
 pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V1/TkDealOpenValveReport.java         |   27 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_5E_Up.java                            |    2 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_9603_Up.java                     |    2 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_C0_Up.java                            |    2 
 pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/config.xml                                                       |    8 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_9602_Up.java                          |    2 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_51_Up.java                            |    2 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_93_A3_Up.java                    |    2 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_6A_Up.java                            |    2 
 pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/msCenter/MsObj.java                               |   12 
 pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/rtuUpgrage/RtuUpgradeCtrl.java               |    2 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_A1_Up.java                            |    2 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_21_Up.java                            |    2 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_92_Up.java                            |    2 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_36_Up.java                            |    2 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_65_Up.java                       |    2 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_97_Up.java                       |    2 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_92_A2_Up.java                    |    2 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_24_Up.java                       |    2 
 pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/upgrade/UpgradeRtuDev.java                        |   28 
 pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/allRound/Ar4StatisticsCtrl.java      |  164 +
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_66_Up.java                            |    2 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_8A_Up.java                       |    2 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_56_Up.java                       |    2 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_12_Up.java                            |    2 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_98_Up.java                            |    2 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_69_Up.java                            |    2 
 pipIrr-platform/pipIrr-web/pom.xml                                                                                          |    5 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_9603_Up.java                          |    2 
 pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/AdapterImp_MsCenterUnit.java                      |   19 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_15_Up.java                       |    2 
 pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/allRound/Ar4BaseCtrl.java                        |    9 
 pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/msCenter/MsCenterUnitAdapter.java                 |   12 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_83_Up.java                            |    5 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_1600_Down.java                        |    2 
 pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/msCenter/MsCenterManager.java                     |  138 +
 pipIrr-platform/pipIrr-global/src/main/resources/application-global(mj梅江系统).yml                                             |   15 
 pipIrr-platform/文档/dbSQL/pipirr_ym(2025-02-10).sql                                                                          | 2736 ++++++++++++++++++++++
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_91_Up.java                            |    3 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_A0_Up.java                            |    2 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_A0_Up.java                            |    2 
 pipIrr-platform/pom.xml                                                                                                     |   11 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_02_Up.java                       |    3 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_67_Up.java                            |    2 
 pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/intakeController/IntakeControllerCtrl.java |    2 
 pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/PipIrrStatisticsApplication.java     |    5 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_5B_Up.java                       |    2 
 pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/largeScreen/WebSocketServer.java             |  136 +
 pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V2/TkDealCloseValveReportV2.java      |   25 
 pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/config(mj梅江).xml                                                 |    8 
 pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V1/TkDealAlarmStatus.java             |   26 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_3D_Up.java                            |    2 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_91_Up.java                            |    2 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_21_Up.java                       |    2 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_6B_Up.java                            |    2 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_39_Up.java                            |    2 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/DriverV2.java                                  |    6 
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voLargeScreen/VoBaseInfo.java                               |   65 
 pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/config(ym元谋).xml                                                 |    8 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_3A_Up.java                            |    2 
 pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/upgrade/UpgradeTask.java                          |   10 
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoLargeScreen/Ls4StatisticsMapper.java                     |  146 +
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_3D_Up.java                            |    2 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_81_Up.java                       |    2 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_6B_Up.java                            |    2 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_39_Up.java                            |    2 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/util/IDLongGenerator.java                                         |    9 
 pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/msCenter/MsCenterUnit.java                        |   83 
 pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/allRound/Ar4BaseSv.java                          |   10 
 pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V2/TkDealAlarmStatusV2.java           |   29 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/CodeParseCallback.java                                |    3 
 pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/largeScreen/Ls4StatisticsSv.java     |  170 +
 pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/allRound/Ar4StatisticsSv.java        |   84 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_99_Up.java                       |    2 
 pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/config(sp沙盘).xml                                                 |    8 
 pipIrr-platform/pipIrr-global/src/main/resources/application-global(ym元谋系统).yml                                             |   15 
 pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeClientCardMapper.xml                                              |    3 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_84_Up.java                       |    2 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_10_Up.java                            |    2 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_87_Up.java                       |    2 
 pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/special/SpecialSv.java               |   94 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_9602_Up.java                     |    2 
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voAllRound/VoArIntakeLossMonth.java                         |   33 
 pipIrr-platform/pipIrr-global/pom.xml                                                                                       |    5 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_9601_Up.java                          |    2 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_67_Up.java                            |    2 
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/util/OrgListenerSupport.java                                |   54 
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voAllRound/VoArIntakeRemote.java                            |   65 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_1601_Down.java                        |    1 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/MidResultToRtu.java                                   |    3 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/DriverV202404.java                        |    6 
 /dev/null                                                                                                                   |   49 
 pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeVirtualCardMapper.xml                                             |    5 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_30_Up.java                       |    2 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_9A_Up.java                       |    2 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_10_Up.java                            |    2 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/webUtil/WebSocketMessage.java                                     |   31 
 240 files changed, 7,038 insertions(+), 330 deletions(-)

diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/CodeParseCallback.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/CodeParseCallback.java
index ed45a9f..cfdf266 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/CodeParseCallback.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/CodeParseCallback.java
@@ -6,8 +6,9 @@
 	 * 璁剧疆涓婅鏁版嵁绫诲瀷锛屼笂鎶ユ暟鎹�:true锛屽懡浠ゅ簲绛�:false锛屽叾浠栵紙濡傚績璺炽�侀摼璺淮鎸侊級:null
 	 * 鍙栧緱鏁版嵁涓殑rtuAddr
 	 * @param reportOrResponse_trueOrFalse 涓婃姤鏄痶rue锛屽懡浠ゅ搷搴旀槸false
+	 * @param codeData 鍔熻兘瀵瑰簲鐨勬暟鎹璞�
 	 */
-	void callback(Boolean reportOrResponse_trueOrFalse) ;
+	void callback(Boolean reportOrResponse_trueOrFalse, Object codeData) ;
 
 	/**
 	 * 鍙湁鍗忚瑙f瀽鍣ㄦ墠鐭ラ亾RTU鐪熷疄鐨勭姸鎬侊紝鎵�璁ゆ彁渚涙鎺ュ彛锛屽悜澶栭�氱煡璁惧鐨勪竴浜涚姸鎬�
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/DriverParserDataCallback.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/DriverParserDataCallback.java
index 5480f26..a28c592 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/DriverParserDataCallback.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/DriverParserDataCallback.java
@@ -10,14 +10,16 @@
 	 * @param reportOrResponse_trueOrFalse 涓婅鏁版嵁鏄富鍔ㄤ笂鎶ヨ繕鏄懡浠ょ粨鏋�
 	 * @param parseFail 涓婅鏁版嵁瑙f瀽鏄惁澶辫触
 	 * @param rtuAddrInData 涓婅鏁版嵁涓湪鍗忚鏁版嵁涓殑Rtu鍦板潃锛�
+	 * @param codeData 鍔熻兘瀵瑰簲鐨勬暟鎹璞�
 	 * 	鈥滀慨鏀筊TU缁堢绠$悊閰嶇疆鍙傛暟鈥濆懡浠ょ殑杩斿洖鏁版嵁锛屽叾鍗忚澶翠腑鐨凴tu鍦板潃涓庢暟鎹腑鐨凴tu鍦板潃涓嶄竴鏍凤紝
 	 *  濡傛灉RTU涓嶈兘鍏抽棴缃戠粶锛岄偅涔坰essionCach涓殑Rtu鍦板潃鎬绘槸鐢ㄤ慨鏀瑰墠鐨凴tu鍦板潃锛屼娇寰椾互鍚庝笂琛屾暟鎹殑涓嶈兘鎵惧埌缂撳瓨涓殑Session
 	 */
 	void callback(String rtuAddr,
-			String code,
-			String codeName,
-			String upHex, 
-			Boolean reportOrResponse_trueOrFalse, 
-			boolean parseFail,
-			String rtuAddrInData) ;
+				  String code,
+				  String codeName,
+				  String upHex,
+				  Boolean reportOrResponse_trueOrFalse,
+				  boolean parseFail,
+				  String rtuAddrInData,
+				  Object ...codeData) ;
 }
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/MidResultToRtu.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/MidResultToRtu.java
index 1351b72..0984a87 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/MidResultToRtu.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/MidResultToRtu.java
@@ -27,6 +27,8 @@
 	public boolean isQuickSend;//閫熷彂鍛戒护锛屽嵆涓嶅彈涓嬪彂鏁版嵁鏃堕棿闂撮殧闄愬埗(閫氫俊涓棿浠朵负浣庡姛鑰楁椂璧蜂綔鐢�)
 	public boolean isFastCom;//蹇�熷懡浠わ紝涓嬪彂鏁版嵁鏃堕棿闂撮殧鍙楀皬鍊硷紙閰嶇疆鏂囦欢涓璮astCommandSendInterval锛夐檺鍒讹紙濡傚崌绾у懡浠わ級
 
+	public int countdown4Send;////鍊掕鏃讹紝褰撴鍊间负灏忎簬绛変簬0鏃舵墠浼氫笅鍙戯紝鍚﹀垯閫愭鍑�1锛岀洰鐨勬槸寤惰繜涓嬪彂鍛戒护锛屼娇鍏朵粬鍛戒护鍙互鎻愬墠鍙戦��
+
 	//public Object param ;//缂撳瓨涓�浜涙暟鎹紝渚嬪涓哄吋瀹圭帇宸ワ紙姹熸捣锛夊崗璁笌闈虫�诲崗璁紙铏氭嫙IC鍗$紪鍙烽暱搴︿笉涓�鑷达級锛屾妸涓嶅吋瀹圭殑铏氭嫙IC鍗$紪鍙风殑鍓嶅崐閮ㄥ垎鏀惧叆姝ゅ
 
 	public MidResultToRtu(){
@@ -35,6 +37,7 @@
 		isSendFirst = false ;
 		isQuickSend = false ;
 		isFastCom = false ;
+		countdown4Send = 0 ;
 	}
 
 	@Override
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/DriverV1.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/DriverV1.java
index 54279c3..b1c73a6 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/DriverV1.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/DriverV1.java
@@ -59,6 +59,7 @@
 		this.clear();
 		boolean isFail = false ;
 		String upCode = null ;
+		Object[] codeDataGrp = {null};
 		try{
 			CommonV1 cp = new CommonV1() ;
 			Boolean p206TrueUgFalse = cp.protocolType_p206TrueUgFalse(upBuffer) ;
@@ -100,9 +101,10 @@
 			}else{
 				return codeParse.parse(isLowPower, this.upCpParams, new CodeParseCallback(){
 					@Override
-					public void callback(Boolean flag) {
+					public void callback(Boolean flag, Object codeData) {
 						reportOrResponse_trueOrFalse = flag ;
 						rtuAddrInData = dV1.getRtuAddr() ;
+						codeDataGrp[0] = codeData ;
 					}
 					@Override
 					public void notify(NotifyInfo ...infos) {
@@ -116,7 +118,7 @@
 		} finally{
 			if(upCode != null){
 				//CRC楠岃瘉澶辫触鏃讹紝upCode涓簄ull锛屾鏃朵笉杩涜鍥炶皟
-				callback.callback(rtuAddr, upCode, CodeV1.getCodeName(upCode), upHex, reportOrResponse_trueOrFalse, isFail, rtuAddr);
+				callback.callback(rtuAddr, upCode, CodeV1.getCodeName(upCode), upHex, reportOrResponse_trueOrFalse, isFail, rtuAddr, codeDataGrp[0]);
 			}
 		}
 	}
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_02_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_02_Up.java
index fab35eb..bd364c7 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_02_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_02_Up.java
@@ -75,7 +75,7 @@
             //浣庡姛鑰楁椂锛屽敖蹇彂閫�
             confirmCommand.isQuickSend = true ;
         }
-        callback.callback(midRs.reportOrResponse_trueOrFalse);
+        callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV1)(para.data.subData)).subData);
         return new MidResult[]{confirmCommand, midRs} ;
     }
     /**
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_10_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_10_Up.java
index 21e4b05..434be53 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_10_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_10_Up.java
@@ -45,7 +45,7 @@
 
         midRs.reportOrResponse_trueOrFalse = false ;//鍛戒护搴旂瓟
 
-        callback.callback(midRs.reportOrResponse_trueOrFalse);
+        callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV1)(para.data.subData)).subData);
         return new MidResult[]{midRs} ;
     }
     /**
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_12_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_12_Up.java
index 4eb1589..1e5dd55 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_12_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_12_Up.java
@@ -40,7 +40,7 @@
 
         midRs.reportOrResponse_trueOrFalse = false ;//涓诲姩涓婃姤
 
-        callback.callback(midRs.reportOrResponse_trueOrFalse);
+        callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV1)(para.data.subData)).subData);
         return new MidResult[]{midRs} ;
     }
     /**
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_1601_Down.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_1601_Down.java
index cf160ad..edc3511 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_1601_Down.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_1601_Down.java
@@ -38,6 +38,7 @@
         midRs.isCachForOffLine = false ;//RTU涓嶅湪绾匡紝鍛戒护鏄惁缂撳瓨锛屼綆鍔熻�楁椂涓簍rue
 
         midRs.isFastCom = true ;//閫熷彂鍛戒护锛屼笅鍙戞暟鎹椂闂撮棿闅斿彈灏忓�硷紙閰嶇疆鏂囦欢涓璮astCommandSendInterval锛夐檺鍒�
+        midRs.countdown4Send = 10 ;//鍊掕鏃讹紝褰撴鍊间负灏忎簬绛変簬0鏃舵墠浼氫笅鍙戯紝鍚﹀垯閫愭鍑�1锛岀洰鐨勬槸寤惰繜涓嬪彂鍛戒护锛屼娇鍏朵粬鍛戒护鍙互鎻愬墠鍙戦��
 
         if(isLowPower != null && isLowPower.booleanValue()){
             //浣庡姛鑰楁椂锛屽敖蹇彂閫�
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_21_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_21_Up.java
index 40f8bac..fc547ae 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_21_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_21_Up.java
@@ -47,7 +47,7 @@
 
         midRs.reportOrResponse_trueOrFalse = false ;//鍛戒护搴旂瓟
 
-        callback.callback(midRs.reportOrResponse_trueOrFalse);
+        callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV1)(para.data.subData)).subData);
         return new MidResult[]{midRs} ;
     }
     /**
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_36_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_36_Up.java
index 787d2e0..8ddf799 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_36_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_36_Up.java
@@ -46,7 +46,7 @@
 
         midRs.reportOrResponse_trueOrFalse = false ;//鍛戒护搴旂瓟
 
-        callback.callback(midRs.reportOrResponse_trueOrFalse);
+        callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV1)(para.data.subData)).subData);
         return new MidResult[]{midRs} ;
     }
     /**
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_37_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_37_Up.java
index fed7e9f..c628cbc 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_37_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_37_Up.java
@@ -46,7 +46,7 @@
 
         midRs.reportOrResponse_trueOrFalse = false ;//鍛戒护搴旂瓟
 
-        callback.callback(midRs.reportOrResponse_trueOrFalse);
+        callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV1)(para.data.subData)).subData);
         return new MidResult[]{midRs} ;
     }
     /**
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_38_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_38_Up.java
index 81d595d..6ce54f1 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_38_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_38_Up.java
@@ -46,7 +46,7 @@
 
         midRs.reportOrResponse_trueOrFalse = false ;//鍛戒护搴旂瓟
 
-        callback.callback(midRs.reportOrResponse_trueOrFalse);
+        callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV1)(para.data.subData)).subData);
         return new MidResult[]{midRs} ;
     }
     /**
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_39_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_39_Up.java
index 425ab9c..eef66d4 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_39_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_39_Up.java
@@ -46,7 +46,7 @@
 
         midRs.reportOrResponse_trueOrFalse = false ;//鍛戒护搴旂瓟
 
-        callback.callback(midRs.reportOrResponse_trueOrFalse);
+        callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV1)(para.data.subData)).subData);
         return new MidResult[]{midRs} ;
     }
     /**
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_3A_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_3A_Up.java
index 574147a..6901bae 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_3A_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_3A_Up.java
@@ -46,7 +46,7 @@
 
         midRs.reportOrResponse_trueOrFalse = false ;//鍛戒护搴旂瓟
 
-        callback.callback(midRs.reportOrResponse_trueOrFalse);
+        callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV1)(para.data.subData)).subData);
         return new MidResult[]{midRs} ;
     }
     /**
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_3B_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_3B_Up.java
index ccb1442..42b782e 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_3B_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_3B_Up.java
@@ -46,7 +46,7 @@
 
         midRs.reportOrResponse_trueOrFalse = false ;//鍛戒护搴旂瓟
 
-        callback.callback(midRs.reportOrResponse_trueOrFalse);
+        callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV1)(para.data.subData)).subData);
         return new MidResult[]{midRs} ;
     }
     /**
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_3C_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_3C_Up.java
index c90e2a4..fcf1746 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_3C_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_3C_Up.java
@@ -46,7 +46,7 @@
 
         midRs.reportOrResponse_trueOrFalse = false ;//鍛戒护搴旂瓟
 
-        callback.callback(midRs.reportOrResponse_trueOrFalse);
+        callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV1)(para.data.subData)).subData);
         return new MidResult[]{midRs} ;
     }
     /**
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_3D_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_3D_Up.java
index 2271cb1..beea30f 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_3D_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_3D_Up.java
@@ -46,7 +46,7 @@
 
         midRs.reportOrResponse_trueOrFalse = false ;//鍛戒护搴旂瓟
 
-        callback.callback(midRs.reportOrResponse_trueOrFalse);
+        callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV1)(para.data.subData)).subData);
         return new MidResult[]{midRs} ;
     }
     /**
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_51_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_51_Up.java
index 8dd29ae..6094a5a 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_51_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_51_Up.java
@@ -46,7 +46,7 @@
 
         midRs.reportOrResponse_trueOrFalse = false ;//鍛戒护搴旂瓟
 
-        callback.callback(midRs.reportOrResponse_trueOrFalse);
+        callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV1)(para.data.subData)).subData);
         return new MidResult[]{midRs} ;
     }
     /**
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_5E_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_5E_Up.java
index c36cebe..f7fa29a 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_5E_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_5E_Up.java
@@ -45,7 +45,7 @@
 
         midRs.reportOrResponse_trueOrFalse = false ;//鍛戒护搴旂瓟
 
-        callback.callback(midRs.reportOrResponse_trueOrFalse);
+        callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV1)(para.data.subData)).subData);
         return new MidResult[]{midRs} ;
     }
     /**
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_65_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_65_Up.java
index e318ce6..63921cd 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_65_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_65_Up.java
@@ -46,7 +46,7 @@
 
         midRs.reportOrResponse_trueOrFalse = false ;//鍛戒护搴旂瓟
 
-        callback.callback(midRs.reportOrResponse_trueOrFalse);
+        callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV1)(para.data.subData)).subData);
         return new MidResult[]{midRs} ;
     }
     /**
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_66_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_66_Up.java
index 9c9ea27..fe07a6f 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_66_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_66_Up.java
@@ -47,7 +47,7 @@
 
         midRs.reportOrResponse_trueOrFalse = false ;//鍛戒护搴旂瓟
 
-        callback.callback(midRs.reportOrResponse_trueOrFalse);
+        callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV1)(para.data.subData)).subData);
         return new MidResult[]{midRs} ;
     }
     /**
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_67_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_67_Up.java
index da5c9d4..07ddcec 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_67_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_67_Up.java
@@ -46,7 +46,7 @@
 
         midRs.reportOrResponse_trueOrFalse = false ;//鍛戒护搴旂瓟
 
-        callback.callback(midRs.reportOrResponse_trueOrFalse);
+        callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV1)(para.data.subData)).subData);
         return new MidResult[]{midRs} ;
     }
     /**
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_68_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_68_Up.java
index 5900151..9685c87 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_68_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_68_Up.java
@@ -46,7 +46,7 @@
 
         midRs.reportOrResponse_trueOrFalse = false ;//鍛戒护搴旂瓟
 
-        callback.callback(midRs.reportOrResponse_trueOrFalse);
+        callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV1)(para.data.subData)).subData);
         return new MidResult[]{midRs} ;
     }
     /**
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_69_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_69_Up.java
index 0333371..013ddb6 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_69_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_69_Up.java
@@ -46,7 +46,7 @@
 
         midRs.reportOrResponse_trueOrFalse = false ;//鍛戒护搴旂瓟
 
-        callback.callback(midRs.reportOrResponse_trueOrFalse);
+        callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV1)(para.data.subData)).subData);
         return new MidResult[]{midRs} ;
     }
     /**
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_6A_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_6A_Up.java
index afdfabb..dfaac00 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_6A_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_6A_Up.java
@@ -47,7 +47,7 @@
 
         midRs.reportOrResponse_trueOrFalse = false ;//鍛戒护搴旂瓟
 
-        callback.callback(midRs.reportOrResponse_trueOrFalse);
+        callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV1)(para.data.subData)).subData);
         return new MidResult[]{midRs} ;
     }
     /**
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_6B_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_6B_Up.java
index eed2faf..2162438 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_6B_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_6B_Up.java
@@ -47,7 +47,7 @@
 
         midRs.reportOrResponse_trueOrFalse = false ;//鍛戒护搴旂瓟
 
-        callback.callback(midRs.reportOrResponse_trueOrFalse);
+        callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV1)(para.data.subData)).subData);
         return new MidResult[]{midRs} ;
     }
     /**
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_6D_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_6D_Up.java
index 53dc69b..1125f68 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_6D_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_6D_Up.java
@@ -46,7 +46,7 @@
 
         midRs.reportOrResponse_trueOrFalse = false ;//鍛戒护搴旂瓟
 
-        callback.callback(midRs.reportOrResponse_trueOrFalse);
+        callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV1)(para.data.subData)).subData);
         return new MidResult[]{midRs} ;
     }
     /**
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_81_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_81_Up.java
index 1b59ec8..2b80908 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_81_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_81_Up.java
@@ -76,7 +76,7 @@
             confirmCommand.isQuickSend = true ;
         }
 
-        callback.callback(midRs.reportOrResponse_trueOrFalse);
+        callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV1)(para.data.subData)).subData);
         if(para.data != null && para.data.getSubData() != null){
             DataCd81Vo cdData = (DataCd81Vo)((DataV1)para.data.getSubData()).subData ;
             if(cdData.stateVo != null && cdData.stateVo.valveState != null){
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_83_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_83_Up.java
index dd3e55f..5a9f2bc 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_83_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_83_Up.java
@@ -85,7 +85,7 @@
             }
         }
 
-        callback.callback(midRs.reportOrResponse_trueOrFalse);
+        callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV1)(para.data.subData)).subData);
         return new MidResult[]{confirmCommand, midRs} ;
     }
     /**
@@ -216,7 +216,8 @@
         Cd_83_Up obj = new Cd_83_Up() ;
         //涓嬮潰涓ゆ潯涓婃姤鏁版嵁锛孖C鍗$紪鐮侀兘鏄潪BCD缂栫爜鑰屽紓甯�
         //String hex = "683C68B08485353448830200000000001000282353FE739444000001000313000101211615000101210000000000000000000200019000011518000101210A7B16";
-        String hex = "683C68B05301154CEA8306001000000004343638483BBBB9E0001000001603000101215907000101210000000000000000000500019000015308000101210AF716";
+        //String hex = "683C68B05301154CEA8306001000000004343638483BBBB9E0001000001603000101215907000101210000000000000000000500019000015308000101210AF716";
+        String hex = "683868B0532328B90083074065840000FE00061010282353535B7F7691590100404022231024737F3F3F1FFF957296944239050000390001900000F916";
         byte[] bs = ByteUtil.hex2Bytes(hex) ;
 
         Data data = new Data() ;
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_84_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_84_Up.java
index cc63104..d8ceccc 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_84_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_84_Up.java
@@ -76,7 +76,7 @@
             confirmCommand.isQuickSend = true ;
         }
 
-        callback.callback(midRs.reportOrResponse_trueOrFalse);
+        callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV1)(para.data.subData)).subData);
         if(para.data != null && para.data.getSubData() != null){
             DataCd84Vo cdData = (DataCd84Vo)((DataV1)para.data.getSubData()).subData ;
             if(CommonV1.isCloseValveType(cdData.opType)){
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_91_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_91_Up.java
index 06d67cd..2431553 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_91_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_91_Up.java
@@ -39,7 +39,7 @@
 
         midRs.reportOrResponse_trueOrFalse = false ;//涓诲姩涓婃姤
 
-        callback.callback(midRs.reportOrResponse_trueOrFalse);
+        callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV1)(para.data.subData)).subData);
         return new MidResult[]{midRs} ;
     }
     /**
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_92_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_92_Up.java
index 327d453..13256f2 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_92_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_92_Up.java
@@ -48,7 +48,7 @@
 
         midRs.reportOrResponse_trueOrFalse = false ;//涓诲姩涓婃姤
 
-        callback.callback(midRs.reportOrResponse_trueOrFalse);
+        callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV1)(para.data.subData)).subData);
         if(para.data != null && para.data.getSubData() != null){
             DataCd92Vo subData = (DataCd92Vo)((DataV1)para.data.getSubData()).subData ;
             callback.notify(new ValveStateInfo(subData.success));
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_93_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_93_Up.java
index 3b7d704..441e13f 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_93_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_93_Up.java
@@ -48,7 +48,7 @@
 
         midRs.reportOrResponse_trueOrFalse = false ;//涓诲姩涓婃姤
 
-        callback.callback(midRs.reportOrResponse_trueOrFalse);
+        callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV1)(para.data.subData)).subData);
         if(para.data != null && para.data.getSubData() != null){
             DataCd93Vo subData = (DataCd93Vo)((DataV1)para.data.getSubData()).subData ;
             callback.notify(new ValveStateInfo(!subData.success));
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_9601_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_9601_Up.java
index 434583b..fc3b678 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_9601_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_9601_Up.java
@@ -45,7 +45,7 @@
 
         midRs.reportOrResponse_trueOrFalse = true ;//鍗囩骇鐨勶紝涓嶈涓烘槸鍛戒护搴旂瓟
 
-        callback.callback(midRs.reportOrResponse_trueOrFalse);
+        callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV1)(para.data.subData)).subData);
         if(para.data != null && para.data.getSubData() != null){
             DataCd960XVo subData = (DataCd960XVo)((DataV1)para.data.getSubData()).subData ;
             callback.notify(new UpgradeStateInfo(subData.success));
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_9602_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_9602_Up.java
index 4981e54..e6452cf 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_9602_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_9602_Up.java
@@ -45,7 +45,7 @@
 
         midRs.reportOrResponse_trueOrFalse = true ;//鍗囩骇鐨勶紝涓嶈涓烘槸鍛戒护搴旂瓟
 
-        callback.callback(midRs.reportOrResponse_trueOrFalse);
+        callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV1)(para.data.subData)).subData);
         if(para.data != null && para.data.getSubData() != null){
             DataCd960XVo subData = (DataCd960XVo)((DataV1)para.data.getSubData()).subData ;
             callback.notify(new UpgradeStateInfo(subData.success));
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_9603_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_9603_Up.java
index 4c5fa6c..15ea947 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_9603_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_9603_Up.java
@@ -45,7 +45,7 @@
 
         midRs.reportOrResponse_trueOrFalse = true ;//鍗囩骇鐨勶紝涓嶈涓烘槸鍛戒护搴旂瓟
 
-        callback.callback(midRs.reportOrResponse_trueOrFalse);
+        callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV1)(para.data.subData)).subData);
         if(para.data != null && para.data.getSubData() != null){
             DataCd960XVo subData = (DataCd960XVo)((DataV1)para.data.getSubData()).subData ;
             callback.notify(new UpgradeStateInfo(subData.success));
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_97_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_97_Up.java
index 707f8ac..a729378 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_97_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_97_Up.java
@@ -48,7 +48,7 @@
 
         midRs.reportOrResponse_trueOrFalse = false ;//涓诲姩涓婃姤
 
-        callback.callback(midRs.reportOrResponse_trueOrFalse);
+        callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV1)(para.data.subData)).subData);
         if(para.data != null && para.data.getSubData() != null){
             DataCd97Vo subData = (DataCd97Vo)((DataV1)para.data.getSubData()).subData ;
             callback.notify(new ValveStateInfo(subData.success));
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_98_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_98_Up.java
index 45e4a25..89e68aa 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_98_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_98_Up.java
@@ -48,7 +48,7 @@
 
         midRs.reportOrResponse_trueOrFalse = false ;//涓诲姩涓婃姤
 
-        callback.callback(midRs.reportOrResponse_trueOrFalse);
+        callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV1)(para.data.subData)).subData);
         if(para.data != null && para.data.getSubData() != null){
             DataCd98Vo subData = (DataCd98Vo)((DataV1)para.data.getSubData()).subData ;
             callback.notify(new ValveStateInfo(!subData.success));
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_99_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_99_Up.java
index 7b0102f..c179700 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_99_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_99_Up.java
@@ -47,7 +47,7 @@
 
         midRs.reportOrResponse_trueOrFalse = false ;//涓诲姩涓婃姤
 
-        callback.callback(midRs.reportOrResponse_trueOrFalse);
+        callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV1)(para.data.subData)).subData);
         if(para.data != null && para.data.getSubData() != null){
             DataCd99Vo subData = (DataCd99Vo)((DataV1)para.data.getSubData()).subData ;
             callback.notify(new ValveStateInfo(subData.success));
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_A0_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_A0_Up.java
index 1bbd623..632aa5d 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_A0_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_A0_Up.java
@@ -47,7 +47,7 @@
 
         midRs.reportOrResponse_trueOrFalse = false ;//涓诲姩涓婃姤
 
-        callback.callback(midRs.reportOrResponse_trueOrFalse);
+        callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV1)(para.data.subData)).subData);
         if(para.data != null && para.data.getSubData() != null){
             DataCdA0Vo subData = (DataCdA0Vo)((DataV1)para.data.getSubData()).subData ;
             callback.notify(new ValveStateInfo(subData.success));
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_A1_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_A1_Up.java
index da7dc20..0a78275 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_A1_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_A1_Up.java
@@ -46,7 +46,7 @@
 
         midRs.reportOrResponse_trueOrFalse = false ;//涓诲姩涓婃姤
 
-        callback.callback(midRs.reportOrResponse_trueOrFalse);
+        callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV1)(para.data.subData)).subData);
         return new MidResult[]{midRs} ;
     }
     /**
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_A2_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_A2_Up.java
index d7a1909..df6a9f9 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_A2_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_A2_Up.java
@@ -46,7 +46,7 @@
 
         midRs.reportOrResponse_trueOrFalse = false ;//涓诲姩涓婃姤
 
-        callback.callback(midRs.reportOrResponse_trueOrFalse);
+        callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV1)(para.data.subData)).subData);
         return new MidResult[]{midRs} ;
     }
     /**
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_C0_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_C0_Up.java
index 9e16294..81feb24 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_C0_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_C0_Up.java
@@ -76,7 +76,7 @@
             confirmCommand.isQuickSend = true ;
         }
 
-        callback.callback(midRs.reportOrResponse_trueOrFalse);
+        callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV1)(para.data.subData)).subData);
         if(para.data != null && para.data.getSubData() != null){
             DataCdC0Vo cdData = (DataCdC0Vo)((DataV1)para.data.getSubData()).subData ;
             if(cdData.stateVo != null && cdData.stateVo.valveState != null){
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/DriverV2.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/DriverV2.java
index 3297dbb..614e5b6 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/DriverV2.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/DriverV2.java
@@ -61,6 +61,7 @@
 		boolean isFail = false ;
 		String upCode = null ;
 		Short protocolVersion = null ;
+		Object[] codeDataGrp = {null};
 		try{
 			CommonV2 cp = new CommonV2() ;
 			Boolean p206TrueUgFalse = cp.protocolType_p206TrueUgFalse(upBuffer) ;
@@ -102,9 +103,10 @@
 			}else{
 				return codeParse.parse(isLowPower, this.upCpParams, new CodeParseCallback(){
 					@Override
-					public void callback(Boolean flag) {
+					public void callback(Boolean flag, Object codeData) {
 						reportOrResponse_trueOrFalse = flag ;
 						rtuAddrInData = dV2.getRtuAddr() ;
+						codeDataGrp[0] = codeData ;
 					}
 					@Override
 					public void notify(NotifyInfo ...infos) {
@@ -117,7 +119,7 @@
 			isFail = true ;
 			return new MidResult[]{(new MidResultError(ProtocolConstantV206V2.protocolName, rtuAddr, "涓ラ噸閿欒锛屽垎鏋怰tu鏁版嵁鍑洪敊锛佹暟鎹负锛�" + upHex + (e.getMessage() == null?"":("锛屽嚭閿欎俊鎭細" + e.getMessage())), e))} ;
 		} finally{
-			callback.callback(rtuAddr, upCode, CodeV2.getCodeName(upCode), upHex, reportOrResponse_trueOrFalse, isFail, rtuAddr);
+			callback.callback(rtuAddr, upCode, CodeV2.getCodeName(upCode), upHex, reportOrResponse_trueOrFalse, isFail, rtuAddr, codeDataGrp[0]);
 		}
 	}
 
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_02_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_02_Up.java
index 148d2d6..88f706c 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_02_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_02_Up.java
@@ -77,7 +77,7 @@
             confirmCommand.isQuickSend = true ;
         }
 
-        callback.callback(midRs.reportOrResponse_trueOrFalse);
+        callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV2)(para.data.subData)).subData);
         if(para.data != null && para.data.getSubData() != null){
             DataCd02Vo cdData = (DataCd02Vo)((DataV2)para.data.getSubData()).subData ;
             if(cdData.stateVo != null && cdData.stateVo.valveState != null){
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_10_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_10_Up.java
index 62262da..4fe3055 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_10_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_10_Up.java
@@ -45,7 +45,7 @@
 
         midRs.reportOrResponse_trueOrFalse = false ;//鍛戒护搴旂瓟
 
-        callback.callback(midRs.reportOrResponse_trueOrFalse);
+        callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV2)(para.data.subData)).subData);
         return new MidResult[]{midRs} ;
     }
     /**
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_12_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_12_Up.java
index 832c0b6..b61311e 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_12_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_12_Up.java
@@ -40,7 +40,7 @@
 
         midRs.reportOrResponse_trueOrFalse = false ;//涓诲姩涓婃姤
 
-        callback.callback(midRs.reportOrResponse_trueOrFalse);
+        callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV2)(para.data.subData)).subData);
         return new MidResult[]{midRs} ;
     }
     /**
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_1600_Down.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_1600_Down.java
index 321f0c2..f655f71 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_1600_Down.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_1600_Down.java
@@ -36,6 +36,8 @@
         midRs.maxSendTimes = null ;//鍛戒护鏈�澶у彂閫佹鏁�(褰撴敹涓嶅埌搴旂瓟鏃讹紝灏嗛噸鍙�)锛屽鏋滀笉璁剧疆锛屽懡浠ょ紦瀛樺櫒杩涜琛ュ厖璁剧疆
         midRs.isCachForOffLine = false ;//RTU涓嶅湪绾匡紝鍛戒护鏄惁缂撳瓨锛屼綆鍔熻�楁椂涓簍rue
 
+        midRs.isFastCom = true ;//閫熷彂鍛戒护锛屼笅鍙戞暟鎹椂闂撮棿闅斿彈灏忓�硷紙閰嶇疆鏂囦欢涓璮astCommandSendInterval锛夐檺鍒�
+
         if(isLowPower != null && isLowPower.booleanValue()){
             //浣庡姛鑰楁椂锛屽敖蹇彂閫�
             midRs.isQuickSend = true ;
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_1601_Down.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_1601_Down.java
index dcb32aa..3b5864f 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_1601_Down.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_1601_Down.java
@@ -37,6 +37,9 @@
         midRs.maxSendTimes = null ;//鍛戒护鏈�澶у彂閫佹鏁�(褰撴敹涓嶅埌搴旂瓟鏃讹紝灏嗛噸鍙�)锛屽鏋滀笉璁剧疆锛屽懡浠ょ紦瀛樺櫒杩涜琛ュ厖璁剧疆
         midRs.isCachForOffLine = false ;//RTU涓嶅湪绾匡紝鍛戒护鏄惁缂撳瓨锛屼綆鍔熻�楁椂涓簍rue
 
+        midRs.isFastCom = true ;//閫熷彂鍛戒护锛屼笅鍙戞暟鎹椂闂撮棿闅斿彈灏忓�硷紙閰嶇疆鏂囦欢涓璮astCommandSendInterval锛夐檺鍒�
+        midRs.countdown4Send = 1 ;//鍊掕鏃讹紝褰撴鍊间负灏忎簬绛変簬0鏃舵墠浼氫笅鍙戯紝鍚﹀垯閫愭鍑�1
+
         if(isLowPower != null && isLowPower.booleanValue()){
             //浣庡姛鑰楁椂锛屽敖蹇彂閫�
             midRs.isQuickSend = true ;
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_1602_Down.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_1602_Down.java
index 4a72d61..0cafff7 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_1602_Down.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_1602_Down.java
@@ -36,6 +36,8 @@
         midRs.maxSendTimes = null ;//鍛戒护鏈�澶у彂閫佹鏁�(褰撴敹涓嶅埌搴旂瓟鏃讹紝灏嗛噸鍙�)锛屽鏋滀笉璁剧疆锛屽懡浠ょ紦瀛樺櫒杩涜琛ュ厖璁剧疆
         midRs.isCachForOffLine = false ;//RTU涓嶅湪绾匡紝鍛戒护鏄惁缂撳瓨锛屼綆鍔熻�楁椂涓簍rue
 
+        midRs.isFastCom = true ;//閫熷彂鍛戒护锛屼笅鍙戞暟鎹椂闂撮棿闅斿彈灏忓�硷紙閰嶇疆鏂囦欢涓璮astCommandSendInterval锛夐檺鍒�
+
         if(isLowPower != null && isLowPower.booleanValue()){
             //浣庡姛鑰楁椂锛屽敖蹇彂閫�
             midRs.isQuickSend = true ;
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_1603_Down.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_1603_Down.java
index 5b6b9f9..dc6c373 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_1603_Down.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_1603_Down.java
@@ -36,6 +36,8 @@
         midRs.maxSendTimes = null ;//鍛戒护鏈�澶у彂閫佹鏁�(褰撴敹涓嶅埌搴旂瓟鏃讹紝灏嗛噸鍙�)锛屽鏋滀笉璁剧疆锛屽懡浠ょ紦瀛樺櫒杩涜琛ュ厖璁剧疆
         midRs.isCachForOffLine = false ;//RTU涓嶅湪绾匡紝鍛戒护鏄惁缂撳瓨锛屼綆鍔熻�楁椂涓簍rue
 
+        midRs.isFastCom = true ;//閫熷彂鍛戒护锛屼笅鍙戞暟鎹椂闂撮棿闅斿彈灏忓�硷紙閰嶇疆鏂囦欢涓璮astCommandSendInterval锛夐檺鍒�
+
         if(isLowPower != null && isLowPower.booleanValue()){
             //浣庡姛鑰楁椂锛屽敖蹇彂閫�
             midRs.isQuickSend = true ;
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_21_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_21_Up.java
index f431c21..e3cfb9c 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_21_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_21_Up.java
@@ -47,7 +47,7 @@
 
         midRs.reportOrResponse_trueOrFalse = false ;//鍛戒护搴旂瓟
 
-        callback.callback(midRs.reportOrResponse_trueOrFalse);
+        callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV2)(para.data.subData)).subData);
         return new MidResult[]{midRs} ;
     }
     /**
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_36_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_36_Up.java
index 953b75d..a13dab5 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_36_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_36_Up.java
@@ -46,7 +46,7 @@
 
         midRs.reportOrResponse_trueOrFalse = false ;//鍛戒护搴旂瓟
 
-        callback.callback(midRs.reportOrResponse_trueOrFalse);
+        callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV2)(para.data.subData)).subData);
         return new MidResult[]{midRs} ;
     }
     /**
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_37_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_37_Up.java
index 2357a8e..25f1f7d 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_37_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_37_Up.java
@@ -46,7 +46,7 @@
 
         midRs.reportOrResponse_trueOrFalse = false ;//鍛戒护搴旂瓟
 
-        callback.callback(midRs.reportOrResponse_trueOrFalse);
+        callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV2)(para.data.subData)).subData);
         return new MidResult[]{midRs} ;
     }
     /**
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_38_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_38_Up.java
index fe623ce..c455357 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_38_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_38_Up.java
@@ -46,7 +46,7 @@
 
         midRs.reportOrResponse_trueOrFalse = false ;//鍛戒护搴旂瓟
 
-        callback.callback(midRs.reportOrResponse_trueOrFalse);
+        callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV2)(para.data.subData)).subData);
         return new MidResult[]{midRs} ;
     }
     /**
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_39_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_39_Up.java
index c63b59a..3831fcc 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_39_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_39_Up.java
@@ -46,7 +46,7 @@
 
         midRs.reportOrResponse_trueOrFalse = false ;//鍛戒护搴旂瓟
 
-        callback.callback(midRs.reportOrResponse_trueOrFalse);
+        callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV2)(para.data.subData)).subData);
         return new MidResult[]{midRs} ;
     }
     /**
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_3A_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_3A_Up.java
index 129907a..b64019e 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_3A_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_3A_Up.java
@@ -46,7 +46,7 @@
 
         midRs.reportOrResponse_trueOrFalse = false ;//鍛戒护搴旂瓟
 
-        callback.callback(midRs.reportOrResponse_trueOrFalse);
+        callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV2)(para.data.subData)).subData);
         return new MidResult[]{midRs} ;
     }
     /**
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_3B_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_3B_Up.java
index 171c04b..ed987d1 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_3B_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_3B_Up.java
@@ -46,7 +46,7 @@
 
         midRs.reportOrResponse_trueOrFalse = false ;//鍛戒护搴旂瓟
 
-        callback.callback(midRs.reportOrResponse_trueOrFalse);
+        callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV2)(para.data.subData)).subData);
         return new MidResult[]{midRs} ;
     }
     /**
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_3C_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_3C_Up.java
index a180c9c..50d6e29 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_3C_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_3C_Up.java
@@ -46,7 +46,7 @@
 
         midRs.reportOrResponse_trueOrFalse = false ;//鍛戒护搴旂瓟
 
-        callback.callback(midRs.reportOrResponse_trueOrFalse);
+        callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV2)(para.data.subData)).subData);
         return new MidResult[]{midRs} ;
     }
     /**
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_3D_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_3D_Up.java
index 3c46061..747f2c4 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_3D_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_3D_Up.java
@@ -46,7 +46,7 @@
 
         midRs.reportOrResponse_trueOrFalse = false ;//鍛戒护搴旂瓟
 
-        callback.callback(midRs.reportOrResponse_trueOrFalse);
+        callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV2)(para.data.subData)).subData);
         return new MidResult[]{midRs} ;
     }
     /**
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_51_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_51_Up.java
index 6137c20..06af58d 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_51_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_51_Up.java
@@ -46,7 +46,7 @@
 
         midRs.reportOrResponse_trueOrFalse = false ;//鍛戒护搴旂瓟
 
-        callback.callback(midRs.reportOrResponse_trueOrFalse);
+        callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV2)(para.data.subData)).subData);
         return new MidResult[]{midRs} ;
     }
     /**
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_5E_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_5E_Up.java
index 5f8f979..ad05908 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_5E_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_5E_Up.java
@@ -46,7 +46,7 @@
 
         midRs.reportOrResponse_trueOrFalse = false ;//鍛戒护搴旂瓟
 
-        callback.callback(midRs.reportOrResponse_trueOrFalse);
+        callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV2)(para.data.subData)).subData);
         return new MidResult[]{midRs} ;
     }
     /**
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_65_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_65_Up.java
index a10069d..bc88750 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_65_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_65_Up.java
@@ -46,7 +46,7 @@
 
         midRs.reportOrResponse_trueOrFalse = false ;//鍛戒护搴旂瓟
 
-        callback.callback(midRs.reportOrResponse_trueOrFalse);
+        callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV2)(para.data.subData)).subData);
         return new MidResult[]{midRs} ;
     }
     /**
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_66_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_66_Up.java
index b916b1d..85d58c6 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_66_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_66_Up.java
@@ -47,7 +47,7 @@
 
         midRs.reportOrResponse_trueOrFalse = false ;//鍛戒护搴旂瓟
 
-        callback.callback(midRs.reportOrResponse_trueOrFalse);
+        callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV2)(para.data.subData)).subData);
         return new MidResult[]{midRs} ;
     }
     /**
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_67_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_67_Up.java
index 47f05f0..527c41d 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_67_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_67_Up.java
@@ -46,7 +46,7 @@
 
         midRs.reportOrResponse_trueOrFalse = false ;//鍛戒护搴旂瓟
 
-        callback.callback(midRs.reportOrResponse_trueOrFalse);
+        callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV2)(para.data.subData)).subData);
         return new MidResult[]{midRs} ;
     }
     /**
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_68_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_68_Up.java
index 1b80feb..7f88934 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_68_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_68_Up.java
@@ -46,7 +46,7 @@
 
         midRs.reportOrResponse_trueOrFalse = false ;//鍛戒护搴旂瓟
 
-        callback.callback(midRs.reportOrResponse_trueOrFalse);
+        callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV2)(para.data.subData)).subData);
         return new MidResult[]{midRs} ;
     }
     /**
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_69_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_69_Up.java
index dcc790b..764ebd4 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_69_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_69_Up.java
@@ -46,7 +46,7 @@
 
         midRs.reportOrResponse_trueOrFalse = false ;//鍛戒护搴旂瓟
 
-        callback.callback(midRs.reportOrResponse_trueOrFalse);
+        callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV2)(para.data.subData)).subData);
         return new MidResult[]{midRs} ;
     }
     /**
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_6A_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_6A_Up.java
index 510a411..9e94c3a 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_6A_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_6A_Up.java
@@ -47,7 +47,7 @@
 
         midRs.reportOrResponse_trueOrFalse = false ;//鍛戒护搴旂瓟
 
-        callback.callback(midRs.reportOrResponse_trueOrFalse);
+        callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV2)(para.data.subData)).subData);
         return new MidResult[]{midRs} ;
     }
     /**
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_6B_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_6B_Up.java
index 4185e33..240893d 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_6B_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_6B_Up.java
@@ -47,7 +47,7 @@
 
         midRs.reportOrResponse_trueOrFalse = false ;//鍛戒护搴旂瓟
 
-        callback.callback(midRs.reportOrResponse_trueOrFalse);
+        callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV2)(para.data.subData)).subData);
         return new MidResult[]{midRs} ;
     }
     /**
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_6D_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_6D_Up.java
index e212236..03d2662 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_6D_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_6D_Up.java
@@ -46,7 +46,7 @@
 
         midRs.reportOrResponse_trueOrFalse = false ;//鍛戒护搴旂瓟
 
-        callback.callback(midRs.reportOrResponse_trueOrFalse);
+        callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV2)(para.data.subData)).subData);
         return new MidResult[]{midRs} ;
     }
     /**
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_81_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_81_Up.java
index f01ab6f..b720d9d 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_81_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_81_Up.java
@@ -76,7 +76,7 @@
             confirmCommand.isQuickSend = true ;
         }
 
-        callback.callback(midRs.reportOrResponse_trueOrFalse);
+        callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV2)(para.data.subData)).subData);
         if(para.data != null && para.data.getSubData() != null){
             DataCd81Vo cdData = (DataCd81Vo)((DataV2)para.data.getSubData()).subData ;
             if(cdData.stateVo != null && cdData.stateVo.valveState != null){
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_83_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_83_Up.java
index 22394bd..1b8ec30 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_83_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_83_Up.java
@@ -77,7 +77,7 @@
             confirmCommand.isQuickSend = true ;
         }
 
-        callback.callback(midRs.reportOrResponse_trueOrFalse);
+        callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV2)(para.data.subData)).subData);
         if(para.data != null && para.data.getSubData() != null){
             Object subData = ((DataV2)para.data.getSubData()).subData ;
             if(subData instanceof DataCd83OpenVo){
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_84_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_84_Up.java
index 4709cd6..ca1555b 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_84_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_84_Up.java
@@ -77,7 +77,7 @@
             confirmCommand.isQuickSend = true ;
         }
 
-        callback.callback(midRs.reportOrResponse_trueOrFalse);
+        callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV2)(para.data.subData)).subData);
         if(para.data != null && para.data.getSubData() != null){
             DataCd84Vo cdData = (DataCd84Vo)((DataV2)para.data.getSubData()).subData ;
             if(CommonV2.isCloseValveType(cdData.opType)){
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_91_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_91_Up.java
index a0c45d1..d932a7e 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_91_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_91_Up.java
@@ -3,6 +3,7 @@
 import com.dy.common.mw.protocol.*;
 import com.dy.common.mw.protocol.p206V2.CodeV2;
 import com.dy.common.mw.protocol.p206V2.CommonV2;
+import com.dy.common.mw.protocol.p206V2.DataV2;
 import com.dy.common.mw.protocol.p206V2.ParseParamsForUpV2;
 import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
@@ -41,7 +42,7 @@
 
         midRs.reportOrResponse_trueOrFalse = false ;//涓诲姩涓婃姤
 
-        callback.callback(midRs.reportOrResponse_trueOrFalse);
+        callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV2)(para.data.subData)).subData);
         return new MidResult[]{midRs} ;
     }
     /**
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_92_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_92_Up.java
index 48cc463..c2ad10b 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_92_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_92_Up.java
@@ -48,7 +48,7 @@
 
         midRs.reportOrResponse_trueOrFalse = false ;//涓诲姩涓婃姤
 
-        callback.callback(midRs.reportOrResponse_trueOrFalse);
+        callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV2)(para.data.subData)).subData);
         if(para.data != null && para.data.getSubData() != null){
             DataCd92Vo subData = (DataCd92Vo)((DataV2)para.data.getSubData()).subData ;
             callback.notify(new ValveStateInfo(subData.success));
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_93_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_93_Up.java
index 63dfe25..7d28324 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_93_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_93_Up.java
@@ -48,7 +48,7 @@
 
         midRs.reportOrResponse_trueOrFalse = false ;//涓诲姩涓婃姤
 
-        callback.callback(midRs.reportOrResponse_trueOrFalse);
+        callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV2)(para.data.subData)).subData);
         if(para.data != null && para.data.getSubData() != null){
             DataCd93Vo subData = (DataCd93Vo)((DataV2)para.data.getSubData()).subData ;
             callback.notify(new ValveStateInfo(!subData.success));
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_9601_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_9601_Up.java
index 29fda88..4ceb26b 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_9601_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_9601_Up.java
@@ -45,7 +45,7 @@
 
         midRs.reportOrResponse_trueOrFalse = true ;//鍗囩骇鐨勶紝涓嶈涓烘槸鍛戒护搴旂瓟
 
-        callback.callback(midRs.reportOrResponse_trueOrFalse);
+        callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV2)(para.data.subData)).subData);
         if(para.data != null && para.data.getSubData() != null){
             DataCd960XVo subData = (DataCd960XVo)((DataV2)para.data.getSubData()).subData ;
             callback.notify(new UpgradeStateInfo(subData.success));
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_9602_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_9602_Up.java
index 4a12426..e4f6147 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_9602_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_9602_Up.java
@@ -45,7 +45,7 @@
 
         midRs.reportOrResponse_trueOrFalse = true ;//鍗囩骇鐨勶紝涓嶈涓烘槸鍛戒护搴旂瓟
 
-        callback.callback(midRs.reportOrResponse_trueOrFalse);
+        callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV2)(para.data.subData)).subData);
         if(para.data != null && para.data.getSubData() != null){
             DataCd960XVo subData = (DataCd960XVo)((DataV2)para.data.getSubData()).subData ;
             callback.notify(new UpgradeStateInfo(subData.success));
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_9603_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_9603_Up.java
index 00a47a7..9766cc2 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_9603_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_9603_Up.java
@@ -45,7 +45,7 @@
 
         midRs.reportOrResponse_trueOrFalse = true ;//鍗囩骇鐨勶紝涓嶈涓烘槸鍛戒护搴旂瓟
 
-        callback.callback(midRs.reportOrResponse_trueOrFalse);
+        callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV2)(para.data.subData)).subData);
         if(para.data != null && para.data.getSubData() != null){
             DataCd960XVo subData = (DataCd960XVo)((DataV2)para.data.getSubData()).subData ;
             callback.notify(new UpgradeStateInfo(subData.success));
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_97_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_97_Up.java
index ab95db3..7272066 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_97_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_97_Up.java
@@ -48,7 +48,7 @@
 
         midRs.reportOrResponse_trueOrFalse = false ;//涓诲姩涓婃姤
 
-        callback.callback(midRs.reportOrResponse_trueOrFalse);
+        callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV2)(para.data.subData)).subData);
         if(para.data != null && para.data.getSubData() != null){
             DataCd97Vo subData = (DataCd97Vo)((DataV2)para.data.getSubData()).subData ;
             callback.notify(new ValveStateInfo(subData.success));
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_98_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_98_Up.java
index ff1853f..e592d44 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_98_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_98_Up.java
@@ -48,7 +48,7 @@
 
         midRs.reportOrResponse_trueOrFalse = false ;//涓诲姩涓婃姤
 
-        callback.callback(midRs.reportOrResponse_trueOrFalse);
+        callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV2)(para.data.subData)).subData);
         if(para.data != null && para.data.getSubData() != null){
             DataCd98Vo subData = (DataCd98Vo)((DataV2)para.data.getSubData()).subData ;
             callback.notify(new ValveStateInfo(!subData.success));
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_99_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_99_Up.java
index 3348654..88267e8 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_99_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_99_Up.java
@@ -47,7 +47,7 @@
 
         midRs.reportOrResponse_trueOrFalse = false ;//涓诲姩涓婃姤
 
-        callback.callback(midRs.reportOrResponse_trueOrFalse);
+        callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV2)(para.data.subData)).subData);
         if(para.data != null && para.data.getSubData() != null){
             DataCd99Vo subData = (DataCd99Vo)((DataV2)para.data.getSubData()).subData ;
             callback.notify(new ValveStateInfo(subData.success));
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_A0_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_A0_Up.java
index 7923e9e..39923f1 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_A0_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_A0_Up.java
@@ -47,7 +47,7 @@
 
         midRs.reportOrResponse_trueOrFalse = false ;//涓诲姩涓婃姤
 
-        callback.callback(midRs.reportOrResponse_trueOrFalse);
+        callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV2)(para.data.subData)).subData);
         if(para.data != null && para.data.getSubData() != null){
             DataCdA0Vo subData = (DataCdA0Vo)((DataV2)para.data.getSubData()).subData ;
             callback.notify(new ValveStateInfo(subData.success));
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_A1_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_A1_Up.java
index 9fbb025..538b2ab 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_A1_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_A1_Up.java
@@ -46,7 +46,7 @@
 
         midRs.reportOrResponse_trueOrFalse = false ;//涓诲姩涓婃姤
 
-        callback.callback(midRs.reportOrResponse_trueOrFalse);
+        callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV2)(para.data.subData)).subData);
         return new MidResult[]{midRs} ;
     }
     /**
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_A2_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_A2_Up.java
index 7102c8a..d2b52ea 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_A2_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_A2_Up.java
@@ -46,7 +46,7 @@
 
         midRs.reportOrResponse_trueOrFalse = false ;//涓诲姩涓婃姤
 
-        callback.callback(midRs.reportOrResponse_trueOrFalse);
+        callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV2)(para.data.subData)).subData);
         return new MidResult[]{midRs} ;
     }
     /**
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_C0_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_C0_Up.java
index 4d6c2eb..b5bf2a2 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_C0_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_C0_Up.java
@@ -76,7 +76,7 @@
             confirmCommand.isQuickSend = true ;
         }
 
-        callback.callback(midRs.reportOrResponse_trueOrFalse);
+        callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV2)(para.data.subData)).subData);
         if(para.data != null && para.data.getSubData() != null){
             DataCdC0Vo cdData = (DataCdC0Vo)((DataV2)para.data.getSubData()).subData ;
             if(cdData.stateVo != null && cdData.stateVo.valveState != null){
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/DriverV202404.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/DriverV202404.java
index c504d5c..9e09ff8 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/DriverV202404.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/DriverV202404.java
@@ -59,6 +59,7 @@
 		this.clear();
 		boolean isFail = false ;
 		String upCode = null ;
+		Object[] codeDataGrp = {null};
 		try{
 			CommonV202404 cp = new CommonV202404() ;
 			Boolean p202404TrueUgFalse = cp.protocolType_p206TrueUgFalse(upBuffer) ;
@@ -100,9 +101,10 @@
 			}else{
 				return codeParse.parse(isLowPower, this.upCpParams, new CodeParseCallback(){
 					@Override
-					public void callback(Boolean flag) {
+					public void callback(Boolean flag, Object codeData) {
 						reportOrResponse_trueOrFalse = flag ;
 						//rtuAddrInData = dV201.getRtuAddr() ;
+						codeDataGrp[0] = codeData ;
 					}
 					@Override
 					public void notify(NotifyInfo ...infos) {
@@ -115,7 +117,7 @@
 			isFail = true ;
 			return new MidResult[]{(new MidResultError(ProtocolConstantV206V202404.protocolName, rtuAddr, "涓ラ噸閿欒锛屽垎鏋怰tu鏁版嵁鍑洪敊锛佹暟鎹负锛�" + upHex + (e.getMessage() == null?"":("锛屽嚭閿欎俊鎭細" + e.getMessage())), e))} ;
 		} finally{
-			callback.callback(rtuAddr, upCode, CodeV202404.getCodeName(upCode), upHex, reportOrResponse_trueOrFalse, isFail, rtuAddr);
+			callback.callback(rtuAddr, upCode, CodeV202404.getCodeName(upCode), upHex, reportOrResponse_trueOrFalse, isFail, rtuAddr, codeDataGrp[0]);
 		}
 	}
 
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_02_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_02_Up.java
index 1d8a3a6..3cf6aa3 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_02_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_02_Up.java
@@ -2,6 +2,7 @@
 
 
 import com.dy.common.mw.protocol.*;
+import com.dy.common.mw.protocol.p206V1.DataV1;
 import com.dy.common.mw.protocol.p206V202404.*;
 import com.dy.common.mw.protocol.p206V202404.upVos.DataCd02Vo;
 import com.dy.common.util.ByteUtil;
@@ -74,7 +75,7 @@
             //浣庡姛鑰楁椂锛屽敖蹇彂閫�
             confirmCommand.isQuickSend = true ;
         }
-        callback.callback(midRs.reportOrResponse_trueOrFalse);
+        callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV202404)(para.data.subData)).subData);
         return new MidResult[]{confirmCommand, midRs} ;
     }
     /**
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_10_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_10_Up.java
index 10b91c8..b56f2b1 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_10_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_10_Up.java
@@ -42,7 +42,7 @@
 
         midRs.reportOrResponse_trueOrFalse = false ;
 
-        callback.callback(midRs.reportOrResponse_trueOrFalse);
+        callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV202404)(para.data.subData)).subData);
         return new MidResult[]{midRs} ;
     }
     /**
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_15_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_15_Up.java
index f39d009..54b50ca 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_15_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_15_Up.java
@@ -42,7 +42,7 @@
 
         midRs.reportOrResponse_trueOrFalse = false ;//涓诲姩涓婃姤
 
-        callback.callback(midRs.reportOrResponse_trueOrFalse);
+        callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV202404)(para.data.subData)).subData);
         return new MidResult[]{midRs} ;
     }
     /**
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_16_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_16_Up.java
index 9dec008..ed54f55 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_16_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_16_Up.java
@@ -41,7 +41,7 @@
 
         midRs.reportOrResponse_trueOrFalse = false ;
 
-        callback.callback(midRs.reportOrResponse_trueOrFalse);
+        callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV202404)(para.data.subData)).subData);
         return new MidResult[]{midRs} ;
     }
     /**
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_21_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_21_Up.java
index 4b6edb0..567e4c0 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_21_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_21_Up.java
@@ -41,7 +41,7 @@
 
         midRs.reportOrResponse_trueOrFalse = false ;
 
-        callback.callback(midRs.reportOrResponse_trueOrFalse);
+        callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV202404)(para.data.subData)).subData);
         return new MidResult[]{midRs} ;
     }
     /**
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_22_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_22_Up.java
index 10df5d1..66ecd86 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_22_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_22_Up.java
@@ -41,7 +41,7 @@
 
         midRs.reportOrResponse_trueOrFalse = false ;
 
-        callback.callback(midRs.reportOrResponse_trueOrFalse);
+        callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV202404)(para.data.subData)).subData);
         return new MidResult[]{midRs} ;
     }
     /**
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_23_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_23_Up.java
index 994bc16..178b53e 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_23_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_23_Up.java
@@ -41,7 +41,7 @@
 
         midRs.reportOrResponse_trueOrFalse = false ;
 
-        callback.callback(midRs.reportOrResponse_trueOrFalse);
+        callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV202404)(para.data.subData)).subData);
         return new MidResult[]{midRs} ;
     }
     /**
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_24_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_24_Up.java
index 1c65543..eec746e 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_24_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_24_Up.java
@@ -41,7 +41,7 @@
 
         midRs.reportOrResponse_trueOrFalse = false ;
 
-        callback.callback(midRs.reportOrResponse_trueOrFalse);
+        callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV202404)(para.data.subData)).subData);
         return new MidResult[]{midRs} ;
     }
     /**
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_25_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_25_Up.java
index e277dcb..904cea9 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_25_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_25_Up.java
@@ -41,7 +41,7 @@
 
         midRs.reportOrResponse_trueOrFalse = false ;
 
-        callback.callback(midRs.reportOrResponse_trueOrFalse);
+        callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV202404)(para.data.subData)).subData);
         return new MidResult[]{midRs} ;
     }
     /**
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_26_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_26_Up.java
index 59178ff..98a9279 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_26_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_26_Up.java
@@ -41,7 +41,7 @@
 
         midRs.reportOrResponse_trueOrFalse = false ;
 
-        callback.callback(midRs.reportOrResponse_trueOrFalse);
+        callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV202404)(para.data.subData)).subData);
         return new MidResult[]{midRs} ;
     }
     /**
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_30_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_30_Up.java
index 58757dc..8a8b274 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_30_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_30_Up.java
@@ -41,7 +41,7 @@
 
         midRs.reportOrResponse_trueOrFalse = false ;
 
-        callback.callback(midRs.reportOrResponse_trueOrFalse);
+        callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV202404)(para.data.subData)).subData);
         return new MidResult[]{midRs} ;
     }
     /**
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_31_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_31_Up.java
index 3a5ecf7..7753b04 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_31_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_31_Up.java
@@ -41,7 +41,7 @@
 
         midRs.reportOrResponse_trueOrFalse = false ;
 
-        callback.callback(midRs.reportOrResponse_trueOrFalse);
+        callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV202404)(para.data.subData)).subData);
         return new MidResult[]{midRs} ;
     }
     /**
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_50_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_50_Up.java
index d8b73c7..2fe05fd 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_50_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_50_Up.java
@@ -42,7 +42,7 @@
 
         midRs.reportOrResponse_trueOrFalse = false ;//涓诲姩涓婃姤
 
-        callback.callback(midRs.reportOrResponse_trueOrFalse);
+        callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV202404)(para.data.subData)).subData);
         return new MidResult[]{midRs} ;
     }
     /**
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_55_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_55_Up.java
index 2387664..e0eeb3d 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_55_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_55_Up.java
@@ -46,7 +46,7 @@
 
         midRs.reportOrResponse_trueOrFalse = false ;
 
-        callback.callback(midRs.reportOrResponse_trueOrFalse);
+        callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV202404)(para.data.subData)).subData);
         return new MidResult[]{midRs} ;
     }
     /**
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_56_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_56_Up.java
index 0cb3a10..72d80ca 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_56_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_56_Up.java
@@ -42,7 +42,7 @@
 
         midRs.reportOrResponse_trueOrFalse = false ;//涓诲姩涓婃姤
 
-        callback.callback(midRs.reportOrResponse_trueOrFalse);
+        callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV202404)(para.data.subData)).subData);
         return new MidResult[]{midRs} ;
     }
     /**
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_5B_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_5B_Up.java
index 372f3aa..2ba3341 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_5B_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_5B_Up.java
@@ -42,7 +42,7 @@
 
         midRs.reportOrResponse_trueOrFalse = false ;
 
-        callback.callback(midRs.reportOrResponse_trueOrFalse);
+        callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV202404)(para.data.subData)).subData);
         return new MidResult[]{midRs} ;
     }
     /**
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_5C_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_5C_Up.java
index c9a2574..a2931fa 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_5C_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_5C_Up.java
@@ -45,7 +45,7 @@
 
         midRs.reportOrResponse_trueOrFalse = false ;
 
-        callback.callback(midRs.reportOrResponse_trueOrFalse);
+        callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV202404)(para.data.subData)).subData);
         return new MidResult[]{midRs} ;
     }
     /**
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_65_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_65_Up.java
index cab10de..c217215 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_65_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_65_Up.java
@@ -46,7 +46,7 @@
 
         midRs.reportOrResponse_trueOrFalse = false ;
 
-        callback.callback(midRs.reportOrResponse_trueOrFalse);
+        callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV202404)(para.data.subData)).subData);
         return new MidResult[]{midRs} ;
     }
     /**
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_68_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_68_Up.java
index 201f0ca..c2cfdd0 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_68_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_68_Up.java
@@ -42,7 +42,7 @@
 
         midRs.reportOrResponse_trueOrFalse = false ;//涓诲姩涓婃姤
 
-        callback.callback(midRs.reportOrResponse_trueOrFalse);
+        callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV202404)(para.data.subData)).subData);
         return new MidResult[]{midRs} ;
     }
     /**
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_80_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_80_Up.java
index c7a2ff2..c34538b 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_80_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_80_Up.java
@@ -76,7 +76,7 @@
             //浣庡姛鑰楁椂锛屽敖蹇彂閫�
             confirmCommand.isQuickSend = true ;
         }
-        callback.callback(midRs.reportOrResponse_trueOrFalse);
+        callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV202404)(para.data.subData)).subData);
         if(para.data != null && para.data.getSubData() != null){
             callback.notify(new ValveStateInfo(true)) ;
         }
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_81_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_81_Up.java
index 5dcdd32..dc72d25 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_81_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_81_Up.java
@@ -76,7 +76,7 @@
             //浣庡姛鑰楁椂锛屽敖蹇彂閫�
             confirmCommand.isQuickSend = true ;
         }
-        callback.callback(midRs.reportOrResponse_trueOrFalse);
+        callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV202404)(para.data.subData)).subData);
         if(para.data != null && para.data.getSubData() != null){
             DataCd81Vo cdData = (DataCd81Vo)((DataV202404)para.data.getSubData()).subData ;
             if(cdData.statePump != null){
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_83_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_83_Up.java
index bd18237..c22c9ad 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_83_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_83_Up.java
@@ -76,7 +76,7 @@
             //浣庡姛鑰楁椂锛屽敖蹇彂閫�
             confirmCommand.isQuickSend = true ;
         }
-        callback.callback(midRs.reportOrResponse_trueOrFalse);
+        callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV202404)(para.data.subData)).subData);
 
         return new MidResult[]{confirmCommand, midRs} ;
     }
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_84_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_84_Up.java
index 9d72e78..df6850b 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_84_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_84_Up.java
@@ -75,7 +75,7 @@
             //浣庡姛鑰楁椂锛屽敖蹇彂閫�
             confirmCommand.isQuickSend = true ;
         }
-        callback.callback(midRs.reportOrResponse_trueOrFalse);
+        callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV202404)(para.data.subData)).subData);
         if(para.data != null && ((DataV202404)para.data.getSubData()).subData != null){
             callback.notify(new ValveStateInfo(true));
         }
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_85_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_85_Up.java
index 4578f72..23c3078 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_85_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_85_Up.java
@@ -76,7 +76,7 @@
             //浣庡姛鑰楁椂锛屽敖蹇彂閫�
             confirmCommand.isQuickSend = true ;
         }
-        callback.callback(midRs.reportOrResponse_trueOrFalse);
+        callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV202404)(para.data.subData)).subData);
         if(para.data != null && ((DataV202404)para.data.getSubData()).subData != null){
             callback.notify(new ValveStateInfo(false));
         }
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_86_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_86_Up.java
index 7a2d259..a0ceac1 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_86_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_86_Up.java
@@ -42,7 +42,7 @@
 
         midRs.reportOrResponse_trueOrFalse = false ;
 
-        callback.callback(midRs.reportOrResponse_trueOrFalse);
+        callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV202404)(para.data.subData)).subData);
         return new MidResult[]{midRs} ;
     }
     /**
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_87_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_87_Up.java
index 5759e11..9032398 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_87_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_87_Up.java
@@ -42,7 +42,7 @@
 
         midRs.reportOrResponse_trueOrFalse = false ;
 
-        callback.callback(midRs.reportOrResponse_trueOrFalse);
+        callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV202404)(para.data.subData)).subData);
         return new MidResult[]{midRs} ;
     }
     /**
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_88_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_88_Up.java
index ec5c5b5..55eace5 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_88_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_88_Up.java
@@ -42,7 +42,7 @@
 
         midRs.reportOrResponse_trueOrFalse = false ;
 
-        callback.callback(midRs.reportOrResponse_trueOrFalse);
+        callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV202404)(para.data.subData)).subData);
         return new MidResult[]{midRs} ;
     }
     /**
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_8A_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_8A_Up.java
index 2b187ae..d45f4f2 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_8A_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_8A_Up.java
@@ -74,7 +74,7 @@
             //浣庡姛鑰楁椂锛屽敖蹇彂閫�
             confirmCommand.isQuickSend = true ;
         }
-        callback.callback(midRs.reportOrResponse_trueOrFalse);
+        callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV202404)(para.data.subData)).subData);
         return new MidResult[]{confirmCommand, midRs} ;
     }
     /**
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_92_A2_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_92_A2_Up.java
index 652bbea..502752e 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_92_A2_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_92_A2_Up.java
@@ -45,7 +45,7 @@
 
         midRs.reportOrResponse_trueOrFalse = false ;
 
-        callback.callback(midRs.reportOrResponse_trueOrFalse);
+        callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV202404)(para.data.subData)).subData);
         if(para.data != null && para.data.getSubData() != null){
             DataCd92_A2Vo subData = (DataCd92_A2Vo)((DataV202404)para.data.getSubData()).subData ;
             //opResult ;//寮�鍚车/闃�缁撴灉: 0x00:鎴愬姛 0x81:澶辫触
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_93_A3_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_93_A3_Up.java
index b5434ee..e5c444e 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_93_A3_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_93_A3_Up.java
@@ -44,7 +44,7 @@
 
         midRs.reportOrResponse_trueOrFalse = false ;
 
-        callback.callback(midRs.reportOrResponse_trueOrFalse);
+        callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV202404)(para.data.subData)).subData);
         if(para.data != null && para.data.getSubData() != null){
             DataCd93_A3Vo subData = (DataCd93_A3Vo)((DataV202404)para.data.getSubData()).subData ;
             //opResult ;//鍏虫车/闃�缁撴灉: 0x00:鎴愬姛 0x81:澶辫触
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_9601_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_9601_Up.java
index 2f80106..43a3b5e 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_9601_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_9601_Up.java
@@ -45,7 +45,7 @@
 
         midRs.reportOrResponse_trueOrFalse = true ;//鍗囩骇鐨勶紝涓嶈涓烘槸鍛戒护搴旂瓟
 
-        callback.callback(midRs.reportOrResponse_trueOrFalse);
+        callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV202404)(para.data.subData)).subData);
         if(para.data != null && para.data.getSubData() != null){
             DataCd960XVo subData = (DataCd960XVo)((DataV202404)para.data.getSubData()).subData ;
             callback.notify(new UpgradeStateInfo(subData.success));
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_9602_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_9602_Up.java
index 517d44e..3b763bd 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_9602_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_9602_Up.java
@@ -45,7 +45,7 @@
 
         midRs.reportOrResponse_trueOrFalse = true ;//鍗囩骇鐨勶紝涓嶈涓烘槸鍛戒护搴旂瓟
 
-        callback.callback(midRs.reportOrResponse_trueOrFalse);
+        callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV202404)(para.data.subData)).subData);
         if(para.data != null && para.data.getSubData() != null){
             DataCd960XVo subData = (DataCd960XVo)((DataV202404)para.data.getSubData()).subData ;
             callback.notify(new UpgradeStateInfo(subData.success));
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_9603_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_9603_Up.java
index 8dd7280..525006f 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_9603_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_9603_Up.java
@@ -45,7 +45,7 @@
 
         midRs.reportOrResponse_trueOrFalse = true ;//鍗囩骇鐨勶紝涓嶈涓烘槸鍛戒护搴旂瓟
 
-        callback.callback(midRs.reportOrResponse_trueOrFalse);
+        callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV202404)(para.data.subData)).subData);
         if(para.data != null && para.data.getSubData() != null){
             DataCd960XVo subData = (DataCd960XVo)((DataV202404)para.data.getSubData()).subData ;
             callback.notify(new UpgradeStateInfo(subData.success));
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_97_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_97_Up.java
index e3cd079..f3f0b62 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_97_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_97_Up.java
@@ -42,7 +42,7 @@
 
         midRs.reportOrResponse_trueOrFalse = false ;
 
-        callback.callback(midRs.reportOrResponse_trueOrFalse);
+        callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV202404)(para.data.subData)).subData);
         return new MidResult[]{midRs} ;
     }
     /**
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_98_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_98_Up.java
index dba8ec1..5cf02d2 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_98_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_98_Up.java
@@ -42,7 +42,7 @@
 
         midRs.reportOrResponse_trueOrFalse = false ;
 
-        callback.callback(midRs.reportOrResponse_trueOrFalse);
+        callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV202404)(para.data.subData)).subData);
         return new MidResult[]{midRs} ;
     }
     /**
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_99_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_99_Up.java
index 124c85a..641b48a 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_99_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_99_Up.java
@@ -41,7 +41,7 @@
 
         midRs.reportOrResponse_trueOrFalse = false ;
 
-        callback.callback(midRs.reportOrResponse_trueOrFalse);
+        callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV202404)(para.data.subData)).subData);
         return new MidResult[]{midRs} ;
     }
     /**
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_9A_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_9A_Up.java
index 1ca5e77..7f548d9 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_9A_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_9A_Up.java
@@ -41,7 +41,7 @@
 
         midRs.reportOrResponse_trueOrFalse = false ;
 
-        callback.callback(midRs.reportOrResponse_trueOrFalse);
+        callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV202404)(para.data.subData)).subData);
         return new MidResult[]{midRs} ;
     }
     /**
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_9C_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_9C_Up.java
index f5ede77..2c2da4e 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_9C_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_9C_Up.java
@@ -41,7 +41,7 @@
 
         midRs.reportOrResponse_trueOrFalse = false ;
 
-        callback.callback(midRs.reportOrResponse_trueOrFalse);
+        callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV202404)(para.data.subData)).subData);
         return new MidResult[]{midRs} ;
     }
     /**
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_C2_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_C2_Up.java
index 7558ba0..0116cc3 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_C2_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_C2_Up.java
@@ -76,7 +76,7 @@
             //浣庡姛鑰楁椂锛屽敖蹇彂閫�
             confirmCommand.isQuickSend = true ;
         }
-        callback.callback(midRs.reportOrResponse_trueOrFalse);
+        callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV202404)(para.data.subData)).subData);
         if(para.data != null && para.data.getSubData() != null){
             DataCdC2Vo subData = (DataCdC2Vo)((DataV202404)para.data.getSubData()).subData ;
             //	public Byte opType2 ;//寮�鍚叧闂細0: 寮�鍚� -1:鍏抽棴
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/softUpgrade/state/UpgradeRtu.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/softUpgrade/state/UpgradeRtu.java
index 41b06f6..7c13c3a 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/softUpgrade/state/UpgradeRtu.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/softUpgrade/state/UpgradeRtu.java
@@ -28,14 +28,16 @@
     @JSONField(serialize = false)
     public static final int STATE_FAIL = 4 ;//4-鍗囩骇澶辫触锛堝鍖呮锛�
     @JSONField(serialize = false)
-    public static final int STATE_FAILOFFLINE = 5 ;//4-鍗囩骇澶辫触锛堢绾匡級
+    public static final int STATE_FAILOFFLINE = 5 ;//5-鍗囩骇澶辫触锛堢绾匡級
     @JSONField(serialize = false)
-    public static final int STATE_FAILOPEN = 6 ;//4-鍗囩骇澶辫触锛堥榾寮�锛�
+    public static final int STATE_FAILOPEN = 6 ;//6-鍗囩骇澶辫触锛堥榾寮�锛�
+    @JSONField(serialize = false)
+    public static final int STATE_FAILRTU = 7 ;//7-鍗囩骇澶辫触锛圧TU鑷繁澶辫触锛�
     @JSONField(serialize = false)
     public static final int RAMADDRADD = 0x200 ;//绋嬪簭瀛樺偍鍐呭瓨鍦ㄥ潃澧為噺
 
     public String rtuAddr ;
-    public int state ;// -1-绂荤嚎锛�0-鏈紑濮嬶紝1-鍗囩骇涓紝2-鍗囩骇鎴愬姛锛�3-鍗囩骇澶辫触锛�1鍖呮锛夛紝4-鍗囩骇澶辫触锛堥潪1鍖呮锛夛紝5-鍗囩骇澶辫触锛堢绾匡級锛�6-鍗囩骇澶辫触锛堥榾寮�锛�
+    public int state ;// -1-绂荤嚎锛�0-鏈紑濮嬶紝1-鍗囩骇涓紝2-鍗囩骇鎴愬姛锛�3-鍗囩骇澶辫触锛�1鍖呮锛夛紝4-鍗囩骇澶辫触锛堥潪1鍖呮锛夛紝5-鍗囩骇澶辫触锛堢绾匡級锛�6-鍗囩骇澶辫触锛堥榾寮�锛夛紝7-鍗囩骇澶辫触锛圧TU锛�
     public int totalPackage ;// 鎬诲寘鏁�
     public int currentPackage ;// 褰撳墠涓嬪彂鍗囩骇鍖呮暟
     public int currentRamAddr ;// 褰撳墠涓嬪彂鍗囩骇鍖匯TU瀛樺偍鍦板潃
@@ -77,6 +79,8 @@
                 return "绂荤嚎澶辫触";
             case STATE_FAILOPEN:
                 return "闃�寮�澶辫触";
+            case STATE_FAILRTU:
+                return "RTU澶辫触";
             default:
                 return "鏈煡";
         }
@@ -87,12 +91,14 @@
      * @param code
      * @param softData
      * @param callbackCom
+     * @param objects
      */
     public void trigger(String code,
                         String protocolName,
                         Short protocolVersion,
                         byte[][] softData,
-                        Callback callbackCom){
+                        Callback callbackCom,
+                        Object ...objects){
         return ;
     }
 
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/util/IDLongGenerator.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/util/IDLongGenerator.java
index 3b8a133..3ab0397 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/util/IDLongGenerator.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/util/IDLongGenerator.java
@@ -22,6 +22,7 @@
 	//姝D鐢熸垚鍣ㄥ湪鍚勪釜瀛愮郴缁熶腑闅惧厤涓哄悓涓�绫绘暟鎹敓鎴愮浉鍚岀殑ID锛岄�犳垚鏁版嵁搴撴彃鍏ュ洜涓婚敭鐩稿悓鑰屾姤閿�,
 	//鎵�浠ヨ璁℃鍚庣紑锛屾瘡涓瓙绯荤粺鍚庣紑涓嶅悓
 	private static int suffix = 0 ;
+	private static final int noSuffix = 0 ;
 
 	static {
 		last = current() ;
@@ -56,7 +57,7 @@
      * @return ID
      */
     public static Long generateTodayStartId(){
-    	return (currentTodayStart() * chengShu) * 100 + suffix;
+    	return (currentTodayStart() * chengShu) * 100 + noSuffix;
     }
     
     /**
@@ -64,7 +65,7 @@
      * @return ID
      */
     public static Long generateTodayEndId(){
-    	return (currentTodayEnd() * chengShu) * 100 + suffix;
+    	return (currentTodayEnd() * chengShu) * 100 + noSuffix;
     }
     
     
@@ -73,7 +74,7 @@
      * @return ID
      */
     public static Long generateBeforeXDayStartId(int xday){
-    	return (beforeXDayStart(xday) * chengShu) * 100 + suffix;
+    	return (beforeXDayStart(xday) * chengShu) * 100 + noSuffix;
     }
     
     /**
@@ -81,7 +82,7 @@
      * @return ID
      */
     public static Long generateBeforeXDayEndId(int xday){
-    	return (beforeXDayEnd(xday) * chengShu) * 100 + suffix;
+    	return (beforeXDayEnd(xday) * chengShu) * 100 + noSuffix;
     }
   
     
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/webUtil/WebSocketMessage.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/webUtil/WebSocketMessage.java
new file mode 100644
index 0000000..a996dec
--- /dev/null
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/webUtil/WebSocketMessage.java
@@ -0,0 +1,31 @@
+package com.dy.common.webUtil;
+
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @Author: liurunyu
+ * @Date: 2025/2/11 10:41
+ * @Description
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@Builder
+@Schema(name="websocket娑堟伅鍩虹被")
+@JsonPropertyOrder({"type", "content"})
+public class WebSocketMessage<T> {
+
+    @Schema(description = "鏁版嵁绫诲瀷")
+    public String type;
+    @Schema(description = "鏁版嵁")
+    public T content;
+
+    public static final String TYPE_HEARTBEAT = "HEARTBEAT";//蹇冭烦锛屼篃鏄枃鏈暟鎹紝鏁版嵁鍐呭鏄湇鍔$鏃跺埢
+    public static final String TYPE_TEXT = "TEXT";//鏂囨湰鏁版嵁
+    public static final String TYPE_JSON = "JSON";//json鏁版嵁
+}
diff --git a/pipIrr-platform/pipIrr-global/pom.xml b/pipIrr-platform/pipIrr-global/pom.xml
index 161108e..8af0d88 100644
--- a/pipIrr-platform/pipIrr-global/pom.xml
+++ b/pipIrr-platform/pipIrr-global/pom.xml
@@ -69,6 +69,7 @@
         <dependency>
             <groupId>org.projectlombok</groupId>
             <artifactId>lombok</artifactId>
+            <version>1.18.28</version>
         </dependency>
         <dependency>
             <groupId>org.aspectj</groupId>
@@ -129,10 +130,6 @@
             <scope>compile</scope>
         </dependency>
 
-        <dependency>
-            <groupId>org.projectlombok</groupId>
-            <artifactId>lombok</artifactId>
-        </dependency>
         <!--EasyExcel鐩稿叧渚濊禆-->
         <dependency>
             <groupId>com.alibaba</groupId>
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/VoAllRound/VoArIntakeRemote.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/VoAllRound/VoArIntakeRemote.java
deleted file mode 100644
index a8ae268..0000000
--- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/VoAllRound/VoArIntakeRemote.java
+++ /dev/null
@@ -1,49 +0,0 @@
-package com.dy.pipIrrGlobal.VoAllRound;
-
-import com.alibaba.fastjson2.annotation.JSONField;
-import com.alibaba.fastjson2.writer.ObjectWriterImplToString;
-import com.fasterxml.jackson.annotation.JsonPropertyOrder;
-import lombok.Data;
-
-import java.util.Date;
-
-/**
- * @Author: liurunyu
- * @Date: 2025/1/14 17:03
- * @Description
- */
-@Data
-@JsonPropertyOrder({"id", "onLine", "alarm", "alarmDt", "lastOpenDt", "lastCloseDt"})
-public class VoArIntakeRemote {
-    private static final long serialVersionUID = 202501141703001L;
-
-    @JSONField(serializeUsing= ObjectWriterImplToString.class)
-    public Long id;
-
-    /**
-     * 鍦ㄧ嚎鎯呭喌, true鍦ㄧ嚎锛宖alse绂荤嚎锛宯ull鏈煡
-     */
-    public Boolean onLine ;
-
-    /**
-     * 鏈�鏂版姤璀︿俊鎭�
-     */
-    public String alarm ;
-
-    /**
-     * 鏈�鏂版姤璀︽椂闂�
-     */
-    public Date alarmDt ;
-
-    /**
-     * 鏈�鍚庡紑闃�鏃堕棿
-     */
-    public Date lastOpenDt ;
-
-    /**
-     * 鏈�鍚庡叧闂椂闂�
-     */
-    public Date lastCloseDt ;
-
-
-}
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoAllRound/Ar4BaseMapper.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoAllRound/Ar4BaseMapper.java
index a41e16f..57720c8 100644
--- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoAllRound/Ar4BaseMapper.java
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoAllRound/Ar4BaseMapper.java
@@ -1,7 +1,7 @@
 package com.dy.pipIrrGlobal.daoAllRound;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.dy.pipIrrGlobal.VoAllRound.VoArIntakeBase;
+import com.dy.pipIrrGlobal.voAllRound.VoArIntakeBase;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoAllRound/Ar4RemoteMapper.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoAllRound/Ar4RemoteMapper.java
new file mode 100644
index 0000000..29f2f4f
--- /dev/null
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoAllRound/Ar4RemoteMapper.java
@@ -0,0 +1,40 @@
+package com.dy.pipIrrGlobal.daoAllRound;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.dy.pipIrrGlobal.voAllRound.VoArIntakeRemote;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * @Author: liurunyu
+ * @Date: 2025/1/22 09:45
+ * @Description
+ */
+@Mapper
+public interface Ar4RemoteMapper extends BaseMapper<Object> {
+
+    /**
+     * 鏌ヨ鍙栨按鍙f渶鏂版姤璀︿俊鎭�
+     * @param intakeId
+     * @return
+     */
+    List<VoArIntakeRemote> alarmLastInfo(@Param("intakeId") Long intakeId) ;
+
+    /**
+     * 鏌ヨ鍙栨按鍙f渶鏂板紑鍏抽榾淇℃伅
+     * @param intakeId
+     * @return
+     */
+    List<VoArIntakeRemote> openCloseValveLastInfo(@Param("intakeId") Long intakeId) ;
+
+    /**
+     * 鏌ヨ鍙栨按鍙f渶鏂版紡鎹熶俊鎭�
+     * @param intakeId
+     * @return
+     */
+    List<VoArIntakeRemote> lossLastInfo(@Param("intakeId") Long intakeId) ;
+
+
+}
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoAllRound/Ar4StatisticsMapper.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoAllRound/Ar4StatisticsMapper.java
new file mode 100644
index 0000000..001e4ff
--- /dev/null
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoAllRound/Ar4StatisticsMapper.java
@@ -0,0 +1,54 @@
+package com.dy.pipIrrGlobal.daoAllRound;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.dy.pipIrrGlobal.voAllRound.*;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * @Author: liurunyu
+ * @Date: 2025/1/22 14:45
+ * @Description
+ */
+@Mapper
+public interface Ar4StatisticsMapper extends BaseMapper<Object> {
+
+    /**
+     * 寮�鍏抽榾璁板綍
+     * @param intakeId
+     * @return
+     */
+    List<VoArIntakeOpenCloseValve> openCloseRecords(@Param("intakeId") Long intakeId, @Param("start") Integer start, @Param("count") Integer count) ;
+
+    /**
+     * 鏃ユ紡鎹熻褰�
+     * @param intakeId
+     * @return
+     */
+    List<VoArIntakeLossDay> lossDayRecords(@Param("intakeId") Long intakeId, @Param("start") Integer start, @Param("count") Integer count) ;
+
+    /**
+     * 鏈堟紡鎹熻褰�
+     * @param intakeId
+     * @return
+     */
+    List<VoArIntakeLossMonth> lossMonthRecords(@Param("intakeId") Long intakeId, @Param("start") Integer start, @Param("count") Integer count) ;
+
+    /**
+     * 鏃ョ敤姘寸粺璁¤褰�
+     * @param intakeId
+     * @return
+     */
+    List<VoArIntakeAmountDay> amountDayRecords(@Param("intakeId") Long intakeId, @Param("start") Integer start, @Param("count") Integer count) ;
+
+    /**
+     * 鏈堢敤姘寸粺璁¤褰�
+     * @param intakeId
+     * @return
+     */
+    List<VoArIntakeAmountMonth> amountMonthRecords(@Param("intakeId") Long intakeId, @Param("start") Integer start, @Param("count") Integer count) ;
+
+
+}
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoLargeScreen/Ls4StatisticsMapper.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoLargeScreen/Ls4StatisticsMapper.java
new file mode 100644
index 0000000..450fd42
--- /dev/null
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoLargeScreen/Ls4StatisticsMapper.java
@@ -0,0 +1,146 @@
+package com.dy.pipIrrGlobal.daoLargeScreen;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.dy.pipIrrGlobal.voSpecial.VoTopXClient;
+import com.dy.pipIrrGlobal.voSpecial.VoTopXIntake;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @Author: liurunyu
+ * @Date: 2025/2/6 10:46
+ * @Description
+ */
+@Mapper
+public interface Ls4StatisticsMapper extends BaseMapper<Object> {
+
+    /**
+     * 娑夊強琛屾斂鍖哄垝鎬绘暟
+     * @return
+     */
+    Integer totalCountOfDistrict(@Param("level")Integer level) ;
+    /**
+     * 鐗囧尯鎬绘暟
+     * @return
+     */
+    Integer totalCountOfBlock() ;
+    /**
+     * 鍒嗘按鎴挎�绘暟
+     * @return
+     */
+    Integer totalCountOfDivide() ;
+    /**
+     * 鍙栨按鍙f�绘暟
+     * @return
+     */
+    Integer totalCountOfIntake() ;
+    /**
+     * 宸茬粦瀹氭帶鍒跺櫒鐨勫彇姘村彛鎬绘暟
+     * @return
+     */
+    Integer totalCountOfIntakeWithController() ;
+   /**
+     * 鏈粦瀹氭帶鍒跺櫒鐨勫彇姘村彛鎬绘暟
+     * @return
+     */
+    Integer totalCountOfIntakeWithoutController() ;
+    /**
+     * 闃�鎺у櫒鎬绘暟
+     * @return
+     */
+    Integer totalCountOfController() ;
+    /**
+     * 娴佹氮闃�鎺у櫒鎬绘暟
+     * @return
+     */
+    Integer totalCountOfControllerTramp() ;
+
+    /**
+     * 寮�闃�鎬绘暟
+     */
+    Integer totalCountOfOpenValve(@Param("dt") Date dt) ;
+
+    /**
+     * 鍏抽榾鎬绘暟
+     */
+    Integer totalCountOfCloseValve(@Param("dt") Date dt) ;
+
+    /**
+     * 鎶ヨ鎬绘暟
+     */
+    Integer totalCountOfAlarm(@Param("dt") Date dt) ;
+
+    /**
+     * 鏃犳姤璀︽�绘暟
+     */
+    Integer totalCountOfNoAlarm(@Param("dt") Date dt) ;
+
+
+    /**
+     * 浠庢煇鏃朵互鏉ワ紝鏇句笂鎶ヨ繃鏁版嵁鐨勬�绘暟
+     */
+    Integer mTotalCountOfReport(@Param("fromDt") Date fromDt) ;
+    /**
+     * 浠庢煇鏃朵互鏉ワ紝鏈浘涓婃姤杩囨暟鎹殑鎬绘暟
+     */
+    Integer mTotalCountOfNoReport(@Param("fromDt") Date fromDt) ;
+    /**
+     * 浠庢湭涓婃姤杩囨暟鎹殑鎬绘暟
+     */
+    Integer mTotalCountOfNeverReport() ;
+
+
+    /**
+     * 浠庢煇鏃朵互鏉ワ紝鏇鹃榾寮�鎬绘暟
+     */
+    Integer mTotalCountOfOpenValve(@Param("fromDt") Date fromDt) ;
+    /**
+     * 浠庢煇鏃朵互鏉ワ紝鏇鹃榾鍏虫�绘暟
+     */
+    Integer mTotalCountOfCloseValve(@Param("fromDt") Date fromDt) ;
+    /**
+     * 浠庢湭寮�杩囬榾鐨勬�绘暟
+     */
+    Integer mTotalCountOfNeverOpenValve() ;
+
+
+
+    /**
+     * 浠庢煇鏃朵互鏉ワ紝鏇炬姤璀︽�绘暟
+     */
+    Integer mTotalCountOfAlarm(@Param("fromDt") Date fromDt) ;
+    /**
+     * 浠庢煇鏃朵互鏉ワ紝鏇炬棤鎶ヨ鎬绘暟
+     */
+    Integer mTotalCountOfNoAlarm(@Param("fromDt") Date fromDt) ;
+    /**
+     * 浠庢湭鎶ヨ繃璀︽�绘暟
+     */
+    Integer mTotalCountOfNeverAlarm() ;
+
+
+
+
+    /**
+     * 鏌愭棩鍐滄埛鐢ㄦ按鍓峏鍚�
+     * @param idStart 璧峰id
+     * @param idEnd 鎴id
+     * @param count 鍓嶅嚑鍚�
+     * @return 瀹炰綋闆嗗悎
+     */
+    List<VoTopXClient> topXClientAtCertainDay(@Param("idStart") Long idStart, @Param("idEnd") Long idEnd, @Param("count") int count) ;
+
+    /**
+     * 鏌愭棩鍙栨按鍙g敤姘村墠X鍚�
+     * @param idStart 璧峰id
+     * @param idEnd 鎴id
+     * @param count 鍓嶅嚑鍚�
+     * @return 瀹炰綋闆嗗悎
+     */
+    List<VoTopXIntake> topXIntakeAtCertainDay(@Param("idStart") Long idStart, @Param("idEnd") Long idEnd, @Param("count") int count) ;
+
+
+}
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoPr/PrIntakeMapper.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoPr/PrIntakeMapper.java
index 9a94c28..1a44d5e 100644
--- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoPr/PrIntakeMapper.java
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoPr/PrIntakeMapper.java
@@ -96,6 +96,13 @@
 
     /**
      * 鏍规嵁鏉慖d鑾峰彇鍏ㄩ儴鍦板潃
+     * @param intakeId 鏉慖d
+     * @return  intakeName  鍙栨按鍙g紪鍙�
+     */
+    String getNameById(@Param("intakeId") Long intakeId);
+
+    /**
+     * 鏍规嵁鏉慖d鑾峰彇鍏ㄩ儴鍦板潃
      * @param villageId 鏉慖d
      * @return  address  鍏ㄩ儴浜旂骇鍦板潃
      */
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSpecial/SpecialMapper.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSpecial/SpecialMapper.java
new file mode 100644
index 0000000..c2a3881
--- /dev/null
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSpecial/SpecialMapper.java
@@ -0,0 +1,46 @@
+package com.dy.pipIrrGlobal.daoSpecial;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.dy.pipIrrGlobal.voSpecial.VoAbnormalCloseValve;
+import com.dy.pipIrrGlobal.voSpecial.VoSteal;
+import org.apache.ibatis.annotations.Mapper;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @Author: liurunyu
+ * @Date: 2025/2/7 14:40
+ * @Description
+ */
+@Mapper
+public interface SpecialMapper extends BaseMapper<Object> {
+
+    /**
+     * 鏌ヨ鎬绘暟
+     * @param params 鏌ヨ鏉′欢
+     * @return 鎬绘暟
+     */
+    Long selectStealTotal(Map<?, ?> params) ;
+
+    /**
+     * 鍒嗛〉鏌ヨ涓�浜�
+     * @param params 鏌ヨ鏉′欢
+     * @return 瀹炰綋闆嗗悎
+     */
+    List<VoSteal> selectStealSome(Map<?, ?> params) ;
+
+    /**
+     * 鏌ヨ鎬绘暟
+     * @param params 鏌ヨ鏉′欢
+     * @return 鎬绘暟
+     */
+    Long selectAbnormalCloseValveTotal(Map<?, ?> params) ;
+
+    /**
+     * 鍒嗛〉鏌ヨ涓�浜�
+     * @param params 鏌ヨ鏉′欢
+     * @return 瀹炰綋闆嗗悎
+     */
+    List<VoAbnormalCloseValve> selectAbnormalCloseValveSome(Map<?, ?> params) ;
+
+}
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/rtuMw/Web2RtuMw.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/rtuMw/Web2RtuMw.java
index c4318f7..d56a6d3 100644
--- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/rtuMw/Web2RtuMw.java
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/rtuMw/Web2RtuMw.java
@@ -3,9 +3,9 @@
 import com.dy.common.multiDataSource.DataSourceContext;
 import com.dy.common.mw.protocol.Command;
 import com.dy.common.mw.protocol.CommandType;
-import com.dy.common.softUpgrade.state.UpgradeTaskVo;
 import com.dy.common.webUtil.BaseResponse;
 import com.dy.common.webUtil.BaseResponseUtils;
+import com.dy.pipIrrGlobal.util.OrgListenerSupport;
 import org.springframework.core.env.Environment;
 import org.springframework.http.HttpEntity;
 import org.springframework.http.HttpHeaders;
@@ -14,12 +14,15 @@
 import org.springframework.web.client.RestTemplate;
 import org.springframework.web.util.UriComponentsBuilder;
 
+import java.util.Iterator;
+import java.util.Map;
+
 /**
  * @Author: liurunyu
  * @Date: 2024/10/23 11:45
  * @Description
  */
-public abstract class Web2RtuMw {
+public abstract class Web2RtuMw extends OrgListenerSupport {
     /**
      * pro_mw锛氬睘鎬�
      * tag浠庢帶鍒跺櫒涓幏鍙�
@@ -33,6 +36,7 @@
     protected static final String ContextRtuLogFile = "/rtuMw/com/rtuLogFile";
     protected static final String ContextRtuLogText = "/rtuMw/com/rtuLogText";
 
+    protected static final String ContextRegisterMsReceiverWebUrl = "/rtuMw/com/registerMsReceiverWebUrl";
     protected static final String ContextUgTaskSend = "/rtuMw/com/upgradeRtu";
     protected static final String ContextUgForceOver = "/rtuMw/com/ugForceOver";
     /**
@@ -44,14 +48,33 @@
         return env.getProperty(pro_mw + "." + DataSourceContext.get() + "." + pro_url);
     }
     /**
+     * 寰楀埌鍚戦�氫俊涓棿浠跺彂閫佹暟鎹殑URL
+     * @param env
+     * @param orgTag
+     * @return
+     */
+    protected String get2MwUrl(Environment env, String orgTag) {
+        return env.getProperty(pro_mw + "." + orgTag + "." + pro_url);
+    }
+    /**
      * 寰楀埌鍚戦�氫俊涓棿浠跺彂閫佸己鍒跺仠姝㈠崌绾х殑鍛戒护URL
      * @param env
+     * @param context
      * @return
      */
     protected String get2MwRequestUrl(Environment env, String context) {
         return get2MwUrl(env) + context;
     }
-
+    /**
+     * 寰楀埌鍚戦�氫俊涓棿浠跺彂閫佸己鍒跺仠姝㈠崌绾х殑鍛戒护URL
+     * @param env
+     * @param orgTag
+     * @param context
+     * @return
+     */
+    protected String get2MwRequestUrl(Environment env, String orgTag, String context) {
+        return get2MwUrl(env, orgTag) + context;
+    }
 
     /**
      * 鍚戦�氫俊涓棿浠跺彂閫乺tu杩滅▼鍗囩骇浠诲姟
@@ -88,15 +111,61 @@
      * @return
      */
     protected BaseResponse sendGetRequest2Mw(RestTemplate restTemplate, String toMwUrl) {
+        return sendGetRequest2Mw(restTemplate, toMwUrl, null);
+    }
+
+    /**
+     * 鍚戦�氫俊涓棿浠跺彂閫乺tu杩滅▼鍗囩骇浠诲姟
+     * @param restTemplate SpringBoot鐨凴estTemplate
+     * @param toMwUrl 鍒伴�氫俊涓棿浠剁殑web璇锋眰Url
+     * @param paramName 鍙傛暟鍚嶇О
+     * @param paramValue 鍙傛暟
+     * @return
+     */
+    protected BaseResponse sendGetRequest2Mw(RestTemplate restTemplate, String toMwUrl, String paramName, String paramValue) {
         String url = UriComponentsBuilder.fromUriString(toMwUrl)
                 .build()
                 .toUriString();
 
-        //UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl(url)
-        //        .queryParam("test", test);
         UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl(url) ;
+        if(paramName != null && !paramName.trim().equals("")){
+            builder.queryParam(paramName, paramValue==null?"":paramValue) ;
+        }
+        return sendGetRequest2Mw(restTemplate, builder);
+    }
 
-        ResponseEntity<BaseResponse> response = null;
+    /**
+     * 鍚戦�氫俊涓棿浠跺彂閫乺tu杩滅▼鍗囩骇浠诲姟
+     * @param restTemplate SpringBoot鐨凴estTemplate
+     * @param toMwUrl 鍒伴�氫俊涓棿浠剁殑web璇锋眰Url
+     * @param params 鍙傛暟闆嗗悎锛屽弬鏁板悕绉版槸key锛屽弬鏁版槸value
+     * @return
+     */
+    protected BaseResponse sendGetRequest2Mw(RestTemplate restTemplate, String toMwUrl, Map<String, String> params) {
+        String url = UriComponentsBuilder.fromUriString(toMwUrl)
+                .build()
+                .toUriString();
+
+        UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl(url) ;
+        if(params != null && params.size() > 0){
+            Iterator<String> it = params.keySet().iterator() ;
+            String key ;
+            while (it.hasNext()){
+                key = it.next() ;
+                builder.queryParam(key, params.get(key)) ;
+            }
+        }
+        return sendGetRequest2Mw(restTemplate, builder);
+    }
+
+    /**
+     * 鍚戦�氫俊涓棿浠跺彂閫乺tu杩滅▼鍗囩骇浠诲姟
+     * @param restTemplate SpringBoot鐨凴estTemplate
+     * @param builder
+     * @return
+     */
+    protected BaseResponse sendGetRequest2Mw(RestTemplate restTemplate, UriComponentsBuilder builder) {
+        ResponseEntity<BaseResponse> response;
         try {
             // 閫氳繃Get鏂瑰紡璋冪敤鎺ュ彛
             response = restTemplate.exchange(builder.toUriString(),
@@ -104,7 +173,7 @@
                     new HttpEntity<>(new HttpHeaders()),
                     BaseResponse.class);
         } catch (Exception e) {
-            e.printStackTrace();
+            //e.printStackTrace();
             return BaseResponseUtils.buildError("鍚庣绯荤粺鍑洪敊锛屼腑闂翠欢璋冪敤寮傚父");
         }
         if(response == null){
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/util/OrgListenerSupport.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/util/OrgListenerSupport.java
index 10b769a..233e6f8 100644
--- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/util/OrgListenerSupport.java
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/util/OrgListenerSupport.java
@@ -4,6 +4,9 @@
 import org.jdom2.Document;
 import org.springframework.core.io.ResourceLoader;
 
+import java.util.ArrayList;
+import java.util.List;
+
 /**
  * @Author: liurunyu
  * @Date: 2024/7/24 13:41
@@ -52,4 +55,55 @@
             }
         }
     }
+
+
+    /////////////////////////////////
+    // 寰楀埌
+    ////////////////////////////////
+    /**
+     * 瀹炲鍖�
+     */
+    @SuppressWarnings("unused ")
+    protected List<Org.OrgVo> get(ResourceLoader resourceLoader) {
+        return this.doGet(resourceLoader);
+    }
+
+    /**
+     * 瀹炲鍖�
+     */
+    @SuppressWarnings("unused ")
+    protected List<Org.OrgVo> doGet(ResourceLoader resourceLoader) {
+        List<Org.OrgVo> list = null ;
+        try {
+            ConfigXml4Springboot configXml = new ConfigXml4Springboot() ;
+            Document doc = configXml.createDom(resourceLoader, "init-config.xml") ;
+            list = this.doGet(configXml, doc);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return list ;
+    }
+
+    private List<Org.OrgVo> doGet(ConfigXml4Springboot configXml, Document doc) throws Exception {
+        List<Org.OrgVo> list = null ;
+        if (configXml != null && doc != null) {
+            list = new ArrayList<>();
+            for (int num = 1; num <= 10000; num++) {
+                if (configXml.existElement(doc, "config.orgs.org" + num)) {
+                    String orgTag = configXml.getSetAttrTxt(doc, "config.orgs.org" + num, "tag", null, false, null);
+                    String orgName = configXml.getSetAttrTxt(doc, "config.orgs.org" + num, "name", null, false, null);
+                    Boolean enable = configXml.getSetAttrBoolean(doc, "config.orgs.org" + num, "enable", null, null);
+                    if(enable != null && enable.booleanValue()){
+                        Org.OrgVo vo = new Org().new OrgVo() ;
+                        vo.tag = orgTag ;
+                        vo.name = orgName ;
+                        list.add(vo) ;
+                    }
+                }else{
+                    break ;
+                }
+            }
+        }
+        return list ;
+    }
 }
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voAllRound/VoArIntakeAmountDay.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voAllRound/VoArIntakeAmountDay.java
new file mode 100644
index 0000000..7673666
--- /dev/null
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voAllRound/VoArIntakeAmountDay.java
@@ -0,0 +1,48 @@
+package com.dy.pipIrrGlobal.voAllRound;
+
+import com.alibaba.fastjson2.annotation.JSONField;
+import com.alibaba.fastjson2.writer.ObjectWriterImplToString;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * @Author: liurunyu
+ * @Date: 2025/2/5 10:14
+ * @Description
+ */
+@Data
+@JsonPropertyOrder({ "intakeId", "dt", "amount", "money", "times" })
+public class VoArIntakeAmountDay {
+    public static final long serialVersionUID = 202502051005003L;
+
+    /**
+     * 鍙栨按鍙D
+     */
+    @JSONField(serializeUsing= ObjectWriterImplToString.class)
+    public Long intakeId;
+
+    /**
+     * 鏃ユ湡
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    public Date dt ;
+
+    /**
+     * 鐢ㄦ按閲�
+     */
+    public Double amount ;
+
+    /**
+     * 鐢ㄦ按娑堣垂閲戦
+     */
+    public Double money ;
+
+    /**
+     * 鐢ㄦ按娆℃暟
+     */
+    public Integer times ;
+
+}
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voAllRound/VoArIntakeAmountMonth.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voAllRound/VoArIntakeAmountMonth.java
new file mode 100644
index 0000000..b97bae2
--- /dev/null
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voAllRound/VoArIntakeAmountMonth.java
@@ -0,0 +1,34 @@
+package com.dy.pipIrrGlobal.voAllRound;
+
+import com.alibaba.fastjson2.annotation.JSONField;
+import com.alibaba.fastjson2.writer.ObjectWriterImplToString;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+import lombok.Data;
+
+/**
+ * @Author: liurunyu
+ * @Date: 2025/2/5 10:14
+ * @Description
+ */
+@Data
+@JsonPropertyOrder({ "intakeId", "pipIrr", "amount"})
+public class VoArIntakeAmountMonth {
+    public static final long serialVersionUID = 202502051005004L;
+
+    /**
+     * 鍙栨按鍙D
+     */
+    @JSONField(serializeUsing= ObjectWriterImplToString.class)
+    public Long intakeId;
+
+    /**
+     * 鏈堜唤锛堟牸寮忥細 yyyy-mm锛�
+     */
+    public String dt ;
+
+    /**
+     * 鐢ㄦ按閲�
+     */
+    public Double amount ;
+
+}
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/VoAllRound/VoArIntakeBase.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voAllRound/VoArIntakeBase.java
similarity index 79%
rename from pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/VoAllRound/VoArIntakeBase.java
rename to pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voAllRound/VoArIntakeBase.java
index 798ae3f..0d0f17f 100644
--- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/VoAllRound/VoArIntakeBase.java
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voAllRound/VoArIntakeBase.java
@@ -1,4 +1,4 @@
-package com.dy.pipIrrGlobal.VoAllRound;
+package com.dy.pipIrrGlobal.voAllRound;
 
 import com.alibaba.fastjson2.annotation.JSONField;
 import com.alibaba.fastjson2.writer.ObjectWriterImplToString;
@@ -12,7 +12,7 @@
  */
 
 @Data
-@JsonPropertyOrder({"id", "num", "lng","lat", "blockName", "rtuAddr"})
+@JsonPropertyOrder({"id", "num", "lng","lat", "address", "blockName", "rtuAddr"})
 public class VoArIntakeBase {
     private static final long serialVersionUID = 202501141601001L;
 
@@ -35,6 +35,11 @@
     public Double lat;
 
     /**
+     * 鍦板潃(鍘�+闀�+鏉�)
+     */
+    public String address ;
+
+    /**
      * 鐗囧尯
      */
     public String blockName;
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voAllRound/VoArIntakeLossDay.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voAllRound/VoArIntakeLossDay.java
new file mode 100644
index 0000000..6ca103c
--- /dev/null
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voAllRound/VoArIntakeLossDay.java
@@ -0,0 +1,38 @@
+package com.dy.pipIrrGlobal.voAllRound;
+
+import com.alibaba.fastjson2.annotation.JSONField;
+import com.alibaba.fastjson2.writer.ObjectWriterImplToString;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * @Author: liurunyu
+ * @Date: 2025/2/5 9:59
+ * @Description
+ */
+@Data
+@JsonPropertyOrder({ "intakeId", "dt", "loss" })
+public class VoArIntakeLossDay {
+    public static final long serialVersionUID = 202502051001001L;
+
+    /**
+     * 鍙栨按鍙D
+     */
+    @JSONField(serializeUsing= ObjectWriterImplToString.class)
+    public Long intakeId;
+
+    /**
+     * 鏃ユ湡鏃堕棿
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    public Date dt ;
+
+    /**
+     * 鏃ユ紡鎹熼噺
+     */
+    public Double loss ;
+
+}
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voAllRound/VoArIntakeLossMonth.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voAllRound/VoArIntakeLossMonth.java
new file mode 100644
index 0000000..bb6c2e8
--- /dev/null
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voAllRound/VoArIntakeLossMonth.java
@@ -0,0 +1,33 @@
+package com.dy.pipIrrGlobal.voAllRound;
+
+import com.alibaba.fastjson2.annotation.JSONField;
+import com.alibaba.fastjson2.writer.ObjectWriterImplToString;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+import lombok.Data;
+
+/**
+ * @Author: liurunyu
+ * @Date: 2025/2/5 10:04
+ * @Description
+ */
+@Data
+@JsonPropertyOrder({ "intakeId", "dt", "loss" })
+public class VoArIntakeLossMonth {
+    public static final long serialVersionUID = 202502051005001L;
+
+    /**
+     * 鍙栨按鍙D
+     */
+    @JSONField(serializeUsing= ObjectWriterImplToString.class)
+    public Long intakeId;
+
+    /**
+     * 鏈堜唤锛堟牸寮忥細 yyyy-mm锛�
+     */
+    public String dt ;
+
+    /**
+     * 鏃ユ紡鎹熼噺
+     */
+    public Double loss ;
+}
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voAllRound/VoArIntakeOpenCloseValve.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voAllRound/VoArIntakeOpenCloseValve.java
new file mode 100644
index 0000000..e45f0ef
--- /dev/null
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voAllRound/VoArIntakeOpenCloseValve.java
@@ -0,0 +1,110 @@
+package com.dy.pipIrrGlobal.voAllRound;
+
+import com.alibaba.fastjson2.annotation.JSONField;
+import com.alibaba.fastjson2.writer.ObjectWriterImplToString;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * @Author: liurunyu
+ * @Date: 2025/2/5 9:36
+ * @Description
+ */
+@Data
+@JsonPropertyOrder({ "intakeId", "clientId",
+        "clientName", "clientAddr",
+        "openTime" , "openType" ,
+        "openIcNum" , "openRemainMoney" ,
+        "closeTime" , "closeType" ,
+        "closeIcNum" , "closeRemainMoney" ,
+        "thisTime" , "thisAmount" ,
+        "thisMoney"  })
+public class VoArIntakeOpenCloseValve {
+    public static final long serialVersionUID = 202502050936001L;
+
+    /**
+     * 鍙栨按鍙D
+     */
+    @JSONField(serializeUsing= ObjectWriterImplToString.class)
+    public Long intakeId;
+
+    /**
+     * 寮�鍏抽榾鍐滄埛ID
+     */
+    @JSONField(serializeUsing= ObjectWriterImplToString.class)
+    public Long clientId;
+
+    /**
+     * 寮�鍏抽榾鍐滄埛
+     */
+    public String clientName;
+
+    /**
+     * 鍐滄埛鍦板潃
+     */
+    public String clientAddr;
+
+
+    /**
+     * 寮�闃�鏃ユ湡鏃堕棿
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    public Date openTime ;
+
+    /**
+     * 寮�闃�绫诲瀷
+     */
+    @JSONField(serialize=false)
+    public Byte opType;
+    public String openType;
+
+    /**
+     * 寮�闃�IC鍗$紪鍙�
+     */
+    public String openIcNum;
+
+    /**
+     * 寮�闃�鏃跺崱鍐呭墿浣欓噾棰�
+     */
+    public Double openRemainMoney;
+
+
+    /**
+     * 鍏抽榾鏃ユ湡鏃堕棿
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    public Date closeTime ;
+
+    /**
+     * 鍏抽榾绫诲瀷
+     */
+    @JSONField(serialize=false)
+    public Byte clType;
+    public String closeType;
+
+    /**
+     * 鍏抽榾IC鍗$紪鍙�
+     */
+    public String closeIcNum;
+
+    /**
+     * 鍏抽榾鏃跺崱鍐呭墿浣欓噾棰�
+     */
+    public Double closeRemainMoney;
+
+    /**
+     * 鏈鐢ㄦ按鏃堕暱锛堝垎閽燂級
+     */
+    public Integer thisTime;
+    /**
+     * 鏈鐢ㄦ按閲�
+     */
+    public Double thisAmount;
+    /**
+     * 鏈娑堣垂閲戦
+     */
+    public Double thisMoney;
+}
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voAllRound/VoArIntakeRemote.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voAllRound/VoArIntakeRemote.java
new file mode 100644
index 0000000..d9d848e
--- /dev/null
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voAllRound/VoArIntakeRemote.java
@@ -0,0 +1,65 @@
+package com.dy.pipIrrGlobal.voAllRound;
+
+import com.alibaba.fastjson2.annotation.JSONField;
+import com.alibaba.fastjson2.writer.ObjectWriterImplToString;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * @Author: liurunyu
+ * @Date: 2025/1/14 17:03
+ * @Description
+ */
+@Data
+@JsonPropertyOrder({"intakeId", "onLine", "alarm", "alarmDt", "lastOpenDt", "lastCloseDt", "lossAmount", "lossDt"})
+public class VoArIntakeRemote {
+    private static final long serialVersionUID = 202501141703001L;
+
+    @JSONField(serializeUsing= ObjectWriterImplToString.class)
+    public Long intakeId;
+
+    /**
+     * 鍦ㄧ嚎鎯呭喌, true鍦ㄧ嚎锛宖alse绂荤嚎锛宯ull鏈煡
+     */
+    public Boolean onLine ;
+
+    /**
+     * 鏈�鏂版姤璀︿俊鎭�
+     */
+    public String alarm ;
+
+    /**
+     * 鏈�鏂版姤璀︽椂闂�
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    public Date alarmDt ;
+
+    /**
+     * 鏈�鍚庡紑闃�鏃堕棿
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    public Date lastOpenDt ;
+
+    /**
+     * 鏈�鍚庡叧闂椂闂�
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    public Date lastCloseDt ;
+
+    /**
+     * 鏈�鍚庣粺璁℃紡鎹熼噺
+     */
+    public Double lossAmount ;
+
+    /**
+     * 鏈�鍚庣粺璁℃紡鎹熸棩鏈�
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    public Date lossDt ;
+
+
+
+}
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voLargeScreen/VoBaseInfo.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voLargeScreen/VoBaseInfo.java
new file mode 100644
index 0000000..4f4213c
--- /dev/null
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voLargeScreen/VoBaseInfo.java
@@ -0,0 +1,65 @@
+package com.dy.pipIrrGlobal.voLargeScreen;
+
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+import lombok.Data;
+
+/**
+ * @Author: liurunyu
+ * @Date: 2025/2/6 10:40
+ * @Description
+ */
+
+@Data
+@JsonPropertyOrder({"totalCountOfTown",
+        "totalCountOfVillage",
+        "totalCountOfBlock",
+        "totalCountOfDivide",
+        "totalCountOfIntake",
+        "totalCountOfIntakeWithController",
+        "totalCountOfIntakeWithoutController",
+        "totalCountOfController",
+        "totalCountOfControllerTramp"
+        })
+public class VoBaseInfo {
+
+    private static final long serialVersionUID = 202502060948001L;
+
+    /**
+     * 涔¢晣鎬绘暟
+     */
+    public Integer totalCountOfTown ;
+
+    /**
+     * 琛屾斂鏉戞�绘暟
+     */
+    public Integer totalCountOfVillage ;
+    /**
+     * 鐗囧尯鎬绘暟
+     */
+    public Integer totalCountOfBlock ;
+    /**
+     * 鍒嗘按鎴挎�绘暟
+     */
+    public Integer totalCountOfDivide ;
+    /**
+     * 鍙栨按鍙f�绘暟
+     */
+    public Integer totalCountOfIntake ;
+    /**
+     * 宸茬粦瀹氭帶鍒跺櫒鐨勫彇姘村彛鎬绘暟
+     */
+    public Integer totalCountOfIntakeWithController ;
+    /**
+     * 鏈粦瀹氭帶鍒跺櫒鐨勫彇姘村彛鎬绘暟
+     */
+    public Integer totalCountOfIntakeWithoutController ;
+    /**
+     * 闃�鎺у櫒鎬绘暟
+     */
+    public Integer totalCountOfController ;
+    /**
+     * 娴佹氮闃�鎺у櫒鎬绘暟
+     */
+    public Integer totalCountOfControllerTramp ;
+
+}
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voLargeScreen/VoCurrentInfo.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voLargeScreen/VoCurrentInfo.java
new file mode 100644
index 0000000..f2f3776
--- /dev/null
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voLargeScreen/VoCurrentInfo.java
@@ -0,0 +1,61 @@
+package com.dy.pipIrrGlobal.voLargeScreen;
+
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+import lombok.Data;
+
+/**
+ * @Author: liurunyu
+ * @Date: 2025/2/6 10:40
+ * @Description 褰撳墠淇℃伅
+ */
+
+@Data
+@JsonPropertyOrder({"cTotalCountOfOnLine",
+        "cTotalCountOfOffLine",
+        "cTotalCountOfOpenValve",
+        "cTotalCountOfCloseValve",
+        "cTotalCountOfUnknownValve",
+        "cTotalCountOfAlarm",
+        "cTotalCountOfNoAlarm",
+        "cTotalCountOfUnknownAlarm"
+        })
+public class VoCurrentInfo {
+
+    private static final long serialVersionUID = 202502061348001L;
+
+    /**
+     * 鍦ㄧ嚎鍙栨按鍙f�绘暟
+     */
+    public Integer cTotalCountOfOnLine;
+    /**
+     * 绂荤嚎鍙栨按鍙f�绘暟
+     */
+    public Integer cTotalCountOfOffLine;
+
+    /**
+     * 闃�寮�鍙栨按鍙f�绘暟
+     */
+    public Integer cTotalCountOfOpenValve;
+    /**
+     * 闃�鍏冲彇姘村彛鎬绘暟
+     */
+    public Integer cTotalCountOfCloseValve;
+   /**
+     * 鏈煡闃�闂ㄧ姸鎬佸彇姘村彛鎬绘暟
+     */
+    public Integer cTotalCountOfUnknownValve;
+
+    /**
+     * 鎶ヨ鍙栨按鍙f�绘暟
+     */
+    public Integer cTotalCountOfAlarm;
+    /**
+     * 鏃犳姤璀﹀彇姘村彛鎬绘暟
+     */
+    public Integer cTotalCountOfNoAlarm;
+   /**
+     * 鏈煡鎶ヨ鐘舵�佸彇姘村彛鎬绘暟
+     */
+    public Integer cTotalCountOfUnknownAlarm;
+
+}
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voLargeScreen/VoMonitorInfo.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voLargeScreen/VoMonitorInfo.java
new file mode 100644
index 0000000..5173e8f
--- /dev/null
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voLargeScreen/VoMonitorInfo.java
@@ -0,0 +1,68 @@
+package com.dy.pipIrrGlobal.voLargeScreen;
+
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+import lombok.Data;
+
+/**
+ * @Author: liurunyu
+ * @Date: 2025/2/6 10:40
+ * @Description 鐩戞祴淇℃伅
+ */
+
+@Data
+@JsonPropertyOrder({"mTotalCountOfReport",
+        "mTotalCountOfNoReport",
+        "mTotalCountOfNeverReport",
+        "mTotalCountOfOpenValve",
+        "mTotalCountOfCloseValve",
+        "mTotalCountOfUnknownValve",
+        "mTotalCountOfAlarm",
+        "mTotalCountOfNoAlarm",
+        "mTotalCountOfUnknownAlarm"
+        })
+public class VoMonitorInfo {
+
+    private static final long serialVersionUID = 202502061348321L;
+
+    /**
+     * 浠庢煇鏃朵互鏉ワ紝鏇句笂鎶ヨ繃鏁版嵁鐨勫彇姘村彛鎬绘暟
+     */
+    public Integer mTotalCountOfReport;
+    /**
+     * 浠庢煇鏃朵互鏉ワ紝鏈浘涓婃姤杩囨暟鎹殑鍙栨按鍙f�绘暟
+     */
+    public Integer mTotalCountOfNoReport;
+    /**
+     * 浠庢湭涓婃姤杩囨暟鎹殑鍙栨按鍙f�绘暟
+     */
+    public Integer mTotalCountOfNeverReport;
+
+
+    /**
+     * 浠庢煇鏃朵互鏉ワ紝鏇鹃榾寮�鍙栨按鍙f�绘暟
+     */
+    public Integer mTotalCountOfOpenValve ;
+    /**
+     * 浠庢煇鏃朵互鏉ワ紝鏇鹃榾鍏冲彇姘村彛鎬绘暟
+     */
+    public Integer mTotalCountOfCloseValve ;
+    /**
+     * 浠庢湭寮�杩囬榾鐨勫彇姘村彛鎬绘暟
+     */
+    public Integer mTotalCountOfNeverOpenValve ;
+
+
+    /**
+     * 浠庢煇鏃朵互鏉ワ紝鏇炬姤璀﹀彇姘村彛鎬绘暟
+     */
+    public Integer mTotalCountOfAlarm ;
+    /**
+     * 浠庢煇鏃朵互鏉ワ紝鏇炬棤鎶ヨ鍙栨按鍙f�绘暟
+     */
+    public Integer mTotalCountOfNoAlarm ;
+    /**
+     * 浠庢湭鎶ヨ繃璀﹀彇姘村彛鎬绘暟
+     */
+    public Integer mTotalCountOfNeverAlarm ;
+
+}
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSpecial/VoAbnormalCloseValve.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSpecial/VoAbnormalCloseValve.java
new file mode 100644
index 0000000..03138d6
--- /dev/null
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSpecial/VoAbnormalCloseValve.java
@@ -0,0 +1,37 @@
+package com.dy.pipIrrGlobal.voSpecial;
+
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * @Author: liurunyu
+ * @Date: 2025/2/8 11:27
+ * @Description
+ */
+
+@Data
+@EqualsAndHashCode(callSuper=false)
+@JsonPropertyOrder({"id",
+        "intakeId",
+        "clientId",
+        "intakeNum",
+        "intakeLng",
+        "intakeLat",
+        "clientName",
+        "clientNum",
+        "openDt",
+        "openType",
+        "openTotalAmount",
+        "openRemainMoney",
+        "closeDt",
+        "closeType",
+        "closeTotalAmount",
+        "closeRemainMoney",
+        "thisAmount",
+        "thisMoney",
+        "thisTime"
+})
+public class VoAbnormalCloseValve extends VoSteal{
+    private static final long serialVersionUID = 202502081128001L;
+}
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSpecial/VoSteal.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSpecial/VoSteal.java
new file mode 100644
index 0000000..227e46a
--- /dev/null
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSpecial/VoSteal.java
@@ -0,0 +1,140 @@
+package com.dy.pipIrrGlobal.voSpecial;
+
+import com.alibaba.fastjson2.annotation.JSONField;
+import com.alibaba.fastjson2.writer.ObjectWriterImplToString;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * @Author: liurunyu
+ * @Date: 2025/2/7 14:11
+ * @Description
+ */
+
+@Data
+@JsonPropertyOrder({"id",
+        "intakeId",
+        "clientId",
+        "intakeNum",
+        "intakeLng",
+        "intakeLat",
+        "clientName",
+        "clientNum",
+        "openDt",
+        "openType",
+        "openTotalAmount",
+        "openRemainMoney",
+        "closeDt",
+        "closeType",
+        "closeTotalAmount",
+        "closeRemainMoney",
+        "thisAmount",
+        "thisMoney",
+        "thisTime"
+})
+public class VoSteal {
+    private static final long serialVersionUID = 202502071422001L;
+    /**
+     * 鏁版嵁璁板綍id(寮�鍏抽榾璁板綍)
+     */
+    @JSONField(serializeUsing= ObjectWriterImplToString.class)
+    public Long id ;
+
+    /**
+     * 鍙栨按鍙D
+     */
+    @JSONField(serializeUsing= ObjectWriterImplToString.class)
+    public Long intakeId;
+
+    /**
+     * 鍐滄埛ID
+     */
+    @JSONField(serializeUsing= ObjectWriterImplToString.class)
+    public Long clientId;
+    /**
+     * 鍙栨按鍙g紪鍙�
+     */
+    public String intakeNum;
+    /**
+     * 鍙栨按鍙g粡搴�
+     */
+    public Double intakeLng;
+    /**
+     * 鍙栨按鍙g含搴�
+     */
+    public Double intakeLat;
+
+    /**
+     * 鍐滄埛濮撳悕
+     */
+    public String clientName;
+
+    /**
+     * 鍐滄埛缂栧彿
+     */
+    public String clientNum;
+
+    /**
+     * 寮�闃�鏃堕棿
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    public Date openDt;
+    /**
+     * 寮�闃�绫诲瀷
+     */
+    @JSONField(serialize = false)
+    public Byte opType;
+    /**
+     * 寮�闃�绫诲瀷
+     */
+    public String openType;
+    /**
+     * 寮�闃�鏃剁疮璁℃祦閲忥紙m3锛�
+     */
+    public Double openTotalAmount;
+    /**
+     * 寮�闃�鏃跺墿浣欓噾棰濓紙鍏冿級
+     */
+    public Double openRemainMoney;
+
+
+    /**
+     * 鍏抽榾鏃堕棿
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    public Date closeDt;
+    /**
+     * 鍏抽榾绫诲瀷
+     */
+    @JSONField(serialize = false)
+    public Byte clType;
+    /**
+     * 鍏抽榾绫诲瀷
+     */
+    public String closeType;
+    /**
+     * 鍏抽榾鏃剁疮璁℃祦閲忥紙m3锛�
+     */
+    public Double closeTotalAmount;
+    /**
+     * 鍏抽榾鏃跺墿浣欓噾棰濓紙鍏冿級
+     */
+    public Double closeRemainMoney;
+
+    /**
+     * 鏈鐢ㄦ按閲忥紙m3锛�
+     */
+    public Double thisAmount;
+    /**
+     * 鏈閲戦锛堝厓锛�
+     */
+    public Double thisMoney;
+    /**
+     * 鏈鏃堕暱锛堝垎閽燂級
+     */
+    public Integer thisTime;
+
+}
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSpecial/VoTopXClient.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSpecial/VoTopXClient.java
new file mode 100644
index 0000000..0bbc58a
--- /dev/null
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSpecial/VoTopXClient.java
@@ -0,0 +1,55 @@
+package com.dy.pipIrrGlobal.voSpecial;
+
+import com.alibaba.fastjson2.annotation.JSONField;
+import com.alibaba.fastjson2.writer.ObjectWriterImplToString;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+import lombok.Data;
+
+/**
+ * @Author: liurunyu
+ * @Date: 2025/2/10 8:52
+ * @Description
+ */
+
+@Data
+@JsonPropertyOrder({"id",
+        "clientId",
+        "clientName",
+        "clientNum",
+        "clientAddress",
+        "amount"
+})
+public class VoTopXClient {
+    private static final long serialVersionUID = 202502100853001L;
+    /**
+     * 鏁版嵁璁板綍id(寮�鍏抽榾璁板綍)
+     */
+    @JSONField(serializeUsing= ObjectWriterImplToString.class)
+    public Long id ;
+
+    /**
+     * 鍐滄埛ID
+     */
+    @JSONField(serializeUsing= ObjectWriterImplToString.class)
+    public Long clientId;
+    /**
+     * 鍐滄埛濮撳悕
+     */
+    public String clientName;
+
+    /**
+     * 鍐滄埛缂栧彿
+     */
+    public String clientNum;
+
+    /**
+     * 鍐滄埛鍦板潃
+     */
+    public String clientAddress;
+
+    /**
+     * 鐢ㄦ按閲�
+     */
+    public Double amount;
+
+}
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSpecial/VoTopXIntake.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSpecial/VoTopXIntake.java
new file mode 100644
index 0000000..6777a4a
--- /dev/null
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSpecial/VoTopXIntake.java
@@ -0,0 +1,53 @@
+package com.dy.pipIrrGlobal.voSpecial;
+
+import com.alibaba.fastjson2.annotation.JSONField;
+import com.alibaba.fastjson2.writer.ObjectWriterImplToString;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+import lombok.Data;
+
+/**
+ * @Author: liurunyu
+ * @Date: 2025/2/10 9:13
+ * @Description
+ */
+
+@Data
+@JsonPropertyOrder({"id",
+        "intakeId",
+        "intakeNum",
+        "intakeLng",
+        "intakeLat",
+        "amount"
+})
+public class VoTopXIntake {
+    private static final long serialVersionUID = 202502100913001L;
+    /**
+     * 鏁版嵁璁板綍id(寮�鍏抽榾璁板綍)
+     */
+    @JSONField(serializeUsing= ObjectWriterImplToString.class)
+    public Long id ;
+
+    /**
+     * 鍐滄埛ID
+     */
+    @JSONField(serializeUsing= ObjectWriterImplToString.class)
+    public Long intakeId;
+    /**
+     * 鍙栨按鍙g紪鍙�
+     */
+    public String intakeNum;
+    /**
+     * 鍙栨按鍙g粡搴�
+     */
+    public Double intakeLng;
+    /**
+     * 鍙栨按鍙g含搴�
+     */
+    public Double intakeLat;
+
+    /**
+     * 鐢ㄦ按閲�
+     */
+    public Double amount;
+
+}
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSt/VoDayIntakeAmount.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSt/VoDayIntakeAmount.java
index 197f8c2..22a1be2 100644
--- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSt/VoDayIntakeAmount.java
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSt/VoDayIntakeAmount.java
@@ -42,6 +42,16 @@
      */
     public Double intakeLat;
 
+    /**
+     * 骞村害
+     */
+    public Integer year ;
+
+    /**
+     * 鏈堜唤
+     */
+    public Integer month ;
+
     @JsonFormat(shape = JsonFormat.Shape.NUMBER_FLOAT, pattern="0.00" )
     public Double amount1;
     @JsonFormat(shape = JsonFormat.Shape.NUMBER_FLOAT, pattern="0.00" )
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSt/VoMonthAmount.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSt/VoMonthAmount.java
index 9ffc36a..e56ea04 100644
--- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSt/VoMonthAmount.java
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSt/VoMonthAmount.java
@@ -38,6 +38,11 @@
      */
     public Double intakeLat;
 
+    /**
+     * 骞村害
+     */
+    public Integer year ;
+
     @JsonFormat(shape = JsonFormat.Shape.NUMBER_FLOAT, pattern="0.00" )
     public Double month1;
     @JsonFormat(shape = JsonFormat.Shape.NUMBER_FLOAT, pattern="0.00" )
diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/application-database.yml b/pipIrr-platform/pipIrr-global/src/main/resources/application-database.yml
index c15ced1..9445737 100644
--- a/pipIrr-platform/pipIrr-global/src/main/resources/application-database.yml
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/application-database.yml
@@ -5,5 +5,4 @@
         allow-bean-definition-overriding: true #璁剧疆涓簍rue鏃讹紝鍚庡畾涔夌殑bean浼氳鐩栦箣鍓嶅畾涔夌殑鐩稿悓鍚嶇О鐨刡ean
     datasource: #閰嶇疆鏁版嵁婧�
         #澶氫釜鏁版嵁婧愬悕绉板湪姝ら厤缃紝瑕佹眰涓巗pring銆俤atasource銆俒ym][sp][test]涓殑涓�鑷�
-#        names: ym,mj,sp,test,mq
-        names: ym,sp,test
+        names: ym,mj,sp,test,mq
diff --git "a/pipIrr-platform/pipIrr-global/src/main/resources/application-global\050166web\346\226\207\344\273\266\350\212\261\347\224\237\345\243\263\051.yml" "b/pipIrr-platform/pipIrr-global/src/main/resources/application-global\050166web\346\226\207\344\273\266\350\212\261\347\224\237\345\243\263\051.yml"
index 0473a51..7e9473f 100644
--- "a/pipIrr-platform/pipIrr-global/src/main/resources/application-global\050166web\346\226\207\344\273\266\350\212\261\347\224\237\345\243\263\051.yml"
+++ "b/pipIrr-platform/pipIrr-global/src/main/resources/application-global\050166web\346\226\207\344\273\266\350\212\261\347\224\237\345\243\263\051.yml"
@@ -4,6 +4,11 @@
             # 鍓嶇涓婁紶鏂囦欢锛岄檺鍒跺崟涓枃浠剁殑澶у皬鍜岄檺鍒舵墍鏈夋枃浠剁殑澶у皬
             max-file-size: 500MB
             max-request-size: 5000MB
+    http:
+        client:
+            # spring restTemplate 瀵瑰http璁块棶鏃�
+            connect-timeout: 3000 # 杩炴帴瓒呮椂鏃堕棿
+            read-timeout: 3000 # 璇诲彇瓒呮椂鏃堕棿
 logging:
     charset:
         console: UTF-8
@@ -335,11 +340,13 @@
     test:
         url: "http://127.0.0.1:8072"
         comSendUrl: "http://127.0.0.1:8072/rtuMw/com/send"
-    #鐩戞祴鎺у埗妯″潡鍥炶皟鍦板潃
+    #Rtu杩滅▼鍛戒护缁撴灉鍥炶皟鍦板潃
     rtuCallbackUrl_rm: "http://127.0.0.1:8081/remote/comRes/receive"
-    #rtu杩滅▼鍗囩骇妯″潡鍥炶皟鍦板潃
+    #鎺ユ敹閫氫俊涓棿浠舵秷鎭腑蹇冩秷鎭殑鍦板潃
+    mwMsCenterReceiveUrl_rm: "http://127.0.0.1:8081/remote/msCenter/receive"
+    #rtu杩滅▼鍗囩骇鐘舵�佷俊鎭洖璋冨湴鍧�
     ugCallbackUrl_rm: "http://127.0.0.1:8081/remote/rtuUpgradeStateReceiver/receive"
-    #寰俊灏忕▼搴忓洖璋冨湴鍧�
+    #寰俊灏忕▼搴忓簲鐢ㄤ腑Rtu杩滅▼鍛戒护缁撴灉鍥炶皟鍦板潃
     rtuCallbackUrl_wx: "http://127.0.0.1:8087/wx/comRes/receive"
 
 #涓嶈繘琛寀serToken杩囨护鐨刄RL锛孈ConfigurationProperties瑕佹眰tokennofilter涓墍鏈夊瓧姣嶉兘灏忓啓
@@ -347,7 +354,9 @@
     urls:
         - /sso/sso
         - /remote/comRes/receive
+        - /remote/msCenter/receive
         - /remote/rtuUpgradeStateReceiver/receive
+        - /remote/websocket
         - /wx/comRes/receive
         - /app/captcha/get
         - /file/file #web鍒嗗竷寮忔枃浠剁郴缁�
diff --git "a/pipIrr-platform/pipIrr-global/src/main/resources/application-global\050mj\346\242\205\346\261\237\347\263\273\347\273\237\051.yml" "b/pipIrr-platform/pipIrr-global/src/main/resources/application-global\050mj\346\242\205\346\261\237\347\263\273\347\273\237\051.yml"
index ac591e0..6dc9732 100644
--- "a/pipIrr-platform/pipIrr-global/src/main/resources/application-global\050mj\346\242\205\346\261\237\347\263\273\347\273\237\051.yml"
+++ "b/pipIrr-platform/pipIrr-global/src/main/resources/application-global\050mj\346\242\205\346\261\237\347\263\273\347\273\237\051.yml"
@@ -4,6 +4,11 @@
             # 鍓嶇涓婁紶鏂囦欢锛岄檺鍒跺崟涓枃浠剁殑澶у皬鍜岄檺鍒舵墍鏈夋枃浠剁殑澶у皬
             max-file-size: 500MB
             max-request-size: 5000MB
+    http:
+        client:
+            # spring restTemplate 瀵瑰http璁块棶鏃�
+            connect-timeout: 3000 # 杩炴帴瓒呮椂鏃堕棿
+            read-timeout: 3000 # 璇诲彇瓒呮椂鏃堕棿
 logging:
     charset:
         console: UTF-8
@@ -335,11 +340,13 @@
     test:
         url: "http://127.0.0.1:8072"
         comSendUrl: "http://127.0.0.1:8072/rtuMw/com/send"
-    #鐩戞祴鎺у埗妯″潡鍥炶皟鍦板潃
+    #Rtu杩滅▼鍛戒护缁撴灉鍥炶皟鍦板潃
     rtuCallbackUrl_rm: "http://127.0.0.1:8081/remote/comRes/receive"
-    #rtu杩滅▼鍗囩骇妯″潡鍥炶皟鍦板潃
+    #鎺ユ敹閫氫俊涓棿浠舵秷鎭腑蹇冩秷鎭殑鍦板潃
+    mwMsCenterReceiveUrl_rm: "http://127.0.0.1:8081/remote/msCenter/receive"
+    #rtu杩滅▼鍗囩骇鐘舵�佷俊鎭洖璋冨湴鍧�
     ugCallbackUrl_rm: "http://127.0.0.1:8081/remote/rtuUpgradeStateReceiver/receive"
-    #寰俊灏忕▼搴忓洖璋冨湴鍧�
+    #寰俊灏忕▼搴忓簲鐢ㄤ腑Rtu杩滅▼鍛戒护缁撴灉鍥炶皟鍦板潃
     rtuCallbackUrl_wx: "http://127.0.0.1:8087/wx/comRes/receive"
 
 #涓嶈繘琛寀serToken杩囨护鐨刄RL锛孈ConfigurationProperties瑕佹眰tokennofilter涓墍鏈夊瓧姣嶉兘灏忓啓
@@ -347,7 +354,9 @@
     urls:
         - /sso/sso
         - /remote/comRes/receive
+        - /remote/msCenter/receive
         - /remote/rtuUpgradeStateReceiver/receive
+        - /remote/websocket
         - /wx/comRes/receive
         - /app/captcha/get
         - /file/file #web鍒嗗竷寮忔枃浠剁郴缁�
diff --git "a/pipIrr-platform/pipIrr-global/src/main/resources/application-global\050mq\346\260\221\345\213\244\347\263\273\347\273\237\051.yml" "b/pipIrr-platform/pipIrr-global/src/main/resources/application-global\050mq\346\260\221\345\213\244\347\263\273\347\273\237\051.yml"
index 7a2ebe1..a054371 100644
--- "a/pipIrr-platform/pipIrr-global/src/main/resources/application-global\050mq\346\260\221\345\213\244\347\263\273\347\273\237\051.yml"
+++ "b/pipIrr-platform/pipIrr-global/src/main/resources/application-global\050mq\346\260\221\345\213\244\347\263\273\347\273\237\051.yml"
@@ -4,6 +4,11 @@
             # 鍓嶇涓婁紶鏂囦欢锛岄檺鍒跺崟涓枃浠剁殑澶у皬鍜岄檺鍒舵墍鏈夋枃浠剁殑澶у皬
             max-file-size: 500MB
             max-request-size: 5000MB
+    http:
+        client:
+            # spring restTemplate 瀵瑰http璁块棶鏃�
+            connect-timeout: 3000 # 杩炴帴瓒呮椂鏃堕棿
+            read-timeout: 3000 # 璇诲彇瓒呮椂鏃堕棿
 logging:
     charset:
         console: UTF-8
@@ -335,11 +340,13 @@
     test:
         url: "http://127.0.0.1:8072"
         comSendUrl: "http://127.0.0.1:8072/rtuMw/com/send"
-    #鐩戞祴鎺у埗妯″潡鍥炶皟鍦板潃
+    #Rtu杩滅▼鍛戒护缁撴灉鍥炶皟鍦板潃
     rtuCallbackUrl_rm: "http://127.0.0.1:8081/remote/comRes/receive"
-    #rtu杩滅▼鍗囩骇妯″潡鍥炶皟鍦板潃
+    #鎺ユ敹閫氫俊涓棿浠舵秷鎭腑蹇冩秷鎭殑鍦板潃
+    mwMsCenterReceiveUrl_rm: "http://127.0.0.1:8081/remote/msCenter/receive"
+    #rtu杩滅▼鍗囩骇鐘舵�佷俊鎭洖璋冨湴鍧�
     ugCallbackUrl_rm: "http://127.0.0.1:8081/remote/rtuUpgradeStateReceiver/receive"
-    #寰俊灏忕▼搴忓洖璋冨湴鍧�
+    #寰俊灏忕▼搴忓簲鐢ㄤ腑Rtu杩滅▼鍛戒护缁撴灉鍥炶皟鍦板潃
     rtuCallbackUrl_wx: "http://127.0.0.1:8087/wx/comRes/receive"
 
 #涓嶈繘琛寀serToken杩囨护鐨刄RL锛孈ConfigurationProperties瑕佹眰tokennofilter涓墍鏈夊瓧姣嶉兘灏忓啓
@@ -347,7 +354,9 @@
     urls:
         - /sso/sso
         - /remote/comRes/receive
+        - /remote/msCenter/receive
         - /remote/rtuUpgradeStateReceiver/receive
+        - /remote/websocket
         - /wx/comRes/receive
         - /app/captcha/get
         - /file/file #web鍒嗗竷寮忔枃浠剁郴缁�
diff --git "a/pipIrr-platform/pipIrr-global/src/main/resources/application-global\050sp\346\262\231\347\233\230\347\263\273\347\273\237\051.yml" "b/pipIrr-platform/pipIrr-global/src/main/resources/application-global\050sp\346\262\231\347\233\230\347\263\273\347\273\237\051.yml"
index 85ceb5f..88d1599 100644
--- "a/pipIrr-platform/pipIrr-global/src/main/resources/application-global\050sp\346\262\231\347\233\230\347\263\273\347\273\237\051.yml"
+++ "b/pipIrr-platform/pipIrr-global/src/main/resources/application-global\050sp\346\262\231\347\233\230\347\263\273\347\273\237\051.yml"
@@ -4,6 +4,11 @@
             # 鍓嶇涓婁紶鏂囦欢锛岄檺鍒跺崟涓枃浠剁殑澶у皬鍜岄檺鍒舵墍鏈夋枃浠剁殑澶у皬
             max-file-size: 500MB
             max-request-size: 5000MB
+    http:
+        client:
+            # spring restTemplate 瀵瑰http璁块棶鏃�
+            connect-timeout: 3000 # 杩炴帴瓒呮椂鏃堕棿
+            read-timeout: 3000 # 璇诲彇瓒呮椂鏃堕棿
 logging:
     charset:
         console: UTF-8
@@ -335,11 +340,13 @@
     test:
         url: "http://127.0.0.1:8072"
         comSendUrl: "http://127.0.0.1:8072/rtuMw/com/send"
-    #鐩戞祴鎺у埗妯″潡鍥炶皟鍦板潃
+    #Rtu杩滅▼鍛戒护缁撴灉鍥炶皟鍦板潃
     rtuCallbackUrl_rm: "http://127.0.0.1:8081/remote/comRes/receive"
-    #rtu杩滅▼鍗囩骇妯″潡鍥炶皟鍦板潃
+    #鎺ユ敹閫氫俊涓棿浠舵秷鎭腑蹇冩秷鎭殑鍦板潃
+    mwMsCenterReceiveUrl_rm: "http://127.0.0.1:8081/remote/msCenter/receive"
+    #rtu杩滅▼鍗囩骇鐘舵�佷俊鎭洖璋冨湴鍧�
     ugCallbackUrl_rm: "http://127.0.0.1:8081/remote/rtuUpgradeStateReceiver/receive"
-    #寰俊灏忕▼搴忓洖璋冨湴鍧�
+    #寰俊灏忕▼搴忓簲鐢ㄤ腑Rtu杩滅▼鍛戒护缁撴灉鍥炶皟鍦板潃
     rtuCallbackUrl_wx: "http://127.0.0.1:8087/wx/comRes/receive"
 
 #涓嶈繘琛寀serToken杩囨护鐨刄RL锛孈ConfigurationProperties瑕佹眰tokennofilter涓墍鏈夊瓧姣嶉兘灏忓啓
@@ -347,7 +354,9 @@
     urls:
         - /sso/sso
         - /remote/comRes/receive
+        - /remote/msCenter/receive
         - /remote/rtuUpgradeStateReceiver/receive
+        - /remote/websocket
         - /wx/comRes/receive
         - /app/captcha/get
         - /file/file #web鍒嗗竷寮忔枃浠剁郴缁�
diff --git "a/pipIrr-platform/pipIrr-global/src/main/resources/application-global\050test\346\265\213\350\257\225\347\263\273\347\273\237\051.yml" "b/pipIrr-platform/pipIrr-global/src/main/resources/application-global\050test\346\265\213\350\257\225\347\263\273\347\273\237\051.yml"
index acb24ce..422f3ae 100644
--- "a/pipIrr-platform/pipIrr-global/src/main/resources/application-global\050test\346\265\213\350\257\225\347\263\273\347\273\237\051.yml"
+++ "b/pipIrr-platform/pipIrr-global/src/main/resources/application-global\050test\346\265\213\350\257\225\347\263\273\347\273\237\051.yml"
@@ -4,6 +4,11 @@
             # 鍓嶇涓婁紶鏂囦欢锛岄檺鍒跺崟涓枃浠剁殑澶у皬鍜岄檺鍒舵墍鏈夋枃浠剁殑澶у皬
             max-file-size: 500MB
             max-request-size: 5000MB
+    http:
+        client:
+            # spring restTemplate 瀵瑰http璁块棶鏃�
+            connect-timeout: 3000 # 杩炴帴瓒呮椂鏃堕棿
+            read-timeout: 3000 # 璇诲彇瓒呮椂鏃堕棿
 logging:
     charset:
         console: UTF-8
@@ -335,11 +340,13 @@
     test:
         url: "http://127.0.0.1:8072"
         comSendUrl: "http://127.0.0.1:8072/rtuMw/com/send"
-    #鐩戞祴鎺у埗妯″潡鍥炶皟鍦板潃
+    #Rtu杩滅▼鍛戒护缁撴灉鍥炶皟鍦板潃
     rtuCallbackUrl_rm: "http://127.0.0.1:8081/remote/comRes/receive"
-    #rtu杩滅▼鍗囩骇妯″潡鍥炶皟鍦板潃
+    #鎺ユ敹閫氫俊涓棿浠舵秷鎭腑蹇冩秷鎭殑鍦板潃
+    mwMsCenterReceiveUrl_rm: "http://127.0.0.1:8081/remote/msCenter/receive"
+    #rtu杩滅▼鍗囩骇鐘舵�佷俊鎭洖璋冨湴鍧�
     ugCallbackUrl_rm: "http://127.0.0.1:8081/remote/rtuUpgradeStateReceiver/receive"
-    #寰俊灏忕▼搴忓洖璋冨湴鍧�
+    #寰俊灏忕▼搴忓簲鐢ㄤ腑Rtu杩滅▼鍛戒护缁撴灉鍥炶皟鍦板潃
     rtuCallbackUrl_wx: "http://127.0.0.1:8087/wx/comRes/receive"
 
 #涓嶈繘琛寀serToken杩囨护鐨刄RL锛孈ConfigurationProperties瑕佹眰tokennofilter涓墍鏈夊瓧姣嶉兘灏忓啓
@@ -347,7 +354,9 @@
     urls:
         - /sso/sso
         - /remote/comRes/receive
+        - /remote/msCenter/receive
         - /remote/rtuUpgradeStateReceiver/receive
+        - /remote/websocket
         - /wx/comRes/receive
         - /app/captcha/get
         - /file/file #web鍒嗗竷寮忔枃浠剁郴缁�
diff --git "a/pipIrr-platform/pipIrr-global/src/main/resources/application-global\050ym\345\205\203\350\260\213\347\263\273\347\273\237\051.yml" "b/pipIrr-platform/pipIrr-global/src/main/resources/application-global\050ym\345\205\203\350\260\213\347\263\273\347\273\237\051.yml"
index 345cf58..ae76e9e 100644
--- "a/pipIrr-platform/pipIrr-global/src/main/resources/application-global\050ym\345\205\203\350\260\213\347\263\273\347\273\237\051.yml"
+++ "b/pipIrr-platform/pipIrr-global/src/main/resources/application-global\050ym\345\205\203\350\260\213\347\263\273\347\273\237\051.yml"
@@ -4,6 +4,11 @@
             # 鍓嶇涓婁紶鏂囦欢锛岄檺鍒跺崟涓枃浠剁殑澶у皬鍜岄檺鍒舵墍鏈夋枃浠剁殑澶у皬
             max-file-size: 500MB
             max-request-size: 5000MB
+    http:
+        client:
+            # spring restTemplate 瀵瑰http璁块棶鏃�
+            connect-timeout: 3000 # 杩炴帴瓒呮椂鏃堕棿
+            read-timeout: 3000 # 璇诲彇瓒呮椂鏃堕棿
 logging:
     charset:
         console: UTF-8
@@ -335,11 +340,13 @@
     test:
         url: "http://127.0.0.1:8072"
         comSendUrl: "http://127.0.0.1:8072/rtuMw/com/send"
-    #鐩戞祴鎺у埗妯″潡鍥炶皟鍦板潃
+    #Rtu杩滅▼鍛戒护缁撴灉鍥炶皟鍦板潃
     rtuCallbackUrl_rm: "http://127.0.0.1:8081/remote/comRes/receive"
-    #rtu杩滅▼鍗囩骇妯″潡鍥炶皟鍦板潃
+    #鎺ユ敹閫氫俊涓棿浠舵秷鎭腑蹇冩秷鎭殑鍦板潃
+    mwMsCenterReceiveUrl_rm: "http://127.0.0.1:8081/remote/msCenter/receive"
+    #rtu杩滅▼鍗囩骇鐘舵�佷俊鎭洖璋冨湴鍧�
     ugCallbackUrl_rm: "http://127.0.0.1:8081/remote/rtuUpgradeStateReceiver/receive"
-    #寰俊灏忕▼搴忓洖璋冨湴鍧�
+    #寰俊灏忕▼搴忓簲鐢ㄤ腑Rtu杩滅▼鍛戒护缁撴灉鍥炶皟鍦板潃
     rtuCallbackUrl_wx: "http://127.0.0.1:8087/wx/comRes/receive"
 
 #涓嶈繘琛寀serToken杩囨护鐨刄RL锛孈ConfigurationProperties瑕佹眰tokennofilter涓墍鏈夊瓧姣嶉兘灏忓啓
@@ -347,7 +354,9 @@
     urls:
         - /sso/sso
         - /remote/comRes/receive
+        - /remote/msCenter/receive
         - /remote/rtuUpgradeStateReceiver/receive
+        - /remote/websocket
         - /wx/comRes/receive
         - /app/captcha/get
         - /file/file #web鍒嗗竷寮忔枃浠剁郴缁�
diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/application-global.yml b/pipIrr-platform/pipIrr-global/src/main/resources/application-global.yml
index 42b6d29..7767226 100644
--- a/pipIrr-platform/pipIrr-global/src/main/resources/application-global.yml
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/application-global.yml
@@ -4,6 +4,11 @@
             # 鍓嶇涓婁紶鏂囦欢锛岄檺鍒跺崟涓枃浠剁殑澶у皬鍜岄檺鍒舵墍鏈夋枃浠剁殑澶у皬
             max-file-size: 500MB
             max-request-size: 5000MB
+    http:
+        client:
+            # spring restTemplate 瀵瑰http璁块棶鏃�
+            connect-timeout: 3000 # 杩炴帴瓒呮椂鏃堕棿
+            read-timeout: 3000 # 璇诲彇瓒呮椂鏃堕棿
 logging:
     charset:
         console: UTF-8
@@ -335,11 +340,13 @@
     test:
         url: "http://127.0.0.1:8072"
         comSendUrl: "http://127.0.0.1:8072/rtuMw/com/send"
-    #鐩戞祴鎺у埗妯″潡鍥炶皟鍦板潃
+    #Rtu杩滅▼鍛戒护缁撴灉鍥炶皟鍦板潃
     rtuCallbackUrl_rm: "http://127.0.0.1:8081/remote/comRes/receive"
-    #rtu杩滅▼鍗囩骇妯″潡鍥炶皟鍦板潃
+    #鎺ユ敹閫氫俊涓棿浠舵秷鎭腑蹇冩秷鎭殑鍦板潃
+    mwMsCenterReceiveUrl_rm: "http://127.0.0.1:8081/remote/msCenter/receive"
+    #rtu杩滅▼鍗囩骇鐘舵�佷俊鎭洖璋冨湴鍧�
     ugCallbackUrl_rm: "http://127.0.0.1:8081/remote/rtuUpgradeStateReceiver/receive"
-    #寰俊灏忕▼搴忓洖璋冨湴鍧�
+    #寰俊灏忕▼搴忓簲鐢ㄤ腑Rtu杩滅▼鍛戒护缁撴灉鍥炶皟鍦板潃
     rtuCallbackUrl_wx: "http://127.0.0.1:8087/wx/comRes/receive"
 
 #涓嶈繘琛寀serToken杩囨护鐨刄RL锛孈ConfigurationProperties瑕佹眰tokennofilter涓墍鏈夊瓧姣嶉兘灏忓啓
@@ -347,7 +354,9 @@
     urls:
         - /sso/sso
         - /remote/comRes/receive
+        - /remote/msCenter/receive
         - /remote/rtuUpgradeStateReceiver/receive
+        - /remote/websocket
         - /wx/comRes/receive
         - /app/captcha/get
         - /file/file #web鍒嗗竷寮忔枃浠剁郴缁�
diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/Ar4BaseMapper.xml b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/Ar4BaseMapper.xml
index bc3ec2b..8dacf70 100644
--- a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/Ar4BaseMapper.xml
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/Ar4BaseMapper.xml
@@ -2,18 +2,22 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.dy.pipIrrGlobal.daoAllRound.Ar4BaseMapper">
 
-    <select id="intakeInfo" resultType="com.dy.pipIrrGlobal.VoAllRound.VoArIntakeBase">
+    <select id="intakeInfo" resultType="com.dy.pipIrrGlobal.voAllRound.VoArIntakeBase">
         select
         itb.id   as id,
         itb.name as num,
         itb.lng  as lng,
         itb.lat  as lat,
+        CONCAT(county.name, town.name, village.name) as address,
         bb.name  as blockName,
         pc.rtuAddr as rtuAddr
         from pr_intake itb
         LEFT JOIN ba_block bb on itb.blockId = bb.id
         LEFT JOIN pr_controller pc on itb.id = pc.intakeId
-        where id = #{intakeId,jdbcType=BIGINT}
+        LEFT JOIN ba_district county on itb.countyId = county.id
+        LEFT JOIN ba_district town on itb.townId = town.id
+        LEFT JOIN ba_district village on itb.villageId = village.id
+        where itb.id = #{intakeId,jdbcType=BIGINT}
     </select>
 
     <select id="intakeRtuAddr" resultType="java.lang.String">
diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/Ar4RemoteMapper.xml b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/Ar4RemoteMapper.xml
new file mode 100644
index 0000000..6e8d79e
--- /dev/null
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/Ar4RemoteMapper.xml
@@ -0,0 +1,34 @@
+<?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.dy.pipIrrGlobal.daoAllRound.Ar4RemoteMapper">
+
+    <select id="alarmLastInfo" resultType="com.dy.pipIrrGlobal.voAllRound.VoArIntakeRemote">
+        select
+        CONCAT(
+        IF(alarm_loss = 1, '婕忔崯鎶ヨ锛�', ''),
+        IF(alarm_battery_volt = 1, '鐢垫睜鐢靛帇鎶ヨ锛�', ''),
+        IF(alarm_valve = 1, '闃�闂ㄦ姤璀︼紝', ''),
+        IF(alarm_water_meter_fault = 1, '娴侀噺璁℃晠闅滄姤璀︼紝', '')
+        ) AS alarm,
+        dt AS alarmDt
+        from rm_alarm_state_last rasl
+        where intake_id = #{intakeId,jdbcType=BIGINT}
+    </select>
+
+    <select id="openCloseValveLastInfo" resultType="com.dy.pipIrrGlobal.voAllRound.VoArIntakeRemote">
+        select
+        op_dt AS lastOpenDt,
+        cl_dt AS lastCloseDt
+        from rm_open_close_valve_last rocvl
+        where intake_id = #{intakeId,jdbcType=BIGINT}
+    </select>
+
+    <select id="lossLastInfo" resultType="com.dy.pipIrrGlobal.voAllRound.VoArIntakeRemote">
+        select
+        dt AS lossDt,
+        loss_amount AS lossAmount
+        from rm_loss_day_last rldl
+        where intake_id = #{intakeId,jdbcType=BIGINT}
+    </select>
+
+</mapper>
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/Ar4StatisticsMapper.xml b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/Ar4StatisticsMapper.xml
new file mode 100644
index 0000000..f6f07f3
--- /dev/null
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/Ar4StatisticsMapper.xml
@@ -0,0 +1,101 @@
+<?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.dy.pipIrrGlobal.daoAllRound.Ar4StatisticsMapper">
+
+    <select id="openCloseRecords" resultType="com.dy.pipIrrGlobal.voAllRound.VoArIntakeOpenCloseValve">
+        select
+        tb.intake_id as intakeId,
+        sec.id as clientId,
+        sec.name as clientName,
+        sec.address as clientAddr,
+        tb.op_dt as openTime,
+        tb.op_type as opType,
+        tb.op_ic_card_no as openIcNum,
+        tb.op_remain_money as openRemainMoney,
+        tb.cl_dt as closeTime,
+        tb.cl_type as clType,
+        tb.cl_ic_card_no as closeIcNum,
+        tb.cl_remain_money as closeRemainMoney,
+        tb.cl_this_time as thisTime,
+        tb.cl_this_amount as thisAmount,
+        tb.cl_this_money as thisMoney
+        from rm_open_close_valve_history tb
+        left join se_client sec on tb.client_id = sec.id
+        where tb.intake_id = #{intakeId, jdbcType=BIGINT}
+        ORDER BY tb.id DESC
+        <trim prefix="limit ">
+            <if test="start != null and count != null">
+                #{start, javaType=Integer, jdbcType=INTEGER}, #{count, javaType=Integer, jdbcType=INTEGER}
+            </if>
+        </trim>
+    </select>
+
+
+    <select id="lossDayRecords" resultType="com.dy.pipIrrGlobal.voAllRound.VoArIntakeLossDay">
+        select
+        tb.intake_id as intakeId,
+        tb.dt AS dt,
+        tb.loss_amount AS loss
+        from rm_loss_day tb
+        where intake_id = #{intakeId, jdbcType=BIGINT}
+        ORDER BY tb.id DESC
+        <trim prefix="limit ">
+            <if test="start != null and count != null">
+                #{start, javaType=Integer, jdbcType=INTEGER}, #{count, javaType=Integer, jdbcType=INTEGER}
+            </if>
+        </trim>
+    </select>
+
+
+    <select id="lossMonthRecords" resultType="com.dy.pipIrrGlobal.voAllRound.VoArIntakeLossMonth">
+        select
+        tb.intake_id as intakeId,
+        CONCAT(tb.year, '-', tb.month) AS dt,
+        tb.amount AS loss
+        from st_loss_month tb
+        where intake_id = #{intakeId, jdbcType=BIGINT}
+        ORDER BY tb.id DESC
+        <trim prefix="limit ">
+            <if test="start != null and count != null">
+                #{start, javaType=Integer, jdbcType=INTEGER}, #{count, javaType=Integer, jdbcType=INTEGER}
+            </if>
+        </trim>
+    </select>
+
+
+
+    <select id="amountDayRecords" resultType="com.dy.pipIrrGlobal.voAllRound.VoArIntakeAmountDay">
+        select
+        tb.intake_id as intakeId,
+        tb.dt AS dt,
+        tb.amount AS amount,
+        tb.money AS money,
+        tb.times AS times
+        from rm_intake_amount_day tb
+        where intake_id = #{intakeId, jdbcType=BIGINT}
+        ORDER BY tb.id DESC
+        <trim prefix="limit ">
+            <if test="start != null and count != null">
+                #{start, javaType=Integer, jdbcType=INTEGER}, #{count, javaType=Integer, jdbcType=INTEGER}
+            </if>
+        </trim>
+    </select>
+
+
+    <select id="amountMonthRecords" resultType="com.dy.pipIrrGlobal.voAllRound.VoArIntakeAmountMonth">
+        select
+        tb.intake_id as intakeId,
+        CONCAT(tb.year, '-', tb.month) AS dt,
+        tb.amount AS amount
+        from st_intake_amount_month tb
+        where intake_id = #{intakeId, jdbcType=BIGINT}
+        ORDER BY tb.id DESC
+        <trim prefix="limit ">
+            <if test="start != null and count != null">
+                #{start, javaType=Integer, jdbcType=INTEGER}, #{count, javaType=Integer, jdbcType=INTEGER}
+            </if>
+        </trim>
+    </select>
+
+
+</mapper>
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/Ls4StatisticsMapper.xml b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/Ls4StatisticsMapper.xml
new file mode 100644
index 0000000..dc355db
--- /dev/null
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/Ls4StatisticsMapper.xml
@@ -0,0 +1,319 @@
+<?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.dy.pipIrrGlobal.daoLargeScreen.Ls4StatisticsMapper">
+
+    <select id="totalCountOfDistrict" resultType="java.lang.Integer">
+        select
+            count(*) as count
+        from ba_district tb
+        where tb.level = #{level, jdbcType=INTEGER}
+            and tb.deleted != 1
+    </select>
+
+    <select id="totalCountOfBlock" resultType="java.lang.Integer">
+        select
+            count(*) as count
+        from ba_block tb
+        where tb.deleted != 1
+    </select>
+
+    <select id="totalCountOfDivide" resultType="java.lang.Integer">
+        select
+            count(*) as count
+        from pr_divide tb
+        where tb.deleted != 1
+    </select>
+
+    <select id="totalCountOfIntake" resultType="java.lang.Integer">
+        select
+        count(*) as count
+        from pr_intake tb
+        where tb.deleted != 1
+    </select>
+
+    <select id="totalCountOfIntakeWithController" resultType="java.lang.Integer">
+        select count(*) as count
+        from (
+             select distinct tb.id
+             from pr_intake tb
+                inner join pr_intake_controller ctb on tb.id = ctb.intakeId
+             where tb.deleted != 1
+                and ctb.id is not null
+        ) otb
+    </select>
+
+    <select id="totalCountOfIntakeWithoutController" resultType="java.lang.Integer">
+        select
+            count(*) as count
+        from pr_intake tb
+                 left join pr_intake_controller ctb on tb.id = ctb.intakeId
+        where tb.deleted != 1
+          and ctb.id is null
+    </select>
+
+    <select id="totalCountOfController" resultType="java.lang.Integer">
+        select
+            count(*) as count
+        from pr_controller tb
+        where tb.deleted != 1
+    </select>
+
+    <select id="totalCountOfControllerTramp" resultType="java.lang.Integer">
+        select
+            count(*) as count
+        from pr_controller_tramp tb
+    </select>
+
+    <select id="totalCountOfOpenValve" resultType="java.lang.Integer">
+        select
+            count(*) as count
+        from rm_alarm_state_last tb
+        where valve_state = 0
+        <if test="dt != null ">
+            AND tb.dt <![CDATA[>=]]> #{dt, javaType=DATE, jdbcType=TIMESTAMP}
+        </if>
+    </select>
+
+    <select id="totalCountOfCloseValve" resultType="java.lang.Integer">
+        select
+            count(*) as count
+        from rm_alarm_state_last tb
+        where valve_state = 1
+        <if test="dt != null ">
+            AND tb.dt <![CDATA[>=]]> #{dt, javaType=DATE, jdbcType=TIMESTAMP}
+        </if>
+    </select>
+
+    <select id="totalCountOfAlarm" resultType="java.lang.Integer">
+        select
+            count(*) as count
+        from rm_alarm_state_last tb
+        where (alarm_remain_water = 1 or
+            alarm_exceed_year = 1 or
+            alarm_water_meter_fault = 1 or
+            alarm_loss = 1 or
+            alarm_water_meter_break = 1 or
+            alarm_ele_meter_fault = 1 or
+            alarm_inner_door = 1 or
+            alarm_outer_door = 1 or
+            alarm_ele_miss = 1 or
+            alarm_ele_exceed = 1 or
+            alarm_ele_low_volt = 1 or
+            state_ic_enable = 1 or
+            alarm_battery_volt = 1 or
+            alarm_valve = 1)
+        <if test="dt != null ">
+            AND tb.dt <![CDATA[>=]]> #{dt, javaType=DATE, jdbcType=TIMESTAMP}
+        </if>
+    </select>
+
+    <select id="totalCountOfNoAlarm" resultType="java.lang.Integer">
+        select
+        count(*) as count
+        from rm_alarm_state_last tb
+        where ((alarm_remain_water is null or alarm_remain_water = 0) and
+        (alarm_remain_water is null or alarm_exceed_year = 0)  and
+        (alarm_remain_water is null or alarm_water_meter_fault = 0)  and
+        (alarm_remain_water is null or alarm_loss = 0)  and
+        (alarm_remain_water is null or alarm_water_meter_break = 0)  and
+        (alarm_remain_water is null or alarm_ele_meter_fault = 0)  and
+        (alarm_remain_water is null or alarm_inner_door = 0)  and
+        (alarm_remain_water is null or alarm_outer_door = 0)  and
+        (alarm_remain_water is null or alarm_ele_miss = 0)  and
+        (alarm_remain_water is null or alarm_ele_exceed = 0)  and
+        (alarm_remain_water is null or alarm_ele_low_volt = 0)  and
+        (alarm_remain_water is null or state_ic_enable = 0)  and
+        (alarm_remain_water is null or alarm_battery_volt = 0)  and
+        (alarm_remain_water is null or alarm_valve = 0) )
+        <if test="dt != null ">
+            AND tb.dt <![CDATA[>=]]> #{dt, javaType=DATE, jdbcType=TIMESTAMP}
+        </if>
+    </select>
+
+    <select id="mTotalCountOfReport" resultType="java.lang.Integer">
+        select
+        count(*) as count
+        from rm_on_hour_report_last tb
+        where tb.dt <![CDATA[>=]]> #{fromDt, javaType=DATE, jdbcType=TIMESTAMP}
+    </select>
+
+    <select id="mTotalCountOfNoReport" resultType="java.lang.Integer">
+        select
+        count(*) as count
+        from pr_intake tb
+            left join (
+                select ltb.intake_id
+                from rm_on_hour_report_last ltb
+                where ltb.dt <![CDATA[>=]]> #{fromDt, javaType=DATE, jdbcType=TIMESTAMP}
+            ) temTb on tb.id = temTb.intake_id
+        where temTb.intake_id is null
+    </select>
+
+
+    <select id="mTotalCountOfNeverReport" resultType="java.lang.Integer">
+        select
+        count(*) as count
+        from pr_intake tb
+            left join (
+                select ltb.intake_id
+                from rm_on_hour_report_last ltb
+            ) temTb on tb.id = temTb.intake_id
+        where temTb.intake_id is null
+    </select>
+
+
+
+
+    <select id="mTotalCountOfOpenValve" resultType="java.lang.Integer">
+        select
+        count(*) as count
+        from rm_alarm_state_last tb
+        where valve_state = 0
+        <if test="fromDt != null ">
+            AND tb.dt <![CDATA[>=]]> #{fromDt, javaType=DATE, jdbcType=TIMESTAMP}
+        </if>
+    </select>
+
+    <select id="mTotalCountOfCloseValve" resultType="java.lang.Integer">
+        select
+        count(*) as count
+        from rm_alarm_state_last tb
+        where valve_state = 1
+        <if test="fromDt != null ">
+            AND tb.dt <![CDATA[>=]]> #{fromDt, javaType=DATE, jdbcType=TIMESTAMP}
+        </if>
+    </select>
+
+    <select id="mTotalCountOfNeverOpenValve" resultType="java.lang.Integer">
+        select
+            count(*) as count
+        from pr_intake tb
+            left join (
+                /* 姝ゅ鐞嗚В涓烘湁杩囪褰曪紝閭d箞灏卞紑杩囬榾 */
+                select ltb.intake_id
+                from rm_alarm_state_last ltb
+            ) temTb on tb.id = temTb.intake_id
+        where temTb.intake_id is null
+    </select>
+
+
+    <select id="mTotalCountOfAlarm" resultType="java.lang.Integer">
+        select
+        count(*) as count
+        from rm_alarm_state_last tb
+        where (alarm_remain_water = 1 or
+        alarm_exceed_year = 1 or
+        alarm_water_meter_fault = 1 or
+        alarm_loss = 1 or
+        alarm_water_meter_break = 1 or
+        alarm_ele_meter_fault = 1 or
+        alarm_inner_door = 1 or
+        alarm_outer_door = 1 or
+        alarm_ele_miss = 1 or
+        alarm_ele_exceed = 1 or
+        alarm_ele_low_volt = 1 or
+        state_ic_enable = 1 or
+        alarm_battery_volt = 1 or
+        alarm_valve = 1)
+        <if test="fromDt != null ">
+            AND tb.dt <![CDATA[>=]]> #{fromDt, javaType=DATE, jdbcType=TIMESTAMP}
+        </if>
+    </select>
+
+    <select id="mTotalCountOfNoAlarm" resultType="java.lang.Integer">
+        select
+        count(*) as count
+        from rm_alarm_state_last tb
+        where ((alarm_remain_water is null or alarm_remain_water = 0) and
+        (alarm_remain_water is null or alarm_exceed_year = 0)  and
+        (alarm_remain_water is null or alarm_water_meter_fault = 0)  and
+        (alarm_remain_water is null or alarm_loss = 0)  and
+        (alarm_remain_water is null or alarm_water_meter_break = 0)  and
+        (alarm_remain_water is null or alarm_ele_meter_fault = 0)  and
+        (alarm_remain_water is null or alarm_inner_door = 0)  and
+        (alarm_remain_water is null or alarm_outer_door = 0)  and
+        (alarm_remain_water is null or alarm_ele_miss = 0)  and
+        (alarm_remain_water is null or alarm_ele_exceed = 0)  and
+        (alarm_remain_water is null or alarm_ele_low_volt = 0)  and
+        (alarm_remain_water is null or state_ic_enable = 0)  and
+        (alarm_remain_water is null or alarm_battery_volt = 0)  and
+        (alarm_remain_water is null or alarm_valve = 0) )
+        <if test="fromDt != null ">
+            AND tb.dt <![CDATA[>=]]> #{fromDt, javaType=DATE, jdbcType=TIMESTAMP}
+        </if>
+    </select>
+
+    <select id="mTotalCountOfNeverAlarm" resultType="java.lang.Integer">
+        select
+            count(*) as count
+        from pr_intake tb
+                 left join (
+            select ltb.intake_id
+            from rm_alarm_state_last ltb
+            where ((ltb.alarm_remain_water is null or ltb.alarm_remain_water = 0) and
+                   (ltb.alarm_remain_water is null or ltb.alarm_exceed_year = 0)  and
+                   (ltb.alarm_remain_water is null or ltb.alarm_water_meter_fault = 0)  and
+                   (ltb.alarm_remain_water is null or ltb.alarm_loss = 0)  and
+                   (ltb.alarm_remain_water is null or ltb.alarm_water_meter_break = 0)  and
+                   (ltb.alarm_remain_water is null or ltb.alarm_ele_meter_fault = 0)  and
+                   (ltb.alarm_remain_water is null or ltb.alarm_inner_door = 0)  and
+                   (ltb.alarm_remain_water is null or ltb.alarm_outer_door = 0)  and
+                   (ltb.alarm_remain_water is null or ltb.alarm_ele_miss = 0)  and
+                   (ltb.alarm_remain_water is null or ltb.alarm_ele_exceed = 0)  and
+                   (ltb.alarm_remain_water is null or ltb.alarm_ele_low_volt = 0)  and
+                   (ltb.alarm_remain_water is null or ltb.state_ic_enable = 0)  and
+                   (ltb.alarm_remain_water is null or ltb.alarm_battery_volt = 0)  and
+                   (ltb.alarm_remain_water is null or ltb.alarm_valve = 0) )
+        ) temTb on tb.id = temTb.intake_id
+        where temTb.intake_id is null
+    </select>
+
+
+
+
+    <select id="topXClientAtCertainDay" resultType="com.dy.pipIrrGlobal.voSpecial.VoTopXClient">
+        select mTb.id as id, mTb.client_id as clientId,
+        scTb.name as clientName, scTb.clientNum as clientNum, scTb.address as clientAddress,
+        mTb.amount as amount
+        from rm_client_amount_day mTb
+        left join se_client scTb on scTb.id = mTb.client_id
+        <where>
+            <if test = "idStart != null">
+                mTb.id <![CDATA[>=]]> #{idStart, javaType=LONG, jdbcType=BIGINT}
+            </if>
+            <if test = "idEnd != null">
+                and mTb.id <![CDATA[<=]]> #{idEnd, javaType=LONG, jdbcType=BIGINT}
+            </if>
+        </where>
+        order by mTb.amount DESC
+        <trim prefix="limit " >
+            <if test="count != null">
+                0, #{count,javaType=Integer, jdbcType=INTEGER}
+            </if>
+        </trim>
+    </select>
+
+
+    <select id="topXIntakeAtCertainDay" resultType="com.dy.pipIrrGlobal.voSpecial.VoTopXIntake">
+        select mTb.id as id, mTb.intake_id as intakeId,
+        piTb.name as intakeNum, piTb.lng as intakeLng, piTb.lat as intakeLat,
+        mTb.amount as amount
+        from rm_intake_amount_day mTb
+        left join pr_intake piTb on piTb.id = mTb.intake_id
+        <where>
+            <if test = "idStart != null">
+                mTb.id <![CDATA[>=]]> #{idStart, javaType=LONG, jdbcType=BIGINT}
+            </if>
+            <if test = "idEnd != null">
+                and mTb.id <![CDATA[<=]]> #{idEnd, javaType=LONG, jdbcType=BIGINT}
+            </if>
+        </where>
+        order by mTb.amount DESC
+        <trim prefix="limit " >
+            <if test="count != null">
+                0, #{count,javaType=Integer, jdbcType=INTEGER}
+            </if>
+        </trim>
+    </select>
+
+</mapper>
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/PrIntakeMapper.xml b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/PrIntakeMapper.xml
index eb8e6de..09fb846 100644
--- a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/PrIntakeMapper.xml
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/PrIntakeMapper.xml
@@ -405,6 +405,13 @@
     </select>
 
     <!--鏍规嵁鏉慖D鑾峰彇鍏ㄩ儴鍦板潃-->
+    <select id="getNameById" resultType="java.lang.String">
+        select name
+        from pr_intake
+        where id = #{intakeId, jdbcType=BIGINT}
+    </select>
+
+    <!--鏍规嵁鏉慖D鑾峰彇鍏ㄩ儴鍦板潃-->
     <select id="getAddressByVillageId" parameterType="_long" resultType="java.lang.String">
         select CONCAT(dis_province.`name`, dis_city.`name`, dis_county.`name`, dis_town.`name`,
         dis_village.`name`) AS address
diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmOpenCloseValveHistoryMapper.xml b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmOpenCloseValveHistoryMapper.xml
index 6c5d694..3c10897 100644
--- a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmOpenCloseValveHistoryMapper.xml
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmOpenCloseValveHistoryMapper.xml
@@ -1336,8 +1336,8 @@
         count(ocvh.id) as times
         from rm_open_close_valve_history ocvh
         inner join se_client_card cc on CAST(cc.cardNum AS CHAR) = ocvh.cl_ic_card_no
-        where ocvh.cl_dt <![CDATA[>=]]> #{startDt, jdbcType=BIGINT}
-        and ocvh.cl_dt <![CDATA[<=]]> #{endDt, jdbcType=BIGINT}
+        where ocvh.cl_dt <![CDATA[>=]]> #{startDt, jdbcType=TIMESTAMP }
+        and ocvh.cl_dt <![CDATA[<=]]> #{endDt, jdbcType=TIMESTAMP}
         group by ocvh.client_id, cc.id
     </select>
     <select id="statisticsByClient" resultType="com.dy.pipIrrGlobal.voSt.VoClientConsumeStatistics">
@@ -1347,8 +1347,8 @@
         sum(cl_this_time) as duration,
         count(id) as times
         from rm_open_close_valve_history
-        where cl_dt <![CDATA[>=]]> #{startDt, jdbcType=BIGINT}
-        and cl_dt <![CDATA[<=]]> #{endDt, jdbcType=BIGINT}
+        where cl_dt <![CDATA[>=]]> #{startDt, jdbcType=TIMESTAMP}
+        and cl_dt <![CDATA[<=]]> #{endDt, jdbcType=TIMESTAMP}
         group by client_id
     </select>
 </mapper>
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeClientCardMapper.xml b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeClientCardMapper.xml
index f5c65a6..ae9b1ff 100644
--- a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeClientCardMapper.xml
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeClientCardMapper.xml
@@ -92,7 +92,8 @@
     <!-- 鏍规嵁姘村崱缂栧彿鑾峰彇姘村崱瀵瑰簲鐨勫啘鎴穒d鍜屽鍚� -->
     <select id="getClientIdAndNameByCardAddrAndCardNo" resultType="java.util.Map">
         SELECT cli.id   AS clientId,
-               cli.name AS clientName
+               cli.name AS clientName,
+               cli.address AS clientAddress
         FROM se_client_card card
                  INNER JOIN se_client cli ON card.clientId = cli.id
         WHERE card.cardAddr = #{cardAddr}
diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeVirtualCardMapper.xml b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeVirtualCardMapper.xml
index e758d80..6bc3433 100644
--- a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeVirtualCardMapper.xml
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeVirtualCardMapper.xml
@@ -245,11 +245,12 @@
     SELECT id FROM se_virtual_card WHERE state = 1 AND vc_num = #{vcNum}
   </select>
 
-  <!--鏍规嵁铏氭嫙鍗$紪鍙疯幏鍙栬櫄鎷熷崱ID-->
+  <!--鏍规嵁铏氭嫙鍗$紪鍙疯幏鍙栧啘鎴穒d銆佸鍚嶃�佸湴鍧�-->
   <select id="getClientIdAndNameByVsCardNo" resultType="java.util.Map">
     SELECT
     cli.id AS clientId,
-    cli.name AS clientName
+    cli.name AS clientName,
+    cli.address AS clientAddress
     FROM se_virtual_card card
     INNER JOIN se_client cli ON card.client_id = cli.id
     WHERE card.state = 1 AND card.vc_num = #{vcNum}
diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SpecialMapper.xml b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SpecialMapper.xml
new file mode 100644
index 0000000..01a5a70
--- /dev/null
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SpecialMapper.xml
@@ -0,0 +1,132 @@
+<?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.dy.pipIrrGlobal.daoSpecial.SpecialMapper">
+
+    <select id="selectStealTotal" parameterType="java.util.Map" resultType="java.lang.Long">
+        select
+        count(*)
+        from rm_open_close_valve_history mTb
+        left join pr_intake piTb on piTb.id = mTb.intake_id
+        left join se_client scTb on scTb.id = mTb.client_id
+        where mTb.cl_this_money = 0.0
+        <trim prefix="and" suffixOverrides="and">
+            <if test = "duration != null">
+                mTb.cl_this_time > #{duration, javaType=INTEGER, jdbcType=INTEGER} and
+            </if>
+           <if test = "fromDate != null">
+                mTb.cl_dt <![CDATA[>=]]> #{fromDate, javaType=DATE, jdbcType=TIMESTAMP} and
+            </if>
+            <if test = "intakeNum != null and intakeNum != '' ">
+                piTb.name = #{intakeNum, jdbcType=VARCHAR} and
+            </if>
+            <if test = "clientNum != null and clientNum != '' ">
+                scTb.clientNum = #{clientNum, jdbcType=VARCHAR} and
+            </if>
+            <if test = "clientName != null and clientName != '' ">
+                scTb.name = #{clientName, jdbcType=VARCHAR} and
+            </if>
+        </trim>
+    </select>
+
+
+    <select id="selectStealSome" parameterType="java.util.Map" resultType="com.dy.pipIrrGlobal.voSpecial.VoSteal">
+        select mTb.id as id, mTb.intake_id as intakeId, mTb.client_id as clientId,
+        piTb.name as intakeNum, piTb.lng as intakeLng, piTb.lat as intakeLat,
+        scTb.name as clientName, scTb.clientNum as clientNum,
+        mTb.op_dt as openDt, mTb.op_type as opType, mTb.op_total_amount as openTotalAmount, mTb.op_remain_money as openRemainMoney,
+        mTb.cl_dt as closeDt, mTb.cl_type as clType, mTb.cl_total_amount as closeTotalAmount, mTb.cl_remain_money as closeRemainMoney,
+        mTb.cl_this_amount as thisAmount, mTb.cl_this_money as thisMoney, mTb.cl_this_time as thisTime
+        from rm_open_close_valve_history mTb
+        left join pr_intake piTb on piTb.id = mTb.intake_id
+        left join se_client scTb on scTb.id = mTb.client_id
+        where mTb.cl_this_money = 0.0
+        <trim prefix="and" suffixOverrides="and">
+            <if test = "duration != null">
+                mTb.cl_this_time > #{duration, javaType=INTEGER, jdbcType=INTEGER} and
+            </if>
+            <if test = "fromDate != null">
+                mTb.cl_dt <![CDATA[>=]]> #{fromDate, javaType=DATE, jdbcType=TIMESTAMP} and
+            </if>
+            <if test = "intakeNum != null and intakeNum != '' ">
+                piTb.name = #{intakeNum, jdbcType=VARCHAR} and
+            </if>
+            <if test = "clientNum != null and clientNum != '' ">
+                scTb.clientNum = #{clientNum, jdbcType=VARCHAR} and
+            </if>
+            <if test = "clientName != null and clientName != '' ">
+                scTb.name = #{clientName, jdbcType=VARCHAR} and
+            </if>
+        </trim>
+        order by mTb.id DESC
+        <trim prefix="limit " >
+            <if test="start != null and count != null">
+                #{start,javaType=Integer, jdbcType=INTEGER}, #{count,javaType=Integer, jdbcType=INTEGER}
+            </if>
+        </trim>
+    </select>
+
+
+    <select id="selectAbnormalCloseValveTotal" parameterType="java.util.Map" resultType="java.lang.Long">
+        select
+        count(*)
+        from rm_open_close_valve_history mTb
+        left join pr_intake piTb on piTb.id = mTb.intake_id
+        left join se_client scTb on scTb.id = mTb.client_id
+        where mTb.cl_type != 2
+        <trim prefix="and" suffixOverrides="and">
+            <if test = "atDateStart != null">
+                mTb.cl_dt <![CDATA[>=]]> #{atDateStart, javaType=DATE, jdbcType=TIMESTAMP} and
+            </if>
+            <if test = "atDateEnd != null">
+                mTb.cl_dt <![CDATA[<=]]> #{atDateEnd, javaType=DATE, jdbcType=TIMESTAMP} and
+            </if>
+            <if test = "intakeNum != null and intakeNum != '' ">
+                piTb.name = #{intakeNum, jdbcType=VARCHAR} and
+            </if>
+            <if test = "clientNum != null and clientNum != '' ">
+                scTb.clientNum = #{clientNum, jdbcType=VARCHAR} and
+            </if>
+            <if test = "clientName != null and clientName != '' ">
+                scTb.name = #{clientName, jdbcType=VARCHAR} and
+            </if>
+        </trim>
+    </select>
+
+
+    <select id="selectAbnormalCloseValveSome" parameterType="java.util.Map" resultType="com.dy.pipIrrGlobal.voSpecial.VoAbnormalCloseValve">
+        select mTb.id as id, mTb.intake_id as intakeId, mTb.client_id as clientId,
+        piTb.name as intakeNum, piTb.lng as intakeLng, piTb.lat as intakeLat,
+        scTb.name as clientName, scTb.clientNum as clientNum,
+        mTb.op_dt as openDt, mTb.op_type as opType, mTb.op_total_amount as openTotalAmount, mTb.op_remain_money as openRemainMoney,
+        mTb.cl_dt as closeDt, mTb.cl_type as clType, mTb.cl_total_amount as closeTotalAmount, mTb.cl_remain_money as closeRemainMoney,
+        mTb.cl_this_amount as thisAmount, mTb.cl_this_money as thisMoney, mTb.cl_this_time as thisTime
+        from rm_open_close_valve_history mTb
+        left join pr_intake piTb on piTb.id = mTb.intake_id
+        left join se_client scTb on scTb.id = mTb.client_id
+        where mTb.cl_type != 2
+        <trim prefix="and" suffixOverrides="and">
+            <if test = "atDateStart != null">
+                mTb.cl_dt <![CDATA[>=]]> #{atDateStart, javaType=DATE, jdbcType=TIMESTAMP} and
+            </if>
+            <if test = "atDateEnd != null">
+                mTb.cl_dt <![CDATA[<=]]> #{atDateEnd, javaType=DATE, jdbcType=TIMESTAMP} and
+            </if>
+            <if test = "intakeNum != null and intakeNum != '' ">
+                piTb.name = #{intakeNum, jdbcType=VARCHAR} and
+            </if>
+            <if test = "clientNum != null and clientNum != '' ">
+                scTb.clientNum = #{clientNum, jdbcType=VARCHAR} and
+            </if>
+            <if test = "clientName != null and clientName != '' ">
+                scTb.name = #{clientName, jdbcType=VARCHAR} and
+            </if>
+        </trim>
+        order by mTb.id DESC
+        <trim prefix="limit " >
+            <if test="start != null and count != null">
+                #{start,javaType=Integer, jdbcType=INTEGER}, #{count,javaType=Integer, jdbcType=INTEGER}
+            </if>
+        </trim>
+    </select>
+
+</mapper>
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/PipIrrMwRtuApplication.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/PipIrrMwRtuApplication.java
index 7e89fd0..8af9b06 100644
--- a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/PipIrrMwRtuApplication.java
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/PipIrrMwRtuApplication.java
@@ -8,7 +8,9 @@
 import org.springframework.context.annotation.ComponentScan;
 import org.springframework.context.annotation.EnableAspectJAutoProxy;
 import org.springframework.context.annotation.FilterType;
+import org.springframework.scheduling.annotation.EnableScheduling;
 
+@EnableScheduling
 @SpringBootApplication
 @EnableAspectJAutoProxy
 @ComponentScan(basePackages = {"com.dy.common", "com.dy.pipIrrGlobal", "com.dy.rtuMw"},
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/Server.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/Server.java
index 17e9b85..79375db 100644
--- a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/Server.java
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/Server.java
@@ -4,6 +4,8 @@
 import java.util.List;
 
 import com.dy.rtuMw.server.*;
+import com.dy.rtuMw.server.msCenter.MsCenterConfigVo;
+import com.dy.rtuMw.server.msCenter.MsCenterUnit;
 import com.dy.rtuMw.server.rtuData.RtuDataUnit;
 import com.dy.rtuMw.server.rtuData.RtuDataUnitConfigVo;
 import com.dy.rtuMw.server.tasks.FromRtuComResultConstantTask;
@@ -334,6 +336,22 @@
 			}
 			*/
 
+
+			/////////////////
+			//娑堟伅涓績妯″潡
+			MsCenterConfigVo mscVo = new MsCenterConfigVo();
+			mscVo.enable = conf.getSetAttrBoolean(doc, "config.msCenter", "enable", null, null) ;
+			mscVo.notifyMsInterval = conf.getSetAttrPlusInt(doc, "config.msCenter", "notifyInterval", null, 1, 600, null) * 1000L ;
+			mscVo.showStartInfo = showStartInfo ;
+			AdapterImp_MsCenterUnit mscAdapt = new AdapterImp_MsCenterUnit();
+			mscAdapt.setConfig(mscVo);
+			MsCenterUnit mscUnit = MsCenterUnit.getInstance();
+			mscUnit.setAdapter(mscAdapt);
+			mscUnit.start(obj -> {
+			});
+			units.add(mscUnit) ;
+
+
 			/////////////////
 			//RTU杩滅▼鍗囩骇妯″潡
 			UpgradeUnitConfigVo ugVo = new UpgradeUnitConfigVo();
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/AdapterImp_MsCenterUnit.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/AdapterImp_MsCenterUnit.java
new file mode 100644
index 0000000..9c1ad40
--- /dev/null
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/AdapterImp_MsCenterUnit.java
@@ -0,0 +1,19 @@
+package com.dy.rtuMw.server;
+
+
+import com.dy.rtuMw.server.msCenter.MsCenterConfigVo;
+import com.dy.rtuMw.server.msCenter.MsCenterUnitAdapter;
+
+public class AdapterImp_MsCenterUnit implements MsCenterUnitAdapter {
+	
+	private MsCenterConfigVo configVo ;
+
+	public MsCenterConfigVo getConfig() {
+		return configVo;
+	}
+	
+	public void setConfig(MsCenterConfigVo configVo){
+		this.configVo = configVo ;
+	}
+
+}
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/forTcp/TcpDownCommandObj.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/forTcp/TcpDownCommandObj.java
index b754cd8..3a76be7 100644
--- a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/forTcp/TcpDownCommandObj.java
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/forTcp/TcpDownCommandObj.java
@@ -72,20 +72,25 @@
 			return false ;
 		}
 
-		Long lastDownComTime = tcpSe.lastDownComTime ;
 		boolean nowSend = false ;
-		if(this.result.isQuickSend){
-			//鏈敹鍒板懡浠ょ粨鏋滐紝鏈揪鍒版渶澶у彂閫佹鏁帮紝RTU鍦ㄧ嚎锛岀涓婅鏁版嵁鏃跺埢涓嶈繎锛屽綋鍓嶆槸閫熷彂鍛戒护锛屾弧瓒冲彂閫佸懡浠ゆ潯浠讹紝鎵ц鍙戦�佸懡浠�
-			nowSend = true ;
-		}else if(lastDownComTime == null){
-			//鏈敹鍒板懡浠ょ粨鏋滐紝鏈揪鍒版渶澶у彂閫佹鏁帮紝RTU鍦ㄧ嚎锛岀涓婅鏁版嵁鏃跺埢涓嶈繎锛屽綋鍓峈TU涓婄嚎浠ユ潵鏈浘涓嬪彂杩囧懡浠わ紝婊¤冻鍙戦�佸懡浠ゆ潯浠讹紝鎵ц鍙戦�佸懡浠�
-			nowSend = true ;
-		}else if(this.result.isFastCom && now - lastDownComTime >= ServerProperties.fastCommandSendInterval){
-			//鏈敹鍒板懡浠ょ粨鏋滐紝鏈揪鍒版渶澶у彂閫佹鏁帮紝RTU鍦ㄧ嚎锛岀涓婅鏁版嵁鏃跺埢涓嶈繎锛孯TU涓婄嚎浠ユ潵鏇句笅鍙戣繃鍛戒护锛屽綋鍓嶅懡浠ゆ槸蹇�熷懡浠や笖瓒呰繃鍛戒护涓嬪彂闂撮殧锛屾弧瓒冲彂閫佸懡浠ゆ潯浠讹紝鎵ц鍙戦�佸懡浠�
-			nowSend = true ;
-		}else if(!this.result.isFastCom && now - lastDownComTime >= ServerProperties.commandSendInterval){
-			//鏈敹鍒板懡浠ょ粨鏋滐紝鏈揪鍒版渶澶у彂閫佹鏁帮紝RTU鍦ㄧ嚎锛岀涓婅鏁版嵁鏃跺埢涓嶈繎锛孯TU涓婄嚎浠ユ潵鏇句笅鍙戣繃鍛戒护锛屽綋鍓嶅懡浠ら潪蹇�熷懡浠わ紝RTU涓嬪彂鍛戒护闂撮殧瓒呰繃鍛戒护涓嬪彂闂撮殧锛屾弧瓒冲彂閫佸懡浠ゆ潯浠讹紝鎵ц鍙戦�佸懡浠�
-			nowSend = true ;
+		if(this.result.countdown4Send > 0){
+			this.result.countdown4Send -= 1 ;
+		}else{
+			Long lastDownComTime = tcpSe.lastDownComTime ;
+			if(this.result.isQuickSend){
+				//鍦ㄥ懡浠ゆ瀯寤烘椂锛屽彧鏈夊湪浣庡姛鑰楁儏鍐典笅锛屾墠浼氭妸isQuickSend浠樺�间负true
+				//鏈敹鍒板懡浠ょ粨鏋滐紝鏈揪鍒版渶澶у彂閫佹鏁帮紝RTU鍦ㄧ嚎锛岀涓婅鏁版嵁鏃跺埢涓嶈繎锛屽綋鍓嶆槸閫熷彂鍛戒护锛屾弧瓒冲彂閫佸懡浠ゆ潯浠讹紝鎵ц鍙戦�佸懡浠�
+				nowSend = true ;
+			}else if(lastDownComTime == null){
+				//鏈敹鍒板懡浠ょ粨鏋滐紝鏈揪鍒版渶澶у彂閫佹鏁帮紝RTU鍦ㄧ嚎锛岀涓婅鏁版嵁鏃跺埢涓嶈繎锛屽綋鍓峈TU涓婄嚎浠ユ潵鏈浘涓嬪彂杩囧懡浠わ紝婊¤冻鍙戦�佸懡浠ゆ潯浠讹紝鎵ц鍙戦�佸懡浠�
+				nowSend = true ;
+			}else if(this.result.isFastCom && (now - lastDownComTime) >= ServerProperties.fastCommandSendInterval){
+				//鏈敹鍒板懡浠ょ粨鏋滐紝鏈揪鍒版渶澶у彂閫佹鏁帮紝RTU鍦ㄧ嚎锛岀涓婅鏁版嵁鏃跺埢涓嶈繎锛孯TU涓婄嚎浠ユ潵鏇句笅鍙戣繃鍛戒护锛屽綋鍓嶅懡浠ゆ槸蹇�熷懡浠や笖瓒呰繃鍛戒护涓嬪彂闂撮殧锛屾弧瓒冲彂閫佸懡浠ゆ潯浠讹紝鎵ц鍙戦�佸懡浠�
+				nowSend = true ;
+			}else if(!this.result.isFastCom && (now - lastDownComTime) >= ServerProperties.commandSendInterval){
+				//鏈敹鍒板懡浠ょ粨鏋滐紝鏈揪鍒版渶澶у彂閫佹鏁帮紝RTU鍦ㄧ嚎锛岀涓婅鏁版嵁鏃跺埢涓嶈繎锛孯TU涓婄嚎浠ユ潵鏇句笅鍙戣繃鍛戒护锛屽綋鍓嶅懡浠ら潪蹇�熷懡浠わ紝RTU涓嬪彂鍛戒护闂撮殧瓒呰繃鍛戒护涓嬪彂闂撮殧锛屾弧瓒冲彂閫佸懡浠ゆ潯浠讹紝鎵ц鍙戦�佸懡浠�
+				nowSend = true ;
+			}
 		}
 
 		if(nowSend){
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/forTcp/TcpSessionCache.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/forTcp/TcpSessionCache.java
index d03d826..5d92f5a 100644
--- a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/forTcp/TcpSessionCache.java
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/forTcp/TcpSessionCache.java
@@ -128,7 +128,7 @@
 
 	/**
 	 * 寰楀埌鎵�鏈夊湪绾夸笌绂荤嚎鏁伴噺缁熻
-	 * @return [0]=鍦ㄧ嚎鏁伴噺锛孾2]涓婄嚎杩囷紝浣嗗綋鍓嶇绾跨殑鏁伴噺
+	 * @return [0]=鍦ㄧ嚎鏁伴噺锛孾1]涓婄嚎杩囷紝浣嗗綋鍓嶇绾跨殑鏁伴噺
 	 */
 	public static Integer[] allOnLineStateStatistics(){
 		synchronized (map){
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/msCenter/MsCenterConfigVo.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/msCenter/MsCenterConfigVo.java
new file mode 100644
index 0000000..a8f2131
--- /dev/null
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/msCenter/MsCenterConfigVo.java
@@ -0,0 +1,19 @@
+package com.dy.rtuMw.server.msCenter;
+
+/**
+ * @Author: liurunyu
+ * @Date: 2025/2/12 13:57
+ * @Description
+ */
+public class MsCenterConfigVo {
+    public Boolean showStartInfo ;
+    public Boolean enable ;//妯″潡鏄惁鍚姩
+
+    public Long notifyMsInterval ;//閫氱煡闂撮殧(鍗曚綅姣)
+
+    public MsCenterConfigVo(){
+        this.showStartInfo = false ;
+        this.enable = false ;
+        this.notifyMsInterval = 1000L ;
+    }
+}
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/msCenter/MsCenterManager.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/msCenter/MsCenterManager.java
new file mode 100644
index 0000000..659e45f
--- /dev/null
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/msCenter/MsCenterManager.java
@@ -0,0 +1,138 @@
+package com.dy.rtuMw.server.msCenter;
+
+import com.alibaba.fastjson2.JSONObject;
+import com.dy.common.queue.Queue;
+import com.dy.common.springUtil.SpringContextUtil;
+import com.dy.common.threadPool.ThreadPool;
+import com.dy.common.threadPool.TreadPoolFactory;
+import com.dy.common.util.Callback;
+import com.dy.common.util.TimerTaskJob;
+import com.dy.rtuMw.web.webRequest.WebRequestDeal;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+
+import java.util.*;
+
+/**
+ * @Author: liurunyu
+ * @Date: 2025/2/12 14:12
+ * @Description
+ */
+public class MsCenterManager extends TimerTaskJob implements Callback {
+
+    private static final Logger log = LogManager.getLogger(MsCenterManager.class.getName());
+
+    private static final MsCenterManager INSTANCE = new MsCenterManager();
+    //娑堟伅缂撳瓨闃熷垪锛岀嚎绋嬪畨鍏ㄧ殑
+    private static final Queue msQueue = new Queue("MsCenterQueue") ;
+
+    private static final Map<String, String> msReceivers = new HashMap<>() ;
+
+
+    private MsCenterManager(){
+    }
+
+    protected static MsCenterManager getInstance() {
+        return MsCenterManager.INSTANCE;
+    }
+
+    /**
+     *  鍒濆鍖栭厤缃俊鎭�
+     */
+    protected void initOption(MsCenterConfigVo configVo) {
+    }
+    /**
+     * 娉ㄥ唽娑堟伅鎺ユ敹鍣�
+     * @param webUrl 鎺ユ敹鑰厀eb http post url
+     */
+    protected void registerMsReceiver(String webUrl){
+        if(!msReceivers.containsKey(webUrl)){
+            msReceivers.put(webUrl, webUrl) ;
+        }
+    }
+
+    protected void pushMs(MsObj msNode){
+        try {
+            msQueue.pushTail(msNode);
+        }catch (Exception e){
+            log.error("娑堟伅涓績闃熷垪瀛樺叆娑堟伅鏃跺彂鐢熷紓甯�", e);
+        }
+    }
+
+    @Override
+    public Object execute() throws Exception {
+        if(msQueue.size() > 0){
+            JSONObject msNode1 = (JSONObject)msQueue.pop() ;
+            if(msNode1 != null){
+                //澶ч儴鍒嗘椂闂磎sNode1鏄痭ull
+                List<JSONObject> list = new ArrayList<>() ;
+                list.add(msNode1) ;
+                JSONObject msNode ;
+                do{
+                    msNode = (JSONObject)msQueue.pop() ;
+                    if(msNode != null){
+                        list.add(msNode) ;
+                    }
+                }while (msNode != null);
+                this.notifyMs(list) ;
+            }
+        }
+        return null;
+    }
+
+
+    ////////////////////////////////////////////////////
+    //
+    // 娑堟伅閫氱煡閫氱煡宸ヤ綔绾跨▼鎵ц瀹屾垚鍚庡洖璋冪殑鏂规硶锛�
+    // 涔熷氨鏄笂闈xecute鏂规硶鎵ц瀹屾垚杩斿洖鎴栨姏鍑哄紓甯稿悗锛屾墽琛屼笅闈笁涓柟娉�
+    //
+    ////////////////////////////////////////////////////
+    @Override
+    public void call(Object obj) {
+        //绾跨▼宸ヤ綔鎵ц瀹屼簡锛宱bj = Boolean(true)
+    }
+    @Override
+    public void call(Object... objs) {
+    }
+    @Override
+    public void exception(Exception e) {
+        log.error("娑堟伅閫氱煡浼烘湇绾跨▼鍙戠敓寮傚父", e);
+    }
+
+
+    /**
+     * 鎶婃秷鎭�氱煡鍑哄幓
+     * @param list
+     */
+    private void notifyMs(List<JSONObject> list){
+        try {
+            if(msReceivers.size() > 0){
+                ThreadPool.Pool pool = TreadPoolFactory.getThreadPoolLong() ;
+                pool.putJob(new ThreadPool.Job() {
+                    public void execute() {
+                        Iterator<String> it = msReceivers.keySet().iterator() ;
+                        while (it.hasNext()){
+                            doNotifyMs(it.next(), list) ;
+                        }
+                    }
+                    @Override
+                    public void destroy(){
+                    }
+                    @Override
+                    public boolean isDestroy(){
+                        return false ;
+                    }
+
+                });
+            }
+        } catch (Exception e) {
+            log.error("鍦≧tuDataNode鍐呭彂鐢熷紓甯�", e);
+        }
+    }
+
+    private void doNotifyMs(String receiverWebUrl, List<JSONObject> list){
+        WebRequestDeal deal = SpringContextUtil.getBean(WebRequestDeal.class) ;
+        deal.deal(receiverWebUrl, list);
+    }
+
+}
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/msCenter/MsCenterUnit.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/msCenter/MsCenterUnit.java
new file mode 100644
index 0000000..2776201
--- /dev/null
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/msCenter/MsCenterUnit.java
@@ -0,0 +1,83 @@
+package com.dy.rtuMw.server.msCenter;
+
+import com.dy.common.mw.UnitAdapterInterface;
+import com.dy.common.mw.UnitCallbackInterface;
+import com.dy.common.mw.UnitInterface;
+
+/**
+ * @Author: liurunyu
+ * @Date: 2025/2/12 13:55
+ * @Description
+ */
+public class MsCenterUnit  implements UnitInterface {
+
+    private static MsCenterUnit instance = new MsCenterUnit() ;
+
+    public static MsCenterUnitAdapter adapter ;
+    public static MsCenterConfigVo confVo ;
+
+    private static MsCenterManager manager ;
+
+    private MsCenterUnit(){} ;
+
+    public static MsCenterUnit getInstance(){
+        return instance ;
+    }
+
+    @Override
+    public void setAdapter(UnitAdapterInterface adapter) throws Exception {
+        if(adapter == null){
+            throw new Exception("娑堟伅涓績妯″潡閫傞厤鍣ㄥ璞′笉鑳戒负绌猴紒") ;
+        }
+        MsCenterUnit.adapter = (MsCenterUnitAdapter)adapter ;
+        MsCenterUnit.confVo = MsCenterUnit.adapter.getConfig() ;
+        if(MsCenterUnit.confVo == null){
+            throw new Exception("娑堟伅涓績妯″潡閰嶇疆瀵硅薄涓嶈兘涓虹┖锛�") ;
+        }
+    }
+
+    /**
+     * 鍒濆鍖�
+     */
+    @Override
+    public void start(UnitCallbackInterface callback) throws Exception {
+        if(confVo.enable){
+            manager = MsCenterManager.getInstance() ;
+            manager.initOption(confVo);
+            manager.start(1000L, confVo.notifyMsInterval, manager);
+            callback.call(null) ;
+            System.out.println("娑堟伅涓績妯″潡鎴愬姛鍚姩");
+        }else{
+            System.out.println("娑堟伅涓績妯″潡閰嶇疆涓嶅惎鍔�");
+        }
+
+    }
+
+    @Override
+    public void stop(UnitCallbackInterface callback) throws Exception {
+        if(manager != null){
+            manager.stop();
+        }
+    }
+
+    /**
+     * 瀛樺叆娑堟伅
+     * @param msNode
+     */
+    public void pushMs(MsObj msNode){
+        if(manager != null){
+            manager.pushMs(msNode) ;
+        }
+    }
+
+    /**
+     * 娉ㄥ唽娑堟伅鎺ユ敹鍣�
+     * @param webUrl 鎺ユ敹鑰厀eb http post url
+     */
+    public void registerMsReceiver(String webUrl){
+        if(manager != null){
+            manager.registerMsReceiver(webUrl) ;
+        }
+    }
+
+}
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/msCenter/MsCenterUnitAdapter.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/msCenter/MsCenterUnitAdapter.java
new file mode 100644
index 0000000..d458763
--- /dev/null
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/msCenter/MsCenterUnitAdapter.java
@@ -0,0 +1,12 @@
+package com.dy.rtuMw.server.msCenter;
+
+import com.dy.common.mw.UnitAdapterInterface;
+
+/**
+ * @Author: liurunyu
+ * @Date: 2025/2/12 13:58
+ * @Description
+ */
+public interface MsCenterUnitAdapter extends UnitAdapterInterface {
+    MsCenterConfigVo getConfig();
+}
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/msCenter/MsObj.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/msCenter/MsObj.java
new file mode 100644
index 0000000..b1aa8cd
--- /dev/null
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/msCenter/MsObj.java
@@ -0,0 +1,12 @@
+package com.dy.rtuMw.server.msCenter;
+
+import com.alibaba.fastjson2.JSONObject;
+import com.dy.common.queue.NodeObj;
+
+/**
+ * @Author: liurunyu
+ * @Date: 2025/2/12 15:14
+ * @Description
+ */
+public class MsObj extends JSONObject implements NodeObj {
+}
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/msCenter/TestMsResource.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/msCenter/TestMsResource.java
new file mode 100644
index 0000000..5521116
--- /dev/null
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/msCenter/TestMsResource.java
@@ -0,0 +1,59 @@
+package com.dy.rtuMw.server.msCenter;
+
+import com.dy.common.util.DateTime;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+
+/**
+ * @Author: liurunyu
+ * @Date: 2025/2/12 15:35
+ * @Description
+ */
+//浣胯捣浣滅敤锛屾湰绫绘敞瑙Component锛屽苟鍦≒ipIrrMwRtuApplication娉ㄨВ@EnableScheduling
+@Component
+public class TestMsResource {
+
+    // 璁剧疆瀹氭椂鍗佺涓�娆�
+    @Scheduled(cron = "0/4 * * * * ?")
+    public void test1() throws Exception {
+        MsObj msObj = new MsObj() ;
+        msObj.put("name", "寮�闃�");
+        msObj.put("clientId", 2024090517284400002L);
+        msObj.put("clientName", "鐢颁粊鏄�");
+        msObj.put("clientAddress", "鍏冭皨鍘垮厓椹晣娓呭拰鏉戝浼氭尐閭f湜鏉�");
+        msObj.put("icCardNo", "123456789");
+        msObj.put("rtuAddr", "123456789");
+        msObj.put("intakeId", 2024090517395800007L);
+        msObj.put("dt", DateTime.yyyy_MM_dd_HH_mm_ss());
+        MsCenterUnit.getInstance().pushMs(msObj);
+    }
+
+
+    // 璁剧疆瀹氭椂鍗佺涓�娆�
+    @Scheduled(cron = "0/6 * * * * ?")
+    public void test2() throws Exception {
+        MsObj msObj = new MsObj() ;
+        msObj.put("name", "鍏抽榾");
+        msObj.put("clientId", 2024090517284400002L);
+        msObj.put("clientName", "鐢颁粊鏄�");
+        msObj.put("clientAddress", "鍏冭皨鍘垮厓椹晣娓呭拰鏉戝浼氭尐閭f湜鏉�");
+        msObj.put("icCardNo", "123456789");
+        msObj.put("rtuAddr", "123456789");
+        msObj.put("intakeId", 2024090517395800007L);
+        msObj.put("dt", DateTime.yyyy_MM_dd_HH_mm_ss());
+        MsCenterUnit.getInstance().pushMs(msObj);
+    }
+
+    // 璁剧疆瀹氭椂鍗佺涓�娆�
+    @Scheduled(cron = "0/10 * * * * ?")
+    public void test3() throws Exception {
+        MsObj msObj = new MsObj() ;
+        msObj.put("name", "鎶ヨ");
+        msObj.put("rtuAddr","123456789");
+        msObj.put("intakeId", 2024090517395800007L);
+        msObj.put("alarm", "娴侀噺璁℃晠闅滄姤璀︺�佹紡鎹熸姤璀�");
+        msObj.put("dt", DateTime.yyyy_MM_dd_HH_mm_ss());
+        MsCenterUnit.getInstance().pushMs(msObj);
+    }
+
+}
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/dbSv/DbSv.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/dbSv/DbSv.java
index fd7c0df..b2a6a43 100644
--- a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/dbSv/DbSv.java
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/dbSv/DbSv.java
@@ -98,6 +98,7 @@
                 vo = new SeClient() ;
                 vo.setId(Long.parseLong(map.get("clientId").toString()));
                 vo.setName(map.get("clientName").toString());
+                vo.setAddress(map.get("clientAddress").toString());
             }
         }
         return vo ;
@@ -116,6 +117,7 @@
                 vo = new SeClient() ;
                 vo.setId(Long.parseLong(map.get("clientId").toString()));
                 vo.setName(map.get("clientName").toString());
+                vo.setAddress(map.get("clientAddress").toString());
             }
         }
         return vo ;
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V1/TkDealAlarmStatus.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V1/TkDealAlarmStatus.java
index 354af9f..e83bb02 100644
--- a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V1/TkDealAlarmStatus.java
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V1/TkDealAlarmStatus.java
@@ -4,6 +4,8 @@
 import com.dy.pipIrrGlobal.pojoRm.RmAlarmStateHistory;
 import com.dy.rtuMw.server.ServerProperties;
 import com.dy.rtuMw.server.forMs.SendMsCache;
+import com.dy.rtuMw.server.msCenter.MsCenterUnit;
+import com.dy.rtuMw.server.msCenter.MsObj;
 import com.dy.rtuMw.server.rtuData.TaskSurpport;
 import com.dy.rtuMw.server.rtuData.dbSv.DbSv;
 import com.dy.common.mw.protocol.Data;
@@ -47,6 +49,7 @@
                             Object[] objs = this.getTaskResults(TkPreGenObjs.taskId);
                             DbSv sv = (DbSv) objs[0];
                             PrController controller = (PrController) objs[1];
+                            this.toMsCenter(controller, d.getRtuAddr(), dV1, dataCd81Vo.alarmVo, dataCd81Vo.stateVo);
                             this.saveOrUpdateLast(sv, controller, d.getRtuAddr(), dataCd81Vo.rtuDt, dV1, dataCd81Vo.alarmVo, dataCd81Vo.stateVo);
                             this.saveHistory(sv, controller, d.getRtuAddr(), dataCd81Vo.rtuDt, dV1, dataCd81Vo.alarmVo, dataCd81Vo.stateVo);
                             if(dataCd81Vo.stateVo != null && dataCd81Vo.stateVo.valveState != null && dataCd81Vo.stateVo.valveState.byteValue() == DataStateVo.ValveCloseState){
@@ -63,6 +66,7 @@
                             Object[] objs = this.getTaskResults(TkPreGenObjs.taskId);
                             DbSv sv = (DbSv) objs[0];
                             PrController controller = (PrController) objs[1];
+                            this.toMsCenter(controller, d.getRtuAddr(), dV1, dataCd84Vo.alarmVo, dataCd84Vo.stateVo);
                             this.saveOrUpdateLast(sv, controller, d.getRtuAddr(), dataCd84Vo.rtuDt, dV1, dataCd84Vo.alarmVo, dataCd84Vo.stateVo);
                             this.saveHistory(sv, controller, d.getRtuAddr(), dataCd84Vo.rtuDt, dV1, dataCd84Vo.alarmVo, dataCd84Vo.stateVo);
                             /** 闃�寮�宸ヤ綔鎶ワ紝闃�闂ㄧ姸鎬佷竴瀹氭槸鎵撳紑鐘舵�侊紝鎵�浠ヤ笉璁剧疆涓嬮潰鏁版嵁浠ュ鍚庣画浠诲姟璁剧疆铏氭嫙鍗$姸鎬�
@@ -80,6 +84,7 @@
                             Object[] objs = this.getTaskResults(TkPreGenObjs.taskId);
                             DbSv sv = (DbSv) objs[0];
                             PrController controller = (PrController) objs[1];
+                            this.toMsCenter(controller, d.getRtuAddr(), dV1, dataCdC0Vo.alarmVo, dataCdC0Vo.stateVo);
                             this.saveOrUpdateLast(sv, controller, d.getRtuAddr(), dataCdC0Vo.rtuDt, dV1, dataCdC0Vo.alarmVo, dataCdC0Vo.stateVo);
                             this.saveHistory(sv, controller, d.getRtuAddr(), dataCdC0Vo.rtuDt, dV1, dataCdC0Vo.alarmVo, dataCdC0Vo.stateVo);
                             if(dataCdC0Vo.stateVo != null && dataCdC0Vo.stateVo.valveState != null && dataCdC0Vo.stateVo.valveState.byteValue() == DataStateVo.ValveCloseState){
@@ -99,6 +104,27 @@
             }
         }
     }
+
+    /**
+     * 鎶ヨ鐘舵�佹暟鎹瓨鍏ユ秷鎭腑蹇�
+     * @param controller 鎺у埗鍣ㄥ璞�
+     * @param rtuAddr 鎺у埗鍣ㄥ湴鍧�
+     * @param dV1 鏁版嵁瀵硅薄
+     * @param alarmVo 鎶ヨ瀵硅薄
+     * @param stateVo 鐘舵�佸璞�
+     */
+    private void toMsCenter(PrController controller, String rtuAddr, DataV1 dV1, DataAlarmVo alarmVo, DataStateVo stateVo){
+        if(alarmVo != null && controller != null){
+            MsObj msObj = new MsObj() ;
+            msObj.put("name", "鎶ヨ");
+            msObj.put("rtuAddr", rtuAddr);
+            msObj.put("intakeId", controller.getIntakeId());
+            msObj.put("alarm", alarmVo.alarmContent());
+            msObj.put("dt", dV1.dt);
+            MsCenterUnit.getInstance().pushMs(msObj);
+        }
+    }
+
     /**
      * 淇濆瓨鎶ヨ鐘舵�佹渶鏂版暟鎹�
      * @param sv 鏈嶅姟
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V1/TkDealCloseValveReport.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V1/TkDealCloseValveReport.java
index dc02e7e..63ef718 100644
--- a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V1/TkDealCloseValveReport.java
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V1/TkDealCloseValveReport.java
@@ -8,6 +8,8 @@
 import com.dy.pipIrrGlobal.pojoRm.RmOpenCloseValveHistory;
 import com.dy.pipIrrGlobal.pojoRm.RmOpenCloseValveLast;
 import com.dy.pipIrrGlobal.pojoSe.SeClient;
+import com.dy.rtuMw.server.msCenter.MsCenterUnit;
+import com.dy.rtuMw.server.msCenter.MsObj;
 import com.dy.rtuMw.server.rtuData.TaskSurpport;
 import com.dy.rtuMw.server.rtuData.dbSv.DbSv;
 import org.apache.logging.log4j.LogManager;
@@ -43,6 +45,7 @@
             PrController controller = (PrController)objs[1] ;
             SeClient clientVo = (SeClient)objs[3] ;//杩欎釜鍊煎璞′腑鍙湁id鍜宯ame浼氭湁鍊�
             try{
+                this.toMsCenter(clientVo, controller, d.getRtuAddr(), dV1, (DataCd83CloseVo)cdObj) ;
                 this.doDeal(sv, clientVo, controller, d.getRtuAddr(), dV1, (DataCd83CloseVo)cdObj) ;
             }catch (Exception e){
                 log.error("淇濆瓨鎺у埗鍣ㄥ紑闃�涓婃姤鏃跺彂鐢熷紓甯�", e);
@@ -51,6 +54,29 @@
     }
 
     /**
+     * 鎶婂紑闃�娑堟伅瀛樺叆娑堟伅涓績
+     * @param clientVo
+     * @param controller
+     * @param rtuAddr
+     * @param dV1
+     * @param dataCd83CloseVo
+     */
+    private void toMsCenter(SeClient clientVo, PrController controller, String rtuAddr, DataV1 dV1, DataCd83CloseVo dataCd83CloseVo){
+        if(clientVo != null && controller != null){
+            MsObj msObj = new MsObj() ;
+            msObj.put("name", "鍏抽榾");
+            msObj.put("clientId", clientVo.getId());
+            msObj.put("clientName", clientVo.getName());
+            msObj.put("clientAddress", clientVo.getAddress());
+            msObj.put("icCardNo", dataCd83CloseVo.icCardNo);
+            msObj.put("rtuAddr", rtuAddr);
+            msObj.put("intakeId", controller.getIntakeId());
+            msObj.put("dt", dV1.dt);
+            MsCenterUnit.getInstance().pushMs(msObj);
+        }
+    }
+
+    /**
      * 淇濆瓨鏁版嵁
      * @param sv 鏈嶅姟
      * @param clientVo 鍐滄埛瀵硅薄锛堜笉涓虹┖鏃讹紝鍙湁id鍜宯ame鏈夊�硷級
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V1/TkDealOpenValveReport.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V1/TkDealOpenValveReport.java
index b4e39a7..0e8eb86 100644
--- a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V1/TkDealOpenValveReport.java
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V1/TkDealOpenValveReport.java
@@ -8,6 +8,8 @@
 import com.dy.pipIrrGlobal.pojoRm.RmOpenCloseValveHistory;
 import com.dy.pipIrrGlobal.pojoRm.RmOpenCloseValveLast;
 import com.dy.pipIrrGlobal.pojoSe.SeClient;
+import com.dy.rtuMw.server.msCenter.MsCenterUnit;
+import com.dy.rtuMw.server.msCenter.MsObj;
 import com.dy.rtuMw.server.rtuData.TaskSurpport;
 import com.dy.rtuMw.server.rtuData.dbSv.DbSv;
 import org.apache.logging.log4j.LogManager;
@@ -42,12 +44,37 @@
             PrController controller = (PrController)objs[1] ;
             SeClient clientVo = (SeClient)objs[3] ;//杩欎釜鍊煎璞′腑鍙湁id鍜宯ame浼氭湁鍊�
             try{
+                this.toMsCenter(clientVo, controller, d.getRtuAddr(), dV1, (DataCd83OpenVo)cdObj) ;
                 this.doDeal(sv, clientVo, controller, d.getRtuAddr(), dV1, (DataCd83OpenVo)cdObj) ;
             }catch (Exception e){
                 log.error("淇濆瓨鎺у埗鍣ㄥ紑闃�涓婃姤鏃跺彂鐢熷紓甯�", e);
             }
         }
     }
+
+    /**
+     * 鎶婂紑闃�娑堟伅瀛樺叆娑堟伅涓績
+     * @param clientVo
+     * @param controller
+     * @param rtuAddr
+     * @param dV1
+     * @param dataCd83OpenVo
+     */
+    private void toMsCenter(SeClient clientVo, PrController controller, String rtuAddr, DataV1 dV1, DataCd83OpenVo dataCd83OpenVo){
+        if(clientVo != null && controller != null){
+            MsObj msObj = new MsObj() ;
+            msObj.put("name", "寮�闃�");
+            msObj.put("clientId", clientVo.getId());
+            msObj.put("clientName", clientVo.getName());
+            msObj.put("clientAddress", clientVo.getAddress());
+            msObj.put("icCardNo", dataCd83OpenVo.icCardNo);
+            msObj.put("rtuAddr", rtuAddr);
+            msObj.put("intakeId", controller.getIntakeId());
+            msObj.put("dt", dV1.dt);
+            MsCenterUnit.getInstance().pushMs(msObj);
+        }
+    }
+
     /**
      * 涓氬姟澶勭悊
      * @param sv 鏈嶅姟
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V2/TkDealAlarmStatusV2.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V2/TkDealAlarmStatusV2.java
index 72a105e..572ec61 100644
--- a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V2/TkDealAlarmStatusV2.java
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V2/TkDealAlarmStatusV2.java
@@ -9,9 +9,10 @@
 import com.dy.pipIrrGlobal.pojoRm.RmAlarmStateLast;
 import com.dy.rtuMw.server.ServerProperties;
 import com.dy.rtuMw.server.forMs.SendMsCache;
+import com.dy.rtuMw.server.msCenter.MsCenterUnit;
+import com.dy.rtuMw.server.msCenter.MsObj;
 import com.dy.rtuMw.server.rtuData.TaskSurpport;
 import com.dy.rtuMw.server.rtuData.dbSv.DbSv;
-import com.dy.rtuMw.server.rtuData.p206V1.TkPreGenObjs;
 import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
 
@@ -45,11 +46,12 @@
                         //蹇冭烦鏁版嵁锛屾牴鎹换鍔kDealHearBeatV2,杩欓噷鏀跺埌鐨勫績璺虫椂锛屼竴瀹氭槸鎶ヨ鎴栫姸鎬佸彂鐢熶簡鏀瑰彉
                         DataCd02Vo dataCd02Vo = (DataCd02Vo)cdObj ;
                         if (dataCd02Vo.alarmVo != null || dataCd02Vo.stateVo != null) {
-                            Object[] objs = this.getTaskResults(TkPreGenObjs.taskId);
+                            Object[] objs = this.getTaskResults(TkPreGenObjsV2.taskId);
                             DbSv sv = (DbSv) objs[0];
                             PrController controller = (PrController) objs[1];
                             //蹇冭烦娌℃湁鏃堕挓锛屽苟涓擱TU閽堝蹇冭烦鏁版嵁鐨勬満鍒舵槸涓婃姤涓嶆垚鍔熶笉閲嶅彂锛屾墍浠ユ椂闂撮噰鐢ㄦ湰鍦版椂闂�
                             String now = DateTime.yyyy_MM_dd_HH_mm_ss() ;
+                            this.toMsCenter(controller, d.getRtuAddr(), dV2, dataCd02Vo.alarmVo, dataCd02Vo.stateVo);
                             this.saveOrUpdateLast(sv, controller, d.getRtuAddr(), now, dV2, dataCd02Vo.alarmVo, dataCd02Vo.stateVo);
                             this.saveHistory(sv, controller, d.getRtuAddr(), now, dV2, dataCd02Vo.alarmVo, dataCd02Vo.stateVo);
                             if(dataCd02Vo.stateVo != null && dataCd02Vo.stateVo.valveState != null && dataCd02Vo.stateVo.valveState.byteValue() == DataStateVo.ValveCloseState){
@@ -65,6 +67,7 @@
                             Object[] objs = this.getTaskResults(TkPreGenObjsV2.taskId);
                             DbSv sv = (DbSv) objs[0];
                             PrController controller = (PrController) objs[1];
+                            this.toMsCenter(controller, d.getRtuAddr(), dV2, dataCd81Vo.alarmVo, dataCd81Vo.stateVo);
                             this.saveOrUpdateLast(sv, controller, d.getRtuAddr(), dataCd81Vo.rtuDt, dV2, dataCd81Vo.alarmVo, dataCd81Vo.stateVo);
                             this.saveHistory(sv, controller, d.getRtuAddr(), dataCd81Vo.rtuDt, dV2, dataCd81Vo.alarmVo, dataCd81Vo.stateVo);
                             if(dataCd81Vo.stateVo != null && dataCd81Vo.stateVo.valveState != null && dataCd81Vo.stateVo.valveState.byteValue() == DataStateVo.ValveCloseState){
@@ -80,6 +83,7 @@
                             Object[] objs = this.getTaskResults(TkPreGenObjsV2.taskId);
                             DbSv sv = (DbSv) objs[0];
                             PrController controller = (PrController) objs[1];
+                            this.toMsCenter(controller, d.getRtuAddr(), dV2, dataCd84Vo.alarmVo, dataCd84Vo.stateVo);
                             this.saveOrUpdateLast(sv, controller, d.getRtuAddr(), dataCd84Vo.rtuDt, dV2, dataCd84Vo.alarmVo, dataCd84Vo.stateVo);
                             this.saveHistory(sv, controller, d.getRtuAddr(), dataCd84Vo.rtuDt, dV2, dataCd84Vo.alarmVo, dataCd84Vo.stateVo);
                             /** 闃�寮�宸ヤ綔鎶ワ紝闃�闂ㄧ姸鎬佷竴瀹氭槸鎵撳紑鐘舵�侊紝鎵�浠ヤ笉璁剧疆涓嬮潰鏁版嵁浠ュ鍚庣画浠诲姟璁剧疆铏氭嫙鍗$姸鎬�
@@ -96,6 +100,7 @@
                             Object[] objs = this.getTaskResults(TkPreGenObjsV2.taskId);
                             DbSv sv = (DbSv) objs[0];
                             PrController controller = (PrController) objs[1];
+                            this.toMsCenter(controller, d.getRtuAddr(), dV2, dataCdC0Vo.alarmVo, dataCdC0Vo.stateVo);
                             this.saveOrUpdateLast(sv, controller, d.getRtuAddr(), dataCdC0Vo.rtuDt, dV2, dataCdC0Vo.alarmVo, dataCdC0Vo.stateVo);
                             this.saveHistory(sv, controller, d.getRtuAddr(), dataCdC0Vo.rtuDt, dV2, dataCdC0Vo.alarmVo, dataCdC0Vo.stateVo);
                             if(dataCdC0Vo.stateVo != null && dataCdC0Vo.stateVo.valveState != null && dataCdC0Vo.stateVo.valveState.byteValue() == DataStateVo.ValveCloseState){
@@ -111,6 +116,26 @@
             }
         }
     }
+
+    /**
+     * 鎶ヨ鐘舵�佹暟鎹瓨鍏ユ秷鎭腑蹇�
+     * @param controller 鎺у埗鍣ㄥ璞�
+     * @param rtuAddr 鎺у埗鍣ㄥ湴鍧�
+     * @param dV12 鏁版嵁瀵硅薄
+     * @param alarmVo 鎶ヨ瀵硅薄
+     * @param stateVo 鐘舵�佸璞�
+     */
+    private void toMsCenter(PrController controller, String rtuAddr, DataV2 dV12, DataAlarmVo alarmVo, DataStateVo stateVo){
+        if(alarmVo != null && controller != null){
+            MsObj msObj = new MsObj() ;
+            msObj.put("name", "鎶ヨ");
+            msObj.put("rtuAddr", rtuAddr);
+            msObj.put("intakeId", controller.getIntakeId());
+            msObj.put("alarm", alarmVo.alarmContent());
+            msObj.put("dt", dV12.dt);
+            MsCenterUnit.getInstance().pushMs(msObj);
+        }
+    }
     /**
      * 淇濆瓨鎶ヨ鐘舵�佹渶鏂版暟鎹�
      * @param sv 鏈嶅姟
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V2/TkDealCloseValveReportV2.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V2/TkDealCloseValveReportV2.java
index f2f2919..18ee1ca 100644
--- a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V2/TkDealCloseValveReportV2.java
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V2/TkDealCloseValveReportV2.java
@@ -8,6 +8,8 @@
 import com.dy.pipIrrGlobal.pojoRm.RmOpenCloseValveHistory;
 import com.dy.pipIrrGlobal.pojoRm.RmOpenCloseValveLast;
 import com.dy.pipIrrGlobal.pojoSe.SeClient;
+import com.dy.rtuMw.server.msCenter.MsCenterUnit;
+import com.dy.rtuMw.server.msCenter.MsObj;
 import com.dy.rtuMw.server.rtuData.TaskSurpport;
 import com.dy.rtuMw.server.rtuData.dbSv.DbSv;
 import org.apache.logging.log4j.LogManager;
@@ -44,6 +46,7 @@
             PrController controller = (PrController)objs[1] ;
             SeClient clientVo = (SeClient)objs[3] ;//杩欎釜鍊煎璞′腑鍙湁id鍜宯ame浼氭湁鍊�
             try{
+                this.toMsCenter(clientVo, controller, d.getRtuAddr(), dV2, (DataCd83CloseVo)cdObj) ;
                 this.doDeal(sv, clientVo, controller, d.getRtuAddr(), dV2, (DataCd83CloseVo)cdObj) ;
             }catch (Exception e){
                 log.error("淇濆瓨鎺у埗鍣ㄥ紑闃�涓婃姤鏃跺彂鐢熷紓甯�", e);
@@ -52,6 +55,28 @@
     }
 
     /**
+     * 鎶婂紑闃�娑堟伅瀛樺叆娑堟伅涓績
+     * @param clientVo
+     * @param controller
+     * @param rtuAddr
+     * @param dV2
+     * @param dataCd83CloseVo
+     */
+    private void toMsCenter(SeClient clientVo, PrController controller, String rtuAddr, DataV2 dV2, DataCd83CloseVo dataCd83CloseVo){
+        if(clientVo != null && controller != null){
+            MsObj msObj = new MsObj() ;
+            msObj.put("name", "鍏抽榾");
+            msObj.put("clientId", clientVo.getId());
+            msObj.put("clientName", clientVo.getName());
+            msObj.put("clientAddress", clientVo.getAddress());
+            msObj.put("icCardNo", dataCd83CloseVo.icCardNo);
+            msObj.put("rtuAddr", rtuAddr);
+            msObj.put("intakeId", controller.getIntakeId());
+            msObj.put("dt", dV2.dt);
+            MsCenterUnit.getInstance().pushMs(msObj);
+        }
+    }
+    /**
      * 淇濆瓨鏁版嵁
      * @param sv 鏈嶅姟
      * @param clientVo 鍐滄埛瀵硅薄锛堜笉涓虹┖鏃讹紝鍙湁id鍜宯ame鏈夊�硷級
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V2/TkDealOpenValveReportV2.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V2/TkDealOpenValveReportV2.java
index 12dc2cf..6d5c05b 100644
--- a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V2/TkDealOpenValveReportV2.java
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V2/TkDealOpenValveReportV2.java
@@ -8,6 +8,8 @@
 import com.dy.pipIrrGlobal.pojoRm.RmOpenCloseValveHistory;
 import com.dy.pipIrrGlobal.pojoRm.RmOpenCloseValveLast;
 import com.dy.pipIrrGlobal.pojoSe.SeClient;
+import com.dy.rtuMw.server.msCenter.MsCenterUnit;
+import com.dy.rtuMw.server.msCenter.MsObj;
 import com.dy.rtuMw.server.rtuData.TaskSurpport;
 import com.dy.rtuMw.server.rtuData.dbSv.DbSv;
 import org.apache.logging.log4j.LogManager;
@@ -42,12 +44,36 @@
             PrController controller = (PrController)objs[1] ;
             SeClient clientVo = (SeClient)objs[3] ;//杩欎釜鍊煎璞′腑鍙湁id鍜宯ame浼氭湁鍊�
             try{
+                this.toMsCenter(clientVo, controller, d.getRtuAddr(), dV2, (DataCd83OpenVo)cdObj) ;
                 this.doDeal(sv, clientVo, controller, d.getRtuAddr(), dV2, (DataCd83OpenVo)cdObj) ;
             }catch (Exception e){
                 log.error("淇濆瓨鎺у埗鍣ㄥ紑闃�涓婃姤鏃跺彂鐢熷紓甯�", e);
             }
         }
     }
+
+    /**
+     * 鎶婂紑闃�娑堟伅瀛樺叆娑堟伅涓績
+     * @param clientVo
+     * @param controller
+     * @param rtuAddr
+     * @param dV2
+     * @param dataCd83OpenVo
+     */
+    private void toMsCenter(SeClient clientVo, PrController controller, String rtuAddr, DataV2 dV2, DataCd83OpenVo dataCd83OpenVo){
+        if(clientVo != null && controller != null){
+            MsObj msObj = new MsObj() ;
+            msObj.put("name", "寮�闃�");
+            msObj.put("clientId", clientVo.getId());
+            msObj.put("clientName", clientVo.getName());
+            msObj.put("clientAddress", clientVo.getAddress());
+            msObj.put("icCardNo", dataCd83OpenVo.icCardNo);
+            msObj.put("rtuAddr", rtuAddr);
+            msObj.put("intakeId", controller.getIntakeId());
+            msObj.put("dt", dV2.dt);
+            MsCenterUnit.getInstance().pushMs(msObj);
+        }
+    }
     /**
      * 涓氬姟澶勭悊
      * @param sv 鏈嶅姟
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/tasks/RtuUpTask.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/tasks/RtuUpTask.java
index 387bb42..c3dbd33 100644
--- a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/tasks/RtuUpTask.java
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/tasks/RtuUpTask.java
@@ -179,7 +179,14 @@
 		}else{
 			MidResult[] midRs = dri.parseData(ServerProperties.isLowPower, rtuAddrAtHead, upBuf, upHex, new DriverParserDataCallback(){
 				@Override
-				public void callback(String rtuAddrAtHead, String code, String codeName, String upHex, Boolean reportOrResponse_trueOrFalse, boolean parseFail, String rtuAddrInData) {
+				public void callback(String rtuAddrAtHead,
+									 String code,
+									 String codeName,
+									 String upHex,
+									 Boolean reportOrResponse_trueOrFalse,
+									 boolean parseFail,
+									 String rtuAddrInData,
+									 Object ...objs) {
 					//鏇存柊缁堢鐘舵��
 					if(rtuAddrInData != null && !rtuAddrInData.equals(rtuAddrAtHead)){
 						//鏁版嵁澶翠腑鐨凴TU鍦板潃涓庢暟鎹腑鐨凴TU鍦板潃涓嶄竴鑷达紝鏇存崲鎴愭暟鎹腑鐨凴TU鍦板潃
@@ -230,7 +237,7 @@
 						@Override
 						public void exception(Exception e) {
 						}
-					});
+					}, objs);
 				}
 			}) ;
 			if(midRs != null){
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/upgrade/Test.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/upgrade/Test.java
new file mode 100644
index 0000000..a9452a1
--- /dev/null
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/upgrade/Test.java
@@ -0,0 +1,26 @@
+package com.dy.rtuMw.server.upgrade;
+
+import com.dy.common.mw.protocol.Data;
+import com.dy.common.mw.protocol.MidResult;
+import com.dy.common.mw.protocol.MidResultFromRtu;
+
+import java.util.Date;
+
+/**
+ * @Author: liurunyu
+ * @Date: 2025/1/23 11:19
+ * @Description
+ */
+public class Test {
+    public static void main(String[] args) {
+        Date dt = new Date() ;
+        test(dt);
+    }
+
+    private static void test(Object ...objects){
+        if(objects !=null && objects.length > 0){
+            Date dt = (Date)objects[0];
+            dt = null;
+        }
+    }
+}
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/upgrade/UpgradeManager.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/upgrade/UpgradeManager.java
index 021c224..9caed79 100644
--- a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/upgrade/UpgradeManager.java
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/upgrade/UpgradeManager.java
@@ -120,9 +120,9 @@
      * @param protocolVersion 涓婅鏁版嵁瀵瑰簲鐨勫崗璁増鏈彿
      * @param callbackCom 鍥炶皟鍑芥暟锛屽鐞嗕笅琛屽懡浠�
      */
-    public void trigger(String rtuAddr, String code, String protocolName, Short protocolVersion, Callback callbackCom){
+    public void trigger(String rtuAddr, String code, String protocolName, Short protocolVersion, Callback callbackCom, Object ...objects){
         if(task != null && !task.taskIsOver){
-            this.task.trigger(rtuAddr, code, protocolName, protocolVersion, callbackCom);
+            this.task.trigger(rtuAddr, code, protocolName, protocolVersion, callbackCom, objects);
         }
     }
 
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/upgrade/UpgradeRtuDev.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/upgrade/UpgradeRtuDev.java
index 6b12947..d9dda58 100644
--- a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/upgrade/UpgradeRtuDev.java
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/upgrade/UpgradeRtuDev.java
@@ -3,6 +3,9 @@
 import com.alibaba.fastjson2.annotation.JSONField;
 import com.dy.common.mw.protocol.Command;
 import com.dy.common.mw.protocol.CommandType;
+import com.dy.common.mw.protocol.MidResult;
+import com.dy.common.mw.protocol.MidResultFromRtu;
+import com.dy.common.mw.protocol.p206V1.upVos.DataCd960XVo;
 import com.dy.common.softUpgrade.Com1601Vo;
 import com.dy.common.softUpgrade.state.UpgradeRtu;
 import com.dy.common.softUpgrade.state.UpgradeTaskVo;
@@ -64,9 +67,10 @@
      * @param code
      * @param softData
      * @param callbackCom
+     * @param objects
      */
     @Override
-    public void trigger(String code, String protocolName, Short protocolVersion, byte[][] softData, Callback callbackCom){
+    public void trigger(String code, String protocolName, Short protocolVersion, byte[][] softData, Callback callbackCom, Object ...objects){
         if(!this.isOver){
             //鍗囩骇鏈畬鎴�
             if(this.state == STATE_OFFLINE || this.state == STATE_UNSTART){
@@ -95,7 +99,7 @@
                     }
                 }else if(code.equals(UpgradeCode.cd_9603)){
                     //涓嬪彂鏍¢獙杩斿洖
-                    this.setStateAtReceiveRes9603Time() ;
+                    this.setStateAtReceiveRes9603Time(objects) ;
                     callbackCom.call(createCommand1600(protocolName, protocolVersion));//涓嬪彂澶嶄綅鎸囦护锛屾鎸囦护鏃犲簲绛�
                 }else{
                     //褰撳墠鏄崌绾т腑鐘舵�侊紝骞朵笖鍗囩骇鏈畬鎴愶紝鏀跺埌浜嗛潪960X绯诲垪鍔熻兘鐮侊紝鍒欏崌绾уけ璐�
@@ -152,9 +156,27 @@
     /**
      * 璁剧疆1603鎸囦护杩斿洖鏃跺埢鐨勭姸鎬�
      */
-    private void setStateAtReceiveRes9603Time(){
+    private void setStateAtReceiveRes9603Time(Object ...objects){
         this.isOver = true ;//鍗囩骇瀹屾垚
         this.state = STATE_SUCCESS ;
+        if(objects != null && objects.length > 0){
+            if(objects[0] instanceof com.dy.common.mw.protocol.p206V1.upVos.DataCd960XVo){
+                com.dy.common.mw.protocol.p206V1.upVos.DataCd960XVo vo = (com.dy.common.mw.protocol.p206V1.upVos.DataCd960XVo)objects[0] ;
+                if(vo != null && !vo.success){
+                    this.state = STATE_FAILRTU ;
+                }
+            } else if(objects[0] instanceof com.dy.common.mw.protocol.p206V2.upVos.DataCd960XVo){
+                com.dy.common.mw.protocol.p206V2.upVos.DataCd960XVo vo = (com.dy.common.mw.protocol.p206V2.upVos.DataCd960XVo)objects[0] ;
+                if(vo != null && !vo.success){
+                    this.state = STATE_FAILRTU ;
+                }
+            } else if(objects[0] instanceof com.dy.common.mw.protocol.p206V202404.upVos.DataCd960XVo){
+                com.dy.common.mw.protocol.p206V202404.upVos.DataCd960XVo vo = (com.dy.common.mw.protocol.p206V202404.upVos.DataCd960XVo)objects[0] ;
+                if(vo != null && !vo.success){
+                    this.state = STATE_FAILRTU ;
+                }
+            }
+        }
         this.lastDownDt = DateTime.yyyy_MM_dd_HH_mm_ss() ;
         this.lastDownDtAt = System.currentTimeMillis() ;
     }
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/upgrade/UpgradeTask.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/upgrade/UpgradeTask.java
index 587b457..7c61420 100644
--- a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/upgrade/UpgradeTask.java
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/upgrade/UpgradeTask.java
@@ -134,7 +134,7 @@
      * @param code
      * @param callbackCom
      */
-    public void trigger(String rtuAddr, String code, String protocolName, Short protocolVersion, Callback callbackCom){
+    public void trigger(String rtuAddr, String code, String protocolName, Short protocolVersion, Callback callbackCom, Object ...objects){
         if(this.upgradeRtus != null && this.upgradeRtus.size() > 0
                 && this.taskVo.rtuAddrList != null && this.taskVo.rtuAddrList.size() > 0){
             UpgradeRtu ugRtu = this.upgradeRtus.get(rtuAddr) ;
@@ -178,7 +178,7 @@
                             //鍒濆鎬侊紝璇存槑鍗囩骇浠诲姟璁剧疆浠ユ潵锛岃RTU绗竴娆′笂琛屾暟鎹�
                             if(this.curUgRunningRtuTotal <= UpgradeUnit.confVo.ugMaxRtuAtOnce){
                                 //褰撳墠姝e湪鍗囩骇鐨凴TU鏁伴噺杩樻湭鍙楅檺
-                                ugRtu.trigger(code, protocolName, protocolVersion, this.softFileDataGrp, callbackCom) ;
+                                ugRtu.trigger(code, protocolName, protocolVersion, this.softFileDataGrp, callbackCom, objects) ;
                             }else{
                                 //鍚屾椂鍗囩骇鐨凴TU鏁伴噺鍙楅檺锛岀瓑寰呬笅娆℃満浼�
                                 //浣嗗厛琛ㄦ槑涓�涓嬬姸鎬�
@@ -189,18 +189,18 @@
                             //鏍规嵁涓婇潰閫昏緫锛� 璇存槑蹇呯劧鍦ㄧ嚎浜�
                             if(this.curUgRunningRtuTotal <= UpgradeUnit.confVo.ugMaxRtuAtOnce){
                                 //褰撳墠姝e湪鍗囩骇鐨凴TU鏁伴噺杩樻湭鍙楅檺
-                                ugRtu.trigger(code, protocolName, protocolVersion, this.softFileDataGrp, callbackCom) ;
+                                ugRtu.trigger(code, protocolName, protocolVersion, this.softFileDataGrp, callbackCom, objects) ;
                             }else{
                                 //鍚屾椂鍗囩骇鐨凴TU鏁伴噺鍙楅檺锛岀瓑寰呬笅娆℃満浼�
                                 return ;
                             }
                         }else{
                             //RTU宸茬粡澶勪簬鍗囩骇杩囩▼涓�
-                            ugRtu.trigger(code, protocolName, protocolVersion, this.softFileDataGrp, callbackCom) ;
+                            ugRtu.trigger(code, protocolName, protocolVersion, this.softFileDataGrp, callbackCom, objects) ;
                         }
                     }else{
                         //娌℃湁璁剧疆鍚屾椂鍗囩骇鐨凴TU鏈�澶ф暟閲忕殑闄愬埗
-                         ugRtu.trigger(code, protocolName, protocolVersion, this.softFileDataGrp, callbackCom) ;
+                         ugRtu.trigger(code, protocolName, protocolVersion, this.softFileDataGrp, callbackCom, objects) ;
                     }
                 }
             }
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/upgrade/UpgradeUnit.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/upgrade/UpgradeUnit.java
index c1f02d0..3abc7b6 100644
--- a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/upgrade/UpgradeUnit.java
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/upgrade/UpgradeUnit.java
@@ -39,7 +39,7 @@
     }
 
     /**
-     * 鍒濆鍖栦笂琛屾暟鎹鐞嗕换鍔℃睜
+     * 鍒濆鍖�
      */
     @Override
     public void start(UnitCallbackInterface callback) throws Exception {
@@ -91,9 +91,9 @@
      * @param code
      * @param callback
      */
-    public void trigger(String rtuAddr, String code, String protocolName, Short protocolVersion, Callback callback){
+    public void trigger(String rtuAddr, String code, String protocolName, Short protocolVersion, Callback callback, Object ...objects){
         if(manager != null ){
-            manager.trigger(rtuAddr, code, protocolName, protocolVersion, callback);
+            manager.trigger(rtuAddr, code, protocolName, protocolVersion, callback, objects);
         }
     }
 
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/web/com/CommandCtrl.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/web/com/CommandCtrl.java
index b96b485..f50db60 100644
--- a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/web/com/CommandCtrl.java
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/web/com/CommandCtrl.java
@@ -7,6 +7,7 @@
 import com.dy.rtuMw.server.forTcp.TcpSessionCache;
 import com.dy.rtuMw.server.local.CommandInnerDeaLer;
 import com.dy.rtuMw.server.local.ReturnCommand;
+import com.dy.rtuMw.server.msCenter.MsCenterUnit;
 import com.dy.rtuMw.server.tasks.WebDownComTask;
 import com.dy.common.mw.core.CoreUnit;
 import com.dy.common.mw.protocol.Command;
@@ -144,6 +145,24 @@
             return BaseResponseUtils.buildSuccess(list);
         }
     }
+
+
+    /**
+     * 娉ㄥ唽娑堟伅鎺ユ敹鑰�
+     * @param msReceiverWebUrl 娑堟伅鎺ユ敹鑰厀eb http post url
+     * @return
+     */
+    @GetMapping("/registerMsReceiverWebUrl")
+    public BaseResponse<Boolean> registerMsReceiverWebUrl(String msReceiverWebUrl){
+        try{
+            MsCenterUnit.getInstance().registerMsReceiver(msReceiverWebUrl);
+        }catch (Exception e){
+            log.error("娉ㄥ唽娑堟伅鎺ユ敹鑰呮椂鍙戠敓寮傚父", e);
+            return BaseResponseUtils.buildError("娉ㄥ唽娑堟伅鎺ユ敹鑰呮椂鍙戠敓寮傚父" + (e.getMessage() == null?"":("锛�" + e.getMessage())));
+        }
+        return BaseResponseUtils.buildSuccess(true);
+    }
+
     /**
      * 鎺ユ敹web绯荤粺鍙戞潵鍗囩骇浠诲姟
      * @param vo
diff --git "a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/config\050mj\346\242\205\346\261\237\051.xml" "b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/config\050mj\346\242\205\346\261\237\051.xml"
index d0d32a8..ff21787 100644
--- "a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/config\050mj\346\242\205\346\261\237\051.xml"
+++ "b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/config\050mj\346\242\205\346\261\237\051.xml"
@@ -56,6 +56,14 @@
 			synchroRtuClockTimepieces="300000"
 	/>
 
+	<!-- RTU 娑堟伅涓績
+	enable: 妯″潡鏄惁鍚姩
+	notifyInterval: 娑堟伅閫氱煡闂撮殧锛堢锛�
+	-->
+	<msCenter enable="true"
+			  notifyInterval="5"
+	/>
+
 	<!-- RTU 杞欢鍗囩骇
 	enable: 妯″潡鏄惁鍚姩
 	openNoUpgrade: 闃�寮�锛堟车寮�锛変笉鎵ц鍗囩骇
diff --git "a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/config\050mq\346\260\221\345\213\244\051.xml" "b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/config\050mq\346\260\221\345\213\244\051.xml"
index 0b20023..933d74e 100644
--- "a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/config\050mq\346\260\221\345\213\244\051.xml"
+++ "b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/config\050mq\346\260\221\345\213\244\051.xml"
@@ -56,6 +56,14 @@
 			synchroRtuClockTimepieces="300000"
 	/>
 
+	<!-- RTU 娑堟伅涓績
+	enable: 妯″潡鏄惁鍚姩
+	notifyInterval: 娑堟伅閫氱煡闂撮殧锛堢锛�
+	-->
+	<msCenter enable="true"
+			  notifyInterval="5"
+	/>
+
 	<!-- RTU 杞欢鍗囩骇
 	enable: 妯″潡鏄惁鍚姩
 	openNoUpgrade: 闃�寮�锛堟车寮�锛変笉鎵ц鍗囩骇
diff --git "a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/config\050sp\346\262\231\347\233\230\051.xml" "b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/config\050sp\346\262\231\347\233\230\051.xml"
index ee8e0ee..9c148d8 100644
--- "a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/config\050sp\346\262\231\347\233\230\051.xml"
+++ "b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/config\050sp\346\262\231\347\233\230\051.xml"
@@ -56,6 +56,14 @@
 			synchroRtuClockTimepieces="300000"
 	/>
 
+	<!-- RTU 娑堟伅涓績
+	enable: 妯″潡鏄惁鍚姩
+	notifyInterval: 娑堟伅閫氱煡闂撮殧锛堢锛�
+	-->
+	<msCenter enable="true"
+			  notifyInterval="5"
+	/>
+
 	<!-- RTU 杞欢鍗囩骇
 	enable: 妯″潡鏄惁鍚姩
 	openNoUpgrade: 闃�寮�锛堟车寮�锛変笉鎵ц鍗囩骇
diff --git "a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/config\050test\346\265\213\350\257\225\051.xml" "b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/config\050test\346\265\213\350\257\225\051.xml"
index cd60a61..5b08ff2 100644
--- "a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/config\050test\346\265\213\350\257\225\051.xml"
+++ "b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/config\050test\346\265\213\350\257\225\051.xml"
@@ -56,6 +56,14 @@
 			synchroRtuClockTimepieces="300000"
 	/>
 
+	<!-- RTU 娑堟伅涓績
+	enable: 妯″潡鏄惁鍚姩
+	notifyInterval: 娑堟伅閫氱煡闂撮殧锛堢锛�
+	-->
+	<msCenter enable="true"
+			  notifyInterval="5"
+	/>
+
 	<!-- RTU 杞欢鍗囩骇
 	enable: 妯″潡鏄惁鍚姩
 	openNoUpgrade: 闃�寮�锛堟车寮�锛変笉鎵ц鍗囩骇
diff --git "a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/config\050ym\345\205\203\350\260\213\051.xml" "b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/config\050ym\345\205\203\350\260\213\051.xml"
index d2a18e5..d8800f8 100644
--- "a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/config\050ym\345\205\203\350\260\213\051.xml"
+++ "b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/config\050ym\345\205\203\350\260\213\051.xml"
@@ -56,6 +56,14 @@
 			synchroRtuClockTimepieces="300000"
 	/>
 
+	<!-- RTU 娑堟伅涓績
+	enable: 妯″潡鏄惁鍚姩
+	notifyInterval: 娑堟伅閫氱煡闂撮殧锛堢锛�
+	-->
+	<msCenter enable="true"
+			  notifyInterval="5"
+	/>
+
 	<!-- RTU 杞欢鍗囩骇
 	enable: 妯″潡鏄惁鍚姩
 	openNoUpgrade: 闃�寮�锛堟车寮�锛変笉鎵ц鍗囩骇
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/config.xml b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/config.xml
index d2a18e5..d8800f8 100644
--- a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/config.xml
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/config.xml
@@ -56,6 +56,14 @@
 			synchroRtuClockTimepieces="300000"
 	/>
 
+	<!-- RTU 娑堟伅涓績
+	enable: 妯″潡鏄惁鍚姩
+	notifyInterval: 娑堟伅閫氱煡闂撮殧锛堢锛�
+	-->
+	<msCenter enable="true"
+			  notifyInterval="5"
+	/>
+
 	<!-- RTU 杞欢鍗囩骇
 	enable: 妯″潡鏄惁鍚姩
 	openNoUpgrade: 闃�寮�锛堟车寮�锛変笉鎵ц鍗囩骇
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-app/src/main/java/com/dy/pipIrrApp/workOrder/WorkOrderCtrl.java b/pipIrr-platform/pipIrr-web/pipIrr-web-app/src/main/java/com/dy/pipIrrApp/workOrder/WorkOrderCtrl.java
index dae2151..3f7888a 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-app/src/main/java/com/dy/pipIrrApp/workOrder/WorkOrderCtrl.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-app/src/main/java/com/dy/pipIrrApp/workOrder/WorkOrderCtrl.java
@@ -241,8 +241,8 @@
     @SsoAop()
     public BaseResponse<VoProcessingResult> getProResult(@RequestParam("proResultId") Long proResultId) {
         try {
-            String  aa = JSON.toJSONString(workOrderSv.getProResultById(proResultId));
-            System.out.println(aa);
+            //String  aa = JSON.toJSONString(workOrderSv.getProResultById(proResultId));
+            //System.out.println(aa);
             return BaseResponseUtils.buildSuccess(workOrderSv.getProResultById(proResultId));
         } catch (Exception e) {
             log.error("鑾峰彇澶勭悊缁撴灉璇︽儏寮傚父", e);
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-app/src/main/java/com/dy/pipIrrApp/workOrder/WorkOrderSv.java b/pipIrr-platform/pipIrr-web/pipIrr-web-app/src/main/java/com/dy/pipIrrApp/workOrder/WorkOrderSv.java
index 3b1c0c4..d01927a 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-app/src/main/java/com/dy/pipIrrApp/workOrder/WorkOrderSv.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-app/src/main/java/com/dy/pipIrrApp/workOrder/WorkOrderSv.java
@@ -2,6 +2,8 @@
 
 import com.alibaba.fastjson2.JSON;
 import com.alibaba.fastjson2.JSONArray;
+import com.alibaba.fastjson2.JSONObject;
+import com.dy.common.util.NumUtil;
 import com.dy.common.webUtil.QueryResultVo;
 import com.dy.pipIrrApp.workOrder.qo.QoWorkOrder;
 import com.dy.pipIrrGlobal.daoBa.BaUserMapper;
@@ -9,6 +11,8 @@
 import com.dy.pipIrrGlobal.daoOp.OpeProcessingResultMapper;
 import com.dy.pipIrrGlobal.daoOp.OpeTaskTypeMapper;
 import com.dy.pipIrrGlobal.daoOp.OpeWorkOrderMapper;
+import com.dy.pipIrrGlobal.dyFile.FileOperate;
+import com.dy.pipIrrGlobal.dyFile.FileRestVo;
 import com.dy.pipIrrGlobal.pojoOp.OpeApproveResult;
 import com.dy.pipIrrGlobal.pojoOp.OpeProcessingResult;
 import com.dy.pipIrrGlobal.pojoOp.OpeWorkOrder;
@@ -21,6 +25,7 @@
 import org.apache.dubbo.common.utils.PojoUtils;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 
 import java.util.Date;
@@ -53,6 +58,33 @@
     @Autowired
     private BaUserMapper baUserMapper;
 
+    @Value("${dy.webFile.fmUrl}")
+    private String fmUrl ;
+
+    @Autowired
+    private FileOperate fileOp ;
+
+    private void dealWebFilePath(JSONArray jsonArray, boolean hasZipFile, boolean isVideo){
+        for (Object obj : jsonArray){
+            if(obj instanceof JSONObject){
+                JSONObject jsonObject = (JSONObject) obj;
+                Object hashObj = jsonObject.get("hash") ;
+                if(hashObj != null && NumUtil.isIntNumber(hashObj.toString())){
+                    FileRestVo fvo = fileOp.parseHashcode(fmUrl, Integer.valueOf(hashObj.toString()));
+                    if(fvo != null && fvo.fileWebUrl != null){
+                        jsonObject.put("webPath", fvo.fileWebUrl + jsonObject.get("filePath"));
+                        if(hasZipFile){
+                            if(!isVideo){
+                                jsonObject.put("webPathZip", fileOp.getFileZipPath(fvo.fileWebUrl + jsonObject.get("filePath")));
+                            }else{
+                                jsonObject.put("webPathZip", fileOp.getFileZipPath(fvo.fileWebUrl + jsonObject.get("filePath"), "jpg"));
+                            }
+                        }
+                    }
+                }
+            }
+        }
+    }
     /**
      * 娣诲姞宸ュ崟璁板綍
      * @param po
@@ -194,6 +226,9 @@
         JSONArray images_array = Optional.ofNullable(JSON.parseArray(result_temp.getImages())).orElse(new JSONArray());
         JSONArray audios_array = Optional.ofNullable(JSON.parseArray(result_temp.getAudios())).orElse(new JSONArray());
         JSONArray videos_array = Optional.ofNullable(JSON.parseArray(result_temp.getVideos())).orElse(new JSONArray());
+        this.dealWebFilePath(images_array, true, false) ;
+        this.dealWebFilePath(audios_array, false, false) ;
+        this.dealWebFilePath(videos_array, true, true) ;
         result.setImages(images_array);
         result.setAudios(audios_array);
         result.setVideos(videos_array);
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-base/pom.xml b/pipIrr-platform/pipIrr-web/pipIrr-web-base/pom.xml
index 39504ec..703af47 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-base/pom.xml
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-base/pom.xml
@@ -18,7 +18,6 @@
     <dependencies>
 
     </dependencies>
-
     <build>
         <plugins>
             <!-- 鐢熸垚涓嶅寘鍚緷璧杍ar鐨勫彲鎵цjar鍖�
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/allRound/Ar4BaseCtrl.java b/pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/allRound/Ar4BaseCtrl.java
index f9f8936..7d64f28 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/allRound/Ar4BaseCtrl.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/allRound/Ar4BaseCtrl.java
@@ -3,9 +3,8 @@
 import com.dy.common.aop.SsoAop;
 import com.dy.common.webUtil.BaseResponse;
 import com.dy.common.webUtil.BaseResponseUtils;
-import com.dy.common.webUtil.QueryResultVo;
 import com.dy.common.webUtil.ResultCodeMsg;
-import com.dy.pipIrrGlobal.VoAllRound.VoArIntakeBase;
+import com.dy.pipIrrGlobal.voAllRound.VoArIntakeBase;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.media.Content;
 import io.swagger.v3.oas.annotations.media.Schema;
@@ -41,7 +40,7 @@
     /**
      * 缁煎悎淇℃伅
      * 鍙栨按鍙e熀鏈俊鎭�
-     * @return 鎵�鏈夌墖鍖烘暟鎹�
+     * @return 鍙栨按鍙e熀鏈俊鎭�
      */
     @Operation(summary = "缁煎悎淇℃伅", description = "鍙栨按鍙e熀鏈俊鎭�")
     @ApiResponses(value = {
@@ -54,11 +53,11 @@
     })
     @GetMapping(path = "intakeInfo")
     @SsoAop()
-    public BaseResponse<QueryResultVo<VoArIntakeBase>> intakeInfo(Long intakeId) {
+    public BaseResponse<VoArIntakeBase> intakeInfo(Long intakeId) {
         if (intakeId == null || intakeId.longValue() == 0L) {
             return BaseResponseUtils.buildException("鍙栨按鍙d涓嶈兘涓虹┖");
         }
-        QueryResultVo<VoArIntakeBase> res = this.sv.intakeInfo(intakeId);
+        VoArIntakeBase res = this.sv.intakeInfo(intakeId);
         return BaseResponseUtils.buildSuccess(res);
     }
 }
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/allRound/Ar4BaseSv.java b/pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/allRound/Ar4BaseSv.java
index b31dacf..f2ed335 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/allRound/Ar4BaseSv.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/allRound/Ar4BaseSv.java
@@ -1,7 +1,6 @@
 package com.dy.pipIrrBase.allRound;
 
-import com.dy.common.webUtil.QueryResultVo;
-import com.dy.pipIrrGlobal.VoAllRound.VoArIntakeBase;
+import com.dy.pipIrrGlobal.voAllRound.VoArIntakeBase;
 import com.dy.pipIrrGlobal.daoAllRound.Ar4BaseMapper;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -29,12 +28,11 @@
      * 鍙栨按鍙e熀鏈俊鎭�
      * @return 鍙栨按鍙e熀鏈俊鎭�
      */
-    public QueryResultVo<VoArIntakeBase> intakeInfo(Long intakeId){
-        QueryResultVo<VoArIntakeBase> rsVo = new QueryResultVo<>() ;
+    public VoArIntakeBase intakeInfo(Long intakeId){
         List<VoArIntakeBase> list = this.dao.intakeInfo(intakeId);
         if(list != null && list.size() > 0){
-            rsVo.obj = list.get(0) ;
+            return list.get(0) ;
         }
-        return rsVo ;
+        return null ;
     }
 }
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/intakeController/IntakeControllerCtrl.java b/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/intakeController/IntakeControllerCtrl.java
index aa2977a..d252cd4 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/intakeController/IntakeControllerCtrl.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/intakeController/IntakeControllerCtrl.java
@@ -323,7 +323,7 @@
      * @param id
      * @return
      */
-    @PostMapping("deleteTrampController")
+    @GetMapping("deleteTrampController")
     @Transactional(rollbackFor = Exception.class)
     @SsoAop()
     public BaseResponse<Boolean> deleteTrampController(Long id) {
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/pom.xml b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/pom.xml
index 4bd9060..728d920 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/pom.xml
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/pom.xml
@@ -9,12 +9,7 @@
             <version>1.0.0</version>
             <scope>compile</scope>
         </dependency>
-        <dependency>
-            <groupId>com.dy</groupId>
-            <artifactId>pipIrr-web-sell</artifactId>
-            <version>1.0.0</version>
-            <scope>compile</scope>
-        </dependency>
+
     </dependencies>
 
     <parent>
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/PipIrrRemoteApplication.java b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/PipIrrRemoteApplication.java
index cc6479c..e0c3ded 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/PipIrrRemoteApplication.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/PipIrrRemoteApplication.java
@@ -8,7 +8,12 @@
 import org.springframework.context.annotation.EnableAspectJAutoProxy;
 import org.springframework.context.annotation.FilterType;
 
+import org.springframework.boot.web.servlet.ServletComponentScan;
+import org.springframework.scheduling.annotation.EnableScheduling;
+
 @SpringBootApplication
+@EnableScheduling //鍚姩瀹氭椂浠诲姟锛屾湰妯″潡websocket鍙戦�佸績璺�
+@ServletComponentScan //鎵弿servlet锛屾湰妯″潡涓惎鍔╳ebsocket
 @EnableAspectJAutoProxy
 @EnableMultiDataSource
 @ComponentScan(basePackages = {"com.dy.common", "com.dy.pipIrrGlobal", "com.dy.pipIrrRemote"},
@@ -18,7 +23,14 @@
                 })
         }
 )
-@MapperScan(basePackages={"com.dy.pipIrrGlobal.daoRm", "com.dy.pipIrrGlobal.daoPr", "com.dy.pipIrrGlobal.daoSe", "com.dy.pipIrrGlobal.daoBa","com.dy.pipIrrGlobal.daoFi"})
+@MapperScan(basePackages={"com.dy.pipIrrGlobal.daoRm",
+        "com.dy.pipIrrGlobal.daoPr",
+        "com.dy.pipIrrGlobal.daoSe",
+        "com.dy.pipIrrGlobal.daoBa",
+        "com.dy.pipIrrGlobal.daoFi",
+        "com.dy.pipIrrGlobal.daoAllRound",
+        "com.dy.pipIrrGlobal.daoLargeScreen"
+})
 public class PipIrrRemoteApplication {
 
     public static void main(String[] args) {
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/allRound/Ar4RemoteCtrl.java b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/allRound/Ar4RemoteCtrl.java
index b110125..d0db167 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/allRound/Ar4RemoteCtrl.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/allRound/Ar4RemoteCtrl.java
@@ -3,9 +3,8 @@
 import com.dy.common.aop.SsoAop;
 import com.dy.common.webUtil.BaseResponse;
 import com.dy.common.webUtil.BaseResponseUtils;
-import com.dy.common.webUtil.QueryResultVo;
 import com.dy.common.webUtil.ResultCodeMsg;
-import com.dy.pipIrrGlobal.VoAllRound.VoArIntakeRemote;
+import com.dy.pipIrrGlobal.voAllRound.VoArIntakeRemote;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.media.Content;
 import io.swagger.v3.oas.annotations.media.Schema;
@@ -25,7 +24,7 @@
  * @Description
  */
 @Slf4j
-@Tag(name = "鏈夊叧杩滅▼鎿嶄綔淇℃伅鐨勭患鍚�", description = "鏈夊叧杩滅▼鎿嶄綔淇℃伅鐨勭患鍚�")
+@Tag(name = "鍙栨按鍙g患鍚堜俊鎭箣鐩稿叧鐩戞祴鏁版嵁", description = "鍙栨按鍙g患鍚堜俊鎭箣鐩稿叧鐩戞祴鏁版嵁")
 @RestController
 @RequestMapping(path = "ar4Remote")
 @SuppressWarnings("unchecked")//java鐗堟湰瓒婇珮锛屽娉涘瀷绾︽潫瓒婁弗锛屾墍浠ラ厤缃甋uppressWarnings("unchecked")
@@ -40,25 +39,25 @@
 
     /**
      * 缁煎悎淇℃伅
-     * 鍙栨按鍙e熀鏈俊鎭�
-     * @return 鎵�鏈夌墖鍖烘暟鎹�
+     * 鍙栨按鍙g洃娴嬫暟鎹�
+     * @return
      */
-    @Operation(summary = "缁煎悎淇℃伅", description = "鍙栨按鍙e熀鏈俊鎭�")
+    @Operation(summary = "缁煎悎淇℃伅", description = "鍙栨按鍙g洃娴嬫暟鎹�")
     @ApiResponses(value = {
             @ApiResponse(
                     responseCode = ResultCodeMsg.RsCode.SUCCESS_CODE,
-                    description = "鍙栨按鍙e熀鏈俊鎭紙BaseResponse.content:QueryResultVo{}锛�",
+                    description = "鍙栨按鍙g洃娴嬫暟鎹紙BaseResponse.content:VoArIntakeRemote{}锛�",
                     content = {@Content(mediaType = MediaType.APPLICATION_JSON_VALUE,
                             schema = @Schema(implementation = VoArIntakeRemote.class))}
             )
     })
     @GetMapping(path = "intakeInfo")
     @SsoAop()
-    public BaseResponse<QueryResultVo<VoArIntakeRemote>> intakeInfo(Long intakeId) {
+    public BaseResponse<VoArIntakeRemote> intakeInfo(Long intakeId) {
         if (intakeId == null || intakeId.longValue() == 0L) {
             return BaseResponseUtils.buildException("鍙栨按鍙d涓嶈兘涓虹┖");
         }
-        QueryResultVo<VoArIntakeRemote> res = this.sv.intakeInfo(intakeId);
+        VoArIntakeRemote res = this.sv.intakeInfo(intakeId);
         return BaseResponseUtils.buildSuccess(res);
     }
 }
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/allRound/Ar4RemoteSv.java b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/allRound/Ar4RemoteSv.java
index 990d0a9..b0e1d2e 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/allRound/Ar4RemoteSv.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/allRound/Ar4RemoteSv.java
@@ -4,12 +4,11 @@
 import com.dy.common.mw.protocol.Command;
 import com.dy.common.mw.protocol.CommandBackParam;
 import com.dy.common.webUtil.BaseResponse;
-import com.dy.common.webUtil.QueryResultVo;
-import com.dy.pipIrrGlobal.VoAllRound.VoArIntakeRemote;
+import com.dy.pipIrrGlobal.voAllRound.VoArIntakeRemote;
 import com.dy.pipIrrGlobal.daoAllRound.Ar4BaseMapper;
+import com.dy.pipIrrGlobal.daoAllRound.Ar4RemoteMapper;
 import com.dy.pipIrrGlobal.rtuMw.CodeLocal;
 import com.dy.pipIrrGlobal.rtuMw.Web2RtuMw;
-import com.dy.pipIrrGlobal.voPr.VoOnLineIntake;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.core.env.Environment;
@@ -32,6 +31,9 @@
     private Ar4BaseMapper baseDao;
 
     @Autowired
+    private Ar4RemoteMapper remoteDao;
+
+    @Autowired
     private Environment env;
 
     @Autowired
@@ -41,14 +43,36 @@
      * 鍙栨按鍙e熀鏈俊鎭�
      * @return 鍙栨按鍙e熀鏈俊鎭�
      */
-    public QueryResultVo<VoArIntakeRemote> intakeInfo(Long intakeId){
+    public VoArIntakeRemote intakeInfo(Long intakeId){
         VoArIntakeRemote rVo = new VoArIntakeRemote() ;
+        rVo.intakeId = intakeId ;
+        String rtuAddr = this.getRtuAddr(intakeId);
+        this.getRtuOnLine(rtuAddr, rVo);
+        this.getAlarmLastInfo(intakeId, rVo);
+        this.getOpenCloseValveLastInfo(intakeId, rVo);
+        this.getLossAmountLastInfo(intakeId, rVo);
+        return rVo ;
+    }
 
-        String rtuAddr = null ;
+    /**
+     * 鑾峰彇鍙栨按鍙e搴旂殑RTU鍦板潃
+     * @param intakeId 鍙栨按鍙D
+     * @return RTU鍦板潃
+     */
+    private String getRtuAddr(Long intakeId){
         List<String> rtuAddrs = baseDao.intakeRtuAddr(intakeId) ;
         if(rtuAddrs != null && rtuAddrs.size() > 0){
-            rtuAddr = rtuAddrs.get(0) ;
+            return rtuAddrs.get(0) ;
         }
+        return null ;
+    }
+
+    /**
+     * 寰楀埌鍙栨按RTU鍦ㄧ嚎鎯呭喌
+     * @param rtuAddr
+     * @param rVo
+     */
+    private void getRtuOnLine(String rtuAddr, VoArIntakeRemote rVo){
         if(rtuAddr != null){
             //鍚戦�氫俊涓棿浠跺彂鍏冲懡浠わ紝鏌ヨ閮ㄥ垎RTU鍦ㄧ嚎鎯呭喌
             Command com = this.createInnerCommand(CodeLocal.onLinePart);
@@ -77,7 +101,47 @@
                 log.error("閫氫俊涓棿浠惰繑鍥炲唴閮ㄥ懡浠ょ粨鏋滀负null");
             }
         }
-
-        return null ;
+    }
+    /**
+     * 寰楀埌鍙栨按鍙f渶鏂版姤璀︿俊鎭�
+     * @param intakeId
+     * @param rVo
+     */
+    private void getAlarmLastInfo(Long intakeId, VoArIntakeRemote rVo){
+        List<VoArIntakeRemote> list = remoteDao.alarmLastInfo(intakeId);
+        if(list != null && list.size() > 0){
+            VoArIntakeRemote vo = list.get(0) ;
+            rVo.alarm = vo.alarm ;
+            if(rVo.alarm == null || rVo.alarm.trim().equals("")){
+                rVo.alarm = "鏃犳姤璀�" ;
+            }
+            rVo.alarmDt = vo.alarmDt ;
+        }
+    }
+   /**
+     * 寰楀埌鍙栨按鍙f渶鏂板紑鍏抽榾淇℃伅
+     * @param intakeId
+     * @param rVo
+     */
+    private void getOpenCloseValveLastInfo(Long intakeId, VoArIntakeRemote rVo){
+        List<VoArIntakeRemote> list = remoteDao.openCloseValveLastInfo(intakeId);
+        if(list != null && list.size() > 0){
+            VoArIntakeRemote vo = list.get(0) ;
+            rVo.lastOpenDt = vo.lastOpenDt ;
+            rVo.lastCloseDt = vo.lastCloseDt ;
+        }
+    }
+   /**
+     * 寰楀埌鍙栨按鍙f渶鏂版紡鎹熶俊鎭�
+     * @param intakeId
+     * @param rVo
+    */
+    private void getLossAmountLastInfo(Long intakeId, VoArIntakeRemote rVo){
+        List<VoArIntakeRemote> list = remoteDao.lossLastInfo(intakeId);
+        if(list != null && list.size() > 0){
+            VoArIntakeRemote vo = list.get(0) ;
+            rVo.lossDt = vo.lossDt ;
+            rVo.lossAmount = vo.lossAmount ;
+        }
     }
 }
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/config/WebSocketConfig.java b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/config/WebSocketConfig.java
new file mode 100644
index 0000000..7d65a4b
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/config/WebSocketConfig.java
@@ -0,0 +1,19 @@
+package com.dy.pipIrrRemote.config;
+
+/**
+ * @Author: liurunyu
+ * @Date: 2025/2/10 15:42
+ * @Description
+ */
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.socket.server.standard.ServerEndpointExporter;
+
+//寮�鍚疻ebSocket鐨勬敮鎸侊紝骞舵妸璇ョ被娉ㄥ叆鍒皊pring瀹瑰櫒涓�
+@Configuration
+public class WebSocketConfig {
+    @Bean
+    public ServerEndpointExporter serverEndpointExporter() {
+        return new ServerEndpointExporter();
+    }
+}
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/largeScreen/WebSocketHeartBeat.java b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/largeScreen/WebSocketHeartBeat.java
new file mode 100644
index 0000000..925f764
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/largeScreen/WebSocketHeartBeat.java
@@ -0,0 +1,31 @@
+package com.dy.pipIrrRemote.largeScreen;
+
+/**
+ * @Author: liurunyu
+ * @Date: 2025/2/11 8:37
+ * @Description
+ */
+
+import com.alibaba.fastjson2.JSON;
+import com.dy.common.util.DateTime;
+import com.dy.common.webUtil.WebSocketMessage;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+
+@Component
+public class WebSocketHeartBeat {
+
+    // 璁剧疆瀹氭椂鍗佺涓�娆�
+    @Scheduled(cron = "0/10 * * * * ?")
+    public void WsHeartBeat() throws Exception {
+        WebSocketServer.sendAllMessage(getHeartBeatMessage());
+    }
+
+    public static String getHeartBeatMessage() {
+        WebSocketMessage vo = new WebSocketMessage() ;
+        vo.type = WebSocketMessage.TYPE_HEARTBEAT ;
+        vo.content = DateTime.yyyy_MM_dd_HH_mm_ss() ;
+        return JSON.toJSONString(vo) ;
+    }
+
+}
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/largeScreen/WebSocketServer.java b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/largeScreen/WebSocketServer.java
new file mode 100644
index 0000000..fd66ef4
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/largeScreen/WebSocketServer.java
@@ -0,0 +1,136 @@
+package com.dy.pipIrrRemote.largeScreen;
+
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Component;
+
+import jakarta.websocket.*;
+import jakarta.websocket.server.PathParam;
+import jakarta.websocket.server.ServerEndpoint;
+import java.io.IOException;
+import java.util.concurrent.ConcurrentHashMap;
+
+/**
+ * @Author: liurunyu
+ * @Date: 2025/2/10 15:25
+ * @Description 瀹㈡埛绔紙娴忚鍣級姣忓缓绔嬩竴涓獁ebsocket杩炴帴锛屾湇鍔$灏变細鍒涘缓涓�涓猈ebSocketServer瀹炰緥
+ */
+@Slf4j
+@ServerEndpoint("/websocket/ls/{id}")
+@Component
+public class WebSocketServer {
+
+    // 闈欐�佸彉閲忥紝璁板綍褰撳墠鍦ㄧ嚎杩炴帴鏁�
+    private static int onlineCount = 0;
+
+    // 瀛樻斁姣忎釜瀹㈡埛绔搴旂殑WebSocketServer瀵硅薄
+    private static ConcurrentHashMap<String, WebSocketServer> webSocketMap = new ConcurrentHashMap<>();
+
+    // 瀹㈡埛绔繛鎺ヤ細璇濓紝閫氳繃瀹冪粰瀹㈡埛绔彂閫佹暟鎹�
+    private Session session;
+    // 瀹㈡埛绔笂绾挎椂鍒�
+    //private String onLineDt ;
+    // 瀹㈡埛绔痠d
+    private String id = "";
+
+    /**
+     * 杩炴帴寤虹珛鎴愬姛璋冪敤鐨勬柟娉�
+     * @param session websocket浼氳瘽瀵硅薄
+     * @param id 瀹㈡埛绔痠d
+     */
+    @OnOpen
+    public void onOpen(Session session, @PathParam("id") String id) {
+        this.session = session;
+        //this.onLineDt = DateTime.yyyy_MM_dd_HH_mm_ss() ;
+        this.id = id;
+        if(this.id == null || this.id.length() == 0){
+            this.id = "" + System.nanoTime() ;
+        }
+        this.sendMessage(WebSocketHeartBeat.getHeartBeatMessage());
+
+        if (webSocketMap.containsKey(id)) {
+            webSocketMap.remove(id);
+            webSocketMap.put(id, this);
+        } else {
+            webSocketMap.put(id, this);
+            WebSocketServer.addOnlineCount();
+        }
+    }
+
+    /**
+     * 杩炴帴鍏抽棴璋冪敤鐨勬柟娉�
+     */
+    @OnClose
+    public void onClose() {
+        if (webSocketMap.containsKey(id)) {
+            webSocketMap.remove(id);
+            //浠巗et涓垹闄�
+            WebSocketServer.subOnlineCount();
+        }
+        log.info("瀹㈡埛绔�:" + id + "锛屽叧闂簡websocket");
+    }
+
+    /**
+     * 鏀跺埌瀹㈡埛绔秷鎭悗璋冪敤鐨勬柟娉�
+     * @param message 瀹㈡埛绔彂閫佽繃鏉ョ殑娑堟伅
+     * @param session
+     */
+    @OnMessage
+    public void onMessage(String message, Session session) {
+        log.info("瀹㈡埛绔�:" + id + "锛寃ebsocket鎶ユ枃:" + message);
+    }
+
+    /**
+     * 浼氳瘽寮傚父
+     * @param session
+     * @param error
+     */
+    @OnError
+    public void onError(Session session, Throwable error) {
+        log.error("瀹㈡埛绔�:" + this.id + "锛寃ebsocket浼氳瘽寮傚父锛屽師鍥�:" + error.getMessage());
+    }
+
+    /**
+     * 鏈嶅姟鍣ㄤ富鍔ㄦ帹閫佹秷鎭�
+     */
+    public void sendMessage(String message) {
+        try{
+            this.session.getBasicRemote().sendText(message);
+        }catch (Exception e){
+            log.error("瀹㈡埛绔�:" + id + "锛寃ebsocket缃戠粶鍙戦�佹暟鎹紓甯�", e);
+        }
+    }
+
+    /**
+     * 鏈嶅姟鍣ㄤ富鍔ㄧ兢鎺ㄩ�佹秷鎭�
+     */
+    public static void sendAllMessage(String message) throws IOException {
+        ConcurrentHashMap.KeySetView<String, WebSocketServer> ids = webSocketMap.keySet();
+        for (String id : ids) {
+            WebSocketServer webSocketServer = webSocketMap.get(id);
+            webSocketServer.sendMessage(message);
+        }
+    }
+
+    /**
+     * 鏈嶅姟鍣ㄦ寚瀹氬鎴风鎺ㄩ�佹秷鎭�
+     */
+    public static void sendOneMessage(String message, String id) throws IOException {
+        if (message != null && message.length() != 0 && webSocketMap.containsKey(id)) {
+            webSocketMap.get(id).sendMessage(message);
+        } else {
+            log.error("瀹㈡埛绔�" + id + "锛屼笉鍦ㄧ嚎锛�");
+        }
+    }
+
+    public static synchronized int getOnlineCount() {
+        return onlineCount;
+    }
+
+    public static synchronized void addOnlineCount() {
+        WebSocketServer.onlineCount++;
+    }
+
+    public static synchronized void subOnlineCount() {
+        WebSocketServer.onlineCount--;
+    }
+}
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/msCenter/CenterMsReceiveCtrl.java b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/msCenter/CenterMsReceiveCtrl.java
new file mode 100644
index 0000000..5be1e22
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/msCenter/CenterMsReceiveCtrl.java
@@ -0,0 +1,91 @@
+package com.dy.pipIrrRemote.msCenter;
+
+import com.alibaba.fastjson2.JSON;
+import com.alibaba.fastjson2.JSONObject;
+import com.dy.common.contant.Constant;
+import com.dy.common.multiDataSource.DataSourceContext;
+import com.dy.common.util.NumUtil;
+import com.dy.common.webUtil.BaseResponse;
+import com.dy.common.webUtil.WebSocketMessage;
+import com.dy.pipIrrRemote.largeScreen.WebSocketServer;
+import io.swagger.v3.oas.annotations.Hidden;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.MediaType;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import java.util.List;
+
+/**
+ * @Author: liurunyu
+ * @Date: 2025/2/12 17:34
+ * @Description
+ */
+
+@Slf4j
+@Hidden //涓嶅叕寮�鎺ュ彛锛屽叾鍙湁閫氫俊涓棿浠惰皟鐢�
+@Tag(name = "閫氫俊涓棿浠舵秷鎭腑蹇冩帹閫佹秷鎭帴鏀惰��", description = "閫氫俊涓棿浠舵秷鎭腑蹇冩帹閫佹秷鎭帴鏀惰��")
+@RestController
+@RequestMapping(path="msCenter")
+public class CenterMsReceiveCtrl{
+
+    @Autowired
+    private CenterMsReceiveSv sv ;
+
+    /**
+     * 閫氫俊涓棿浠舵秷鎭腑蹇冩帹閫佹秷鎭帴鏀�
+     * @param list 娑堟伅鏁版嵁闆嗗悎
+     * @return 鏃犺繑鍥炵粨鏋�
+     */
+    @Hidden //涓嶅叕寮�鎺ュ彛锛屽叾鍙湁閫氫俊涓棿浠惰皟鐢�
+    @PostMapping(path = "receive", consumes = MediaType.APPLICATION_JSON_VALUE)
+    public BaseResponse<Boolean> receive(@RequestBody List<JSONObject> list, HttpServletRequest req, HttpServletResponse rep) {
+        //閫氫俊涓棿浠朵紶杩囨潵鐨勬満鏋則ag锛屼互鐢ㄤ簬鏌ユ壘鏁版嵁婧�
+        String token = req.getHeader(Constant.UserTokenKeyInHeader);
+        DataSourceContext.set(token);
+
+        if(list != null && list.size() > 0){
+            for (JSONObject jo : list) {
+                if(jo != null){
+                    if(jo.containsKey("intakeId")){
+                        Object intakeIdObj = jo.get("intakeId") ;
+                        Long intakeId = null ;
+                        if(intakeIdObj != null && intakeIdObj instanceof Long){
+                            intakeId = (Long) intakeIdObj ;
+                        }else if(intakeIdObj != null && intakeIdObj instanceof String){
+                            if(NumUtil.isPlusIntNumber(intakeIdObj.toString())){
+                                intakeId = Long.parseLong(intakeIdObj.toString()) ;
+                            }
+                        }
+                        if(intakeId != null){
+                            String intakeNum = this.sv.selectIntakeName(intakeId) ;
+                            jo.put("intakeNum", intakeNum) ;
+                        }
+                    }
+                }
+            }
+            sendByWebSocket(list) ;
+        }
+        return null ;
+    }
+
+    /**
+     * 閫氳繃websocket鎶婃秷鎭帹閫佸嚭鍘伙紝褰撳墠鎺ユ敹鏂规槸鍓嶇鐨勫ぇ灞忓睍绀烘ā鍧�
+     * @param list
+     */
+    private void sendByWebSocket(List<JSONObject> list){
+        WebSocketMessage vo = new WebSocketMessage() ;
+        vo.type = WebSocketMessage.TYPE_JSON ;
+        vo.content = list ;
+        try {
+            WebSocketServer.sendAllMessage(JSON.toJSONString(vo));
+        }catch (Exception e){
+            log.error("鎺ㄩ�佹秷鎭け璐�", e) ;
+        }
+    }
+}
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/msCenter/CenterMsReceiveSv.java b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/msCenter/CenterMsReceiveSv.java
new file mode 100644
index 0000000..7c07fef
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/msCenter/CenterMsReceiveSv.java
@@ -0,0 +1,25 @@
+package com.dy.pipIrrRemote.msCenter;
+
+import com.dy.pipIrrGlobal.daoPr.PrIntakeMapper;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+/**
+ * @Author: liurunyu
+ * @Date: 2025/2/13 14:08
+ * @Description
+ */
+
+@Slf4j
+@Service
+public class CenterMsReceiveSv {
+
+    @Autowired
+    private PrIntakeMapper intakeDao ;
+
+    public String selectIntakeName(Long id){
+        return this.intakeDao.getNameById(id) ;
+    }
+
+}
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/msCenter/Register2MwMsCenterListener.java b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/msCenter/Register2MwMsCenterListener.java
new file mode 100644
index 0000000..c7fcc00
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/msCenter/Register2MwMsCenterListener.java
@@ -0,0 +1,97 @@
+package com.dy.pipIrrRemote.msCenter;
+
+import com.dy.pipIrrGlobal.rtuMw.Web2RtuMw;
+import com.dy.pipIrrGlobal.util.Org;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.boot.context.event.ApplicationReadyEvent;
+import org.springframework.context.ApplicationListener;
+import org.springframework.core.env.Environment;
+import org.springframework.core.io.ResourceLoader;
+import org.springframework.lang.NonNull;
+import org.springframework.stereotype.Component;
+import org.springframework.web.client.RestTemplate;
+
+import java.util.List;
+import java.util.Timer;
+import java.util.TimerTask;
+
+/**
+ * @Author: liurunyu
+ * @Date: 2025/2/13 9:47
+ * @Description
+ */
+@Slf4j
+@Component
+public class Register2MwMsCenterListener extends Web2RtuMw implements ApplicationListener<ApplicationReadyEvent> {
+    @Autowired
+    private Environment env;
+
+    @Autowired
+    private RestTemplate restTemplate;
+
+    @Autowired
+    protected ResourceLoader resourceLoader;
+
+    @Value("${mw.mwMsCenterReceiveUrl_rm}")
+    protected String mwMsCenterReceiveUrl;//娑堟伅鎺ユ敹缃戝潃
+
+    private static final String mwParamName = "msReceiverWebUrl" ;
+
+    private List<Org.OrgVo> orgs;
+
+    private Timer timer;
+
+    /**
+     * SpringBoot瀹瑰櫒宸茬粡鍑嗗濂戒簡锛屾墽琛屼笅闈㈡柟娉�
+     *
+     * @param event 浜嬩欢
+     */
+    @Override
+    public void onApplicationEvent(@NonNull ApplicationReadyEvent event) {
+        try {
+            //绛�1绉掞紝绛夊緟com.alibaba.druid.pool.DruidDataSource瀹炲鍖栧畬鎴�
+            Thread.sleep(1000L);
+        } catch (InterruptedException e) {
+            e.printStackTrace();
+        } finally {
+            try {
+                this.start(event);
+            } catch (Exception e) {
+                log.error("鍚戦�氫俊涓棿浠舵敞鍐屾秷鎭帴鏀惰�呭嚭閿�", e);
+            }
+        }
+    }
+
+    /**
+     * 鎵ц涓氬姟閫昏緫
+     * @param event
+     * @throws Exception
+     */
+    private void start(ApplicationReadyEvent event) throws Exception {
+        if(mwMsCenterReceiveUrl == null || mwMsCenterReceiveUrl.trim().equals("")){
+            throw new Exception("閫氫俊涓棿浠舵秷鎭帴鏀剁綉鍧�鏈厤缃�");
+        }
+        orgs = super.get(resourceLoader);
+        if(orgs != null && orgs.size() > 0) {
+            this.timer = new Timer();
+            this.timer.schedule(new TimerTask() {
+                public void run() {
+                    register(event) ;
+                }
+            }, 100 , 5 * 60 * 1000);
+        }
+    }
+
+    /**
+     * 鍚戦�氫俊涓棿浠舵敞鍐屾秷鎭帴鏀惰��
+     * @param event
+     */
+    private void register(ApplicationReadyEvent event){
+        for (Org.OrgVo vo : this.orgs){
+            String rqUrl = this.get2MwRequestUrl(this.env, vo.tag, ContextRegisterMsReceiverWebUrl) ;
+            sendGetRequest2Mw(restTemplate, rqUrl, mwParamName, mwMsCenterReceiveUrl) ;
+        }
+    }
+}
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/report/ReportSv.java b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/report/ReportSv.java
index d41a7c0..0bf3b74 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/report/ReportSv.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/report/ReportSv.java
@@ -104,7 +104,11 @@
         if (list != null && list.size() > 0) {
             for (VoOpenCloseValve vo : list) {
                 vo.setOpenType(CommonV1.openCloseValveType(vo.getOpType()==null?(byte)100:vo.getOpType()));
-                vo.setCloseType(CommonV1.openCloseValveType(vo.getClType()==null?(byte)100:vo.getClType()));
+                if(vo.getClType() != null) {
+                    vo.setCloseType(CommonV1.openCloseValveType(vo.getClType() == null ? (byte) 100 : vo.getClType()));
+                }else{
+                    vo.setCloseType("");
+                }
             }
         }
         rsVo.obj = list;
@@ -131,7 +135,11 @@
         if (list != null && list.size() > 0) {
             for (VoOpenCloseValve vo : list) {
                 vo.setOpenType(CommonV1.openCloseValveType(vo.getOpType()==null?(byte)100:vo.getOpType()));
-                vo.setCloseType(CommonV1.openCloseValveType(vo.getClType()==null?(byte)100:vo.getClType()));
+                if(vo.getClType() != null){
+                    vo.setCloseType(CommonV1.openCloseValveType(vo.getClType()==null?(byte)100:vo.getClType()));
+                }else{
+                    vo.setCloseType("");
+                }
             }
         }
         rsVo.obj = list;
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/rtuUpgrage/RtuUpgradeCtrl.java b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/rtuUpgrage/RtuUpgradeCtrl.java
index 77eb655..8bba068 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/rtuUpgrage/RtuUpgradeCtrl.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/rtuUpgrage/RtuUpgradeCtrl.java
@@ -51,7 +51,7 @@
     private RtuUpgradeSv sv ;
 
     @Autowired
-    RtuUpgradeResSv resSv ;
+    private RtuUpgradeResSv resSv ;
 
     @Autowired
     private Environment env;
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/pom.xml b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/pom.xml
index df231c5..db722e9 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/pom.xml
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/pom.xml
@@ -16,12 +16,6 @@
     <description>web钀ラ攢淇℃伅绯荤粺</description>
 
     <dependencies>
-        <!--OkHttp-->
-<!--        <dependency>-->
-<!--            <groupId>com.squareup.okhttp3</groupId>-->
-<!--            <artifactId>okhttp</artifactId>-->
-<!--            <version>4.9.2</version>-->
-<!--        </dependency>-->
         <!--  闃块噷浜戠煭淇′緷璧�  -->
         <dependency>
             <groupId>com.aliyun</groupId>
@@ -32,12 +26,6 @@
             <groupId>com.aliyun</groupId>
             <artifactId>aliyun-java-sdk-dysmsapi</artifactId>
             <version>2.1.0</version>
-        </dependency>
-
-        <dependency>
-            <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-configuration-processor</artifactId>
-            <optional>true</optional>
         </dependency>
 
         <dependency>
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/PipIrrStatisticsApplication.java b/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/PipIrrStatisticsApplication.java
index 282c7d5..eba918c 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/PipIrrStatisticsApplication.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/PipIrrStatisticsApplication.java
@@ -23,7 +23,10 @@
         "com.dy.pipIrrGlobal.daoSe",
         "com.dy.pipIrrGlobal.daoBa",
         "com.dy.pipIrrGlobal.daoSt",
-        "com.dy.pipIrrGlobal.daoFi"})
+        "com.dy.pipIrrGlobal.daoFi",
+        "com.dy.pipIrrGlobal.daoSpecial",
+        "com.dy.pipIrrGlobal.daoAllRound",
+        "com.dy.pipIrrGlobal.daoLargeScreen"})
 public class PipIrrStatisticsApplication {
 
     public static void main(String[] args) {
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/allRound/Ar4StatisticsCtrl.java b/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/allRound/Ar4StatisticsCtrl.java
new file mode 100644
index 0000000..260171c
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/allRound/Ar4StatisticsCtrl.java
@@ -0,0 +1,164 @@
+package com.dy.pipIrrStatistics.allRound;
+
+import com.dy.common.aop.SsoAop;
+import com.dy.common.webUtil.BaseResponse;
+import com.dy.common.webUtil.BaseResponseUtils;
+import com.dy.common.webUtil.ResultCodeMsg;
+import com.dy.pipIrrGlobal.voAllRound.*;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.media.Content;
+import io.swagger.v3.oas.annotations.media.Schema;
+import io.swagger.v3.oas.annotations.responses.ApiResponse;
+import io.swagger.v3.oas.annotations.responses.ApiResponses;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.MediaType;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+/**
+ * @Author: liurunyu
+ * @Date: 2025/2/5 10:46
+ * @Description
+ */
+@Slf4j
+@Tag(name = "鍙栨按鍙g患鍚堜俊鎭箣鐩稿叧缁熻鏁版嵁", description = "鍙栨按鍙g患鍚堜俊鎭箣鐩稿叧缁熻鏁版嵁")
+@RestController
+@RequestMapping(path = "ar4Statistics")
+@SuppressWarnings("unchecked")//java鐗堟湰瓒婇珮锛屽娉涘瀷绾︽潫瓒婁弗锛屾墍浠ラ厤缃甋uppressWarnings("unchecked")
+public class Ar4StatisticsCtrl {
+
+    private Ar4StatisticsSv sv;
+
+    @Autowired
+    private void setSv(Ar4StatisticsSv sv) {
+        this.sv = sv;
+    }
+
+    /**
+     * 缁煎悎淇℃伅
+     * 鍙栨按鍙e紑鍏抽榾鏁版嵁
+     * @return
+     */
+    @Operation(summary = "缁煎悎淇℃伅", description = "鍙栨按鍙e紑鍏抽榾鏁版嵁")
+    @ApiResponses(value = {
+            @ApiResponse(
+                    responseCode = ResultCodeMsg.RsCode.SUCCESS_CODE,
+                    description = "鍙栨按鍙e紑鍏抽榾鏁版嵁锛圔aseResponse.content:VoArIntakeOpenCloseValve[{}]锛�",
+                    content = {@Content(mediaType = MediaType.APPLICATION_JSON_VALUE,
+                            schema = @Schema(implementation = VoArIntakeOpenCloseValve.class))}
+            )
+    })
+    @GetMapping(path = "openCloseValveInfo")
+    @SsoAop()
+    public BaseResponse<List<VoArIntakeOpenCloseValve>> openCloseValveInfo(Long intakeId) {
+        if (intakeId == null || intakeId.longValue() == 0L) {
+            return BaseResponseUtils.buildException("鍙栨按鍙d涓嶈兘涓虹┖");
+        }
+        List<VoArIntakeOpenCloseValve> res = this.sv.openCloseValveRecords(intakeId);
+        return BaseResponseUtils.buildSuccess(res);
+    }
+
+
+    /**
+     * 缁煎悎淇℃伅
+     * 鍙栨按鍙f棩婕忔崯鏁版嵁
+     * @return
+     */
+    @Operation(summary = "缁煎悎淇℃伅", description = "鍙栨按鍙f棩婕忔崯鏁版嵁")
+    @ApiResponses(value = {
+            @ApiResponse(
+                    responseCode = ResultCodeMsg.RsCode.SUCCESS_CODE,
+                    description = "鍙栨按鍙f棩婕忔崯鏁版嵁锛圔aseResponse.content:VoArIntakeLossDay[{}]锛�",
+                    content = {@Content(mediaType = MediaType.APPLICATION_JSON_VALUE,
+                            schema = @Schema(implementation = VoArIntakeLossDay.class))}
+            )
+    })
+    @GetMapping(path = "lossDayRecords")
+    @SsoAop()
+    public BaseResponse<List<VoArIntakeLossDay>> lossDayRecords(Long intakeId) {
+        if (intakeId == null || intakeId.longValue() == 0L) {
+            return BaseResponseUtils.buildException("鍙栨按鍙d涓嶈兘涓虹┖");
+        }
+        List<VoArIntakeLossDay> res = this.sv.lossDayRecords(intakeId);
+        return BaseResponseUtils.buildSuccess(res);
+    }
+
+    /**
+     * 缁煎悎淇℃伅
+     * 鍙栨按鍙f湀婕忔崯鏁版嵁
+     * @return
+     */
+    @Operation(summary = "缁煎悎淇℃伅", description = "鍙栨按鍙f湀婕忔崯鏁版嵁")
+    @ApiResponses(value = {
+            @ApiResponse(
+                    responseCode = ResultCodeMsg.RsCode.SUCCESS_CODE,
+                    description = "鍙栨按鍙f湀婕忔崯鏁版嵁锛圔aseResponse.content:VoArIntakeLossMonth[{}]锛�",
+                    content = {@Content(mediaType = MediaType.APPLICATION_JSON_VALUE,
+                            schema = @Schema(implementation = VoArIntakeLossMonth.class))}
+            )
+    })
+    @GetMapping(path = "lossMonthRecords")
+    @SsoAop()
+    public BaseResponse<List<VoArIntakeLossMonth>> lossMonthRecords(Long intakeId) {
+        if (intakeId == null || intakeId.longValue() == 0L) {
+            return BaseResponseUtils.buildException("鍙栨按鍙d涓嶈兘涓虹┖");
+        }
+        List<VoArIntakeLossMonth> res = this.sv.lossMonthRecords(intakeId);
+        return BaseResponseUtils.buildSuccess(res);
+    }
+
+    /**
+     * 缁煎悎淇℃伅
+     * 鍙栨按鍙f棩鍙栨按鏁版嵁
+     * @return
+     */
+    @Operation(summary = "缁煎悎淇℃伅", description = "鍙栨按鍙f棩鍙栨按鏁版嵁")
+    @ApiResponses(value = {
+            @ApiResponse(
+                    responseCode = ResultCodeMsg.RsCode.SUCCESS_CODE,
+                    description = "鍙栨按鍙f棩鍙栨按鏁版嵁锛圔aseResponse.content:VoArIntakeAmountDay[{}]锛�",
+                    content = {@Content(mediaType = MediaType.APPLICATION_JSON_VALUE,
+                            schema = @Schema(implementation = VoArIntakeAmountDay.class))}
+            )
+    })
+    @GetMapping(path = "amountDayRecords")
+    @SsoAop()
+    public BaseResponse<List<VoArIntakeAmountDay>> amountDayRecords(Long intakeId) {
+        if (intakeId == null || intakeId.longValue() == 0L) {
+            return BaseResponseUtils.buildException("鍙栨按鍙d涓嶈兘涓虹┖");
+        }
+        List<VoArIntakeAmountDay> res = this.sv.amountDayRecords(intakeId);
+        return BaseResponseUtils.buildSuccess(res);
+    }
+
+    /**
+     * 缁煎悎淇℃伅
+     * 鍙栨按鍙f湀鍙栨按鏁版嵁
+     * @return
+     */
+    @Operation(summary = "缁煎悎淇℃伅", description = "鍙栨按鍙f湀鍙栨按鏁版嵁")
+    @ApiResponses(value = {
+            @ApiResponse(
+                    responseCode = ResultCodeMsg.RsCode.SUCCESS_CODE,
+                    description = "鍙栨按鍙f湀鍙栨按鏁版嵁锛圔aseResponse.content:VoArIntakeAmountDay[{}]锛�",
+                    content = {@Content(mediaType = MediaType.APPLICATION_JSON_VALUE,
+                            schema = @Schema(implementation = VoArIntakeAmountMonth.class))}
+            )
+    })
+    @GetMapping(path = "amountMonthRecords")
+    @SsoAop()
+    public BaseResponse<List<VoArIntakeAmountMonth>> amountMonthRecords(Long intakeId) {
+        if (intakeId == null || intakeId.longValue() == 0L) {
+            return BaseResponseUtils.buildException("鍙栨按鍙d涓嶈兘涓虹┖");
+        }
+        List<VoArIntakeAmountMonth> res = this.sv.amountMonthRecords(intakeId);
+        return BaseResponseUtils.buildSuccess(res);
+    }
+
+
+}
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/allRound/Ar4StatisticsSv.java b/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/allRound/Ar4StatisticsSv.java
new file mode 100644
index 0000000..b883689
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/allRound/Ar4StatisticsSv.java
@@ -0,0 +1,84 @@
+package com.dy.pipIrrStatistics.allRound;
+
+import com.dy.common.mw.protocol.p206V1.CommonV1;
+import com.dy.pipIrrGlobal.voAllRound.*;
+import com.dy.pipIrrGlobal.daoAllRound.Ar4StatisticsMapper;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * @Author: liurunyu
+ * @Date: 2025/2/5 10:46
+ * @Description
+ */
+@Slf4j
+@Service
+public class Ar4StatisticsSv {
+
+    @Autowired
+    private Ar4StatisticsMapper statisticsDao;
+
+    //璁板綍鏉℃暟
+    private static final int totalRecordsCount = 10 ;
+
+    /**
+     * 寰楀埌鍙栨按鍙e紑鍏抽榾璁板綍锛坱otalRecordsCount鏉★級
+     * @param intakeId
+     */
+    public List<VoArIntakeOpenCloseValve> openCloseValveRecords(Long intakeId){
+        List<VoArIntakeOpenCloseValve> list = statisticsDao.openCloseRecords(intakeId, 0, totalRecordsCount);
+        if(list != null && list.size() > 0){
+            for (VoArIntakeOpenCloseValve vo : list) {
+                if(vo != null){
+                    if(vo.opType != null){
+                        vo.openType = CommonV1.openCloseValveType(vo.opType);
+                    }
+                    if(vo.clType != null){
+                        vo.closeType = CommonV1.openCloseValveType(vo.clType);
+                    }
+                }
+            }
+        }
+        return list;
+    }
+
+
+    /**
+     * 寰楀埌鍙栨按鍙f棩婕忔崯璁板綍锛坱otalRecordsCount鏉★級
+     * @param intakeId
+     */
+    public List<VoArIntakeLossDay> lossDayRecords(Long intakeId){
+        return statisticsDao.lossDayRecords(intakeId, 0, totalRecordsCount);
+    }
+
+
+    /**
+     * 寰楀埌鍙栨按鍙f湀婕忔崯璁板綍锛坱otalRecordsCount鏉★級
+     * @param intakeId
+     */
+    public List<VoArIntakeLossMonth> lossMonthRecords(Long intakeId){
+        return statisticsDao.lossMonthRecords(intakeId, 0, totalRecordsCount);
+    }
+
+
+    /**
+     * 寰楀埌鍙栨按鍙f棩鐢ㄦ按璁板綍锛坱otalRecordsCount鏉★級
+     * @param intakeId
+     */
+    public List<VoArIntakeAmountDay> amountDayRecords(Long intakeId){
+        return statisticsDao.amountDayRecords(intakeId, 0, totalRecordsCount);
+    }
+
+
+    /**
+     * 寰楀埌鍙栨按鍙f湀鐢ㄦ按璁板綍锛坱otalRecordsCount鏉★級
+     * @param intakeId
+     */
+    public List<VoArIntakeAmountMonth> amountMonthRecords(Long intakeId){
+        return statisticsDao.amountMonthRecords(intakeId, 0, totalRecordsCount);
+    }
+
+}
diff --git "a/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/allRound/\350\257\264\346\230\216.txt" "b/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/allRound/\350\257\264\346\230\216.txt"
new file mode 100644
index 0000000..3129cac
--- /dev/null
+++ "b/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/allRound/\350\257\264\346\230\216.txt"
@@ -0,0 +1 @@
+allRound浠h〃缁煎悎
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/largeScreen/Ls4StatisticsCtrl.java b/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/largeScreen/Ls4StatisticsCtrl.java
new file mode 100644
index 0000000..5c35c16
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/largeScreen/Ls4StatisticsCtrl.java
@@ -0,0 +1,158 @@
+package com.dy.pipIrrStatistics.largeScreen;
+
+import com.dy.common.aop.SsoAop;
+import com.dy.common.util.DateTime;
+import com.dy.common.webUtil.BaseResponse;
+import com.dy.common.webUtil.BaseResponseUtils;
+import com.dy.common.webUtil.ResultCodeMsg;
+import com.dy.pipIrrGlobal.voLargeScreen.VoBaseInfo;
+import com.dy.pipIrrGlobal.voLargeScreen.VoCurrentInfo;
+import com.dy.pipIrrGlobal.voLargeScreen.VoMonitorInfo;
+import com.dy.pipIrrGlobal.voSpecial.VoTopXClient;
+import com.dy.pipIrrGlobal.voSpecial.VoTopXIntake;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.media.Content;
+import io.swagger.v3.oas.annotations.media.Schema;
+import io.swagger.v3.oas.annotations.responses.ApiResponse;
+import io.swagger.v3.oas.annotations.responses.ApiResponses;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.MediaType;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @Author: liurunyu
+ * @Date: 2025/2/6 10:32
+ * @Description
+ */
+@Slf4j
+@Tag(name = "澶у睆灞曠ず", description = "澶у睆灞曠ず---缁熻淇℃伅")
+@RestController
+@RequestMapping(path = "ls4Statistics")
+@SuppressWarnings("unchecked")//java鐗堟湰瓒婇珮锛屽娉涘瀷绾︽潫瓒婁弗锛屾墍浠ラ厤缃甋uppressWarnings("unchecked")
+public class Ls4StatisticsCtrl {
+
+    private Ls4StatisticsSv sv;
+
+    @Autowired
+    private void setSv(Ls4StatisticsSv sv) {
+        this.sv = sv;
+    }
+
+
+    /**
+     * 澶у睆灞曠ず---鍩烘湰淇℃伅
+     * @return 鍩烘湰淇℃伅
+     */
+    @Operation(summary = "澶у睆灞曠ず", description = "鍩烘湰淇℃伅")
+    @ApiResponses(value = {
+            @ApiResponse(
+                    responseCode = ResultCodeMsg.RsCode.SUCCESS_CODE,
+                    description = "鍩烘湰淇℃伅锛圔aseResponse.content:VoBaseInfo{}锛�",
+                    content = {@Content(mediaType = MediaType.APPLICATION_JSON_VALUE,
+                            schema = @Schema(implementation = VoBaseInfo.class))}
+            )
+    })
+    @GetMapping(path = "baseInfo")
+    @SsoAop()
+    public BaseResponse<VoBaseInfo> baseInfo() {
+        VoBaseInfo res = this.sv.baseInfo();
+        return BaseResponseUtils.buildSuccess(res);
+    }
+
+
+    /**
+     * 澶у睆灞曠ず---褰撳墠淇℃伅
+     * @return 褰撳墠淇℃伅
+     */
+    @Operation(summary = "澶у睆灞曠ず", description = "褰撳墠淇℃伅")
+    @ApiResponses(value = {
+            @ApiResponse(
+                    responseCode = ResultCodeMsg.RsCode.SUCCESS_CODE,
+                    description = "鍩烘湰淇℃伅锛圔aseResponse.content:VoCurrentInfo{}锛�",
+                    content = {@Content(mediaType = MediaType.APPLICATION_JSON_VALUE,
+                            schema = @Schema(implementation = VoCurrentInfo.class))}
+            )
+    })
+    @GetMapping(path = "currentInfo")
+    @SsoAop()
+    public BaseResponse<VoCurrentInfo> currentInfo() throws Exception {
+        VoCurrentInfo res = this.sv.currentInfo();
+        return BaseResponseUtils.buildSuccess(res);
+    }
+
+    /**
+     * 澶у睆灞曠ず---鐩戞祴淇℃伅
+     * @return 鐩戞祴淇℃伅
+     * @param fromDt 寮�濮嬫棩鏈燂紙鏍煎紡 yyyy-mm-dd锛�
+     */
+    @Operation(summary = "澶у睆灞曠ず", description = "鐩戞祴淇℃伅")
+    @ApiResponses(value = {
+            @ApiResponse(
+                    responseCode = ResultCodeMsg.RsCode.SUCCESS_CODE,
+                    description = "鍩烘湰淇℃伅锛圔aseResponse.content:VoMonitorInfo{}锛�",
+                    content = {@Content(mediaType = MediaType.APPLICATION_JSON_VALUE,
+                            schema = @Schema(implementation = VoMonitorInfo.class))}
+            )
+    })
+    @GetMapping(path = "monitorInfo")
+    @SsoAop()
+    public BaseResponse<VoMonitorInfo> monitorInfo(String fromDt) throws Exception {
+        if(fromDt == null || fromDt.trim().equals("")){
+            return BaseResponseUtils.buildException("寮�濮嬫棩鏈熶笉鑳戒负绌�");
+        }
+        Date startDt = DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(fromDt + " 00:00:00");
+        VoMonitorInfo res = this.sv.monitorInfo(startDt);
+        return BaseResponseUtils.buildSuccess(res);
+    }
+
+
+
+    /**
+     * 鏄ㄦ棩鍐滄埛鐢ㄦ按鍓�5鍚�
+     * @return 鏁版嵁闆嗗悎
+     */
+    @Operation(summary = "鏄ㄦ棩鍐滄埛鐢ㄦ按鍓�5鍚�", description = "鏄ㄦ棩鍐滄埛鐢ㄦ按鍓�5鍚嶇粺璁�")
+    @ApiResponses(value = {
+            @ApiResponse(
+                    responseCode = ResultCodeMsg.RsCode.SUCCESS_CODE,
+                    description = "鏄ㄦ棩鍐滄埛鐢ㄦ按鍓�5鍚嶇粺璁★紙BaseResponse.content:[VoTopXClient{}]锛�",
+                    content = {@Content(mediaType = MediaType.APPLICATION_JSON_VALUE,
+                            schema = @Schema(implementation = VoTopXClient.class))}
+            )
+    })
+    @GetMapping(path = "top5ClientYesterday")
+    @SsoAop()
+    public BaseResponse<List<VoTopXClient>> top5ClientYesterday(){
+        List<VoTopXClient> res = this.sv.top5ClientYesterday();
+        return BaseResponseUtils.buildSuccess(res);
+    }
+
+    /**
+     * 鏄ㄦ棩鍙栨按鍙g敤姘村墠5鍚�
+     * @return 鏁版嵁闆嗗悎
+     */
+    @Operation(summary = "鏄ㄦ棩鍙栨按鍙g敤姘村墠5鍚�", description = "鏄ㄦ棩鍙栨按鍙g敤姘村墠5鍚嶇粺璁�")
+    @ApiResponses(value = {
+            @ApiResponse(
+                    responseCode = ResultCodeMsg.RsCode.SUCCESS_CODE,
+                    description = "鏄ㄦ棩鍙栨按鍙g敤姘村墠5鍚嶇粺璁★紙BaseResponse.content:[VoTopXIntake{}]锛�",
+                    content = {@Content(mediaType = MediaType.APPLICATION_JSON_VALUE,
+                            schema = @Schema(implementation = VoTopXIntake.class))}
+            )
+    })
+    @GetMapping(path = "top5IntakeYesterday")
+    @SsoAop()
+    public BaseResponse<List<VoTopXIntake>> top5IntakeYesterday(){
+        List<VoTopXIntake> res = this.sv.top5IntakeYesterday();
+        return BaseResponseUtils.buildSuccess(res);
+    }
+
+
+}
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/largeScreen/Ls4StatisticsSv.java b/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/largeScreen/Ls4StatisticsSv.java
new file mode 100644
index 0000000..b45bb83
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/largeScreen/Ls4StatisticsSv.java
@@ -0,0 +1,170 @@
+package com.dy.pipIrrStatistics.largeScreen;
+
+import com.alibaba.fastjson2.JSON;
+import com.alibaba.fastjson2.JSONObject;
+import com.dy.common.mw.protocol.Command;
+import com.dy.common.mw.protocol.CommandBackParam;
+import com.dy.common.util.DateTime;
+import com.dy.common.util.IDLongGenerator;
+import com.dy.common.webUtil.BaseResponse;
+import com.dy.pipIrrGlobal.daoLargeScreen.Ls4StatisticsMapper;
+import com.dy.pipIrrGlobal.rtuMw.CodeLocal;
+import com.dy.pipIrrGlobal.rtuMw.Web2RtuMw;
+import com.dy.pipIrrGlobal.voLargeScreen.VoBaseInfo;
+import com.dy.pipIrrGlobal.voLargeScreen.VoCurrentInfo;
+import com.dy.pipIrrGlobal.voLargeScreen.VoMonitorInfo;
+import com.dy.pipIrrGlobal.voSpecial.VoTopXClient;
+import com.dy.pipIrrGlobal.voSpecial.VoTopXIntake;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.core.env.Environment;
+import org.springframework.stereotype.Service;
+import org.springframework.web.client.RestTemplate;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @Author: liurunyu
+ * @Date: 2025/2/6 10:33
+ * @Description
+ */
+@Slf4j
+@Service
+public class Ls4StatisticsSv extends Web2RtuMw {
+    private Environment env;
+    private RestTemplate restTemplate;
+    private Ls4StatisticsMapper dao ;
+
+    @Autowired
+    private void setEnvironment(Environment env){
+        this.env = env;
+    }
+    @Autowired
+    private void setRestTemplate(RestTemplate restTemplate){
+        this.restTemplate = restTemplate;
+    }
+    @Autowired
+    private void setDao(Ls4StatisticsMapper dao){
+        this.dao = dao;
+    }
+
+    /**
+     * 鍩烘湰淇℃伅缁熻
+     * @return
+     */
+    public VoBaseInfo baseInfo(){
+        VoBaseInfo vo = new VoBaseInfo() ;
+        vo.totalCountOfTown = this.dao.totalCountOfDistrict(3) ;
+        vo.totalCountOfVillage = this.dao.totalCountOfDistrict(4) ;
+        vo.totalCountOfBlock = this.dao.totalCountOfBlock() ;
+        vo.totalCountOfDivide = this.dao.totalCountOfDivide() ;
+        vo.totalCountOfIntake = this.dao.totalCountOfIntake() ;
+        vo.totalCountOfIntakeWithController = this.dao.totalCountOfIntakeWithController() ;
+        vo.totalCountOfIntakeWithoutController = this.dao.totalCountOfIntakeWithoutController() ;
+        vo.totalCountOfController = this.dao.totalCountOfController() ;
+        vo.totalCountOfControllerTramp = this.dao.totalCountOfControllerTramp() ;
+        return vo ;
+    }
+
+    /**
+     * 褰撳墠淇℃伅缁熻
+     * @return
+     */
+    public VoCurrentInfo currentInfo() throws Exception{
+        Integer totalCountOfIntake = this.dao.totalCountOfIntake() ;
+        Date dtAtXHourBefore = DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(DateTime.lastXHour_yyyy_MM_dd_HH_mm_ss(24)) ;//X涓皬鏃跺墠
+        VoCurrentInfo vo = new VoCurrentInfo() ;
+        Integer[] result = this.queryMwOnAndOffLine() ;
+        vo.cTotalCountOfOnLine = result[0] ;
+        vo.cTotalCountOfOffLine = totalCountOfIntake - vo.cTotalCountOfOnLine;
+
+        vo.cTotalCountOfOpenValve = this.dao.totalCountOfOpenValve(dtAtXHourBefore) ;
+        vo.cTotalCountOfCloseValve = this.dao.totalCountOfCloseValve(dtAtXHourBefore) ;
+        vo.cTotalCountOfUnknownValve = totalCountOfIntake - vo.cTotalCountOfOpenValve - vo.cTotalCountOfCloseValve;
+
+        vo.cTotalCountOfAlarm = this.dao.totalCountOfAlarm(dtAtXHourBefore) ;
+        vo.cTotalCountOfNoAlarm = this.dao.totalCountOfNoAlarm(dtAtXHourBefore) ;
+        vo.cTotalCountOfUnknownAlarm = totalCountOfIntake - vo.cTotalCountOfAlarm - vo.cTotalCountOfNoAlarm;
+        return vo ;
+    }
+
+    /**
+     * 鐩戞祴淇℃伅缁熻
+     * @return
+     */
+    public VoMonitorInfo monitorInfo(Date fromDt){
+        VoMonitorInfo vo = new VoMonitorInfo() ;
+        vo.mTotalCountOfReport = this.dao.mTotalCountOfReport(fromDt) ;
+        vo.mTotalCountOfNoReport = this.dao.mTotalCountOfNoReport(fromDt) ;
+        vo.mTotalCountOfNeverReport = this.dao.mTotalCountOfNeverReport() ;
+
+        vo.mTotalCountOfOpenValve = this.dao.mTotalCountOfOpenValve(fromDt) ;
+        vo.mTotalCountOfCloseValve = this.dao.mTotalCountOfCloseValve(fromDt) ;
+        vo.mTotalCountOfNeverOpenValve = this.dao.mTotalCountOfNeverOpenValve() ;
+
+        vo.mTotalCountOfAlarm = this.dao.mTotalCountOfAlarm(fromDt) ;
+        vo.mTotalCountOfNoAlarm = this.dao.mTotalCountOfNoAlarm(fromDt) ;
+        vo.mTotalCountOfNeverAlarm = this.dao.mTotalCountOfNeverAlarm() ;
+
+        return vo ;
+    }
+
+    /**
+     * 鏌ヨ鍙栨按鍙e湪绾垮拰绂荤嚎缁熻
+     * @return
+     */
+    private Integer[] queryMwOnAndOffLine() {
+        Integer[] result = new Integer[]{0,0} ;
+        //鍚戦�氫俊涓棿浠跺彂鍏冲懡浠わ紝鏌ヨRTU鍦ㄧ嚎缁熻鎯呭喌
+        Command com = this.createInnerCommand(CodeLocal.onLineStatistics);
+        String rqUrl = this.get2MwRequestUrl(this.env, ContextComSend) ;
+        BaseResponse res = this.sendPostRequest2Mw(restTemplate, rqUrl, com) ;
+        if(res != null){
+            if(res.isSuccess()){
+                Command reCom = JSON.parseObject(res.getContent() == null ? null : JSON.toJSONString(res.getContent()), Command.class) ;
+                CommandBackParam bakParam = JSON.parseObject((reCom== null || reCom.param == null) ? null : JSON.toJSONString(reCom.param), CommandBackParam.class) ;
+                if(bakParam != null){
+                    if(bakParam.getSuccess().booleanValue() && reCom.getAttachment() != null){
+                        //閫氫俊涓棿浠舵垚鍔熻繑鍥炲懡浠ょ粨鏋�
+                        JSONObject comRes = (JSONObject) JSON.toJSON(reCom.getAttachment());
+                        result[0] = comRes.getInteger("onLineNum") ;
+                        result[1] = comRes.getInteger("offLineNum") ;
+                    }
+                }else{
+                    log.error("閫氫俊涓棿浠惰繑鍥炲唴閮ㄥ懡浠ょ粨鏋滀腑涓嶅寘鍚獵ommandBackParam绫诲瀷鍙傛暟");
+                }
+            }else{
+                log.error("閫氫俊涓棿浠惰繑鍥炲唴閮ㄥ懡浠ゆ墽琛屽け璐�" + (res.getMsg() == null? "" : ("锛�" + res.getMsg()))) ;
+            }
+        }else{
+            log.error("閫氫俊涓棿浠惰繑鍥炲唴閮ㄥ懡浠ょ粨鏋滀负null");
+        }
+        return result ;
+    }
+
+
+
+    /**
+     * 鏄ㄦ棩鍐滄埛鐢ㄦ按鍓�5鍚嶇粺璁�
+     * @return 鏁版嵁闆嗗悎
+     */
+    public List<VoTopXClient> top5ClientYesterday() {
+        int[] yesterday = DateTime.yyyy_MM_dd_2_ymdGroup(DateTime.lastXDay_yyyy_MM_dd(1)) ;
+        Long idStart = IDLongGenerator.generateOneDayStartId(yesterday[0], yesterday[1], yesterday[2]) ;
+        Long idEnd = IDLongGenerator.generateOneDayEndId(yesterday[0], yesterday[1], yesterday[2]) ;
+        return this.dao.topXClientAtCertainDay(idStart, idEnd, 5) ;
+    }
+
+    /**
+     * 鏄ㄦ棩鍙栨按鍙g敤姘村墠5鍚嶇粺璁�
+     * @return 鏁版嵁闆嗗悎
+     */
+    public List<VoTopXIntake> top5IntakeYesterday() {
+        int[] yesterday = DateTime.yyyy_MM_dd_2_ymdGroup(DateTime.lastXDay_yyyy_MM_dd(1)) ;
+        Long idStart = IDLongGenerator.generateOneDayStartId(yesterday[0], yesterday[1], yesterday[2]) ;
+        Long idEnd = IDLongGenerator.generateOneDayEndId(yesterday[0], yesterday[1], yesterday[2]) ;
+        return this.dao.topXIntakeAtCertainDay(idStart, idEnd, 5) ;
+    }
+
+}
diff --git "a/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/largeScreen/\350\257\264\346\230\216.txt" "b/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/largeScreen/\350\257\264\346\230\216.txt"
new file mode 100644
index 0000000..952e79b
--- /dev/null
+++ "b/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/largeScreen/\350\257\264\346\230\216.txt"
@@ -0,0 +1 @@
+澶у睆绯荤粺锛坙argeScreen锛岀缉鍐橪s锛�
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/special/QoAbnormalCloseValve.java b/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/special/QoAbnormalCloseValve.java
new file mode 100644
index 0000000..07545d5
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/special/QoAbnormalCloseValve.java
@@ -0,0 +1,56 @@
+package com.dy.pipIrrStatistics.special;
+
+import com.dy.common.webUtil.QueryConditionVo;
+import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.validation.constraints.NotBlank;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.util.Date;
+
+/**
+ * @Author: liurunyu
+ * @Date: 2025/2/8 11:18
+ * @Description
+ */
+
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class QoAbnormalCloseValve extends QueryConditionVo {
+    /**
+     * 鏃ユ湡
+     */
+    @Schema(description = "鏃ユ湡", requiredMode = Schema.RequiredMode.REQUIRED)
+    @NotBlank(message = "鏃ユ湡涓嶈兘涓虹┖")
+    public String atDt;
+    /**
+     * 鏃ユ湡 鏍煎紡涓簓yyy-mm-dd hh:mm:ss
+     * 鍐呴儴杞崲鐢紝鍓嶇涓嶅彲瑙�
+     */
+    @Schema(hidden = true)
+    public Date atDateStart ;
+    /**
+     * 鏃ユ湡 鏍煎紡涓簓yyy-mm-dd hh:mm:ss
+     * 鍐呴儴杞崲鐢紝鍓嶇涓嶅彲瑙�
+     */
+    @Schema(hidden = true)
+    public Date atDateEnd ;
+
+    /**
+     * 鍙栨按鍙g紪鍙�
+     */
+    @Schema(description = "鍙栨按鍙g紪鍙�", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+    public String intakeNum ;
+
+    /**
+     * 鍐滄埛缂栧彿
+     */
+    @Schema(description = "鍐滄埛缂栧彿", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+    public String clientNum ;
+    /**
+     * 鍐滄埛濮撳悕
+     */
+    @Schema(description = "鍐滄埛濮撳悕", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+    public String clientName ;
+
+}
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/special/QoSteal.java b/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/special/QoSteal.java
new file mode 100644
index 0000000..13d5e71
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/special/QoSteal.java
@@ -0,0 +1,55 @@
+package com.dy.pipIrrStatistics.special;
+
+import com.dy.common.webUtil.QueryConditionVo;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import jakarta.validation.constraints.NotBlank;
+
+import java.util.Date;
+
+/**
+ * @Author: liurunyu
+ * @Date: 2025/2/7 13:56
+ * @Description
+ */
+
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class QoSteal extends QueryConditionVo {
+    /**
+     * 鏃ユ湡
+     */
+    @Schema(description = "鏃ユ湡", requiredMode = Schema.RequiredMode.REQUIRED)
+    @NotBlank(message = "鏃ユ湡涓嶈兘涓虹┖")
+    public String fromDt;
+
+    /**
+     * 鏃ユ湡 鏍煎紡涓簓yyy-mm-dd hh:mm:ss
+     * 鍐呴儴杞崲鐢紝鍓嶇涓嶅彲瑙�
+     */
+    @Schema(hidden = true)
+    public Date fromDate ;
+
+    /**
+     * 鍙栨按鍙g紪鍙�
+     */
+    @Schema(description = "鍙栨按鍙g紪鍙�", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+    public String intakeNum ;
+
+    /**
+     * 鍐滄埛缂栧彿
+     */
+    @Schema(description = "鍐滄埛缂栧彿", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+    public String clientNum ;
+    /**
+     * 鍐滄埛濮撳悕
+     */
+    @Schema(description = "鍐滄埛濮撳悕", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+    public String clientName ;
+   /**
+     * 鐢ㄦ按鏃堕暱
+     */
+    @Schema(description = "鐢ㄦ按鏃堕暱", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+    public Integer duration ;
+}
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/special/SpecialCtrl.java b/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/special/SpecialCtrl.java
new file mode 100644
index 0000000..0c5cdcf
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/special/SpecialCtrl.java
@@ -0,0 +1,96 @@
+package com.dy.pipIrrStatistics.special;
+
+import com.dy.common.aop.SsoAop;
+import com.dy.common.webUtil.BaseResponse;
+import com.dy.common.webUtil.BaseResponseUtils;
+import com.dy.common.webUtil.QueryResultVo;
+import com.dy.common.webUtil.ResultCodeMsg;
+import com.dy.pipIrrGlobal.voSpecial.VoAbnormalCloseValve;
+import com.dy.pipIrrGlobal.voSpecial.VoSteal;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.media.Content;
+import io.swagger.v3.oas.annotations.media.Schema;
+import io.swagger.v3.oas.annotations.responses.ApiResponse;
+import io.swagger.v3.oas.annotations.responses.ApiResponses;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import jakarta.validation.Valid;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.MediaType;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+import java.util.Objects;
+
+/**
+ * @Author: liurunyu
+ * @Date: 2025/2/7 13:52
+ * @Description 涓撻缁熻
+ */
+@Slf4j
+@Tag(name = "涓撻缁熻", description = "涓撻缁熻")
+@RestController
+@RequestMapping(path = "special")
+@SuppressWarnings("unchecked")//java鐗堟湰瓒婇珮锛屽娉涘瀷绾︽潫瓒婁弗锛屾墍浠ラ厤缃甋uppressWarnings("unchecked")
+public class SpecialCtrl {
+
+    private SpecialSv sv;
+
+    @Autowired
+    private void setSv(SpecialSv sv) {
+        this.sv = sv;
+    }
+
+
+    /**
+     * 娑夊珜鍋锋按
+     * @return 鏁版嵁闆嗗悎
+     */
+    @Operation(summary = "娑夊珜鍋锋按", description = "娑夊珜鍋锋按缁熻")
+    @ApiResponses(value = {
+            @ApiResponse(
+                    responseCode = ResultCodeMsg.RsCode.SUCCESS_CODE,
+                    description = "娑夊珜鍋锋按缁熻锛圔aseResponse.content:QueryResultVo{[VoSteal{}]}锛�",
+                    content = {@Content(mediaType = MediaType.APPLICATION_JSON_VALUE,
+                            schema = @Schema(implementation = VoSteal.class))}
+            )
+    })
+    @GetMapping(path = "steal")
+    @SsoAop()
+    public BaseResponse<QueryResultVo<List<VoSteal>>> steal(@Valid QoSteal qo, BindingResult bindingResult) throws Exception {
+        if(bindingResult != null && bindingResult.hasErrors()){
+            return BaseResponseUtils.buildFail(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage());
+        }
+        QueryResultVo<List<VoSteal>> res = this.sv.steal(qo);
+        return BaseResponseUtils.buildSuccess(res);
+    }
+
+    /**
+     * 寮傚父鍏抽榾
+     * @return 鏁版嵁闆嗗悎
+     */
+    @Operation(summary = "寮傚父鍏抽榾", description = "寮傚父鍏抽榾缁熻")
+    @ApiResponses(value = {
+            @ApiResponse(
+                    responseCode = ResultCodeMsg.RsCode.SUCCESS_CODE,
+                    description = "寮傚父鍏抽榾缁熻锛圔aseResponse.content:QueryResultVo{[VoSteal{}]}锛�",
+                    content = {@Content(mediaType = MediaType.APPLICATION_JSON_VALUE,
+                            schema = @Schema(implementation = VoAbnormalCloseValve.class))}
+            )
+    })
+    @GetMapping(path = "abnormalCloseValve")
+    @SsoAop()
+    public BaseResponse<QueryResultVo<List<VoAbnormalCloseValve>>> abnormalCloseValve(@Valid QoAbnormalCloseValve qo, BindingResult bindingResult) throws Exception {
+        if(bindingResult != null && bindingResult.hasErrors()){
+            return BaseResponseUtils.buildFail(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage());
+        }
+        QueryResultVo<List<VoAbnormalCloseValve>> res = this.sv.abnormalCloseValve(qo);
+        return BaseResponseUtils.buildSuccess(res);
+    }
+
+
+
+}
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/special/SpecialSv.java b/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/special/SpecialSv.java
new file mode 100644
index 0000000..def6e7b
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/special/SpecialSv.java
@@ -0,0 +1,94 @@
+package com.dy.pipIrrStatistics.special;
+
+import com.dy.common.mw.protocol.p206V1.CommonV1;
+import com.dy.common.util.DateTime;
+import com.dy.common.webUtil.QueryResultVo;
+import com.dy.pipIrrGlobal.daoSpecial.SpecialMapper;
+import com.dy.pipIrrGlobal.voSpecial.VoAbnormalCloseValve;
+import com.dy.pipIrrGlobal.voSpecial.VoSteal;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.dubbo.common.utils.PojoUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import java.util.List;
+import java.util.Map;
+import java.util.Optional;
+
+/**
+ * @Author: liurunyu
+ * @Date: 2025/2/7 13:52
+ * @Description 涓撻缁熻鏈嶅姟
+ */
+@Slf4j
+@Service
+public class SpecialSv {
+    private SpecialMapper dao ;
+
+    @Autowired
+    private void setDao(SpecialMapper dao){
+        this.dao = dao;
+    }
+
+    /**
+     * 娑夊珜鍋锋按缁熻
+     * @param qo 鏌ヨ鍙傛暟
+     * @return 鏁版嵁闆嗗悎
+     */
+    public QueryResultVo<List<VoSteal>> steal(QoSteal qo) throws Exception {
+        if(qo.fromDt != null && !qo.fromDt.trim().equals("")) {
+            qo.fromDate = DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(qo.fromDt + " 00:00:00") ;
+        }
+
+        Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(qo) ;
+
+        Long itemTotal = Optional.ofNullable(this.dao.selectStealTotal(params)).orElse(0L);
+
+        QueryResultVo<List<VoSteal>> rsVo = new QueryResultVo<>() ;
+        rsVo.pageSize = qo.pageSize ;
+        rsVo.pageCurr = qo.pageCurr ;
+        rsVo.calculateAndSet(itemTotal, params);
+
+        List<VoSteal> list = this.dao.selectStealSome(params) ;
+        if (list != null && list.size() > 0) {
+            for (VoSteal vo : list) {
+                vo.openType = CommonV1.openCloseValveType(vo.opType) ;
+                vo.closeType = CommonV1.openCloseValveType(vo.clType) ;
+            }
+        }
+        rsVo.obj = list;
+        return rsVo ;
+    }
+
+
+    /**
+     * 寮傚父鍏抽榾缁熻
+     * @param qo 鏌ヨ鍙傛暟
+     * @return 鏁版嵁闆嗗悎
+     */
+    public QueryResultVo<List<VoAbnormalCloseValve>> abnormalCloseValve(QoAbnormalCloseValve qo) throws Exception {
+        if(qo.atDt != null && !qo.atDt.trim().equals("")) {
+            qo.atDateStart = DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(qo.atDt + " 00:00:00") ;
+            qo.atDateEnd = DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(qo.atDt + " 23:59:59") ;
+        }
+
+        Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(qo) ;
+
+        Long itemTotal = Optional.ofNullable(this.dao.selectAbnormalCloseValveTotal(params)).orElse(0L);
+
+        QueryResultVo<List<VoAbnormalCloseValve>> rsVo = new QueryResultVo<>() ;
+        rsVo.pageSize = qo.pageSize ;
+        rsVo.pageCurr = qo.pageCurr ;
+        rsVo.calculateAndSet(itemTotal, params);
+
+        List<VoAbnormalCloseValve> list = this.dao.selectAbnormalCloseValveSome(params) ;
+        if (list != null && list.size() > 0) {
+            for (VoAbnormalCloseValve vo : list) {
+                vo.openType = CommonV1.openCloseValveType(vo.opType) ;
+                vo.closeType = CommonV1.openCloseValveType(vo.clType) ;
+            }
+        }
+        rsVo.obj = list;
+        return rsVo ;
+    }
+
+}
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/statistics/StatisticsListener.java b/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/statistics/StatisticsListener.java
index 53746fb..b313e63 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/statistics/StatisticsListener.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/statistics/StatisticsListener.java
@@ -18,7 +18,7 @@
  * @Author: liurunyu
  * @Date: 2024/7/22 14:39
  * @Description
- * 鐩戝惉鍣紝瀹炵幇鍔熻兘锛氬湪绯荤粺鍚姩鏃跺垵濮嬪寲锛屽悜鏁版嵁搴撲腑鎻掑叆鏁版嵁
+ * 鐩戝惉鍣紝瀹炵幇鍔熻兘锛氬惎鍔ㄦ棩缁熻瀹氭椂浠诲姟
  * 鏈洃鍚櫒涓嶈兘閲囩敤ServletContextListener鏂瑰紡锛屽洜涓篠ervlet涓婁笅鏂嘋ontext鍒涘缓鍚�
  * Spring瀹瑰櫒骞舵病鏈夊垱寤哄畬锛岃�屾湰绫讳腑鐢ㄤ簡Spring瀹瑰櫒涓殑Bean锛屽嵆*Dao 銆�
  * 鎵�浠ラ噰鐢ㄤ簡Spring浜嬩欢鐩戝惉鍣ㄦ潵瀹炵幇
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/pom.xml b/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/pom.xml
index 21a290a..edfc9a7 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/pom.xml
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/pom.xml
@@ -2,14 +2,6 @@
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
     <modelVersion>4.0.0</modelVersion>
-    <dependencies>
-        <dependency>
-            <groupId>com.dy</groupId>
-            <artifactId>pipIrr-web-sell</artifactId>
-            <version>1.0.0</version>
-            <scope>compile</scope>
-        </dependency>
-    </dependencies>
 
     <parent>
         <artifactId>pipIrr-web</artifactId>
@@ -19,12 +11,36 @@
     </parent>
 
     <packaging>jar</packaging>
-
-    <groupId>com.dy</groupId>
     <artifactId>pipIrr-web-wechat</artifactId>
     <name>pipIrr-web-wechat</name>
     <description>寰俊灏忕▼搴�</description>
 
+    <dependencies>
+        <!--  闃块噷浜戠煭淇′緷璧�  -->
+        <dependency>
+            <groupId>com.aliyun</groupId>
+            <artifactId>aliyun-java-sdk-core</artifactId>
+            <version>4.5.16</version>
+        </dependency>
+        <dependency>
+            <groupId>com.aliyun</groupId>
+            <artifactId>aliyun-java-sdk-dysmsapi</artifactId>
+            <version>2.1.0</version>
+        </dependency>
+
+        <dependency>
+            <groupId>javax.xml.bind</groupId>
+            <artifactId>jaxb-api</artifactId>
+            <version>2.3.1</version>
+        </dependency>
+
+        <!--OkHttp-->
+        <dependency>
+            <groupId>com.squareup.okhttp3</groupId>
+            <artifactId>okhttp</artifactId>
+            <version>4.9.2</version>
+        </dependency>
+    </dependencies>
     <build>
         <plugins>
             <!-- 鐢熸垚涓嶅寘鍚緷璧杍ar鐨勫彲鎵цjar鍖�
diff --git a/pipIrr-platform/pipIrr-web/pom.xml b/pipIrr-platform/pipIrr-web/pom.xml
index 4998d97..077869b 100644
--- a/pipIrr-platform/pipIrr-web/pom.xml
+++ b/pipIrr-platform/pipIrr-web/pom.xml
@@ -76,6 +76,11 @@
             <artifactId>spring-boot-devtools</artifactId>
             <scope>runtime</scope>
         </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-websocket</artifactId>
+        </dependency>
+
         <!-- lombok -->
         <dependency>
             <groupId>org.projectlombok</groupId>
diff --git a/pipIrr-platform/pom.xml b/pipIrr-platform/pom.xml
index 97dc779..0f86264 100644
--- a/pipIrr-platform/pom.xml
+++ b/pipIrr-platform/pom.xml
@@ -27,6 +27,9 @@
     </modules>
 
     <properties>
+        <!-- 涓巎ava.version閰嶇疆鍦ㄤ竴璧凤紝璁剧疆缂栫爜闆�-->
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
         <java.version>20</java.version>
         <tomcat.version>10.1.12</tomcat.version>
         <spring.boot.version>3.1.3</spring.boot.version>
@@ -66,7 +69,6 @@
                 <scope>import</scope>
             </dependency>
 
-            <!-- 杈撳叆鍙傛暟鎹獙璇� -->
             <dependency>
                 <groupId>org.springframework.boot</groupId>
                 <artifactId>spring-boot-starter-validation</artifactId>
@@ -89,6 +91,13 @@
                 <type>pom</type>
                 <scope>import</scope>
             </dependency>
+            <dependency>
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-starter-websocket</artifactId>
+                <version>3.1.3</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
 
             <!-- lombok -->
             <dependency>
diff --git "a/pipIrr-platform/\346\226\207\346\241\243/dbSQL/area_code_2023.sql" "b/pipIrr-platform/\346\226\207\346\241\243/dbSQL/area_code_2023.sql"
new file mode 100644
index 0000000..cffc695
--- /dev/null
+++ "b/pipIrr-platform/\346\226\207\346\241\243/dbSQL/area_code_2023.sql"
Binary files differ
diff --git "a/pipIrr-platform/\346\226\207\346\241\243/dbSQL/pipirr_ym\0502025-02-10\051.sql" "b/pipIrr-platform/\346\226\207\346\241\243/dbSQL/pipirr_ym\0502025-02-10\051.sql"
new file mode 100644
index 0000000..0bd477c
--- /dev/null
+++ "b/pipIrr-platform/\346\226\207\346\241\243/dbSQL/pipirr_ym\0502025-02-10\051.sql"
@@ -0,0 +1,2736 @@
+/*
+ Navicat Premium Data Transfer
+
+ Source Server         : 鍏冭皨闃块噷浜�
+ Source Server Type    : MySQL
+ Source Server Version : 80034
+ Source Host           : 8.130.130.233:3306
+ Source Schema         : pipirr_ym
+
+ Target Server Type    : MySQL
+ Target Server Version : 80034
+ File Encoding         : 65001
+
+ Date: 10/02/2025 09:44:10
+*/
+
+SET NAMES utf8mb4;
+SET FOREIGN_KEY_CHECKS = 0;
+
+-- ----------------------------
+-- Table structure for area_code_2023
+-- ----------------------------
+DROP TABLE IF EXISTS `area_code_2023`;
+CREATE TABLE `area_code_2023`  (
+  `code` bigint UNSIGNED NOT NULL COMMENT '鍖哄垝浠g爜',
+  `name` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT '' COMMENT '鍚嶇О',
+  `level` tinyint(1) NOT NULL COMMENT '绾у埆1-5,鐪佸競鍘块晣鏉�',
+  `pcode` bigint NULL DEFAULT NULL COMMENT '鐖剁骇鍖哄垝浠g爜',
+  `category` int NULL DEFAULT NULL COMMENT '鍩庝埂鍒嗙被',
+  PRIMARY KEY (`code`) USING BTREE,
+  INDEX `name`(`name` ASC) USING BTREE,
+  INDEX `level`(`level` ASC) USING BTREE,
+  INDEX `pcode`(`pcode` ASC) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Table structure for ba_block
+-- ----------------------------
+DROP TABLE IF EXISTS `ba_block`;
+CREATE TABLE `ba_block`  (
+  `id` bigint NOT NULL COMMENT '涓婚敭',
+  `name` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '鐗囧尯鍚嶇О',
+  `header` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '璐熻矗浜�',
+  `phone` varchar(11) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '璐熻矗浜虹數璇�',
+  `area` int NULL DEFAULT NULL COMMENT '绉嶆闈㈢Н',
+  `color` varchar(7) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '鐢靛瓙鍦板浘鍖哄煙鐫�鑹�',
+  `remark` varchar(100) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `deleted` tinyint NULL DEFAULT 0,
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb3 COLLATE = utf8mb3_general_ci ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Table structure for ba_captcha
+-- ----------------------------
+DROP TABLE IF EXISTS `ba_captcha`;
+CREATE TABLE `ba_captcha`  (
+  `id` bigint NOT NULL COMMENT '涓婚敭',
+  `token` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '楠岃瘉鐮乼oken',
+  `code` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '楠岃瘉瀛楃',
+  `expiration` bigint NULL DEFAULT NULL COMMENT '杩囨湡鏃堕棿',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '鍥惧舰楠岃瘉璁板綍琛�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Table structure for ba_client
+-- ----------------------------
+DROP TABLE IF EXISTS `ba_client`;
+CREATE TABLE `ba_client`  (
+  `id` bigint NOT NULL COMMENT '涓婚敭',
+  `countyId` bigint NULL DEFAULT NULL COMMENT '鍘縄D',
+  `townId` bigint NULL DEFAULT NULL COMMENT '闀嘔D',
+  `villageId` bigint NULL DEFAULT NULL COMMENT '鏉慖D',
+  `blockId` bigint NULL DEFAULT NULL COMMENT '澶栭敭锛屾寚鍚戠墖鍖�',
+  `divideId` bigint NULL DEFAULT NULL COMMENT '澶栭敭锛屾寚鍚戝垎姘存埧',
+  `typeId` bigint NULL DEFAULT NULL COMMENT '澶栭敭锛屾寚鍚戠敤姘存埛绫诲瀷',
+  `name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '濮撳悕',
+  `num` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '缂栧彿',
+  `phone` varchar(11) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '鎵嬫満鍙�',
+  `idCard` varchar(18) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '韬唤璇佸彿',
+  `area` double NULL DEFAULT NULL COMMENT '绉嶆闈㈢Н',
+  `district` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '鍘垮悕绉�+闀囧悕绉�+鏉戝悕绉�',
+  `address` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '琛楅亾+闂ㄧ墝鍙�',
+  `remark` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `disabled` tinyint NULL DEFAULT NULL COMMENT '绂佹鏍囧織',
+  `deleted` tinyint NULL DEFAULT NULL COMMENT '鍒犻櫎鏍囧織',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '鐢ㄦ按鎴�' ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Table structure for ba_client_type
+-- ----------------------------
+DROP TABLE IF EXISTS `ba_client_type`;
+CREATE TABLE `ba_client_type`  (
+  `id` bigint NOT NULL COMMENT '涓婚敭',
+  `name` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '鐢ㄦ按鎴风被鍨嬪悕绉�',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '鐢ㄦ按鎴风被鍨�' ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Table structure for ba_dict
+-- ----------------------------
+DROP TABLE IF EXISTS `ba_dict`;
+CREATE TABLE `ba_dict`  (
+  `id` int NOT NULL AUTO_INCREMENT COMMENT '涓婚敭',
+  `code` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '鏍囪瘑',
+  `title` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '鍚嶇О',
+  `value_type` tinyint NOT NULL COMMENT '鍊肩被鍨�;1-Number锛�2-String锛�3-Boolean',
+  `hash_code` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT 'hash鍊�;褰撳瓧鍏搁」琚慨鏀规椂鍙樻洿',
+  `remarks` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `deleted` bigint NULL DEFAULT 0 COMMENT '閫昏緫鍒犻櫎鏍囪瘑;鏈垹闄や负 0锛屽凡鍒犻櫎涓哄垹闄ゆ椂闂�',
+  `create_by` int NULL DEFAULT NULL COMMENT '鍒涘缓浜�',
+  `update_by` int NULL DEFAULT NULL COMMENT '淇敼浜�',
+  `create_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `update_time` datetime NULL DEFAULT NULL COMMENT '淇敼鏃堕棿',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '瀛楀吀琛�' ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Table structure for ba_dict_item
+-- ----------------------------
+DROP TABLE IF EXISTS `ba_dict_item`;
+CREATE TABLE `ba_dict_item`  (
+  `id` int NOT NULL AUTO_INCREMENT COMMENT '涓婚敭',
+  `dict_code` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '瀛楀吀Code',
+  `value` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '鏁版嵁鍊�',
+  `name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '鏍囩',
+  `status` tinyint NOT NULL DEFAULT 1 COMMENT '鐘舵��;1-鍚敤锛�0-绂佺敤',
+  `attributes` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL COMMENT '闄勫姞灞炴��',
+  `sort` int NOT NULL DEFAULT 0 COMMENT '鎺掑簭锛堝崌搴忥級',
+  `remarks` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `deleted` bigint NULL DEFAULT 0 COMMENT '閫昏緫鍒犻櫎鏍囪瘑;鏈垹闄や负 0锛屽凡鍒犻櫎涓哄垹闄ゆ椂闂�',
+  `create_by` int NULL DEFAULT NULL COMMENT '鍒涘缓浜�',
+  `update_by` int NULL DEFAULT NULL COMMENT '淇敼浜�',
+  `create_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `update_time` datetime NULL DEFAULT NULL COMMENT '淇敼鏃堕棿',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 5 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '瀛楀吀椤�' ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Table structure for ba_district
+-- ----------------------------
+DROP TABLE IF EXISTS `ba_district`;
+CREATE TABLE `ba_district`  (
+  `id` bigint NOT NULL COMMENT '涓婚敭',
+  `supperId` bigint NULL DEFAULT NULL COMMENT '鎸囧悜涓婄骇琛屾斂鍖�',
+  `name` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '琛屾斂鍖哄悕绉�',
+  `num` varchar(5) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '琛屾斂鍖虹紪鍙�',
+  `level` tinyint NULL DEFAULT NULL COMMENT '琛屾斂鍖虹骇鍒�',
+  `deleted` tinyint NULL DEFAULT 0 COMMENT '鍒犻櫎鏍囧織',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb3 COLLATE = utf8mb3_general_ci ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Table structure for ba_divide
+-- ----------------------------
+DROP TABLE IF EXISTS `ba_divide`;
+CREATE TABLE `ba_divide`  (
+  `id` bigint NOT NULL COMMENT '涓婚敭',
+  `countyId` bigint NULL DEFAULT NULL COMMENT '澶栭敭锛屾寚鍚戞墍鍦ㄥ幙锛堝綊灞炲湴锛�',
+  `townId` bigint NULL DEFAULT NULL COMMENT '澶栭敭锛屾寚鍚戞墍鍦ㄩ晣锛堝綊灞炲湴锛�',
+  `villageId` bigint NULL DEFAULT NULL COMMENT '澶栭敭锛屾寚鍚� 鎵�鍦ㄦ潙锛堝綊灞炲湴锛�',
+  `blockId` bigint NULL DEFAULT NULL COMMENT '澶栭敭锛屾寚鍚戠墖鍖�',
+  `name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '鍒嗘按鍙e悕绉版垨缂栧彿',
+  `villages` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '瑕嗙洊鏉�',
+  `area` float(10, 2) NULL DEFAULT NULL COMMENT '瑕嗙洊闈㈢Н锛堝钩鏂瑰叕閲岋級',
+  `header` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '璐熻矗浜�',
+  `phone` varchar(11) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '鑱旂郴鐢佃瘽',
+  `lng` double NULL DEFAULT NULL COMMENT '缁忓害',
+  `lat` double NULL DEFAULT NULL COMMENT '绾害',
+  `remark` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `deleted` tinyint NULL DEFAULT NULL COMMENT '鍒犻櫎鏍囧織',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Table structure for ba_map_coordinates
+-- ----------------------------
+DROP TABLE IF EXISTS `ba_map_coordinates`;
+CREATE TABLE `ba_map_coordinates`  (
+  `id` bigint NOT NULL COMMENT '涓婚敭',
+  `graph_id` bigint NOT NULL COMMENT '鍥惧舰ID',
+  `lat` decimal(18, 15) NULL DEFAULT NULL COMMENT '绾害',
+  `lng` decimal(18, 15) NULL DEFAULT NULL COMMENT '缁忓害',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '鍦板浘鍥惧舰鍧愭爣' ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Table structure for ba_map_graph
+-- ----------------------------
+DROP TABLE IF EXISTS `ba_map_graph`;
+CREATE TABLE `ba_map_graph`  (
+  `id` bigint NOT NULL COMMENT '涓婚敭',
+  `block_id` bigint NOT NULL COMMENT '鐗囧尯ID',
+  `graph_type` tinyint NOT NULL DEFAULT 1 COMMENT '鍥惧舰绫诲瀷;1-CircleMarker 锛�2-Polygon 锛�3-Polyline',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '鍦板浘鍥惧舰琛�' ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Table structure for ba_role
+-- ----------------------------
+DROP TABLE IF EXISTS `ba_role`;
+CREATE TABLE `ba_role`  (
+  `id` bigint NOT NULL COMMENT '涓婚敭',
+  `name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '瑙掕壊鍚嶇О',
+  `operator` bigint NULL DEFAULT NULL COMMENT '鎿嶄綔浜虹紪鍙�',
+  `operate_dt` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鎿嶄綔鏃堕棿',
+  `deleted` tinyint NULL DEFAULT 0 COMMENT '閫昏緫鍒犻櫎鏍囪瘑;0-鏈垹闄わ紝1-鍒犻櫎',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '绯荤粺瑙掕壊琛�' ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Table structure for ba_role_permissions
+-- ----------------------------
+DROP TABLE IF EXISTS `ba_role_permissions`;
+CREATE TABLE `ba_role_permissions`  (
+  `id` bigint NOT NULL COMMENT '涓婚敭',
+  `roleId` bigint NOT NULL COMMENT '瑙掕壊缂栧彿',
+  `permissions` json NOT NULL COMMENT '鏉冮檺鍒楄〃',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '瑙掕壊鏉冮檺鍏宠仈琛�' ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Table structure for ba_settings
+-- ----------------------------
+DROP TABLE IF EXISTS `ba_settings`;
+CREATE TABLE `ba_settings`  (
+  `id` bigint NOT NULL COMMENT '涓婚敭',
+  `item_name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '閰嶇疆椤�',
+  `item_value` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '閰嶇疆椤瑰��',
+  `remarks` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '澶囨敞淇℃伅',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '绯荤粺閰嶇疆琛�' ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Table structure for ba_user
+-- ----------------------------
+DROP TABLE IF EXISTS `ba_user`;
+CREATE TABLE `ba_user`  (
+  `id` bigint NOT NULL,
+  `blockId` bigint NULL DEFAULT NULL COMMENT '澶栭敭锛屾寚鍚戠墖鍖哄疄浣�',
+  `name` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '鐢ㄦ埛濮撳悕',
+  `phone` varchar(11) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '鎵嬫満鍙凤紝鐢ㄤ簬鐧诲綍绯荤粺',
+  `password` varchar(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '瀵嗙爜锛宮d5鍔犲瘑',
+  `orgTag` varchar(10) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '鐢ㄦ埛鎵�鏈夋満鏋勬爣绛�',
+  `supperAdmin` tinyint NULL DEFAULT NULL COMMENT '鏄惁瓒呯骇绠$悊鍛橈紝1鏄紝0鍚�',
+  `disabled` tinyint NULL DEFAULT NULL COMMENT '鏄惁绂佺敤锛�1鏄紝0鍚�',
+  `deleted` tinyint NULL DEFAULT NULL COMMENT '鍒犻櫎鏍囧織锛�1鏄紝0鍚�',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb3 COLLATE = utf8mb3_general_ci ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Table structure for ba_user_role
+-- ----------------------------
+DROP TABLE IF EXISTS `ba_user_role`;
+CREATE TABLE `ba_user_role`  (
+  `userId` bigint NOT NULL,
+  `roleId` bigint NOT NULL,
+  PRIMARY KEY (`userId`, `roleId`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb3 COLLATE = utf8mb3_general_ci ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Table structure for ir_crop
+-- ----------------------------
+DROP TABLE IF EXISTS `ir_crop`;
+CREATE TABLE `ir_crop`  (
+  `id` bigint NOT NULL COMMENT '涓婚敭',
+  `crop_name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '浣滅墿鍚嶇О',
+  `remarks` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '澶囨敞淇℃伅',
+  `deleted` tinyint NULL DEFAULT 0 COMMENT '閫昏緫鍒犻櫎鏍囪瘑;0-鏈垹闄わ紝1-鍒犻櫎',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '浣滅墿琛�' ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Table structure for ir_group_client
+-- ----------------------------
+DROP TABLE IF EXISTS `ir_group_client`;
+CREATE TABLE `ir_group_client`  (
+  `id` bigint NOT NULL COMMENT '涓婚敭',
+  `group_id` bigint NOT NULL COMMENT '杞亴缁処D',
+  `client_id` bigint NOT NULL COMMENT '鍐滄埛ID',
+  `operator` bigint NULL DEFAULT NULL COMMENT '鍒涘缓浜�',
+  `operate_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '杞亴缁勫啘鎴峰叧鑱旇〃' ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Table structure for ir_group_unit
+-- ----------------------------
+DROP TABLE IF EXISTS `ir_group_unit`;
+CREATE TABLE `ir_group_unit`  (
+  `id` bigint NOT NULL COMMENT '涓婚敭',
+  `group_id` bigint NOT NULL COMMENT '杞亴缁勭紪鍙�',
+  `unit_id` bigint NOT NULL COMMENT '鐏屾簤鍗曞厓缂栧彿',
+  `operator` bigint NOT NULL COMMENT '鎿嶄綔浜�',
+  `operate_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鎿嶄綔鏃堕棿',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '杞亴缁勭亴婧夊崟鍏冨叧鑱旇〃' ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Table structure for ir_irrigate_group
+-- ----------------------------
+DROP TABLE IF EXISTS `ir_irrigate_group`;
+CREATE TABLE `ir_irrigate_group`  (
+  `id` bigint NOT NULL COMMENT '涓婚敭',
+  `group_code` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '杞亴缁勭紪鐮�',
+  `project_id` bigint NOT NULL COMMENT '椤圭洰缂栧彿',
+  `remarks` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '澶囨敞淇℃伅',
+  `operator` bigint NOT NULL COMMENT '鎿嶄綔浜�',
+  `operate_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鎿嶄綔鏃堕棿',
+  `deleted` tinyint NULL DEFAULT 0 COMMENT '閫昏緫鍒犻櫎鏍囪瘑;0-鏈垹闄わ紝1-鍒犻櫎',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '杞亴缁勮〃' ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Table structure for ir_irrigate_plan
+-- ----------------------------
+DROP TABLE IF EXISTS `ir_irrigate_plan`;
+CREATE TABLE `ir_irrigate_plan`  (
+  `id` bigint NOT NULL COMMENT '涓婚敭',
+  `project_id` bigint NULL DEFAULT NULL COMMENT '椤圭洰ID',
+  `plan_name` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '璁″垝鍚嶇О',
+  `startup_mode` tinyint NULL DEFAULT 1 COMMENT '璁″垝鍚姩妯″紡;1-鎵嬪姩鍚姩锛�2-鑷姩鍚姩',
+  `plan_start_time` datetime NULL DEFAULT NULL COMMENT '鐏屾簤寮�濮嬫椂闂�;绮剧‘鍒板垎',
+  `plan_stop_time` datetime NULL DEFAULT NULL COMMENT '鐏屾簤缁撴潫鏃堕棿;绮剧‘鍒板垎',
+  `plan_state` tinyint NULL DEFAULT 1 COMMENT '璁″垝鐘舵��;1-鑽夌锛�2-宸插彂甯�',
+  `executing_state` tinyint NULL DEFAULT 1 COMMENT '鎵ц鐘舵��;1-鏈墽琛岋紝2-鎵ц涓紝3-宸叉殏鍋滐紝4-宸茬粓姝紝5-宸插畬鎴�',
+  `deleted` bigint NULL DEFAULT 0 COMMENT '閫昏緫鍒犻櫎鏍囪瘑;鏈垹闄や负0锛屽凡鍒犻櫎涓哄垹闄ゆ椂闂�',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '鐏屾簤璁″垝琛�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Table structure for ir_irrigate_schedule
+-- ----------------------------
+DROP TABLE IF EXISTS `ir_irrigate_schedule`;
+CREATE TABLE `ir_irrigate_schedule`  (
+  `id` bigint NOT NULL COMMENT '涓婚敭',
+  `plan_id` bigint NOT NULL COMMENT '鐏屾簤璁″垝ID',
+  `group_id` bigint NOT NULL COMMENT '杞亴缁処D',
+  `start_time` datetime NOT NULL COMMENT '鐏屾簤寮�濮嬫椂闂�;绮剧‘鍒板垎',
+  `stop_time` datetime NOT NULL COMMENT '鐏屾簤缁撴潫鏃堕棿;绮剧‘鍒板垎',
+  `intake_ids` json NULL COMMENT '鍙栨按鍙D鍒楄〃',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '鐏屾簤娆″簭琛�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Table structure for ir_irrigate_scheduling
+-- ----------------------------
+DROP TABLE IF EXISTS `ir_irrigate_scheduling`;
+CREATE TABLE `ir_irrigate_scheduling`  (
+  `id` bigint NOT NULL COMMENT '涓婚敭',
+  `crop_id` bigint NOT NULL COMMENT '浣滅墿缂栧彿',
+  `growth_period` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '浣滅墿鐢熼暱鏈�',
+  `irrigate_cycle` int NOT NULL COMMENT '鐏屾按鍛ㄦ湡',
+  `duration` int NOT NULL COMMENT '鐏屾按寤剁画鏃堕棿',
+  `remarks` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '澶囨敞淇℃伅',
+  `operator` bigint NOT NULL COMMENT '鎿嶄綔浜�',
+  `operate_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鎿嶄綔鏃堕棿',
+  `deleted` tinyint NULL DEFAULT 0 COMMENT '閫昏緫鍒犻櫎鏍囪瘑;0-鏈垹闄わ紝1-鍒犻櫎',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '鐏屾簤鍒跺害琛�' ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Table structure for ir_irrigate_unit
+-- ----------------------------
+DROP TABLE IF EXISTS `ir_irrigate_unit`;
+CREATE TABLE `ir_irrigate_unit`  (
+  `id` bigint NOT NULL COMMENT '涓婚敭',
+  `project_id` bigint NOT NULL COMMENT '椤圭洰ID',
+  `intake_id` bigint NULL DEFAULT NULL COMMENT '鍙栨按鍙D',
+  `area` float(10, 2) NULL DEFAULT NULL COMMENT '鐏屾簤闈㈢Н',
+  `remarks` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '澶囨敞淇℃伅',
+  `operator` bigint NOT NULL COMMENT '鎿嶄綔浜�',
+  `operate_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鎿嶄綔鏃堕棿',
+  `deleted` tinyint NULL DEFAULT 0 COMMENT '閫昏緫鍒犻櫎鏍囪瘑;0-鏈垹闄わ紝1-鍒犻櫎',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '鐏屾簤鍗曞厓琛�' ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Table structure for ir_opening_schedule
+-- ----------------------------
+DROP TABLE IF EXISTS `ir_opening_schedule`;
+CREATE TABLE `ir_opening_schedule`  (
+  `id` bigint NOT NULL COMMENT '涓婚敭',
+  `schedule_id` bigint NOT NULL COMMENT '鐏屾簤娆″簭ID',
+  `start_time` datetime NOT NULL COMMENT '寮�闃�鏃堕棿;绮剧‘鍒板垎',
+  `duration` int NOT NULL COMMENT '鐏屾簤鏃堕暱;鍒嗛挓',
+  `intake_nums` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '鍙栨按鍙g紪鍙峰垪琛�',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '寮�闃�璁″垝琛�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Table structure for ir_plan_operate
+-- ----------------------------
+DROP TABLE IF EXISTS `ir_plan_operate`;
+CREATE TABLE `ir_plan_operate`  (
+  `update_time` datetime NULL DEFAULT NULL COMMENT '鏇存柊鏃堕棿',
+  `id` bigint NOT NULL COMMENT '涓婚敭',
+  `plan_id` bigint NOT NULL COMMENT '鐏屾簤璁″垝ID',
+  `operator` bigint NOT NULL COMMENT '鎿嶄綔浜虹紪鍙�',
+  `operate_type` tinyint NULL DEFAULT NULL COMMENT '鎿嶄綔绫诲瀷;1-鍒涘缓锛�2-鍙戝竷锛�3-鎵ц锛�4-鏆傚仠锛�5-缁堟锛�6-瀹屾垚',
+  `operate_time` datetime NULL DEFAULT NULL COMMENT '鎿嶄綔鏃堕棿',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '鐏屾簤璁″垝鎿嶄綔琛�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Table structure for ir_plan_pause
+-- ----------------------------
+DROP TABLE IF EXISTS `ir_plan_pause`;
+CREATE TABLE `ir_plan_pause`  (
+  `id` bigint NOT NULL COMMENT '涓婚敭',
+  `schedule_id` bigint NOT NULL COMMENT '鐏屾簤娆″簭ID',
+  `operator` bigint NOT NULL COMMENT '鎿嶄綔浜虹紪鍙�',
+  `pause_time` datetime NOT NULL COMMENT '鏆傚仠鏃堕棿;绮剧‘鍒板垎',
+  `renew_time` datetime NULL DEFAULT NULL COMMENT '鎭㈠鏃堕棿;绮剧‘鍒板垎',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '璁″垝鏆傚仠璁板綍琛�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Table structure for ir_plan_terminate
+-- ----------------------------
+DROP TABLE IF EXISTS `ir_plan_terminate`;
+CREATE TABLE `ir_plan_terminate`  (
+  `id` bigint NOT NULL COMMENT '涓婚敭',
+  `schedule_id` bigint NOT NULL COMMENT '鐏屾簤娆″簭ID',
+  `operator` bigint NOT NULL COMMENT '鎿嶄綔浜虹紪鍙�',
+  `terminate_time` datetime NOT NULL COMMENT '缁堟鏃堕棿;绮剧‘鍒板垎',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '璁″垝缁堟璁板綍琛�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Table structure for ir_project
+-- ----------------------------
+DROP TABLE IF EXISTS `ir_project`;
+CREATE TABLE `ir_project`  (
+  `id` bigint NOT NULL COMMENT '涓婚敭',
+  `project_name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '椤圭洰鍚嶇О',
+  `province_id` bigint NULL DEFAULT NULL COMMENT '鐪両D',
+  `city_id` bigint NULL DEFAULT NULL COMMENT '甯侷D',
+  `county_id` bigint NULL DEFAULT NULL COMMENT '鍘縄D',
+  `town_id` bigint NULL DEFAULT NULL COMMENT '闀嘔D',
+  `village_id` bigint NULL DEFAULT NULL COMMENT '鏉慖D',
+  `project_state` tinyint NULL DEFAULT 1 COMMENT '椤圭洰鐘舵��;1-鍚敤锛�2-搴熷純',
+  `remarks` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '澶囨敞淇℃伅',
+  `operator` bigint NOT NULL COMMENT '鎿嶄綔浜�',
+  `operate_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鎿嶄綔鏃堕棿',
+  `deleted` tinyint NULL DEFAULT 0 COMMENT '閫昏緫鍒犻櫎鏍囪瘑;0-鏈垹闄わ紝1-鍒犻櫎',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '椤圭洰琛�' ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Table structure for ir_unit_client
+-- ----------------------------
+DROP TABLE IF EXISTS `ir_unit_client`;
+CREATE TABLE `ir_unit_client`  (
+  `id` bigint NOT NULL COMMENT '涓婚敭',
+  `unit_id` bigint NOT NULL COMMENT '鐏屾簤鍗曞厓ID',
+  `client_id` bigint NOT NULL COMMENT '鍐滄埛ID',
+  `operator` bigint NULL DEFAULT NULL COMMENT '鍒涘缓浜�',
+  `operate_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '鐏屾簤鍗曞厓鍐滄埛鍏宠仈琛�' ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Table structure for ope_approve_result
+-- ----------------------------
+DROP TABLE IF EXISTS `ope_approve_result`;
+CREATE TABLE `ope_approve_result`  (
+  `id` bigint NOT NULL COMMENT '涓婚敭',
+  `work_order_id` bigint NOT NULL COMMENT '宸ュ崟ID',
+  `processing_result_id` bigint NOT NULL COMMENT '澶勭悊缁撴灉ID',
+  `approver_id` bigint NULL DEFAULT NULL COMMENT '瀹℃牳浜篒D',
+  `approve_time` datetime NULL DEFAULT NULL COMMENT '瀹℃牳鏃堕棿',
+  `approve_result` tinyint NULL DEFAULT NULL COMMENT '瀹℃牳缁撴灉;1-閫氳繃锛�2-椹冲洖',
+  `deleted` bigint NULL DEFAULT 0 COMMENT '閫昏緫鍒犻櫎鏍囪瘑;鏈垹闄や负0锛屽凡鍒犻櫎涓哄垹闄ゆ椂闂�',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '澶勭悊缁撴灉瀹℃牳璁板綍' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Table structure for ope_inspect
+-- ----------------------------
+DROP TABLE IF EXISTS `ope_inspect`;
+CREATE TABLE `ope_inspect`  (
+  `id` bigint NOT NULL COMMENT '涓婚敭',
+  `inspector_id` bigint NOT NULL COMMENT '宸℃鍛業D',
+  `start_time` datetime NULL DEFAULT NULL COMMENT '寮�濮嬪贰妫�鏃堕棿',
+  `stop_time` datetime NULL DEFAULT NULL COMMENT '缁撴潫宸℃鏃堕棿',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '宸℃琛�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Table structure for ope_issue_report
+-- ----------------------------
+DROP TABLE IF EXISTS `ope_issue_report`;
+CREATE TABLE `ope_issue_report`  (
+  `id` bigint NOT NULL COMMENT '涓婚敭',
+  `content` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '闂鍐呭',
+  `images` json NULL COMMENT '鐓х墖鍒楄〃',
+  `audios` json NULL COMMENT '闊抽鍒楄〃',
+  `videos` json NULL COMMENT '瑙嗛鍒楄〃',
+  `lng` decimal(18, 15) NULL DEFAULT NULL COMMENT '缁忓害',
+  `lat` decimal(18, 15) NULL DEFAULT NULL COMMENT '绾害',
+  `inspector_id` bigint NULL DEFAULT NULL COMMENT '宸℃鍛業D',
+  `report_time` datetime NULL DEFAULT NULL COMMENT '涓婃姤鏃堕棿',
+  `phone` varchar(11) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '鑱旂郴鐢佃瘽',
+  `state` tinyint NULL DEFAULT NULL COMMENT '鐘舵��;1-鏈彈鐞嗭紝2-宸插彈鐞嗭紝3宸插垹闄�',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '闂涓婃姤璁板綍琛�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Table structure for ope_processing_result
+-- ----------------------------
+DROP TABLE IF EXISTS `ope_processing_result`;
+CREATE TABLE `ope_processing_result`  (
+  `id` bigint NOT NULL COMMENT '涓婚敭',
+  `work_order_id` bigint NOT NULL COMMENT '宸ュ崟ID',
+  `inspector_id` bigint NOT NULL COMMENT '宸℃鍛業D',
+  `content` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '缁撴灉鍐呭',
+  `images` json NULL COMMENT '鐓х墖鍒楄〃',
+  `audios` json NULL COMMENT '闊抽鍒楄〃',
+  `videos` json NULL COMMENT '瑙嗛鍒楄〃',
+  `lng` decimal(18, 15) NULL DEFAULT NULL COMMENT '缁忓害',
+  `lat` decimal(18, 15) NULL DEFAULT NULL COMMENT '绾害',
+  `complete_time` datetime NULL DEFAULT NULL COMMENT '浠诲姟瀹屾垚鏃堕棿;绮剧‘鍒板垎',
+  `report_time` datetime NULL DEFAULT NULL COMMENT '涓婃姤鏃堕棿',
+  `state` tinyint NULL DEFAULT NULL COMMENT '鐘舵��;1-宸蹭笂鎶ワ紝2-宸查�氳繃锛�3-宸查┏鍥�',
+  `deleted` bigint NULL DEFAULT 0 COMMENT '閫昏緫鍒犻櫎鏍囪瘑;鏈垹闄や负0锛屽凡鍒犻櫎涓哄垹闄ゆ椂闂�',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '澶勭悊缁撴灉璁板綍琛�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Table structure for ope_report_reply
+-- ----------------------------
+DROP TABLE IF EXISTS `ope_report_reply`;
+CREATE TABLE `ope_report_reply`  (
+  `id` bigint NOT NULL COMMENT '涓婚敭',
+  `report_id` bigint NOT NULL COMMENT '闂涓婃姤ID',
+  `reply_content` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '鍥炲鍐呭',
+  `reply_time` datetime NULL DEFAULT NULL COMMENT '鍥炲鏃堕棿',
+  `replier_id` bigint NOT NULL COMMENT '鍥炲浜篒D',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '涓婃姤鍥炲璁板綍琛�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Table structure for ope_task_type
+-- ----------------------------
+DROP TABLE IF EXISTS `ope_task_type`;
+CREATE TABLE `ope_task_type`  (
+  `id` bigint NOT NULL COMMENT '涓婚敭',
+  `task_type` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '浠诲姟绫诲瀷',
+  `deleted` bigint NULL DEFAULT 0 COMMENT '閫昏緫鍒犻櫎鏍囪瘑;鏈垹闄や负0锛屽凡鍒犻櫎涓哄垹闄ゆ椂闂�',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '浠诲姟绫诲瀷琛�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Table structure for ope_track
+-- ----------------------------
+DROP TABLE IF EXISTS `ope_track`;
+CREATE TABLE `ope_track`  (
+  `id` bigint NOT NULL COMMENT '涓婚敭',
+  `inspect_id` bigint NULL DEFAULT NULL COMMENT '宸℃ID',
+  `lng` decimal(18, 15) NULL DEFAULT NULL COMMENT '缁忓害',
+  `lat` decimal(18, 15) NULL DEFAULT NULL COMMENT '绾害',
+  `locate_time` datetime NULL DEFAULT NULL COMMENT '鎵撶偣鏃堕棿',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '宸℃杞ㄨ抗琛�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Table structure for ope_work_order
+-- ----------------------------
+DROP TABLE IF EXISTS `ope_work_order`;
+CREATE TABLE `ope_work_order`  (
+  `id` bigint NOT NULL COMMENT '涓婚敭',
+  `dispatcher_id` bigint NOT NULL COMMENT '娲惧崟浜篒D',
+  `inspector_id` bigint NOT NULL COMMENT '宸℃鍛業D',
+  `task_type_id` bigint NOT NULL DEFAULT 4 COMMENT '浠诲姟绫诲瀷ID',
+  `task_content` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '浠诲姟鍐呭',
+  `complete_criteria` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '瀹屾垚鏍囧噯',
+  `dead_line` datetime NULL DEFAULT NULL COMMENT '瑕佹眰瀹屾垚鏃堕棿;绮剧‘鍒板垎',
+  `complete_time` datetime NULL DEFAULT NULL COMMENT '浠诲姟瀹屾垚鏃堕棿;绮剧‘鍒板垎',
+  `dispatch_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '娲惧崟鏃堕棿',
+  `client_report_id` bigint NULL DEFAULT NULL COMMENT '鍐滄埛闂涓婃姤ID',
+  `inspector_report_id` bigint NULL DEFAULT NULL COMMENT '宸℃鍛橀棶棰樹笂鎶D',
+  `state` tinyint NULL DEFAULT NULL COMMENT '鐘舵��;1-鏈畬鎴愶紝2-宸插畬鎴�',
+  `reject_times` int NULL DEFAULT 0 COMMENT '椹冲洖娆℃暟',
+  `deleted` bigint NOT NULL DEFAULT 0 COMMENT '閫昏緫鍒犻櫎鏍囪瘑;鏈垹闄や负0锛屽凡鍒犻櫎涓哄垹闄ゆ椂闂�',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '宸ュ崟琛�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Table structure for pr_common_intakes
+-- ----------------------------
+DROP TABLE IF EXISTS `pr_common_intakes`;
+CREATE TABLE `pr_common_intakes`  (
+  `id` bigint NOT NULL COMMENT '涓婚敭',
+  `operator_id` bigint NOT NULL COMMENT '鎿嶄綔浜篒D',
+  `intake_id` bigint NOT NULL COMMENT '鍙栨按鍙D',
+  `last_used_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鏈�鍚庝竴娆′娇鐢ㄦ椂闂�',
+  `usage_count` int NULL DEFAULT 0 COMMENT '浣跨敤娆℃暟',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '甯哥敤鍙栨按鍙�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Table structure for pr_controller
+-- ----------------------------
+DROP TABLE IF EXISTS `pr_controller`;
+CREATE TABLE `pr_controller`  (
+  `id` bigint NOT NULL COMMENT '涓婚敭',
+  `intakeId` bigint NOT NULL COMMENT '鍙栨按鍙D',
+  `rtuAddr` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '鎺у埗鍣ㄥ湴鍧�',
+  `protocol` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '閫氳鍗忚',
+  `protocol_version` int NULL DEFAULT NULL COMMENT '鍗忚鐗堟湰鍙�',
+  `findDt` datetime NULL DEFAULT NULL COMMENT '鍙戠幇鏃ユ湡鏃堕棿',
+  `orgTag` varchar(2) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '鏈烘瀯tag',
+  `addWays` tinyint NULL DEFAULT 1 COMMENT '娣诲姞鏂瑰紡;1-绯荤粺鑷姩锛�2-鎵嬪姩',
+  `operator` bigint NULL DEFAULT NULL COMMENT '鎿嶄綔浜虹紪鍙�',
+  `operateDt` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鎿嶄綔鏃堕棿',
+  `deleted` tinyint NULL DEFAULT 0 COMMENT '閫昏緫鍒犻櫎鏍囪瘑;0-鏈垹闄わ紝1-鍒犻櫎',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '鎺у埗鍣ㄨ〃' ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Table structure for pr_controller_tramp
+-- ----------------------------
+DROP TABLE IF EXISTS `pr_controller_tramp`;
+CREATE TABLE `pr_controller_tramp`  (
+  `id` bigint NOT NULL COMMENT '涓婚敭',
+  `rtuAddr` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '鎺у埗鍣ㄥ湴鍧�',
+  `protocol` varchar(25) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '閫氫俊鍗忚',
+  `protocol_version` int NULL DEFAULT NULL COMMENT '閫氫俊鍗忚鐗堟湰鍙�',
+  `findDt` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍙戠幇鏃ユ湡鏃堕棿',
+  `orgTag` varchar(2) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '鏈烘瀯tag',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '娴佹氮鎺у埗鍣�' ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Table structure for pr_divide
+-- ----------------------------
+DROP TABLE IF EXISTS `pr_divide`;
+CREATE TABLE `pr_divide`  (
+  `id` bigint NOT NULL COMMENT '涓婚敭',
+  `countyId` bigint NULL DEFAULT NULL COMMENT '鎵�鍦ㄥ幙',
+  `townId` bigint NULL DEFAULT NULL COMMENT '鎵�鍦ㄩ晣',
+  `villageId` bigint NULL DEFAULT NULL COMMENT '鎵�鍦ㄦ潙',
+  `blockId` bigint NOT NULL COMMENT '鎵�灞炵墖鍖�',
+  `name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '鍒嗘按鍙e悕绉版垨缂栧彿',
+  `villages` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '瑕嗙洊鏉�',
+  `area` float(10, 2) NULL DEFAULT NULL COMMENT '瑕嗙洊闈㈢Н锛堝钩鏂瑰叕閲岋級',
+  `header` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '璐熻矗浜�',
+  `phone` varchar(11) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '鑱旂郴鐢佃瘽',
+  `lng` double NOT NULL COMMENT '缁忓害',
+  `lat` double NOT NULL COMMENT '绾害',
+  `remarks` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '澶囨敞淇℃伅',
+  `operator` bigint NOT NULL COMMENT '鎿嶄綔浜虹紪鍙�',
+  `operateDt` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鎿嶄綔鏃堕棿',
+  `deleted` tinyint NULL DEFAULT 0 COMMENT '閫昏緫鍒犻櫎鏍囪瘑;0-鏈垹闄わ紝1-鍒犻櫎',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '鍒嗘按鎴胯〃' ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Table structure for pr_flow_monitoring
+-- ----------------------------
+DROP TABLE IF EXISTS `pr_flow_monitoring`;
+CREATE TABLE `pr_flow_monitoring`  (
+  `id` bigint NOT NULL COMMENT '涓婚敭',
+  `countyId` bigint NULL DEFAULT NULL COMMENT '鎵�鍦ㄥ幙',
+  `townId` bigint NULL DEFAULT NULL COMMENT '鎵�鍦ㄩ晣',
+  `villageId` bigint NULL DEFAULT NULL COMMENT '鎵�鍦ㄦ潙',
+  `name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '鐩戞祴绔欏悕绉�',
+  `lng` double NOT NULL COMMENT '缁忓害',
+  `lat` double NOT NULL COMMENT '绾害',
+  `remarks` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '澶囨敞淇℃伅',
+  `operator` bigint NOT NULL COMMENT '鎿嶄綔浜虹紪鍙�',
+  `operateDt` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鎿嶄綔鏃堕棿',
+  `deleted` tinyint NULL DEFAULT 0 COMMENT '閫昏緫鍒犻櫎鏍囪瘑;0-鏈垹闄わ紝1-鍒犻櫎',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '娴侀噺鐩戞祴绔欒〃' ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Table structure for pr_flowmeter
+-- ----------------------------
+DROP TABLE IF EXISTS `pr_flowmeter`;
+CREATE TABLE `pr_flowmeter`  (
+  `id` bigint NOT NULL COMMENT '涓婚敭',
+  `monitoringId` bigint NULL DEFAULT NULL COMMENT '鐩戞祴绔橧D',
+  `code` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '娴侀噺璁$紪鍙�',
+  `protocol` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '閫氳鍗忚',
+  `onlineState` tinyint NULL DEFAULT 2 COMMENT '鍦ㄧ嚎鐘舵��;1-鍦ㄧ嚎锛�2-绂荤嚎',
+  `reportTime` datetime NULL DEFAULT NULL COMMENT '鏈�杩戜笂鎶ユ椂闂�',
+  `addWays` tinyint NULL DEFAULT 1 COMMENT '娣诲姞鏂瑰紡;1-绯荤粺鑷姩锛�2-鎵嬪姩',
+  `operator` bigint NULL DEFAULT NULL COMMENT '鎿嶄綔浜虹紪鍙�',
+  `operateDt` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鎿嶄綔鏃堕棿',
+  `remarks` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '澶囨敞淇℃伅',
+  `deleted` tinyint NULL DEFAULT 0 COMMENT '閫昏緫鍒犻櫎鏍囪瘑;0-鏈垹闄わ紝1-鍒犻櫎',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '娴侀噺璁¤〃' ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Table structure for pr_intake
+-- ----------------------------
+DROP TABLE IF EXISTS `pr_intake`;
+CREATE TABLE `pr_intake`  (
+  `id` bigint NOT NULL COMMENT '涓婚敭',
+  `countyId` bigint NULL DEFAULT NULL COMMENT '鎵�鍦ㄥ幙',
+  `townId` bigint NULL DEFAULT NULL COMMENT '鎵�鍦ㄩ晣',
+  `villageId` bigint NULL DEFAULT NULL COMMENT '鎵�鍦ㄦ潙',
+  `divideId` bigint NOT NULL COMMENT '鍒嗘按鍙g紪鍙�',
+  `blockId` bigint NOT NULL COMMENT '鐗囧尯缂栧彿',
+  `name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '鍙栨按鍙e悕绉�',
+  `lng` double NULL DEFAULT NULL COMMENT '缁忓害',
+  `lat` double NULL DEFAULT NULL COMMENT '绾害',
+  `remarks` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '澶囨敞淇℃伅',
+  `operator` bigint NULL DEFAULT NULL COMMENT '鎿嶄綔浜虹紪鍙�',
+  `operateDt` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鎿嶄綔鏃堕棿',
+  `deleted` tinyint NULL DEFAULT 0 COMMENT '閫昏緫鍒犻櫎鏍囪瘑;0-鏈垹闄わ紝1-鍒犻櫎',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '鍙栨按鍙h〃' ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Table structure for pr_intake_controller
+-- ----------------------------
+DROP TABLE IF EXISTS `pr_intake_controller`;
+CREATE TABLE `pr_intake_controller`  (
+  `id` bigint NOT NULL COMMENT '涓婚敭',
+  `intakeId` bigint NOT NULL COMMENT '鍙栨按鍙g紪鍙�',
+  `controllerId` bigint NOT NULL COMMENT '鎺у埗鍣ㄧ紪鍙�',
+  `operateType` tinyint NULL DEFAULT 1 COMMENT '鎿嶄綔绫诲瀷;1-鎹嗙粦锛�2-瑙g粦',
+  `remarks` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '澶囨敞淇℃伅',
+  `operator` bigint NOT NULL COMMENT '鎿嶄綔浜虹紪鍙�',
+  `operateDt` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鎿嶄綔鏃堕棿',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '鍙栨按鍙f崋缁戣〃' ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Table structure for pr_intake_vc
+-- ----------------------------
+DROP TABLE IF EXISTS `pr_intake_vc`;
+CREATE TABLE `pr_intake_vc`  (
+  `id` bigint NOT NULL COMMENT '涓婚敭',
+  `intake_id` bigint NOT NULL COMMENT '鍙栨按鍙D',
+  `vc_id` bigint NOT NULL COMMENT '铏氭嫙鍗D',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '鍙栨按鍙h櫄鎷熷崱缁戝畾琛�' ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Table structure for pr_monitoring_flowmeter
+-- ----------------------------
+DROP TABLE IF EXISTS `pr_monitoring_flowmeter`;
+CREATE TABLE `pr_monitoring_flowmeter`  (
+  `id` bigint NOT NULL COMMENT '涓婚敭',
+  `monitoringId` bigint NOT NULL COMMENT '鐩戞祴绔欑紪鍙�',
+  `flowmeterId` bigint NOT NULL COMMENT '娴侀噺璁$紪鍙�',
+  `operateType` tinyint NULL DEFAULT 1 COMMENT '鎿嶄綔绫诲瀷;1-鎹嗙粦锛�2-瑙g粦',
+  `remarks` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '澶囨敞淇℃伅',
+  `operator` bigint NOT NULL COMMENT '鎿嶄綔浜虹紪鍙�',
+  `operateDt` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鎿嶄綔鏃堕棿',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '鐩戞祴绔欐祦閲忚鍏宠仈琛�' ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Table structure for pr_network_coordinates
+-- ----------------------------
+DROP TABLE IF EXISTS `pr_network_coordinates`;
+CREATE TABLE `pr_network_coordinates`  (
+  `id` bigint NOT NULL COMMENT '涓婚敭',
+  `network_id` bigint NOT NULL COMMENT '绠$綉ID',
+  `lat` decimal(18, 15) NULL DEFAULT NULL COMMENT '绾害',
+  `lng` decimal(18, 15) NULL DEFAULT NULL COMMENT '缁忓害',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '绠$綉鍧愭爣琛�' ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Table structure for pr_scheduling_params
+-- ----------------------------
+DROP TABLE IF EXISTS `pr_scheduling_params`;
+CREATE TABLE `pr_scheduling_params`  (
+  `id` bigint NOT NULL COMMENT '涓婚敭',
+  `utilization_coefficient` float(2, 1) NULL DEFAULT NULL COMMENT '鐏屾簤姘村埄鐢ㄧ郴鏁�',
+  `percentage_soil_wetted` float(5, 4) NULL DEFAULT NULL COMMENT '鍦熷¥婀挎鼎姣�',
+  `wetted_depth` int NULL DEFAULT NULL COMMENT '璁″垝婀挎鼎灞傛繁搴︼紙鍘樼背锛�',
+  `soil_bulk_density` float(5, 4) NULL DEFAULT NULL COMMENT '鍦熷¥瀹归噸锛堝厠/绔嬫柟鍘樼背锛�',
+  `field_capacity` float(5, 4) NULL DEFAULT NULL COMMENT '鐢伴棿鎸佹按閲�',
+  `soil_moisture_upper` float(5, 4) NULL DEFAULT NULL COMMENT '鍦熷¥閫傚疁鍚按鐜囦笂闄�',
+  `soil_moisture_lower` float(5, 4) NULL DEFAULT NULL COMMENT '鍦熷¥閫傚疁鍚按鐜囦笅闄�',
+  `designed_discharge` float(5, 1) NULL DEFAULT NULL COMMENT '鐏屾按鍣ㄨ璁℃祦閲忥紙鍗�/灏忔椂锛�',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '鐏屾簤鍒跺害璁捐鍙傛暟琛�' ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Table structure for pr_water_network
+-- ----------------------------
+DROP TABLE IF EXISTS `pr_water_network`;
+CREATE TABLE `pr_water_network`  (
+  `id` bigint NOT NULL COMMENT '涓婚敭',
+  `network_type` tinyint NOT NULL COMMENT '绠$綉绫诲瀷;1-杈撴按锛�2-閰嶆按',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '杈撻厤姘寸缃戣〃' ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Table structure for pr_water_price
+-- ----------------------------
+DROP TABLE IF EXISTS `pr_water_price`;
+CREATE TABLE `pr_water_price`  (
+  `id` bigint NOT NULL COMMENT '涓婚敭',
+  `price` float(5, 2) NOT NULL COMMENT '姘翠环',
+  `project_id` bigint NULL DEFAULT NULL COMMENT '椤圭洰缂栧彿',
+  `operator` bigint NULL DEFAULT NULL COMMENT '鎿嶄綔浜虹紪鍙�',
+  `operate_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鎿嶄綔鏃堕棿',
+  `deleted` tinyint NULL DEFAULT 0 COMMENT '閫昏緫鍒犻櫎鏍囪瘑;0-鏈垹闄わ紝1-鍒犻櫎',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '姘翠环琛�' ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Table structure for rm_alarm_state_history
+-- ----------------------------
+DROP TABLE IF EXISTS `rm_alarm_state_history`;
+CREATE TABLE `rm_alarm_state_history`  (
+  `id` bigint NOT NULL COMMENT '涓婚敭',
+  `controller_id` bigint NULL DEFAULT NULL COMMENT '鎺у埗鍣ㄥ疄浣揑D锛堝閿級',
+  `intake_id` bigint NULL DEFAULT NULL COMMENT '鍙栨按鍙D锛堝閿級',
+  `rtu_addr` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '鎺у埗鍣ㄥ湴鍧�',
+  `dt` datetime NULL DEFAULT NULL COMMENT '涓婃姤鏃ユ湡鏃堕棿',
+  `rtu_dt` datetime NULL DEFAULT NULL COMMENT '鎺у埗鍣ㄦ椂閽�',
+  `valve_state` tinyint NULL DEFAULT NULL COMMENT '鐘舵��-闃�闂�/娉碉紙0鎵撳紑銆�1鍏抽棴锛�',
+  `alarm_remain_water` tinyint NULL DEFAULT NULL COMMENT '鍓╀綑姘撮噺灏忎簬鎶ヨ涓婇檺鎶ヨ鎶ヨ锛�1锛氭姤璀︼紝 0锛氭甯革級',
+  `alarm0_water_remain` tinyint NULL DEFAULT NULL COMMENT '鍓╀綑姘撮噺涓�0鍏虫车/闃�(1锛氬叧娉碉紝0锛氭甯�)',
+  `alarm_exceed_year` tinyint NULL DEFAULT NULL COMMENT '骞寸敤姘撮噺澶т簬闄愬埗姘撮噺鎶ヨ(1锛氭姤璀� 0锛氭甯�)',
+  `alarm_water_meter_fault` tinyint NULL DEFAULT NULL COMMENT '娴侀噺璁℃晠闅�(1锛氭姤璀︼紝0锛氭甯�)',
+  `alarm_loss` tinyint NULL DEFAULT NULL COMMENT '婕忔崯(鍋锋按)鎶ヨ(1锛氭姤璀︼紝 0锛氭甯�)',
+  `alarm_water_meter_break` tinyint NULL DEFAULT NULL COMMENT '娴侀噺璁℃崯鍧�(姝e父閫氳浣嗙灛鏃朵负0)鎶ヨ(1锛氭姤璀︼紝0锛氭甯�)',
+  `alarm_ele_meter_fault` tinyint NULL DEFAULT NULL COMMENT '鐢佃〃鏁呴殰鎶ヨ(1锛氭姤璀︼紝0锛氭甯�)',
+  `alarm0_money_remain` tinyint NULL DEFAULT NULL COMMENT '鍓╀綑閲戦涓�0(1锛氭姤璀︼紝0锛氭甯�)',
+  `alarm_inner_door` tinyint NULL DEFAULT NULL COMMENT '鎺у埗鍣ㄥ唴闂ㄦ姤璀�(1锛氭姤璀︼紝0锛氭甯�)',
+  `alarm_outer_door` tinyint NULL DEFAULT NULL COMMENT '鎺у埗鍣ㄥ闂ㄦ墦寮�鎶ヨ(1锛氭姤璀︼紝0锛氭甯�)',
+  `alarm_ele_miss` tinyint NULL DEFAULT NULL COMMENT '浜ゆ祦缂洪」鎶ヨ(1锛氭姤璀︼紝0锛氭甯�)',
+  `alarm_ele_exceed` tinyint NULL DEFAULT NULL COMMENT '浜ゆ祦杩囨祦鎶ヨ(1锛氭姤璀︼紝0锛氭甯�)',
+  `alarm_ele_low_volt` tinyint NULL DEFAULT NULL COMMENT '涓夌浉鐢垫瑺鍘嬫姤璀�(1锛氭姤璀︼紝0锛氭甯�)',
+  `state_ic_enable` tinyint NULL DEFAULT NULL COMMENT 'IC鍗$姸鎬�(1銆佹湁鏁堬紝0锛氭棤鏁�)',
+  `alarm_battery_volt` tinyint NULL DEFAULT NULL COMMENT '鐢垫睜鐢靛帇鎶ヨ锛�1锛氭姤璀︼紝0锛氭甯革級',
+  `alarm_valve` tinyint NULL DEFAULT NULL COMMENT '闃�闂ㄦ姤璀︼紙1锛氭姤璀︼紝0锛氭甯革級',
+  `power_type` tinyint NULL DEFAULT NULL COMMENT '渚涚數鏂瑰紡锛�0: 220V锛�1锛氳搫鐢垫睜锛�',
+  PRIMARY KEY (`id`) USING BTREE,
+  UNIQUE INDEX `rm_alarm_state_history_id_uindex`(`id` ASC) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '鎺у埗鍣ㄦ姤璀︿笌鐘舵�侊紙鍘嗗彶锛�' ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Table structure for rm_alarm_state_last
+-- ----------------------------
+DROP TABLE IF EXISTS `rm_alarm_state_last`;
+CREATE TABLE `rm_alarm_state_last`  (
+  `id` bigint NOT NULL COMMENT '涓婚敭',
+  `controller_id` bigint NULL DEFAULT NULL COMMENT '鎺у埗鍣ㄥ疄浣揑D锛堝閿級',
+  `intake_id` bigint NULL DEFAULT NULL COMMENT '鍙栨按鍙D锛堝閿級',
+  `rtu_addr` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '鎺у埗鍣ㄥ湴鍧�',
+  `dt` datetime NULL DEFAULT NULL COMMENT '涓婃姤鏃ユ湡鏃堕棿',
+  `rtu_dt` datetime NULL DEFAULT NULL COMMENT '鎺у埗鍣ㄦ椂閽�',
+  `valve_state` tinyint NULL DEFAULT NULL COMMENT '鐘舵��-闃�闂�/娉碉紙0鎵撳紑銆�1鍏抽棴锛�',
+  `alarm_remain_water` tinyint NULL DEFAULT NULL COMMENT '鍓╀綑姘撮噺灏忎簬鎶ヨ涓婇檺鎶ヨ鎶ヨ锛�1锛氭姤璀︼紝 0锛氭甯革級',
+  `alarm0_water_remain` tinyint NULL DEFAULT NULL COMMENT '鍓╀綑姘撮噺涓�0鍏虫车/闃�(1锛氬叧娉碉紝0锛氭甯�)',
+  `alarm_exceed_year` tinyint NULL DEFAULT NULL COMMENT '骞寸敤姘撮噺澶т簬闄愬埗姘撮噺鎶ヨ(1锛氭姤璀� 0锛氭甯�)',
+  `alarm_water_meter_fault` tinyint NULL DEFAULT NULL COMMENT '娴侀噺璁℃晠闅�(1锛氭姤璀︼紝0锛氭甯�)',
+  `alarm_loss` tinyint NULL DEFAULT NULL COMMENT '婕忔崯(鍋锋按)鎶ヨ(1锛氭姤璀︼紝 0锛氭甯�)',
+  `alarm_water_meter_break` tinyint NULL DEFAULT NULL COMMENT '娴侀噺璁℃崯鍧�(姝e父閫氳浣嗙灛鏃朵负0)鎶ヨ(1锛氭姤璀︼紝0锛氭甯�)',
+  `alarm_ele_meter_fault` tinyint NULL DEFAULT NULL COMMENT '鐢佃〃鏁呴殰鎶ヨ(1锛氭姤璀︼紝0锛氭甯�)',
+  `alarm0_money_remain` tinyint NULL DEFAULT NULL COMMENT '鍓╀綑閲戦涓�0(1锛氭姤璀︼紝0锛氭甯�)',
+  `alarm_inner_door` tinyint NULL DEFAULT NULL COMMENT '鎺у埗鍣ㄥ唴闂ㄦ姤璀�(1锛氭姤璀︼紝0锛氭甯�)',
+  `alarm_outer_door` tinyint NULL DEFAULT NULL COMMENT '鎺у埗鍣ㄥ闂ㄦ墦寮�鎶ヨ(1锛氭姤璀︼紝0锛氭甯�)',
+  `alarm_ele_miss` tinyint NULL DEFAULT NULL COMMENT '浜ゆ祦缂洪」鎶ヨ(1锛氭姤璀︼紝0锛氭甯�)',
+  `alarm_ele_exceed` tinyint NULL DEFAULT NULL COMMENT '浜ゆ祦杩囨祦鎶ヨ(1锛氭姤璀︼紝0锛氭甯�)',
+  `alarm_ele_low_volt` tinyint NULL DEFAULT NULL COMMENT '涓夌浉鐢垫瑺鍘嬫姤璀�(1锛氭姤璀︼紝0锛氭甯�)',
+  `state_ic_enable` tinyint NULL DEFAULT NULL COMMENT 'IC鍗$姸鎬�(1銆佹湁鏁堬紝0锛氭棤鏁�)',
+  `alarm_battery_volt` tinyint NULL DEFAULT NULL COMMENT '鐢垫睜鐢靛帇鎶ヨ锛�1锛氭姤璀︼紝0锛氭甯革級',
+  `alarm_valve` tinyint NULL DEFAULT NULL COMMENT '闃�闂ㄦ姤璀︼紙1锛氭姤璀︼紝0锛氭甯革級',
+  `power_type` tinyint NULL DEFAULT NULL COMMENT '渚涚數鏂瑰紡锛�0: 220V锛�1锛氳搫鐢垫睜锛�',
+  `send_ms_time` bigint NULL DEFAULT NULL COMMENT '鍙戦�佹秷鎭椂鍒伙紙姣锛�',
+  PRIMARY KEY (`id`) USING BTREE,
+  UNIQUE INDEX `rm_alarm_state_last_id_uindex`(`id` ASC) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '鎺у埗鍣ㄦ姤璀︿笌鐘舵�侊紙鏈�鏂帮級' ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Table structure for rm_client_amount_day
+-- ----------------------------
+DROP TABLE IF EXISTS `rm_client_amount_day`;
+CREATE TABLE `rm_client_amount_day`  (
+  `id` bigint NOT NULL COMMENT '涓婚敭',
+  `client_id` bigint NULL DEFAULT NULL COMMENT '鍐滄埛ID',
+  `amount` float(10, 2) NULL DEFAULT NULL COMMENT '鏃ュ彇姘撮噺',
+  `money` float(10, 2) NULL DEFAULT NULL COMMENT '鏃ヨ姳璐归噾棰�',
+  `times` int NULL DEFAULT NULL COMMENT '鏃ュ彇姘存鏁�',
+  `dt` date NULL DEFAULT NULL COMMENT '缁熻鏃ユ湡(yyyy-mm-dd)',
+  `open_dt_last` datetime NULL DEFAULT NULL COMMENT '缁熻鏃ユ渶鍚庝竴娆″紑闃�鏃ユ湡鏃堕棿锛坹yyy-mm-dd HH:MM:SS锛�',
+  `close_dt_last` datetime NULL DEFAULT NULL COMMENT '缁熻鏃ユ渶鍚庝竴娆″叧闃�鏃ユ湡鏃堕棿锛坹yyy-mm-dd HH:MM:SS锛�',
+  `this_amount_last` float(10, 2) NULL DEFAULT NULL COMMENT '缁熻鏃ユ渶鍚庝竴娆″紑闃�鍙栨按閲�',
+  `this_money_last` float(10, 2) NULL DEFAULT NULL COMMENT '缁熻鏃ユ渶鍚庝竴娆″紑闃�鑺辫垂閲戦',
+  `this_time_last` int NULL DEFAULT NULL COMMENT '缁熻鏃ユ渶鍚庝竴娆″紑闃�鍙栨按鏃堕暱锛堝垎閽燂級',
+  `rtu_dt_last` datetime NULL DEFAULT NULL COMMENT '缁熻鏃ユ渶鍚庝竴娆″叧闃�涓婃姤鎺у埗鍣ㄦ椂閽�',
+  PRIMARY KEY (`id`) USING BTREE,
+  UNIQUE INDEX `rm_client_amount_day_id_uindex`(`id` ASC) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '鍐滄埛鏃ョ敤姘撮噺缁熻' ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Table structure for rm_client_amount_day_last
+-- ----------------------------
+DROP TABLE IF EXISTS `rm_client_amount_day_last`;
+CREATE TABLE `rm_client_amount_day_last`  (
+  `id` bigint NOT NULL COMMENT '涓婚敭',
+  `last_history_id` bigint NULL DEFAULT NULL COMMENT '鎸囧悜鍘嗗彶璁板綍涓殑鏈�鏂拌褰�',
+  `client_id` bigint NULL DEFAULT NULL COMMENT '鍐滄埛id',
+  `amount` float(10, 2) NULL DEFAULT NULL COMMENT '鏃ュ彇姘撮噺',
+  `money` float(10, 2) NULL DEFAULT NULL COMMENT '鏃ヨ姳璐归噾棰�',
+  `dt` date NULL DEFAULT NULL COMMENT '缁熻鏃ユ湡(yyyy-mm-dd)',
+  `open_dt_last` datetime NULL DEFAULT NULL COMMENT '缁熻鏃ユ渶鍚庝竴娆″紑闃�鏃ユ湡鏃堕棿锛坹yyy-mm-dd HH:MM:SS锛�',
+  `close_dt_last` datetime NULL DEFAULT NULL COMMENT '缁熻鏃ユ渶鍚庝竴娆″叧闃�鏃ユ湡鏃堕棿锛坹yyy-mm-dd HH:MM:SS锛�',
+  `this_amount_last` float(10, 2) NULL DEFAULT NULL COMMENT '缁熻鏃ユ渶鍚庝竴娆″紑闃�鍙栨按閲�',
+  `this_money_last` float(10, 2) NULL DEFAULT NULL COMMENT '缁熻鏃ユ渶鍚庝竴娆″紑闃�鑺辫垂閲戦',
+  `this_time_last` int NULL DEFAULT NULL COMMENT '缁熻鏃ユ渶鍚庝竴娆″紑闃�鍙栨按鏃堕暱锛堝垎閽燂級',
+  `rtu_dt_last` datetime NULL DEFAULT NULL COMMENT '缁熻鏃ユ渶鍚庝竴娆″叧闃�涓婃姤鎺у埗鍣ㄦ椂閽�',
+  PRIMARY KEY (`id`) USING BTREE,
+  UNIQUE INDEX `rm_client_amount_day_last_id_uindex`(`id` ASC) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '鍐滄埛鏃ョ敤姘撮噺缁熻' ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Table structure for rm_command_history
+-- ----------------------------
+DROP TABLE IF EXISTS `rm_command_history`;
+CREATE TABLE `rm_command_history`  (
+  `com_id` bigint NOT NULL COMMENT '涓婚敭锛堝彇鍚峜om_id锛岀洰鐨勬槸閬垮厤琚獻D鎷︽埅鍣ㄨ嚜鍔ㄨ祴鍊硷級',
+  `command_code` varchar(2) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '鍔熻兘鐮�',
+  `command_name` varchar(25) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '鎿嶄綔鍐呭',
+  `intake_id` bigint NOT NULL COMMENT '鍙栨按鍙D',
+  `rtu_addr` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '闃�鎺у櫒鍦板潃',
+  `protocol` varchar(25) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '閫氳鍗忚',
+  `param` json NULL COMMENT '鍙傛暟鏁版嵁',
+  `send_time` datetime NOT NULL COMMENT '鍙戦�佸懡浠ゆ椂闂�',
+  `operator` bigint NOT NULL COMMENT '鎿嶄綔浜�',
+  `result` tinyint NULL DEFAULT NULL COMMENT '鍛戒护缁撴灉;0-澶辫触锛�1-鎴愬姛',
+  `result_time` datetime NULL DEFAULT NULL COMMENT '鏀跺埌鍛戒护缁撴灉鏃堕棿',
+  `result_text` text CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL COMMENT '鍛戒护缁撴灉鍐呭',
+  PRIMARY KEY (`com_id`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '鍛戒护鏃ュ織琛�' ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Table structure for rm_intake_amount_day
+-- ----------------------------
+DROP TABLE IF EXISTS `rm_intake_amount_day`;
+CREATE TABLE `rm_intake_amount_day`  (
+  `id` bigint NOT NULL COMMENT '涓婚敭',
+  `intake_id` bigint NULL DEFAULT NULL COMMENT '鍙栨按鍙D锛堝閿級',
+  `dt` date NULL DEFAULT NULL COMMENT '缁熻鏃ユ湡(yyyy-mm-dd)',
+  `amount` float(10, 2) NULL DEFAULT NULL COMMENT '鏃ュ彇姘撮噺锛堜笉鍖呮嫭婕忔崯姘撮噺锛�',
+  `money` float(10, 2) NULL DEFAULT NULL COMMENT '鏃ュ彇娑堣垂閲戦',
+  `times` int NULL DEFAULT NULL COMMENT '鏃ュ彇姘存鏁�',
+  `dt_last` datetime NULL DEFAULT NULL COMMENT '鏈�鍚庤姘撮噺涓婃姤鏁版嵁鎺ユ敹鏃堕棿(yyyy-mm-dd hh:mm:ss)',
+  `rtu_addr_last` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '鏈�鍚庤姘撮噺鐨勬帶鍒跺櫒鍦板潃',
+  `controller_id_last` bigint NULL DEFAULT NULL COMMENT '鏈�鍚庤姘撮噺鐨勬帶鍒跺櫒ID锛堝閿級',
+  `total_amount_last` float(10, 2) NULL DEFAULT NULL COMMENT '鏈�鍚庤姘撮噺鏃舵帶鍒跺櫒绱姘撮噺',
+  `rtu_dt_last` datetime NULL DEFAULT NULL COMMENT '鏈�鍚庤姘撮噺鏃舵帶鍒跺櫒鏃堕挓锛坹yyy-mm-dd HH:MM:SS锛�',
+  PRIMARY KEY (`id`) USING BTREE,
+  UNIQUE INDEX `rm_intake_amount_day_id_uindex`(`id` ASC) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '鍙栨按鍙f棩鍙栨按閲忔紡鎹熼噺' ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Table structure for rm_intake_amount_day_last
+-- ----------------------------
+DROP TABLE IF EXISTS `rm_intake_amount_day_last`;
+CREATE TABLE `rm_intake_amount_day_last`  (
+  `id` bigint NOT NULL COMMENT '涓婚敭',
+  `last_history_id` bigint NULL DEFAULT NULL COMMENT '瀵瑰簲鍘嗗彶璁板綍涓殑璁板綍',
+  `intake_id` bigint NULL DEFAULT NULL COMMENT '鍙栨按鍙D锛堝閿級',
+  `dt` date NULL DEFAULT NULL COMMENT '缁熻鏃ユ湡(yyyy-mm-dd)',
+  `amount` float(10, 2) NULL DEFAULT NULL COMMENT '鏃ュ彇姘撮噺锛堜笉鍖呮嫭婕忔崯姘撮噺锛�',
+  `money` float(10, 2) NULL DEFAULT NULL COMMENT '鏃ュ彇娑堣垂閲戦',
+  `times` int NULL DEFAULT NULL COMMENT '鏃ュ彇姘存鏁�',
+  `dt_last` datetime NULL DEFAULT NULL COMMENT '鏈�鍚庤姘撮噺涓婃姤鏁版嵁鎺ユ敹鏃堕棿(yyyy-mm-dd hh:mm:ss)',
+  `rtu_addr_last` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '鏈�鍚庤姘撮噺鐨勬帶鍒跺櫒鍦板潃',
+  `controller_id_last` bigint NULL DEFAULT NULL COMMENT '鏈�鍚庤姘撮噺鐨勬帶鍒跺櫒ID锛堝閿級',
+  `total_amount_last` float(10, 2) NULL DEFAULT NULL COMMENT '鏈�鍚庤姘撮噺鏃舵帶鍒跺櫒绱姘撮噺',
+  `rtu_dt_last` datetime NULL DEFAULT NULL COMMENT '鏈�鍚庤姘撮噺鏃舵帶鍒跺櫒鏃堕挓锛坹yyy-mm-dd HH:MM:SS锛�',
+  PRIMARY KEY (`id`) USING BTREE,
+  UNIQUE INDEX `rm_intake_amount_day_last_id_uindex`(`id` ASC) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '鍙栨按鍙f棩鍙栨按閲忔紡鎹熼噺鏈�鏂�' ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Table structure for rm_irrigate_profile
+-- ----------------------------
+DROP TABLE IF EXISTS `rm_irrigate_profile`;
+CREATE TABLE `rm_irrigate_profile`  (
+  `id` bigint NOT NULL COMMENT '涓婚敭',
+  `default_value` int NOT NULL COMMENT '閰嶇疆榛樿鍊�',
+  `unit` tinyint NOT NULL COMMENT '璁¢噺鍗曚綅;1-鏃讹紙h锛夛紝2-鍒嗭紙min锛夛紝3-绔嬫柟绫筹紙cbm锛�',
+  `sort` int NULL DEFAULT NULL COMMENT '鎺掑簭',
+  `type` tinyint NULL DEFAULT NULL COMMENT '绫诲瀷;1-鐢ㄦ椂锛�2-鐢ㄦ按閲�',
+  `remarks` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '澶囨敞淇℃伅',
+  `deleted` bigint NULL DEFAULT 0 COMMENT '閫昏緫鍒犻櫎鏍囪瘑;鏈垹闄や负0锛屽凡鍒犻櫎涓哄垹闄ゆ椂闂�',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '鐏屾簤閰嶇疆琛�' ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Table structure for rm_loss_day
+-- ----------------------------
+DROP TABLE IF EXISTS `rm_loss_day`;
+CREATE TABLE `rm_loss_day`  (
+  `id` bigint NOT NULL COMMENT '涓婚敭',
+  `controller_id` bigint NULL DEFAULT NULL COMMENT '鎺у埗鍣ㄥ疄浣揑D锛堝閿級',
+  `intake_id` bigint NULL DEFAULT NULL COMMENT '鍙栨按鍙e疄浣揑D锛堝閿級',
+  `rtu_addr` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '鎺у埗鍣ㄥ湴鍧�',
+  `dt` date NULL DEFAULT NULL COMMENT '缁熻鏃ユ湡锛坹yyy-mm-dd锛�',
+  `dt_last` datetime NULL DEFAULT NULL COMMENT '鎺у埗鍣ㄦ渶鍚庝笂鎶ユ暟鎹棩鏈熸椂闂�',
+  `dt_rtu` datetime NULL DEFAULT NULL COMMENT '鎺у埗鍣ㄦ椂閽�',
+  `loss_amount` float(10, 2) NULL DEFAULT NULL COMMENT '鏃ユ紡鎹熸祦閲�',
+  PRIMARY KEY (`id`) USING BTREE,
+  UNIQUE INDEX `rm_loss_history_id_uindex`(`id` ASC) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '婕忔崯鍘嗗彶璁板綍' ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Table structure for rm_loss_day_last
+-- ----------------------------
+DROP TABLE IF EXISTS `rm_loss_day_last`;
+CREATE TABLE `rm_loss_day_last`  (
+  `id` bigint NOT NULL COMMENT '涓婚敭',
+  `last_history_id` bigint NULL DEFAULT NULL COMMENT '鐢辨渶鏂版暟鎹寔鏈夊巻鍙叉暟鎹腑鐨勬渶鏂拌褰旾D',
+  `controller_id` bigint NULL DEFAULT NULL COMMENT '鎺у埗鍣ㄥ疄浣揑D锛堝閿級',
+  `intake_id` bigint NULL DEFAULT NULL COMMENT '鍙栨按鍙e疄浣揑D锛堝閿級',
+  `rtu_addr` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '鎺у埗鍣ㄥ湴鍧�',
+  `dt` date NULL DEFAULT NULL COMMENT '鏃ユ湡锛坹yyy-mm-dd锛�',
+  `dt_last` datetime NULL DEFAULT NULL COMMENT '鎺у埗鍣ㄦ渶鍚庝笂鎶ユ暟鎹棩鏈熸椂闂�',
+  `dt_rtu` datetime NULL DEFAULT NULL COMMENT '鎺у埗鍣ㄦ椂閽�',
+  `loss_amount` float(10, 2) NULL DEFAULT NULL COMMENT '鏃ユ紡鎹熸祦閲�',
+  PRIMARY KEY (`id`) USING BTREE,
+  UNIQUE INDEX `rm_loss_last_id_uindex`(`id` ASC) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '婕忔崯鏈�鏂拌褰�' ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Table structure for rm_on_hour_report_history
+-- ----------------------------
+DROP TABLE IF EXISTS `rm_on_hour_report_history`;
+CREATE TABLE `rm_on_hour_report_history`  (
+  `id` bigint NOT NULL COMMENT '涓婚敭',
+  `controller_id` bigint NULL DEFAULT NULL COMMENT '鎺у埗鍣ㄥ疄浣揑D(澶栭敭)',
+  `intake_id` bigint NULL DEFAULT NULL COMMENT '鍙栨按鍙e疄浣揑D锛堝閿級',
+  `rtu_addr` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '鎺у埗鍣ㄥ湴鍧�\n',
+  `dt` datetime NULL DEFAULT NULL COMMENT '鏁版嵁鎺ユ敹鏃ユ湡鏃堕棿',
+  `rtu_dt` datetime NULL DEFAULT NULL COMMENT '鎺у埗鍣ㄦ椂閽�',
+  `instant_amount` float(10, 3) NULL DEFAULT NULL COMMENT '鐬椂娴侀噺,鍗曚綅涓簃3/h',
+  `total_amount` float(10, 2) NULL DEFAULT NULL COMMENT '绱娴侀噺,鍗曚綅涓簃3',
+  `loss_amount` float(10, 2) NULL DEFAULT NULL COMMENT '鎹熷け娴侀噺(浠�0鏃跺埌褰撳墠鐨勬紡鎹熺疮璁℃祦閲忥紝24鏃朵竴涓懆鏈燂紝0鏃跺綊0)鍗曚綅涓簃3銆�',
+  `water_press` float(10, 2) NULL DEFAULT NULL COMMENT '姘村帇,鍗曚綅涓篕Pa',
+  `battery_volt` float(10, 2) NULL DEFAULT NULL COMMENT '钃勭數姹犵數鍘嬶紝鍗曚綅涓篤',
+  `signal_value` int NULL DEFAULT NULL COMMENT '淇″彿寮哄害锛屽彇鍊艰寖鍥�0~99',
+  `water_price` float(10, 2) NULL DEFAULT NULL COMMENT '姘翠环锛屽崟浣嶄负V銆�',
+  PRIMARY KEY (`id`) USING BTREE,
+  UNIQUE INDEX `rm_on_hour_report_history_id_uindex`(`id` ASC) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '鎺у埗鍣ㄦ暣鐐规姤锛堝彧鏈夐澇鎬诲崗璁湁锛�' ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Table structure for rm_on_hour_report_last
+-- ----------------------------
+DROP TABLE IF EXISTS `rm_on_hour_report_last`;
+CREATE TABLE `rm_on_hour_report_last`  (
+  `id` bigint NOT NULL COMMENT '涓婚敭',
+  `controller_id` bigint NULL DEFAULT NULL COMMENT '鎺у埗鍣ㄥ疄浣揑D(澶栭敭)',
+  `intake_id` bigint NULL DEFAULT NULL COMMENT '鍙栨按鍙e疄浣揑D锛堝閿級',
+  `rtu_addr` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '鎺у埗鍣ㄥ湴鍧�\n',
+  `dt` datetime NULL DEFAULT NULL COMMENT '鏁版嵁鎺ユ敹鏃ユ湡鏃堕棿',
+  `rtu_dt` datetime NULL DEFAULT NULL COMMENT '鎺у埗鍣ㄦ椂閽�',
+  `instant_amount` float(10, 3) NULL DEFAULT NULL COMMENT '鐬椂娴侀噺,鍗曚綅涓簃3/h',
+  `total_amount` float(10, 2) NULL DEFAULT NULL COMMENT '绱娴侀噺,鍗曚綅涓簃3',
+  `loss_amount` float(10, 2) NULL DEFAULT NULL COMMENT '鎹熷け娴侀噺(浠�0鏃跺埌褰撳墠鐨勬紡鎹熺疮璁℃祦閲忥紝24鏃朵竴涓懆鏈燂紝0鏃跺綊0)鍗曚綅涓簃3銆�',
+  `water_press` float(10, 2) NULL DEFAULT NULL COMMENT '姘村帇,鍗曚綅涓篕Pa',
+  `battery_volt` float(10, 2) NULL DEFAULT NULL COMMENT '钃勭數姹犵數鍘嬶紝鍗曚綅涓篤',
+  `signal_value` int NULL DEFAULT NULL COMMENT '淇″彿寮哄害锛屽彇鍊艰寖鍥�0~99',
+  `water_price` float(10, 2) NULL DEFAULT NULL COMMENT '姘翠环锛屽崟浣嶄负V銆�',
+  PRIMARY KEY (`id`) USING BTREE,
+  UNIQUE INDEX `rm_on_hour_report_last_id_uindex`(`id` ASC) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '鎺у埗鍣ㄦ暣鐐规姤锛堝彧鏈夐澇鎬诲崗璁湁锛�' ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Table structure for rm_open_close_valve_history
+-- ----------------------------
+DROP TABLE IF EXISTS `rm_open_close_valve_history`;
+CREATE TABLE `rm_open_close_valve_history`  (
+  `id` bigint NOT NULL COMMENT '涓婚敭',
+  `client_id` bigint NULL DEFAULT NULL COMMENT '鍐滄埛瀹炰綋澶栭敭',
+  `client_name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '鍐滄埛濮撳悕',
+  `controller_id` bigint NULL DEFAULT NULL COMMENT '鎺у埗鍣ㄥ疄浣揑D锛堝閿級',
+  `intake_id` bigint NULL DEFAULT NULL COMMENT '鍙栨按鍙e疄浣揑D锛堝閿級',
+  `rtu_addr` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '鎺у埗鍣ㄥ湴鍧�',
+  `op_dt` datetime NULL DEFAULT NULL COMMENT '寮�闃�鏁版嵁鎺ユ敹鏃ユ湡鏃堕棿',
+  `op_type` tinyint NULL DEFAULT NULL COMMENT '寮�闃�绫诲瀷',
+  `op_total_amount` float(10, 2) NULL DEFAULT NULL COMMENT '寮�闃�鏃剁疮璁℃祦閲�',
+  `op_ic_card_no` varchar(17) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '寮�闃�IC鍗$紪鍙�',
+  `op_ic_card_addr` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '寮�闃�ic鍗″湴鍧�',
+  `op_remain_money` float(10, 2) NULL DEFAULT NULL COMMENT '寮�闃�鏃跺墿浣欓噾棰�',
+  `open_dt` datetime NULL DEFAULT NULL COMMENT '寮�闃�鏃舵帶鍒跺櫒鏃堕挓',
+  `op_order_no` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '寮�闃�璁㈠崟鍙凤紙16浣嶆暟瀛楋級',
+  `op_ele_total_amount` float(10, 2) NULL DEFAULT NULL COMMENT '寮�闃�鐢佃〃绱鐢甸噺',
+  `op_water_remain_user` float(10, 2) NULL DEFAULT NULL COMMENT '寮�闃�鏃剁敤姘存埛鍓╀綑姘撮噺',
+  `cl_dt` datetime NULL DEFAULT NULL COMMENT '鍏抽榾鏁版嵁鎺ユ敹鏃ユ湡鏃堕棿',
+  `cl_type` tinyint NULL DEFAULT NULL COMMENT '鍏抽榾绫诲瀷',
+  `cl_total_amount` float(10, 2) NULL DEFAULT NULL COMMENT '鍏抽榾鏃剁疮璁℃祦閲�',
+  `cl_ic_card_no` varchar(17) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '鍏抽榾鏃禝C鍗$紪鍙�',
+  `cl_ic_card_addr` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '鍏抽榾鏃禝C鍗″湴鍧�',
+  `cl_remain_money` float(10, 2) NULL DEFAULT NULL COMMENT '鍏抽榾鏃跺墿浣欓噾棰�',
+  `cl_this_amount` float(10, 2) NULL DEFAULT NULL COMMENT '鍏抽榾鎶ヤ腑鏈鐢ㄦ按閲�',
+  `cl_this_money` float(10, 2) NULL DEFAULT NULL COMMENT '鍏抽榾鎶ヤ腑鏈娑堣垂閲戦',
+  `cl_this_time` int NULL DEFAULT NULL COMMENT '鍏抽榾鎶ヤ腑鏈鐢ㄦ按鏃堕暱锛堝垎閽燂級',
+  `cl_price` float(10, 2) NULL DEFAULT NULL COMMENT '鍏抽榾鎶ヤ腑鐨勬按浠�',
+  `cl_open_dt` datetime NULL DEFAULT NULL COMMENT '鍏抽榾鎶ヤ腑鐨勫紑闃�鏃舵帶鍒跺櫒鏃堕挓',
+  `close_dt` datetime NULL DEFAULT NULL COMMENT '鍏抽榾鏃舵帶鍒跺櫒鏃堕挓',
+  `cl_order_no` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '鍏抽榾璁㈠崟鍙凤紙16浣嶆暟瀛楋級',
+  `cl_ele_total_amount` float(10, 2) NULL DEFAULT NULL COMMENT '鍏抽榾鏃剁數琛ㄧ疮璁$數閲�',
+  `cl_water_remain_user` float(10, 2) NULL DEFAULT NULL COMMENT '鍏抽榾鏃堕棿鐢ㄦ埛鍓╀綑姘撮噺',
+  `cl_this_ele` float(10, 2) NULL DEFAULT NULL COMMENT '鍏抽榾鎶ヤ腑鏈鐢ㄧ數閲�',
+  PRIMARY KEY (`id`) USING BTREE,
+  UNIQUE INDEX `rm_open_close_valve_history_id_uindex`(`id` ASC) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Table structure for rm_open_close_valve_last
+-- ----------------------------
+DROP TABLE IF EXISTS `rm_open_close_valve_last`;
+CREATE TABLE `rm_open_close_valve_last`  (
+  `id` bigint NOT NULL COMMENT '涓婚敭',
+  `last_history_id` bigint NULL DEFAULT NULL COMMENT '鐢辨渶鏂版暟鎹寔鏈夊巻鍙叉暟鎹腑鐨勬渶鏂拌褰旾D',
+  `client_id` bigint NULL DEFAULT NULL COMMENT '鍐滄埛id',
+  `client_name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '鍐滄埛濮撳悕',
+  `controller_id` bigint NULL DEFAULT NULL COMMENT '鎺у埗鍣ㄥ疄浣揑D锛堝閿級',
+  `intake_id` bigint NULL DEFAULT NULL COMMENT '鍙栨按鍙e疄浣揑D锛堝閿級',
+  `rtu_addr` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '鎺у埗鍣ㄥ湴鍧�',
+  `op_dt` datetime NULL DEFAULT NULL COMMENT '寮�闃�鏁版嵁鎺ユ敹鏃ユ湡鏃堕棿',
+  `op_type` tinyint NULL DEFAULT NULL COMMENT '寮�闃�绫诲瀷',
+  `op_total_amount` float(10, 2) NULL DEFAULT NULL COMMENT '寮�闃�鏃剁疮璁℃祦閲�',
+  `op_ic_card_no` varchar(17) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '寮�闃�IC鍗$紪鍙�',
+  `op_ic_card_addr` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '寮�闃�ic鍗″湴鍧�',
+  `op_remain_money` float(10, 2) NULL DEFAULT NULL COMMENT '寮�闃�鏃跺墿浣欓噾棰�',
+  `open_dt` datetime NULL DEFAULT NULL COMMENT '寮�闃�鏃舵帶鍒跺櫒鏃堕挓',
+  `op_order_no` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '寮�闃�璁㈠崟鍙凤紙16浣嶆暟瀛楋級',
+  `op_ele_total_amount` float(10, 2) NULL DEFAULT NULL COMMENT '寮�闃�鐢佃〃绱鐢甸噺',
+  `op_water_remain_user` float(10, 2) NULL DEFAULT NULL COMMENT '寮�闃�鏃剁敤姘存埛鍓╀綑姘撮噺',
+  `cl_dt` datetime NULL DEFAULT NULL COMMENT '鍏抽榾鏁版嵁鎺ユ敹鏃ユ湡鏃堕棿',
+  `cl_type` tinyint NULL DEFAULT NULL COMMENT '鍏抽榾绫诲瀷',
+  `cl_total_amount` float(10, 2) NULL DEFAULT NULL COMMENT '鍏抽榾鏃剁疮璁℃祦閲�',
+  `cl_ic_card_no` varchar(17) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '鍏抽榾鏃禝C鍗$紪鍙�',
+  `cl_ic_card_addr` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '鍏抽榾鏃禝C鍗″湴鍧�',
+  `cl_remain_money` float(10, 2) NULL DEFAULT NULL COMMENT '鍏抽榾鏃跺墿浣欓噾棰�',
+  `cl_this_amount` float(10, 2) NULL DEFAULT NULL COMMENT '鍏抽榾鎶ヤ腑鏈鐢ㄦ按閲�',
+  `cl_this_money` float(10, 2) NULL DEFAULT NULL COMMENT '鍏抽榾鎶ヤ腑鏈娑堣垂閲戦',
+  `cl_this_time` int NULL DEFAULT NULL COMMENT '鍏抽榾鎶ヤ腑鏈鐢ㄦ按鏃堕暱锛堝垎閽燂級',
+  `cl_price` float(10, 2) NULL DEFAULT NULL COMMENT '鍏抽榾鎶ヤ腑鐨勬按浠�',
+  `cl_open_dt` datetime NULL DEFAULT NULL COMMENT '鍏抽榾鎶ヤ腑鐨勫紑闃�鏃舵帶鍒跺櫒鏃堕挓',
+  `close_dt` datetime NULL DEFAULT NULL COMMENT '鍏抽榾鏃舵帶鍒跺櫒鏃堕挓',
+  `cl_order_no` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '鍏抽榾璁㈠崟鍙凤紙16浣嶆暟瀛楋級',
+  `cl_ele_total_amount` float(10, 2) NULL DEFAULT NULL COMMENT '鍏抽榾鏃剁數琛ㄧ疮璁$數閲�',
+  `cl_water_remain_user` float(10, 2) NULL DEFAULT NULL COMMENT '鍏抽榾鏃堕棿鐢ㄦ埛鍓╀綑姘撮噺',
+  `cl_this_ele` float(10, 2) NULL DEFAULT NULL COMMENT '鍏抽榾鎶ヤ腑鏈鐢ㄧ數閲�',
+  PRIMARY KEY (`id`) USING BTREE,
+  UNIQUE INDEX `rm_open_close_valve_last_id_uindex`(`id` ASC) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Table structure for rm_timing_report_history
+-- ----------------------------
+DROP TABLE IF EXISTS `rm_timing_report_history`;
+CREATE TABLE `rm_timing_report_history`  (
+  `id` bigint NOT NULL COMMENT '涓婚敭',
+  `controller_id` bigint NULL DEFAULT NULL COMMENT '鎺у埗鍣ㄥ疄浣揑D锛堝閿級',
+  `intake_id` bigint NULL DEFAULT NULL COMMENT '鍙栨按鍙e疄浣揑D锛堝閿級',
+  `rtu_addr` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '鎺у埗鍣ㄥ湴鍧�',
+  `dt` datetime NULL DEFAULT NULL COMMENT '鏁版嵁鎺ユ敹鏃ユ湡鏃堕棿',
+  `rtu_dt` datetime NULL DEFAULT NULL COMMENT '鎺у埗鍣ㄦ椂閽�',
+  `data_dt` date NULL DEFAULT NULL COMMENT '鏁版嵁鏃堕棿',
+  `water_total_amount_year` float(10, 2) NULL DEFAULT NULL COMMENT '鏈勾绱娴侀噺',
+  `water_total_amount_meter` float(10, 2) NULL DEFAULT NULL COMMENT '姘磋〃绱娴侀噺',
+  `ele_total_amount_year` float(10, 2) NULL DEFAULT NULL COMMENT '鏈勾绱鐢甸噺',
+  `ele_total_amount_meter` float(10, 2) NULL DEFAULT NULL COMMENT '鐢佃〃绱鐢甸噺',
+  `water_total_amount_day` float(10, 2) NULL DEFAULT NULL COMMENT '褰撴棩姘磋〃鍑�娴侀噺',
+  `water_user_total_amount_day` float(10, 2) NULL DEFAULT NULL COMMENT '褰撴棩鐢ㄦ埛鐢ㄦ按閲�',
+  `loss_total_amount_day` float(10, 2) NULL DEFAULT NULL COMMENT '婕忔崯姘撮噺',
+  `battery_volt` float(10, 2) NULL DEFAULT NULL COMMENT '鍚庡鐢垫睜鐢靛帇',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '瀹氭椂锛�0鐐癸級鎶ュ巻鍙叉暟鎹〃锛堝彧鏈夋睙娴峰崗璁湁锛�' ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Table structure for rm_timing_report_last
+-- ----------------------------
+DROP TABLE IF EXISTS `rm_timing_report_last`;
+CREATE TABLE `rm_timing_report_last`  (
+  `id` bigint NOT NULL COMMENT '涓婚敭',
+  `controller_id` bigint NULL DEFAULT NULL COMMENT '鎺у埗鍣ㄥ疄浣揑D锛堝閿級',
+  `intake_id` bigint NULL DEFAULT NULL COMMENT '鍙栨按鍙e疄浣揑D锛堝閿級',
+  `rtu_addr` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '鎺у埗鍣ㄥ湴鍧�',
+  `dt` datetime NULL DEFAULT NULL COMMENT '鏁版嵁鎺ユ敹鏃ユ湡鏃堕棿',
+  `rtu_dt` datetime NULL DEFAULT NULL COMMENT '鎺у埗鍣ㄦ椂閽�',
+  `data_dt` date NULL DEFAULT NULL COMMENT '鏁版嵁鏃堕棿',
+  `water_total_amount_year` float(10, 2) NULL DEFAULT NULL COMMENT '鏈勾绱娴侀噺',
+  `water_total_amount_meter` float(10, 2) NULL DEFAULT NULL COMMENT '姘磋〃绱娴侀噺',
+  `ele_total_amount_year` float(10, 2) NULL DEFAULT NULL COMMENT '鏈勾绱鐢甸噺',
+  `ele_total_amount_meter` float(10, 2) NULL DEFAULT NULL COMMENT '鐢佃〃绱鐢甸噺',
+  `water_total_amount_day` float(10, 2) NULL DEFAULT NULL COMMENT '褰撴棩姘磋〃鍑�娴侀噺',
+  `water_user_total_amount_day` float(10, 2) NULL DEFAULT NULL COMMENT '褰撴棩鐢ㄦ埛鐢ㄦ按閲�',
+  `loss_total_amount_day` float(10, 2) NULL DEFAULT NULL COMMENT '婕忔崯姘撮噺',
+  `battery_volt` float(10, 2) NULL DEFAULT NULL COMMENT '鍚庡鐢垫睜鐢靛帇',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '瀹氭椂锛�0鐐癸級鎶ユ渶鏂版暟鎹〃锛堝彧鏈夋睙娴峰崗璁湁锛�' ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Table structure for rm_work_report_history
+-- ----------------------------
+DROP TABLE IF EXISTS `rm_work_report_history`;
+CREATE TABLE `rm_work_report_history`  (
+  `id` bigint NOT NULL COMMENT '涓婚敭',
+  `client_id` bigint NULL DEFAULT NULL COMMENT '鍐滄埛瀹炰綋澶栭敭',
+  `client_name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '鍐滄埛濮撳悕',
+  `controller_id` bigint NULL DEFAULT NULL COMMENT '鎺у埗鍣ㄥ疄浣揑D锛堝閿級',
+  `intake_id` bigint NULL DEFAULT NULL COMMENT '鍙栨按鍙e疄浣揑D锛堝閿級',
+  `rtu_addr` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '鎺у埗鍣ㄥ湴鍧�',
+  `dt` datetime NULL DEFAULT NULL COMMENT '鏁版嵁鎺ユ敹鏃ユ湡鏃堕棿',
+  `rtu_dt` datetime NULL DEFAULT NULL COMMENT '寮�闃�鏃舵帶鍒跺櫒鏃堕挓',
+  `order_no` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '璁㈠崟鍙凤紙16浣嶆暟瀛楋級',
+  `ic_card_addr` varchar(8) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT 'IC鍗″湴鍧�(杩滅▼寮�娉�/闃�鏃跺叏涓�0)',
+  `ic_card_no` varchar(17) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT 'IC鍗$紪鍙�',
+  `water_level` float NULL DEFAULT NULL COMMENT '姘翠綅锛堝崟浣�0.001绫筹級',
+  `water_press` float NULL DEFAULT NULL COMMENT '姘村帇锛堝崟浣�0.01鍗冨笗锛�',
+  `water_instant` float NULL DEFAULT NULL COMMENT '鐬椂娴侀噺锛堝崟浣�0.01m3/灏忔椂锛�',
+  `water_total` float NULL DEFAULT NULL COMMENT '姘磋〃绱娴侀噺(鍗曚綅0.01m3)',
+  `ele_total` float NULL DEFAULT NULL COMMENT '鐢佃〃绱鐢甸噺(鍗曚綅0.01搴�)',
+  `money_remain` float NULL DEFAULT NULL COMMENT '鐢ㄦ埛鍓╀綑閲戦(鍗曚綅0.01鍏�)',
+  `water_remain` float NULL DEFAULT NULL COMMENT '鐢ㄦ埛鍓╀綑姘撮噺(鍗曚綅0.01m3)',
+  `this_ele` float NULL DEFAULT NULL COMMENT '鏈浣跨敤鐢甸噺(鍗曚綅0.01搴�)',
+  `this_water` float NULL DEFAULT NULL COMMENT '鏈浣跨敤姘撮噺(鍗曚綅0.01m3)',
+  `this_money` float NULL DEFAULT NULL COMMENT '鏈浣跨敤閲戦(鍗曚綅0.01鍏�)',
+  `this_duration` int NULL DEFAULT NULL COMMENT '鏈浣跨敤鏃堕暱(鍗曚綅:鍒嗛挓  鏈�澶�9999鍒嗛挓)',
+  `water_price` float NULL DEFAULT NULL COMMENT '褰撳墠姘撮噺鍗曚环(鍗曚綅0.01鍏� 鏈�澶�99.99鍏�)',
+  `ele_price` float NULL DEFAULT NULL COMMENT '褰撳墠鐢甸噺鍗曚环(鍗曚綅0.01鍏� 鏈�澶�99.99鍏�)',
+  `a_volt` float NULL DEFAULT NULL COMMENT '浜ゆ祦A鐩哥數鍘�(鍗曚綅0.1浼忕壒)',
+  `b_volt` float NULL DEFAULT NULL COMMENT '浜ゆ祦B鐩哥數鍘�(鍗曚綅0.1浼忕壒)',
+  `c_volt` float NULL DEFAULT NULL COMMENT '浜ゆ祦C鐩哥數鍘�(鍗曚綅0.1浼忕壒)',
+  `a_current` float NULL DEFAULT NULL COMMENT '浜ゆ祦A鐩哥數娴�(鍗曚綅0.1瀹夊煿)',
+  `b_current` float NULL DEFAULT NULL COMMENT '浜ゆ祦B鐩哥數娴佹暟鎹�(鍗曚綅0.1瀹夊煿)',
+  `c_current` float NULL DEFAULT NULL COMMENT '浜ゆ祦C鐩哥數娴�(鍗曚綅0.1瀹夊煿)',
+  `battery_volt` float NULL DEFAULT NULL COMMENT '鍚庡鐢垫睜鐢靛帇(鍗曚綅0.01浼忕壒)',
+  `water_meter_trans_volt` float NULL DEFAULT NULL COMMENT '姘磋〃杩滀紶鐢靛帇(鍗曚綅0.01浼忕壒)',
+  `water_meter_work_volt` float NULL DEFAULT NULL COMMENT '姘磋〃宸ヤ綔鐢靛帇(鍗曚綅0.01浼忕壒)',
+  PRIMARY KEY (`id`) USING BTREE,
+  UNIQUE INDEX `rm_work_report_history_id_uindex`(`id` ASC) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '鎺у埗鍣ㄩ榾寮�宸ヤ綔鎶ュ巻鍙叉暟鎹�' ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Table structure for rm_work_report_last
+-- ----------------------------
+DROP TABLE IF EXISTS `rm_work_report_last`;
+CREATE TABLE `rm_work_report_last`  (
+  `id` bigint NOT NULL COMMENT '涓婚敭',
+  `client_id` bigint NULL DEFAULT NULL COMMENT '鍐滄埛瀹炰綋澶栭敭',
+  `client_name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '鍐滄埛濮撳悕',
+  `controller_id` bigint NULL DEFAULT NULL COMMENT '鎺у埗鍣ㄥ疄浣揑D锛堝閿級',
+  `intake_id` bigint NULL DEFAULT NULL COMMENT '鍙栨按鍙e疄浣揑D锛堝閿級',
+  `rtu_addr` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '鎺у埗鍣ㄥ湴鍧�',
+  `dt` datetime NULL DEFAULT NULL COMMENT '鏁版嵁鎺ユ敹鏃ユ湡鏃堕棿',
+  `rtu_dt` datetime NULL DEFAULT NULL COMMENT '寮�闃�鏃舵帶鍒跺櫒鏃堕挓',
+  `order_no` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '璁㈠崟鍙凤紙16浣嶆暟瀛楋級',
+  `ic_card_addr` varchar(8) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT 'IC鍗″湴鍧�(杩滅▼寮�娉�/闃�鏃跺叏涓�0)',
+  `ic_card_no` varchar(17) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT 'IC鍗$紪鍙�',
+  `water_level` float(10, 3) NULL DEFAULT NULL COMMENT '姘翠綅锛堝崟浣�0.001绫筹級',
+  `water_press` float(10, 2) NULL DEFAULT NULL COMMENT '姘村帇锛堝崟浣�0.01鍗冨笗锛�',
+  `water_instant` float(10, 2) NULL DEFAULT NULL COMMENT '鐬椂娴侀噺锛堝崟浣�0.01m3/灏忔椂锛�',
+  `water_total` float(10, 2) NULL DEFAULT NULL COMMENT '姘磋〃绱娴侀噺(鍗曚綅0.01m3)',
+  `ele_total` float(10, 2) NULL DEFAULT NULL COMMENT '鐢佃〃绱鐢甸噺(鍗曚綅0.01搴�)',
+  `money_remain` float(10, 2) NULL DEFAULT NULL COMMENT '鐢ㄦ埛鍓╀綑閲戦(鍗曚綅0.01鍏�)',
+  `water_remain` float(10, 2) NULL DEFAULT NULL COMMENT '鐢ㄦ埛鍓╀綑姘撮噺(鍗曚綅0.01m3)',
+  `this_ele` float(10, 2) NULL DEFAULT NULL COMMENT '鏈浣跨敤鐢甸噺(鍗曚綅0.01搴�)',
+  `this_water` float(10, 2) NULL DEFAULT NULL COMMENT '鏈浣跨敤姘撮噺(鍗曚綅0.01m3)',
+  `this_money` float(10, 2) NULL DEFAULT NULL COMMENT '鏈浣跨敤閲戦(鍗曚綅0.01鍏�)',
+  `this_duration` int NULL DEFAULT NULL COMMENT '鏈浣跨敤鏃堕暱(鍗曚綅:鍒嗛挓  鏈�澶�9999鍒嗛挓)',
+  `water_price` float(10, 2) NULL DEFAULT NULL COMMENT '褰撳墠姘撮噺鍗曚环(鍗曚綅0.01鍏� 鏈�澶�99.99鍏�)',
+  `ele_price` float(10, 2) NULL DEFAULT NULL COMMENT '褰撳墠鐢甸噺鍗曚环(鍗曚綅0.01鍏� 鏈�澶�99.99鍏�)',
+  `a_volt` float(10, 1) NULL DEFAULT NULL COMMENT '浜ゆ祦A鐩哥數鍘�(鍗曚綅0.1浼忕壒)',
+  `b_volt` float(10, 1) NULL DEFAULT NULL COMMENT '浜ゆ祦B鐩哥數鍘�(鍗曚綅0.1浼忕壒)',
+  `c_volt` float(10, 1) NULL DEFAULT NULL COMMENT '浜ゆ祦C鐩哥數鍘�(鍗曚綅0.1浼忕壒)',
+  `a_current` float(10, 1) NULL DEFAULT NULL COMMENT '浜ゆ祦A鐩哥數娴�(鍗曚綅0.1瀹夊煿)',
+  `b_current` float(10, 1) NULL DEFAULT NULL COMMENT '浜ゆ祦B鐩哥數娴佹暟鎹�(鍗曚綅0.1瀹夊煿)',
+  `c_current` float(10, 1) NULL DEFAULT NULL COMMENT '浜ゆ祦C鐩哥數娴�(鍗曚綅0.1瀹夊煿)',
+  `battery_volt` float(10, 2) NULL DEFAULT NULL COMMENT '鍚庡鐢垫睜鐢靛帇(鍗曚綅0.01浼忕壒)',
+  `water_meter_trans_volt` float(10, 2) NULL DEFAULT NULL COMMENT '姘磋〃杩滀紶鐢靛帇(鍗曚綅0.01浼忕壒)',
+  `water_meter_work_volt` float(10, 2) NULL DEFAULT NULL COMMENT '姘磋〃宸ヤ綔鐢靛帇(鍗曚綅0.01浼忕壒)',
+  PRIMARY KEY (`id`) USING BTREE,
+  UNIQUE INDEX `rm_work_report_last_id_uindex`(`id` ASC) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '鎺у埗鍣ㄩ榾寮�宸ヤ綔鎶ユ渶鏂版暟鎹�' ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Table structure for se_active_card
+-- ----------------------------
+DROP TABLE IF EXISTS `se_active_card`;
+CREATE TABLE `se_active_card`  (
+  `id` bigint NOT NULL COMMENT '涓婚敭',
+  `cardId` bigint NOT NULL COMMENT '姘村崱ID;姘村崱涓婚敭',
+  `clientId` bigint NOT NULL COMMENT '鍐滄埛ID;鍐滄埛涓婚敭',
+  `cardCost` int NULL DEFAULT 10 COMMENT '鍗$墖璐圭敤',
+  `paymentId` bigint NOT NULL COMMENT '浠樻鏂瑰紡缂栧彿',
+  `reissueAmount` double NULL DEFAULT NULL COMMENT '琛ュ崱閲戦',
+  `operateType` tinyint NULL DEFAULT 1 COMMENT '鎿嶄綔绫诲瀷;1-寮�鍗★紝2-琛ュ崱',
+  `remarks` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '澶囨敞淇℃伅',
+  `operator` bigint NOT NULL COMMENT '鎿嶄綔浜虹紪鍙�',
+  `operateDt` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鎿嶄綔鏃堕棿',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '寮�鍗�/琛ュ崱琛�' ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Table structure for se_audits
+-- ----------------------------
+DROP TABLE IF EXISTS `se_audits`;
+CREATE TABLE `se_audits`  (
+  `id` bigint NOT NULL COMMENT '涓婚敭',
+  `general_id` bigint NULL DEFAULT NULL COMMENT '鎬昏处ID',
+  `audit_status` tinyint NULL DEFAULT NULL COMMENT '瀹℃牳鐘舵��;1-鏈鏍革紝2-鍚屾剰锛�3-椹冲洖',
+  `audit_opinion` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '瀹℃牳鎰忚',
+  `operator` bigint NULL DEFAULT NULL COMMENT '鎿嶄綔浜虹紪鍙�',
+  `operate_dt` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鎿嶄綔鏃堕棿',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '瀹℃牳璁板綍琛�' ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Table structure for se_cancel
+-- ----------------------------
+DROP TABLE IF EXISTS `se_cancel`;
+CREATE TABLE `se_cancel`  (
+  `id` bigint NOT NULL COMMENT '涓婚敭',
+  `cardId` bigint NOT NULL COMMENT '姘村崱缂栧彿',
+  `clientId` bigint NOT NULL COMMENT '鍐滄埛缂栧彿',
+  `refund` float(10, 2) NOT NULL COMMENT '閫�娆鹃噾棰�',
+  `refundType` tinyint NULL DEFAULT NULL COMMENT '閫�娆炬柟寮�;1-鐜伴噾',
+  `remarks` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '澶囨敞淇℃伅',
+  `operator` bigint NOT NULL COMMENT '鎿嶄綔浜虹紪鍙�',
+  `operateDt` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鎿嶄綔鏃堕棿',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '姘村崱娉ㄩ攢琛�' ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Table structure for se_card_operate
+-- ----------------------------
+DROP TABLE IF EXISTS `se_card_operate`;
+CREATE TABLE `se_card_operate`  (
+  `id` bigint NOT NULL COMMENT '涓婚敭',
+  `card_id` bigint NULL DEFAULT NULL COMMENT '姘村崱ID',
+  `client_id` bigint NULL DEFAULT NULL COMMENT '鍐滄埛ID',
+  `money` float(10, 2) NULL DEFAULT NULL COMMENT '鍗$墖浣欓;鍏呭�笺�佹寕澶便�佸啿姝c�佽В閿�',
+  `system_balance` float(10, 2) NULL DEFAULT NULL COMMENT '绯荤粺浣欓;鍐叉鏃朵娇鐢�',
+  `trade_amount` float(10, 2) NULL DEFAULT NULL COMMENT '浜ゆ槗閲戦;璐按閲戦銆侀��娆鹃噾棰�',
+  `price` float(4, 2) NULL DEFAULT NULL COMMENT '姘翠环;鍏呭�兼椂浣跨敤',
+  `card_cost` int NULL DEFAULT 10 COMMENT '璐崱閲戦',
+  `gift` float(10, 2) NULL DEFAULT NULL COMMENT '璧犻�侀噾棰�',
+  `refund_amount` float(10, 2) NULL DEFAULT NULL COMMENT '杩旇繕閲戦;琛ユ墸鎿嶄綔鏃惰繑杩樼殑閲戦',
+  `no_trade_amount` float(10, 2) NULL DEFAULT NULL COMMENT '闈炰氦鏄撻噾棰�;琛ュ崱閲戦銆佽ˉ鎵i噾棰濄�佸墿浣欓噾棰濓紙瑙i攣锛�',
+  `operate_type` tinyint NULL DEFAULT NULL COMMENT '鎿嶄綔绫诲瀷;1-寮�鍗★紝2-鍏呭�硷紝3-閿�鍗★紝4-琛ュ崱锛�5-琛ユ墸锛�6-鎸傚け锛�7-鍐叉锛�8-瑙i攣锛�9-娑堣垂',
+  `payment_id` bigint NULL DEFAULT NULL COMMENT '浠樻鏂瑰紡缂栧彿',
+  `remarks` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '澶囨敞淇℃伅',
+  `operator` bigint NOT NULL COMMENT '鎿嶄綔浜虹紪鍙�',
+  `operate_dt` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鎿嶄綔鏃堕棿',
+  `operate_valid` tinyint NULL DEFAULT 1 COMMENT '鎿嶄綔鏄惁鏈夋晥;1-鏃犳晥锛�2-鏈夋晥',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '姘村崱鎿嶄綔琛�' ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Table structure for se_client
+-- ----------------------------
+DROP TABLE IF EXISTS `se_client`;
+CREATE TABLE `se_client`  (
+  `id` bigint NOT NULL COMMENT '涓婚敭',
+  `countyId` bigint NULL DEFAULT NULL COMMENT '鍘縄D',
+  `townId` bigint NULL DEFAULT NULL COMMENT '闀嘔D',
+  `villageId` bigint NOT NULL COMMENT '鏉慖D',
+  `blockId` bigint NULL DEFAULT NULL COMMENT '鐗囧尯ID',
+  `divideId` bigint NULL DEFAULT NULL COMMENT '鍒嗘按鎴縄D',
+  `name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '鍐滄埛濮撳悕',
+  `virtualId` bigint NULL DEFAULT NULL COMMENT '铏氭嫙鍗″彿;10浣嶏紝浠�1000000000寮�濮�',
+  `clientNum` varchar(12) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '鍐滄埛缂栧彿;8浣嶅尯鍒� + 4涓洪『搴忓彿',
+  `districtNum` bigint NOT NULL COMMENT '鍖哄垝缂栫爜涓�;鐪佸尯鍒�+甯傚尯鍒�+鍘垮尯鍒�+闀囧尯鍒�+鏉戝尯鍒�',
+  `districtTitle` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '鍖哄垝鍚嶇О涓�;鍘垮悕+闀囧悕+鏉戝悕锛岀敤浜庡綊灞炲湴',
+  `phone` varchar(11) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '鎵嬫満鍙�',
+  `idCard` varchar(18) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '韬唤璇佸彿',
+  `area` double NULL DEFAULT NULL COMMENT '绉嶆闈㈢Н',
+  `typeId` bigint NULL DEFAULT NULL COMMENT '鐢ㄦ按绫诲瀷ID',
+  `address` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '琛楅亾鍙婇棬鐗屽彿',
+  `remarks` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '澶囨敞淇℃伅',
+  `operator` bigint NOT NULL COMMENT '鎿嶄綔浜虹紪鍙�',
+  `operateDt` datetime NULL DEFAULT NULL COMMENT '鎿嶄綔鏃堕棿',
+  `disabled` tinyint NULL DEFAULT 0 COMMENT '绂佹鏍囧織;0-鏈锛�1-宸茬',
+  `deleted` tinyint NULL DEFAULT 0 COMMENT '閫昏緫鍒犻櫎鏍囪瘑;0-鏈垹闄わ紝1-鍒犻櫎',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '鍐滄埛琛�' ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Table structure for se_client_2
+-- ----------------------------
+DROP TABLE IF EXISTS `se_client_2`;
+CREATE TABLE `se_client_2`  (
+  `id` bigint NOT NULL COMMENT '涓婚敭',
+  `countyId` bigint NOT NULL COMMENT '鍘縄D',
+  `townId` bigint NOT NULL COMMENT '闀嘔D',
+  `villageId` bigint NOT NULL COMMENT '鏉慖D',
+  `blockId` bigint NOT NULL COMMENT '鐗囧尯ID',
+  `divideId` bigint NULL DEFAULT NULL COMMENT '鍒嗘按鎴縄D',
+  `name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '鍐滄埛濮撳悕',
+  `virtualId` bigint NULL DEFAULT NULL COMMENT '铏氭嫙鍗″彿;10浣嶏紝浠�1000000000寮�濮�',
+  `clientNum` varchar(12) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '鍐滄埛缂栧彿;8浣嶅尯鍒� + 4涓洪『搴忓彿',
+  `districtNum` bigint NOT NULL COMMENT '鍖哄垝缂栫爜涓�;鐪佸尯鍒�+甯傚尯鍒�+鍘垮尯鍒�+闀囧尯鍒�+鏉戝尯鍒�',
+  `districtTitle` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '鍖哄垝鍚嶇О涓�;鍘垮悕+闀囧悕+鏉戝悕锛岀敤浜庡綊灞炲湴',
+  `phone` varchar(11) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '鎵嬫満鍙�',
+  `idCard` varchar(18) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '韬唤璇佸彿',
+  `area` double NULL DEFAULT NULL COMMENT '绉嶆闈㈢Н',
+  `typeId` bigint NULL DEFAULT NULL COMMENT '鐢ㄦ按绫诲瀷ID',
+  `address` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '琛楅亾鍙婇棬鐗屽彿',
+  `remarks` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '澶囨敞淇℃伅',
+  `operator` bigint NOT NULL COMMENT '鎿嶄綔浜虹紪鍙�',
+  `operateDt` datetime NULL DEFAULT NULL COMMENT '鎿嶄綔鏃堕棿',
+  `disabled` tinyint NULL DEFAULT 0 COMMENT '绂佹鏍囧織;0-鏈锛�1-宸茬',
+  `deleted` tinyint NULL DEFAULT 0 COMMENT '閫昏緫鍒犻櫎鏍囪瘑;0-鏈垹闄わ紝1-鍒犻櫎',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '鍐滀复鏃舵埛琛�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Table structure for se_client_card
+-- ----------------------------
+DROP TABLE IF EXISTS `se_client_card`;
+CREATE TABLE `se_client_card`  (
+  `id` bigint NOT NULL COMMENT '涓婚敭',
+  `protocol` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '閫氳鍗忚',
+  `cardAddr` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '姘村崱鍦板潃;鐗╃悊鍗¤嚜甯﹀湴鍧�',
+  `cardNum` bigint NOT NULL COMMENT '姘村崱缂栧彿;16浣嶆按鍗$紪鍙�',
+  `clientId` bigint NULL DEFAULT NULL COMMENT '鍐滄埛ID;鍐滄埛涓婚敭',
+  `money` float(10, 2) NULL DEFAULT 0.00 COMMENT '浣欓',
+  `state` tinyint NULL DEFAULT 1 COMMENT '鍗$墖鐘舵��;1-姝e父锛�2-宸叉敞閿�锛�3-宸叉寕澶�',
+  `original_card_id` bigint NULL DEFAULT NULL COMMENT '鍘熸按鍗D;琛ュ崱鏃舵寕澶卞崱鐨処D',
+  `createDt` datetime NULL DEFAULT NULL COMMENT '寮�鍗℃椂闂�',
+  `replaceDt` datetime NULL DEFAULT NULL COMMENT '琛ュ崱鏃堕棿',
+  `rechargeDt` datetime NULL DEFAULT NULL COMMENT '鍏呭�兼椂闂�',
+  `lossDtDt` datetime NULL DEFAULT NULL COMMENT '鎸傚け鏃堕棿',
+  `cancelDt` datetime NULL DEFAULT NULL COMMENT '娉ㄩ攢鏃堕棿',
+  `unlockDt` datetime NULL DEFAULT NULL COMMENT '瑙i攣鏃堕棿',
+  `reversalDt` datetime NULL DEFAULT NULL COMMENT '鍐叉鏃堕棿',
+  `refundDt` datetime NULL DEFAULT NULL COMMENT '琛ユ墸鏃堕棿',
+  `consumeDt` datetime NULL DEFAULT NULL COMMENT '娑堣垂鏃堕棿',
+  `lastOper` tinyint NULL DEFAULT NULL COMMENT '鏈�鍚庢搷浣滅被鍨�;1-寮�鍗★紝2-琛ュ崱锛�3-鍏呭�硷紝4-鎸傚け锛�5-娉ㄩ攢锛�6-瑙i攣锛�7-鍐叉锛�8-娑堣垂',
+  `remarks` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '澶囨敞淇℃伅',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '鍐滄埛姘村崱琛�' ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Table structure for se_code_verify
+-- ----------------------------
+DROP TABLE IF EXISTS `se_code_verify`;
+CREATE TABLE `se_code_verify`  (
+  `id` bigint NOT NULL COMMENT '涓婚敭',
+  `phone_number` varchar(11) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '鎵嬫満鍙�',
+  `security_code` varchar(6) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '楠岃瘉鐮�',
+  `expires` bigint NOT NULL COMMENT '杩囨湡鏃堕棿',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '楠岃瘉鐮佽褰曡〃' ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Table structure for se_consume
+-- ----------------------------
+DROP TABLE IF EXISTS `se_consume`;
+CREATE TABLE `se_consume`  (
+  `id` bigint NOT NULL COMMENT '涓婚敭',
+  `wallet_id` bigint NOT NULL COMMENT '閽卞寘ID',
+  `client_id` bigint NOT NULL COMMENT '鍐滄埛ID',
+  `money` float(10, 2) NULL DEFAULT NULL COMMENT '閽卞寘浣欓',
+  `consumption` float(10, 2) NOT NULL COMMENT '娑堣垂閲戦',
+  `after_consume` float(10, 2) NULL DEFAULT NULL COMMENT '娑堣垂鍚庝綑棰�',
+  `duration` float(4, 2) NULL DEFAULT NULL COMMENT '鐢ㄦ按鏃堕暱',
+  `vot` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '寮�闃�鏃堕棿',
+  `vct` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍏抽榾鏃堕棿',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '鐢靛瓙閽卞寘娑堣垂琛�' ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Table structure for se_general
+-- ----------------------------
+DROP TABLE IF EXISTS `se_general`;
+CREATE TABLE `se_general`  (
+  `id` bigint NOT NULL COMMENT '涓婚敭',
+  `cashier_id` bigint NULL DEFAULT NULL COMMENT '鏀堕摱鍛業D',
+  `cashier_name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '鏀堕摱鍛樺鍚�',
+  `trade_amount` float(10, 2) NULL DEFAULT NULL COMMENT '瀹炴敹閲戦',
+  `gift` float(10, 2) NULL DEFAULT NULL COMMENT '璧犻�侀噾棰�',
+  `refund_amount` float(10, 2) NULL DEFAULT NULL COMMENT '杩斿洖閲戦',
+  `operate_date` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '浜ゆ槗鏃ユ湡',
+  `audit_status` tinyint NULL DEFAULT 1 COMMENT '瀹℃牳鐘舵��;1-鏈鏍革紝2-鍚屾剰锛�3-椹冲洖',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '鎬昏处琛�' ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Table structure for se_issue_report
+-- ----------------------------
+DROP TABLE IF EXISTS `se_issue_report`;
+CREATE TABLE `se_issue_report`  (
+  `id` bigint NOT NULL COMMENT '涓婚敭',
+  `content` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '鍙嶉鍐呭',
+  `images` json NULL COMMENT '鐓х墖鍒楄〃',
+  `audios` json NULL COMMENT '闊抽鍒楄〃',
+  `videos` json NULL COMMENT '瑙嗛鍒楄〃',
+  `lng` decimal(18, 15) NULL DEFAULT NULL COMMENT '缁忓害',
+  `lat` decimal(18, 15) NULL DEFAULT NULL COMMENT '绾害',
+  `client_id` bigint NULL DEFAULT NULL COMMENT '鍐滄埛ID',
+  `report_time` datetime NULL DEFAULT NULL COMMENT '涓婃姤鏃堕棿',
+  `phone` varchar(11) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '鑱旂郴鐢佃瘽',
+  `state` tinyint NULL DEFAULT NULL COMMENT '鐘舵��;1-鏈彈鐞嗭紝2-宸插彈鐞嗭紝3宸插垹闄�',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '闂涓婃姤璁板綍琛�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Table structure for se_loss
+-- ----------------------------
+DROP TABLE IF EXISTS `se_loss`;
+CREATE TABLE `se_loss`  (
+  `id` bigint NOT NULL COMMENT '涓婚敭',
+  `cardId` bigint NOT NULL COMMENT '姘村崱缂栧彿',
+  `clientId` bigint NOT NULL COMMENT '鍐滄埛缂栧彿',
+  `money` float(10, 2) NULL DEFAULT 0.00 COMMENT '浣欓',
+  `refund` float(10, 2) NULL DEFAULT 0.00 COMMENT '閫�娆鹃噾棰�',
+  `remarks` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '澶囨敞淇℃伅',
+  `operator` bigint NOT NULL COMMENT '鎿嶄綔浜虹紪鍙�',
+  `operateDt` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鎿嶄綔鏃堕棿',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '姘村崱鎸傚け琛�' ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Table structure for se_manager_card
+-- ----------------------------
+DROP TABLE IF EXISTS `se_manager_card`;
+CREATE TABLE `se_manager_card`  (
+  `id` bigint NOT NULL COMMENT '涓婚敭',
+  `card_addr` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '鍗$墖鍦板潃',
+  `card_num` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '鍗$墖缂栧彿',
+  `card_type` tinyint NOT NULL DEFAULT 1 COMMENT '鍗$墖绫诲瀷;2-绠$悊绉戯紝4-寮�鍏抽榾鍗★紝5娓呯┖鍗�',
+  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '寮�鍗℃椂闂�',
+  `remarks` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '澶囨敞淇℃伅',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '绠$悊鍛樻按鍗¤〃' ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Table structure for se_open_id
+-- ----------------------------
+DROP TABLE IF EXISTS `se_open_id`;
+CREATE TABLE `se_open_id`  (
+  `id` bigint NOT NULL COMMENT '涓婚敭',
+  `client_id` bigint NOT NULL COMMENT '鍐滄埛ID',
+  `open_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '鐢ㄦ埛鍞竴鏍囪瘑',
+  `session_key` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '浼氳瘽瀵嗛挜',
+  `create_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '寰俊鐢ㄦ埛璐︽埛琛�' ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Table structure for se_payment_method
+-- ----------------------------
+DROP TABLE IF EXISTS `se_payment_method`;
+CREATE TABLE `se_payment_method`  (
+  `id` bigint NOT NULL COMMENT '涓婚敭',
+  `name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '鍚嶇О',
+  `remarks` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '澶囨敞淇℃伅',
+  `deleted` tinyint NULL DEFAULT NULL COMMENT '閫昏緫鍒犻櫎鏍囪瘑;0-鏈垹闄わ紝1-鍒犻櫎',
+  PRIMARY KEY (`id`) USING BTREE,
+  UNIQUE INDEX `se_payment_method_id_uindex`(`id` ASC) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Table structure for se_recharge
+-- ----------------------------
+DROP TABLE IF EXISTS `se_recharge`;
+CREATE TABLE `se_recharge`  (
+  `id` bigint NOT NULL COMMENT '涓婚敭',
+  `cardId` bigint NOT NULL COMMENT '姘村崱ID;姘村崱涓婚敭',
+  `clientId` bigint NOT NULL COMMENT '鍐滄埛ID;鍐滆涓婚敭',
+  `money` float(10, 2) NOT NULL COMMENT '鍗$墖浣欓',
+  `amount` float(10, 2) NOT NULL COMMENT '鍏呭�奸噾棰�',
+  `gift` float(10, 2) NULL DEFAULT NULL COMMENT '璧犻�侀噾棰�',
+  `afterRecharge` float(10, 2) NULL DEFAULT NULL COMMENT '鍏呭�煎悗浣欓',
+  `paymentId` bigint NOT NULL COMMENT '浠樻鏂瑰紡缂栧彿',
+  `price` float(4, 2) NULL DEFAULT NULL COMMENT '姘翠环',
+  `remarks` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '澶囨敞淇℃伅',
+  `operator` bigint NOT NULL COMMENT '鎿嶄綔浜虹紪鍙�',
+  `operateDt` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鎿嶄綔鏃堕棿',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '姘村崱鍏呭�艰〃' ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Table structure for se_recharge_history
+-- ----------------------------
+DROP TABLE IF EXISTS `se_recharge_history`;
+CREATE TABLE `se_recharge_history`  (
+  `id` bigint NOT NULL COMMENT '涓婚敭',
+  `cardId` bigint NOT NULL COMMENT '姘村崱缂栧彿',
+  `clientId` bigint NOT NULL COMMENT '鍐滄埛缂栧彿',
+  `money` float(10, 2) NOT NULL COMMENT '鍗$墖浣欓',
+  `amount` float(10, 2) NOT NULL COMMENT '鍏呭�奸噾棰�',
+  `gift` float(10, 2) NULL DEFAULT NULL COMMENT '璧犻�侀噾棰�',
+  `afterRecharge` float(10, 2) NULL DEFAULT NULL COMMENT '鍏呭�煎悗浣欓',
+  `paymentId` bigint NOT NULL COMMENT '浠樻鏂瑰紡缂栧彿',
+  `price` float(4, 2) NULL DEFAULT NULL COMMENT '姘翠环',
+  `remarks` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '澶囨敞淇℃伅',
+  `operator` bigint NOT NULL COMMENT '鎿嶄綔浜虹紪鍙�',
+  `operateDt` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鎿嶄綔鏃堕棿',
+  `operate_valid` tinyint NULL DEFAULT 1 COMMENT '鎿嶄綔鏄惁鏈夋晥;1-鏃犳晥锛�2-鏈夋晥',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '鍏呭�煎巻鍙茶〃' ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Table structure for se_recharge_profile
+-- ----------------------------
+DROP TABLE IF EXISTS `se_recharge_profile`;
+CREATE TABLE `se_recharge_profile`  (
+  `id` bigint NOT NULL COMMENT '涓婚敭',
+  `recharge_amount` float(10, 2) NOT NULL COMMENT '鍏呭�奸噾棰�',
+  `sort` int NOT NULL COMMENT '鎺掑簭',
+  `deleted` bigint NULL DEFAULT 0 COMMENT '閫昏緫鍒犻櫎鏍囪瘑;鏈垹闄や负0锛屽凡鍒犻櫎涓哄垹闄ゆ椂闂�',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '甯哥敤鍏呭�奸噾棰濋厤缃〃' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Table structure for se_refund
+-- ----------------------------
+DROP TABLE IF EXISTS `se_refund`;
+CREATE TABLE `se_refund`  (
+  `id` bigint NOT NULL COMMENT '涓婚敭',
+  `vc_id` bigint NULL DEFAULT NULL COMMENT '铏氭嫙鍗D',
+  `client_id` bigint NOT NULL COMMENT '鍐滄埛ID',
+  `money` float(10, 2) NULL DEFAULT NULL COMMENT '閽卞寘浣欓',
+  `refund_amount` float(10, 2) NULL DEFAULT NULL COMMENT '閫�娆鹃噾棰�',
+  `after_refund` float(10, 2) NULL DEFAULT NULL COMMENT '閫�娆惧悗浣欓',
+  `application_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鐢宠鏃堕棿',
+  `auditor` bigint NULL DEFAULT NULL COMMENT '瀹℃牳浜�',
+  `audit_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '瀹℃牳鏃堕棿',
+  `remarks` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '瀹℃牳澶囨敞',
+  `refund_number` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '閫�娆惧崟鍙�;12浣嶅啘鎴峰彿+17浣嶆椂闂存埑+2浣嶆暟閲�',
+  `refund_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '閫�娆惧畬鎴愭椂闂�',
+  `refund_status` tinyint NULL DEFAULT 1 COMMENT '閫�娆剧姸鎬�;1-寰呭鏍革紝2-寰呴��娆撅紝3-宸查��娆�',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '铏氭嫙鍗¢��娆捐〃' ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Table structure for se_report_reply
+-- ----------------------------
+DROP TABLE IF EXISTS `se_report_reply`;
+CREATE TABLE `se_report_reply`  (
+  `id` bigint NOT NULL COMMENT '涓婚敭',
+  `report_id` bigint NOT NULL COMMENT '闂涓婃姤ID',
+  `reply_content` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '鍥炲鍐呭',
+  `reply_time` datetime NULL DEFAULT NULL COMMENT '鍥炲鏃堕棿',
+  `replier_id` bigint NOT NULL COMMENT '鍥炲浜篒D',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '涓婃姤鍥炲璁板綍琛�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Table structure for se_reversal
+-- ----------------------------
+DROP TABLE IF EXISTS `se_reversal`;
+CREATE TABLE `se_reversal`  (
+  `id` bigint NOT NULL COMMENT '涓婚敭',
+  `cardId` bigint NOT NULL COMMENT '姘村崱缂栧彿',
+  `clientId` bigint NOT NULL COMMENT '鍐滄埛缂栧彿',
+  `cardBalance` float(10, 2) NOT NULL COMMENT '鍗$墖浣欓',
+  `systemBalance` float(10, 2) NOT NULL COMMENT '绯荤粺浣欓',
+  `remarks` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '澶囨敞淇℃伅',
+  `operator` bigint NOT NULL COMMENT '鎿嶄綔浜虹紪鍙�',
+  `operateDt` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鎿嶄綔鏃堕棿',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '鍐叉琛�' ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Table structure for se_unlock
+-- ----------------------------
+DROP TABLE IF EXISTS `se_unlock`;
+CREATE TABLE `se_unlock`  (
+  `id` bigint NOT NULL COMMENT '涓婚敭',
+  `cardId` bigint NOT NULL COMMENT '姘村崱缂栧彿',
+  `clientId` bigint NOT NULL COMMENT '鍐滄埛缂栧彿',
+  `money` float(10, 2) NOT NULL COMMENT '鍓╀綑閲戦',
+  `remarks` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '澶囨敞淇℃伅',
+  `operator` bigint NOT NULL COMMENT '鎿嶄綔浜虹紪鍙�',
+  `operateDt` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鎿嶄綔鏃堕棿',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '姘村崱瑙i攣琛�' ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Table structure for se_vc_operate
+-- ----------------------------
+DROP TABLE IF EXISTS `se_vc_operate`;
+CREATE TABLE `se_vc_operate`  (
+  `id` bigint NOT NULL COMMENT '涓婚敭',
+  `vc_id` bigint NULL DEFAULT NULL COMMENT '铏氭嫙鍗D',
+  `client_id` bigint NULL DEFAULT NULL COMMENT '鍐滄埛ID',
+  `operate_type` tinyint NULL DEFAULT NULL COMMENT '鎿嶄綔绫诲瀷;1-寮�鎴凤紝2-鍏呭�硷紝3-娑堣垂锛�4-閿�鎴凤紝5-鐢宠閫�娆撅紝6-閫�娆惧鏍革紝7-閫�娆�',
+  `recharge_id` bigint NULL DEFAULT NULL COMMENT '鍏呭�糏D;鍏呭�兼椂濉啓',
+  `operator` bigint NOT NULL COMMENT '鎿嶄綔浜�',
+  `operate_time` datetime NULL DEFAULT NULL COMMENT '鎿嶄綔鏃堕棿',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '铏氭嫙鍗℃搷浣滆〃' ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Table structure for se_vc_recharge
+-- ----------------------------
+DROP TABLE IF EXISTS `se_vc_recharge`;
+CREATE TABLE `se_vc_recharge`  (
+  `id` bigint NOT NULL COMMENT '涓婚敭',
+  `vc_id` bigint NOT NULL COMMENT '铏氭嫙鍗D',
+  `client_id` bigint NOT NULL COMMENT '鍐滄埛ID',
+  `money` float(10, 2) NULL DEFAULT NULL COMMENT '铏氭嫙鍗′綑棰�',
+  `after_recharge` float(10, 2) NULL DEFAULT NULL COMMENT '鍏呭�煎悗浣欓',
+  `order_number` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '璁㈠崟鍙�',
+  `recharge_amount` float(10, 2) NOT NULL COMMENT '鍏呭�奸噾棰�',
+  `order_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '涓嬪崟鏃堕棿',
+  `recharge_time` datetime NULL DEFAULT NULL COMMENT '鍏呭�煎畬鎴愭椂闂�',
+  `order_state` tinyint NULL DEFAULT 1 COMMENT '璁㈠崟鐘舵��;1-鏈敮浠橈紝2-宸叉敮浠�',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '铏氭嫙鍗″厖鍊艰〃' ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Table structure for se_vc_refund
+-- ----------------------------
+DROP TABLE IF EXISTS `se_vc_refund`;
+CREATE TABLE `se_vc_refund`  (
+  `id` bigint NOT NULL COMMENT '涓婚敭',
+  `vc_id` bigint NULL DEFAULT NULL COMMENT '铏氭嫙鍗D',
+  `client_id` bigint NOT NULL COMMENT '鍐滄埛ID',
+  `money` float(10, 2) NULL DEFAULT NULL COMMENT '铏氭嫙鍗′綑棰�',
+  `refund_amount` float(10, 2) NULL DEFAULT NULL COMMENT '閫�娆鹃噾棰�',
+  `after_refund` float(10, 2) NULL DEFAULT NULL COMMENT '閫�娆惧悗浣欓',
+  `application_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鐢宠鏃堕棿',
+  `auditor` bigint NULL DEFAULT NULL COMMENT '瀹℃牳浜�',
+  `audit_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '瀹℃牳鏃堕棿',
+  `remarks` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '瀹℃牳澶囨敞',
+  `refund_number` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '閫�娆惧崟鍙�;12浣嶅啘鎴峰彿+17浣嶆椂闂存埑+2浣嶆暟閲�',
+  `refund_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '閫�娆惧畬鎴愭椂闂�',
+  `refund_status` tinyint NULL DEFAULT 1 COMMENT '閫�娆剧姸鎬�;1-寰呭鏍革紝2-寰呴��娆撅紝3-宸查��娆�',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '铏氭嫙鍗¢��娆捐〃' ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Table structure for se_vc_refund_item
+-- ----------------------------
+DROP TABLE IF EXISTS `se_vc_refund_item`;
+CREATE TABLE `se_vc_refund_item`  (
+  `id` bigint NOT NULL COMMENT '涓婚敭',
+  `refund_id` bigint NOT NULL COMMENT '閫�娆綢D',
+  `order_number` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '璁㈠崟鍙�;12浣嶅啘鎴峰ソ+17浣嶆椂闂存埑',
+  `refund_number` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '閫�娆惧崟鍙�;12浣嶅啘鎴峰彿+17浣嶆椂闂存埑+2浣嶆暟閲�',
+  `refund_amount` int NULL DEFAULT NULL COMMENT '閫�娆鹃噾棰�;涓庤鍗曞搴旂殑閫�娆鹃噾棰�',
+  `create_time` datetime NOT NULL COMMENT '閫�娆惧崟鍒涘缓鏃堕棿',
+  `refund_time` datetime NULL DEFAULT NULL COMMENT '閫�娆惧畬鎴愭椂闂�',
+  `refund_status` tinyint NOT NULL COMMENT '閫�娆剧姸鎬�;1-鏈��娆撅紝2-宸查��娆�',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '铏氭嫙鍗¢��娆惧垎椤硅〃' ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Table structure for se_virtual_card
+-- ----------------------------
+DROP TABLE IF EXISTS `se_virtual_card`;
+CREATE TABLE `se_virtual_card`  (
+  `id` bigint NOT NULL COMMENT '涓婚敭',
+  `vc_num` bigint NOT NULL COMMENT '铏氭嫙鍗$紪鍙�',
+  `client_id` bigint NOT NULL COMMENT '鍐滄埛ID',
+  `money` float(10, 2) NULL DEFAULT 0.00 COMMENT '璐︽埛浣欓',
+  `state` tinyint NULL DEFAULT 1 COMMENT '姘村崱鐘舵��;1-姝e父锛�2-宸叉敞閿�',
+  `last_operate` tinyint NULL DEFAULT 1 COMMENT '鏈�鍚庢搷浣�;1-寮�鎴凤紝2-鍏呭�硷紝3-娑堣垂锛�4-鐢宠閫�娆撅紝5-閫�娆惧鏍�',
+  `last_operate_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鏈�鍚庢搷浣滄椂闂�',
+  `in_use` tinyint NULL DEFAULT NULL COMMENT '鏄惁浣跨敤涓�;0-鏈娇鐢紝1-浣跨敤涓�',
+  `intake_id` bigint NULL DEFAULT NULL COMMENT '铏氭嫙鍗′娇鐢ㄦ椂鎵�搴旂敤鐨勫彇姘村彛ID',
+  `open_time` datetime NULL DEFAULT NULL COMMENT '寮�闃�鏃堕棿',
+  `create_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '铏氭嫙鍗¤〃' ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Table structure for se_wallet
+-- ----------------------------
+DROP TABLE IF EXISTS `se_wallet`;
+CREATE TABLE `se_wallet`  (
+  `id` bigint NOT NULL COMMENT '涓婚敭',
+  `client_id` bigint NOT NULL COMMENT '鍐滄埛ID',
+  `money` float(10, 2) NULL DEFAULT 0.00 COMMENT '閽卞寘浣欓',
+  `last_operate` tinyint NULL DEFAULT 1 COMMENT '鏈�鍚庢搷浣�;1-寮�鎴凤紝2-鍏呭�硷紝3-娑堣垂锛�4-鐢宠閫�娆撅紝5-閫�娆惧鏍�',
+  `last_operate_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鏈�鍚庢搷浣滄椂闂�',
+  `create_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '鐢靛瓙閽卞寘琛�' ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Table structure for se_wallet_recharge
+-- ----------------------------
+DROP TABLE IF EXISTS `se_wallet_recharge`;
+CREATE TABLE `se_wallet_recharge`  (
+  `id` bigint NOT NULL COMMENT '涓婚敭',
+  `wallet_id` bigint NOT NULL COMMENT '閽卞寘ID',
+  `client_id` bigint NOT NULL COMMENT '鍐滄埛ID',
+  `money` float(10, 2) NULL DEFAULT NULL COMMENT '閽卞寘浣欓',
+  `amount` float(10, 2) NOT NULL COMMENT '鍏呭�奸噾棰�',
+  `after_recharge` float(10, 2) NULL DEFAULT NULL COMMENT '鍏呭�煎悗浣欓',
+  `recharge_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍏呭�兼椂闂�',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '鐢靛瓙閽卞寘鍏呭�艰〃' ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Table structure for se_water_type
+-- ----------------------------
+DROP TABLE IF EXISTS `se_water_type`;
+CREATE TABLE `se_water_type`  (
+  `id` bigint NOT NULL COMMENT '涓婚敭',
+  `typeName` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '鐢ㄦ按绫诲瀷',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '鐢ㄦ按绫诲瀷琛�' ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Table structure for se_wechatpay
+-- ----------------------------
+DROP TABLE IF EXISTS `se_wechatpay`;
+CREATE TABLE `se_wechatpay`  (
+  `id` bigint NOT NULL COMMENT '涓婚敭',
+  `app_id` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '灏忕▼搴忓敮涓�鏍囪瘑',
+  `app_secret` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '灏忕▼搴忕閽�',
+  `mch_id` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '鍟嗘埛鍙�',
+  `mch_key` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '绉橀挜key',
+  `serial_no` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT 'API璇佷功搴忓垪鍙�',
+  `notify_url` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '鏀粯缁撴灉閫氱煡url',
+  `remarks` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '澶囨敞淇℃伅',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '寰俊鏀粯淇℃伅琛�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Table structure for st_client_amount_day
+-- ----------------------------
+DROP TABLE IF EXISTS `st_client_amount_day`;
+CREATE TABLE `st_client_amount_day`  (
+  `id` bigint NOT NULL COMMENT '涓婚敭',
+  `client_id` bigint NULL DEFAULT NULL COMMENT '澶栭敭锛屾寚鍚戝啘鎴�',
+  `year` int NULL DEFAULT NULL COMMENT '骞村害',
+  `month` int NULL DEFAULT NULL COMMENT '鏈堜唤',
+  `amount1` float(10, 2) NULL DEFAULT NULL COMMENT '1鍙风敤姘撮噺缁熻',
+  `money1` float(10, 2) NULL DEFAULT NULL COMMENT '1鍙疯姳璐归噾棰�',
+  `times1` int NULL DEFAULT NULL COMMENT '1鍙风敤姘存鏁�',
+  `amount2` float(10, 2) NULL DEFAULT NULL COMMENT '2鍙风敤姘撮噺缁熻',
+  `money2` float(10, 2) NULL DEFAULT NULL COMMENT '2鍙疯姳璐归噾棰�',
+  `times2` int NULL DEFAULT NULL COMMENT '2鍙风敤姘存鏁�',
+  `amount3` float(10, 2) NULL DEFAULT NULL COMMENT '3鍙风敤姘撮噺缁熻',
+  `money3` float(10, 2) NULL DEFAULT NULL COMMENT '3鍙疯姳璐归噾棰�',
+  `times3` int NULL DEFAULT NULL COMMENT '3鍙风敤姘存鏁�',
+  `amount4` float(10, 2) NULL DEFAULT NULL COMMENT '4鍙风敤姘撮噺缁熻',
+  `money4` float(10, 2) NULL DEFAULT NULL COMMENT '4鍙疯姳璐归噾棰�',
+  `times4` int NULL DEFAULT NULL COMMENT '4鍙风敤姘存鏁�',
+  `amount5` float(10, 2) NULL DEFAULT NULL COMMENT '5鍙风敤姘撮噺缁熻',
+  `money5` float(10, 2) NULL DEFAULT NULL COMMENT '5鍙疯姳璐归噾棰�',
+  `times5` int NULL DEFAULT NULL COMMENT '5鍙风敤姘存鏁�',
+  `amount6` float(10, 2) NULL DEFAULT NULL COMMENT '6鍙风敤姘撮噺缁熻',
+  `money6` float(10, 2) NULL DEFAULT NULL COMMENT '6鍙疯姳璐归噾棰�',
+  `times6` int NULL DEFAULT NULL COMMENT '6鍙风敤姘存鏁�',
+  `amount7` float(10, 2) NULL DEFAULT NULL COMMENT '7鍙风敤姘撮噺缁熻',
+  `money7` float(10, 2) NULL DEFAULT NULL COMMENT '7鍙疯姳璐归噾棰�',
+  `times7` int NULL DEFAULT NULL COMMENT '7鍙风敤姘存鏁�',
+  `amount8` float(10, 2) NULL DEFAULT NULL COMMENT '8鍙风敤姘撮噺缁熻',
+  `money8` float(10, 2) NULL DEFAULT NULL COMMENT '8鍙疯姳璐归噾棰�',
+  `times8` int NULL DEFAULT NULL COMMENT '8鍙风敤姘存鏁�',
+  `amount9` float(10, 2) NULL DEFAULT NULL COMMENT '9鍙风敤姘撮噺缁熻',
+  `money9` float(10, 2) NULL DEFAULT NULL COMMENT '9鍙疯姳璐归噾棰�',
+  `times9` int NULL DEFAULT NULL COMMENT '9鍙风敤姘存鏁�',
+  `amount10` float(10, 2) NULL DEFAULT NULL COMMENT '10鍙风敤姘撮噺缁熻',
+  `money10` float(10, 2) NULL DEFAULT NULL COMMENT '10鍙疯姳璐归噾棰�',
+  `times10` int NULL DEFAULT NULL COMMENT '10鍙风敤姘存鏁�',
+  `amount11` float(10, 2) NULL DEFAULT NULL COMMENT '11鍙风敤姘撮噺缁熻',
+  `money11` float(10, 2) NULL DEFAULT NULL COMMENT '11鍙疯姳璐归噾棰�',
+  `times11` int NULL DEFAULT NULL COMMENT '11鍙风敤姘存鏁�',
+  `amount12` float(10, 2) NULL DEFAULT NULL COMMENT '12鍙风敤姘撮噺缁熻',
+  `money12` float(10, 2) NULL DEFAULT NULL COMMENT '12鍙疯姳璐归噾棰�',
+  `times12` int NULL DEFAULT NULL COMMENT '12鍙风敤姘存鏁�',
+  `amount13` float(10, 2) NULL DEFAULT NULL COMMENT '13鍙风敤姘撮噺缁熻',
+  `money13` float(10, 2) NULL DEFAULT NULL COMMENT '13鍙疯姳璐归噾棰�',
+  `times13` int NULL DEFAULT NULL COMMENT '13鍙风敤姘存鏁�',
+  `amount14` float(10, 2) NULL DEFAULT NULL COMMENT '14鍙风敤姘撮噺缁熻',
+  `money14` float(10, 2) NULL DEFAULT NULL COMMENT '14鍙疯姳璐归噾棰�',
+  `times14` int NULL DEFAULT NULL COMMENT '14鍙风敤姘存鏁�',
+  `amount15` float(10, 2) NULL DEFAULT NULL COMMENT '15鍙风敤姘撮噺缁熻',
+  `money15` float(10, 2) NULL DEFAULT NULL COMMENT '15鍙疯姳璐归噾棰�',
+  `times15` int NULL DEFAULT NULL COMMENT '15鍙风敤姘存鏁�',
+  `amount16` float(10, 2) NULL DEFAULT NULL COMMENT '16鍙风敤姘撮噺缁熻',
+  `money16` float(10, 2) NULL DEFAULT NULL COMMENT '16鍙疯姳璐归噾棰�',
+  `times16` int NULL DEFAULT NULL COMMENT '16鍙风敤姘存鏁�',
+  `amount17` float(10, 2) NULL DEFAULT NULL COMMENT '17鍙风敤姘撮噺缁熻',
+  `money17` float(10, 2) NULL DEFAULT NULL COMMENT '17鍙疯姳璐归噾棰�',
+  `times17` int NULL DEFAULT NULL COMMENT '17鍙风敤姘存鏁�',
+  `amount18` float(10, 2) NULL DEFAULT NULL COMMENT '18鍙风敤姘撮噺缁熻',
+  `money18` float(10, 2) NULL DEFAULT NULL COMMENT '18鍙疯姳璐归噾棰�',
+  `times18` int NULL DEFAULT NULL COMMENT '18鍙风敤姘存鏁�',
+  `amount19` float(10, 2) NULL DEFAULT NULL COMMENT '19鍙风敤姘撮噺缁熻',
+  `money19` float(10, 2) NULL DEFAULT NULL COMMENT '19鍙疯姳璐归噾棰�',
+  `times19` int NULL DEFAULT NULL COMMENT '19鍙风敤姘存鏁�',
+  `amount20` float(10, 2) NULL DEFAULT NULL COMMENT '20鍙风敤姘撮噺缁熻',
+  `money20` float(10, 2) NULL DEFAULT NULL COMMENT '20鍙疯姳璐归噾棰�',
+  `times20` int NULL DEFAULT NULL COMMENT '20鍙风敤姘存鏁�',
+  `amount21` float(10, 2) NULL DEFAULT NULL COMMENT '21鍙风敤姘撮噺缁熻',
+  `money21` float(10, 2) NULL DEFAULT NULL COMMENT '21鍙疯姳璐归噾棰�',
+  `times21` int NULL DEFAULT NULL COMMENT '21鍙风敤姘存鏁�',
+  `amount22` float(10, 2) NULL DEFAULT NULL COMMENT '22鍙风敤姘撮噺缁熻',
+  `money22` float(10, 2) NULL DEFAULT NULL COMMENT '22鍙疯姳璐归噾棰�',
+  `times22` int NULL DEFAULT NULL COMMENT '22鍙风敤姘存鏁�',
+  `amount23` float(10, 2) NULL DEFAULT NULL COMMENT '23鍙风敤姘撮噺缁熻',
+  `money23` float(10, 2) NULL DEFAULT NULL COMMENT '23鍙疯姳璐归噾棰�',
+  `times23` int NULL DEFAULT NULL COMMENT '23鍙风敤姘存鏁�',
+  `amount24` float(10, 2) NULL DEFAULT NULL COMMENT '24鍙风敤姘撮噺缁熻',
+  `money24` float(10, 2) NULL DEFAULT NULL COMMENT '24鍙疯姳璐归噾棰�',
+  `times24` int NULL DEFAULT NULL COMMENT '24鍙风敤姘存鏁�',
+  `amount25` float(10, 2) NULL DEFAULT NULL COMMENT '25鍙风敤姘撮噺缁熻',
+  `money25` float(10, 2) NULL DEFAULT NULL COMMENT '25鍙疯姳璐归噾棰�',
+  `times25` int NULL DEFAULT NULL COMMENT '25鍙风敤姘存鏁�',
+  `amount26` float(10, 2) NULL DEFAULT NULL COMMENT '26鍙风敤姘撮噺缁熻',
+  `money26` float(10, 2) NULL DEFAULT NULL COMMENT '26鍙疯姳璐归噾棰�',
+  `times26` int NULL DEFAULT NULL COMMENT '26鍙风敤姘存鏁�',
+  `amount27` float(10, 2) NULL DEFAULT NULL COMMENT '27鍙风敤姘撮噺缁熻',
+  `money27` float(10, 2) NULL DEFAULT NULL COMMENT '27鍙疯姳璐归噾棰�',
+  `times27` int NULL DEFAULT NULL COMMENT '27鍙风敤姘存鏁�',
+  `amount28` float(10, 2) NULL DEFAULT NULL COMMENT '28鍙风敤姘撮噺缁熻',
+  `money28` float(10, 2) NULL DEFAULT NULL COMMENT '28鍙疯姳璐归噾棰�',
+  `times28` int NULL DEFAULT NULL COMMENT '28鍙风敤姘存鏁�',
+  `amount29` float(10, 2) NULL DEFAULT NULL COMMENT '29鍙风敤姘撮噺缁熻',
+  `money29` float(10, 2) NULL DEFAULT NULL COMMENT '29鍙疯姳璐归噾棰�',
+  `times29` int NULL DEFAULT NULL COMMENT '29鍙风敤姘存鏁�',
+  `amount30` float(10, 2) NULL DEFAULT NULL COMMENT '30鍙风敤姘撮噺缁熻',
+  `money30` float(10, 2) NULL DEFAULT NULL COMMENT '30鍙疯姳璐归噾棰�',
+  `times30` int NULL DEFAULT NULL COMMENT '30鍙风敤姘存鏁�',
+  `amount31` float(10, 2) NULL DEFAULT NULL COMMENT '31鍙风敤姘撮噺缁熻',
+  `money31` float(10, 2) NULL DEFAULT NULL COMMENT '31鍙疯姳璐归噾棰�',
+  `times31` int NULL DEFAULT NULL COMMENT '31鍙风敤姘存鏁�',
+  PRIMARY KEY (`id`) USING BTREE,
+  UNIQUE INDEX `st_client_amount_day_id_uindex`(`id` ASC) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '鍐滄埛鐢ㄦ按閲忔棩缁熻' ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Table structure for st_client_amount_month
+-- ----------------------------
+DROP TABLE IF EXISTS `st_client_amount_month`;
+CREATE TABLE `st_client_amount_month`  (
+  `id` bigint NOT NULL COMMENT '涓婚敭',
+  `client_id` bigint NULL DEFAULT NULL COMMENT '澶栭敭锛屾寚鍚戝啘鎴�',
+  `year` int NULL DEFAULT NULL COMMENT '骞村害',
+  `amount1` float(10, 2) NULL DEFAULT NULL COMMENT '1鏈堢敤姘撮噺缁熻',
+  `money1` float(10, 2) NULL DEFAULT NULL COMMENT '1鏈堣姳璐归噾棰�',
+  `times1` int NULL DEFAULT NULL COMMENT '1鏈堢敤姘存鏁�',
+  `amount2` float(10, 2) NULL DEFAULT NULL COMMENT '2鏈堢敤姘撮噺缁熻',
+  `money2` float(10, 2) NULL DEFAULT NULL COMMENT '2鏈堣姳璐归噾棰�',
+  `times2` int NULL DEFAULT NULL COMMENT '2鏈堢敤姘存鏁�',
+  `amount3` float(10, 2) NULL DEFAULT NULL COMMENT '3鏈堢敤姘撮噺缁熻',
+  `money3` float(10, 2) NULL DEFAULT NULL COMMENT '3鏈堣姳璐归噾棰�',
+  `times3` int NULL DEFAULT NULL COMMENT '3鏈堢敤姘存鏁�',
+  `amount4` float(10, 2) NULL DEFAULT NULL COMMENT '4鏈堢敤姘撮噺缁熻',
+  `money4` float(10, 2) NULL DEFAULT NULL COMMENT '4鏈堣姳璐归噾棰�',
+  `times4` int NULL DEFAULT NULL COMMENT '4鏈堢敤姘存鏁�',
+  `amount5` float(10, 2) NULL DEFAULT NULL COMMENT '5鏈堢敤姘撮噺缁熻',
+  `money5` float(10, 2) NULL DEFAULT NULL COMMENT '5鏈堣姳璐归噾棰�',
+  `times5` int NULL DEFAULT NULL COMMENT '5鏈堢敤姘存鏁�',
+  `amount6` float(10, 2) NULL DEFAULT NULL COMMENT '6鏈堢敤姘撮噺缁熻',
+  `money6` float(10, 2) NULL DEFAULT NULL COMMENT '6鏈堣姳璐归噾棰�',
+  `times6` int NULL DEFAULT NULL COMMENT '6鏈堢敤姘存鏁�',
+  `amount7` float(10, 2) NULL DEFAULT NULL COMMENT '7鏈堢敤姘撮噺缁熻',
+  `money7` float(10, 2) NULL DEFAULT NULL COMMENT '7鏈堣姳璐归噾棰�',
+  `times7` int NULL DEFAULT NULL COMMENT '7鏈堢敤姘存鏁�',
+  `amount8` float(10, 2) NULL DEFAULT NULL COMMENT '8鏈堢敤姘撮噺缁熻',
+  `money8` float(10, 2) NULL DEFAULT NULL COMMENT '8鏈堣姳璐归噾棰�',
+  `times8` int NULL DEFAULT NULL COMMENT '8鏈堢敤姘存鏁�',
+  `amount9` float(10, 2) NULL DEFAULT NULL COMMENT '9鏈堢敤姘撮噺缁熻',
+  `money9` float(10, 2) NULL DEFAULT NULL COMMENT '9鏈堣姳璐归噾棰�',
+  `times9` int NULL DEFAULT NULL COMMENT '9鏈堢敤姘存鏁�',
+  `amount10` float(10, 2) NULL DEFAULT NULL COMMENT '10鏈堢敤姘撮噺缁熻',
+  `money10` float(10, 2) NULL DEFAULT NULL COMMENT '10鏈堣姳璐归噾棰�',
+  `times10` int NULL DEFAULT NULL COMMENT '10鏈堢敤姘存鏁�',
+  `amount11` float(10, 2) NULL DEFAULT NULL COMMENT '11鏈堢敤姘撮噺缁熻',
+  `money11` float(10, 2) NULL DEFAULT NULL COMMENT '11鏈堣姳璐归噾棰�',
+  `times11` int NULL DEFAULT NULL COMMENT '11鏈堢敤姘存鏁�',
+  `amount12` float(10, 2) NULL DEFAULT NULL COMMENT '12鏈堢敤姘撮噺缁熻',
+  `money12` float(10, 2) NULL DEFAULT NULL COMMENT '12鏈堣姳璐归噾棰�',
+  `times12` int NULL DEFAULT NULL COMMENT '12鏈堢敤姘存鏁�',
+  PRIMARY KEY (`id`) USING BTREE,
+  UNIQUE INDEX `st_client_amount_month_id_uindex`(`id` ASC) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '鍐滄埛鐢ㄦ按閲忔湀缁熻' ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Table structure for st_client_amount_year
+-- ----------------------------
+DROP TABLE IF EXISTS `st_client_amount_year`;
+CREATE TABLE `st_client_amount_year`  (
+  `id` bigint NOT NULL COMMENT '涓婚敭',
+  `client_id` bigint NULL DEFAULT NULL COMMENT '澶栭敭锛屾寚鍚戝啘鎴�',
+  `year` int NULL DEFAULT NULL COMMENT '骞村害',
+  `amount` float(10, 2) NULL DEFAULT NULL COMMENT '骞寸敤姘撮噺缁熻',
+  `money` float(10, 2) NULL DEFAULT NULL COMMENT '骞磋姳璐归噾棰�',
+  `times` int NULL DEFAULT NULL COMMENT '骞寸敤姘存鏁�',
+  PRIMARY KEY (`id`) USING BTREE,
+  UNIQUE INDEX `st_client_amount_year_id_uindex`(`id` ASC) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '鍐滄埛鐢ㄦ按閲忓勾缁熻' ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Table structure for st_consume_client_day
+-- ----------------------------
+DROP TABLE IF EXISTS `st_consume_client_day`;
+CREATE TABLE `st_consume_client_day`  (
+  `id` bigint NOT NULL COMMENT '涓婚敭',
+  `client_id` bigint NULL DEFAULT NULL COMMENT '澶栭敭锛屾寚鍚戝啘鎴�',
+  `year` int NULL DEFAULT NULL COMMENT '骞村害',
+  `month` int NULL DEFAULT NULL COMMENT '鏈堜唤',
+  `amount1` float(10, 2) NULL DEFAULT NULL COMMENT '1鍙锋秷璐圭粺璁�',
+  `times1` int NULL DEFAULT NULL COMMENT '1鍙锋秷璐规鏁�',
+  `amount2` float(10, 2) NULL DEFAULT NULL COMMENT '2鍙锋秷璐圭粺璁�',
+  `times2` int NULL DEFAULT NULL COMMENT '2鍙锋秷璐规鏁�',
+  `amount3` float(10, 2) NULL DEFAULT NULL COMMENT '3鍙锋秷璐圭粺璁�',
+  `times3` int NULL DEFAULT NULL COMMENT '3鍙锋秷璐规鏁�',
+  `amount4` float(10, 2) NULL DEFAULT NULL COMMENT '4鍙锋秷璐圭粺璁�',
+  `times4` int NULL DEFAULT NULL COMMENT '4鍙锋秷璐规鏁�',
+  `amount5` float(10, 2) NULL DEFAULT NULL COMMENT '5鍙锋秷璐圭粺璁�',
+  `times5` int NULL DEFAULT NULL COMMENT '5鍙锋秷璐规鏁�',
+  `amount6` float(10, 2) NULL DEFAULT NULL COMMENT '6鍙锋秷璐圭粺璁�',
+  `times6` int NULL DEFAULT NULL COMMENT '6鍙锋秷璐规鏁�',
+  `amount7` float(10, 2) NULL DEFAULT NULL COMMENT '7鍙锋秷璐圭粺璁�',
+  `times7` int NULL DEFAULT NULL COMMENT '7鍙锋秷璐规鏁�',
+  `amount8` float(10, 2) NULL DEFAULT NULL COMMENT '8鍙锋秷璐圭粺璁�',
+  `times8` int NULL DEFAULT NULL COMMENT '8鍙锋秷璐规鏁�',
+  `amount9` float(10, 2) NULL DEFAULT NULL COMMENT '9鍙锋秷璐圭粺璁�',
+  `times9` int NULL DEFAULT NULL COMMENT '9鍙锋秷璐规鏁�',
+  `amount10` float(10, 2) NULL DEFAULT NULL COMMENT '10鍙锋秷璐圭粺璁�',
+  `times10` int NULL DEFAULT NULL COMMENT '10鍙锋秷璐规鏁�',
+  `amount11` float(10, 2) NULL DEFAULT NULL COMMENT '11鍙锋秷璐圭粺璁�',
+  `times11` int NULL DEFAULT NULL COMMENT '11鍙锋秷璐规鏁�',
+  `amount12` float(10, 2) NULL DEFAULT NULL COMMENT '12鍙锋秷璐圭粺璁�',
+  `times12` int NULL DEFAULT NULL COMMENT '12鍙锋秷璐规鏁�',
+  `amount13` float(10, 2) NULL DEFAULT NULL COMMENT '13鍙锋秷璐圭粺璁�',
+  `times13` int NULL DEFAULT NULL COMMENT '13鍙锋秷璐规鏁�',
+  `amount14` float(10, 2) NULL DEFAULT NULL COMMENT '14鍙锋秷璐圭粺璁�',
+  `times14` int NULL DEFAULT NULL COMMENT '14鍙锋秷璐规鏁�',
+  `amount15` float(10, 2) NULL DEFAULT NULL COMMENT '15鍙锋秷璐圭粺璁�',
+  `times15` int NULL DEFAULT NULL COMMENT '15鍙锋秷璐规鏁�',
+  `amount16` float(10, 2) NULL DEFAULT NULL COMMENT '16鍙锋秷璐圭粺璁�',
+  `times16` int NULL DEFAULT NULL COMMENT '16鍙锋秷璐规鏁�',
+  `amount17` float(10, 2) NULL DEFAULT NULL COMMENT '17鍙锋秷璐圭粺璁�',
+  `times17` int NULL DEFAULT NULL COMMENT '17鍙锋秷璐规鏁�',
+  `amount18` float(10, 2) NULL DEFAULT NULL COMMENT '18鍙锋秷璐圭粺璁�',
+  `times18` int NULL DEFAULT NULL COMMENT '18鍙锋秷璐规鏁�',
+  `amount19` float(10, 2) NULL DEFAULT NULL COMMENT '19鍙锋秷璐圭粺璁�',
+  `times19` int NULL DEFAULT NULL COMMENT '19鍙锋秷璐规鏁�',
+  `amount20` float(10, 2) NULL DEFAULT NULL COMMENT '20鍙锋秷璐圭粺璁�',
+  `times20` int NULL DEFAULT NULL COMMENT '20鍙锋秷璐规鏁�',
+  `amount21` float(10, 2) NULL DEFAULT NULL COMMENT '21鍙锋秷璐圭粺璁�',
+  `times21` int NULL DEFAULT NULL COMMENT '21鍙锋秷璐规鏁�',
+  `amount22` float(10, 2) NULL DEFAULT NULL COMMENT '22鍙锋秷璐圭粺璁�',
+  `times22` int NULL DEFAULT NULL COMMENT '22鍙锋秷璐规鏁�',
+  `amount23` float(10, 2) NULL DEFAULT NULL COMMENT '23鍙锋秷璐圭粺璁�',
+  `times23` int NULL DEFAULT NULL COMMENT '23鍙锋秷璐规鏁�',
+  `amount24` float(10, 2) NULL DEFAULT NULL COMMENT '24鍙锋秷璐圭粺璁�',
+  `times24` int NULL DEFAULT NULL COMMENT '24鍙锋秷璐规鏁�',
+  `amount25` float(10, 2) NULL DEFAULT NULL COMMENT '25鍙锋秷璐圭粺璁�',
+  `times25` int NULL DEFAULT NULL COMMENT '25鍙锋秷璐规鏁�',
+  `amount26` float(10, 2) NULL DEFAULT NULL COMMENT '26鍙锋秷璐圭粺璁�',
+  `times26` int NULL DEFAULT NULL COMMENT '26鍙锋秷璐规鏁�',
+  `amount27` float(10, 2) NULL DEFAULT NULL COMMENT '27鍙锋秷璐圭粺璁�',
+  `times27` int NULL DEFAULT NULL COMMENT '27鍙锋秷璐规鏁�',
+  `amount28` float(10, 2) NULL DEFAULT NULL COMMENT '28鍙锋秷璐圭粺璁�',
+  `times28` int NULL DEFAULT NULL COMMENT '28鍙锋秷璐规鏁�',
+  `amount29` float(10, 2) NULL DEFAULT NULL COMMENT '29鍙锋秷璐圭粺璁�',
+  `times29` int NULL DEFAULT NULL COMMENT '29鍙锋秷璐规鏁�',
+  `amount30` float(10, 2) NULL DEFAULT NULL COMMENT '30鍙锋秷璐圭粺璁�',
+  `times30` int NULL DEFAULT NULL COMMENT '30鍙锋秷璐规鏁�',
+  `amount31` float(10, 2) NULL DEFAULT NULL COMMENT '31鍙锋秷璐圭粺璁�',
+  `times31` int NULL DEFAULT NULL COMMENT '31鍙锋秷璐规鏁�',
+  PRIMARY KEY (`id`) USING BTREE,
+  UNIQUE INDEX `st_consume_client_day_id_uindex`(`id` ASC) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '鍐滄埛娑堣垂鏃ョ粺璁�' ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Table structure for st_consume_client_month
+-- ----------------------------
+DROP TABLE IF EXISTS `st_consume_client_month`;
+CREATE TABLE `st_consume_client_month`  (
+  `id` bigint NOT NULL COMMENT '涓婚敭',
+  `client_id` bigint NULL DEFAULT NULL COMMENT '澶栭敭锛屾寚鍚戝啘鎴�',
+  `year` int NULL DEFAULT NULL COMMENT '骞村害',
+  `amount1` float(10, 2) NULL DEFAULT NULL COMMENT '1鏈堟秷璐圭粺璁�',
+  `times1` int NULL DEFAULT NULL COMMENT '1鏈堟秷璐规鏁�',
+  `amount2` float(10, 2) NULL DEFAULT NULL COMMENT '2鏈堟秷璐圭粺璁�',
+  `times2` int NULL DEFAULT NULL COMMENT '2鏈堟秷璐规鏁�',
+  `amount3` float(10, 2) NULL DEFAULT NULL COMMENT '3鏈堟秷璐圭粺璁�',
+  `times3` int NULL DEFAULT NULL COMMENT '3鏈堟秷璐规鏁�',
+  `amount4` float(10, 2) NULL DEFAULT NULL COMMENT '4鏈堟秷璐圭粺璁�',
+  `times4` int NULL DEFAULT NULL COMMENT '4鏈堟秷璐规鏁�',
+  `amount5` float(10, 2) NULL DEFAULT NULL COMMENT '5鏈堟秷璐圭粺璁�',
+  `times5` int NULL DEFAULT NULL COMMENT '5鏈堟秷璐规鏁�',
+  `amount6` float(10, 2) NULL DEFAULT NULL COMMENT '6鏈堟秷璐圭粺璁�',
+  `times6` int NULL DEFAULT NULL COMMENT '6鏈堟秷璐规鏁�',
+  `amount7` float(10, 2) NULL DEFAULT NULL COMMENT '7鏈堟秷璐圭粺璁�',
+  `times7` int NULL DEFAULT NULL COMMENT '7鏈堟秷璐规鏁�',
+  `amount8` float(10, 2) NULL DEFAULT NULL COMMENT '8鏈堟秷璐圭粺璁�',
+  `times8` int NULL DEFAULT NULL COMMENT '8鏈堟秷璐规鏁�',
+  `amount9` float(10, 2) NULL DEFAULT NULL COMMENT '9鏈堟秷璐圭粺璁�',
+  `times9` int NULL DEFAULT NULL COMMENT '9鏈堟秷璐规鏁�',
+  `amount10` float(10, 2) NULL DEFAULT NULL COMMENT '10鏈堟秷璐圭粺璁�',
+  `times10` int NULL DEFAULT NULL COMMENT '10鏈堟秷璐规鏁�',
+  `amount11` float(10, 2) NULL DEFAULT NULL COMMENT '11鏈堟秷璐圭粺璁�',
+  `times11` int NULL DEFAULT NULL COMMENT '11鏈堟秷璐规鏁�',
+  `amount12` float(10, 2) NULL DEFAULT NULL COMMENT '12鏈堟秷璐圭粺璁�',
+  `times12` int NULL DEFAULT NULL COMMENT '12鏈堟秷璐规鏁�',
+  PRIMARY KEY (`id`) USING BTREE,
+  UNIQUE INDEX `st_consume_client_month_id_uindex`(`id` ASC) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '鍐滄埛娑堣垂鏈堢粺璁�' ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Table structure for st_consume_client_year
+-- ----------------------------
+DROP TABLE IF EXISTS `st_consume_client_year`;
+CREATE TABLE `st_consume_client_year`  (
+  `id` bigint NOT NULL COMMENT '涓婚敭',
+  `client_id` bigint NULL DEFAULT NULL COMMENT '澶栭敭锛屾寚鍚戝啘鎴�',
+  `year` int NULL DEFAULT NULL COMMENT '骞村害',
+  `amount` float(10, 2) NULL DEFAULT NULL COMMENT '骞存秷璐圭粺璁�',
+  `times` int NULL DEFAULT NULL COMMENT '骞存秷璐规鏁�',
+  PRIMARY KEY (`id`) USING BTREE,
+  UNIQUE INDEX `st_consume_client_year_id_uindex`(`id` ASC) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '鍐滄埛娑堣垂骞寸粺璁�' ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Table structure for st_consume_ic_day
+-- ----------------------------
+DROP TABLE IF EXISTS `st_consume_ic_day`;
+CREATE TABLE `st_consume_ic_day`  (
+  `id` bigint NOT NULL COMMENT '涓婚敭',
+  `client_id` bigint NULL DEFAULT NULL COMMENT '澶栭敭锛屾寚鍚戝啘鎴�',
+  `card_id` bigint NULL DEFAULT NULL COMMENT '澶栭敭锛屾寚鍚戝啘鎴稩C鍗�',
+  `year` int NULL DEFAULT NULL COMMENT '骞村害',
+  `month` int NULL DEFAULT NULL COMMENT '鏈堜唤',
+  `amount1` float(10, 2) NULL DEFAULT NULL COMMENT '1鍙锋秷璐圭粺璁�',
+  `times1` int NULL DEFAULT NULL COMMENT '1鍙锋秷璐规鏁�',
+  `amount2` float(10, 2) NULL DEFAULT NULL COMMENT '2鍙锋秷璐圭粺璁�',
+  `times2` int NULL DEFAULT NULL COMMENT '2鍙锋秷璐规鏁�',
+  `amount3` float(10, 2) NULL DEFAULT NULL COMMENT '3鍙锋秷璐圭粺璁�',
+  `times3` int NULL DEFAULT NULL COMMENT '3鍙锋秷璐规鏁�',
+  `amount4` float(10, 2) NULL DEFAULT NULL COMMENT '4鍙锋秷璐圭粺璁�',
+  `times4` int NULL DEFAULT NULL COMMENT '4鍙锋秷璐规鏁�',
+  `amount5` float(10, 2) NULL DEFAULT NULL COMMENT '5鍙锋秷璐圭粺璁�',
+  `times5` int NULL DEFAULT NULL COMMENT '5鍙锋秷璐规鏁�',
+  `amount6` float(10, 2) NULL DEFAULT NULL COMMENT '6鍙锋秷璐圭粺璁�',
+  `times6` int NULL DEFAULT NULL COMMENT '6鍙锋秷璐规鏁�',
+  `amount7` float(10, 2) NULL DEFAULT NULL COMMENT '7鍙锋秷璐圭粺璁�',
+  `times7` int NULL DEFAULT NULL COMMENT '7鍙锋秷璐规鏁�',
+  `amount8` float(10, 2) NULL DEFAULT NULL COMMENT '8鍙锋秷璐圭粺璁�',
+  `times8` int NULL DEFAULT NULL COMMENT '8鍙锋秷璐规鏁�',
+  `amount9` float(10, 2) NULL DEFAULT NULL COMMENT '9鍙锋秷璐圭粺璁�',
+  `times9` int NULL DEFAULT NULL COMMENT '9鍙锋秷璐规鏁�',
+  `amount10` float(10, 2) NULL DEFAULT NULL COMMENT '10鍙锋秷璐圭粺璁�',
+  `times10` int NULL DEFAULT NULL COMMENT '10鍙锋秷璐规鏁�',
+  `amount11` float(10, 2) NULL DEFAULT NULL COMMENT '11鍙锋秷璐圭粺璁�',
+  `times11` int NULL DEFAULT NULL COMMENT '11鍙锋秷璐规鏁�',
+  `amount12` float(10, 2) NULL DEFAULT NULL COMMENT '12鍙锋秷璐圭粺璁�',
+  `times12` int NULL DEFAULT NULL COMMENT '12鍙锋秷璐规鏁�',
+  `amount13` float(10, 2) NULL DEFAULT NULL COMMENT '13鍙锋秷璐圭粺璁�',
+  `times13` int NULL DEFAULT NULL COMMENT '13鍙锋秷璐规鏁�',
+  `amount14` float(10, 2) NULL DEFAULT NULL COMMENT '14鍙锋秷璐圭粺璁�',
+  `times14` int NULL DEFAULT NULL COMMENT '14鍙锋秷璐规鏁�',
+  `amount15` float(10, 2) NULL DEFAULT NULL COMMENT '15鍙锋秷璐圭粺璁�',
+  `times15` int NULL DEFAULT NULL COMMENT '15鍙锋秷璐规鏁�',
+  `amount16` float(10, 2) NULL DEFAULT NULL COMMENT '16鍙锋秷璐圭粺璁�',
+  `times16` int NULL DEFAULT NULL COMMENT '16鍙锋秷璐规鏁�',
+  `amount17` float(10, 2) NULL DEFAULT NULL COMMENT '17鍙锋秷璐圭粺璁�',
+  `times17` int NULL DEFAULT NULL COMMENT '17鍙锋秷璐规鏁�',
+  `amount18` float(10, 2) NULL DEFAULT NULL COMMENT '18鍙锋秷璐圭粺璁�',
+  `times18` int NULL DEFAULT NULL COMMENT '18鍙锋秷璐规鏁�',
+  `amount19` float(10, 2) NULL DEFAULT NULL COMMENT '19鍙锋秷璐圭粺璁�',
+  `times19` int NULL DEFAULT NULL COMMENT '19鍙锋秷璐规鏁�',
+  `amount20` float(10, 2) NULL DEFAULT NULL COMMENT '20鍙锋秷璐圭粺璁�',
+  `times20` int NULL DEFAULT NULL COMMENT '20鍙锋秷璐规鏁�',
+  `amount21` float(10, 2) NULL DEFAULT NULL COMMENT '21鍙锋秷璐圭粺璁�',
+  `times21` int NULL DEFAULT NULL COMMENT '21鍙锋秷璐规鏁�',
+  `amount22` float(10, 2) NULL DEFAULT NULL COMMENT '22鍙锋秷璐圭粺璁�',
+  `times22` int NULL DEFAULT NULL COMMENT '22鍙锋秷璐规鏁�',
+  `amount23` float(10, 2) NULL DEFAULT NULL COMMENT '23鍙锋秷璐圭粺璁�',
+  `times23` int NULL DEFAULT NULL COMMENT '23鍙锋秷璐规鏁�',
+  `amount24` float(10, 2) NULL DEFAULT NULL COMMENT '24鍙锋秷璐圭粺璁�',
+  `times24` int NULL DEFAULT NULL COMMENT '24鍙锋秷璐规鏁�',
+  `amount25` float(10, 2) NULL DEFAULT NULL COMMENT '25鍙锋秷璐圭粺璁�',
+  `times25` int NULL DEFAULT NULL COMMENT '25鍙锋秷璐规鏁�',
+  `amount26` float(10, 2) NULL DEFAULT NULL COMMENT '26鍙锋秷璐圭粺璁�',
+  `times26` int NULL DEFAULT NULL COMMENT '26鍙锋秷璐规鏁�',
+  `amount27` float(10, 2) NULL DEFAULT NULL COMMENT '27鍙锋秷璐圭粺璁�',
+  `times27` int NULL DEFAULT NULL COMMENT '27鍙锋秷璐规鏁�',
+  `amount28` float(10, 2) NULL DEFAULT NULL COMMENT '28鍙锋秷璐圭粺璁�',
+  `times28` int NULL DEFAULT NULL COMMENT '28鍙锋秷璐规鏁�',
+  `amount29` float(10, 2) NULL DEFAULT NULL COMMENT '29鍙锋秷璐圭粺璁�',
+  `times29` int NULL DEFAULT NULL COMMENT '29鍙锋秷璐规鏁�',
+  `amount30` float(10, 2) NULL DEFAULT NULL COMMENT '30鍙锋秷璐圭粺璁�',
+  `times30` int NULL DEFAULT NULL COMMENT '30鍙锋秷璐规鏁�',
+  `amount31` float(10, 2) NULL DEFAULT NULL COMMENT '31鍙锋秷璐圭粺璁�',
+  `times31` int NULL DEFAULT NULL COMMENT '31鍙锋秷璐规鏁�',
+  PRIMARY KEY (`id`) USING BTREE,
+  UNIQUE INDEX `st_consume_ic_day_id_uindex`(`id` ASC) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = 'IC鍗℃秷璐规棩缁熻' ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Table structure for st_consume_ic_month
+-- ----------------------------
+DROP TABLE IF EXISTS `st_consume_ic_month`;
+CREATE TABLE `st_consume_ic_month`  (
+  `id` bigint NOT NULL COMMENT '涓婚敭',
+  `client_id` bigint NULL DEFAULT NULL COMMENT '澶栭敭锛屾寚鍚戝啘鎴�',
+  `card_id` bigint NULL DEFAULT NULL COMMENT '澶栭敭锛屾寚鍚戝啘鎴稩C鍗�',
+  `year` int NULL DEFAULT NULL COMMENT '骞村害',
+  `amount1` float(10, 2) NULL DEFAULT NULL COMMENT '1鏈堟秷璐圭粺璁�',
+  `times1` int NULL DEFAULT NULL COMMENT '1鏈堟秷璐规鏁�',
+  `amount2` float(10, 2) NULL DEFAULT NULL COMMENT '2鏈堟秷璐圭粺璁�',
+  `times2` int NULL DEFAULT NULL COMMENT '2鏈堟秷璐规鏁�',
+  `amount3` float(10, 2) NULL DEFAULT NULL COMMENT '3鏈堟秷璐圭粺璁�',
+  `times3` int NULL DEFAULT NULL COMMENT '3鏈堟秷璐规鏁�',
+  `amount4` float(10, 2) NULL DEFAULT NULL COMMENT '4鏈堟秷璐圭粺璁�',
+  `times4` int NULL DEFAULT NULL COMMENT '4鏈堟秷璐规鏁�',
+  `amount5` float(10, 2) NULL DEFAULT NULL COMMENT '5鏈堟秷璐圭粺璁�',
+  `times5` int NULL DEFAULT NULL COMMENT '5鏈堟秷璐规鏁�',
+  `amount6` float(10, 2) NULL DEFAULT NULL COMMENT '6鏈堟秷璐圭粺璁�',
+  `times6` int NULL DEFAULT NULL COMMENT '6鏈堟秷璐规鏁�',
+  `amount7` float(10, 2) NULL DEFAULT NULL COMMENT '7鏈堟秷璐圭粺璁�',
+  `times7` int NULL DEFAULT NULL COMMENT '7鏈堟秷璐规鏁�',
+  `amount8` float(10, 2) NULL DEFAULT NULL COMMENT '8鏈堟秷璐圭粺璁�',
+  `times8` int NULL DEFAULT NULL COMMENT '8鏈堟秷璐规鏁�',
+  `amount9` float(10, 2) NULL DEFAULT NULL COMMENT '9鏈堟秷璐圭粺璁�',
+  `times9` int NULL DEFAULT NULL COMMENT '9鏈堟秷璐规鏁�',
+  `amount10` float(10, 2) NULL DEFAULT NULL COMMENT '10鏈堟秷璐圭粺璁�',
+  `times10` int NULL DEFAULT NULL COMMENT '10鏈堟秷璐规鏁�',
+  `amount11` float(10, 2) NULL DEFAULT NULL COMMENT '11鏈堟秷璐圭粺璁�',
+  `times11` int NULL DEFAULT NULL COMMENT '11鏈堟秷璐规鏁�',
+  `amount12` float(10, 2) NULL DEFAULT NULL COMMENT '12鏈堟秷璐圭粺璁�',
+  `times12` int NULL DEFAULT NULL COMMENT '12鏈堟秷璐规鏁�',
+  PRIMARY KEY (`id`) USING BTREE,
+  UNIQUE INDEX `st_consume_ic_month_id_uindex`(`id` ASC) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = 'IC鍗℃秷璐规湀缁熻' ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Table structure for st_consume_ic_year
+-- ----------------------------
+DROP TABLE IF EXISTS `st_consume_ic_year`;
+CREATE TABLE `st_consume_ic_year`  (
+  `id` bigint NOT NULL COMMENT '涓婚敭',
+  `client_id` bigint NULL DEFAULT NULL COMMENT '澶栭敭锛屾寚鍚戝啘鎴�',
+  `card_id` bigint NULL DEFAULT NULL COMMENT '澶栭敭锛屾寚鍚戝啘鎴稩C鍗�',
+  `year` int NULL DEFAULT NULL COMMENT '骞村害',
+  `amount` float(10, 2) NULL DEFAULT NULL COMMENT '骞存秷璐圭粺璁�',
+  `times` int NULL DEFAULT NULL COMMENT '骞存秷璐规鏁�',
+  PRIMARY KEY (`id`) USING BTREE,
+  UNIQUE INDEX `st_consume_ic_year_id_uindex`(`id` ASC) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = 'IC鍗℃秷璐瑰勾缁熻' ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Table structure for st_intake_amount_month
+-- ----------------------------
+DROP TABLE IF EXISTS `st_intake_amount_month`;
+CREATE TABLE `st_intake_amount_month`  (
+  `id` bigint NOT NULL COMMENT '涓婚敭',
+  `intake_id` bigint NULL DEFAULT NULL COMMENT '鍙栨按鍙D',
+  `year` int NULL DEFAULT NULL COMMENT '缁熻骞村害',
+  `month` int NULL DEFAULT NULL COMMENT '缁熻鏈堜唤',
+  `amount` float(10, 2) NULL DEFAULT NULL COMMENT '鏈堝彇姘撮噺',
+  PRIMARY KEY (`id`) USING BTREE,
+  UNIQUE INDEX `st_intake_amount_month_id_uindex`(`id` ASC) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '鍙栨按鍙e彇姘撮噺鏈堢粺璁�' ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Table structure for st_intake_amount_year
+-- ----------------------------
+DROP TABLE IF EXISTS `st_intake_amount_year`;
+CREATE TABLE `st_intake_amount_year`  (
+  `id` bigint NOT NULL COMMENT '涓婚敭',
+  `intake_id` bigint NULL DEFAULT NULL COMMENT '鍙栨按鍙D',
+  `year` int NULL DEFAULT NULL COMMENT '缁熻骞村害',
+  `amount` float(10, 2) NULL DEFAULT NULL COMMENT '骞村彇姘撮噺',
+  PRIMARY KEY (`id`) USING BTREE,
+  UNIQUE INDEX `st_intake_amount_year_id_uindex`(`id` ASC) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '鍙栨按鍙e勾鍙栨按閲忕粺璁�' ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Table structure for st_loss_month
+-- ----------------------------
+DROP TABLE IF EXISTS `st_loss_month`;
+CREATE TABLE `st_loss_month`  (
+  `id` bigint NOT NULL COMMENT '涓婚敭',
+  `intake_id` bigint NULL DEFAULT NULL COMMENT '鍙栨按鍙D',
+  `year` int NULL DEFAULT NULL COMMENT '缁熻骞�',
+  `month` int NULL DEFAULT NULL COMMENT '缁熻鏈�',
+  `amount` float(10, 2) NULL DEFAULT NULL COMMENT '鏈堢粺璁�',
+  PRIMARY KEY (`id`) USING BTREE,
+  UNIQUE INDEX `st_loss_month_id_uindex`(`id` ASC) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '鍙栨按鍙f紡鎹熸湀缁熻' ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Table structure for st_loss_year
+-- ----------------------------
+DROP TABLE IF EXISTS `st_loss_year`;
+CREATE TABLE `st_loss_year`  (
+  `id` bigint NOT NULL COMMENT '涓婚敭',
+  `intake_id` bigint NULL DEFAULT NULL COMMENT '鍙栨按鍙D',
+  `year` int NULL DEFAULT NULL COMMENT '骞村害',
+  `amount` float(10, 2) NULL DEFAULT NULL COMMENT '骞存紡鎹熺粺璁�',
+  PRIMARY KEY (`id`) USING BTREE,
+  UNIQUE INDEX `st_loss_year_id_uindex`(`id` ASC) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '鍙栨按鍙f紡鎹熷勾缁熻' ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Table structure for st_recharge_client_day
+-- ----------------------------
+DROP TABLE IF EXISTS `st_recharge_client_day`;
+CREATE TABLE `st_recharge_client_day`  (
+  `id` bigint NOT NULL COMMENT '涓婚敭',
+  `client_id` bigint NULL DEFAULT NULL COMMENT '澶栭敭锛屾寚鍚戝啘鎴�',
+  `year` int NULL DEFAULT NULL COMMENT '骞村害',
+  `month` int NULL DEFAULT NULL COMMENT '鏈堜唤',
+  `amount1` float(10, 2) NULL DEFAULT NULL COMMENT '1鍙峰厖鍊肩粺璁�',
+  `gift1` float(10, 2) NULL DEFAULT NULL COMMENT '1鍙疯禒閫佺粺璁�',
+  `times1` int NULL DEFAULT NULL COMMENT '1鍙峰厖鍊兼鏁�',
+  `amount2` float(10, 2) NULL DEFAULT NULL COMMENT '2鍙峰厖鍊肩粺璁�',
+  `gift2` float(10, 2) NULL DEFAULT NULL COMMENT '2鍙疯禒閫佺粺璁�',
+  `times2` int NULL DEFAULT NULL COMMENT '2鍙峰厖鍊兼鏁�',
+  `amount3` float(10, 2) NULL DEFAULT NULL COMMENT '3鍙峰厖鍊肩粺璁�',
+  `gift3` float(10, 2) NULL DEFAULT NULL COMMENT '3鍙疯禒閫佺粺璁�',
+  `times3` int NULL DEFAULT NULL COMMENT '3鍙峰厖鍊兼鏁�',
+  `amount4` float(10, 2) NULL DEFAULT NULL COMMENT '4鍙峰厖鍊肩粺璁�',
+  `gift4` float(10, 2) NULL DEFAULT NULL COMMENT '4鍙疯禒閫佺粺璁�',
+  `times4` int NULL DEFAULT NULL COMMENT '4鍙峰厖鍊兼鏁�',
+  `amount5` float(10, 2) NULL DEFAULT NULL COMMENT '5鍙峰厖鍊肩粺璁�',
+  `gift5` float(10, 2) NULL DEFAULT NULL COMMENT '5鍙疯禒閫佺粺璁�',
+  `times5` int NULL DEFAULT NULL COMMENT '5鍙峰厖鍊兼鏁�',
+  `amount6` float(10, 2) NULL DEFAULT NULL COMMENT '6鍙峰厖鍊肩粺璁�',
+  `gift6` float(10, 2) NULL DEFAULT NULL COMMENT '6鍙疯禒閫佺粺璁�',
+  `times6` int NULL DEFAULT NULL COMMENT '6鍙峰厖鍊兼鏁�',
+  `amount7` float(10, 2) NULL DEFAULT NULL COMMENT '7鍙峰厖鍊肩粺璁�',
+  `gift7` float(10, 2) NULL DEFAULT NULL COMMENT '7鍙疯禒閫佺粺璁�',
+  `times7` int NULL DEFAULT NULL COMMENT '7鍙峰厖鍊兼鏁�',
+  `amount8` float(10, 2) NULL DEFAULT NULL COMMENT '8鍙峰厖鍊肩粺璁�',
+  `gift8` float(10, 2) NULL DEFAULT NULL COMMENT '8鍙疯禒閫佺粺璁�',
+  `times8` int NULL DEFAULT NULL COMMENT '8鍙峰厖鍊兼鏁�',
+  `amount9` float(10, 2) NULL DEFAULT NULL COMMENT '9鍙峰厖鍊肩粺璁�',
+  `gift9` float(10, 2) NULL DEFAULT NULL COMMENT '9鍙疯禒閫佺粺璁�',
+  `times9` int NULL DEFAULT NULL COMMENT '9鍙峰厖鍊兼鏁�',
+  `amount10` float(10, 2) NULL DEFAULT NULL COMMENT '10鍙峰厖鍊肩粺璁�',
+  `gift10` float(10, 2) NULL DEFAULT NULL COMMENT '10鍙疯禒閫佺粺璁�',
+  `times10` int NULL DEFAULT NULL COMMENT '10鍙峰厖鍊兼鏁�',
+  `amount11` float(10, 2) NULL DEFAULT NULL COMMENT '11鍙峰厖鍊肩粺璁�',
+  `gift11` float(10, 2) NULL DEFAULT NULL COMMENT '11鍙疯禒閫佺粺璁�',
+  `times11` int NULL DEFAULT NULL COMMENT '11鍙峰厖鍊兼鏁�',
+  `amount12` float(10, 2) NULL DEFAULT NULL COMMENT '12鍙峰厖鍊肩粺璁�',
+  `gift12` float(10, 2) NULL DEFAULT NULL COMMENT '12鍙疯禒閫佺粺璁�',
+  `times12` int NULL DEFAULT NULL COMMENT '12鍙峰厖鍊兼鏁�',
+  `amount13` float(10, 2) NULL DEFAULT NULL COMMENT '13鍙峰厖鍊肩粺璁�',
+  `gift13` float(10, 2) NULL DEFAULT NULL COMMENT '13鍙疯禒閫佺粺璁�',
+  `times13` int NULL DEFAULT NULL COMMENT '13鍙峰厖鍊兼鏁�',
+  `amount14` float(10, 2) NULL DEFAULT NULL COMMENT '14鍙峰厖鍊肩粺璁�',
+  `gift14` float(10, 2) NULL DEFAULT NULL COMMENT '14鍙疯禒閫佺粺璁�',
+  `times14` int NULL DEFAULT NULL COMMENT '14鍙峰厖鍊兼鏁�',
+  `amount15` float(10, 2) NULL DEFAULT NULL COMMENT '15鍙峰厖鍊肩粺璁�',
+  `gift15` float(10, 2) NULL DEFAULT NULL COMMENT '15鍙疯禒閫佺粺璁�',
+  `times15` int NULL DEFAULT NULL COMMENT '15鍙峰厖鍊兼鏁�',
+  `amount16` float(10, 2) NULL DEFAULT NULL COMMENT '16鍙峰厖鍊肩粺璁�',
+  `gift16` float(10, 2) NULL DEFAULT NULL COMMENT '16鍙疯禒閫佺粺璁�',
+  `times16` int NULL DEFAULT NULL COMMENT '16鍙峰厖鍊兼鏁�',
+  `amount17` float(10, 2) NULL DEFAULT NULL COMMENT '17鍙峰厖鍊肩粺璁�',
+  `gift17` float(10, 2) NULL DEFAULT NULL COMMENT '17鍙疯禒閫佺粺璁�',
+  `times17` int NULL DEFAULT NULL COMMENT '17鍙峰厖鍊兼鏁�',
+  `amount18` float(10, 2) NULL DEFAULT NULL COMMENT '18鍙峰厖鍊肩粺璁�',
+  `gift18` float(10, 2) NULL DEFAULT NULL COMMENT '18鍙疯禒閫佺粺璁�',
+  `times18` int NULL DEFAULT NULL COMMENT '18鍙峰厖鍊兼鏁�',
+  `amount19` float(10, 2) NULL DEFAULT NULL COMMENT '19鍙峰厖鍊肩粺璁�',
+  `gift19` float(10, 2) NULL DEFAULT NULL COMMENT '19鍙疯禒閫佺粺璁�',
+  `times19` int NULL DEFAULT NULL COMMENT '19鍙峰厖鍊兼鏁�',
+  `amount20` float(10, 2) NULL DEFAULT NULL COMMENT '20鍙峰厖鍊肩粺璁�',
+  `gift20` float(10, 2) NULL DEFAULT NULL COMMENT '20鍙疯禒閫佺粺璁�',
+  `times20` int NULL DEFAULT NULL COMMENT '20鍙峰厖鍊兼鏁�',
+  `amount21` float(10, 2) NULL DEFAULT NULL COMMENT '21鍙峰厖鍊肩粺璁�',
+  `gift21` float(10, 2) NULL DEFAULT NULL COMMENT '21鍙疯禒閫佺粺璁�',
+  `times21` int NULL DEFAULT NULL COMMENT '21鍙峰厖鍊兼鏁�',
+  `amount22` float(10, 2) NULL DEFAULT NULL COMMENT '22鍙峰厖鍊肩粺璁�',
+  `gift22` float(10, 2) NULL DEFAULT NULL COMMENT '22鍙疯禒閫佺粺璁�',
+  `times22` int NULL DEFAULT NULL COMMENT '22鍙峰厖鍊兼鏁�',
+  `amount23` float(10, 2) NULL DEFAULT NULL COMMENT '23鍙峰厖鍊肩粺璁�',
+  `gift23` float(10, 2) NULL DEFAULT NULL COMMENT '23鍙疯禒閫佺粺璁�',
+  `times23` int NULL DEFAULT NULL COMMENT '23鍙峰厖鍊兼鏁�',
+  `amount24` float(10, 2) NULL DEFAULT NULL COMMENT '24鍙峰厖鍊肩粺璁�',
+  `gift24` float(10, 2) NULL DEFAULT NULL COMMENT '24鍙疯禒閫佺粺璁�',
+  `times24` int NULL DEFAULT NULL COMMENT '24鍙峰厖鍊兼鏁�',
+  `amount25` float(10, 2) NULL DEFAULT NULL COMMENT '25鍙峰厖鍊肩粺璁�',
+  `gift25` float(10, 2) NULL DEFAULT NULL COMMENT '25鍙疯禒閫佺粺璁�',
+  `times25` int NULL DEFAULT NULL COMMENT '25鍙峰厖鍊兼鏁�',
+  `amount26` float(10, 2) NULL DEFAULT NULL COMMENT '26鍙峰厖鍊肩粺璁�',
+  `gift26` float(10, 2) NULL DEFAULT NULL COMMENT '26鍙疯禒閫佺粺璁�',
+  `times26` int NULL DEFAULT NULL COMMENT '26鍙峰厖鍊兼鏁�',
+  `amount27` float(10, 2) NULL DEFAULT NULL COMMENT '27鍙峰厖鍊肩粺璁�',
+  `gift27` float(10, 2) NULL DEFAULT NULL COMMENT '27鍙疯禒閫佺粺璁�',
+  `times27` int NULL DEFAULT NULL COMMENT '27鍙峰厖鍊兼鏁�',
+  `amount28` float(10, 2) NULL DEFAULT NULL COMMENT '28鍙峰厖鍊肩粺璁�',
+  `gift28` float(10, 2) NULL DEFAULT NULL COMMENT '28鍙疯禒閫佺粺璁�',
+  `times28` int NULL DEFAULT NULL COMMENT '28鍙峰厖鍊兼鏁�',
+  `amount29` float(10, 2) NULL DEFAULT NULL COMMENT '29鍙峰厖鍊肩粺璁�',
+  `gift29` float(10, 2) NULL DEFAULT NULL COMMENT '29鍙疯禒閫佺粺璁�',
+  `times29` int NULL DEFAULT NULL COMMENT '29鍙峰厖鍊兼鏁�',
+  `amount30` float(10, 2) NULL DEFAULT NULL COMMENT '30鍙峰厖鍊肩粺璁�',
+  `gift30` float(10, 2) NULL DEFAULT NULL COMMENT '30鍙疯禒閫佺粺璁�',
+  `times30` int NULL DEFAULT NULL COMMENT '30鍙峰厖鍊兼鏁�',
+  `amount31` float(10, 2) NULL DEFAULT NULL COMMENT '31鍙峰厖鍊肩粺璁�',
+  `gift31` float(10, 2) NULL DEFAULT NULL COMMENT '31鍙疯禒閫佺粺璁�',
+  `times31` int NULL DEFAULT NULL COMMENT '31鍙峰厖鍊兼鏁�',
+  PRIMARY KEY (`id`) USING BTREE,
+  UNIQUE INDEX `st_recharge_client_day_id_uindex`(`id` ASC) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '鍐滄埛鍏呭�兼棩缁熻' ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Table structure for st_recharge_client_month
+-- ----------------------------
+DROP TABLE IF EXISTS `st_recharge_client_month`;
+CREATE TABLE `st_recharge_client_month`  (
+  `id` bigint NOT NULL COMMENT '涓婚敭',
+  `client_id` bigint NULL DEFAULT NULL COMMENT '澶栭敭锛屾寚鍚戝啘鎴�',
+  `year` int NULL DEFAULT NULL COMMENT '骞村害',
+  `amount1` float(10, 2) NULL DEFAULT NULL COMMENT '1鏈堝厖鍊肩粺璁�',
+  `gift1` float(10, 2) NULL DEFAULT NULL COMMENT '1鏈堣禒閫佺粺璁�',
+  `times1` int NULL DEFAULT NULL COMMENT '1鏈堝厖鍊兼鏁�',
+  `amount2` float(10, 2) NULL DEFAULT NULL COMMENT '2鏈堝厖鍊肩粺璁�',
+  `gift2` float(10, 2) NULL DEFAULT NULL COMMENT '2鏈堣禒閫佺粺璁�',
+  `times2` int NULL DEFAULT NULL COMMENT '2鏈堝厖鍊兼鏁�',
+  `amount3` float(10, 2) NULL DEFAULT NULL COMMENT '3鏈堝厖鍊肩粺璁�',
+  `gift3` float(10, 2) NULL DEFAULT NULL COMMENT '3鏈堣禒閫佺粺璁�',
+  `times3` int NULL DEFAULT NULL COMMENT '3鏈堝厖鍊兼鏁�',
+  `amount4` float(10, 2) NULL DEFAULT NULL COMMENT '4鏈堝厖鍊肩粺璁�',
+  `gift4` float(10, 2) NULL DEFAULT NULL COMMENT '4鏈堣禒閫佺粺璁�',
+  `times4` int NULL DEFAULT NULL COMMENT '4鏈堝厖鍊兼鏁�',
+  `amount5` float(10, 2) NULL DEFAULT NULL COMMENT '5鏈堝厖鍊肩粺璁�',
+  `gift5` float(10, 2) NULL DEFAULT NULL COMMENT '5鏈堣禒閫佺粺璁�',
+  `times5` int NULL DEFAULT NULL COMMENT '5鏈堝厖鍊兼鏁�',
+  `amount6` float(10, 2) NULL DEFAULT NULL COMMENT '6鏈堝厖鍊肩粺璁�',
+  `gift6` float(10, 2) NULL DEFAULT NULL COMMENT '6鏈堣禒閫佺粺璁�',
+  `times6` int NULL DEFAULT NULL COMMENT '6鏈堝厖鍊兼鏁�',
+  `amount7` float(10, 2) NULL DEFAULT NULL COMMENT '7鏈堝厖鍊肩粺璁�',
+  `gift7` float(10, 2) NULL DEFAULT NULL COMMENT '7鏈堣禒閫佺粺璁�',
+  `times7` int NULL DEFAULT NULL COMMENT '7鏈堝厖鍊兼鏁�',
+  `amount8` float(10, 2) NULL DEFAULT NULL COMMENT '8鏈堝厖鍊肩粺璁�',
+  `gift8` float(10, 2) NULL DEFAULT NULL COMMENT '8鏈堣禒閫佺粺璁�',
+  `times8` int NULL DEFAULT NULL COMMENT '8鏈堝厖鍊兼鏁�',
+  `amount9` float(10, 2) NULL DEFAULT NULL COMMENT '9鏈堝厖鍊肩粺璁�',
+  `gift9` float(10, 2) NULL DEFAULT NULL COMMENT '9鏈堣禒閫佺粺璁�',
+  `times9` int NULL DEFAULT NULL COMMENT '9鏈堝厖鍊兼鏁�',
+  `amount10` float(10, 2) NULL DEFAULT NULL COMMENT '10鏈堝厖鍊肩粺璁�',
+  `gift10` float(10, 2) NULL DEFAULT NULL COMMENT '10鏈堣禒閫佺粺璁�',
+  `times10` int NULL DEFAULT NULL COMMENT '10鏈堝厖鍊兼鏁�',
+  `amount11` float(10, 2) NULL DEFAULT NULL COMMENT '11鏈堝厖鍊肩粺璁�',
+  `gift11` float(10, 2) NULL DEFAULT NULL COMMENT '11鏈堣禒閫佺粺璁�',
+  `times11` int NULL DEFAULT NULL COMMENT '11鏈堝厖鍊兼鏁�',
+  `amount12` float(10, 2) NULL DEFAULT NULL COMMENT '12鏈堝厖鍊肩粺璁�',
+  `gift12` float(10, 2) NULL DEFAULT NULL COMMENT '12鏈堣禒閫佺粺璁�',
+  `times12` int NULL DEFAULT NULL COMMENT '12鏈堝厖鍊兼鏁�',
+  PRIMARY KEY (`id`) USING BTREE,
+  UNIQUE INDEX `st_recharge_client_month_id_uindex`(`id` ASC) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '鍐滄埛鍏呭�兼湀缁熻' ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Table structure for st_recharge_client_year
+-- ----------------------------
+DROP TABLE IF EXISTS `st_recharge_client_year`;
+CREATE TABLE `st_recharge_client_year`  (
+  `id` bigint NOT NULL COMMENT '涓婚敭',
+  `client_id` bigint NULL DEFAULT NULL COMMENT '澶栭敭锛屾寚鍚戝啘鎴�',
+  `year` int NULL DEFAULT NULL COMMENT '骞村害',
+  `amount` float(10, 2) NULL DEFAULT NULL COMMENT '骞村厖鍊肩粺璁�',
+  `gift` float(10, 2) NULL DEFAULT NULL COMMENT '骞磋禒閫佺粺璁�',
+  `times` int NULL DEFAULT NULL COMMENT '骞村厖鍊兼鏁�',
+  PRIMARY KEY (`id`) USING BTREE,
+  UNIQUE INDEX `st_recharge_client_year_id_uindex`(`id` ASC) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = 'IC鍗″厖鍊兼湀缁熻' ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Table structure for st_recharge_ic_day
+-- ----------------------------
+DROP TABLE IF EXISTS `st_recharge_ic_day`;
+CREATE TABLE `st_recharge_ic_day`  (
+  `id` bigint NOT NULL COMMENT '涓婚敭',
+  `client_id` bigint NULL DEFAULT NULL COMMENT '澶栭敭锛屾寚鍚戝啘鎴�',
+  `card_id` bigint NULL DEFAULT NULL COMMENT '澶栭敭锛屾寚鍚戝啘鎴稩C鍗�',
+  `year` int NULL DEFAULT NULL COMMENT '骞村害',
+  `month` int NULL DEFAULT NULL COMMENT '鏈堜唤',
+  `amount1` float(10, 2) NULL DEFAULT NULL COMMENT '1鍙峰厖鍊肩粺璁�',
+  `gift1` float(10, 2) NULL DEFAULT NULL COMMENT '1鍙疯禒閫佺粺璁�',
+  `times1` int NULL DEFAULT NULL COMMENT '1鍙峰厖鍊兼鏁�',
+  `amount2` float(10, 2) NULL DEFAULT NULL COMMENT '2鍙峰厖鍊肩粺璁�',
+  `gift2` float(10, 2) NULL DEFAULT NULL COMMENT '2鍙疯禒閫佺粺璁�',
+  `times2` int NULL DEFAULT NULL COMMENT '2鍙峰厖鍊兼鏁�',
+  `amount3` float(10, 2) NULL DEFAULT NULL COMMENT '3鍙峰厖鍊肩粺璁�',
+  `gift3` float(10, 2) NULL DEFAULT NULL COMMENT '3鍙疯禒閫佺粺璁�',
+  `times3` int NULL DEFAULT NULL COMMENT '3鍙峰厖鍊兼鏁�',
+  `amount4` float(10, 2) NULL DEFAULT NULL COMMENT '4鍙峰厖鍊肩粺璁�',
+  `gift4` float(10, 2) NULL DEFAULT NULL COMMENT '4鍙疯禒閫佺粺璁�',
+  `times4` int NULL DEFAULT NULL COMMENT '4鍙峰厖鍊兼鏁�',
+  `amount5` float(10, 2) NULL DEFAULT NULL COMMENT '5鍙峰厖鍊肩粺璁�',
+  `gift5` float(10, 2) NULL DEFAULT NULL COMMENT '5鍙疯禒閫佺粺璁�',
+  `times5` int NULL DEFAULT NULL COMMENT '5鍙峰厖鍊兼鏁�',
+  `amount6` float(10, 2) NULL DEFAULT NULL COMMENT '6鍙峰厖鍊肩粺璁�',
+  `gift6` float(10, 2) NULL DEFAULT NULL COMMENT '6鍙疯禒閫佺粺璁�',
+  `times6` int NULL DEFAULT NULL COMMENT '6鍙峰厖鍊兼鏁�',
+  `amount7` float(10, 2) NULL DEFAULT NULL COMMENT '7鍙峰厖鍊肩粺璁�',
+  `gift7` float(10, 2) NULL DEFAULT NULL COMMENT '7鍙疯禒閫佺粺璁�',
+  `times7` int NULL DEFAULT NULL COMMENT '7鍙峰厖鍊兼鏁�',
+  `amount8` float(10, 2) NULL DEFAULT NULL COMMENT '8鍙峰厖鍊肩粺璁�',
+  `gift8` float(10, 2) NULL DEFAULT NULL COMMENT '8鍙疯禒閫佺粺璁�',
+  `times8` int NULL DEFAULT NULL COMMENT '8鍙峰厖鍊兼鏁�',
+  `amount9` float(10, 2) NULL DEFAULT NULL COMMENT '9鍙峰厖鍊肩粺璁�',
+  `gift9` float(10, 2) NULL DEFAULT NULL COMMENT '9鍙疯禒閫佺粺璁�',
+  `times9` int NULL DEFAULT NULL COMMENT '9鍙峰厖鍊兼鏁�',
+  `amount10` float(10, 2) NULL DEFAULT NULL COMMENT '10鍙峰厖鍊肩粺璁�',
+  `gift10` float(10, 2) NULL DEFAULT NULL COMMENT '10鍙疯禒閫佺粺璁�',
+  `times10` int NULL DEFAULT NULL COMMENT '10鍙峰厖鍊兼鏁�',
+  `amount11` float(10, 2) NULL DEFAULT NULL COMMENT '11鍙峰厖鍊肩粺璁�',
+  `gift11` float(10, 2) NULL DEFAULT NULL COMMENT '11鍙疯禒閫佺粺璁�',
+  `times11` int NULL DEFAULT NULL COMMENT '11鍙峰厖鍊兼鏁�',
+  `amount12` float(10, 2) NULL DEFAULT NULL COMMENT '12鍙峰厖鍊肩粺璁�',
+  `gift12` float(10, 2) NULL DEFAULT NULL COMMENT '12鍙疯禒閫佺粺璁�',
+  `times12` int NULL DEFAULT NULL COMMENT '12鍙峰厖鍊兼鏁�',
+  `amount13` float(10, 2) NULL DEFAULT NULL COMMENT '13鍙峰厖鍊肩粺璁�',
+  `gift13` float(10, 2) NULL DEFAULT NULL COMMENT '13鍙疯禒閫佺粺璁�',
+  `times13` int NULL DEFAULT NULL COMMENT '13鍙峰厖鍊兼鏁�',
+  `amount14` float(10, 2) NULL DEFAULT NULL COMMENT '14鍙峰厖鍊肩粺璁�',
+  `gift14` float(10, 2) NULL DEFAULT NULL COMMENT '14鍙疯禒閫佺粺璁�',
+  `times14` int NULL DEFAULT NULL COMMENT '14鍙峰厖鍊兼鏁�',
+  `amount15` float(10, 2) NULL DEFAULT NULL COMMENT '15鍙峰厖鍊肩粺璁�',
+  `gift15` float(10, 2) NULL DEFAULT NULL COMMENT '15鍙疯禒閫佺粺璁�',
+  `times15` int NULL DEFAULT NULL COMMENT '15鍙峰厖鍊兼鏁�',
+  `amount16` float(10, 2) NULL DEFAULT NULL COMMENT '16鍙峰厖鍊肩粺璁�',
+  `gift16` float(10, 2) NULL DEFAULT NULL COMMENT '16鍙疯禒閫佺粺璁�',
+  `times16` int NULL DEFAULT NULL COMMENT '16鍙峰厖鍊兼鏁�',
+  `amount17` float(10, 2) NULL DEFAULT NULL COMMENT '17鍙峰厖鍊肩粺璁�',
+  `gift17` float(10, 2) NULL DEFAULT NULL COMMENT '17鍙疯禒閫佺粺璁�',
+  `times17` int NULL DEFAULT NULL COMMENT '17鍙峰厖鍊兼鏁�',
+  `amount18` float(10, 2) NULL DEFAULT NULL COMMENT '18鍙峰厖鍊肩粺璁�',
+  `gift18` float(10, 2) NULL DEFAULT NULL COMMENT '18鍙疯禒閫佺粺璁�',
+  `times18` int NULL DEFAULT NULL COMMENT '18鍙峰厖鍊兼鏁�',
+  `amount19` float(10, 2) NULL DEFAULT NULL COMMENT '19鍙峰厖鍊肩粺璁�',
+  `gift19` float(10, 2) NULL DEFAULT NULL COMMENT '19鍙疯禒閫佺粺璁�',
+  `times19` int NULL DEFAULT NULL COMMENT '19鍙峰厖鍊兼鏁�',
+  `amount20` float(10, 2) NULL DEFAULT NULL COMMENT '20鍙峰厖鍊肩粺璁�',
+  `gift20` float(10, 2) NULL DEFAULT NULL COMMENT '20鍙疯禒閫佺粺璁�',
+  `times20` int NULL DEFAULT NULL COMMENT '20鍙峰厖鍊兼鏁�',
+  `amount21` float(10, 2) NULL DEFAULT NULL COMMENT '21鍙峰厖鍊肩粺璁�',
+  `gift21` float(10, 2) NULL DEFAULT NULL COMMENT '21鍙疯禒閫佺粺璁�',
+  `times21` int NULL DEFAULT NULL COMMENT '21鍙峰厖鍊兼鏁�',
+  `amount22` float(10, 2) NULL DEFAULT NULL COMMENT '22鍙峰厖鍊肩粺璁�',
+  `gift22` float(10, 2) NULL DEFAULT NULL COMMENT '22鍙疯禒閫佺粺璁�',
+  `times22` int NULL DEFAULT NULL COMMENT '22鍙峰厖鍊兼鏁�',
+  `amount23` float(10, 2) NULL DEFAULT NULL COMMENT '23鍙峰厖鍊肩粺璁�',
+  `gift23` float(10, 2) NULL DEFAULT NULL COMMENT '23鍙疯禒閫佺粺璁�',
+  `times23` int NULL DEFAULT NULL COMMENT '23鍙峰厖鍊兼鏁�',
+  `amount24` float(10, 2) NULL DEFAULT NULL COMMENT '24鍙峰厖鍊肩粺璁�',
+  `gift24` float(10, 2) NULL DEFAULT NULL COMMENT '24鍙疯禒閫佺粺璁�',
+  `times24` int NULL DEFAULT NULL COMMENT '24鍙峰厖鍊兼鏁�',
+  `amount25` float(10, 2) NULL DEFAULT NULL COMMENT '25鍙峰厖鍊肩粺璁�',
+  `gift25` float(10, 2) NULL DEFAULT NULL COMMENT '25鍙疯禒閫佺粺璁�',
+  `times25` int NULL DEFAULT NULL COMMENT '25鍙峰厖鍊兼鏁�',
+  `amount26` float(10, 2) NULL DEFAULT NULL COMMENT '26鍙峰厖鍊肩粺璁�',
+  `gift26` float(10, 2) NULL DEFAULT NULL COMMENT '26鍙疯禒閫佺粺璁�',
+  `times26` int NULL DEFAULT NULL COMMENT '26鍙峰厖鍊兼鏁�',
+  `amount27` float(10, 2) NULL DEFAULT NULL COMMENT '27鍙峰厖鍊肩粺璁�',
+  `gift27` float(10, 2) NULL DEFAULT NULL COMMENT '27鍙疯禒閫佺粺璁�',
+  `times27` int NULL DEFAULT NULL COMMENT '27鍙峰厖鍊兼鏁�',
+  `amount28` float(10, 2) NULL DEFAULT NULL COMMENT '28鍙峰厖鍊肩粺璁�',
+  `gift28` float(10, 2) NULL DEFAULT NULL COMMENT '28鍙疯禒閫佺粺璁�',
+  `times28` int NULL DEFAULT NULL COMMENT '28鍙峰厖鍊兼鏁�',
+  `amount29` float(10, 2) NULL DEFAULT NULL COMMENT '29鍙峰厖鍊肩粺璁�',
+  `gift29` float(10, 2) NULL DEFAULT NULL COMMENT '29鍙疯禒閫佺粺璁�',
+  `times29` int NULL DEFAULT NULL COMMENT '29鍙峰厖鍊兼鏁�',
+  `amount30` float(10, 2) NULL DEFAULT NULL COMMENT '30鍙峰厖鍊肩粺璁�',
+  `gift30` float(10, 2) NULL DEFAULT NULL COMMENT '30鍙疯禒閫佺粺璁�',
+  `times30` int NULL DEFAULT NULL COMMENT '30鍙峰厖鍊兼鏁�',
+  `amount31` float(10, 2) NULL DEFAULT NULL COMMENT '31鍙峰厖鍊肩粺璁�',
+  `gift31` float(10, 2) NULL DEFAULT NULL COMMENT '31鍙疯禒閫佺粺璁�',
+  `times31` int NULL DEFAULT NULL COMMENT '31鍙峰厖鍊兼鏁�',
+  PRIMARY KEY (`id`) USING BTREE,
+  UNIQUE INDEX `st_recharge_ic_day_id_uindex`(`id` ASC) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = 'IC鍗″厖鍊兼棩缁熻' ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Table structure for st_recharge_ic_month
+-- ----------------------------
+DROP TABLE IF EXISTS `st_recharge_ic_month`;
+CREATE TABLE `st_recharge_ic_month`  (
+  `id` bigint NOT NULL COMMENT '涓婚敭',
+  `client_id` bigint NULL DEFAULT NULL COMMENT '澶栭敭锛屾寚鍚戝啘鎴�',
+  `card_id` bigint NULL DEFAULT NULL COMMENT '澶栭敭锛屾寚鍚戝啘鎴稩C鍗�',
+  `year` int NULL DEFAULT NULL COMMENT '骞村害',
+  `amount1` float(10, 2) NULL DEFAULT NULL COMMENT '1鏈堝厖鍊肩粺璁�',
+  `gift1` float(10, 2) NULL DEFAULT NULL COMMENT '1鏈堣禒閫佺粺璁�',
+  `times1` int NULL DEFAULT NULL COMMENT '1鏈堝厖鍊兼鏁�',
+  `amount2` float(10, 2) NULL DEFAULT NULL COMMENT '2鏈堝厖鍊肩粺璁�',
+  `gift2` float(10, 2) NULL DEFAULT NULL COMMENT '2鏈堣禒閫佺粺璁�',
+  `times2` int NULL DEFAULT NULL COMMENT '2鏈堝厖鍊兼鏁�',
+  `amount3` float(10, 2) NULL DEFAULT NULL COMMENT '3鏈堝厖鍊肩粺璁�',
+  `gift3` float(10, 2) NULL DEFAULT NULL COMMENT '3鏈堣禒閫佺粺璁�',
+  `times3` int NULL DEFAULT NULL COMMENT '3鏈堝厖鍊兼鏁�',
+  `amount4` float(10, 2) NULL DEFAULT NULL COMMENT '4鏈堝厖鍊肩粺璁�',
+  `gift4` float(10, 2) NULL DEFAULT NULL COMMENT '4鏈堣禒閫佺粺璁�',
+  `times4` int NULL DEFAULT NULL COMMENT '4鏈堝厖鍊兼鏁�',
+  `amount5` float(10, 2) NULL DEFAULT NULL COMMENT '5鏈堝厖鍊肩粺璁�',
+  `gift5` float(10, 2) NULL DEFAULT NULL COMMENT '5鏈堣禒閫佺粺璁�',
+  `times5` int NULL DEFAULT NULL COMMENT '5鏈堝厖鍊兼鏁�',
+  `amount6` float(10, 2) NULL DEFAULT NULL COMMENT '6鏈堝厖鍊肩粺璁�',
+  `gift6` float(10, 2) NULL DEFAULT NULL COMMENT '6鏈堣禒閫佺粺璁�',
+  `times6` int NULL DEFAULT NULL COMMENT '6鏈堝厖鍊兼鏁�',
+  `amount7` float(10, 2) NULL DEFAULT NULL COMMENT '7鏈堝厖鍊肩粺璁�',
+  `gift7` float(10, 2) NULL DEFAULT NULL COMMENT '7鏈堣禒閫佺粺璁�',
+  `times7` int NULL DEFAULT NULL COMMENT '7鏈堝厖鍊兼鏁�',
+  `amount8` float(10, 2) NULL DEFAULT NULL COMMENT '8鏈堝厖鍊肩粺璁�',
+  `gift8` float(10, 2) NULL DEFAULT NULL COMMENT '8鏈堣禒閫佺粺璁�',
+  `times8` int NULL DEFAULT NULL COMMENT '8鏈堝厖鍊兼鏁�',
+  `amount9` float(10, 2) NULL DEFAULT NULL COMMENT '9鏈堝厖鍊肩粺璁�',
+  `gift9` float(10, 2) NULL DEFAULT NULL COMMENT '9鏈堣禒閫佺粺璁�',
+  `times9` int NULL DEFAULT NULL COMMENT '9鏈堝厖鍊兼鏁�',
+  `amount10` float(10, 2) NULL DEFAULT NULL COMMENT '10鏈堝厖鍊肩粺璁�',
+  `gift10` float(10, 2) NULL DEFAULT NULL COMMENT '10鏈堣禒閫佺粺璁�',
+  `times10` int NULL DEFAULT NULL COMMENT '10鏈堝厖鍊兼鏁�',
+  `amount11` float(10, 2) NULL DEFAULT NULL COMMENT '11鏈堝厖鍊肩粺璁�',
+  `gift11` float(10, 2) NULL DEFAULT NULL COMMENT '11鏈堣禒閫佺粺璁�',
+  `times11` int NULL DEFAULT NULL COMMENT '11鏈堝厖鍊兼鏁�',
+  `amount12` float(10, 2) NULL DEFAULT NULL COMMENT '12鏈堝厖鍊肩粺璁�',
+  `gift12` float(10, 2) NULL DEFAULT NULL COMMENT '12鏈堣禒閫佺粺璁�',
+  `times12` int NULL DEFAULT NULL COMMENT '12鏈堝厖鍊兼鏁�',
+  PRIMARY KEY (`id`) USING BTREE,
+  UNIQUE INDEX `st_recharge_ic_month_id_uindex`(`id` ASC) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = 'IC鍗″厖鍊兼湀缁熻' ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Table structure for st_recharge_ic_year
+-- ----------------------------
+DROP TABLE IF EXISTS `st_recharge_ic_year`;
+CREATE TABLE `st_recharge_ic_year`  (
+  `id` bigint NOT NULL COMMENT '涓婚敭',
+  `client_id` bigint NULL DEFAULT NULL COMMENT '澶栭敭锛屾寚鍚戝啘鎴�',
+  `card_id` bigint NULL DEFAULT NULL COMMENT '澶栭敭锛屾寚鍚戝啘鎴稩C鍗�',
+  `year` int NULL DEFAULT NULL COMMENT '骞村害',
+  `amount` float(10, 2) NULL DEFAULT NULL COMMENT '骞村厖鍊肩粺璁�',
+  `gift` float(10, 2) NULL DEFAULT NULL COMMENT '骞磋禒閫佺粺璁�',
+  `times` int NULL DEFAULT NULL COMMENT '骞村厖鍊兼鏁�',
+  PRIMARY KEY (`id`) USING BTREE,
+  UNIQUE INDEX `st_recharge_ic_year_id_uindex`(`id` ASC) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = 'IC鍗″厖鍊煎勾缁熻' ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Table structure for ug_rtu_controller
+-- ----------------------------
+DROP TABLE IF EXISTS `ug_rtu_controller`;
+CREATE TABLE `ug_rtu_controller`  (
+  `id` bigint NOT NULL COMMENT '涓婚敭',
+  `task_id` bigint NULL DEFAULT NULL COMMENT '澶栭敭锛屾寚鍚戝崌绾т换鍔�',
+  `controller_id` bigint NULL DEFAULT NULL COMMENT '澶栭敭锛屾寚鍚戞帶鍒跺櫒',
+  `rtu_addr` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '鎺у埗鍣ㄥ湴鍧�',
+  `is_over` tinyint NULL DEFAULT NULL COMMENT '鏄惁鍗囩骇瀹屾垚(1鏄�0鍚�)',
+  `ug_state` int NULL DEFAULT NULL COMMENT '鍗囩骇鐘舵��',
+  `over_dt` timestamp NULL DEFAULT NULL COMMENT '鍗囩骇瀹屾垚鏃堕棿',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = 'RTU杩滅▼鍗囩骇鎵�鍏宠仈鐨勬祴鎺т竴浣撻榾' ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Table structure for ug_rtu_program
+-- ----------------------------
+DROP TABLE IF EXISTS `ug_rtu_program`;
+CREATE TABLE `ug_rtu_program`  (
+  `id` bigint NOT NULL COMMENT '涓婚敭',
+  `hex_file_name` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '鏂囦欢鍚�',
+  `store_ram_addr` varchar(8) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '鍗囩骇绋嬪簭瀛樻斁鍦板潃(4瀛楄妭锛�8浣嶅崄鍏繘鍒跺瓧绗�)',
+  `start_ram_addr` varchar(8) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '绋嬪簭瑕嗙洊瓒呭鍦板潃锛�4瀛楄妭锛�8浣嶅崄鍏繘鍒跺瓧绗︼級',
+  `program_calculate_bytes` int NULL DEFAULT NULL COMMENT '鍗囩骇绋嬪簭璁$畻瀛楄妭鏁�',
+  `program_crc16` int NULL DEFAULT NULL COMMENT '鍗囩骇绋嬪簭CRC16鏍¢獙鐮�',
+  `program_bytes` longblob NULL COMMENT '鍗囩骇绋嬪簭鍐呭锛堣В鏋愬悗绋嬪簭鏈夋晥鍐呭瀛楄妭鏁扮粍锛�',
+  `file_bytes` longblob NULL COMMENT '鍗囩骇绋嬪簭鏂囦欢鍐呭锛堣В鏋愬墠鐨勭▼搴忔枃浠跺唴瀹瑰瓧鑺傛暟缁勶級',
+  `remark` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `dt` timestamp NULL DEFAULT NULL COMMENT '涓婁紶鏃堕棿',
+  `deleted` tinyint NULL DEFAULT NULL COMMENT '鍒犻櫎鏍囪瘑',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = 'RTU杩滅▼鍗囩骇绋嬪簭' ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Table structure for ug_rtu_task
+-- ----------------------------
+DROP TABLE IF EXISTS `ug_rtu_task`;
+CREATE TABLE `ug_rtu_task`  (
+  `id` bigint NOT NULL COMMENT '涓婚敭',
+  `program_id` bigint NULL DEFAULT NULL COMMENT '澶栭敭锛屾寚鍚戝崌绾х▼搴�',
+  `creator` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '鍒涘缓浜�',
+  `remark` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '澶囨敞',
+  `dt` timestamp NULL DEFAULT NULL COMMENT '鍒涘缓鏃堕棿',
+  `is_execute` tinyint NULL DEFAULT NULL COMMENT '鏄惁鎵ц',
+  `is_over` tinyint NULL DEFAULT NULL COMMENT '鏄惁缁撴潫锛�1鏄紝0鍚︼級',
+  `deleted` tinyint NULL DEFAULT NULL COMMENT '鍒犻櫎鏍囪瘑',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = 'RTU杩滅▼鍗囩骇浠诲姟' ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Table structure for web_file
+-- ----------------------------
+DROP TABLE IF EXISTS `web_file`;
+CREATE TABLE `web_file`  (
+  `id` bigint NOT NULL COMMENT '涓婚敭',
+  `org_name` varchar(100) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '鏂囦欢鍘熷悕绉�',
+  `ext_name` varchar(10) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '鎵╁睍鍚�',
+  `new_name` varchar(30) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '涓婁紶鏂囦欢鍚庣郴缁熻嚜鍔ㄧ粰鏂囦欢璧嬬殑鏂板悕绉�',
+  `hash` int NULL DEFAULT NULL COMMENT '鏂囦欢hash鍊�',
+  `file_path` varchar(100) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '鏂囦欢鍦ㄦ湇鍔$瀛樺偍鐨勭浉瀵硅矾寰�',
+  `dt` timestamp NULL DEFAULT NULL COMMENT '鏂囦欢涓婅浇鏃ユ湡',
+  PRIMARY KEY (`id`) USING BTREE,
+  UNIQUE INDEX `oth_file_id_uindex`(`id` ASC) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb3 COLLATE = utf8mb3_general_ci COMMENT = '涓婅浇鐨勬枃浠朵俊鎭�' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- View structure for v_operate
+-- ----------------------------
+DROP VIEW IF EXISTS `v_operate`;
+CREATE ALGORITHM = UNDEFINED SQL SECURITY DEFINER VIEW `v_operate` AS select `act`.`id` AS `orderNumber`,`cli`.`villageId` AS `villageId`,`cli`.`districtTitle` AS `districtTitle`,`cli`.`clientNum` AS `clientNum`,`cli`.`name` AS `name`,`card`.`cardNum` AS `cardNum`,`cli`.`idCard` AS `idCard`,`cli`.`phone` AS `phone`,0 AS `money`,0 AS `gift`,`act`.`cardCost` AS `cardCost`,0 AS `afterRecharge`,`act`.`paymentId` AS `paymentId`,(select `se_payment_method`.`name` from `se_payment_method` where (`se_payment_method`.`id` = `act`.`paymentId`)) AS `paymentMethod`,'寮�鍗�' AS `operateType`,`act`.`operateDt` AS `operateDt`,`user`.`name` AS `operatorName` from (((`se_active_card` `act` join `se_client` `cli` on((`act`.`clientId` = `cli`.`id`))) join `se_client_card` `card` on((`act`.`cardId` = `card`.`id`))) join `ba_user` `user` on((`act`.`operator` = `user`.`id`))) union all select `rec`.`id` AS `orderNumber`,`cli`.`villageId` AS `villageId`,`cli`.`districtTitle` AS `districtTitle`,`cli`.`clientNum` AS `clientNum`,`cli`.`name` AS `name`,`card`.`cardNum` AS `cardNum`,`cli`.`idCard` AS `idCard`,`cli`.`phone` AS `phone`,`rec`.`amount` AS `money`,`rec`.`gift` AS `gift`,0 AS `cardCost`,`rec`.`afterRecharge` AS `afterRecharge`,`rec`.`paymentId` AS `paymentId`,(select `se_payment_method`.`name` from `se_payment_method` where (`se_payment_method`.`id` = `rec`.`paymentId`)) AS `paymentMethod`,'鍏呭��' AS `operateType`,`rec`.`operateDt` AS `operateDt`,`user`.`name` AS `operatorName` from (((`se_recharge_history` `rec` join `se_client` `cli` on((`rec`.`clientId` = `cli`.`id`))) join `se_client_card` `card` on((`rec`.`cardId` = `card`.`id`))) join `ba_user` `user` on((`rec`.`operator` = `user`.`id`))) union all select `can`.`id` AS `orderNumber`,`cli`.`villageId` AS `villageId`,`cli`.`districtTitle` AS `districtTitle`,`cli`.`clientNum` AS `clientNum`,`cli`.`name` AS `name`,`card`.`cardNum` AS `cardNum`,`cli`.`idCard` AS `idCard`,`cli`.`phone` AS `phone`,-(`can`.`refund`) AS `money`,0 AS `gift`,0 AS `cardCost`,0 AS `afterRecharge`,1 AS `paymentId`,(case when (`can`.`refundType` = 1) then '鐜伴噾' end) AS `paymentMethod`,'娉ㄩ攢' AS `operateType`,`can`.`operateDt` AS `operateDt`,`user`.`name` AS `operatorName` from (((`se_cancel` `can` join `se_client` `cli` on((`can`.`clientId` = `cli`.`id`))) join `se_client_card` `card` on((`can`.`cardId` = `card`.`id`))) join `ba_user` `user` on((`can`.`operator` = `user`.`id`)));
+
+-- ----------------------------
+-- View structure for v_trade_details
+-- ----------------------------
+DROP VIEW IF EXISTS `v_trade_details`;
+CREATE ALGORITHM = UNDEFINED SQL SECURITY DEFINER VIEW `v_trade_details` AS select `ope`.`id` AS `orderNumber`,`cli`.`name` AS `clientName`,`card`.`cardNum` AS `cardNum`,`cli`.`idCard` AS `idCard`,`cli`.`clientNum` AS `clientNum`,`cli`.`phone` AS `phone`,(case `ope`.`operate_type` when 1 then '寮�鍗�' when 2 then '鍏呭��' when 3 then '閿�鍗�' when 5 then '琛ユ墸' when 10 then '杩旇繕' end) AS `operateType`,(ifnull(`ope`.`trade_amount`,0.00) + ifnull(`ope`.`card_cost`,0.00)) AS `tradeAmount`,ifnull(`ope`.`trade_amount`,0.00) AS `waterCost`,ifnull(`ope`.`card_cost`,0.00) AS `cardCost`,ifnull(`ope`.`gift`,0.00) AS `gift`,ifnull(`ope`.`refund_amount`,0.00) AS `refundAmount`,`card`.`money` AS `money`,`pay`.`name` AS `paymentName`,`ope`.`operate_dt` AS `tradeTime`,`us`.`id` AS `cashierId`,`us`.`name` AS `cashierName`,(case `card`.`state` when 1 then '姝e父' when 2 then '宸叉敞閿�' when 3 then '宸叉寕澶�' end) AS `cardState`,`cli`.`districtTitle` AS `districtTitle`,`cli`.`villageId` AS `villageId` from ((((`se_card_operate` `ope` left join `se_client` `cli` on((`ope`.`client_id` = `cli`.`id`))) left join `se_client_card` `card` on((`card`.`id` = `ope`.`card_id`))) left join `se_payment_method` `pay` on((`ope`.`payment_id` = `pay`.`id`))) left join `ba_user` `us` on((`ope`.`operator` = `us`.`id`))) where ((`ope`.`operate_type` in (1,2,3,5,10)) and (`ope`.`operate_valid` = 2));
+
+-- ----------------------------
+-- View structure for v_trade_summary
+-- ----------------------------
+DROP VIEW IF EXISTS `v_trade_summary`;
+CREATE ALGORITHM = UNDEFINED SQL SECURITY DEFINER VIEW `v_trade_summary` AS select (case `ope`.`operate_type` when 1 then '寮�鍗�' when 2 then '鍏呭��' when 3 then '閿�鍗�' when 5 then '琛ユ墸' end) AS `operateType`,cast(`ope`.`operate_dt` as date) AS `tradeDate`,count(0) AS `count`,(ifnull(sum(`ope`.`trade_amount`),0) + ifnull(sum(`ope`.`card_cost`),0)) AS `received`,ifnull(sum(`ope`.`gift`),0) AS `gift`,ifnull(sum(`ope`.`refund_amount`),0) AS `refundAmount`,cast(`us`.`id` as char charset utf8mb4) AS `cashierId` from ((`se_card_operate` `ope` join `se_payment_method` `pay` on((`ope`.`payment_id` = `pay`.`id`))) join `ba_user` `us` on((`ope`.`operator` = `us`.`id`))) where (`ope`.`operate_type` in (1,2,3,5)) group by `ope`.`operate_type`,cast(`ope`.`operate_dt` as date),`us`.`id` union all select '鍏呭��' AS `operateType`,cast(`se_wallet_recharge`.`recharge_time` as date) AS `tradeDate`,count(0) AS `count`,ifnull(sum(`se_wallet_recharge`.`amount`),0) AS `received`,0 AS `gift`,0 AS `refundAmount`,cast(1000000 as char charset utf8mb4) AS `cashierId` from `se_wallet_recharge` group by cast(`se_wallet_recharge`.`recharge_time` as date) union all select '閿�鍗�' AS `operateType`,cast(`se_refund`.`audit_time` as date) AS `tradeDate`,count(0) AS `count`,ifnull(-(sum(`se_refund`.`refund_amount`)),0) AS `received`,0 AS `gift`,0 AS `refundAmount`,cast(1000000 as char charset utf8mb4) AS `cashierId` from `se_refund` where (`se_refund`.`refund_status` = 2) group by cast(`se_refund`.`audit_time` as date);
+
+-- ----------------------------
+-- View structure for v_transactionstatistics
+-- ----------------------------
+DROP VIEW IF EXISTS `v_transactionstatistics`;
+CREATE ALGORITHM = UNDEFINED SQL SECURITY DEFINER VIEW `v_transactionstatistics` AS select (case `ope`.`operate_type` when 1 then '寮�鍗�' when 2 then '鍏呭��' when 3 then '閿�鍗�' when 4 then '琛ュ崱' end) AS `operateType`,cast(`ope`.`operate_dt` as date) AS `tradeDate`,count(0) AS `count`,(ifnull(sum(`ope`.`trade_amount`),0) + ifnull(sum(`ope`.`card_cost`),0)) AS `received`,ifnull(sum(`ope`.`gift`),0) AS `gift` from (`se_card_operate` `ope` join `se_payment_method` `pay` on((`ope`.`payment_id` = `pay`.`id`))) where (`ope`.`operate_type` in (1,2,3,4)) group by `ope`.`operate_type`,cast(`ope`.`operate_dt` as date);
+
+SET FOREIGN_KEY_CHECKS = 1;
diff --git "a/pipIrr-platform/\346\226\207\346\241\243/\346\205\247\345\233\276\346\231\213\345\256\201\347\263\273\347\273\237.txt" "b/pipIrr-platform/\346\226\207\346\241\243/\346\205\247\345\233\276\346\231\213\345\256\201\347\263\273\347\273\237.txt"
new file mode 100644
index 0000000..4576d5a
--- /dev/null
+++ "b/pipIrr-platform/\346\226\207\346\241\243/\346\205\247\345\233\276\346\231\213\345\256\201\347\263\273\347\273\237.txt"
@@ -0,0 +1,3 @@
+http://jngq.dyzhsw.com/saas
+璐︽埛:  zhubaomin
+瀵嗙爜:  Zbm@123321
\ No newline at end of file

--
Gitblit v1.8.0