wangxichen 1 settimana fa
commit
e8e7b83202
100 ha cambiato i file con 143191 aggiunte e 0 eliminazioni
  1. 8 0
      .gitignore
  2. 10 0
      .run/Application.run.xml
  3. 21 0
      LICENSE
  4. 17 0
      PLC-IP
  5. 457 0
      api.http
  6. 362 0
      api2.http
  7. 75 0
      db/h2/test.sql
  8. 75 0
      db/mssql/test.sql
  9. 0 0
      db/mysql/.keep
  10. 7068 0
      db/mysql/mes_cloud-2023-6-10.sql
  11. 15 0
      db/oracle/create_user.sql
  12. 132 0
      db/oracle/test.sql
  13. 132 0
      db/postgresql/test.sql
  14. 3590 0
      db/test.erm
  15. 128470 0
      mes_cloud_xz.sql
  16. 335 0
      pom.xml
  17. 67 0
      src/main/java/com/jeesite/modules/Application.java
  18. 198 0
      src/main/java/com/jeesite/modules/Modbus.java
  19. 244 0
      src/main/java/com/jeesite/modules/Opcua.java
  20. 298 0
      src/main/java/com/jeesite/modules/S7.java
  21. 319 0
      src/main/java/com/jeesite/modules/Test.java
  22. 55 0
      src/main/java/com/jeesite/modules/config/BaseConfig.java
  23. 43 0
      src/main/java/com/jeesite/modules/config/WebConfig.java
  24. 25 0
      src/main/java/com/jeesite/modules/interceptor/SiteClosedInterceptor.java
  25. 15 0
      src/main/java/com/jeesite/modules/mes/dao/MesAppDao.java
  26. 15 0
      src/main/java/com/jeesite/modules/mes/dao/MesApplyDao.java
  27. 15 0
      src/main/java/com/jeesite/modules/mes/dao/MesApprovalDao.java
  28. 15 0
      src/main/java/com/jeesite/modules/mes/dao/MesApprovalNodeDao.java
  29. 20 0
      src/main/java/com/jeesite/modules/mes/dao/MesBatchSnDao.java
  30. 15 0
      src/main/java/com/jeesite/modules/mes/dao/MesCheckDao.java
  31. 15 0
      src/main/java/com/jeesite/modules/mes/dao/MesCheckFormDao.java
  32. 15 0
      src/main/java/com/jeesite/modules/mes/dao/MesCheckItemsDao.java
  33. 15 0
      src/main/java/com/jeesite/modules/mes/dao/MesCheckItemsFailDao.java
  34. 15 0
      src/main/java/com/jeesite/modules/mes/dao/MesCustomerDao.java
  35. 15 0
      src/main/java/com/jeesite/modules/mes/dao/MesDeviceAlarmDao.java
  36. 15 0
      src/main/java/com/jeesite/modules/mes/dao/MesDeviceCateDao.java
  37. 18 0
      src/main/java/com/jeesite/modules/mes/dao/MesDeviceCheckDao.java
  38. 15 0
      src/main/java/com/jeesite/modules/mes/dao/MesDeviceClientDao.java
  39. 15 0
      src/main/java/com/jeesite/modules/mes/dao/MesDeviceConsumableDao.java
  40. 15 0
      src/main/java/com/jeesite/modules/mes/dao/MesDeviceConsumableRecordDao.java
  41. 18 0
      src/main/java/com/jeesite/modules/mes/dao/MesDeviceDao.java
  42. 15 0
      src/main/java/com/jeesite/modules/mes/dao/MesDeviceFaultCateDao.java
  43. 15 0
      src/main/java/com/jeesite/modules/mes/dao/MesDeviceFaultDao.java
  44. 15 0
      src/main/java/com/jeesite/modules/mes/dao/MesDeviceFaultMaintainDao.java
  45. 15 0
      src/main/java/com/jeesite/modules/mes/dao/MesDeviceFormDao.java
  46. 15 0
      src/main/java/com/jeesite/modules/mes/dao/MesDeviceLogDao.java
  47. 15 0
      src/main/java/com/jeesite/modules/mes/dao/MesDeviceOeeDao.java
  48. 15 0
      src/main/java/com/jeesite/modules/mes/dao/MesDevicePreventDao.java
  49. 15 0
      src/main/java/com/jeesite/modules/mes/dao/MesDevicePreventFormDao.java
  50. 15 0
      src/main/java/com/jeesite/modules/mes/dao/MesDevicePreventTaskDao.java
  51. 20 0
      src/main/java/com/jeesite/modules/mes/dao/MesDeviceRecordDao.java
  52. 16 0
      src/main/java/com/jeesite/modules/mes/dao/MesDeviceStateDao.java
  53. 16 0
      src/main/java/com/jeesite/modules/mes/dao/MesDeviceTaskDao.java
  54. 17 0
      src/main/java/com/jeesite/modules/mes/dao/MesDeviceTaskFormDao.java
  55. 16 0
      src/main/java/com/jeesite/modules/mes/dao/MesDeviceTaskUserDao.java
  56. 16 0
      src/main/java/com/jeesite/modules/mes/dao/MesDeviceTimeDao.java
  57. 15 0
      src/main/java/com/jeesite/modules/mes/dao/MesDeviceTimeInterceptDao.java
  58. 15 0
      src/main/java/com/jeesite/modules/mes/dao/MesDeviceUrgencyDao.java
  59. 15 0
      src/main/java/com/jeesite/modules/mes/dao/MesDocumentCateDao.java
  60. 15 0
      src/main/java/com/jeesite/modules/mes/dao/MesDocumentDao.java
  61. 15 0
      src/main/java/com/jeesite/modules/mes/dao/MesElectricTorqueDao.java
  62. 15 0
      src/main/java/com/jeesite/modules/mes/dao/MesElectricTorqueInfoDao.java
  63. 15 0
      src/main/java/com/jeesite/modules/mes/dao/MesGp12ItemsDao.java
  64. 16 0
      src/main/java/com/jeesite/modules/mes/dao/MesGroupDao.java
  65. 16 0
      src/main/java/com/jeesite/modules/mes/dao/MesGroupOprnoDao.java
  66. 18 0
      src/main/java/com/jeesite/modules/mes/dao/MesGroupUserDao.java
  67. 15 0
      src/main/java/com/jeesite/modules/mes/dao/MesHfDao.java
  68. 15 0
      src/main/java/com/jeesite/modules/mes/dao/MesIconsDao.java
  69. 15 0
      src/main/java/com/jeesite/modules/mes/dao/MesIpqcDao.java
  70. 15 0
      src/main/java/com/jeesite/modules/mes/dao/MesIqcDao.java
  71. 15 0
      src/main/java/com/jeesite/modules/mes/dao/MesJbLogDao.java
  72. 16 0
      src/main/java/com/jeesite/modules/mes/dao/MesLaserMaterialDao.java
  73. 16 0
      src/main/java/com/jeesite/modules/mes/dao/MesLineDao.java
  74. 23 0
      src/main/java/com/jeesite/modules/mes/dao/MesLineProcessDao.java
  75. 16 0
      src/main/java/com/jeesite/modules/mes/dao/MesLineProcessMaterialDao.java
  76. 16 0
      src/main/java/com/jeesite/modules/mes/dao/MesLineProcessUserDao.java
  77. 15 0
      src/main/java/com/jeesite/modules/mes/dao/MesLogDao.java
  78. 15 0
      src/main/java/com/jeesite/modules/mes/dao/MesLogUselessDao.java
  79. 15 0
      src/main/java/com/jeesite/modules/mes/dao/MesMaterialBfRecordDao.java
  80. 15 0
      src/main/java/com/jeesite/modules/mes/dao/MesMaterialBfRecordItemsDao.java
  81. 15 0
      src/main/java/com/jeesite/modules/mes/dao/MesMaterialBlpRecordDao.java
  82. 15 0
      src/main/java/com/jeesite/modules/mes/dao/MesMaterialCheckDao.java
  83. 15 0
      src/main/java/com/jeesite/modules/mes/dao/MesMaterialCheckItemsDao.java
  84. 17 0
      src/main/java/com/jeesite/modules/mes/dao/MesMaterialCheckRecordDao.java
  85. 15 0
      src/main/java/com/jeesite/modules/mes/dao/MesMaterialCheckRecordItemsDao.java
  86. 15 0
      src/main/java/com/jeesite/modules/mes/dao/MesMaterialCkLogDao.java
  87. 17 0
      src/main/java/com/jeesite/modules/mes/dao/MesMaterialDao.java
  88. 16 0
      src/main/java/com/jeesite/modules/mes/dao/MesMaterialKcLogDao.java
  89. 15 0
      src/main/java/com/jeesite/modules/mes/dao/MesMaterialKwDao.java
  90. 17 0
      src/main/java/com/jeesite/modules/mes/dao/MesMaterialLlRecordDao.java
  91. 15 0
      src/main/java/com/jeesite/modules/mes/dao/MesMaterialLlRecordItemsDao.java
  92. 16 0
      src/main/java/com/jeesite/modules/mes/dao/MesMaterialPrebindDao.java
  93. 18 0
      src/main/java/com/jeesite/modules/mes/dao/MesMaterialReportDao.java
  94. 15 0
      src/main/java/com/jeesite/modules/mes/dao/MesMaterialRkLogDao.java
  95. 15 0
      src/main/java/com/jeesite/modules/mes/dao/MesMaterialRkRecordDao.java
  96. 15 0
      src/main/java/com/jeesite/modules/mes/dao/MesMaterialRkRecordItemsDao.java
  97. 15 0
      src/main/java/com/jeesite/modules/mes/dao/MesMaterialThRecordDao.java
  98. 15 0
      src/main/java/com/jeesite/modules/mes/dao/MesMaterialThRecordItemsDao.java
  99. 15 0
      src/main/java/com/jeesite/modules/mes/dao/MesNgDao.java
  100. 0 0
      src/main/java/com/jeesite/modules/mes/dao/MesPeriodicMaintenanceDao.java

+ 8 - 0
.gitignore

@@ -0,0 +1,8 @@
+.idea
+.settings
+classes
+bin
+out
+*.db
+*.iml
+.lock

+ 10 - 0
.run/Application.run.xml

@@ -0,0 +1,10 @@
+<component name="ProjectRunConfigurationManager">
+  <configuration default="false" name="Application" type="Application" factoryName="Application">
+    <option name="MAIN_CLASS_NAME" value="com.jeesite.modules.Application" />
+    <module name="jee-mes-xz" />
+    <shortenClasspath name="MANIFEST" />
+    <method v="2">
+      <option name="Make" enabled="true" />
+    </method>
+  </configuration>
+</component>

+ 21 - 0
LICENSE

@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2023 flyingfish
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.

+ 17 - 0
PLC-IP

@@ -0,0 +1,17 @@
+PLC1:192.168.90.81
+PLC2:192.168.90.82
+PLC3:192.168.90.83
+PLC4:192.168.90.84
+PLC5:192.168.90.85
+PLC6:192.168.90.86
+PLC7:192.168.90.87
+PLC8:192.168.90.88
+PLC9:192.168.90.89
+PLC10:192.168.90.90
+PLC11:192.168.90.91
+PLC12:192.168.90.92
+PLC13:192.168.90.93
+
+3车间恒温房
+气密西侧->东侧
+192.168.90.81

File diff suppressed because it is too large
+ 457 - 0
api.http


File diff suppressed because it is too large
+ 362 - 0
api2.http


+ 75 - 0
db/h2/test.sql

@@ -0,0 +1,75 @@
+
+
+/* Create Tables */
+
+-- 测试数据
+CREATE TABLE test_data
+(
+	id varchar(64) NOT NULL,
+	test_input varchar(200),
+	test_textarea varchar(200),
+	test_select varchar(10),
+	test_select_multiple varchar(200),
+	test_radio varchar(10),
+	test_checkbox varchar(200),
+	test_date datetime,
+	test_datetime datetime,
+	test_user_code varchar(64),
+	test_office_code varchar(64),
+	test_area_code varchar(64),
+	test_area_name varchar(100),
+	status char(1) DEFAULT '0' NOT NULL,
+	create_by varchar(64) NOT NULL,
+	create_date datetime NOT NULL,
+	update_by varchar(64) NOT NULL,
+	update_date datetime NOT NULL,
+	remarks varchar(500),
+	PRIMARY KEY (id)
+);
+
+
+-- 测试数据子表
+CREATE TABLE test_data_child
+(
+	id varchar(64) NOT NULL,
+	test_sort int,
+	test_data_id varchar(64),
+	test_input varchar(200),
+	test_textarea varchar(200),
+	test_select varchar(10),
+	test_select_multiple varchar(200),
+	test_radio varchar(10),
+	test_checkbox varchar(200),
+	test_date datetime,
+	test_datetime datetime,
+	test_user_code varchar(64),
+	test_office_code varchar(64),
+	test_area_code varchar(64),
+	test_area_name varchar(100),
+	PRIMARY KEY (id)
+);
+
+
+-- 测试树表
+CREATE TABLE test_tree
+(
+	tree_code varchar(64) NOT NULL,
+	parent_code varchar(64) NOT NULL,
+	parent_codes varchar(767) NOT NULL,
+	tree_sort decimal(10) NOT NULL,
+	tree_sorts varchar(767) NOT NULL,
+	tree_leaf char(1) NOT NULL,
+	tree_level decimal(4) NOT NULL,
+	tree_names varchar(767) NOT NULL,
+	tree_name varchar(200) NOT NULL,
+	status char(1) DEFAULT '0' NOT NULL,
+	create_by varchar(64) NOT NULL,
+	create_date datetime NOT NULL,
+	update_by varchar(64) NOT NULL,
+	update_date datetime NOT NULL,
+	remarks varchar(500),
+	PRIMARY KEY (tree_code)
+);
+
+
+

+ 75 - 0
db/mssql/test.sql

@@ -0,0 +1,75 @@
+
+
+/* Create Tables */
+
+-- 测试数据
+CREATE TABLE [test_data]
+(
+	[id] varchar(64) NOT NULL,
+	[test_input] varchar(200),
+	[test_textarea] nvarchar(200),
+	[test_select] varchar(10),
+	[test_select_multiple] varchar(200),
+	[test_radio] varchar(10),
+	[test_checkbox] varchar(200),
+	[test_date] datetime,
+	[test_datetime] datetime,
+	[test_user_code] varchar(64),
+	[test_office_code] varchar(64),
+	[test_area_code] varchar(64),
+	[test_area_name] nvarchar(100),
+	[status] char(1) DEFAULT '0' NOT NULL,
+	[create_by] varchar(64) NOT NULL,
+	[create_date] datetime NOT NULL,
+	[update_by] varchar(64) NOT NULL,
+	[update_date] datetime NOT NULL,
+	[remarks] nvarchar(500),
+	PRIMARY KEY ([id])
+);
+
+
+-- 测试数据子表
+CREATE TABLE [test_data_child]
+(
+	[id] varchar(64) NOT NULL,
+	[test_sort] int,
+	[test_data_id] varchar(64),
+	[test_input] varchar(200),
+	[test_textarea] nvarchar(200),
+	[test_select] varchar(10),
+	[test_select_multiple] varchar(200),
+	[test_radio] varchar(10),
+	[test_checkbox] varchar(200),
+	[test_date] datetime,
+	[test_datetime] datetime,
+	[test_user_code] varchar(64),
+	[test_office_code] varchar(64),
+	[test_area_code] varchar(64),
+	[test_area_name] nvarchar(100),
+	PRIMARY KEY ([id])
+);
+
+
+-- 测试树表
+CREATE TABLE [test_tree]
+(
+	[tree_code] varchar(64) NOT NULL,
+	[parent_code] varchar(64) NOT NULL,
+	[parent_codes] varchar(767) NOT NULL,
+	[tree_sort] decimal(10) NOT NULL,
+	[tree_sorts] varchar(767) NOT NULL,
+	[tree_leaf] char(1) NOT NULL,
+	[tree_level] decimal(4) NOT NULL,
+	[tree_names] varchar(767) NOT NULL,
+	[tree_name] nvarchar(200) NOT NULL,
+	[status] char(1) DEFAULT '0' NOT NULL,
+	[create_by] varchar(64) NOT NULL,
+	[create_date] datetime NOT NULL,
+	[update_by] varchar(64) NOT NULL,
+	[update_date] datetime NOT NULL,
+	[remarks] nvarchar(500),
+	PRIMARY KEY ([tree_code])
+);
+
+
+

+ 0 - 0
db/mysql/.keep


File diff suppressed because it is too large
+ 7068 - 0
db/mysql/mes_cloud-2023-6-10.sql


+ 15 - 0
db/oracle/create_user.sql

@@ -0,0 +1,15 @@
+
+create user jeesite
+	identified by jeesite
+	quota unlimited on users;
+  
+grant connect,resource,create session,select any table,
+		create any view,create any table,create any index,
+		drop any table,drop any view,drop any index
+	to jeesite;
+	
+-- 提示 oracle.jdbc.xa.OracleXAResource.recover 错误需要授权:
+grant select on sys.dba_pending_transactions to jeesite;
+grant select on sys.pending_trans$ to jeesite;
+grant select on sys.dba_2pc_pending to jeesite;
+grant execute on sys.dbms_system to jeesite;

+ 132 - 0
db/oracle/test.sql

