commit 0f8134ddb2c0bcaba3d473b082548bc8e855303c Author: 廖德云 Date: Fri Apr 4 12:43:00 2025 +0800 gyk diff --git a/.tgitconfig b/.tgitconfig new file mode 100644 index 0000000..e69de29 diff --git a/README.md b/README.md new file mode 100644 index 0000000..b16688e --- /dev/null +++ b/README.md @@ -0,0 +1,2 @@ +# Factory + diff --git a/gyk.log b/gyk.log new file mode 100644 index 0000000..608a22f --- /dev/null +++ b/gyk.log @@ -0,0 +1,139 @@ +2023-12-04 07:52:40.656 [Catalina-utility-1] DEBUG org.apache.catalina.session.ManagerBase - Start expire sessions StandardManager at 1701647560656 sessioncount 0 +2023-12-04 07:52:40.659 [Catalina-utility-1] DEBUG org.apache.catalina.session.ManagerBase - End expire sessions StandardManager processingTime 3 expired sessions: 0 +2023-12-04 07:52:47.783 [master housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Pool stats (total=10, active=0, idle=10, waiting=0) +2023-12-04 07:52:47.783 [master housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Fill pool skipped, pool is at sufficient level. +2023-12-04 07:52:47.784 [master housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Add connection elided, waiting 0, queue 1 +2023-12-04 07:52:47.784 [master housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Add connection elided, waiting 0, queue 1 +2023-12-04 07:52:47.784 [master housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Add connection elided, waiting 0, queue 1 +2023-12-04 07:52:47.784 [master housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Add connection elided, waiting 0, queue 1 +2023-12-04 07:52:47.784 [master housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Add connection elided, waiting 0, queue 1 +2023-12-04 07:52:47.784 [master housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Add connection elided, waiting 0, queue 1 +2023-12-04 07:52:47.784 [master housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Add connection elided, waiting 0, queue 1 +2023-12-04 07:52:47.784 [master housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Add connection elided, waiting 0, queue 1 +2023-12-04 07:52:47.791 [master connection closer] DEBUG com.zaxxer.hikari.pool.PoolBase - master - Closing connection com.mysql.cj.jdbc.ConnectionImpl@b9611e9: (connection has passed maxLifetime) +2023-12-04 07:52:47.792 [master connection closer] DEBUG com.zaxxer.hikari.pool.PoolBase - master - Closing connection com.mysql.cj.jdbc.ConnectionImpl@4aab1bd2: (connection has passed maxLifetime) +2023-12-04 07:52:47.792 [master connection closer] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Fill pool skipped, pool is at sufficient level. +2023-12-04 07:52:47.793 [master connection closer] DEBUG com.zaxxer.hikari.pool.PoolBase - master - Closing connection com.mysql.cj.jdbc.ConnectionImpl@21e64e6: (connection has passed maxLifetime) +2023-12-04 07:52:47.793 [master connection closer] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Fill pool skipped, pool is at sufficient level. +2023-12-04 07:52:47.793 [master connection closer] DEBUG com.zaxxer.hikari.pool.PoolBase - master - Closing connection com.mysql.cj.jdbc.ConnectionImpl@15139178: (connection has passed maxLifetime) +2023-12-04 07:52:47.794 [master connection closer] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Fill pool skipped, pool is at sufficient level. +2023-12-04 07:52:47.794 [master connection closer] DEBUG com.zaxxer.hikari.pool.PoolBase - master - Closing connection com.mysql.cj.jdbc.ConnectionImpl@7782cfa2: (connection has passed maxLifetime) +2023-12-04 07:52:47.794 [master connection closer] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Fill pool skipped, pool is at sufficient level. +2023-12-04 07:52:47.794 [master connection closer] DEBUG com.zaxxer.hikari.pool.PoolBase - master - Closing connection com.mysql.cj.jdbc.ConnectionImpl@220800cf: (connection has passed maxLifetime) +2023-12-04 07:52:47.794 [master connection closer] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Fill pool skipped, pool is at sufficient level. +2023-12-04 07:52:47.794 [master connection closer] DEBUG com.zaxxer.hikari.pool.PoolBase - master - Closing connection com.mysql.cj.jdbc.ConnectionImpl@63350af4: (connection has passed maxLifetime) +2023-12-04 07:52:47.795 [master connection closer] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Fill pool skipped, pool is at sufficient level. +2023-12-04 07:52:47.795 [master connection closer] DEBUG com.zaxxer.hikari.pool.PoolBase - master - Closing connection com.mysql.cj.jdbc.ConnectionImpl@521c2bd6: (connection has passed maxLifetime) +2023-12-04 07:52:47.795 [master connection closer] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Fill pool skipped, pool is at sufficient level. +2023-12-04 07:52:47.795 [master connection closer] DEBUG com.zaxxer.hikari.pool.PoolBase - master - Closing connection com.mysql.cj.jdbc.ConnectionImpl@4dabfd1b: (connection has passed maxLifetime) +2023-12-04 07:52:47.796 [master connection closer] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Fill pool skipped, pool is at sufficient level. +2023-12-04 07:52:47.796 [master connection closer] DEBUG com.zaxxer.hikari.pool.PoolBase - master - Closing connection com.mysql.cj.jdbc.ConnectionImpl@427a6de5: (connection has passed maxLifetime) +2023-12-04 07:52:47.796 [master connection closer] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Fill pool skipped, pool is at sufficient level. +2023-12-04 07:52:53.946 [master connection adder] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Added connection com.mysql.cj.jdbc.ConnectionImpl@6ce588a0 +2023-12-04 07:53:00.090 [master connection adder] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Added connection com.mysql.cj.jdbc.ConnectionImpl@2dd8829b +2023-12-04 07:53:06.237 [master connection adder] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Added connection com.mysql.cj.jdbc.ConnectionImpl@1c3f88cd +2023-12-04 07:53:12.378 [master connection adder] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Added connection com.mysql.cj.jdbc.ConnectionImpl@4df77dd4 +2023-12-04 07:53:17.792 [master housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Pool stats (total=4, active=0, idle=4, waiting=0) +2023-12-04 07:53:17.792 [master housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Fill pool skipped, pool is at sufficient level. +2023-12-04 07:53:18.522 [master connection adder] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Added connection com.mysql.cj.jdbc.ConnectionImpl@ccbaf68 +2023-12-04 07:53:24.667 [master connection adder] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Added connection com.mysql.cj.jdbc.ConnectionImpl@49b9449a +2023-12-04 07:53:30.811 [master connection adder] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Added connection com.mysql.cj.jdbc.ConnectionImpl@65a9cb3f +2023-12-04 07:53:36.955 [master connection adder] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Added connection com.mysql.cj.jdbc.ConnectionImpl@6dd1f17b +2023-12-04 07:53:40.721 [Catalina-utility-2] DEBUG org.apache.catalina.session.ManagerBase - Start expire sessions StandardManager at 1701647620721 sessioncount 0 +2023-12-04 07:53:40.721 [Catalina-utility-2] DEBUG org.apache.catalina.session.ManagerBase - End expire sessions StandardManager processingTime 0 expired sessions: 0 +2023-12-04 07:53:43.100 [master connection adder] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Added connection com.mysql.cj.jdbc.ConnectionImpl@36a3ffc9 +2023-12-04 07:53:47.805 [master housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Pool stats (total=9, active=0, idle=9, waiting=0) +2023-12-04 07:53:47.805 [master housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Fill pool skipped, pool is at sufficient level. +2023-12-04 07:53:49.244 [master connection adder] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Added connection com.mysql.cj.jdbc.ConnectionImpl@45e8790c +2023-12-04 07:54:17.817 [master housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Pool stats (total=10, active=0, idle=10, waiting=0) +2023-12-04 07:54:17.817 [master housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Fill pool skipped, pool is at sufficient level. +2023-12-04 07:54:40.770 [Catalina-utility-1] DEBUG org.apache.catalina.session.ManagerBase - Start expire sessions StandardManager at 1701647680770 sessioncount 0 +2023-12-04 07:54:40.770 [Catalina-utility-1] DEBUG org.apache.catalina.session.ManagerBase - End expire sessions StandardManager processingTime 0 expired sessions: 0 +2023-12-04 07:54:47.821 [master housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Pool stats (total=10, active=0, idle=10, waiting=0) +2023-12-04 07:54:47.821 [master housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Fill pool skipped, pool is at sufficient level. +2023-12-04 07:55:17.823 [master housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Pool stats (total=10, active=0, idle=10, waiting=0) +2023-12-04 07:55:17.823 [master housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Fill pool skipped, pool is at sufficient level. +2023-12-04 07:55:40.813 [Catalina-utility-1] DEBUG org.apache.catalina.session.ManagerBase - Start expire sessions StandardManager at 1701647740813 sessioncount 0 +2023-12-04 07:55:40.814 [Catalina-utility-1] DEBUG org.apache.catalina.session.ManagerBase - End expire sessions StandardManager processingTime 1 expired sessions: 0 +2023-12-04 07:55:47.831 [master housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Pool stats (total=10, active=0, idle=10, waiting=0) +2023-12-04 07:55:47.831 [master housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Fill pool skipped, pool is at sufficient level. +2023-12-04 07:56:17.831 [master housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Pool stats (total=10, active=0, idle=10, waiting=0) +2023-12-04 07:56:17.831 [master housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Fill pool skipped, pool is at sufficient level. +2023-12-04 07:56:40.855 [Catalina-utility-2] DEBUG org.apache.catalina.session.ManagerBase - Start expire sessions StandardManager at 1701647800855 sessioncount 0 +2023-12-04 07:56:40.855 [Catalina-utility-2] DEBUG org.apache.catalina.session.ManagerBase - End expire sessions StandardManager processingTime 0 expired sessions: 0 +2023-12-04 07:56:47.836 [master housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Pool stats (total=10, active=0, idle=10, waiting=0) +2023-12-04 07:56:47.836 [master housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Fill pool skipped, pool is at sufficient level. +2023-12-04 07:57:17.843 [master housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Pool stats (total=10, active=0, idle=10, waiting=0) +2023-12-04 07:57:17.843 [master housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Fill pool skipped, pool is at sufficient level. +2023-12-04 07:57:40.887 [Catalina-utility-2] DEBUG org.apache.catalina.session.ManagerBase - Start expire sessions StandardManager at 1701647860887 sessioncount 0 +2023-12-04 07:57:40.887 [Catalina-utility-2] DEBUG org.apache.catalina.session.ManagerBase - End expire sessions StandardManager processingTime 0 expired sessions: 0 +2023-12-04 07:57:47.857 [master housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Pool stats (total=10, active=0, idle=10, waiting=0) +2023-12-04 07:57:47.857 [master housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Fill pool skipped, pool is at sufficient level. +2023-12-04 07:58:17.871 [master housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Pool stats (total=10, active=0, idle=10, waiting=0) +2023-12-04 07:58:17.871 [master housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Fill pool skipped, pool is at sufficient level. +2023-12-04 07:58:40.959 [Catalina-utility-2] DEBUG org.apache.catalina.session.ManagerBase - Start expire sessions StandardManager at 1701647920959 sessioncount 0 +2023-12-04 07:58:40.959 [Catalina-utility-2] DEBUG org.apache.catalina.session.ManagerBase - End expire sessions StandardManager processingTime 0 expired sessions: 0 +2023-12-04 07:58:47.875 [master housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Pool stats (total=10, active=0, idle=10, waiting=0) +2023-12-04 07:58:47.875 [master housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Fill pool skipped, pool is at sufficient level. +2023-12-04 07:59:17.884 [master housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Pool stats (total=10, active=0, idle=10, waiting=0) +2023-12-04 07:59:17.884 [master housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Fill pool skipped, pool is at sufficient level. +2023-12-04 07:59:41.016 [Catalina-utility-1] DEBUG org.apache.catalina.session.ManagerBase - Start expire sessions StandardManager at 1701647981016 sessioncount 0 +2023-12-04 07:59:41.016 [Catalina-utility-1] DEBUG org.apache.catalina.session.ManagerBase - End expire sessions StandardManager processingTime 0 expired sessions: 0 +2023-12-04 07:59:47.892 [master housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Pool stats (total=10, active=0, idle=10, waiting=0) +2023-12-04 07:59:47.892 [master housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Fill pool skipped, pool is at sufficient level. +2023-12-04 08:00:17.901 [master housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Pool stats (total=10, active=0, idle=10, waiting=0) +2023-12-04 08:00:17.901 [master housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Fill pool skipped, pool is at sufficient level. +2023-12-04 08:00:41.060 [Catalina-utility-2] DEBUG org.apache.catalina.session.ManagerBase - Start expire sessions StandardManager at 1701648041060 sessioncount 0 +2023-12-04 08:00:41.060 [Catalina-utility-2] DEBUG org.apache.catalina.session.ManagerBase - End expire sessions StandardManager processingTime 0 expired sessions: 0 +2023-12-04 08:00:47.902 [master housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Pool stats (total=10, active=0, idle=10, waiting=0) +2023-12-04 08:00:47.902 [master housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Fill pool skipped, pool is at sufficient level. +2023-12-04 08:01:17.914 [master housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Pool stats (total=10, active=0, idle=10, waiting=0) +2023-12-04 08:01:17.914 [master housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Fill pool skipped, pool is at sufficient level. +2023-12-04 08:01:41.112 [Catalina-utility-2] DEBUG org.apache.catalina.session.ManagerBase - Start expire sessions StandardManager at 1701648101112 sessioncount 0 +2023-12-04 08:01:41.113 [Catalina-utility-2] DEBUG org.apache.catalina.session.ManagerBase - End expire sessions StandardManager processingTime 0 expired sessions: 0 +2023-12-04 08:01:47.917 [master housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Pool stats (total=10, active=0, idle=10, waiting=0) +2023-12-04 08:01:47.917 [master housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Fill pool skipped, pool is at sufficient level. +2023-12-04 08:02:17.929 [master housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Pool stats (total=10, active=0, idle=10, waiting=0) +2023-12-04 08:02:17.929 [master housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Fill pool skipped, pool is at sufficient level. +2023-12-04 08:02:41.155 [Catalina-utility-2] DEBUG org.apache.catalina.session.ManagerBase - Start expire sessions StandardManager at 1701648161155 sessioncount 0 +2023-12-04 08:02:41.155 [Catalina-utility-2] DEBUG org.apache.catalina.session.ManagerBase - End expire sessions StandardManager processingTime 0 expired sessions: 0 +2023-12-04 08:02:47.935 [master housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Pool stats (total=10, active=0, idle=10, waiting=0) +2023-12-04 08:02:47.935 [master housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Fill pool skipped, pool is at sufficient level. +2023-12-04 08:03:17.950 [master housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Pool stats (total=10, active=0, idle=10, waiting=0) +2023-12-04 08:03:17.950 [master housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Fill pool skipped, pool is at sufficient level. +2023-12-04 08:03:41.199 [Catalina-utility-1] DEBUG org.apache.catalina.session.ManagerBase - Start expire sessions StandardManager at 1701648221199 sessioncount 0 +2023-12-04 08:03:41.200 [Catalina-utility-1] DEBUG org.apache.catalina.session.ManagerBase - End expire sessions StandardManager processingTime 0 expired sessions: 0 +2023-12-04 08:03:47.952 [master housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Pool stats (total=10, active=0, idle=10, waiting=0) +2023-12-04 08:03:47.952 [master housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Fill pool skipped, pool is at sufficient level. +2023-12-04 08:04:17.966 [master housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Pool stats (total=10, active=0, idle=10, waiting=0) +2023-12-04 08:04:17.966 [master housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Fill pool skipped, pool is at sufficient level. +2023-12-04 08:04:41.260 [Catalina-utility-2] DEBUG org.apache.catalina.session.ManagerBase - Start expire sessions StandardManager at 1701648281260 sessioncount 0 +2023-12-04 08:04:41.260 [Catalina-utility-2] DEBUG org.apache.catalina.session.ManagerBase - End expire sessions StandardManager processingTime 0 expired sessions: 0 +2023-12-04 08:04:47.969 [master housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Pool stats (total=10, active=0, idle=10, waiting=0) +2023-12-04 08:04:47.969 [master housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Fill pool skipped, pool is at sufficient level. +2023-12-04 08:05:17.976 [master housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Pool stats (total=10, active=0, idle=10, waiting=0) +2023-12-04 08:05:17.976 [master housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Fill pool skipped, pool is at sufficient level. +2023-12-04 08:05:41.320 [Catalina-utility-1] DEBUG org.apache.catalina.session.ManagerBase - Start expire sessions StandardManager at 1701648341320 sessioncount 0 +2023-12-04 08:05:41.320 [Catalina-utility-1] DEBUG org.apache.catalina.session.ManagerBase - End expire sessions StandardManager processingTime 0 expired sessions: 0 +2023-12-04 08:05:47.979 [master housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Pool stats (total=10, active=0, idle=10, waiting=0) +2023-12-04 08:05:47.979 [master housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Fill pool skipped, pool is at sufficient level. +2023-12-04 08:06:17.987 [master housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Pool stats (total=10, active=0, idle=10, waiting=0) +2023-12-04 08:06:17.987 [master housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Fill pool skipped, pool is at sufficient level. +2023-12-04 08:06:41.356 [Catalina-utility-2] DEBUG org.apache.catalina.session.ManagerBase - Start expire sessions StandardManager at 1701648401356 sessioncount 0 +2023-12-04 08:06:41.356 [Catalina-utility-2] DEBUG org.apache.catalina.session.ManagerBase - End expire sessions StandardManager processingTime 0 expired sessions: 0 +2023-12-04 08:06:48.000 [master housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Pool stats (total=10, active=0, idle=10, waiting=0) +2023-12-04 08:06:48.000 [master housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Fill pool skipped, pool is at sufficient level. +2023-12-04 08:07:18.002 [master housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Pool stats (total=10, active=0, idle=10, waiting=0) +2023-12-04 08:07:18.002 [master housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Fill pool skipped, pool is at sufficient level. +2023-12-04 08:07:41.430 [Catalina-utility-2] DEBUG org.apache.catalina.session.ManagerBase - Start expire sessions StandardManager at 1701648461430 sessioncount 0 +2023-12-04 08:07:41.430 [Catalina-utility-2] DEBUG org.apache.catalina.session.ManagerBase - End expire sessions StandardManager processingTime 0 expired sessions: 0 +2023-12-04 08:07:48.007 [master housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Pool stats (total=10, active=0, idle=10, waiting=0) +2023-12-04 08:07:48.007 [master housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Fill pool skipped, pool is at sufficient level. +2023-12-04 08:08:18.014 [master housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Pool stats (total=10, active=0, idle=10, waiting=0) +2023-12-04 08:08:18.014 [master housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Fill pool skipped, pool is at sufficient level. +2023-12-04 08:08:41.463 [Catalina-utility-1] DEBUG org.apache.catalina.session.ManagerBase - Start expire sessions StandardManager at 1701648521463 sessioncount 0 +2023-12-04 08:08:41.463 [Catalina-utility-1] DEBUG org.apache.catalina.session.ManagerBase - End expire sessions StandardManager processingTime 0 expired sessions: 0 +2023-12-04 08:08:48.028 [master housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Pool stats (total=10, active=0, idle=10, waiting=0) +2023-12-04 08:08:48.028 [master housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Fill pool skipped, pool is at sufficient level. +2023-12-04 08:09:18.037 [master housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Pool stats (total=10, active=0, idle=10, waiting=0) +2023-12-04 08:09:18.037 [master housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Fill pool skipped, pool is at sufficient level. diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..af323ef --- /dev/null +++ b/pom.xml @@ -0,0 +1,256 @@ + + + 4.0.0 + + org.example + CxcBoot + 1.6.5 + + org.springframework.boot + spring-boot-starter-parent + 2.3.0.RELEASE + + + + + + + + false + + + true + + ias-snapshots + Infinite Automation Snapshot Repository + https://maven.mangoautomation.net/repository/ias-snapshot/ + + + + true + + + false + + ias-releases + Infinite Automation Release Repository + https://maven.mangoautomation.net/service/rest/repository/browse/ias-release/ + + + + + + + + + + + + + + com.infiniteautomation + modbus4j + 3.0.3 + + + + org.scream3r + jssc + 2.8.0 + + + + + + + + + + com.serotonin + seroUntils + 1.0 + system + ${pom.basedir}/src/main/resources/modbus/seroUtils.jar + + + + org.springframework.boot + spring-boot-starter-web + + + + org.springframework.boot + spring-boot-starter-thymeleaf + + + org.apache.maven + maven-model + 3.3.9 + + + + + com.baomidou + mybatis-plus-boot-starter + 3.1.2 + + + mysql + mysql-connector-java + 8.0.15 + runtime + + + + + com.alibaba + easyexcel + 3.1.1 + + + + org.springframework.boot + spring-boot-starter-aop + + + + org.projectlombok + lombok + 1.18.6 + + + + com.khapi + khapi + 1.0 + system + ${pom.basedir}/src/main/resources/lib/khapi.jar + + + org.springframework + spring-context-support + + + + + net.sf.ehcache + ehcache + 2.9.1 + + + + io.springfox + springfox-swagger2 + 2.9.2 + + + io.springfox + springfox-swagger-ui + 2.9.2 + + + + com.alibaba + fastjson + 1.2.73 + + + + org.springframework.boot + spring-boot-starter-websocket + + + + commons-beanutils + commons-beanutils + 1.9.3 + + + com.baomidou + mybatis-plus + 3.5.3.1 + + + + + + + + org.jeecgframework + autopoi + 1.2.1 + + + + org.apache.commons + commons-pool2 + + + org.apache.commons + commons-lang3 + 3.9 + + + org.jeecgframework + autopoi-web + 1.2.2 + + + net.minidev + json-smart + 2.3 + + + com.baomidou + dynamic-datasource-spring-boot-starter + 3.5.0 + + + + com.oracle.database.jdbc + ojdbc8 + 12.2.0.1 + + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + + 1.8 + 1.8 + -Xlint:unchecked + + + + org.springframework.boot + spring-boot-maven-plugin + + true + + true + + + + + + + src/main/resources + true + + + src/main/java + + **/*.xml + **/*.json + **/*.ftl + + + + + diff --git a/src/main/java/org/gyk/common/GlobalDefaultExceptionHandler.java b/src/main/java/org/gyk/common/GlobalDefaultExceptionHandler.java new file mode 100644 index 0000000..839656a --- /dev/null +++ b/src/main/java/org/gyk/common/GlobalDefaultExceptionHandler.java @@ -0,0 +1,23 @@ +package org.gyk.common; + +import javax.servlet.http.HttpServletRequest; +import org.springframework.web.bind.annotation.ControllerAdvice; +import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.bind.annotation.ResponseBody; + +/*1,新建异常捕获类 + *2,类上添加注解@ControllerAdvice + *3,在Class里面添加方法 + *4,方法上添加注解@ExceptionHandler(Exception.class)用来拦截相应的异常信息 + *5,如果返回的是View,方法返回值是ModelAndView + *6,如果返回的是String或者Json数据,则需要加@ResponseBody注解 + */ +@ControllerAdvice +public class GlobalDefaultExceptionHandler { + @ResponseBody + @ExceptionHandler(Exception.class) + public String defaultExceptionHandler(HttpServletRequest req,Exception e){ + System.out.println(e); + return "Sorry,Server Error"; + } +} diff --git a/src/main/java/org/gyk/common/annotation/AutoLog.java b/src/main/java/org/gyk/common/annotation/AutoLog.java new file mode 100644 index 0000000..c1824a0 --- /dev/null +++ b/src/main/java/org/gyk/common/annotation/AutoLog.java @@ -0,0 +1,15 @@ +package org.gyk.common.annotation; + +import java.lang.annotation.*; + +@Target(ElementType.METHOD) +@Retention(RetentionPolicy.RUNTIME) +@Documented +public @interface AutoLog { + /** + * 日志内容 + * + * @return + */ + String value() default ""; +} diff --git a/src/main/java/org/gyk/common/api/ISysBaseAPI.java b/src/main/java/org/gyk/common/api/ISysBaseAPI.java new file mode 100644 index 0000000..0017c13 --- /dev/null +++ b/src/main/java/org/gyk/common/api/ISysBaseAPI.java @@ -0,0 +1,29 @@ +package org.gyk.common.api; + +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.Wrapper; +import org.gyk.common.vo.*; +import org.springframework.web.multipart.MultipartFile; + +import javax.servlet.http.HttpServletResponse; +import java.sql.SQLException; +import java.util.List; +import java.util.Map; + +/** + * @Description: 底层共通业务API,提供其他独立模块调用 + * @Author: scott + * @Date:2019-4-20 + * @Version:V1.0 + */ +public interface ISysBaseAPI { + + /** + * 获取当前数据库类型 + * @return + * @throws Exception + */ + public String getDatabaseType() throws SQLException; + + +} diff --git a/src/main/java/org/gyk/common/api/Result.java b/src/main/java/org/gyk/common/api/Result.java new file mode 100644 index 0000000..85f767d --- /dev/null +++ b/src/main/java/org/gyk/common/api/Result.java @@ -0,0 +1,105 @@ +package org.gyk.common.api; + + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.gyk.common.constant.CommonConstant; + +import java.io.Serializable; +import java.util.List; +import java.util.Map; + +@Data +@ApiModel(value="接口返回对象", description="接口返回对象") +public class Result implements Serializable { + private static final long serialVersionUID = 1L; + + /** + * 成功标志 + */ + @ApiModelProperty(value = "成功标志") + private boolean success = true; + + /** + * 返回处理消息 + */ + @ApiModelProperty(value = "返回处理消息") + private String message = "操作成功!"; + + /** + * 返回代码 + */ + @ApiModelProperty(value = "返回代码") + private Integer code = 0; + + /** + * 返回数据对象 data + */ + @ApiModelProperty(value = "返回数据对象") + private T result; + + /** + * 时间戳 + */ + @ApiModelProperty(value = "时间戳") + private long timestamp = System.currentTimeMillis(); + + public Result() { + + } + public Result success(String message) { + this.message = message; + this.code = CommonConstant.SC_OK_200; + this.success = true; + return this; + } + + + public static Result ok() { + Result r = new Result(); + r.setSuccess(true); + r.setCode(CommonConstant.SC_OK_200); + r.setMessage("成功"); + return r; + } + + public static Result ok(String msg) { + Result r = new Result(); + r.setSuccess(true); + r.setCode(CommonConstant.SC_OK_200); + r.setMessage(msg); + return r; + } + + public static Result ok(Object data) { + Result r = new Result(); + r.setSuccess(true); + r.setCode(CommonConstant.SC_OK_200); + r.setResult(data); + return r; + } + + public static Result error(String msg) { + return error(CommonConstant.SC_INTERNAL_SERVER_ERROR_500, msg); + } + + public static Result error(int code, String msg) { + Result r = new Result(); + r.setCode(code); + r.setMessage(msg); + r.setSuccess(false); + return r; + } + + public Result error500(String message) { + this.message = message; + this.code = CommonConstant.SC_INTERNAL_SERVER_ERROR_500; + this.success = false; + return this; + } + + + + +} diff --git a/src/main/java/org/gyk/common/base/controller/gykController.java b/src/main/java/org/gyk/common/base/controller/gykController.java new file mode 100644 index 0000000..095e1e9 --- /dev/null +++ b/src/main/java/org/gyk/common/base/controller/gykController.java @@ -0,0 +1,31 @@ +package org.gyk.common.base.controller; + + +import com.baomidou.mybatisplus.extension.service.IService; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.beanutils.PropertyUtils; +import org.springframework.beans.factory.annotation.Autowired; + +/** + * @Description: Controller基类 + * @Date: 2021-3-23 8:13 + * @Version: 1.0 + */ +@Slf4j +public class gykController> { + @Autowired + S service; + /** + * 获取对象ID + * + * @return + */ + private String getId(T item) { + try { + return PropertyUtils.getProperty(item, "id").toString(); + } catch (Exception e) { + e.printStackTrace(); + return null; + } + } +} diff --git a/src/main/java/org/gyk/common/base/entity/gykEntity.java b/src/main/java/org/gyk/common/base/entity/gykEntity.java new file mode 100644 index 0000000..2e138c4 --- /dev/null +++ b/src/main/java/org/gyk/common/base/entity/gykEntity.java @@ -0,0 +1,46 @@ +package org.gyk.common.base.entity; + + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +import org.jeecgframework.poi.excel.annotation.Excel; +import org.springframework.format.annotation.DateTimeFormat; + +import java.io.Serializable; + +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +public class gykEntity implements Serializable { + private static final long serialVersionUID = 1L; + + /** ID */ + @TableId(type = IdType.ASSIGN_UUID) + @ApiModelProperty(value = "ID") + private java.lang.String id; + /** 创建人 */ + @ApiModelProperty(value = "创建人") + @Excel(name = "创建人", width = 15) + private java.lang.String createBy; + /** 创建时间 */ + @ApiModelProperty(value = "创建时间") + @Excel(name = "创建时间", width = 20, format = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private java.util.Date createTime; + /** 更新人 */ + @ApiModelProperty(value = "更新人") + @Excel(name = "更新人", width = 15) + private java.lang.String updateBy; + /** 更新时间 */ + @ApiModelProperty(value = "更新时间") + @Excel(name = "更新时间", width = 20, format = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private java.util.Date updateTime; +} diff --git a/src/main/java/org/gyk/common/base/mapper/RootMapper.java b/src/main/java/org/gyk/common/base/mapper/RootMapper.java new file mode 100644 index 0000000..17bb1c4 --- /dev/null +++ b/src/main/java/org/gyk/common/base/mapper/RootMapper.java @@ -0,0 +1,30 @@ +package org.gyk.common.base.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 根Mapper,给表Mapper继承用的,可以自定义通用方法 + * {@link BaseMapper} + * {@link com.baomidou.mybatisplus.extension.service.IService} + * {@link com.baomidou.mybatisplus.extension.service.impl.ServiceImpl} + */ +@Mapper +public interface RootMapper extends BaseMapper { + + /** + * 自定义批量插入 + * 如果要自动填充,@Param(xx) xx参数名必须是 list/collection/array 3个的其中之一 + */ + int insertBatch(@Param("list") List list); + + /** + * 自定义批量新增或更新 + * 如果要自动填充,@Param(xx) xx参数名必须是 list/collection/array 3个的其中之一 + */ + int mysqlInsertOrUpdateBath(@Param("list") List list); + +} diff --git a/src/main/java/org/gyk/common/base/service/gykService.java b/src/main/java/org/gyk/common/base/service/gykService.java new file mode 100644 index 0000000..2822df5 --- /dev/null +++ b/src/main/java/org/gyk/common/base/service/gykService.java @@ -0,0 +1,6 @@ +package org.gyk.common.base.service; + +import com.baomidou.mybatisplus.extension.service.IService; + +public interface gykService extends IService { +} diff --git a/src/main/java/org/gyk/common/base/service/impl/gykServiceImpl.java b/src/main/java/org/gyk/common/base/service/impl/gykServiceImpl.java new file mode 100644 index 0000000..2ace4c5 --- /dev/null +++ b/src/main/java/org/gyk/common/base/service/impl/gykServiceImpl.java @@ -0,0 +1,13 @@ +package org.gyk.common.base.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.extern.slf4j.Slf4j; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.gyk.common.base.entity.gykEntity; +import org.gyk.common.base.service.gykService; +import org.springframework.stereotype.Service; + +@Service +@Slf4j +public class gykServiceImpl , T extends gykEntity> extends ServiceImpl implements gykService { +} diff --git a/src/main/java/org/gyk/common/constant/CommonConstant.java b/src/main/java/org/gyk/common/constant/CommonConstant.java new file mode 100644 index 0000000..2131003 --- /dev/null +++ b/src/main/java/org/gyk/common/constant/CommonConstant.java @@ -0,0 +1,8 @@ +package org.gyk.common.constant; + +public interface CommonConstant { + /** {@code 200 OK} (HTTP/1.0 - RFC 1945) */ + public static final Integer SC_OK_200 = 200; + /** {@code 500 Server Error} (HTTP/1.0 - RFC 1945) */ + public static final Integer SC_INTERNAL_SERVER_ERROR_500 = 500; +} diff --git a/src/main/java/org/gyk/common/constant/DataBaseConstant.java b/src/main/java/org/gyk/common/constant/DataBaseConstant.java new file mode 100644 index 0000000..f75f3aa --- /dev/null +++ b/src/main/java/org/gyk/common/constant/DataBaseConstant.java @@ -0,0 +1,151 @@ +package org.gyk.common.constant; +/** + * 数据库上下文常量 + */ +public interface DataBaseConstant { + //*********数据库类型**************************************** + public static final String DB_TYPE_MYSQL = "MYSQL"; + public static final String DB_TYPE_ORACLE = "ORACLE"; + public static final String DB_TYPE_POSTGRESQL = "POSTGRESQL"; + public static final String DB_TYPE_SQLSERVER = "SQLSERVER"; + + // 数据库类型,对应 database_type 字典 + public static final String DB_TYPE_MYSQL_NUM = "1"; + public static final String DB_TYPE_ORACLE_NUM = "2"; + public static final String DB_TYPE_SQLSERVER_NUM = "3"; + public static final String DB_TYPE_POSTGRESQL_NUM = "4"; + //*********系统上下文变量**************************************** + /** + * 数据-所属机构编码 + */ + public static final String SYS_ORG_CODE = "sysOrgCode"; + /** + * 数据-所属机构编码 + */ + public static final String SYS_ORG_CODE_TABLE = "sys_org_code"; + + /** + * 数据-所属机构编码id by 闵 + */ + public static final String SYS_ORG_CODE_ID = "sysOrgCodeId"; + /** + * 数据-所属机构编码 by 闵 + */ + public static final String SYS_ORG_CODE_ID_TABLE = "sys_org_code_id"; + + + /** + * 数据-所属机构名称 + */ + public static final String SYS_DEP_NAME = "sysDepName"; + /** + * 数据-所属机构名称 + */ + public static final String SYS_DEP_NAME_TABLE = "sys_dep_name"; + /** + * 数据-所属机构编码 + */ + public static final String SYS_MULTI_ORG_CODE = "sysMultiOrgCode"; + /** + * 数据-所属机构编码 + */ + public static final String SYS_MULTI_ORG_CODE_TABLE = "sys_multi_org_code"; + + /** + * 数据-所属机构ids by 闵 + */ + public static final String SYS_MULTI_DEP_IDS = "sysMultiDepIds"; + /** + * 数据-所属机构ids by 闵 + */ + public static final String SYS_MULTI_DEP_IDS_TABLE = "sys_multi_dep_ids"; + + /** + * 数据-系统用户编码(对应登录用户账号) + */ + public static final String SYS_USER_CODE = "sysUserCode"; + /** + * 数据-系统用户编码(对应登录用户账号) + */ + public static final String SYS_USER_CODE_TABLE = "sys_user_code"; + + /** + * 登录用户真实姓名 + */ + public static final String SYS_USER_NAME = "sysUserName"; + /** + * 登录用户真实姓名 + */ + public static final String SYS_USER_NAME_TABLE = "sys_user_name"; + /** + * 登录用户劳动合同号 + * 测试能否成为系统变量 20220310 + */ + public static final String WORK_NO = "workNo"; + /** + * 登录用户劳动合同号 20220310 + */ + public static final String WORK_NO_TABLE = "work_no"; + /** + * 系统日期"yyyy-MM-dd" + */ + public static final String SYS_DATE = "sysDate"; + /** + * 系统日期"yyyy-MM-dd" + */ + public static final String SYS_DATE_TABLE = "sys_date"; + /** + * 系统时间"yyyy-MM-dd HH:mm" + */ + public static final String SYS_TIME = "sysTime"; + /** + * 系统时间"yyyy-MM-dd HH:mm" + */ + public static final String SYS_TIME_TABLE = "sys_time"; + //*********系统上下文变量**************************************** + + + //*********系统建表标准字段**************************************** + /** + * 创建者登录名称 + */ + public static final String CREATE_BY_TABLE = "create_by"; + /** + * 创建者登录名称 + */ + public static final String CREATE_BY = "createBy"; + /** + * 创建日期时间 + */ + public static final String CREATE_TIME_TABLE = "create_time"; + /** + * 创建日期时间 + */ + public static final String CREATE_TIME = "createTime"; + /** + * 更新用户登录名称 + */ + public static final String UPDATE_BY_TABLE = "update_by"; + /** + * 更新用户登录名称 + */ + public static final String UPDATE_BY = "updateBy"; + /** + * 更新日期时间 + */ + public static final String UPDATE_TIME = "updateTime"; + /** + * 更新日期时间 + */ + public static final String UPDATE_TIME_TABLE = "update_time"; + + /** + * 业务流程状态 + */ + public static final String BPM_STATUS = "bpmStatus"; + /** + * 业务流程状态 + */ + public static final String BPM_STATUS_TABLE = "bpm_status"; + //*********系统建表标准字段**************************************** +} diff --git a/src/main/java/org/gyk/common/query/QueryGenerator.java b/src/main/java/org/gyk/common/query/QueryGenerator.java new file mode 100644 index 0000000..a4a0a6a --- /dev/null +++ b/src/main/java/org/gyk/common/query/QueryGenerator.java @@ -0,0 +1,787 @@ +package org.gyk.common.query; + +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.beanutils.PropertyUtils; +import org.gyk.common.util.DataAutorUtils; +import org.gyk.common.constant.CommonConstant; +import org.gyk.common.constant.DataBaseConstant; +import org.gyk.common.api.ISysBaseAPI; +import org.gyk.common.vo.SysPermissionDataRuleModel; +import org.gyk.common.util.DateUtils; +import org.gyk.common.util.SqlInjectionUtil; +import org.gyk.common.util.oConvertUtils; +import org.jeecgframework.core.util.ApplicationContextUtil; +import org.springframework.util.NumberUtils; + +import java.beans.PropertyDescriptor; +import java.io.UnsupportedEncodingException; +import java.lang.reflect.Field; +import java.math.BigDecimal; +import java.net.URLDecoder; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.*; +import java.util.regex.Matcher; +import java.util.regex.Pattern; +import java.util.stream.Collectors; + +@Slf4j +public class QueryGenerator { + public static final String SQL_RULES_COLUMN = "SQL_RULES_COLUMN"; + + private static final String BEGIN = "_begin"; + private static final String END = "_end"; + /** + * 数字类型字段,拼接此后缀 接受多值参数 + */ + private static final String MULTI = "_MultiString"; + private static final String STAR = "*"; + private static final String COMMA = ","; + private static final String NOT_EQUAL = "!"; + /**页面带有规则值查询,空格作为分隔符*/ + private static final String QUERY_SEPARATE_KEYWORD = " "; + /** 单引号 */ + public static final String SQL_SQ = "'"; + /**排序列*/ + private static final String ORDER_COLUMN = "column"; + /**排序方式*/ + private static final String ORDER_TYPE = "order"; + private static final String ORDER_TYPE_ASC = "ASC"; + + /**时间格式化 */ + private static final ThreadLocal local = new ThreadLocal(); + private static SimpleDateFormat getTime(){ + SimpleDateFormat time = local.get(); + if(time == null){ + time = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + local.set(time); + } + return time; + } + + /** + * 获取查询条件构造器QueryWrapper实例 通用查询条件已被封装完成 + * @param searchObj 查询实体 + * @param parameterMap request.getParameterMap() + * @return QueryWrapper实例 + */ + public static QueryWrapper initQueryWrapper(T searchObj,Map parameterMap){ + long start = System.currentTimeMillis(); + QueryWrapper queryWrapper = new QueryWrapper(); + installMplus(queryWrapper, searchObj, parameterMap,true); + log.debug("---查询条件构造器初始化完成,耗时:"+(System.currentTimeMillis()-start)+"毫秒----"); + return queryWrapper; + } + + /** + * 功能描述:
+ * 〈〉新增是否加载 createTime等jeecg自带自带的查询 + * @Param: [searchObj, parameterMap, ifTime] + * @Return: com.baomidou.mybatisplus.core.conditions.query.QueryWrapper + * @Author: 闵年泽 + * @Date: 2024/1/17 16:45 + */ + public static QueryWrapper initQueryWrapper(T searchObj,Map parameterMap,Boolean ifTime){ + long start = System.currentTimeMillis(); + QueryWrapper queryWrapper = new QueryWrapper(); + installMplus(queryWrapper, searchObj, parameterMap,ifTime); + log.debug("---查询条件构造器初始化完成,耗时:"+(System.currentTimeMillis()-start)+"毫秒----"); + return queryWrapper; + } + + /** + * 组装Mybatis Plus 查询条件 + *

使用此方法 需要有如下几点注意: + *
1.使用QueryWrapper 而非LambdaQueryWrapper; + *
2.实例化QueryWrapper时不可将实体传入参数 + *
错误示例:如QueryWrapper queryWrapper = new QueryWrapper(jeecgDemo); + *
正确示例:QueryWrapper queryWrapper = new QueryWrapper(); + *
3.也可以不使用这个方法直接调用 {@link #initQueryWrapper}直接获取实例 + */ + private static void installMplus(QueryWrapper queryWrapper,Object searchObj,Map parameterMap,Boolean ifTime) { + + /* + * 注意:权限查询由前端配置数据规则 当一个人有多个所属部门时候 可以在规则配置包含条件 orgCode 包含 #{sys_org_code} + 但是不支持在自定义SQL中写orgCode in #{sys_org_code} + 当一个人只有一个部门 就直接配置等于条件: orgCode 等于 #{sys_org_code} 或者配置自定义SQL: orgCode = '#{sys_org_code}' + */ + + //区间条件组装 模糊查询 高级查询组装 简单排序 权限查询 + PropertyDescriptor[] origDescriptors = PropertyUtils.getPropertyDescriptors(searchObj); + Map ruleMap = getRuleMap(); + + String name, type, column; + // update-begin--Author:taoyan Date:20200923 for:issues/1671 如果字段加注解了@TableField(exist = false),不走DB查询------- + //定义实体字段和数据库字段名称的映射 高级查询中 只能获取实体字段 如果设置TableField注解 那么查询条件会出问题 + Map fieldColumnMap = new HashMap<>(5); + for (int i = 0; i < origDescriptors.length; i++) { + //aliasName = origDescriptors[i].getName(); mybatis 不存在实体属性 不用处理别名的情况 + name = origDescriptors[i].getName(); + type = origDescriptors[i].getPropertyType().toString(); + try { + if (judgedIsUselessField(name)|| !PropertyUtils.isReadable(searchObj, name)) { + continue; + } + + Object value = PropertyUtils.getSimpleProperty(searchObj, name); + column = getTableFieldName(searchObj.getClass(), name); + if(column==null){ + //column为null只有一种情况 那就是 添加了注解@TableField(exist = false) 后续都不用处理了 + continue; + } + fieldColumnMap.put(name,column); + //区间查询 + doIntervalQuery(queryWrapper, parameterMap, type, name, column); + //判断单值 参数带不同标识字符串 走不同的查询 + //TODO 这种前后带逗号的支持分割后模糊查询(多选字段查询生效) 示例:,1,3, + if (null != value && value.toString().startsWith(COMMA) && value.toString().endsWith(COMMA)) { + String multiLikeval = value.toString().replace(",,", COMMA); + String[] vals = multiLikeval.substring(1, multiLikeval.length()).split(COMMA); + final String field = oConvertUtils.camelToUnderline(column); + if(vals.length>1) { + queryWrapper.and(j -> { + log.info("---查询过滤器,Query规则---field:{}, rule:{}, value:{}", field, "like", vals[0]); + j = j.like(field,vals[0]); + for (int k=1;k j.like(field,vals[0])); + } + }else { + //根据参数值带什么关键字符串判断走什么类型的查询 + QueryRuleEnum rule = convert2Rule(value); + value = replaceValue(rule,value); + addEasyQuery(queryWrapper, column, rule, value); + } + + } catch (Exception e) { + log.error(e.getMessage(), e); + } + } + // 排序逻辑 处理 + doMultiFieldsOrder(queryWrapper, parameterMap, fieldColumnMap,ifTime); + + } + + /** + * 获取表字段名 + * @param clazz + * @param name + * @return + */ + private static String getTableFieldName(Class clazz, String name) { + try { + //如果字段加注解了@TableField(exist = false),不走DB查询 + Field field = null; + try { + field = clazz.getDeclaredField(name); + } catch (NoSuchFieldException e) { + //e.printStackTrace(); + } + + //如果为空,则去父类查找字段 + if (field == null) { + List allFields = getClassFields(clazz); + List searchFields = allFields.stream().filter(a -> a.getName().equals(name)).collect(Collectors.toList()); + if(searchFields!=null && searchFields.size()>0){ + field = searchFields.get(0); + } + } + + if (field != null) { + TableField tableField = field.getAnnotation(TableField.class); + if (tableField != null){ + if(tableField.exist() == false){ + //如果设置了TableField false 这个字段不需要处理 + return null; + }else{ + String column = tableField.value(); + //如果设置了TableField value 这个字段是实体字段 + if(!"".equals(column)){ + return column; + } + } + } + } + } catch (Exception e) { + e.printStackTrace(); + } + return name; + } + + /** + * 获取class的 包括父类的 + * @param clazz + * @return + */ + private static List getClassFields(Class clazz) { + List list = new ArrayList(); + Field[] fields; + do{ + fields = clazz.getDeclaredFields(); + for(int i = 0;i queryWrapper, Map parameterMap, String type, String filedName, String columnName) throws ParseException { + // 添加 判断是否有区间值 + String endValue = null,beginValue = null; + if (parameterMap != null && parameterMap.containsKey(filedName + BEGIN)) { + beginValue = parameterMap.get(filedName + BEGIN)[0].trim(); + addQueryByRule(queryWrapper, columnName, type, beginValue, QueryRuleEnum.GE); + + } + if (parameterMap != null && parameterMap.containsKey(filedName + END)) { + endValue = parameterMap.get(filedName + END)[0].trim(); + addQueryByRule(queryWrapper, columnName, type, endValue, QueryRuleEnum.LE); + } + //多值查询 + if (parameterMap != null && parameterMap.containsKey(filedName + MULTI)) { + endValue = parameterMap.get(filedName + MULTI)[0].trim(); + addQueryByRule(queryWrapper, columnName.replace(MULTI,""), type, endValue, QueryRuleEnum.IN); + } + } + //多字段排序 + private static void doMultiFieldsOrder(QueryWrapper queryWrapper,Map parameterMap, Map fieldColumnMap,Boolean ifTime) { + Set allFields = fieldColumnMap.keySet(); + String column=null,order=null; + if(parameterMap!=null&& parameterMap.containsKey(ORDER_COLUMN)) { + column = parameterMap.get(ORDER_COLUMN)[0]; + } + if(parameterMap!=null&& parameterMap.containsKey(ORDER_TYPE)) { + order = parameterMap.get(ORDER_TYPE)[0]; + } + //排除createTime by 闵 + if (!ifTime&&"createBy,createTime,updateBy,updateTime,sysOrgCode".contains(column)){ + return; + } + log.info("排序规则>>列:" + column + ",排序方式:" + order); + + //update-begin-author:scott date:2022-11-07 for:避免用户自定义表无默认字段{创建时间},导致排序报错 + //TODO 避免用户自定义表无默认字段创建时间,导致排序报错 +// if(DataBaseConstant.CREATE_TIME.equals(column) && !fieldColumnMap.containsKey(DataBaseConstant.CREATE_TIME)){ +// column = "id"; +// log.warn("检测到实体里没有字段createTime,改成采用ID排序!"); +// } + //update-end-author:scott date:2022-11-07 for:避免用户自定义表无默认字段{创建时间},导致排序报错 + + if (oConvertUtils.isNotEmpty(column) && oConvertUtils.isNotEmpty(order)) { + + //判断column是不是当前实体的 + log.debug("当前字段有:"+ allFields); + //多字段排序方法没有读取 MybatisPlus 注解 @TableField 里 value 的值 + if (column.contains(",")) { + List columnList = Arrays.asList(column.split(",")); + String columnStrNew = columnList.stream().map(c -> fieldColumnMap.get(c)).collect(Collectors.joining(",")); + if (oConvertUtils.isNotEmpty(columnStrNew)) { + column = columnStrNew; + } + }else{ + column = fieldColumnMap.get(column); + } + //SQL注入check + SqlInjectionUtil.filterContent(column); + + //update-begin--Author:scott Date:20210531 for:36 多条件排序无效问题修正------- + // 排序规则修改 + // 将现有排序 _ 前端传递排序条件{....,column: 'column1,column2',order: 'desc'} 翻译成sql "column1,column2 desc" + // 修改为 _ 前端传递排序条件{....,column: 'column1,column2',order: 'desc'} 翻译成sql "column1 desc,column2 desc" + if (order.toUpperCase().indexOf(ORDER_TYPE_ASC)>=0) { + //queryWrapper.orderByAsc(oConvertUtils.camelToUnderline(column)); + String columnStr = oConvertUtils.camelToUnderline(column); + String[] columnArray = columnStr.split(","); + queryWrapper.orderByAsc(Arrays.asList(columnArray)); + } else { + //queryWrapper.orderByDesc(oConvertUtils.camelToUnderline(column)); + String columnStr = oConvertUtils.camelToUnderline(column); + String[] columnArray = columnStr.split(","); + queryWrapper.orderByDesc(Arrays.asList(columnArray)); + } + //update-end--Author:scott Date:20210531 for:36 多条件排序无效问题修正------- + } + } + /** + * 根据所传的值 转化成对应的比较方式 + * 支持><= like in ! + * @param value + * @return + */ + private static QueryRuleEnum convert2Rule(Object value) { + // 避免空数据 + if (value == null) { + return null; + } + String val = (value + "").toString().trim(); + if (val.length() == 0) { + return null; + } + QueryRuleEnum rule =null; + + //update-begin--Author:scott Date:20190724 for:initQueryWrapper组装sql查询条件错误 #284------------------- + //TODO 此处规则,只适用于 le lt ge gt + // step 2 .>= =< + if (rule == null && val.length() >= 3) { + if(QUERY_SEPARATE_KEYWORD.equals(val.substring(2, 3))){ + rule = QueryRuleEnum.getByValue(val.substring(0, 2)); + } + } + // step 1 .> < + if (rule == null && val.length() >= 2) { + if(QUERY_SEPARATE_KEYWORD.equals(val.substring(1, 2))){ + rule = QueryRuleEnum.getByValue(val.substring(0, 1)); + } + } + //update-end--Author:scott Date:20190724 for:initQueryWrapper组装sql查询条件错误 #284--------------------- + + // step 3 like + if (rule == null && val.contains(STAR)) { + if (val.startsWith(STAR) && val.endsWith(STAR)) { + rule = QueryRuleEnum.LIKE; + } else if (val.startsWith(STAR)) { + rule = QueryRuleEnum.LEFT_LIKE; + } else if(val.endsWith(STAR)){ + rule = QueryRuleEnum.RIGHT_LIKE; + } + } + // step 4 in + if (rule == null && val.contains(COMMA)) { + //TODO in 查询这里应该有个bug 如果一字段本身就是多选 此时用in查询 未必能查询出来 + rule = QueryRuleEnum.IN; + } + // step 5 != + if(rule == null && val.startsWith(NOT_EQUAL)){ + rule = QueryRuleEnum.NE; + } + return rule != null ? rule : QueryRuleEnum.EQ; + } + + /** + * 替换掉关键字字符 + * + * @param rule + * @param value + * @return + */ + private static Object replaceValue(QueryRuleEnum rule, Object value) { + if (rule == null) { + return null; + } + if (! (value instanceof String)){ + return value; + } + String val = (value + "").toString().trim(); + if (rule == QueryRuleEnum.LIKE) { + value = val.substring(1, val.length() - 1); + } else if (rule == QueryRuleEnum.LEFT_LIKE || rule == QueryRuleEnum.NE) { + value = val.substring(1); + } else if (rule == QueryRuleEnum.RIGHT_LIKE) { + value = val.substring(0, val.length() - 1); + } else if (rule == QueryRuleEnum.IN) { + value = val.split(","); + } else { + //update-begin--Author:scott Date:20190724 for:initQueryWrapper组装sql查询条件错误 #284------------------- + if(val.startsWith(rule.getValue())){ + //TODO 此处逻辑应该注释掉-> 如果查询内容中带有查询匹配规则符号,就会被截取的(比如:>=您好) + value = val.replaceFirst(rule.getValue(),""); + }else if(val.startsWith(rule.getCondition()+QUERY_SEPARATE_KEYWORD)){ + value = val.replaceFirst(rule.getCondition()+QUERY_SEPARATE_KEYWORD,"").trim(); + } + //update-end--Author:scott Date:20190724 for:initQueryWrapper组装sql查询条件错误 #284------------------- + } + return value; + } + + private static void addQueryByRule(QueryWrapper queryWrapper,String name,String type,String value,QueryRuleEnum rule) throws ParseException { + if(oConvertUtils.isNotEmpty(value)) { + Object temp; + // 针对数字类型字段,多值查询 + if(value.indexOf(COMMA)!=-1){ + temp = value; + addEasyQuery(queryWrapper, name, rule, temp); + return; + } + + switch (type) { + case "class java.lang.Integer": + temp = Integer.parseInt(value); + break; + case "class java.math.BigDecimal": + temp = new BigDecimal(value); + break; + case "class java.lang.Short": + temp = Short.parseShort(value); + break; + case "class java.lang.Long": + temp = Long.parseLong(value); + break; + case "class java.lang.Float": + temp = Float.parseFloat(value); + break; + case "class java.lang.Double": + temp = Double.parseDouble(value); + break; + case "class java.util.Date": + temp = getDateQueryByRule(value, rule); + break; + default: + temp = value; + break; + } + addEasyQuery(queryWrapper, name, rule, temp); + } + } + + /** + * 获取日期类型的值 + * @param value + * @param rule + * @return + * @throws ParseException + */ + private static Date getDateQueryByRule(String value,QueryRuleEnum rule) throws ParseException { + Date date = null; + if(value.length()==10) { + if(rule==QueryRuleEnum.GE) { + //比较大于 + date = getTime().parse(value + " 00:00:00"); + }else if(rule==QueryRuleEnum.LE) { + //比较小于 + date = getTime().parse(value + " 23:59:59"); + } + //TODO 日期类型比较特殊 可能oracle下不一定好使 + } + if(date==null) { + date = getTime().parse(value); + } + return date; + } + + /** + * 根据规则走不同的查询 + * @param queryWrapper QueryWrapper + * @param name 字段名字 + * @param rule 查询规则 + * @param value 查询条件值 + */ + private static void addEasyQuery(QueryWrapper queryWrapper, String name, QueryRuleEnum rule, Object value) { + if (value == null || rule == null || oConvertUtils.isEmpty(value)) { + return; + } + name = oConvertUtils.camelToUnderline(name); + log.info("--查询规则-->"+name+" "+rule.getValue()+" "+value); + switch (rule) { + case GT: + queryWrapper.gt(name, value); + break; + case GE: + queryWrapper.ge(name, value); + break; + case LT: + queryWrapper.lt(name, value); + break; + case LE: + queryWrapper.le(name, value); + break; + case EQ: + queryWrapper.eq(name, value); + break; + case NE: + queryWrapper.ne(name, value); + break; + case IN: + if(value instanceof String) { + queryWrapper.in(name, (Object[])value.toString().split(",")); + }else if(value instanceof String[]) { + queryWrapper.in(name, (Object[]) value); + }else { + queryWrapper.in(name, value); + } + break; + case LIKE: + queryWrapper.like(name, value); + break; + case LEFT_LIKE: + queryWrapper.likeLeft(name, value); + break; + case RIGHT_LIKE: + queryWrapper.likeRight(name, value); + break; + default: + log.info("--查询规则未匹配到---"); + break; + } + } + /** + * + * @param name + * @return + */ + private static boolean judgedIsUselessField(String name) { + return "class".equals(name) || "ids".equals(name) + || "page".equals(name) || "rows".equals(name) + || "sort".equals(name) || "order".equals(name); + } + + /** + * @author: scott + * @Description: 去掉值前后单引号 + * @date: 2020/3/19 21:26 + * @param ruleValue: + * @Return: java.lang.String + */ + public static String trimSingleQuote(String ruleValue) { + if (oConvertUtils.isEmpty(ruleValue)) { + return ""; + } + if (ruleValue.startsWith(QueryGenerator.SQL_SQ)) { + ruleValue = ruleValue.substring(1); + } + if (ruleValue.endsWith(QueryGenerator.SQL_SQ)) { + ruleValue = ruleValue.substring(0, ruleValue.length() - 1); + } + return ruleValue; + } + +// public static String getSqlRuleValue(String sqlRule){ +// try { +// Set varParams = getSqlRuleParams(sqlRule); +// for(String var:varParams){ +// String tempValue = converRuleValue(var); +// sqlRule = sqlRule.replace("#{"+var+"}",tempValue); +// } +// } catch (Exception e) { +// log.error(e.getMessage(), e); +// } +// return sqlRule; +// } + + /** + * 获取sql中的#{key} 这个key组成的set + */ + public static Set getSqlRuleParams(String sql) { + if(oConvertUtils.isEmpty(sql)){ + return null; + } + Set varParams = new HashSet(); + String regex = "\\#\\{\\w+\\}"; + + Pattern p = Pattern.compile(regex); + Matcher m = p.matcher(sql); + while(m.find()){ + String var = m.group(); + varParams.add(var.substring(var.indexOf("{")+1,var.indexOf("}"))); + } + return varParams; + } + + /** + * 获取查询条件 + * @param field + * @param alias + * @param value + * @param isString + * @return + */ + public static String getSingleQueryConditionSql(String field,String alias,Object value,boolean isString) { + if (value == null) { + return ""; + } + field = alias+oConvertUtils.camelToUnderline(field); + QueryRuleEnum rule = QueryGenerator.convert2Rule(value); + return getSingleSqlByRule(rule, field, value, isString); + } + + public static String getSingleSqlByRule(QueryRuleEnum rule,String field,Object value,boolean isString) { + String res = ""; + switch (rule) { + case GT: + res =field+rule.getValue()+getFieldConditionValue(value, isString); + break; + case GE: + res = field+rule.getValue()+getFieldConditionValue(value, isString); + break; + case LT: + res = field+rule.getValue()+getFieldConditionValue(value, isString); + break; + case LE: + res = field+rule.getValue()+getFieldConditionValue(value, isString); + break; + case EQ: + res = field+rule.getValue()+getFieldConditionValue(value, isString); + break; + case NE: + res = field+" <> "+getFieldConditionValue(value, isString); + break; + case IN: + res = field + " in "+getInConditionValue(value, isString); + break; + case LIKE: + res = field + " like "+getLikeConditionValue(value); + break; + case LEFT_LIKE: + res = field + " like "+getLikeConditionValue(value); + break; + case RIGHT_LIKE: + res = field + " like "+getLikeConditionValue(value); + break; + default: + res = field+" = "+getFieldConditionValue(value, isString); + break; + } + return res; + } + private static String getFieldConditionValue(Object value,boolean isString) { + String str = value.toString().trim(); + if(str.startsWith("!")) { + str = str.substring(1); + }else if(str.startsWith(">=")) { + str = str.substring(2); + }else if(str.startsWith("<=")) { + str = str.substring(2); + }else if(str.startsWith(">")) { + str = str.substring(1); + }else if(str.startsWith("<")) { + str = str.substring(1); + } + if(isString) { + if(DataBaseConstant.DB_TYPE_SQLSERVER.equals(getDbType())){ + return " N'"+str+"' "; + }else{ + return " '"+str+"' "; + } + }else { + return value.toString(); + } + } + + private static String getInConditionValue(Object value,boolean isString) { + if(isString) { + String temp[] = value.toString().split(","); + String res=""; + for (String string : temp) { + if(DataBaseConstant.DB_TYPE_SQLSERVER.equals(getDbType())){ + res+=",N'"+string+"'"; + }else{ + res+=",'"+string+"'"; + } + } + return "("+res.substring(1)+")"; + }else { + return "("+value.toString()+")"; + } + } + + private static String getLikeConditionValue(Object value) { + String str = value.toString().trim(); + if(str.startsWith("*") && str.endsWith("*")) { + if(DataBaseConstant.DB_TYPE_SQLSERVER.equals(getDbType())){ + return "N'%"+str.substring(1,str.length()-1)+"%'"; + }else{ + return "'%"+str.substring(1,str.length()-1)+"%'"; + } + }else if(str.startsWith("*")) { + if(DataBaseConstant.DB_TYPE_SQLSERVER.equals(getDbType())){ + return "N'%"+str.substring(1)+"'"; + }else{ + return "'%"+str.substring(1)+"'"; + } + }else if(str.endsWith("*")) { + if(DataBaseConstant.DB_TYPE_SQLSERVER.equals(getDbType())){ + return "N'"+str.substring(0,str.length()-1)+"%'"; + }else{ + return "'"+str.substring(0,str.length()-1)+"%'"; + } + }else { + if(str.indexOf("%")>=0) { + if(DataBaseConstant.DB_TYPE_SQLSERVER.equals(getDbType())){ + if(str.startsWith("'") && str.endsWith("'")){ + return "N"+str; + }else{ + return "N"+"'"+str+"'"; + } + }else{ + if(str.startsWith("'") && str.endsWith("'")){ + return str; + }else{ + return "'"+str+"'"; + } + } + }else { + if(DataBaseConstant.DB_TYPE_SQLSERVER.equals(getDbType())){ + return "N'%"+str+"%'"; + }else{ + return "'%"+str+"%'"; + } + } + } + } + + /** + * 获取请求对应的数据权限规则 + * @return + */ + public static Map getRuleMap() { + Map ruleMap = new HashMap(); + List list = DataAutorUtils.loadDataSearchConditon(); + if(list != null&&list.size()>0){ + if(list.get(0)==null){ + return ruleMap; + } + for (SysPermissionDataRuleModel rule : list) { + String column = rule.getRuleColumn(); + if(QueryRuleEnum.SQL_RULES.getValue().equals(rule.getRuleConditions())) { + column = SQL_RULES_COLUMN+rule.getId(); + } + ruleMap.put(column, rule); + } + } + return ruleMap; + } + + /** + * 转换sql中的系统变量 + * @param sql + * @return + */ +// public static String convertSystemVariables(String sql){ +// return getSqlRuleValue(sql); +// } + /** 当前系统数据库类型 */ + private static String DB_TYPE; + /** + * 获取系统数据库类型 + */ + private static String getDbType(){ + if(oConvertUtils.isNotEmpty(DB_TYPE)){ + return DB_TYPE; + } + try { + ISysBaseAPI sysBaseAPI = ApplicationContextUtil.getContext().getBean(ISysBaseAPI.class); + DB_TYPE = sysBaseAPI.getDatabaseType(); + return DB_TYPE; + } catch (Exception e) { + e.printStackTrace(); + } + return DB_TYPE; + } + +} diff --git a/src/main/java/org/gyk/common/query/QueryRuleEnum.java b/src/main/java/org/gyk/common/query/QueryRuleEnum.java new file mode 100644 index 0000000..72b6fe0 --- /dev/null +++ b/src/main/java/org/gyk/common/query/QueryRuleEnum.java @@ -0,0 +1,71 @@ +package org.gyk.common.query; + +import org.gyk.common.util.oConvertUtils; + +/** + * Query 规则 常量 + * @Author Scott + * @Date 2019年02月14日 + */ +public enum QueryRuleEnum { + + GT(">","gt","大于"), + GE(">=","ge","大于等于"), + LT("<","lt","小于"), + LE("<=","le","小于等于"), + EQ("=","eq","等于"), + NE("!=","ne","不等于"), + IN("IN","in","包含"), + LIKE("LIKE","like","全模糊"), + LEFT_LIKE("LEFT_LIKE","left_like","左模糊"), + RIGHT_LIKE("RIGHT_LIKE","right_like","右模糊"), + SQL_RULES("USE_SQL_RULES","ext","自定义SQL片段"); + + private String value; + + private String condition; + + private String msg; + + QueryRuleEnum(String value, String condition, String msg){ + this.value = value; + this.condition = condition; + this.msg = msg; + } + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } + + public String getMsg() { + return msg; + } + + public void setMsg(String msg) { + this.msg = msg; + } + + public String getCondition() { + return condition; + } + + public void setCondition(String condition) { + this.condition = condition; + } + + public static QueryRuleEnum getByValue(String value){ + if(oConvertUtils.isEmpty(value)) { + return null; + } + for(QueryRuleEnum val :values()){ + if (val.getValue().equals(value) || val.getCondition().equals(value)){ + return val; + } + } + return null; + } +} diff --git a/src/main/java/org/gyk/common/util/DataAutorUtils.java b/src/main/java/org/gyk/common/util/DataAutorUtils.java new file mode 100644 index 0000000..26bf3e1 --- /dev/null +++ b/src/main/java/org/gyk/common/util/DataAutorUtils.java @@ -0,0 +1,77 @@ +package org.gyk.common.util; + +import org.gyk.common.vo.SysPermissionDataRuleModel; +import org.gyk.common.util.SpringContextUtils; +import org.springframework.util.StringUtils; + +import javax.servlet.http.HttpServletRequest; +import java.util.ArrayList; +import java.util.List; + +/** + * @ClassName: JeecgDataAutorUtils + * @Description: 数据权限查询规则容器工具类 + * @Author: 张代浩 + * @Date: 2012-12-15 下午11:27:39 + * + */ +public class DataAutorUtils { + + public static final String MENU_DATA_AUTHOR_RULES = "MENU_DATA_AUTHOR_RULES"; + + public static final String MENU_DATA_AUTHOR_RULE_SQL = "MENU_DATA_AUTHOR_RULE_SQL"; + + public static final String SYS_USER_INFO = "SYS_USER_INFO"; + + /** + * 往链接请求里面,传入数据查询条件 + * + * @param request + * @param dataRules + */ + public static synchronized void installDataSearchConditon(HttpServletRequest request, List dataRules) { + @SuppressWarnings("unchecked") + List list = (List)loadDataSearchConditon();// 1.先从request获取MENU_DATA_AUTHOR_RULES,如果存则获取到LIST + if (list==null) { + // 2.如果不存在,则new一个list + list = new ArrayList(); + } + for (SysPermissionDataRuleModel tsDataRule : dataRules) { + list.add(tsDataRule); + } + request.setAttribute(MENU_DATA_AUTHOR_RULES, list); // 3.往list里面增量存指 + } + + /** + * 获取请求对应的数据权限规则 + * + * @return + */ + @SuppressWarnings("unchecked") + public static synchronized List loadDataSearchConditon() { + return (List) SpringContextUtils.getHttpServletRequest().getAttribute(MENU_DATA_AUTHOR_RULES); + + } + + /** + * 获取请求对应的数据权限SQL + * + * @return + */ + public static synchronized String loadDataSearchConditonSQLString() { + return (String) SpringContextUtils.getHttpServletRequest().getAttribute(MENU_DATA_AUTHOR_RULE_SQL); + } + + /** + * 往链接请求里面,传入数据查询条件 + * + * @param request + * @param sql + */ + public static synchronized void installDataSearchConditon(HttpServletRequest request, String sql) { + String ruleSql = (String)loadDataSearchConditonSQLString(); + if (!StringUtils.hasText(ruleSql)) { + request.setAttribute(MENU_DATA_AUTHOR_RULE_SQL,sql); + } + } +} diff --git a/src/main/java/org/gyk/common/util/DateUtils.java b/src/main/java/org/gyk/common/util/DateUtils.java new file mode 100644 index 0000000..1bfdd7d --- /dev/null +++ b/src/main/java/org/gyk/common/util/DateUtils.java @@ -0,0 +1,700 @@ +package org.gyk.common.util; + +import org.springframework.util.StringUtils; + +import java.beans.PropertyEditorSupport; +import java.sql.Timestamp; +import java.text.DateFormat; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.Calendar; +import java.util.Date; +import java.util.GregorianCalendar; + +/** + * 类描述:时间操作定义类 + * + * @Author: 张代浩 + * @Date:2012-12-8 12:15:03 + * @Version 1.0 + */ +public class DateUtils extends PropertyEditorSupport { + + public static ThreadLocal date_sdf = new ThreadLocal() { + @Override + protected SimpleDateFormat initialValue() { + return new SimpleDateFormat("yyyy-MM-dd"); + } + }; + public static ThreadLocal yyyyMMdd = new ThreadLocal() { + @Override + protected SimpleDateFormat initialValue() { + return new SimpleDateFormat("yyyyMMdd"); + } + }; + public static ThreadLocal date_sdf_wz = new ThreadLocal() { + @Override + protected SimpleDateFormat initialValue() { + return new SimpleDateFormat("yyyy年MM月dd日"); + } + }; + public static ThreadLocal time_sdf = new ThreadLocal() { + @Override + protected SimpleDateFormat initialValue() { + return new SimpleDateFormat("yyyy-MM-dd HH:mm"); + } + }; + public static ThreadLocal yyyymmddhhmmss = new ThreadLocal() { + @Override + protected SimpleDateFormat initialValue() { + return new SimpleDateFormat("yyyyMMddHHmmss"); + } + }; + public static ThreadLocal short_time_sdf = new ThreadLocal() { + @Override + protected SimpleDateFormat initialValue() { + return new SimpleDateFormat("HH:mm"); + } + }; + public static ThreadLocal datetimeFormat = new ThreadLocal() { + @Override + protected SimpleDateFormat initialValue() { + return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + } + }; + + // 以毫秒表示的时间 + private static final long DAY_IN_MILLIS = 24 * 3600 * 1000; + private static final long HOUR_IN_MILLIS = 3600 * 1000; + private static final long MINUTE_IN_MILLIS = 60 * 1000; + private static final long SECOND_IN_MILLIS = 1000; + + // 指定模式的时间格式 + private static SimpleDateFormat getSDFormat(String pattern) { + return new SimpleDateFormat(pattern); + } + + /** + * 当前日历,这里用中国时间表示 + * + * @return 以当地时区表示的系统当前日历 + */ + public static Calendar getCalendar() { + return Calendar.getInstance(); + } + + /** + * 指定毫秒数表示的日历 + * + * @param millis 毫秒数 + * @return 指定毫秒数表示的日历 + */ + public static Calendar getCalendar(long millis) { + Calendar cal = Calendar.getInstance(); + // --------------------cal.setTimeInMillis(millis); + cal.setTime(new Date(millis)); + return cal; + } + + // //////////////////////////////////////////////////////////////////////////// + // getDate + // 各种方式获取的Date + // //////////////////////////////////////////////////////////////////////////// + + /** + * 当前日期 + * + * @return 系统当前时间 + */ + public static Date getDate() { + return new Date(); + } + + /** + * 指定毫秒数表示的日期 + * + * @param millis 毫秒数 + * @return 指定毫秒数表示的日期 + */ + public static Date getDate(long millis) { + return new Date(millis); + } + + /** + * 时间戳转换为字符串 + * + * @param time + * @return + */ + public static String timestamptoStr(Timestamp time) { + Date date = null; + if (null != time) { + date = new Date(time.getTime()); + } + return date2Str(date_sdf.get()); + } + + /** + * 字符串转换时间戳 + * + * @param str + * @return + */ + public static Timestamp str2Timestamp(String str) { + Date date = str2Date(str, date_sdf.get()); + return new Timestamp(date.getTime()); + } + + /** + * 字符串转换成日期 + * + * @param str + * @param sdf + * @return + */ + public static Date str2Date(String str, SimpleDateFormat sdf) { + if (null == str || "".equals(str)) { + return null; + } + Date date = null; + try { + date = sdf.parse(str); + return date; + } catch (ParseException e) { + e.printStackTrace(); + } + return null; + } + + /** + * 日期转换为字符串 + * + * @param date_sdf 日期格式 + * @return 字符串 + */ + public static String date2Str(SimpleDateFormat date_sdf) { + Date date = getDate(); + if (null == date) { + return null; + } + return date_sdf.format(date); + } + + /** + * 格式化时间 + * + * @param date + * @param format + * @return + */ + public static String dateformat(String date, String format) { + SimpleDateFormat sformat = new SimpleDateFormat(format); + Date _date = null; + try { + _date = sformat.parse(date); + } catch (ParseException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + return sformat.format(_date); + } + + /** + * 日期转换为字符串 + * + * @param date 日期 + * @param date_sdf 日期格式 + * @return 字符串 + */ + public static String date2Str(Date date, SimpleDateFormat date_sdf) { + if (null == date) { + return null; + } + return date_sdf.format(date); + } + + /** + * 日期转换为字符串 + * + * @param format 日期格式 + * @return 字符串 + */ + public static String getDate(String format) { + Date date = new Date(); + if (null == date) { + return null; + } + SimpleDateFormat sdf = new SimpleDateFormat(format); + return sdf.format(date); + } + + /** + * 日期转换为字符串 + * + * @param format 日期格式 + * @return 字符串 + */ + public static String setDate(String dateStr,String format) { + try { + SimpleDateFormat sdfDate = new SimpleDateFormat("yyyy-MM-dd"); + Date parse = sdfDate.parse(dateStr); + SimpleDateFormat sdf = new SimpleDateFormat(format); + return sdf.format(parse); + }catch (Exception e){ + + } + return ""; + } + + + + /** + * 指定毫秒数的时间戳 + * + * @param millis 毫秒数 + * @return 指定毫秒数的时间戳 + */ + public static Timestamp getTimestamp(long millis) { + return new Timestamp(millis); + } + + /** + * 以字符形式表示的时间戳 + * + * @param time 毫秒数 + * @return 以字符形式表示的时间戳 + */ + public static Timestamp getTimestamp(String time) { + return new Timestamp(Long.parseLong(time)); + } + + /** + * 系统当前的时间戳 + * + * @return 系统当前的时间戳 + */ + public static Timestamp getTimestamp() { + return new Timestamp(System.currentTimeMillis()); + } + + /** + * 当前时间,格式 yyyy-MM-dd HH:mm:ss + * + * @return 当前时间的标准形式字符串 + */ + public static String now() { + return datetimeFormat.get().format(getCalendar().getTime()); + } + + /** + * 指定日期的时间戳 + * + * @param date 指定日期 + * @return 指定日期的时间戳 + */ + public static Timestamp getTimestamp(Date date) { + return new Timestamp(date.getTime()); + } + + /** + * 指定日历的时间戳 + * + * @param cal 指定日历 + * @return 指定日历的时间戳 + */ + public static Timestamp getCalendarTimestamp(Calendar cal) { + // ---------------------return new Timestamp(cal.getTimeInMillis()); + return new Timestamp(cal.getTime().getTime()); + } + + public static Timestamp gettimestamp() { + Date dt = new Date(); + DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + String nowTime = df.format(dt); + Timestamp buydate = Timestamp.valueOf(nowTime); + return buydate; + } + + // //////////////////////////////////////////////////////////////////////////// + // getMillis + // 各种方式获取的Millis + // //////////////////////////////////////////////////////////////////////////// + + /** + * 系统时间的毫秒数 + * + * @return 系统时间的毫秒数 + */ + public static long getMillis() { + return System.currentTimeMillis(); + } + + /** + * 指定日历的毫秒数 + * + * @param cal 指定日历 + * @return 指定日历的毫秒数 + */ + public static long getMillis(Calendar cal) { + // --------------------return cal.getTimeInMillis(); + return cal.getTime().getTime(); + } + + /** + * 指定日期的毫秒数 + * + * @param date 指定日期 + * @return 指定日期的毫秒数 + */ + public static long getMillis(Date date) { + return date.getTime(); + } + + /** + * 指定时间戳的毫秒数 + * + * @param ts 指定时间戳 + * @return 指定时间戳的毫秒数 + */ + public static long getMillis(Timestamp ts) { + return ts.getTime(); + } + + // //////////////////////////////////////////////////////////////////////////// + // formatDate + // 将日期按照一定的格式转化为字符串 + // //////////////////////////////////////////////////////////////////////////// + + /** + * 默认方式表示的系统当前日期,具体格式:年-月-日 + * + * @return 默认日期按“年-月-日“格式显示 + */ + public static String formatDate() { + return date_sdf.get().format(getCalendar().getTime()); + } + + /** + * 默认方式表示的系统当前日期,具体格式:yyyy-MM-dd HH:mm:ss + * + * @return 默认日期按“yyyy-MM-dd HH:mm:ss“格式显示 + */ + public static String formatDateTime() { + return datetimeFormat.get().format(getCalendar().getTime()); + } + + + /** + * 功能描述:
+ * 〈〉 + * @Param: [] + * @Return: java.lang.String + * @Author: 闵年泽 + * @Date: 2023/9/1 10:59 + */ + public static String formatDateTimeSecond(Date date) { + return datetimeFormat.get().format(date); + } + + /** + * 获取时间字符串 + */ + public static String getDataString(SimpleDateFormat formatstr) { + return formatstr.format(getCalendar().getTime()); + } + + /** + * 指定日期的默认显示,具体格式:年-月-日 + * + * @param cal 指定的日期 + * @return 指定日期按“年-月-日“格式显示 + */ + public static String formatDate(Calendar cal) { + return date_sdf.get().format(cal.getTime()); + } + + /** + * 指定日期的默认显示,具体格式:年-月-日 + * + * @param date 指定的日期 + * @return 指定日期按“年-月-日“格式显示 + */ + public static String formatDate(Date date) { + return date_sdf.get().format(date); + } + + /** + * 指定毫秒数表示日期的默认显示,具体格式:年-月-日 + * + * @param millis 指定的毫秒数 + * @return 指定毫秒数表示日期按“年-月-日“格式显示 + */ + public static String formatDate(long millis) { + return date_sdf.get().format(new Date(millis)); + } + + /** + * 默认日期按指定格式显示 + * + * @param pattern 指定的格式 + * @return 默认日期按指定格式显示 + */ + public static String formatDate(String pattern) { + return getSDFormat(pattern).format(getCalendar().getTime()); + } + + /** + * 指定日期按指定格式显示 + * + * @param cal 指定的日期 + * @param pattern 指定的格式 + * @return 指定日期按指定格式显示 + */ + public static String formatDate(Calendar cal, String pattern) { + return getSDFormat(pattern).format(cal.getTime()); + } + + /** + * 指定日期按指定格式显示 + * + * @param date 指定的日期 + * @param pattern 指定的格式 + * @return 指定日期按指定格式显示 + */ + public static String formatDate(Date date, String pattern) { + return getSDFormat(pattern).format(date); + } + + // //////////////////////////////////////////////////////////////////////////// + // formatTime + // 将日期按照一定的格式转化为字符串 + // //////////////////////////////////////////////////////////////////////////// + + /** + * 默认方式表示的系统当前日期,具体格式:年-月-日 时:分 + * + * @return 默认日期按“年-月-日 时:分“格式显示 + */ + public static String formatTime() { + return time_sdf.get().format(getCalendar().getTime()); + } + + /** + * 指定毫秒数表示日期的默认显示,具体格式:年-月-日 时:分 + * + * @param millis 指定的毫秒数 + * @return 指定毫秒数表示日期按“年-月-日 时:分“格式显示 + */ + public static String formatTime(long millis) { + return time_sdf.get().format(new Date(millis)); + } + + /** + * 指定日期的默认显示,具体格式:年-月-日 时:分 + * + * @param cal 指定的日期 + * @return 指定日期按“年-月-日 时:分“格式显示 + */ + public static String formatTime(Calendar cal) { + return time_sdf.get().format(cal.getTime()); + } + + /** + * 指定日期的默认显示,具体格式:年-月-日 时:分 + * + * @param date 指定的日期 + * @return 指定日期按“年-月-日 时:分“格式显示 + */ + public static String formatTime(Date date) { + return time_sdf.get().format(date); + } + + // //////////////////////////////////////////////////////////////////////////// + // formatShortTime + // 将日期按照一定的格式转化为字符串 + // //////////////////////////////////////////////////////////////////////////// + + /** + * 默认方式表示的系统当前日期,具体格式:时:分 + * + * @return 默认日期按“时:分“格式显示 + */ + public static String formatShortTime() { + return short_time_sdf.get().format(getCalendar().getTime()); + } + + /** + * 指定毫秒数表示日期的默认显示,具体格式:时:分 + * + * @param millis 指定的毫秒数 + * @return 指定毫秒数表示日期按“时:分“格式显示 + */ + public static String formatShortTime(long millis) { + return short_time_sdf.get().format(new Date(millis)); + } + + /** + * 指定日期的默认显示,具体格式:时:分 + * + * @param cal 指定的日期 + * @return 指定日期按“时:分“格式显示 + */ + public static String formatShortTime(Calendar cal) { + return short_time_sdf.get().format(cal.getTime()); + } + + /** + * 指定日期的默认显示,具体格式:时:分 + * + * @param date 指定的日期 + * @return 指定日期按“时:分“格式显示 + */ + public static String formatShortTime(Date date) { + return short_time_sdf.get().format(date); + } + + // //////////////////////////////////////////////////////////////////////////// + // parseDate + // parseCalendar + // parseTimestamp + // 将字符串按照一定的格式转化为日期或时间 + // //////////////////////////////////////////////////////////////////////////// + + /** + * 根据指定的格式将字符串转换成Date 如输入:2003-11-19 11:20:20将按照这个转成时间 + * + * @param src 将要转换的原始字符窜 + * @param pattern 转换的匹配格式 + * @return 如果转换成功则返回转换后的日期 + * @throws ParseException + */ + public static Date parseDate(String src, String pattern) throws ParseException { + return getSDFormat(pattern).parse(src); + + } + + /** + * 根据指定的格式将字符串转换成Date 如输入:2003-11-19 11:20:20将按照这个转成时间 + * + * @param src 将要转换的原始字符窜 + * @param pattern 转换的匹配格式 + * @return 如果转换成功则返回转换后的日期 + * @throws ParseException + */ + public static Calendar parseCalendar(String src, String pattern) throws ParseException { + + Date date = parseDate(src, pattern); + Calendar cal = Calendar.getInstance(); + cal.setTime(date); + return cal; + } + + public static String formatAddDate(String src, String pattern, int amount) throws ParseException { + Calendar cal; + cal = parseCalendar(src, pattern); + cal.add(Calendar.DATE, amount); + return formatDate(cal); + } + + /** + * 根据指定的格式将字符串转换成Date 如输入:2003-11-19 11:20:20将按照这个转成时间 + * + * @param src 将要转换的原始字符窜 + * @param pattern 转换的匹配格式 + * @return 如果转换成功则返回转换后的时间戳 + * @throws ParseException + */ + public static Timestamp parseTimestamp(String src, String pattern) throws ParseException { + Date date = parseDate(src, pattern); + return new Timestamp(date.getTime()); + } + + // //////////////////////////////////////////////////////////////////////////// + // dateDiff + // 计算两个日期之间的差值 + // //////////////////////////////////////////////////////////////////////////// + + /** + * 计算两个时间之间的差值,根据标志的不同而不同 + * + * @param flag 计算标志,表示按照年/月/日/时/分/秒等计算 + * @param calSrc 减数 + * @param calDes 被减数 + * @return 两个日期之间的差值 + */ + public static int dateDiff(char flag, Calendar calSrc, Calendar calDes) { + + long millisDiff = getMillis(calSrc) - getMillis(calDes); + + if (flag == 'y') { + return (calSrc.get(Calendar.YEAR) - calDes.get(Calendar.YEAR)); + } + + if (flag == 'd') { + return (int) (millisDiff / DAY_IN_MILLIS); + } + + if (flag == 'h') { + return (int) (millisDiff / HOUR_IN_MILLIS); + } + + if (flag == 'm') { + return (int) (millisDiff / MINUTE_IN_MILLIS); + } + + if (flag == 's') { + return (int) (millisDiff / SECOND_IN_MILLIS); + } + + return 0; + } + + /** + * String类型 转换为Date, 如果参数长度为10 转换格式”yyyy-MM-dd“ 如果参数长度为19 转换格式”yyyy-MM-dd + * HH:mm:ss“ * @param text String类型的时间值 + */ + @Override + public void setAsText(String text) throws IllegalArgumentException { + if (StringUtils.hasText(text)) { + try { + if (text.indexOf(":") == -1 && text.length() == 10) { + setValue(DateUtils.date_sdf.get().parse(text)); + } else if (text.indexOf(":") > 0 && text.length() == 19) { + setValue(DateUtils.datetimeFormat.get().parse(text)); + } else { + throw new IllegalArgumentException("Could not parse date, date format is error "); + } + } catch (ParseException ex) { + IllegalArgumentException iae = new IllegalArgumentException("Could not parse date: " + ex.getMessage()); + iae.initCause(ex); + throw iae; + } + } else { + setValue(null); + } + } + + public static int getYear() { + GregorianCalendar calendar = new GregorianCalendar(); + calendar.setTime(getDate()); + return calendar.get(Calendar.YEAR); + } + + /** + * 功能描述:
+ * 〈〉计算两个long值返回的日期 + * @Param: [time1, time2] + * @Return: int + * @Author: 闵年泽 + * @Date: 2023/2/10 16:21 + */ + public static int getDiffDay(long time1,long time2){ + long diff = (time1-time2)/(1000*3600*24); + return (int)diff; + } + + public static Date solveDaylight(){ + return null; + } + +} \ No newline at end of file diff --git a/src/main/java/org/gyk/common/util/MyStringUtils.java b/src/main/java/org/gyk/common/util/MyStringUtils.java new file mode 100644 index 0000000..42b45ea --- /dev/null +++ b/src/main/java/org/gyk/common/util/MyStringUtils.java @@ -0,0 +1,53 @@ +package org.gyk.common.util; + +/** + * @Author 闵年泽 + * @Date 2023/10/9 14:29 + * @Version 1.0 + */ +public class MyStringUtils { + + /** + * 功能描述:
+ * 〈〉驼峰转下划线命名 + * @Param: [str] + * @Return: java.lang.String + * @Author: 闵年泽 + * @Date: 2023/10/9 14:29 + */ + public static String toUnderScoreCase(String str) { + if (str == null) { + return null; + } + StringBuilder sb = new StringBuilder(); + // 前置字符是否大写 + boolean preCharIsUpperCase = true; + // 当前字符是否大写 + boolean curreCharIsUpperCase = true; + // 下一字符是否大写 + boolean nexteCharIsUpperCase = true; + for (int i = 0; i < str.length(); i++) { + char c = str.charAt(i); + if (i > 0) { + preCharIsUpperCase = Character.isUpperCase(str.charAt(i - 1)); + } else { + preCharIsUpperCase = false; + } + + curreCharIsUpperCase = Character.isUpperCase(c); + + if (i < (str.length() - 1)) { + nexteCharIsUpperCase = Character.isUpperCase(str.charAt(i + 1)); + } + + if (preCharIsUpperCase && curreCharIsUpperCase && !nexteCharIsUpperCase) { + sb.append("_"); + } else if ((i != 0 && !preCharIsUpperCase) && curreCharIsUpperCase) { + sb.append("_"); + } + sb.append(Character.toLowerCase(c)); + } + + return sb.toString(); + } +} diff --git a/src/main/java/org/gyk/common/util/SpringContextUtils.java b/src/main/java/org/gyk/common/util/SpringContextUtils.java new file mode 100644 index 0000000..7c97715 --- /dev/null +++ b/src/main/java/org/gyk/common/util/SpringContextUtils.java @@ -0,0 +1,85 @@ +package org.gyk.common.util; + +import org.springframework.beans.BeansException; +import org.springframework.context.ApplicationContext; +import org.springframework.context.ApplicationContextAware; +import org.springframework.stereotype.Component; +import org.springframework.web.context.request.RequestContextHolder; +import org.springframework.web.context.request.ServletRequestAttributes; + +import javax.servlet.http.HttpServletRequest; +import java.util.Objects; + +@Component +public class SpringContextUtils implements ApplicationContextAware { + + /** + * 上下文对象实例 + */ + private static ApplicationContext applicationContext; + + @Override + public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { + SpringContextUtils.applicationContext = applicationContext; + } + + /** + * 获取applicationContext + * + * @return + */ + public static ApplicationContext getApplicationContext() { + return applicationContext; + } + + /** + * 获取HttpServletRequest + */ + public static HttpServletRequest getHttpServletRequest() { + return ((ServletRequestAttributes) Objects.requireNonNull(RequestContextHolder.getRequestAttributes())).getRequest(); + } + + public static String getDomain(){ + HttpServletRequest request = getHttpServletRequest(); + StringBuffer url = request.getRequestURL(); + return url.delete(url.length() - request.getRequestURI().length(), url.length()).toString(); + } + + public static String getOrigin(){ + HttpServletRequest request = getHttpServletRequest(); + return request.getHeader("Origin"); + } + + /** + * 通过name获取 Bean. + * + * @param name + * @return + */ + public static Object getBean(String name) { + return getApplicationContext().getBean(name); + } + + /** + * 通过class获取Bean. + * + * @param clazz + * @param + * @return + */ + public static T getBean(Class clazz) { + return getApplicationContext().getBean(clazz); + } + + /** + * 通过name,以及Clazz返回指定的Bean + * + * @param name + * @param clazz + * @param + * @return + */ + public static T getBean(String name, Class clazz) { + return getApplicationContext().getBean(name, clazz); + } +} diff --git a/src/main/java/org/gyk/common/util/SqlInjectionUtil.java b/src/main/java/org/gyk/common/util/SqlInjectionUtil.java new file mode 100644 index 0000000..db27b3a --- /dev/null +++ b/src/main/java/org/gyk/common/util/SqlInjectionUtil.java @@ -0,0 +1,118 @@ +package org.gyk.common.util; + +import lombok.extern.slf4j.Slf4j; + +import javax.servlet.http.HttpServletRequest; + +/** + * sql注入处理工具类 + * + * @author zhoujf + */ +@Slf4j +public class SqlInjectionUtil { + /** + * sign 用于表字典加签的盐值【SQL漏洞】 + * (上线修改值 20200501,同步修改前端的盐值) + */ + private final static String TABLE_DICT_SIGN_SALT = "20200501"; + private final static String xssStr = "'|and |exec |insert |select |delete |update |drop |count |chr |mid |master |truncate |char |declare |;|or |+|,"; + + /** + * sql注入过滤处理,遇到注入关键字抛异常 + * + * @param value + * @return + */ + public static void filterContent(String value) { + if (value == null || "".equals(value)) { + return; + } + // 统一转为小写 + value = value.toLowerCase(); + String[] xssArr = xssStr.split("\\|"); + for (int i = 0; i < xssArr.length; i++) { + if (value.indexOf(xssArr[i]) > -1) { + log.error("请注意,存在SQL注入关键词---> {}", xssArr[i]); + log.error("请注意,值可能存在SQL注入风险!---> {}", value); + throw new RuntimeException("请注意,值可能存在SQL注入风险!--->" + value); + } + } + return; + } + + /** + * sql注入过滤处理,遇到注入关键字抛异常 + * + * @param values + * @return + */ + public static void filterContent(String[] values) { + String[] xssArr = xssStr.split("\\|"); + for (String value : values) { + if (value == null || "".equals(value)) { + return; + } + // 统一转为小写 + value = value.toLowerCase(); + for (int i = 0; i < xssArr.length; i++) { + if (value.indexOf(xssArr[i]) > -1) { + log.error("请注意,存在SQL注入关键词---> {}", xssArr[i]); + log.error("请注意,值可能存在SQL注入风险!---> {}", value); + throw new RuntimeException("请注意,值可能存在SQL注入风险!--->" + value); + } + } + } + return; + } + + /** + * @特殊方法(不通用) 仅用于字典条件SQL参数,注入过滤 + * @param value + * @return + */ + @Deprecated + public static void specialFilterContent(String value) { + String specialXssStr = " exec | insert | select | delete | update | drop | count | chr | mid | master | truncate | char | declare |;|+|"; + String[] xssArr = specialXssStr.split("\\|"); + if (value == null || "".equals(value)) { + return; + } + // 统一转为小写 + value = value.toLowerCase(); + for (int i = 0; i < xssArr.length; i++) { + if (value.indexOf(xssArr[i]) > -1 || value.startsWith(xssArr[i].trim())) { + log.error("请注意,存在SQL注入关键词---> {}", xssArr[i]); + log.error("请注意,值可能存在SQL注入风险!---> {}", value); + throw new RuntimeException("请注意,值可能存在SQL注入风险!--->" + value); + } + } + return; + } + + + /** + * @特殊方法(不通用) 仅用于Online报表SQL解析,注入过滤 + * @param value + * @return + */ + @Deprecated + public static void specialFilterContentForOnlineReport(String value) { + String specialXssStr = " exec | insert | delete | update | drop | chr | mid | master | truncate | char | declare |"; + String[] xssArr = specialXssStr.split("\\|"); + if (value == null || "".equals(value)) { + return; + } + // 统一转为小写 + value = value.toLowerCase(); + for (int i = 0; i < xssArr.length; i++) { + if (value.indexOf(xssArr[i]) > -1 || value.startsWith(xssArr[i].trim())) { + log.error("请注意,存在SQL注入关键词---> {}", xssArr[i]); + log.error("请注意,值可能存在SQL注入风险!---> {}", value); + throw new RuntimeException("请注意,值可能存在SQL注入风险!--->" + value); + } + } + return; + } + +} diff --git a/src/main/java/org/gyk/common/util/oConvertUtils.java b/src/main/java/org/gyk/common/util/oConvertUtils.java new file mode 100644 index 0000000..8974cc3 --- /dev/null +++ b/src/main/java/org/gyk/common/util/oConvertUtils.java @@ -0,0 +1,640 @@ +package org.gyk.common.util; + +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; + +import javax.servlet.http.HttpServletRequest; +import java.io.IOException; +import java.io.InputStream; +import java.io.UnsupportedEncodingException; +import java.lang.reflect.Field; +import java.math.BigDecimal; +import java.math.BigInteger; +import java.net.InetAddress; +import java.net.NetworkInterface; +import java.net.SocketException; +import java.net.UnknownHostException; +import java.sql.Date; +import java.util.*; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +/** + * + * @Author 张代浩 + * + */ +@Slf4j +public class oConvertUtils { + public static boolean isEmpty(Object object) { + if (object == null) { + return (true); + } + if ("".equals(object)) { + return (true); + } + if ("null".equals(object)) { + return (true); + } + return (false); + } + + public static boolean isNotEmpty(Object object) { + if (object != null && !object.equals("") && !object.equals("null")) { + return (true); + } + return (false); + } + + public static String decode(String strIn, String sourceCode, String targetCode) { + String temp = code2code(strIn, sourceCode, targetCode); + return temp; + } + + public static String StrToUTF(String strIn, String sourceCode, String targetCode) { + strIn = ""; + try { + strIn = new String(strIn.getBytes("ISO-8859-1"), "GBK"); + } catch (UnsupportedEncodingException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + return strIn; + + } + + private static String code2code(String strIn, String sourceCode, String targetCode) { + String strOut = null; + if (strIn == null || (strIn.trim()).equals("")) { + return strIn; + } + try { + byte[] b = strIn.getBytes(sourceCode); + for (int i = 0; i < b.length; i++) { + System.out.print(b[i] + " "); + } + strOut = new String(b, targetCode); + } catch (Exception e) { + e.printStackTrace(); + return null; + } + return strOut; + } + + public static int getInt(String s, int defval) { + if (s == null || s == "") { + return (defval); + } + try { + return (Integer.parseInt(s)); + } catch (NumberFormatException e) { + return (defval); + } + } + + public static int getInt(String s) { + if (s == null || s == "") { + return 0; + } + try { + return (Integer.parseInt(s)); + } catch (NumberFormatException e) { + return 0; + } + } + + public static int getInt(String s, Integer df) { + if (s == null || s == "") { + return df; + } + try { + return (Integer.parseInt(s)); + } catch (NumberFormatException e) { + return 0; + } + } + + public static Integer[] getInts(String[] s) { + Integer[] integer = new Integer[s.length]; + if (s == null) { + return null; + } + for (int i = 0; i < s.length; i++) { + integer[i] = Integer.parseInt(s[i]); + } + return integer; + + } + + public static double getDouble(String s, double defval) { + if (s == null || s == "") { + return (defval); + } + try { + return (Double.parseDouble(s)); + } catch (NumberFormatException e) { + return (defval); + } + } + + public static double getDou(Double s, double defval) { + if (s == null) { + return (defval); + } + return s; + } + + /*public static Short getShort(String s) { + if (StringUtil.isNotEmpty(s)) { + return (Short.parseShort(s)); + } else { + return null; + } + }*/ + + public static int getInt(Object object, int defval) { + if (isEmpty(object)) { + return (defval); + } + try { + return (Integer.parseInt(object.toString())); + } catch (NumberFormatException e) { + return (defval); + } + } + + public static Integer getInt(Object object) { + if (isEmpty(object)) { + return null; + } + try { + return (Integer.parseInt(object.toString())); + } catch (NumberFormatException e) { + return null; + } + } + + public static int getInt(BigDecimal s, int defval) { + if (s == null) { + return (defval); + } + return s.intValue(); + } + + public static Integer[] getIntegerArry(String[] object) { + int len = object.length; + Integer[] result = new Integer[len]; + try { + for (int i = 0; i < len; i++) { + result[i] = new Integer(object[i].trim()); + } + return result; + } catch (NumberFormatException e) { + return null; + } + } + + public static String getString(String s) { + return (getString(s, "")); + } + + /** + * 转义成Unicode编码 + * @param + * @return + */ + /*public static String escapeJava(Object s) { + return StringEscapeUtils.escapeJava(getString(s)); + }*/ + + public static String getString(Object object) { + if (isEmpty(object)) { + return ""; + } + return (object.toString().trim()); + } + + public static String getString(int i) { + return (String.valueOf(i)); + } + + public static String getString(float i) { + return (String.valueOf(i)); + } + + public static String getString(String s, String defval) { + if (isEmpty(s)) { + return (defval); + } + return (s.trim()); + } + + public static String getString(Object s, String defval) { + if (isEmpty(s)) { + return (defval); + } + return (s.toString().trim()); + } + + public static long stringToLong(String str) { + Long test = new Long(0); + try { + test = Long.valueOf(str); + } catch (Exception e) { + } + return test.longValue(); + } + + /** + * 获取本机IP + */ + public static String getIp() { + String ip = null; + try { + InetAddress address = InetAddress.getLocalHost(); + ip = address.getHostAddress(); + + } catch (UnknownHostException e) { + e.printStackTrace(); + } + return ip; + } + + /** + * 判断一个类是否为基本数据类型。 + * + * @param clazz + * 要判断的类。 + * @return true 表示为基本数据类型。 + */ + private static boolean isBaseDataType(Class clazz) throws Exception { + return (clazz.equals(String.class) || clazz.equals(Integer.class) || clazz.equals(Byte.class) || clazz.equals(Long.class) || clazz.equals(Double.class) || clazz.equals(Float.class) || clazz.equals(Character.class) || clazz.equals(Short.class) || clazz.equals(BigDecimal.class) || clazz.equals(BigInteger.class) || clazz.equals(Boolean.class) || clazz.equals(Date.class) || clazz.isPrimitive()); + } + + /** + * @param request + * IP + * @return IP Address + */ + public static String getIpAddrByRequest(HttpServletRequest request) { + String ip = request.getHeader("x-forwarded-for"); + if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { + ip = request.getHeader("Proxy-Client-IP"); + } + if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { + ip = request.getHeader("WL-Proxy-Client-IP"); + } + if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { + ip = request.getRemoteAddr(); + } + return ip; + } + + /** + * @return 本机IP + * @throws SocketException + */ + public static String getRealIp() throws SocketException { + String localip = null;// 本地IP,如果没有配置外网IP则返回它 + String netip = null;// 外网IP + + Enumeration netInterfaces = NetworkInterface.getNetworkInterfaces(); + InetAddress ip = null; + boolean finded = false;// 是否找到外网IP + while (netInterfaces.hasMoreElements() && !finded) { + NetworkInterface ni = netInterfaces.nextElement(); + Enumeration address = ni.getInetAddresses(); + while (address.hasMoreElements()) { + ip = address.nextElement(); + if (!ip.isSiteLocalAddress() && !ip.isLoopbackAddress() && ip.getHostAddress().indexOf(":") == -1) {// 外网IP + netip = ip.getHostAddress(); + finded = true; + break; + } else if (ip.isSiteLocalAddress() && !ip.isLoopbackAddress() && ip.getHostAddress().indexOf(":") == -1) {// 内网IP + localip = ip.getHostAddress(); + } + } + } + + if (netip != null && !"".equals(netip)) { + return netip; + } else { + return localip; + } + } + + /** + * java去除字符串中的空格、回车、换行符、制表符 + * + * @param str + * @return + */ + public static String replaceBlank(String str) { + String dest = ""; + if (str != null) { + Pattern p = Pattern.compile("\\s*|\t|\r|\n"); + Matcher m = p.matcher(str); + dest = m.replaceAll(""); + } + return dest; + + } + + /** + * 判断元素是否在数组内 + * + * @param substring + * @param source + * @return + */ + public static boolean isIn(String substring, String[] source) { + if (source == null || source.length == 0) { + return false; + } + for (int i = 0; i < source.length; i++) { + String aSource = source[i]; + if (aSource.equals(substring)) { + return true; + } + } + return false; + } + + /** + * 获取Map对象 + */ + public static Map getHashMap() { + return new HashMap(); + } + + /** + * SET转换MAP + * + * @param + * @return + */ + public static Map SetToMap(Set setobj) { + Map map = getHashMap(); + for (Iterator iterator = setobj.iterator(); iterator.hasNext();) { + Map.Entry entry = (Map.Entry) iterator.next(); + map.put(entry.getKey().toString(), entry.getValue() == null ? "" : entry.getValue().toString().trim()); + } + return map; + + } + + public static boolean isInnerIP(String ipAddress) { + boolean isInnerIp = false; + long ipNum = getIpNum(ipAddress); + /** + * 私有IP:A类 10.0.0.0-10.255.255.255 B类 172.16.0.0-172.31.255.255 C类 192.168.0.0-192.168.255.255 当然,还有127这个网段是环回地址 + **/ + long aBegin = getIpNum("10.0.0.0"); + long aEnd = getIpNum("10.255.255.255"); + long bBegin = getIpNum("172.16.0.0"); + long bEnd = getIpNum("172.31.255.255"); + long cBegin = getIpNum("192.168.0.0"); + long cEnd = getIpNum("192.168.255.255"); + isInnerIp = isInner(ipNum, aBegin, aEnd) || isInner(ipNum, bBegin, bEnd) || isInner(ipNum, cBegin, cEnd) || ipAddress.equals("127.0.0.1"); + return isInnerIp; + } + + private static long getIpNum(String ipAddress) { + String[] ip = ipAddress.split("\\."); + long a = Integer.parseInt(ip[0]); + long b = Integer.parseInt(ip[1]); + long c = Integer.parseInt(ip[2]); + long d = Integer.parseInt(ip[3]); + + long ipNum = a * 256 * 256 * 256 + b * 256 * 256 + c * 256 + d; + return ipNum; + } + + private static boolean isInner(long userIp, long begin, long end) { + return (userIp >= begin) && (userIp <= end); + } + + /** + * 将下划线大写方式命名的字符串转换为驼峰式。 + * 如果转换前的下划线大写方式命名的字符串为空,则返回空字符串。
+ * 例如:hello_world->helloWorld + * + * @param name + * 转换前的下划线大写方式命名的字符串 + * @return 转换后的驼峰式命名的字符串 + */ + public static String camelName(String name) { + StringBuilder result = new StringBuilder(); + // 快速检查 + if (name == null || name.isEmpty()) { + // 没必要转换 + return ""; + } else if (!name.contains("_")) { + // 不含下划线,仅将首字母小写 + //update-begin--Author:zhoujf Date:20180503 for:TASK #2500 【代码生成器】代码生成器开发一通用模板生成功能 + //update-begin--Author:zhoujf Date:20180503 for:TASK #2500 【代码生成器】代码生成器开发一通用模板生成功能 + return name.substring(0, 1).toLowerCase() + name.substring(1).toLowerCase(); + //update-end--Author:zhoujf Date:20180503 for:TASK #2500 【代码生成器】代码生成器开发一通用模板生成功能 + } + // 用下划线将原始字符串分割 + String camels[] = name.split("_"); + for (String camel : camels) { + // 跳过原始字符串中开头、结尾的下换线或双重下划线 + if (camel.isEmpty()) { + continue; + } + // 处理真正的驼峰片段 + if (result.length() == 0) { + // 第一个驼峰片段,全部字母都小写 + result.append(camel.toLowerCase()); + } else { + // 其他的驼峰片段,首字母大写 + result.append(camel.substring(0, 1).toUpperCase()); + result.append(camel.substring(1).toLowerCase()); + } + } + return result.toString(); + } + + /** + * 将下划线大写方式命名的字符串转换为驼峰式。 + * 如果转换前的下划线大写方式命名的字符串为空,则返回空字符串。
+ * 例如:hello_world,test_id->helloWorld,testId + * + * @param names + * 转换前的下划线大写方式命名的字符串 + * @return 转换后的驼峰式命名的字符串 + */ + public static String camelNames(String names) { + if(names==null||names.equals("")){ + return null; + } + StringBuffer sf = new StringBuffer(); + String[] fs = names.split(","); + for (String field : fs) { + field = camelName(field); + sf.append(field + ","); + } + String result = sf.toString(); + return result.substring(0, result.length() - 1); + } + + //update-begin--Author:zhoujf Date:20180503 for:TASK #2500 【代码生成器】代码生成器开发一通用模板生成功能 + /** + * 将下划线大写方式命名的字符串转换为驼峰式。(首字母写) + * 如果转换前的下划线大写方式命名的字符串为空,则返回空字符串。
+ * 例如:hello_world->HelloWorld + * + * @param name + * 转换前的下划线大写方式命名的字符串 + * @return 转换后的驼峰式命名的字符串 + */ + public static String camelNameCapFirst(String name) { + StringBuilder result = new StringBuilder(); + // 快速检查 + if (name == null || name.isEmpty()) { + // 没必要转换 + return ""; + } else if (!name.contains("_")) { + // 不含下划线,仅将首字母小写 + return name.substring(0, 1).toUpperCase() + name.substring(1).toLowerCase(); + } + // 用下划线将原始字符串分割 + String camels[] = name.split("_"); + for (String camel : camels) { + // 跳过原始字符串中开头、结尾的下换线或双重下划线 + if (camel.isEmpty()) { + continue; + } + // 其他的驼峰片段,首字母大写 + result.append(camel.substring(0, 1).toUpperCase()); + result.append(camel.substring(1).toLowerCase()); + } + return result.toString(); + } + //update-end--Author:zhoujf Date:20180503 for:TASK #2500 【代码生成器】代码生成器开发一通用模板生成功能 + + /** + * 将驼峰命名转化成下划线 + * @param para + * @return + */ + public static String camelToUnderline(String para){ + if(para.length()<3){ + return para.toLowerCase(); + } + StringBuilder sb=new StringBuilder(para); + int temp=0;//定位 + //从第二个字符开始 避免命名不规范 修改成第二个字符开始 by 闵 + for(int i=1;i clazz = object.getClass(); + List fieldList = new ArrayList<>(); + while (clazz != null) { + fieldList.addAll(new ArrayList<>(Arrays.asList(clazz.getDeclaredFields()))); + clazz = clazz.getSuperclass(); + } + Field[] fields = new Field[fieldList.size()]; + fieldList.toArray(fields); + return fields; + } + + /** + * 将map的key全部转成小写 + * @param list + * @return + */ + public static List> toLowerCasePageList(List> list){ + List> select = new ArrayList<>(); + for (Map row : list) { + Map resultMap = new HashMap<>(); + Set keySet = row.keySet(); + for (String key : keySet) { + String newKey = key.toLowerCase(); + resultMap.put(newKey, row.get(key)); + } + select.add(resultMap); + } + return select; + } + + /** + * 将entityList转换成modelList + * @param fromList + * @param tClass + * @param + * @param + * @return + */ + public static List entityListToModelList(List fromList, Class tClass){ + if(fromList.isEmpty() || fromList == null){ + return null; + } + List tList = new ArrayList<>(); + for(F f : fromList){ + T t = entityToModel(f, tClass); + tList.add(t); + } + return tList; + } + + public static T entityToModel(F entity, Class modelClass) { + log.debug("entityToModel : Entity属性的值赋值到Model"); + Object model = null; + if (entity == null || modelClass ==null) { + return null; + } + + try { + model = modelClass.newInstance(); + } catch (InstantiationException e) { + log.error("entityToModel : 实例化异常", e); + } catch (IllegalAccessException e) { + log.error("entityToModel : 安全权限异常", e); + } + BeanUtils.copyProperties(entity, model); + return (T)model; + } + + /** + * 判断 list 是否为空 + * + * @param list + * @return true or false + * list == null : true + * list.size() == 0 : true + */ + public static boolean listIsEmpty(Collection list) { + return (list == null || list.size() == 0); + } + + +} diff --git a/src/main/java/org/gyk/common/vo/SysPermissionDataRuleModel.java b/src/main/java/org/gyk/common/vo/SysPermissionDataRuleModel.java new file mode 100644 index 0000000..57bee2f --- /dev/null +++ b/src/main/java/org/gyk/common/vo/SysPermissionDataRuleModel.java @@ -0,0 +1,144 @@ +package org.gyk.common.vo; + +import java.util.Date; + +/** + *

+ * 菜单权限规则表 + *

+ * + * @Author huangzhilin + * @since 2019-03-29 + */ +public class SysPermissionDataRuleModel { + + /** + * id + */ + private String id; + + /** + * 对应的菜单id + */ + private String permissionId; + + /** + * 规则名称 + */ + private String ruleName; + + /** + * 字段 + */ + private String ruleColumn; + + /** + * 条件 + */ + private String ruleConditions; + + /** + * 规则值 + */ + private String ruleValue; + + /** + * 创建时间 + */ + private Date createTime; + + /** + * 创建人 + */ + private String createBy; + + /** + * 修改时间 + */ + private Date updateTime; + + /** + * 修改人 + */ + private String updateBy; + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getPermissionId() { + return permissionId; + } + + public void setPermissionId(String permissionId) { + this.permissionId = permissionId; + } + + public String getRuleName() { + return ruleName; + } + + public void setRuleName(String ruleName) { + this.ruleName = ruleName; + } + + public String getRuleColumn() { + return ruleColumn; + } + + public void setRuleColumn(String ruleColumn) { + this.ruleColumn = ruleColumn; + } + + public String getRuleConditions() { + return ruleConditions; + } + + public void setRuleConditions(String ruleConditions) { + this.ruleConditions = ruleConditions; + } + + public String getRuleValue() { + return ruleValue; + } + + public void setRuleValue(String ruleValue) { + this.ruleValue = ruleValue; + } + + public Date getCreateTime() { + return createTime; + } + + public void setCreateTime(Date createTime) { + this.createTime = createTime; + } + + public String getCreateBy() { + return createBy; + } + + public void setCreateBy(String createBy) { + this.createBy = createBy; + } + + public Date getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(Date updateTime) { + this.updateTime = updateTime; + } + + public String getUpdateBy() { + return updateBy; + } + + public void setUpdateBy(String updateBy) { + this.updateBy = updateBy; + } +} diff --git a/src/main/java/org/gyk/modules/App.java b/src/main/java/org/gyk/modules/App.java new file mode 100644 index 0000000..65d76de --- /dev/null +++ b/src/main/java/org/gyk/modules/App.java @@ -0,0 +1,39 @@ +package org.gyk.modules; + +import org.gyk.modules.sssj.util.*; +import org.gyk.modules.websocket.webSocket; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; +import org.springframework.boot.web.servlet.ServletComponentScan; +import org.springframework.cache.annotation.EnableCaching; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.scheduling.annotation.EnableAsync; +import org.springframework.scheduling.annotation.EnableScheduling; +import org.springframework.transaction.annotation.EnableTransactionManagement; + +@ServletComponentScan(basePackages = {"org.gyk.modules.sssj","org.gyk.modules.sz","org.gyk.modules.lssj","org.gyk.modules.websocket"}) +@EnableScheduling +@EnableAsync +@EnableCaching +@ComponentScan(basePackages = {"org.gyk.modules","org.gyk.modules.sssj","org.gyk.modules.sz","org.gyk.modules.lssj","org.gyk.modules.jlgl","org.gyk.modules.websocket"}) +@EnableTransactionManagement +@SpringBootApplication(scanBasePackages="org.gyk.modules",exclude = DataSourceAutoConfiguration.class) +public class App { + + public static void main(String[] args) { + SpringApplication.run(App.class, args); + +// new saveBj("保存报警历史",new webSocket()).start(); + +// new YasuojBj("保存压缩机报警历史",new webSocket()).start(); + +// new saveKrBj("保存可燃气体报警历史",new webSocket()).start(); + //发布时要去掉注释 +// new saveYasuojiData().start(); + +// new saveData("保存计量点实时数据").start(); + +// new saveNgzxData("保存能管中心数据").start(); + } +} diff --git a/src/main/java/org/gyk/modules/jlgl/controller/jlglController.java b/src/main/java/org/gyk/modules/jlgl/controller/jlglController.java new file mode 100644 index 0000000..77f791d --- /dev/null +++ b/src/main/java/org/gyk/modules/jlgl/controller/jlglController.java @@ -0,0 +1,156 @@ +package org.gyk.modules.jlgl.controller; + +import com.baomidou.dynamic.datasource.annotation.DS; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.gyk.common.api.Result; +import org.gyk.common.query.QueryGenerator; +import org.gyk.common.util.MyStringUtils; +import org.gyk.modules.jlgl.entity.CxcJlQjglJlqjtz; +import org.gyk.modules.jlgl.service.ICxcJlQjglJlqjtzService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletRequest; +import java.lang.reflect.Field; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * @Description: cxc_jl_qjgl_jlqjtz + * @Author: jiang + * @Date: 2023-09-25 + * @Version: V1.0 + */ +@CrossOrigin(origins = "*", maxAge = 3600) +@Api(tags="cxc_jl_qjgl_jlqjtz") +@RestController +@RequestMapping("/jlgltz/cxcJlQjglJlqjtz") +@Slf4j +//查询局里计量管理数据库中的天然气产销厂的所有数据,存入到自己的数据库中 +public class jlglController { + @Autowired + private ICxcJlQjglJlqjtzService cxcJlQjglJlqjtzService; + + /** + * 更新计量点数据库 + * 可以主动 + * 定时每周六凌晨2点更新一次 + * @return + */ + // cron表达式从左到右(用空格隔开):秒 分 小时 日期 月份 星期 年份 + // 年份可以不填 +// @Scheduled(cron = "0 0 2 ? * 7") +// @GetMapping(value = "/updateNow") +// public Result queryById() { +// String msg = cxcJlQjglJlqjtzService.queryMaster(); +// return Result.ok(msg); +// } + + /** + * 分页列表查询 + * @param cxcJlQjglJlqjtz + * @param pageNo + * @param pageSize + * @param req + * @return + */ +// @ApiOperation(value="信息化支持中心周报主表-分页列表查询", notes="信息化支持中心周报主表-分页列表查询") +// @GetMapping(value = "/list1") +// public Result queryPageList(CxcJlQjglJlqjtz cxcJlQjglJlqjtz, +// @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, +// @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, +// HttpServletRequest req) { +// Field[] declaredFields = cxcJlQjglJlqjtz.getClass().getDeclaredFields(); +// Map selectMap = new HashMap<>(); +// for (Field field : declaredFields) { +// field.setAccessible(true); // 设置字段可访问 +// try { +// Object value = field.get(cxcJlQjglJlqjtz); +// String name = field.getName(); +// if (value!=null&&!"serialVersionUID".equals(name)){ +// String slelctValue = value.toString(); +// selectMap.put(MyStringUtils.toUnderScoreCase(name),slelctValue); +// } +// } catch (IllegalAccessException e) { +// e.printStackTrace(); +// } +// } +// QueryWrapper queryWrapper = new QueryWrapper<>(); +// queryWrapper.like("f_gldwbh","S010107"); +// queryWrapper.allEq(selectMap); +// List list = cxcJlQjglJlqjtzService.list(queryWrapper); +// Page page = new Page(); +// page.setRecords(list); +// return Result.ok(page); +// } + + @ApiOperation(value="气井基础资料-分页列表查询", notes="气井基础资料-分页列表查询") + @GetMapping(value = "/list") + public Result queryPageList(CxcJlQjglJlqjtz cxcJlQjglJlqjtz, + @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, + @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, + HttpServletRequest req) { + QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(cxcJlQjglJlqjtz, req.getParameterMap(),false); +// QueryWrapper queryWrapper = new QueryWrapper<>(); + //加载产销厂数据 + queryWrapper.like("F_GLDWBH","S010107%"); + try { + Page page = new Page(pageNo, pageSize); + IPage pageList = cxcJlQjglJlqjtzService.page(page, queryWrapper); + return Result.ok(pageList); + }catch (Exception e){ + e.printStackTrace(); + } + return Result.ok(""); + } + + + /** + * 功能描述:
+ * 〈〉获取单位 + * @Param: [] + * @Return: org.gyk.common.api.Result + * @Author: 闵年泽 + * @Date: 2023/10/9 9:13 + */ + @GetMapping("/getDw") + public Result getDw(){ + List dwList = cxcJlQjglJlqjtzService.getDw(); + return Result.ok(dwList); + } + + /** + * 功能描述:
+ * 〈〉获取站场 + * @Param: [dw] + * @Return: org.gyk.common.api.Result + * @Author: 闵年泽 + * @Date: 2023/10/9 10:06 + */ + @GetMapping("/getZc") + public Result getZc(@RequestParam String dw){ + List zcList = cxcJlQjglJlqjtzService.getZc(dw); + return Result.ok(zcList); + } + + /** + * 功能描述:
+ * 〈〉获取设备名称 + * @Param: [zc] + * @Return: org.gyk.common.api.Result + * @Author: 闵年泽 + * @Date: 2023/10/9 10:07 + */ + @GetMapping("/getSbmc") + public Result getSbmc(@RequestParam String zc){ + List sbmcList = cxcJlQjglJlqjtzService.getSbmc(zc); + return Result.ok(sbmcList); + } +} diff --git a/src/main/java/org/gyk/modules/jlgl/entity/CxcJlQjglJlqjtz.java b/src/main/java/org/gyk/modules/jlgl/entity/CxcJlQjglJlqjtz.java new file mode 100644 index 0000000..6e6ecc0 --- /dev/null +++ b/src/main/java/org/gyk/modules/jlgl/entity/CxcJlQjglJlqjtz.java @@ -0,0 +1,377 @@ +package org.gyk.modules.jlgl.entity; + +import com.baomidou.dynamic.datasource.annotation.DS; +import com.baomidou.mybatisplus.annotation.*; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +import org.jeecgframework.poi.excel.annotation.Excel; +import org.springframework.format.annotation.DateTimeFormat; + +import java.io.Serializable; +import java.util.Date; + +/** + * @Description: cxc_jl_qjgl_jlqjtz + * @Author: jiang + * @Date: 2023-09-25 + * @Version: V1.0 + */ +@Data +@DS("jlglDb") +@TableName("Jl_Qjgl_Jlqjtz") +@Accessors(chain = true) +@EqualsAndHashCode(callSuper = false) +@ApiModel(value="cxc_jl_qjgl_jlqjtz对象", description="cxc_jl_qjgl_jlqjtz") +public class CxcJlQjglJlqjtz implements Serializable { + private static final long serialVersionUID = 1L; + + /**单井编号*/ + @TableId(type = IdType.ASSIGN_UUID) + @Excel(name = "单井编号", width = 15) + @ApiModelProperty(value = "单井编号") + private String FDjbh; + /**管理单位编号*/ + @Excel(name = "管理单位编号", width = 15) + @ApiModelProperty(value = "管理单位编号") + private String FGldwbh; + /**管理单位名称*/ + @Excel(name = "管理单位名称", width = 15) + @ApiModelProperty(value = "管理单位名称") + private String FGldwmc; + /**单位全称*/ + @Excel(name = "单位全称", width = 15) + @ApiModelProperty(value = "单位全称") + private String FDwqc; + /**所处站场编号*/ + @Excel(name = "所处站场编号", width = 15) + @ApiModelProperty(value = "所处站场编号") + private String FSczzbh; + /**所处站场名称*/ + @Excel(name = "所处站场名称", width = 15) + @ApiModelProperty(value = "所处站场名称") + private String FSczzmc; + /**计量点编号*/ + @Excel(name = "计量点编号", width = 15) + @ApiModelProperty(value = "计量点编号") + private String FJldbh; + /**计量点名称*/ + @Excel(name = "计量点名称", width = 15) + @ApiModelProperty(value = "计量点名称") + private String FJldmc; + /**测量范围*/ + @Excel(name = "测量范围", width = 15) + @ApiModelProperty(value = "测量范围") + private String FBhfw; + /**准确度等级要求*/ + @Excel(name = "准确度等级要求", width = 15) + @ApiModelProperty(value = "准确度等级要求") + private String FZqddjyq; + /**日期*/ + @Excel(name = "日期", width = 15) + @ApiModelProperty(value = "日期") + private String FDate; + /**器具类别编号*/ + @Excel(name = "器具类别编号", width = 15) + @ApiModelProperty(value = "器具类别编号") + private String FQjlbbh; + /**器具类别名称*/ + @Excel(name = "器具类别名称", width = 15) + @ApiModelProperty(value = "器具类别名称") + private String FQjlbmc; + /**生产厂家编号*/ + @Excel(name = "生产厂家编号", width = 15) + @ApiModelProperty(value = "生产厂家编号") + private String FSccjbh; + /**生产厂家名称*/ + @Excel(name = "生产厂家名称", width = 15) + @ApiModelProperty(value = "生产厂家名称") + private String FSccjmc; + /**GG型号编号*/ + @Excel(name = "GG型号编号", width = 15) + @ApiModelProperty(value = "GG型号编号") + private String FGgxhbh; + /**测量范围编号*/ + @Excel(name = "测量范围编号", width = 15) + @ApiModelProperty(value = "测量范围编号") + private String FClfwbh; + /**测量范围名称*/ + @Excel(name = "测量范围名称", width = 15) + @ApiModelProperty(value = "测量范围名称") + private String FClfwmc; + /**准确度等级编号*/ + @Excel(name = "准确度等级编号", width = 15) + @ApiModelProperty(value = "准确度等级编号") + private String FZqddjbh; + /**准确度等级名称*/ + @Excel(name = "准确度等级名称", width = 15) + @ApiModelProperty(value = "准确度等级名称") + private String FZqddjmc; + /**GG型号名称*/ + @Excel(name = "GG型号名称", width = 15) + @ApiModelProperty(value = "GG型号名称") + private String FGgxhmc; + /**测量介质编号*/ + @Excel(name = "测量介质编号", width = 15) + @ApiModelProperty(value = "测量介质编号") + private String FCljzbh; + /**测量介质名称*/ + @Excel(name = "测量介质名称", width = 15) + @ApiModelProperty(value = "测量介质名称") + private String FCljzmc; + /**测量CS编号*/ + @Excel(name = "测量CS编号", width = 15) + @ApiModelProperty(value = "测量CS编号") + private String FClcsbh; + /**测量CS名称*/ + @Excel(name = "测量CS名称", width = 15) + @ApiModelProperty(value = "测量CS名称") + private String FClcsmc; + /**CC编号*/ + @Excel(name = "CC编号", width = 15) + @ApiModelProperty(value = "CC编号") + private String FCcbh; + /**Z编号*/ + @Excel(name = "Z编号", width = 15) + @ApiModelProperty(value = "Z编号") + private String FZbh; + /**商业性质*/ + @Excel(name = "商业性质", width = 15) + @ApiModelProperty(value = "商业性质") + private String FSyxz; + /**启用日期*/ + @Excel(name = "启用日期", width = 15) + @ApiModelProperty(value = "启用日期") + private String FQyrq; + /**ZS编号*/ + @Excel(name = "ZS编号", width = 15) + @ApiModelProperty(value = "ZS编号") + private String FZsbh; + /**fSfsj*/ + @Excel(name = "fSfsj", width = 15) + @ApiModelProperty(value = "fSfsj") + private String FSfsj; + /**检定日期*/ + @Excel(name = "检定日期", width = 15) + @ApiModelProperty(value = "检定日期") + private String FJdrq; + /**检定周期(月)*/ + @Excel(name = "检定周期(月)", width = 15) + @ApiModelProperty(value = "检定周期(月)") + private String FJdzq; + /**YX日期*/ + @Excel(name = "YX日期", width = 15) + @ApiModelProperty(value = "YX日期") + private String FYxrq; + /**确认日期*/ + @Excel(name = "确认日期", width = 15) + @ApiModelProperty(value = "确认日期") + private String FQrrq; + /**检定单位编号*/ + @Excel(name = "检定单位编号", width = 15) + @ApiModelProperty(value = "检定单位编号") + private String FJddwbh; + /**检定单位名称*/ + @Excel(name = "检定单位名称", width = 15) + @ApiModelProperty(value = "检定单位名称") + private String FJddwmc; + /**检定费用*/ + @Excel(name = "检定费用", width = 15) + @ApiModelProperty(value = "检定费用") + private String FJdfy; + /**检定JG*/ + @Excel(name = "检定JG", width = 15) + @ApiModelProperty(value = "检定JG") + private String FJdjg; + /**fTxqk*/ + @Excel(name = "fTxqk", width = 15) + @ApiModelProperty(value = "fTxqk") + private String FTxqk; + /**标准器*/ + @Excel(name = "标准器", width = 15) + @ApiModelProperty(value = "标准器") + private String FBzq; + /**fAqfh*/ + @Excel(name = "fAqfh", width = 15) + @ApiModelProperty(value = "fAqfh") + private String FAqfh; + /**fHjjc*/ + @Excel(name = "fHjjc", width = 15) + @ApiModelProperty(value = "fHjjc") + private String FHjjc; + /**fMyjs*/ + @Excel(name = "fMyjs", width = 15) + @ApiModelProperty(value = "fMyjs") + private String FMyjs; + /**fZljc*/ + @Excel(name = "fZljc", width = 15) + @ApiModelProperty(value = "fZljc") + private String FZljc; + /**fYlws*/ + @Excel(name = "fYlws", width = 15) + @ApiModelProperty(value = "fYlws") + private String FYlws; + /**fGykz*/ + @Excel(name = "fGykz", width = 15) + @ApiModelProperty(value = "fGykz") + private String FGykz; + /**fCnjs*/ + @Excel(name = "fCnjs", width = 15) + @ApiModelProperty(value = "fCnjs") + private String FCnjs; + /**fSyzy*/ + @Excel(name = "fSyzy", width = 15) + @ApiModelProperty(value = "fSyzy") + private String FSyzy; + /**fHnjs*/ + @Excel(name = "fHnjs", width = 15) + @ApiModelProperty(value = "fHnjs") + private String FHnjs; + /**fHnjlxq*/ + @Excel(name = "fHnjlxq", width = 15) + @ApiModelProperty(value = "fHnjlxq") + private String FHnjlxq; + /**fQjzt*/ + @Excel(name = "fQjzt", width = 15) + @ApiModelProperty(value = "fQjzt") + private String FQjzt; + /**检定类别*/ + @Excel(name = "检定类别", width = 15) + @ApiModelProperty(value = "检定类别") + private String FJdlb; + /**fAbclb*/ + @Excel(name = "fAbclb", width = 15) + @ApiModelProperty(value = "fAbclb") + private String FAbclb; + /**fBfrq*/ + @Excel(name = "fBfrq", width = 15) + @ApiModelProperty(value = "fBfrq") + private String FBfrq; + /**fBfyy*/ + @Excel(name = "fBfyy", width = 15) + @ApiModelProperty(value = "fBfyy") + private String FBfyy; + /**fSfnyqj*/ + @Excel(name = "fSfnyqj", width = 15) + @ApiModelProperty(value = "fSfnyqj") + private String FSfnyqj; + /**fYnsblxbh*/ + @Excel(name = "fYnsblxbh", width = 15) + @ApiModelProperty(value = "fYnsblxbh") + private String FYnsblxbh; + /**fYnsblxmc*/ + @Excel(name = "fYnsblxmc", width = 15) + @ApiModelProperty(value = "fYnsblxmc") + private String FYnsblxmc; + /**设备编号*/ + @Excel(name = "设备编号", width = 15) + @ApiModelProperty(value = "设备编号") + private String FSbbh; + /**设备名称*/ + @Excel(name = "设备名称", width = 15) + @ApiModelProperty(value = "设备名称") + private String FSbmc; + /**fYnzlbh*/ + @Excel(name = "fYnzlbh", width = 15) + @ApiModelProperty(value = "fYnzlbh") + private String FYnzlbh; + /**fYnzlmc*/ + @Excel(name = "fYnzlmc", width = 15) + @ApiModelProperty(value = "fYnzlmc") + private String FYnzlmc; + /**fNyxhl*/ + @Excel(name = "fNyxhl", width = 15) + @ApiModelProperty(value = "fNyxhl") + private String FNyxhl; + /**fSyzt*/ + @Excel(name = "fSyzt", width = 15) + @ApiModelProperty(value = "fSyzt") + private String FSyzt; + /**维护人账号*/ + @Excel(name = "维护人账号", width = 15) + @ApiModelProperty(value = "维护人账号") + private String FWhr; + /**维护人姓名*/ + @Excel(name = "维护人姓名", width = 15) + @ApiModelProperty(value = "维护人姓名") + private String FWhrmc; + /**维护日期*/ + @Excel(name = "维护日期", width = 15) + @ApiModelProperty(value = "维护日期") + private String FWhrq; + /**维护人单位编号*/ + @Excel(name = "维护人单位编号", width = 15) + @ApiModelProperty(value = "维护人单位编号") + private String FWhrdwbh; + /**维护人单位名称*/ + @Excel(name = "维护人单位名称", width = 15) + @ApiModelProperty(value = "维护人单位名称") + private String FWhrdwmc; + /**维护人单位区场*/ + @Excel(name = "维护人单位区场", width = 15) + @ApiModelProperty(value = "维护人单位区场") + private String FWhrdwqc; + /**信息*/ + @Excel(name = "信息", width = 15) + @ApiModelProperty(value = "信息") + private String FNote; + /**fQjflbh*/ + @Excel(name = "fQjflbh", width = 15) + @ApiModelProperty(value = "fQjflbh") + private String FQjflbh; + /**fTxmbh*/ + @Excel(name = "fTxmbh", width = 15) + @ApiModelProperty(value = "fTxmbh") + private String FTxmbh; + /**fTxmzt*/ + @Excel(name = "fTxmzt", width = 15) + @ApiModelProperty(value = "fTxmzt") + private String FTxmzt; + /**fExt1*/ + @Excel(name = "fExt1", width = 15) + @ApiModelProperty(value = "fExt1") + private String FExt1; + /**fExt2*/ + @Excel(name = "fExt2", width = 15) + @ApiModelProperty(value = "fExt2") + private String FExt2; + /**fExt3*/ + @Excel(name = "fExt3", width = 15) + @ApiModelProperty(value = "fExt3") + private String FExt3; + /**fNbjj*/ + @Excel(name = "fNbjj", width = 15) + @ApiModelProperty(value = "fNbjj") + private String FNbjj; + /**fGgxh*/ + @Excel(name = "fGgxh", width = 15) + @ApiModelProperty(value = "fGgxh") + private String FGgxh; + /**安装位置*/ + @Excel(name = "安装位置", width = 15) + @ApiModelProperty(value = "安装位置") + private String FAzwz; + /**创建时间*/ + @Excel(name = "创建时间", width = 15, format = "yyyy-MM-dd") + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd") + @DateTimeFormat(pattern="yyyy-MM-dd") + @ApiModelProperty(value = "创建时间") + private Date FCrdate; + /**更新时间*/ + @Excel(name = "更新时间", width = 15, format = "yyyy-MM-dd") + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd") + @DateTimeFormat(pattern="yyyy-MM-dd") + @ApiModelProperty(value = "更新时间") + private Date FChdate; + /**fCkjdfy*/ + @Excel(name = "fCkjdfy", width = 15) + @ApiModelProperty(value = "fCkjdfy") + private String FCkjdfy; + /**fExt4*/ + @Excel(name = "fExt4", width = 15) + @ApiModelProperty(value = "fExt4") + private String FExt4; +} diff --git a/src/main/java/org/gyk/modules/jlgl/mapper/CxcJlQjglJlqjtzMapper.java b/src/main/java/org/gyk/modules/jlgl/mapper/CxcJlQjglJlqjtzMapper.java new file mode 100644 index 0000000..2d8dc3d --- /dev/null +++ b/src/main/java/org/gyk/modules/jlgl/mapper/CxcJlQjglJlqjtzMapper.java @@ -0,0 +1,69 @@ +package org.gyk.modules.jlgl.mapper; + +import com.baomidou.dynamic.datasource.annotation.DS; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Select; +import org.gyk.modules.jlgl.entity.CxcJlQjglJlqjtz; + +import java.util.List; + +/** + * @Description: cxc_jl_qjgl_jlqjtz + * 从局计量点数据库查询出所需数据 + * @Author: jiang + * @Date: 2023-09-25 + * @Version: V1.0 + */ +@Mapper +@DS("jlglDb") +public interface CxcJlQjglJlqjtzMapper extends BaseMapper { + +// //主库 +// @Select("select * from Jl_Qjgl_Jlqjtz ") +// List queryMaster(); + + //从库 + //把产销厂的数据查询出来 + @Select("select distinct * from Jl_Qjgl_Jlqjtz t where t.f_gldwbh like 'S010107%' ") + List queryJldData(); + + //查询局数据库中的数据 + @Select("select distinct * from Jl_Qjgl_Jlqjtz t where t.F_GLDWBH like 'S010107%' AND F_DWQC = #{dwqc} AND ") + List queryJuDate(); + /** + * 功能描述:
+ * 〈〉获取单位 + * @Param: [] + * @Return: java.util.List + * @Author: 闵年泽 + * @Date: 2023/10/9 8:21 + */ + @Select("select distinct f_dwqc from Jl_Qjgl_Jlqjtz t where t.f_gldwbh like 'S010107%' ") + List getDw(); + + /** + * 功能描述:
+ * 〈〉获取战场 + * @Param: [dw] + * @Return: java.util.List + * @Author: 闵年泽 + * @Date: 2023/10/9 8:47 + */ + @Select("select distinct F_SCZZMC from Jl_Qjgl_Jlqjtz where F_DWQC like '%'||#{dw}||'%' ") + List getZc(String dw); + + /** + * 功能描述:
+ * 〈〉获取设备名称 + * @Param: [zc] + * @Return: java.util.List + * @Author: 闵年泽 + * @Date: 2023/10/9 8:47 + */ + @Select("select distinct f_qjlbmc from Jl_Qjgl_Jlqjtz t where t.f_gldwbh like 'S010107%' and f_sczzmc=#{zc}") + List getSbmc(String zc); + + + +} diff --git a/src/main/java/org/gyk/modules/jlgl/mapper/xml/CxcJlQjglJlqjtzMapper.xml b/src/main/java/org/gyk/modules/jlgl/mapper/xml/CxcJlQjglJlqjtzMapper.xml new file mode 100644 index 0000000..926b812 --- /dev/null +++ b/src/main/java/org/gyk/modules/jlgl/mapper/xml/CxcJlQjglJlqjtzMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/src/main/java/org/gyk/modules/jlgl/service/ICxcJlQjglJlqjtzService.java b/src/main/java/org/gyk/modules/jlgl/service/ICxcJlQjglJlqjtzService.java new file mode 100644 index 0000000..8cb5e33 --- /dev/null +++ b/src/main/java/org/gyk/modules/jlgl/service/ICxcJlQjglJlqjtzService.java @@ -0,0 +1,51 @@ +package org.gyk.modules.jlgl.service; + +import com.baomidou.dynamic.datasource.annotation.DS; +import org.gyk.modules.jlgl.entity.CxcJlQjglJlqjtz; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + * @Description: cxc_jl_qjgl_jlqjtz + * @Author: jiang + * @Date: 2023-09-25 + * @Version: V1.0 + */ +@DS("jlglDb") +public interface ICxcJlQjglJlqjtzService extends IService { + + //新增局计量系统数据 + String queryMaster(); + + /** + * 功能描述:
+ * 〈〉计量二维码获取单位 + * @Param: [] + * @Return: void + * @Author: 闵年泽 + * @Date: 2023/10/8 16:56 + */ + public List getDw(); + + /** + * 功能描述:
+ * 〈〉获取站场 + * @Param: [dw] + * @Return: java.util.List + * @Author: 闵年泽 + * @Date: 2023/10/9 10:04 + */ + public List getZc(String dw); + + + /** + * 功能描述:
+ * 〈〉获取设备名称 + * @Param: [zc] + * @Return: java.util.List + * @Author: 闵年泽 + * @Date: 2023/10/9 10:05 + */ + public List getSbmc(String zc); +} diff --git a/src/main/java/org/gyk/modules/jlgl/service/impl/CxcJlQjglJlqjtzServiceImpl.java b/src/main/java/org/gyk/modules/jlgl/service/impl/CxcJlQjglJlqjtzServiceImpl.java new file mode 100644 index 0000000..7af3916 --- /dev/null +++ b/src/main/java/org/gyk/modules/jlgl/service/impl/CxcJlQjglJlqjtzServiceImpl.java @@ -0,0 +1,62 @@ +package org.gyk.modules.jlgl.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.gyk.modules.jlgl.entity.CxcJlQjglJlqjtz; +import org.gyk.modules.jlgl.mapper.CxcJlQjglJlqjtzMapper; +import org.gyk.modules.jlgl.service.ICxcJlQjglJlqjtzService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: cxc_jl_qjgl_jlqjtz + * @Author: jiang + * @Date: 2023-09-25 + * @Version: V1.0 + */ +@Service +public class CxcJlQjglJlqjtzServiceImpl extends ServiceImpl implements ICxcJlQjglJlqjtzService { + + @Autowired + private CxcJlQjglJlqjtzMapper cxcJlQjglJlqjtzMapper; + + @Override + public String queryMaster(){ + String msg = ""; + List queryDataList = cxcJlQjglJlqjtzMapper.queryJldData(); + if (queryDataList != null && queryDataList.size()>0){ + Long t1 = System.currentTimeMillis(); + Long t2 = System.currentTimeMillis(); +// saveBatch(queryDataList,1000); + //使用该方法的时候需要在实体类里面设定 @TableId ,要不然会报错,jiang +// cxcJlQjglJlqjtzMapper.mysqlInsertOrUpdateBath(queryDataList); + saveOrUpdateBatch(queryDataList); + msg = "新增局计量系统数据" + queryDataList.size() + "条。"; + System.out.println("新增局计量系统数据" + queryDataList.size() + "条。" ); + System.out.println("共耗时:" + (t2-t1) + "ms"); + }else{ + msg = "局计量系统暂时没有新的数据!"; + System.out.println("局计量系统暂时没有新的数据!"); + } + return msg; + } + + @Override + public List getDw() { + return baseMapper.getDw(); + } + + @Override + public List getZc(String dw) { + return baseMapper.getZc(dw); + } + + @Override + public List getSbmc(String zc) { + return baseMapper.getSbmc(zc); + } + + +} diff --git a/src/main/java/org/gyk/modules/lssj/bjls/controller/CxcSssjLssjBjlsjlController.java b/src/main/java/org/gyk/modules/lssj/bjls/controller/CxcSssjLssjBjlsjlController.java new file mode 100644 index 0000000..e3ec3a0 --- /dev/null +++ b/src/main/java/org/gyk/modules/lssj/bjls/controller/CxcSssjLssjBjlsjlController.java @@ -0,0 +1,129 @@ +package org.gyk.modules.lssj.bjls.controller; + + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.gyk.common.annotation.AutoLog; +import org.gyk.common.api.Result; +import org.gyk.modules.lssj.bjls.entity.CxcSssjLssjBjlsjl; +import org.gyk.modules.lssj.bjls.mapper.CxcSssjLssjBjlsjlMapper; +import org.gyk.modules.lssj.bjls.service.ICxcSssjLssjBjlsjlService; +import org.gyk.modules.sssj.controller.GykController; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.text.SimpleDateFormat; +import java.util.Arrays; + +/** +* @Description: 报警历史记录 +* @Author: jeecg-boot +* @Date: 2021-03-17 +* @Version: V1.0 +*/ +@Api(tags="报警历史记录") +@RestController +@RequestMapping("/bjls/cxcSssjLssjBjlsjl") +@Slf4j +public class CxcSssjLssjBjlsjlController extends GykController{ + @Autowired + private ICxcSssjLssjBjlsjlService cxcSssjLssjBjlsjlService; + @Autowired + private CxcSssjLssjBjlsjlMapper cxcSssjLssjBjlsjlMapper; + + /** + * 添加 + * + * @param cxcSssjLssjBjlsjl + * @return + */ + @AutoLog(value = "报警历史记录-添加") + @ApiOperation(value="报警历史记录-添加", notes="报警历史记录-添加") + @PostMapping(value = "/add") + public Result add(@RequestBody CxcSssjLssjBjlsjl cxcSssjLssjBjlsjl) { + cxcSssjLssjBjlsjlService.save(cxcSssjLssjBjlsjl); + return Result.ok("添加成功!"); + } + + /** + * 编辑 + * + * @param cxcSssjLssjBjlsjl + * @return + */ + @AutoLog(value = "报警历史记录-编辑") + @ApiOperation(value="报警历史记录-编辑", notes="报警历史记录-编辑") + @PutMapping(value = "/edit") + public Result edit(@RequestBody CxcSssjLssjBjlsjl cxcSssjLssjBjlsjl) { + cxcSssjLssjBjlsjlService.updateById(cxcSssjLssjBjlsjl); + return Result.ok("编辑成功!"); + } + + /** + * 通过id删除 + * + * @param id + * @return + */ + @AutoLog(value = "报警历史记录-通过id删除") + @ApiOperation(value="报警历史记录-通过id删除", notes="报警历史记录-通过id删除") + @DeleteMapping(value = "/delete") + public Result delete(@RequestParam(name="id",required=true) String id) { + cxcSssjLssjBjlsjlService.removeById(id); + return Result.ok("删除成功!"); + } + + /** + * 批量删除 + * + * @param ids + * @return + */ + @AutoLog(value = "报警历史记录-批量删除") + @ApiOperation(value="报警历史记录-批量删除", notes="报警历史记录-批量删除") + @DeleteMapping(value = "/deleteBatch") + public Result deleteBatch(@RequestParam(name="ids",required=true) String ids) { + this.cxcSssjLssjBjlsjlService.removeByIds(Arrays.asList(ids.split(","))); + return Result.ok("批量删除成功!"); + } + + /** + * 通过id查询 + * + * @param id + * @return + */ + @AutoLog(value = "报警历史记录-通过id查询") + @ApiOperation(value="报警历史记录-通过id查询", notes="报警历史记录-通过id查询") + @GetMapping(value = "/queryById") + public Result queryById(@RequestParam(name="id",required=true) String id) { + CxcSssjLssjBjlsjl cxcSssjLssjBjlsjl = cxcSssjLssjBjlsjlService.getById(id); + if(cxcSssjLssjBjlsjl==null) { + return Result.error("未找到对应数据"); + } + return Result.ok(cxcSssjLssjBjlsjl); + } + + //获取计量点报警历史数据 2023-08-28 Niujl + @RequestMapping("/listBjByZc") + public IPage listByZcAndJzh(@RequestParam(value = "pageNo") int pageNo, @RequestParam(value = "pageSize") int pageSize, @RequestParam(value = "zhanc") String zhanc, @RequestParam(name = "startTime", required = false) String startTime, + @RequestParam(name = "endTime", required = false) String endTime) { + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + + LambdaQueryWrapper lmq = Wrappers.lambdaQuery(); + lmq.between(CxcSssjLssjBjlsjl::getCreateTime,startTime,endTime); + lmq.eq(CxcSssjLssjBjlsjl::getBz,zhanc); + lmq.orderByAsc(CxcSssjLssjBjlsjl::getCreateTime); + + IPage iPage = new Page<>(pageNo,pageSize); + IPage list = cxcSssjLssjBjlsjlMapper.selectPage(iPage,lmq); + + return list; + } + +} diff --git a/src/main/java/org/gyk/modules/lssj/bjls/entity/CxcSssjLssjBjlsjl.java b/src/main/java/org/gyk/modules/lssj/bjls/entity/CxcSssjLssjBjlsjl.java new file mode 100644 index 0000000..d679cb3 --- /dev/null +++ b/src/main/java/org/gyk/modules/lssj/bjls/entity/CxcSssjLssjBjlsjl.java @@ -0,0 +1,167 @@ +package org.gyk.modules.lssj.bjls.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModelProperty; +import org.jeecgframework.poi.excel.annotation.Excel; +import org.springframework.format.annotation.DateTimeFormat; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + * @Description: 报警历史记录 + * @Author: jeecg-boot + * @Date: 2021-03-17 + * @Version: V1.0 + */ +public class CxcSssjLssjBjlsjl implements Serializable { + private static final long serialVersionUID = 1L; + + /**ID*/ + @TableId(type = IdType.ASSIGN_UUID) + @ApiModelProperty(value = "ID") + private java.lang.String id; + /**报警点ID*/ + @Excel(name = "报警点ID", width = 15) + @ApiModelProperty(value = "报警点ID") + private java.lang.String bjId; + /**报警时间*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @ApiModelProperty(value = "报警时间") + private LocalDateTime createTime; + /**报警结束时间*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @ApiModelProperty(value = "报警时间") + private LocalDateTime endTime; + + /**报警点名称*/ + @Excel(name = "报警点名称", width = 15) + @ApiModelProperty(value = "报警点名称") + private java.lang.String bjName; + /**报警设定值*/ + @Excel(name = "报警设定值", width = 15) + @ApiModelProperty(value = "报警设定值") + private java.lang.String sdz; + /**报警值*/ + @Excel(name = "报警值", width = 15) + @ApiModelProperty(value = "报警值") + private java.lang.String bjz; + /**报警描述*/ + @Excel(name = "报警描述", width = 15) + @ApiModelProperty(value = "报警描述") + private java.lang.String reason; + /**记录标志 a*/ + @Excel(name = "记录标志", width = 15) + @ApiModelProperty(value = "记录标志") + private java.lang.String jlbz; + /**备注*/ + @Excel(name = "备注", width = 15) + @ApiModelProperty(value = "备注") + private java.lang.String bz; + + private String zt; + + private boolean saveflag; + + public static long getSerialVersionUID() { + return serialVersionUID; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getBjId() { + return bjId; + } + + public void setBjId(String bjId) { + this.bjId = bjId; + } + + public LocalDateTime getCreateTime() { + return createTime; + } + + public void setCreateTime(LocalDateTime createTime) { + this.createTime = createTime; + } + + public String getBjName() { + return bjName; + } + + public void setBjName(String bjName) { + this.bjName = bjName; + } + + public String getSdz() { + return sdz; + } + + public void setSdz(String sdz) { + this.sdz = sdz; + } + + public String getBjz() { + return bjz; + } + + public void setBjz(String bjz) { + this.bjz = bjz; + } + + public String getReason() { + return reason; + } + + public void setReason(String reason) { + this.reason = reason; + } + + public String getBz() { + return bz; + } + + public void setBz(String bz) { + this.bz = bz; + } +// + public String getJlbz() { + return jlbz; + } + + public void setJlbz(String jlbz) { this.jlbz = jlbz; } + + public LocalDateTime getEndTime() { + return endTime; + } + + public void setEndTime(LocalDateTime endTime) { + this.endTime = endTime; + } + + public String getZt() { + return zt; + } + + public void setZt(String zt) { + this.zt = zt; + } + + public boolean isSaveflag() { + return saveflag; + } + + public void setSaveflag(boolean saveflag) { + this.saveflag = saveflag; + } +} diff --git a/src/main/java/org/gyk/modules/lssj/bjls/mapper/BjMapper.java b/src/main/java/org/gyk/modules/lssj/bjls/mapper/BjMapper.java new file mode 100644 index 0000000..701c0f6 --- /dev/null +++ b/src/main/java/org/gyk/modules/lssj/bjls/mapper/BjMapper.java @@ -0,0 +1,18 @@ +package org.gyk.modules.lssj.bjls.mapper; + +import com.baomidou.dynamic.datasource.annotation.DS; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; +import org.gyk.modules.lssj.bjls.entity.CxcSssjLssjBjlsjl; + +import java.util.List; +@Mapper +public interface BjMapper extends BaseMapper { + int insertBatch( List vips); + + //获取未处置的报警信息 + @Select(" select * from cxc_sssj_lssj_bjlsjl where bj_id = #{bjId} and zt = '1'") + public List getWczBjxx(@Param("bjId") String bjId); +} diff --git a/src/main/java/org/gyk/modules/lssj/bjls/mapper/CxcSssjLssjBjlsjlMapper.java b/src/main/java/org/gyk/modules/lssj/bjls/mapper/CxcSssjLssjBjlsjlMapper.java new file mode 100644 index 0000000..6260af2 --- /dev/null +++ b/src/main/java/org/gyk/modules/lssj/bjls/mapper/CxcSssjLssjBjlsjlMapper.java @@ -0,0 +1,20 @@ +package org.gyk.modules.lssj.bjls.mapper; + +import com.baomidou.dynamic.datasource.annotation.DS; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; +import org.gyk.modules.lssj.bjls.entity.CxcSssjLssjBjlsjl; + +import java.util.List; + +/** + * @Description: 报警历史记录 + * @Author: jeecg-boot + * @Date: 2021-03-17 + * @Version: V1.0 + */ +@Mapper +public interface CxcSssjLssjBjlsjlMapper extends BaseMapper { +} diff --git a/src/main/java/org/gyk/modules/lssj/bjls/mapper/xml/BjMapper.xml b/src/main/java/org/gyk/modules/lssj/bjls/mapper/xml/BjMapper.xml new file mode 100644 index 0000000..3985da8 --- /dev/null +++ b/src/main/java/org/gyk/modules/lssj/bjls/mapper/xml/BjMapper.xml @@ -0,0 +1,11 @@ + + + + + insert into cxc_sssj_lssj_bjlsjl (id,bj_id,create_time,bj_name,sdz,bjz,reason,bz) values + + (#{dept.id},#{dept.bj_id},#{dept.create_time}, #{dept.bj_name}, #{dept.sdz},#{dept.bjz}, #{dept.reason}, #{dept.bz}) + + + + diff --git a/src/main/java/org/gyk/modules/lssj/bjls/mapper/xml/CxcSssjLssjBjlsjlMapper.xml b/src/main/java/org/gyk/modules/lssj/bjls/mapper/xml/CxcSssjLssjBjlsjlMapper.xml new file mode 100644 index 0000000..2e03289 --- /dev/null +++ b/src/main/java/org/gyk/modules/lssj/bjls/mapper/xml/CxcSssjLssjBjlsjlMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/src/main/java/org/gyk/modules/lssj/bjls/service/ICxcSssjLssjBjlsjlService.java b/src/main/java/org/gyk/modules/lssj/bjls/service/ICxcSssjLssjBjlsjlService.java new file mode 100644 index 0000000..ea2d3cd --- /dev/null +++ b/src/main/java/org/gyk/modules/lssj/bjls/service/ICxcSssjLssjBjlsjlService.java @@ -0,0 +1,17 @@ +package org.gyk.modules.lssj.bjls.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import org.gyk.modules.lssj.bjls.entity.CxcSssjLssjBjlsjl; +import org.gyk.modules.sssj.entity.YasuojiJcxx; + +import java.util.List; + +/** + * @Description: 报警历史记录 + * @Author: jeecg-boot + * @Date: 2021-03-17 + * @Version: V1.0 + */ +public interface ICxcSssjLssjBjlsjlService extends IService { + +} diff --git a/src/main/java/org/gyk/modules/lssj/bjls/service/impl/BjlsService.java b/src/main/java/org/gyk/modules/lssj/bjls/service/impl/BjlsService.java new file mode 100644 index 0000000..633898b --- /dev/null +++ b/src/main/java/org/gyk/modules/lssj/bjls/service/impl/BjlsService.java @@ -0,0 +1,16 @@ +package org.gyk.modules.lssj.bjls.service.impl; + +import org.gyk.modules.lssj.bjls.entity.CxcSssjLssjBjlsjl; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.jdbc.core.BatchPreparedStatementSetter; +import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.stereotype.Service; + +import java.sql.PreparedStatement; +import java.sql.SQLException; +import java.util.List; + +@Service +public class BjlsService { + +} diff --git a/src/main/java/org/gyk/modules/lssj/bjls/service/impl/CxcSssjLssjBjlsjlServiceImpl.java b/src/main/java/org/gyk/modules/lssj/bjls/service/impl/CxcSssjLssjBjlsjlServiceImpl.java new file mode 100644 index 0000000..9ef0698 --- /dev/null +++ b/src/main/java/org/gyk/modules/lssj/bjls/service/impl/CxcSssjLssjBjlsjlServiceImpl.java @@ -0,0 +1,23 @@ +package org.gyk.modules.lssj.bjls.service.impl; + +import com.baomidou.dynamic.datasource.annotation.DS; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.gyk.modules.lssj.bjls.entity.CxcSssjLssjBjlsjl; +import org.gyk.modules.lssj.bjls.mapper.CxcSssjLssjBjlsjlMapper; +import org.gyk.modules.lssj.bjls.service.ICxcSssjLssjBjlsjlService; +import org.gyk.modules.sz.jldxx.entity.CxcSssjSzJldxx; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * @Description: 报警历史记录 + * @Author: jeecg-boot + * @Date: 2021-03-17 + * @Version: V1.0 + */ +@Service + +public class CxcSssjLssjBjlsjlServiceImpl extends ServiceImpl implements ICxcSssjLssjBjlsjlService { + +} diff --git a/src/main/java/org/gyk/modules/lssj/cxcsssjbjchuzhijilu/controller/CxcSssjBjChuzhijiluController.java b/src/main/java/org/gyk/modules/lssj/cxcsssjbjchuzhijilu/controller/CxcSssjBjChuzhijiluController.java new file mode 100644 index 0000000..960119e --- /dev/null +++ b/src/main/java/org/gyk/modules/lssj/cxcsssjbjchuzhijilu/controller/CxcSssjBjChuzhijiluController.java @@ -0,0 +1,273 @@ +package org.gyk.modules.lssj.cxcsssjbjchuzhijilu.controller; + +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import io.swagger.annotations.Api; +import lombok.extern.slf4j.Slf4j; +//import org.apache.commons.collections.map.HashedMap; +import org.apache.poi.util.StringUtil; +import org.apache.poi.xwpf.usermodel.XWPFDocument; +import org.gyk.common.api.Result; +import org.gyk.modules.lssj.cxcsssjbjchuzhijilu.entity.CxcSssjBjChuzhijilu; +import org.gyk.modules.lssj.cxcsssjbjchuzhijilu.mapper.CxcSssjBjChuzhijiluMapper; +import org.gyk.modules.lssj.cxcsssjbjchuzhijilu.service.ICxcSssjBjChuzhijiluService; +import org.jeecgframework.poi.word.WordExportUtil; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * @Description: 实时数据报警处置记录 + * @Author: jeecg-boot + * @Date: 2023-10-17 + * @Version: V1.0 + */ +@Api(tags="实时数据报警处置记录") +@CrossOrigin(origins = "*", maxAge = 3600) +@RestController +@RequestMapping("/cxcsssjbjchuzhijilu/cxcSssjBjChuzhijilu") +@Slf4j +public class CxcSssjBjChuzhijiluController { + @Autowired + private ICxcSssjBjChuzhijiluService cxcSssjBjChuzhijiluService; + @Autowired + private CxcSssjBjChuzhijiluMapper cxcSssjBjChuzhijiluMapper; + @Value(value = "${muban}") + private String uppath; + + /** + * 压缩机报警处置记录 + * + * @param + * @return Result + */ + @RequestMapping("/BaoJinChuZhi") + public Result BaoJinChuZhi(@RequestBody JSONObject params ) { + DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); + + LocalDateTime sbsj = LocalDateTime.now(); + + String userid = params.getString("userid"); + String zc = params.getString("zc"); + String jzh = params.getString("jzh"); + String bjmc = params.getString("bjmc"); + String bjsj = params.getString("bjsj"); + String bjms = params.getString("bjms"); + String yyfx = params.getString("yyfx"); + String czcs = params.getString("czcs"); + String czry = params.getString("czry"); + + List userOrgCode = cxcSssjBjChuzhijiluService.queryOrgCode(userid); + String orgcode = userOrgCode.get(0); +// log.info("hi:"+userid+" name:"+czry+" time:"+bjsj+" "+jzh+" "+bjmc+" "+bjms+" "+yyfx+" "+czcs+" "+zc); + + LocalDateTime bjdate = LocalDateTime.parse(bjsj, df); + + CxcSssjBjChuzhijilu cxcSssjBjChuzhijilu = new CxcSssjBjChuzhijilu(); + cxcSssjBjChuzhijilu.setZhanchang(zc); + cxcSssjBjChuzhijilu.setJizuhao(jzh); + cxcSssjBjChuzhijilu.setBjName(bjmc); + cxcSssjBjChuzhijilu.setBjTime(bjdate); + cxcSssjBjChuzhijilu.setBjMs(bjms); + cxcSssjBjChuzhijilu.setFenxiString(yyfx); + cxcSssjBjChuzhijilu.setChuzhicuoshiString(czcs); + cxcSssjBjChuzhijilu.setCreateBy(czry); + cxcSssjBjChuzhijilu.setCreateTime(sbsj); + cxcSssjBjChuzhijilu.setSysOrgCode(orgcode); + + cxcSssjBjChuzhijiluService.save(cxcSssjBjChuzhijilu); + + return Result.ok("添加成功!"); + } + + /** + * 分页列表查询 + * + * @param + * @param pageNo + * @param pageSize + * @param + * @return + */ + + @GetMapping(value = "/list") + public IPage queryPageList(@RequestParam(value = "pageNo") int pageNo,@RequestParam(value = "pageSize") int pageSize,@RequestParam(value = "zhanc") String zhanc,@RequestParam(value = "jzh") String jzh,@RequestParam(name = "startTime", required = false) String startTime, + @RequestParam(name = "endTime", required = false) String endTime) { + LambdaQueryWrapper lmq = Wrappers.lambdaQuery(); + lmq.between(CxcSssjBjChuzhijilu::getBjTime,startTime,endTime); + lmq.eq(CxcSssjBjChuzhijilu::getZhanchang,zhanc); + lmq.eq(CxcSssjBjChuzhijilu::getJizuhao,jzh); + lmq.orderByAsc(CxcSssjBjChuzhijilu::getBjTime); + + IPage iPage = new Page<>(pageNo,pageSize); + IPage list = cxcSssjBjChuzhijiluMapper.selectPage(iPage,lmq); + + + +// Map mapjldxx = sssjTools.getJldnameByJldid(zhanc,jzh); +// + list.getRecords().forEach(item->{ + String[] arr = item.getBjName().split("\\*"); + item.setBjName(arr[1]); + }); + +// log.info("total:"+list.getSize()+" "+list.getTotal()); + + return list; + } + + //模板导出 + @GetMapping("/export") + public void export(String id, HttpServletResponse response) throws Exception { + //1.获取list + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(CxcSssjBjChuzhijilu::getId,id); + CxcSssjBjChuzhijilu bjChuzhiJilu = cxcSssjBjChuzhijiluService.getOne(queryWrapper); + //2.获取map + Map map = new HashMap<>(); + + //4.处理数据,防止导出word报错 + DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); + + map.put("zhanchang",bjChuzhiJilu.getZhanchang()); + map.put("jizuhao",bjChuzhiJilu.getJizuhao()); + String[] nmstr = bjChuzhiJilu.getBjName().split("\\*"); + map.put("bjname",nmstr[1]); + map.put("bjtime",df.format(bjChuzhiJilu.getBjTime())); + if (bjChuzhiJilu.getBjMs() == null || bjChuzhiJilu.getBjMs().isEmpty()) { + map.put("bjms",""); + } else { + map.put("bjms",bjChuzhiJilu.getBjMs()); + } + + if (bjChuzhiJilu.getFenxiString() == null || bjChuzhiJilu.getFenxiString().isEmpty()) { + map.put("yyfx",""); + } else { + map.put("yyfx",bjChuzhiJilu.getFenxiString()); + } + + if (bjChuzhiJilu.getChuzhicuoshiString() == null || bjChuzhiJilu.getChuzhicuoshiString().isEmpty()) { + map.put("czcs",""); + } else { + map.put("czcs",bjChuzhiJilu.getChuzhicuoshiString()); + } + + map.put("czr",bjChuzhiJilu.getCreateBy()); + map.put("cztime",df.format(bjChuzhiJilu.getCreateTime())); + + String path = uppath + File.separator; + String fileName = path + "baojingchuzhi.docx";//这是模板路径1 + String fileName2 = path + "baojingchuzhiOut.docx";//这是导出路径 + + try { + XWPFDocument doc = WordExportUtil.exportWord07(fileName, map); + //5.输出word文件 + FileOutputStream fos = new FileOutputStream(fileName2); + doc.write(fos); + fos.close(); + } catch (Exception e) { + e.printStackTrace(); + } + //2022-06-10 niujl + // String fileName = uppath + "\\result.xlsx"; + try { + //避免文件名中文乱码,将UTF8打散重组成ISO-8859-1编码方式 + fileName2 = new String(fileName2.getBytes("UTF8"), "ISO-8859-1"); + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } + //设置响应头的类型 + response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); + //让浏览器下载文件,name是上述默认文件下载名 + response.addHeader("Content-Disposition", "attachment;filename=\"" + fileName2 + "\""); + InputStream inputStream = null; + OutputStream outputStream = null; + //在service层中已经将数据存成了excel临时文件,并返回了临时文件的路径 + String downloadPath = fileName2; + //根据临时文件的路径创建File对象,FileInputStream读取时需要使用 + File file = new File(downloadPath); + //Niujl 2023.07.17 + long fileSize = new File(fileName2).length(); + response.addHeader("Content-Length", String.valueOf(fileSize)); + + try { + //通过FileInputStream读临时文件,ServletOutputStream将临时文件写给浏览器 + inputStream = new FileInputStream(file); + outputStream = response.getOutputStream(); + int len = -1; + byte[] b = new byte[1024]; + while ((len = inputStream.read(b)) != -1) { + outputStream.write(b); + } + //刷新 + outputStream.flush(); + } catch (Exception e) { + e.printStackTrace(); + } finally { + //关闭输入输出流 + try { + if (inputStream != null) { + inputStream.close(); + } + } catch (IOException e) { + e.printStackTrace(); + } + try { + if (outputStream != null) { + outputStream.close(); + } + } catch (IOException e) { + e.printStackTrace(); + } + } + } + /** + * 添加 + * + * @param cxcSssjBjChuzhijilu + * @return + */ +// @AutoLog(value = "实时数据报警处置记录-添加") +// @ApiOperation(value="实时数据报警处置记录-添加", notes="实时数据报警处置记录-添加") +// @PostMapping(value = "/add") +// public Result add(@RequestBody CxcSssjBjChuzhijilu cxcSssjBjChuzhijilu) { +// cxcSssjBjChuzhijiluService.save(cxcSssjBjChuzhijilu); +// return Result.ok("添加成功!"); +// } + + /** + * 编辑 + * + * @param cxcSssjBjChuzhijilu + * @return +// */ +// @AutoLog(value = "实时数据报警处置记录-编辑") +// @ApiOperation(value="实时数据报警处置记录-编辑", notes="实时数据报警处置记录-编辑") +// @PutMapping(value = "/edit") +// public Result edit(@RequestBody CxcSssjBjChuzhijilu cxcSssjBjChuzhijilu) { +// cxcSssjBjChuzhijiluService.updateById(cxcSssjBjChuzhijilu); +// return Result.ok("编辑成功!"); +// } +// + /** + * 通过id删除 + * + * @param id + * @return + */ + + +} diff --git a/src/main/java/org/gyk/modules/lssj/cxcsssjbjchuzhijilu/entity/CxcSssjBjChuzhijilu.java b/src/main/java/org/gyk/modules/lssj/cxcsssjbjchuzhijilu/entity/CxcSssjBjChuzhijilu.java new file mode 100644 index 0000000..fbaafca --- /dev/null +++ b/src/main/java/org/gyk/modules/lssj/cxcsssjbjchuzhijilu/entity/CxcSssjBjChuzhijilu.java @@ -0,0 +1,136 @@ +package org.gyk.modules.lssj.cxcsssjbjchuzhijilu.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +import org.jeecgframework.poi.excel.annotation.Excel; +import org.springframework.format.annotation.DateTimeFormat; + +import java.io.Serializable; +import java.io.UnsupportedEncodingException; +import java.time.LocalDateTime; + +/** + * @Description: 实时数据报警处置记录 + * @Author: jeecg-boot + * @Date: 2023-10-17 + * @Version: V1.0 + */ +@Data +@TableName("cxc_sssj_bj_chuzhijilu") +@Accessors(chain = true) +@EqualsAndHashCode(callSuper = false) +@ApiModel(value="cxc_sssj_bj_chuzhijilu对象", description="实时数据报警处置记录") +public class CxcSssjBjChuzhijilu implements Serializable { + private static final long serialVersionUID = 1L; + + /**主键*/ + @TableId(type = IdType.ASSIGN_UUID) + @ApiModelProperty(value = "主键") + private java.lang.String id; + /**创建人*/ + @ApiModelProperty(value = "创建人") + private java.lang.String createBy; + /**创建日期*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @ApiModelProperty(value = "创建日期") + private LocalDateTime createTime; + /**更新人*/ + @ApiModelProperty(value = "更新人") + private java.lang.String updateBy; + /**更新日期*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @ApiModelProperty(value = "更新日期") + private LocalDateTime updateTime; + /**所属部门*/ + @ApiModelProperty(value = "所属部门") + private java.lang.String sysOrgCode; + /**站场*/ + @Excel(name = "站场", width = 15) + @ApiModelProperty(value = "站场") + private java.lang.String zhanchang; + /**机组号*/ + @Excel(name = "机组号", width = 15) + @ApiModelProperty(value = "机组号") + private java.lang.String jizuhao; + /**报警名称*/ + @Excel(name = "报警名称", width = 15) + @ApiModelProperty(value = "报警名称") + private java.lang.String bjName; + /**报警时间*/ + @Excel(name = "报警时间", width = 15, format = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd") + @ApiModelProperty(value = "报警时间") + private LocalDateTime bjTime; + /**报警信息*/ + @Excel(name = "报警信息", width = 15) + @ApiModelProperty(value = "报警信息") + private java.lang.String bjMs; + /**原因分析*/ + @Excel(name = "原因分析", width = 15) + private transient java.lang.String fenxiString; + + private byte[] fenxi; + + public byte[] getFenxi(){ + if(fenxiString==null){ + return null; + } + try { + return fenxiString.getBytes("UTF-8"); + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } + return null; + } + + public String getFenxiString(){ + if(fenxi==null || fenxi.length==0){ + return ""; + } + try { + return new String(fenxi,"UTF-8"); + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } + return ""; + } + /**处置措施*/ + @Excel(name = "处置措施", width = 15) + private transient java.lang.String chuzhicuoshiString; + + private byte[] chuzhicuoshi; + + public byte[] getChuzhicuoshi(){ + if(chuzhicuoshiString==null){ + return null; + } + try { + return chuzhicuoshiString.getBytes("UTF-8"); + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } + return null; + } + + public String getChuzhicuoshiString(){ + if(chuzhicuoshi==null || chuzhicuoshi.length==0){ + return ""; + } + try { + return new String(chuzhicuoshi,"UTF-8"); + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } + return ""; + } +} diff --git a/src/main/java/org/gyk/modules/lssj/cxcsssjbjchuzhijilu/mapper/CxcSssjBjChuzhijiluMapper.java b/src/main/java/org/gyk/modules/lssj/cxcsssjbjchuzhijilu/mapper/CxcSssjBjChuzhijiluMapper.java new file mode 100644 index 0000000..c0aa09d --- /dev/null +++ b/src/main/java/org/gyk/modules/lssj/cxcsssjbjchuzhijilu/mapper/CxcSssjBjChuzhijiluMapper.java @@ -0,0 +1,21 @@ +package org.gyk.modules.lssj.cxcsssjbjchuzhijilu.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; +import org.gyk.modules.lssj.cxcsssjbjchuzhijilu.entity.CxcSssjBjChuzhijilu; + +import java.util.List; + +/** + * @Description: 实时数据报警处置记录 + * @Author: jeecg-boot + * @Date: 2023-10-17 + * @Version: V1.0 + */ +@Mapper +public interface CxcSssjBjChuzhijiluMapper extends BaseMapper { + @Select("select org_code from sys_depart where id IN ( select dep_id from sys_user_depart where user_id = #{userid} )") + public List queryOrgCode (@Param("userid") String userid); +} diff --git a/src/main/java/org/gyk/modules/lssj/cxcsssjbjchuzhijilu/mapper/xml/CxcSssjBjChuzhijiluMapper.xml b/src/main/java/org/gyk/modules/lssj/cxcsssjbjchuzhijilu/mapper/xml/CxcSssjBjChuzhijiluMapper.xml new file mode 100644 index 0000000..f6eb5c4 --- /dev/null +++ b/src/main/java/org/gyk/modules/lssj/cxcsssjbjchuzhijilu/mapper/xml/CxcSssjBjChuzhijiluMapper.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/main/java/org/gyk/modules/lssj/cxcsssjbjchuzhijilu/service/ICxcSssjBjChuzhijiluService.java b/src/main/java/org/gyk/modules/lssj/cxcsssjbjchuzhijilu/service/ICxcSssjBjChuzhijiluService.java new file mode 100644 index 0000000..961e5f6 --- /dev/null +++ b/src/main/java/org/gyk/modules/lssj/cxcsssjbjchuzhijilu/service/ICxcSssjBjChuzhijiluService.java @@ -0,0 +1,17 @@ +package org.gyk.modules.lssj.cxcsssjbjchuzhijilu.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import org.gyk.modules.lssj.cxcsssjbjchuzhijilu.entity.CxcSssjBjChuzhijilu; + +import java.util.List; + +/** + * @Description: 实时数据报警处置记录 + * @Author: jeecg-boot + * @Date: 2023-10-17 + * @Version: V1.0 + */ +public interface ICxcSssjBjChuzhijiluService extends IService { + //根据用户ID获取用户的depart_name and org_code + public List queryOrgCode(String userid); +} diff --git a/src/main/java/org/gyk/modules/lssj/cxcsssjbjchuzhijilu/service/impl/CxcSssjBjChuzhijiluServiceImpl.java b/src/main/java/org/gyk/modules/lssj/cxcsssjbjchuzhijilu/service/impl/CxcSssjBjChuzhijiluServiceImpl.java new file mode 100644 index 0000000..6b8df71 --- /dev/null +++ b/src/main/java/org/gyk/modules/lssj/cxcsssjbjchuzhijilu/service/impl/CxcSssjBjChuzhijiluServiceImpl.java @@ -0,0 +1,23 @@ +package org.gyk.modules.lssj.cxcsssjbjchuzhijilu.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.gyk.modules.lssj.cxcsssjbjchuzhijilu.entity.CxcSssjBjChuzhijilu; +import org.gyk.modules.lssj.cxcsssjbjchuzhijilu.mapper.CxcSssjBjChuzhijiluMapper; +import org.gyk.modules.lssj.cxcsssjbjchuzhijilu.service.ICxcSssjBjChuzhijiluService; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * @Description: 实时数据报警处置记录 + * @Author: jeecg-boot + * @Date: 2023-10-17 + * @Version: V1.0 + */ +@Service +public class CxcSssjBjChuzhijiluServiceImpl extends ServiceImpl implements ICxcSssjBjChuzhijiluService { + @Override + public List queryOrgCode(String userid) { + return baseMapper.queryOrgCode(userid); + } +} diff --git a/src/main/java/org/gyk/modules/lssj/jldls/controller/CxcSssjLssjJldlsController.java b/src/main/java/org/gyk/modules/lssj/jldls/controller/CxcSssjLssjJldlsController.java new file mode 100644 index 0000000..f79b841 --- /dev/null +++ b/src/main/java/org/gyk/modules/lssj/jldls/controller/CxcSssjLssjJldlsController.java @@ -0,0 +1,169 @@ +package org.gyk.modules.lssj.jldls.controller; + + +import com.alibaba.fastjson.JSONArray; +import com.baomidou.dynamic.datasource.annotation.DS; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.gyk.common.annotation.AutoLog; +import org.gyk.common.api.Result; +import org.gyk.modules.lssj.jldls.entity.CxcSssjLssjJldls; +import org.gyk.modules.lssj.jldls.mapper.CxcSssjLssjJldlsMapper; +import org.gyk.modules.lssj.jldls.service.ICxcSssjLssjJldlsService; +import org.gyk.modules.sssj.controller.GykController; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import java.text.SimpleDateFormat; +import java.util.Comparator; +import java.util.List; + +/** + * @Description: 计量点历史数据 + * @Author: jeecg-boot + * @Date: 2021-03-30 + * @Version: V1.0 + */ +@Api(tags = "计量点历史数据") +@RestController +@RequestMapping("/jldls/cxcSssjLssjJldls") +@Slf4j +public class CxcSssjLssjJldlsController extends GykController { + @Autowired + private ICxcSssjLssjJldlsService cxcSssjLssjJldlsService; + @Autowired + private CxcSssjLssjJldlsMapper cxcSssjLssjJldlsMapper; + +// /** +// * 添加 +// * +// * @param cxcSssjLssjJldls +// * @return +// */ +// @AutoLog(value = "计量点历史数据-添加") +// @ApiOperation(value="计量点历史数据-添加", notes="计量点历史数据-添加") +// @PostMapping(value = "/add") +// @DS("slave") +// public Result add(@RequestBody CxcSssjLssjJldls cxcSssjLssjJldls) { +// cxcSssjLssjJldlsService.save(cxcSssjLssjJldls); +// return Result.ok("添加成功!"); +// } +// +// /** +// * 编辑 +// * +// * @param cxcSssjLssjJldls +// * @return +// */ +// @AutoLog(value = "计量点历史数据-编辑") +// @ApiOperation(value="计量点历史数据-编辑", notes="计量点历史数据-编辑") +// @PutMapping(value = "/edit") +// @DS("slave") +// public Result edit(@RequestBody CxcSssjLssjJldls cxcSssjLssjJldls) { +// cxcSssjLssjJldlsService.updateById(cxcSssjLssjJldls); +// return Result.ok("编辑成功!"); +// } +// +// /** +// * 通过id删除 +// * +// * @param id +// * @return +// */ +// @AutoLog(value = "计量点历史数据-通过id删除") +// @ApiOperation(value="计量点历史数据-通过id删除", notes="计量点历史数据-通过id删除") +// @DeleteMapping(value = "/delete") +// @DS("slave") +// public Result delete(@RequestParam(name="id",required=true) String id) { +// cxcSssjLssjJldlsService.removeById(id); +// return Result.ok("删除成功!"); +// } +// +// /** +// * 批量删除 +// * +// * @param ids +// * @return +// */ +// @AutoLog(value = "计量点历史数据-批量删除") +// @ApiOperation(value="计量点历史数据-批量删除", notes="计量点历史数据-批量删除") +// @DeleteMapping(value = "/deleteBatch") +// @DS("slave") +// public Result deleteBatch(@RequestParam(name="ids",required=true) String ids) { +// this.cxcSssjLssjJldlsService.removeByIds(Arrays.asList(ids.split(","))); +// return Result.ok("批量删除成功!"); +// } + + /** + * 通过id查询 + * + * @param id + * @return + */ + @AutoLog(value = "计量点历史数据-通过id查询") + @ApiOperation(value = "计量点历史数据-通过id查询", notes = "计量点历史数据-通过id查询") + @GetMapping(value = "/queryById") + @DS("slave") + public Result queryById(@RequestParam(name = "id", required = true) String id) { + CxcSssjLssjJldls cxcSssjLssjJldls = cxcSssjLssjJldlsService.getById(id); + if (cxcSssjLssjJldls == null) { + return Result.error("未找到对应数据"); + } + return Result.ok(cxcSssjLssjJldls); + } + + + @AutoLog(value = "计量点历史数据(5分钟)-查询") + @ApiOperation(value = "计量点历史数据(5分钟)-查询", notes = "计量点历史数据(5分钟)-分页列表查询") + @GetMapping(value = "/getLssjByJldId") + @DS("slave") + public Result getLssjByJldId(@RequestParam(name = "jldId", required = false) String jldId, + @RequestParam(name = "startTime") String startTime, + @RequestParam(name = "endTime") String endTime) { + Result result = new Result<>(); + + if (startTime != null && startTime != "" && jldId !=null && jldId !="") { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(CxcSssjLssjJldls::getJldId, jldId); + queryWrapper.ge(CxcSssjLssjJldls::getCreateTime, startTime); + queryWrapper.le(CxcSssjLssjJldls::getCreateTime, endTime); + List list = cxcSssjLssjJldlsService.list(queryWrapper); + //对时间排序 + list.sort(Comparator.comparing(CxcSssjLssjJldls::getCreateTime)); + + result.setSuccess(true); + result.setResult(JSONArray.toJSONString(list)); + } + return result; + } + + //获取计量点历史数据 2023-08-28 Niujl + @RequestMapping("/listLssjByJldName") + public IPage listByZcAndJzh(@RequestParam(value = "pageNo") int pageNo, @RequestParam(value = "pageSize") int pageSize, @RequestParam(value = "jldname") String jldname, @RequestParam(name = "startTime", required = false) String startTime, + @RequestParam(name = "endTime", required = false) String endTime) { + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); +// log.info("name:"+jldname+" time:"+startTime); +// long stime = System.currentTimeMillis(); + + LambdaQueryWrapper lmq = Wrappers.lambdaQuery(); + lmq.between(CxcSssjLssjJldls::getCreateTime,startTime,endTime); + lmq.eq(CxcSssjLssjJldls::getJldName,jldname); + lmq.orderByAsc(CxcSssjLssjJldls::getCreateTime); + + IPage iPage = new Page<>(pageNo,pageSize); + IPage list = cxcSssjLssjJldlsMapper.selectPage(iPage,lmq); + +// long etime = System.currentTimeMillis(); +// log.info("执行时长:"+(etime-stime)); + + return list; + } +} diff --git a/src/main/java/org/gyk/modules/lssj/jldls/controller/CxcSssjLssjJldlsRsjController.java b/src/main/java/org/gyk/modules/lssj/jldls/controller/CxcSssjLssjJldlsRsjController.java new file mode 100644 index 0000000..9a51f0c --- /dev/null +++ b/src/main/java/org/gyk/modules/lssj/jldls/controller/CxcSssjLssjJldlsRsjController.java @@ -0,0 +1,147 @@ +package org.gyk.modules.lssj.jldls.controller; + +import com.baomidou.dynamic.datasource.annotation.DS; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.gyk.common.annotation.AutoLog; +import org.gyk.common.api.Result; +import org.gyk.modules.lssj.jldls.entity.CxcSssjLssjJldlsRsj; +import org.gyk.modules.lssj.jldls.service.ICxcSssjLssjJldlsRsjService; +import org.gyk.modules.sssj.controller.GykController; +import org.gyk.modules.sssj.entity.CxcRsjQijing; +import org.gyk.modules.sssj.entity.Rishuju; +import org.gyk.modules.sssj.service.ICxcRsjQijingService; +import org.gyk.modules.sssj.service.IRishujuService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.*; + + +/** + * @Description: 计量点日数据 + * @Author: jeecg-boot + * @Date: 2021-08-16 + * @Version: V1.0 + */ +@Api(tags="计量点日数据") +@RestController +@RequestMapping("/jldlsrsj/cxcSssjLssjJldlsRsj") +@Slf4j +public class CxcSssjLssjJldlsRsjController extends GykController{ + @Autowired + private ICxcSssjLssjJldlsRsjService cxcSssjLssjJldlsRsjService; + + @Autowired + private IRishujuService rishujuService; + @Autowired + private ICxcRsjQijingService qijingService; + + + /** + * 添加 + * + * @param cxcSssjLssjJldlsRsj + * @return + */ + @AutoLog(value = "计量点日数据-添加") + @ApiOperation(value="计量点日数据-添加", notes="计量点日数据-添加") + @PostMapping(value = "/add") + + public Result add(@RequestBody CxcSssjLssjJldlsRsj cxcSssjLssjJldlsRsj) { + cxcSssjLssjJldlsRsjService.save(cxcSssjLssjJldlsRsj); + return Result.ok("添加成功!"); + } + + /** + * 编辑 + * + * @param cxcSssjLssjJldlsRsj + * @return + */ +// @AutoLog(value = "计量点日数据-编辑") +// @ApiOperation(value="计量点日数据-编辑", notes="计量点日数据-编辑") +// @PutMapping(value = "/edit") +// public Result edit(@RequestBody CxcSssjLssjJldlsRsj cxcSssjLssjJldlsRsj) { +// cxcSssjLssjJldlsRsjService.updateById(cxcSssjLssjJldlsRsj); +// return Result.ok("编辑成功!"); +// } +// +// /** +// * 通过id删除 +// * +// * @param id +// * @return +// */ +// @AutoLog(value = "计量点日数据-通过id删除") +// @ApiOperation(value="计量点日数据-通过id删除", notes="计量点日数据-通过id删除") +// @DeleteMapping(value = "/delete") +// public Result delete(@RequestParam(name="id",required=true) String id) { +// cxcSssjLssjJldlsRsjService.removeById(id); +// return Result.ok("删除成功!"); +// } +// +// /** +// * 批量删除 +// * +// * @param ids +// * @return +// */ +// @AutoLog(value = "计量点日数据-批量删除") +// @ApiOperation(value="计量点日数据-批量删除", notes="计量点日数据-批量删除") +// @DeleteMapping(value = "/deleteBatch") +// public Result deleteBatch(@RequestParam(name="ids",required=true) String ids) { +// this.cxcSssjLssjJldlsRsjService.removeByIds(Arrays.asList(ids.split(","))); +// return Result.ok("批量删除成功!"); +// } + + /** + * 通过id查询 + * + * @param id + * @return + */ + @AutoLog(value = "计量点日数据-通过id查询") + @ApiOperation(value="计量点日数据-通过id查询", notes="计量点日数据-通过id查询") + @GetMapping(value = "/queryById") + + public Result queryById(@RequestParam(name="id",required=true) String id) { + CxcSssjLssjJldlsRsj cxcSssjLssjJldlsRsj = cxcSssjLssjJldlsRsjService.getById(id); + if(cxcSssjLssjJldlsRsj==null) { + return Result.error("未找到对应数据"); + } + return Result.ok(cxcSssjLssjJldlsRsj); + } + + /** + * 通过jldId查询年数据 + * + * @param jh + * @return + */ + @AutoLog(value = "计量点日数据-通过jldId查询") + @ApiOperation(value="计量点日数据-通过jldId查询", notes="计量点日数据-通过jldId查询") + @GetMapping(value = "/queryYByJldid") + + public Result queryYearByJldid(@RequestParam(name="jh",required=true) String jh) { + + List> RsjQjlist = qijingService.getYMDataByjh(jh); +// for (Mapmap :RsjQjlist){ +// +// System.out.println(map.get("qilMData")); +// } + + +// List> Rsj = qijingService.getYMDataByjldIds(jh); +// for (int i = 0 ; i { + +} diff --git a/src/main/java/org/gyk/modules/lssj/jldls/mapper/CxcSssjLssjJldlsRsjMapper.java b/src/main/java/org/gyk/modules/lssj/jldls/mapper/CxcSssjLssjJldlsRsjMapper.java new file mode 100644 index 0000000..5b2419e --- /dev/null +++ b/src/main/java/org/gyk/modules/lssj/jldls/mapper/CxcSssjLssjJldlsRsjMapper.java @@ -0,0 +1,23 @@ +package org.gyk.modules.lssj.jldls.mapper; + + +import com.baomidou.dynamic.datasource.annotation.DS; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.gyk.modules.lssj.jldls.entity.CxcSssjLssjJldlsRsj; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +import java.util.List; + +/** + * @Description: 计量点日数据 + * @Author: jeecg-boot + * @Date: 2021-08-16 + * @Version: V1.0 + */ + +@Mapper +public interface CxcSssjLssjJldlsRsjMapper extends BaseMapper { + + +} diff --git a/src/main/java/org/gyk/modules/lssj/jldls/mapper/JldlsMapper.java b/src/main/java/org/gyk/modules/lssj/jldls/mapper/JldlsMapper.java new file mode 100644 index 0000000..d88efb2 --- /dev/null +++ b/src/main/java/org/gyk/modules/lssj/jldls/mapper/JldlsMapper.java @@ -0,0 +1,121 @@ +package org.gyk.modules.lssj.jldls.mapper; + +import com.baomidou.dynamic.datasource.annotation.DS; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Insert; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; +import org.gyk.modules.lssj.bjls.entity.CxcSssjLssjBjlsjl; +import org.gyk.modules.lssj.jldls.entity.CxcSssjLssjJldls; +import org.gyk.modules.sssj.entity.JldData; +import org.gyk.modules.sssj.entity.PianyuanZhan; +import org.gyk.modules.sssj.entity.YasuojiBjSj; +import org.gyk.modules.sssj.entity.YasuojiSj; + +import java.util.List; + +/** + * @Description: 计量点历史数据-批量存储 + * @Author: liao + * @Date: 2021-04-05 + * @Version: V1.0 + */ +@Mapper +public interface JldlsMapper extends BaseMapper { + //10.75.166.13:3306/jeecg-boot-cxc + int insertBatch( List vips); + + @Insert("" + ) + @DS("slave") + void insertPianyuanMaster(@Param("list") List list); + + //获取偏远站场指定日期8点数据 + @Select(" SELECT * FROM `cxc_sssj_pianyuan` WHERE rq>= #{startTime} and DATE_FORMAT(rq,'%H:%i')='08:00' and jldname in ('白九来气','东明站来气') ") + @DS("slave") + public List listPiany(@Param("startTime") String startTime); + + //修改偏远站场指定日期8点数据 + @Select(" insert into cxc_sssj_pianyuan(id,jldname,rq,bkzl) values (#{id},#{jldname},#{rq}, #{bkzl})") + @DS("slave") + public List editPianyuan8(@Param("id") String id,@Param("jldname") String jldname,@Param("rq") String rq,@Param("bkzl") String bkzl); + + + @Insert("" + ) + @DS("three") + void insertBatchMaster(@Param("list") List list); + + //10.75.166.13:3306/jeecg-boot-jldls + @Insert("" + ) + @DS("slave") + void insertBatchSlave(@Param("list") List list); + + @Insert("" + ) + @DS("slave") + void YasuojiBj(@Param("list") List list); + + @Insert("" + ) + @DS("slave") + void YasuojiSssj(@Param("list") List list); + +// @Select(" SELECT * FROM `cxc_sssj_yasuoji_bjls` WHERE end_time>= date_sub(now(),INTERVAL #{sc} HOUR) ORDER BY end_time desc") + @Select(" SELECT * FROM `cxc_sssj_yasuoji_bjls` where zt='1' ORDER BY end_time desc") + @DS("slave") + public List getYsjBj(); + + //获取压缩机报警历史数据 + @Select(" SELECT * FROM `cxc_sssj_yasuoji_bjls` WHERE begin_time BETWEEN #{startTime} AND #{endTime} ORDER BY begin_time") + @DS("slave") + public List getYsjBjsj(@Param("startTime") String startTime,@Param("endTime") String endTime); + + //获取压缩机历史数据的表头 + @Select(" SELECT station_name,jizu_hao,rq,shuju FROM `cxc_sssj_yasuoji` WHERE station_name=#{zc} and jizu_hao=#{jzh} limit 1") + @DS("slave") + public List getYsjLsBt(@Param("zc") String zc,@Param("jzh") String jzh); + + //获取压缩机历史数据 + @Select(" SELECT station_name,jizu_hao,rq,shuju FROM `cxc_sssj_yasuoji` WHERE rq BETWEEN #{startTime} AND #{endTime} and station_name=#{zc} and jizu_hao=#{jzh} order by rq") + @DS("slave") + public List getYsjLssj(@Param("zc") String zc,@Param("jzh") String jzh,@Param("startTime") String startTime,@Param("endTime") String endTime); + +// @Select(" SELECT * FROM `cxc_sssj_lssj_bjlsjl` WHERE end_time>= date_sub(now(),INTERVAL #{sc} HOUR) and jlbz=#{lb} ORDER BY end_time desc") + //查询报警历史表中未处置的条目 + // 添加了一个条件 zt不为0 jiang.20240321 + @Select(" SELECT * FROM `cxc_sssj_lssj_bjlsjl` WHERE jlbz=#{lb} and zt !='0' ORDER BY end_time desc limit #{sc}") + public List getTrqBjxx(@Param("sc") int sc,@Param("lb") String lb); +} diff --git a/src/main/java/org/gyk/modules/lssj/jldls/mapper/xml/CxcSssjLssjJldlsMapper.xml b/src/main/java/org/gyk/modules/lssj/jldls/mapper/xml/CxcSssjLssjJldlsMapper.xml new file mode 100644 index 0000000..3697ef7 --- /dev/null +++ b/src/main/java/org/gyk/modules/lssj/jldls/mapper/xml/CxcSssjLssjJldlsMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/src/main/java/org/gyk/modules/lssj/jldls/mapper/xml/CxcSssjLssjJldlsRsjMapper.xml b/src/main/java/org/gyk/modules/lssj/jldls/mapper/xml/CxcSssjLssjJldlsRsjMapper.xml new file mode 100644 index 0000000..5226226 --- /dev/null +++ b/src/main/java/org/gyk/modules/lssj/jldls/mapper/xml/CxcSssjLssjJldlsRsjMapper.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/main/java/org/gyk/modules/lssj/jldls/mapper/xml/JldlsMapper.xml b/src/main/java/org/gyk/modules/lssj/jldls/mapper/xml/JldlsMapper.xml new file mode 100644 index 0000000..417b2ca --- /dev/null +++ b/src/main/java/org/gyk/modules/lssj/jldls/mapper/xml/JldlsMapper.xml @@ -0,0 +1,10 @@ + + + + + insert into cxc_sssj_lssj_jldls (id,create_time,jld_id,jld_No,wd,yl,yc,ssll,jrl,syll,byll,zll,jrsj,zt,bz) values + + (#{jldls.id},#{jldls.create_time}, #{jldls.jld_id}, #{jldls.jld_No},#{jldls.wd}, #{jldls.yl}, #{jldls.yc},#{jldls.ssll}, #{jldls.jrl}, #{jldls.syll}, #{jldls.byll}, #{jldls.zll}, #{jldls.jrsj}, #{jldls.zt}, #{jldls.bz}) + + + diff --git a/src/main/java/org/gyk/modules/lssj/jldls/service/ICxcSssjLssjJldlsRsjService.java b/src/main/java/org/gyk/modules/lssj/jldls/service/ICxcSssjLssjJldlsRsjService.java new file mode 100644 index 0000000..507fc73 --- /dev/null +++ b/src/main/java/org/gyk/modules/lssj/jldls/service/ICxcSssjLssjJldlsRsjService.java @@ -0,0 +1,18 @@ +package org.gyk.modules.lssj.jldls.service; + +import org.gyk.modules.lssj.jldls.entity.CxcSssjLssjJldlsRsj; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; +import java.util.Map; + +/** + * @Description: 计量点日数据 + * @Author: jeecg-boot + * @Date: 2021-08-16 + * @Version: V1.0 + */ +public interface ICxcSssjLssjJldlsRsjService extends IService { + + +} diff --git a/src/main/java/org/gyk/modules/lssj/jldls/service/ICxcSssjLssjJldlsService.java b/src/main/java/org/gyk/modules/lssj/jldls/service/ICxcSssjLssjJldlsService.java new file mode 100644 index 0000000..43acdcb --- /dev/null +++ b/src/main/java/org/gyk/modules/lssj/jldls/service/ICxcSssjLssjJldlsService.java @@ -0,0 +1,16 @@ +package org.gyk.modules.lssj.jldls.service; + +import org.gyk.modules.lssj.jldls.entity.CxcSssjLssjJldls; +import com.baomidou.mybatisplus.extension.service.IService; +import org.springframework.stereotype.Service; + +/** + * @Description: 计量点历史数据 + * @Author: jeecg-boot + * @Date: 2021-03-30 + * @Version: V1.0 + */ + +public interface ICxcSssjLssjJldlsService extends IService { + +} diff --git a/src/main/java/org/gyk/modules/lssj/jldls/service/impl/CxcSssjLssjJldlsRsjServiceImpl.java b/src/main/java/org/gyk/modules/lssj/jldls/service/impl/CxcSssjLssjJldlsRsjServiceImpl.java new file mode 100644 index 0000000..7ceb285 --- /dev/null +++ b/src/main/java/org/gyk/modules/lssj/jldls/service/impl/CxcSssjLssjJldlsRsjServiceImpl.java @@ -0,0 +1,26 @@ +package org.gyk.modules.lssj.jldls.service.impl; + +import org.gyk.modules.lssj.jldls.entity.CxcSssjLssjJldlsRsj; +import org.gyk.modules.lssj.jldls.mapper.CxcSssjLssjJldlsRsjMapper; +import org.gyk.modules.lssj.jldls.service.ICxcSssjLssjJldlsRsjService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import java.util.List; + +/** + * @Description: 计量点日数据 + * @Author: jeecg-boot + * @Date: 2021-08-16 + * @Version: V1.0 + */ +@Service + +public class CxcSssjLssjJldlsRsjServiceImpl extends ServiceImpl implements ICxcSssjLssjJldlsRsjService { + + + + + +} diff --git a/src/main/java/org/gyk/modules/lssj/jldls/service/impl/CxcSssjLssjJldlsServiceImpl.java b/src/main/java/org/gyk/modules/lssj/jldls/service/impl/CxcSssjLssjJldlsServiceImpl.java new file mode 100644 index 0000000..eb405f1 --- /dev/null +++ b/src/main/java/org/gyk/modules/lssj/jldls/service/impl/CxcSssjLssjJldlsServiceImpl.java @@ -0,0 +1,25 @@ +package org.gyk.modules.lssj.jldls.service.impl; + +import org.gyk.modules.lssj.jldls.entity.CxcSssjLssjJldls; +import org.gyk.modules.lssj.jldls.mapper.CxcSssjLssjJldlsMapper; +import org.gyk.modules.lssj.jldls.mapper.JldlsMapper; +import org.gyk.modules.lssj.jldls.service.ICxcSssjLssjJldlsService; +import org.springframework.stereotype.Service; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; + +/** + * @Description: 计量点历史数据 + * @Author: jeecg-boot + * @Date: 2021-03-30 + * @Version: V1.0 + */ +@Service + +public class CxcSssjLssjJldlsServiceImpl extends ServiceImpl implements ICxcSssjLssjJldlsService { +// +// @Override +// public int insertBatchSlave(List list) { +// return +// } +} diff --git a/src/main/java/org/gyk/modules/lssj/ngzxsj/controller/ngzxLssjController.java b/src/main/java/org/gyk/modules/lssj/ngzxsj/controller/ngzxLssjController.java new file mode 100644 index 0000000..557f52e --- /dev/null +++ b/src/main/java/org/gyk/modules/lssj/ngzxsj/controller/ngzxLssjController.java @@ -0,0 +1,140 @@ +package org.gyk.modules.lssj.ngzxsj.controller; + + +import io.swagger.annotations.Api; +import lombok.extern.slf4j.Slf4j; +import org.gyk.modules.sssj.controller.GykController; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** +* @Description: 报警历史记录 +* @Author: jeecg-boot +* @Date: 2021-03-17 +* @Version: V1.0 +*/ +@Api(tags="报警历史记录") +@RestController +@RequestMapping("/Ngzxlssj") +@Slf4j +public class ngzxLssjController extends GykController{ + + +// /** +// * 添加 +// * +// * @param cxcSssjYasuojiBjls +// * @return +// */ +// @AutoLog(value = "报警历史记录-添加") +// @ApiOperation(value="报警历史记录-添加", notes="报警历史记录-添加") +// @PostMapping(value = "/add") +// public Result add(@RequestBody CxcSssjYasuojiBjls cxcSssjYasuojiBjls) { +// yasuojiBaojLssjService.save(cxcSssjYasuojiBjls); +// return Result.ok("添加成功!"); +// } +// +// /** +// * 编辑 +// * +// * @param cxcSssjYasuojiBjls +// * @return +// */ +// @AutoLog(value = "报警历史记录-编辑") +// @ApiOperation(value="报警历史记录-编辑", notes="报警历史记录-编辑") +// @PutMapping(value = "/edit") +// public Result edit(@RequestBody CxcSssjYasuojiBjls cxcSssjYasuojiBjls) { +// yasuojiBaojLssjService.updateById(cxcSssjYasuojiBjls); +// return Result.ok("编辑成功!"); +// } +// +// /** +// * 通过id删除 +// * +// * @param id +// * @return +// */ +// @AutoLog(value = "报警历史记录-通过id删除") +// @ApiOperation(value="报警历史记录-通过id删除", notes="报警历史记录-通过id删除") +// @DeleteMapping(value = "/delete") +// public Result delete(@RequestParam(name="id",required=true) String id) { +// yasuojiBaojLssjService.removeById(id); +// return Result.ok("删除成功!"); +// } +// +// /** +// * 批量删除 +// * +// * @param ids +// * @return +// */ +// @AutoLog(value = "报警历史记录-批量删除") +// @ApiOperation(value="报警历史记录-批量删除", notes="报警历史记录-批量删除") +// @DeleteMapping(value = "/deleteBatch") +// public Result deleteBatch(@RequestParam(name="ids",required=true) String ids) { +// this.yasuojiBaojLssjService.removeByIds(Arrays.asList(ids.split(","))); +// return Result.ok("批量删除成功!"); +// } +// +// /** +// * 通过id查询 +// * +// * @param id +// * @return +// */ +// @AutoLog(value = "报警历史记录-通过id查询") +// @ApiOperation(value="报警历史记录-通过id查询", notes="报警历史记录-通过id查询") +// @GetMapping(value = "/queryById") +// public Result queryById(@RequestParam(name="id",required=true) String id) { +// CxcSssjYasuojiBjls cxcSssjYasuojiBjls = yasuojiBaojLssjService.getById(id); +// if(cxcSssjYasuojiBjls ==null) { +// return Result.error("未找到对应数据"); +// } +// return Result.ok(cxcSssjYasuojiBjls); +// } + +// @RequestMapping("/list") +// public IPage list() { +// LambdaQueryWrapper lmq = Wrappers.lambdaQuery(); +// lmq.between(CxcSssjYasuojiBjls::getBeginTime,"2023-08-21","2023-08-26"); +// lmq.eq(CxcSssjYasuojiBjls::getStationname,"文二联增压站"); +// lmq.eq(CxcSssjYasuojiBjls::getJizuhao,"一号机组"); +// +// IPage iPage = new Page<>(2,4); +// IPage list = yasuojBaojLssjMapper.selectPage(iPage,lmq); +// +// Map mapjldxx = sssjTools.getJldnameByJldid("文二联增压站","一号机组"); +// +// list.getRecords().forEach(item->{ +// item.setBjId(mapjldxx.get(item.getBjId())); +// }); +// +// log.info("total:"+list.getSize()+" "+list.getTotal()); +// +// return list; +// } + +// @RequestMapping("/listByZcAndJzh") +// public IPage listByZcAndJzh(@RequestParam(value = "pageNo") int pageNo,@RequestParam(value = "pageSize") int pageSize,@RequestParam(value = "zhanc") String zhanc,@RequestParam(value = "jzh") String jzh,@RequestParam(name = "startTime", required = false) String startTime, +// @RequestParam(name = "endTime", required = false) String endTime) { +// LambdaQueryWrapper lmq = Wrappers.lambdaQuery(); +// lmq.between(CxcSssjYasuojiBjls::getBeginTime,startTime,endTime); +// lmq.eq(CxcSssjYasuojiBjls::getStationname,zhanc); +// lmq.eq(CxcSssjYasuojiBjls::getJizuhao,jzh); +// lmq.orderByAsc(CxcSssjYasuojiBjls::getBeginTime); +// +// IPage iPage = new Page<>(pageNo,pageSize); +// IPage list = yasuojBaojLssjMapper.selectPage(iPage,lmq); +// +// Map mapjldxx = sssjTools.getJldnameByJldid(zhanc,jzh); +// +// list.getRecords().forEach(item->{ +// item.setBjId(mapjldxx.get(item.getBjId())); +// }); +// +// log.info("total:"+list.getSize()+" "+list.getTotal()); +// +// return list; +// } + +} diff --git a/src/main/java/org/gyk/modules/lssj/ngzxsj/mapper/ngzxLssjMapper.java b/src/main/java/org/gyk/modules/lssj/ngzxsj/mapper/ngzxLssjMapper.java new file mode 100644 index 0000000..c97dea1 --- /dev/null +++ b/src/main/java/org/gyk/modules/lssj/ngzxsj/mapper/ngzxLssjMapper.java @@ -0,0 +1,18 @@ +package org.gyk.modules.lssj.ngzxsj.mapper; + +import com.baomidou.dynamic.datasource.annotation.DS; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; +import org.gyk.modules.sssj.entity.NgSssj; + +/** + * @Description: 报警历史记录 + * @Author: jeecg-boot + * @Date: 2021-03-17 + * @Version: V1.0 + */ +@Mapper +@DS("slave") +public interface ngzxLssjMapper extends BaseMapper { + +} diff --git a/src/main/java/org/gyk/modules/lssj/ngzxsj/mapper/xml/ngzxLssjMapper.xml b/src/main/java/org/gyk/modules/lssj/ngzxsj/mapper/xml/ngzxLssjMapper.xml new file mode 100644 index 0000000..b352d83 --- /dev/null +++ b/src/main/java/org/gyk/modules/lssj/ngzxsj/mapper/xml/ngzxLssjMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/src/main/java/org/gyk/modules/lssj/ngzxsj/service/IngzxLssjService.java b/src/main/java/org/gyk/modules/lssj/ngzxsj/service/IngzxLssjService.java new file mode 100644 index 0000000..fd5ddea --- /dev/null +++ b/src/main/java/org/gyk/modules/lssj/ngzxsj/service/IngzxLssjService.java @@ -0,0 +1,14 @@ +package org.gyk.modules.lssj.ngzxsj.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import org.gyk.modules.sssj.entity.NgSssj; + +/** + * @Description: 报警历史记录 + * @Author: jeecg-boot + * @Date: 2021-03-17 + * @Version: V1.0 + */ +public interface IngzxLssjService extends IService { + +} diff --git a/src/main/java/org/gyk/modules/lssj/ngzxsj/service/impl/ngzxLssjServiceImpl.java b/src/main/java/org/gyk/modules/lssj/ngzxsj/service/impl/ngzxLssjServiceImpl.java new file mode 100644 index 0000000..c740efb --- /dev/null +++ b/src/main/java/org/gyk/modules/lssj/ngzxsj/service/impl/ngzxLssjServiceImpl.java @@ -0,0 +1,19 @@ +package org.gyk.modules.lssj.ngzxsj.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.gyk.modules.sssj.entity.NgSssj; +import org.gyk.modules.lssj.ngzxsj.mapper.ngzxLssjMapper; +import org.gyk.modules.lssj.ngzxsj.service.IngzxLssjService; +import org.springframework.stereotype.Service; +/** + * @Description: 报警历史记录 + * @Author: jeecg-boot + * @Date: 2021-03-17 + * @Version: V1.0 + */ +@Service + +public class ngzxLssjServiceImpl extends ServiceImpl implements IngzxLssjService { + + +} diff --git a/src/main/java/org/gyk/modules/lssj/scls/entity/CxcSssjLssjScls.java b/src/main/java/org/gyk/modules/lssj/scls/entity/CxcSssjLssjScls.java new file mode 100644 index 0000000..562556f --- /dev/null +++ b/src/main/java/org/gyk/modules/lssj/scls/entity/CxcSssjLssjScls.java @@ -0,0 +1,105 @@ +package org.gyk.modules.lssj.scls.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +import org.jeecgframework.poi.excel.annotation.Excel; +import org.springframework.format.annotation.DateTimeFormat; + +import java.io.Serializable; + +/** + * @Description: 输差历史数据 + * @Author: jeecg-boot + * @Date: 2021-04-17 + * @Version: V1.0 + */ +@Data +@TableName("cxc_sssj_lssj_scls") +@Accessors(chain = true) +@EqualsAndHashCode(callSuper = false) +@ApiModel(value="cxc_sssj_lssj_scls对象", description="输差历史数据") +public class CxcSssjLssjScls implements Serializable { + private static final long serialVersionUID = 1L; + + /**ID*/ + @TableId(type = IdType.ASSIGN_UUID) + @ApiModelProperty(value = "ID") + private java.lang.String id; + /**创建日期*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd") + @DateTimeFormat(pattern="yyyy-MM-dd") + @ApiModelProperty(value = "创建日期") + private java.util.Date createTime; + /**输差编号*/ + @Excel(name = "输差编号", width = 15) + @ApiModelProperty(value = "输差编号") + private java.lang.String scId; + /**输差名称*/ + @Excel(name = "输差名称", width = 15) + @ApiModelProperty(value = "输差名称") + private java.lang.String scName; + /**实时输差*/ + @Excel(name = "实时输差", width = 15) + @ApiModelProperty(value = "实时输差") + private java.lang.String sssc; + /**输差类别*/ + @Excel(name = "输差类别", width = 15) + @ApiModelProperty(value = "输差类别") + private java.lang.String scType; + /**进气计量点ID*/ + @Excel(name = "进气计量点ID", width = 15) + @ApiModelProperty(value = "进气计量点ID") + private java.lang.String inPoints; + /**出气计量点ID*/ + @Excel(name = "出气计量点ID", width = 15) + @ApiModelProperty(value = "出气计量点ID") + private java.lang.String outPoints; + /**管理区ID*/ + @Excel(name = "管理区ID", width = 15) + @ApiModelProperty(value = "管理区ID") + private java.lang.String departId; + /**站场ID*/ + @Excel(name = "站场ID", width = 15) + @ApiModelProperty(value = "站场ID") + private java.lang.String stationId; + /**今日进气总量*/ + @Excel(name = "今日进气总量", width = 15) + @ApiModelProperty(value = "今日进气总量") + private java.lang.String jrlIn; + /**今日出气总量*/ + @Excel(name = "今日出气总量", width = 15) + @ApiModelProperty(value = "今日出气总量") + private java.lang.String jrlOut; + /**今日量输差*/ + @Excel(name = "今日量输差", width = 15) + @ApiModelProperty(value = "今日量输差") + private java.lang.String jrlsc; + /**今日输差百分数*/ + @Excel(name = "今日输差百分数", width = 15) + @ApiModelProperty(value = "今日输差百分数") + private java.lang.String jrlscbfs; + /**实时进气量*/ + @Excel(name = "实时进气量", width = 15) + @ApiModelProperty(value = "实时进气量") + private java.lang.String ssIn; + /**实时出气量*/ + @Excel(name = "实时出气量", width = 15) + @ApiModelProperty(value = "实时出气量") + private java.lang.String ssOut; + /**实时输差百分数*/ + @Excel(name = "实时输差百分数", width = 15) + @ApiModelProperty(value = "实时输差百分数") + private java.lang.String ssscbfs; + /**备注*/ + @Excel(name = "备注", width = 15) + @ApiModelProperty(value = "备注") + private java.lang.String bz; +} + diff --git a/src/main/java/org/gyk/modules/lssj/scls/entity/CxcSssjScls.java b/src/main/java/org/gyk/modules/lssj/scls/entity/CxcSssjScls.java new file mode 100644 index 0000000..35de768 --- /dev/null +++ b/src/main/java/org/gyk/modules/lssj/scls/entity/CxcSssjScls.java @@ -0,0 +1,89 @@ +package org.gyk.modules.lssj.scls.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +import org.jeecgframework.poi.excel.annotation.Excel; +import org.springframework.format.annotation.DateTimeFormat; + +import java.io.Serializable; + +/** + * @Description: 输差历史数据 + * @Author: jeecg-boot + * @Date: 2021-04-17 + * @Version: V1.0 + */ +@Data +@TableName("cxc_sssj_scls") +@Accessors(chain = true) +@EqualsAndHashCode(callSuper = false) +@ApiModel(value="cxc_sssj_scls对象", description="输差历史数据") +public class CxcSssjScls implements Serializable { + private static final long serialVersionUID = 1L; + + /**ID*/ + @TableId(type = IdType.ASSIGN_UUID) + @ApiModelProperty(value = "ID") + private String id; + /**创建日期*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @ApiModelProperty(value = "创建日期") + private java.util.Date createTime; + /**输差编号*/ + @Excel(name = "输差编号", width = 15) + @ApiModelProperty(value = "输差编号") + private String scId; + /**输差名称*/ + @Excel(name = "输差名称", width = 15) + @ApiModelProperty(value = "输差名称") + private String scName; + /**实时输差*/ + @Excel(name = "实时输差", width = 15) + @ApiModelProperty(value = "实时输差") + private java.lang.Double sssc; + /**输差类别*/ + @Excel(name = "输差类别", width = 15) + @ApiModelProperty(value = "输差类别") + private String scType; + /**站场ID*/ + @Excel(name = "站场ID", width = 15) + @ApiModelProperty(value = "站场ID") + private String stationId; + /**今日进气总量*/ + @Excel(name = "今日进气总量", width = 15) + @ApiModelProperty(value = "今日进气总量") + private java.lang.Double jrlIn; + /**今日出气总量*/ + @Excel(name = "今日出气总量", width = 15) + @ApiModelProperty(value = "今日出气总量") + private java.lang.Double jrlOut; + /**今日量输差*/ + @Excel(name = "今日量输差", width = 15) + @ApiModelProperty(value = "今日量输差") + private java.lang.Double jrlsc; + /**今日输差百分数*/ + @Excel(name = "今日输差百分数", width = 15) + @ApiModelProperty(value = "今日输差百分数") + private java.lang.Double jrlscbfs; + /**实时进气量*/ + @Excel(name = "实时进气量", width = 15) + @ApiModelProperty(value = "实时进气量") + private java.lang.Double ssIn; + /**实时出气量*/ + @Excel(name = "实时出气量", width = 15) + @ApiModelProperty(value = "实时出气量") + private java.lang.Double ssOut; + /**实时输差百分数*/ + @Excel(name = "实时输差百分数", width = 15) + @ApiModelProperty(value = "实时输差百分数") + private java.lang.Double ssscbfs; +} + diff --git a/src/main/java/org/gyk/modules/lssj/scls/mapper/SclsMapper.java b/src/main/java/org/gyk/modules/lssj/scls/mapper/SclsMapper.java new file mode 100644 index 0000000..664c492 --- /dev/null +++ b/src/main/java/org/gyk/modules/lssj/scls/mapper/SclsMapper.java @@ -0,0 +1,13 @@ +package org.gyk.modules.lssj.scls.mapper; + +import com.baomidou.dynamic.datasource.annotation.DS; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; +import org.gyk.modules.lssj.scls.entity.CxcSssjLssjScls; + +import java.util.List; + +@Mapper +public interface SclsMapper extends BaseMapper { + int insertBatch( List vips); +} diff --git a/src/main/java/org/gyk/modules/lssj/scls/mapper/xml/SclsMapper.xml b/src/main/java/org/gyk/modules/lssj/scls/mapper/xml/SclsMapper.xml new file mode 100644 index 0000000..436486e --- /dev/null +++ b/src/main/java/org/gyk/modules/lssj/scls/mapper/xml/SclsMapper.xml @@ -0,0 +1,12 @@ + + + + + + insert into cxc_sssj_lssj_jscls (id,create_time,sc_id,sc_name,sssc,sc_type,in_points,out_points,depart_id,station_id,jrl_in,jrl_out,jrlsc,jrlscbfs,ss_in,ss_out,ssscbfs,bz) values + + (#{scls.id},#{scls.create_time}, #{scls.sc_id}, #{scls.sc_name},#{scls.sssc}, #{scls.sc_type}, #{scls.in_points},#{scls.out_points}, #{scls.depart_id}, #{scls.station_id}, #{scls.jrl_in}, #{scls.jrl_out}, #{scls.jrsj}, #{scls.jrlsc}, #{scls.jrlscbfs}, #{scls.ss_in}, #{scls.ss_out}, #{scls.jrlscbfs}, #{scls.ssscbfs}, #{scls.bz}) + + + + diff --git a/src/main/java/org/gyk/modules/lssj/yasuojishuju/controller/YasuojiBaojLssjController.java b/src/main/java/org/gyk/modules/lssj/yasuojishuju/controller/YasuojiBaojLssjController.java new file mode 100644 index 0000000..b1b6a41 --- /dev/null +++ b/src/main/java/org/gyk/modules/lssj/yasuojishuju/controller/YasuojiBaojLssjController.java @@ -0,0 +1,192 @@ +package org.gyk.modules.lssj.yasuojishuju.controller; + + +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import io.swagger.annotations.Api; +import lombok.extern.slf4j.Slf4j; +import org.apache.poi.util.StringUtil; +import org.apache.poi.xwpf.usermodel.XWPFDocument; +import org.gyk.common.api.Result; +import org.gyk.modules.lssj.yasuojishuju.entity.CxcSssjYasuojiBjls; +import org.gyk.modules.lssj.yasuojishuju.mapper.YasuojBaojLssjMapper; +import org.gyk.modules.lssj.yasuojishuju.service.IYasuojiBaojLssjService; +import org.gyk.modules.sssj.controller.GykController; +import org.gyk.modules.sssj.util.sssjTools; +import org.gyk.modules.websocket.webSocket; +import org.jeecgframework.poi.word.WordExportUtil; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.util.Map; + +/** +* @Description: 报警历史记录 +* @Author: jeecg-boot +* @Date: 2021-03-17 +* @Version: V1.0 +*/ +@Api(tags="报警历史记录") +@CrossOrigin(origins = "*", maxAge = 3600) +@RestController +@RequestMapping("/YasuojBjlssj") +@Slf4j +public class YasuojiBaojLssjController extends GykController{ + @Autowired + private IYasuojiBaojLssjService yasuojiBaojLssjService; + @Autowired + private YasuojBaojLssjMapper yasuojBaojLssjMapper; + @Resource + private webSocket webSocket; + +// /** +// * 添加 +// * +// * @param cxcSssjYasuojiBjls +// * @return +// */ +// @AutoLog(value = "报警历史记录-添加") +// @ApiOperation(value="报警历史记录-添加", notes="报警历史记录-添加") +// @PostMapping(value = "/add") +// public Result add(@RequestBody CxcSssjYasuojiBjls cxcSssjYasuojiBjls) { +// yasuojiBaojLssjService.save(cxcSssjYasuojiBjls); +// return Result.ok("添加成功!"); +// } +// +// /** +// * 编辑 +// * +// * @param cxcSssjYasuojiBjls +// * @return +// */ +// @AutoLog(value = "报警历史记录-编辑") +// @ApiOperation(value="报警历史记录-编辑", notes="报警历史记录-编辑") +// @PutMapping(value = "/edit") +// public Result edit(@RequestBody CxcSssjYasuojiBjls cxcSssjYasuojiBjls) { +// yasuojiBaojLssjService.updateById(cxcSssjYasuojiBjls); +// return Result.ok("编辑成功!"); +// } +// +// /** +// * 通过id删除 +// * +// * @param id +// * @return +// */ +// @AutoLog(value = "报警历史记录-通过id删除") +// @ApiOperation(value="报警历史记录-通过id删除", notes="报警历史记录-通过id删除") +// @DeleteMapping(value = "/delete") +// public Result delete(@RequestParam(name="id",required=true) String id) { +// yasuojiBaojLssjService.removeById(id); +// return Result.ok("删除成功!"); +// } +// +// /** +// * 批量删除 +// * +// * @param ids +// * @return +// */ +// @AutoLog(value = "报警历史记录-批量删除") +// @ApiOperation(value="报警历史记录-批量删除", notes="报警历史记录-批量删除") +// @DeleteMapping(value = "/deleteBatch") +// public Result deleteBatch(@RequestParam(name="ids",required=true) String ids) { +// this.yasuojiBaojLssjService.removeByIds(Arrays.asList(ids.split(","))); +// return Result.ok("批量删除成功!"); +// } +// +// /** +// * 通过id查询 +// * +// * @param id +// * @return +// */ +// @AutoLog(value = "报警历史记录-通过id查询") +// @ApiOperation(value="报警历史记录-通过id查询", notes="报警历史记录-通过id查询") +// @GetMapping(value = "/queryById") +// public Result queryById(@RequestParam(name="id",required=true) String id) { +// CxcSssjYasuojiBjls cxcSssjYasuojiBjls = yasuojiBaojLssjService.getById(id); +// if(cxcSssjYasuojiBjls ==null) { +// return Result.error("未找到对应数据"); +// } +// return Result.ok(cxcSssjYasuojiBjls); +// } + +// @RequestMapping("/list") +// public IPage list() { +// LambdaQueryWrapper lmq = Wrappers.lambdaQuery(); +// lmq.between(CxcSssjYasuojiBjls::getBeginTime,"2023-08-21","2023-08-26"); +// lmq.eq(CxcSssjYasuojiBjls::getStationname,"文二联增压站"); +// lmq.eq(CxcSssjYasuojiBjls::getJizuhao,"一号机组"); +// +// IPage iPage = new Page<>(2,4); +// IPage list = yasuojBaojLssjMapper.selectPage(iPage,lmq); +// +// Map mapjldxx = sssjTools.getJldnameByJldid("文二联增压站","一号机组"); +// +// list.getRecords().forEach(item->{ +// item.setBjId(mapjldxx.get(item.getBjId())); +// }); +// +// log.info("total:"+list.getSize()+" "+list.getTotal()); +// +// return list; +// } + + @RequestMapping("/listByZcAndJzh") + public IPage listByZcAndJzh(@RequestParam(value = "pageNo") int pageNo,@RequestParam(value = "pageSize") int pageSize,@RequestParam(value = "zhanc") String zhanc,@RequestParam(value = "jzh") String jzh,@RequestParam(name = "startTime", required = false) String startTime, + @RequestParam(name = "endTime", required = false) String endTime) { + LambdaQueryWrapper lmq = Wrappers.lambdaQuery(); + lmq.between(CxcSssjYasuojiBjls::getBeginTime,startTime,endTime); + lmq.eq(CxcSssjYasuojiBjls::getStationname,zhanc); + lmq.eq(CxcSssjYasuojiBjls::getJizuhao,jzh); + lmq.orderByAsc(CxcSssjYasuojiBjls::getBeginTime); + + IPage iPage = new Page<>(pageNo,pageSize); + IPage list = yasuojBaojLssjMapper.selectPage(iPage,lmq); + + Map mapjldxx = sssjTools.getJldnameByJldid(zhanc,jzh); + + list.getRecords().forEach(item->{ + item.setBjId(mapjldxx.get(item.getBjId())); + }); + +// log.info("total:"+list.getSize()+" "+list.getTotal()); + + return list; + } + + @RequestMapping("/edit") + public Result edit(@RequestBody JSONObject params) { + String id = params.getString("id"); + if (id.isEmpty()||id==null) { + return Result.error("error"); + } + + LambdaUpdateWrapper lmq = new LambdaUpdateWrapper<>(); + lmq.set(CxcSssjYasuojiBjls::getZt,"2"); + lmq.eq(CxcSssjYasuojiBjls::getId,id); + yasuojiBaojLssjService.update(lmq); + + net.minidev.json.JSONObject bjWebSocket = new net.minidev.json.JSONObject(); + bjWebSocket.put("cmd", "ysjbj110");//业务类型 + bjWebSocket.put("msgId", "1002");//消息id + bjWebSocket.put("msgTxt", "压缩机报警数据改变!");//消息内容 + + try { + webSocket.sendAllMessage(bjWebSocket.toJSONString()); + } catch (Exception e) { + log.error("hi:" + e); + } + + return Result.ok("编辑成功!"); + } + +} diff --git a/src/main/java/org/gyk/modules/lssj/yasuojishuju/controller/YasuojiLssjController.java b/src/main/java/org/gyk/modules/lssj/yasuojishuju/controller/YasuojiLssjController.java new file mode 100644 index 0000000..3f74e75 --- /dev/null +++ b/src/main/java/org/gyk/modules/lssj/yasuojishuju/controller/YasuojiLssjController.java @@ -0,0 +1,309 @@ +package org.gyk.modules.lssj.yasuojishuju.controller; + + +import com.alibaba.excel.EasyExcel; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import io.swagger.annotations.Api; +import lombok.extern.slf4j.Slf4j; +import org.apache.poi.ss.formula.functions.T; +import org.gyk.modules.lssj.yasuojishuju.entity.CxcSssjYasuoji; +import org.gyk.modules.lssj.yasuojishuju.mapper.YasuojiMapper; +import org.gyk.modules.lssj.yasuojishuju.service.IYasuojiLssjService; +import org.gyk.modules.sssj.controller.GykController; +import org.gyk.modules.sssj.util.sssjTools; +import org.gyk.modules.sz.jldxx.entity.CxcSssjSzJldxx; +import org.gyk.modules.sz.jldxx.mapper.CxcSssjSzJldxxMapper; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.net.URLEncoder; +import java.text.DecimalFormat; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** +* @Description: 报警历史记录 +* @Author: jeecg-boot +* @Date: 2021-03-17 +* @Version: V1.0 +*/ +@Api(tags="报警历史记录") +@RestController +@RequestMapping("/Yasuojlssj") +@Slf4j +public class YasuojiLssjController extends GykController{ + @Autowired + private IYasuojiLssjService yasuojiLssjService; + @Autowired(required = false) + private YasuojiMapper yasuojiMapper; + @Autowired(required = false) + private CxcSssjSzJldxxMapper cxcSssjSzJldxxMapper; + +// /** +// * 添加 +// * +// * @param cxcSssjYasuojiBjls +// * @return +// */ +// @AutoLog(value = "报警历史记录-添加") +// @ApiOperation(value="报警历史记录-添加", notes="报警历史记录-添加") +// @PostMapping(value = "/add") +// public Result add(@RequestBody CxcSssjYasuojiBjls cxcSssjYasuojiBjls) { +// yasuojiBaojLssjService.save(cxcSssjYasuojiBjls); +// return Result.ok("添加成功!"); +// } +// +// /** +// * 编辑 +// * +// * @param cxcSssjYasuojiBjls +// * @return +// */ +// @AutoLog(value = "报警历史记录-编辑") +// @ApiOperation(value="报警历史记录-编辑", notes="报警历史记录-编辑") +// @PutMapping(value = "/edit") +// public Result edit(@RequestBody CxcSssjYasuojiBjls cxcSssjYasuojiBjls) { +// yasuojiBaojLssjService.updateById(cxcSssjYasuojiBjls); +// return Result.ok("编辑成功!"); +// } +// +// /** +// * 通过id删除 +// * +// * @param id +// * @return +// */ +// @AutoLog(value = "报警历史记录-通过id删除") +// @ApiOperation(value="报警历史记录-通过id删除", notes="报警历史记录-通过id删除") +// @DeleteMapping(value = "/delete") +// public Result delete(@RequestParam(name="id",required=true) String id) { +// yasuojiBaojLssjService.removeById(id); +// return Result.ok("删除成功!"); +// } +// +// /** +// * 批量删除 +// * +// * @param ids +// * @return +// */ +// @AutoLog(value = "报警历史记录-批量删除") +// @ApiOperation(value="报警历史记录-批量删除", notes="报警历史记录-批量删除") +// @DeleteMapping(value = "/deleteBatch") +// public Result deleteBatch(@RequestParam(name="ids",required=true) String ids) { +// this.yasuojiBaojLssjService.removeByIds(Arrays.asList(ids.split(","))); +// return Result.ok("批量删除成功!"); +// } + +// /** +// * 通过id查询 +// * +// * @param id +// * @return +// */ +// @AutoLog(value = "报警历史记录-通过id查询") +// @ApiOperation(value="报警历史记录-通过id查询", notes="报警历史记录-通过id查询") +// @GetMapping(value = "/queryById") +// public Result queryById(@RequestParam(name="id",required=true) String id) { +// CxcSssjYasuojiBjls cxcSssjYasuojiBjls = yasuojiBaojLssjService.getById(id); +// if(cxcSssjYasuojiBjls ==null) { +// return Result.error("未找到对应数据"); +// } +// return Result.ok(cxcSssjYasuojiBjls); +// } + + @RequestMapping("/listByZcAndJzh") + public IPage> listByZcAndJzh(@RequestParam(value = "pageNo") int pageNo, @RequestParam(value = "pageSize") int pageSize, @RequestParam(value = "zhanc") String zhanc, @RequestParam(value = "jzh") String jzh, @RequestParam(name = "startTime", required = false) String startTime, + @RequestParam(name = "endTime", required = false) String endTime) { + DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); + + List> listsj=new ArrayList<>(); + + LambdaQueryWrapper lmq = Wrappers.lambdaQuery(); + lmq.between(CxcSssjYasuoji::getRq,startTime,endTime); + lmq.eq(CxcSssjYasuoji::getStationName,zhanc); + lmq.eq(CxcSssjYasuoji::getJizuHao,jzh); + lmq.orderByAsc(CxcSssjYasuoji::getRq); + + IPage iPage = new Page<>(pageNo,pageSize); + IPage list = yasuojiMapper.selectPage(iPage,lmq); + + if (list.getRecords().size()>0) { + list.getRecords().forEach(item->{ + String shuju = item.getShuju(); + Map mapshuju = sssjTools.splitStringToMap(shuju); + mapshuju.put("日期",item.getRq().format(df)); + + listsj.add(mapshuju); + + }); + } + + IPage> page = new Page<>(pageNo,pageSize); + page.setRecords(listsj); + page.setTotal(list.getTotal()); + + return page; + } + + @RequestMapping("/getByZcAndJzh") + public Map> getByZcAndJzh( @RequestParam(value = "zhanc") String zhanc, @RequestParam(value = "jzh") String jzh,@RequestParam(value = "csname") String csname) { + DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); + DateTimeFormatter df2 = DateTimeFormatter.ofPattern("HH:mm:ss"); + DecimalFormat fnum = new DecimalFormat( "##0.00"); + LocalDateTime endTime = LocalDateTime.now(); + LocalDateTime startTime = endTime.plusHours(-8); + + List listrq=new ArrayList<>(); + List listsj=new ArrayList<>(); + + LambdaQueryWrapper qw =new LambdaQueryWrapper<>(); + qw.eq(CxcSssjSzJldxx::getStationId,zhanc); + qw.eq(CxcSssjSzJldxx::getJldlx,4); + List cxcSssjSzJldxx = cxcSssjSzJldxxMapper.selectList(qw); + if (cxcSssjSzJldxx.size()>0 ) { + String zhancname = cxcSssjSzJldxx.get(0).getStationName(); + +// log.info("zhanc:"+cxcSssjSzJldxx.get(0).getStationName()+ " jzh:"+jzh); + + LambdaQueryWrapper lmq = Wrappers.lambdaQuery(); + lmq.between(CxcSssjYasuoji::getRq,startTime.format(df),endTime.format(df)); + lmq.eq(CxcSssjYasuoji::getStationName,zhancname); + lmq.eq(CxcSssjYasuoji::getJizuHao,jzh); + lmq.orderByAsc(CxcSssjYasuoji::getRq); + + List list = yasuojiMapper.selectList(lmq); + + if (list.size()>0) { + list.forEach(item->{ + String shuju = item.getShuju(); + Map mapshuju = sssjTools.splitStringToMap(shuju); +// mapshuju.put("日期",item.getRq().format(df)); + + listrq.add(item.getRq().format(df2)); + float ls = Float.parseFloat(mapshuju.get(csname)); +// String tmp = fnum.format(ls); +// log.info("hi:"+tmp); + listsj.add(fnum.format(ls)); + }); + } + } + + Map> map = new HashMap<>(); + map.put("rq",listrq); + map.put("shuju",listsj); + + return map; + } + + /** + * 导出Excel-动态头写入 + * + * @param response response + */ + @GetMapping("/Export") + public void dynamicHeadExport(HttpServletResponse response,@RequestParam(value = "zhanc") String zhanc, @RequestParam(value = "jzh") String jzh, @RequestParam(name = "startTime", required = false) String startTime, + @RequestParam(name = "endTime", required = false) String endTime) throws IOException { + DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); + DecimalFormat fnum = new DecimalFormat( "##0.0000"); + +// log.info("hi:"+jzh); + + // 设置动态头 + List> headList = new ArrayList<>(); + List head = sssjTools.getYasuojshujuBt(zhanc,jzh).get("title"); + List headbt = new ArrayList<>(); + head.forEach(item->{ + List bt = new ArrayList<>(); + String ls = item.replace("*",""); + bt.add(ls); + headbt.add(ls); + headList.add(bt); + }); + /* 简单的添加标题示例 ********************** + List head0 = new ArrayList<>(); + head0.add("个人信息"); + head0.add("用户名"); + List head1 = new ArrayList<>(); + head1.add("个人信息"); + head1.add("年龄"); + List head2 = new ArrayList<>(); + head2.add("个人信息"); + head2.add("地址"); + headList.add(head0); + headList.add(head1); + headList.add(head2); + + */ + + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.between(CxcSssjYasuoji::getRq, startTime,endTime); + queryWrapper.eq(CxcSssjYasuoji::getStationName,zhanc); + queryWrapper.eq(CxcSssjYasuoji::getJizuHao,jzh); + queryWrapper.orderByAsc(CxcSssjYasuoji::getRq); + List list = yasuojiLssjService.list(queryWrapper); + +// List ysjxx=sssjTools.ysjGykbz; +// Map getidbyname = new HashMap<>(); +// ysjxx.forEach(item->{ +// String[] tmpstr = item.getJldName().split("\\*"); +// if (tmpstr[1].equals("四号机组") && item.getStationName().equals("文二联增压站")) { +// getidbyname.put(tmpstr[2],item.getGykbz()); +// } +// }); + + // 获取动态数据 + List> dataList = new ArrayList<>(); + +// Map mapdata = new HashMap<>(); + list.forEach(item->{ + String shuju = item.getShuju(); + Map mapshuju = sssjTools.splitStringToMap(shuju); +// mapshuju.forEach((k,v)->{ +// mapdata.put(k+item.getRq(),v); +// }); + List data = new ArrayList<>(); + for(int i=0;i { +// IPage selectPage(Page page); +} diff --git a/src/main/java/org/gyk/modules/lssj/yasuojishuju/mapper/YasuojiMapper.java b/src/main/java/org/gyk/modules/lssj/yasuojishuju/mapper/YasuojiMapper.java new file mode 100644 index 0000000..e76de09 --- /dev/null +++ b/src/main/java/org/gyk/modules/lssj/yasuojishuju/mapper/YasuojiMapper.java @@ -0,0 +1,20 @@ +package org.gyk.modules.lssj.yasuojishuju.mapper; + +import com.baomidou.dynamic.datasource.annotation.DS; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; +import org.gyk.modules.lssj.yasuojishuju.entity.CxcSssjYasuoji; +//import com.baomidou.mybatisplus.core.mapper.BaseMapper; +//import org.apache.ibatis.annotations.Mapper; + +/** + * @Description: 报警历史记录 + * @Author: jeecg-boot + * @Date: 2021-03-17 + * @Version: V1.0 + */ +@Mapper +@DS("slave") +public interface YasuojiMapper extends BaseMapper { +// IPage selectPage(Page page); +} diff --git a/src/main/java/org/gyk/modules/lssj/yasuojishuju/mapper/xml/YasuojiBaojLssjMapper.xml b/src/main/java/org/gyk/modules/lssj/yasuojishuju/mapper/xml/YasuojiBaojLssjMapper.xml new file mode 100644 index 0000000..2e03289 --- /dev/null +++ b/src/main/java/org/gyk/modules/lssj/yasuojishuju/mapper/xml/YasuojiBaojLssjMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/src/main/java/org/gyk/modules/lssj/yasuojishuju/mapper/xml/YasuojiMapper.xml b/src/main/java/org/gyk/modules/lssj/yasuojishuju/mapper/xml/YasuojiMapper.xml new file mode 100644 index 0000000..8860dcf --- /dev/null +++ b/src/main/java/org/gyk/modules/lssj/yasuojishuju/mapper/xml/YasuojiMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/src/main/java/org/gyk/modules/lssj/yasuojishuju/service/IYasuojiBaojLssjService.java b/src/main/java/org/gyk/modules/lssj/yasuojishuju/service/IYasuojiBaojLssjService.java new file mode 100644 index 0000000..e738c5e --- /dev/null +++ b/src/main/java/org/gyk/modules/lssj/yasuojishuju/service/IYasuojiBaojLssjService.java @@ -0,0 +1,14 @@ +package org.gyk.modules.lssj.yasuojishuju.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import org.gyk.modules.lssj.yasuojishuju.entity.CxcSssjYasuojiBjls; + +/** + * @Description: 报警历史记录 + * @Author: jeecg-boot + * @Date: 2021-03-17 + * @Version: V1.0 + */ +public interface IYasuojiBaojLssjService extends IService { +// public IPage selectPage(Page page); +} diff --git a/src/main/java/org/gyk/modules/lssj/yasuojishuju/service/IYasuojiLssjService.java b/src/main/java/org/gyk/modules/lssj/yasuojishuju/service/IYasuojiLssjService.java new file mode 100644 index 0000000..54f302e --- /dev/null +++ b/src/main/java/org/gyk/modules/lssj/yasuojishuju/service/IYasuojiLssjService.java @@ -0,0 +1,14 @@ +package org.gyk.modules.lssj.yasuojishuju.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import org.gyk.modules.lssj.yasuojishuju.entity.CxcSssjYasuoji; + +/** + * @Description: 报警历史记录 + * @Author: jeecg-boot + * @Date: 2021-03-17 + * @Version: V1.0 + */ +public interface IYasuojiLssjService extends IService { +// public IPage selectPage(Page page); +} diff --git a/src/main/java/org/gyk/modules/lssj/yasuojishuju/service/impl/YasuojiBaojLssjServiceImpl.java b/src/main/java/org/gyk/modules/lssj/yasuojishuju/service/impl/YasuojiBaojLssjServiceImpl.java new file mode 100644 index 0000000..5a107b8 --- /dev/null +++ b/src/main/java/org/gyk/modules/lssj/yasuojishuju/service/impl/YasuojiBaojLssjServiceImpl.java @@ -0,0 +1,22 @@ +package org.gyk.modules.lssj.yasuojishuju.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.gyk.modules.lssj.yasuojishuju.entity.CxcSssjYasuojiBjls; +import org.gyk.modules.lssj.yasuojishuju.mapper.YasuojBaojLssjMapper; +import org.gyk.modules.lssj.yasuojishuju.service.IYasuojiBaojLssjService; +import org.springframework.stereotype.Service; +/** + * @Description: 报警历史记录 + * @Author: jeecg-boot + * @Date: 2021-03-17 + * @Version: V1.0 + */ +@Service + +public class YasuojiBaojLssjServiceImpl extends ServiceImpl implements IYasuojiBaojLssjService { +// @Override +// public IPage selectPage(Page page) { +// return baseMapper. +// } + +} diff --git a/src/main/java/org/gyk/modules/lssj/yasuojishuju/service/impl/YasuojiLssjServiceImpl.java b/src/main/java/org/gyk/modules/lssj/yasuojishuju/service/impl/YasuojiLssjServiceImpl.java new file mode 100644 index 0000000..2c91ff1 --- /dev/null +++ b/src/main/java/org/gyk/modules/lssj/yasuojishuju/service/impl/YasuojiLssjServiceImpl.java @@ -0,0 +1,18 @@ +package org.gyk.modules.lssj.yasuojishuju.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.gyk.modules.lssj.yasuojishuju.entity.CxcSssjYasuoji; +import org.gyk.modules.lssj.yasuojishuju.mapper.YasuojiMapper; +import org.gyk.modules.lssj.yasuojishuju.service.IYasuojiLssjService; +import org.springframework.stereotype.Service; + +/** + * @Description: 报警历史记录 + * @Author: jeecg-boot + * @Date: 2021-03-17 + * @Version: V1.0 + */ +@Service +public class YasuojiLssjServiceImpl extends ServiceImpl implements IYasuojiLssjService { + +} diff --git a/src/main/java/org/gyk/modules/modbus/serialPort/SerialInputStream.java b/src/main/java/org/gyk/modules/modbus/serialPort/SerialInputStream.java new file mode 100644 index 0000000..f5a9f23 --- /dev/null +++ b/src/main/java/org/gyk/modules/modbus/serialPort/SerialInputStream.java @@ -0,0 +1,214 @@ +package org.gyk.modules.modbus.serialPort; + +import jssc.SerialPort; + +import java.io.IOException; +import java.io.InputStream; + +/** + * Class that wraps a {@link SerialPort} to provide {@link InputStream} + * functionality. This stream also provides support for performing blocking + * reads with timeouts. + *
+ * It is instantiated by passing the constructor a {@link SerialPort} instance. + * Do not create multiple streams for the same serial port unless you implement + * your own synchronization. + * + * @author Charles Hache + * + * Attribution: https://github.com/therealchalz/java-simple-serial-connector + * + */ +public class SerialInputStream extends InputStream { + + private SerialPort serialPort; + private int defaultTimeout = 0; + + /** + * Instantiates a SerialInputStream for the given {@link SerialPort} Do not + * create multiple streams for the same serial port unless you implement + * your own synchronization. + * + * @param sp The serial port to stream. + */ + public SerialInputStream(SerialPort sp) { + serialPort = sp; + } + + /** + * Set the default timeout (ms) of this SerialInputStream. This affects + * subsequent calls to {@link #read()}, {@link #(int[])}, and + * {@link #(int[], int, int)} The default timeout can be 'unset' + * by setting it to 0. + * + * @param time The timeout in milliseconds. + */ + public void setTimeout(int time) { + defaultTimeout = time; + } + + /** + * Reads the next byte from the port. If the timeout of this stream has been + * set, then this method blocks until data is available or until the timeout + * has been hit. If the timeout is not set or has been set to 0, then this + * method blocks indefinitely. + */ + @Override + public int read() throws IOException { + return read(defaultTimeout); + } + + /** + * The same contract as {@link #read()}, except overrides this stream's + * default timeout with the given timeout in milliseconds. + * + * @param timeout The timeout in milliseconds. + * @return The read byte. + * @throws IOException On serial port error or timeout + */ + public int read(int timeout) throws IOException { + byte[] buf = new byte[1]; + try { + if (timeout > 0) { + buf = serialPort.readBytes(1, timeout); + } else { + buf = serialPort.readBytes(1); + } + return buf[0]; + } catch (Exception e) { + throw new IOException(e); + } + } + + /** + * Non-blocking read of up to buf.length bytes from the stream. This call + * behaves as read(buf, 0, buf.length) would. + * + * @param buf The buffer to fill. + * @return The number of bytes read, which can be 0. + * @throws IOException on error. + */ + @Override + public int read(byte[] buf) throws IOException { + return read(buf, 0, buf.length); + } + + /** + * Non-blocking read of up to length bytes from the stream. This method + * returns what is immediately available in the input buffer. + * + * @param buf The buffer to fill. + * @param offset The offset into the buffer to start copying data. + * @param length The maximum number of bytes to read. + * @return The actual number of bytes read, which can be 0. + * @throws IOException on error. + */ + @Override + public int read(byte[] buf, int offset, int length) throws IOException { + + if (buf.length < offset + length) { + length = buf.length - offset; + } + + int available = this.available(); + + if (available > length) { + available = length; + } + + try { + byte[] readBuf = serialPort.readBytes(available); +// System.arraycopy(readBuf, 0, buf, offset, length); + System.arraycopy(readBuf, 0, buf, offset, readBuf.length); + return readBuf.length; + } catch (Exception e) { + throw new IOException(e); + } + } + + /** + * Blocks until buf.length bytes are read, an error occurs, or the default + * timeout is hit (if specified). This behaves as blockingRead(buf, 0, + * buf.length) would. + * + * @param buf The buffer to fill with data. + * @return The number of bytes read. + * @throws IOException On error or timeout. + */ + public int blockingRead(byte[] buf) throws IOException { + return blockingRead(buf, 0, buf.length, defaultTimeout); + } + + /** + * The same contract as {@link #blockingRead(byte[])} except overrides this + * stream's default timeout with the given one. + * + * @param buf The buffer to fill. + * @param timeout The timeout in milliseconds. + * @return The number of bytes read. + * @throws IOException On error or timeout. + */ + public int blockingRead(byte[] buf, int timeout) throws IOException { + return blockingRead(buf, 0, buf.length, timeout); + } + + /** + * Blocks until length bytes are read, an error occurs, or the default + * timeout is hit (if specified). Saves the data into the given buffer at + * the specified offset. If the stream's timeout is not set, behaves as + * {@link #read(byte[], int, int)} would. + * + * @param buf The buffer to fill. + * @param offset The offset in buffer to save the data. + * @param length The number of bytes to read. + * @return the number of bytes read. + * @throws IOException on error or timeout. + */ + public int blockingRead(byte[] buf, int offset, int length) throws IOException { + return blockingRead(buf, offset, length, defaultTimeout); + } + + /** + * The same contract as {@link #blockingRead(byte[], int, int)} except + * overrides this stream's default timeout with the given one. + * + * @param buf The buffer to fill. + * @param offset Offset in the buffer to start saving data. + * @param length The number of bytes to read. + * @param timeout The timeout in milliseconds. + * @return The number of bytes read. + * @throws IOException On error or timeout. + */ + public int blockingRead(byte[] buf, int offset, int length, int timeout) throws IOException { + if (buf.length < offset + length) { + throw new IOException("Not enough buffer space for serial data"); + } + + if (timeout < 1) { + return read(buf, offset, length); + } + + try { + byte[] readBuf = serialPort.readBytes(length, timeout); + System.arraycopy(readBuf, 0, buf, offset, length); + return readBuf.length; + } catch (Exception e) { + throw new IOException(e); + } + } + + @Override + public int available() throws IOException { + int ret; + try { + ret = serialPort.getInputBufferBytesCount(); + if (ret >= 0) { + return ret; + } + throw new IOException("Error checking available bytes from the serial port."); + } catch (Exception e) { + throw new IOException("Error checking available bytes from the serial port."+e.getMessage()); + } + } + +} diff --git a/src/main/java/org/gyk/modules/modbus/serialPort/SerialOutputStream.java b/src/main/java/org/gyk/modules/modbus/serialPort/SerialOutputStream.java new file mode 100644 index 0000000..02527b8 --- /dev/null +++ b/src/main/java/org/gyk/modules/modbus/serialPort/SerialOutputStream.java @@ -0,0 +1,62 @@ +package org.gyk.modules.modbus.serialPort; + +import jssc.SerialPort; +import jssc.SerialPortException; + +import java.io.IOException; +import java.io.OutputStream; + +/** + * Class that wraps a {@link SerialPort} to provide {@link OutputStream} + * functionality. + *
+ * It is instantiated by passing the constructor a {@link SerialPort} instance. + * Do not create multiple streams for the same serial port unless you implement + * your own synchronization. + * + * @author Charles Hache + * + * Attribution: https://github.com/therealchalz/java-simple-serial-connector + * + */ +public class SerialOutputStream extends OutputStream { + + SerialPort serialPort; + + /** + * Instantiates a SerialOutputStream for the given {@link SerialPort} Do not + * create multiple streams for the same serial port unless you implement + * your own synchronization. + * + * @param sp The serial port to stream. + */ + public SerialOutputStream(SerialPort sp) { + serialPort = sp; + } + + @Override + public void write(int b) throws IOException { + try { + serialPort.writeInt(b); + } catch (SerialPortException e) { + throw new IOException(e); + } + } + + @Override + public void write(byte[] b) throws IOException { + write(b, 0, b.length); + + } + + @Override + public void write(byte[] b, int off, int len) throws IOException { + byte[] buffer = new byte[len]; + System.arraycopy(b, off, buffer, 0, len); + try { + serialPort.writeBytes(buffer); + } catch (SerialPortException e) { + throw new IOException(e); + } + } +} diff --git a/src/main/java/org/gyk/modules/modbus/serialPort/SerialPortWrapperImpl.java b/src/main/java/org/gyk/modules/modbus/serialPort/SerialPortWrapperImpl.java new file mode 100644 index 0000000..9a5742f --- /dev/null +++ b/src/main/java/org/gyk/modules/modbus/serialPort/SerialPortWrapperImpl.java @@ -0,0 +1,106 @@ +package org.gyk.modules.modbus.serialPort; + +import com.serotonin.modbus4j.serial.SerialPortWrapper; +import jssc.SerialPort; +import jssc.SerialPortException; + +import java.io.InputStream; +import java.io.OutputStream; + +/** + * + */ +public class SerialPortWrapperImpl implements SerialPortWrapper { + +// private static final Logger LOG = LoggerFactory.getLogger(SerialPortWrapperImpl.class); + private SerialPort port; + private String commPortId; + private int baudRate; + private int dataBits; + private int stopBits; + private int parity; + private int flowControlIn; + private int flowControlOut; + + public SerialPortWrapperImpl(String commPortId, int baudRate, int dataBits, int stopBits, int parity, int flowControlIn, + int flowControlOut) { + + this.commPortId = commPortId; + this.baudRate = baudRate; + this.dataBits = dataBits; + this.stopBits = stopBits; + this.parity = parity; + this.flowControlIn = flowControlIn; + this.flowControlOut = flowControlOut; + + port = new SerialPort(this.commPortId); + + } + + @Override + public void close() throws Exception { + port.closePort(); + //listeners.forEach(PortConnectionListener::closed); +// LOG.debug("Serial port {} closed", port.getPortName()); + } + + @Override + public void open() { + try { + port.openPort(); + port.setParams(this.getBaudRate(), this.getDataBits(), this.getStopBits(), this.getParity()); + port.setFlowControlMode(this.getFlowControlIn() | this.getFlowControlOut()); + + //listeners.forEach(PortConnectionListener::opened); +// LOG.debug("Serial port {} opened", port.getPortName()); + } catch (SerialPortException ex) { +// LOG.error("Error opening port : {} for {} ", port.getPortName(), ex); + } + } + + @Override + public InputStream getInputStream() { + return new SerialInputStream(port); + } + + @Override + public OutputStream getOutputStream() { + return new SerialOutputStream(port); + } + + @Override + public int getBaudRate() { + return baudRate; + //return SerialPort.BAUDRATE_9600; + } + + @Override + public int getFlowControlIn() { + return flowControlIn; + //return SerialPort.FLOWCONTROL_NONE; + } + + @Override + public int getFlowControlOut() { + return flowControlOut; + //return SerialPort.FLOWCONTROL_NONE; + } + + @Override + public int getDataBits() { + return dataBits; + //return SerialPort.DATABITS_8; + } + + @Override + public int getStopBits() { + return stopBits; + //return SerialPort.STOPBITS_1; + } + + @Override + public int getParity() { + return parity; + //return SerialPort.PARITY_NONE; + } +} diff --git a/src/main/java/org/gyk/modules/modbus/utils/ModbusTools.java b/src/main/java/org/gyk/modules/modbus/utils/ModbusTools.java new file mode 100644 index 0000000..972289b --- /dev/null +++ b/src/main/java/org/gyk/modules/modbus/utils/ModbusTools.java @@ -0,0 +1,219 @@ +//package org.gyk.modules.sssj.util; +// +//import com.serotonin.io.serial.SerialParameters; +//import com.serotonin.modbus4j.ModbusFactory; +//import com.serotonin.modbus4j.ModbusMaster; +//import com.serotonin.modbus4j.code.DataType; +//import com.serotonin.modbus4j.exception.ErrorResponseException; +//import com.serotonin.modbus4j.exception.ModbusInitException; +//import com.serotonin.modbus4j.exception.ModbusTransportException; +//import com.serotonin.modbus4j.ip.IpParameters; +//import com.serotonin.modbus4j.msg.*; +//import com.serotonin.modbus4j.locator.BaseLocator; +//import com.serotonin.util.queue.ByteQueue; +//import org.gyk.modules.sssj.entity.JldPar; +// +//import java.math.BigInteger; +//import java.time.LocalDateTime; +//import java.util.ArrayList; +//import java.util.Arrays; +//import java.util.List; +///** +// * @Description: MODBUS通讯数据获取 +// * @Author: liao +// * @Date: 2021-04-05 +// * @Version: V1.0 +// */ +// +//public class ModbusTools { +// +// public static String getComData() { +// +// /* 创建ModbusFactory实例 */ +// ModbusFactory modbusFactory = new ModbusFactory(); +// //创建Com参数 +// SerialParameters serialParameters = new SerialParameters(); +// +// /* 设定MODBUS通讯的串行口 */ +// serialParameters.setCommPortId("COM1"); +// /* 设定成无奇偶校验 */ +// serialParameters.setParity(0); +// /* 设定成数据位是8位 */ +// serialParameters.setDataBits(8); +// /* 设定为1个停止位 */ +// serialParameters.setStopBits(1); +// /* 设定端口名称 */ +// serialParameters.setPortOwnerName("COM1"); +// /* 设定端口波特率 */ +// serialParameters.setBaudRate(9600); +// +// /* 创建ModbusMaster实例 */ +// ModbusMaster master = modbusFactory.createRtuMaster(serialParameters); +// /* 初始化 */ +// try { +// master.init(); +// System.out.println("======PLC通讯初始化成功======="); +// } catch (ModbusInitException e) { +// System.out.println("======PLC通讯初始化异常======="); +// } +// ModbusRequest modbusRequest = null; +// //读取寄存器的值 +// try { +// //PLC读取参数 通过站内部计量点ID号读取,30个参数,60个地址 240个寄存器 +// modbusRequest = new ReadHoldingRegistersRequest(1, 1, 60); +// } catch (ModbusTransportException e) { +// e.printStackTrace(); +// } +// ModbusResponse modbusResponse = null; +// try { +// //向现场的PLC发送读取请求 +// modbusResponse = master.send(modbusRequest); +// } catch (ModbusTransportException e) { +// e.printStackTrace(); +// } +// // 定义存放读取的寄存器数据的变量 类型未知 需要现场调试 +// ByteQueue byteQueue = new ByteQueue(60); +// modbusResponse.write(byteQueue); +// return ""; +// } +// +// /** +// * 读保持寄存器上的内容 +// * +// * @param master 主站 +// * @param slaveId 从站地址 +// * @param start 起始地址的偏移量 +// * @param len 待读寄存器的个数 +// */ +// private static void readHoldingRegistersTest(ModbusMaster master, int slaveId, int start, int len) { +// try { +// ReadHoldingRegistersRequest request = new ReadHoldingRegistersRequest(slaveId, start, len); +// ReadHoldingRegistersResponse response = (ReadHoldingRegistersResponse) master.send(request); +// if (response.isException()) { +// System.out.println("异常消息:" + response.getExceptionMessage()); +// } else { +// System.out.println(Arrays.toString(response.getShortData())); +// short[] list = response.getShortData(); +// for (int i = 0; i < list.length; i++) { +// System.out.print(list[i] + " "); +// } +// } +// } catch (ModbusTransportException e) { +// e.printStackTrace(); +// } +// } +// +// public static List getPar(String Ip, Integer port, Integer jldNo) { +// /* 创建ModbusFactory实例 */ +// ModbusFactory modbusFactory = new ModbusFactory(); +// //创建Tcp IP参数 +// IpParameters ipParameters = new IpParameters(); +// ipParameters.setHost(Ip); +// +// /* 创建ModbusMaster实例 */ +// ModbusMaster master = modbusFactory.createTcpMaster(ipParameters, true); +// /* 初始化 */ +// try { +// master.init(); +// System.out.println("======PLC通讯初始化成功======="); +// } catch (ModbusInitException e) { +// System.out.println("======PLC通讯初始化异常======="); +// } +// ModbusRequest modbusRequest = null; +// //读取寄存器的值 +// try { +// //PLC读取参数 通过站内部计量点ID号读取,30个参数,60个地址, 240个寄存器, 24360 PLC中参数起始地址 +// modbusRequest = new ReadHoldingRegistersRequest(1, 24360 + 240 * jldNo, 60); +// } catch (ModbusTransportException e) { +// e.printStackTrace(); +// } +// ModbusResponse modbusResponse = null; +// try { +// //向现场的PLC发送读取请求 +// modbusResponse = master.send(modbusRequest); +// } catch (ModbusTransportException e) { +// e.printStackTrace(); +// } +// // 定义存放读取的寄存器数据的变量 类型未知 需要现场调试 +// ByteQueue byteQueue = new ByteQueue(60); +// modbusResponse.write(byteQueue); +// List listPar = tranData(byteQueue); +// return listPar; +// } +// +// +// private static List tranData(ByteQueue byteQueue) { +// List listPar = new ArrayList<>(); +// +// String[] tempWord; +// tempWord = new String[120]; +// for (int j = 0; j < 120; j++) { +// tempWord[j] = String.format("%02x", byteQueue.peek(j+3)); +// } +// +// String [] strWord=new String[60]; +// for (int j = 0; j < 60; j++) { +// strWord[j] = tempWord[j*2]+tempWord[j*2+1]; +// } +// +// +// String[] sngPar = new String[30]; +// +// for (int j = 0; j < 30; j++) { +// if (j <= 21) { +// sngPar[j] = String.valueOf(getFloat(strWord[j * 2 + 1] + strWord[j * 2])); +// } else { +// sngPar[j] = String.valueOf(getFloat(strWord[j * 2 + 1] + strWord[j * 2])); +// } +// } +// +// JldPar jldPar = new JldPar(); +// jldPar.setReadTime(LocalDateTime.now().toString()); +// jldPar.setCH4(sngPar[0]); +// jldPar.setN2(sngPar[1]); +// jldPar.setCO2(sngPar[2]); +// jldPar.setC2H6(sngPar[3]); +// jldPar.setC3H8(sngPar[4]); +// jldPar.setH2O(sngPar[5]); +// jldPar.setH2S(sngPar[6]); +// jldPar.setH2(sngPar[7]); +// jldPar.setCO(sngPar[8]); +// jldPar.setO2(sngPar[9]); +// jldPar.setI_C4H10(sngPar[10]); +// jldPar.setN_C4H10(sngPar[11]); +// jldPar.setI_C5H12(sngPar[12]); +// jldPar.setN_C5H12(sngPar[13]); +// jldPar.setN_C6H14(sngPar[14]); +// jldPar.setN_C7H16(sngPar[15]); +// jldPar.setN_C8H18(sngPar[16]); +// jldPar.setN_C9H20(sngPar[17]); +// jldPar.setN_C10H22(sngPar[18]); +// jldPar.setHe(sngPar[19]); +// jldPar.setAr(sngPar[20]); +// jldPar.setBak(sngPar[21]); +// jldPar.setGJ(sngPar[22]); +// jldPar.setKJ(sngPar[23]); +// jldPar.setGr(sngPar[24]); +// jldPar.setDLND(sngPar[25]); +// jldPar.setDSZS(sngPar[26]); +// jldPar.setBAK1(sngPar[27]); +// jldPar.setBAK2(sngPar[28]); +// jldPar.setBAK3("读取成功"); +// +// listPar.add(jldPar); +// return listPar; +// } +// +// private static float getFloat(String _strData) { +// float f = Float.intBitsToFloat(new BigInteger(_strData,16).intValue()); +// return f; +// } +// +// +// +//// public static int getInt(byte[] bytes) { +//// return (0xff & bytes[0]) | (0xff00 & (bytes[1] << 8)) | (0xff0000 & (bytes[2] << 16)) | (0xff000000 & (bytes[3] << 24)); +//// } +// +// +//} diff --git a/src/main/java/org/gyk/modules/modbus/utils/modBusUtils.java b/src/main/java/org/gyk/modules/modbus/utils/modBusUtils.java new file mode 100644 index 0000000..4b9104a --- /dev/null +++ b/src/main/java/org/gyk/modules/modbus/utils/modBusUtils.java @@ -0,0 +1,670 @@ +package org.gyk.modules.modbus.utils; + +import com.serotonin.modbus4j.BatchRead; +import com.serotonin.modbus4j.BatchResults; +import com.serotonin.modbus4j.ModbusFactory; +import com.serotonin.modbus4j.ModbusMaster; +import com.serotonin.modbus4j.code.DataType; +import com.serotonin.modbus4j.exception.ErrorResponseException; +import com.serotonin.modbus4j.exception.ModbusInitException; +import com.serotonin.modbus4j.exception.ModbusTransportException; +import com.serotonin.modbus4j.ip.IpParameters; +import com.serotonin.modbus4j.locator.BaseLocator; +import com.serotonin.modbus4j.msg.*; +import jssc.SerialPort; +import lombok.extern.slf4j.Slf4j; +import org.gyk.modules.modbus.serialPort.SerialPortWrapperImpl; + +import java.nio.ByteBuffer; +import java.nio.ByteOrder; + + +/** + * modbus-tcp的工具类 + * + * jiang,20231012 + */ +@Slf4j +public class modBusUtils { + + /** + * 工厂。 + */ + static ModbusFactory modbusFactory; + + static { + if (modbusFactory == null) { + modbusFactory = new ModbusFactory(); + } + } + + /** + * 获取master + * + * @throws ModbusInitException + */ + public static ModbusMaster getMaster(String host, int port) { + + IpParameters params = new IpParameters(); + params.setHost(host); + params.setPort(port); + // modbusFactory.createRtuMaster(wapper); //RTU 协议 + // modbusFactory.createUdpMaster(params);//UDP 协议 + // modbusFactory.createAsciiMaster(wrapper);//ASCII 协议 + ModbusMaster master = modbusFactory.createTcpMaster(params, false);// TCP 协议 + try { + master.init(); + } catch (ModbusInitException e) { + e.printStackTrace(); + } + + + return master; + } + + public static ModbusMaster getRtuIpMaster(String host, int port) { + IpParameters params = new IpParameters(); + params.setHost(host); + params.setPort(port); + params.setEncapsulated(true); + ModbusMaster master = modbusFactory.createTcpMaster(params, false); + try { + //设置超时时间 + master.setTimeout(1000); + //设置重连次数 + master.setRetries(3); + //初始化 + master.init(); + } catch (ModbusInitException e) { + e.printStackTrace(); + } + return master; + } + + /** + * RTU + * @return + * @throws ModbusInitException + */ + public static ModbusMaster getSerialPortRtuMaster(){ + // 设置串口参数,串口是COM1,波特率是9600 + SerialPortWrapperImpl wrapper = new SerialPortWrapperImpl("COM2", 9600, SerialPort.DATABITS_8, SerialPort.STOPBITS_1, SerialPort.PARITY_NONE, 0, 0); +// SerialPortWrapperImpl wrapper = new SerialPortWrapperImpl(portName, baudRate, +// dataBits, stopBits, parity, 0, 0); + ModbusMaster master = modbusFactory.createRtuMaster(wrapper); + try { + //设置超时时间 + master.setTimeout(1000); + //设置重连次数 + master.setRetries(3); + //初始化 + master.init(); + } catch (ModbusInitException e) { + log.error("串口连接异常~"); + e.printStackTrace(); + } + return master; + } + /** + * + * @param portName 串口名 + * @param baudRate 波特率 + * @param dataBits 数据位 + * @param stopBits 中止位 + * @param parity 校验位 + * @return + * @throws ModbusInitException + */ + public static ModbusMaster getSerialPortAsciiMaster(String portName, Integer baudRate, Integer dataBits, + Integer stopBits, Integer parity){ + // 设置串口参数,串口是COM1,波特率是9600 + // SerialPortWrapperImpl wrapper = new SerialPortWrapperImpl("COM2", 9600,SerialPort.DATABITS_8, SerialPort.STOPBITS_1, SerialPort.PARITY_NONE, 0, 0); + SerialPortWrapperImpl wrapper = new SerialPortWrapperImpl(portName, baudRate, + dataBits, stopBits, parity, 0, 0); + ModbusMaster master = modbusFactory.createAsciiMaster(wrapper); + try { + //设置超时时间 + master.setTimeout(1000); + //设置重连次数 + master.setRetries(3); + //初始化 + master.init(); + } catch (ModbusInitException e) { + log.error("串口连接异常~"); + e.printStackTrace(); + } + return master; + } + + /** + * 读取[01 Coil Status 0x]类型 开关数据 + * + * @param slaveId + * slaveId 从地址 (仪表地址) + * @param offset + * 位置 + * @return 读取值 + * @throws ModbusTransportException + * 异常 + * @throws ErrorResponseException + * 异常 + */ + public static Boolean readCoilStatus(int slaveId, int offset,String ip ,int prot) + throws ModbusTransportException, ErrorResponseException { + // 01 Coil Status + BaseLocator loc = BaseLocator.coilStatus(slaveId, offset); + Boolean value = getMaster(ip, prot).getValue(loc); + return value; + } + + /** + * 读取[02 Input Status 1x]类型 开关数据 + * + * @param slaveId + * @param offset + * @return + * @throws ModbusTransportException + * @throws ErrorResponseException + */ + public static Boolean readInputStatus(int slaveId, int offset,String ip ,int prot) + throws ModbusTransportException, ErrorResponseException { + // 02 Input Status + BaseLocator loc = BaseLocator.inputStatus(slaveId, offset); + Boolean value = getMaster(ip, prot).getValue(loc); + return value; + } + + + + /** + * 读取[03 Holding Register类型 4x]模拟量数据 + * + * @param slaveId + * slave Id + * @param offset + * 位置 + * @param dataType + * 数据类型,来自com.serotonin.modbus4j.code.DataType + * @return + * @throws ModbusTransportException + * 异常 + * @throws ErrorResponseException + * 异常 + */ + public static Number readHoldingRegister(int slaveId, int offset, int dataType,String ip ,int prot ) + throws ModbusTransportException, ErrorResponseException { + // 03 Holding Register类型数据读取 + BaseLocator loc = BaseLocator.holdingRegister(slaveId, offset, dataType); + Number value = getMaster(ip,prot).getValue(loc); + return value; + } + + /** + * 读取[04 Input Registers 3x]类型 模拟量数据 + * + * @param slaveId + * slaveId + * @param offset + * 位置 + * @param dataType + * 数据类型,来自com.serotonin.modbus4j.code.DataType + * @return 返回结果 + * @throws ModbusTransportException + * 异常 + * @throws ErrorResponseException + * 异常 + */ + public static Number readInputRegisters(int slaveId, int offset, int dataType ,String ip ,int prot) + throws ModbusTransportException, ErrorResponseException { + // 04 Input Registers类型数据读取 + BaseLocator loc = BaseLocator.inputRegister(slaveId, offset, dataType); + Number value = getMaster(ip,prot).getValue(loc); + return value; + } + + /** + * 批量读取使用方法 + * + * @throws ModbusTransportException + * @throws ErrorResponseException + */ + public static void batchRead(String ip ,int prot ) throws ModbusTransportException, ErrorResponseException { + + BatchRead batch = new BatchRead(); + + batch.addLocator(0, BaseLocator.holdingRegister(2, 1, DataType.FOUR_BYTE_FLOAT)); + batch.addLocator(1, BaseLocator.inputStatus(1, 0)); + + ModbusMaster master = getMaster(ip,prot); + + batch.setContiguousRequests(false); + BatchResults results = master.send(batch); + System.out.println(results.getValue(0)); + System.out.println(results.getValue(1)); + } + +// /** +// * 测试 +// * +// * @param args +// */ +// public static void main(String[] args) { +// try { +// // 01测试 +// Boolean v011 = readCoilStatus(1, 0); +// Boolean v012 = readCoilStatus(1, 1); +// Boolean v013 = readCoilStatus(1, 6); +// System.out.println("v011:" + v011); +// System.out.println("v012:" + v012); +// System.out.println("v013:" + v013); +// // 02测试 +// Boolean v021 = readInputStatus(1, 0); +// Boolean v022 = readInputStatus(1, 1); +// Boolean v023 = readInputStatus(1, 2); +// System.out.println("v021:" + v021); +// System.out.println("v022:" + v022); +// System.out.println("v023:" + v023); +// +// // 03测试 +// Number v031 = readHoldingRegister(1, 1, DataType.FOUR_BYTE_FLOAT);// 注意,float +// Number v032 = readHoldingRegister(1, 3, DataType.FOUR_BYTE_FLOAT);// 同上 +// System.out.println("v031:" + v031); +// System.out.println("v032:" + v032); +// +// // 04测试 +// Number v041 = readInputRegisters(1, 1, DataType.FOUR_BYTE_FLOAT);// +// Number v042 = readInputRegisters(1, 3, DataType.FOUR_BYTE_FLOAT);// +// System.out.println("v041:" + v041); +// System.out.println("v042:" + v042); +// // 批量读取 +// batchRead(); +// +// } catch (Exception e) { +// e.printStackTrace(); +// } +// } + + /** + * 写 [01 Coil Status(0x)]写一个 function ID = 5 + * + * @param slaveId + * slave的ID + * @param writeOffset + * 位置 + * @param writeValue + * 值 + * @return 是否写入成功 + * @throws ModbusTransportException + */ + public static boolean writeCoil(int slaveId, int writeOffset, boolean writeValue ,String ip ,int prot) + throws ModbusTransportException { + // 获取master + ModbusMaster tcpMaster = getMaster(ip, prot); + // 创建请求 + WriteCoilRequest request = new WriteCoilRequest(slaveId, writeOffset, writeValue); + // 发送请求并获取响应对象 + WriteCoilResponse response = (WriteCoilResponse) tcpMaster.send(request); + if (response.isException()) { + return false; + } else { + return true; + } + } + + /** + * 写[01 Coil Status(0x)] 写多个 function ID = 15 + * + * @param slaveId + * slaveId + * @param startOffset + * 开始位置 + * @param bdata + * 写入的数据 + * @return 是否写入成功 + * @throws ModbusTransportException + */ + public static boolean writeCoils(int slaveId, int startOffset, boolean[] bdata,String ip ,int prot) + throws ModbusTransportException { + // 获取master + ModbusMaster tcpMaster = getMaster(ip, prot); + // 创建请求 + WriteCoilsRequest request = new WriteCoilsRequest(slaveId, startOffset, bdata); + // 发送请求并获取响应对象 + WriteCoilsResponse response = (WriteCoilsResponse) tcpMaster.send(request); + if (response.isException()) { + return false; + } else { + return true; + } + + } + + /*** + * 写[03 Holding Register(4x)] 写一个 function ID = 6 + * + * @param slaveId 11 + * @param writeOffset + * @param writeValue + * @return + * @throws ModbusTransportException + */ + public static boolean writeRegister(int slaveId, int writeOffset, int writeValue, String ip ,int prot) + throws ModbusTransportException { + // 获取master + ModbusMaster tcpMaster = getMaster(ip, prot); + // 创建请求对象 + WriteRegisterRequest request = new WriteRegisterRequest(slaveId, writeOffset, writeValue); + WriteRegisterResponse response = (WriteRegisterResponse) tcpMaster.send(request); + System.out.println("我这都是什么值:"+response); + if (response.isException()) { + System.out.println("我错哪了?"+response.getExceptionMessage()); +// log.error(response.getExceptionMessage()); + return false; + } else { + return true; + } + } + + /** + * 写多个量 + * 写入[03 Holding Register(4x)]写多个 function ID=16 + * @param slaveId + * @param startOffset 起始位置偏移量值 + * @param sdata 写入的数据 + */ + public static boolean writeRegisters(int slaveId, int startOffset, short[] sdata, String ip ,int prot) + throws ModbusTransportException { + // 获取master + ModbusMaster tcpMaster = getMaster(ip, prot); + // 创建请求对象 + WriteRegistersRequest request = new WriteRegistersRequest(slaveId, startOffset, sdata); + // 发送请求并获取响应对象 + ModbusResponse response = tcpMaster.send(request); + if (response.isException()) { + log.error(response.getExceptionMessage()); + return false; + } else { + return true; + } + } + + /** + * rtu写数据 + * @param slaveId 从站ID + * @param writeOffset 偏移 + * @param writeValue 写入值 + * @return + * @throws ModbusTransportException + */ + public static boolean writeRegisterRtu(int slaveId, int writeOffset, int writeValue) + throws ModbusTransportException { + // 获取master + ModbusMaster rtuMaster = getSerialPortRtuMaster(); + // 创建请求对象 + WriteRegisterRequest request = new WriteRegisterRequest(slaveId, writeOffset, writeValue); + WriteRegisterResponse response = (WriteRegisterResponse) rtuMaster.send(request); + if (response.isException()) { +// log.error(response.getExceptionMessage()); + return false; + } else { + return true; + } + } + + /** + * 写入数字类型的模拟量(如:写入Float类型的模拟量、Double类型模拟量、整数类型Short、Integer、Long) + * + * @param slaveId + * @param offset + * @param value + * 写入值,Number的子类,例如写入Float浮点类型,Double双精度类型,以及整型short,int,long + * ,com.serotonin.modbus4j.code.DataType + * @throws ModbusTransportException + * @throws ErrorResponseException + */ + public static void writeHoldingRegister(int slaveId, int offset, Number value, int dataType,String ip ,int prot) + throws ModbusTransportException, ErrorResponseException { + // 获取master + ModbusMaster tcpMaster = getMaster(ip, prot); + // 类型 + BaseLocator locator = BaseLocator.holdingRegister(slaveId, offset, dataType); + tcpMaster.setMultipleWritesOnly(true); + tcpMaster.setValue(locator, value); + + } + +// public static void main(String[] args) { +// try { + //@formatter:off + // 测试01 +// boolean t01 = writeCoil(1, 0, true); +// System.out.println("T01:" + t01); + + // 测试02 +// boolean t02 = writeCoils(1, 0, new boolean[] { true, false, true }); +// System.out.println("T02:" + t02); + + // 测试03 +// short v = -3; +// boolean t03 = writeRegister(1, 0, v); +// System.out.println("T03:" + t03); + // 测试04 +// boolean t04 = writeRegisters(1, 0, new short[] { -3, 3, 9 }); +// System.out.println("t04:" + t04); + //写模拟量 +// writeHoldingRegister(1,0, 10.1f, DataType.FOUR_BYTE_FLOAT); + + //@formatter:on +// } catch (Exception e) { +// e.printStackTrace(); +// } +// +// } + + /** + *short数组转byte + * @param data + * @return + */ + public static byte [] shorts2Bytes(short [] data){ + byte[] byteValue = new byte[data.length * 2]; + for (int i = 0; i < data.length; i++) { + byteValue[i * 2] = (byte) (data[i] & 0xff); + byteValue[i * 2 + 1] = (byte) ((data[i] & 0xff00) >> 8); + } + return byteValue; + } + /** + * Byte数组转short数组 + * + * @param bytes + * @return + */ + public static short[] bytesToShort(byte[] bytes) { + if (bytes == null) { + return null; + } + short[] shorts = new short[bytes.length / 2]; + ByteBuffer.wrap(bytes).order(ByteOrder.LITTLE_ENDIAN).asShortBuffer().get(shorts); + return shorts; + + } + + //大端转换小端 + public static float littleEndianSwap(float big) { + + int fbit = Float.floatToIntBits(big); + int a = fbit << 16; + a &= 0xFFFF0000; + System.out.println("a:"+ a); + + int b = fbit >> 16; + b &= 0xFFFF; + System.out.println("b:"+ b); + + int l; + l = a|b; + System.out.println("l:"+l); + + float little = Float.intBitsToFloat(l); + return little; + } + + //方法1: +//(3412) 小端交换字节模式 + public static float big2Little(float big){ + // 把float转换为byte[] + int fbit = Float.floatToIntBits(big); + System.out.println("+========1======="+fbit); + byte[] b = new byte[4]; + b[0] = (byte) (fbit >> 16); + b[1] = (byte) (fbit); + + int l; + l = b[0]; + l &= 0xff; + l |= ((long) b[2] << 16); + float little = Float.intBitsToFloat(l); + return little; + } + + //方法2: + public static float big2Little2(float big){ + + // 把float转换为byte[] + int fbit = Float.floatToIntBits(big); + System.out.println("+=======2========"+fbit); + int a = fbit << 16; + a &= 0xFFFF0000; + System.out.println("a:"+ a); + + int b = fbit >> 16; + + b &= 0xFFFF; + System.out.println("b:"+ b); + + int l; + l = a|b; + + System.out.println("l:"+l); + + float little = Float.intBitsToFloat(l); + return little; + } + + //大端(1234)转小端(4321) + public static float big2Little3(float big){ + // 把float转换为byte[] + int fbit = Float.floatToIntBits(big); + System.out.println("+========1======="+Integer.toBinaryString(fbit)); + + byte[] b = new byte[4]; + b[0] = (byte) (fbit >> 24); + b[1] = (byte) (fbit >> 16); + b[2] = (byte) (fbit >> 8); + b[3] = (byte) (fbit); + //以下换位置没有看懂,jiang + + int l; + l = b[0]; + System.out.println("+========6======="+Integer.toBinaryString(l)); + l &= 0xff; + System.out.println("--------1-------"+l); + l |= ((long) b[1] << 8); + System.out.println("--------2-------"+(long) b[1]); + System.out.println("+========8======="+Integer.toBinaryString(l)); + l &= 0xffff; + System.out.println("--------3-------"+l); + System.out.println("+========9======="+Integer.toBinaryString(l)); + + + l |= ((long) b[2] << 16); + System.out.println("--------4-------"+(long) b[2]); + System.out.println("+========10======="+Integer.toBinaryString(l)); + l &= 0xffffff; + System.out.println("--------5-------"+l); + System.out.println("+========11======="+Integer.toBinaryString(l)); + l |= ((long) b[3] << 24); + System.out.println("--------6-------"+(long) b[3]); + System.out.println("+========12======="+Integer.toBinaryString(l)); + float little = Float.intBitsToFloat(l); + return little; + } + + /** + * 大端(1234)转大端交换(2143) + * 把咱们能看懂的数字转成相对应的模式 + * 在modbuspoll上咱们能看懂的数字是大端交换模式。 + * 该方法按照modbuspoll上的解释应该是 大端交换模式转大端模式 + * @param big + * @return + */ + public static float big2bigsw(float big){ + + // 把float转换为byte[] + int fbit = Float.floatToIntBits(big); + byte[] b = new byte[4]; + b[0] = (byte) (fbit >> 24); + b[1] = (byte) (fbit >> 16); + b[2] = (byte) (fbit >> 8); + b[3] = (byte) (fbit); +// byte[] c = new byte[4]; +// c[0] = b[1]; +// c[1] = b[0]; +// c[2] = b[3]; +// c[3] = b[2]; + + //把b[1]放到b[0]前面 + int f; + f = b[2]; //赋予初始值b[2] + f &= 0xff; //保留最后8位二进制,即保留b[2]使其置于最后 + f |= ((long) b[3] << 8); //把b[3]向左位移8位即在b[2]之前 + f &= 0xffff;//保留最后16位二进制,即按b[3]b[2]的顺序存储 + f|=((long)b[0]<<16);//把b[0]向左位移16位即在b[3]之前 + f &= 0xffffff;//保留最后24位,即按b[0]b[3]b[2]的顺序存储 + f|=((long)b[1]<<24);//b[1]向左位移24位即在b[0]之前 + f &= 0xffffffff;//保留最后32位,即按b[1]b[0]b[3]b[2]的顺序存储 + float floatValue = Float.intBitsToFloat(f); + System.out.println("----1--"+floatValue); + return floatValue; + } + + public static float toLittleEndian(float value) { + ByteBuffer buffer = ByteBuffer.allocate(4); // Allocate 4 bytes for a float + buffer.order(ByteOrder.BIG_ENDIAN); // Set the byte order to big-endian + buffer.putFloat(value); // Put the float value into the buffer + + ByteBuffer buffer2 = ByteBuffer.allocate(4); // Allocate 4 bytes for a float + buffer2.order(ByteOrder.LITTLE_ENDIAN); // Set the byte order to little-endian + buffer2.putInt(buffer.getInt()); // Get the big-endian integer value and put it into the little-endian buffer + + return buffer2.getFloat(); // Get the float value from the little-endian buffer + } + + public static float toBigEndian(float value) { + ByteBuffer buffer = ByteBuffer.allocate(4); // Allocate 4 bytes for a float + buffer.order(ByteOrder.LITTLE_ENDIAN); // Set the byte order to little-endian + buffer.putFloat(value); // Put the float value into the buffer + + ByteBuffer buffer2 = ByteBuffer.allocate(4); // Allocate 4 bytes for a float + buffer2.order(ByteOrder.BIG_ENDIAN); // Set the byte order to big-endian + buffer2.putInt(buffer.getInt()); // Get the little-endian integer value and put it into the big-endian buffer + + return buffer2.getFloat(); // Get the float value from the big-endian buffer + } + + public static float toBigEndianSwapped(float value) { + ByteBuffer buffer = ByteBuffer.allocate(4); // Allocate 4 bytes for a float + buffer.order(ByteOrder.BIG_ENDIAN); // Set the byte order to big-endian + buffer.putFloat(value); // Put the float value into the buffer + + ByteBuffer buffer2 = ByteBuffer.allocate(4); // Allocate 4 bytes for a float + buffer2.order(ByteOrder.BIG_ENDIAN); // Set the byte order to big-endian + buffer2.putFloat(buffer.getFloat()); // Get the big-endian integer value and put it into the big-endian buffer + System.out.println("----2--"+buffer2.getFloat()); + return buffer2.getFloat(); // Get the float value from the big-endian buffer + } +} + + + diff --git a/src/main/java/org/gyk/modules/sssj/controller/GykController.java b/src/main/java/org/gyk/modules/sssj/controller/GykController.java new file mode 100644 index 0000000..6fd7b7b --- /dev/null +++ b/src/main/java/org/gyk/modules/sssj/controller/GykController.java @@ -0,0 +1,1035 @@ +package org.gyk.modules.sssj.controller; +//@author 作者:zhangjy +//@version 时间:2020-7-23 +//说明:@RestController 返回JSON格式数据 @Controller返回页面,显示用 + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.serotonin.modbus4j.code.DataType; +import com.serotonin.modbus4j.exception.ErrorResponseException; +import com.serotonin.modbus4j.exception.ModbusTransportException; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +//import org.apache.commons.collections.map.HashedMap; +import org.apache.commons.lang3.StringUtils; +import org.apache.thrift.TException; +import org.gyk.common.annotation.AutoLog; +import org.gyk.common.api.Result; +import org.gyk.modules.lssj.bjls.entity.CxcSssjLssjBjlsjl; +import org.gyk.modules.lssj.jldls.mapper.JldlsMapper; +import org.gyk.modules.lssj.jldls.service.ICxcSssjLssjJldlsService; +import org.gyk.modules.lssj.scls.entity.CxcSssjLssjScls; +import org.gyk.modules.lssj.scls.entity.CxcSssjScls; +import org.gyk.modules.modbus.utils.modBusUtils; +import org.gyk.modules.sssj.entity.*; +import org.gyk.modules.sssj.service.ICxcRsjQijingService; +import org.gyk.modules.sssj.service.IGetZcxxService; +import org.gyk.modules.sssj.service.IRishujuService; +import org.gyk.modules.sssj.util.sssjTools; +import org.gyk.modules.sz.jldxx.entity.CxcSssjSzJldxx; +import org.gyk.modules.sz.jldxx.service.IGetJldxxService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletRequest; +import java.text.DecimalFormat; +import java.text.SimpleDateFormat; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; +import java.util.*; +import java.util.function.Function; +import java.util.stream.Collectors; + +import static org.gyk.modules.sssj.util.sssjTools.*; + +/** + * @Description: 计量点实时数据 + * @Author: liao + * @Date: 2021-04-05 + * @Version: V1.0 + */ +//@Mapper +//@Log4j +@CrossOrigin(origins = "*", maxAge = 3600) +@Api(tags = "Gyk") +@RequestMapping("/sssj") +@RestController +public class GykController { + // @Resource +// private webSocket webSocket; + @Autowired + private IGetJldxxService getJldxxService; + @Autowired + private IGetZcxxService getZcxxService; + @Autowired + private IRishujuService rishujuService; + @Autowired + private ICxcRsjQijingService cxcRsjQijingService; + @Autowired + private JldlsMapper jldlsMapper; + @Autowired + private ICxcSssjLssjJldlsService cxcSssjLssjJldlsService; + + private static Logger log = LoggerFactory.getLogger(GykController.class); + + /** + * 计算日报的月累、年累数据 + * + * @param date + * @return + */ + @AutoLog(value = "日报数据-更新") + @ApiOperation(value = "日报数据-更新", notes = "日报数据-更新") + @RequestMapping(value = "/update") + public Result add(@RequestParam(value = "date") Date date) { +// 气井数据 + try { + cxcRsjQijingService.updateNlj(date); + cxcRsjQijingService.updateYlj(date); + } catch (Exception e) { + e.printStackTrace(); + return Result.ok("更新失败!"); + } + + return Result.ok("更新成功!"); + } + + /** + * 输差实时数据站场筛选 + * + * @param zhanc + * @return Result + */ + @RequestMapping("/GetScByZc") + public Result GetScByZc(@RequestParam(value = "zhanc") String zhanc) { + Result result = new Result<>(); + try { + sssjTools sssjTools = new sssjTools(); + List listAll = sssjTools.AllScList(); + //筛选出station_id等于参数"zhanc"的计量点组成list + List listZhan = listAll.stream().filter(item -> item.getStationId().equals(zhanc)).collect(Collectors.toList()); + result.setSuccess(true); + result.setResult(JSONArray.toJSONString(listZhan)); + } catch (InterruptedException e) { + e.printStackTrace(); + result.setSuccess(false); + } + return result; + } + + /** + * 输差实时数据单位筛选 + * + * @param zhanc + * @return Result + */ + @RequestMapping("/GetScByDePart") + public Result GetScByDePart(@RequestParam(value = "zhanc") String zhanc) { + Result result = new Result<>(); + try { + sssjTools sssjTools = new sssjTools(); + List listAll = sssjTools.AllScList(); + //筛选出station_id等于参数"zhanc"的计量点组成list + List listZhan = listAll.stream().filter(item -> item.getDepartId().equals(zhanc)).collect(Collectors.toList()); + result.setSuccess(true); + result.setResult(JSONArray.toJSONString(listZhan)); + } catch (InterruptedException e) { + e.printStackTrace(); + result.setSuccess(false); + } + return result; + } + + /** + * 输差实时数据站输差、线输差筛选 + * + * @param lb + * @return Result + */ + @RequestMapping("/GetScByLb") + public List GetScByLb(@RequestParam(value = "lb") String lb) { +// Result result = new Result<>(); + List list = new ArrayList<>(); + +// sssjTools sssjTools = new sssjTools(); + try { + list = sssjTools.getAllSc(lb); + } catch (InterruptedException e) { + e.printStackTrace(); + } +// result.setSuccess(true); +// result.setResult(JSONArray.toJSONString(list)); + + return list; + } + + + /** + * 可燃工艺实时数据站场筛选 + * + * @param zhanc + * @return Result + */ + @RequestMapping("/GetGyKrByZc") + public Result GetGyKrByZc(@RequestParam(value = "zhanc") String zhanc, @RequestParam(value = "jldLx") String jldLx) { + Result result = new Result<>(); + try { + sssjTools sssjTools = new sssjTools(); + List listAllGyKr = new ArrayList<>(); + if (jldLx.equals("1")) { + listAllGyKr = sssjTools.AllGylist(); + } + if (jldLx.equals("2")) { + listAllGyKr = sssjTools.AllKrlist(); + } + //筛选出station_id等于参数"zhanc"的工艺和可燃气报警组成list + List listZhan = listAllGyKr.stream().filter(item -> item.getStation_id().equals(zhanc)).collect(Collectors.toList()); + //将站场工艺和可燃所有的gyk标志的报警信息全部获取到,一起同计量数据返回到前端 + String strGykBz = StringUtils.join(listZhan.stream().map(JldData::getGykbz).collect(Collectors.toList()), ","); + List listBj = GetJlBjByGykBz(strGykBz); + result.setSuccess(true); + result.setResult("{\"JlData\":" + JSONArray.toJSONString(listZhan) + ",\"BjData\":" + JSONArray.toJSONString(listBj) + "}"); + } catch (InterruptedException e) { + e.printStackTrace(); + result.setSuccess(false); + } catch (TException e) { + e.printStackTrace(); + result.setSuccess(false); + } + return result; + } + + /** + * 可燃气体报警仪报警信息 + * + */ +// public + /** + * 压缩机实时数据站场筛选 + * + * @param zhanc + * @return Result + * GetYsByZc + */ + @RequestMapping("/GetYsByZc") + public Result> GetYsByZc(@RequestParam(value = "zhanc") String zhanc) { + Result> result = new Result<>(); + try { + sssjTools sssjTools = new sssjTools(); +// List listAllYs = new ArrayList<>(); + List listAllYs = sssjTools.AllYslist(); + //筛选出station_id等于参数"zhanc"的压缩机实时组成list + List listZhan = listAllYs.stream().filter(item -> item.getStation_id().equals(zhanc)).collect(Collectors.toList()); + listZhan.forEach(item->{ + String gykid = item.getGykbz(); //mapbjsj BG BD WG WD + + item.setBjzt("N"); + + String ls = gykid+"BG"; + if (mapbjsj.containsKey(ls)) { + item.setBjzt("B"); + } + ls = gykid+"BD"; + if (mapbjsj.containsKey(ls)) { + item.setBjzt("B"); + } + ls = gykid+"WG"; + if (mapbjsj.containsKey(ls)) { + item.setBjzt("W"); + } + ls = gykid+"WD"; + if (mapbjsj.containsKey(ls)) { + item.setBjzt("W"); + } + }); + result.setSuccess(true); + result.setResult(listZhan); + } catch (InterruptedException e) { + e.printStackTrace(); + result.setSuccess(false); + } + return result; + } + + /** + * 压缩机实时数据站场筛选 + * + * @param zhanc + * @return Result + * GetYsByZc 1267633458200707074 + */ + @RequestMapping("/GetYsSssjByZc") + public Result> GetYsSssjByZc(@RequestParam(value = "zhanc") String zhanc) { + Result> result = new Result<>(); + + //筛选出station_id等于参数"zhanc"的压缩机报警组成list + List listZhan = sssjTools.Ysjsssj.stream().filter(item -> item.getStationId().equals(zhanc)).collect(Collectors.toList()); + result.setSuccess(true); + result.setResult(listZhan); + + return result; + } + + /** + * 压缩机实时数据大屏接口 + * + * @param + * @return Result + * GetYsByZc 1267633458200707074 + */ + @RequestMapping("/GetYsSssjDp") + public List GetYsSssjDp() { + DecimalFormat df = new DecimalFormat("0.00"); + + List list = sssjTools.Ysjsssj; + Map mapzhanc = sssjTools.ysjGykbz.stream().collect(Collectors.toMap(YasuojiJcxx::getStationId, YasuojiJcxx::getStationName, (k1, k2) -> k2)); + + Map map = new TreeMap<>(); + + list.forEach(item -> { + String[] tmpstr = item.getJldName().split("\\*"); + + String ls = "110"; + if (mapzhanc.containsKey(item.getStationId())) { + ls = mapzhanc.get(item.getStationId()); + } + + String keys = ls + tmpstr[1]; + String lx =""; + if (tmpstr[2].contains("发动机转速")) { + lx = "1"; + } + if (tmpstr[2].contains("排气压力")) { + lx = "2"; + } + if (tmpstr[2].contains("进气压力")) { + lx = "3"; + } + switch (lx) { + case "1" : + if (map.containsKey(keys)) { + map.get(keys).setZhuansu(df.format(item.getVal())); + if (item.getVal()>1) { + map.get(keys).setZt("开机"); + } else { + map.get(keys).setZt("停机"); + } + } else { + Ysjdpxx ysjdp = new Ysjdpxx(); + ysjdp.setZhuansu(df.format(item.getVal())); + ysjdp.setZhanc(ls); + ysjdp.setJzh(tmpstr[1]); + ysjdp.setPqyl("0"); + ysjdp.setJqyl("0"); + if (item.getVal()>1) { + ysjdp.setZt("开机"); + } else { + ysjdp.setZt("停机"); + } + map.put(keys,ysjdp); + } + break; + case "2" : + if (map.containsKey(keys)) { + map.get(keys).setPqyl(df.format(item.getVal())); + } else { + Ysjdpxx ysjdp = new Ysjdpxx(); + ysjdp.setPqyl(df.format(item.getVal())); + ysjdp.setZhanc(ls); + ysjdp.setJzh(tmpstr[1]); + ysjdp.setJqyl("0"); + ysjdp.setZhuansu("0"); + ysjdp.setZt("停机"); + map.put(keys,ysjdp); + } + break; + case "3" : + if (map.containsKey(keys)) { + map.get(keys).setJqyl(df.format(item.getVal())); + } else { + Ysjdpxx ysjdp = new Ysjdpxx(); + ysjdp.setJqyl(df.format(item.getVal())); + ysjdp.setZhanc(ls); + ysjdp.setJzh(tmpstr[1]); + ysjdp.setPqyl("0"); + ysjdp.setZhuansu("0"); + ysjdp.setZt("停机"); + map.put(keys,ysjdp); + } + break; + default: + } + }); +// List> listres = new ArrayList<>(); +// listres.add(map); ; + List listres = new ArrayList<>(); + map.forEach((k,v)->{ + listres.add(v); + }); + + return listres; + } + + + /** + * 获取压缩机历史数据表头 + * + * @param + * @return Result + */ + @RequestMapping("/GetYsLssjBt") + public Map> GetYsLssjBt(@RequestParam(value = "zhanc") String zhanc, @RequestParam(value = "jzh") String jzh, @RequestParam(value = "leibie") String leibie) { + Map> map = new HashMap<>(); + + switch (leibie) { + case "1": + map = sssjTools.getYasuojshujuBt(zhanc, jzh); + break; + case "2": + map = sssjTools.getYasuojBjBt(); + break; + case "3": + map = sssjTools.getJldLssjBt(); + break; + case "4": + map = sssjTools.getJldBjBt(); + break; + case "5": + map = sssjTools.getJldBjChuzhiBt(); + break; + + } +// log.info("hi:"+map.size() +" zhanc"+zhanc); + return map; + } + + /** + * 获取压缩机历史数据 + * + * @param + * @return Result + */ + @RequestMapping("/GetYsLssj") + public List> GetYsLssj(@RequestParam(value = "zhanc") String zhanc, @RequestParam(value = "jzh") String jzh, @RequestParam(name = "startTime", required = false) String startTime, + @RequestParam(name = "endTime", required = false) String endTime) { + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); + + List> listbt = new ArrayList<>(); + List list = sssjTools.getYasjLssj(zhanc, jzh, startTime, endTime); + if (list.size() > 0) { + list.forEach(item -> { + String shuju = item.getShuju(); + Map mapshuju = sssjTools.splitStringToMap(shuju); + mapshuju.put("日期", item.getRq().format(formatter)); + + listbt.add(mapshuju); + +// mapshuju.forEach((k,v)->{ +// log.info("hi:"+k+" v:"+v); +// }); + }); + } + +// list.forEach(item->{ +// log.info("zc:"+zhanc+" jz:"+jzh+" begin:"+startTime+ " shuju:"+item.getShuju()); +// }); GetYsBjsj + + return listbt; + } + + /** + * 压缩机报警数据 + * + * @param + * @return Result + * GetYsByZc 1267633458200707074 + */ + @RequestMapping("/GetYsjBj") + public Result> GetYsjBj() { + Result> result = new Result<>(); + + List listbj = sssjTools.getYasuojiBj(); + + listbj.forEach(item -> { + String gykbz = item.getBjId(); + Optional jcxx = sssjTools.ysjGykbz.stream().filter(a -> a.getGykbz().equals(gykbz)).findAny(); + if (jcxx.isPresent()) { + item.setBjId(jcxx.get().getJldName()); + } +// log.info("id:"+ item.getBjId()+" time:"+item.getBeginTime()+" val:"+item.getCanshuZhi()); + }); + + result.setSuccess(true); + result.setResult(listbj); + + return result; + } + + + /** + * 获取压缩机报警历史数据 + * + * @param + * @return Result + */ + @RequestMapping("/GetYsBjsj") + public List GetYsBjsj(@RequestParam(value = "zhanc") String zhanc, @RequestParam(value = "jzh") String jzh, @RequestParam(name = "startTime", required = false) String startTime, + @RequestParam(name = "endTime", required = false) String endTime) { + + List listbt = sssjTools.getYasuojbjsj(startTime, endTime, zhanc, jzh); + + return listbt; + } + + + /** + * 天然气生产报警数据 + * + * @param + * @return Result + * GetYsByZc 1267633458200707074 + */ + @RequestMapping("/GetTrqjBjByZc") + public List GetTrqjBjByZc(@RequestParam(value = "zhanc") String zhanc, @RequestParam(value = "lb") String lb) { + List listByzhanc = new ArrayList<>(); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + if (lb.equals("4")) { + List listbj = sssjTools.getYasuojiBj(); + + List listbjByZhanc = sssjTools.ysjGykbz.stream().filter(item -> item.getStationId().equals(zhanc)).collect(Collectors.toList()); + + Map mapzc = listbjByZhanc.stream().collect(Collectors.toMap(YasuojiJcxx::getGykbz, Function.identity(), (k1, k2) -> k2)); + + listbj.forEach(item -> { + String gykbz = item.getBjId(); + + if (mapzc.containsKey(gykbz)) { + Optional jcxx = sssjTools.ysjGykbz.stream().filter(a -> a.getGykbz().equals(gykbz)).findAny(); + if (jcxx.isPresent()) { + item.setBjId(jcxx.get().getJldName().substring(3)); + CxcSssjLssjBjlsjl tmp = new CxcSssjLssjBjlsjl(); + tmp.setId(item.getId()); + tmp.setBjName(item.getBjId()); + tmp.setBjz(String.valueOf(item.getCanshuZhi())); + tmp.setCreateTime(item.getBeginTime()); + tmp.setReason(item.getBjMs()); + tmp.setZt(item.getZt()); + tmp.setBz(item.getStationname()); + listByzhanc.add(tmp); + } + } + + }); + } else { + List listbj = sssjTools.getTrqBj(15, lb); + Map mapzc = gykbzGetJcxx.entrySet().stream().filter(map -> map.getValue().getStationId().equals(zhanc)).collect(Collectors.toMap(p -> p.getKey(), p -> p.getValue())); + + listbj.forEach(item -> { + if (mapzc.containsKey(item.getBjId())) { + listByzhanc.add(item); + } + }); + } + + return listByzhanc; + } + + /** + * 压缩机实时数据站场筛选,这个接口专门给外面提供数据 + * + * @return Result + */ + @RequestMapping("/GetYs") + public Result> GetYs(HttpServletRequest req) { + + Result> result = new Result<>(); + try { + List listAllYs = new ArrayList<>(); + listAllYs = sssjTools.AllYslist(); + //筛选出station_id等于参数"zhanc"的压缩机报警组成list + List listZhan = listAllYs; + result.setSuccess(true); + result.setResult(listZhan); + } catch (InterruptedException e) { + e.printStackTrace(); + result.setSuccess(false); + } + return result; + } + + /** + * 偏远站实时数据站场筛选 + * + * @return Result + */ + @RequestMapping("/GetPianyuan") + public Result> GetPianyuan() { + + Result> result = new Result<>(); + try { + List listAllYs = new ArrayList<>(); + listAllYs = sssjTools.AllPylist(); + //筛选出station_id等于参数"zhanc"的压缩机报警组成list +// List listZhan = listAllYs; + result.setSuccess(true); + result.setResult(listAllYs); + } catch (InterruptedException e) { + e.printStackTrace(); + result.setSuccess(false); + } + return result; + } + + /** + * 偏远站8点数据查询,两天 + * + * @return Result + */ + @RequestMapping("/pianyuan8list") + public List pianyuan8list() { + return sssjTools.pianyuan8list(); + } + + @RequestMapping("/pianyuan8edit") + public void pianyuan8edit(@RequestBody JSONObject params) { + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); + String rqca=""; + LocalDateTime dateTime1 = LocalDateTime.now(); + //当天8点 + LocalDateTime dateTime2 = dateTime1.withHour(8); + if (dateTime2.isAfter(dateTime1)) { + rqca= dateTime2.plusDays(-1).format(formatter); + } else { + rqca= dateTime2.plusDays(-2).format(formatter); + } + + String jldname = params.getString("jldname"); + String rq = params.getString("rq"); + String bklj = params.getString("bkzl"); + sssjTools sstools = new sssjTools(); + sstools.pianyuan8edit(jldname,rq,bklj,rqca); + } + + /** + * 计量点实时数据站场筛选 + * + * @param zhanc + * @return Result + */ + @RequestMapping("/GetJlByZc") +// 若站场不为空,执行以下操作,若为空 + public Result GetJlByZc(@RequestParam(value = "zhanc") String zhanc) { + Result result = new Result<>(); + if (zhanc.isEmpty()) { + result.setSuccess(false); + } else { + List listZhan = sssjTools.getJldSssj(zhanc); +// listZhan.forEach(item->{ +// if (item.getJldname().equals("中开文二联377来干气")) { +// log.info("***************************"); +// log.info("name:"+item.getJldname()+" zt:"+item.getBjzt()+ " val:"+item.getWd()); +// } +// }); + //将站场所有的gyk标志的报警信息全部获取到,一起同计量数据返回到前端 mapTrqbjsj +// String strGykBz = StringUtils.join(listZhan.stream().map(JldData::getGykbz).collect(Collectors.toList()), ","); + + //2023-09-20 Niujl +// List listBj = GetJlBjByGykBz(strGykBz); +// System.out.println("---------报警"+JSONArray.toJSONString(listBj)+"++++站场:"+zhanc); + result.setSuccess(true); + //2023-09-20 Niujl +// result.setResult("{\"JlData\":" + JSONArray.toJSONString(listZhan) + ",\"BjData\":" + JSONArray.toJSONString(listBj) + "}"); + result.setResult("{\"JlData\":" + JSONArray.toJSONString(listZhan) + "}"); + } + return result; + } + + + + /** + * @Description: 计量点实时数据站场筛选 并新增进站出站赛选以及分组 + * @author: 闵年泽 + * @date: 2024/7/25 15:13 + * @param zhanc: + * @Return: org.gyk.common.api.Result + */ + @GetMapping("/getJlAllByZc") +// 若站场不为空,执行以下操作,若为空 + public Result GetJlAllByZc(@RequestParam(value = "sqdw") String sqdw) { + Result result = new Result<>(); + if (sqdw.isEmpty()) { + result.setSuccess(false); + } else { + List listZhan = sssjTools.getJldSssjBySqDw(sqdw); + Map> collect = listZhan.stream().filter(item -> { + if(StringUtils.isEmpty(item.getJczlx())) item.setJczlx("进站"); + return true; + }).collect(Collectors.groupingBy(JldData::getJczlx)); + result.setSuccess(true); + result.setResult("{\"JlData\":" + JSONArray.toJSONString(collect) + "}"); + } + return result; + } + + + + /** + * 获取实时数据,参数为站场 + * + * @param zhanc + * @return Result + */ + @RequestMapping("/GetSssjByZc") + public Result GetSssjByZc(@RequestParam(value = "zhanc") String zhanc) { + Result result = new Result<>(); + + // 若站场不为空,执行以下操作,若为空 + if (zhanc.isEmpty()) { + result.setSuccess(false); + } else { + try { + sssjTools sssjTools = new sssjTools(); + List listAll = sssjTools.AllJldlist(); + //筛选出station_id等于参数"zhanc"的计量点组成list + List listZhan = listAll.stream().filter(item -> item.getStation_id().equals(zhanc)).collect(Collectors.toList()); + //将站场所有的gyk标志的报警信息全部获取到,一起同计量数据返回到前端 + result.setSuccess(true); +// result.setResult("{\"JlData\":"+ JSONArray.toJSONString(listZhan) +"}"); + result.setResult(JSONArray.toJSONString(listZhan)); + } catch (InterruptedException e) { + e.printStackTrace(); + result.setSuccess(false); + } catch (Exception e) { + e.printStackTrace(); + result.setSuccess(false); + } + } + return result; + } + + + /** + * 获取实时报警数据,参数为站场 + * + * @param zhanc + * @return Result + */ + @RequestMapping("/GetBjByZc") + public Result GetBjByZc(@RequestParam(value = "zhanc") String zhanc) { + Result result = new Result<>(); + + // 若站场不为空,执行以下操作,若为空 + if (zhanc.isEmpty()) { + result.setSuccess(false); + } else { + try { + sssjTools sssjTools = new sssjTools(); + List listAll = sssjTools.AllJldlist(); + //筛选出station_id等于参数"zhanc"的计量点组成list + List listZhan = listAll.stream().filter(item -> item.getStation_id().equals(zhanc)).collect(Collectors.toList()); + //将站场所有的gyk标志的报警信息全部获取到,一起同计量数据返回到前端 + String strGykBz = StringUtils.join(listZhan.stream().map(JldData::getGykbz).collect(Collectors.toList()), ","); + List listBj = GetJlBjByGykBz(strGykBz); +// System.out.println("---------报警"+JSONArray.toJSONString(listBj)+"++++站场:"+zhanc); + result.setSuccess(true); + result.setResult(JSONArray.toJSONString(listBj)); + } catch (Exception e) { + e.printStackTrace(); + result.setSuccess(false); + } + } + return result; + } + + + /** + * 计量点报警实时数据通过站场筛选 + * + * @param strGykBz + * @return Result + */ + + public List GetJlBjByGykBz(String strGykBz) throws TException, InterruptedException { +// sssjTools sssjTools = new sssjTools(); +// List listAll = sssjTools.GetAllBj(); + List listAll = sssjTools.mapTrqbjsj.values().stream().collect(Collectors.toList()); + + List listZhanBj = new ArrayList<>(); + //筛选出station_id等于参数"zhanc"的计量点组成list + String[] gykBz = strGykBz.split(","); + if (gykBz.length > 0) { + for (int i = 0; i < gykBz.length; i++) { + int finalI = i; + listZhanBj.addAll(listAll.stream().filter(item -> item.getBjId().equals(gykBz[finalI])).collect(Collectors.toList())); + } + } + return listZhanBj; + } + + @RequestMapping("/GetJlBjAll") + public List GetJlBjAll() throws TException, InterruptedException { + sssjTools sssjTools = new sssjTools(); + List listAll = sssjTools.GetAllBj(); +// log.info("hello"); + return listAll; + } + + //获取全厂压缩机的运行状态 + @RequestMapping("/GetYasuojZt") + public Map> GetYasuojZt() { + DateTimeFormatter sdf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); + Map> map = new HashMap<>(); + Map mapwarnning = new HashMap<>(); + MapWarn.forEach((k, v) -> { + mapwarnning.put(k, v.format(sdf)); + }); + TreeMap treeMap1 = new TreeMap<>(MapGood); + TreeMap treeMap2 = new TreeMap<>(MapStop); + TreeMap treeMap3 = new TreeMap<>(mapwarnning); + map.put("good", treeMap1); + map.put("stop", treeMap2); + map.put("warn", treeMap3); + +// System.out.println("total:"+listAll.size()); + return map; + } + + //获取全厂压缩机的开关机数量 + @RequestMapping("/GetYasuojZtNo") + public List> GetYasuojZtNo() { + Map map = new HashMap<>(); + map.put("总数",MapGood.size()+MapStop.size()); + map.put("开机数",MapGood.size()); + map.put("停机数",MapStop.size()); + List> list = new ArrayList<>(); + list.add(map); + + return list; + } + + + /** + * 获得管理区、站场、计量点树形菜单 + * + * @param cxcSssjSzJldxx + * @return Result + */ + @RequestMapping("/GetMenu") + public Result GetMenu(CxcSssjSzJldxx cxcSssjSzJldxx) throws TException, InterruptedException { + Result result = new Result<>(); + return result; + } + + /** + * 计量点实时数据ID筛选 + * + * @param jldId + * @return Result + */ + @RequestMapping("/GetJlById") + public Result GetJlById(@RequestParam(value = "jldId") String jldId) throws TException, InterruptedException { + //判断jldId是否为空,然后循环遍历拼接字符串。 + Result result = new Result<>(); + sssjTools sssjTools = new sssjTools(); + + List listAll = sssjTools.AllJldlist(); + String str = jldId; + String[] strarray = str.split("\\,"); + List JlData = new ArrayList(); + for (int i = 0; i < strarray.length; i++) { + String qwe = strarray[i]; + List listJldId = listAll.stream().filter(item -> item.getId().equals(qwe)).collect(Collectors.toList()); + listJldId.forEach(item -> { + JlData.add(item); + }); + } + String strGykBz = StringUtils.join(JlData.stream().map(JldData::getGykbz).collect(Collectors.toList()), ","); + List listBj = GetJlBjByGykBz(strGykBz); + result.setSuccess(true); + result.setResult("{\"JlData\":" + JSONArray.toJSONString(JlData) + ",\"BjData\":" + JSONArray.toJSONString(listBj) + "}"); +// JSONObject obj = new JSONObject(); +// obj.put("cmd", "topic");//业务类型 +// obj.put("msgId", "1123");//消息id +// obj.put("msgTxt", "内容返回");//消息内容 +////全体发送 +// webSocket.sendAllMessage(obj.toJSONString()); + + + return result; + } + + /** + * 工艺可燃实时数据ID筛选 + * + * @param jldId + * @return Result + */ + @RequestMapping("/GetKrById") + public Result GetKrById(@RequestParam(value = "jldId") String jldId) throws TException, InterruptedException { + Result result = new Result<>(); + sssjTools sssjTools = new sssjTools(); + List listAll = sssjTools.AllKrlist(); + List listJldId = listAll.stream().filter(item -> item.getId().equals(jldId)).collect(Collectors.toList()); + String strGykBz = StringUtils.join(listJldId.stream().map(JldData::getGykbz).collect(Collectors.toList()), ","); + List listBj = GetJlBjByGykBz(strGykBz); + result.setSuccess(true); + result.setResult("{\"JlData\":" + JSONArray.toJSONString(listJldId) + ",\"BjData\":" + JSONArray.toJSONString(listBj) + "}"); + return result; + } + + /** + * 工艺可燃实时数据ID筛选 + * + * @param jldId + * @return Result + */ + @RequestMapping("/GetGyById") + public Result GetGyById(@RequestParam(value = "jldId") String jldId) throws TException, InterruptedException { + Result result = new Result<>(); + sssjTools sssjTools = new sssjTools(); + List listAll = sssjTools.AllGylist(); + List listJldId = listAll.stream().filter(item -> item.getId().equals(jldId)).collect(Collectors.toList()); + String strGykBz = StringUtils.join(listJldId.stream().map(JldData::getGykbz).collect(Collectors.toList()), ","); + List listBj = GetJlBjByGykBz(strGykBz); + result.setSuccess(true); + result.setResult("{\"JlData\":" + JSONArray.toJSONString(listJldId) + ",\"BjData\":" + JSONArray.toJSONString(listBj) + "}"); + return result; + } + + /** + * MODBUS通讯网络数据获取 + * @return Result + */ +// @RequestMapping("/GetJldPar") +// public Result GetJldPar(@RequestParam(value = "jldId") String jldId) throws TException, InterruptedException { +// Result result = new Result<>(); +// //首先通过jldID获取该计量点的信息 +// List listJld = getJldxxService.getJldxxById(jldId); +// String stationId = ""; +// Integer jldNo = 0; +// if (listJld.size() > 0) { +// stationId = listJld.get(0).getStationId(); +// jldNo = Integer.parseInt(listJld.get(0).getJldNo()); +// } +// //通过该计量点的站场ID获取站场信息PLC IP和端口 +// List listZc = getZcxxService.getZcxxById(stationId); +// String zcIP = listZc.get(0).getIp(); +// Integer zcPort = 502; //Modbus 端口默认 502 +// ModbusTools modbusTools = new ModbusTools(); +// List listPar= modbusTools.getPar(zcIP, zcPort, jldNo); +// +// listPar.get(0).setJLD_NO(jldNo.toString()); +// listPar.get(0).setJLD_ID(jldId); +// listPar.get(0).setJLD_NAME( listJld.get(0).getJldName()); +//// List listPar= getPar("10.75.166.8", 502, 1); +// result.setSuccess(true); +// result.setResult(JSON.toJSONString(listPar)); +// return result; +// } +// /** +// * 通过jlidId查询月数据 +// * +// * @param jldId +// */ +// @AutoLog(value = "计量点日数据-通过jldId查询") +// @ApiOperation(value="计量点日数据-通过jldId查询", notes="计量点日数据-通过jldId查询") +// @GetMapping(value = "/queryMByJldid") +// public void queryMouthByJldid(@RequestParam(name="jldId",required=true) String jldId) { +// List> RsjMouth = (List>) rishujuService.getMouthDataByIds(jldId); +// System.out.println("获取的数据是:"+RsjMouth); +// if(RsjMouth==null) { +// return Result.error("未找到对应数据"); +// } +// return Result.ok(RsjMouth); +// } + +// @RequestMapping("/hello") +// public String hello() { +// JSONObject obj = new JSONObject(); +// obj.put("cmd", "topic");//业务类型 +// obj.put("msgId", "1123");//消息id +// obj.put("msgTxt", "内容返回");//消息内容 +////全体发送 +// webSocket.sendAllMessage(obj.toJSONString()); +// +// return "Hello Spring Boot!"; +// } + + /** + * rtu + * @param slaveId +// * @param writeOffset +// * @param writeValue +// */ +// @GetMapping("/writeModbusRTU") +// public void writeModbusRTU (int slaveId, int writeOffset, int writeValue) { +// boolean a = false; +// try { +// a = modBusUtils.writeRegisterRtu(slaveId, writeOffset, writeValue); +// } catch (ModbusTransportException e) { +// e.printStackTrace(); +// } +// System.out.println("写入成功了没有"+a); +// } + + @GetMapping("/writeModbusTCP") + public void writeModbusTCP (int slaveId, int offset, float value ,String ip ,int prot) { + + int intValue = Float.floatToIntBits(value); + System.out.println("浮点数转成整数:"+intValue); + + byte[] byteArray = new byte[4]; + byteArray[0] = (byte) (intValue >> 24); + byteArray[1] = (byte) (intValue >> 16); + byteArray[2] = (byte) (intValue >> 8); + byteArray[3] = (byte) intValue; +// (0xff & byteArray[0]) | (0xff00 & (byteArray[1] << 8)) | (0xff0000 & (byteArray[2] << 16)) | (0xff000000 & (byteArray[3] << 24); + System.out.println("整数转成字节数组:"+ Arrays.toString(byteArray)); + + byte result = byteArray[3]; + System.out.println("截取字节数组的低8位作为结果:"+result); + + + System.out.println("--------"+value); + float f1 = modBusUtils.littleEndianSwap(value); + System.out.println("写入的值是1:"+f1); + float f2 = modBusUtils.big2Little(value); + System.out.println("写入的值是2:"+f2); + float f3 = modBusUtils.big2Little2(value); + System.out.println("写入的值是3:"+f3); + float f4 = modBusUtils.big2Little3(value); + System.out.println("写入的值是4:"+f4); +// NumericLocator.inputRegisterBit() + +// try { +// for (Number number : value) { +// modBusUtils.writeHoldingRegister(slaveId, offset, number, DataType.EIGHT_BYTE_FLOAT, ip, prot); +// } +// } catch (ModbusTransportException | ErrorResponseException e) { +// e.printStackTrace(); +// } + System.out.println("写入成功了吗?"); + } + + @GetMapping("/readModbusTCP") + public void readModbusTCP (int slaveId, int offset, String ip ,int prot,float c) { + Number a = null; + modBusUtils.big2bigsw(c); + modBusUtils.toBigEndianSwapped(c); +// try { +// a = modBusUtils.readHoldingRegister(slaveId, offset, DataType.EIGHT_BYTE_FLOAT,ip ,prot); +// } catch (ModbusTransportException | ErrorResponseException e) { +// e.printStackTrace(); +// } + } + @RequestMapping("/getNgData") + public List getNgData() throws InterruptedException { + sssjTools sssjTools = new sssjTools(); + List listAll = sssjTools.AllNgzxlist(); + return listAll; + } + +} diff --git a/src/main/java/org/gyk/modules/sssj/entity/BiaoTi.java b/src/main/java/org/gyk/modules/sssj/entity/BiaoTi.java new file mode 100644 index 0000000..af3361d --- /dev/null +++ b/src/main/java/org/gyk/modules/sssj/entity/BiaoTi.java @@ -0,0 +1,34 @@ +package org.gyk.modules.sssj.entity; + +import java.io.Serializable; + +public class BiaoTi implements Serializable { + + private String title; + private String align;//站场 + private String dataIndex;//区 + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public String getAlign() { + return align; + } + + public void setAlign(String align) { + this.align = align; + } + + public String getDataIndex() { + return dataIndex; + } + + public void setDataIndex(String dataIndex) { + this.dataIndex = dataIndex; + } +} diff --git a/src/main/java/org/gyk/modules/sssj/entity/BjxxCal.java b/src/main/java/org/gyk/modules/sssj/entity/BjxxCal.java new file mode 100644 index 0000000..f9e4258 --- /dev/null +++ b/src/main/java/org/gyk/modules/sssj/entity/BjxxCal.java @@ -0,0 +1,52 @@ +package org.gyk.modules.sssj.entity; + +import net.sf.jsqlparser.expression.DateTimeLiteralExpression; + +import java.io.Serializable; +import java.util.Date; + +public class BjxxCal implements Serializable { + + private static final long serialVersionUID = 1L; + + private String bjID; //报警ID 工业库标志 + private int bjTimes; //报警次数 + private Date lastBjTime; //上次报警时间 + private int jlbz; //记录标志 a + + public static long getSerialVersionUID() { + return serialVersionUID; + } + + public String getBjID() { + return bjID; + } + + public void setBjID(String bjID) { + this.bjID = bjID; + } + + public int getBjTimes() { + return bjTimes; + } + + public void setBjTimes(int bjTimes) { + this.bjTimes = bjTimes; + } + + public Date getLastBjTime() { + return lastBjTime; + } + + public void setLastBjTime(Date lastBjTime) { + this.lastBjTime = lastBjTime; + } +// + public int getJlbz() { + return jlbz; + } + + public void setJlbz(int Jlbz) { + this.jlbz = jlbz; + } +} diff --git a/src/main/java/org/gyk/modules/sssj/entity/CxcQijingRB.java b/src/main/java/org/gyk/modules/sssj/entity/CxcQijingRB.java new file mode 100644 index 0000000..f18f6f9 --- /dev/null +++ b/src/main/java/org/gyk/modules/sssj/entity/CxcQijingRB.java @@ -0,0 +1,110 @@ +package org.gyk.modules.sssj.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +import org.jeecgframework.poi.excel.annotation.Excel; +import org.springframework.format.annotation.DateTimeFormat; + +import java.io.Serializable; +import java.util.Date; + +/** + * @Description: 气井日报 + * @Author: jeecg-boot + * @Date: 2021-09-01 + * @Version: V1.0 + */ +@Data +@TableName("cxc_rsj_qijingrb") +@Accessors(chain = true) +@EqualsAndHashCode(callSuper = false) +@ApiModel(value="cxc_rsj_qijingrb对象", description="气井日报") +public class CxcQijingRB implements Serializable { + private static final long serialVersionUID = 1L; + + /**主键*/ + @TableId(type = IdType.ASSIGN_UUID) + @ApiModelProperty(value = "主键") + private String id; + /**更新日期*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd") + @DateTimeFormat(pattern="yyyy-MM-dd ") + @ApiModelProperty(value = "更新日期") + private Date createTime; + /**管理单位*/ + @Excel(name = "管理单位", width = 15) + @ApiModelProperty(value = "管理单位") + private String departName; + /**所属站点*/ + @Excel(name = "所属站点", width = 15) + @ApiModelProperty(value = "所属站点") + private String stationName; + /**井号*/ + @Excel(name = "井号", width = 15) + @ApiModelProperty(value = "井号") + private String jh; + /**生产时间*/ + @Excel(name = "生产时间", width = 15) + @ApiModelProperty(value = "生产时间") + private String scsj; + /**生产油压(MPa)*/ + @Excel(name = "生产油压(MPa)", width = 15) + @ApiModelProperty(value = "生产油压(MPa)") + private String scyy; + /**生产套压(MPa)*/ + @Excel(name = "生产套压(MPa)", width = 15) + @ApiModelProperty(value = "生产套压(MPa)") + private String scty; + /**日产气量(万方)*/ + @Excel(name = "日产气量(万方)", width = 15) + @ApiModelProperty(value = "日产气量(万方)") + private String cqdr; + /**井口气量(万方)*/ + @Excel(name = "井口气量(万方)", width = 15) + @ApiModelProperty(value = "井口气量(万方)") + private String jkql; + /**日产油量(方)*/ + @Excel(name = "日产油量(方)", width = 15) + @ApiModelProperty(value = "日产油量(方)") + private String yldr; + /**日产水量(方)*/ + @Excel(name = "日产水量(方)", width = 15) + @ApiModelProperty(value = "日产水量(方)") + private String sldr; + /**备注*/ + @Excel(name = "备注", width = 15) + @ApiModelProperty(value = "备注") + private String bz; + /**开井时间月累*/ + @ApiModelProperty(value = "开井时间月累") + private Double kjsjyl; + /**开井时间年累*/ + @ApiModelProperty(value = "开井时间年累") + private Double kjsjnl; + /**气量月累*/ + @ApiModelProperty(value = "气量月累") + private Double qlyl; + /**气量年累*/ + @ApiModelProperty(value = "气量年累") + private Double qlnl; + /**油量月累*/ + @ApiModelProperty(value = "油量月累") + private Double ylyl; + /**油量年累*/ + @ApiModelProperty(value = "油量年累") + private Double ylnl; + /**水量月累*/ + @ApiModelProperty(value = "水量月累") + private Double slyl; + /**水量年累*/ + @ApiModelProperty(value = "水量年累") + private Double slnl; + +} diff --git a/src/main/java/org/gyk/modules/sssj/entity/CxcRsjQijing.java b/src/main/java/org/gyk/modules/sssj/entity/CxcRsjQijing.java new file mode 100644 index 0000000..3506b8c --- /dev/null +++ b/src/main/java/org/gyk/modules/sssj/entity/CxcRsjQijing.java @@ -0,0 +1,97 @@ +package org.gyk.modules.sssj.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +import org.springframework.format.annotation.DateTimeFormat; + +import java.io.Serializable; + +/** + * @Description: 气井日数据 + * @Author: jeecg-boot + * @Date: 2021-09-01 + * @Version: V1.0 + */ +@Data +@TableName("cxc_rsj_qijing") +@Accessors(chain = true) +@EqualsAndHashCode(callSuper = false) +@ApiModel(value="cxc_rsj_qijing对象", description="气井日数据") +public class CxcRsjQijing implements Serializable { + private static final long serialVersionUID = 1L; + + /**主键*/ + @TableId(type = IdType.ASSIGN_UUID) + @ApiModelProperty(value = "主键") + private java.lang.String id; + /**创建人*/ + @ApiModelProperty(value = "创建人") + private java.lang.String createBy; + /**更新人*/ + @ApiModelProperty(value = "更新人") + private java.lang.String updateBy; + /**更新日期*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @ApiModelProperty(value = "更新日期") + private java.util.Date updateTime; + /**所属部门*/ + @ApiModelProperty(value = "所属部门") + private java.lang.String sysOrgCode; + /**管理单位*/ + @ApiModelProperty(value = "管理单位") + private java.lang.String departName; + /**所属站点*/ + @ApiModelProperty(value = "所属站点") + private java.lang.String stationName; + /**井号*/ + @ApiModelProperty(value = "井号") + private java.lang.String jh; + /**生产日期*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd") + @DateTimeFormat(pattern="yyyy-MM-dd") + @ApiModelProperty(value = "生产日期") + private java.util.Date createTime; + /**生产时间*/ + @ApiModelProperty(value = "生产时间") + private java.lang.String scsj; + /**生产制度*/ + @ApiModelProperty(value = "生产制度") + private java.lang.String sczd; + /**生产油压(MPa)*/ + @ApiModelProperty(value = "生产油压(MPa)") + private java.lang.String scyy; + /**生产套压(MPa)*/ + @ApiModelProperty(value = "生产套压(MPa)") + private java.lang.String scty; + /**日产气量(万方)*/ + @ApiModelProperty(value = "日产气量(万方)") + private java.lang.String rcql; + /**井口系数*/ + @ApiModelProperty(value = "井口系数") + private java.lang.String jkxs; + /**井口气量(万方)*/ + @ApiModelProperty(value = "井口气量(万方)") + private java.lang.String jkql; + /**日产油量(方)*/ + @ApiModelProperty(value = "日产油量(方)") + private java.lang.String rcyl; + /**日产水量(方)*/ + @ApiModelProperty(value = "日产水量(方)") + private java.lang.String rcsl; + /**压力类别*/ + @ApiModelProperty(value = "压力类别") + private java.lang.String yllb; + /**备注*/ + @ApiModelProperty(value = "备注") + private java.lang.String bz; + private java.lang.String jingh; + +} diff --git a/src/main/java/org/gyk/modules/sssj/entity/GykDataProperties.java b/src/main/java/org/gyk/modules/sssj/entity/GykDataProperties.java new file mode 100644 index 0000000..819ad7d --- /dev/null +++ b/src/main/java/org/gyk/modules/sssj/entity/GykDataProperties.java @@ -0,0 +1,77 @@ +package org.gyk.modules.sssj.entity; + +public class GykDataProperties { + private String TagName; //变量名称 + private Integer TagId; //变量ID + private String Qu; + private String Zhan; + private String JldName; //计量点名称 + private String value; + private String JldDw;//工艺单位 + + + public GykDataProperties(String TagName, Integer TagId, String Qu, String Zhan, String JldName, String JldDw) { + this.TagName = TagName; + this.TagId = TagId; + this.Qu = Qu; + this.Zhan = Zhan; + this.JldName = JldName; + this.JldDw = JldDw; + } + + public String getJldDw() { + return JldDw; + } + + public void setJldDw(String jldDw) { + JldDw = jldDw; + } + + public Integer getTagId() { + return TagId; + } + + public void setTagId(Integer tagId) { + TagId = tagId; + } + + public String getTagName() { + return this.TagName; + } + + public void setTagName(String TagName) { + this.TagName = TagName; + } + + public String getQu() { + return this.Qu; + } + + public void setQu(String Qu) { + this.Qu = Qu; + } + + public String getZhan() { + return this.Zhan; + } + + public void setZhan(String Zhan) { + this.Zhan = Zhan; + } + + public String getJldName() { + return this.JldName; + } + + public void setJldName(String JldName) { + this.JldName = JldName; + } + + public String getvalue() { + return this.value; + } + + public void setvalue(String value) { + this.value = value; + } +} diff --git a/src/main/java/org/gyk/modules/sssj/entity/JldData.java b/src/main/java/org/gyk/modules/sssj/entity/JldData.java new file mode 100644 index 0000000..acc24d9 --- /dev/null +++ b/src/main/java/org/gyk/modules/sssj/entity/JldData.java @@ -0,0 +1,276 @@ +package org.gyk.modules.sssj.entity; + +public class JldData { + private String id; + private String jldname; //计量点名称 + + private String zhan; + private String station_id; + private String depart_id; + private String qu; + private String wd;//温度 + private String yl;//压力 + private String yc;//压差 + private String ssll;//瞬时流量 + private String jrl;//今日量 + private String syll;//上月流量 + private String byll;//本月流量 + private String zll;//总流量(累积量) + private String jrsj;//今日时间 + private String yxzt;//运行状态 + private String bz;//备注 + private String bjzt; + + private String zrsj;//昨日时间 + private String zrl;//昨日量 + private String gykbz;//工业库标识 + private String jlddw;//单位 + private String krvalue;//可燃数值 + private String gyvalue;//工艺参数 + private String ysvalue;//压缩机参数 + private String krzt;//可燃状态 + private String ngvalue;//可燃状态 + + private String jczlx; //新增 进出站类型 by 闵 + + private String sqDw; //新增 输差dw配置 by 闵 + + public String getSqDw() { + return sqDw; + } + + public void setSqDw(String sqDw) { + this.sqDw = sqDw; + } + + public String getJczlx() { + return jczlx; + } + + public void setJczlx(String jczlx) { + this.jczlx = jczlx; + } + + public String getNgvalue() { + return ngvalue; + } + + public void setNgvalue(String ngvalue) { + this.ngvalue = ngvalue; + } + public String getYsvalue() { + return ysvalue; + } + + public void setYsvalue(String ysvalue) { + this.ysvalue = ysvalue; + } + + public String getKrzt() { + return krzt; + } + + public void setKrzt(String krzt) { + this.krzt = krzt; + } + + public String getKrvalue() { + return krvalue; + } + + public void setKrvalue(String krvalue) { + this.krvalue = krvalue; + } + + public String getGyvalue() { + return gyvalue; + } + + public void setGyvalue(String gyvalue) { + this.gyvalue = gyvalue; + } + + public JldData() { + } + + public String getJlddw() { + return jlddw; + } + + public void setJlddw(String jlddw) { + this.jlddw = jlddw; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getStation_id() { + return station_id; + } + + public void setStation_id(String station_id) { + this.station_id = station_id; + } + + public String getDepart_id() { + return depart_id; + } + + public void setDepart_id(String depart_id) { + this.depart_id = depart_id; + } + + public String getGykbz() { + return gykbz; + } + + public void setGykbz(String gykbz) { + this.gykbz = gykbz; + } + + public String getQu() { + return qu; + } + + public void setQu(String qu) { + this.qu = qu; + } + + public String getWd() { + return wd; + } + + public void setWd(String wd) { + this.wd = wd; + } + + public String getYl() { + return yl; + } + + public void setYl(String yl) { + this.yl = yl; + } + + public String getYc() { + return yc; + } + + public void setYc(String yc) { + this.yc = yc; + } + + public String getSsll() { + return ssll; + } + + public void setSsll(String ssll) { + this.ssll = ssll; + } + + public String getJrl() { + return jrl; + } + + public void setJrl(String jrl) { + this.jrl = jrl; + } + + public String getByll() { + return byll; + } + + public void setByll(String byll) { + this.byll = byll; + } + + public String getZll() { + return zll; + } + + public void setZll(String zll) { + this.zll = zll; + } + + public String getJrsj() { + return jrsj; + } + + public void setJrsj(String jrsj) { + this.jrsj = jrsj; + } + + public String getBz() { + return bz; + } + + public void setBz(String bz) { + this.bz = bz; + } + + public String getZrsj() { + return zrsj; + } + + public void setZrsj(String zrsj) { + this.zrsj = zrsj; + } + + public String getZrl() { + return zrl; + } + + public void setZrl(String zrl) { + this.zrl = zrl; + } + + public String getYxzt() { + return yxzt; + } + + public void setYxzt(String yxzt) { + this.yxzt = yxzt; + } + + public String getJldname() { + return this.jldname; + } + + public void setJldname(String jldname) { + this.jldname = jldname; + } + + public String getZhan() { + return this.zhan; + } + + public void setZhan(String zhan) { + this.zhan = zhan; + } + + public String getSyll() { + return this.syll; + } + + public void setSyll(String syll) { + this.syll = syll; + } + + public String getBjzt() { + return bjzt; + } + + public void setBjzt(String bjzt) { + this.bjzt = bjzt; + } + + public String getstring() { + String res = " jldname:" + jldname + " zhan:" + zhan + " ssl:" + ssll + " syll:" + syll; + return res; + } +} diff --git a/src/main/java/org/gyk/modules/sssj/entity/JldPar.java b/src/main/java/org/gyk/modules/sssj/entity/JldPar.java new file mode 100644 index 0000000..a8c0a27 --- /dev/null +++ b/src/main/java/org/gyk/modules/sssj/entity/JldPar.java @@ -0,0 +1,310 @@ +package org.gyk.modules.sssj.entity; + +public class JldPar { + private String JLD_ID ; //计量点ID + private String JLD_NO ; //计量点编号 + private String JLD_NAME ; //计量点名称 + private String ReadTime ; //读取时间 + private String CH4 ; + private String N2 ; + private String CO2 ; + private String C2H6 ; + private String C3H8 ; + private String H2O ; + private String H2S ; + private String H2 ; + private String CO ; + private String O2 ; + private String i_C4H10 ; + private String n_C4H10 ; + private String i_C5H12 ; + private String n_C5H12 ; + private String n_C6H14 ; + private String n_C7H16 ; + private String n_C8H18 ; + private String n_C9H20 ; + private String n_C10H22 ; + private String He ; + private String Ar ; + private String bak ; + private String GJ ; //管径 + private String KJ ; //孔径 + private String Gr ; //相对密度 + private String DLND ; //动力粘度 + private String DSZS ; //等熵指数 + private String BAK1 ; + private String BAK2 ; + private String BAK3 ; + + public String getJLD_ID() { + return JLD_ID; + } + + public void setJLD_ID(String JLD_ID) { + this.JLD_ID = JLD_ID; + } + + public String getJLD_NO() { + return JLD_NO; + } + + public void setJLD_NO(String JLD_NO) { + this.JLD_NO = JLD_NO; + } + + public String getJLD_NAME() { + return JLD_NAME; + } + + public void setJLD_NAME(String JLD_NAME) { + this.JLD_NAME = JLD_NAME; + } + + public String getReadTime() { + return ReadTime; + } + + public void setReadTime(String readTime) { + ReadTime = readTime; + } + + public String getCH4() { + return CH4; + } + + public void setCH4(String CH4) { + this.CH4 = CH4; + } + + public String getN2() { + return N2; + } + + public void setN2(String n2) { + N2 = n2; + } + + public String getCO2() { + return CO2; + } + + public void setCO2(String CO2) { + this.CO2 = CO2; + } + + public String getC2H6() { + return C2H6; + } + + public void setC2H6(String c2H6) { + C2H6 = c2H6; + } + + public String getC3H8() { + return C3H8; + } + + public void setC3H8(String c3H8) { + C3H8 = c3H8; + } + + public String getH2O() { + return H2O; + } + + public void setH2O(String h2O) { + H2O = h2O; + } + + public String getH2S() { + return H2S; + } + + public void setH2S(String h2S) { + H2S = h2S; + } + + public String getH2() { + return H2; + } + + public void setH2(String h2) { + H2 = h2; + } + + public String getCO() { + return CO; + } + + public void setCO(String CO) { + this.CO = CO; + } + + public String getO2() { + return O2; + } + + public void setO2(String o2) { + O2 = o2; + } + + public String getI_C4H10() { + return i_C4H10; + } + + public void setI_C4H10(String i_C4H10) { + this.i_C4H10 = i_C4H10; + } + + public String getN_C4H10() { + return n_C4H10; + } + + public void setN_C4H10(String n_C4H10) { + this.n_C4H10 = n_C4H10; + } + + public String getI_C5H12() { + return i_C5H12; + } + + public void setI_C5H12(String i_C5H12) { + this.i_C5H12 = i_C5H12; + } + + public String getN_C5H12() { + return n_C5H12; + } + + public void setN_C5H12(String n_C5H12) { + this.n_C5H12 = n_C5H12; + } + + public String getN_C6H14() { + return n_C6H14; + } + + public void setN_C6H14(String n_C6H14) { + this.n_C6H14 = n_C6H14; + } + + public String getN_C7H16() { + return n_C7H16; + } + + public void setN_C7H16(String n_C7H16) { + this.n_C7H16 = n_C7H16; + } + + public String getN_C8H18() { + return n_C8H18; + } + + public void setN_C8H18(String n_C8H18) { + this.n_C8H18 = n_C8H18; + } + + public String getN_C9H20() { + return n_C9H20; + } + + public void setN_C9H20(String n_C9H20) { + this.n_C9H20 = n_C9H20; + } + + public String getN_C10H22() { + return n_C10H22; + } + + public void setN_C10H22(String n_C10H22) { + this.n_C10H22 = n_C10H22; + } + + public String getHe() { + return He; + } + + public void setHe(String he) { + He = he; + } + + public String getAr() { + return Ar; + } + + public void setAr(String ar) { + Ar = ar; + } + + public String getBak() { + return bak; + } + + public void setBak(String bak) { + this.bak = bak; + } + + public String getGJ() { + return GJ; + } + + public void setGJ(String GJ) { + this.GJ = GJ; + } + + public String getKJ() { + return KJ; + } + + public void setKJ(String KJ) { + this.KJ = KJ; + } + + public String getGr() { + return Gr; + } + + public void setGr(String gr) { + Gr = gr; + } + + public String getDLND() { + return DLND; + } + + public void setDLND(String DLND) { + this.DLND = DLND; + } + + public String getDSZS() { + return DSZS; + } + + public void setDSZS(String DSZS) { + this.DSZS = DSZS; + } + + public String getBAK1() { + return BAK1; + } + + public void setBAK1(String BAK1) { + this.BAK1 = BAK1; + } + + public String getBAK2() { + return BAK2; + } + + public void setBAK2(String BAK2) { + this.BAK2 = BAK2; + } + + public String getBAK3() { + return BAK3; + } + + public void setBAK3(String BAK3) { + this.BAK3 = BAK3; + } +} diff --git a/src/main/java/org/gyk/modules/sssj/entity/NgSssj.java b/src/main/java/org/gyk/modules/sssj/entity/NgSssj.java new file mode 100644 index 0000000..76407a5 --- /dev/null +++ b/src/main/java/org/gyk/modules/sssj/entity/NgSssj.java @@ -0,0 +1,28 @@ +package org.gyk.modules.sssj.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; + +@Data +@TableName("cxc_sssj_ngzx") +@Accessors(chain = true) +@EqualsAndHashCode(callSuper = false) + +public class NgSssj implements Serializable { + @TableId(type = IdType.ASSIGN_UUID) + private String id; + private String stationId; + private String zhanName; + private String jldName; + private String gykbz; + private String val; + private String zt; + private String acquisitionTime; + +} diff --git a/src/main/java/org/gyk/modules/sssj/entity/PianyuanZhan.java b/src/main/java/org/gyk/modules/sssj/entity/PianyuanZhan.java new file mode 100644 index 0000000..2ecaa27 --- /dev/null +++ b/src/main/java/org/gyk/modules/sssj/entity/PianyuanZhan.java @@ -0,0 +1,132 @@ +package org.gyk.modules.sssj.entity; + +import com.fasterxml.jackson.annotation.JsonFormat; +import org.springframework.format.annotation.DateTimeFormat; + +import java.time.LocalDateTime; + +public class PianyuanZhan { + private String id; + private String jldname; //计量点名称 + + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + private LocalDateTime rq; + + private String wd; + private String yali; + + private String bkss; + private String gkss; + private String bkzl; + private String gkzl; + private String zrbklj; + private String jrlj; + + private String bkzl6; + private String bkzl4; + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getJldname() { + return jldname; + } + + public void setJldname(String jldname) { + this.jldname = jldname; + } + + public LocalDateTime getRq() { + return rq; + } + + public void setRq(LocalDateTime rq) { + this.rq = rq; + } + + public String getWd() { + return wd; + } + + public void setWd(String wd) { + this.wd = wd; + } + + public String getYali() { + return yali; + } + + public void setYali(String yali) { + this.yali = yali; + } + + public String getBkss() { + return bkss; + } + + public void setBkss(String bkss) { + this.bkss = bkss; + } + + public String getGkss() { + return gkss; + } + + public void setGkss(String gkss) { + this.gkss = gkss; + } + + public String getBkzl() { + return bkzl; + } + + public void setBkzl(String bkzl) { + this.bkzl = bkzl; + } + + public String getGkzl() { + return gkzl; + } + + public void setGkzl(String gkzl) { + this.gkzl = gkzl; + } + + public String getZrbklj() { + return zrbklj; + } + + public void setZrbklj(String zrbklj) { + this.zrbklj = zrbklj; + } + + public String getJrlj() { + return jrlj; + } + + public void setJrlj(String jrlj) { + this.jrlj = jrlj; + } + + public String getBkzl6() { + return bkzl6; + } + + public void setBkzl6(String bkzl6) { + this.bkzl6 = bkzl6; + } + + public String getBkzl4() { + return bkzl4; + } + + public void setBkzl4(String bkzl4) { + this.bkzl4 = bkzl4; + } +} diff --git a/src/main/java/org/gyk/modules/sssj/entity/Rishuju.java b/src/main/java/org/gyk/modules/sssj/entity/Rishuju.java new file mode 100644 index 0000000..96ff955 --- /dev/null +++ b/src/main/java/org/gyk/modules/sssj/entity/Rishuju.java @@ -0,0 +1,113 @@ +package org.gyk.modules.sssj.entity; + + +import lombok.Data; +import lombok.experimental.Accessors; + +import java.util.Date; + +@Data +@Accessors(chain = true) +public class Rishuju { + + /**主键*/ + private String id; + + /**创建日期*/ + private Date createTime; + + /**计量点ID*/ + private String jldId; + + /**气量*/ + private String jrl; + + /**计量点名称*/ + private String jldName; + + /**今日气量*/ + private String jData; + + /**年累计*/ + private String yData; + + /**月累计*/ + private String mData; + + /**管理单位*/ + private String danwei; + + + +// public String getjData() { +// return jData; +// } +// +// public void setjData(String jData) { +// this.jData = jData; +// } +// +// public String getDanwei() { +// return danwei; +// } +// +// public void setDanwei(String danwei) { +// this.danwei = danwei; +// } +// +// public String getmData() { +// return mData; +// } +// +// public void setmData(String mData) { +// this.mData = mData; +// } +// +// public String getyData() { +// return yData; +// } +// +// public void setyData(String yData) { +// this.yData = yData; +// } +// +// public String getId() { +// return id; +// } +// +// public void setId(String id) { +// this.id = id; +// } +// +// public Date getCreateTime() { +// return createTime; +// } +// +// public void setCreateTime(Date createTime) { +// this.createTime = createTime; +// } +// +// public String getJldId() { +// return jldId; +// } +// +// public void setJldId(String jldId) { +// this.jldId = jldId; +// } +// +// public String getJrl() { +// return jrl; +// } +// +// public void setJrl(String jrl) { +// this.jrl = jrl; +// } +// +// public String getJldName() { +// return jldName; +// } +// +// public void setJldName(String jldName) { +// this.jldName = jldName; +// } +} diff --git a/src/main/java/org/gyk/modules/sssj/entity/YasuoLssjBt.java b/src/main/java/org/gyk/modules/sssj/entity/YasuoLssjBt.java new file mode 100644 index 0000000..2b6ed87 --- /dev/null +++ b/src/main/java/org/gyk/modules/sssj/entity/YasuoLssjBt.java @@ -0,0 +1,33 @@ +package org.gyk.modules.sssj.entity; + +import java.io.Serializable; + +public class YasuoLssjBt implements Serializable { + private String bt; + private String wz; + private String zhi; + + public String getBt() { + return bt; + } + + public void setBt(String bt) { + this.bt = bt; + } + + public String getWz() { + return wz; + } + + public void setWz(String wz) { + this.wz = wz; + } + + public String getZhi() { + return zhi; + } + + public void setZhi(String zhi) { + this.zhi = zhi; + } +} diff --git a/src/main/java/org/gyk/modules/sssj/entity/YasuojiBjCanshu.java b/src/main/java/org/gyk/modules/sssj/entity/YasuojiBjCanshu.java new file mode 100644 index 0000000..d2dd4b4 --- /dev/null +++ b/src/main/java/org/gyk/modules/sssj/entity/YasuojiBjCanshu.java @@ -0,0 +1,53 @@ +package org.gyk.modules.sssj.entity; + +import java.io.Serializable; + +public class YasuojiBjCanshu implements Serializable { + private static final long serialVersionUID = 1L; + private String gykbz; //工业库标志 + + private Float baojingDi;//报警低值 + private Float baojingGao;//报警高值 + private Float tingjiDi;//停机低值 + private Float tingjiGao;//停机高值 + + public String getGykbz() { + return gykbz; + } + + public void setGykbz(String gykbz) { + this.gykbz = gykbz; + } + + public Float getBaojingDi() { + return baojingDi; + } + + public void setBaojingDi(Float baojingDi) { + this.baojingDi = baojingDi; + } + + public Float getBaojingGao() { + return baojingGao; + } + + public void setBaojingGao(Float baojingGao) { + this.baojingGao = baojingGao; + } + + public Float getTingjiDi() { + return tingjiDi; + } + + public void setTingjiDi(Float tingjiDi) { + this.tingjiDi = tingjiDi; + } + + public Float getTingjiGao() { + return tingjiGao; + } + + public void setTingjiGao(Float tingjiGao) { + this.tingjiGao = tingjiGao; + } +} diff --git a/src/main/java/org/gyk/modules/sssj/entity/YasuojiBjSj.java b/src/main/java/org/gyk/modules/sssj/entity/YasuojiBjSj.java new file mode 100644 index 0000000..481a84f --- /dev/null +++ b/src/main/java/org/gyk/modules/sssj/entity/YasuojiBjSj.java @@ -0,0 +1,103 @@ +package org.gyk.modules.sssj.entity; + +import java.io.Serializable; +import java.time.LocalDateTime; + +public class YasuojiBjSj implements Serializable { + private static final long serialVersionUID = 1L; + private String id; //工业库标志 + + private String bjId;//报警低值 + private LocalDateTime beginTime;//报警高值 + private LocalDateTime endTime;//报警高值 + private String bjMs;//停机低值 + private float canshuZhi;//停机高值 + private String stationname; + private String jizuhao; + private String zt; + private boolean saveFlag; + + public static long getSerialVersionUID() { + return serialVersionUID; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getBjId() { + return bjId; + } + + public void setBjId(String bjId) { + this.bjId = bjId; + } + + public LocalDateTime getBeginTime() { + return beginTime; + } + + public void setBeginTime(LocalDateTime beginTime) { + this.beginTime = beginTime; + } + + public LocalDateTime getEndTime() { + return endTime; + } + + public void setEndTime(LocalDateTime endTime) { + this.endTime = endTime; + } + + public String getBjMs() { + return bjMs; + } + + public void setBjMs(String bjMs) { + this.bjMs = bjMs; + } + + public float getCanshuZhi() { + return canshuZhi; + } + + public void setCanshuZhi(float canshuZhi) { + this.canshuZhi = canshuZhi; + } + + public String getStationname() { + return stationname; + } + + public void setStationname(String stationname) { + this.stationname = stationname; + } + + public String getJizuhao() { + return jizuhao; + } + + public void setJizuhao(String jizuhao) { + this.jizuhao = jizuhao; + } + + public String getZt() { + return zt; + } + + public void setZt(String zt) { + this.zt = zt; + } + + public boolean isSaveFlag() { + return saveFlag; + } + + public void setSaveFlag(boolean saveFlag) { + this.saveFlag = saveFlag; + } +} diff --git a/src/main/java/org/gyk/modules/sssj/entity/YasuojiJcxx.java b/src/main/java/org/gyk/modules/sssj/entity/YasuojiJcxx.java new file mode 100644 index 0000000..56306f7 --- /dev/null +++ b/src/main/java/org/gyk/modules/sssj/entity/YasuojiJcxx.java @@ -0,0 +1,71 @@ +package org.gyk.modules.sssj.entity; + +import java.io.Serializable; + +public class YasuojiJcxx implements Serializable { + private static final long serialVersionUID = 1L; + + private String jldName; //工业库标志 + private String stationName;//报警低值 + private String stationId; + private String departName;//停机低值 + private String ssgx1; //工业库标志 + private String ssgx2;//报警低值 + private String gykbz;//停机低值 + + public String getJldName() { + return jldName; + } + + public void setJldName(String jldName) { + this.jldName = jldName; + } + + public String getStationName() { + return stationName; + } + + public void setStationName(String stationName) { + this.stationName = stationName; + } + + public String getDepartName() { + return departName; + } + + public void setDepartName(String departName) { + this.departName = departName; + } + + public String getSsgx1() { + return ssgx1; + } + + public void setSsgx1(String ssgx1) { + this.ssgx1 = ssgx1; + } + + public String getSsgx2() { + return ssgx2; + } + + public void setSsgx2(String ssgx2) { + this.ssgx2 = ssgx2; + } + + public String getGykbz() { + return gykbz; + } + + public void setGykbz(String gykbz) { + this.gykbz = gykbz; + } + + public String getStationId() { + return stationId; + } + + public void setStationId(String stationId) { + this.stationId = stationId; + } +} diff --git a/src/main/java/org/gyk/modules/sssj/entity/YasuojiSj.java b/src/main/java/org/gyk/modules/sssj/entity/YasuojiSj.java new file mode 100644 index 0000000..4753035 --- /dev/null +++ b/src/main/java/org/gyk/modules/sssj/entity/YasuojiSj.java @@ -0,0 +1,95 @@ +package org.gyk.modules.sssj.entity; + +import com.fasterxml.jackson.annotation.JsonFormat; +import org.springframework.format.annotation.DateTimeFormat; + +import java.io.Serializable; +import java.time.LocalDateTime; + +public class YasuojiSj implements Serializable { + private static final long serialVersionUID = 1L; + + private String id; + private String stationName;//站场 + private String departName;//区 + private String ysjxh; //压缩机型号 + private String jizuHao;//机组号 + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + private LocalDateTime rq; + private String gykbz; + private String canshu; + private String shuju;// + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getStationName() { + return stationName; + } + + public void setStationName(String stationName) { + this.stationName = stationName; + } + + public String getDepartName() { + return departName; + } + + public void setDepartName(String departName) { + this.departName = departName; + } + + public String getYsjxh() { + return ysjxh; + } + + public void setYsjxh(String ysjxh) { + this.ysjxh = ysjxh; + } + + public String getJizuHao() { + return jizuHao; + } + + public void setJizuHao(String jizuHao) { + this.jizuHao = jizuHao; + } + + public LocalDateTime getRq() { + return rq; + } + + public void setRq(LocalDateTime rq) { + this.rq = rq; + } + + public String getShuju() { + return shuju; + } + + public void setShuju(String shuju) { + this.shuju = shuju; + } + + public String getGykbz() { + return gykbz; + } + + public void setGykbz(String gykbz) { + this.gykbz = gykbz; + } + + public String getCanshu() { + return canshu; + } + + public void setCanshu(String canshu) { + this.canshu = canshu; + } +} diff --git a/src/main/java/org/gyk/modules/sssj/entity/YasuojiSssj.java b/src/main/java/org/gyk/modules/sssj/entity/YasuojiSssj.java new file mode 100644 index 0000000..22780d4 --- /dev/null +++ b/src/main/java/org/gyk/modules/sssj/entity/YasuojiSssj.java @@ -0,0 +1,51 @@ +package org.gyk.modules.sssj.entity; + +import java.io.Serializable; + +public class YasuojiSssj implements Serializable { + private String stationId; + private String jldName; + private String gykbz; + private float val; + private String zt; + + public String getGykbz() { + return gykbz; + } + + public void setGykbz(String gykbz) { + this.gykbz = gykbz; + } + + public float getVal() { + return val; + } + + public void setVal(float val) { + this.val = val; + } + + public String getZt() { + return zt; + } + + public void setZt(String zt) { + this.zt = zt; + } + + public String getStationId() { + return stationId; + } + + public void setStationId(String stationId) { + this.stationId = stationId; + } + + public String getJldName() { + return jldName; + } + + public void setJldName(String jldName) { + this.jldName = jldName; + } +} diff --git a/src/main/java/org/gyk/modules/sssj/entity/Ysjdpxx.java b/src/main/java/org/gyk/modules/sssj/entity/Ysjdpxx.java new file mode 100644 index 0000000..71a7c28 --- /dev/null +++ b/src/main/java/org/gyk/modules/sssj/entity/Ysjdpxx.java @@ -0,0 +1,61 @@ +package org.gyk.modules.sssj.entity; + +import java.io.Serializable; + +public class Ysjdpxx implements Serializable { + + private String zhanc; + private String jzh; + private String zhuansu; + private String jqyl; + private String pqyl; + private String zt; + + public String getZhanc() { + return zhanc; + } + + public void setZhanc(String zhanc) { + this.zhanc = zhanc; + } + + public String getJzh() { + return jzh; + } + + public void setJzh(String jzh) { + this.jzh = jzh; + } + + public String getZhuansu() { + return zhuansu; + } + + public void setZhuansu(String zhuansu) { + this.zhuansu = zhuansu; + } + + public String getJqyl() { + return jqyl; + } + + public void setJqyl(String jqyl) { + this.jqyl = jqyl; + } + + public String getPqyl() { + return pqyl; + } + + public void setPqyl(String pqyl) { + this.pqyl = pqyl; + } + + public String getZt() { + return zt; + } + + public void setZt(String zt) { + this.zt = zt; + } +} diff --git a/src/main/java/org/gyk/modules/sssj/mapper/CxcQijingRBMapper.java b/src/main/java/org/gyk/modules/sssj/mapper/CxcQijingRBMapper.java new file mode 100644 index 0000000..c5a4185 --- /dev/null +++ b/src/main/java/org/gyk/modules/sssj/mapper/CxcQijingRBMapper.java @@ -0,0 +1,19 @@ +package org.gyk.modules.sssj.mapper; + +import com.baomidou.dynamic.datasource.annotation.DS; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; +import org.gyk.modules.sssj.entity.CxcQijingRB; + + +/** + * @Description: 气井日报 + * @Author: jeecg-boot + * @Date: 2021-08-18 + * @Version: V1.0 + */ + +@Mapper +public interface CxcQijingRBMapper extends BaseMapper { + +} diff --git a/src/main/java/org/gyk/modules/sssj/mapper/CxcRsjQijingMapper.java b/src/main/java/org/gyk/modules/sssj/mapper/CxcRsjQijingMapper.java new file mode 100644 index 0000000..48b7def --- /dev/null +++ b/src/main/java/org/gyk/modules/sssj/mapper/CxcRsjQijingMapper.java @@ -0,0 +1,27 @@ +package org.gyk.modules.sssj.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.gyk.modules.sssj.entity.CxcRsjQijing; + +import java.util.Date; +import java.util.List; +import java.util.Map; + +/** + * @Description: 气井日数据 + * @Author: jeecg-boot + * @Date: 2021-08-18 + * @Version: V1.0 + */ + +@Mapper +public interface CxcRsjQijingMapper extends BaseMapper { + + List> getYMDataByjh(String jh); + //更新气井日数据月累 + void updateYlj(@Param("date") Date date); + //更新气井日数据年累 + void updateNlj(@Param("date") Date date); +} diff --git a/src/main/java/org/gyk/modules/sssj/mapper/RishujuMapper.java b/src/main/java/org/gyk/modules/sssj/mapper/RishujuMapper.java new file mode 100644 index 0000000..1406c9d --- /dev/null +++ b/src/main/java/org/gyk/modules/sssj/mapper/RishujuMapper.java @@ -0,0 +1,37 @@ +package org.gyk.modules.sssj.mapper; + +import com.baomidou.dynamic.datasource.annotation.DS; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; +import org.gyk.modules.lssj.jldls.entity.CxcSssjLssjJldlsRsj; +import org.gyk.modules.sssj.entity.Rishuju; + +import java.util.List; +import java.util.Map; + +@Mapper +public interface RishujuMapper extends BaseMapper { + /** + * 分别查询多个计量点今月累计量 + * @return + * @param jldId + */ + List> getMouthDataByIds(@Param("jldId") String jldId); + + /** + * 分别查询多个计量点本年累计量 + * @return + * @param jldId + */ +// @Select("select jld_id , SUM(jrl)as jia from cxc_sssj_lssj_jldls_rsj where YEAR ( create_time ) = YEAR(NOW()) AND jld_id IN (#{jldId}) GROUP BY jld_id") + List> getYearDataByIds (@Param("jldId") String jldId); + /** + * 查询计量点月累和年累 查询一个计量点是单点的年累和月累 查询多个点是多点的年累和月累 + * @return + * @param jldId + */ + List> getYMDataByjldIds(@Param("jldId") String jldId); + +} diff --git a/src/main/java/org/gyk/modules/sssj/mapper/xml/CxcQijingRBMapper.xml b/src/main/java/org/gyk/modules/sssj/mapper/xml/CxcQijingRBMapper.xml new file mode 100644 index 0000000..3682bc1 --- /dev/null +++ b/src/main/java/org/gyk/modules/sssj/mapper/xml/CxcQijingRBMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/src/main/java/org/gyk/modules/sssj/mapper/xml/CxcRsjQijingMapper.xml b/src/main/java/org/gyk/modules/sssj/mapper/xml/CxcRsjQijingMapper.xml new file mode 100644 index 0000000..8740c95 --- /dev/null +++ b/src/main/java/org/gyk/modules/sssj/mapper/xml/CxcRsjQijingMapper.xml @@ -0,0 +1,52 @@ + + + + + + + UPDATE cxc_rsj_qijing a + INNER JOIN ( + SELECT + jh, + sum( c.scsj ) AS kjsjyl, + sum( c.rcql ) AS qlyl, + sum( c.rcyl ) AS ylyl, + sum( c.rcsl ) AS slyl + FROM + cxc_rsj_qijing c + WHERE + DATE_FORMAT( c.create_time, '%Y-%m' ) = DATE_FORMAT( #{date}, '%Y-%m' ) + GROUP BY + jh + ) b ON a.jh = b.jh + AND DATE_FORMAT( a.create_time, '%Y-%m-%d' ) = DATE_FORMAT( NOW( ), '%Y-%m-%d' ) + SET a.kjsjyl = b.kjsjyl, + a.qlyl = b.qlyl, + a.ylyl = b.ylyl, + a.slyl = b.slyl + + + + UPDATE cxc_rsj_qijing a + INNER JOIN ( + SELECT + jh, + sum( c.scsj ) AS kjsjnl, + sum( c.rcql ) AS qlnl, + sum( c.rcyl ) AS ylnl, + sum( c.rcsl ) AS slnl + FROM + cxc_rsj_qijing c + WHERE + YEAR ( create_time ) = YEAR ( #{date} ) + GROUP BY + jh + ) b ON a.jh = b.jh + AND DATE_FORMAT( a.create_time, '%Y-%m-%d' ) = DATE_FORMAT( NOW( ), '%Y-%m-%d' ) + SET a.kjsjnl = b.kjsjnl, + a.qlnl = b.qlnl, + a.ylnl = b.ylnl, + a.slnl = b.slnl + + + diff --git a/src/main/java/org/gyk/modules/sssj/mapper/xml/RishujuMapper.xml b/src/main/java/org/gyk/modules/sssj/mapper/xml/RishujuMapper.xml new file mode 100644 index 0000000..dc6600d --- /dev/null +++ b/src/main/java/org/gyk/modules/sssj/mapper/xml/RishujuMapper.xml @@ -0,0 +1,69 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/java/org/gyk/modules/sssj/service/ICxcRsjQijingService.java b/src/main/java/org/gyk/modules/sssj/service/ICxcRsjQijingService.java new file mode 100644 index 0000000..3ecb90f --- /dev/null +++ b/src/main/java/org/gyk/modules/sssj/service/ICxcRsjQijingService.java @@ -0,0 +1,24 @@ +package org.gyk.modules.sssj.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import org.gyk.modules.sssj.entity.CxcRsjQijing; + +import java.util.Date; +import java.util.List; +import java.util.Map; + + +/** + * @Description: 气井日数据 + * @Author: jeecg-boot + * @Date: 2021-08-18 + * @Version: V1.0 + */ +public interface ICxcRsjQijingService extends IService { + List> getYMDataByjh(String jh); + + //更新气井日数据月累 + void updateYlj(Date date); + // 更新气井日数据年累 + void updateNlj(Date date); +} diff --git a/src/main/java/org/gyk/modules/sssj/service/IGetScpzService.java b/src/main/java/org/gyk/modules/sssj/service/IGetScpzService.java new file mode 100644 index 0000000..247b2db --- /dev/null +++ b/src/main/java/org/gyk/modules/sssj/service/IGetScpzService.java @@ -0,0 +1,20 @@ +package org.gyk.modules.sssj.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import org.gyk.modules.sz.scpz.entity.CxcScdtJldxx; +import org.gyk.modules.sz.scpz.entity.CxcScdtScpz; +import org.gyk.modules.sz.scpz.entity.CxcSssjSzScsz; + +import java.util.List; +import java.util.Map; + +//输差配置 +public interface IGetScpzService extends IService { + + List getAllScpz(); + + public List getScpzByLb(String lb); + + public Map getScdtJldId(); +} + diff --git a/src/main/java/org/gyk/modules/sssj/service/IGetZcxxService.java b/src/main/java/org/gyk/modules/sssj/service/IGetZcxxService.java new file mode 100644 index 0000000..e492de8 --- /dev/null +++ b/src/main/java/org/gyk/modules/sssj/service/IGetZcxxService.java @@ -0,0 +1,12 @@ +package org.gyk.modules.sssj.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import org.gyk.modules.sz.zcpz.entity.CxcSssjZdjlzc; + +import java.util.List; + +public interface IGetZcxxService extends IService { + + // 获取ID为0的计量站场信息点 + List getZcxxById(String Id); +} diff --git a/src/main/java/org/gyk/modules/sssj/service/IRishujuService.java b/src/main/java/org/gyk/modules/sssj/service/IRishujuService.java new file mode 100644 index 0000000..7c12080 --- /dev/null +++ b/src/main/java/org/gyk/modules/sssj/service/IRishujuService.java @@ -0,0 +1,19 @@ +package org.gyk.modules.sssj.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import org.gyk.modules.sssj.entity.Rishuju; + +import java.util.Date; +import java.util.List; +import java.util.Map; + +public interface IRishujuService extends IService{ + + List> getMouthDataByIds (String jldId); + + List> getYearDataByIds (String jldId); + + List> getYMDataByjldIds (String jldId); + + +} diff --git a/src/main/java/org/gyk/modules/sssj/service/ISaveBjlsService.java b/src/main/java/org/gyk/modules/sssj/service/ISaveBjlsService.java new file mode 100644 index 0000000..a7d635c --- /dev/null +++ b/src/main/java/org/gyk/modules/sssj/service/ISaveBjlsService.java @@ -0,0 +1,11 @@ +package org.gyk.modules.sssj.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import org.gyk.modules.lssj.bjls.entity.CxcSssjLssjBjlsjl; + +import java.util.List; + +public interface ISaveBjlsService extends IService { + + List getWczBjxx(String bjId); +} diff --git a/src/main/java/org/gyk/modules/sssj/service/ISaveJldlsService.java b/src/main/java/org/gyk/modules/sssj/service/ISaveJldlsService.java new file mode 100644 index 0000000..46fbe9b --- /dev/null +++ b/src/main/java/org/gyk/modules/sssj/service/ISaveJldlsService.java @@ -0,0 +1,8 @@ +package org.gyk.modules.sssj.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import org.gyk.modules.lssj.jldls.entity.CxcSssjLssjJldls; + +public interface ISaveJldlsService extends IService { + +} diff --git a/src/main/java/org/gyk/modules/sssj/service/ISaveSclsService.java b/src/main/java/org/gyk/modules/sssj/service/ISaveSclsService.java new file mode 100644 index 0000000..6bf7abf --- /dev/null +++ b/src/main/java/org/gyk/modules/sssj/service/ISaveSclsService.java @@ -0,0 +1,9 @@ +package org.gyk.modules.sssj.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import org.gyk.modules.lssj.scls.entity.CxcSssjLssjScls; + +public interface ISaveSclsService extends IService { + + +} diff --git a/src/main/java/org/gyk/modules/sssj/service/impl/CxcRsjQijingServiceImpl.java b/src/main/java/org/gyk/modules/sssj/service/impl/CxcRsjQijingServiceImpl.java new file mode 100644 index 0000000..f68ee8e --- /dev/null +++ b/src/main/java/org/gyk/modules/sssj/service/impl/CxcRsjQijingServiceImpl.java @@ -0,0 +1,32 @@ +package org.gyk.modules.sssj.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.gyk.modules.sssj.entity.CxcRsjQijing; +import org.gyk.modules.sssj.mapper.CxcRsjQijingMapper; +import org.gyk.modules.sssj.service.ICxcRsjQijingService; +import org.springframework.stereotype.Service; + +import java.util.Date; +import java.util.List; +import java.util.Map; + + +/** + * @Description: 气井日数据 + * @Author: jeecg-boot + * @Date: 2021-08-18 + * @Version: V1.0 + */ +@Service +public class CxcRsjQijingServiceImpl extends ServiceImpl implements ICxcRsjQijingService { + @Override + public List> getYMDataByjh(String jh) { + return baseMapper.getYMDataByjh(jh); + } + + @Override + public void updateYlj(Date date){baseMapper.updateYlj(date);} + + @Override + public void updateNlj(Date date){baseMapper.updateNlj(date);} +} diff --git a/src/main/java/org/gyk/modules/sssj/service/impl/GetScpzServiceImpl.java b/src/main/java/org/gyk/modules/sssj/service/impl/GetScpzServiceImpl.java new file mode 100644 index 0000000..a711aff --- /dev/null +++ b/src/main/java/org/gyk/modules/sssj/service/impl/GetScpzServiceImpl.java @@ -0,0 +1,64 @@ +package org.gyk.modules.sssj.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.gyk.modules.sssj.service.IGetScpzService; +import org.gyk.modules.sz.scpz.entity.CxcScdtJldxx; +import org.gyk.modules.sz.scpz.entity.CxcScdtScpz; +import org.gyk.modules.sz.scpz.entity.CxcSssjSzScsz; +import org.gyk.modules.sz.scpz.mapper.ScszMapper; +import org.springframework.cache.annotation.Cacheable; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.function.Function; +import java.util.stream.Collectors; + +@Service +public class GetScpzServiceImpl extends ServiceImpl implements IGetScpzService { + + @Override +// @Cacheable(value = "sqlBj", key = "#root.methodName") + public List getAllScpz() { + List list = new ArrayList<>(); + try { + list = baseMapper.getAllScpz(); + } + catch (Exception e) { + System.out.println(e); + } + return list; + } + + @Override + @Cacheable(value = "sqlBj", key = "#root.methodName+#lb") + public List getScpzByLb(String lb) { + List list = new ArrayList<>(); + try { + list = baseMapper.getScpzByLb(lb); + } + catch (Exception e) { + System.out.println(e); + } + return list; + } + + @Override + @Cacheable(value = "sqlBj", key = "#root.methodName") + public Map getScdtJldId() { + Map map = new HashMap<>(); + + try { + List list = baseMapper.getScdtJldId(); + + map = list.stream().collect(Collectors.toMap(CxcScdtJldxx::getJldname, Function.identity(),(k1,k2)->k2)); + } catch (Exception e) { + System.out.println(e); + } + return map; + } + + +} diff --git a/src/main/java/org/gyk/modules/sssj/service/impl/GetZcxxServiceImpl.java b/src/main/java/org/gyk/modules/sssj/service/impl/GetZcxxServiceImpl.java new file mode 100644 index 0000000..287f812 --- /dev/null +++ b/src/main/java/org/gyk/modules/sssj/service/impl/GetZcxxServiceImpl.java @@ -0,0 +1,21 @@ +package org.gyk.modules.sssj.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.gyk.modules.lssj.jldls.mapper.JldlsMapper; +import org.gyk.modules.sssj.entity.PianyuanZhan; +import org.gyk.modules.sssj.service.IGetZcxxService; +import org.gyk.modules.sz.jldxx.entity.CxcSssjSzJldxx; +import org.gyk.modules.sz.zcpz.entity.CxcSssjZdjlzc; +import org.gyk.modules.sz.zcpz.mapper.CxcSssjZdjlzcMapper; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +public class GetZcxxServiceImpl extends ServiceImpl implements IGetZcxxService { + + @Override + public List getZcxxById(String Id) { + return baseMapper.getZcxxById(Id); + } +} diff --git a/src/main/java/org/gyk/modules/sssj/service/impl/RishujuServiceImpl.java b/src/main/java/org/gyk/modules/sssj/service/impl/RishujuServiceImpl.java new file mode 100644 index 0000000..f2971a5 --- /dev/null +++ b/src/main/java/org/gyk/modules/sssj/service/impl/RishujuServiceImpl.java @@ -0,0 +1,33 @@ +package org.gyk.modules.sssj.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.gyk.modules.sssj.entity.Rishuju; +import org.gyk.modules.sssj.mapper.RishujuMapper; +import org.gyk.modules.sssj.service.IRishujuService; +import org.springframework.stereotype.Service; + +import java.util.Date; +import java.util.List; +import java.util.Map; + +@Service +public class RishujuServiceImpl extends ServiceImpl implements IRishujuService { + + + @Override + public List> getMouthDataByIds(String jldId) { + return baseMapper.getMouthDataByIds(jldId); + } + + @Override + public List> getYearDataByIds(String jldId) { + return baseMapper.getYearDataByIds(jldId); + } + @Override + public List> getYMDataByjldIds (String jldId) { + return baseMapper.getYMDataByjldIds(jldId); + } + + + +} diff --git a/src/main/java/org/gyk/modules/sssj/service/impl/SaveBjlsServiceImpl.java b/src/main/java/org/gyk/modules/sssj/service/impl/SaveBjlsServiceImpl.java new file mode 100644 index 0000000..8f570ff --- /dev/null +++ b/src/main/java/org/gyk/modules/sssj/service/impl/SaveBjlsServiceImpl.java @@ -0,0 +1,18 @@ +package org.gyk.modules.sssj.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.gyk.modules.lssj.bjls.entity.CxcSssjLssjBjlsjl; +import org.gyk.modules.lssj.bjls.mapper.BjMapper; +import org.gyk.modules.sssj.service.ISaveBjlsService; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +public class SaveBjlsServiceImpl extends ServiceImpl implements ISaveBjlsService { + + @Override + public List getWczBjxx(String bjId) { + return baseMapper.getWczBjxx(bjId); + } +} diff --git a/src/main/java/org/gyk/modules/sssj/service/impl/SaveJldlsServiceImpl.java b/src/main/java/org/gyk/modules/sssj/service/impl/SaveJldlsServiceImpl.java new file mode 100644 index 0000000..6f935fa --- /dev/null +++ b/src/main/java/org/gyk/modules/sssj/service/impl/SaveJldlsServiceImpl.java @@ -0,0 +1,12 @@ +package org.gyk.modules.sssj.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.gyk.modules.lssj.jldls.entity.CxcSssjLssjJldls; +import org.gyk.modules.lssj.jldls.mapper.JldlsMapper; +import org.gyk.modules.sssj.service.ISaveJldlsService; +import org.springframework.stereotype.Service; + +@Service +public class SaveJldlsServiceImpl extends ServiceImpl implements ISaveJldlsService { + +} diff --git a/src/main/java/org/gyk/modules/sssj/service/impl/SaveSclsServiceImpl.java b/src/main/java/org/gyk/modules/sssj/service/impl/SaveSclsServiceImpl.java new file mode 100644 index 0000000..77c70bb --- /dev/null +++ b/src/main/java/org/gyk/modules/sssj/service/impl/SaveSclsServiceImpl.java @@ -0,0 +1,12 @@ +package org.gyk.modules.sssj.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.gyk.modules.lssj.scls.entity.CxcSssjLssjScls; +import org.gyk.modules.lssj.scls.mapper.SclsMapper; +import org.gyk.modules.sssj.service.ISaveSclsService; +import org.springframework.stereotype.Service; + +@Service +public class SaveSclsServiceImpl extends ServiceImpl implements ISaveSclsService { + +} diff --git a/src/main/java/org/gyk/modules/sssj/util/AsyncTask.java b/src/main/java/org/gyk/modules/sssj/util/AsyncTask.java new file mode 100644 index 0000000..8e9182c --- /dev/null +++ b/src/main/java/org/gyk/modules/sssj/util/AsyncTask.java @@ -0,0 +1,45 @@ +package org.gyk.modules.sssj.util; + +import org.apache.thrift.TException; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.scheduling.annotation.Async; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; + +/** + * @Description: 计量点异步实时推送 + * @Author: liao + * @Date: 2021-04-05 + * @Version: V1.0 + */ +@Component +public class AsyncTask { + public static int num_visitor = 0; + @Value("${HeartBeat}") + private int HeartBeat; + + @Async + @Scheduled(initialDelay = 3000, fixedRate = Long.MAX_VALUE) + public void testAsync() throws InterruptedException, TException { + + KDBClient.KHServerTime = 0L; + KDBClient.KDBServerConnect(); + //从工业实时服务器上获取所有的计量点参数名字并存储在AllName中 + KDBClient.KDBTagGetAllNames(); + //获取每个计量点所属的单位、站场和计量点名称 + KDBClient.KDBTagGetZhanc(KDBClient.AllName); + + while (true) { + try { + if (!KDBClient.ServerIsConnected()) { + KDBClient.KDBServerConnect(); + } + KDBClient.KDBDataGetCurrentValue(KDBClient.AllName); + } catch (Exception e) { + KDBClient.KDBServerDisconnect(); + } + Thread.sleep(HeartBeat); + } + } +} + diff --git a/src/main/java/org/gyk/modules/sssj/util/ConfigUtils.java b/src/main/java/org/gyk/modules/sssj/util/ConfigUtils.java new file mode 100644 index 0000000..68e7d41 --- /dev/null +++ b/src/main/java/org/gyk/modules/sssj/util/ConfigUtils.java @@ -0,0 +1,21 @@ +package org.gyk.modules.sssj.util; + +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Component; + +import javax.annotation.PostConstruct; + +@Component +public class ConfigUtils { + @Value("${Yasuojisavetime}") + private int Yasuojisavetime; + + private static int savetime; + @PostConstruct + public void getSavetime() { + savetime = this.Yasuojisavetime; + } + public static int getsavetime() { + return savetime; + } +} diff --git a/src/main/java/org/gyk/modules/sssj/util/ExcelUtil.java b/src/main/java/org/gyk/modules/sssj/util/ExcelUtil.java new file mode 100644 index 0000000..fcbb693 --- /dev/null +++ b/src/main/java/org/gyk/modules/sssj/util/ExcelUtil.java @@ -0,0 +1,201 @@ +package org.gyk.modules.sssj.util; + + +import lombok.extern.slf4j.Slf4j; +import org.apache.poi.hssf.usermodel.HSSFWorkbook; +import org.apache.poi.ss.usermodel.CellType; +import org.apache.poi.ss.usermodel.Row; +import org.apache.poi.ss.usermodel.Sheet; +import org.apache.poi.ss.usermodel.Workbook; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; + +import javax.servlet.http.HttpServletResponse; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.net.URLEncoder; +import java.util.List; +import java.util.Map; +import java.util.regex.Pattern; + +@Slf4j +public class ExcelUtil { + /** + * 判断excel文件类型正则表达式 + */ + private static final String IS_EXCEL = "^.+\\.(?i)((xls)|(xlsx))$"; + + /** + * 判断是否为 xls后缀版本的excel + */ + private static final String IS_XLS_EXCEL = "^.+\\.(?i)(xls)$"; + + /** + * 存放excel模板的目录 + */ + private static final String CLASS_PATH = "templates/excel/"; + + /** + * 动态表头 + */ + public static final String TABLE_NAME_HEAD = "table_name_head"; + + public static final String LABEL = "label"; + + public static final String KEY = "key"; + +// public static void exportExcel(String execlTempleName, Map map, HttpServletResponse response) throws Exception { +// ExcelUtil.ExcelTemplate excelTemplate = ExcelUtil.ExcelTemplate.init(execlTempleName + ".xlsx"); +// Workbook workbook = excelTemplate.getWorkbook(); +// Sheet sheetAt = workbook.getSheetAt(0); +// //获取动态表头 +// if (map.get(TABLE_NAME_HEAD) == null || !(map.get(TABLE_NAME_HEAD) instanceof List)) { +// log.info("动态标题格式异常,导出失败!"); +// return; +// } +// //动态表头 +// List> tableHead = (List>) map.get(TABLE_NAME_HEAD); +// //设置表头 +// Row tempRow = sheetAt.createRow(0); +// int col = 0; +// for (Map tableHeadMap: tableHead) { +// String tableName = tableHeadMap.get(LABEL).toString(); +// tempRow.createCell(col++).setCellValue(tableName); +// } +// //填充表内容 +// int rowValue = 1; +// //创建数据行 +// if (map.get("data") == null || !(map.get("data") instanceof List)) { +// log.info("数据格式异常,导出失败!"); +// return; +// } +// List dataList = (List) map.get("data"); +// Row row = sheetAt.createRow(rowValue); +// for (Map dataMap : dataList) { +// row = sheetAt.createRow(rowValue); +// col = 0; +// for (Map tableHeadMap : tableHead) { +// String fileName = tableHeadMap.get(KEY).toString(); +// String value = dataMap.get(fileName) != null ? dataMap.get(fileName).toString() : ""; +// if(!value.isEmpty()&& Pattern.matches("[-]?[0-9]*[.]?[0-9]*",value)){ +// row.createCell(col).setCellType(CellType.NUMERIC); +// double dobValue= Double.valueOf(value); +// row.createCell(col++).setCellValue(dobValue); +// }else { +// row.createCell(col).setCellType(CellType.STRING); +// row.createCell(col++).setCellValue(value); +// } +// } +// rowValue = rowValue + 1; +// } +// String fileName = "DFlow" + System.currentTimeMillis(); +// excelTemplate.export(response, fileName); +// return; +// } +// +// /** +// * 获取response输出流 +// * +// * @param fileName 文件名 +// * @param response 响应体 +// * @return OutputStream +// */ +// private static OutputStream getOutputStream(String fileName, HttpServletResponse response) throws Exception { +// try { +// fileName = URLEncoder.encode(fileName + ".xlsx", "UTF-8"); +// response.setContentType("octets/stream"); +// response.setHeader("Content-disposition", "attachment;filename=" + fileName + ";" + "filename*=utf-8''" + fileName); +// return response.getOutputStream(); +// } catch (IOException e) { +// log.error("设置excel输出流异常!文件名:{}", fileName, e); +// throw e; +// } +// } +// +// /** +// * 构建 Workbook 对象 +// * +// * @param templateName 模板文件名 +// * @return Workbook +// */ +// public static Workbook buildWorkbook(String templateName) throws Exception { +// Workbook workbook; +// try { +// if (templateName.matches(IS_EXCEL)) { +// // 得到文件输入流对象 +// InputStream inputStream = ExcelUtil.class.getClassLoader().getResourceAsStream(CLASS_PATH + templateName); +// if (inputStream == null) { +// throw new Exception("找不到excel模板文件"); +// } +// +// boolean isXlsExcel = templateName.matches(IS_XLS_EXCEL); +// // 创建工作簿,并传递要读取的文件 +// workbook = isXlsExcel ? new HSSFWorkbook(inputStream) : new XSSFWorkbook(inputStream); +// inputStream.close(); +// } else { +// throw new Exception("文件格式不是xls或xlsx"); +// } +// return workbook; +// } catch (Exception e) { +// log.info("获取Workbook对象异常!msg:{}", e.getMessage(), e); +// throw e; +// } +// +// } +// +// /** +// * excel 模板类 +// */ +// public static class ExcelTemplate { +// +// private Workbook workbook; +// +// /** +// * 通过文件名称读取模板文件并初始化ExcelTemplate对象 +// * +// * @param fileName 模板文件名 +// * @return ExcelTemplate +// */ +// public static ExcelTemplate init(String fileName) throws Exception { +// ExcelTemplate excelTemplate = new ExcelTemplate(); +// Workbook workbook = ExcelUtil.buildWorkbook(fileName); +// excelTemplate.setWorkbook(workbook); +// return excelTemplate; +// } +// +// /** +// * 导出excel +// * +// * @param response 响应体 +// * @param newExcelName 自定义导出excel的文件名 +// */ +// public void export(HttpServletResponse response, String newExcelName) throws Exception { +// OutputStream out = null; +// try { +// out = getOutputStream(newExcelName, response); +// ByteArrayOutputStream ops = new ByteArrayOutputStream(); +// workbook.write(ops); +// out.write(ops.toByteArray()); +// } finally { +// +// try { +// if (out != null) { +// out.close(); +// } +// } catch (IOException e) { +// e.printStackTrace(); +// } +// +// } +// } +// +// public void setWorkbook(Workbook workbook) { +// this.workbook = workbook; +// } +// +// public Workbook getWorkbook() { +// return workbook; +// } +// } +} diff --git a/src/main/java/org/gyk/modules/sssj/util/KDBClient.java b/src/main/java/org/gyk/modules/sssj/util/KDBClient.java new file mode 100644 index 0000000..57b7a47 --- /dev/null +++ b/src/main/java/org/gyk/modules/sssj/util/KDBClient.java @@ -0,0 +1,416 @@ +package org.gyk.modules.sssj.util; + + +import KHThrift.*; +import org.apache.thrift.TApplicationException; +import org.apache.thrift.TException; +import org.apache.thrift.protocol.TProtocolException; +import org.apache.thrift.transport.TTransportException; +import org.gyk.modules.sssj.entity.GykDataProperties; +import org.gyk.modules.sssj.service.ISaveBjlsService; +import org.gyk.modules.sssj.service.ISaveJldlsService; +import org.gyk.modules.sz.bjpz.mapper.CxcSssjSzBjszMapper; +import org.gyk.modules.sz.jldxx.service.ICxcSssjSzJldxxService; +import org.gyk.modules.sz.jldxx.service.IGetJldxxService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Component; + +import javax.annotation.PostConstruct; +import javax.annotation.Resource; +import java.time.LocalDateTime; +import java.time.ZoneOffset; +import java.time.format.DateTimeFormatter; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.concurrent.TimeUnit; +import java.util.stream.Collectors; +/** + * @Description: 计量点实时数据方法 + * @Author: liao + * @Date: 2021-04-05 + * @Version: V1.0 + */ +//@Cacheable +//@Log4j +@Component +public class KDBClient { + public static KDBApi m_Client = new KDBApi(); + public static List tageNames = new ArrayList<>(); +// static CacheManager manager = CacheManager.getInstance(); +// public static Cache cacheKHData; +// static ResourceBundle RESOURCE_BUNDLE; + public static long KHServerTime; + public static List AllName = new ArrayList<>(); + public static Map map_res = new HashMap<>(); + public static List AllJldProperties = new ArrayList<>(); + public static Map map_yasuoji = new HashMap<>(); + + @Autowired + private IGetJldxxService getJldXxService; + @Autowired + private ISaveJldlsService saveJldlsService; + @Resource + private CxcSssjSzBjszMapper bjszMapper; + @Autowired + private ISaveBjlsService saveBjlsService; + public static KDBClient judge; + public KDBClient() { + } + @PostConstruct + public void init(){ + judge = this ; + judge.getJldXxService = this.getJldXxService; + judge.saveJldlsService = this.saveJldlsService; + judge.bjszMapper = this.bjszMapper; + judge.saveBjlsService = this.saveBjlsService; + } + @Value("${KH.ServerName}") + private String KH_ServerName; + @Value("${KH.ServerPort}") + private int KH_ServerPort; + @Value("${KH.UserName}") + private String KH_UserName; + @Value("${KH.Password}") + private String KH_Password; + @Value("${KH.NetworkTimeout}") + private int KH_NetworkTimeout; + private static String KH_ServerName1; + private static int KH_ServerPort1; + private static String KH_UserName1; + private static String KH_Password1; + private static int KH_NetworkTimeout1; + @PostConstruct + public void setServe() { + KH_ServerName1 = this.KH_ServerName; + KH_ServerPort1 = this.KH_ServerPort; + KH_UserName1 = this.KH_UserName; + KH_Password1 = this.KH_Password; + KH_NetworkTimeout1 = this.KH_NetworkTimeout; + } + @Autowired + private ICxcSssjSzJldxxService cxcSssjSzJldxxService; + + private static Logger log = LoggerFactory.getLogger(KDBClient.class); + + //连接工业库-实时数据库 + public static boolean KDBServerConnect() { + ThriftConnectOption ConnOption = new ThriftConnectOption(); + ConnOption.ServerName = KH_ServerName1; + ConnOption.ServerPort = KH_ServerPort1; + ConnOption.UserName = KH_UserName1; + ConnOption.Password = KH_Password1; + ConnOption.NetworkTimeout = KH_NetworkTimeout1; + KHServerTime = 0L; + ThriftConnectRet Ret = null; + + try { + Ret = m_Client.KDBServerConnect(ConnOption); + if (Ret.Ret == 0) { + log.info("实时数据库 KDBServerConnect-连接成功"); + return true; + } + log.error( "实时数据库 KDBServerConnect" + Ret); + return false; + } catch (TTransportException var3) { + log.error( "实时数据库 KDBServerConnect" + Ret); + var3.printStackTrace(); + } catch (TException var4) { + var4.printStackTrace(); + } + return false; + } + //判断工业库-实时数据库是否连接 + public static boolean KDBServerIsConnected(int count) { + boolean KDBServerIsConnected = false; + byte counNum = 20; + + try { + KDBServerIsConnected = m_Client.KDBServerIsConnected(); + if (KDBServerIsConnected) { + return true; + } else { + log.error("实时数据库 KDBServerIsConnected-未连接"); + return KDBServerConnect(); + } + } catch (TTransportException var4) { + KDBServerRsconnect(); + log.error("实时数据库 KDBServerIsConnected-异常:TProtocolException"); + return count == counNum ? false : KDBServerIsConnected(count + 1); + } catch (TProtocolException var5) { + KDBServerRsconnect(); + log.error("实时数据库 KDBServerIsConnected-异常:TProtocolException"); + return count == counNum ? false : KDBServerIsConnected(count + 1); + } catch (TApplicationException var6) { + KDBServerRsconnect(); + log.error("实时数据库 KDBServerIsConnected-异常:TApplicationException"); + return count == counNum ? false : KDBServerIsConnected(count + 1); + } catch (Exception var7) { + KDBServerRsconnect(); + var7.printStackTrace(); + log.error("实时数据库 KDBServerIsConnected-异常"); + return count == counNum ? false : KDBServerIsConnected(count + 1); + } + } + //判断工业库-服务器是否连接 + public static boolean ServerIsConnected() { + boolean KDBServerIsConnected = false; + + try { + KDBServerIsConnected = m_Client.KDBServerIsConnected(); + if (KDBServerIsConnected) { + return true; + } else { + log.error("实时数据库 KDBServerIsConnected-未连接"); + return false; + } + } catch (TTransportException var4) { + log.error("实时数据库 KDBServerIsConnected-异常:TProtocolException"); + return false; + } catch (TProtocolException var5) { + log.error("实时数据库 KDBServerIsConnected-异常:TProtocolException"); + return false; + } catch (TApplicationException var6) { + log.error("实时数据库 KDBServerIsConnected-异常:TApplicationException"); + return false; + } catch (Exception var7) { + //var7.printStackTrace(); + log.error("实时数据库 KDBServerIsConnected-异常"); + return false; + } + + } + //将工业库-实时数据库重启连接 + public static void KDBServerRsconnect() { + int Ret = 0; + + try { + Ret = m_Client.KDBServerDisconnect(); + + if (Ret == 0) { + log.info("实时数据库 KDBServerDisconnect-关闭成功"); + } else { + log.error("实时数据库 KDBServerDisconnect" + Ret); + } + } catch (TProtocolException var2) { + log.error("实时数据库 KDBServerDisconnect" + Ret); + var2.printStackTrace(); + } catch (TException var3) { + var3.printStackTrace(); + } + KDBServerConnect(); + } + //关闭工业库-实时数据库 + static void KDBServerDisconnect() { + int Ret = 0; + + try { + Ret = m_Client.KDBServerDisconnect(); + if (Ret == 0) { + log.info("实时数据库 KDBServerDisconnect-关闭成功"); + } else { + log.error("实时数据库 KDBServerDisconnect" + Ret); + } + } catch (TProtocolException var3) { + log.error("实时数据库 KDBServerDisconnect" + Ret); + var3.printStackTrace(); + } catch (TException var4) { + var4.printStackTrace(); + } + } + //获取“工业库”所有计量点(变量)名称 + public static void KDBTagGetAllNames() { + long newtime = System.currentTimeMillis(); + if (KDBServerIsConnected(0)) { + try { + ThriftTagGetNamesRet Ret = m_Client.KDBTagGetAllNames(); + AllName = Ret.TagNames; + + if (Ret.Ret == 0) { + tageNames = Ret.TagNames; + } else { + System.out.println(String.format("Get tag all names failed:%d", Ret.Ret)); + } + } catch (TException var3) { + var3.printStackTrace(); + } + } + } + //获取每个计量点属性:所属的单位、站场和计量点名称 + public static void KDBTagGetZhanc(List TagNames) throws TException { + if (KDBServerIsConnected(0)) { + ThriftTagFields TagFields = new ThriftTagFields(); +// TagFields表示属性配置 ,额外传参数 + TagFields.TagName = true; + TagFields.TagId = true; + TagFields.EngineeringUnit = true; + TagFields.UserGeneral5 = true; + TagFields.UserGeneral6 = true; + TagFields.UserGeneral7 = true; + + List AllJld = new ArrayList<>(); + + if (TagNames.size() > 0) { //对传来的计量点列表进行判断 + TagNames.forEach(item -> { //遍历TagNames + ThriftTagGetPropertiesRet Ret = null; + try { + Ret = m_Client.KDBTagGetProperties(item.toString(), TagFields); + if (Ret.Ret == 0) { + ThriftTagProperties ttgp = Ret.TagProperties; +// log.info(" "item:"+item+"单位:" + ttgp.UserGeneral5 + " 站场:" + ttgp.UserGeneral6+"other:"+ttgp.UserGeneral7); + GykDataProperties JldCs = new GykDataProperties(item, ttgp.TagId,ttgp.UserGeneral5, ttgp.UserGeneral6, ttgp.UserGeneral7,ttgp.EngineeringUnit); + AllJld.add((JldCs)); + } + } catch (TException e) { + e.printStackTrace(); + } + }); +// 将带属性的AllJld按管理区、站场分组,这里不再需要,分组已用jldxx表实现 +// AllJldProperties = AllJld.stream().sorted(Comparator.comparing(GykDataProperties::getQu).thenComparing(GykDataProperties::getZhan)).collect(Collectors.toList()); + AllJldProperties = AllJld; + } + } + } + //修正时区,获得正确时间参数 + public static String timeToStr(long num) { + String time = ""; + String pattern = "yyyy-MM-dd HH:mm:ss"; + //使用的时区都是东8区,也就是北京时间。这是为了防止服务器设置时区错误时导致时间不对,如果您是其他时区,请自行修改 + LocalDateTime dateTime = LocalDateTime.ofEpochSecond(num, 0, ZoneOffset.ofHours(8)); + time = dateTime.format(DateTimeFormatter.ofPattern(pattern)); + return time; + } + //获取“工业库”实时数据+值+属性 + public static synchronized void KDBDataGetCurrentValue(List TagNames) { + if (KDBServerIsConnected(0)) { +// 参数属性设置为真 + ThriftTagFields TagFields = new ThriftTagFields(); + TagFields.AllFields = true; +// 每次调用清缓存map_res +// map_res.clear();//2020-09-17 + + try { + ThriftDataGetCurrentValueRet Ret = m_Client.KDBDataGetCurrentValue(TagNames); + if (Ret.Ret == 0) { + List r = KDBConvert.Convert(Ret.DataProperties); +// 把参数对应的每个属性,都加入map_res + for (int n = 0; n < r.size(); ++n) { +// log.info("name:"+(String)TagNames.get(n)+" value:"+getValue((KDBDataProperties)r.get(n))); + map_res.put((String) TagNames.get(n), getValue((KDBDataProperties) r.get(n))); + } + + int getTime1 = m_Client.KDBServerGetTime().CurrentTime.Seconds; +// log.info("GYK server time: " + timeToStr(getTime1)); + + } else { + System.out.println(String.format("Data get current value failed:%d", Ret)); + } + } catch (TException var8) { + var8.printStackTrace(); + } + } + } + // 获得所有计量点+数据的map + public static Map MapJldData() throws InterruptedException { + + Map AllJldMap = null; + + try { + Map map_res_jl = new HashMap<>(); +// 以防map_res每次清空时,显示空值,使其延时0.1m + while (map_res.size()<1) { + //MILLISECONDS表示以毫秒为单位延时 + TimeUnit.MILLISECONDS.sleep(1000); + } +// 重新存储一个map,使读取数据时确定一个数据表,不会出现前后混乱 + map_res_jl.putAll(map_res); + + //对筛选出的List表,从map_jl中获取对应的计量点的值 + AllJldProperties.forEach(item -> { + String val = map_res_jl.get(item.getTagName()); + + if (!val.isEmpty()) { + item.setvalue( val); + } else { + item.setvalue("0"); + } + }); + AllJldMap = AllJldProperties.stream().collect( + Collectors.toMap(GykDataProperties::getTagId,GykDataProperties::getvalue)); + + + } catch (Exception e) { + e.printStackTrace(); + } + return AllJldMap; + } + // 获得参数对应属性中的value值,KDBDataGetCurrentValue接口中调用【不懂value值来源??】 + public static String getValue(KDBDataProperties KDBDataProperties) { + String rls = "-"; + switch (KDBDataProperties.Value.DataType) { + case 0: + rls = String.valueOf(KDBDataProperties.Value.Value.emptyVal); + break; + case 1: + rls = String.valueOf(KDBDataProperties.Value.Value.bitVal); + break; + case 2: + rls = String.valueOf(KDBDataProperties.Value.Value.i1Val); + break; + case 3: + rls = String.valueOf(KDBDataProperties.Value.Value.ui1Val); + break; + case 4: + rls = String.valueOf(KDBDataProperties.Value.Value.i2Val); + break; + case 5: + rls = String.valueOf(KDBDataProperties.Value.Value.ui2Val); + break; + case 6: + rls = String.valueOf(KDBDataProperties.Value.Value.i4Val); + break; + case 7: + rls = String.valueOf(KDBDataProperties.Value.Value.ui4Val); + break; + case 8: + rls = String.valueOf(KDBDataProperties.Value.Value.i8Val); + break; + case 9: + rls = String.valueOf(KDBDataProperties.Value.Value.ui8Val); + break; + case 10: + rls = String.valueOf(KDBDataProperties.Value.Value.r4Val); + break; + case 11: + rls = String.valueOf(KDBDataProperties.Value.Value.r8Val); + break; + case 12: + rls = KDBDataProperties.Value.Value.strVal; + break; + case 13: + rls = KDBDataProperties.Value.Value.wstrVal; + break; + case 14: + rls = "" + KDBDataProperties.Value.Value.tsVal; + break; + case 15: + rls = "" + KDBDataProperties.Value.Value.blobVal; + case 16: + default: + break; + case 17: + rls = String.valueOf(KDBDataProperties.Value.Value.ftVal); + break; + case 18: + rls = "" + KDBDataProperties.Value.Value.decVal; + } + + return rls; + } + +} + diff --git a/src/main/java/org/gyk/modules/sssj/util/LogUtil.java b/src/main/java/org/gyk/modules/sssj/util/LogUtil.java new file mode 100644 index 0000000..d71917c --- /dev/null +++ b/src/main/java/org/gyk/modules/sssj/util/LogUtil.java @@ -0,0 +1,465 @@ +//package org.gyk.modules.sssj.util; +// +//import org.slf4j.Logger; +//import org.slf4j.LoggerFactory; +// +//import java.util.HashMap; +//import java.util.Map; +// +//public class LogUtil { +// private static final Map, Logger> logMap = new HashMap(); +// public LogUtil() { +// } +// private static Logger getLog(Object obj) { +// Class clazz = null; +// if (obj == null) { +// throw new IllegalArgumentException("记录日志对象不能为空!"); +// } else { +// if (obj instanceof Class) { +// clazz = (Class) obj; +// } else { +// clazz = obj.getClass(); +// } +// +// Logger logger = (Logger) logMap.get(clazz); +// if (logger == null) { +// logger = LoggerFactory.getLogger(clazz); +// logMap.put(clazz, logger); +// } +// +// return logger; +// } +// } +// +// public static void logInfo(Object obj, Object message) { +// Logger logger = getLog(obj); +// if (logger.isInfoEnabled()) { +// logger.info(bufferToString(message)); +// } +// } +// +// public static void logInfo(Object obj, Object message1, Object message2) { +// Logger logger = getLog(obj); +// if (logger.isInfoEnabled()) { +// logger.info(bufferToString(message1, message2)); +// } +// +// } +// +// public static void logInfo(Object obj, Object... message) { +// Logger logger = getLog(obj); +// if (logger.isInfoEnabled()) { +// logger.info(bufferToString(message)); +// } +// +// } +// +// public static void logError(Object obj, Object message) { +// Logger logger = getLog(obj); +// if (logger.isErrorEnabled()) { +// if (message instanceof Throwable) { +// logger.error("", (Throwable) message); +// } else { +// logger.error(bufferToString(message)); +// } +// } +// +// } +// +// public static void logError(Object obj, Object message1, Object message2) { +// Logger logger = getLog(obj); +// if (logger.isErrorEnabled()) { +// if (message2 instanceof Throwable) { +// logger.error(bufferToString(message1), (Throwable) message2); +// } else { +// logger.error(bufferToString(message1, message2)); +// } +// } +// +// } +// +// public static void logError(Object obj, Object... message) { +// Logger logger = getLog(obj); +// if (logger.isErrorEnabled()) { +// logger.error(bufferToString(message)); +// } +// +// } +// +// public static void logDebug(Object obj, Object message) { +// Logger logger = getLog(obj); +// if (logger.isDebugEnabled()) { +// logger.debug(bufferToString(message)); +// } +// +// } +// +// public static void logDebug(Object obj, Object message1, Object message2) { +// Logger logger = getLog(obj); +// if (logger.isDebugEnabled()) { +// logger.debug(bufferToString(message1, message2)); +// } +// +// } +// +// public static void logDebug(Object obj, Object... message) { +// Logger logger = getLog(obj); +// if (logger.isDebugEnabled()) { +// logger.debug(bufferToString(message)); +// } +// +// } +// +// public static void logWarn(Object obj, Object message) { +// Logger logger = getLog(obj); +// if (logger.isWarnEnabled()) { +// logger.warn(bufferToString(message)); +// } +// +// } +// +// public static void logWarn(Object obj, Object message1, Object message2) { +// Logger logger = getLog(obj); +// if (logger.isWarnEnabled()) { +// logger.warn(bufferToString(message1, message2)); +// } +// +// } +// +// public static void logWarn(Object obj, Object... message) { +// Logger logger = getLog(obj); +// if (logger.isWarnEnabled()) { +// logger.warn(bufferToString(message)); +// } +// +// } +// +// public static void logInfo(Object obj, Throwable e, Object message) { +// Logger logger = getLog(obj); +// if (logger.isInfoEnabled()) { +// logger.info(bufferToString(message), e); +// } +// +// } +// +// public static void logInfo(Object obj, Throwable e, Object message1, Object message2) { +// Logger logger = getLog(obj); +// if (logger.isInfoEnabled()) { +// logger.info(bufferToString(message1, message2), e); +// } +// +// } +// +// public static void logInfo(Object obj, Throwable e, Object... message) { +// Logger logger = getLog(obj); +// if (logger.isInfoEnabled()) { +// logger.info(bufferToString(message), e); +// } +// +// } +// +// public static void logError(Object obj, Throwable e, Object message) { +// Logger logger = getLog(obj); +// if (logger.isErrorEnabled()) { +// logger.error(bufferToString(message), e); +// } +// +// } +// +// public static void logError(Object obj, Throwable e, Object message1, Object message2) { +// Logger logger = getLog(obj); +// if (logger.isErrorEnabled()) { +// logger.error(bufferToString(message1, message2), e); +// } +// +// } +// +// public static void logError(Object obj, Throwable e, Object... message) { +// Logger logger = getLog(obj); +// if (logger.isErrorEnabled()) { +// logger.error(bufferToString(message), e); +// } +// +// } +// +// public static void logDebug(Object obj, Throwable e, Object message) { +// Logger logger = getLog(obj); +// if (logger.isDebugEnabled()) { +// logger.debug(bufferToString(message), e); +// } +// +// } +// +// public static void logDebug(Object obj, Throwable e, Object message1, Object message2) { +// Logger logger = getLog(obj); +// if (logger.isDebugEnabled()) { +// logger.debug(bufferToString(message1, message2), e); +// } +// +// } +// +// public static void logDebug(Object obj, Throwable e, Object... message) { +// Logger logger = getLog(obj); +// if (logger.isDebugEnabled()) { +// logger.debug(bufferToString(message), e); +// } +// +// } +// +// public static void logWarn(Object obj, Throwable e, Object message) { +// Logger logger = getLog(obj); +// if (logger.isWarnEnabled()) { +// logger.warn(bufferToString(message), e); +// } +// +// } +// +// public static void logWarn(Object obj, Throwable e, Object message1, Object message2) { +// Logger logger = getLog(obj); +// if (logger.isWarnEnabled()) { +// logger.warn(bufferToString(message1, message2), e); +// } +// +// } +// +// public static void logWarn(Object obj, Throwable e, Object... message) { +// Logger logger = getLog(obj); +// if (logger.isWarnEnabled()) { +// logger.warn(bufferToString(message), e); +// } +// +// } +// +// public static void logInfo(Class clazz, Object message) { +// Logger logger = getLog(clazz); +// if (logger.isInfoEnabled()) { +// logger.info(bufferToString(message)); +// } +// +// } +// +// public static void logInfo(Class clazz, Object message1, Object message2) { +// Logger logger = getLog(clazz); +// if (logger.isInfoEnabled()) { +// logger.info(bufferToString(message1, message2)); +// } +// +// } +// +// public static void logInfo(Class clazz, Object... message) { +// Logger logger = getLog(clazz); +// if (logger.isInfoEnabled()) { +// logger.info(bufferToString(message)); +// } +// +// } +// +// public static void logError(Class clazz, Object message) { +// Logger logger = getLog(clazz); +// if (logger.isErrorEnabled()) { +// logger.error(bufferToString(message)); +// } +// +// } +// +// public static void logError(Class clazz, Object message1, Object message2) { +// Logger logger = getLog(clazz); +// if (logger.isErrorEnabled()) { +// logger.error(bufferToString(message1, message2)); +// } +// +// } +// +// public static void logError(Class clazz, Object... message) { +// Logger logger = getLog(clazz); +// if (logger.isErrorEnabled()) { +// logger.error(bufferToString(message)); +// } +// +// } +// +// public static void logDebug(Class clazz, Object message) { +// Logger logger = getLog(clazz); +// if (logger.isDebugEnabled()) { +// logger.debug(bufferToString(message)); +// } +// +// } +// +// public static void logDebug(Class clazz, Object message1, Object message2) { +// Logger logger = getLog(clazz); +// if (logger.isDebugEnabled()) { +// logger.debug(bufferToString(message1, message2)); +// } +// +// } +// +// public static void logDebug(Class clazz, Object... message) { +// Logger logger = getLog(clazz); +// if (logger.isDebugEnabled()) { +// logger.debug(bufferToString(message)); +// } +// +// } +// +// public static void logWarn(Class clazz, Object message) { +// Logger logger = getLog(clazz); +// if (logger.isWarnEnabled()) { +// logger.warn(bufferToString(message)); +// } +// +// } +// +// public static void logWarn(Class clazz, Object message1, Object message2) { +// Logger logger = getLog(clazz); +// if (logger.isWarnEnabled()) { +// logger.warn(bufferToString(message1, message2)); +// } +// +// } +// +// public static void logWarn(Class clazz, Object... message) { +// Logger logger = getLog(clazz); +// if (logger.isWarnEnabled()) { +// logger.warn(bufferToString(message)); +// } +// +// } +// +// public static void logInfo(Class clazz, Throwable e, Object message) { +// Logger logger = getLog(clazz); +// if (logger.isInfoEnabled()) { +// logger.info(bufferToString(message), e); +// } +// +// } +// +// public static void logInfo(Class clazz, Throwable e, Object message1, Object message2) { +// Logger logger = getLog(clazz); +// if (logger.isInfoEnabled()) { +// logger.info(bufferToString(message1, message2), e); +// } +// +// } +// +// public static void logInfo(Class clazz, Throwable e, Object... message) { +// Logger logger = getLog(clazz); +// if (logger.isInfoEnabled()) { +// logger.info(bufferToString(message), e); +// } +// +// } +// +// public static void logError(Class clazz, Throwable e, Object message) { +// Logger logger = getLog(clazz); +// if (logger.isErrorEnabled()) { +// logger.error(bufferToString(message), e); +// } +// +// } +// +// public static void logError(Class clazz, Throwable e, Object message1, Object message2) { +// Logger logger = getLog(clazz); +// if (logger.isErrorEnabled()) { +// logger.error(bufferToString(message1, message2), e); +// } +// +// } +// +// public static void logError(Class clazz, Throwable e, Object... message) { +// Logger logger = getLog(clazz); +// if (logger.isErrorEnabled()) { +// logger.error(bufferToString(message), e); +// } +// +// } +// +// public static void logDebug(Class clazz, Throwable e, Object message) { +// Logger logger = getLog(clazz); +// if (logger.isDebugEnabled()) { +// logger.debug(bufferToString(message), e); +// } +// +// } +// +// public static void logDebug(Class clazz, Throwable e, Object message1, Object message2) { +// Logger logger = getLog(clazz); +// if (logger.isDebugEnabled()) { +// logger.debug(bufferToString(message1, message2), e); +// } +// +// } +// +// public static void logDebug(Class clazz, Throwable e, Object... message) { +// Logger logger = getLog(clazz); +// if (logger.isDebugEnabled()) { +// logger.debug(bufferToString(message), e); +// } +// +// } +// +// public static void logWarn(Class clazz, Throwable e, Object message) { +// Logger logger = getLog(clazz); +// if (logger.isWarnEnabled()) { +// logger.warn(bufferToString(message), e); +// } +// +// } +// +// public static void logWarn(Class clazz, Throwable e, Object message1, Object message2) { +// Logger logger = getLog(clazz); +// if (logger.isWarnEnabled()) { +// logger.warn(bufferToString(message1, message2), e); +// } +// +// } +// +// public static void logWarn(Class clazz, Throwable e, Object... message) { +// Logger logger = getLog(clazz); +// if (logger.isWarnEnabled()) { +// logger.warn(bufferToString(message), e); +// } +// +// } +// +// public static String bufferToString(Object object) { +// if (!(object instanceof Throwable)) { +// return object == null ? "NULL" : object.toString(); +// } else { +// StringBuilder sb = new StringBuilder(); +// Throwable throwable = (Throwable) object; +// sb.append("异常描述:").append(throwable.getMessage()).append("\n堆栈信息:"); +// StackTraceElement[] var6; +// int var5 = (var6 = throwable.getStackTrace()).length; +// +// for (int var4 = 0; var4 < var5; ++var4) { +// StackTraceElement stackTraceElement = var6[var4]; +// sb.append(stackTraceElement).append("\n"); +// } +// +// return sb.toString(); +// } +// } +// +// private static String bufferToString(Object object1, Object object2) { +// return bufferToString(object1) + bufferToString(object2); +// } +// +// private static String bufferToString(Object... objects) { +// StringBuilder sb = new StringBuilder(); +// if (objects != null) { +// Object[] var5 = objects; +// int var4 = objects.length; +// +// for (int var3 = 0; var3 < var4; ++var3) { +// Object object = var5[var3]; +// sb.append(bufferToString(object)); +// } +// } else { +// sb.append("NULL"); +// } +// +// return sb.toString(); +// } +//} +// diff --git a/src/main/java/org/gyk/modules/sssj/util/YasuojBj.java b/src/main/java/org/gyk/modules/sssj/util/YasuojBj.java new file mode 100644 index 0000000..a3b7a55 --- /dev/null +++ b/src/main/java/org/gyk/modules/sssj/util/YasuojBj.java @@ -0,0 +1,126 @@ +package org.gyk.modules.sssj.util; + +//import com.alibaba.fastjson.JSONObject; + +import lombok.SneakyThrows; +import net.minidev.json.JSONObject; +import org.gyk.modules.sssj.entity.BjxxCal; +import org.gyk.modules.sssj.entity.YasuojiBjSj; +import org.gyk.modules.websocket.webSocket; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Value; + +import javax.annotation.Resource; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; +import java.time.temporal.ChronoUnit; +import java.util.*; + +/** + * @Description: 多线程-报警数据20s存库 + * @Author: liao + * @Date: 2021-04-05 + * @Version: V1.0 + */ +//@Slf4j +public class YasuojBj extends Thread {//线程主体+ + @Value("${HeartBeatbj}") + private int HeartBeatbj = 2000; + @Resource + private webSocket webSocket; + private String title; + + public YasuojBj(String title, webSocket webSocket) { + this.title = title; + this.webSocket = webSocket; + } + + private static Logger log = LoggerFactory.getLogger(YasuojBj.class); + + @SneakyThrows + @Override + public void run() {//线程的主体方法 + int i = 0; + + Thread.sleep(10000);//延迟10秒启动 待连接工业库成功 + // 存放所有的报警点 报警次数 报警时间 //5分钟保存一次清零一次 + List listBjRecord = new ArrayList<>(); + DateTimeFormatter sdf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); + + JSONObject bjWebSocket = new JSONObject(); + + while (true) { + try { + sssjTools.GetYasuoBj(); //获取当前所有的报警信息 + + List listSaveBjxx = new ArrayList<>(); //存放需要保存的报警信息 + //循环所有报警信息,记录报警次数 报警时间 + + if (sssjTools.mapbjsj.size() > 0) { + Iterator> ite = sssjTools.mapbjsj.entrySet().iterator(); + while (ite.hasNext()) { + Map.Entry entry = ite.next(); + + if (!entry.getValue().isSaveFlag()) { + entry.getValue().setId(UUID.randomUUID().toString()); + + listSaveBjxx.add(entry.getValue()); + + entry.getValue().setSaveFlag(true); + +// log.warn("key: " + entry.getKey() + " begin:" + entry.getValue().getBeginTime() + " end:" + entry.getValue().getEndTime() + " canshu: " + entry.getValue().getCanshuZhi()); + + } + //当报警数据的结束时间与当前时间差值超过9秒时,判定报警结束,需要移除该报警数据 + long ls = 0; + if (entry.getValue().getEndTime() != null) { + LocalDateTime now = LocalDateTime.now(); + ls = ChronoUnit.SECONDS.between(entry.getValue().getEndTime(), now); + } + + if (ls > 30 || ls < -30) { + String bjms = entry.getValue().getBjMs(); + entry.getValue().setId(UUID.randomUUID().toString()); + entry.getValue().setBjMs(bjms + " 报警结束,时间:" + entry.getValue().getBeginTime().format(sdf) + " - " + entry.getValue().getEndTime().format(sdf)); + entry.getValue().setZt("0"); //0为不需要处置,1为未处置,2为已处置 + listSaveBjxx.add(entry.getValue()); + log.info("delete from map:" + entry.getValue().getBjId() + " " + entry.getValue().getCanshuZhi()); + ite.remove(); + } + + } + } + + if (listSaveBjxx.size() > 0) { + +//****************************** 压缩机报警 发布时要去掉注释 ****************************************************************************** + + sssjTools.saveYasuojiBjtoslave(listSaveBjxx);// 将新报警立即存盘 + log.info(sssjTools.getStrCurrentTime() + "-----保存压缩机报警数据" + listSaveBjxx.size() + "条成功"); + +//*************************************************************************************** + + + + bjWebSocket.put("cmd", "ysjbj110");//业务类型 + bjWebSocket.put("msgId", "1002");//消息id + bjWebSocket.put("msgTxt", "压缩机报警");//消息内容 + + try { + webSocket.sendAllMessage(bjWebSocket.toJSONString()); + } catch (Exception e) { + log.error("hi:" + e); + } + } + } catch (Exception e) { + log.info(sssjTools.getStrCurrentTime() + "报警异常1:" + e.getMessage()); + } + + i++; + + Thread.sleep(HeartBeatbj); + } + } + +} diff --git a/src/main/java/org/gyk/modules/sssj/util/saveBj.java b/src/main/java/org/gyk/modules/sssj/util/saveBj.java new file mode 100644 index 0000000..53760c3 --- /dev/null +++ b/src/main/java/org/gyk/modules/sssj/util/saveBj.java @@ -0,0 +1,141 @@ +package org.gyk.modules.sssj.util; + +//import com.alibaba.fastjson.JSONObject; + +import lombok.SneakyThrows; +import net.minidev.json.JSONObject; +import org.gyk.modules.lssj.bjls.entity.CxcSssjLssjBjlsjl; +import org.gyk.modules.sssj.entity.BjxxCal; +import org.gyk.modules.websocket.webSocket; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Value; + +import javax.annotation.Resource; +import java.text.SimpleDateFormat; +import java.time.LocalDateTime; +import java.time.temporal.ChronoUnit; +import java.util.*; + +/** + * @Description: 多线程-报警数据20s存库 + * @Author: liao + * @Date: 2021-04-05 + * @Version: V1.0 + */ +//@Slf4j +public class saveBj extends Thread {//线程主体+ + @Value("${HeartBeatbj}") + private int HeartBeatbj = 2000; + @Resource + private webSocket webSocket; + private String title; + + public saveBj(String title, webSocket webSocket) { + this.title = title; + this.webSocket = webSocket; + } + + private static Logger log = LoggerFactory.getLogger(saveBj.class); + + @SneakyThrows + @Override + public void run() {//线程的主体方法 + int i = 0; + + Thread.sleep(10000);//延迟10秒启动 待连接工业库成功 + // 存放所有的报警点 报警次数 报警时间 //5分钟保存一次清零一次 + List listBjRecord = new ArrayList<>(); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + + JSONObject bjWebSocket = new JSONObject(); + + while (true) { + try { + sssjTools.GetAllBj(); //获取当前所有的报警信息 + List listBjxx = new ArrayList(); + + if (sssjTools.mapTrqbjsj.size() > 0) { + Iterator> ite = sssjTools.mapTrqbjsj.entrySet().iterator(); + while (ite.hasNext()) { + Map.Entry entry = ite.next(); + + if (!entry.getValue().isSaveflag()) { +// log.info("who:"+entry.getKey()+" be:"+entry.getValue().getCreateTime()+" end:"+entry.getValue().getEndTime() ); + + listBjxx.add(entry.getValue()); + entry.getValue().setSaveflag(true); + } + + //当报警数据的结束时间与当前时间差值超过9秒时,判定报警结束,需要移除该报警数据 + long ls = 0; + if (entry.getValue().getEndTime() != null) { + LocalDateTime now = LocalDateTime.now(); +// ls = (now.getTime() - entry.getValue().getEndTime().getTime()) / 1000; + ls = ChronoUnit.SECONDS.between(now,entry.getValue().getEndTime()); + } + + if (ls > 30 || ls < -30) { +// String bjms = entry.getValue().getBjMs(); +// entry.getValue().setBjMs(bjms+" 报警结束,时间:"+entry.getValue().getBeginTime()+" - "+entry.getValue().getEndTime()); + entry.getValue().setId(UUID.randomUUID().toString()); + listBjxx.add(entry.getValue()); + ite.remove(); + } + } + } + + if (listBjxx.size() > 0) { + listBjxx.forEach(item->{ + log.info("name:"+item.getBjName()+" begin:"+item.getCreateTime()+" msg:"+item.getReason()); + }); + + //************************************* 计量点报警 发布时要去掉注释 *************************************************************** + + sssjTools.saveBjls(listBjxx);// 将新报警立即存盘 + + //*************************************************************************************** + + log.info(sssjTools.getStrCurrentTime() + "-----保存计量点报警历史数据" + listBjxx.size() + "条成功"); + + //*********************************************************************************************************** + + bjWebSocket.put("cmd", "ssbj110");//业务类型 + bjWebSocket.put("msgId", "1002");//消息id + bjWebSocket.put("msgTxt", "计量点报警");//消息内容 + + try { + webSocket.sendAllMessage(bjWebSocket.toJSONString()); + } catch (Exception e) { + log.error("hi:"+e); + } + } + } catch (Exception e) { +// log.info(sssjTools.getStrCurrentTime() + "报警异常2:" + e.getMessage()); + } + + i++; + + if (i > 45) { + JSONObject pingWebSocket = new JSONObject(); + pingWebSocket.put("cmd","ping"); + pingWebSocket.put("msgId", "6666");//消息id + pingWebSocket.put("msgTxt", "ping");//消息内容 + + webSocket.sendAllMessage(pingWebSocket.toJSONString()); + i = 0; + } + + Thread.sleep(2000); + } +// return (webSocket); + } + + /* 将saveBj多线程中获取的所有报警信息存入历史数据库中 */ +// public static void sendAllMessage(String strMessage){ +// +// webSocket.sendAllMessage(strMessage); +// +// +// } +} diff --git a/src/main/java/org/gyk/modules/sssj/util/saveData.java b/src/main/java/org/gyk/modules/sssj/util/saveData.java new file mode 100644 index 0000000..d73cb94 --- /dev/null +++ b/src/main/java/org/gyk/modules/sssj/util/saveData.java @@ -0,0 +1,196 @@ +package org.gyk.modules.sssj.util; + +import lombok.SneakyThrows; +import org.gyk.modules.lssj.jldls.entity.CxcSssjLssjJldls; +import org.gyk.modules.lssj.jldls.entity.CxcSssjLssjJldlsRsj; +import org.gyk.modules.lssj.scls.entity.CxcSssjLssjScls; +import org.gyk.modules.sssj.controller.GykController; +import org.gyk.modules.sssj.entity.JldData; +import org.gyk.modules.sssj.entity.PianyuanZhan; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; + +import java.time.LocalDateTime; +import java.util.*; + + +/** + * @Description: 多线程-实时数据5min存库 + * @Author: liao + * @Date: 2021-04-05 + * @Version: V1.0 + */ +//@Slf4j +public class saveData extends Thread {//线程主体类 + +// @Value("${RIBAOHOUR}") +// private int RIBAOHOUR; + + private String title; + + @Autowired + private GykController gykController = new GykController(); + + public saveData(String title) { + this.title = title; + } + + private static Logger log = LoggerFactory.getLogger(saveData.class); + + + @SneakyThrows + @Override + public void run() {//线程的主体方法 + boolean saveFlag = false; + boolean getgykbz = false; + Thread.sleep(5000); //延迟5秒启动 待连接工业库成功 + while (true) { +// log.info(sssjTools.getStrCurrentTime()); + try { + List listAll = sssjTools.AllJldlist(); //jldlx=0 + Date now = sssjTools.getDateCurrentTime(); + Calendar cal = Calendar.getInstance(); + int a = cal.get(Calendar.MINUTE); + int b = cal.get(Calendar.HOUR_OF_DAY); + + if (a % 5 == 0 && saveFlag == false) { + List jldLsList = new ArrayList<>(); + listAll.forEach(item -> { + CxcSssjLssjJldls tt = new CxcSssjLssjJldls(); + tt.setId(UUID.randomUUID().toString()); + tt.setCreateTime(now); + tt.setJldId(item.getId()); + tt.setWd(item.getWd()); + tt.setYl(item.getYl()); + tt.setYc(item.getYc()); + tt.setSsll(item.getSsll()); + tt.setSyll(item.getSyll()); + tt.setByll(item.getByll()); + tt.setZll(item.getZll()); + tt.setJrl(item.getJrl()); + tt.setJrsj(item.getJrsj()); + tt.setZt(item.getYxzt()); + tt.setBz(item.getBz()); + String zm=item.getZhan(); + switch (zm) { + case "1号集气站": + zm="东濮1号站"; + break; + case "2号集气站": + zm="东濮2号站"; + break; + case "3号集气站": + zm="东濮3号站"; + break; + case "4号集气站": + zm="东濮4号站"; + break; + case "5号集气站": + zm="东濮5号站"; + break; + case "6号集气站": + zm="东濮6号站"; + break; + case "柳屯配气站B": + zm="柳屯配气站"; + break; + case "柳屯配气站A": + zm="柳屯配气站"; + break; + } + tt.setZhan(zm); + tt.setJldName(item.getJldname()); + + jldLsList.add(tt); + }); +// 获取实时输差 + List scLsList = sssjTools.AllScList(); + scLsList.forEach(item -> { + item.setCreateTime(now); + }); + +// jldLsList.forEach(item->{ +// log.info("hi:"+item.getZhan()+" jld:"+item.getJldName()); +// }); + List pydata = sssjTools.getPylist(); + LocalDateTime dateTime = LocalDateTime.now(); + LocalDateTime zeroSecondsDateTime = dateTime.withSecond(0); + pydata.forEach(item->{ + item.setRq(zeroSecondsDateTime); + item.setId(UUID.randomUUID().toString()); + }); + + try { + log.info(sssjTools.getStrCurrentTime() + "-----保存计量历史数据" + jldLsList.size() + "条成功"); + + //*********************************** 计量点数据存储 发布时要去掉注释 ************************************************************** +// 测试时,不保存数据,发布时,要把下面三句的注释去除!!! + + sssjTools.saveJldls(jldLsList); + sssjTools.saveJldlstoslave(jldLsList); + sssjTools.saveScls(scLsList); +// + log.info(sssjTools.getStrCurrentTime() + "-----保存输差历史数据" + scLsList.size() + "条成功"); +// + sssjTools.saveYasuojiSssj(); +// + log.info(sssjTools.getStrCurrentTime() + "-----保存偏远站场历史数据" + pydata.size() + "条成功"); + sssjTools.savePianyuan(pydata); + +//************************************************************************************************ + + } catch (Exception e) { + log.error(e.toString()); + } + saveFlag = true; + //将每日8点的数据存到日报表中 + if (b == 8 && a == 00) { + List jldLsQiList = new ArrayList<>(); + listAll.forEach(item -> { + CxcSssjLssjJldlsRsj ss = new CxcSssjLssjJldlsRsj(); + ss.setId(UUID.randomUUID().toString()); + ss.setCreateTime(now); + ss.setJldId(item.getId()); + ss.setWd(item.getWd()); + ss.setYl(item.getYl()); + ss.setYc(item.getYc()); + ss.setSsll(item.getSsll()); + ss.setSyll(item.getSyll()); + ss.setByll(item.getByll()); + ss.setZll(item.getZll()); + ss.setJrl(item.getJrl()); + ss.setJrsj(item.getJrsj()); + ss.setZt(item.getYxzt()); + ss.setBz(item.getBz()); + jldLsQiList.add(ss); + }); + try { + sssjTools.saveJldlsQi(jldLsQiList); + log.info(sssjTools.getStrCurrentTime() + "-----保存每日计量数据" + jldLsQiList.size() + "条成功"); + } catch (Exception e) { + } + } + } + + if (a % 5 != 0) { + saveFlag = false; + } + + } catch (Exception e) { + } + + if (!getgykbz) { + sssjTools.getJldxxKeyGykbz(); + getgykbz=true; + } + + Thread.sleep(5000); + } + + } +} + + + + diff --git a/src/main/java/org/gyk/modules/sssj/util/saveKrBj.java b/src/main/java/org/gyk/modules/sssj/util/saveKrBj.java new file mode 100644 index 0000000..65f7c11 --- /dev/null +++ b/src/main/java/org/gyk/modules/sssj/util/saveKrBj.java @@ -0,0 +1,122 @@ +package org.gyk.modules.sssj.util; + +//import com.alibaba.fastjson.JSONObject; + +import lombok.SneakyThrows; +import net.minidev.json.JSONObject; +import org.gyk.modules.lssj.bjls.entity.CxcSssjLssjBjlsjl; +import org.gyk.modules.modbus.serialPort.SerialOutputStream; +import org.gyk.modules.sssj.entity.BjxxCal; +import org.gyk.modules.websocket.webSocket; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Value; + +import javax.annotation.Resource; +import java.text.SimpleDateFormat; +import java.util.*; +import java.util.concurrent.atomic.AtomicReference; + +/** + * @Description: 多线程-报警数据20s存库 + * @Author: liao + * @Date: 2021-04-05 + * @Version: V1.0 + */ +//@Slf4j +public class saveKrBj extends Thread {//线程主体+ + @Value("${HeartBeatbj}") + private int HeartBeatbj = 2000; + + @Resource + private webSocket webSocket; + private String title; + + public saveKrBj(String title, webSocket webSocket) { + this.title = title; + this.webSocket = webSocket; + } + + private static Logger log = LoggerFactory.getLogger(saveKrBj.class); + + @SneakyThrows + @Override + public void run() {//线程的主体方法 + int i = 0; + Thread.sleep(10000);//延迟10秒启动 待连接工业库成功 + // 存放可燃报警点 报警次数 报警时间 + // 可燃气体的报警只有处置了以后才会消失 + List listBjRecord = new ArrayList<>(); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + JSONObject bjWebSocket = new JSONObject(); + + while (true) { + try { + sssjTools.AllKrlist(); + List listBjxx = new ArrayList(); + //如果可燃报警map中有数据 + if (!sssjTools.mapKrbjsj.isEmpty()) { + Iterator> ite = sssjTools.mapKrbjsj.entrySet().iterator(); + + while (ite.hasNext()) { + Map.Entry entry = ite.next(); + //当报警数据的状态为0(已处置),判定报警结束,需要移除该报警数据 + //当报警数据的状态为3(可燃未处置),并且存在相同的bjid,也需要将该数据移除listBjxx。 + boolean a = sssjTools.queryBjxx(entry.getValue().getBjId()); + if (a){ + //重复报警,移除map + ite.remove(); + }else { + // 新报警存入list + entry.getValue().setSaveflag(true); + listBjxx.add(entry.getValue()); + } + } + } + List msgId = new ArrayList<>(); + List msgTxt = new ArrayList<>(); + //存库加发送消息 + if (!listBjxx.isEmpty()) { + listBjxx.forEach(item->{ + msgId.add(item.getBz()); + msgTxt.add(item.getBz()+","+item.getBjId() +"," +item.getBjz() + "," + item.getBjName()) ; + log.info("name:"+item.getBjName()+" begin:"+item.getCreateTime()+" msg:"+item.getReason()); + }); + //************************************* 可燃计量点报警 发布时要去掉注释 *************************************************************** + + sssjTools.saveBjls(listBjxx);// 将新报警立即存盘 + + //*************************************************************************************** + + log.info(sssjTools.getStrCurrentTime() + "-----保存可燃计量点报警历史数据" + listBjxx.size() + "条成功"); + + //*********************************************************************************************************** + + bjWebSocket.put("cmd", "krbj110");//业务类型 + bjWebSocket.put("msgId", msgId);//消息id ,这里存的是站ID数组 + bjWebSocket.put("msgTxt", msgTxt);//消息内容 + + try { + webSocket.sendAllMessage(bjWebSocket.toJSONString()); + } catch (Exception e) { + log.error("hi:"+e); + } + } + } catch (Exception e) { + log.info(sssjTools.getStrCurrentTime() + "报警异常2:" + e.getMessage()); + } + + i++; +// if (i > 45) { +// JSONObject pingWebSocket = new JSONObject(); +// pingWebSocket.put("cmd","ping"); +// pingWebSocket.put("msgId", "6666");//消息id +// pingWebSocket.put("msgTxt", "ping");//消息内容 +// webSocket.sendAllMessage(pingWebSocket.toJSONString()); +// i = 0; +// } + Thread.sleep(2000); + } +// return (webSocket); + } +} diff --git a/src/main/java/org/gyk/modules/sssj/util/saveNgzxData.java b/src/main/java/org/gyk/modules/sssj/util/saveNgzxData.java new file mode 100644 index 0000000..ed450fe --- /dev/null +++ b/src/main/java/org/gyk/modules/sssj/util/saveNgzxData.java @@ -0,0 +1,53 @@ +package org.gyk.modules.sssj.util; + +import lombok.SneakyThrows; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.Calendar; + +import static org.gyk.modules.sssj.util.ConfigUtils.getsavetime; + + +/** + * @Description: 多线程-实时数据10min存库 + * @Author: jiang + * @Date: 20231103 + * @Version: V1.0 + */ + +//@Slf4j +public class saveNgzxData extends Thread {//线程主体类 + + private String title; + + public saveNgzxData(String title) { + this.title = title; + } + + private static Logger log = LoggerFactory.getLogger(saveNgzxData.class); + + @SneakyThrows + @Override + public void run() {//线程的主体方法 + int savetime = getsavetime(); + Thread.sleep(5000); //延迟5秒启动 待连接工业库成功 + while (true) { + Calendar cal = Calendar.getInstance(); + int a = cal.get(Calendar.MINUTE); + if (a % 10 == 0) { + try{ + // 发布时要去掉注释 +// sssjTools.saveNgzxSssj(); + }catch (Exception e){ + e.printStackTrace(); + } + Thread.sleep(savetime); + } + } + + } +} + + + diff --git a/src/main/java/org/gyk/modules/sssj/util/saveYasuojiData.java b/src/main/java/org/gyk/modules/sssj/util/saveYasuojiData.java new file mode 100644 index 0000000..8eefbff --- /dev/null +++ b/src/main/java/org/gyk/modules/sssj/util/saveYasuojiData.java @@ -0,0 +1,65 @@ +package org.gyk.modules.sssj.util; + +import lombok.SneakyThrows; +import org.gyk.modules.lssj.jldls.mapper.JldlsMapper; +import org.gyk.modules.sssj.entity.YasuojiSj; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; + +import java.util.List; + +import static org.gyk.modules.sssj.util.ConfigUtils.getsavetime; + + +/** + * @Description: 多线程-实时数据5min存库 + * @Author: liao + * @Date: 2021-04-05 + * @Version: V1.0 + */ + +//@Slf4j +public class saveYasuojiData extends Thread {//线程主体类 + private static int savetime; + + @Autowired(required = false) + private JldlsMapper jldlsMapper; + + public saveYasuojiData() { +// this.title = title; +// savetime=this.yasuojisavetime; + } + + private static Logger log = LoggerFactory.getLogger(saveYasuojiData.class); + + + @SneakyThrows + @Override + public void run() {//线程的主体方法 + int savetime = getsavetime(); + Thread.sleep(5000); //延迟5秒启动 待连接工业库成功 + while (true) { + try { + List list = sssjTools.saveYasuojiSssj(); + + if (list.size() > 0) { + //*************************************** 压缩机实时 发布时要去掉注释 ********************************************************************* + + jldlsMapper.YasuojiSssj(list); + log.info(sssjTools.getStrCurrentTime() + "-----保存压缩机数据" + list.size() + "条成功"); + + //*************************************************************************************** + } + } catch (Exception e) { + log.error(e.toString()); + } + Thread.sleep(savetime); + } + + } +} + + + + diff --git a/src/main/java/org/gyk/modules/sssj/util/sssjTools.java b/src/main/java/org/gyk/modules/sssj/util/sssjTools.java new file mode 100644 index 0000000..9de94f3 --- /dev/null +++ b/src/main/java/org/gyk/modules/sssj/util/sssjTools.java @@ -0,0 +1,2133 @@ +package org.gyk.modules.sssj.util; + + +import lombok.SneakyThrows; +//import org.apache.commons.collections.map.HashedMap; +import org.apache.commons.lang3.StringUtils; +import org.gyk.modules.lssj.bjls.entity.CxcSssjLssjBjlsjl; +import org.gyk.modules.lssj.jldls.entity.CxcSssjLssjJldls; +import org.gyk.modules.lssj.jldls.entity.CxcSssjLssjJldlsRsj; +import org.gyk.modules.lssj.jldls.mapper.JldlsMapper; +import org.gyk.modules.lssj.jldls.service.ICxcSssjLssjJldlsRsjService; +import org.gyk.modules.lssj.ngzxsj.service.IngzxLssjService; +import org.gyk.modules.lssj.scls.entity.CxcSssjLssjScls; +import org.gyk.modules.lssj.scls.entity.CxcSssjScls; +import org.gyk.modules.sssj.entity.*; +import org.gyk.modules.sssj.service.*; +import org.gyk.modules.sz.bjpz.entity.CxcSssjSzBjsz; +import org.gyk.modules.sz.bjpz.mapper.CxcSssjSzBjszMapper; +import org.gyk.modules.sz.bjpz.service.ICxcSssjSzBjszService; +import org.gyk.modules.sz.cxcsssjjldbjcanshusz.entity.CxcSssjJldBjCanshuSz; +import org.gyk.modules.sz.cxcsssjjldbjcanshusz.service.ICxcSssjJldBjCanshuSzService; +import org.gyk.modules.sz.jdlbjpz.entity.CxcSssjJldBjShezhi; +import org.gyk.modules.sz.jdlbjpz.service.ICxcSssjJldBjShezhiService; +import org.gyk.modules.sz.jldxx.entity.CxcSssjSzJldxx; +import org.gyk.modules.sz.jldxx.service.IGetJldxxService; +import org.gyk.modules.sz.scpz.entity.CxcScdtJldxx; +import org.gyk.modules.sz.scpz.entity.CxcScdtScpz; +import org.gyk.modules.sz.scpz.entity.CxcSssjSzScsz; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.cache.annotation.CacheEvict; +import org.springframework.cache.annotation.Cacheable; +import org.springframework.stereotype.Component; + +import javax.annotation.PostConstruct; +import javax.annotation.Resource; +import java.math.BigDecimal; +import java.text.DateFormat; +import java.text.DecimalFormat; +import java.text.SimpleDateFormat; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; +import java.time.temporal.ChronoUnit; +import java.util.*; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.atomic.AtomicReference; +import java.util.function.Function; +import java.util.stream.Collectors; + +import static java.lang.Double.parseDouble; + +//import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +//import groovy.transform.ASTTest; +//import org.apache.commons.lang3.builder.ToStringExclude; +//import org.gyk.modules.sssj.entity.CxcQijingRB; +//import org.gyk.modules.sssj.entity.CxcRsjQijing; + +/** + * @Description: 计量点实时数据方法 + * @Author: liao + * @Date: 2021-04-05 + * @Version: V1.0 + */ +//@Cacheable +//@Log4j +@Component +public class sssjTools { + // 默认除法运算精度 + private static final Integer DEF_DIV_SCALE = 4; + public static sssjTools judge; + // public static Map mapbjsj = new HashMap<>(); + public static ConcurrentHashMap mapbjsj = new ConcurrentHashMap<>(); + // public static Map mapTrqbjsj = new HashMap<>(); + public static ConcurrentHashMap mapTrqbjsj = new ConcurrentHashMap<>(); + //可燃报警map jiang 20240308 + public static ConcurrentHashMap mapKrbjsj = new ConcurrentHashMap<>(); + public static List ysjGykbz = new ArrayList<>(); + public static Map mapyasuojisssj = new HashMap<>(); + public static Map gykbzGetJcxx = new HashMap<>(); + public static List Ysjsssj = new ArrayList<>(); + public static Map MapGood = new HashMap(); + public static Map MapStop = new HashMap(); + public static Map MapWarn = new HashMap(); + public static Map mapzrlj = new HashMap<>(); + public static Map mapNgSssj = new HashMap<>(); + private static Logger log = LoggerFactory.getLogger(KDBClient.class); + @Autowired + private IGetJldxxService getJldXxService; + @Autowired + private IGetScpzService getScpzService; + @Autowired + private ISaveSclsService saveSclsService; + @Autowired + private ISaveJldlsService saveJldlsService; + @Autowired + private ICxcSssjLssjJldlsRsjService rsjService; + @Autowired + private IngzxLssjService ingzxLssjService; + @Resource + private CxcSssjSzBjszMapper bjszMapper; + @Autowired + private ISaveBjlsService saveBjlsService; + @Autowired + private IRishujuService rishujuService; + @Autowired + private ICxcRsjQijingService qijingService; + @Autowired + private ICxcSssjSzBjszService cxcSssjSzBjszService; + @Autowired (required = false) + private JldlsMapper jldlsMapper; + @Autowired + private ICxcSssjJldBjCanshuSzService cxcSssjJldBjCanshuSzService; + @Autowired + private ICxcSssjJldBjShezhiService cxcSssjJldBjShezhiService; + //可燃警报 + private static double KrWarning; + private static double KrDanger; + @Value("${Kryz.warning}") + public void setWKey(Double warning) { + this.KrWarning= warning; + } + @Value("${Kryz.danger}") + public void setDKey(Double danger) { + this.KrDanger= danger; + } + +// @Autowired +// private ICxcSssjSzJldxxService cxcSssjSzJldxxService; + + + public sssjTools() { + } + + /** + * 将多线程saveData每秒得到的计量点List存盘方法 + **/ + public static void saveJldls(List jldLsList) { + try { +// System.out.println(jldLsList); + judge.jldlsMapper.insertBatchMaster(jldLsList); + } catch (Exception e) { + log.error("hi:" + e); + } + } + + public static void saveJldlstoslave(List jldLsList) { + try { + judge.jldlsMapper.insertBatchSlave(jldLsList); + } catch (Exception e) { + log.error(e.toString()); + } + } + + public static void savePianyuan(List list) { + try { +// System.out.println(jldLsList); + judge.jldlsMapper.insertPianyuanMaster(list); + } catch (Exception e) { + log.error("hi:" + e); + } + } + + public static void saveYasuojiBjtoslave(List list) { + try { + judge.jldlsMapper.YasuojiBj(list); + } catch (Exception e) { + log.error(e.toString()); + } + } + + //获取指定时长SC的压缩机报警数据 + public static List getYasuojiBj() { + return judge.jldlsMapper.getYsjBj(); + } + + //获取指定时长SC的压缩机报警数据 + public static List getTrqBj(int sc, String lb) { + return judge.jldlsMapper.getTrqBjxx(sc, lb); + } + + //获取指定站场和机组号的压缩机历史数据表头 + public static List getYasjLsBt(String zc, String jzh) { + return judge.jldlsMapper.getYsjLsBt(zc, jzh); + } + + //获取指定站场和机组号的压缩机历史数据 + public static List getYasjLssj(String zc, String jzh, String startTime, String endTime) { + return judge.jldlsMapper.getYsjLssj(zc, jzh, startTime, endTime); + } + + //字符串转map + public static Map splitStringToMap(String str) { + DecimalFormat fnum = new DecimalFormat("##0.00"); + Map map = new HashMap<>(); + + Map mapysj = sssjTools.ysjGykbz.stream().collect(Collectors.toMap(YasuojiJcxx::getGykbz, Function.identity(), (k1, k2) -> k2)); + + // 按照分号或者逗号拆分键值对 + String[] keyValuePairs = str.split(" "); + + for (String pair : keyValuePairs) { + // 按照等号拆分键和值 + String[] keyValue = pair.split(":"); + + if (keyValue.length == 2) { + String key = keyValue[0].trim(); + String key2 = ""; + if (mapysj.containsKey(key)) { + key2 = mapysj.get(key).getJldName(); + String[] jldname = key2.split("\\*"); + String value = keyValue[1].trim(); + float floatval = Float.parseFloat(value); + String lastval = fnum.format(floatval); + if (lastval.equals("0.00")) { + map.put(jldname[2], "0"); + } else { + map.put(jldname[2], lastval); + } + } + } + } + return map; + } + +// public static IPage getYsjLssj(String zc,String jzh,String startTime,String endTime) { +// IPage iPage = judge.jldlsMapper.getYsjLssj2(new Page<>(2,5),zc,jzh,startTime,endTime); +// log.info("hi:"+iPage.getTotal()+" "+iPage.getSize()); +// return iPage; +// } + + //获取压缩机运行数据的表头 + public static Map> getYasuojshujuBt(String zhanc, String jzh) { + Map> map = new HashMap<>(); + List listbt = new ArrayList<>(); + List listdataindex = new ArrayList<>(); + List listellipsis = new ArrayList<>(); + + Map mapysj = sssjTools.ysjGykbz.stream().collect(Collectors.toMap(YasuojiJcxx::getGykbz, Function.identity(), (k1, k2) -> k2)); + + List list = sssjTools.getYasjLsBt(zhanc, jzh); + + if (list.size() == 1) { + listbt.add("日期"); + listdataindex.add("日期"); + listellipsis.add("false"); + + String[] allsj = list.get(0).getShuju().split(" "); + for (int i = 0; i < allsj.length; i++) { + String[] ls = allsj[i].split(":"); + + if (mapysj.containsKey(ls[0])) { + String[] canshuname = mapysj.get(ls[0]).getJldName().split("\\*"); + String strls1 = canshuname[2]; + if (strls1.length() == 4 || strls1.length() == 5) { + StringBuilder strls2 = new StringBuilder(strls1); + strls2.insert(2, "*"); + listbt.add(strls2.toString()); + } else if (strls1.length() > 5) { + StringBuilder strls2 = new StringBuilder(strls1); + strls2.insert(3, "*"); + listbt.add(strls2.toString()); + } else { + listbt.add(canshuname[2]); + } + + listdataindex.add(canshuname[2]); + listellipsis.add("false"); + } + } + } + + map.put("ellipsis", listellipsis); + map.put("title", listbt); + map.put("dataindex", listdataindex); +// log.info("bt:"+listbt+" index:"+listdataindex); + return map; + } + + //获取压缩机报警数据的表头 + public static Map> getYasuojBjBt() { + Map> map = new HashMap<>(); + List listbt = new ArrayList<>(); + List listdataindex = new ArrayList<>(); + + listbt.add("报警名称"); + listbt.add("开始时间"); + listbt.add("报警值"); + listbt.add("报警原因"); + + listdataindex.add("bjId"); + listdataindex.add("beginTime"); + listdataindex.add("canshuZhi"); + listdataindex.add("bjMs"); + + List listellipsis = new ArrayList<>(); + listellipsis.add("false"); + listellipsis.add("false"); + listellipsis.add("false"); + listellipsis.add("false"); + + map.put("ellipsis", listellipsis); + map.put("title", listbt); + map.put("dataindex", listdataindex); + + return map; + } + + //获取计量点历史数据的表头 + public static Map> getJldLssjBt() { + Map> map = new HashMap<>(); + List listbt = new ArrayList<>(); + List listdataindex = new ArrayList<>(); + + listbt.add("计量点名称"); + listbt.add("日期"); + listbt.add("温度"); + listbt.add("压力"); + listbt.add("压差"); + listbt.add("瞬时量"); + listbt.add("今日量"); + listbt.add("上月流量"); + listbt.add("本月流量"); + listbt.add("累积量"); + listbt.add("今日时间"); + listbt.add("状态"); + + listdataindex.add("jldName"); + listdataindex.add("createTime"); + listdataindex.add("wd"); + listdataindex.add("yl"); + listdataindex.add("yc"); + listdataindex.add("ssll"); + listdataindex.add("jrl"); + listdataindex.add("syll"); + listdataindex.add("byll"); + listdataindex.add("zll"); + listdataindex.add("jrsj"); + listdataindex.add("zt"); + + List listellipsis = new ArrayList<>(); + listellipsis.add("false"); + listellipsis.add("false"); + listellipsis.add("false"); + listellipsis.add("false"); + listellipsis.add("false"); + listellipsis.add("false"); + listellipsis.add("false"); + listellipsis.add("false"); + listellipsis.add("false"); + listellipsis.add("false"); + listellipsis.add("false"); + listellipsis.add("false"); + + map.put("ellipsis", listellipsis); + map.put("title", listbt); + map.put("dataindex", listdataindex); + + return map; + } + + //获取计量点报警数据的表头 + public static Map> getJldBjBt() { + Map> map = new HashMap<>(); + List listbt = new ArrayList<>(); + List listdataindex = new ArrayList<>(); + + listbt.add("报警名称"); + listbt.add("开始时间"); + listbt.add("报警值"); + listbt.add("报警原因"); + + listdataindex.add("bjName"); + listdataindex.add("createTime"); + listdataindex.add("bjz"); + listdataindex.add("reason"); + + List listellipsis = new ArrayList<>(); + listellipsis.add("false"); + listellipsis.add("false"); + listellipsis.add("false"); + listellipsis.add("false"); + + map.put("ellipsis", listellipsis); + map.put("title", listbt); + map.put("dataindex", listdataindex); + + return map; + } + + //获取压缩机报警处置记录的表头 + public static Map> getJldBjChuzhiBt() { + Map> map = new HashMap<>(); + List listbt = new ArrayList<>(); + List listdataindex = new ArrayList<>(); + List listellipsis = new ArrayList<>(); + + listbt.add("报警名称"); + listbt.add("报警时间"); + listbt.add("报警信息"); + listbt.add("分析"); + listbt.add("处置措施"); + listbt.add("处置人"); + listbt.add("处置时间"); + + listdataindex.add("bjName"); + listdataindex.add("bjTime"); + listdataindex.add("bjMs"); + listdataindex.add("fenxiString"); + listdataindex.add("chuzhicuoshiString"); + listdataindex.add("createBy"); + listdataindex.add("createTime"); + + listellipsis.add("false"); + listellipsis.add("false"); + listellipsis.add("false"); + listellipsis.add("true"); + listellipsis.add("true"); + listellipsis.add("false"); + listellipsis.add("false"); + + map.put("title", listbt); + map.put("dataindex", listdataindex); + map.put("ellipsis", listellipsis); + + return map; + } + + //获取压缩机报警历史数据 + public static List getYasuojbjsj(String bgtime, String endtime, String zc, String jzh) { +// SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + + List listByzhanc = new ArrayList<>(); + + List listbj = judge.jldlsMapper.getYsjBjsj(bgtime, endtime); + + List listbjByZhanc = sssjTools.ysjGykbz.stream().filter(item -> item.getStationName().equals(zc)).collect(Collectors.toList()); + + Map mapzc = listbjByZhanc.stream().collect(Collectors.toMap(YasuojiJcxx::getGykbz, Function.identity(), (k1, k2) -> k2)); +//log.info("listbj:"+listbj.size()+" listbyzhanc:"+listbjByZhanc.size()+" mapzc:"+mapzc.size()); + listbj.forEach(item -> { + String gykbz = item.getBjId(); + + if (mapzc.containsKey(gykbz)) { + Optional jcxx = sssjTools.ysjGykbz.stream().filter(a -> a.getGykbz().equals(gykbz)).findAny(); + if (jcxx.isPresent()) { +// log.info("hi:"+jcxx.get().getJldName()); + String[] jldname = jcxx.get().getJldName().split("\\*"); + item.setBjId(jldname[2]); + if (jldname[1].equals(jzh)) { + CxcSssjLssjBjlsjl tmp = new CxcSssjLssjBjlsjl(); + tmp.setBjName(jldname[2]); + tmp.setBjz(String.valueOf(item.getCanshuZhi())); + + tmp.setCreateTime(item.getBeginTime()); + + tmp.setReason(item.getBjMs()); + listByzhanc.add(tmp); + } + + + } + } + }); + + listByzhanc.forEach(item -> { +// log.info("id:"+ item.getBjId()+" time:"+item.getCreateTime()+" val:"+item.getReason()); + }); + // log.info("id:"+ item.getBjId()+" time:"+item.getBeginTime()+" val:"+item.getCanshuZhi()); + return listByzhanc; + + } + + //获取指定站场和压缩机机组号的 工业库标志与参数名的映射表 + public static Map getJldnameByJldid(String zc, String jzh) { + Map map = new HashMap<>(); + + List listByZhanc = sssjTools.ysjGykbz.stream().filter(item -> item.getStationName().equals(zc)).collect(Collectors.toList()); + listByZhanc.forEach(item -> { + String[] jldname = item.getJldName().split("\\*"); + if (jldname[1].equals(jzh)) { + map.put(item.getGykbz(), jldname[2]); + } + }); + + return map; + } + + /** + * 将多线程saveData每填8点得到的计量点List存盘方法 + **/ + public static void saveJldlsQi(List saveJldlsQi) { + judge.rsjService.saveBatch(saveJldlsQi); + } + + /** + * 将多线程saveData每秒得到的输差List存盘方法 + **/ + public static void saveScls(List sclsList) { + judge.saveSclsService.saveBatch(sclsList); + } + + // 计算所有输差配置的输差 + public static List AllScList() throws InterruptedException { + List listScData = new ArrayList<>(); + List listScPz = judge.getScpzService.getAllScpz(); + listScPz.forEach(item -> { + CxcSssjLssjScls sclsTemp = new CxcSssjLssjScls(); + sclsTemp = getScData(item); + listScData.add(sclsTemp); + }); + return listScData; + } + + // 计算所有输差配置的输差 2022-08-31 Niujl + public static List getAllSc(String lb) throws InterruptedException { + List listScPz = judge.getScpzService.getScpzByLb(lb); + //获取所有计量点实时数据 + List listJlData = AllJldlist(); + Map mapJldDate = listJlData.stream().collect(Collectors.toMap(JldData::getId, a -> a, (k1, k2) -> k1)); + + List listScData = getScByLb(listScPz, mapJldDate); + return listScData; + } + + //每天8点计算 + private static CxcSssjLssjJldlsRsj getMyData(String jldIds) { + List> RsjMouth = judge.rishujuService.getMouthDataByIds(jldIds); + + List> RsjYear = judge.rishujuService.getYearDataByIds(jldIds); + + return null; + } + + @SneakyThrows + private static CxcSssjLssjScls getScData(CxcSssjSzScsz listSc) { + //获取所有计量点实时数据 + List listJlData = AllJldlist(); + + //输差进气计量点逗号分割字符串 + List strInjld = Arrays.asList(listSc.getInPoints().split(",")); + + //输差出气计量点逗号分割字符串 + List strOutjld = Arrays.asList(listSc.getOutPoints().split(",")); + + List listInJldData = new ArrayList<>(); + listJlData.forEach(item -> { + strInjld.forEach(item1 -> { + if (item.getId().equals(item1)) { + listInJldData.add(item); + } + }); + }); + + + List listOutJldData = new ArrayList<>(); + + listJlData.forEach(item -> { + strOutjld.forEach(item1 -> { + if (item.getId().equals(item1)) { + listOutJldData.add(item); + } + }); + }); + double sssc = 0; + double ssscIn = 0; + double ssscOut = 0; + double ssscBfs = 0; + + double jrlsc = 0; + double jrlscIn = 0; + double jrlscOut = 0; + double jrlscbfs = 0; + + + if (listInJldData.size() > 0) { + ssscIn = listInJldData.stream().mapToDouble(item -> + parseDouble(item.getSsll() == "" ? "0" : item.getSsll())).sum(); + + jrlscIn = listInJldData.stream().mapToDouble(item -> parseDouble(item.getJrl() == "" ? "0" : item.getJrl())).sum(); + } + + if (listOutJldData.size() > 0) { + ssscOut = listOutJldData.stream().mapToDouble(item -> parseDouble(item.getSsll() == "" ? "0" : item.getSsll())).sum(); + jrlscOut = listOutJldData.stream().mapToDouble(item -> parseDouble(item.getJrl() == "" ? "0" : item.getJrl())).sum(); + } + + sssc = ssscOut - ssscIn; + if (ssscOut != 0) { + ssscBfs = sssc / ssscOut; + } else { + ssscBfs = 0; + } + jrlsc = jrlscOut - jrlscIn; + if (jrlscOut != 0) { + jrlscbfs = jrlsc / jrlscOut; + } else { + jrlscbfs = 0; + } + CxcSssjLssjScls scDataTemp = new CxcSssjLssjScls(); + scDataTemp.setScId(listSc.getId()); + scDataTemp.setScName(listSc.getScName()); + scDataTemp.setDepartId(listSc.getDepartId()); + scDataTemp.setStationId(listSc.getStationId()); + scDataTemp.setInPoints(listSc.getInPoints()); + scDataTemp.setOutPoints(listSc.getOutPoints()); + scDataTemp.setScType(listSc.getScType()); + + scDataTemp.setJrlIn(String.format("%.4f", jrlscIn)); + scDataTemp.setJrlOut(String.format("%.4f", jrlscOut)); + scDataTemp.setJrlsc(String.format("%.4f", jrlsc)); + + scDataTemp.setSsIn(String.valueOf(ssscIn)); + scDataTemp.setSsOut(String.valueOf(ssscOut)); + scDataTemp.setSssc(String.valueOf(sssc)); + scDataTemp.setSsscbfs(String.valueOf(ssscBfs)); + scDataTemp.setJrlscbfs(String.format("%.4f", jrlscbfs)); + + return scDataTemp; + } + + // @SneakyThrows + private static List getScByLb(List listScPz, Map mapJldDate) { + List listsc = new ArrayList<>(); + + listScPz.forEach(item -> { + //输差进气计量点逗号分割字符串 + List strInjld = Arrays.asList(item.getJqjldid().split(",")); + + //输差出气计量点逗号分割字符串 + List strOutjld = Arrays.asList(item.getCqjldid().split(",")); + + double sssc = 0; + double ssscIn = 0; + double ssscOut = 0; + double ssscBfs = 0; + + double jrlsc = 0; + double jrlscIn = 0; + double jrlscOut = 0; + double jrlscbfs = 0; + + int len = strInjld.size(); + if (len > 0) { + for (int i = 0; i < len; i++) { + String id = strInjld.get(i); + if (null != mapJldDate && mapJldDate.containsKey(id)) { + String ls1 = mapJldDate.get(id).getSsll(); + String ls2 = mapJldDate.get(id).getJrl(); + if (null == ls1 || ls1.isEmpty()) ls1 = "0"; + if (null == ls2 || ls2.isEmpty()) ls2 = "0"; + double ls3 = parseDouble(ls1); + double ls4 = parseDouble(ls2); + ssscIn = douadd(ssscIn, ls3); + jrlscIn = douadd(jrlscIn, ls4); + } + } + } + + len = strOutjld.size(); + if (len > 0) { + for (int i = 0; i < len; i++) { + String id = strOutjld.get(i); + if (null != mapJldDate && mapJldDate.containsKey(id)) { + String ls1 = mapJldDate.get(id).getSsll(); + String ls2 = mapJldDate.get(id).getJrl(); + if (null == ls1 || ls1.isEmpty()) ls1 = "0"; + if (null == ls2 || ls2.isEmpty()) ls2 = "0"; + double ls3 = parseDouble(ls1); + double ls4 = parseDouble(ls2); + ssscOut = douadd(ssscOut, ls3); + jrlscOut = douadd(jrlscOut, ls4); + } + } + } + + sssc = dousub(ssscOut, ssscIn); + if (ssscOut != 0) { + ssscBfs = div(sssc, ssscOut); + } else { + ssscBfs = 0; + } + jrlsc = dousub(jrlscOut, jrlscIn); + if (jrlscOut != 0) { + jrlscbfs = div(jrlsc, jrlscOut); + } else { + jrlscbfs = 0; + } + + CxcSssjScls scDataTemp = new CxcSssjScls(); + scDataTemp.setScId(item.getId()); + scDataTemp.setScName(item.getScmc()); + scDataTemp.setStationId(item.getSysOrgCode()); + scDataTemp.setScType(item.getSclb()); + + scDataTemp.setJrlIn(jrlscIn); + scDataTemp.setJrlOut(jrlscOut); + scDataTemp.setJrlsc(jrlsc); + + scDataTemp.setSsIn(ssscIn); + scDataTemp.setSsOut(ssscOut); + scDataTemp.setSssc(sssc); + scDataTemp.setSsscbfs(ssscBfs); + scDataTemp.setJrlscbfs(jrlscbfs); + + listsc.add(scDataTemp); + + }); + + return listsc; + } + + /** + * 计量点基础信息列表中计量点数据信息读取 + * 与实时采集中的数据 通过tagid 拼成包含压力温度流量等形式的计量点 + * + * @return List jlddata + */ + public static List AllJldlist() throws InterruptedException { + // 在这里 + Map jldxx = judge.getScpzService.getScdtJldId(); + List listAllJl = judge.getJldXxService.getAllJldxx("0"); + + + List jlddata = new ArrayList<>(); + listAllJl.forEach(item -> { + JldData jldDataTemp = new JldData(); + jldDataTemp.setId(item.getId()); + jldDataTemp.setZhan(item.getStationName()); + + String jldName = item.getJldName().replace("_", "-").substring(2); + + //从生产动态模块查询计量点名字,获取计量点ID来替换实时数据获取的计量点的ID + if (null != jldxx && jldxx.containsKey(jldName)) { + jldDataTemp.setId(jldxx.get(jldName).getId()); + jldDataTemp.setZhan(jldxx.get(jldName).getZcmc()); + //设置进出站类型 by 闵 + jldDataTemp.setJczlx(jldxx.get(jldName).getJczlx()); + } + jldDataTemp.setSqDw(item.getSqDw()); //新增输差配置 by 闵 + jldDataTemp.setJldname(jldName); + jldDataTemp.setQu(item.getDepartName()); + jldDataTemp.setDepart_id(item.getDepartId()); + jldDataTemp.setStation_id(item.getStationId()); + + jldDataTemp.setGykbz(item.getGykbz()); + jlddata.add(jldDataTemp); + }); + Map GykDataList = KDBClient.MapJldData(); + jlddata.forEach(item -> { + String[] gykbz; + double[] gykValue; + try { + String ls = item.getGykbz(); + if (ls != null && ls != "") { + gykbz = item.getGykbz().split(","); + + gykValue = new double[gykbz.length]; + for (int i = 0; i < gykbz.length; i++) { + gykValue[i] = 0.0; + if (i == 0 || i == 6 || i == 9) { + gykValue[i] = Double.parseDouble(GykDataList.get(Integer.parseInt(gykbz[i])).toString()) / 10000; + } else { + gykValue[i] = Double.parseDouble(GykDataList.get(Integer.parseInt(gykbz[i])).toString()); + } + } + item.setSyll(String.format("%.4f", gykValue[0])); + item.setJrsj(String.format("%.1f", gykValue[1])); + item.setJrl(String.format("%.2f", gykValue[2])); + item.setYl(String.format("%.3f", gykValue[3])); + item.setYc(String.format("%.3f", gykValue[4])); + item.setBz(""); + item.setZll(String.format("%.4f", gykValue[6])); + item.setZrsj(String.format("%.1f", gykValue[7])); + item.setZrl(String.format("%.2f", gykValue[8])); + item.setByll(String.format("%.4f", gykValue[9])); + item.setWd(String.format("%.2f", gykValue[10])); + if (gykValue[11] == 0.0) { + item.setYxzt("停表"); + } else if (gykValue[11] == 1.0) { + item.setYxzt("运行"); + } else { + item.setYxzt("其他"); + } + item.setSsll(String.format("%.2f", gykValue[12])); + } + } catch (Exception e) { + } + + }); + +// jlddata.forEach(item->{ +// System.out.println("#"+item.getId()); +// }); + + return (jlddata); + } + + public static String getbjval(String canshu) { + String res = ""; + switch (canshu) { + case "温度": + res = "WD"; + break; + case "压力": + res = "YL"; + break; + case "压差": + res = "YC"; + break; + } + return res; + } + + public static List getJldSssj(String zhanc) { +// sssjTools sssjTools = new sssjTools(); + List listAll = null; + try { + listAll = sssjTools.AllJldlist(); + } catch (InterruptedException e) { + e.printStackTrace(); + } + //筛选出station_id等于参数"zhanc"的计量点组成list + List listZhan = listAll.stream().filter(item -> item.getStation_id().equals(zhanc)).collect(Collectors.toList()); + listZhan.forEach(item -> { + item.setBjzt(""); + if (item.getGykbz() != null && !item.getGykbz().isEmpty()) { + String gykid[] = item.getGykbz().split("\\,"); + + for (int i = 0; i < gykid.length; i++) { + String ls = gykid[i]; + String ls1 = ls + "WG"; + if (mapTrqbjsj.containsKey(ls1)) { + String name = mapTrqbjsj.get(ls1).getBjName(); + String strcs = name.substring(name.length() - 2); + String ls2 = item.getBjzt() + "W" + getbjval(strcs); + item.setBjzt(ls2); + } + ls1 = ls + "WD"; + if (mapTrqbjsj.containsKey(ls1)) { + String name = mapTrqbjsj.get(ls1).getBjName(); + String strcs = name.substring(name.length() - 2); + String ls2 = item.getBjzt() + "W" + getbjval(strcs); + item.setBjzt(ls2); + } + ls1 = ls + "BG"; + if (mapTrqbjsj.containsKey(ls1)) { + String name = mapTrqbjsj.get(ls1).getBjName(); + String strcs = name.substring(name.length() - 2); + String ls2 = item.getBjzt() + "B" + getbjval(strcs); + item.setBjzt(ls2); + } + ls1 = ls + "BD"; + if (mapTrqbjsj.containsKey(ls1)) { + String name = mapTrqbjsj.get(ls1).getBjName(); + String strcs = name.substring(name.length() - 2); + String ls2 = item.getBjzt() + "B" + getbjval(strcs); + item.setBjzt(ls2); + } + } + } + + }); + + return listZhan; + } + + /** + * @Description: 利用首页输差赛选 + * @author: 闵年泽 + * @date: 2024/7/26 15:29 + * @param id: + * @Return: java.util.List + */ + public static List getJldSssjBySqDw(String id) { +// sssjTools sssjTools = new sssjTools(); + List listAll = null; + try { + listAll = sssjTools.AllJldlist(); + } catch (InterruptedException e) { + e.printStackTrace(); + } + //筛选出station_id等于参数"zhanc"的计量点组成list + List listZhan = listAll.stream().filter(item ->{ + if (StringUtils.isEmpty(item.getSqDw())) return false; + return item.getSqDw().contains(id); + }).collect(Collectors.toList()); + listZhan.forEach(item -> { + item.setBjzt(""); + if (item.getGykbz() != null && !item.getGykbz().isEmpty()) { + String gykid[] = item.getGykbz().split("\\,"); + + for (int i = 0; i < gykid.length; i++) { + String ls = gykid[i]; + String ls1 = ls + "WG"; + if (mapTrqbjsj.containsKey(ls1)) { + String name = mapTrqbjsj.get(ls1).getBjName(); + String strcs = name.substring(name.length() - 2); + String ls2 = item.getBjzt() + "W" + getbjval(strcs); + item.setBjzt(ls2); + } + ls1 = ls + "WD"; + if (mapTrqbjsj.containsKey(ls1)) { + String name = mapTrqbjsj.get(ls1).getBjName(); + String strcs = name.substring(name.length() - 2); + String ls2 = item.getBjzt() + "W" + getbjval(strcs); + item.setBjzt(ls2); + } + ls1 = ls + "BG"; + if (mapTrqbjsj.containsKey(ls1)) { + String name = mapTrqbjsj.get(ls1).getBjName(); + String strcs = name.substring(name.length() - 2); + String ls2 = item.getBjzt() + "B" + getbjval(strcs); + item.setBjzt(ls2); + } + ls1 = ls + "BD"; + if (mapTrqbjsj.containsKey(ls1)) { + String name = mapTrqbjsj.get(ls1).getBjName(); + String strcs = name.substring(name.length() - 2); + String ls2 = item.getBjzt() + "B" + getbjval(strcs); + item.setBjzt(ls2); + } + } + } + + }); + + return listZhan; + } + + + /** + * 提供精确的加法运算。 + * + * @param value1 被加数 + * @param value2 加数 + * @return 两个参数的和 + */ + public static Double douadd(Number value1, Number value2) { + BigDecimal b1 = new BigDecimal(Double.toString(value1.doubleValue())); + BigDecimal b2 = new BigDecimal(Double.toString(value2.doubleValue())); + return b1.add(b2).doubleValue(); + } + + /** + * 提供精确的减法运算。 + * + * @param value1 被减数 + * @param value2 减数 + * @return 两个参数的差 + */ + public static double dousub(Number value1, Number value2) { + BigDecimal b1 = new BigDecimal(Double.toString(value1.doubleValue())); + BigDecimal b2 = new BigDecimal(Double.toString(value2.doubleValue())); + return b1.subtract(b2).doubleValue(); + } + + /** + * 提供(相对)精确的除法运算,当发生除不尽的情况时, 精确到小数点以后10位,以后的数字四舍五入。 + * + * @param dividend 被除数 + * @param divisor 除数 + * @return 两个参数的商 + */ + public static Double div(Double dividend, Double divisor) { + return div(dividend, divisor, DEF_DIV_SCALE); + } + + /** + * 提供(相对)精确的除法运算。 当发生除不尽的情况时,由scale参数指定精度,以后的数字四舍五入。 + * + * @param dividend 被除数 + * @param divisor 除数 + * @param scale 表示表示需要精确到小数点以后几位。 + * @return 两个参数的商 + */ + public static Double div(Double dividend, Double divisor, Integer scale) { + if (scale < 0) { + throw new IllegalArgumentException( + "The scale must be a positive integer or zero"); + } + BigDecimal b1 = new BigDecimal(Double.toString(dividend)); + BigDecimal b2 = new BigDecimal(Double.toString(divisor)); + return b1.divide(b2, scale, BigDecimal.ROUND_HALF_UP).doubleValue(); + } + + /** + * 提供精确的小数位四舍五入处理。 + * + * @param value 需要四舍五入的数字 + * @param scale 小数点后保留几位 + * @return 四舍五入后的结果 + */ + public static Double round(Double value, Integer scale) { + if (scale < 0) { + throw new IllegalArgumentException( + "The scale must be a positive integer or zero"); + } + BigDecimal b = new BigDecimal(Double.toString(value)); + BigDecimal one = new BigDecimal("1"); + return b.divide(one, scale, BigDecimal.ROUND_HALF_UP).doubleValue(); + } + + public static Double add(Double v1, Double v2) { + BigDecimal b1 = new BigDecimal(v1.toString()); + BigDecimal b2 = new BigDecimal(v2.toString()); + return b1.add(b2).doubleValue(); + } + + /** + * 两个Double数相减 + * + * @param v1 + * @param v2 + * @return Double + */ + public static Double sub(Double v1, Double v2) { + BigDecimal b1 = new BigDecimal(v1.toString()); + BigDecimal b2 = new BigDecimal(v2.toString()); + return b1.subtract(b2).doubleValue(); + } + + /** + * 两个Double数相乘 + * + * @param v1 + * @param v2 + * @return Double + */ + public static Double mul(Double v1, Double v2) { + BigDecimal b1 = new BigDecimal(v1.toString()); + BigDecimal b2 = new BigDecimal(v2.toString()); + return b1.multiply(b2).doubleValue(); + } + + + /** + * 计量点基础信息列表中工艺数据信息读取 + * + * @return List jlddata + */ + public static List AllGylist() throws InterruptedException { + List listAllGy = judge.getJldXxService.getAllJldxx("2"); + List gykrdata = new ArrayList<>(); + listAllGy.forEach(item -> { + JldData jldDataTemp = new JldData(); + jldDataTemp.setId(item.getId()); + jldDataTemp.setJldname(item.getJldName().replace("_", "-")); + jldDataTemp.setQu(item.getDepartName()); + jldDataTemp.setDepart_id(item.getDepartId()); + jldDataTemp.setStation_id(item.getStationId()); + jldDataTemp.setZhan(item.getStationName()); + jldDataTemp.setGykbz(item.getGykbz()); + jldDataTemp.setJlddw(item.getJlddw()); + gykrdata.add(jldDataTemp); + }); + Map GykDataList = KDBClient.MapJldData(); + gykrdata.forEach(item -> { + String[] gykbz; + double[] gykValue; + String krqzt = ""; + try { + gykbz = item.getGykbz().split(","); + gykValue = new double[gykbz.length]; + for (int i = 0; i < gykbz.length; i++) { + gykValue[i] = 0.0; + gykValue[i] = Double.parseDouble(GykDataList.get(Integer.parseInt(gykbz[i])).toString()); + } + item.setGyvalue(String.format("%.4f", gykValue[0])); +// 将工业库中仪表状态值从double型转为字符串再分割取整 + String krqzt1 = String.valueOf(gykValue[1]).split("\\.")[0]; + switch (krqzt1) { + case "0": + krqzt = "正常"; + break; + case "1": + krqzt = "高报"; + break; + case "2": + krqzt = "高高报警"; + break; + case "3": + krqzt = "高信号故障"; + break; + case "4": + krqzt = "高高信号故障"; + break; + case "5": + krqzt = "未接"; + break; + case "6": + krqzt = "硬件高报"; + break; + case "7": + krqzt = "硬件高高报警"; + break; + case "256": + krqzt = "通讯错误"; + break; + case "512": + krqzt = "通讯来数据"; + break; + case "768": + krqzt = "通信正常"; + break; + default: + krqzt = "未知"; + } + item.setKrzt(krqzt); + } catch (Exception e) { + } + }); + return (gykrdata); + } + + /** + * 计量点基础信息列表中压缩机数据信息读取 + * + * @return List jlddata + */ + public static List AllYslist() throws InterruptedException { + //初步考虑,在cxc_sssj_sz_jldxx中的备注字段中增加压缩机型号,或者使用 ssgx1,ssgx2连个字段分别存储压缩机型号和参数名 + List listAllYs = judge.getJldXxService.getAllJldxx("4"); + List ysdata = new ArrayList<>(); + listAllYs.forEach(item -> { + JldData jldDataTemp = new JldData(); + jldDataTemp.setId(item.getId()); + jldDataTemp.setJldname(item.getJldName().replace("_", "-")); + jldDataTemp.setQu(item.getDepartName()); + jldDataTemp.setDepart_id(item.getDepartId()); + jldDataTemp.setStation_id(item.getStationId()); + jldDataTemp.setZhan(item.getStationName()); + jldDataTemp.setGykbz(item.getGykbz()); + jldDataTemp.setJlddw(item.getJlddw()); + ysdata.add(jldDataTemp); + }); + Map GykDataList = KDBClient.MapJldData(); + ysdata.forEach(item -> { + String[] gykbz; + double[] gykValue; + try { + gykbz = item.getGykbz().split(","); + gykValue = new double[gykbz.length]; + for (int i = 0; i < gykbz.length; i++) { + gykValue[i] = 0.0; + gykValue[i] = Double.parseDouble(GykDataList.get(Integer.parseInt(gykbz[i])).toString()); + } + if (item.getJldname().indexOf("缸温") != -1 || item.getJldname().indexOf("水温") != -1 || item.getJldname().indexOf("温度") != -1 || item.getJldname().indexOf("油温") != -1) { + item.setYsvalue(String.format("%.1f", gykValue[0])); + } else if (item.getJldname().indexOf("油压") != -1 || item.getJldname().indexOf("压力") != -1 || item.getJldname().indexOf("振动") != -1) { + item.setYsvalue(String.format("%.2f", gykValue[0])); + } else if (item.getJldname().indexOf("转速") != -1) { + item.setYsvalue(String.format("%.0f", gykValue[0])); + } else { + item.setYsvalue(String.format("%.4f", gykValue[0])); + } + + } catch (Exception e) { + } + }); + return (ysdata); + } + + /** + * 计量点基础信息列表中偏远站数据信息读取 + * + * @return List jlddata + */ + public static List getPylist() throws InterruptedException { + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); + + List listAllPy = judge.getJldXxService.getAllJldxx("5"); + + Map GykDataList = KDBClient.MapJldData(); + + String rqb=""; + String rqh=""; + LocalDateTime dateTime1 = LocalDateTime.now(); +// LocalDateTime dateTime1 = LocalDateTime.of(2024,1,8,6,5,0); + //当天8点 + LocalDateTime dateTime2 = dateTime1.withHour(8); + if (dateTime2.isAfter(dateTime1)) { + rqb= dateTime2.plusDays(-2).format(formatter); + rqh= dateTime2.plusDays(-1).format(formatter); + } else { + rqb= dateTime2.plusDays(-1).format(formatter); + rqh = dateTime2.format(formatter); + } + +// PianYuan pianYuan= new PianYuan(); + mapzrlj = judge.getZuoribklj(rqb,rqh); + + Map pydata = new HashMap<>(); + listAllPy.forEach(item -> { + String[] jldname = item.getJldName().split("\\*"); + String gykbz = item.getGykbz().trim(); + String val = GykDataList.get(Integer.parseInt(gykbz)).toString(); + + PianyuanZhan py = new PianyuanZhan(); + py.setJldname(jldname[1]); + + if (pydata.containsKey(jldname[1])) { + py = pydata.get(jldname[1]); + } + + PianyuanZhan pyres = xiugaiPiany(py, jldname[2], val); + pydata.put(jldname[1], pyres); + + }); + + if (pydata.containsKey("三气厂")) { +// val2 * 1000000 + val1 + double bd = 0.0; + double bg = 0.0; + if ((pydata.get("三气厂").getBkzl6() != null && pydata.get("三气厂").getBkzl4() != null)) { + bd = Double.parseDouble(pydata.get("三气厂").getBkzl6()); + bg = Double.parseDouble(pydata.get("三气厂").getBkzl4()); + } + + double ls = add(mul(bg, 1000000.0), bd); + + PianyuanZhan py = pydata.get("三气厂"); + py.setBkzl(String.format("%.4f", ls)); + + } + + List reslist = new ArrayList<>(); + pydata.forEach((k, v) -> { + if (mapzrlj.containsKey(k)) { + v.setZrbklj(mapzrlj.get(k)); + } + + reslist.add(v); + }); + + return (reslist); + } + + @Cacheable(value = "sqlBj", key = "'bklj'+#rq") + public Map getZuoribklj(String rq1,String rq2) { + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); + List list = judge.jldlsMapper.listPiany(rq1); + Map mapday1 = new HashMap<>(); + Map mapday2 = new HashMap<>(); + Map mapres = new HashMap<>(); + list.forEach(item -> { + if (item.getRq().format(formatter).equals(rq1)) { + mapday1.put(item.getJldname(), item.getBkzl()); //昨天数据 + } else if (item.getRq().format(formatter).equals(rq2)){ + mapday2.put(item.getJldname(), item.getBkzl()); //今天数据 + } + mapres.put(item.getJldname(), "0.0"); + }); + for (Map.Entry entry : mapres.entrySet()) { + String key = entry.getKey(); + double bklj1 = 0.0; + double bklj2 = 0.0; + if (mapday1.containsKey(key) && mapday1.get(key) != null) { + bklj1 = Double.parseDouble(mapday1.get(key)); + } + if (mapday2.containsKey(key) && mapday2.get(key) != null) { + bklj2 = Double.parseDouble(mapday2.get(key)); + } + double bkls = 0.0; + if (bklj1>1 && bklj2>1) { + bkls=sub(bklj2, bklj1); + } + + mapres.put(key, String.format("%.4f", Math.abs(bkls))); + } + return mapres; + } + + public static PianyuanZhan xiugaiPiany(PianyuanZhan py, String nm, String val) { + switch (nm) { + case "温度": + py.setWd(val); + break; + case "压力": + py.setYali(val); + break; + case "工况瞬时": + py.setGkss(val); + break; + case "标况瞬时": + py.setBkss(val); + break; + case "工况总量": + py.setGkzl(val); + break; + case "标况总量": + py.setBkzl(val); + break; + case "标况总累低6位": + py.setBkzl6(val); + break; + case "标况总累高4位": + py.setBkzl4(val); + break; + case "昨日标况累计": + double ls = div(Double.parseDouble(val),1000.0,4); + py.setZrbklj(String.format("%.4f",ls)); + break; + default: + break; + } + return py; + } + + public static List pianyuan8list() { + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); + + String rq=""; + LocalDateTime dateTime1 = LocalDateTime.now(); + rq= dateTime1.plusDays(-2).format(formatter); + LocalDate edate = LocalDate.from(dateTime1); + LocalDate sdate = LocalDate.from(dateTime1.plusDays(-2)); + + LocalDate date = sdate; + Map map = new HashMap<>(); + while (!date.isAfter(edate)) { + PianyuanZhan py = new PianyuanZhan(); + py.setJldname("白九来气"); + LocalDate localDate = LocalDate.parse(date.format(formatter),DateTimeFormatter.ofPattern("yyyy-MM-dd")); + LocalDateTime localDateTime = localDate.atTime(8,0); + + py.setRq(localDateTime); + py.setId(UUID.randomUUID().toString()); + map.put("白九来气"+date,py); + PianyuanZhan py2 = new PianyuanZhan(); + py2.setJldname("东明站来气"); + py2.setRq(localDateTime); + py2.setId(UUID.randomUUID().toString()); + map.put("东明站来气"+date,py2); + + date = date.plusDays(1); + } + + List list = judge.jldlsMapper.listPiany(rq); + list.forEach(item->{ + String nm = item.getJldname(); + String lsrq = item.getRq().format(formatter); + map.put(nm+lsrq,item); + }); + + List listres = new ArrayList<>(); + map.forEach((k,v)->{ + listres.add(v); + }); + + listres.sort(((o1, o2) -> o1.getRq().compareTo(o2.getRq()))); +// List res = Collectors.sort(listres) + + return listres; + } + + @CacheEvict(value = "sqlBj", key = "'bklj'+#rq2") + public void pianyuan8edit(String jldname,String rq,String bkzl,String rq2) { + judge.jldlsMapper.editPianyuan8(UUID.randomUUID().toString(),jldname,rq,bkzl); + } + + /** + * 计量点基础信息列表中可燃数据信息读取 + * @auther jiang 20240313 + * @return List jlddata + */ + public static List AllKrlist() throws InterruptedException { + List listAllKr = judge.getJldXxService.getAllJldxx("1"); + List gykrdata = new ArrayList<>(); + listAllKr.forEach(item -> { + JldData jldDataTemp = new JldData(); + jldDataTemp.setId(item.getId()); + jldDataTemp.setJldname(item.getJldName().replace("_", "-")); + jldDataTemp.setQu(item.getDepartName()); + jldDataTemp.setDepart_id(item.getDepartId()); + jldDataTemp.setStation_id(item.getStationId()); + jldDataTemp.setZhan(item.getStationName()); + jldDataTemp.setGykbz(item.getGykbz()); + jldDataTemp.setJlddw(item.getJlddw()); + gykrdata.add(jldDataTemp); + }); + Map GykDataList = KDBClient.MapJldData(); + gykrdata.forEach(item -> { + String[] gykbz; + double[] gykValue; + String krqzt = ""; + + LocalDateTime now = LocalDateTime.now(); + try { + gykbz = item.getGykbz().split(","); + gykValue = new double[gykbz.length]; + for (int i = 0; i < gykbz.length; i++) { + gykValue[i] = 0.0; + gykValue[i] = Double.parseDouble(GykDataList.get(Integer.parseInt(gykbz[i])).toString()); + } + item.setKrvalue(String.format("%.6f", gykValue[0])); + //判断值是否超过阈值 + if (Double.parseDouble(item.getKrvalue()) > KrWarning) { + krqzt = "异常"; + //先检查map 中有没有数据。如果有更新下最后时间。 + //键是工业库标志 + if (mapbjsj.containsKey(item.getGykbz())) { + mapbjsj.get(item.getGykbz()).setEndTime(now); + // 如果没有就新增一条 + } else { + AtomicReference zhan = new AtomicReference<>(""); + List krkbz = judge.getJldXxService.getJldxxById(item.getId()); + krkbz.forEach(kr ->{ + zhan.set(kr.getStationId()); + }); + // 将异常信息存到CxcSssjLssjBjlsjl 实体类中,再将实体类存到mapKrbjsj中 + CxcSssjLssjBjlsjl krBj = new CxcSssjLssjBjlsjl(); + krBj.setBjId(item.getGykbz());//报警点ID + krBj.setCreateTime(now);//报警时间 + krBj.setBjName(item.getJldname());//报警计量点名称 + krBj.setBz(zhan.get()); + krBj.setBjz(item.getKrvalue()); //报警值 + krBj.setReason(krqzt); // 报警描述 + krBj.setJlbz("3"); // 报警标志,可燃是3 + krBj.setZt("1"); //状态 未处置为1 已处置状态为0 + mapKrbjsj.put(item.getGykbz(), krBj); + } + } else { + krqzt = "正常"; + } + item.setKrzt(krqzt); + } catch (Exception ignored) { + } + }); + return (gykrdata); + } + + /** + * 根据bjid或者是工业库标识 查询报警表中有无报警记录,报警记录是否处置 + * @return ture false + * @throws InterruptedException + * @auther jiang 20240313 + */ + public static boolean queryBjxx(String bjid) throws InterruptedException { + //根据bjid或者工业库标识查询未处置的报警记录 + List bjxxList = judge.saveBjlsService.getWczBjxx(bjid); + //list有值返回true,否者返回false + if(bjxxList.isEmpty()){ + return false; + }else { + return true; + } + } + + public static List AllPylist() throws InterruptedException { + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); + + List listAllPy = judge.getJldXxService.getAllJldxx("5"); + + String rqb=""; + String rqh=""; + LocalDateTime dateTime1 = LocalDateTime.now(); +// LocalDateTime dateTime1 = LocalDateTime.of(2024,1,8,6,5,0); + //当天8点 + LocalDateTime dateTime2 = dateTime1.withHour(8); + if (dateTime2.isAfter(dateTime1)) { + rqb= dateTime2.plusDays(-2).format(formatter); + rqh= dateTime2.plusDays(-1).format(formatter); + } else { + rqb= dateTime2.plusDays(-1).format(formatter); + rqh = dateTime2.format(formatter); + } + mapzrlj = judge.getZuoribklj(rqb,rqh); + List pydata = new ArrayList<>(); + listAllPy.forEach(item -> { + JldData jldDataTemp = new JldData(); + jldDataTemp.setId(item.getId()); + jldDataTemp.setJldname(item.getJldName()); + jldDataTemp.setQu(item.getDepartName()); + jldDataTemp.setDepart_id(item.getDepartId()); + jldDataTemp.setStation_id(item.getStationId()); + jldDataTemp.setZhan(item.getStationName()); + jldDataTemp.setGykbz(item.getGykbz()); + jldDataTemp.setJlddw(item.getJlddw()); + pydata.add(jldDataTemp); + }); + Map GykDataList = KDBClient.MapJldData(); + pydata.forEach(item -> { + String[] gykbz; + double[] gykValue; + try { + gykbz = item.getGykbz().split(","); + gykValue = new double[gykbz.length]; + for (int i = 0; i < gykbz.length; i++) { + gykValue[i] = 0.0; +// String key = gykbz[i]; + gykValue[i] = Double.parseDouble(GykDataList.get(Integer.parseInt(gykbz[i])).toString()); +// if (GykDataList.containsKey(key)) { +// gykValue[i] = Double.parseDouble((String) GykDataList.get(key)); +// } + } + item.setYsvalue(String.format("%.4f", gykValue[0])); + + String[] jldnm=item.getJldname().split("\\*"); + if (jldnm[2].equals("昨日标况累计")) { + if (mapzrlj.containsKey(jldnm[1])) { + item.setYsvalue(mapzrlj.get(jldnm[1])); + } + } + + } catch (Exception e) { + } + }); + return (pydata); + } + + /** + * 通过报警设置,比对实时数据,满足报警条件的数据存入报警历史记录 + * + * @return Result + */ +// public static List GetBjz(String strGykbz) { +// +// LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper(); +// List listAll = judge.bjszMapper.selectList(queryWrapper); +// return listAll; +// } + public static String getbj(float bj, float ddb, float db, float gb, float ggb) { + if (bj <= db) { + if (bj <= ddb) { + return "低低报"; + } else + return "低报"; + } + + if (bj >= gb) { + if (bj >= ggb) { + return "高高报"; + } else + return "高报"; + } + return "0"; + } + + /** + * 通过报警设置,比对实时数据,满足报警条件的数据存入报警历史记录 + * + * @return Result + */ + +// @Cacheable(value = "bjpz", key = "#root.methodName") +// public List GetBjz() { +// LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper(); +// List listAll = judge.bjszMapper.selectList(queryWrapper); +// return listAll; +// } + + //通过cxc_sssj_jld_bj_canshu_sz 、cxc+sssj_jld_bj_shezhi两个表获取设置的报警GYKID和设定的报警值 + public static List getJldBjsz() { + DecimalFormat df = new DecimalFormat("0.0000"); + + Map mapcs = judge.cxcSssjJldBjCanshuSzService.getbjcs(); + + List listallbjjld = judge.cxcSssjJldBjShezhiService.list(); + List listjldbj = new ArrayList<>(); + if (listallbjjld.size() > 0) { + listallbjjld.forEach(item -> { + if (item.getWdBjcs() != null && !item.getWdBjcs().trim().isEmpty()) { + if (mapcs.containsKey(item.getWdBjcs())) { + CxcSssjSzBjsz cxcSssjSzBjsz = new CxcSssjSzBjsz(); + cxcSssjSzBjsz.setBjName(item.getJldname() + "温度"); + cxcSssjSzBjsz.setId(item.getWdGykid()); + if (mapcs.get(item.getWdBjcs()).getBaojingdi() != null) { + cxcSssjSzBjsz.setDbj(df.format(mapcs.get(item.getWdBjcs()).getBaojingdi())); + } + if (mapcs.get(item.getWdBjcs()).getBaojinggao() != null) { + cxcSssjSzBjsz.setGbj(df.format(mapcs.get(item.getWdBjcs()).getBaojinggao())); + } + if (mapcs.get(item.getWdBjcs()).getWeixiandi() != null) { + cxcSssjSzBjsz.setDdbj(df.format(mapcs.get(item.getWdBjcs()).getWeixiandi())); + } + if (mapcs.get(item.getWdBjcs()).getWeixiangao() != null) { + cxcSssjSzBjsz.setGgbj(df.format(mapcs.get(item.getWdBjcs()).getWeixiangao())); + } + + cxcSssjSzBjsz.setSfbj("是"); + + listjldbj.add(cxcSssjSzBjsz); + } + } + + if (item.getYlBjcs() != null && !item.getYlBjcs().trim().isEmpty()) { + if (mapcs.containsKey(item.getYlBjcs())) { + CxcSssjSzBjsz cxcSssjSzBjsz = new CxcSssjSzBjsz(); + cxcSssjSzBjsz.setBjName(item.getJldname() + "压力"); + cxcSssjSzBjsz.setId(item.getYlGykid()); + if (mapcs.get(item.getYlBjcs()).getBaojingdi() != null) { + cxcSssjSzBjsz.setDbj(df.format(mapcs.get(item.getYlBjcs()).getBaojingdi())); + } + if (mapcs.get(item.getYlBjcs()).getBaojinggao() != null) { + cxcSssjSzBjsz.setGbj(df.format(mapcs.get(item.getYlBjcs()).getBaojinggao())); + } + if (mapcs.get(item.getYlBjcs()).getWeixiandi() != null) { + cxcSssjSzBjsz.setDdbj(df.format(mapcs.get(item.getYlBjcs()).getWeixiandi())); + } + if (mapcs.get(item.getYlBjcs()).getWeixiangao() != null) { + cxcSssjSzBjsz.setGgbj(df.format(mapcs.get(item.getYlBjcs()).getWeixiangao())); + } + cxcSssjSzBjsz.setSfbj("是"); + + listjldbj.add(cxcSssjSzBjsz); + } + } + + if (item.getYcBjcs() != null && !item.getYcBjcs().trim().isEmpty()) { + if (mapcs.containsKey(item.getYcBjcs())) { + CxcSssjSzBjsz cxcSssjSzBjsz = new CxcSssjSzBjsz(); + cxcSssjSzBjsz.setBjName(item.getJldname() + "压差"); + cxcSssjSzBjsz.setId(item.getYcGykid()); + if (mapcs.get(item.getYcBjcs()).getBaojingdi() != null) { + cxcSssjSzBjsz.setDbj(df.format(mapcs.get(item.getYcBjcs()).getBaojingdi())); + } + if (mapcs.get(item.getYcBjcs()).getBaojinggao() != null) { + cxcSssjSzBjsz.setGbj(df.format(mapcs.get(item.getYcBjcs()).getBaojinggao())); + } + if (mapcs.get(item.getYcBjcs()).getWeixiandi() != null) { + cxcSssjSzBjsz.setDdbj(df.format(mapcs.get(item.getYcBjcs()).getWeixiandi())); + } + if (mapcs.get(item.getYcBjcs()).getWeixiangao() != null) { + cxcSssjSzBjsz.setGgbj(df.format(mapcs.get(item.getYcBjcs()).getWeixiangao())); + } + cxcSssjSzBjsz.setSfbj("是"); + + listjldbj.add(cxcSssjSzBjsz); + } + } + + }); + } + + return listjldbj; + } + + /* 查询报警设置的数据库表中所有报警设置的报警信息 */ + public static List GetAllBj() throws InterruptedException { + DateFormat dateTimeFormatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + DecimalFormat df = new DecimalFormat("0.0000"); + + List listjldbj = getJldBjsz(); + + Map GykDataMap = KDBClient.MapJldData(); + List listBjxx = new ArrayList(); + + listjldbj.forEach(item -> { + String flag = "N"; + + float ggbj = 9999999; + float gbj = 9999999; + float ddbj = 9999999; + float dbj = 9999999; + + if (item.getGgbj() != null && !item.getGgbj().trim().isEmpty()) { + ggbj = Float.parseFloat(item.getGgbj()); + } + if (item.getDdbj() != null && !item.getDdbj().trim().isEmpty()) { + ddbj = Float.parseFloat(item.getDdbj()); + } + if (item.getDbj() != null && !item.getDbj().trim().isEmpty()) { + dbj = Float.parseFloat(item.getDbj()); + } + if (item.getGbj() != null && !item.getGbj().trim().isEmpty()) { + gbj = Float.parseFloat(item.getGbj()); + } + + String value = GykDataMap.get(Integer.parseInt(item.getId())).toString(); + + if (value != null) { + float gykValue = Float.parseFloat(value); + + int jb = 0; + + if (ggbj != 9999999 && gykValue >= ggbj) { + jb = jb + 10000; + } + if (ddbj != 9999999 && gykValue <= ddbj) { + jb = jb + 1000; + } + if (gbj != 9999999 && gykValue >= gbj) { + jb = jb + 100; + } + if (dbj != 9999999 && gykValue <= dbj) { + jb = jb + 10; + } + + String reason = ""; + if (jb != 0) { + if (jb >= 10000) { + flag = "BG"; + reason = "高高报"; + } + if (jb < 10000 && jb >= 1000) { + flag = "BD"; + reason = "低低报"; + } + if (jb < 1000 && jb >= 100) { + flag = "WG"; + reason = "高报"; + } + if (jb < 100 && jb >= 10) { + flag = "WD"; + reason = "低报"; + } + + CxcSssjLssjBjlsjl tempBj = new CxcSssjLssjBjlsjl(); + tempBj.setBjName(item.getBjName()); + tempBj.setBjId(item.getId()); + tempBj.setBjz(df.format(gykValue)); + tempBj.setBz(gykbzGetJcxx.get(item.getId()).getStationName()); + + tempBj.setReason(reason); + tempBj.setSdz("低低报警:" + df.format(ddbj) + "低报警:" + df.format(dbj) + "高报警:" + df.format(gbj) + "高高报警:" + df.format(ggbj)); + + LocalDateTime now = LocalDateTime.now(); + + if (mapTrqbjsj.containsKey(item.getId() + flag)) { + mapTrqbjsj.get(item.getId() + flag).setEndTime(now); + } else { +// tempBj.setId(UUID.randomUUID().toString()); + tempBj.setCreateTime(now); + tempBj.setEndTime(now); + tempBj.setSaveflag(false); + tempBj.setJlbz("1"); //标志1代表是天然气计量点报警数据,2代表工艺,3代表可燃气体 + + mapTrqbjsj.put(item.getId() + flag, tempBj); + } + + } + } + }); + + return listBjxx; + } + + /* 查询报警设置的数据库表中所有报警设置的报警信息 */ + public static void GetYasuoBj() throws InterruptedException { + //获取所有的报警设置 + Map mapbjcanshu = judge.cxcSssjSzBjszService.GetYsjBjz(); +// mapbjcanshu.forEach((k,v)->{ +// log.info("hi:"+v.getGykbz()+" gg:"+v.getTingjiGao()+" g:"+v.getBaojingGao()+" dd:"+v.getTingjiDi()+" d:"+v.getBaojingDi()); +// }); + + Map GykDataMap = KDBClient.MapJldData(); +// List Ysjsssj = new ArrayList<>(); + Ysjsssj.clear(); + +// DateFormat dateTimeFormatter =new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + DecimalFormat df = new DecimalFormat("0.00"); + + ysjGykbz = judge.getJldXxService.getYsjGykbz("4"); + + Map mapGykbzToYsjJcxx = ysjGykbz.stream().collect(Collectors.toMap(YasuojiJcxx::getGykbz, Function.identity(), (key1, key2) -> key2)); + +// log.info("total:"+ mapGykbzToYsjJcxx.size()); + ysjGykbz.forEach(item -> { + Integer gykbz = Integer.parseInt(item.getGykbz()); + + if (GykDataMap.containsKey(gykbz)) { + YasuojiSssj tmp = new YasuojiSssj(); + tmp.setGykbz(item.getGykbz()); + tmp.setStationId(item.getStationId()); + tmp.setJldName(item.getJldName()); + tmp.setVal(Float.parseFloat(GykDataMap.get(gykbz).toString())); + + Ysjsssj.add(tmp); + } + }); + + for (YasuojiSssj item : Ysjsssj) { + float gykval = item.getVal(); + double tj_di = -999999; + double tj_gao = 999999; + double bj_di = -999999; + double bj_gao = 999999; + String msg = ""; + String flag = "N"; + + if (mapbjcanshu.containsKey(item.getGykbz())) { + String k = item.getGykbz(); + + if (mapbjcanshu.get(k).getTingjiDi() != null) { + tj_di = mapbjcanshu.get(k).getTingjiDi(); + } + if (mapbjcanshu.get(k).getTingjiGao() != null) { + tj_gao = mapbjcanshu.get(k).getTingjiGao(); + } + if (mapbjcanshu.get(k).getBaojingGao() != null) { + bj_gao = mapbjcanshu.get(k).getBaojingGao(); + } + if (mapbjcanshu.get(k).getBaojingDi() != null) { + bj_di = mapbjcanshu.get(k).getBaojingDi(); + } + + if (tj_gao != 999999 && gykval >= tj_gao) { + msg = "停机高报! " + df.format(gykval) + "(当前值) >= " + df.format(tj_gao) + "(设定值)"; + flag = "BG"; + } + if (tj_di != -999999 && gykval <= tj_di) { + msg = "停机低报! " + df.format(gykval) + "(当前值) <= " + df.format(tj_di) + "(设定值)"; + flag = "BD"; + } + if (bj_gao != 999999 && gykval >= bj_gao && gykval < tj_gao) { + msg = "警报! " + df.format(gykval) + "(当前值) >= " + df.format(bj_gao) + "(设定值)"; + flag = "WG"; + } + if (bj_di != -999999 && gykval <= bj_di && gykval > tj_di) { + msg = "警报! " + df.format(gykval) + "(当前值) <= " + df.format(bj_di) + "(设定值)"; + flag = "WD"; + } + + +// List> listMapWarn = new ArrayList>(); + + if (msg.length() > 1) { + + LocalDateTime now = LocalDateTime.now(); + + if (mapbjsj.containsKey(k + flag)) { + mapbjsj.get(k + flag).setEndTime(now); +// LocalDateTime ls = mapbjsj.get(k+flag).getBeginTime(); +// tempbj.setBeginTime(ls); +// tempbj.setEndTime(now); + } else { + YasuojiBjSj tempbj = new YasuojiBjSj(); + tempbj.setBjId(k); + tempbj.setCanshuZhi(gykval); + tempbj.setBjMs(msg); + String staname = mapGykbzToYsjJcxx.get(k).getStationName(); + tempbj.setStationname(staname); + String[] tmpstr = mapGykbzToYsjJcxx.get(k).getJldName().split("\\*"); + tempbj.setJizuhao(tmpstr[1]); + tempbj.setBeginTime(now); + tempbj.setEndTime(now); + tempbj.setSaveFlag(false); + tempbj.setZt("1"); //0为不需要处置,1为未处置,2为已处置 + + mapbjsj.put(k + flag, tempbj); + + MapWarn.put(staname + " " + tmpstr[1], LocalDateTime.now()); + } + + } + } + item.setZt(flag + item.getVal()); + } + +// LocalDateTime now =LocalDateTime.now(); +// int second = now.getSecond(); +// +// if (second % 60 < 2) { +// mapbjsj.forEach((k,v)->{ +// log.info("key:"+k+" v1:"+v.getBeginTime()+" v2:"+v.getEndTime()+" v3:"+v.getBjMs()); +// }); +// log.info("**************************************"); +// } + + Iterator> iter = MapWarn.entrySet().iterator(); + while (iter.hasNext()) { + Map.Entry entry = iter.next(); + LocalDateTime tmpsj = entry.getValue(); + long betweenHours = ChronoUnit.HOURS.between(tmpsj, LocalDateTime.now()); + if (betweenHours > 1) { + iter.remove(); + } + } + + mapyasuojisssj = Ysjsssj.stream().collect(Collectors.toMap(YasuojiSssj::getGykbz, t -> t)); + } + + /** + * 计量点基础信息列表中能管中心数据信息读取 + * 6是工业库设置计量点中能管的类别 + * jiang + * 20231106 + * @return List jlddata + */ + public static List AllNgzxlist() throws InterruptedException { + + String format = getStrCurrentTime(); + //获取166.13数据库中的工业库id + List listAllNg = judge.getJldXxService.getAllJldxx("6"); + //把取到的值存到实体类中 + List ngdata = new ArrayList<>(); + listAllNg.forEach(item -> { + NgSssj jldDataTemp = new NgSssj(); + jldDataTemp.setJldName(item.getJldName().replace("_", "-")); + jldDataTemp.setStationId(item.getStationId()); + jldDataTemp.setZhanName(item.getStationName()); + jldDataTemp.setGykbz(item.getGykbz()); + jldDataTemp.setAcquisitionTime(format); + ngdata.add(jldDataTemp); + }); + //工业库中根据gykbz获取相关数据 + Map GykDataList = KDBClient.MapJldData(); + ngdata.forEach(item -> { + String[] gykbz; + double[] gykValue; + try { + gykbz = item.getGykbz().split(","); + gykValue = new double[gykbz.length]; + for (int i = 0; i < gykbz.length; i++) { + gykValue[i] = 0.0; + gykValue[i] = Double.parseDouble(GykDataList.get(Integer.parseInt(gykbz[i])).toString()); + } + //保留小数点后四位 + item.setVal(String.format("%.4f", gykValue[0])); + } catch (Exception e) { + e.printStackTrace(); + } + }); + //存到map中 + mapNgSssj = ngdata.stream().collect(Collectors.toMap(NgSssj::getGykbz, t -> t)); + return (ngdata); + } + + /** + * 保存能管中心数据到13数据库 + * jiang + * 20231107 + * @throws InterruptedException + */ + public static void saveNgzxSssj() throws InterruptedException { + + List saveNgzxSj = AllNgzxlist() ; + try { + if (saveNgzxSj.size() > 0) { + // todo 批量写入会报错 + // ; bad SQL grammar []; nested exception is java.sql.BatchUpdateException: Table 'jeecg-boot-cxc.cxc_sssj_ngzx' doesn't exist + // judge.ingzxLssjService.saveBatch(saveNgzxSj); + saveNgzxSj.forEach(item -> { + NgSssj ngSssj = new NgSssj(); + ngSssj.setVal(item.getVal()); + ngSssj.setZt(item.getZt()); + ngSssj.setGykbz(item.getGykbz()); + ngSssj.setZhanName(item.getZhanName()); + ngSssj.setStationId(item.getStationId()); + ngSssj.setJldName(item.getJldName()); + ngSssj.setAcquisitionTime(item.getAcquisitionTime()); + //保存到数据库中 +// judge.ingzxLssjService.save(ngSssj); + }); + log.info(sssjTools.getStrCurrentTime() + "-----保存能管中心数据" + saveNgzxSj.size() + "条成功"); + }else{ + log.info(sssjTools.getStrCurrentTime() + "-----能管中心数据未能保存!"); + } + } catch (Exception e) { + log.error("hi:" + e); + } + } + /* 将saveBj多线程中获取的所有报警信息存入历史数据库中 */ + public static void saveBjls(List bjlsList) { + judge.saveBjlsService.saveBatch(bjlsList); + } + + public static List saveYasuojiSssj() { + ysjGykbz = judge.getJldXxService.getYsjGykbz("4"); + DecimalFormat df = new DecimalFormat("0.00"); + + List listyasuojisj = new ArrayList<>(); + List saveyasuojisj = new ArrayList<>(); + + ysjGykbz.forEach(item -> { + String[] split = item.getJldName().split("\\*"); + + if (split[0].equals("ys")) { + YasuojiSj yasuojiSj = new YasuojiSj(); +// log.info("depa:"+item.getDepartName()+" xh:"+item.getSsgx1()); + yasuojiSj.setDepartName(item.getDepartName()); + yasuojiSj.setStationName(item.getStationName()); + yasuojiSj.setGykbz(item.getGykbz()); + yasuojiSj.setJizuHao(split[1]); + yasuojiSj.setYsjxh(item.getSsgx1()); + yasuojiSj.setCanshu(split[2]); + + listyasuojisj.add(yasuojiSj); + } + }); + + Map> mapfz; + mapfz = listyasuojisj.stream().collect(Collectors.groupingBy(obj -> obj.getStationName() + "_" + obj.getJizuHao())); + + if (mapyasuojisssj.size() > 0) { + mapfz.forEach((k, v) -> { + YasuojiSj ysjsj = new YasuojiSj(); + StringBuilder shuju = new StringBuilder(); + v.forEach(item -> { + shuju.append(item.getGykbz()); + shuju.append(":"); + if (mapyasuojisssj.containsKey(item.getGykbz())) { + shuju.append(df.format(mapyasuojisssj.get(item.getGykbz()).getVal())); + } else { + shuju.append("0"); + } + shuju.append(" "); +// log.info("depa:"+(v.get(0).getStationName()+" xh:"+mapyasuojisssj.get(item.getGykbz()).getVal())); + String tmpstr = item.getCanshu(); + if (tmpstr.equals("发动机转速")) { + float tmpval = mapyasuojisssj.get(item.getGykbz()).getVal(); + if (tmpval < 1) { + MapStop.put(v.get(0).getStationName() + " " + v.get(0).getJizuHao(), tmpval); + } else { + MapGood.put(v.get(0).getStationName() + " " + v.get(0).getJizuHao(), tmpval); + } +// log.info("hi:" + item.getJizuHao()+" "+v.get(0).getJizuHao()); + } +// log.info("canshu:"+ tmpstr); + }); + ysjsj.setId(UUID.randomUUID().toString()); + ysjsj.setDepartName(v.get(0).getDepartName()); + ysjsj.setStationName(v.get(0).getStationName()); + ysjsj.setYsjxh(v.get(0).getYsjxh()); + ysjsj.setJizuHao(v.get(0).getJizuHao()); + LocalDateTime now = LocalDateTime.now(); +// String now1=dateTimeFormatter.format(now); + ysjsj.setRq(now); + ysjsj.setShuju(shuju.toString()); + + saveyasuojisj.add(ysjsj); + + }); + } + return saveyasuojisj; + +// try { +// if (saveyasuojisj.size() > 0) { +// +// //*************************************** 压缩机实时 ********************************************************************* +// +// judge.jldlsMapper.YasuojiSssj(saveyasuojisj); +// log.info(sssjTools.getStrCurrentTime() + "-----保存压缩机数据" + saveyasuojisj.size() + "条成功"); +// +// //*************************************************************************************** +// } +// } catch (Exception e) { +// log.error("hi:" + e); +// } + + } + + //获取gykbz对应的计量点信息,该方法在savedata中调用,实现只运行一次 + public static void getJldxxKeyGykbz() { + List Gykbz = judge.getJldXxService.getYsjGykbz("1"); + if (Gykbz.size() > 0) { + Gykbz.forEach(item -> { + if (item.getGykbz() != null) { + List strgykgz = Arrays.asList(item.getGykbz().split(",")); + strgykgz.forEach(item2 -> { + gykbzGetJcxx.put(item2, item); + }); + } + }); + } +// gykbzGetJcxx.forEach((k,v)->{ +// log.info("gykbz:"+k); +// }); + + } + + //获取当前时区当前日期 + public static String getStrCurrentTime() { + TimeZone time = TimeZone.getTimeZone("GMT+8"); //设置为东八区 + time = TimeZone.getDefault();// 这个是国际化所用的 + TimeZone.setDefault(time);// 设置时区 + Calendar calendar = Calendar.getInstance();// 获取实例 + DateFormat format1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//构造格式化模板 + Date date = calendar.getTime(); //获取Date对象 + String str = new String(); + str = format1.format(date);//对象进行格式化,获取字符串格式的输出 + return str; + } + + //获取当前时区当前日期 + public static Date getDateCurrentTime() { + TimeZone time = TimeZone.getTimeZone("GMT+8"); //设置为东八区 + time = TimeZone.getDefault();// 这个是国际化所用的 + TimeZone.setDefault(time);// 设置时区 + Calendar calendar = Calendar.getInstance();// 获取实例 + DateFormat format1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//构造格式化模板 + Date date = calendar.getTime(); //获取Date对象 + + return date; + } + + @PostConstruct + public void init() { + judge = this; + judge.getJldXxService = this.getJldXxService; + judge.saveJldlsService = this.saveJldlsService; + judge.rsjService = this.rsjService; + judge.bjszMapper = this.bjszMapper; + judge.jldlsMapper = this.jldlsMapper; + judge.saveBjlsService = this.saveBjlsService; + judge.getScpzService = this.getScpzService; + judge.saveSclsService = this.saveSclsService; + judge.rishujuService = this.rishujuService; + judge.qijingService = this.qijingService; + } + /** + * 气井数据信息读取 + * + * @return List jlddata + */ +// public static CxcQijingRB getAllQjData() { +// +//// QueryWrapper queryjh = +// List> RsjQjlist = judge.qijingService.getYMDataByjh("部10井"); +// for (Mapmap :RsjQjlist){ +// System.out.println(map.get("qilMData")); +// } + +// System.out.println(listAllQj); +// List qjrbData = new ArrayList<>(); +// listAllQj.forEach(item -> { +// CxcQijingRB qjDataTemp = new CxcQijingRB(); +// qjDataTemp.setId(item.getId()); +// qjDataTemp.setDepartName(item.getDepartName()); +// qjDataTemp.setStationName(item.getStationName()); +// qjDataTemp.setJh(item.getJh()); +// qjDataTemp.setScsj(item.getScsj()); +// qjrbData.add(qjDataTemp); +// }); + + +// return CxcQijingRB; +// } +} + diff --git a/src/main/java/org/gyk/modules/sz/bjpz/controller/CxcSssjSzBjszController.java b/src/main/java/org/gyk/modules/sz/bjpz/controller/CxcSssjSzBjszController.java new file mode 100644 index 0000000..cf29b87 --- /dev/null +++ b/src/main/java/org/gyk/modules/sz/bjpz/controller/CxcSssjSzBjszController.java @@ -0,0 +1,139 @@ +package org.gyk.modules.sz.bjpz.controller; + +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.apache.thrift.TException; +import org.gyk.common.annotation.AutoLog; +import org.gyk.common.api.Result; +import org.gyk.modules.sz.bjpz.entity.CxcSssjSzBjsz; +import org.gyk.modules.sz.bjpz.service.ICxcSssjSzBjszService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.Arrays; +import java.util.List; + +@CrossOrigin(origins = "*", maxAge = 3600) + +@RequestMapping("/sz") +@RestController +public class CxcSssjSzBjszController { + @Autowired + private ICxcSssjSzBjszService cxcSssjSzBjszService; + + /** + * 通过计量点ID查询获取某条记录 + * @param bjId + * @return Result + */ + @RequestMapping("/GetBjdId") + public Result GetBjdId(@RequestParam(value = "bjId") String bjId) throws TException, InterruptedException { + Result result=new Result<>(); + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper(); + queryWrapper.eq(CxcSssjSzBjsz::getId, bjId); + List listJldId = cxcSssjSzBjszService.list(queryWrapper); + result.setSuccess(true); + result.setResult(JSON.toJSONString(listJldId)); +// result.setResult(JSONArray.toJSONString(listZhan)); +// String res = JSON.toJSONString(listZhan); +// System.out.println("返回结果1:"+result); + return result; + } + + /*** 通过计量点IDs查询获取所有记录 + * @param bjIDs + * @return Result + */ + @RequestMapping("/GetBjdIds") + public Result GetBjdIds(@RequestParam(value = "bjIDs") String bjIDs) throws TException, InterruptedException { + Result result=new Result<>(); + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper(); + Arrays.asList(bjIDs.split(",")).forEach(item -> { + queryWrapper.eq(CxcSssjSzBjsz::getId, item); + }); + List listJldId = cxcSssjSzBjszService.list(queryWrapper); + result.setSuccess(true); + result.setResult(JSON.toJSONString(listJldId)); +// result.setResult(JSONArray.toJSONString(listZhan)); +// String res = JSON.toJSONString(listZhan); +// System.out.println("返回结果1:"+result); + return result; + } + + + /** + * 添加 + * + * @param cxcSssjSzBjsz + * @return + */ + @AutoLog(value = "参数报警信息表-添加") + @ApiOperation(value="参数报警信息表-添加", notes="参数报警信息表-添加") + @PostMapping(value = "/add") + public Result add(@RequestBody CxcSssjSzBjsz cxcSssjSzBjsz) { + cxcSssjSzBjszService.save(cxcSssjSzBjsz); + return Result.ok("添加成功!"); + } + + /** + * 编辑 + * + * @param cxcSssjSzBjsz + * @return + */ + @AutoLog(value = "参数报警信息表-编辑") + @ApiOperation(value="参数报警信息表-编辑", notes="参数报警信息表-编辑") + @PutMapping(value = "/edit") + public Result edit(@RequestBody CxcSssjSzBjsz cxcSssjSzBjsz) { + + cxcSssjSzBjszService.updateById(cxcSssjSzBjsz); + return Result.ok("编辑成功!"); + } + + /** + * 通过id删除 + * + * @param id + * @return + */ + @AutoLog(value = "参数报警信息表-通过id删除") + @ApiOperation(value="参数报警信息表-通过id删除", notes="参数报警信息表-通过id删除") + @DeleteMapping(value = "/delete") + public Result delete(@RequestParam(name="id",required=true) String id) { + cxcSssjSzBjszService.removeById(id); + return Result.ok("删除成功!"); + } + + /** + * 批量删除 + * + * @param ids + * @return + */ + @AutoLog(value = "参数报警信息表-批量删除") + @ApiOperation(value="参数报警信息表-批量删除", notes="参数报警信息表-批量删除") + @DeleteMapping(value = "/deleteBatch") + public Result deleteBatch(@RequestParam(name="ids",required=true) String ids) { + this.cxcSssjSzBjszService.removeByIds(Arrays.asList(ids.split(","))); + return Result.ok("批量删除成功!"); + } + + /** + * 通过id查询 + * + * @param id + * @return + */ + @AutoLog(value = "参数报警信息表-通过id查询") + @ApiOperation(value="参数报警信息表-通过id查询", notes="参数报警信息表-通过id查询") + @GetMapping(value = "/queryById") + public Result queryById(@RequestParam(name="id",required=true) String id) { + CxcSssjSzBjsz cxcSssjSzBjsz = cxcSssjSzBjszService.getById(id); + if(cxcSssjSzBjsz==null) { + return Result.error("未找到对应数据"); + } + return Result.ok(cxcSssjSzBjsz); + } +} diff --git a/src/main/java/org/gyk/modules/sz/bjpz/entity/CxcSssjSzBjsz.java b/src/main/java/org/gyk/modules/sz/bjpz/entity/CxcSssjSzBjsz.java new file mode 100644 index 0000000..fe2739e --- /dev/null +++ b/src/main/java/org/gyk/modules/sz/bjpz/entity/CxcSssjSzBjsz.java @@ -0,0 +1,85 @@ +package org.gyk.modules.sz.bjpz.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.io.Serializable; +/** + * @Description: 参数报警信息表 + * @Author: jeecg-boot + * @Date: 2021-03-08 + * @Version: V1.0 + */ + +@Data +@TableName("cxc_sssj_sz_bjsz") +@ApiModel(value="cxc_sssj_sz_bjsz对象", description="实时数据报警设置列表") +public class CxcSssjSzBjsz implements Serializable { + private static final long serialVersionUID = 1L; + + /** 报警点ID(工业库标识)*/ + @TableId(type = IdType.ASSIGN_UUID) + @ApiModelProperty(value = "ID") + private java.lang.String id; + /** 创建人名称 */ + @ApiModelProperty(value = "创建人名称") + private java.lang.String createName; + /** 创建人登录名称 */ + @ApiModelProperty(value = "创建人登录名称") + private java.lang.String createBy; + /** 创建日期 */ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd") + @DateTimeFormat(pattern="yyyy-MM-dd") + @ApiModelProperty(value = "创建日期") + private java.util.Date createTime; + /** 更新人名称 */ + + @ApiModelProperty(value = "更新人名称") + private java.lang.String updateName; + /** 更新人登录名称 */ + @ApiModelProperty(value = "更新人登录名称") + private java.lang.String updateBy; + /** 更新日期 */ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd") + @DateTimeFormat(pattern="yyyy-MM-dd") + @ApiModelProperty(value = "更新日期") + private java.util.Date updateTime; + /** 工业库标志 */ + + @ApiModelProperty(value = "工业库标志") + private java.lang.String gykbz; + /** 报警点名称 */ + + @ApiModelProperty(value = "报警点名称") + private java.lang.String bjName; + /** 高高报警 */ + + @ApiModelProperty(value = "高高报警") + private java.lang.String ggbj; + /** 高报警 */ + + @ApiModelProperty(value = "高报警") + private java.lang.String gbj; + /** 低报警 */ + + @ApiModelProperty(value = "低报警") + private java.lang.String dbj; + /** 低低报警 */ + + @ApiModelProperty(value = "低低报警") + private java.lang.String ddbj; + /** 是否报警 */ + + @ApiModelProperty(value = "是否报警") + private java.lang.String sfbj; + /**备注*/ + + @ApiModelProperty(value = "备注") + private java.lang.String bz; +} diff --git a/src/main/java/org/gyk/modules/sz/bjpz/mapper/CxcSssjSzBjszMapper.java b/src/main/java/org/gyk/modules/sz/bjpz/mapper/CxcSssjSzBjszMapper.java new file mode 100644 index 0000000..330e43b --- /dev/null +++ b/src/main/java/org/gyk/modules/sz/bjpz/mapper/CxcSssjSzBjszMapper.java @@ -0,0 +1,16 @@ +package org.gyk.modules.sz.bjpz.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Select; +import org.gyk.modules.sssj.entity.YasuojiBjCanshu; +import org.gyk.modules.sz.bjpz.entity.CxcSssjSzBjsz; + +import java.util.List; + +@Mapper +public interface CxcSssjSzBjszMapper extends BaseMapper { + @Select(" select a.gykbz,b.baojing_di,b.baojing_gao,b.tingji_di,b.tingji_gao from cxc_sssj_sz_jldxx a,cxc_sssj_yasuoji_bj b\n" + + "where a.ssgx1=b.xinghao and a.ssgx2=b.canshu") + public List getYasuojBjCanshu(); +} diff --git a/src/main/java/org/gyk/modules/sz/bjpz/mapper/xml/CxcSssjSzBjszMapper.xml b/src/main/java/org/gyk/modules/sz/bjpz/mapper/xml/CxcSssjSzBjszMapper.xml new file mode 100644 index 0000000..fdba7ee --- /dev/null +++ b/src/main/java/org/gyk/modules/sz/bjpz/mapper/xml/CxcSssjSzBjszMapper.xml @@ -0,0 +1,15 @@ + + + + + insert into cxc_sssj_lssj_bjlsjl(id,bj_id,bj_name,sdz,bjz,reason,bz) + values + + (#{dept.id,jdbcType=VACRCHAR},#{dept.bj_id,jdbcType=VACRCHAR}, #{dept.bj_name,jdbcType=VACRCHAR}, #{dept.sdz,jdbcType=VARCHAR}, + #{dept.bjz,jdbcType=VACRCHAR}, #{dept.reason,jdbcType=VARCHAR}, #{dept.bz,jdbcType=VARCHAR}) + + + + + + diff --git a/src/main/java/org/gyk/modules/sz/bjpz/service/ICxcSssjSzBjszService.java b/src/main/java/org/gyk/modules/sz/bjpz/service/ICxcSssjSzBjszService.java new file mode 100644 index 0000000..ca50d25 --- /dev/null +++ b/src/main/java/org/gyk/modules/sz/bjpz/service/ICxcSssjSzBjszService.java @@ -0,0 +1,20 @@ +package org.gyk.modules.sz.bjpz.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import org.gyk.modules.sssj.entity.YasuojiBjCanshu; +import org.gyk.modules.sz.bjpz.entity.CxcSssjSzBjsz; + +import java.util.List; +import java.util.Map; + +/** + * @Description: 参数报警信息表 + * @Author: jeecg-boot + * @Date: 2021-03-08 + * @Version: V1.0 + */ +public interface ICxcSssjSzBjszService extends IService { + List GetBjz(); + + Map GetYsjBjz(); +} diff --git a/src/main/java/org/gyk/modules/sz/bjpz/service/impl/CxcSssjSzBjszServiceImpl.java b/src/main/java/org/gyk/modules/sz/bjpz/service/impl/CxcSssjSzBjszServiceImpl.java new file mode 100644 index 0000000..945c4e3 --- /dev/null +++ b/src/main/java/org/gyk/modules/sz/bjpz/service/impl/CxcSssjSzBjszServiceImpl.java @@ -0,0 +1,40 @@ +package org.gyk.modules.sz.bjpz.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.gyk.modules.sssj.entity.YasuojiBjCanshu; +import org.gyk.modules.sz.bjpz.entity.CxcSssjSzBjsz; +import org.gyk.modules.sz.bjpz.mapper.CxcSssjSzBjszMapper; +import org.gyk.modules.sz.bjpz.service.ICxcSssjSzBjszService; +import org.springframework.cache.annotation.Cacheable; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * @Description: 参数报警信息表 + * @Author: jeecg-boot + * @Date: 2021-03-08 + * @Version: V1.0 + */ +@Service +public class CxcSssjSzBjszServiceImpl extends ServiceImpl implements ICxcSssjSzBjszService { + @Override + @Cacheable(value = "sqlBj", key = "#root.methodName") + public List GetBjz() { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper(); + List listAll = baseMapper.selectList(queryWrapper); + return listAll; + } + + @Override + @Cacheable(value = "sqlBj", key = "#root.methodName") + public Map GetYsjBjz() { + List list = baseMapper.getYasuojBjCanshu(); + Map map = list.stream().collect(Collectors.toMap(YasuojiBjCanshu::getGykbz,obj->obj,(key1,key2)->key1)); + return map; + } + +} diff --git a/src/main/java/org/gyk/modules/sz/cxcsssjjldbjcanshusz/controller/CxcSssjJldBjCanshuSzController.java b/src/main/java/org/gyk/modules/sz/cxcsssjjldbjcanshusz/controller/CxcSssjJldBjCanshuSzController.java new file mode 100644 index 0000000..e03ed49 --- /dev/null +++ b/src/main/java/org/gyk/modules/sz/cxcsssjjldbjcanshusz/controller/CxcSssjJldBjCanshuSzController.java @@ -0,0 +1,128 @@ +package org.gyk.modules.sz.cxcsssjjldbjcanshusz.controller; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.gyk.common.annotation.AutoLog; +import org.gyk.common.api.Result; +import org.gyk.modules.sz.cxcsssjjldbjcanshusz.entity.CxcSssjJldBjCanshuSz; +import org.gyk.modules.sz.cxcsssjjldbjcanshusz.service.ICxcSssjJldBjCanshuSzService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletRequest; +import java.util.Arrays; + + /** + * @Description: 计量点报警参数字典 + * @Author: jeecg-boot + * @Date: 2023-09-25 + * @Version: V1.0 + */ +@Api(tags="计量点报警参数字典") +@RestController +@RequestMapping("/cxcsssjjldbjcanshusz/cxcSssjJldBjCanshuSz") +@Slf4j +@CrossOrigin(origins = "*", maxAge = 3600) +public class CxcSssjJldBjCanshuSzController { + @Autowired + private ICxcSssjJldBjCanshuSzService cxcSssjJldBjCanshuSzService; + + /** + * 分页列表查询 + * + * @param cxcSssjJldBjCanshuSz + * @param pageNo + * @param pageSize + * @param req + * @return + */ + @AutoLog(value = "计量点报警参数字典-分页列表查询") + @ApiOperation(value="计量点报警参数字典-分页列表查询", notes="计量点报警参数字典-分页列表查询") + @GetMapping(value = "/list") + public Result queryPageList(CxcSssjJldBjCanshuSz cxcSssjJldBjCanshuSz, + @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, + @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, + HttpServletRequest req) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + Page page = new Page(pageNo, pageSize); + IPage pageList = cxcSssjJldBjCanshuSzService.page(page, queryWrapper); + return Result.ok(pageList); + } + + /** + * 添加 + * + * @param cxcSssjJldBjCanshuSz + * @return + */ + @AutoLog(value = "计量点报警参数字典-添加") + @ApiOperation(value="计量点报警参数字典-添加", notes="计量点报警参数字典-添加") + @PostMapping(value = "/add") + public Result add(@RequestBody CxcSssjJldBjCanshuSz cxcSssjJldBjCanshuSz) { + cxcSssjJldBjCanshuSzService.save(cxcSssjJldBjCanshuSz); + return Result.ok("添加成功!"); + } + + /** + * 编辑 + * + * @param cxcSssjJldBjCanshuSz + * @return + */ + @AutoLog(value = "计量点报警参数字典-编辑") + @ApiOperation(value="计量点报警参数字典-编辑", notes="计量点报警参数字典-编辑") + @PutMapping(value = "/edit") + public Result edit(@RequestBody CxcSssjJldBjCanshuSz cxcSssjJldBjCanshuSz) { + cxcSssjJldBjCanshuSzService.updateById(cxcSssjJldBjCanshuSz); + return Result.ok("编辑成功!"); + } + + /** + * 通过id删除 + * + * @param id + * @return + */ + @AutoLog(value = "计量点报警参数字典-通过id删除") + @ApiOperation(value="计量点报警参数字典-通过id删除", notes="计量点报警参数字典-通过id删除") + @DeleteMapping(value = "/delete") + public Result delete(@RequestParam(name="id",required=true) String id) { + cxcSssjJldBjCanshuSzService.removeById(id); + return Result.ok("删除成功!"); + } + + /** + * 批量删除 + * + * @param ids + * @return + */ + @AutoLog(value = "计量点报警参数字典-批量删除") + @ApiOperation(value="计量点报警参数字典-批量删除", notes="计量点报警参数字典-批量删除") + @DeleteMapping(value = "/deleteBatch") + public Result deleteBatch(@RequestParam(name="ids",required=true) String ids) { + this.cxcSssjJldBjCanshuSzService.removeByIds(Arrays.asList(ids.split(","))); + return Result.ok("批量删除成功!"); + } + + /** + * 通过id查询 + * + * @param id + * @return + */ + @AutoLog(value = "计量点报警参数字典-通过id查询") + @ApiOperation(value="计量点报警参数字典-通过id查询", notes="计量点报警参数字典-通过id查询") + @GetMapping(value = "/queryById") + public Result queryById(@RequestParam(name="id",required=true) String id) { + CxcSssjJldBjCanshuSz cxcSssjJldBjCanshuSz = cxcSssjJldBjCanshuSzService.getById(id); + if(cxcSssjJldBjCanshuSz==null) { + return Result.error("未找到对应数据"); + } + return Result.ok(cxcSssjJldBjCanshuSz); + } +} diff --git a/src/main/java/org/gyk/modules/sz/cxcsssjjldbjcanshusz/entity/CxcSssjJldBjCanshuSz.java b/src/main/java/org/gyk/modules/sz/cxcsssjjldbjcanshusz/entity/CxcSssjJldBjCanshuSz.java new file mode 100644 index 0000000..29e0392 --- /dev/null +++ b/src/main/java/org/gyk/modules/sz/cxcsssjjldbjcanshusz/entity/CxcSssjJldBjCanshuSz.java @@ -0,0 +1,78 @@ +package org.gyk.modules.sz.cxcsssjjldbjcanshusz.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +import org.jeecgframework.poi.excel.annotation.Excel; +import org.springframework.format.annotation.DateTimeFormat; + +import java.io.Serializable; + +/** + * @Description: 计量点报警参数字典 + * @Author: jeecg-boot + * @Date: 2023-09-25 + * @Version: V1.0 + */ +@Data +@TableName("cxc_sssj_jld_bj_canshu_sz") +@Accessors(chain = true) +@EqualsAndHashCode(callSuper = false) +@ApiModel(value="cxc_sssj_jld_bj_canshu_sz对象", description="计量点报警参数字典") +public class CxcSssjJldBjCanshuSz implements Serializable { + private static final long serialVersionUID = 1L; + + /**主键*/ + @TableId(type = IdType.ASSIGN_UUID) + @ApiModelProperty(value = "主键") + private java.lang.String id; + /**创建人*/ + @ApiModelProperty(value = "创建人") + private java.lang.String createBy; + /**创建日期*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @ApiModelProperty(value = "创建日期") + private java.util.Date createTime; + /**更新人*/ + @ApiModelProperty(value = "更新人") + private java.lang.String updateBy; + /**更新日期*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @ApiModelProperty(value = "更新日期") + private java.util.Date updateTime; + /**所属部门*/ + @ApiModelProperty(value = "所属部门") + private java.lang.String sysOrgCode; + /**参数名*/ + @Excel(name = "参数名", width = 15) + @ApiModelProperty(value = "参数名") + private java.lang.String canshu; + /**报警低值*/ + @Excel(name = "报警低值", width = 15) + @ApiModelProperty(value = "报警低值") + private java.lang.Double baojingdi; + /**报警高值*/ + @Excel(name = "报警高值", width = 15) + @ApiModelProperty(value = "报警高值") + private java.lang.Double baojinggao; + /**危险低值*/ + @Excel(name = "危险低值", width = 15) + @ApiModelProperty(value = "危险低值") + private java.lang.Double weixiandi; + /**危险高值*/ + @Excel(name = "危险高值", width = 15) + @ApiModelProperty(value = "危险高值") + private java.lang.Double weixiangao; + /**备注*/ + @Excel(name = "备注", width = 15) + @ApiModelProperty(value = "备注") + private java.lang.String bz; +} diff --git a/src/main/java/org/gyk/modules/sz/cxcsssjjldbjcanshusz/mapper/CxcSssjJldBjCanshuSzMapper.java b/src/main/java/org/gyk/modules/sz/cxcsssjjldbjcanshusz/mapper/CxcSssjJldBjCanshuSzMapper.java new file mode 100644 index 0000000..31db8e4 --- /dev/null +++ b/src/main/java/org/gyk/modules/sz/cxcsssjjldbjcanshusz/mapper/CxcSssjJldBjCanshuSzMapper.java @@ -0,0 +1,16 @@ +package org.gyk.modules.sz.cxcsssjjldbjcanshusz.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; +import org.gyk.modules.sz.cxcsssjjldbjcanshusz.entity.CxcSssjJldBjCanshuSz; + +/** + * @Description: 计量点报警参数字典 + * @Author: jeecg-boot + * @Date: 2023-09-25 + * @Version: V1.0 + */ +@Mapper +public interface CxcSssjJldBjCanshuSzMapper extends BaseMapper { + +} diff --git a/src/main/java/org/gyk/modules/sz/cxcsssjjldbjcanshusz/mapper/xml/CxcSssjJldBjCanshuSzMapper.xml b/src/main/java/org/gyk/modules/sz/cxcsssjjldbjcanshusz/mapper/xml/CxcSssjJldBjCanshuSzMapper.xml new file mode 100644 index 0000000..bb967ea --- /dev/null +++ b/src/main/java/org/gyk/modules/sz/cxcsssjjldbjcanshusz/mapper/xml/CxcSssjJldBjCanshuSzMapper.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/main/java/org/gyk/modules/sz/cxcsssjjldbjcanshusz/service/ICxcSssjJldBjCanshuSzService.java b/src/main/java/org/gyk/modules/sz/cxcsssjjldbjcanshusz/service/ICxcSssjJldBjCanshuSzService.java new file mode 100644 index 0000000..392baad --- /dev/null +++ b/src/main/java/org/gyk/modules/sz/cxcsssjjldbjcanshusz/service/ICxcSssjJldBjCanshuSzService.java @@ -0,0 +1,17 @@ +package org.gyk.modules.sz.cxcsssjjldbjcanshusz.service; + +import org.gyk.modules.sz.cxcsssjjldbjcanshusz.entity.CxcSssjJldBjCanshuSz; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.Map; + +/** + * @Description: 计量点报警参数字典 + * @Author: jeecg-boot + * @Date: 2023-09-25 + * @Version: V1.0 + */ +public interface ICxcSssjJldBjCanshuSzService extends IService { + public Map getbjcs(); + +} diff --git a/src/main/java/org/gyk/modules/sz/cxcsssjjldbjcanshusz/service/impl/CxcSssjJldBjCanshuSzServiceImpl.java b/src/main/java/org/gyk/modules/sz/cxcsssjjldbjcanshusz/service/impl/CxcSssjJldBjCanshuSzServiceImpl.java new file mode 100644 index 0000000..156e7ea --- /dev/null +++ b/src/main/java/org/gyk/modules/sz/cxcsssjjldbjcanshusz/service/impl/CxcSssjJldBjCanshuSzServiceImpl.java @@ -0,0 +1,29 @@ +package org.gyk.modules.sz.cxcsssjjldbjcanshusz.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.gyk.modules.sz.cxcsssjjldbjcanshusz.entity.CxcSssjJldBjCanshuSz; +import org.gyk.modules.sz.cxcsssjjldbjcanshusz.mapper.CxcSssjJldBjCanshuSzMapper; +import org.gyk.modules.sz.cxcsssjjldbjcanshusz.service.ICxcSssjJldBjCanshuSzService; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Map; +import java.util.function.Function; +import java.util.stream.Collectors; + +/** + * @Description: 计量点报警参数字典 + * @Author: jeecg-boot + * @Date: 2023-09-25 + * @Version: V1.0 + */ +@Service +public class CxcSssjJldBjCanshuSzServiceImpl extends ServiceImpl implements ICxcSssjJldBjCanshuSzService { + @Override + public Map getbjcs() { + List listallcs = list(); + Map map = listallcs.stream().collect(Collectors.toMap(CxcSssjJldBjCanshuSz::getCanshu, Function.identity(),(k1, k2)->k2)); + return map; + }; + +} diff --git a/src/main/java/org/gyk/modules/sz/jdlbjpz/controller/CxcSssjJldBjShezhiController.java b/src/main/java/org/gyk/modules/sz/jdlbjpz/controller/CxcSssjJldBjShezhiController.java new file mode 100644 index 0000000..5015eae --- /dev/null +++ b/src/main/java/org/gyk/modules/sz/jdlbjpz/controller/CxcSssjJldBjShezhiController.java @@ -0,0 +1,95 @@ +package org.gyk.modules.sz.jdlbjpz.controller; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.gyk.common.api.Result; +import org.gyk.modules.sz.jdlbjpz.entity.CxcSssjJldBjShezhi; +import org.gyk.modules.sz.jdlbjpz.service.ICxcSssjJldBjShezhiService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletRequest; + + /** + * @Description: 计量点报警设置 + * @Author: jeecg-boot + * @Date: 2023-09-21 + * @Version: V1.0 + */ + @CrossOrigin(origins = "*", maxAge = 3600) +@Api(tags="计量点报警设置") +@RestController +@RequestMapping("/cxcsssjjldbjshezhi/cxcSssjJldBjShezhi") +@Slf4j +public class CxcSssjJldBjShezhiController { + @Autowired(required = false) + private ICxcSssjJldBjShezhiService cxcSssjJldBjShezhiService; + + /** + * 分页列表查询 + * + * @param cxcSssjJldBjShezhi + * @param pageNo + * @param pageSize + * @param req + * @return + */ + @ApiOperation(value="计量点报警设置-分页列表查询", notes="计量点报警设置-分页列表查询") + @GetMapping(value = "/list") + public Result queryPageList(CxcSssjJldBjShezhi cxcSssjJldBjShezhi, + @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, + @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, + HttpServletRequest req) { + QueryWrapper queryWrapper =new QueryWrapper<> (); + Page page = new Page(pageNo, pageSize); + IPage pageList = cxcSssjJldBjShezhiService.page(page, queryWrapper); + return Result.ok(pageList); + } + + /** + * 添加 + * + * @param cxcSssjJldBjShezhi + * @return + */ + + @ApiOperation(value="计量点报警设置-添加", notes="计量点报警设置-添加") + @PostMapping(value = "/add") + public Result add(@RequestBody CxcSssjJldBjShezhi cxcSssjJldBjShezhi) { + cxcSssjJldBjShezhiService.save(cxcSssjJldBjShezhi); + return Result.ok("添加成功!"); + } + + /** + * 编辑 + * + * @param cxcSssjJldBjShezhi + * @return + */ + + @ApiOperation(value="计量点报警设置-编辑", notes="计量点报警设置-编辑") + @PutMapping(value = "/edit") + public Result edit(@RequestBody CxcSssjJldBjShezhi cxcSssjJldBjShezhi) { + cxcSssjJldBjShezhiService.updateById(cxcSssjJldBjShezhi); + return Result.ok("编辑成功!"); + } + + /** + * 通过id删除 + * + * @param id + * @return + */ + + @ApiOperation(value="计量点报警设置-通过id删除", notes="计量点报警设置-通过id删除") + @DeleteMapping(value = "/delete") + public Result delete(@RequestParam(name="id",required=true) String id) { + cxcSssjJldBjShezhiService.removeById(id); + return Result.ok("删除成功!"); + } + +} diff --git a/src/main/java/org/gyk/modules/sz/jdlbjpz/entity/CxcSssjJldBjShezhi.java b/src/main/java/org/gyk/modules/sz/jdlbjpz/entity/CxcSssjJldBjShezhi.java new file mode 100644 index 0000000..2a1b7dd --- /dev/null +++ b/src/main/java/org/gyk/modules/sz/jdlbjpz/entity/CxcSssjJldBjShezhi.java @@ -0,0 +1,73 @@ +package org.gyk.modules.sz.jdlbjpz.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +import org.jeecgframework.poi.excel.annotation.Excel; +import org.springframework.format.annotation.DateTimeFormat; + +import java.io.Serializable; + +/** + * @Description: 计量点报警设置 + * @Author: jeecg-boot + * @Date: 2023-09-21 + * @Version: V1.0 + */ +@Data +@TableName("cxc_sssj_jld_bj_shezhi") +@Accessors(chain = true) +@EqualsAndHashCode(callSuper = false) +@ApiModel(value="cxc_sssj_jld_bj_shezhi对象", description="计量点报警设置") +public class CxcSssjJldBjShezhi implements Serializable { + private static final long serialVersionUID = 1L; + + /**主键*/ + @TableId(type = IdType.ASSIGN_UUID) + @ApiModelProperty(value = "主键") + private java.lang.String id; + /**创建人*/ + @ApiModelProperty(value = "创建人") + private java.lang.String createBy; + /**创建日期*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @ApiModelProperty(value = "创建日期") + private java.util.Date createTime; + /**更新人*/ + @ApiModelProperty(value = "更新人") + private java.lang.String updateBy; + /**更新日期*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @ApiModelProperty(value = "更新日期") + private java.util.Date updateTime; + /**所属部门*/ + @ApiModelProperty(value = "所属部门") + private java.lang.String sysOrgCode; + /**站场*/ + @Excel(name = "站场", width = 15) + @ApiModelProperty(value = "站场") + private java.lang.String zhanchang; + /**计量点*/ + @Excel(name = "计量点", width = 15) + @ApiModelProperty(value = "计量点") + private java.lang.String jldname; + /**参数*/ + + + private java.lang.String wdGykid; + private java.lang.String wdBjcs; + + private java.lang.String ylGykid; + private java.lang.String ylBjcs; + + private java.lang.String ycGykid; + private java.lang.String ycBjcs; +} diff --git a/src/main/java/org/gyk/modules/sz/jdlbjpz/mapper/CxcSssjJldBjShezhiMapper.java b/src/main/java/org/gyk/modules/sz/jdlbjpz/mapper/CxcSssjJldBjShezhiMapper.java new file mode 100644 index 0000000..cd877b8 --- /dev/null +++ b/src/main/java/org/gyk/modules/sz/jdlbjpz/mapper/CxcSssjJldBjShezhiMapper.java @@ -0,0 +1,16 @@ +package org.gyk.modules.sz.jdlbjpz.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; +import org.gyk.modules.sz.jdlbjpz.entity.CxcSssjJldBjShezhi; + +/** + * @Description: 计量点报警设置 + * @Author: jeecg-boot + * @Date: 2023-09-21 + * @Version: V1.0 + */ +@Mapper +public interface CxcSssjJldBjShezhiMapper extends BaseMapper { + +} diff --git a/src/main/java/org/gyk/modules/sz/jdlbjpz/mapper/xml/CxcSssjJldBjShezhiMapper.xml b/src/main/java/org/gyk/modules/sz/jdlbjpz/mapper/xml/CxcSssjJldBjShezhiMapper.xml new file mode 100644 index 0000000..a3de2e1 --- /dev/null +++ b/src/main/java/org/gyk/modules/sz/jdlbjpz/mapper/xml/CxcSssjJldBjShezhiMapper.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/main/java/org/gyk/modules/sz/jdlbjpz/service/ICxcSssjJldBjShezhiService.java b/src/main/java/org/gyk/modules/sz/jdlbjpz/service/ICxcSssjJldBjShezhiService.java new file mode 100644 index 0000000..a41e5ee --- /dev/null +++ b/src/main/java/org/gyk/modules/sz/jdlbjpz/service/ICxcSssjJldBjShezhiService.java @@ -0,0 +1,17 @@ +package org.gyk.modules.sz.jdlbjpz.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import org.gyk.modules.sz.jdlbjpz.entity.CxcSssjJldBjShezhi; + +import java.util.List; + +/** + * @Description: 计量点报警设置 + * @Author: jeecg-boot + * @Date: 2023-09-21 + * @Version: V1.0 + */ +public interface ICxcSssjJldBjShezhiService extends IService { + public List GetJldBjz(); + +} diff --git a/src/main/java/org/gyk/modules/sz/jdlbjpz/service/impl/CxcSssjJldBjShezhiServiceImpl.java b/src/main/java/org/gyk/modules/sz/jdlbjpz/service/impl/CxcSssjJldBjShezhiServiceImpl.java new file mode 100644 index 0000000..5b1a1f8 --- /dev/null +++ b/src/main/java/org/gyk/modules/sz/jdlbjpz/service/impl/CxcSssjJldBjShezhiServiceImpl.java @@ -0,0 +1,28 @@ +package org.gyk.modules.sz.jdlbjpz.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.gyk.modules.sz.jdlbjpz.entity.CxcSssjJldBjShezhi; +import org.gyk.modules.sz.jdlbjpz.mapper.CxcSssjJldBjShezhiMapper; +import org.gyk.modules.sz.jdlbjpz.service.ICxcSssjJldBjShezhiService; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * @Description: 计量点报警设置 + * @Author: jeecg-boot + * @Date: 2023-09-21 + * @Version: V1.0 + */ +@Service +public class CxcSssjJldBjShezhiServiceImpl extends ServiceImpl implements ICxcSssjJldBjShezhiService { +// @Override +// @Cacheable(value = "sqlBj", key = "#root.methodName") + public List GetJldBjz() { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper(); + List listAll = baseMapper.selectList(queryWrapper); + return listAll; + } + +} diff --git a/src/main/java/org/gyk/modules/sz/jldxx/controller/CxcSssjSzJldxxController.java b/src/main/java/org/gyk/modules/sz/jldxx/controller/CxcSssjSzJldxxController.java new file mode 100644 index 0000000..c8adfb2 --- /dev/null +++ b/src/main/java/org/gyk/modules/sz/jldxx/controller/CxcSssjSzJldxxController.java @@ -0,0 +1,155 @@ +package org.gyk.modules.sz.jldxx.controller; + + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.gyk.common.annotation.AutoLog; +import org.gyk.common.api.Result; +import org.gyk.common.base.controller.gykController; +import org.gyk.modules.sz.jldxx.entity.CxcSssjSzJldxx; +import org.gyk.modules.sz.jldxx.mapper.CxcSssjSzJldxxMapper; +import org.gyk.modules.sz.jldxx.service.ICxcSssjSzJldxxService; +import org.gyk.modules.sz.jldxx.service.IGetJldxxService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +/** + * @Description: 计量点信息设置 + * @Author: jeecg-boot + * @Date: 2021-03-09 + * @Version: V1.0 + */ +@CrossOrigin(origins = "*", maxAge = 3600) +@Api(tags="cxc_sssj_sz_jldxx") +@RestController +@RequestMapping("/jldxx/cxcSssjSzJldxx") +@Slf4j +public class CxcSssjSzJldxxController extends gykController { + @Autowired + private ICxcSssjSzJldxxService cxcSssjSzJldxxService; + @Autowired + private IGetJldxxService getAllJldxx; + @Autowired (required=false) + private CxcSssjSzJldxxMapper cxcSssjSzJldxxMapper; + + /** + * 添加 + * + * @param cxcSssjSzJldxx + * @return + */ + @AutoLog(value = "cxc_sssj_sz_jldxx-添加") + @ApiOperation(value="cxc_sssj_sz_jldxx-添加", notes="cxc_sssj_sz_jldxx-添加") + @PostMapping(value = "/add") + public Result add(@RequestBody CxcSssjSzJldxx cxcSssjSzJldxx) { + cxcSssjSzJldxxService.save(cxcSssjSzJldxx); + return Result.ok("添加成功!"); + } + + /** + * 编辑 + * + * @param cxcSssjSzJldxx + * @return + */ + @AutoLog(value = "cxc_sssj_sz_jldxx-编辑") + @ApiOperation(value="cxc_sssj_sz_jldxx-编辑", notes="cxc_sssj_sz_jldxx-编辑") + @PutMapping(value = "/edit") + public Result edit(@RequestBody CxcSssjSzJldxx cxcSssjSzJldxx) { + cxcSssjSzJldxxService.updateById(cxcSssjSzJldxx); + return Result.ok("保存成功!"); + } + + /** + * 通过id删除 + * + * @param id + * @return + */ + @AutoLog(value = "cxc_sssj_sz_jldxx-通过id删除") + @ApiOperation(value="cxc_sssj_sz_jldxx-通过id删除", notes="cxc_sssj_sz_jldxx-通过id删除") + @DeleteMapping(value = "/delete") + public Result delete(@RequestParam(name="id",required=true) String id) { + cxcSssjSzJldxxService.removeById(id); + return Result.ok("删除成功!"); + } + + /** + * 批量删除 + * + * @param ids + * @return + */ + @AutoLog(value = "cxc_sssj_sz_jldxx-批量删除") + @ApiOperation(value="cxc_sssj_sz_jldxx-批量删除", notes="cxc_sssj_sz_jldxx-批量删除") + @DeleteMapping(value = "/deleteBatch") + public Result deleteBatch(@RequestParam(name="ids",required=true) String ids) { + this.cxcSssjSzJldxxService.removeByIds(Arrays.asList(ids.split(","))); + return Result.ok("批量删除成功!"); + } + + /** + * 通过id查询 + * + * @param id + * @return + */ + @AutoLog(value = "cxc_sssj_sz_jldxx-通过id查询") + @ApiOperation(value="cxc_sssj_sz_jldxx-通过id查询", notes="cxc_sssj_sz_jldxx-通过id查询") + @GetMapping(value = "/queryById") + public Result queryById(@RequestParam(name="id",required=true) String id) { + CxcSssjSzJldxx cxcSssjSzJldxx = cxcSssjSzJldxxService.getById(id); + if(cxcSssjSzJldxx==null) { + return Result.error("未找到对应数据"); + } + return Result.ok(cxcSssjSzJldxx); + } + + @GetMapping(value = "/listAllJldxx") + public Result listAllJldxx() { +// LambdaQueryWrapper qw = Wrappers.lambdaQuery(); +// qw.orderByAsc(CxcSssjSzJldxx::getStationName,CxcSssjSzJldxx::getJldName); + QueryWrapper qw = new QueryWrapper<>(); + qw.orderByAsc("station_name","jld_name"); + List list = cxcSssjSzJldxxMapper.selectList(qw); + for (CxcSssjSzJldxx cxcSssjSzJldxx : list) { + if (cxcSssjSzJldxx.getStationName().equals("柳屯配气站B") || cxcSssjSzJldxx.getStationName().equals("柳屯配气站A")) { + cxcSssjSzJldxx.setStationName("柳屯配气站"); + } + } + + if(list.size()<1) { + return Result.error("未找到对应数据"); + } + return Result.ok(list); + } + + @GetMapping(value = "/getjldxxByZcAndJldname") + public Result getjldxxByZcAndJldname(@RequestParam(name="zcmc",required=true) String zcmc,@RequestParam(name="jldmc",required=true) String jldmc) { + + LambdaQueryWrapper qw = Wrappers.lambdaQuery(); + qw.eq(CxcSssjSzJldxx::getStationName,zcmc); + qw.eq(CxcSssjSzJldxx::getJldName,"jl"+jldmc); + List list = cxcSssjSzJldxxMapper.selectList(qw); + List list1 = new ArrayList<>(); + if (list.size()>0) { + //根据sssjtools第658行部分,3,4,10分别对应压力,压差和温度 + String[] gykbz= list.get(0).getGykbz().split("\\,"); + list1.add("yl:"+gykbz[3]); + list1.add("yc:"+gykbz[4]); + list1.add("wd:"+gykbz[10]); + } + + return Result.ok(list1); + } + + +} diff --git a/src/main/java/org/gyk/modules/sz/jldxx/entity/CxcSssjSzJldxx.java b/src/main/java/org/gyk/modules/sz/jldxx/entity/CxcSssjSzJldxx.java new file mode 100644 index 0000000..dd47516 --- /dev/null +++ b/src/main/java/org/gyk/modules/sz/jldxx/entity/CxcSssjSzJldxx.java @@ -0,0 +1,151 @@ +package org.gyk.modules.sz.jldxx.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +import org.jeecgframework.poi.excel.annotation.Excel; +import org.springframework.format.annotation.DateTimeFormat; + +import java.io.Serializable; +import java.util.Date; + +/** + * @Description: cxc_sssj_sz_jldxx + * @Author: jeecg-boot + * @Date: 2021-03-09 + * @Version: V1.0 + */ +@Data +@TableName("cxc_sssj_sz_jldxx") +@Accessors(chain = true) +@EqualsAndHashCode(callSuper = false) +@ApiModel(value="cxc_sssj_sz_jldxx对象", description="cxc_sssj_sz_jldxx") +public class CxcSssjSzJldxx implements Serializable { + private static final long serialVersionUID = 1L; + + /** ID */ + @TableId(type = IdType.ASSIGN_UUID) + @ApiModelProperty(value = " ID ") + private String id; + /** 创建人名称 */ + @Excel(name = " 创建人名称 ", width = 15) + @ApiModelProperty(value = " 创建人名称 ") + private String createName; + /** 创建人登录名称 */ + @ApiModelProperty(value = " 创建人登录名称 ") + private String createBy; + /** 创建日期 */ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd") + @DateTimeFormat(pattern="yyyy-MM-dd") + @ApiModelProperty(value = " 创建日期 ") + private Date createTime; + /** 更新人名称 */ + @Excel(name = " 更新人名称 ", width = 15) + @ApiModelProperty(value = " 更新人名称 ") + private String updateName; + /** 更新人登录名称 */ + @ApiModelProperty(value = " 更新人登录名称 ") + private String updateBy; + /** 更新日期 */ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd") + @DateTimeFormat(pattern="yyyy-MM-dd") + @ApiModelProperty(value = " 更新日期 ") + private Date updateTime; + /** 计量点名称 */ + @Excel(name = " 计量点名称 ", width = 15) + @ApiModelProperty(value = " 计量点名称 ") + private String jldName; + /** 起始点类别 */ + @Excel(name = " 起始点类别 ", width = 15) + @ApiModelProperty(value = " 起始点类别 ") + private String qsdlb; + /** 站场名称 */ + @Excel(name = " 站场名称 ", width = 15) + @ApiModelProperty(value = " 站场名称 ") + private String stationName; + /** 站场编号 */ + @Excel(name = " 站场编号 ", width = 15) + @ApiModelProperty(value = " 站场编号 ") + private String stationId; + /** 管理区名称 */ + @Excel(name = " 管理区名称 ", width = 15) + @ApiModelProperty(value = " 管理区名称 ") + private String departName; + /** 管理区编号 */ + @Excel(name = " 管理区编号 ", width = 15) + @ApiModelProperty(value = " 管理区编号 ") + private String departId; + /** 气体类型 */ + @Excel(name = " 气体类型 ", width = 15) + @ApiModelProperty(value = " 气体类型 ") + private String qtlx; + /** 运行状态 */ + @Excel(name = " 运行状态 ", width = 15) + @ApiModelProperty(value = " 运行状态 ") + private String yxzt; + /**仪表类别*/ + @Excel(name = "仪表类别", width = 15) + @ApiModelProperty(value = "仪表类别") + private String yblb; + /** 用户类别 */ + @Excel(name = " 用户类别 ", width = 15) + @ApiModelProperty(value = " 用户类别 ") + private String yhlb; + /** 计量点类别 */ + @Excel(name = " 计量点类别 ", width = 15) + @ApiModelProperty(value = " 计量点类别 ") + private String jldlb; + /** 进出站类别 */ + @Excel(name = " 进出站类别 ", width = 15) + @ApiModelProperty(value = " 进出站类别 ") + private String jczlb; + /** 所属管线1 */ + @Excel(name = " 所属管线1 ", width = 15) + @ApiModelProperty(value = " 所属管线1 ") + private String ssgx1; + /** 所属管线2 */ + @Excel(name = " 所属管线2 ", width = 15) + @ApiModelProperty(value = " 所属管线2 ") + private String ssgx2; + /** 气源类别 */ + @Excel(name = " 气源类别 ", width = 15) + @ApiModelProperty(value = " 气源类别 ") + private String qylb; + /** 备注 */ + @Excel(name = " 备注 ", width = 15) + @ApiModelProperty(value = " 备注 ") + private String bz; + /**计量方式*/ + @Excel(name = "计量方式", width = 15) + @ApiModelProperty(value = "计量方式") + private String jlfs; + /**工业库标识*/ + @Excel(name = "工业库标识", width = 15) + @ApiModelProperty(value = "工业库标识") + private String gykbz; + /**计量点类型*/ + @Excel(name = "计量点类型", width = 15) + @ApiModelProperty(value = "计量点类型") + private String jldlx; + /**计量点单位*/ + @Excel(name = "计量点单位", width = 15) + @ApiModelProperty(value = "计量点单位") + private String jlddw; + /**站内编号*/ +// @Excel(name = "站内编号", width = 15) +// @ApiModelProperty(value = "站内编号") +// private String jldNo; + + @ApiModelProperty(value = "是否远传") + private String sfyc; + + /**输差单位 by 闵*/ + @ApiModelProperty(value = "输差单位") + private String sqDw; +} diff --git a/src/main/java/org/gyk/modules/sz/jldxx/entity/JldData.java b/src/main/java/org/gyk/modules/sz/jldxx/entity/JldData.java new file mode 100644 index 0000000..0c97fa1 --- /dev/null +++ b/src/main/java/org/gyk/modules/sz/jldxx/entity/JldData.java @@ -0,0 +1,230 @@ +package org.gyk.modules.sz.jldxx.entity; + +public class JldData { + private String id; + private String jldname; //计量点名称 + + private String zhan; + private String station_id; + private String depart_id; + private String qu; + private String wd;//温度 + private String yl;//压力 + private String yc;//压差 + private String ssll;//瞬时流量 + private String jrl;//今日量 + private String syll;//上月流量 + private String byll;//本月流量 + private String zll;//总流量(累积量) + private String jrsj;//今日时间 + private String yxzt;//运行状态 + private String bz;//备注 + + private String zrsj;//昨日时间 + private String zrl;//昨日量 + private String gykbz;//昨日量 + private String jlddw;//单位 + private String krvalue;//可燃数值 + private String gyvalue;//工艺参数 + private String krzt;//可燃状态 + + public String getKrzt() { + return krzt; + } + + public void setKrzt(String krzt) { + this.krzt = krzt; + } + + public String getKrvalue() { + return krvalue; + } + + public void setKrvalue(String krvalue) { + this.krvalue = krvalue; + } + + public String getGyvalue() { + return gyvalue; + } + + public void setGyvalue(String gyvalue) { + this.gyvalue = gyvalue; + } + + public JldData() { + } + + public String getJlddw() { + return jlddw; + } + + public void setJlddw(String jlddw) { + this.jlddw = jlddw; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getStation_id() { + return station_id; + } + + public void setStation_id(String station_id) { + this.station_id = station_id; + } + + public String getDepart_id() { + return depart_id; + } + + public void setDepart_id(String depart_id) { + this.depart_id = depart_id; + } + + public String getGykbz() { + return gykbz; + } + + public void setGykbz(String gykbz) { + this.gykbz = gykbz; + } + + public String getQu() { + return qu; + } + + public void setQu(String qu) { + this.qu = qu; + } + + public String getWd() { + return wd; + } + + public void setWd(String wd) { + this.wd = wd; + } + + public String getYl() { + return yl; + } + + public void setYl(String yl) { + this.yl = yl; + } + + public String getYc() { + return yc; + } + + public void setYc(String yc) { + this.yc = yc; + } + + public String getSsll() { + return ssll; + } + + public void setSsll(String ssll) { + this.ssll = ssll; + } + + public String getJrl() { + return jrl; + } + + public void setJrl(String jrl) { + this.jrl = jrl; + } + + public String getByll() { + return byll; + } + + public void setByll(String byll) { + this.byll = byll; + } + + public String getZll() { + return zll; + } + + public void setZll(String zll) { + this.zll = zll; + } + + public String getJrsj() { + return jrsj; + } + + public void setJrsj(String jrsj) { + this.jrsj = jrsj; + } + + public String getBz() { + return bz; + } + + public void setBz(String bz) { + this.bz = bz; + } + + public String getZrsj() { + return zrsj; + } + + public void setZrsj(String zrsj) { + this.zrsj = zrsj; + } + + public String getZrl() { + return zrl; + } + + public void setZrl(String zrl) { + this.zrl = zrl; + } + + public String getYxzt() { + return yxzt; + } + + public void setYxzt(String yxzt) { + this.yxzt = yxzt; + } + + public String getJldname() { + return this.jldname; + } + + public void setJldname(String jldname) { + this.jldname = jldname; + } + + public String getZhan() { + return this.zhan; + } + + public void setZhan(String zhan) { + this.zhan = zhan; + } + + public String getSyll() { + return this.syll; + } + + public void setSyll(String syll) { + this.syll = syll; + } + + public String getstring() { + String res = " jldname:" + jldname + " zhan:" + zhan + " ssl:" + ssll + " syll:" + syll; + return res; + } +} diff --git a/src/main/java/org/gyk/modules/sz/jldxx/mapper/CxcSssjSzJldxxMapper.java b/src/main/java/org/gyk/modules/sz/jldxx/mapper/CxcSssjSzJldxxMapper.java new file mode 100644 index 0000000..9503006 --- /dev/null +++ b/src/main/java/org/gyk/modules/sz/jldxx/mapper/CxcSssjSzJldxxMapper.java @@ -0,0 +1,18 @@ +package org.gyk.modules.sz.jldxx.mapper; + +import com.baomidou.dynamic.datasource.annotation.DS; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; +import org.gyk.modules.sz.jldxx.entity.CxcSssjSzJldxx; + +/** + * @Description: cxc_sssj_sz_jldxx + * @Author: jeecg-boot + * @Date: 2021-03-09 + * @Version: V1.0 + */ +@Mapper + +public interface CxcSssjSzJldxxMapper extends BaseMapper { + +} diff --git a/src/main/java/org/gyk/modules/sz/jldxx/mapper/JldxxMapper.java b/src/main/java/org/gyk/modules/sz/jldxx/mapper/JldxxMapper.java new file mode 100644 index 0000000..f29bac5 --- /dev/null +++ b/src/main/java/org/gyk/modules/sz/jldxx/mapper/JldxxMapper.java @@ -0,0 +1,37 @@ +package org.gyk.modules.sz.jldxx.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; +import org.gyk.modules.sssj.entity.YasuojiJcxx; +import org.gyk.modules.sz.jldxx.entity.CxcSssjSzJldxx; + +import java.util.List; + +@Mapper +public interface JldxxMapper extends BaseMapper { + + // @Cacheable(value = "sqlBj", key = "#root.methodName+#jldlx") + @Select(" select * from cxc_sssj_sz_jldxx where jldlx = #{jldlx} and sfyc = 'Y' ") + public List getAllJldxx( @Param("jldlx") String jldlx); + + /** + * 功能描述:
+ * 〈〉只查询远传的数据 + * @Param: [jldlx] + * @Return: java.util.List + * @Author: 闵年泽 + * @Date: 2024/6/19 9:25 + */ + @Select(" select * from cxc_sssj_sz_jldxx where jldlx = #{jldlx} and sfyc = 'Y'") + public List getAllYcJldxx(@Param("jldx") String jldlx); + + // @Cacheable(value = "sqlBj", key = "#root.methodName") + @Select(" select * from cxc_sssj_sz_jldxx where id = #{jldId}") + public List getJldxxById( @Param("jldId") String jldId); + + @Select(" select jld_name,station_name,station_id,depart_name,ssgx1,ssgx2,gykbz from cxc_sssj_sz_jldxx where jldlx = #{jldlx}") + public List getYsjGykbz(@Param("jldlx") String jldlx); + +} diff --git a/src/main/java/org/gyk/modules/sz/jldxx/mapper/xml/CxcSssjSzJldxxMapper.xml b/src/main/java/org/gyk/modules/sz/jldxx/mapper/xml/CxcSssjSzJldxxMapper.xml new file mode 100644 index 0000000..177a05a --- /dev/null +++ b/src/main/java/org/gyk/modules/sz/jldxx/mapper/xml/CxcSssjSzJldxxMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/src/main/java/org/gyk/modules/sz/jldxx/service/ICxcSssjSzJldxxService.java b/src/main/java/org/gyk/modules/sz/jldxx/service/ICxcSssjSzJldxxService.java new file mode 100644 index 0000000..9d51d26 --- /dev/null +++ b/src/main/java/org/gyk/modules/sz/jldxx/service/ICxcSssjSzJldxxService.java @@ -0,0 +1,14 @@ +package org.gyk.modules.sz.jldxx.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import org.gyk.modules.sz.jldxx.entity.CxcSssjSzJldxx; + +/** + * @Description: cxc_sssj_sz_jldxx + * @Author: jeecg-boot + * @Date: 2021-03-09 + * @Version: V1.0 + */ +public interface ICxcSssjSzJldxxService extends IService { + +} diff --git a/src/main/java/org/gyk/modules/sz/jldxx/service/IGetJldxxService.java b/src/main/java/org/gyk/modules/sz/jldxx/service/IGetJldxxService.java new file mode 100644 index 0000000..b6e6f50 --- /dev/null +++ b/src/main/java/org/gyk/modules/sz/jldxx/service/IGetJldxxService.java @@ -0,0 +1,19 @@ +package org.gyk.modules.sz.jldxx.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import org.gyk.modules.sssj.entity.YasuojiJcxx; +import org.gyk.modules.sz.jldxx.entity.CxcSssjSzJldxx; + +import java.util.List; + +public interface IGetJldxxService extends IService { + + // 获取所有jldlx为0的计量点 即天然气计量点 + List getAllJldxx(String jldlx); + + // + List getJldxxById(String jldId); + + List getYsjGykbz(String jldlx); + +} diff --git a/src/main/java/org/gyk/modules/sz/jldxx/service/impl/CxcSssjSzJldxxServiceImpl.java b/src/main/java/org/gyk/modules/sz/jldxx/service/impl/CxcSssjSzJldxxServiceImpl.java new file mode 100644 index 0000000..5f357d8 --- /dev/null +++ b/src/main/java/org/gyk/modules/sz/jldxx/service/impl/CxcSssjSzJldxxServiceImpl.java @@ -0,0 +1,18 @@ +package org.gyk.modules.sz.jldxx.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.gyk.modules.sz.jldxx.entity.CxcSssjSzJldxx; +import org.gyk.modules.sz.jldxx.mapper.CxcSssjSzJldxxMapper; +import org.gyk.modules.sz.jldxx.service.ICxcSssjSzJldxxService; +import org.springframework.stereotype.Service; + +/** + * @Description: cxc_sssj_sz_jldxx + * @Author: jeecg-boot + * @Date: 2021-03-09 + * @Version: V1.0 + */ +@Service +public class CxcSssjSzJldxxServiceImpl extends ServiceImpl implements ICxcSssjSzJldxxService { + +} diff --git a/src/main/java/org/gyk/modules/sz/jldxx/service/impl/GetJldxxServiceImpl.java b/src/main/java/org/gyk/modules/sz/jldxx/service/impl/GetJldxxServiceImpl.java new file mode 100644 index 0000000..4972a0c --- /dev/null +++ b/src/main/java/org/gyk/modules/sz/jldxx/service/impl/GetJldxxServiceImpl.java @@ -0,0 +1,31 @@ +package org.gyk.modules.sz.jldxx.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.gyk.modules.sssj.entity.YasuojiJcxx; +import org.gyk.modules.sz.jldxx.entity.CxcSssjSzJldxx; +import org.gyk.modules.sz.jldxx.mapper.JldxxMapper; +import org.gyk.modules.sz.jldxx.service.IGetJldxxService; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +public class GetJldxxServiceImpl extends ServiceImpl implements IGetJldxxService { + @Override +// @Cacheable(value = "sqlBj", key = "#jldlx") + public List getAllJldxx(String jldlx) { + return baseMapper.getAllJldxx(jldlx); + } + + @Override + public List getJldxxById(String jldId) { + return baseMapper.getJldxxById(jldId); + } + + @Override +// @Cacheable(value = "sqlBj", key = "#root.methodName+#jldlx") + public List getYsjGykbz(String jldlx) { + return baseMapper.getYsjGykbz(jldlx); + } + +} diff --git a/src/main/java/org/gyk/modules/sz/scpz/entity/CxcScdtJldxx.java b/src/main/java/org/gyk/modules/sz/scpz/entity/CxcScdtJldxx.java new file mode 100644 index 0000000..e62f2c0 --- /dev/null +++ b/src/main/java/org/gyk/modules/sz/scpz/entity/CxcScdtJldxx.java @@ -0,0 +1,103 @@ +package org.gyk.modules.sz.scpz.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +import org.jeecgframework.poi.excel.annotation.Excel; +import org.springframework.format.annotation.DateTimeFormat; + +import java.io.Serializable; + +/** + * @Description: 生产数据中的计量点基础信息 + * @Author: jeecg-boot + * @Date: 2022-04-01 + * @Version: V1.0 + */ +@Data +@TableName("cxc_scdt_jldxx") +@Accessors(chain = true) +@EqualsAndHashCode(callSuper = false) +@ApiModel(value="cxc_scdt_jldxx对象", description="生产数据中的计量点基础信息") +public class CxcScdtJldxx implements Serializable { + private static final long serialVersionUID = 1L; + + /**主键*/ + @TableId(type = IdType.ASSIGN_UUID) + @ApiModelProperty(value = "主键") + private String id; + /**创建人*/ + @ApiModelProperty(value = "创建人") + private String createBy; + /**创建日期*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @ApiModelProperty(value = "创建日期") + private java.util.Date createTime; + /**更新人*/ + @ApiModelProperty(value = "更新人") + private String updateBy; + /**更新日期*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @ApiModelProperty(value = "更新日期") + private java.util.Date updateTime; + /**所属部门*/ + @ApiModelProperty(value = "所属部门") + private String sysOrgCode; + /**计量点名称*/ + @Excel(name = "计量点名称", width = 15) + @ApiModelProperty(value = "计量点名称") + private String jldname; + /**单位名称*/ + @Excel(name = "单位名称", width = 15) + @ApiModelProperty(value = "单位名称") + private String dwmc; + /**站场名称*/ + @Excel(name = "站场名称", width = 15) + @ApiModelProperty(value = "站场名称") + private String zcmc; + /**气源类别*/ + @Excel(name = "气源类别", width = 15, dicCode = "jldxx_qylb") + @ApiModelProperty(value = "气源类别") + private String qylb; + /**所属管线1*/ + @Excel(name = "所属管线1", width = 15) + @ApiModelProperty(value = "所属管线1") + private String ssgx1; + /**所属管线2*/ + @Excel(name = "所属管线2", width = 15) + @ApiModelProperty(value = "所属管线2") + private String ssgx2; + /**起末类型*/ + @Excel(name = "起末类型", width = 15, dicCode = "jldxx_qmlx") + @ApiModelProperty(value = "起末类型") + private String qmlx; + /**计量点性质*/ + @Excel(name = "计量点性质", width = 15, dicCode = "jldxx_jldxz") + @ApiModelProperty(value = "计量点性质") + private String jldxz; + /**用气类别*/ + @Excel(name = "用气类别", width = 15, dicCode = "jldxx_yqlb") + @ApiModelProperty(value = "用气类别") + private String yqlb; + /**运行状态*/ + @Excel(name = "运行状态", width = 15, dicCode = "yxzt") + @ApiModelProperty(value = "运行状态") + private String yxzt; + /**流量计类型*/ + @Excel(name = "流量计类型", width = 15, dicCode = "jldxx_lljlx") + @ApiModelProperty(value = "流量计类型") + private String lljlx; + /**进出站类型*/ + @Excel(name = "进出站类型", width = 15, dicCode = "jldxx_jczlx") + @ApiModelProperty(value = "进出站类型") + private String jczlx; + +} diff --git a/src/main/java/org/gyk/modules/sz/scpz/entity/CxcScdtScpz.java b/src/main/java/org/gyk/modules/sz/scpz/entity/CxcScdtScpz.java new file mode 100644 index 0000000..c6d5575 --- /dev/null +++ b/src/main/java/org/gyk/modules/sz/scpz/entity/CxcScdtScpz.java @@ -0,0 +1,70 @@ +package org.gyk.modules.sz.scpz.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +import org.jeecgframework.poi.excel.annotation.Excel; +import org.springframework.format.annotation.DateTimeFormat; + +import java.io.Serializable; + +/** + * @Description: 生产动态中的输差配置表 + * @Author: jeecg-boot + * @Date: 2022-04-01 + * @Version: V1.0 + */ +@Data +@TableName("cxc_scdt_scpz") +@Accessors(chain = true) +@EqualsAndHashCode(callSuper = false) +@ApiModel(value="cxc_scdt_scpz对象", description="生产动态中的输差配置表") +public class CxcScdtScpz implements Serializable { + private static final long serialVersionUID = 1L; + + /**主键*/ + @TableId(type = IdType.ASSIGN_UUID) + @ApiModelProperty(value = "主键") + private String id; + /**创建人*/ + @ApiModelProperty(value = "创建人") + private String createBy; + /**创建日期*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @ApiModelProperty(value = "创建日期") + private java.util.Date createTime; + /**更新人*/ + @ApiModelProperty(value = "更新人") + private String updateBy; + /**更新日期*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @ApiModelProperty(value = "更新日期") + private java.util.Date updateTime; + /**所属部门*/ + @ApiModelProperty(value = "所属部门") + private String sysOrgCode; + /**输差名称*/ + @Excel(name = "输差名称", width = 15) + @ApiModelProperty(value = "输差名称") + private String scmc; + /**输差类别*/ + @Excel(name = "输差类别", width = 15, dicCode = "sctype") + @ApiModelProperty(value = "输差类别") + private String sclb; + /**进气计量点ID*/ + @Excel(name = "进气计量点ID", width = 15, dictTable = "cxc_scdt_jldxx", dicText = "jldname", dicCode = "id") + @ApiModelProperty(value = "进气计量点ID") + private String jqjldid; + /**出气计量点ID*/ + @Excel(name = "出气计量点ID", width = 15, dictTable = "cxc_scdt_jldxx", dicText = "jldname", dicCode = "id") + @ApiModelProperty(value = "出气计量点ID") + private String cqjldid; +} diff --git a/src/main/java/org/gyk/modules/sz/scpz/entity/CxcSssjSzScsz.java b/src/main/java/org/gyk/modules/sz/scpz/entity/CxcSssjSzScsz.java new file mode 100644 index 0000000..78fa03b --- /dev/null +++ b/src/main/java/org/gyk/modules/sz/scpz/entity/CxcSssjSzScsz.java @@ -0,0 +1,82 @@ +package org.gyk.modules.sz.scpz.entity; + + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +import org.jeecgframework.poi.excel.annotation.Excel; +import org.springframework.format.annotation.DateTimeFormat; + +import java.io.Serializable; + +/** + * @Description: 输差配置数据表 + * @Author: jeecg-boot + * @Date: 2021-04-17 + * @Version: V1.0 + */ + +@Data +@TableName("cxc_sssj_sz_scsz") +@Accessors(chain = true) +@EqualsAndHashCode(callSuper = false) +@ApiModel(value="cxc_sssj_sz_scsz对象", description="输差配置数据表") +public class CxcSssjSzScsz implements Serializable { + private static final long serialVersionUID = 1L; + + /**id*/ + @TableId(type = IdType.ASSIGN_UUID) + @ApiModelProperty(value = "id") + private java.lang.String id; + /** 创建人名称 */ + @Excel(name = " 创建人名称 ", width = 15) + @ApiModelProperty(value = " 创建人名称 ") + private java.lang.String createName; + /** 创建人登录名称 */ + @ApiModelProperty(value = " 创建人登录名称 ") + private java.lang.String createBy; + /** 创建日期 */ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd") + @DateTimeFormat(pattern="yyyy-MM-dd") + @ApiModelProperty(value = " 创建日期 ") + private java.util.Date createTime; + /** 输差名称 */ + @Excel(name = " 输差名称 ", width = 15) + @ApiModelProperty(value = " 输差名称 ") + private java.lang.String scName; + /** 输差类别 */ + @Excel(name = " 输差类别 ", width = 15) + @ApiModelProperty(value = " 输差类别 ") + private java.lang.String scType; + /** 进气计量点ID */ + @Excel(name = " 进气计量点ID ", width = 15) + @ApiModelProperty(value = " 进气计量点ID ") + private java.lang.String inPoints; + /** 出气计量点ID */ + @Excel(name = " 出气计量点ID ", width = 15) + @ApiModelProperty(value = " 出气计量点ID ") + private java.lang.String outPoints; + /** 管理区ID */ + @Excel(name = " 管理区ID ", width = 15) + @ApiModelProperty(value = " 管理区ID ") + private java.lang.String departId; + /** 站场ID */ + @Excel(name = " 站场ID ", width = 15) + @ApiModelProperty(value = " 站场ID ") + private java.lang.String stationId; + /** 相关单位ID */ + @Excel(name = " 相关单位ID ", width = 15) + @ApiModelProperty(value = " 相关单位ID ") + private java.lang.String redeptId; + /** 备注 */ + @Excel(name = " 备注 ", width = 15) + @ApiModelProperty(value = " 备注 ") + private java.lang.String bz; +} + diff --git a/src/main/java/org/gyk/modules/sz/scpz/mapper/ScszMapper.java b/src/main/java/org/gyk/modules/sz/scpz/mapper/ScszMapper.java new file mode 100644 index 0000000..02c8ab8 --- /dev/null +++ b/src/main/java/org/gyk/modules/sz/scpz/mapper/ScszMapper.java @@ -0,0 +1,23 @@ +package org.gyk.modules.sz.scpz.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; +import org.gyk.modules.sz.scpz.entity.CxcScdtJldxx; +import org.gyk.modules.sz.scpz.entity.CxcScdtScpz; +import org.gyk.modules.sz.scpz.entity.CxcSssjSzScsz; + +import java.util.List; + +@Mapper +public interface ScszMapper extends BaseMapper { + @Select(" select * from cxc_sssj_sz_scsz ") + public List getAllScpz( ); + + @Select("select * from cxc_scdt_scpz where sclb = #{lb}") + public List getScpzByLb(@Param("lb") String lb); + + @Select("select * from cxc_scdt_jldxx") + public List getScdtJldId(); +} diff --git a/src/main/java/org/gyk/modules/sz/zcpz/controller/CxcSssjZdjlzcController.java b/src/main/java/org/gyk/modules/sz/zcpz/controller/CxcSssjZdjlzcController.java new file mode 100644 index 0000000..65234ba --- /dev/null +++ b/src/main/java/org/gyk/modules/sz/zcpz/controller/CxcSssjZdjlzcController.java @@ -0,0 +1,53 @@ +package org.gyk.modules.sz.zcpz.controller; + +import java.util.Arrays; +import java.util.List; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.gyk.common.annotation.AutoLog; +import org.gyk.common.api.Result; +import org.gyk.modules.sz.zcpz.entity.*; +import org.gyk.modules.sz.zcpz.service.*; +import org.gyk.common.base.controller.gykController; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.servlet.ModelAndView; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; + + /** + * @Description: 自动计量站场列表 + * @Author: jeecg-boot + * @Date: 2021-01-07 + * @Version: V1.0 + */ +@Api(tags="自动计量站场列表") +@RestController +@RequestMapping("/zcpz/cxcSssjZdjlzc") +@Slf4j +public class CxcSssjZdjlzcController extends gykController { + @Autowired + private ICxcSssjZdjlzcService cxcSssjZdjlzcService; + + /** + * 通过id查询 + * + * @param id + * @return + */ + @AutoLog(value = "自动计量站场列表-通过id查询") + @ApiOperation(value="自动计量站场列表-通过id查询", notes="自动计量站场列表-通过id查询") + @GetMapping(value = "/queryById") + public List queryById(@RequestParam(name="id",required=true) String id) { + List list = cxcSssjZdjlzcService.getZcxxById(id); + return list; + } + + +} diff --git a/src/main/java/org/gyk/modules/sz/zcpz/entity/CxcSssjZdjlzc.java b/src/main/java/org/gyk/modules/sz/zcpz/entity/CxcSssjZdjlzc.java new file mode 100644 index 0000000..cfdd166 --- /dev/null +++ b/src/main/java/org/gyk/modules/sz/zcpz/entity/CxcSssjZdjlzc.java @@ -0,0 +1,99 @@ +package org.gyk.modules.sz.zcpz.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.jeecgframework.poi.excel.annotation.Excel; +import org.springframework.format.annotation.DateTimeFormat; + +import java.io.Serializable; + +/** + * @Description: 自动计量站场列表 + * @Author: jeecg-boot + * @Date: 2021-01-07 + * @Version: V1.0 + */ +@Data +@TableName("cxc_sssj_zdjlzc") +@ApiModel(value="cxc_sssj_zdjlzc对象", description="自动计量站场列表") +public class CxcSssjZdjlzc implements Serializable { + private static final long serialVersionUID = 1L; + + /** 序号ID */ + @TableId(type = IdType.ASSIGN_UUID) + @ApiModelProperty(value = " 序号ID ") + private java.lang.String id; + /** 创建人名称 */ + @Excel(name = " 创建人名称 ", width = 15) + @ApiModelProperty(value = " 创建人名称 ") + private java.lang.String createName; + /** 创建人登录名称 */ + @ApiModelProperty(value = " 创建人登录名称 ") + private java.lang.String createBy; + /** 创建日期 */ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd") + @DateTimeFormat(pattern="yyyy-MM-dd") + @ApiModelProperty(value = " 创建日期 ") + private java.util.Date createTime; + /** 更新人名称 */ + @Excel(name = " 更新人名称 ", width = 15) + @ApiModelProperty(value = " 更新人名称 ") + private java.lang.String updateName; + /** 更新人登录名称 */ + @ApiModelProperty(value = " 更新人登录名称 ") + private java.lang.String updateBy; + /** 更新日期 */ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd") + @DateTimeFormat(pattern="yyyy-MM-dd") + @ApiModelProperty(value = " 更新日期 ") + private java.util.Date updateTime; + /** 上级机构ID */ + @Excel(name = " 上级机构ID ", width = 15) + @ApiModelProperty(value = " 上级机构ID ") + private java.lang.String parentId; + /** 站点名称 */ + @Excel(name = " 站点名称 ", width = 15) + @ApiModelProperty(value = " 站点名称 ") + private java.lang.String departName; + /** 机构类别 */ + @Excel(name = " 机构类别 ", width = 15) + @ApiModelProperty(value = " 机构类别 ") + private java.lang.String jglb; + /** 机构编码*/ + @Excel(name = " 机构编码", width = 15) + @ApiModelProperty(value = " 机构编码") + private java.lang.String orgCode; + /** IP地址 站场PLC设备IP */ + @Excel(name = " IP地址 站场PLC设备IP ", width = 15) + @ApiModelProperty(value = " IP地址 站场PLC设备IP ") + private java.lang.String ip; + /** 设备类型 */ + @Excel(name = " 设备类型 ", width = 15) + @ApiModelProperty(value = " 设备类型 ") + private java.lang.String sblx; + /** 端口号 */ + @Excel(name = " 端口号 ", width = 15) + @ApiModelProperty(value = " 端口号 ") + private java.lang.String port; + /** 状态 */ + @Excel(name = " 状态 ", width = 15) + @ApiModelProperty(value = " 状态 ") + private java.lang.String zt; + /** 备注 */ + @Excel(name = " 备注 ", width = 15) + @ApiModelProperty(value = " 备注 ") + private java.lang.String bz; + /**父级节点*/ + @Excel(name = "父级节点", width = 15) + @ApiModelProperty(value = "父级节点") + private java.lang.String pid; + /**是否有子节点*/ + @Excel(name = "是否有子节点", width = 15, dicCode = "yn") + @ApiModelProperty(value = "是否有子节点") + private java.lang.String hasChild; +} diff --git a/src/main/java/org/gyk/modules/sz/zcpz/mapper/CxcSssjZdjlzcMapper.java b/src/main/java/org/gyk/modules/sz/zcpz/mapper/CxcSssjZdjlzcMapper.java new file mode 100644 index 0000000..bc195a0 --- /dev/null +++ b/src/main/java/org/gyk/modules/sz/zcpz/mapper/CxcSssjZdjlzcMapper.java @@ -0,0 +1,29 @@ +package org.gyk.modules.sz.zcpz.mapper; + +import com.baomidou.dynamic.datasource.annotation.DS; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; +import org.gyk.modules.sz.zcpz.entity.CxcSssjZdjlzc; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +import java.util.List; + +/** + * @Description: 自动计量站场列表 + * @Author: jeecg-boot + * @Date: 2021-01-07 + * @Version: V1.0 + */ +@Mapper +public interface CxcSssjZdjlzcMapper extends BaseMapper { + + + /** + * 通过Id查询部门数据 + */ + + @Select(" select * from cxc_sssj_zdjlzc where id = #{Id}") + public List getZcxxById( @Param("Id") String Id); + +} diff --git a/src/main/java/org/gyk/modules/sz/zcpz/service/ICxcSssjZdjlzcService.java b/src/main/java/org/gyk/modules/sz/zcpz/service/ICxcSssjZdjlzcService.java new file mode 100644 index 0000000..71ff364 --- /dev/null +++ b/src/main/java/org/gyk/modules/sz/zcpz/service/ICxcSssjZdjlzcService.java @@ -0,0 +1,18 @@ +package org.gyk.modules.sz.zcpz.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import org.gyk.modules.sz.zcpz.entity.CxcSssjZdjlzc; +import java.util.List; + +/** + * @Description: 自动计量站场列表 + * @Author: jeecg-boot + * @Date: 2021-01-07 + * @Version: V1.0 + */ +public interface ICxcSssjZdjlzcService extends IService { + + // 通过ID获取站场信息 + List getZcxxById(String Id); + +} diff --git a/src/main/java/org/gyk/modules/sz/zcpz/service/impl/CxcSssjZdjlzcServiceImpl.java b/src/main/java/org/gyk/modules/sz/zcpz/service/impl/CxcSssjZdjlzcServiceImpl.java new file mode 100644 index 0000000..7f0871b --- /dev/null +++ b/src/main/java/org/gyk/modules/sz/zcpz/service/impl/CxcSssjZdjlzcServiceImpl.java @@ -0,0 +1,27 @@ +package org.gyk.modules.sz.zcpz.service.impl; + +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; +import org.gyk.modules.sz.zcpz.entity.CxcSssjZdjlzc; +import org.gyk.modules.sz.zcpz.mapper.CxcSssjZdjlzcMapper; +import org.gyk.modules.sz.zcpz.service.ICxcSssjZdjlzcService; +import org.springframework.stereotype.Service; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; + +import java.util.List; + +/** + * @Description: 自动计量站场列表 + * @Author: jeecg-boot + * @Date: 2021-01-07 + * @Version: V1.0 + */ +@Service +public class CxcSssjZdjlzcServiceImpl extends ServiceImpl implements ICxcSssjZdjlzcService { + + @Select(" select * from cxc_sssj_zdjlzc where id = #{Id}") + public List getZcxxById( @Param("Id") String Id){ + return baseMapper.getZcxxById(Id); + } + +} diff --git a/src/main/java/org/gyk/modules/websocket/config/MybatisPlusConfig.java b/src/main/java/org/gyk/modules/websocket/config/MybatisPlusConfig.java new file mode 100644 index 0000000..90e6093 --- /dev/null +++ b/src/main/java/org/gyk/modules/websocket/config/MybatisPlusConfig.java @@ -0,0 +1,18 @@ +//package org.gyk.modules.websocket.config; +// +//import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor; +//import org.springframework.context.annotation.Bean; +//import org.springframework.context.annotation.Configuration; +// +//@Configuration +//public class MybatisPlusConfig { +// /** +// * 注入ServerEndpointExporter, +// * 这个bean会自动注册使用了@ServerEndpoint注解声明的Websocket endpoint +// */ +// @Bean +// public PaginationInterceptor paginationInterceptor() { +// // 设置sql的limit为无限制,默认是500 +// return new PaginationInterceptor().setLimit(-1); +// } +//} diff --git a/src/main/java/org/gyk/modules/websocket/config/webSocketConfig.java b/src/main/java/org/gyk/modules/websocket/config/webSocketConfig.java new file mode 100644 index 0000000..1311504 --- /dev/null +++ b/src/main/java/org/gyk/modules/websocket/config/webSocketConfig.java @@ -0,0 +1,18 @@ +package org.gyk.modules.websocket.config; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.socket.server.standard.ServerEndpointExporter; + +@Configuration +public class webSocketConfig { + /** + * 注入ServerEndpointExporter, + * 这个bean会自动注册使用了@ServerEndpoint注解声明的Websocket endpoint + */ + @Bean + public ServerEndpointExporter serverEndpointExporter() { + return new ServerEndpointExporter(); + } + +} diff --git a/src/main/java/org/gyk/modules/websocket/webSocket.java b/src/main/java/org/gyk/modules/websocket/webSocket.java new file mode 100644 index 0000000..3d9a82e --- /dev/null +++ b/src/main/java/org/gyk/modules/websocket/webSocket.java @@ -0,0 +1,120 @@ +package org.gyk.modules.websocket; + + +import lombok.extern.slf4j.Slf4j; +import net.minidev.json.JSONObject; +import org.apache.commons.lang3.StringUtils; +import org.apache.ibatis.annotations.Mapper; +import org.springframework.stereotype.Component; +import org.springframework.stereotype.Service; +import org.springframework.web.bind.annotation.RestController; + +import javax.websocket.*; +import javax.websocket.server.PathParam; +import javax.websocket.server.ServerEndpoint; +import java.util.HashMap; +import java.util.Map; +import java.util.concurrent.CopyOnWriteArraySet; + +@RestController +@Component +@Slf4j +@ServerEndpoint("/websocket/{userId}") +@Mapper +@Service + +public class webSocket { + private Session session; + + private static CopyOnWriteArraySet webSockets = new CopyOnWriteArraySet<>(); + private static Map sessionPool = new HashMap(); + + @OnOpen + public void onOpen(Session session, @PathParam(value = "userId") String userId) { + try { + this.session = session; + webSockets.add(this); + sessionPool.put(userId, session); + log.info("【websocket消息】有新的连接,总数为:" + webSockets.size()); + } catch (Exception e) { + } + } + + @OnClose + public void onClose() { + try { + webSockets.remove(this); + log.info("【websocket消息】连接断开,总数为:" + webSockets.size()); + } catch (Exception e) { + } + } + + @OnMessage + public void onMessage(String message) { + log.debug("【websocket消息】收到客户端消息:" + message); + + //心跳检测响应 + if (StringUtils.equalsIgnoreCase("天王盖地虎", message)) { + JSONObject pingWebSocket = new JSONObject(); + pingWebSocket.put("cmd","ping"); + pingWebSocket.put("msgId", "6666");//消息id + pingWebSocket.put("msgTxt", "宝塔镇河妖");//消息内容 + +// webSocket.sendAllMessage(pingWebSocket.toJSONString()); + session.getAsyncRemote().sendText(pingWebSocket.toJSONString()); + log.debug("[WebSocket]服务端 已回复客户端{} 的心跳检测: 宝塔镇河妖", session.getId()); + } + } + + // 此为广播消息 + public void sendAllMessage(String message) { + log.info("【websocket消息】广播消息:" + message); + if (webSockets.size()>0) { + for (webSocket webSocket : webSockets) { + try { + if (webSocket.session.isOpen()) { + webSocket.session.getAsyncRemote().sendText(message); + } + } catch (Exception e) { + e.printStackTrace(); + } + } + } + } + + // 此为单点消息 + public void sendOneMessage(String userId, String message) { + Session session = sessionPool.get(userId); + if (session != null && session.isOpen()) { + try { + log.info("【websocket消息】 单点消息:" + message); + session.getAsyncRemote().sendText(message); + } catch (Exception e) { + e.printStackTrace(); + } + } + } + + // 此为单点消息(多人) + public void sendMoreMessage(String[] userIds, String message) { + for (String userId : userIds) { + Session session = sessionPool.get(userId); + if (session != null && session.isOpen()) { + try { + log.info("【websocket消息】 单点消息:" + message); + session.getAsyncRemote().sendText(message); + } catch (Exception e) { + e.printStackTrace(); + } + } + } + + } + + @OnError + public void onError(Session session, Throwable t) { + log.info("发生错误"); + t.printStackTrace(); + } + +} diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml new file mode 100644 index 0000000..3f6c524 --- /dev/null +++ b/src/main/resources/application.yml @@ -0,0 +1,134 @@ +server: + port: 9999 + servlet: + context-path: /Gyk + +spring: + datasource: + #mysql 8.0版本驱动类名的写法 + dynamic: + druid: # 全局druid参数,绝大部分值和默认保持一致。(现已支持的参数如下,不清楚含义不要乱设置) + # 连接池的配置信息 + # 初始化大小,最小,最大 + initial-size: 5 + min-idle: 5 + maxActive: 20 + # 配置获取连接等待超时的时间 + maxWait: 60000 + # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 + timeBetweenEvictionRunsMillis: 60000 + # 配置一个连接在池中最小生存的时间,单位是毫秒 + minEvictableIdleTimeMillis: 1800000 + validationQuery: SELECT 1 + testWhileIdle: true + testOnBorrow: false + testOnReturn: false + # 打开PSCache,并且指定每个连接上PSCache的大小 + poolPreparedStatements: true + maxPoolPreparedStatementPerConnectionSize: 20 + # 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙 + filters: stat,wall,slf4j + # 通过connectProperties属性来打开mergeSql功能;慢SQL记录 + connectProperties: druid.stat.mergeSql\=true;druid.stat.slowSqlMillis\=5000 + keep-alive: true + primary: master + strict: false + datasource: + master: + driver-class-name: com.mysql.cj.jdbc.Driver + username: root + password: TRQxxz123789 + url: jdbc:mysql://10.75.166.13:3306/jeecg-boot-cxc?characterEncoding=UTF-8&useUnicode=true&allowMultiQueries=true&useSSL=false&tinyInt1isBit=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true + slave: + driver-class-name: com.mysql.cj.jdbc.Driver + username: root + password: TRQxxz123789 + url: jdbc:mysql://10.75.166.13:3306/jeecg-boot-jldls?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true + lazy: true + three: + driver-class-name: com.mysql.cj.jdbc.Driver + username: root + password: trq123*xx + url: jdbc:mysql://10.75.166.7:3306/trq-cxc?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true + lazy: true + jlglDb: + driver-class-name: oracle.jdbc.OracleDriver + url: jdbc:oracle:thin:@10.75.8.165:1521/zyytdc + username: sl_jlgl_2016 + password: jlgl_1234qwer + lazy: true + thymeleaf: + cache: false + mode: LEGACYHTML5 + prefix: classpath:/templates/ + suffix: .html + cache: + ehcache: + config: classpath:/config/ehcache.xml + + freemarker: + suffix: .html + template-loader-path: classpath:/templates/ + jta: + bitronix: + properties: + debug-zero-resource-transaction: true + jackson: + date-format: yyyy-MM-dd HH:mm:ss + time-zone: GMT+8 + +#mybatis plus 设置 +mybatis-plus: +# mapper-locations: classpath*:**/*Mapper.xml + global-config: + # 关闭MP3.0自带的banner + banner: false + db-config: + #主键类型 0:"数据库ID自增",1:"该类型为未设置主键类型", 2:"用户输入ID",3:"全局唯一ID (数字类型唯一ID)", 4:"全局唯一ID UUID",5:"字符串全局唯一ID (idWorker 的字符串表示)"; + id-type: 4 + # 默认数据库表下划线命名 + table-underline: true + configuration: + # 这个配置会将执行的sql打印出来,在开发或测试的时候可以用 +# log-impl: org.apache.ibatis.logging.stdout.StdOutImpl + # 返回类型为Map,显示null对应的字段 + call-setters-on-nulls: true + +### 亚控hk连接信息 +#KH.ServerName=10.75.166.9 +KH: + ServerName: 10.75.166.9 + ServerPort: 6789 + UserName: cxc + Password: cxc + NetworkTimeout: 0 + IsNamesTime: ture + ### 更新名称列表定时更新频率/分 + TagNamesTimes: 5 + ### 实时数据内存定时更新频率/秒 + KHDATATime: 5 + +#每日计量点气量日报时间设置24小时制 +RIBAOHOUR: 8 +# 计量点异步实时推送时间 +HeartBeat: 1000 +#压缩机实时数据保存间隔时间 +Yasuojisavetime: 60000 + +logging: + level: + root: debug +# name: gyk.log +# config: classpath:logback-spring.xml +# file: e:\gyklog\gyk.log + +debug: true +#调度室数据模板目录 2022-06-02 Niujl +muban: D://opt//muban + +#可燃气体报警的阈值 2024-03-08 jiang +#这里调整可燃报警值的底限 +Kryz: + warning: 15.0 + danger: 0.1 + diff --git a/src/main/resources/banner.txt b/src/main/resources/banner.txt new file mode 100644 index 0000000..b057d5d --- /dev/null +++ b/src/main/resources/banner.txt @@ -0,0 +1,48 @@ +${AnsiColor.BRIGHT_BLUE} + /\ + //\\ + ||##|| + //##mm\\ + //##*mmm\\ + //###**mmm\\ + //###***nmmm\\ + //####***@nmmm\\ + ||####***@nnmm|| + ||####**@@@nnm|| + |______________| + | GYK | + \____________/ + | | + /| /\ |\ + /_| || /\ |_\ + | C | + | X | + | C | + | \/ | + | | + /| /\ |\ + / | || | \ + / | || | \ + / /\ || /\ \ + |__/ \ || / \__| + /____\ /____\ + | | | | + | |______| | + | | /--\ | | + |____|/----\|____| + \||/ //##\\ \||/ + /##\//####\\/##\ + //##\\/####\//##\\ + ||/::\||/##\||/::\|| + \\\''///:**:\\\''/// + \\\///\::::/\\\/// + \\//\\\::///\\// + \/\\\\..////\/ + \\\\//// + \\\/// + \\// + \/ + +${AnsiColor.BRIGHT_GREEN} +Spring Boot Version: ${spring-boot.version}${spring-boot.formatted-version} +${AnsiColor.BLACK} diff --git a/src/main/resources/config/ehcache.xml b/src/main/resources/config/ehcache.xml new file mode 100644 index 0000000..95021b5 --- /dev/null +++ b/src/main/resources/config/ehcache.xml @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + diff --git a/src/main/resources/ehcache.xsd b/src/main/resources/ehcache.xsd new file mode 100644 index 0000000..bfc19dd --- /dev/null +++ b/src/main/resources/ehcache.xsd @@ -0,0 +1,419 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/lib/khapi.jar b/src/main/resources/lib/khapi.jar new file mode 100644 index 0000000..d4e1845 Binary files /dev/null and b/src/main/resources/lib/khapi.jar differ diff --git a/src/main/resources/log4j-bf.properties b/src/main/resources/log4j-bf.properties new file mode 100644 index 0000000..010da86 --- /dev/null +++ b/src/main/resources/log4j-bf.properties @@ -0,0 +1,68 @@ +log4j.rootLogger=DEBUG,CONSOLE,FILE +log4j.addivity.org.apache=true +# Ӧڿ̨ +log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender +log4j.appender.CONSOLE.Threshold= debug +log4j.appender.CONSOLE.Target=System.out +log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout +log4j.appender.CONSOLE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n +#log4j.appender.CONSOLE.layout.ConversionPattern=[start]%d{DATE}[DATE]%n%p[PRIORITY]%n%x[NDC]%n%t[THREAD] n%c[CATEGORY]%n%m[MESSAGE]%n%n +#Ӧļ +log4j.appender.FILE=org.apache.log4j.FileAppender +log4j.appender.FILE.File=gyk.log +log4j.appender.FILE.Threshold= warn +log4j.appender.FILE.Append=false +log4j.appender.FILE.layout=org.apache.log4j.PatternLayout +log4j.appender.FILE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n +# Use this layout for LogFactor 5 analysis +# Ӧļع +log4j.appender.ROLLING_FILE=org.apache.log4j.RollingFileAppender +log4j.appender.ROLLING_FILE.Threshold=error +log4j.appender.ROLLING_FILE.File=rolling.log //ļλ,Ҳñ${java.home}rolling.log +log4j.appender.ROLLING_FILE.Append=true //true: false: +log4j.appender.ROLLING_FILE.MaxFileSize=10MB //ļߴ +log4j.appender.ROLLING_FILE.MaxBackupIndex=1 // +log4j.appender.ROLLING_FILE.layout=org.apache.log4j.PatternLayout +log4j.appender.ROLLING_FILE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n +##Ӧsocket +#log4j.appender.SOCKET=org.apache.log4j.RollingFileAppender +#log4j.appender.SOCKET.RemoteHost=localhost +#log4j.appender.SOCKET.Port=5001 +#log4j.appender.SOCKET.LocationInfo=true +## Set up for Log Facter 5 +#log4j.appender.SOCKET.layout=org.apache.log4j.PatternLayout +#log4j.appender.SOCET.layout.ConversionPattern=[start]%d{DATE}[DATE]%n%p[PRIORITY]%n%x[NDC]%n%t[THREAD]%n%c[CATEGORY]%n%m[MESSAGE]%n%n +## Log Factor 5 Appender +#log4j.appender.LF5_APPENDER=org.apache.log4j.lf5.LF5Appender +#log4j.appender.LF5_APPENDER.MaxNumberOfRecords=2000 +## ־ʼ +#log4j.appender.MAIL=org.apache.log4j.net.SMTPAppender +#log4j.appender.MAIL.Threshold=FATAL +#log4j.appender.MAIL.BufferSize=10 +#log4j.appender.MAIL.From=web@www.wuset.com +#log4j.appender.MAIL.SMTPHost=www.wusetu.com +#log4j.appender.MAIL.Subject=Log4J Message +#log4j.appender.MAIL.To=web@www.wusetu.com +#log4j.appender.MAIL.layout=org.apache.log4j.PatternLayout +#log4j.appender.MAIL.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n +## ݿ +#log4j.appender.DATABASE=org.apache.log4j.jdbc.JDBCAppender +#log4j.appender.DATABASE.URL=jdbc:mysql://localhost:3306/test +#log4j.appender.DATABASE.driver=com.mysql.jdbc.Driver +#log4j.appender.DATABASE.user=root +#log4j.appender.DATABASE.password= +#log4j.appender.DATABASE.sql=INSERT INTO LOG4J (Message) VALUES ('[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n') +#log4j.appender.DATABASE.layout=org.apache.log4j.PatternLayout +#log4j.appender.DATABASE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n +#log4j.appender.A1=org.apache.log4j.DailyRollingFileAppender +#log4j.appender.A1.File=SampleMessages.log4j +#log4j.appender.A1.DatePattern=yyyyMMdd-HH'.log4j' +#log4j.appender.A1.layout=org.apache.log4j.xml.XMLLayout +#ԶAppender +#log4j.appender.im=net.cybercorlin.util.logger.appender.IMAppender +#log4j.appender.im.host=mail.cybercorlin.net +#log4j.appender.im.username=username +#log4j.appender.im.password=password +#log4j.appender.im.recipient=corlin@cybercorlin.net +#log4j.appender.im.layout=org.apache.log4j.PatternLayout +#log4j.appender.im.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n \ No newline at end of file diff --git a/src/main/resources/logback-spring.xml b/src/main/resources/logback-spring.xml new file mode 100644 index 0000000..5c6a946 --- /dev/null +++ b/src/main/resources/logback-spring.xml @@ -0,0 +1,194 @@ + + + + + + + logback-spring + + + + + + + + + + + + + + + + + INFO + + + ${CONSOLE_LOG_PATTERN} + + + + + + + + + + + ${logging.file.path}/web_debug.log + + + %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n + UTF-8 + + + + + + ${logging.file.path}/web-debug-%d{yyyy-MM-dd}.%i.log + + 5MB + + + 31 + + + + debug + ACCEPT + DENY + + + + + + + ${logging.file.path}/web_info.log + + + %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n + UTF-8 + + + + + ${logging.file.path}/web-info-%d{yyyy-MM-dd}.%i.log + + 5MB + + + 31 + + + + info + ACCEPT + DENY + + + + + + + ${logging.file.path}/web_warn.log + + + %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n + UTF-8 + + + + ${logging.file.path}/web-warn-%d{yyyy-MM-dd}.%i.log + + 5MB + + + 31 + + + + warn + ACCEPT + DENY + + + + + + + ${logging.file.path}/web_error.log + + + %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n + UTF-8 + + + + ${logging.file.path}/web-error-%d{yyyy-MM-dd}.%i.log + + 5MB + + + 31 + + + + ERROR + ACCEPT + DENY + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/modbus/modbus4J.jar b/src/main/resources/modbus/modbus4J.jar new file mode 100644 index 0000000..0ced938 Binary files /dev/null and b/src/main/resources/modbus/modbus4J.jar differ diff --git a/src/main/resources/modbus/seroUtils.jar b/src/main/resources/modbus/seroUtils.jar new file mode 100644 index 0000000..f6b7d0a Binary files /dev/null and b/src/main/resources/modbus/seroUtils.jar differ diff --git a/src/main/resources/rebel.xml b/src/main/resources/rebel.xml new file mode 100644 index 0000000..46501a4 --- /dev/null +++ b/src/main/resources/rebel.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + diff --git a/src/main/resources/static/css b/src/main/resources/static/css new file mode 100644 index 0000000..e69de29 diff --git a/src/test/java/org/majiaxueyuan/test/User.java b/src/test/java/org/majiaxueyuan/test/User.java new file mode 100644 index 0000000..85e4080 --- /dev/null +++ b/src/test/java/org/majiaxueyuan/test/User.java @@ -0,0 +1,20 @@ +package org.majiaxueyuan.test; + +import lombok.AllArgsConstructor; +import lombok.Data; + +@Data +//@AllArgsConstructor (有参数的构造方法) + +public class User { + private String name; + private String sex; + +// public void setName(String name) { +// this.name = name; +// } +// +// public void setSex(String sex) { +// this.sex = sex; +// } +} diff --git a/src/test/java/org/majiaxueyuan/test/lombokTest.java b/src/test/java/org/majiaxueyuan/test/lombokTest.java new file mode 100644 index 0000000..6bed5d0 --- /dev/null +++ b/src/test/java/org/majiaxueyuan/test/lombokTest.java @@ -0,0 +1,22 @@ +package org.majiaxueyuan.test; + +import lombok.extern.slf4j.Slf4j; + +@Slf4j +//@Log4j +public class lombokTest { + + // Logger log= org.slf4j.LoggerFactory.getLogger(lombokTest.class); + public static void main(String[] args) { + + log.info("使用lombok工具进行打印"); + + User user = new User(); +// User user = new User("码家学院","女"); + + user.setName("码家学院"); + user.setSex("女"); + +// System.out.println(user.getName()); + } +}