bihuisong 3 месяцев назад
Сommit
1cd71a6906
78 измененных файлов с 2395 добавлено и 0 удалено
  1. 0 0
      .idea/.gitignore
  2. 13 0
      .idea/compiler.xml
  3. 6 0
      .idea/encodings.xml
  4. 30 0
      .idea/jarRepositories.xml
  5. 12 0
      .idea/misc.xml
  6. 124 0
      .idea/uiDesigner.xml
  7. 6 0
      .idea/vcs.xml
  8. 221 0
      .idea/workspace.xml
  9. 150 0
      pom.xml
  10. 39 0
      src/main/java/com/sooka/sponest/monitor/SookaMonitorPollingPositionMsgApplication.java
  11. 11 0
      src/main/java/com/sooka/sponest/monitor/base/controller/BaseController.java
  12. 52 0
      src/main/java/com/sooka/sponest/monitor/base/domain/BaseBusinessEntity.java
  13. 13 0
      src/main/java/com/sooka/sponest/monitor/base/domain/DataTestVO.java
  14. 73 0
      src/main/java/com/sooka/sponest/monitor/base/service/impl/BaseService.java
  15. 19 0
      src/main/java/com/sooka/sponest/monitor/base/util/database/DynamicDataSource.java
  16. 41 0
      src/main/java/com/sooka/sponest/monitor/base/util/database/DynamicDataSourceAspect.java
  17. 41 0
      src/main/java/com/sooka/sponest/monitor/base/util/database/DynamicDataSourceSwitcher.java
  18. 4 0
      src/main/java/com/sooka/sponest/monitor/base/util/database/GlobalTransactionalRabbitMQ.java
  19. 136 0
      src/main/java/com/sooka/sponest/monitor/base/util/database/MultipleDataSourceConfig.java
  20. 15 0
      src/main/java/com/sooka/sponest/monitor/base/util/database/MyDataSource.java
  21. 39 0
      src/main/java/com/sooka/sponest/monitor/camera/mapper/CentermonitorTCameraMapper.java
  22. 154 0
      src/main/java/com/sooka/sponest/monitor/dahua/controller/EquipmentStatusTaskController.java
  23. 67 0
      src/main/java/com/sooka/sponest/monitor/dahua/login/Login.java
  24. 36 0
      src/main/java/com/sooka/sponest/monitor/dahua/login/bean/LoginFirst.java
  25. 102 0
      src/main/java/com/sooka/sponest/monitor/dahua/login/bean/LoginSecond.java
  26. 96 0
      src/main/java/com/sooka/sponest/monitor/dahua/utils/DSSUtils.java
  27. 26 0
      src/main/java/com/sooka/sponest/monitor/dahua/utils/HttpEnum.java
  28. 195 0
      src/main/java/com/sooka/sponest/monitor/dahua/utils/HttpTestUtils.java
  29. 25 0
      src/main/java/com/sooka/sponest/monitor/dahua/utils/ImgUtils.java
  30. 70 0
      src/main/java/com/sooka/sponest/monitor/dahua/utils/RestRedirectStrategy.java
  31. 22 0
      src/main/java/com/sooka/sponest/monitor/remoteapi/EnableSookaFeignClients.java
  32. 4 0
      src/main/java/com/sooka/sponest/monitor/remoteapi/RemoveApiBaseService.java
  33. 34 0
      src/main/java/com/sooka/sponest/monitor/remoteapi/fallback/lawenforcement/RemoteLawenforcementBaseServiceFallbackFactory.java
  34. 51 0
      src/main/java/com/sooka/sponest/monitor/remoteapi/service/ModulesServiceNameContants.java
  35. 24 0
      src/main/java/com/sooka/sponest/monitor/remoteapi/service/lawenforcement/RemoteLawenforcementBaseService.java
  36. 78 0
      src/main/java/com/sooka/sponest/monitor/util/BeanUtil.java
  37. 9 0
      src/main/resources/banner.txt
  38. 26 0
      src/main/resources/bootstrap.yml
  39. 45 0
      src/main/resources/mapper/monitor/camera/CentermonitorTCameraMapper.xml
  40. BIN
      target/center-monitor-quartz.jar
  41. BIN
      target/center-monitor-quartz.jar.original
  42. 9 0
      target/classes/banner.txt
  43. 26 0
      target/classes/bootstrap.yml
  44. BIN
      target/classes/com/sooka/sponest/monitor/SookaMonitorPollingPositionMsgApplication.class
  45. BIN
      target/classes/com/sooka/sponest/monitor/base/controller/BaseController.class
  46. BIN
      target/classes/com/sooka/sponest/monitor/base/domain/BaseBusinessEntity.class
  47. BIN
      target/classes/com/sooka/sponest/monitor/base/domain/DataTestVO.class
  48. BIN
      target/classes/com/sooka/sponest/monitor/base/service/impl/BaseService.class
  49. BIN
      target/classes/com/sooka/sponest/monitor/base/util/database/DynamicDataSource.class
  50. BIN
      target/classes/com/sooka/sponest/monitor/base/util/database/DynamicDataSourceAspect.class
  51. BIN
      target/classes/com/sooka/sponest/monitor/base/util/database/DynamicDataSourceSwitcher.class
  52. BIN
      target/classes/com/sooka/sponest/monitor/base/util/database/GlobalTransactionalRabbitMQ.class
  53. BIN
      target/classes/com/sooka/sponest/monitor/base/util/database/MultipleDataSourceConfig.class
  54. BIN
      target/classes/com/sooka/sponest/monitor/base/util/database/MyDataSource.class
  55. BIN
      target/classes/com/sooka/sponest/monitor/camera/mapper/CentermonitorTCameraMapper.class
  56. BIN
      target/classes/com/sooka/sponest/monitor/dahua/controller/EquipmentStatusTaskController.class
  57. BIN
      target/classes/com/sooka/sponest/monitor/dahua/login/Login.class
  58. BIN
      target/classes/com/sooka/sponest/monitor/dahua/login/bean/LoginFirst.class
  59. BIN
      target/classes/com/sooka/sponest/monitor/dahua/login/bean/LoginSecond.class
  60. BIN
      target/classes/com/sooka/sponest/monitor/dahua/utils/DSSUtils.class
  61. BIN
      target/classes/com/sooka/sponest/monitor/dahua/utils/HttpEnum.class
  62. BIN
      target/classes/com/sooka/sponest/monitor/dahua/utils/HttpTestUtils$1.class
  63. BIN
      target/classes/com/sooka/sponest/monitor/dahua/utils/HttpTestUtils$2.class
  64. BIN
      target/classes/com/sooka/sponest/monitor/dahua/utils/HttpTestUtils.class
  65. BIN
      target/classes/com/sooka/sponest/monitor/dahua/utils/ImgUtils.class
  66. BIN
      target/classes/com/sooka/sponest/monitor/dahua/utils/RestRedirectStrategy.class
  67. BIN
      target/classes/com/sooka/sponest/monitor/dahua/utils/bean.class
  68. BIN
      target/classes/com/sooka/sponest/monitor/remoteapi/EnableSookaFeignClients.class
  69. BIN
      target/classes/com/sooka/sponest/monitor/remoteapi/RemoveApiBaseService.class
  70. BIN
      target/classes/com/sooka/sponest/monitor/remoteapi/fallback/lawenforcement/RemoteLawenforcementBaseServiceFallbackFactory$1.class
  71. BIN
      target/classes/com/sooka/sponest/monitor/remoteapi/fallback/lawenforcement/RemoteLawenforcementBaseServiceFallbackFactory.class
  72. BIN
      target/classes/com/sooka/sponest/monitor/remoteapi/service/ModulesServiceNameContants.class
  73. BIN
      target/classes/com/sooka/sponest/monitor/remoteapi/service/lawenforcement/RemoteLawenforcementBaseService.class
  74. BIN
      target/classes/com/sooka/sponest/monitor/util/BeanUtil.class
  75. 45 0
      target/classes/mapper/monitor/camera/CentermonitorTCameraMapper.xml
  76. 5 0
      target/maven-archiver/pom.properties
  77. 104 0
      target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
  78. 97 0
      target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst

+ 0 - 0
.idea/.gitignore


+ 13 - 0
.idea/compiler.xml

@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="CompilerConfiguration">
+    <annotationProcessing>
+      <profile name="Maven default annotation processors profile" enabled="true">
+        <sourceOutputDir name="target/generated-sources/annotations" />
+        <sourceTestOutputDir name="target/generated-test-sources/test-annotations" />
+        <outputRelativeToContentRoot value="true" />
+        <module name="center-monitor-pollingPositionMsg" />
+      </profile>
+    </annotationProcessing>
+  </component>
+</project>

+ 6 - 0
.idea/encodings.xml

@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="Encoding">
+    <file url="file://$PROJECT_DIR$/src/main/java" charset="UTF-8" />
+  </component>
+</project>

+ 30 - 0
.idea/jarRepositories.xml

@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="RemoteRepositoriesConfiguration">
+    <remote-repository>
+      <option name="id" value="central" />
+      <option name="name" value="Maven Central repository" />
+      <option name="url" value="https://repo1.maven.org/maven2" />
+    </remote-repository>
+    <remote-repository>
+      <option name="id" value="maven-snapshots" />
+      <option name="name" value="maven-snapshots" />
+      <option name="url" value="http://116.142.80.13:43000/repository/maven-public" />
+    </remote-repository>
+    <remote-repository>
+      <option name="id" value="jboss.community" />
+      <option name="name" value="JBoss Community repository" />
+      <option name="url" value="https://repository.jboss.org/nexus/content/repositories/public/" />
+    </remote-repository>
+    <remote-repository>
+      <option name="id" value="central" />
+      <option name="name" value="Central Repository" />
+      <option name="url" value="http://116.142.80.13:43000/repository/maven-public" />
+    </remote-repository>
+    <remote-repository>
+      <option name="id" value="maven-releases" />
+      <option name="name" value="maven-releases" />
+      <option name="url" value="http://116.142.80.13:43000/repository/maven-public" />
+    </remote-repository>
+  </component>
+</project>

+ 12 - 0
.idea/misc.xml

@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="ExternalStorageConfigurationManager" enabled="true" />
+  <component name="MavenProjectsManager">
+    <option name="originalFiles">
+      <list>
+        <option value="$PROJECT_DIR$/pom.xml" />
+      </list>
+    </option>
+  </component>
+  <component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" default="true" project-jdk-name="1.8" project-jdk-type="JavaSDK" />
+</project>

+ 124 - 0
.idea/uiDesigner.xml

@@ -0,0 +1,124 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="Palette2">
+    <group name="Swing">
+      <item class="com.intellij.uiDesigner.HSpacer" tooltip-text="Horizontal Spacer" icon="/com/intellij/uiDesigner/icons/hspacer.svg" removable="false" auto-create-binding="false" can-attach-label="false">
+        <default-constraints vsize-policy="1" hsize-policy="6" anchor="0" fill="1" />
+      </item>
+      <item class="com.intellij.uiDesigner.VSpacer" tooltip-text="Vertical Spacer" icon="/com/intellij/uiDesigner/icons/vspacer.svg" removable="false" auto-create-binding="false" can-attach-label="false">
+        <default-constraints vsize-policy="6" hsize-policy="1" anchor="0" fill="2" />
+      </item>
+      <item class="javax.swing.JPanel" icon="/com/intellij/uiDesigner/icons/panel.svg" removable="false" auto-create-binding="false" can-attach-label="false">
+        <default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3" />
+      </item>
+      <item class="javax.swing.JScrollPane" icon="/com/intellij/uiDesigner/icons/scrollPane.svg" removable="false" auto-create-binding="false" can-attach-label="true">
+        <default-constraints vsize-policy="7" hsize-policy="7" anchor="0" fill="3" />
+      </item>
+      <item class="javax.swing.JButton" icon="/com/intellij/uiDesigner/icons/button.svg" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="0" hsize-policy="3" anchor="0" fill="1" />
+        <initial-values>
+          <property name="text" value="Button" />
+        </initial-values>
+      </item>
+      <item class="javax.swing.JRadioButton" icon="/com/intellij/uiDesigner/icons/radioButton.svg" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
+        <initial-values>
+          <property name="text" value="RadioButton" />
+        </initial-values>
+      </item>
+      <item class="javax.swing.JCheckBox" icon="/com/intellij/uiDesigner/icons/checkBox.svg" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
+        <initial-values>
+          <property name="text" value="CheckBox" />
+        </initial-values>
+      </item>
+      <item class="javax.swing.JLabel" icon="/com/intellij/uiDesigner/icons/label.svg" removable="false" auto-create-binding="false" can-attach-label="false">
+        <default-constraints vsize-policy="0" hsize-policy="0" anchor="8" fill="0" />
+        <initial-values>
+          <property name="text" value="Label" />
+        </initial-values>
+      </item>
+      <item class="javax.swing.JTextField" icon="/com/intellij/uiDesigner/icons/textField.svg" removable="false" auto-create-binding="true" can-attach-label="true">
+        <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
+          <preferred-size width="150" height="-1" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JPasswordField" icon="/com/intellij/uiDesigner/icons/passwordField.svg" removable="false" auto-create-binding="true" can-attach-label="true">
+        <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
+          <preferred-size width="150" height="-1" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JFormattedTextField" icon="/com/intellij/uiDesigner/icons/formattedTextField.svg" removable="false" auto-create-binding="true" can-attach-label="true">
+        <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
+          <preferred-size width="150" height="-1" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JTextArea" icon="/com/intellij/uiDesigner/icons/textArea.svg" removable="false" auto-create-binding="true" can-attach-label="true">
+        <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
+          <preferred-size width="150" height="50" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JTextPane" icon="/com/intellij/uiDesigner/icons/textPane.svg" removable="false" auto-create-binding="true" can-attach-label="true">
+        <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
+          <preferred-size width="150" height="50" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JEditorPane" icon="/com/intellij/uiDesigner/icons/editorPane.svg" removable="false" auto-create-binding="true" can-attach-label="true">
+        <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
+          <preferred-size width="150" height="50" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JComboBox" icon="/com/intellij/uiDesigner/icons/comboBox.svg" removable="false" auto-create-binding="true" can-attach-label="true">
+        <default-constraints vsize-policy="0" hsize-policy="2" anchor="8" fill="1" />
+      </item>
+      <item class="javax.swing.JTable" icon="/com/intellij/uiDesigner/icons/table.svg" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
+          <preferred-size width="150" height="50" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JList" icon="/com/intellij/uiDesigner/icons/list.svg" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="6" hsize-policy="2" anchor="0" fill="3">
+          <preferred-size width="150" height="50" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JTree" icon="/com/intellij/uiDesigner/icons/tree.svg" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
+          <preferred-size width="150" height="50" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JTabbedPane" icon="/com/intellij/uiDesigner/icons/tabbedPane.svg" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
+          <preferred-size width="200" height="200" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JSplitPane" icon="/com/intellij/uiDesigner/icons/splitPane.svg" removable="false" auto-create-binding="false" can-attach-label="false">
+        <default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
+          <preferred-size width="200" height="200" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JSpinner" icon="/com/intellij/uiDesigner/icons/spinner.svg" removable="false" auto-create-binding="true" can-attach-label="true">
+        <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
+      </item>
+      <item class="javax.swing.JSlider" icon="/com/intellij/uiDesigner/icons/slider.svg" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
+      </item>
+      <item class="javax.swing.JSeparator" icon="/com/intellij/uiDesigner/icons/separator.svg" removable="false" auto-create-binding="false" can-attach-label="false">
+        <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3" />
+      </item>
+      <item class="javax.swing.JProgressBar" icon="/com/intellij/uiDesigner/icons/progressbar.svg" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1" />
+      </item>
+      <item class="javax.swing.JToolBar" icon="/com/intellij/uiDesigner/icons/toolbar.svg" removable="false" auto-create-binding="false" can-attach-label="false">
+        <default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1">
+          <preferred-size width="-1" height="20" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JToolBar$Separator" icon="/com/intellij/uiDesigner/icons/toolbarSeparator.svg" removable="false" auto-create-binding="false" can-attach-label="false">
+        <default-constraints vsize-policy="0" hsize-policy="0" anchor="0" fill="1" />
+      </item>
+      <item class="javax.swing.JScrollBar" icon="/com/intellij/uiDesigner/icons/scrollbar.svg" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="6" hsize-policy="0" anchor="0" fill="2" />
+      </item>
+    </group>
+  </component>
+</project>