@@ -0,0 +1,132 @@
+
+
+/* Create Tables */
+
+-- 测试数据
+CREATE TABLE test_data
+(
+	id varchar2(64) NOT NULL,
+	test_input varchar2(200),
+	test_textarea nvarchar2(200),
+	test_select varchar2(10),
+	test_select_multiple varchar2(200),
+	test_radio varchar2(10),
+	test_checkbox varchar2(200),
+	test_date timestamp,
+	test_datetime timestamp,
+	test_user_code varchar2(64),
+	test_office_code varchar2(64),
+	test_area_code varchar2(64),
+	test_area_name nvarchar2(100),
+	status char(1) DEFAULT '0' NOT NULL,
+	create_by varchar2(64) NOT NULL,
+	create_date timestamp NOT NULL,
+	update_by varchar2(64) NOT NULL,
+	update_date timestamp NOT NULL,
+	remarks nvarchar2(500),
+	PRIMARY KEY (id)
+);
+
+
+-- 测试数据子表
+CREATE TABLE test_data_child
+(
+	id varchar2(64) NOT NULL,
+	test_sort number(10,0),
+	test_data_id varchar2(64),
+	test_input varchar2(200),
+	test_textarea nvarchar2(200),
+	test_select varchar2(10),
+	test_select_multiple varchar2(200),
+	test_radio varchar2(10),
+	test_checkbox varchar2(200),
+	test_date timestamp,
+	test_datetime timestamp,
+	test_user_code varchar2(64),
+	test_office_code varchar2(64),
+	test_area_code varchar2(64),
+	test_area_name nvarchar2(100),
+	PRIMARY KEY (id)
+);
+
+
+-- 测试树表
+CREATE TABLE test_tree
+(
+	tree_code varchar2(64) NOT NULL,
+	parent_code varchar2(64) NOT NULL,
+	parent_codes varchar2(767) NOT NULL,
+	tree_sort number(10) NOT NULL,
+	tree_sorts varchar2(767) NOT NULL,
+	tree_leaf char(1) NOT NULL,
+	tree_level number(4) NOT NULL,
+	tree_names varchar2(767) NOT NULL,
+	tree_name nvarchar2(200) NOT NULL,
+	status char(1) DEFAULT '0' NOT NULL,
+	create_by varchar2(64) NOT NULL,
+	create_date timestamp NOT NULL,
+	update_by varchar2(64) NOT NULL,
+	update_date timestamp NOT NULL,
+	remarks nvarchar2(500),
+	PRIMARY KEY (tree_code)
+);
+
+
+
+/* Comments */
+
+COMMENT ON TABLE test_data IS '测试数据';
+COMMENT ON COLUMN test_data.id IS '编号';
+COMMENT ON COLUMN test_data.test_input IS '单行文本';
+COMMENT ON COLUMN test_data.test_textarea IS '多行文本';
+COMMENT ON COLUMN test_data.test_select IS '下拉框';
+COMMENT ON COLUMN test_data.test_select_multiple IS '下拉多选';
+COMMENT ON COLUMN test_data.test_radio IS '单选框';
+COMMENT ON COLUMN test_data.test_checkbox IS '复选框';
+COMMENT ON COLUMN test_data.test_date IS '日期选择';
+COMMENT ON COLUMN test_data.test_datetime IS '日期时间';
+COMMENT ON COLUMN test_data.test_user_code IS '用户选择';
+COMMENT ON COLUMN test_data.test_office_code IS '机构选择';
+COMMENT ON COLUMN test_data.test_area_code IS '区域选择';
+COMMENT ON COLUMN test_data.test_area_name IS '区域名称';
+COMMENT ON COLUMN test_data.status IS '状态(0正常 1删除 2停用)';
+COMMENT ON COLUMN test_data.create_by IS '创建者';
+COMMENT ON COLUMN test_data.create_date IS '创建时间';
+COMMENT ON COLUMN test_data.update_by IS '更新者';
+COMMENT ON COLUMN test_data.update_date IS '更新时间';
+COMMENT ON COLUMN test_data.remarks IS '备注信息';
+COMMENT ON TABLE test_data_child IS '测试数据子表';
+COMMENT ON COLUMN test_data_child.id IS '编号';
+COMMENT ON COLUMN test_data_child.test_sort IS '排序号';
+COMMENT ON COLUMN test_data_child.test_data_id IS '父表主键';
+COMMENT ON COLUMN test_data_child.test_input IS '单行文本';
+COMMENT ON COLUMN test_data_child.test_textarea IS '多行文本';
+COMMENT ON COLUMN test_data_child.test_select IS '下拉框';
+COMMENT ON COLUMN test_data_child.test_select_multiple IS '下拉多选';
+COMMENT ON COLUMN test_data_child.test_radio IS '单选框';
+COMMENT ON COLUMN test_data_child.test_checkbox IS '复选框';
+COMMENT ON COLUMN test_data_child.test_date IS '日期选择';
+COMMENT ON COLUMN test_data_child.test_datetime IS '日期时间';
+COMMENT ON COLUMN test_data_child.test_user_code IS '用户选择';
+COMMENT ON COLUMN test_data_child.test_office_code IS '机构选择';
+COMMENT ON COLUMN test_data_child.test_area_code IS '区域选择';
+COMMENT ON COLUMN test_data_child.test_area_name IS '区域名称';
+COMMENT ON TABLE test_tree IS '测试树表';
+COMMENT ON COLUMN test_tree.tree_code IS '节点编码';
+COMMENT ON COLUMN test_tree.parent_code IS '父级编号';
+COMMENT ON COLUMN test_tree.parent_codes IS '所有父级编号';
+COMMENT ON COLUMN test_tree.tree_sort IS '排序号(升序)';
+COMMENT ON COLUMN test_tree.tree_sorts IS '所有排序号';
+COMMENT ON COLUMN test_tree.tree_leaf IS '是否最末级';
+COMMENT ON COLUMN test_tree.tree_level IS '层次级别';
+COMMENT ON COLUMN test_tree.tree_names IS '全节点名';
+COMMENT ON COLUMN test_tree.tree_name IS '节点名称';
+COMMENT ON COLUMN test_tree.status IS '状态(0正常 1删除 2停用)';
+COMMENT ON COLUMN test_tree.create_by IS '创建者';
+COMMENT ON COLUMN test_tree.create_date IS '创建时间';
+COMMENT ON COLUMN test_tree.update_by IS '更新者';
+COMMENT ON COLUMN test_tree.update_date IS '更新时间';
+COMMENT ON COLUMN test_tree.remarks IS '备注信息';
+
+
+

+ 132 - 0
db/postgresql/test.sql

@@ -0,0 +1,132 @@
+
+
+/* Create Tables */
+
+-- 测试数据
+CREATE TABLE test_data
+(
+	id varchar(64) NOT NULL,
+	test_input varchar(200),
+	test_textarea varchar(200),
+	test_select varchar(10),
+	test_select_multiple varchar(200),
+	test_radio varchar(10),
+	test_checkbox varchar(200),
+	test_date timestamp,
+	test_datetime timestamp,
+	test_user_code varchar(64),
+	test_office_code varchar(64),
+	test_area_code varchar(64),
+	test_area_name varchar(100),
+	status char(1) DEFAULT '0' NOT NULL,
+	create_by varchar(64) NOT NULL,
+	create_date timestamp NOT NULL,
+	update_by varchar(64) NOT NULL,
+	update_date timestamp NOT NULL,
+	remarks varchar(500),
+	PRIMARY KEY (id)
+) WITHOUT OIDS;
+
+
+-- 测试数据子表
+CREATE TABLE test_data_child
+(
+	id varchar(64) NOT NULL,
+	test_sort int,
+	test_data_id varchar(64),
+	test_input varchar(200),
+	test_textarea varchar(200),
+	test_select varchar(10),
+	test_select_multiple varchar(200),
+	test_radio varchar(10),
+	test_checkbox varchar(200),
+	test_date timestamp,
+	test_datetime timestamp,
+	test_user_code varchar(64),
+	test_office_code varchar(64),
+	test_area_code varchar(64),
+	test_area_name varchar(100),
+	PRIMARY KEY (id)
+) WITHOUT OIDS;
+
+
+-- 测试树表
+CREATE TABLE test_tree
+(
+	tree_code varchar(64) NOT NULL,
+	parent_code varchar(64) NOT NULL,
+	parent_codes varchar(767) NOT NULL,
+	tree_sort decimal(10) NOT NULL,
+	tree_sorts varchar(767) NOT NULL,
+	tree_leaf char(1) NOT NULL,
+	tree_level decimal(4) NOT NULL,
+	tree_names varchar(767) NOT NULL,
+	tree_name varchar(200) NOT NULL,
+	status char(1) DEFAULT '0' NOT NULL,
+	create_by varchar(64) NOT NULL,
+	create_date timestamp NOT NULL,
+	update_by varchar(64) NOT NULL,
+	update_date timestamp NOT NULL,
+	remarks varchar(500),
+	PRIMARY KEY (tree_code)
+) WITHOUT OIDS;
+
+
+
+/* Comments */
+
+COMMENT ON TABLE test_data IS '测试数据';
+COMMENT ON COLUMN test_data.id IS '编号';
+COMMENT ON COLUMN test_data.test_input IS '单行文本';
+COMMENT ON COLUMN test_data.test_textarea IS '多行文本';
+COMMENT ON COLUMN test_data.test_select IS '下拉框';
+COMMENT ON COLUMN test_data.test_select_multiple IS '下拉多选';
+COMMENT ON COLUMN test_data.test_radio IS '单选框';
+COMMENT ON COLUMN test_data.test_checkbox IS '复选框';
+COMMENT ON COLUMN test_data.test_date IS '日期选择';
+COMMENT ON COLUMN test_data.test_datetime IS '日期时间';
+COMMENT ON COLUMN test_data.test_user_code IS '用户选择';
+COMMENT ON COLUMN test_data.test_office_code IS '机构选择';
+COMMENT ON COLUMN test_data.test_area_code IS '区域选择';
+COMMENT ON COLUMN test_data.test_area_name IS '区域名称';
+COMMENT ON COLUMN test_data.status IS '状态(0正常 1删除 2停用)';
+COMMENT ON COLUMN test_data.create_by IS '创建者';
+COMMENT ON COLUMN test_data.create_date IS '创建时间';
+COMMENT ON COLUMN test_data.update_by IS '更新者';
+COMMENT ON COLUMN test_data.update_date IS '更新时间';
+COMMENT ON COLUMN test_data.remarks IS '备注信息';
+COMMENT ON TABLE test_data_child IS '测试数据子表';
+COMMENT ON COLUMN test_data_child.id IS '编号';
+COMMENT ON COLUMN test_data_child.test_sort IS '排序号';
+COMMENT ON COLUMN test_data_child.test_data_id IS '父表主键';
+COMMENT ON COLUMN test_data_child.test_input IS '单行文本';
+COMMENT ON COLUMN test_data_child.test_textarea IS '多行文本';
+COMMENT ON COLUMN test_data_child.test_select IS '下拉框';
+COMMENT ON COLUMN test_data_child.test_select_multiple IS '下拉多选';
+COMMENT ON COLUMN test_data_child.test_radio IS '单选框';
+COMMENT ON COLUMN test_data_child.test_checkbox IS '复选框';
+COMMENT ON COLUMN test_data_child.test_date IS '日期选择';
+COMMENT ON COLUMN test_data_child.test_datetime IS '日期时间';
+COMMENT ON COLUMN test_data_child.test_user_code IS '用户选择';
+COMMENT ON COLUMN test_data_child.test_office_code IS '机构选择';
+COMMENT ON COLUMN test_data_child.test_area_code IS '区域选择';
+COMMENT ON COLUMN test_data_child.test_area_name IS '区域名称';
+COMMENT ON TABLE test_tree IS '测试树表';
+COMMENT ON COLUMN test_tree.tree_code IS '节点编码';
+COMMENT ON COLUMN test_tree.parent_code IS '父级编号';
+COMMENT ON COLUMN test_tree.parent_codes IS '所有父级编号';
+COMMENT ON COLUMN test_tree.tree_sort IS '排序号(升序)';
+COMMENT ON COLUMN test_tree.tree_sorts IS '所有排序号';
+COMMENT ON COLUMN test_tree.tree_leaf IS '是否最末级';
+COMMENT ON COLUMN test_tree.tree_level IS '层次级别';
+COMMENT ON COLUMN test_tree.tree_names IS '全节点名';
+COMMENT ON COLUMN test_tree.tree_name IS '节点名称';
+COMMENT ON COLUMN test_tree.status IS '状态(0正常 1删除 2停用)';
+COMMENT ON COLUMN test_tree.create_by IS '创建者';
+COMMENT ON COLUMN test_tree.create_date IS '创建时间';
+COMMENT ON COLUMN test_tree.update_by IS '更新者';
+COMMENT ON COLUMN test_tree.update_date IS '更新时间';
+COMMENT ON COLUMN test_tree.remarks IS '备注信息';
+
+
+

File diff suppressed because it is too large
+ 3590 - 0
db/test.erm


File diff suppressed because it is too large
+ 128470 - 0
mes_cloud_xz.sql


+ 335 - 0
pom.xml

@@ -0,0 +1,335 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+	<modelVersion>4.0.0</modelVersion>
+	
+	<parent>
+		<groupId>com.jeesite</groupId>
+		<artifactId>jeesite-parent</artifactId>
+		<version>5.2.0-SNAPSHOT</version>
+		<relativePath>../parent/pom.xml</relativePath>
+	</parent>
+
+
+	<artifactId>jee-mes-xz</artifactId>
+	<packaging>jar</packaging>
+	
+	<description>Web 服务,也可为分离端提供接口服务</description>
+	
+	<name>JeeSite Web</name>
+	<url>http://jeesite.com</url>
+	<inceptionYear>2013-Now</inceptionYear>
+	
+	<properties>
+		
+		<finalName>web</finalName><!-- war or jar 包的名称 -->
+		<start-class>com.jeesite.modules.Application</start-class>
+		
+		<!-- environment setting -->
+		<eclipse-plugin-download-sources>false</eclipse-plugin-download-sources>
+		<eclipse-plugin-download-javadocs>false</eclipse-plugin-download-javadocs>
+		
+		<!-- docker setting -->
+        <docker.run.port>8980:8980</docker.run.port>
+		
+	</properties>
+
+	<dependencies>
+
+		<!-- 核心模块 -->
+		<dependency>
+			<groupId>com.jeesite</groupId>
+			<artifactId>jeesite-module-core</artifactId>
+			<version>${project.parent.version}</version>
+		</dependency>
+		<dependency>
+			<groupId>com.alibaba</groupId>
+			<artifactId>fastjson</artifactId>
+			<version>1.2.68</version>
+		</dependency>
+		<!-- 在线文档接口 -->
+		<dependency>
+			<groupId>com.jeesite</groupId>
+			<artifactId>jeesite-module-swagger</artifactId>
+			<version>${project.parent.version}</version>
+		</dependency>
+
+		<!-- 内容管理模块 -->
+<!--		<dependency>-->
+<!--			<groupId>com.jeesite</groupId>-->
+<!--			<artifactId>jeesite-module-cms</artifactId>-->
+<!--			<version>${project.parent.version}</version>-->
+<!--		</dependency>-->
+
+		<!-- 移动端模块 -->
+<!--		<dependency>-->
+<!--			<groupId>com.jeesite</groupId>-->
+<!--			<artifactId>jeesite-module-app</artifactId>-->
+<!--			<version>${project.parent.version}</version>-->
+<!--		</dependency>-->
+		
+		<!-- 文件管理共享(标准版)
+		<dependency>
+			<groupId>com.jeesite</groupId>
+			<artifactId>jeesite-module-filemanager</artifactId>
+			<version>${project.parent.version}</version>
+		</dependency> -->
+		
+		<!-- 文件在线预览(标准版)
+		<dependency>
+			<groupId>com.jeesite</groupId>
+			<artifactId>jeesite-module-filepreview</artifactId>
+			<version>${project.parent.version}</version>
+		</dependency> -->
+		
+		<!-- Spring Boot Tomcat
+		<dependency>
+			<groupId>org.springframework.boot</groupId>
+			<artifactId>spring-boot-starter-tomcat</artifactId>
+			<scope>provided</scope>
+		</dependency> -->
+
+		<dependency>
+            <groupId>org.elasticsearch.client</groupId>
+            <artifactId>elasticsearch-rest-high-level-client</artifactId>
+            <version>7.17.6</version>
+            <exclusions>
+                <exclusion>
+                    <groupId>org.elasticsearch</groupId>
+                    <artifactId>elasticsearch</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+
+        <dependency>
+            <groupId>org.elasticsearch</groupId>
+            <artifactId>elasticsearch</artifactId>
+            <version>7.17.6</version>
+        </dependency>
+
+		<dependency>
+            <groupId>org.apache.commons</groupId>
+            <artifactId>commons-lang3</artifactId>
+            <version>3.9</version>
+        </dependency>
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <version>4.12</version>
+            <scope>test</scope>
+        </dependency>
+        
+        <dependency>
+            <groupId>io.netty</groupId>
+            <artifactId>netty-all</artifactId>
+            <version>4.1.48.Final</version>
+        </dependency>
+
+		<dependency>
+			<groupId>com.github.s7connector</groupId>
+			<artifactId>s7connector</artifactId>
+			<version>2.1</version>
+		</dependency>
+
+		<dependency>
+			<groupId>org.eclipse.milo</groupId>
+			<artifactId>sdk-client</artifactId>
+			<version>0.6.9</version>
+		</dependency>
+
+<!--		<dependency>-->
+<!--			<groupId>com.github.dathlin</groupId>-->
+<!--			<artifactId>HslCommunication</artifactId>-->
+<!--			<version>3.1.1</version>-->
+<!--		</dependency>-->
+
+		<!-- https://mvnrepository.com/artifact/com.github.dathlin/HslCommunication -->
+		<dependency>
+			<groupId>com.github.dathlin</groupId>
+			<artifactId>HslCommunication</artifactId>
+			<version>3.3.1</version>
+		</dependency>
+
+		<dependency>
+			<groupId>com.github.xingshuangs</groupId>
+			<artifactId>iot-communication</artifactId>
+			<version>1.4.4</version>
+		</dependency>
+
+		<dependency>
+			<groupId>org.eclipse.milo</groupId>
+			<artifactId>sdk-client</artifactId>
+			<version>0.6.9</version>
+		</dependency>
+
+		<dependency>
+			<groupId>org.eclipse.milo</groupId>
+			<artifactId>sdk-server</artifactId>
+			<version>0.6.9</version>
+		</dependency>
+
+		<dependency>
+			<groupId>org.bouncycastle</groupId>
+			<artifactId>bcprov-jdk15on</artifactId>
+			<version>1.70</version>
+		</dependency>
+
+		<dependency>
+			<groupId>commons-net</groupId>
+			<artifactId>commons-net</artifactId>
+			<version>3.9.0</version>
+		</dependency>
+
+		<dependency>
+			<groupId>com.univocity</groupId>
+			<artifactId>univocity-parsers</artifactId>
+			<version>2.9.1</version>
+		</dependency>
+
+		<!--okhttp3 依赖-->
+		<dependency>
+			<groupId>com.squareup.okhttp3</groupId>
+			<artifactId>okhttp</artifactId>
+			<version>4.9.3</version>
+		</dependency>
+
+		<dependency>
+			<groupId>org.apache.commons</groupId>
+			<artifactId>commons-csv</artifactId>
+			<version>1.8</version>
+		</dependency>
+
+
+		<dependency>
+			<groupId>cn.hutool</groupId>
+			<artifactId>hutool-all</artifactId>
+			<version>5.8.26</version>
+		</dependency>
+
+		<dependency>
+			<groupId>com.intelligt.modbus</groupId>
+			<artifactId>jlibmodbus</artifactId>
+			<version>1.2.9.7</version>
+		</dependency>
+		<dependency>
+			<groupId>com.fazecast</groupId>
+			<artifactId>jSerialComm</artifactId>
+			<version>2.6.2</version>
+		</dependency>
+<!--		<dependency>-->
+<!--			<groupId>com.github.purejavacomm</groupId>-->
+<!--			<artifactId>purejavacomm</artifactId>-->
+<!--			<version>1.0.1.RELEASE</version>-->
+<!--		</dependency>-->
+<!--		<dependency>-->
+<!--			<groupId>org.rxtx</groupId>-->
+<!--			<artifactId>rxtx</artifactId>-->
+<!--			<version>2.1.7</version>-->
+<!--		</dependency>-->
+
+<!--		<dependency>-->
+<!--			<groupId>io.github.java-native</groupId>-->
+<!--			<artifactId>jssc</artifactId>-->
+<!--			<version>2.9.4</version>-->
+<!--		</dependency>-->
+
+<!--		<dependency>-->
+<!--			<groupId>com.github.purejavacomm</groupId>-->
+<!--			<artifactId>purejavacomm</artifactId>-->
+<!--			<version>1.0.4</version>-->
+<!--		</dependency>-->
+
+<!--		<dependency>-->
+<!--			<groupId>org.apache.poi</groupId>-->
+<!--			<artifactId>poi</artifactId>-->
+<!--			<version>5.2.3</version>-->
+<!--		</dependency>-->
+<!--		<dependency>-->
+<!--			<groupId>org.apache.poi</groupId>-->
+<!--			<artifactId>poi-ooxml</artifactId>-->
+<!--			<version>5.2.3</version>-->
+<!--		</dependency>-->
+
+
+	</dependencies>
+	
+	<build>
+		<finalName>${finalName}</finalName>
+		<outputDirectory>${project.basedir}/src/main/webapp/WEB-INF/classes/</outputDirectory>
+		<plugins>
+			
+			<!-- Spring Boot -->
+			<plugin>
+				<groupId>org.springframework.boot</groupId>
+				<artifactId>spring-boot-maven-plugin</artifactId>
+				<configuration>
+					<includeSystemScope>true</includeSystemScope>
+				</configuration>
+			</plugin>
+
+			<!-- war插件,war包名称不带版本号 -->
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-war-plugin</artifactId>
+				<configuration>
+					<warName>${finalName}</warName>
+				</configuration>
+			</plugin>
+			
+			<!-- Eclipse 插件 -->
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-eclipse-plugin</artifactId>
+				<configuration>
+					<downloadSources>${eclipse-plugin-download-sources}</downloadSources>
+					<downloadJavadocs>${eclipse-plugin-download-javadocs}</downloadJavadocs>
+					<wtpContextName>${finalName}</wtpContextName>
+					<wtpversion>2.0</wtpversion>
+					<jeeversion>6.0</jeeversion>
+				</configuration>
+			</plugin>
+			
+		</plugins>
+	</build>
+	
+	<developers>  
+		<developer>
+			<id>thinkgem</id>
+			<name>WangZhen</name>
+			<email>thinkgem at 163.com</email>
+			<roles><role>Project lead</role></roles>
+			<timezone>+8</timezone>  
+		</developer>
+	</developers>
+	
+	<organization>
+		<name>JeeSite</name>
+		<url>http://jeesite.com</url>
+	</organization>
+	
+	<repositories>
+		<repository>
+			<id>aliyun-repos</id>
+			<url>https://maven.aliyun.com/repository/public</url>
+			<releases><enabled>true</enabled></releases>
+			<snapshots><enabled>false</enabled></snapshots>
+		</repository>
+		<repository>
+			<id>jeesite-repos</id>
+			<url>http://maven.jeesite.net/repository/maven-public</url>
+		</repository>
+	</repositories>
+	<pluginRepositories>
+		<pluginRepository>
+			<id>aliyun-repos</id>
+			<url>https://maven.aliyun.com/repository/public</url>
+			<releases><enabled>true</enabled></releases>
+			<snapshots><enabled>false</enabled></snapshots>
+		</pluginRepository>
+		<pluginRepository>
+			<id>jeesite-repos</id>
+			<url>http://maven.jeesite.net/repository/maven-public</url>
+		</pluginRepository>
+	</pluginRepositories>
+	
+</project>