+ 6 - 0
.idea/vcs.xml

@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="VcsDirectoryMappings">
+    <mapping directory="" vcs="Git" />
+  </component>
+</project>

+ 221 - 0
.idea/workspace.xml

@@ -0,0 +1,221 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="AutoImportSettings">
+    <option name="autoReloadType" value="SELECTIVE" />
+  </component>
+  <component name="ChangeListManager">
+    <list default="true" id="d37785b1-9312-43af-9c64-e97b10829941" name="更改" comment="修改" />
+    <option name="SHOW_DIALOG" value="false" />
+    <option name="HIGHLIGHT_CONFLICTS" value="true" />
+    <option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
+    <option name="LAST_RESOLUTION" value="IGNORE" />
+  </component>
+  <component name="Git.Settings">
+    <option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
+  </component>
+  <component name="MavenImportPreferences">
+    <option name="generalSettings">
+      <MavenGeneralSettings>
+        <option name="alwaysUpdateSnapshots" value="true" />
+        <option name="customMavenHome" value="E:/apache-maven-3.6.0" />
+        <option name="localRepository" value="E:\apache-maven-3.6.0\sj_maven" />
+        <option name="mavenHomeTypeForPersistence" value="CUSTOM" />
+        <option name="useMavenConfig" value="false" />
+        <option name="userSettingsFile" value="E:\apache-maven-3.6.0\conf\settings.xml" />
+      </MavenGeneralSettings>
+    </option>
+    <option name="importingSettings">
+      <MavenImportingSettings>
+        <option name="jdkForImporter" value="1.8" />
+        <option name="workspaceImportForciblyTurnedOn" value="true" />
+      </MavenImportingSettings>
+    </option>
+  </component>
+  <component name="MavenRunner">
+    <option name="jreName" value="1.8" />
+    <option name="skipTests" value="true" />
+  </component>
+  <component name="ProjectColorInfo">{
+  &quot;associatedIndex&quot;: 3
+}</component>
+  <component name="ProjectId" id="2rmeWJWPrYdOikgOHWY0ZPZln1C" />
+  <component name="ProjectViewState">
+    <option name="showLibraryContents" value="true" />
+  </component>
+  <component name="PropertiesComponent">{
+  &quot;keyToString&quot;: {
+    &quot;Maven.center-monitor-quartz [clean].executor&quot;: &quot;Run&quot;,
+    &quot;Maven.center-monitor-quartz [package].executor&quot;: &quot;Run&quot;,
+    &quot;Maven.center-monitor-quartz [validate].executor&quot;: &quot;Run&quot;,
+    &quot;RequestMappingsPanelOrder0&quot;: &quot;0&quot;,
+    &quot;RequestMappingsPanelOrder1&quot;: &quot;1&quot;,
+    &quot;RequestMappingsPanelWidth0&quot;: &quot;75&quot;,
+    &quot;RequestMappingsPanelWidth1&quot;: &quot;75&quot;,
+    &quot;RunOnceActivity.ShowReadmeOnStart&quot;: &quot;true&quot;,
+    &quot;Spring Boot.SookaMonitorIotApplication.executor&quot;: &quot;Debug&quot;,
+    &quot;Spring Boot.SookaMonitorPollingPositionMsgApplication.executor&quot;: &quot;Debug&quot;,
+    &quot;Spring Boot.SookaMonitorQuartzApplication.executor&quot;: &quot;Debug&quot;,
+    &quot;git-widget-placeholder&quot;: &quot;master&quot;,
+    &quot;kotlin-language-version-configured&quot;: &quot;true&quot;,
+    &quot;last_opened_file_path&quot;: &quot;D:/new_service/center-monitor-pollingPositionMsg&quot;,
+    &quot;node.js.detected.package.eslint&quot;: &quot;true&quot;,
+    &quot;node.js.detected.package.tslint&quot;: &quot;true&quot;,
+    &quot;node.js.selected.package.eslint&quot;: &quot;(autodetect)&quot;,
+    &quot;node.js.selected.package.tslint&quot;: &quot;(autodetect)&quot;,
+    &quot;nodejs_package_manager_path&quot;: &quot;npm&quot;,
+    &quot;settings.editor.selected.configurable&quot;: &quot;preferences.pluginManager&quot;,
+    &quot;vue.rearranger.settings.migration&quot;: &quot;true&quot;,
+    &quot;应用程序.DahuaOperateLogWhiteTask.executor&quot;: &quot;Debug&quot;
+  }
+}</component>
+  <component name="ReactorSettings">
+    <option name="notificationShown" value="true" />
+  </component>
+  <component name="RecentsManager">
+    <key name="CopyFile.RECENT_KEYS">
+      <recent name="D:\work_space\center-monitor-quartz\src\main\resources\mapper\monitor\device" />
+    </key>
+    <key name="CopyClassDialog.RECENTS_KEY">
+      <recent name="com.sooka.sponest.monitor.device.mapper" />
+      <recent name="com.sooka.sponest.monitor.device.service.impl" />
+      <recent name="com.sooka.sponest.monitor.device.service" />
+      <recent name="com.sooka.sponest.monitor.device.domain" />
+    </key>
+  </component>
+  <component name="RunManager">
+    <configuration name="SookaMonitorPollingPositionMsgApplication" type="SpringBootApplicationConfigurationType" factoryName="Spring Boot" nameIsGenerated="true">
+      <module name="center-monitor-pollingPositionMsg" />
+      <option name="SPRING_BOOT_MAIN_CLASS" value="com.sooka.sponest.monitor.SookaMonitorPollingPositionMsgApplication" />
+      <method v="2">
+        <option name="Make" enabled="true" />
+      </method>
+    </configuration>
+  </component>
+  <component name="SharedIndexes">
+    <attachedChunks>
+      <set>
+        <option value="bundled-jdk-9f38398b9061-18abd8497189-intellij.indexing.shared.core-IU-241.14494.240" />
+        <option value="bundled-js-predefined-1d06a55b98c1-74d2a5396914-JavaScript-IU-241.14494.240" />
+      </set>
+    </attachedChunks>
+  </component>
+  <component name="SpellCheckerSettings" RuntimeDictionaries="0" Folders="0" CustomDictionaries="0" DefaultDictionary="应用程序级" UseSingleDictionary="true" transferred="true" />
+  <component name="TaskManager">
+    <task active="true" id="Default" summary="默认任务">
+      <changelist id="d37785b1-9312-43af-9c64-e97b10829941" name="更改" comment="" />
+      <created>1737168707426</created>
+      <option name="number" value="Default" />
+      <option name="presentableId" value="Default" />
+      <updated>1737168707426</updated>
+      <workItem from="1737168708315" duration="6310000" />
+      <workItem from="1737333187032" duration="3000" />
+      <workItem from="1737335872977" duration="100000" />
+      <workItem from="1737340087438" duration="15978000" />
+      <workItem from="1737419302097" duration="8695000" />
+      <workItem from="1737505670761" duration="949000" />
+      <workItem from="1737522697895" duration="2387000" />
+      <workItem from="1737525231578" duration="5560000" />
+      <workItem from="1737592759478" duration="5834000" />
+      <workItem from="1737679854812" duration="5630000" />
+      <workItem from="1738906067807" duration="7695000" />
+      <workItem from="1738975256325" duration="25000" />
+      <workItem from="1739322857859" duration="1792000" />
+      <workItem from="1739406504197" duration="11000" />
+      <workItem from="1739431419529" duration="4000" />
+      <workItem from="1739434633582" duration="5000" />
+      <workItem from="1739434876725" duration="20000" />
+      <workItem from="1739436165631" duration="665000" />
+      <workItem from="1739436954794" duration="6000" />
+      <workItem from="1739844434169" duration="124000" />
+      <workItem from="1739847529211" duration="677000" />
+      <workItem from="1739849088452" duration="289000" />
+      <workItem from="1739856413434" duration="18000" />
+      <workItem from="1739857279329" duration="41000" />
+      <workItem from="1739857751669" duration="67000" />
+      <workItem from="1739859569663" duration="100000" />
+      <workItem from="1739863362215" duration="178000" />
+      <workItem from="1739864087872" duration="5000" />
+      <workItem from="1739925735639" duration="738000" />
+    </task>
+    <task id="LOCAL-00001" summary="init">
+      <option name="closed" value="true" />
+      <created>1737168764045</created>
+      <option name="number" value="00001" />
+      <option name="presentableId" value="LOCAL-00001" />
+      <option name="project" value="LOCAL" />
+      <updated>1737168764045</updated>
+    </task>
+    <task id="LOCAL-00002" summary="接收水压传感器数据">
+      <option name="closed" value="true" />
+      <created>1737177629719</created>
+      <option name="number" value="00002" />
+      <option name="presentableId" value="LOCAL-00002" />
+      <option name="project" value="LOCAL" />
+      <updated>1737177629719</updated>
+    </task>
+    <task id="LOCAL-00003" summary="接收水压传感器数据">
+      <option name="closed" value="true" />
+      <created>1737177953684</created>
+      <option name="number" value="00003" />
+      <option name="presentableId" value="LOCAL-00003" />
+      <option name="project" value="LOCAL" />
+      <updated>1737177953684</updated>
+    </task>
+    <task id="LOCAL-00004" summary="接收传感器数据">
+      <option name="closed" value="true" />
+      <created>1737178251575</created>
+      <option name="number" value="00004" />
+      <option name="presentableId" value="LOCAL-00004" />
+      <option name="project" value="LOCAL" />
+      <updated>1737178251575</updated>
+    </task>
+    <task id="LOCAL-00005" summary="接收传感器数据">
+      <option name="closed" value="true" />
+      <created>1737178896554</created>
+      <option name="number" value="00005" />
+      <option name="presentableId" value="LOCAL-00005" />
+      <option name="project" value="LOCAL" />
+      <updated>1737178896554</updated>
+    </task>
+    <task id="LOCAL-00006" summary="大华日志异步">
+      <option name="closed" value="true" />
+      <created>1737524522197</created>
+      <option name="number" value="00006" />
+      <option name="presentableId" value="LOCAL-00006" />
+      <option name="project" value="LOCAL" />
+      <updated>1737524522197</updated>
+    </task>
+    <task id="LOCAL-00007" summary="注释dahuaWhiteOperateLog日志">
+      <option name="closed" value="true" />
+      <created>1737685036425</created>
+      <option name="number" value="00007" />
+      <option name="presentableId" value="LOCAL-00007" />
+      <option name="project" value="LOCAL" />
+      <updated>1737685036425</updated>
+    </task>
+    <task id="LOCAL-00008" summary="修改">
+      <option name="closed" value="true" />
+      <created>1739322879480</created>
+      <option name="number" value="00008" />
+      <option name="presentableId" value="LOCAL-00008" />
+      <option name="project" value="LOCAL" />
+      <updated>1739322879480</updated>
+    </task>
+    <option name="localTasksCounter" value="9" />
+    <servers />
+  </component>
+  <component name="TypeScriptGeneratedFilesManager">
+    <option name="version" value="3" />
+  </component>
+  <component name="VcsManagerConfiguration">
+    <option name="CHECK_CODE_SMELLS_BEFORE_PROJECT_COMMIT" value="false" />
+    <option name="CHECK_NEW_TODO" value="false" />
+    <MESSAGE value="init" />
+    <MESSAGE value="接收水压传感器数据" />
+    <MESSAGE value="接收传感器数据" />
+    <MESSAGE value="大华日志异步" />
+    <MESSAGE value="注释dahuaWhiteOperateLog日志" />
+    <MESSAGE value="修改" />
+    <option name="LAST_COMMIT_MESSAGE" value="修改" />
+  </component>
+</project>

+ 150 - 0
pom.xml

@@ -0,0 +1,150 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xmlns="http://maven.apache.org/POM/4.0.0"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <parent>
+        <artifactId>ruoyi-modules</artifactId>
+        <groupId>com.ruoyi</groupId>
+        <version>3.4.0</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+
+    <groupId>com.sooka.onest</groupId>
+    <artifactId>center-monitor-pollingPositionMsg</artifactId>
+
+
+    <dependencies>
+        <!-- SpringCloud Alibaba Nacos -->
+        <dependency>
+            <groupId>com.alibaba.cloud</groupId>
+            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
+        </dependency>
+
+        <!-- SpringCloud Alibaba Nacos Config -->
+        <dependency>
+            <groupId>com.alibaba.cloud</groupId>
+            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
+        </dependency>
+
+        <!-- SpringCloud Alibaba Sentinel -->
+        <dependency>
+            <groupId>com.alibaba.cloud</groupId>
+            <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
+        </dependency>
+
+        <!-- Sentinel Datasource Nacos -->
+        <dependency>
+            <groupId>com.alibaba.csp</groupId>
+            <artifactId>sentinel-datasource-nacos</artifactId>
+        </dependency>
+
+        <!-- SpringBoot Actuator -->
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-actuator</artifactId>
+        </dependency>
+
+        <!-- Swagger UI -->
+        <dependency>
+            <groupId>io.springfox</groupId>
+            <artifactId>springfox-swagger-ui</artifactId>
+            <version>${swagger.fox.version}</version>
+        </dependency>
+
+        <!-- Mysql Connector -->
+        <dependency>
+            <groupId>mysql</groupId>
+            <artifactId>mysql-connector-java</artifactId>
+        </dependency>
+
+        <!-- RuoYi Common DataSource -->
+        <dependency>
+            <groupId>com.ruoyi</groupId>
+            <artifactId>sooka-sponest-common-datasource</artifactId>
+        </dependency>
+
+        <!-- RuoYi Common DataScope -->
+        <dependency>
+            <groupId>com.ruoyi</groupId>
+            <artifactId>sooka-sponest-common-datascope</artifactId>
+        </dependency>
+
+        <!-- RuoYi Common Log -->
+        <dependency>
+            <groupId>com.ruoyi</groupId>
+            <artifactId>sooka-sponest-common-log</artifactId>
+        </dependency>
+
+        <!-- RuoYi Common Swagger -->
+        <dependency>
+            <groupId>com.ruoyi</groupId>
+            <artifactId>sooka-sponest-common-swagger</artifactId>
+        </dependency>
+
+        <!--海康-->
+        <dependency>
+            <groupId>com.hikvision.ga</groupId>
+            <artifactId>artemis-http-client</artifactId>
+            <version>1.1.3</version>
+        </dependency>
+
+        <!-- ICC鉴权 -->
+        <dependency>
+            <groupId>com.dahuatech.icc</groupId>
+            <artifactId>java-sdk-oauth</artifactId>
+            <version>1.0.9</version>
+            <exclusions>
+                <exclusion>
+                    <artifactId>java-sdk-core</artifactId>
+                    <groupId>com.dahuatech.icc</groupId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+
+        <dependency>
+            <groupId>com.dahuatech.icc</groupId>
+            <artifactId>java-sdk-core</artifactId>
+            <version>1.0.9</version>
+        </dependency>
+
+        <!-- mp4文件操作jar -->
+        <!-- https://mvnrepository.com/artifact/com.googlecode.mp4parser/isoparser -->
+        <dependency>
+            <groupId>com.googlecode.mp4parser</groupId>
+            <artifactId>isoparser</artifactId>
+            <version>1.1.22</version>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <finalName>${project.artifactId}</finalName>
+        <plugins>
+            <plugin>
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-maven-plugin</artifactId>
+                <version>2.1.5.RELEASE</version>
+                <executions>
+                    <execution>
+                        <goals>
+                            <goal>repackage</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+            </plugin>
+            <plugin>
+                <artifactId>maven-resources-plugin</artifactId>
+                <configuration>
+                    <nonFilteredFileExtensions>
+                        <nonFilteredFileExtension>xdb</nonFilteredFileExtension>
+                    </nonFilteredFileExtensions>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+
+</project>
+

+ 39 - 0
src/main/java/com/sooka/sponest/monitor/SookaMonitorPollingPositionMsgApplication.java

@@ -0,0 +1,39 @@
+package com.sooka.sponest.monitor;
+
+import com.ruoyi.common.security.annotation.EnableCustomConfig;
+import com.ruoyi.common.security.annotation.EnableRyFeignClients;
+import com.ruoyi.common.swagger.annotation.EnableCustomSwagger2;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.web.servlet.MultipartConfigFactory;
+import org.springframework.context.annotation.Bean;
+import org.springframework.scheduling.annotation.EnableAsync;
+import org.springframework.util.unit.DataSize;
+
+import javax.servlet.MultipartConfigElement;
+
+@EnableAsync
+@EnableCustomConfig
+@EnableCustomSwagger2
+@EnableRyFeignClients
+@SpringBootApplication
+public class SookaMonitorPollingPositionMsgApplication {
+    public static void main(String[] args) {
+        SpringApplication.run(SookaMonitorPollingPositionMsgApplication.class, args);
+        System.out.println("(♥◠‿◠)ノ゙  首佳科技 一体化 对接大华根据组织获取执法记录仪、单兵设备在线状态任务 启动成功   ლ(´ڡ`ლ)゙  \n" +
+                "  __________   ____ |  | _______          ____________   ____   ____   ____   _______/  |_\n" +
+                " /  ___/  _ \\ /  _ \\|  |/ /\\__  \\        /  ___/\\____ \\ /  _ \\ /    \\_/ __ \\ /  ___/\\   __\\\n" +
+                " \\___ (  <_> |  <_> )    <  / __ \\_      \\___ \\ |  |_> >  <_> )   |  \\  ___/ \\___ \\  |  |\n" +
+                "/____  >____/ \\____/|__|_ \\(____  /     /____  >|   __/ \\____/|___|  /\\___  >____  > |__|\n" +
+                "     \\/                  \\/     \\/           \\/ |__|               \\/     \\/     \\/\n"
+        );
+    }
+
+    @Bean
+    public MultipartConfigElement multipartConfigElement() {
+        MultipartConfigFactory factory = new MultipartConfigFactory();
+        factory.setMaxFileSize(DataSize.parse("10240000KB"));
+        factory.setMaxRequestSize(DataSize.parse("10240000KB"));
+        return factory.createMultipartConfig();
+    }
+}

+ 11 - 0
src/main/java/com/sooka/sponest/monitor/base/controller/BaseController.java

@@ -0,0 +1,11 @@
+package com.sooka.sponest.monitor.base.controller;
+
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+@RequestMapping("/BaseController")
+public class BaseController {
+
+
+}

+ 52 - 0
src/main/java/com/sooka/sponest/monitor/base/domain/BaseBusinessEntity.java

@@ -0,0 +1,52 @@
+package com.sooka.sponest.monitor.base.domain;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
+
+@Getter
+@Setter
+public class BaseBusinessEntity {
+
+    /**
+     * 搜索值
+     */
+    String searchValue;
+
+    Long dataDeptId;
+
+    /**
+     * 创建者
+     */
+    Long createBy;
+    /**
+     * 创建者
+     */
+    String remark;
+    /**
+     * 请求参数
+     */
+    Map<String, Object> params = new HashMap();
+    String database_system;
+    String database_event;
+    String database_data;
+    /**
+     * 创建时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date createTime = new Date();
+    /**
+     * 更新者
+     */
+    private Long updateBy;
+    /**
+     * 更新时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date updateTime;
+
+}

+ 13 - 0
src/main/java/com/sooka/sponest/monitor/base/domain/DataTestVO.java

@@ -0,0 +1,13 @@
+package com.sooka.sponest.monitor.base.domain;
+
+import lombok.Getter;
+import lombok.Setter;
+
+@Getter
+@Setter
+public class DataTestVO extends BaseBusinessEntity {
+
+    String name;
+
+
+}

+ 73 - 0
src/main/java/com/sooka/sponest/monitor/base/service/impl/BaseService.java

@@ -0,0 +1,73 @@
+package com.sooka.sponest.monitor.base.service.impl;
+
+import com.ruoyi.common.datascope.base.domain.BaseBusinessEntity;
+import com.ruoyi.common.redis.service.RedisService;
+import com.ruoyi.common.security.service.TokenService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Service;
+
+@Service
+public class BaseService {
+
+    @Value("${sooka.database.database_system:}")
+    public String database_system;
+    @Value("${sooka.database.database_event:}")
+    public String database_event;
+    @Value("${sooka.database.database_data:}")
+    public String database_data;
+    @Value("${sooka.dahua_video_server.loginIp:}")
+    public String loginIp;
+    @Value("${sooka.dahua_video_server.userName:}")
+    public String userName;
+    @Value("${sooka.dahua_video_server.userPwd:}")
+    public String userPwd;
+    @Value("${sooka.dahua_video_server.loginPort:}")
+    public Integer loginPort;
+    //app
+    @Value("${sooka.dahua_video_server_app.loginIpApp:}")
+    public String loginIpApp;
+    @Value("${sooka.dahua_video_server_app.userNameApp:}")
+    public String userNameApp;
+    @Value("${sooka.dahua_video_server_app.userPwdApp:}")
+    public String userPwdApp;
+    @Value("${sooka.dahua_video_server_app.loginPortApp:}")
+    public Integer loginPortApp;
+    //
+    @Value("${sooka.dahua_dss_server.host:}")
+    public String host;
+    @Value("${sooka.dahua_dss_server.user_name:}")
+    public String user_name;
+    @Value("${sooka.dahua_dss_server.password:}")
+    public String password;
+    @Value("${sooka.dahua_dss_server.client_id:}")
+    public String client_id;
+    @Value("${sooka.dahua_dss_server.client_secret:}")
+    public String client_secret;
+    @Value("${sooka.dahua_dss_server.version:}")
+    public String version;
+    @Value("${sooka.dahua_dss_server.video_download_url_linux:}")
+    public String videoDownloadUrlLinux;
+    @Value("${sooka.dahua_dss_server.video_download_url_win:}")
+    public String videoDownloadUrlWin;
+    @Value("${sooka.haikang_video_server.loginIp:}")
+    public String HkloginIp;
+    @Value("${sooka.haikang_video_server.appkey:}")
+    public String Hkappkey;
+    @Value("${sooka.haikang_video_server.secret:}")
+    public String Hksecret;
+    @Value("${sooka.haikang_video_server.loginPort:}")
+    public String HkloginPort;
+    @Autowired
+    TokenService tokenService;
+    @Autowired
+    private RedisService redisService;
+
+    public void setSookaDataBase(BaseBusinessEntity entity) {
+        entity.setDatabase_system(this.database_system);
+        entity.setDatabase_event(this.database_event);
+        entity.setDatabase_data(this.database_data);
+    }
+
+}
+

+ 19 - 0
src/main/java/com/sooka/sponest/monitor/base/util/database/DynamicDataSource.java

@@ -0,0 +1,19 @@
+package com.sooka.sponest.monitor.base.util.database;
+
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource;
+
+
+public class DynamicDataSource extends AbstractRoutingDataSource {
+
+    Logger logger = LoggerFactory.getLogger(DynamicDataSource.class);
+
+    @Override
+    protected Object determineCurrentLookupKey() {
+        String datasource = DynamicDataSourceSwitcher.getDataSource();
+        logger.info("------------------当前数据源 {}", DynamicDataSourceSwitcher.getDataSource());
+        return DynamicDataSourceSwitcher.getDataSource();
+    }
+}

+ 41 - 0
src/main/java/com/sooka/sponest/monitor/base/util/database/DynamicDataSourceAspect.java

@@ -0,0 +1,41 @@
+package com.sooka.sponest.monitor.base.util.database;
+
+import org.aspectj.lang.annotation.After;
+import org.aspectj.lang.annotation.Aspect;
+import org.aspectj.lang.annotation.Before;
+import org.aspectj.lang.annotation.Pointcut;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.core.annotation.Order;
+import org.springframework.stereotype.Component;
+
+@Aspect
+@Component
+@Order(1)
+public class DynamicDataSourceAspect {
+    private Logger logger = LoggerFactory.getLogger(DynamicDataSourceAspect.class);
+
+    /**
+     * 切入点只对@Service注解的类上的@DataSource方法生效
+     *
+     * @param myDataSource
+     */
+    @Pointcut(value = "(@within(org.springframework.stereotype.Service) ||@within(org.springframework.stereotype.Repository)) && @annotation(myDataSource)")
+    public void dynamicDataSourcePointCut(MyDataSource myDataSource) {
+    }
+
+    @Before(value = "dynamicDataSourcePointCut(myDataSource)")
+    public void switchDataSource(MyDataSource myDataSource) {
+        DynamicDataSourceSwitcher.setDataSource(myDataSource.value());
+    }
+
+    /**
+     * 切点执行完后 切换成主数据库
+     *
+     * @param myDataSource
+     */
+    @After(value = "dynamicDataSourcePointCut(myDataSource)")
+    public void after(MyDataSource myDataSource) {
+        DynamicDataSourceSwitcher.cleanDataSource();
+    }
+}

+ 41 - 0
src/main/java/com/sooka/sponest/monitor/base/util/database/DynamicDataSourceSwitcher.java

@@ -0,0 +1,41 @@
+package com.sooka.sponest.monitor.base.util.database;
+
+import org.apache.commons.lang.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+
+public class DynamicDataSourceSwitcher {
+
+    public static final String Master = "master";
+    public static final String dbCenterTtranmanager = "db-center-tranmanager";
+    public static final String dbCenterData = "db-center-data";
+    public static final String dbCenterEvent = "db-center-event";
+    public static final String dbCenterMonitor = "db-center-monitor";
+    public static final String dbCenterTask = "db-center-task";
+    public static final String dbCenterEvaluation = "db-center-evaluation";
+    public static final String dbCenterFire = "db-center-fire";
+    public static final String dbCenterStraw = "db-center-straw";
+    public static final String dbCenterPests = "db-center-pests";
+    public static final String dbCenterComprehensive = "db-center-comprehensive";
+    public static final String dbCenterOnest = "db-center-onest";
+    private static final ThreadLocal<String> contextHolder = new ThreadLocal<>();
+    static Logger logger = LoggerFactory.getLogger(DynamicDataSourceSwitcher.class);
+
+    public static String getDataSource() {
+        if (StringUtils.isEmpty(contextHolder.get())) {
+            setDataSource(Master);
+        }
+        return contextHolder.get();
+    }
+
+    public static void setDataSource(String name) {
+        logger.info("-------- 设置数据源数据源为 :{} ", name);
+        contextHolder.set(name);
+    }
+
+    public static void cleanDataSource() {
+        contextHolder.remove();
+    }
+
+}

+ 4 - 0
src/main/java/com/sooka/sponest/monitor/base/util/database/GlobalTransactionalRabbitMQ.java

@@ -0,0 +1,4 @@
+package com.sooka.sponest.monitor.base.util.database;
+
+public @interface GlobalTransactionalRabbitMQ {
+}

+ 136 - 0
src/main/java/com/sooka/sponest/monitor/base/util/database/MultipleDataSourceConfig.java