+ 67 - 0
src/main/java/com/jeesite/modules/Application.java

@@ -0,0 +1,67 @@
+/**
+ * Copyright (c) 2013-Now http://jeesite.com All rights reserved.
+ * No deletion without permission, or be held responsible to law.
+ */
+package com.jeesite.modules;
+
+import com.alibaba.fastjson.parser.ParserConfig;
+import com.jeesite.modules.config.BaseConfig;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.CommandLineRunner;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.builder.SpringApplicationBuilder;
+import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
+import org.springframework.core.env.Environment;
+
+import java.net.ServerSocket;
+
+/**
+ * Application
+ * @author ThinkGem
+ * @version 2018-10-13
+ */
+@SpringBootApplication
+public class Application extends SpringBootServletInitializer implements CommandLineRunner {
+	public static ServerSocket serverSocket = null;
+	@Autowired
+	private static Environment environment;
+
+	public static void main(String[] args) {
+		ParserConfig.getGlobalInstance().setSafeMode(true); // fastjson 开启安全模式
+
+		SpringApplication.run(Application.class, args);
+
+		initDatabaseConnection();
+	}
+
+	@Override
+	protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
+		this.setRegisterErrorPageFilter(false); // 错误页面有容器来处理,而不是SpringBoot
+		return builder.sources(Application.class);
+	}
+
+	//启动端口号3000 tcp服务端
+	@Override
+	public void run(String... args) throws Exception {
+		// TODO Auto-generated method stub
+//		new Thread(() -> {
+//			try {
+//				new NettyServer(3000).run();
+//			}catch(Exception e) {
+//				e.printStackTrace();
+//			}
+//		}).start();
+
+//		new Thread(() -> {
+//			try {
+//				new LdNettyServer(7890).run();
+//			}catch(Exception e) {
+//				e.printStackTrace();
+//			}
+//		}).start();
+	}
+	public static void initDatabaseConnection() {
+		System.out.println(BaseConfig.url);
+	}
+}

+ 198 - 0
src/main/java/com/jeesite/modules/Modbus.java

@@ -0,0 +1,198 @@
+package com.jeesite.modules;
+
+import com.alibaba.fastjson.JSON;
+//import com.github.xingshuangs.iot.common.buff.EByteBuffFormat;
+import com.github.xingshuangs.iot.protocol.common.buff.EByteBuffFormat;
+import com.github.xingshuangs.iot.protocol.modbus.service.ModbusTcp;
+
+import java.nio.ByteBuffer;
+import java.nio.ByteOrder;
+import java.nio.charset.Charset;
+import java.util.List;
+
+public class Modbus {
+    public static void main(String[] args) {
+
+//        ModbusTcp modbusTcp = new ModbusTcp(2, "192.168.1.211",8000);
+//        List<Boolean> list = modbusTcp.readCoil(26,1);
+//        System.err.println("6002:"+list.toString());
+        ModbusTcp modbusTcp = new ModbusTcp(1,"192.168.88.99");
+
+        modbusTcp.writeInt32(15000*2,0, EByteBuffFormat.DC_BA);
+
+        Integer ret3 = modbusTcp.readInt32(15000*2,EByteBuffFormat.DC_BA);
+        System.out.println(ret3);
+        Integer ret33 = modbusTcp.readInt32(15001*2,EByteBuffFormat.DC_BA);
+        System.out.println(ret33);
+        Integer ret333 = modbusTcp.readInt32(15004*2,EByteBuffFormat.DC_BA);
+        System.out.println(ret333);
+
+//        Integer ret = modbusTcp.readInt32(58*2, EByteBuffFormat.DC_BA);
+
+//        modbusTcp.writeInt32(6002*2,1, EByteBuffFormat.DC_BA);
+
+//        modbusTcp.writeInt32(58*2, 0);
+//        Integer ret = modbusTcp.readInt32(6000*2, EByteBuffFormat.DC_BA);
+//        System.err.println("6001:"+ret);
+//
+//        Integer ret2 = modbusTcp.readInt32(6002*2, EByteBuffFormat.DC_BA);
+//        System.err.println("6002:"+ret2);
+
+//        ModbusTcp plc = new ModbusTcp(1,"192.168.20.21");
+////        System.out.println("plc:"+plc.readCoil(99,1));
+////
+//        int val = plc.readInt32(99, EByteBuffFormat.DC_BA);
+////
+//
+//        System.out.println("转换后的整数:" + val);
+////        int val = plc.readInt32(100, EByteBuffFormat.AB_CD);
+//
+//        String binaryString = String.format("%16s", Integer.toBinaryString(val & 0xFF)).replace(' ', '0');
+//        System.out.println("Binary string: " + binaryString);
+//        System.out.println("0: " + getCharByPosition(binaryString,0));
+//        System.out.println("1: " + getCharByPosition(binaryString,1));
+//        System.out.println("2: " + getCharByPosition(binaryString,2));
+//        System.out.println("3: " + getCharByPosition(binaryString,3));
+//        System.out.println("4: " + getCharByPosition(binaryString,4));
+//        System.out.println("5: " + getCharByPosition(binaryString,5));
+//        System.out.println("6: " + getCharByPosition(binaryString,6));
+//        System.out.println("7: " + getCharByPosition(binaryString,7));
+//
+//        int value = Integer.parseInt(binaryString, 2);
+//        System.out.println("转换后的整数:" + value);
+//
+//        String newBinaryString = setCharByPosition(binaryString,0,'0');
+//        System.out.println("newBinaryString: " + newBinaryString);
+//
+//        int value2 = Integer.parseInt(newBinaryString, 2);
+//        System.out.println("转换后的整数2:" + value2);
+//
+////        plc.writeInt32(99,value2, EByteBuffFormat.DC_BA);
+//
+//        System.out.println("D100.0: " + getCharByPosition(binaryString, 0));
+//        System.out.println("D100.1: " + getCharByPosition(binaryString, 1));
+//        System.out.println("D100.2: " + getCharByPosition(binaryString, 2));
+//        System.out.println("D100.3: " + getCharByPosition(binaryString, 3));
+//        System.out.println("D100.4: " + getCharByPosition(binaryString, 4));
+//        System.out.println("D100.5: " + getCharByPosition(binaryString, 5));
+//        System.out.println("D100.6: " + getCharByPosition(binaryString, 6));
+//        System.out.println("D100.7: " + getCharByPosition(binaryString, 7));
+
+//        double ww = Double.valueOf("1.1");
+//        System.out.println("ww:"+ww);
+
+//        ModbusTcp plc = new ModbusTcp(1,"192.168.1.211",8000);
+//
+//        plc.writeCoil(8217, true);
+//
+//        System.out.println("plc:"+plc.readCoil(200,1));
+//
+//        int D500 = plc.readInt32(102);//500=>100
+//        int D208 = plc.readInt32(208);
+//
+//        System.out.println("D500:"+D500);
+//
+//        System.out.println("D208:"+D208);
+//        ModbusTcp plc = new ModbusTcp("192.168.1.18");
+        // 单枪
+//        plc.writeCoil(3328,true);
+//        plc.writeCoil(3079,false);
+//        plc.writeCoil(3328,true); // 必须选关掉关机,开机才起左右
+//        plc.writeCoil(3128,true);
+//        plc.writeCoil(3128,false);
+
+//        plc.writeInt16(1128,(short) 3);
+//        plc.writeInt16(1136,(short) 0);
+//        plc.writeInt16(1138,(short) 0);
+
+//        plc.writeCoil(3128,true);
+
+//        // 设置模式 1=标记铆接模式
+//        plc.writeInt16(1092,(short) 1);
+//        // 设置任务
+//        plc.writeInt16(1128,(short) 80);
+//        plc.writeInt16(1136,(short) 2);
+//        plc.writeInt16(1138,(short) 1);
+//
+//        plc.writeCoil(3128,true);
+//
+//
+//        System.out.println("任务数量:"+plc.readInt16(1128)); // 1129 任务数量
+//        System.out.println("已铆接数量:"+plc.readInt16(1136)); // 1137 任务数量
+//        System.out.println("合格数量:"+plc.readInt16(1138)); // 1139 合格数量
+//
+//        System.out.println("任务数量2:"+plc.readInt16(1126)); // 1129 任务数量
+//        System.out.println("已铆接数量2:"+plc.readInt16(1144)); // 1137 任务数量
+//        System.out.println("合格数量2:"+plc.readInt16(1146)); // 1139 合格数量
+//        System.out.println("合格数量2:"+plc.readInt16(1160)); // 1139 合格数量
+//        System.out.println("合格数量2:"+plc.readInt16(1162)); // 1139 合格数量
+
+////
+//        System.out.println("控制模式:"+plc.readInt16(1090)); // 1091 控制模式
+//        System.out.println("系统运行中:"+plc.readCoil(3128,1)); // 3129 系统运行中
+//        System.out.println("结束暂停:"+plc.readCoil(3132,1)); // 3133 系统运行中
+//        System.out.println("远程开机:"+plc.readCoil(3328,1)); // 3329 远程开机
+//        System.out.println("远程关机:"+plc.readCoil(3079,1)); // 3080 远程关机
+//        System.out.println("作业模式:"+plc.readInt16(1092)); // 1093 作业模式 1=标记铆接模式
+//        System.out.println("最大拉力:"+plc.readInt16(1064)); // 1065 最大拉力
+//        System.out.println("对应位移:"+plc.readInt16(1065)); // 1066 对应位移
+//        System.out.println("任务数量:"+plc.readInt16(1128)); // 1129 任务数量
+//        System.out.println("已铆接数量:"+plc.readInt16(1136)); // 1137 任务数量
+//        System.out.println("合格数量:"+plc.readInt16(1138)); // 1139 合格数量
+//        System.out.println("质量状态:"+plc.readInt16(1072)); // 1073 质量状态
+//        System.out.println("F-out:"+plc.readInt16(1064));
+//        System.out.println("S-out:"+plc.readInt16(1065));
+//        System.out.println("F-min:"+plc.readInt16(1068));
+//        System.out.println("S-min:"+plc.readInt16(1070));
+//        System.out.println("F-max:"+plc.readInt16(1069));
+//        System.out.println("S-max:"+plc.readInt16(1071));
+//        System.out.println("OK:"+plc.readCoil(3101,1));
+//        System.out.println("NG:"+plc.readCoil(3102,1));
+//        System.out.println("工件完成:"+plc.readCoil(3155,1));
+//        System.out.println("暂停:"+plc.readCoil(3156,1));
+    }
+
+    public static int getCharByPosition(String binaryString, int position) {
+        //// 想要获取的位的位置(从右到左,从0开始计数) position
+        // 获取指定位置的字符并转换为数字
+        char bit = binaryString.charAt(15 - position); // 调整位置以符合从右到左的计数方式
+        int value = (int) Character.getNumericValue(bit);
+        return value;
+    }
+
+    public static String setCharByPosition(String binaryString, int position, char value) {
+        //// 想要获取的位的位置(从右到左,从0开始计数) position
+        StringBuilder sb = new StringBuilder(binaryString);
+        sb.setCharAt(15 - position, value);
+        return sb.toString();
+    }
+
+    // 大端排序转字符串
+    public static String bytesToBigEndianString(byte[] bytes) {
+        // 使用ByteBuffer创建一个大端缓冲区
+        ByteBuffer buffer = ByteBuffer.allocate(bytes.length).order(ByteOrder.BIG_ENDIAN);
+
+        // 将byte数组复制到ByteBuffer中
+        buffer.put(bytes);
+
+        // 重设缓冲区位置
+        buffer.flip();
+
+        // 根据需要转换为不同类型,这里转换为字符串
+        String result = "";
+        for (int i = 0; i < bytes.length; i++) {
+            result += String.format("%02X", buffer.get()); // 以16进制字符串的形式拼接
+        }
+
+        return result;
+    }
+
+    public static int getBit(byte b, int n) {
+        // 将byte转换为二进制字符串
+        String binaryString = Integer.toBinaryString(b & 0xFF);
+        // 补足位数到8位
+        binaryString = String.format("%8s", binaryString).replace(' ', '0');
+        // 获取第n位的字符,然后转换为整数
+        return binaryString.charAt(n) == '1' ? 1 : 0;
+    }
+}

+ 244 - 0
src/main/java/com/jeesite/modules/Opcua.java