@@ -0,0 +1,136 @@
+package com.sooka.sponest.monitor.base.util.database;
+
+import com.alibaba.druid.pool.DruidDataSource;
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Primary;
+
+import javax.sql.DataSource;
+import java.util.HashMap;
+import java.util.Map;
+
+@Configuration
+public class MultipleDataSourceConfig {
+
+    @Bean("master")
+    @ConfigurationProperties(prefix = "spring.datasource.dynamic.datasource.master")
+    public DataSource createMasterDataSource() {
+        return new DruidDataSource();
+    }
+
+    @Bean("dbSystemData")
+    @ConfigurationProperties(prefix = "spring.datasource.dynamic.datasource.db-system")
+    public DataSource createSystemDataSource() {
+        return new DruidDataSource();
+    }
+
+    @Bean("dbCenterTranmanager")
+    @ConfigurationProperties(prefix = "spring.datasource.dynamic.datasource.db-center-tranmanager")
+    public DataSource createTranmanagerDataSource() {
+        return new DruidDataSource();
+    }
+
+    @Bean("dbCenterData")
+    @ConfigurationProperties(prefix = "spring.datasource.dynamic.datasource.db-center-data")
+    public DataSource createDataDataSource() {
+        return new DruidDataSource();
+    }
+
+    @Bean("dbCenterEvent")
+    @ConfigurationProperties(prefix = "spring.datasource.dynamic.datasource.db-center-event")
+    public DataSource createEventDataSource() {
+        return new DruidDataSource();
+    }
+
+    @Bean("dbCenterMonitor")
+    @ConfigurationProperties(prefix = "spring.datasource.dynamic.datasource.db-center-monitor")
+    public DataSource createMonitorDataSource() {
+        return new DruidDataSource();
+    }
+
+    @Bean("dbCenterTask")
+    @ConfigurationProperties(prefix = "spring.datasource.dynamic.datasource.db-center-task")
+    public DataSource createTaskDataSource() {
+        return new DruidDataSource();
+    }
+
+    @Bean("dbCenterEvaluation")
+    @ConfigurationProperties(prefix = "spring.datasource.dynamic.datasource.db-center-evaluation")
+    public DataSource createEvaluationDataSource() {
+        return new DruidDataSource();
+    }
+
+    @Bean("dbCenterFire")
+    @ConfigurationProperties(prefix = "spring.datasource.dynamic.datasource.db-center-fire")
+    public DataSource createFireDataSource() {
+        return new DruidDataSource();
+    }
+
+    @Bean("dbCenterStraw")
+    @ConfigurationProperties(prefix = "spring.datasource.dynamic.datasource.db-center-straw")
+    public DataSource createStrawDataSource() {
+        return new DruidDataSource();
+    }
+
+    @Bean("dbCenterPests")
+    @ConfigurationProperties(prefix = "spring.datasource.dynamic.datasource.db-center-pests")
+    public DataSource createPestsDataSource() {
+        return new DruidDataSource();
+    }
+
+    @Bean("dbCenterComprehensive")
+    @ConfigurationProperties(prefix = "spring.datasource.dynamic.datasource.db-center-comprehensive")
+    public DataSource createComprehensiveDataSource() {
+        return new DruidDataSource();
+    }
+
+    @Bean("dbCenterOnest")
+    @ConfigurationProperties(prefix = "spring.datasource.dynamic.datasource.db-center-onest")
+    public DataSource createOnestDataSource() {
+        return new DruidDataSource();
+    }
+
+    /**
+     * 设置动态数据源,通过@Primary 来确定主DataSource
+     *
+     * @return
+     */
+    @Bean
+    @Primary
+    public DataSource createDynamicDataSource(@Qualifier("master") DataSource master,
+                                              @Qualifier("dbSystemData") DataSource dbSystemData,
+                                              @Qualifier("dbCenterData") DataSource dbCenterData,
+                                              @Qualifier("dbCenterEvent") DataSource dbCenterEvent,
+                                              @Qualifier("dbCenterMonitor") DataSource dbCenterMonitor,
+                                              @Qualifier("dbCenterTask") DataSource dbCenterTask,
+                                              @Qualifier("dbCenterEvaluation") DataSource dbCenterEvaluation,
+                                              @Qualifier("dbCenterFire") DataSource dbCenterFire,
+                                              @Qualifier("dbCenterStraw") DataSource dbCenterStraw,
+                                              @Qualifier("dbCenterPests") DataSource dbCenterPests,
+                                              @Qualifier("dbCenterComprehensive") DataSource dbCenterComprehensive,
+                                              @Qualifier("dbCenterOnest") DataSource dbCenterOnest,
+                                              @Qualifier("dbCenterTranmanager") DataSource dbCenterTranmanager) {
+        DynamicDataSource dynamicDataSource = new DynamicDataSource();
+        //设置默认数据源
+        dynamicDataSource.setDefaultTargetDataSource(master);
+        //配置多数据源
+        Map<Object, Object> map = new HashMap<>();
+        map.put("master", master);
+        map.put("db-system", dbSystemData);
+        map.put("db-center-tranmanager", dbCenterTranmanager);
+        map.put("db-center-data", dbCenterData);
+        map.put("db-center-event", dbCenterEvent);
+        map.put("db-center-monitor", dbCenterMonitor);
+        map.put("db-center-task", dbCenterTask);
+        map.put("db-center-evaluation", dbCenterEvaluation);
+        map.put("db-center-fire", dbCenterFire);
+        map.put("db-center-straw", dbCenterStraw);
+        map.put("db-center-pests", dbCenterPests);
+        map.put("db-center-comprehensive", dbCenterComprehensive);
+        map.put("db-center-onest", dbCenterOnest);
+        dynamicDataSource.setTargetDataSources(map);
+        return dynamicDataSource;
+    }
+}

+ 15 - 0
src/main/java/com/sooka/sponest/monitor/base/util/database/MyDataSource.java

@@ -0,0 +1,15 @@
+package com.sooka.sponest.monitor.base.util.database;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+
+@Retention(RetentionPolicy.RUNTIME)
+@Target({
+        ElementType.METHOD
+})
+public @interface MyDataSource {
+    String value() default "";
+}

+ 39 - 0
src/main/java/com/sooka/sponest/monitor/camera/mapper/CentermonitorTCameraMapper.java

@@ -0,0 +1,39 @@
+package com.sooka.sponest.monitor.camera.mapper;
+
+
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 摄像头Mapper接口
+ *
+ * @author ruoyi
+ * @date 2022-06-08
+ */
+@Repository
+public interface CentermonitorTCameraMapper {
+
+    /**
+     * 更新执法仪在离线状态
+     *
+     * @param list
+     */
+    void updateBatchLawEnforcementInstrumentState(List<Map<String, Object>> list);
+
+    /**
+     * 更新摄像头类型为录像机离线状态
+     *
+     * @param list
+     */
+    void updateBatchVideoRecorderOfflineState(List<String> list);
+
+    /**
+     * 更新摄像头类型为录像机在线状态
+     *
+     * @param list
+     */
+    void updateBatchVideoRecorderOnlineState(List<String> list);
+}
+

+ 154 - 0
src/main/java/com/sooka/sponest/monitor/dahua/controller/EquipmentStatusTaskController.java

@@ -0,0 +1,154 @@
+package com.sooka.sponest.monitor.dahua.controller;
+
+
+import com.alibaba.fastjson.JSONObject;
+import com.alibaba.nacos.shaded.com.google.gson.Gson;
+import com.ruoyi.common.core.domain.R;
+import com.ruoyi.common.log.annotation.Log;
+import com.ruoyi.common.log.enums.BusinessType;
+import com.sooka.sponest.monitor.camera.mapper.CentermonitorTCameraMapper;
+import com.sooka.sponest.monitor.dahua.utils.HttpEnum;
+import com.sooka.sponest.monitor.dahua.utils.HttpTestUtils;
+import com.sooka.sponest.monitor.remoteapi.service.lawenforcement.RemoteLawenforcementBaseService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.collections4.CollectionUtils;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+import static org.springframework.web.bind.annotation.RequestMethod.GET;
+
+
+/**
+ * 对接大华根据组织获取执法记录仪、单兵设备在线状态
+ */
+
+@Slf4j
+@Component
+@Api(tags = "对接大华根据组织获取执法记录仪、单兵设备在线状态定时任务")
+@RestController
+@RequestMapping("/equipmentStatus/quartz")
+public class EquipmentStatusTaskController {
+
+
+    @Resource
+    private CentermonitorTCameraMapper centermonitorTCameraMapper;
+    @Resource
+    private RemoteLawenforcementBaseService remoteLawenforcementBaseService;
+    @Value("${sooka.dahua_interface_server.loginIp}")
+    private String loginIp;
+    @Value("${sooka.dahua_interface_server.loginPort}")
+    private String loginPort;
+    @Value("${sooka.dahua_interface_server.userName}")
+    private String userName;
+    @Value("${sooka.dahua_interface_server.userPwd}")
+    private String userPwd;
+//    private String loginIp = "10.53.0.35";
+//    private String loginPort = "7901";
+//    private String userName = "system";
+//    private String userPwd = "Admin123";
+    //按组织获取设备详细信息
+    public static final String ACTION = "/videoService/devicesManager/devicesInfo";
+    private List<String> orgCodes = Arrays.asList("11033445593778368", "11248668755298496");
+
+
+//    @Scheduled(cron = "0/5 * * * * ?")
+    @Log(title = "对接大华根据组织获取执法记录仪、单兵设备在线状态定时任务", businessType = BusinessType.OTHER)
+    @ApiOperation(value = "对接大华根据组织获取执法记录仪、单兵设备在线状态定时任务", notes = "对接大华根据组织获取执法记录仪、单兵设备在线状态定时任务")
+    @RequestMapping(value = "/getLongPollingPositionMsg", method = GET)
+    public void getLongPollingPositionMsg() throws Exception {
+        log.info("开始执行获取记录仪在离线数据定时任务");
+        R<?> result = HttpTestUtils.getToken(loginIp, Integer.parseInt(loginPort), userName, userPwd);
+        if (result.getCode() != 200) {
+            log.info("获取token失败,请检查配置信息:", JSONObject.parseObject(result.getMsg()));
+        }
+        String token = result.getData().toString();
+        getMessage(loginIp, Integer.parseInt(loginPort), token);
+    }
+
+    /**
+     * 根据组织code编码获取执法仪详情数据
+     *
+     * @param ip
+     * @param port
+     * @param token
+     */
+    private void getMessage(String ip, int port, String token) {
+        Map<String, String> content = new HashMap<>();
+        for (String orgCode : orgCodes) {
+            content.put("orgCode", orgCode);
+            getDevicesInfo(ip, port, token, content, orgCode);
+        }
+    }
+
+    private void getDevicesInfo(String ip, int port, String token, Map<String, String> content, String orgCode) {
+        String response = HttpTestUtils.httpRequest(HttpEnum.POST, ip, port, ACTION, token, new Gson().toJson(content));
+        JSONObject jsonObject = JSONObject.parseObject(response);
+        if (jsonObject.get("devices") == null) {
+            log.info("根据组织code编码获取执法仪response:{}", response);
+            return;
+        }
+        Map<String, Object> rsp = new Gson().fromJson(response, Map.class);
+        List<Map<String, Object>> arr = (List<Map<String, Object>>) rsp.get("devices");
+        log.info("获取记录仪在离线数据 size = {}", arr.size());
+        updateDeviceState(arr, orgCode);
+    }
+
+    /**
+     * 更新执法仪在离线状态
+     *
+     * @param arr
+     */
+    private void updateDeviceState(List<Map<String, Object>> arr, String orgCode) {
+        log.info("根据组织code编码获取执法仪详情数据:{}", arr.size());
+        if (CollectionUtils.isNotEmpty(arr)) {
+            if (orgCode.equals("11248668755298496")) {
+                List<Map<String, Object>> list = (List<Map<String, Object>>) arr.get(0).get("units");
+                for (Map<String, Object> map : list) {
+                    if (map.get("unitType").toString().equals("1")) {
+                        arr = (List<Map<String, Object>>) map.get("channels");
+                        //更新摄像头类型为录像机在离线状态
+                        List<String> channelCodeAllList = arr.stream().map(item -> item.get("channelCode"))
+                                .filter(channelCode -> channelCode != null)
+                                .map(Object::toString)
+                                .collect(Collectors.toList());
+                        //先把摄像头类型为录像机的状态全部改成离线
+                        if (CollectionUtils.isNotEmpty(channelCodeAllList)) {
+                            centermonitorTCameraMapper.updateBatchVideoRecorderOfflineState(channelCodeAllList);
+                        }
+                        //再修改摄像头类型为录像机的在线状态
+                        List<String> channelCodeList = arr.stream()
+                                .filter(item -> "1".equals(item.get("status")))
+                                .map(item -> item.get("channelCode"))
+                                .filter(channelCode -> channelCode != null)
+                                .map(Object::toString)
+                                .collect(Collectors.toList());
+                        if (CollectionUtils.isNotEmpty(channelCodeList)) {
+                            centermonitorTCameraMapper.updateBatchVideoRecorderOnlineState(channelCodeList);
+                        }
+                        break;
+                    }
+                }
+            } else {
+                //向执法中心推送设备状态
+//                R result = remoteLawenforcementBaseService.deviceOpenOrClose(arr);
+//                if (result.getCode() != 200) {
+//                    log.info("向执法中心推送设备状态失败:{}", result.getMsg());
+//                }
+                //更新执法仪在离线状态
+                centermonitorTCameraMapper.updateBatchLawEnforcementInstrumentState(arr);
+            }
+        }
+    }
+
+}

+ 67 - 0
src/main/java/com/sooka/sponest/monitor/dahua/login/Login.java

@@ -0,0 +1,67 @@
+package com.sooka.sponest.monitor.dahua.login;//package com.dahuatch.Login;
+
+
+import com.alibaba.nacos.shaded.com.google.gson.Gson;
+import com.ruoyi.common.core.domain.R;
+import com.sooka.sponest.monitor.dahua.login.bean.LoginFirst;
+import com.sooka.sponest.monitor.dahua.login.bean.LoginSecond;
+import com.sooka.sponest.monitor.dahua.utils.HttpEnum;
+import com.sooka.sponest.monitor.dahua.utils.HttpTestUtils;
+
+import java.util.Map;
+
+/**
+ * 创建会话接口
+ */
+public class Login {
+
+    public static final String ACTION = "/videoService/accounts/authorize";
+
+    //第一次登陆,客户端只传用户名,服务端返回realm、readomKey和encryptType信息。
+    private static String firstLogin(String ip, int port, String userName) {
+        LoginFirst loginFirst = new LoginFirst();
+        loginFirst.setClientType("winpc");
+        loginFirst.setUserName(userName);
+        String rsp = HttpTestUtils.httpRequest(HttpEnum.POST, ip, port, ACTION, "", new Gson().toJson(loginFirst));
+        return rsp;
+    }
+
+    //第二次登录,客户端根据返回的信息,按照指定的加密算法计算签名,再带着用户名和签名登陆一次。
+    private static String secondLogin(String ip, int port, String userName, String password, String realm, String randomKey) throws Exception {
+        LoginSecond snd = new LoginSecond();
+        snd.setUserName(userName);
+        snd.setClientType("winpc");
+        snd.setRandomKey(randomKey);
+        snd.setEncryptType("MD5");
+        String signature = snd.calcSignature(password, realm);
+        snd.setSignature(signature);
+        Gson gson = new Gson();
+        String ctx = gson.toJson(snd);
+        String rsp = HttpTestUtils.httpRequest(HttpEnum.POST, ip, port, ACTION, "", ctx);
+        return rsp;
+    }
+
+    @SuppressWarnings("unchecked")
+    public static String login(String ip, int port, String userName, String password) throws Exception {
+        String response = firstLogin(ip, port, userName);
+        Map<String, String> responseMap = new Gson().fromJson(response, Map.class);
+        String random = responseMap.get("randomKey");
+        String realm = responseMap.get("realm");
+        response = secondLogin(ip, port, userName, password, realm, random);
+        return response;
+    }
+
+
+    /**
+     * 调用该登陆方法之前需要修改 baseinfo.properties中ip,port,name,password为当前对接环境
+     * 登录的方法,运行之后即可获取到token,进行登录,登陆完成后,必须调用KeepLogin保活接口,否则,2分钟后会登陆过期
+     */
+    public static void main(String[] args) throws Exception {
+        R<?> result = HttpTestUtils.getToken("10.254.1.20", Integer.valueOf(8320), "system", "Admin123");
+        String token = result.getData().toString();
+        System.out.println("登录成功,token=" + token);
+    }
+}
+
+
+

+ 36 - 0
src/main/java/com/sooka/sponest/monitor/dahua/login/bean/LoginFirst.java

@@ -0,0 +1,36 @@
+package com.sooka.sponest.monitor.dahua.login.bean;//package com.dahuatch.Login;
+
+/**
+ * 第一次登录参数bean
+ */
+public class LoginFirst {
+
+    private String userName;
+    private String clientType;
+    private String ipAddress;
+
+
+    public String getUserName() {
+        return userName;
+    }
+    public void setUserName(String userName) {
+        this.userName = userName;
+    }
+    public String getClientType() {
+        return clientType;
+    }
+    public void setClientType(String clientType) {
+        this.clientType = clientType;
+    }
+    public String getIpAddress() {
+        return ipAddress;
+    }
+    public void setIpAddress(String ipAddress) {
+        this.ipAddress = ipAddress;
+    }
+    @Override
+    public String toString() {
+
+        return "[userName=" + userName + ",clientType=" + clientType + ",ipAddress=" + ipAddress + "]";
+    }
+}

+ 102 - 0
src/main/java/com/sooka/sponest/monitor/dahua/login/bean/LoginSecond.java

@@ -0,0 +1,102 @@
+package com.sooka.sponest.monitor.dahua.login.bean;
+
+import java.io.UnsupportedEncodingException;
+import java.security.MessageDigest;
+import java.security.NoSuchAlgorithmException;
+
+/**
+ * 第二次登录参数bean和方法
+ */
+public class LoginSecond {
+    private String userName;
+    private String clientType;
+    private String ipAddress;
+	private String signature;
+	private String randomKey;
+	private String encryptType;
+
+    public String getUserName() {
+        return userName;
+    }
+    public void setUserName(String userName) {
+        this.userName = userName;
+    }
+    public String getClientType() {
+        return clientType;
+    }
+    public void setClientType(String clientType) {
+        this.clientType = clientType;
+    }
+    public String getIpAddress() {
+        return ipAddress;
+    }
+    public void setIpAddress(String ipAddress) {
+        this.ipAddress = ipAddress;
+    }
+    public String getSignature() {
+        return signature;
+    }
+    public void setSignature(String signature) {
+        this.signature = signature;
+    }
+    public String getRandomKey() {
+        return randomKey;
+    }
+    public void setRandomKey(String randomKey) {
+        this.randomKey = randomKey;
+    }
+    public String getEncryptType() {
+        return encryptType;
+    }
+    public String setEncryptType(String encryptType) {
+        return this.encryptType = encryptType;
+    }
+
+	public static boolean isBlankString(String str) {
+		if (str == null || str == "" || str.length() == 0) {
+			return true;
+		}
+		return false;
+	}
+
+	public static String encrypt(String inputText, String algorithmName) throws Exception {
+		if (isBlankString(inputText)) {
+			throw new IllegalArgumentException("Please enter inputText!");
+		}
+		if (isBlankString(algorithmName)
+				|| algorithmName.toLowerCase().equals("md5")) {
+			algorithmName = "MD5";
+		}
+		try {
+			MessageDigest digest = MessageDigest.getInstance(algorithmName);
+			digest.update(inputText.getBytes("UTF8"));
+			byte encryptted[] = digest.digest();
+			int i;
+			StringBuffer rsp = new StringBuffer();
+			for (int offset = 0; offset < encryptted.length; offset++) {
+				i = encryptted[offset];
+				if (i < 0)
+					i += 256;
+				if (i < 16)
+					rsp.append("0");
+				rsp.append(Integer.toHexString(i));
+			}
+			return rsp.toString();
+		} catch (NoSuchAlgorithmException e) {
+			throw e;
+		} catch (UnsupportedEncodingException e) {
+			throw e;
+		}
+	}
+	//根据第一次登录接口调用返回的参数,计算签名,第二次登录接口调用要使用到,本例采用的是MD5的加密方式,可以根据需要采用别的加密方式
+	public String calcSignature(String password, String realm) throws Exception{
+		String signature = encrypt(password, "MD5");
+		signature = encrypt(this.userName+signature, "MD5");
+		signature = encrypt(signature, "MD5");
+		signature = encrypt(this.userName+":"+realm+":"+signature, "MD5");
+		signature = encrypt(signature+":"+this.randomKey, "MD5");
+		return signature;
+	}
+
+}
+

Разница между файлами не показана из-за своего большого размера
+ 96 - 0
src/main/java/com/sooka/sponest/monitor/dahua/utils/DSSUtils.java


+ 26 - 0
src/main/java/com/sooka/sponest/monitor/dahua/utils/HttpEnum.java

@@ -0,0 +1,26 @@
+package com.sooka.sponest.monitor.dahua.utils;
+/**
+ * 请求类型枚举
+ */
+public enum HttpEnum {
+    GET(1,"get"),
+    POST(2,"post"),
+    PUT(3,"put"),
+    DELETE(4,"delete");
+    private int num;
+    private String desc;
+
+
+    HttpEnum(int num, String desc) {
+        this.num = num;
+        this.desc = desc;
+    }
+    public int getNum() {
+        return num;
+    }
+
+    public String getDesc() {
+        return desc;
+    }
+
+}

+ 195 - 0
src/main/java/com/sooka/sponest/monitor/dahua/utils/HttpTestUtils.java

@@ -0,0 +1,195 @@
+package com.sooka.sponest.monitor.dahua.utils;
+
+
+import com.alibaba.nacos.shaded.com.google.gson.Gson;
+import com.ruoyi.common.core.domain.R;
+import com.sooka.sponest.monitor.dahua.login.Login;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.http.client.methods.*;
+import org.apache.http.config.Registry;
+import org.apache.http.config.RegistryBuilder;
+import org.apache.http.conn.socket.ConnectionSocketFactory;
+import org.apache.http.conn.socket.PlainConnectionSocketFactory;
+import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
+import org.apache.http.conn.ssl.X509HostnameVerifier;
+import org.apache.http.entity.StringEntity;
+import org.apache.http.impl.client.CloseableHttpClient;
+import org.apache.http.impl.client.HttpClientBuilder;
+import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
+import org.apache.http.ssl.SSLContexts;
+import org.apache.http.ssl.TrustStrategy;
+
+import javax.net.ssl.SSLContext;
+import javax.net.ssl.SSLException;
+import javax.net.ssl.SSLSession;
+import javax.net.ssl.SSLSocket;
+import java.io.*;
+import java.security.KeyStore;
+import java.security.cert.CertificateException;
+import java.security.cert.X509Certificate;
+import java.util.Map;
+/**
+ * 远程调用请求工具
+ */
+@Slf4j
+public class HttpTestUtils {
+    public static String httpRequest(HttpEnum method, String ip, int port, String action, String token, String content) {
+        String responJson = null;
+        CloseableHttpClient httpClient = null;
+        CloseableHttpResponse httpResponse = null;
+        InputStream inputStream = null;
+        KeyStore trustStore = null;
+        SSLContext sslcontext = null;
+        try {
+            trustStore = KeyStore.getInstance(KeyStore.getDefaultType());
+            // 设置信任签名
+            sslcontext = SSLContexts.custom().loadTrustMaterial(trustStore, new TrustStrategy() {
+                @Override
+                public boolean isTrusted(X509Certificate[] x509Certificates, String s) throws CertificateException {
+                    return true;
+                }
+            }).build();
+            X509HostnameVerifier hostnameVerifier = new X509HostnameVerifier() {
+                @Override
+                public void verify(String s, SSLSocket sslSocket) throws IOException {
+
+                }
+
+                @Override
+                public void verify(String s, X509Certificate x509Certificate) throws SSLException {
+
+                }
+
+                @Override
+                public void verify(String s, String[] strings, String[] strings1) throws SSLException {
+
+                }
+
+                @Override
+                public boolean verify(String s, SSLSession sslSession) {
+                    return true;
+                }
+            };
+            // 设置协议http和https对应的处理socket链接工厂的对象
+            Registry<ConnectionSocketFactory> socketFactoryRegistry = RegistryBuilder.<ConnectionSocketFactory>create()
+                    .register("http", PlainConnectionSocketFactory.INSTANCE)
+                    .register("https", new SSLConnectionSocketFactory(sslcontext, hostnameVerifier))
+                    .build();
+
+            PoolingHttpClientConnectionManager connectionManager = new PoolingHttpClientConnectionManager(socketFactoryRegistry);
+
+            httpClient = HttpClientBuilder.create()
+                    .setConnectionManager(connectionManager)
+                    .setRedirectStrategy(new RestRedirectStrategy()).build();
+            String proto = port == 8320 ? "https://" : "http://";
+            String uri = proto + ip + ":" + port + action;
+            HttpRequestBase httpReq = getRequestEntity(method, token, uri, content);
+            httpResponse = httpClient.execute(httpReq);
+            inputStream = httpResponse.getEntity().getContent();
+            responJson = convertToString(inputStream);
+        } catch (UnsupportedEncodingException e) {
+            e.printStackTrace();
+        } catch (Exception e) {
+            e.printStackTrace();
+        } finally {
+            if (null != httpResponse) {
+                try {
+                    httpResponse.close();
+                } catch (IOException e) {
+                    e.printStackTrace();
+                }
+            }
+            if (null != httpClient) {
+                try {
+                    httpClient.close();
+                } catch (IOException e) {
+                    e.printStackTrace();
+                }
+            }
+        }
+        return responJson;
+    }
+
+    private static HttpRequestBase getRequestEntity(HttpEnum method, String token, String uri, String content) throws UnsupportedEncodingException {
+        switch (method.getNum()) {
+            case 1:
+                HttpGet httpGet = new HttpGet(uri + content);
+                httpGet.addHeader("Content-type", "application/json");
+                httpGet.addHeader("X-Subject-Token", token);
+                return httpGet;
+            case 2:
+                HttpPost httpPost = new HttpPost(uri);
+                httpPost.addHeader("Content-type", "application/json");
+                httpPost.addHeader("X-Subject-Token", token);
+                httpPost.setEntity(new StringEntity(content, "UTF-8"));
+                return httpPost;
+            case 3:
+                HttpPut httpPut = new HttpPut(uri);
+                httpPut.addHeader("Content-type", "application/json");
+                httpPut.addHeader("X-Subject-Token", token);
+                httpPut.setEntity(new StringEntity(content, "UTF-8"));
+                return httpPut;
+            case 4:
+                HttpDelete httpDelete = new HttpDelete(uri + content);
+                httpDelete.addHeader("Content-type", "application/json");
+                httpDelete.addHeader("X-Subject-Token", token);
+                return httpDelete;
+            default:
+                System.out.println("请求方法不对");
+        }
+        return null;
+    }
+
+    private static String convertToString(InputStream is) {
+        if (is == null) {
+            return null;
+        }
+        BufferedReader bf = null;
+        try {
+            StringBuilder sb = new StringBuilder();
+            String temp = "";
+            bf = new BufferedReader(new InputStreamReader(is, "UTF-8"));
+            while ((temp = bf.readLine()) != null) {
+                sb.append(temp);
+            }
+            return sb.toString();
+        } catch (IOException e) {
+            e.printStackTrace();
+            return null;
+        } finally {
+            closeStream(bf);
+            closeStream(is);
+        }
+    }
+
+    private static void closeStream(Closeable closeable) {
+        if (null != closeable) {
+            try {
+                closeable.close();
+            } catch (IOException e) {
+                e.printStackTrace();
+            }
+        }
+    }
+
+    public static R<?> getToken(String ip, int port, String userName, String password) throws Exception {
+        String response = "";
+        String token = "";
+        response = Login.login(ip, port, userName, password);
+        Map<String, Object> rsp = new Gson().fromJson(response, Map.class);
+        String message = (String) rsp.get("message");
+        if (message != null && !"".equals(message)) {
+            System.out.println(message);
+            log.info("获取token信息:{}",message);
+            return R.fail("用户名或密码错误,未获取到token");
+        }
+        token = (String) rsp.get("token");
+        if (token == null || "".equals(token)) {
+            System.out.println("获取到的token为空");
+            log.info("获取token:{}",message);
+            return R.fail("获取到的token为空");
+        }
+        return R.ok(token);
+    }
+
+}

+ 25 - 0
src/main/java/com/sooka/sponest/monitor/dahua/utils/ImgUtils.java

@@ -0,0 +1,25 @@
+package com.sooka.sponest.monitor.dahua.utils;
+
+/******************************
+ *
+ * @author yanhongliang
+ * @date 2022-06-20 10:22 AM
+ ******************************/
+
+public class ImgUtils {
+
+
+    public static String[] getImgUrl(String... path) {
+
+        String[] url = {};
+
+        for (int i = 0; i < path.length; i++) {
+            url[i] =  "https//192.168.100.2:8443/evo-pic/" + path + "?token=" + DSSUtils.getToken();
+        }
+
+        return url;
+
+    }
+
+
+}

+ 70 - 0
src/main/java/com/sooka/sponest/monitor/dahua/utils/RestRedirectStrategy.java