@@ -0,0 +1,244 @@
+package com.jeesite.modules;
+
+import org.eclipse.milo.opcua.sdk.client.OpcUaClient;
+import org.eclipse.milo.opcua.sdk.client.api.config.OpcUaClientConfig;
+import org.eclipse.milo.opcua.sdk.client.api.config.OpcUaClientConfigBuilder;
+import org.eclipse.milo.opcua.sdk.client.api.identity.AnonymousProvider;
+import org.eclipse.milo.opcua.sdk.client.api.identity.UsernameProvider;
+import org.eclipse.milo.opcua.stack.core.AttributeId;
+import org.eclipse.milo.opcua.stack.core.security.SecurityPolicy;
+import org.eclipse.milo.opcua.stack.core.types.builtin.*;
+import org.eclipse.milo.opcua.stack.core.types.builtin.unsigned.UInteger;
+import org.eclipse.milo.opcua.stack.core.types.enumerated.MonitoringMode;
+import org.eclipse.milo.opcua.stack.core.types.enumerated.TimestampsToReturn;
+import org.eclipse.milo.opcua.stack.core.types.structured.MonitoredItemCreateRequest;
+import org.eclipse.milo.opcua.stack.core.types.structured.MonitoringParameters;
+import org.eclipse.milo.opcua.stack.core.types.structured.ReadValueId;
+import org.eclipse.milo.opcua.stack.core.types.structured.BrowseDescription;
+import org.eclipse.milo.opcua.stack.core.types.structured.BrowseResult;
+import org.eclipse.milo.opcua.stack.core.types.structured.ReferenceDescription;
+import org.eclipse.milo.opcua.stack.core.types.enumerated.BrowseDirection;
+import org.eclipse.milo.opcua.stack.core.types.enumerated.BrowseResultMask;
+import org.eclipse.milo.opcua.stack.core.types.enumerated.NodeClass;
+import org.eclipse.milo.opcua.stack.core.Identifiers;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import javax.servlet.http.HttpServletRequest;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.util.ArrayList;
+import java.util.List;
+
+public class Opcua {
+
+    private final static String endPointUrl = "opc.tcp://80.31.10.45:4840";
+
+    public static void main(String[] args) {
+
+        try {
+            //创建OPC UA客户端
+            OpcUaClient opcUaClient = createClient();
+
+            //开启连接
+            opcUaClient.connect().get();
+            
+            // 启动轮询读取(每2秒读取一次,不依赖值变化)
+            pollingRead(opcUaClient, 2000);
+            
+            // 订阅消息(值变化时触发)
+            subscribe(opcUaClient);
+
+            // 写入
+//            writeValue(opcUaClient);
+
+            // 读取
+//            readValue(opcUaClient);
+
+            // 关闭连接
+            opcUaClient.disconnect().get();
+        } catch (Exception e) {
+            throw new RuntimeException(e);
+        }
+
+
+    }
+
+    /**
+     * 创建OPC UA客户端
+     *
+     * @return
+     * @throws Exception
+     */
+    private static OpcUaClient createClient() throws Exception {
+        Path securityTempDir = Paths.get(System.getProperty("java.io.tmpdir"), "security");
+        Files.createDirectories(securityTempDir);
+        if (!Files.exists(securityTempDir)) {
+            throw new Exception("unable to create security dir: " + securityTempDir);
+        }
+        return OpcUaClient.create(endPointUrl,
+                endpoints ->
+                        endpoints.stream()
+                                .filter(e -> e.getSecurityPolicyUri().equals(SecurityPolicy.None.getUri()))
+                                .findFirst(),
+                configBuilder ->
+                        configBuilder
+//                                .setApplicationName(LocalizedText.english("")) // huazh-01
+//                                .setApplicationUri("") // ns=2:s=huazh-01.device1.data-huazh
+                                //访问方式:使用用户名密码认证
+//                                .setIdentityProvider(new AnonymousProvider())
+                                .setIdentityProvider(new UsernameProvider("OPCUA", "OPCUA123"))
+                                .setRequestTimeout(UInteger.valueOf(5000))
+                                .build()
+        );
+    }
+
+    private static void subscribe(OpcUaClient client) throws Exception {
+        //创建发布间隔1000ms的订阅对象
+        client.getSubscriptionManager()
+                .createSubscription(1000.0)
+                .thenAccept(t -> {
+                    // 正确的NodeId格式:ns=2, 路径前面带斜杠
+                    NodeId nodeId = new NodeId(2, "/Nck/Configuration/maxnumGlobMachAxes");
+                    ReadValueId readValueId = new ReadValueId(nodeId, AttributeId.Value.uid(), null, null);
+                    //创建监控的参数
+                    MonitoringParameters parameters = new MonitoringParameters(UInteger.valueOf(1), 1000.0, null, UInteger.valueOf(10), true);
+                    //创建监控项请求
+                    //该请求最后用于创建订阅。
+                    MonitoredItemCreateRequest request = new MonitoredItemCreateRequest(readValueId, MonitoringMode.Reporting, parameters);
+                    List<MonitoredItemCreateRequest> requests = new ArrayList<>();
+                    requests.add(request);
+                    //创建监控项,并且注册变量值改变时候的回调函数。
+                    t.createMonitoredItems(
+                            TimestampsToReturn.Both,
+                            requests,
+                            (item, id) -> item.setValueConsumer((it, val) -> {
+                                System.out.println("=====订阅nodeid====== :" + it.getReadValueId().getNodeId());
+                                System.out.println("=====订阅value===== :" + val.getValue().getValue());
+                            })
+                    );
+                }).get();
+
+        //持续订阅
+        Thread.sleep(Long.MAX_VALUE);
+    }
+
+    /**
+     * 定时读取变量值(不依赖值变化)
+     *
+     * @param client OPC UA客户端
+     * @param intervalMs 读取间隔(毫秒)
+     */
+    private static void pollingRead(OpcUaClient client, long intervalMs) {
+        // 正确的NodeId格式:ns=2, 路径前面带斜杠
+//        NodeId nodeId = new NodeId(2, "/Nck/Configuration/numGlobMachAxes");
+        NodeId nodeId = new NodeId(2, "/Channel/LogicalSpindle/acSmaxVelo[u1,1]");
+
+        // 启动独立线程进行轮询读取
+        Thread pollingThread = new Thread(() -> {
+            while (!Thread.currentThread().isInterrupted()) {
+                try {
+                    DataValue value = client.readValue(0.0, TimestampsToReturn.Both, nodeId).get();
+                    System.out.println("=====轮询读取nodeid====== :" + nodeId);
+                    System.out.println("=====轮询读取StatusCode===== :" + value.getStatusCode());
+                    System.out.println("=====轮询读取value===== :" + value.getValue().getValue());
+                    System.out.println("=====轮询读取时间===== :" + value.getServerTime());
+                    System.out.println("----------------------------------------");
+                    
+                    Thread.sleep(intervalMs);
+                } catch (InterruptedException e) {
+                    Thread.currentThread().interrupt();
+                    break;
+                } catch (Exception e) {
+                    System.err.println("轮询读取异常: " + e.getMessage());
+                }
+            }
+        }, "opcua-polling-thread");
+        
+        pollingThread.setDaemon(true);
+        pollingThread.start();
+        
+        System.out.println("=====轮询读取线程已启动,间隔: " + intervalMs + "ms=====");
+    }
+
+    public static void readValue(OpcUaClient client) {
+        try {
+            NodeId nodeId = new NodeId(1, "/Nck/Configuration/maxnumGlobMachAxes");
+
+            DataValue value = client.readValue(0.0, TimestampsToReturn.Both, nodeId).get();
+
+            System.out.println("=====读取ua1====:" + value.getValue().getValue());
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+    public static void writeValue(OpcUaClient client) {
+        try {
+
+            //创建变量节点 test.device2.test2
+            NodeId nodeId = new NodeId(2, "test.device2.name2");
+
+            //uda3 boolean
+            Short value = 11;
+            //创建Variant对象和DataValue对象
+            Variant v = new Variant(value);
+            DataValue dataValue = new DataValue(v, null, null);
+
+            StatusCode statusCode = client.writeValue(nodeId, dataValue).get();
+            System.out.println(statusCode);
+            System.out.println("=====写入ua1====:" + statusCode.isGood());
+
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+    /**
+     * 浏览节点树
+     *
+     * @param client OPC UA客户端
+     * @param nodeId 起始节点
+     * @param depth 当前深度
+     * @param maxDepth 最大深度
+     */
+    private static void browseNode(OpcUaClient client, NodeId nodeId, int depth, int maxDepth) {
+        if (depth > maxDepth) {
+            return;
+        }
+        
+        try {
+            BrowseDescription browseDescription = new BrowseDescription(
+                    nodeId,
+                    BrowseDirection.Forward,
+                    Identifiers.References,
+                    true,
+                    UInteger.valueOf(NodeClass.Object.getValue() | NodeClass.Variable.getValue()),
+                    UInteger.valueOf(BrowseResultMask.All.getValue())
+            );
+
+            BrowseResult browseResult = client.browse(browseDescription).get();
+            
+            if (browseResult.getReferences() != null) {
+                for (ReferenceDescription ref : browseResult.getReferences()) {
+                    StringBuilder indentBuilder = new StringBuilder();
+                    for (int i = 0; i < depth; i++) {
+                        indentBuilder.append("  ");
+                    }
+                    String indent = indentBuilder.toString();
+                    String nodeClass = ref.getNodeClass().toString();
+                    System.out.println(indent + "├─ [" + nodeClass + "] " + ref.getBrowseName().getName() 
+                            + " | NodeId: " + ref.getNodeId().toParseableString());
+                    
+                    // 递归浏览子节点
+                    ref.getNodeId().toNodeId(client.getNamespaceTable())
+                            .ifPresent(childNodeId -> browseNode(client, childNodeId, depth + 1, maxDepth));
+                }
+            }
+        } catch (Exception e) {
+            System.err.println("浏览节点异常: " + e.getMessage());
+        }
+    }
+}

+ 298 - 0
src/main/java/com/jeesite/modules/S7.java

@@ -0,0 +1,298 @@
+package com.jeesite.modules;
+
+import com.github.s7connector.api.DaveArea;
+import com.github.s7connector.api.S7Connector;
+import com.github.s7connector.api.S7Serializer;
+import com.github.s7connector.api.factory.S7ConnectorFactory;
+import com.github.s7connector.api.factory.S7SerializerFactory;
+import com.github.xingshuangs.iot.protocol.s7.enums.EPlcType;
+import com.github.xingshuangs.iot.protocol.s7.service.S7PLC;
+
+import java.math.BigInteger;
+
+public class S7 {
+    public static void main(String[] args) {
+//        192.168.0.200
+        S7PLC s7PLC = new S7PLC(EPlcType.S1200, "192.168.0.200");
+        System.out.println("单枪-基准拉力:"+s7PLC.readInt32("DB4.56.0"));
+//        s7PLC.readStatus();
+//        int workMode = s7PLC.readWorkMode();
+//        S7PLC s7PLC = new S7PLC(EPlcType.S1200, "192.168.0.200");
+//        s7PLC.writeString("DB1.400","000020015308-0100101425042500137");
+        System.out.println("单枪-条码:"+s7PLC.readString("DB1.400.0",40));
+        System.out.println("单枪-产品:"+s7PLC.readInt16("DB1.440.0"));
+        System.out.println("单枪-拉力:"+s7PLC.readInt32("DB1.144.0"));
+        System.out.println("单枪-位移:"+s7PLC.readFloat32("DB1.148.0"));
+        System.out.println("单枪-结果:"+s7PLC.readString("DB1.398.0",80));    //DB1.398.0
+        System.out.println("单枪-预设值:"+s7PLC.readInt32("DB1.38.0"));
+        System.out.println("单枪-实际值:"+s7PLC.readInt32("DB1.184.0"));
+        System.out.println("单枪-OK数:"+s7PLC.readInt32("DB1.176.0"));
+        System.out.println("单枪-NG数:"+s7PLC.readInt32("DB1.180.0"));
+
+        System.out.println("单枪-基准拉力:"+s7PLC.readInt16("DB1.442.0"));   //
+        System.out.println("单枪-基准位移:"+s7PLC.readInt32("DB1.444.0"));  //
+//        System.out.println("单枪-拉力上限:"+s7PLC.readInt32("DB1.160.0"));   //拉力上线(拉力上偏差)
+//        System.out.println("单枪-拉力下限:"+s7PLC.readInt32("DB1.164.0"));
+        System.out.println("单枪-拉力上限:"+s7PLC.readInt32("DB1.22.0"));   //拉力上线(拉力上偏差)
+        System.out.println("单枪-拉力下限:"+s7PLC.readInt32("DB1.26.0"));
+        System.out.println("单枪-位移上限:"+s7PLC.readFloat32("DB1.30.0"));
+        System.out.println("单枪-位移下限:"+s7PLC.readFloat32("DB1.34.0"));
+//        System.out.println("单枪-位移上限:"+s7PLC.readFloat32("DB1.168.0"));
+//        System.out.println("单枪-位移下限:"+s7PLC.readFloat32("DB1.172.0"));
+        System.out.println("单枪-拉铆完成信号:"+s7PLC.readBoolean("DB1.314.5"));
+//        System.out.println("单枪-MES屏蔽:"+s7PLC.readBoolean("DB5.0.1"));
+//        System.out.println("单枪-MES启用:"+s7PLC.readBoolean("DB5.0.0"));
+//        s7PLC
+//        s7PLC.writeBoolean("DB1.2.2",true);
+//        s7PLC.writeBoolean("DB1.2.3",false);
+//        System.out.println("A枪-强制使用:"+s7PLC.readBoolean("DB1.2.3"));
+//        System.out.println("A枪-报警断气:"+s7PLC.readBoolean("DB1.1.0"));
+//        System.out.println("A枪-扫码功能:"+s7PLC.readBoolean("DB1.2.2"));
+//        System.out.println("A枪-授权运行:"+s7PLC.readBoolean("DB1.3.0"));
+//        System.out.println("A枪-SV(预设)数量:"+s7PLC.readInt32("DB1.38.0"));
+//        System.out.println("A枪-PV(实际)数量:"+s7PLC.readInt32("DB1.184.0"));
+//        System.out.println("A枪-OK数量:"+s7PLC.readInt32("DB1.176.0"));
+//        System.out.println("A枪-NG数量:"+s7PLC.readInt32("DB1.180.0"));
+//        System.out.println("A枪-产品选择:"+s7PLC.readInt16("DB1.54.0"));
+//        System.out.println("A枪-最大拉力:"+s7PLC.readInt32("DB1.144.0"));
+//        System.out.println("A枪-最大位移:"+s7PLC.readFloat32("DB1.148.0"));
+//        System.out.println("A枪-基准拉力:"+s7PLC.readInt32("DB1.152.0"));
+//        System.out.println("A枪-基准位移:"+s7PLC.readFloat32("DB1.156.0"));
+//        System.out.println("A枪-拉力上限:"+s7PLC.readInt32("DB1.160.0"));
+//        System.out.println("A枪-拉力下限:"+s7PLC.readInt32("DB1.164.0"));
+//        System.out.println("A枪-位移上限:"+s7PLC.readFloat32("DB1.168.0"));
+//        System.out.println("A枪-位移下限:"+s7PLC.readFloat32("DB1.172.0"));
+//        System.out.println("A枪-拉力上限:"+s7PLC.readInt32("DB1.22.0"));
+//        System.out.println("A枪-拉力下限:"+s7PLC.readInt32("DB1.26.0"));
+//        System.out.println("A枪-位移上限:"+s7PLC.readFloat32("DB1.30.0"));
+//        System.out.println("A枪-位移下限:"+s7PLC.readFloat32("DB1.34.0"));
+//        System.out.println("A枪-拉力OK:"+s7PLC.readBoolean("DB1.314.0"));
+//        System.out.println("A枪-拉力NG:"+s7PLC.readBoolean("DB1.314.1"));
+//        System.out.println("A枪-位移OK:"+s7PLC.readBoolean("DB1.314.2"));
+//        System.out.println("A枪-位移NG:"+s7PLC.readBoolean("DB1.314.3"));
+//        System.out.println("A枪-拉铆完成信号:"+s7PLC.readBoolean("DB1.314.5"));
+//        System.out.println("A枪-判断结果:"+s7PLC.readString("DB1.398.0",2));
+//        System.out.println("A枪-实时条码:"+s7PLC.readString("DB1.400.0",50));
+//
+//        System.out.println("A枪-枪号:"+s7PLC.readInt16("DB1.450.0"));
+//        System.out.println("A枪-产品型号:"+s7PLC.readInt16("DB1.452.0"));
+//        System.out.println("A枪-基准拉力:"+s7PLC.readInt16("DB1.454.0"));
+//        System.out.println("A枪-基准位移:"+s7PLC.readInt16("DB1.456.0"));
+//        System.out.println("A枪-最大拉力:"+s7PLC.readInt16("DB1.458.0"));
+//        System.out.println("A枪-最大位移:"+s7PLC.readInt16("DB1.460.0"));
+//        System.out.println("A枪-结果判断:"+s7PLC.readString("DB1.462.0",2));
+//        System.out.println("A枪-当前数量:"+s7PLC.readInt16("DB1.464.4"));
+//        System.out.println("A枪-总铆接数:"+s7PLC.readString("DB1.466.0",10));
+//        System.out.println("A枪-条码信息:"+s7PLC.readString("DB1.476.0",50));
+//
+//
+//        System.out.println("B枪-扫码功能:"+s7PLC.readBoolean("DB1.532.2"));
+////        System.out.println("B枪-授权运行:"+s7PLC.readBoolean("DB1.3.0"));
+//        System.out.println("B枪-SV(预设)数量:"+s7PLC.readInt32("DB1.568.0"));
+//        System.out.println("B枪-PV(实际)数量:"+s7PLC.readInt32("DB1.714.0"));
+//        System.out.println("B枪-OK数量:"+s7PLC.readInt32("DB1.706.0"));
+//        System.out.println("B枪-NG数量:"+s7PLC.readInt32("DB1.710.0"));
+//        System.out.println("B枪-产品选择:"+s7PLC.readInt16("DB1.584.0"));
+//        System.out.println("B枪-最大拉力:"+s7PLC.readInt32("DB1.674.0"));
+//        System.out.println("B枪-最大位移:"+s7PLC.readFloat32("DB1.678.0"));
+//        System.out.println("B枪-基准拉力:"+s7PLC.readInt32("DB1.682.0"));
+//        System.out.println("B枪-基准位移:"+s7PLC.readFloat32("DB1.686.0"));
+//        System.out.println("B枪-拉力上限:"+s7PLC.readInt32("DB1.690.0"));
+//        System.out.println("B枪-拉力下限:"+s7PLC.readInt32("DB1.694.0"));
+//        System.out.println("B枪-位移上限:"+s7PLC.readFloat32("DB1.698.0"));
+//        System.out.println("B枪-位移下限:"+s7PLC.readFloat32("DB1.702.0"));
+
+//        System.out.println("B枪-拉力上限:"+s7PLC.readInt32("DB1.552.0"));
+//        System.out.println("B枪-拉力下限:"+s7PLC.readInt32("DB1.556.0"));
+//        System.out.println("B枪-位移上限:"+s7PLC.readFloat32("DB1.560.0"));
+//        System.out.println("B枪-位移下限:"+s7PLC.readFloat32("DB1.564.0"));
+//
+//        System.out.println("B枪-拉力OK:"+s7PLC.readBoolean("DB1.844.0"));
+//        System.out.println("B枪-拉力NG:"+s7PLC.readBoolean("DB1.844.1"));
+//        System.out.println("B枪-位移OK:"+s7PLC.readBoolean("DB1.844.2"));
+//        System.out.println("B枪-位移NG:"+s7PLC.readBoolean("DB1.844.3"));
+//        System.out.println("B枪-拉铆完成信号:"+s7PLC.readBoolean("DB1.844.5"));
+//        System.out.println("B枪-最大拉力:"+s7PLC.readInt32("DB1.846"));
+//        System.out.println("B枪-最大位移:"+s7PLC.readFloat32("DB1.850"));
+//        System.out.println("B枪-判断结果:"+s7PLC.readString("DB1.992.0",2));
+//        System.out.println("B枪-实时条码:"+s7PLC.readString("DB1.930.0",50));
+//
+//        System.out.println("B枪-枪号:"+s7PLC.readInt16("DB1.980.0"));
+//        System.out.println("B枪-产品型号:"+s7PLC.readInt16("DB1.982.0"));
+//        System.out.println("B枪-基准拉力:"+s7PLC.readInt16("DB1.984.0"));
+//        System.out.println("B枪-基准位移:"+s7PLC.readInt16("DB1.986.0"));
+//        System.out.println("B枪-最大拉力:"+s7PLC.readInt16("DB1.988.0"));
+//        System.out.println("B枪-最大位移:"+s7PLC.readInt16("DB1.990.0"));
+//        System.out.println("B枪-结果判断:"+s7PLC.readString("DB1.992.0",2));
+//        System.out.println("B枪-当前数量:"+s7PLC.readInt16("DB1.994.4"));
+//        System.out.println("B枪-总铆接数:"+s7PLC.readString("DB1.996.0",10));
+//        System.out.println("B枪-条码信息:"+s7PLC.readString("DB1.1006.0",50));
+
+//        String programName = s7PLC.readProgramName();;
+//        System.out.println("programName:"+programName);
+//////        String programName = s7PLC.readProgramName();;
+//        System.out.println("programName:"+s7PLC.readStatus());
+//        //        S7PLC s7PLC = new S7PLC(EPlcType.S1200, "192.168.0.41");
+//        S7PLC s7PLC = new S7PLC(EPlcType.S1200, "192.168.7.100");
+//        Short dya = s7PLC.readInt16("DB1010.20");
+//        Short dla = s7PLC.readInt16("DB1.22");
+//        Short ssa = s7PLC.readInt16("DB1.24");
+//        Short cwa = s7PLC.readInt16("DB1.26");
+//        Short joba = s7PLC.readInt16("DB1.28");
+
+//        System.err.println(s7PLC.readFloat32("DB1010.2")+"");
+//        System.err.println(s7PLC.readFloat32("DB1010.8")+"");
+//        System.err.println(s7PLC.readFloat32("DB1010.14")+"");
+//        System.err.println(s7PLC.readInt16("DB1010.18")+"");
+//        System.err.println(s7PLC.readInt16("DB1010.20")+"");
+//
+//        System.err.println(s7PLC.readFloat32("DB1010.26")+"");
+//        System.err.println(s7PLC.readFloat32("DB1010.34")+"");
+//        System.err.println(s7PLC.readFloat32("DB1010.42")+"");
+//        System.err.println(s7PLC.readInt16("DB1010.46")+"");
+//        System.err.println(s7PLC.readInt16("DB1010.48")+"");
+//
+//        System.err.println(s7PLC.readFloat32("DB1010.54")+"");
+//        System.err.println(s7PLC.readFloat32("DB1010.62")+"");
+//        System.err.println(s7PLC.readFloat32("DB1010.70")+"");
+//        System.err.println(s7PLC.readInt16("DB1010.74")+"");
+//        System.err.println(s7PLC.readInt16("DB1010.76")+"");
+
+//            Float dyb = s7PLC.readFloat32("DB2000.50");
+//            Float dlb = s7PLC.readFloat32("DB2000.54");
+//            Float ssb = s7PLC.readFloat32("DB2000.58");
+//            Short cwb = s7PLC.readInt16("DB2000.62");
+//            Short jobb = s7PLC.readInt16("DB2000.64");
+
+//        Short dyb = s7PLC.readInt16("DB1.30");
+//        Short dlb = s7PLC.readInt16("DB1.32");
+//        Short ssb = s7PLC.readInt16("DB1.34");
+//        Short cwb = s7PLC.readInt16("DB1.36");
+//        Short jobb = s7PLC.readInt16("DB1.38");
+//        System.err.println(dyb+"");
+//        System.err.println(dlb+"");
+//        System.err.println(ssb+"");
+//        System.err.println(cwb+"");
+//        System.err.println(jobb+"");
+
+
+//        S7PLC s7PLC = new S7PLC(EPlcType.S200_SMART,"192.168.2.1");
+//        s7PLC.writeBoolean("V800.1",true);
+////        s7PLC.writeBoolean("V801.0",true);
+////        s7PLC.writeBoolean("V800.0",true);
+//
+//        System.out.println(s7PLC.readBoolean("V800.0"));
+//        System.out.println(s7PLC.readBoolean("V801.0"));
+//        System.out.println(s7PLC.readBoolean("V800.1"));
+
+        //        Float weight = Float.valueOf("   ");
+
+//        System.out.println(Float.valueOf("   "));
+//        S7PLC s7PLC = new S7PLC(EPlcType.SINUMERIK_828D, "192.168.0.7");
+
+        //System.out.println(s7PLC.readFloat32("DB9050.12"));
+        //System.out.println(s7PLC.readFloat32("DB9050.14"));
+
+
+//        System.out.println(new BigInteger(s7PLC.readByte("DB9050",4)).floatValue());
+
+
+//        S7Connector s7Connector = null;
+//        try {
+//            if (s7Connector == null) {
+//
+//                //PLC地址
+//                String ipAddress = "192.168.7.100";
+//                //默认端口
+////				int port = 102;
+//                int rack = 0;
+//                int slot = 3;
+//                int timeout = 10000;
+//                s7Connector =
+//                        S7ConnectorFactory
+//                                .buildTCPConnector()
+//                                .withHost(ipAddress)
+////								.withPort(port) //optional
+////								.withRack(rack) //optional
+////								.withSlot(slot) //optional
+//                                .withTimeout(timeout) //连接超时时间
+//                                .build();
+//                S7Serializer s7Serializer2L = S7SerializerFactory.buildSerializer(s7Connector);
+//
+//
+//
+//
+////                String binaryString = "00000001";
+////                int length1 = binaryString.length();
+////                byte[] byteArray = new byte[length1 / 8];
+////                for (int i = 0; i < byteArray.length; i++) {
+////                    String byteString = binaryString.substring(i * 8, (i + 1) * 8);
+////                    byteArray[i] = (byte) Integer.parseInt(byteString, 2);
+////                }
+//
+//                byte[] bytes2 = new byte[1];
+//                bytes2[0] = 0x01;
+//                s7Connector.write(DaveArea.DB,9052,1,bytes2);
+////
+////                System.out.println("DB9031.DBW60:"+new BigInteger(xtob(s7Connector.read(DaveArea.DB, 1010, 2, 0))).intValue());
+//
+//
+//                System.out.println("DB9050.DBD0:"+new BigInteger(xtob(s7Connector.read(DaveArea.DB, 9050, 4, 0))).floatValue());
+//                System.out.println("DB9050.DBD4:"+new BigInteger(xtob(s7Connector.read(DaveArea.DB, 9050, 4, 4))).intValue());
+//                System.out.println("DB9050.DBD8:"+new BigInteger(xtob(s7Connector.read(DaveArea.DB, 9050, 4, 8))).intValue());
+//                System.out.println("DB9050.DBD12:"+new BigInteger(xtob(s7Connector.read(DaveArea.DB, 9050, 4, 12))).intValue());
+//                System.out.println("DB9050.DBD16:"+new BigInteger(xtob(s7Connector.read(DaveArea.DB, 9050, 4, 16))).intValue());
+//
+//
+//                System.out.println("DB9052.DBB1:"+new BigInteger(xtob(s7Connector.read(DaveArea.DB, 9052, 1, 1))).intValue());
+//
+//                byte[] bytes3 = s7Connector.read(DaveArea.DB, 9052, 1, 1);
+//                System.out.println("DB9052.DBB1:"+byteToBinaryString(bytes3));
+//
+//
+//                byte[] bytes = s7Connector.read(DaveArea.DB, 9052, 1, 0);
+//                System.out.println("DB9052.DBX0:"+byteToBinaryString(bytes));
+//
+//                System.out.println("DB9052.DBX0:"+getBit(bytes[0],0));
+
+
+
+//            }
+//        }catch (Exception e){
+//            e.printStackTrace();
+//        }
+
+    }
+
+    public static int getBit(byte b, int n) {
+        // 将byte转换为二进制字符串
+        String binaryString = Integer.toBinaryString(b & 0xFF);
+        // 补足位数到8位
+        binaryString = String.format("%8s", binaryString).replace(' ', '0');
+        // 获取第n位的字符,然后转换为整数
+        return binaryString.charAt(n) == '1' ? 1 : 0;
+    }
+
+    private static String byteToBinaryString(byte[] byteArray) {
+        StringBuilder binaryString = new StringBuilder();
+        for (byte b : byteArray) {
+            binaryString.append(String.format("%8s", Integer.toBinaryString(b & 0xFF)).replace(' ', '0'));
+        }
+        return binaryString.toString();
+    }
+
+
+    private static byte[] xtob( byte[] bytes){
+        // 创建新的byte数组并复制原始数据
+        byte[] reversedBytes = new byte[bytes.length];
+        System.arraycopy(bytes, 0, reversedBytes, 0, bytes.length);
+
+        // 反转byte数组元素的位置
+        for (int i = 0; i < bytes.length / 2; i++) {
+            byte temp = reversedBytes[i];
+            reversedBytes[i] = reversedBytes[reversedBytes.length - 1 - i];
+            reversedBytes[reversedBytes.length - 1 - i] = temp;
+        }
+        return reversedBytes;
+    }
+}

+ 319 - 0
src/main/java/com/jeesite/modules/Test.java

@@ -0,0 +1,319 @@
+package com.jeesite.modules;
+
+import com.alibaba.fastjson.JSONObject;
+import com.github.s7connector.api.DaveArea;
+import com.github.s7connector.api.S7Connector;
+import com.github.s7connector.api.S7Serializer;
+import com.github.s7connector.api.factory.S7ConnectorFactory;
+import com.github.s7connector.api.factory.S7SerializerFactory;
+import okhttp3.*;
+
+import java.io.IOException;
+import java.math.BigInteger;
+import java.net.InetSocketAddress;
+import java.net.Socket;
+import java.text.DecimalFormat;
+import java.text.SimpleDateFormat;
+import java.time.*;
+import java.time.format.DateTimeFormatter;
+import java.time.temporal.ChronoUnit;
+import java.util.*;
+import java.util.concurrent.TimeUnit;
+import java.util.stream.IntStream;
+
+public class Test {
+    public static S7Connector s7Connector = null;
+//    public static String plcUrl = "80.20.10.42";
+    public static String plcUrl = "80.21.10.43";
+
+
+    public static List<String> getRecent7Days() {
+        List<String> dates = new ArrayList<>();
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+        Calendar cal = Calendar.getInstance();
+        cal.add(Calendar.DAY_OF_MONTH, -6); // 从今天往前推6天
+        for (int i = 0; i < 7; i++) {
+            dates.add(sdf.format(cal.getTime()));
+            cal.add(Calendar.DAY_OF_MONTH, 1);
+        }
+        return dates;
+    }
+
+    private static final Random random = new Random();
+    private static final String CHARS = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
+    private static final int RANDOM_LENGTH = 5; // 随机数的长度
+
+    public static String generateOrderNumber() {
+        long timestamp = Instant.now().toEpochMilli(); // 获取当前时间戳
+        StringBuilder sb = new StringBuilder();
+        sb.append(timestamp); // 添加时间戳部分
+        for (int i = 0; i < RANDOM_LENGTH; i++) {
+            sb.append(CHARS.charAt(random.nextInt(CHARS.length()))); // 添加随机字符
+        }
+        return sb.toString();
+    }
+
+    public static boolean isServerOnlineBySocket(String host, int port) {
+        try (Socket socket = new Socket()) {
+            socket.connect(new InetSocketAddress(host, port), 2000); // 2秒超时
+            return true;
+        } catch (Exception e) {
+            return false;
+        }
+    }
+
+    public static void main(String[] args) {
+        String lastSn = "5001040043563110030";
+        System.out.println(lastSn.substring(0,13));
+        System.out.println(lastSn.substring(13,15));
+        System.out.println(lastSn.substring(15,19));
+//        String sn = "";
+//
+//
+//        if(sn.equals("") || sn.isEmpty()){
+//            System.out.println("111111111111");
+//        }else if (sn.equals(lastSn)){
+//            System.out.println("22222222222");
+//        }
+
+//        System.out.println(isServerOnlineBySocket("127.0.0.1", 8980));
+//        // 获取当前日期
+//        LocalDate today = LocalDate.now();
+//
+//        // 定义日期格式化器
+//        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMdd");
+//
+//        // 格式化日期为字符串
+//        String dateStr = today.format(formatter);
+//
+//        // 生成7位随机数
+//        Random random = new Random(); // 如果需要更高的安全性,可以使用 SecureRandom
+//        int randomNumber = 1000000 + random.nextInt(9000000); // 生成一个7位数的随机数,从1000000到9999999
+//
+//        // 组合日期和随机数生成订单号
+//        String orderNumber = dateStr + String.format("%07d", randomNumber); // 使用String.format确保随机数是7位数
+//
+//        System.out.println("生成的订单号: " + orderNumber);
+
+//        System.out.println(generateOrderNumber());
+
+//        List<String> dates = getRecent7Days();
+//        System.out.println(dates);
+
+//        // 获取当前年月的对象
+//        YearMonth yearMonth = YearMonth.now();
+//
+//        // 获取当前月的第一天(起始日)
+//        LocalDate firstDayOfMonth = yearMonth.atDay(1);
+//
+//        // 获取当前月的最后一天(结束日)
+//        LocalDate lastDayOfMonth = yearMonth.atEndOfMonth();
+//
+//        // 打印结果
+//        System.out.println("当前月的起始时间: " + firstDayOfMonth.toString());
+//        System.out.println("当前月的结束时间: " + lastDayOfMonth.toString());
+
+//        Calendar calendar = Calendar.getInstance();
+//        int year = calendar.get(Calendar.YEAR);
+//        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
+//
+//        for (int month = 1; month <= 12; month++) {
+//            YearMonth yearMonth = YearMonth.of(year, month);
+//            LocalDate firstDayOfMonth = yearMonth.atDay(1); // 获取月初
+//            LocalDate lastDayOfMonth = yearMonth.atEndOfMonth(); // 获取月末
+//
+//            String firstDayStr = firstDayOfMonth.format(formatter);
+//            String lastDayStr = lastDayOfMonth.format(formatter);
+//
+//            System.out.println("Year: " + year + ", Month: " + month + " - First Day: " + firstDayStr + ", Last Day: " + lastDayStr);
+//        }
+
+//        // 获取今天的日期
+//        LocalDate today = LocalDate.now();
+//        // 获取明天的日期
+//        LocalDate tomorrow = today.plusDays(1);
+//
+//        // 定义今天和明天的8点时间
+//        LocalTime startTime = LocalTime.of(8, 0); // 今天8点
+//        LocalTime endTime = LocalTime.of(8, 0); // 明天8点
+//
+//        // 创建今天的开始时间(今天8点)
+//        LocalDateTime startDateTime = LocalDateTime.of(today, startTime);
+//        // 创建明天的结束时间(明天8点)
+//        LocalDateTime endDateTime = LocalDateTime.of(tomorrow, endTime);
+//
+//        // 计算时间段长度(实际上是24小时,因为我们是从今天8点到明天8点)
+//        Duration duration = Duration.between(startDateTime, endDateTime);
+//
+//        // 输出结果,验证是否正确
+//        System.out.println("开始时间: " + startDateTime);
+//        System.out.println("结束时间: " + endDateTime);
+//        System.out.println("时间段长度: " + duration.toHours() + " 小时"); // 应该输出24小时
+//
+//        // 定义一个特定的日期时间(例如:2023年3月15日12:00)
+//        LocalDateTime specificTime = LocalDateTime.now();
+//
+//        // 减去一个小时
+//        LocalDateTime oneHourAgo = specificTime.minus(1, ChronoUnit.HOURS);
+//
+//        // 定义时间格式
+//        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+
+//        // 格式化时间
+//        String formattedTime = oneHourAgo.format(formatter);
+//
+//        // 输出结果
+//        System.out.println("特定时间前一个小时的时间是: " + formattedTime);
+
+
+
+//
+//        // 获取当前日期
+//        LocalDate today = LocalDate.now();
+//
+//        // 获取今天是该月的第几天
+//        int dayOfMonth = today.getDayOfMonth();
+//
+//        System.out.println("今天是该月的第 " + dayOfMonth + " 天。");
+//
+//        String hmb = "0050010400435E6348245C120001";
+//        String snDate = hmb.substring(20,24);
+//        System.out.println("snDate: " + snDate);
+
+//        // 获取当前日期
+//        LocalDate today = LocalDate.now();
+//        // 获取当前月份,LocalDate的getMonthValue方法直接返回月份数字,无需加1
+//        int month = today.getMonthValue();
+//        System.out.println("当前月份: " + month);
+
+        // 获取当前年份
+        int currentYear = Year.now().getValue();
+
+        // 转换为字符串,然后获取最后一个字符
+        String lastDigit = String.valueOf(currentYear).substring(String.valueOf(currentYear).length() - 1);
+
+        // 将字符串的最后一个数字转换回整数
+        int lastDigitAsInt = Integer.parseInt(lastDigit);
+
+        System.out.println("年份的最后一个数字是: " + lastDigitAsInt);
+
+
+//        initS7();
+//
+////         System.out.println("60:"+s7Connector.read(DaveArea.DB, 4, 0, 1));
+//        System.out.println("0.0:"+formatS7Val(s7Connector.read(DaveArea.DB, 9051, 4, 0)));
+//        System.out.println("4.0:"+formatS7Val(s7Connector.read(DaveArea.DB, 9051, 4, 0)));
+//        System.out.println("8.0:"+formatS7Val(s7Connector.read(DaveArea.DB, 9051, 4, 8)));
+//        System.out.println("12.0:"+formatS7Val(s7Connector.read(DaveArea.DB, 9051, 4, 12)));
+//        System.out.println("16.0:"+formatS7Val(s7Connector.read(DaveArea.DB, 9051, 4, 16)));
+//        System.out.println("20.0:"+formatS7Val(s7Connector.read(DaveArea.DB, 9051, 4, 20)));
+//        System.out.println("26.0:"+formatS7Int(s7Connector.read(DaveArea.DB, 9051, 2, 26)));
+//        System.out.println("28.0:"+formatS7Val(s7Connector.read(DaveArea.DB, 9051, 4, 28)));
+//        System.out.println("32.0:"+formatS7Val(s7Connector.read(DaveArea.DB, 9051, 4, 32)));
+//
+//
+//        byte[] bytes = s7Connector.read(DaveArea.DB, 9051, 1, 24);
+//        System.out.println("24:"+byteToBinaryString(bytes));
+//        System.out.println("24.0:"+getBit(bytes[0],7));
+//        System.out.println("24.1:"+getBit(bytes[0],6));
+//        System.out.println("24.2:"+getBit(bytes[0],5));
+//        System.out.println("24.3:"+getBit(bytes[0],4));
+//        System.out.println("24.4:"+getBit(bytes[0],3));
+//        System.out.println("24.5:"+getBit(bytes[0],2));
+//        System.out.println("24.6:"+getBit(bytes[0],1));
+//        System.out.println("24.7:"+getBit(bytes[0],0));
+//
+//        byte[] bytes2 = s7Connector.read(DaveArea.DB, 9051, 1, 25);
+//        System.out.println("25:"+byteToBinaryString(bytes2));
+//        System.out.println("25.0:"+getBit(bytes2[0],7));
+//        System.out.println("25.1:"+getBit(bytes2[0],6));
+//        System.out.println("25.2:"+getBit(bytes2[0],5));
+//        System.out.println("25.3:"+getBit(bytes2[0],4));
+//        System.out.println("25.4:"+getBit(bytes2[0],3));
+//        System.out.println("25.5:"+getBit(bytes2[0],2));
+//        System.out.println("25.6:"+getBit(bytes2[0],1));
+//        System.out.println("25.7:"+getBit(bytes2[0],0));
+
+
+
+    }
+
+    // 格式化s7取出的值
+    private static String formatS7Val(byte[] val){
+        int intValue = new BigInteger(xtob(val)).intValue();
+        float floatValue = Float.intBitsToFloat(intValue);
+
+        // 保留1位小数
+        DecimalFormat df = new DecimalFormat("#.#");
+        df.setMaximumFractionDigits(1);
+        String result = df.format(floatValue);
+        float roundedNum = Float.parseFloat(result);
+
+        return roundedNum+"";
+    }
+
+    // 转大端排序
+    private static byte[] xtob( byte[] bytes){
+        return bytes;
+//        // 创建新的byte数组并复制原始数据
+//        byte[] reversedBytes = new byte[bytes.length];
+//        System.arraycopy(bytes, 0, reversedBytes, 0, bytes.length);
+//
+//        // 反转byte数组元素的位置
+//        for (int i = 0; i < bytes.length / 2; i++) {
+//            byte temp = reversedBytes[i];
+//            reversedBytes[i] = reversedBytes[reversedBytes.length - 1 - i];
+//            reversedBytes[reversedBytes.length - 1 - i] = temp;
+//        }
+//        return reversedBytes;
+    }
+
+    private static String byteToBinaryString(byte[] byteArray) {
+        StringBuilder binaryString = new StringBuilder();
+        for (byte b : byteArray) {
+            binaryString.append(String.format("%8s", Integer.toBinaryString(b & 0xFF)).replace(' ', '0'));
+        }
+        return binaryString.toString();
+    }
+
+    public static int getBit(byte b, int n) {
+        // 将byte转换为二进制字符串
+        String binaryString = Integer.toBinaryString(b & 0xFF);
+        // 补足位数到8位
+        binaryString = String.format("%8s", binaryString).replace(' ', '0');
+        // 获取第n位的字符,然后转换为整数
+        return binaryString.charAt(n) == '1' ? 1 : 0;
+    }
+
+    private static Integer formatS7Int(byte[] val){
+        return new BigInteger(xtob(val)).intValue();
+    }
+
+    public static void initS7(){
+        try {
+            if(s7Connector == null) {
+
+                //PLC地址
+                String ipAddress = plcUrl;
+                //默认端口
+				int port = 102;
+                int rack=0;
+                int slot=3;
+                int timeout=5000;
+                s7Connector=
+                        S7ConnectorFactory
+                                .buildTCPConnector()
+                                .withHost(ipAddress)
+								.withPort(port) //optional
+//								.withRack(rack) //optional
+//								.withSlot(slot) //optional
+                                .withTimeout(timeout) //连接超时时间
+                                .build();
+                S7Serializer s7Serializer2L = S7SerializerFactory.buildSerializer(s7Connector);
+            }
+        } catch (Exception e) { // 如果连接失败保存失败再次尝试连接一次
+            s7Connector = null;
+            e.printStackTrace();
+        }
+    }
+}

+ 55 - 0
src/main/java/com/jeesite/modules/config/BaseConfig.java

@@ -0,0 +1,55 @@
+package com.jeesite.modules.config;
+
+import java.net.InetAddress;
+import java.net.UnknownHostException;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.ApplicationArguments;
+import org.springframework.boot.ApplicationRunner;
+import org.springframework.core.env.Environment;
+import org.springframework.stereotype.Component;
+
+import lombok.extern.slf4j.Slf4j;
+
+@Slf4j
+@Component
+public class BaseConfig implements ApplicationRunner {
+    @Autowired
+    private Environment environment;
+    public static String server_port = "8980";
+    public static String server_ip = "127.0.0.1";
+    
+    public static String url = "";
+    public static String username = "";
+    public static String password = "";
+  
+    @Override
+    public void run(ApplicationArguments args){
+    	server_port = environment.getProperty("server.port");
+        url = environment.getProperty("jdbc.url");
+        username = environment.getProperty("jdbc.username");
+        password = environment.getProperty("jdbc.password");
+        //System.out.println("server_port="+server_port);
+        server_ip = getIPAddress();
+        //System.out.println("server_ip="+server_ip);
+    }
+    
+    public static String getIPAddress() {
+    	String ip = "127.0.0.1";
+    	//获取IP地址
+    	//用 getLocalHost() 方法创建的InetAddress的对象
+    	try {
+    		InetAddress address = InetAddress.getLocalHost();
+    		//System.out.println(address.getHostName());//主机名
+    		//System.out.println(address.getCanonicalHostName());//主机别名
+    		//System.out.println(address.getHostAddress());//获取IP地址
+    		ip = address.getHostAddress();
+    		//System.out.println("ip="+ip_address);//获取IP地址
+    		//System.out.println("===============");
+    	} catch (UnknownHostException e) {
+    		// TODO Auto-generated catch block
+    		//e.printStackTrace();
+    	}
+    	return ip;
+    }
+}

+ 43 - 0
src/main/java/com/jeesite/modules/config/WebConfig.java

@@ -0,0 +1,43 @@
+package com.jeesite.modules.config;
+
+import com.jeesite.modules.interceptor.SiteClosedInterceptor;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
+import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
+
+@Configuration
+public class WebConfig implements WebMvcConfigurer {
+    @Autowired
+    private SiteClosedInterceptor siteClosedInterceptor;
+
+    @Override
+    public void addInterceptors(InterceptorRegistry registry) {
+        registry.addInterceptor(siteClosedInterceptor);
+    }
+
+
+//    @Value("${file.baseDir:C:/mescloud}")
+//    private String fileBaseDir;
+//
+//    @Value("${adminPath:/js/a}")
+//    private String adminPath;
+//
+//    @Override
+//    public void addResourceHandlers(ResourceHandlerRegistry registry) {
+//        // 配置文件上传目录的静态资源映射
+//        // 将 ${adminPath}/userfiles/** 路径映射到文件系统中的实际目录
+////        registry.addResourceHandler(adminPath + "/userfiles/**")
+////                .addResourceLocations("file:" + fileBaseDir + "/userfiles/");
+//        //http://localhost:8980/js/a/userfiles/ccd/20260124/0050010400435E6348245C230034_20260124161416/%E4%BE%A7%E9%9D%A2_16_31_03.jpg
+//
+//        registry.addResourceHandler("/userfiles/**")
+//                .addResourceLocations("file:" + fileBaseDir + "/userfiles/");
+//
+//        // 如果必须保留 /js/a 前缀,请确保 Shiro 放行该路径
+//        registry.addResourceHandler(adminPath + "/userfiles/**")
+//                .addResourceLocations("file:" + fileBaseDir + "/userfiles/");
+//    }
+}

+ 25 - 0
src/main/java/com/jeesite/modules/interceptor/SiteClosedInterceptor.java

@@ -0,0 +1,25 @@
+package com.jeesite.modules.interceptor;
+
+import com.jeesite.common.cache.CacheUtils;
+import org.springframework.stereotype.Component;
+import org.springframework.web.servlet.HandlerInterceptor;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+@Component
+public class SiteClosedInterceptor implements HandlerInterceptor {
+
+    @Override
+    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
+
+        String siteFlag = CacheUtils.get("mes","jya","");
+        System.err.println("siteFlag:"+siteFlag);
+        if(siteFlag.equals("close")){
+            response.getWriter().write("404");
+            return false;
+        }else{
+            return true;
+        }
+    }
+}

+ 15 - 0
src/main/java/com/jeesite/modules/mes/dao/MesAppDao.java

@@ -0,0 +1,15 @@
+package com.jeesite.modules.mes.dao;
+
+import com.jeesite.common.dao.CrudDao;
+import com.jeesite.common.mybatis.annotation.MyBatisDao;
+import com.jeesite.modules.mes.entity.MesApp;
+
+/**
+ * 安卓版本DAO接口
+ * @author hzd
+ * @version 2023-08-11
+ */
+@MyBatisDao
+public interface MesAppDao extends CrudDao<MesApp> {
+    MesApp findLatestVersion(MesApp mesApp);
+}

+ 15 - 0
src/main/java/com/jeesite/modules/mes/dao/MesApplyDao.java

@@ -0,0 +1,15 @@
+package com.jeesite.modules.mes.dao;
+
+import com.jeesite.common.dao.CrudDao;
+import com.jeesite.common.mybatis.annotation.MyBatisDao;
+import com.jeesite.modules.mes.entity.MesApply;
+
+/**
+ * 返修返工单审核表DAO接口
+ * @author hzd
+ * @version 2023-07-13
+ */
+@MyBatisDao
+public interface MesApplyDao extends CrudDao<MesApply> {
+	
+}

+ 15 - 0
src/main/java/com/jeesite/modules/mes/dao/MesApprovalDao.java

@@ -0,0 +1,15 @@
+package com.jeesite.modules.mes.dao;
+
+import com.jeesite.common.dao.CrudDao;
+import com.jeesite.common.mybatis.annotation.MyBatisDao;
+import com.jeesite.modules.mes.entity.MesApproval;
+
+/**
+ * 审批流程DAO接口
+ * @author hzd
+ * @version 2023-07-13
+ */
+@MyBatisDao
+public interface MesApprovalDao extends CrudDao<MesApproval> {
+	
+}

+ 15 - 0
src/main/java/com/jeesite/modules/mes/dao/MesApprovalNodeDao.java

@@ -0,0 +1,15 @@
+package com.jeesite.modules.mes.dao;
+
+import com.jeesite.common.dao.CrudDao;
+import com.jeesite.common.mybatis.annotation.MyBatisDao;
+import com.jeesite.modules.mes.entity.MesApprovalNode;
+
+/**
+ * 审批节点DAO接口
+ * @author hzd
+ * @version 2023-07-13
+ */
+@MyBatisDao
+public interface MesApprovalNodeDao extends CrudDao<MesApprovalNode> {
+	
+}

+ 20 - 0
src/main/java/com/jeesite/modules/mes/dao/MesBatchSnDao.java

@@ -0,0 +1,20 @@
+package com.jeesite.modules.mes.dao;
+
+import com.jeesite.common.dao.CrudDao;
+import com.jeesite.common.mybatis.annotation.MyBatisDao;
+import com.jeesite.modules.mes.entity.MesBatchSn;
+import com.jeesite.modules.mes.entity.MesDevice;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * 批次码记录表DAO接口
+ * @author mes
+ * @version 2024-04-12
+ */
+@MyBatisDao
+public interface MesBatchSnDao extends CrudDao<MesBatchSn> {
+    MesBatchSn findInfo(MesBatchSn mesBatchSn);
+
+
+    int incrementNums(@Param("batchSn") String batchSn, @Param("maxNums") int maxNums,@Param("userCode") String userCode);
+}

+ 15 - 0
src/main/java/com/jeesite/modules/mes/dao/MesCheckDao.java

@@ -0,0 +1,15 @@
+package com.jeesite.modules.mes.dao;
+
+import com.jeesite.common.dao.CrudDao;
+import com.jeesite.common.mybatis.annotation.MyBatisDao;
+import com.jeesite.modules.mes.entity.MesCheck;
+
+/**
+ * 质量检验类型DAO接口
+ * @author hzd
+ * @version 2023-07-13
+ */
+@MyBatisDao
+public interface MesCheckDao extends CrudDao<MesCheck> {
+	
+}

+ 15 - 0
src/main/java/com/jeesite/modules/mes/dao/MesCheckFormDao.java

@@ -0,0 +1,15 @@
+package com.jeesite.modules.mes.dao;
+
+import com.jeesite.common.dao.CrudDao;
+import com.jeesite.common.mybatis.annotation.MyBatisDao;
+import com.jeesite.modules.mes.entity.MesCheckForm;
+
+/**
+ * 质量检验类型DAO接口
+ * @author hzd
+ * @version 2023-07-13
+ */
+@MyBatisDao
+public interface MesCheckFormDao extends CrudDao<MesCheckForm> {
+	
+}

+ 15 - 0
src/main/java/com/jeesite/modules/mes/dao/MesCheckItemsDao.java

@@ -0,0 +1,15 @@
+package com.jeesite.modules.mes.dao;
+
+import com.jeesite.common.dao.CrudDao;
+import com.jeesite.common.mybatis.annotation.MyBatisDao;
+import com.jeesite.modules.mes.entity.MesCheckItems;
+
+/**
+ * 质量检验清单DAO接口
+ * @author hzd
+ * @version 2023-07-25
+ */
+@MyBatisDao
+public interface MesCheckItemsDao extends CrudDao<MesCheckItems> {
+	
+}

+ 15 - 0
src/main/java/com/jeesite/modules/mes/dao/MesCheckItemsFailDao.java

@@ -0,0 +1,15 @@
+package com.jeesite.modules.mes.dao;
+
+import com.jeesite.common.dao.CrudDao;
+import com.jeesite.common.mybatis.annotation.MyBatisDao;
+import com.jeesite.modules.mes.entity.MesCheckItemsFail;
+
+/**
+ * 质量检验清单DAO接口
+ * @author hzd
+ * @version 2023-07-25
+ */
+@MyBatisDao
+public interface MesCheckItemsFailDao extends CrudDao<MesCheckItemsFail> {
+	
+}

+ 15 - 0
src/main/java/com/jeesite/modules/mes/dao/MesCustomerDao.java

@@ -0,0 +1,15 @@
+package com.jeesite.modules.mes.dao;
+
+import com.jeesite.common.dao.CrudDao;
+import com.jeesite.common.mybatis.annotation.MyBatisDao;
+import com.jeesite.modules.mes.entity.MesCustomer;
+
+/**
+ * 客户表DAO接口
+ * @author mes
+ * @version 2025-01-16
+ */
+@MyBatisDao
+public interface MesCustomerDao extends CrudDao<MesCustomer> {
+	
+} 

+ 15 - 0
src/main/java/com/jeesite/modules/mes/dao/MesDeviceAlarmDao.java

@@ -0,0 +1,15 @@
+package com.jeesite.modules.mes.dao;
+
+import com.jeesite.common.dao.CrudDao;
+import com.jeesite.common.mybatis.annotation.MyBatisDao;
+import com.jeesite.modules.mes.entity.MesDeviceAlarm;
+
+/**
+ * 设备报警记录DAO接口
+ * @author system
+ * @version 2026-01-19
+ */
+@MyBatisDao
+public interface MesDeviceAlarmDao extends CrudDao<MesDeviceAlarm> {
+
+}

+ 15 - 0
src/main/java/com/jeesite/modules/mes/dao/MesDeviceCateDao.java

@@ -0,0 +1,15 @@
+package com.jeesite.modules.mes.dao;
+
+import com.jeesite.common.dao.CrudDao;
+import com.jeesite.common.mybatis.annotation.MyBatisDao;
+import com.jeesite.modules.mes.entity.MesDeviceCate;
+
+/**
+ * 设备分类DAO接口
+ * @author wst
+ * @version 2023-07-20
+ */
+@MyBatisDao
+public interface MesDeviceCateDao extends CrudDao<MesDeviceCate> {
+	
+}

+ 18 - 0
src/main/java/com/jeesite/modules/mes/dao/MesDeviceCheckDao.java

@@ -0,0 +1,18 @@
+package com.jeesite.modules.mes.dao;
+
+import com.jeesite.common.dao.CrudDao;
+import com.jeesite.common.mybatis.annotation.MyBatisDao;
+import com.jeesite.modules.mes.entity.MesDeviceCheck;
+
+import java.util.List;
+
+/**
+ * 设备检查项DAO接口
+ * @author wst
+ * @version 2023-06-21
+ */
+@MyBatisDao
+public interface MesDeviceCheckDao extends CrudDao<MesDeviceCheck> {
+    public List<MesDeviceCheck> findByList(MesDeviceCheck mesDeviceCheck);
+
+}

+ 15 - 0
src/main/java/com/jeesite/modules/mes/dao/MesDeviceClientDao.java

@@ -0,0 +1,15 @@
+package com.jeesite.modules.mes.dao;
+
+import com.jeesite.common.dao.CrudDao;
+import com.jeesite.common.mybatis.annotation.MyBatisDao;
+import com.jeesite.modules.mes.entity.MesDeviceClient;
+
+/**
+ * 工位设备信息记录DAO接口
+ * @author mes
+ * @version 2024-08-17
+ */
+@MyBatisDao
+public interface MesDeviceClientDao extends CrudDao<MesDeviceClient> {
+	
+}

+ 15 - 0
src/main/java/com/jeesite/modules/mes/dao/MesDeviceConsumableDao.java

@@ -0,0 +1,15 @@
+package com.jeesite.modules.mes.dao;
+
+import com.jeesite.common.dao.CrudDao;
+import com.jeesite.common.mybatis.annotation.MyBatisDao;
+import com.jeesite.modules.mes.entity.MesDeviceConsumable;
+
+/**
+ * 易耗品DAO接口
+ * @author mes
+ * @version 2023-06-19
+ */
+@MyBatisDao
+public interface MesDeviceConsumableDao extends CrudDao<MesDeviceConsumable> {
+	
+}

+ 15 - 0
src/main/java/com/jeesite/modules/mes/dao/MesDeviceConsumableRecordDao.java

@@ -0,0 +1,15 @@
+package com.jeesite.modules.mes.dao;
+
+import com.jeesite.common.dao.CrudDao;
+import com.jeesite.common.mybatis.annotation.MyBatisDao;
+import com.jeesite.modules.mes.entity.MesDeviceConsumableRecord;
+
+/**
+ * 设备维修记录DAO接口
+ * @author mes
+ * @version 2023-06-19
+ */
+@MyBatisDao
+public interface MesDeviceConsumableRecordDao extends CrudDao<MesDeviceConsumableRecord> {
+	
+}

+ 18 - 0
src/main/java/com/jeesite/modules/mes/dao/MesDeviceDao.java

@@ -0,0 +1,18 @@
+package com.jeesite.modules.mes.dao;
+
+import com.jeesite.common.dao.TreeDao;
+import com.jeesite.common.mybatis.annotation.MyBatisDao;
+import com.jeesite.modules.mes.entity.MesDevice;
+
+/**
+ * 设备DAO接口
+ * @author mes
+ * @version 2023-07-12
+ */
+@MyBatisDao
+public interface MesDeviceDao extends TreeDao<MesDevice> {
+    public MesDevice findByInfo(MesDevice mesDevice);
+    MesDevice findInfo(MesDevice mesDevice);
+
+
+}

+ 15 - 0
src/main/java/com/jeesite/modules/mes/dao/MesDeviceFaultCateDao.java

@@ -0,0 +1,15 @@
+package com.jeesite.modules.mes.dao;
+
+import com.jeesite.common.dao.CrudDao;
+import com.jeesite.common.mybatis.annotation.MyBatisDao;
+import com.jeesite.modules.mes.entity.MesDeviceFaultCate;
+
+/**
+ * 设备故障分类DAO接口
+ * @author sxl
+ * @version 2026-03-08
+ */
+@MyBatisDao
+public interface MesDeviceFaultCateDao extends CrudDao<MesDeviceFaultCate> {
+    MesDeviceFaultCate findByTitle(String title);
+}

+ 15 - 0
src/main/java/com/jeesite/modules/mes/dao/MesDeviceFaultDao.java

@@ -0,0 +1,15 @@
+package com.jeesite.modules.mes.dao;
+
+import com.jeesite.common.dao.CrudDao;
+import com.jeesite.common.mybatis.annotation.MyBatisDao;
+import com.jeesite.modules.mes.entity.MesDeviceFault;
+
+/**
+ * 设备故障记录DAO接口
+ * @author sxl
+ * @version 2026-03-08
+ */
+@MyBatisDao
+public interface MesDeviceFaultDao extends CrudDao<MesDeviceFault> {
+	
+}

+ 15 - 0
src/main/java/com/jeesite/modules/mes/dao/MesDeviceFaultMaintainDao.java

@@ -0,0 +1,15 @@
+package com.jeesite.modules.mes.dao;
+
+import com.jeesite.common.dao.CrudDao;
+import com.jeesite.common.mybatis.annotation.MyBatisDao;
+import com.jeesite.modules.mes.entity.MesDeviceFaultMaintain;
+
+/**
+ * 设备故障维护DAO接口
+ * @author sxl
+ * @version 2026-03-08
+ */
+@MyBatisDao
+public interface MesDeviceFaultMaintainDao extends CrudDao<MesDeviceFaultMaintain> {
+    MesDeviceFaultMaintain findByTitle(String title);
+}

+ 15 - 0
src/main/java/com/jeesite/modules/mes/dao/MesDeviceFormDao.java

@@ -0,0 +1,15 @@
+package com.jeesite.modules.mes.dao;
+
+import com.jeesite.common.dao.CrudDao;
+import com.jeesite.common.mybatis.annotation.MyBatisDao;
+import com.jeesite.modules.mes.entity.MesDeviceForm;
+
+/**
+ * 设备任务内容DAO接口
+ * @author wst
+ * @version 2023-06-21
+ */
+@MyBatisDao
+public interface MesDeviceFormDao extends CrudDao<MesDeviceForm> {
+	
+}

+ 15 - 0
src/main/java/com/jeesite/modules/mes/dao/MesDeviceLogDao.java

@@ -0,0 +1,15 @@
+package com.jeesite.modules.mes.dao;
+
+import com.jeesite.common.dao.CrudDao;
+import com.jeesite.common.mybatis.annotation.MyBatisDao;
+import com.jeesite.modules.mes.entity.MesDeviceLog;
+
+/**
+ * 设备修改记录DAO接口
+ * @author mes
+ * @version 2024-04-03
+ */
+@MyBatisDao
+public interface MesDeviceLogDao extends CrudDao<MesDeviceLog> {
+	
+}

+ 15 - 0
src/main/java/com/jeesite/modules/mes/dao/MesDeviceOeeDao.java

@@ -0,0 +1,15 @@
+package com.jeesite.modules.mes.dao;
+
+import com.jeesite.common.dao.CrudDao;
+import com.jeesite.common.mybatis.annotation.MyBatisDao;
+import com.jeesite.modules.mes.entity.MesDeviceOee;
+
+/**
+ * OEEDAO接口
+ * @author sxl
+ * @version 2026-03-08
+ */
+@MyBatisDao
+public interface MesDeviceOeeDao extends CrudDao<MesDeviceOee> {
+	
+}

+ 15 - 0
src/main/java/com/jeesite/modules/mes/dao/MesDevicePreventDao.java

@@ -0,0 +1,15 @@
+package com.jeesite.modules.mes.dao;
+
+import com.jeesite.common.dao.CrudDao;
+import com.jeesite.common.mybatis.annotation.MyBatisDao;
+import com.jeesite.modules.mes.entity.MesDevicePrevent;
+
+/**
+ * 预防性维修任务清单DAO接口
+ * @author hzd
+ * @version 2023-08-17
+ */
+@MyBatisDao
+public interface MesDevicePreventDao extends CrudDao<MesDevicePrevent> {
+	
+}

+ 15 - 0
src/main/java/com/jeesite/modules/mes/dao/MesDevicePreventFormDao.java

@@ -0,0 +1,15 @@
+package com.jeesite.modules.mes.dao;
+
+import com.jeesite.common.dao.CrudDao;
+import com.jeesite.common.mybatis.annotation.MyBatisDao;
+import com.jeesite.modules.mes.entity.MesDevicePreventForm;
+
+/**
+ * 预防性维修任务清单DAO接口
+ * @author hzd
+ * @version 2023-08-17
+ */
+@MyBatisDao
+public interface MesDevicePreventFormDao extends CrudDao<MesDevicePreventForm> {
+	
+}

+ 15 - 0
src/main/java/com/jeesite/modules/mes/dao/MesDevicePreventTaskDao.java

@@ -0,0 +1,15 @@
+package com.jeesite.modules.mes.dao;
+
+import com.jeesite.common.dao.CrudDao;
+import com.jeesite.common.mybatis.annotation.MyBatisDao;
+import com.jeesite.modules.mes.entity.MesDevicePreventTask;
+
+/**
+ * 预防性维修计划DAO接口
+ * @author hzd
+ * @version 2023-08-17
+ */
+@MyBatisDao
+public interface MesDevicePreventTaskDao extends CrudDao<MesDevicePreventTask> {
+	
+}

+ 20 - 0
src/main/java/com/jeesite/modules/mes/dao/MesDeviceRecordDao.java

@@ -0,0 +1,20 @@
+package com.jeesite.modules.mes.dao;
+
+import com.jeesite.common.dao.CrudDao;
+import com.jeesite.common.mybatis.annotation.MyBatisDao;
+import com.jeesite.modules.mes.entity.MesDeviceRecord;
+
+import java.util.List;
+
+
+/**
+ * 设备维修记录DAO接口
+ * @author mes
+ * @version 2023-06-19
+ */
+@MyBatisDao
+public interface MesDeviceRecordDao extends CrudDao<MesDeviceRecord> {
+    public List<MesDeviceRecord> formByCount(MesDeviceRecord mesDeviceRecord);
+    public MesDeviceRecord findByInfo(MesDeviceRecord mesDeviceRecord);
+
+}

+ 16 - 0
src/main/java/com/jeesite/modules/mes/dao/MesDeviceStateDao.java

@@ -0,0 +1,16 @@
+package com.jeesite.modules.mes.dao;
+
+import com.jeesite.common.dao.CrudDao;
+import com.jeesite.common.mybatis.annotation.MyBatisDao;
+import com.jeesite.modules.mes.entity.MesDeviceState;
+import com.jeesite.modules.mes.entity.MesProductRecord;
+
+/**
+ * 设备运行状态DAO接口
+ * @author hzd
+ * @version 2023-08-25
+ */
+@MyBatisDao
+public interface MesDeviceStateDao extends CrudDao<MesDeviceState> {
+    MesDeviceState findInfo(MesDeviceState mesDeviceState);
+}

+ 16 - 0
src/main/java/com/jeesite/modules/mes/dao/MesDeviceTaskDao.java

@@ -0,0 +1,16 @@
+package com.jeesite.modules.mes.dao;
+
+import com.jeesite.common.dao.CrudDao;
+import com.jeesite.common.mybatis.annotation.MyBatisDao;
+import com.jeesite.modules.mes.entity.MesDeviceTask;
+
+/**
+ * 设备计划DAO接口
+ * @author wst
+ * @version 2023-06-21
+ */
+@MyBatisDao
+public interface MesDeviceTaskDao extends CrudDao<MesDeviceTask> {
+    public long updateState(MesDeviceTask mesDeviceTask);
+
+}

+ 17 - 0
src/main/java/com/jeesite/modules/mes/dao/MesDeviceTaskFormDao.java

@@ -0,0 +1,17 @@
+package com.jeesite.modules.mes.dao;
+
+import com.jeesite.common.dao.CrudDao;
+import com.jeesite.common.mybatis.annotation.MyBatisDao;
+import com.jeesite.modules.mes.entity.MesDeviceTaskForm;
+import com.jeesite.modules.mes.entity.MesDeviceTaskUser;
+
+/**
+ * 设备计划任务内容关系表DAO接口
+ * @author wst
+ * @version 2023-06-21
+ */
+@MyBatisDao
+public interface MesDeviceTaskFormDao extends CrudDao<MesDeviceTaskForm> {
+    public long deleteBytaskId(MesDeviceTaskForm mesDeviceTaskForm);
+
+}

+ 16 - 0
src/main/java/com/jeesite/modules/mes/dao/MesDeviceTaskUserDao.java

@@ -0,0 +1,16 @@
+package com.jeesite.modules.mes.dao;
+
+import com.jeesite.common.dao.CrudDao;
+import com.jeesite.common.mybatis.annotation.MyBatisDao;
+import com.jeesite.modules.mes.entity.MesDeviceTaskUser;
+
+/**
+ * 设备计划检查人关系表DAO接口
+ * @author wst
+ * @version 2023-06-21
+ */
+@MyBatisDao
+public interface MesDeviceTaskUserDao extends CrudDao<MesDeviceTaskUser> {
+   public long deleteBytaskId(MesDeviceTaskUser mesDeviceTaskUser);
+
+}

+ 16 - 0
src/main/java/com/jeesite/modules/mes/dao/MesDeviceTimeDao.java

@@ -0,0 +1,16 @@
+package com.jeesite.modules.mes.dao;
+
+import com.jeesite.common.dao.CrudDao;
+import com.jeesite.common.mybatis.annotation.MyBatisDao;
+import com.jeesite.modules.mes.entity.MesDeviceTime;
+
+/**
+ * 工位生产时间DAO接口
+ * @author hzd
+ * @version 2023-08-22
+ */
+@MyBatisDao
+public interface MesDeviceTimeDao extends CrudDao<MesDeviceTime> {
+    MesDeviceTime getInfo(MesDeviceTime mesDeviceTime);
+
+}

+ 15 - 0
src/main/java/com/jeesite/modules/mes/dao/MesDeviceTimeInterceptDao.java

@@ -0,0 +1,15 @@
+package com.jeesite.modules.mes.dao;
+
+import com.jeesite.common.dao.CrudDao;
+import com.jeesite.common.mybatis.annotation.MyBatisDao;
+import com.jeesite.modules.mes.entity.MesDeviceTimeIntercept;
+
+/**
+ * 工位生产拦截DAO接口
+ * @author mes
+ * @version 2026-08-05
+ */
+@MyBatisDao
+public interface MesDeviceTimeInterceptDao extends CrudDao<MesDeviceTimeIntercept> {
+	
+}

+ 15 - 0
src/main/java/com/jeesite/modules/mes/dao/MesDeviceUrgencyDao.java

@@ -0,0 +1,15 @@
+package com.jeesite.modules.mes.dao;
+
+import com.jeesite.common.dao.CrudDao;
+import com.jeesite.common.mybatis.annotation.MyBatisDao;
+import com.jeesite.modules.mes.entity.MesDeviceUrgency;
+
+/**
+ * 紧急性维修记录DAO接口
+ * @author hzd
+ * @version 2023-08-15
+ */
+@MyBatisDao
+public interface MesDeviceUrgencyDao extends CrudDao<MesDeviceUrgency> {
+	
+}

+ 15 - 0
src/main/java/com/jeesite/modules/mes/dao/MesDocumentCateDao.java

@@ -0,0 +1,15 @@
+package com.jeesite.modules.mes.dao;
+
+import com.jeesite.common.dao.TreeDao;
+import com.jeesite.common.mybatis.annotation.MyBatisDao;
+import com.jeesite.modules.mes.entity.MesDocumentCate;
+
+/**
+ * 文档类型DAO接口
+ * @author hzd
+ * @version 2023-06-23
+ */
+@MyBatisDao
+public interface MesDocumentCateDao extends TreeDao<MesDocumentCate> {
+	
+}

+ 15 - 0
src/main/java/com/jeesite/modules/mes/dao/MesDocumentDao.java

@@ -0,0 +1,15 @@
+package com.jeesite.modules.mes.dao;
+
+import com.jeesite.common.dao.CrudDao;
+import com.jeesite.common.mybatis.annotation.MyBatisDao;
+import com.jeesite.modules.mes.entity.MesDocument;
+
+/**
+ * 文档DAO接口
+ * @author hzd
+ * @version 2023-06-23
+ */
+@MyBatisDao
+public interface MesDocumentDao extends CrudDao<MesDocument> {
+	
+}

+ 15 - 0
src/main/java/com/jeesite/modules/mes/dao/MesElectricTorqueDao.java

@@ -0,0 +1,15 @@
+package com.jeesite.modules.mes.dao;
+
+import com.jeesite.common.dao.CrudDao;
+import com.jeesite.common.mybatis.annotation.MyBatisDao;
+import com.jeesite.modules.mes.entity.MesElectricTorque;
+
+/**
+ * 电批过程参数DAO接口
+ * @author mes
+ * @version 2024-05-12
+ */
+@MyBatisDao
+public interface MesElectricTorqueDao extends CrudDao<MesElectricTorque> {
+	
+}

+ 15 - 0
src/main/java/com/jeesite/modules/mes/dao/MesElectricTorqueInfoDao.java

@@ -0,0 +1,15 @@
+package com.jeesite.modules.mes.dao;
+
+import com.jeesite.common.dao.CrudDao;
+import com.jeesite.common.mybatis.annotation.MyBatisDao;
+import com.jeesite.modules.mes.entity.MesElectricTorqueInfo;
+
+/**
+ * 电批扭力参数批次表DAO接口
+ * @author mes
+ * @version 2024-05-13
+ */
+@MyBatisDao
+public interface MesElectricTorqueInfoDao extends CrudDao<MesElectricTorqueInfo> {
+
+}

+ 15 - 0
src/main/java/com/jeesite/modules/mes/dao/MesGp12ItemsDao.java

@@ -0,0 +1,15 @@
+package com.jeesite.modules.mes.dao;
+
+import com.jeesite.common.dao.CrudDao;
+import com.jeesite.common.mybatis.annotation.MyBatisDao;
+import com.jeesite.modules.mes.entity.MesGp12Items;
+
+/**
+ * GP12检查项DAO接口
+ * @author hzd
+ * @version 2025-12-21
+ */
+@MyBatisDao
+public interface MesGp12ItemsDao extends CrudDao<MesGp12Items> {
+	
+}

+ 16 - 0
src/main/java/com/jeesite/modules/mes/dao/MesGroupDao.java

@@ -0,0 +1,16 @@
+package com.jeesite.modules.mes.dao;
+
+import com.jeesite.common.dao.CrudDao;
+import com.jeesite.common.mybatis.annotation.MyBatisDao;
+import com.jeesite.modules.mes.entity.MesGroup;
+import com.jeesite.modules.mes.entity.MesGroupOprno;
+
+/**
+ * 生产组DAO接口
+ * @author mes
+ * @version 2023-08-31
+ */
+@MyBatisDao
+public interface MesGroupDao extends CrudDao<MesGroup> {
+    MesGroup findInfo(MesGroup mesGroup);
+}

+ 16 - 0
src/main/java/com/jeesite/modules/mes/dao/MesGroupOprnoDao.java

@@ -0,0 +1,16 @@
+package com.jeesite.modules.mes.dao;
+
+import com.jeesite.common.dao.CrudDao;
+import com.jeesite.common.mybatis.annotation.MyBatisDao;
+import com.jeesite.modules.mes.entity.MesDeviceState;
+import com.jeesite.modules.mes.entity.MesGroupOprno;
+
+/**
+ * 生产组DAO接口
+ * @author mes
+ * @version 2023-08-31
+ */
+@MyBatisDao
+public interface MesGroupOprnoDao extends CrudDao<MesGroupOprno> {
+    MesGroupOprno findInfo(MesGroupOprno mesGroupOprno);
+}

+ 18 - 0
src/main/java/com/jeesite/modules/mes/dao/MesGroupUserDao.java

@@ -0,0 +1,18 @@
+package com.jeesite.modules.mes.dao;
+
+import com.jeesite.common.dao.CrudDao;
+import com.jeesite.common.mybatis.annotation.MyBatisDao;
+import com.jeesite.modules.mes.entity.MesGroupUser;
+
+import java.util.List;
+
+/**
+ * 生产组DAO接口
+ * @author mes
+ * @version 2023-08-31
+ */
+@MyBatisDao
+public interface MesGroupUserDao extends CrudDao<MesGroupUser> {
+	List<MesGroupUser> findUserAuth(MesGroupUser mesGroupUser);
+	MesGroupUser findInfo(MesGroupUser mesGroupUser);
+}

+ 15 - 0
src/main/java/com/jeesite/modules/mes/dao/MesHfDao.java

@@ -0,0 +1,15 @@
+package com.jeesite.modules.mes.dao;
+
+import com.jeesite.common.dao.CrudDao;
+import com.jeesite.common.mybatis.annotation.MyBatisDao;
+import com.jeesite.modules.mes.entity.MesHf;
+
+/**
+ * 焊缝漏点配置DAO接口
+ * @author hzd
+ * @version 2026-01-05
+ */
+@MyBatisDao
+public interface MesHfDao extends CrudDao<MesHf> {
+	MesHf findInfo(MesHf mesHf);
+}

+ 15 - 0
src/main/java/com/jeesite/modules/mes/dao/MesIconsDao.java

@@ -0,0 +1,15 @@
+package com.jeesite.modules.mes.dao;
+
+import com.jeesite.common.dao.CrudDao;
+import com.jeesite.common.mybatis.annotation.MyBatisDao;
+import com.jeesite.modules.mes.entity.MesIcons;
+
+/**
+ * 功能模块DAO接口
+ * @author hzd
+ * @version 2023-07-05
+ */
+@MyBatisDao
+public interface MesIconsDao extends CrudDao<MesIcons> {
+	
+}

+ 15 - 0
src/main/java/com/jeesite/modules/mes/dao/MesIpqcDao.java

@@ -0,0 +1,15 @@
+package com.jeesite.modules.mes.dao;
+
+import com.jeesite.common.dao.CrudDao;
+import com.jeesite.common.mybatis.annotation.MyBatisDao;
+import com.jeesite.modules.mes.entity.MesIpqc;
+
+/**
+ * 不合格评审单DAO接口
+ * @author hzd
+ * @version 2023-07-24
+ */
+@MyBatisDao
+public interface MesIpqcDao extends CrudDao<MesIpqc> {
+	
+}

+ 15 - 0
src/main/java/com/jeesite/modules/mes/dao/MesIqcDao.java

@@ -0,0 +1,15 @@
+package com.jeesite.modules.mes.dao;
+
+import com.jeesite.common.dao.CrudDao;
+import com.jeesite.common.mybatis.annotation.MyBatisDao;
+import com.jeesite.modules.mes.entity.MesIqc;
+
+/**
+ * IQC检测记录表DAO接口
+ * @author mes
+ * @version 2024-04-12
+ */
+@MyBatisDao
+public interface MesIqcDao extends CrudDao<MesIqc> {
+	
+}

+ 15 - 0
src/main/java/com/jeesite/modules/mes/dao/MesJbLogDao.java

@@ -0,0 +1,15 @@
+package com.jeesite.modules.mes.dao;
+
+import com.jeesite.common.dao.CrudDao;
+import com.jeesite.common.mybatis.annotation.MyBatisDao;
+import com.jeesite.modules.mes.entity.MesJbLog;
+
+/**
+ * 批次解绑记录表DAO接口
+ * @author mes
+ * @version 2024-04-12
+ */
+@MyBatisDao
+public interface MesJbLogDao extends CrudDao<MesJbLog> {
+	
+}

+ 16 - 0
src/main/java/com/jeesite/modules/mes/dao/MesLaserMaterialDao.java

@@ -0,0 +1,16 @@
+package com.jeesite.modules.mes.dao;
+
+import com.jeesite.common.dao.CrudDao;
+import com.jeesite.common.mybatis.annotation.MyBatisDao;
+import com.jeesite.modules.mes.entity.MesApp;
+import com.jeesite.modules.mes.entity.MesLaserMaterial;
+
+/**
+ * 镭雕物料绑定DAO接口
+ * @author hzd
+ * @version 2025-12-21
+ */
+@MyBatisDao
+public interface MesLaserMaterialDao extends CrudDao<MesLaserMaterial> {
+    MesLaserMaterial findInfo(MesLaserMaterial mesLaserMaterial);
+}

+ 16 - 0
src/main/java/com/jeesite/modules/mes/dao/MesLineDao.java

@@ -0,0 +1,16 @@
+package com.jeesite.modules.mes.dao;
+
+import com.jeesite.common.dao.CrudDao;
+import com.jeesite.common.mybatis.annotation.MyBatisDao;
+import com.jeesite.modules.mes.entity.MesApp;
+import com.jeesite.modules.mes.entity.MesLine;
+
+/**
+ * 生产线表DAO接口
+ * @author hzd
+ * @version 2023-06-16
+ */
+@MyBatisDao
+public interface MesLineDao extends CrudDao<MesLine> {
+    MesLine findInfo(MesLine mesLine);
+}

+ 23 - 0
src/main/java/com/jeesite/modules/mes/dao/MesLineProcessDao.java

@@ -0,0 +1,23 @@
+package com.jeesite.modules.mes.dao;
+
+import com.jeesite.common.dao.CrudDao;
+import com.jeesite.common.mybatis.annotation.MyBatisDao;
+import com.jeesite.modules.mes.entity.MesLine;
+import com.jeesite.modules.mes.entity.MesLineProcess;
+
+import java.util.List;
+
+/**
+ * 生成工序表DAO接口
+ * @author hzd
+ * @version 2023-06-18
+ */
+@MyBatisDao
+public interface MesLineProcessDao extends CrudDao<MesLineProcess> {
+
+    List<MesLineProcess> findListOrder(MesLineProcess mesLineProcess);
+
+    MesLineProcess findInfo(MesLineProcess mesLineProcess);
+
+    int updateStopByOprno(MesLineProcess mesLineProcess);
+}

+ 16 - 0
src/main/java/com/jeesite/modules/mes/dao/MesLineProcessMaterialDao.java

@@ -0,0 +1,16 @@
+package com.jeesite.modules.mes.dao;
+
+import com.jeesite.common.dao.CrudDao;
+import com.jeesite.common.mybatis.annotation.MyBatisDao;
+import com.jeesite.modules.mes.entity.MesLineProcess;
+import com.jeesite.modules.mes.entity.MesLineProcessMaterial;
+
+/**
+ * 生产工序物料表DAO接口
+ * @author mes
+ * @version 2024-04-02
+ */
+@MyBatisDao
+public interface MesLineProcessMaterialDao extends CrudDao<MesLineProcessMaterial> {
+    MesLineProcessMaterial findInfo(MesLineProcessMaterial mesLineProcessMaterial);
+}

+ 16 - 0
src/main/java/com/jeesite/modules/mes/dao/MesLineProcessUserDao.java

@@ -0,0 +1,16 @@
+package com.jeesite.modules.mes.dao;
+
+import com.jeesite.common.dao.CrudDao;
+import com.jeesite.common.mybatis.annotation.MyBatisDao;
+import com.jeesite.modules.mes.entity.MesLineProcessMaterial;
+import com.jeesite.modules.mes.entity.MesLineProcessUser;
+
+/**
+ * 生成工序表DAO接口
+ * @author hzd
+ * @version 2023-06-18
+ */
+@MyBatisDao
+public interface MesLineProcessUserDao extends CrudDao<MesLineProcessUser> {
+    MesLineProcessUser findInfo(MesLineProcessUser mesLineProcessUser);
+}

+ 15 - 0
src/main/java/com/jeesite/modules/mes/dao/MesLogDao.java

@@ -0,0 +1,15 @@
+package com.jeesite.modules.mes.dao;
+
+import com.jeesite.common.dao.CrudDao;
+import com.jeesite.common.mybatis.annotation.MyBatisDao;
+import com.jeesite.modules.mes.entity.MesLog;
+
+/**
+ * 生产日志DAO接口
+ * @author hzd
+ * @version 2023-08-22
+ */
+@MyBatisDao
+public interface MesLogDao extends CrudDao<MesLog> {
+	
+}

+ 15 - 0
src/main/java/com/jeesite/modules/mes/dao/MesLogUselessDao.java

@@ -0,0 +1,15 @@
+package com.jeesite.modules.mes.dao;
+
+import com.jeesite.common.dao.CrudDao;
+import com.jeesite.common.mybatis.annotation.MyBatisDao;
+import com.jeesite.modules.mes.entity.MesLogUseless;
+
+/**
+ * 心跳同步日志表DAO接口
+ * @author mes
+ * @version 2023-08-28
+ */
+@MyBatisDao
+public interface MesLogUselessDao extends CrudDao<MesLogUseless> {
+	
+}

+ 15 - 0
src/main/java/com/jeesite/modules/mes/dao/MesMaterialBfRecordDao.java

@@ -0,0 +1,15 @@
+package com.jeesite.modules.mes.dao;
+
+import com.jeesite.common.dao.CrudDao;
+import com.jeesite.common.mybatis.annotation.MyBatisDao;
+import com.jeesite.modules.mes.entity.MesMaterialBfRecord;
+
+/**
+ * 来料-报废记录表DAO接口
+ * @author mes
+ * @version 2024-04-10
+ */
+@MyBatisDao
+public interface MesMaterialBfRecordDao extends CrudDao<MesMaterialBfRecord> {
+	
+}

+ 15 - 0
src/main/java/com/jeesite/modules/mes/dao/MesMaterialBfRecordItemsDao.java

@@ -0,0 +1,15 @@
+package com.jeesite.modules.mes.dao;
+
+import com.jeesite.common.dao.CrudDao;
+import com.jeesite.common.mybatis.annotation.MyBatisDao;
+import com.jeesite.modules.mes.entity.MesMaterialBfRecordItems;
+
+/**
+ * 来料报废记录详细表DAO接口
+ * @author mes
+ * @version 2024-04-10
+ */
+@MyBatisDao
+public interface MesMaterialBfRecordItemsDao extends CrudDao<MesMaterialBfRecordItems> {
+	
+}

+ 15 - 0
src/main/java/com/jeesite/modules/mes/dao/MesMaterialBlpRecordDao.java

@@ -0,0 +1,15 @@
+package com.jeesite.modules.mes.dao;
+
+import com.jeesite.common.dao.CrudDao;
+import com.jeesite.common.mybatis.annotation.MyBatisDao;
+import com.jeesite.modules.mes.entity.MesMaterialBlpRecord;
+
+/**
+ * 来料不良品记录表DAO接口
+ * @author mes
+ * @version 2024-04-08
+ */
+@MyBatisDao
+public interface MesMaterialBlpRecordDao extends CrudDao<MesMaterialBlpRecord> {
+	
+}

+ 15 - 0
src/main/java/com/jeesite/modules/mes/dao/MesMaterialCheckDao.java

@@ -0,0 +1,15 @@
+package com.jeesite.modules.mes.dao;
+
+import com.jeesite.common.dao.CrudDao;
+import com.jeesite.common.mybatis.annotation.MyBatisDao;
+import com.jeesite.modules.mes.entity.MesMaterialCheck;
+
+/**
+ * 来料检查内容表DAO接口
+ * @author mes
+ * @version 2024-04-02
+ */
+@MyBatisDao
+public interface MesMaterialCheckDao extends CrudDao<MesMaterialCheck> {
+	
+}

+ 15 - 0
src/main/java/com/jeesite/modules/mes/dao/MesMaterialCheckItemsDao.java

@@ -0,0 +1,15 @@
+package com.jeesite.modules.mes.dao;
+
+import com.jeesite.common.dao.CrudDao;
+import com.jeesite.common.mybatis.annotation.MyBatisDao;
+import com.jeesite.modules.mes.entity.MesMaterialCheckItems;
+
+/**
+ * 物料检查内容DAO接口
+ * @author mes
+ * @version 2024-04-02
+ */
+@MyBatisDao
+public interface MesMaterialCheckItemsDao extends CrudDao<MesMaterialCheckItems> {
+	
+}

+ 17 - 0
src/main/java/com/jeesite/modules/mes/dao/MesMaterialCheckRecordDao.java

@@ -0,0 +1,17 @@
+package com.jeesite.modules.mes.dao;
+
+import com.jeesite.common.dao.CrudDao;
+import com.jeesite.common.mybatis.annotation.MyBatisDao;
+import com.jeesite.modules.mes.entity.MesDevice;
+import com.jeesite.modules.mes.entity.MesMaterialCheckRecord;
+
+/**
+ * 来料检查记录表DAO接口
+ * @author mes
+ * @version 2024-04-02
+ */
+@MyBatisDao
+public interface MesMaterialCheckRecordDao extends CrudDao<MesMaterialCheckRecord> {
+    MesMaterialCheckRecord findInfo(MesMaterialCheckRecord mesMaterialCheckRecord);
+
+}

+ 15 - 0
src/main/java/com/jeesite/modules/mes/dao/MesMaterialCheckRecordItemsDao.java

@@ -0,0 +1,15 @@
+package com.jeesite.modules.mes.dao;
+
+import com.jeesite.common.dao.CrudDao;
+import com.jeesite.common.mybatis.annotation.MyBatisDao;
+import com.jeesite.modules.mes.entity.MesMaterialCheckRecordItems;
+
+/**
+ * 来料检查记录详细表DAO接口
+ * @author mes
+ * @version 2024-04-02
+ */
+@MyBatisDao
+public interface MesMaterialCheckRecordItemsDao extends CrudDao<MesMaterialCheckRecordItems> {
+	
+}

+ 15 - 0
src/main/java/com/jeesite/modules/mes/dao/MesMaterialCkLogDao.java

@@ -0,0 +1,15 @@
+package com.jeesite.modules.mes.dao;
+
+import com.jeesite.common.dao.CrudDao;
+import com.jeesite.common.mybatis.annotation.MyBatisDao;
+import com.jeesite.modules.mes.entity.MesMaterialCkLog;
+
+/**
+ * 来料出库记录表DAO接口
+ * @author mes
+ * @version 2024-04-10
+ */
+@MyBatisDao
+public interface MesMaterialCkLogDao extends CrudDao<MesMaterialCkLog> {
+	
+}

+ 17 - 0
src/main/java/com/jeesite/modules/mes/dao/MesMaterialDao.java

@@ -0,0 +1,17 @@
+package com.jeesite.modules.mes.dao;
+
+import com.jeesite.common.dao.CrudDao;
+import com.jeesite.common.mybatis.annotation.MyBatisDao;
+import com.jeesite.modules.mes.entity.MesDevice;
+import com.jeesite.modules.mes.entity.MesMaterial;
+
+/**
+ * 物料表DAO接口
+ * @author mes
+ * @version 2024-03-29
+ */
+@MyBatisDao
+public interface MesMaterialDao extends CrudDao<MesMaterial> {
+    MesMaterial findInfo(MesMaterial mesMaterial);
+
+}

+ 16 - 0
src/main/java/com/jeesite/modules/mes/dao/MesMaterialKcLogDao.java

@@ -0,0 +1,16 @@
+package com.jeesite.modules.mes.dao;
+
+import com.jeesite.common.dao.CrudDao;
+import com.jeesite.common.mybatis.annotation.MyBatisDao;
+import com.jeesite.modules.mes.entity.MesMaterial;
+import com.jeesite.modules.mes.entity.MesMaterialKcLog;
+
+/**
+ * 来料库存记录表DAO接口
+ * @author mes
+ * @version 2024-04-10
+ */
+@MyBatisDao
+public interface MesMaterialKcLogDao extends CrudDao<MesMaterialKcLog> {
+    MesMaterialKcLog findInfo(MesMaterialKcLog mesMaterialKcLog);
+}

+ 15 - 0
src/main/java/com/jeesite/modules/mes/dao/MesMaterialKwDao.java

@@ -0,0 +1,15 @@
+package com.jeesite.modules.mes.dao;
+
+import com.jeesite.common.dao.CrudDao;
+import com.jeesite.common.mybatis.annotation.MyBatisDao;
+import com.jeesite.modules.mes.entity.MesMaterialKw;
+
+/**
+ * 来料检查物料库位表DAO接口
+ * @author mes
+ * @version 2024-04-10
+ */
+@MyBatisDao
+public interface MesMaterialKwDao extends CrudDao<MesMaterialKw> {
+	
+}

+ 17 - 0
src/main/java/com/jeesite/modules/mes/dao/MesMaterialLlRecordDao.java

@@ -0,0 +1,17 @@
+package com.jeesite.modules.mes.dao;
+
+import com.jeesite.common.dao.CrudDao;
+import com.jeesite.common.mybatis.annotation.MyBatisDao;
+import com.jeesite.modules.mes.entity.MesDevice;
+import com.jeesite.modules.mes.entity.MesMaterialLlRecord;
+
+/**
+ * 领料记录表DAO接口
+ * @author mes
+ * @version 2024-04-09
+ */
+@MyBatisDao
+public interface MesMaterialLlRecordDao extends CrudDao<MesMaterialLlRecord> {
+    MesMaterialLlRecord findInfo(MesMaterialLlRecord mesMaterialLlRecord);
+
+}

+ 15 - 0
src/main/java/com/jeesite/modules/mes/dao/MesMaterialLlRecordItemsDao.java

@@ -0,0 +1,15 @@
+package com.jeesite.modules.mes.dao;
+
+import com.jeesite.common.dao.CrudDao;
+import com.jeesite.common.mybatis.annotation.MyBatisDao;
+import com.jeesite.modules.mes.entity.MesMaterialLlRecordItems;
+
+/**
+ * 领料单详细表DAO接口
+ * @author mes
+ * @version 2024-04-09
+ */
+@MyBatisDao
+public interface MesMaterialLlRecordItemsDao extends CrudDao<MesMaterialLlRecordItems> {
+	
+}

+ 16 - 0
src/main/java/com/jeesite/modules/mes/dao/MesMaterialPrebindDao.java

@@ -0,0 +1,16 @@
+package com.jeesite.modules.mes.dao;
+
+import com.jeesite.common.dao.CrudDao;
+import com.jeesite.common.mybatis.annotation.MyBatisDao;
+import com.jeesite.modules.mes.entity.MesMaterial;
+import com.jeesite.modules.mes.entity.MesMaterialPrebind;
+
+/**
+ * 工位绑定物料批次DAO接口
+ * @author hzd
+ * @version 2024-05-11
+ */
+@MyBatisDao
+public interface MesMaterialPrebindDao extends CrudDao<MesMaterialPrebind> {
+    MesMaterialPrebind findInfo(MesMaterialPrebind mesMaterialPrebind);
+}

+ 18 - 0
src/main/java/com/jeesite/modules/mes/dao/MesMaterialReportDao.java

@@ -0,0 +1,18 @@
+package com.jeesite.modules.mes.dao;
+
+import com.jeesite.common.dao.CrudDao;
+import com.jeesite.common.mybatis.annotation.MyBatisDao;
+import com.jeesite.modules.mes.entity.MesMaterialReport;
+import com.jeesite.modules.mes.entity.MesProduct;
+
+/**
+ * 来料报检DAO接口
+ * @author mes
+ * @version 2024-05-30
+ */
+@MyBatisDao
+public interface MesMaterialReportDao extends CrudDao<MesMaterialReport> {
+
+    MesMaterialReport selectById(MesMaterialReport mesMaterialReport);
+    MesMaterialReport findInfo(MesMaterialReport mesMaterialReport);
+}

+ 15 - 0
src/main/java/com/jeesite/modules/mes/dao/MesMaterialRkLogDao.java

@@ -0,0 +1,15 @@
+package com.jeesite.modules.mes.dao;
+
+import com.jeesite.common.dao.CrudDao;
+import com.jeesite.common.mybatis.annotation.MyBatisDao;
+import com.jeesite.modules.mes.entity.MesMaterialRkLog;
+
+/**
+ * 来料入库单入库记录表DAO接口
+ * @author mes
+ * @version 2024-04-11
+ */
+@MyBatisDao
+public interface MesMaterialRkLogDao extends CrudDao<MesMaterialRkLog> {
+	
+}

+ 15 - 0
src/main/java/com/jeesite/modules/mes/dao/MesMaterialRkRecordDao.java

@@ -0,0 +1,15 @@
+package com.jeesite.modules.mes.dao;
+
+import com.jeesite.common.dao.CrudDao;
+import com.jeesite.common.mybatis.annotation.MyBatisDao;
+import com.jeesite.modules.mes.entity.MesMaterialRkRecord;
+
+/**
+ * 来料入库单记录表DAO接口
+ * @author mes
+ * @version 2024-04-08
+ */
+@MyBatisDao
+public interface MesMaterialRkRecordDao extends CrudDao<MesMaterialRkRecord> {
+	
+}

+ 15 - 0
src/main/java/com/jeesite/modules/mes/dao/MesMaterialRkRecordItemsDao.java

@@ -0,0 +1,15 @@
+package com.jeesite.modules.mes.dao;
+
+import com.jeesite.common.dao.CrudDao;
+import com.jeesite.common.mybatis.annotation.MyBatisDao;
+import com.jeesite.modules.mes.entity.MesMaterialRkRecordItems;
+
+/**
+ * 来料入库单详细表DAO接口
+ * @author mes
+ * @version 2024-04-08
+ */
+@MyBatisDao
+public interface MesMaterialRkRecordItemsDao extends CrudDao<MesMaterialRkRecordItems> {
+	
+}

+ 15 - 0
src/main/java/com/jeesite/modules/mes/dao/MesMaterialThRecordDao.java

@@ -0,0 +1,15 @@
+package com.jeesite.modules.mes.dao;
+
+import com.jeesite.common.dao.CrudDao;
+import com.jeesite.common.mybatis.annotation.MyBatisDao;
+import com.jeesite.modules.mes.entity.MesMaterialThRecord;
+
+/**
+ * 来料检查退货记录表DAO接口
+ * @author mes
+ * @version 2024-04-09
+ */
+@MyBatisDao
+public interface MesMaterialThRecordDao extends CrudDao<MesMaterialThRecord> {
+	
+}

+ 15 - 0
src/main/java/com/jeesite/modules/mes/dao/MesMaterialThRecordItemsDao.java

@@ -0,0 +1,15 @@
+package com.jeesite.modules.mes.dao;
+
+import com.jeesite.common.dao.CrudDao;
+import com.jeesite.common.mybatis.annotation.MyBatisDao;
+import com.jeesite.modules.mes.entity.MesMaterialThRecordItems;
+
+/**
+ * 来料检查不良品退货单详细表DAO接口
+ * @author mes
+ * @version 2024-04-09
+ */
+@MyBatisDao
+public interface MesMaterialThRecordItemsDao extends CrudDao<MesMaterialThRecordItems> {
+	
+}

+ 15 - 0
src/main/java/com/jeesite/modules/mes/dao/MesNgDao.java

@@ -0,0 +1,15 @@
+package com.jeesite.modules.mes.dao;
+
+import com.jeesite.common.dao.CrudDao;
+import com.jeesite.common.mybatis.annotation.MyBatisDao;
+import com.jeesite.modules.mes.entity.MesNg;
+
+/**
+ * ng记录表DAO接口
+ * @author mes
+ * @version 2024-01-24
+ */
+@MyBatisDao
+public interface MesNgDao extends CrudDao<MesNg> {
+	
+}

+ 0 - 0
src/main/java/com/jeesite/modules/mes/dao/MesPeriodicMaintenanceDao.java


Some files were not shown because too many files changed in this diff