@@ -0,0 +1,70 @@
+package com.sooka.sponest.monitor.dahua.utils;
+
+import org.apache.http.*;
+import org.apache.http.annotation.Contract;
+import org.apache.http.annotation.ThreadingBehavior;
+import org.apache.http.client.methods.*;
+import org.apache.http.impl.client.DefaultRedirectStrategy;
+import org.apache.http.protocol.HttpContext;
+
+import java.net.URI;
+
+/**
+ * 功能简介:重定向策略,GET/POST/PUT/DELTE 都支持重定向
+ * 功能详解:
+ */
+@Contract(threading = ThreadingBehavior.IMMUTABLE)
+public class RestRedirectStrategy extends DefaultRedirectStrategy {
+
+    /**
+     * Redirect methods
+     */
+    private static final String[] REDIRECT_METHODS = new String[]{
+            HttpGet.METHOD_NAME,
+            HttpPut.METHOD_NAME,
+            HttpDelete.METHOD_NAME,
+            HttpPost.METHOD_NAME
+    };
+
+    @Override
+    protected boolean isRedirectable(final String method) {
+        for (final String m : REDIRECT_METHODS) {
+            if (m.equalsIgnoreCase(method)) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+    @Override
+    public HttpUriRequest getRedirect(final HttpRequest request, final HttpResponse response, final HttpContext context) throws ProtocolException {
+        final URI uri = getLocationURI(request, response, context);
+        final String method = request.getRequestLine().getMethod();
+        if (method.equalsIgnoreCase(HttpGet.METHOD_NAME)) {
+            return new HttpGet(uri);
+        } else if (method.equalsIgnoreCase(HttpPost.METHOD_NAME)) {
+            HttpPost post = new HttpPost(uri);
+            if (request instanceof HttpEntityEnclosingRequest) {
+                HttpEntity oldEntity = ((HttpEntityEnclosingRequest) request).getEntity();
+                post.setEntity(oldEntity);
+            }
+            return post;
+        } else if (method.equalsIgnoreCase(HttpPut.METHOD_NAME)) {
+            HttpPut put = new HttpPut(uri);
+            if (request instanceof HttpEntityEnclosingRequest) {
+                HttpEntity oldEntity = ((HttpEntityEnclosingRequest) request).getEntity();
+                put.setEntity(oldEntity);
+            }
+            return put;
+        } else if (method.equalsIgnoreCase(HttpDelete.METHOD_NAME)) {
+            return new HttpDelete(uri);
+        } else {
+            final int status = response.getStatusLine().getStatusCode();
+            if (status == HttpStatus.SC_TEMPORARY_REDIRECT) {
+                return RequestBuilder.copy(request).setUri(uri).build();
+            } else {
+                return new HttpGet(uri);
+            }
+        }
+    }
+}

+ 22 - 0
src/main/java/com/sooka/sponest/monitor/remoteapi/EnableSookaFeignClients.java

@@ -0,0 +1,22 @@
+package com.sooka.sponest.monitor.remoteapi;
+
+import org.springframework.cloud.openfeign.EnableFeignClients;
+
+import java.lang.annotation.*;
+
+@Target(ElementType.TYPE)
+@Retention(RetentionPolicy.RUNTIME)
+@Documented
+@EnableFeignClients
+public @interface EnableSookaFeignClients {
+
+    String[] value() default {};
+
+    String[] basePackages() default {"com.ruoyi", "com.sooka" };
+
+    Class<?>[] basePackageClasses() default {};
+
+    Class<?>[] defaultConfiguration() default {};
+
+    Class<?>[] clients() default {};
+}

+ 4 - 0
src/main/java/com/sooka/sponest/monitor/remoteapi/RemoveApiBaseService.java

@@ -0,0 +1,4 @@
+package com.sooka.sponest.monitor.remoteapi;
+
+public interface RemoveApiBaseService {
+}

+ 34 - 0
src/main/java/com/sooka/sponest/monitor/remoteapi/fallback/lawenforcement/RemoteLawenforcementBaseServiceFallbackFactory.java

@@ -0,0 +1,34 @@
+package com.sooka.sponest.monitor.remoteapi.fallback.lawenforcement;
+
+
+import com.ruoyi.common.core.domain.R;
+import com.sooka.sponest.monitor.remoteapi.service.lawenforcement.RemoteLawenforcementBaseService;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.cloud.openfeign.FallbackFactory;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+import java.util.Map;
+
+@Component
+public class RemoteLawenforcementBaseServiceFallbackFactory implements FallbackFactory<RemoteLawenforcementBaseService> {
+
+    private static final Logger log = LoggerFactory.getLogger(RemoteLawenforcementBaseServiceFallbackFactory.class);
+
+    @Override
+    public RemoteLawenforcementBaseService create(Throwable cause) {
+        log.error("执法中心-服务调用失败:{}", cause.getMessage());
+
+        return new RemoteLawenforcementBaseService() {
+
+            @Override
+            public R deviceOpenOrClose(List<Map<String, Object>> arr) {
+                return null;
+            }
+        };
+
+
+
+    }
+}

+ 51 - 0
src/main/java/com/sooka/sponest/monitor/remoteapi/service/ModulesServiceNameContants.java

@@ -0,0 +1,51 @@
+package com.sooka.sponest.monitor.remoteapi.service;
+
+import com.ruoyi.common.core.constant.ServiceNameConstants;
+
+public class ModulesServiceNameContants extends ServiceNameConstants {
+
+    //综合治理中心中心
+    public static final String CENTER_COMPREHENSIVE = "sooka-sponest-center-comprehensive";
+
+    //数据中心
+    public static final String CENTER_DATA = "sooka-sponest-center-data";
+
+    //测评中心
+    public static final String CENTER_EVALUATION = "sooka-sponest-center-evaluation";
+
+    //事件中心
+    public static final String CENTER_EVENT = "sooka-sponest-center-event";
+
+    //森林防火中心
+    public static final String CENTER_FIRE = "sooka-sponest-center-fire";
+
+    //监控中心
+    public static final String CENTER_MONITOR = "sooka-sponest-center-monitor";
+
+    //一体化平台
+    public static final String CENTER_ONEST = "sooka-sponest-center-onest";
+
+    //病虫灾害中心
+    public static final String CENTER_PESTS = "sooka-sponest-center-pests";
+
+    //秸秆禁烧中心
+    public static final String CENTER_STRAW = "sooka-sponest-center-straw";
+
+    //任务中心
+    public static final String CENTER_TASK = "sooka-sponest-center-task";
+
+    //运管中心
+    public static final String CENTER_TRANMANAGER = "sooka-sponest-center-tranmanager";
+    //文件中心
+    public static final String CENTER_FILE = "sooka-sponest-file";
+    /**
+     * 系统模块的serviceid
+     */
+    public static final String SYSTEM_SERVICE = "sooka-sponest-system";
+
+    public static final String MIDDLE_GROUND_SERVICE = "sooka-middleGround";
+
+    //执法
+    public static final String CENTER_LAWENFORCEMENT = "sooka-sponest-lawenforcement";
+
+}

+ 24 - 0
src/main/java/com/sooka/sponest/monitor/remoteapi/service/lawenforcement/RemoteLawenforcementBaseService.java

@@ -0,0 +1,24 @@
+package com.sooka.sponest.monitor.remoteapi.service.lawenforcement;
+
+
+import com.ruoyi.common.core.domain.R;
+import com.sooka.sponest.monitor.remoteapi.fallback.lawenforcement.RemoteLawenforcementBaseServiceFallbackFactory;
+import com.sooka.sponest.monitor.remoteapi.service.ModulesServiceNameContants;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.PostMapping;
+
+import java.util.List;
+import java.util.Map;
+
+
+@FeignClient(
+        contextId = "RemoteLawenforcementBaseService",
+        value = ModulesServiceNameContants.CENTER_LAWENFORCEMENT,
+        fallbackFactory = RemoteLawenforcementBaseServiceFallbackFactory.class
+)
+public interface RemoteLawenforcementBaseService {
+
+    @PostMapping("/device/deviceOpenOrClose")
+    public R deviceOpenOrClose(List<Map<String, Object>> arr);
+
+}

+ 78 - 0
src/main/java/com/sooka/sponest/monitor/util/BeanUtil.java

@@ -0,0 +1,78 @@
+package com.sooka.sponest.monitor.util;
+
+import com.dahuatech.hutool.json.JSONNull;
+import com.ruoyi.common.core.utils.StringUtils;
+
+import java.lang.reflect.Field;
+import java.lang.reflect.Modifier;
+import java.util.HashMap;
+import java.util.Map;
+
+public class BeanUtil {
+
+    /**
+     * map转对象
+     *
+     * @param map
+     * @param beanClass
+     * @param <T>
+     * @return
+     * @throws Exception
+     */
+    public static <T> T mapToBean(Map map, Class<T> beanClass) throws Exception {
+        T object = beanClass.newInstance();
+        Field[] fields = object.getClass().getDeclaredFields();
+        for (Field field : fields) {
+            int mod = field.getModifiers();
+            if (Modifier.isStatic(mod) || Modifier.isFinal(mod)) {
+                continue;
+            }
+            field.setAccessible(true);
+            if (map.containsKey(field.getName())) {
+                field.set(object, map.get(field.getName()) instanceof JSONNull ? StringUtils.EMPTY : map.get(field.getName()));
+            }
+        }
+        return object;
+    }
+
+    /**
+     * 实体类转Map
+     *
+     * @param object
+     * @return
+     */
+    public static Map<String, Object> beanToMap(Object object) {
+        Map<String, Object> map = new HashMap();
+        for (Field field : object.getClass().getDeclaredFields()) {
+            try {
+                boolean flag = field.isAccessible();
+                field.setAccessible(true);
+                Object o = field.get(object);
+                map.put(field.getName(), o);
+                field.setAccessible(flag);
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+        }
+        return map;
+    }
+
+    public static <T> T arrayToBean(String[] values, Class<T> beanClass) throws Exception {
+        T object = beanClass.newInstance();
+        Field[] fields = object.getClass().getDeclaredFields();
+        for (int i = 0; i < fields.length; i++) {
+            int mod = fields[i].getModifiers();
+            if (Modifier.isStatic(mod) || Modifier.isFinal(mod)) {
+                continue;
+            }
+            // 检查 values 数组的长度
+            if (i < values.length) {
+                fields[i].setAccessible(true);
+                fields[i].set(object, values[i].split(" ")[0]); // 只取第一个值
+            }
+//            fields[i].setAccessible(true);
+//            fields[i].set(object, values[i].split(" ")[0]);
+        }
+        return object;
+    }
+}

+ 9 - 0
src/main/resources/banner.txt

@@ -0,0 +1,9 @@
+Spring Boot Version: ${spring-boot.version}
+Spring Application Name: ${spring.application.name}
+
+  __________   ____ |  | _______          ____________   ____   ____   ____   _______/  |_
+
+ /  ___/  _ \ /  _ \|  |/ /\__  \        /  ___/\____ \ /  _ \ /    \_/ __ \ /  ___/\   __\
+ \___ (  <_> |  <_> )    <  / __ \_      \___ \ |  |_> >  <_> )   |  \  ___/ \___ \  |  |
+/____  >____/ \____/|__|_ \(____  /     /____  >|   __/ \____/|___|  /\___  >____  > |__|
+     \/                  \/     \/           \/ |__|               \/     \/     \/

+ 26 - 0
src/main/resources/bootstrap.yml

@@ -0,0 +1,26 @@
+# Tomcat
+server:
+  port: 3204
+# Spring
+spring:
+  application:
+    # 应用名称
+    name: sooka-sponest-center-monitor-pollingPositionMsg
+  profiles:
+    # 环境配置
+    active: dev
+  cloud:
+    nacos:
+      discovery:
+        # 服务注册地址
+        server-addr: www.sooka.onest.com:8848
+#         server-addr: 127.0.0.1:8848
+      config:
+        # 配置中心地址
+        server-addr: www.sooka.onest.com:8848
+#        server-addr: 127.0.0.1:8848
+        # 配置文件格式
+        file-extension: yml
+        # 共享配置
+        shared-configs:
+          - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}

+ 45 - 0
src/main/resources/mapper/monitor/camera/CentermonitorTCameraMapper.xml

@@ -0,0 +1,45 @@
+<?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.sooka.sponest.monitor.camera.mapper.CentermonitorTCameraMapper">
+
+    <update id="updateBatchLawEnforcementInstrumentState">
+        UPDATE centermonitor_t_camera
+        SET working_status = CASE camera_code
+        <foreach collection="list" item="item">
+            WHEN (SELECT channel_code FROM centermonitor_t_camerachannel WHERE device_code = #{item.code} AND
+            channel_type = 2 LIMIT 1) THEN
+            CASE
+            WHEN #{item.status} = '0' THEN '1'
+            ELSE '0'
+            END
+        </foreach>
+        END,
+        offline_reason = ''
+        WHERE camera_code IN (
+        <foreach collection="list" item="item" separator=",">
+            (SELECT channel_code FROM centermonitor_t_camerachannel WHERE device_code = #{item.code} AND channel_type =
+            2 LIMIT 1)
+        </foreach>
+        );
+    </update>
+
+    <update id="updateBatchVideoRecorderOfflineState">
+        UPDATE centermonitor_t_camera
+        SET working_status = 1
+        WHERE camera_code in
+        <foreach collection="list" item="item" separator="," open="(" close=")">
+            #{item}
+        </foreach>
+    </update>
+
+    <update id="updateBatchVideoRecorderOnlineState">
+        UPDATE centermonitor_t_camera
+        SET working_status = 0
+        WHERE camera_code in
+        <foreach collection="list" item="item" separator="," open="(" close=")">
+            #{item}
+        </foreach>
+    </update>
+</mapper>

BIN
target/center-monitor-quartz.jar


BIN
target/center-monitor-quartz.jar.original


+ 9 - 0
target/classes/banner.txt

@@ -0,0 +1,9 @@
+Spring Boot Version: ${spring-boot.version}
+Spring Application Name: ${spring.application.name}
+
+  __________   ____ |  | _______          ____________   ____   ____   ____   _______/  |_
+
+ /  ___/  _ \ /  _ \|  |/ /\__  \        /  ___/\____ \ /  _ \ /    \_/ __ \ /  ___/\   __\
+ \___ (  <_> |  <_> )    <  / __ \_      \___ \ |  |_> >  <_> )   |  \  ___/ \___ \  |  |
+/____  >____/ \____/|__|_ \(____  /     /____  >|   __/ \____/|___|  /\___  >____  > |__|
+     \/                  \/     \/           \/ |__|               \/     \/     \/

+ 26 - 0
target/classes/bootstrap.yml

@@ -0,0 +1,26 @@
+# Tomcat
+server:
+  port: 3204
+# Spring
+spring:
+  application:
+    # 应用名称
+    name: sooka-sponest-center-monitor-pollingPositionMsg
+  profiles:
+    # 环境配置
+    active: dev
+  cloud:
+    nacos:
+      discovery:
+        # 服务注册地址
+        server-addr: www.sooka.onest.com:8848
+#         server-addr: 127.0.0.1:8848
+      config:
+        # 配置中心地址
+        server-addr: www.sooka.onest.com:8848
+#        server-addr: 127.0.0.1:8848
+        # 配置文件格式
+        file-extension: yml
+        # 共享配置
+        shared-configs:
+          - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}

BIN
target/classes/com/sooka/sponest/monitor/SookaMonitorPollingPositionMsgApplication.class


BIN
target/classes/com/sooka/sponest/monitor/base/controller/BaseController.class


BIN
target/classes/com/sooka/sponest/monitor/base/domain/BaseBusinessEntity.class


BIN
target/classes/com/sooka/sponest/monitor/base/domain/DataTestVO.class


BIN
target/classes/com/sooka/sponest/monitor/base/service/impl/BaseService.class


BIN
target/classes/com/sooka/sponest/monitor/base/util/database/DynamicDataSource.class


BIN
target/classes/com/sooka/sponest/monitor/base/util/database/DynamicDataSourceAspect.class


BIN
target/classes/com/sooka/sponest/monitor/base/util/database/DynamicDataSourceSwitcher.class


BIN
target/classes/com/sooka/sponest/monitor/base/util/database/GlobalTransactionalRabbitMQ.class


BIN
target/classes/com/sooka/sponest/monitor/base/util/database/MultipleDataSourceConfig.class


BIN
target/classes/com/sooka/sponest/monitor/base/util/database/MyDataSource.class


BIN
target/classes/com/sooka/sponest/monitor/camera/mapper/CentermonitorTCameraMapper.class


BIN
target/classes/com/sooka/sponest/monitor/dahua/controller/EquipmentStatusTaskController.class


BIN
target/classes/com/sooka/sponest/monitor/dahua/login/Login.class


BIN
target/classes/com/sooka/sponest/monitor/dahua/login/bean/LoginFirst.class


BIN
target/classes/com/sooka/sponest/monitor/dahua/login/bean/LoginSecond.class


BIN
target/classes/com/sooka/sponest/monitor/dahua/utils/DSSUtils.class


BIN
target/classes/com/sooka/sponest/monitor/dahua/utils/HttpEnum.class


BIN
target/classes/com/sooka/sponest/monitor/dahua/utils/HttpTestUtils$1.class


BIN
target/classes/com/sooka/sponest/monitor/dahua/utils/HttpTestUtils$2.class


BIN
target/classes/com/sooka/sponest/monitor/dahua/utils/HttpTestUtils.class


BIN
target/classes/com/sooka/sponest/monitor/dahua/utils/ImgUtils.class


BIN
target/classes/com/sooka/sponest/monitor/dahua/utils/RestRedirectStrategy.class


BIN
target/classes/com/sooka/sponest/monitor/dahua/utils/bean.class


BIN
target/classes/com/sooka/sponest/monitor/remoteapi/EnableSookaFeignClients.class


BIN
target/classes/com/sooka/sponest/monitor/remoteapi/RemoveApiBaseService.class


BIN
target/classes/com/sooka/sponest/monitor/remoteapi/fallback/lawenforcement/RemoteLawenforcementBaseServiceFallbackFactory$1.class


BIN
target/classes/com/sooka/sponest/monitor/remoteapi/fallback/lawenforcement/RemoteLawenforcementBaseServiceFallbackFactory.class


BIN
target/classes/com/sooka/sponest/monitor/remoteapi/service/ModulesServiceNameContants.class


BIN
target/classes/com/sooka/sponest/monitor/remoteapi/service/lawenforcement/RemoteLawenforcementBaseService.class


BIN
target/classes/com/sooka/sponest/monitor/util/BeanUtil.class


+ 45 - 0
target/classes/mapper/monitor/camera/CentermonitorTCameraMapper.xml

@@ -0,0 +1,45 @@
+<?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.sooka.sponest.monitor.camera.mapper.CentermonitorTCameraMapper">
+
+    <update id="updateBatchLawEnforcementInstrumentState">
+        UPDATE centermonitor_t_camera
+        SET working_status = CASE camera_code
+        <foreach collection="list" item="item">
+            WHEN (SELECT channel_code FROM centermonitor_t_camerachannel WHERE device_code = #{item.code} AND
+            channel_type = 2 LIMIT 1) THEN
+            CASE
+            WHEN #{item.status} = '0' THEN '1'
+            ELSE '0'
+            END
+        </foreach>
+        END,
+        offline_reason = ''
+        WHERE camera_code IN (
+        <foreach collection="list" item="item" separator=",">
+            (SELECT channel_code FROM centermonitor_t_camerachannel WHERE device_code = #{item.code} AND channel_type =
+            2 LIMIT 1)
+        </foreach>
+        );
+    </update>
+
+    <update id="updateBatchVideoRecorderOfflineState">
+        UPDATE centermonitor_t_camera
+        SET working_status = 1
+        WHERE camera_code in
+        <foreach collection="list" item="item" separator="," open="(" close=")">
+            #{item}
+        </foreach>
+    </update>
+
+    <update id="updateBatchVideoRecorderOnlineState">
+        UPDATE centermonitor_t_camera
+        SET working_status = 0
+        WHERE camera_code in
+        <foreach collection="list" item="item" separator="," open="(" close=")">
+            #{item}
+        </foreach>
+    </update>
+</mapper>

+ 5 - 0
target/maven-archiver/pom.properties

@@ -0,0 +1,5 @@
+#Generated by Maven
+#Wed Feb 12 09:15:01 CST 2025
+version=3.4.0
+groupId=com.sooka.onest
+artifactId=center-monitor-quartz

+ 104 - 0
target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst

@@ -0,0 +1,104 @@
+com\sooka\sponest\monitor\camera\domain\IndexLineChartsVo.class
+com\sooka\sponest\monitor\meiqiguan\domain\GasTankDevices.class
+com\sooka\sponest\monitor\dahua\service\ICenternonitorTDahuaOperateLogService.class
+com\sooka\sponest\monitor\device\domain\CentermonitorTMonitoringThresholdAtmosphere.class
+com\sooka\sponest\monitor\meiqiguan\controller\GasTankDevicesController.class
+com\sooka\sponest\monitor\device\mapper\CentermonitorTMonitoringDeviceThresholdMapper.class
+com\sooka\sponest\monitor\device\service\impl\CentermonitorTMonitoringDeviceWaterQualityThresholdServiceImpl.class
+com\sooka\sponest\monitor\base\util\database\MultipleDataSourceConfig.class
+com\sooka\sponest\monitor\device\domain\CentermonitorTMonitoringDataWaterQuality.class
+com\sooka\sponest\monitor\device\service\ICentermonitorTMonitoringDeviceWaterQualityThresholdService.class
+com\sooka\sponest\monitor\device\domain\CentermonitorTMonitoringThresholdSoilMoisture.class
+com\sooka\sponest\monitor\device\service\impl\CentermonitorTMonitoringDeviceServiceImpl.class
+com\sooka\sponest\monitor\device\service\ICentermonitorTMonitoringDeviceSoilMoistureThresholdService.class
+com\sooka\sponest\monitor\device\domain\CentermonitorTMonitoringDataWaterVelocity.class
+com\sooka\sponest\monitor\remoteapi\service\lawenforcement\RemoteLawenforcementBaseService.class
+com\sooka\sponest\monitor\dahua\utils\HttpEnum.class
+com\sooka\sponest\monitor\SookaMonitorQuartzApplication.class
+com\sooka\sponest\monitor\util\ScheduledTasks.class
+com\sooka\sponest\monitor\meiqiguan\domain\vo\GasTankHistoricalTrajectoryVo.class
+com\sooka\sponest\monitor\camera\mapper\CentermonitorTCameraMapper.class
+com\sooka\sponest\monitor\device\service\ICentermonitorTMonitoringDeviceThresholdService.class
+com\sooka\sponest\monitor\base\controller\BaseController.class
+com\sooka\sponest\monitor\dahua\controller\EquipmentStatusTaskController.class
+com\sooka\sponest\monitor\base\util\database\GlobalTransactionalRabbitMQ.class
+com\sooka\sponest\monitor\device\service\impl\CentermonitorTMonitoringDeviceThresholdServiceImpl.class
+com\sooka\sponest\monitor\remoteapi\fallback\event\RemoteEventBaseServiceFallbackFactory$1.class
+com\sooka\sponest\monitor\dahua\service\impl\CenternonitorTDahuaOperateLogServiceImpl.class
+com\sooka\sponest\monitor\device\domain\CentermonitorTMonitoringDataWaterPressure.class
+com\sooka\sponest\monitor\dahua\controller\DahuaOperateLogBlackTask.class
+com\sooka\sponest\monitor\device\domain\CentermonitorTMonitoringThresholdWaterQuality.class
+com\sooka\sponest\monitor\dahua\login\Login.class
+com\sooka\sponest\monitor\dahua\login\bean\LoginSecond.class
+com\sooka\sponest\monitor\dahua\mapper\CenternonitorTDahuaOperateLogUrlMapper.class
+com\sooka\sponest\monitor\device\mapper\CentermonitorTMonitoringDeviceWaterQualityThresholdMapper.class
+com\sooka\sponest\monitor\base\util\database\DynamicDataSourceAspect.class
+com\sooka\sponest\monitor\device\controller\CentermonitorTMonitoringDeviceController.class
+com\sooka\sponest\monitor\dahua\utils\bean.class
+com\sooka\sponest\monitor\device\service\ICentermonitorTMonitoringDeviceService.class
+com\sooka\sponest\monitor\meiqiguan\service\IGasTankHistoricalTrajectoryService.class
+com\sooka\sponest\monitor\dahua\utils\RestRedirectStrategy.class
+com\sooka\sponest\monitor\meiqiguan\service\IGasTankDevicesService.class
+com\sooka\sponest\monitor\remoteapi\fallback\data\RemoteDataBaseServiceFallbackFactory.class
+com\sooka\sponest\monitor\remoteapi\service\system\RemoteService.class
+com\sooka\sponest\monitor\feign\CenterMonitorFeignController.class
+com\sooka\sponest\monitor\device\domain\CentermonitorTMonitoringDataInsectPests.class
+com\sooka\sponest\monitor\base\util\database\DynamicDataSourceSwitcher.class
+com\sooka\sponest\monitor\remoteapi\fallback\file\RemoteFileServiceFallbackFactory.class
+com\sooka\sponest\monitor\dahua\domain\CenternonitorTDahuaOperateLogUrl.class
+com\sooka\sponest\monitor\device\domain\CentermonitorTMonitoringDataAtmosphere.class
+com\sooka\sponest\monitor\dahua\login\bean\LoginFirst.class
+com\sooka\sponest\monitor\meiqiguan\controller\GasTankHistoricalTrajectoryController.class
+com\sooka\sponest\monitor\meiqiguan\mapper\GasTankHistoricalTrajectoryMapper.class
+com\sooka\sponest\monitor\meiqiguan\service\impl\GasTankHistoricalTrajectoryServiceImpl.class
+com\sooka\sponest\monitor\remoteapi\fallback\lawenforcement\RemoteLawenforcementBaseServiceFallbackFactory.class
+com\sooka\sponest\monitor\base\domain\DataTestVO.class
+com\sooka\sponest\monitor\remoteapi\EnableSookaFeignClients.class
+com\sooka\sponest\monitor\base\service\impl\BaseService.class
+com\sooka\sponest\monitor\dahua\mapper\CenternonitorTDahuaOperateLogMapper.class
+com\sooka\sponest\monitor\remoteapi\service\ModulesServiceNameContants.class
+com\sooka\sponest\monitor\dahua\utils\ImgUtils.class
+com\sooka\sponest\monitor\device\mapper\CentermonitorTMonitoringDeviceSoilMoistureThresholdMapper.class
+com\sooka\sponest\monitor\device\domain\CentermonitorTMonitoringDataSoilMoisture.class
+com\sooka\sponest\monitor\meiqiguan\domain\vo\GasTankDevicesVo.class
+com\sooka\sponest\monitor\meiqiguan\service\IGasTankTravelMileageService.class
+com\sooka\sponest\monitor\device\domain\CentermonitorTMonitoringThresholdWaterVelocity.class
+com\sooka\sponest\monitor\device\mapper\CentermonitorTMonitoringDeviceMapper.class
+com\sooka\sponest\monitor\remoteapi\RemoveApiBaseService.class
+com\sooka\sponest\monitor\meiqiguan\controller\GasTankTravelMileageController.class
+com\sooka\sponest\monitor\camera\service\impl\CentermonitorTCameraServiceImpl.class
+com\sooka\sponest\monitor\remoteapi\fallback\data\RemoteDataBaseServiceFallbackFactory$1.class
+com\sooka\sponest\monitor\remoteapi\fallback\system\RemoteSystemBaseServiceFallbackFactory$1.class
+com\sooka\sponest\monitor\meiqiguan\service\impl\GasTankTravelMileageServiceImpl.class
+com\sooka\sponest\monitor\dahua\utils\DSSUtils.class
+com\sooka\sponest\monitor\device\service\impl\CentermonitorTMonitoringDeviceSoilMoistureThresholdServiceImpl.class
+com\sooka\sponest\monitor\device\domain\CentermonitorTMonitoringDevice.class
+com\sooka\sponest\monitor\device\domain\SensorEventVo.class
+com\sooka\sponest\monitor\base\domain\BaseBusinessEntity.class
+com\sooka\sponest\monitor\meiqiguan\mapper\GasTankTravelMileageMapper.class
+com\sooka\sponest\monitor\base\util\database\DynamicDataSource.class
+com\sooka\sponest\monitor\dahua\utils\HttpTestUtils$2.class
+com\sooka\sponest\monitor\device\mapper\CentermonitorTMonitoringDeviceAtmosphereThresholdMapper.class
+com\sooka\sponest\monitor\meiqiguan\domain\GasTankTravelMileage.class
+com\sooka\sponest\monitor\dahua\utils\HttpTestUtils.class
+com\sooka\sponest\monitor\util\BeanUtil.class
+com\sooka\sponest\monitor\meiqiguan\domain\dto\GasTankDevicesDTO.class
+com\sooka\sponest\monitor\meiqiguan\service\impl\GasTankDevicesServiceImpl.class
+com\sooka\sponest\monitor\remoteapi\service\data\RemoteDataBaseService.class
+com\sooka\sponest\monitor\meiqiguan\domain\GasTankHistoricalTrajectory.class
+com\sooka\sponest\monitor\camera\service\ICentermonitorTCameraService.class
+com\sooka\sponest\monitor\camera\domain\CameraCodeAndNameVO.class
+com\sooka\sponest\monitor\dahua\controller\DahuaOperateLogWhiteTask.class
+com\sooka\sponest\monitor\remoteapi\service\file\RemoteFileBaseService.class
+com\sooka\sponest\monitor\camera\controller\IndexLineChartCountTaskController.class
+com\sooka\sponest\monitor\remoteapi\fallback\system\RemoteSystemBaseServiceFallbackFactory.class
+com\sooka\sponest\monitor\device\service\ICentermonitorTMonitoringDeviceAtmosphereThresholdService.class
+com\sooka\sponest\monitor\remoteapi\service\event\RemoteEventBaseService.class
+com\sooka\sponest\monitor\dahua\utils\HttpTestUtils$1.class
+com\sooka\sponest\monitor\device\domain\MonitorBaseEntity.class
+com\sooka\sponest\monitor\remoteapi\fallback\lawenforcement\RemoteLawenforcementBaseServiceFallbackFactory$1.class
+com\sooka\sponest\monitor\remoteapi\fallback\event\RemoteEventBaseServiceFallbackFactory.class
+com\sooka\sponest\monitor\base\util\database\MyDataSource.class
+com\sooka\sponest\monitor\dahua\domain\CenternonitorTDahuaOperateLog.class
+com\sooka\sponest\monitor\device\service\impl\CentermonitorTMonitoringDeviceAtmosphereThresholdServiceImpl.class
+com\sooka\sponest\monitor\meiqiguan\mapper\GasTankDevicesMapper.class

+ 97 - 0
target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst

@@ -0,0 +1,97 @@
+D:\work_space\center-monitor-quartz\src\main\java\com\sooka\sponest\monitor\meiqiguan\service\impl\GasTankTravelMileageServiceImpl.java
+D:\work_space\center-monitor-quartz\src\main\java\com\sooka\sponest\monitor\base\util\database\DynamicDataSourceSwitcher.java
+D:\work_space\center-monitor-quartz\src\main\java\com\sooka\sponest\monitor\device\domain\MonitorBaseEntity.java
+D:\work_space\center-monitor-quartz\src\main\java\com\sooka\sponest\monitor\meiqiguan\domain\vo\GasTankHistoricalTrajectoryVo.java
+D:\work_space\center-monitor-quartz\src\main\java\com\sooka\sponest\monitor\meiqiguan\mapper\GasTankTravelMileageMapper.java
+D:\work_space\center-monitor-quartz\src\main\java\com\sooka\sponest\monitor\device\service\ICentermonitorTMonitoringDeviceAtmosphereThresholdService.java
+D:\work_space\center-monitor-quartz\src\main\java\com\sooka\sponest\monitor\meiqiguan\controller\GasTankHistoricalTrajectoryController.java
+D:\work_space\center-monitor-quartz\src\main\java\com\sooka\sponest\monitor\base\util\database\DynamicDataSource.java
+D:\work_space\center-monitor-quartz\src\main\java\com\sooka\sponest\monitor\meiqiguan\domain\GasTankHistoricalTrajectory.java
+D:\work_space\center-monitor-quartz\src\main\java\com\sooka\sponest\monitor\SookaMonitorQuartzApplication.java
+D:\work_space\center-monitor-quartz\src\main\java\com\sooka\sponest\monitor\dahua\utils\DSSUtils.java
+D:\work_space\center-monitor-quartz\src\main\java\com\sooka\sponest\monitor\camera\service\impl\CentermonitorTCameraServiceImpl.java
+D:\work_space\center-monitor-quartz\src\main\java\com\sooka\sponest\monitor\device\service\impl\CentermonitorTMonitoringDeviceSoilMoistureThresholdServiceImpl.java
+D:\work_space\center-monitor-quartz\src\main\java\com\sooka\sponest\monitor\device\service\impl\CentermonitorTMonitoringDeviceWaterQualityThresholdServiceImpl.java
+D:\work_space\center-monitor-quartz\src\main\java\com\sooka\sponest\monitor\device\mapper\CentermonitorTMonitoringDeviceSoilMoistureThresholdMapper.java
+D:\work_space\center-monitor-quartz\src\main\java\com\sooka\sponest\monitor\camera\domain\CameraCodeAndNameVO.java
+D:\work_space\center-monitor-quartz\src\main\java\com\sooka\sponest\monitor\device\service\impl\CentermonitorTMonitoringDeviceThresholdServiceImpl.java
+D:\work_space\center-monitor-quartz\src\main\java\com\sooka\sponest\monitor\remoteapi\service\event\RemoteEventBaseService.java
+D:\work_space\center-monitor-quartz\src\main\java\com\sooka\sponest\monitor\device\domain\CentermonitorTMonitoringDevice.java
+D:\work_space\center-monitor-quartz\src\main\java\com\sooka\sponest\monitor\device\service\impl\CentermonitorTMonitoringDeviceAtmosphereThresholdServiceImpl.java
+D:\work_space\center-monitor-quartz\src\main\java\com\sooka\sponest\monitor\base\util\database\DynamicDataSourceAspect.java
+D:\work_space\center-monitor-quartz\src\main\java\com\sooka\sponest\monitor\dahua\controller\DahuaOperateLogWhiteTask.java
+D:\work_space\center-monitor-quartz\src\main\java\com\sooka\sponest\monitor\remoteapi\RemoveApiBaseService.java
+D:\work_space\center-monitor-quartz\src\main\java\com\sooka\sponest\monitor\meiqiguan\domain\GasTankTravelMileage.java
+D:\work_space\center-monitor-quartz\src\main\java\com\sooka\sponest\monitor\meiqiguan\service\impl\GasTankDevicesServiceImpl.java
+D:\work_space\center-monitor-quartz\src\main\java\com\sooka\sponest\monitor\meiqiguan\domain\dto\GasTankDevicesDTO.java
+D:\work_space\center-monitor-quartz\src\main\java\com\sooka\sponest\monitor\dahua\utils\HttpTestUtils.java
+D:\work_space\center-monitor-quartz\src\main\java\com\sooka\sponest\monitor\meiqiguan\mapper\GasTankHistoricalTrajectoryMapper.java
+D:\work_space\center-monitor-quartz\src\main\java\com\sooka\sponest\monitor\device\service\ICentermonitorTMonitoringDeviceSoilMoistureThresholdService.java
+D:\work_space\center-monitor-quartz\src\main\java\com\sooka\sponest\monitor\base\domain\BaseBusinessEntity.java
+D:\work_space\center-monitor-quartz\src\main\java\com\sooka\sponest\monitor\feign\CenterMonitorFeignController.java
+D:\work_space\center-monitor-quartz\src\main\java\com\sooka\sponest\monitor\dahua\utils\RestRedirectStrategy.java
+D:\work_space\center-monitor-quartz\src\main\java\com\sooka\sponest\monitor\device\domain\SensorEventVo.java
+D:\work_space\center-monitor-quartz\src\main\java\com\sooka\sponest\monitor\device\mapper\CentermonitorTMonitoringDeviceWaterQualityThresholdMapper.java
+D:\work_space\center-monitor-quartz\src\main\java\com\sooka\sponest\monitor\camera\controller\IndexLineChartCountTaskController.java
+D:\work_space\center-monitor-quartz\src\main\java\com\sooka\sponest\monitor\remoteapi\service\file\RemoteFileBaseService.java
+D:\work_space\center-monitor-quartz\src\main\java\com\sooka\sponest\monitor\dahua\service\ICenternonitorTDahuaOperateLogService.java
+D:\work_space\center-monitor-quartz\src\main\java\com\sooka\sponest\monitor\util\ScheduledTasks.java
+D:\work_space\center-monitor-quartz\src\main\java\com\sooka\sponest\monitor\dahua\domain\CenternonitorTDahuaOperateLogUrl.java
+D:\work_space\center-monitor-quartz\src\main\java\com\sooka\sponest\monitor\meiqiguan\controller\GasTankDevicesController.java
+D:\work_space\center-monitor-quartz\src\main\java\com\sooka\sponest\monitor\meiqiguan\domain\GasTankDevices.java
+D:\work_space\center-monitor-quartz\src\main\java\com\sooka\sponest\monitor\dahua\controller\EquipmentStatusTaskController.java
+D:\work_space\center-monitor-quartz\src\main\java\com\sooka\sponest\monitor\dahua\utils\HttpEnum.java
+D:\work_space\center-monitor-quartz\src\main\java\com\sooka\sponest\monitor\device\domain\CentermonitorTMonitoringThresholdWaterQuality.java
+D:\work_space\center-monitor-quartz\src\main\java\com\sooka\sponest\monitor\base\service\impl\BaseService.java
+D:\work_space\center-monitor-quartz\src\main\java\com\sooka\sponest\monitor\device\mapper\CentermonitorTMonitoringDeviceAtmosphereThresholdMapper.java
+D:\work_space\center-monitor-quartz\src\main\java\com\sooka\sponest\monitor\meiqiguan\service\impl\GasTankHistoricalTrajectoryServiceImpl.java
+D:\work_space\center-monitor-quartz\src\main\java\com\sooka\sponest\monitor\meiqiguan\domain\vo\GasTankDevicesVo.java
+D:\work_space\center-monitor-quartz\src\main\java\com\sooka\sponest\monitor\device\service\ICentermonitorTMonitoringDeviceThresholdService.java
+D:\work_space\center-monitor-quartz\src\main\java\com\sooka\sponest\monitor\meiqiguan\service\IGasTankDevicesService.java
+D:\work_space\center-monitor-quartz\src\main\java\com\sooka\sponest\monitor\dahua\controller\DahuaOperateLogBlackTask.java
+D:\work_space\center-monitor-quartz\src\main\java\com\sooka\sponest\monitor\base\util\database\MultipleDataSourceConfig.java
+D:\work_space\center-monitor-quartz\src\main\java\com\sooka\sponest\monitor\camera\mapper\CentermonitorTCameraMapper.java
+D:\work_space\center-monitor-quartz\src\main\java\com\sooka\sponest\monitor\device\domain\CentermonitorTMonitoringDataWaterQuality.java
+D:\work_space\center-monitor-quartz\src\main\java\com\sooka\sponest\monitor\remoteapi\service\lawenforcement\RemoteLawenforcementBaseService.java
+D:\work_space\center-monitor-quartz\src\main\java\com\sooka\sponest\monitor\device\domain\CentermonitorTMonitoringDataWaterPressure.java
+D:\work_space\center-monitor-quartz\src\main\java\com\sooka\sponest\monitor\device\domain\CentermonitorTMonitoringThresholdWaterVelocity.java
+D:\work_space\center-monitor-quartz\src\main\java\com\sooka\sponest\monitor\device\mapper\CentermonitorTMonitoringDeviceMapper.java
+D:\work_space\center-monitor-quartz\src\main\java\com\sooka\sponest\monitor\device\domain\CentermonitorTMonitoringThresholdAtmosphere.java
+D:\work_space\center-monitor-quartz\src\main\java\com\sooka\sponest\monitor\remoteapi\fallback\event\RemoteEventBaseServiceFallbackFactory.java
+D:\work_space\center-monitor-quartz\src\main\java\com\sooka\sponest\monitor\dahua\utils\ImgUtils.java
+D:\work_space\center-monitor-quartz\src\main\java\com\sooka\sponest\monitor\dahua\login\bean\LoginSecond.java
+D:\work_space\center-monitor-quartz\src\main\java\com\sooka\sponest\monitor\base\domain\DataTestVO.java
+D:\work_space\center-monitor-quartz\src\main\java\com\sooka\sponest\monitor\remoteapi\fallback\data\RemoteDataBaseServiceFallbackFactory.java
+D:\work_space\center-monitor-quartz\src\main\java\com\sooka\sponest\monitor\dahua\mapper\CenternonitorTDahuaOperateLogUrlMapper.java
+D:\work_space\center-monitor-quartz\src\main\java\com\sooka\sponest\monitor\device\domain\CentermonitorTMonitoringDataWaterVelocity.java
+D:\work_space\center-monitor-quartz\src\main\java\com\sooka\sponest\monitor\dahua\login\Login.java
+D:\work_space\center-monitor-quartz\src\main\java\com\sooka\sponest\monitor\device\service\ICentermonitorTMonitoringDeviceWaterQualityThresholdService.java
+D:\work_space\center-monitor-quartz\src\main\java\com\sooka\sponest\monitor\camera\domain\IndexLineChartsVo.java
+D:\work_space\center-monitor-quartz\src\main\java\com\sooka\sponest\monitor\remoteapi\service\ModulesServiceNameContants.java
+D:\work_space\center-monitor-quartz\src\main\java\com\sooka\sponest\monitor\dahua\mapper\CenternonitorTDahuaOperateLogMapper.java
+D:\work_space\center-monitor-quartz\src\main\java\com\sooka\sponest\monitor\meiqiguan\mapper\GasTankDevicesMapper.java
+D:\work_space\center-monitor-quartz\src\main\java\com\sooka\sponest\monitor\device\domain\CentermonitorTMonitoringThresholdSoilMoisture.java
+D:\work_space\center-monitor-quartz\src\main\java\com\sooka\sponest\monitor\remoteapi\service\system\RemoteService.java
+D:\work_space\center-monitor-quartz\src\main\java\com\sooka\sponest\monitor\device\controller\CentermonitorTMonitoringDeviceController.java
+D:\work_space\center-monitor-quartz\src\main\java\com\sooka\sponest\monitor\device\domain\CentermonitorTMonitoringDataInsectPests.java
+D:\work_space\center-monitor-quartz\src\main\java\com\sooka\sponest\monitor\device\service\impl\CentermonitorTMonitoringDeviceServiceImpl.java
+D:\work_space\center-monitor-quartz\src\main\java\com\sooka\sponest\monitor\base\controller\BaseController.java
+D:\work_space\center-monitor-quartz\src\main\java\com\sooka\sponest\monitor\base\util\database\MyDataSource.java
+D:\work_space\center-monitor-quartz\src\main\java\com\sooka\sponest\monitor\remoteapi\service\data\RemoteDataBaseService.java
+D:\work_space\center-monitor-quartz\src\main\java\com\sooka\sponest\monitor\meiqiguan\service\IGasTankTravelMileageService.java
+D:\work_space\center-monitor-quartz\src\main\java\com\sooka\sponest\monitor\device\mapper\CentermonitorTMonitoringDeviceThresholdMapper.java
+D:\work_space\center-monitor-quartz\src\main\java\com\sooka\sponest\monitor\base\util\database\GlobalTransactionalRabbitMQ.java
+D:\work_space\center-monitor-quartz\src\main\java\com\sooka\sponest\monitor\dahua\domain\CenternonitorTDahuaOperateLog.java
+D:\work_space\center-monitor-quartz\src\main\java\com\sooka\sponest\monitor\meiqiguan\service\IGasTankHistoricalTrajectoryService.java
+D:\work_space\center-monitor-quartz\src\main\java\com\sooka\sponest\monitor\device\domain\CentermonitorTMonitoringDataSoilMoisture.java
+D:\work_space\center-monitor-quartz\src\main\java\com\sooka\sponest\monitor\device\service\ICentermonitorTMonitoringDeviceService.java
+D:\work_space\center-monitor-quartz\src\main\java\com\sooka\sponest\monitor\remoteapi\EnableSookaFeignClients.java
+D:\work_space\center-monitor-quartz\src\main\java\com\sooka\sponest\monitor\remoteapi\fallback\lawenforcement\RemoteLawenforcementBaseServiceFallbackFactory.java
+D:\work_space\center-monitor-quartz\src\main\java\com\sooka\sponest\monitor\camera\service\ICentermonitorTCameraService.java
+D:\work_space\center-monitor-quartz\src\main\java\com\sooka\sponest\monitor\meiqiguan\controller\GasTankTravelMileageController.java
+D:\work_space\center-monitor-quartz\src\main\java\com\sooka\sponest\monitor\dahua\service\impl\CenternonitorTDahuaOperateLogServiceImpl.java
+D:\work_space\center-monitor-quartz\src\main\java\com\sooka\sponest\monitor\util\BeanUtil.java
+D:\work_space\center-monitor-quartz\src\main\java\com\sooka\sponest\monitor\remoteapi\fallback\file\RemoteFileServiceFallbackFactory.java
+D:\work_space\center-monitor-quartz\src\main\java\com\sooka\sponest\monitor\device\domain\CentermonitorTMonitoringDataAtmosphere.java
+D:\work_space\center-monitor-quartz\src\main\java\com\sooka\sponest\monitor\remoteapi\fallback\system\RemoteSystemBaseServiceFallbackFactory.java
+D:\work_space\center-monitor-quartz\src\main\java\com\sooka\sponest\monitor\dahua\login\bean\LoginFirst.java