.vscode/launch.json
@@ -6,6 +6,20 @@ "configurations": [ { "type": "java", "name": "ModuleA", "request": "launch", "mainClass": "com.example.springboot.component.ModuleA", "projectName": "springboot-vue3" }, { "type": "java", "name": "ModuleB", "request": "launch", "mainClass": "com.example.springboot.component.ModuleB", "projectName": "springboot-vue3" }, { "type": "java", "name": "MyGenerator", "request": "launch", "mainClass": "MyGenerator", CanadaMes-ui/src/lang/locales/en-US.json
@@ -1,6 +1,6 @@ { "Clear":"Clear", "ip":"192.168.10.21", "ip":"localhost", "systemTitle": "Login System", "usernamePlaceholder": "Please enter username", "passwordPlaceholder": "Please enter password", @@ -293,7 +293,7 @@ "Space (Pieces)":"Space (Pieces)", "This glass is already in the cage":"This glass is already in the cage", "Enter the Order No":"Enter the Order No", "OrderInfo":"OrderInfo", "Order Info":"Order Info", "Query":"Query", "permission update":"permission update", "query was successful":"query was successful", @@ -361,6 +361,7 @@ "Please enter the correct glassID":"Please enter the correct glassID", "Switch":"Switch", "This frame has glass that is currently outing":"This frame has glass that is currently outing", "The slot is disabled":"The slot is disabled", "ServoManualone": { "A01 所在格子": "A01 Current Grid", "数量": "Quantity", CanadaMes-ui/src/lang/locales/zh-CN.json
@@ -1,6 +1,6 @@ { "Clear":"清除", "ip":"192.168.10.21", "ip":"localhost", "systemTitle": "登录系统", "usernamePlaceholder": "请输入用户名", "passwordPlaceholder": "请输入密码", @@ -284,7 +284,7 @@ "Space (Pieces)": "空间(片数)", "This glass is already in the cage": "笼子里已有此玻璃", "Enter the Order No": "请输入订单id", "OrderInfo": "订单信息", "Order Info": "订单信息", "Query": "查询", "permission update": "权限编辑", "query was successful": "查询成功", @@ -354,6 +354,7 @@ "Please enter the correct glassID":"请输入正确的玻璃ID", "Switch":"切换", "This frame has glass that is currently outing":"此铝框有正在出片的玻璃", "The slot is disabled":"格子被禁用", "langparameter": { "conveyor Velocity(Auto FAST)": "D01-D06 皮带输送自动快速", "conveyor Velocity(Auto SLOW)": "D01-D06 皮带输送自动慢速", CanadaMes-ui/src/views/home/index.vue
@@ -256,7 +256,7 @@ :class="ManuallyInfeedGlass == true ? 'hide' : ''"> {{ $t('Manually Infeed Glass') }}</el-button> <el-button type="primary" @click="showform2()" :disabled="OrderInfo" :class="OrderInfo == true ? 'hide' : ''">{{ $t('OrderInfo') :class="OrderInfo == true ? 'hide' : ''">{{ $t('Order Info') }}</el-button> <el-button type="primary" @click="showform6()" :disabled="OutingQueue" :class="OutingQueue == true ? 'hide' : ''"> @@ -588,7 +588,7 @@ </el-dialog> <el-dialog :visible.sync="dialogFormVisible4" :title="$t('OrderInfo')" top="5vh"> <el-dialog :visible.sync="dialogFormVisible4" :title="$t('Order Info')" top="5vh"> <el-input style="width:15%;" :placeholder="$t('Enter the Order No')" v-model="orderid"></el-input> <el-button type="primary" @click="selectglassinfo()">{{ $t('Query') }}</el-button> <el-table :data="GlassInfo.slice((currentPage - 1) * pagesize, currentPage * pagesize) @@ -743,17 +743,9 @@ <el-button type="primary" @click="isAllowQueueState()" :disabled="!this.isAllowReordering">{{ this.isAllowQueue == true ? $t('Stop') : $t('Start') }}</el-button> <!-- {{ $t('Sorting State') }}: {{ this.isAllowReordering == true ? $t('Not Allow') : $t('Allow') }} <el-button type="primary" @click="isAllowReorderings()" :disabled="this.isAllowQueue">{{ this.isAllowReordering == true ? $t('Allow') : $t('Not Allow') }}</el-button> --> <!-- <el-input style="width:15%;" :placeholder="$t('Enter the Frame No')" v-model="framebarcode"></el-input> --> <el-button type="primary" @click="showform7()">{{ $t('Add') }}</el-button> <label style="background-color:yellow;font-size: 23px;" for=""> {{ isQueueWarning == true ? $t('The cage is disabled') : "" }} {{ isQueueWarning == true ? $t('The slot is disabled') : "" }} </label> <div style="display:flex;"> <div style="width:70%;"> @@ -1025,7 +1017,7 @@ const specialChars = /[^\w\s]/g; this.CurrrentGlassId = obj.CurrrentGlassId[0].replace(specialChars, ""); } //查询当前铝框信息 this.CurrentFrame = obj.CurrentFrame; @@ -1051,7 +1043,6 @@ this.InsertQueueGlass(1); } } // if (obj.alarmmg[0].length > 0) { @@ -1124,8 +1115,9 @@ if (obj.form3 != null && obj.form3 != "" && obj.state[0] == 0) { this.loadglassheight1 = 70; if (this.form5.glassId != obj.form3[0].glassId) { if (this.form5.glassId != obj.form3[0].glassId&&this.ManuallyInfeedGlass==false) { this.showform3(); } this.form5 = obj.form3[0]; this.glassid1 = ""; @@ -1516,6 +1508,7 @@ if (res.data.message == 200) { this.$message.success(this.$t('Operation successful')); this.dialogFormVisible = false; this.glassid=""; } else if (res.data.message == 400) { this.$message.error(this.$t('The glass size is not within the range')); springboot-vue3/.idea/dbnavigator.xml
New file @@ -0,0 +1,413 @@ <?xml version="1.0" encoding="UTF-8"?> <project version="4"> <component name="DBNavigator.Project.DDLFileAttachmentManager"> <mappings /> <preferences /> </component> <component name="DBNavigator.Project.DatabaseFileManager"> <open-files /> </component> <component name="DBNavigator.Project.Settings"> <connections /> <browser-settings> <general> <display-mode value="TABBED" /> <navigation-history-size value="100" /> <show-object-details value="false" /> </general> <filters> <object-type-filter> <object-type name="SCHEMA" enabled="true" /> <object-type name="USER" enabled="true" /> <object-type name="ROLE" enabled="true" /> <object-type name="PRIVILEGE" enabled="true" /> <object-type name="CHARSET" enabled="true" /> <object-type name="TABLE" enabled="true" /> <object-type name="VIEW" enabled="true" /> <object-type name="MATERIALIZED_VIEW" enabled="true" /> <object-type name="NESTED_TABLE" enabled="true" /> <object-type name="COLUMN" enabled="true" /> <object-type name="INDEX" enabled="true" /> <object-type name="CONSTRAINT" enabled="true" /> <object-type name="DATASET_TRIGGER" enabled="true" /> <object-type name="DATABASE_TRIGGER" enabled="true" /> <object-type name="SYNONYM" enabled="true" /> <object-type name="SEQUENCE" enabled="true" /> <object-type name="PROCEDURE" enabled="true" /> <object-type name="FUNCTION" enabled="true" /> <object-type name="PACKAGE" enabled="true" /> <object-type name="TYPE" enabled="true" /> <object-type name="TYPE_ATTRIBUTE" enabled="true" /> <object-type name="ARGUMENT" enabled="true" /> <object-type name="DIMENSION" enabled="true" /> <object-type name="CLUSTER" enabled="true" /> <object-type name="DBLINK" enabled="true" /> </object-type-filter> </filters> <sorting> <object-type name="COLUMN" sorting-type="NAME" /> <object-type name="FUNCTION" sorting-type="NAME" /> <object-type name="PROCEDURE" sorting-type="NAME" /> <object-type name="ARGUMENT" sorting-type="POSITION" /> <object-type name="TYPE ATTRIBUTE" sorting-type="POSITION" /> </sorting> <default-editors> <object-type name="VIEW" editor-type="SELECTION" /> <object-type name="PACKAGE" editor-type="SELECTION" /> <object-type name="TYPE" editor-type="SELECTION" /> </default-editors> </browser-settings> <navigation-settings> <lookup-filters> <lookup-objects> <object-type name="SCHEMA" enabled="true" /> <object-type name="USER" enabled="false" /> <object-type name="ROLE" enabled="false" /> <object-type name="PRIVILEGE" enabled="false" /> <object-type name="CHARSET" enabled="false" /> <object-type name="TABLE" enabled="true" /> <object-type name="VIEW" enabled="true" /> <object-type name="MATERIALIZED VIEW" enabled="true" /> <object-type name="INDEX" enabled="true" /> <object-type name="CONSTRAINT" enabled="true" /> <object-type name="DATASET TRIGGER" enabled="true" /> <object-type name="DATABASE TRIGGER" enabled="true" /> <object-type name="SYNONYM" enabled="false" /> <object-type name="SEQUENCE" enabled="true" /> <object-type name="PROCEDURE" enabled="true" /> <object-type name="FUNCTION" enabled="true" /> <object-type name="PACKAGE" enabled="true" /> <object-type name="TYPE" enabled="true" /> <object-type name="DIMENSION" enabled="false" /> <object-type name="CLUSTER" enabled="false" /> <object-type name="DBLINK" enabled="true" /> </lookup-objects> <force-database-load value="false" /> <prompt-connection-selection value="true" /> <prompt-schema-selection value="true" /> </lookup-filters> </navigation-settings> <dataset-grid-settings> <general> <enable-zooming value="true" /> <enable-column-tooltip value="true" /> </general> <sorting> <nulls-first value="true" /> <max-sorting-columns value="4" /> </sorting> <audit-columns> <column-names value="" /> <visible value="true" /> <editable value="false" /> </audit-columns> </dataset-grid-settings> <dataset-editor-settings> <text-editor-popup> <active value="false" /> <active-if-empty value="false" /> <data-length-threshold value="100" /> <popup-delay value="1000" /> </text-editor-popup> <values-actions-popup> <show-popup-button value="true" /> <element-count-threshold value="1000" /> <data-length-threshold value="250" /> </values-actions-popup> <general> <fetch-block-size value="100" /> <fetch-timeout value="30" /> <trim-whitespaces value="true" /> <convert-empty-strings-to-null value="true" /> <select-content-on-cell-edit value="true" /> <large-value-preview-active value="true" /> </general> <filters> <prompt-filter-dialog value="true" /> <default-filter-type value="BASIC" /> </filters> <qualified-text-editor text-length-threshold="300"> <content-types> <content-type name="Text" enabled="true" /> <content-type name="Properties" enabled="true" /> <content-type name="XML" enabled="true" /> <content-type name="DTD" enabled="true" /> <content-type name="HTML" enabled="true" /> <content-type name="XHTML" enabled="true" /> <content-type name="CSS" enabled="true" /> <content-type name="Java" enabled="true" /> <content-type name="SQL" enabled="true" /> <content-type name="PL/SQL" enabled="true" /> <content-type name="JavaScript" enabled="true" /> <content-type name="JSON" enabled="true" /> <content-type name="JSON5" enabled="true" /> <content-type name="JSP" enabled="true" /> <content-type name="JSPx" enabled="true" /> <content-type name="Groovy" enabled="true" /> <content-type name="FTL" enabled="true" /> <content-type name="GSP" enabled="true" /> <content-type name="VTL" enabled="true" /> <content-type name="YAML" enabled="true" /> <content-type name="Manifest" enabled="true" /> </content-types> </qualified-text-editor> <record-navigation> <navigation-target value="VIEWER" /> </record-navigation> </dataset-editor-settings> <code-editor-settings> <general> <show-object-navigation-gutter value="false" /> <show-spec-declaration-navigation-gutter value="true" /> <enable-spellchecking value="true" /> <enable-reference-spellchecking value="false" /> </general> <confirmations> <save-changes value="false" /> <revert-changes value="true" /> <exit-on-changes value="ASK" /> </confirmations> </code-editor-settings> <code-completion-settings> <filters> <basic-filter> <filter-element type="RESERVED_WORD" id="keyword" selected="true" /> <filter-element type="RESERVED_WORD" id="function" selected="true" /> <filter-element type="RESERVED_WORD" id="parameter" selected="true" /> <filter-element type="RESERVED_WORD" id="datatype" selected="true" /> <filter-element type="RESERVED_WORD" id="exception" selected="true" /> <filter-element type="OBJECT" id="schema" selected="true" /> <filter-element type="OBJECT" id="role" selected="true" /> <filter-element type="OBJECT" id="user" selected="true" /> <filter-element type="OBJECT" id="privilege" selected="true" /> <user-schema> <filter-element type="OBJECT" id="table" selected="true" /> <filter-element type="OBJECT" id="view" selected="true" /> <filter-element type="OBJECT" id="materialized view" selected="true" /> <filter-element type="OBJECT" id="index" selected="true" /> <filter-element type="OBJECT" id="constraint" selected="true" /> <filter-element type="OBJECT" id="trigger" selected="true" /> <filter-element type="OBJECT" id="synonym" selected="false" /> <filter-element type="OBJECT" id="sequence" selected="true" /> <filter-element type="OBJECT" id="procedure" selected="true" /> <filter-element type="OBJECT" id="function" selected="true" /> <filter-element type="OBJECT" id="package" selected="true" /> <filter-element type="OBJECT" id="type" selected="true" /> <filter-element type="OBJECT" id="dimension" selected="true" /> <filter-element type="OBJECT" id="cluster" selected="true" /> <filter-element type="OBJECT" id="dblink" selected="true" /> </user-schema> <public-schema> <filter-element type="OBJECT" id="table" selected="false" /> <filter-element type="OBJECT" id="view" selected="false" /> <filter-element type="OBJECT" id="materialized view" selected="false" /> <filter-element type="OBJECT" id="index" selected="false" /> <filter-element type="OBJECT" id="constraint" selected="false" /> <filter-element type="OBJECT" id="trigger" selected="false" /> <filter-element type="OBJECT" id="synonym" selected="false" /> <filter-element type="OBJECT" id="sequence" selected="false" /> <filter-element type="OBJECT" id="procedure" selected="false" /> <filter-element type="OBJECT" id="function" selected="false" /> <filter-element type="OBJECT" id="package" selected="false" /> <filter-element type="OBJECT" id="type" selected="false" /> <filter-element type="OBJECT" id="dimension" selected="false" /> <filter-element type="OBJECT" id="cluster" selected="false" /> <filter-element type="OBJECT" id="dblink" selected="false" /> </public-schema> <any-schema> <filter-element type="OBJECT" id="table" selected="true" /> <filter-element type="OBJECT" id="view" selected="true" /> <filter-element type="OBJECT" id="materialized view" selected="true" /> <filter-element type="OBJECT" id="index" selected="true" /> <filter-element type="OBJECT" id="constraint" selected="true" /> <filter-element type="OBJECT" id="trigger" selected="true" /> <filter-element type="OBJECT" id="synonym" selected="true" /> <filter-element type="OBJECT" id="sequence" selected="true" /> <filter-element type="OBJECT" id="procedure" selected="true" /> <filter-element type="OBJECT" id="function" selected="true" /> <filter-element type="OBJECT" id="package" selected="true" /> <filter-element type="OBJECT" id="type" selected="true" /> <filter-element type="OBJECT" id="dimension" selected="true" /> <filter-element type="OBJECT" id="cluster" selected="true" /> <filter-element type="OBJECT" id="dblink" selected="true" /> </any-schema> </basic-filter> <extended-filter> <filter-element type="RESERVED_WORD" id="keyword" selected="true" /> <filter-element type="RESERVED_WORD" id="function" selected="true" /> <filter-element type="RESERVED_WORD" id="parameter" selected="true" /> <filter-element type="RESERVED_WORD" id="datatype" selected="true" /> <filter-element type="RESERVED_WORD" id="exception" selected="true" /> <filter-element type="OBJECT" id="schema" selected="true" /> <filter-element type="OBJECT" id="user" selected="true" /> <filter-element type="OBJECT" id="role" selected="true" /> <filter-element type="OBJECT" id="privilege" selected="true" /> <user-schema> <filter-element type="OBJECT" id="table" selected="true" /> <filter-element type="OBJECT" id="view" selected="true" /> <filter-element type="OBJECT" id="materialized view" selected="true" /> <filter-element type="OBJECT" id="index" selected="true" /> <filter-element type="OBJECT" id="constraint" selected="true" /> <filter-element type="OBJECT" id="trigger" selected="true" /> <filter-element type="OBJECT" id="synonym" selected="true" /> <filter-element type="OBJECT" id="sequence" selected="true" /> <filter-element type="OBJECT" id="procedure" selected="true" /> <filter-element type="OBJECT" id="function" selected="true" /> <filter-element type="OBJECT" id="package" selected="true" /> <filter-element type="OBJECT" id="type" selected="true" /> <filter-element type="OBJECT" id="dimension" selected="true" /> <filter-element type="OBJECT" id="cluster" selected="true" /> <filter-element type="OBJECT" id="dblink" selected="true" /> </user-schema> <public-schema> <filter-element type="OBJECT" id="table" selected="true" /> <filter-element type="OBJECT" id="view" selected="true" /> <filter-element type="OBJECT" id="materialized view" selected="true" /> <filter-element type="OBJECT" id="index" selected="true" /> <filter-element type="OBJECT" id="constraint" selected="true" /> <filter-element type="OBJECT" id="trigger" selected="true" /> <filter-element type="OBJECT" id="synonym" selected="true" /> <filter-element type="OBJECT" id="sequence" selected="true" /> <filter-element type="OBJECT" id="procedure" selected="true" /> <filter-element type="OBJECT" id="function" selected="true" /> <filter-element type="OBJECT" id="package" selected="true" /> <filter-element type="OBJECT" id="type" selected="true" /> <filter-element type="OBJECT" id="dimension" selected="true" /> <filter-element type="OBJECT" id="cluster" selected="true" /> <filter-element type="OBJECT" id="dblink" selected="true" /> </public-schema> <any-schema> <filter-element type="OBJECT" id="table" selected="true" /> <filter-element type="OBJECT" id="view" selected="true" /> <filter-element type="OBJECT" id="materialized view" selected="true" /> <filter-element type="OBJECT" id="index" selected="true" /> <filter-element type="OBJECT" id="constraint" selected="true" /> <filter-element type="OBJECT" id="trigger" selected="true" /> <filter-element type="OBJECT" id="synonym" selected="true" /> <filter-element type="OBJECT" id="sequence" selected="true" /> <filter-element type="OBJECT" id="procedure" selected="true" /> <filter-element type="OBJECT" id="function" selected="true" /> <filter-element type="OBJECT" id="package" selected="true" /> <filter-element type="OBJECT" id="type" selected="true" /> <filter-element type="OBJECT" id="dimension" selected="true" /> <filter-element type="OBJECT" id="cluster" selected="true" /> <filter-element type="OBJECT" id="dblink" selected="true" /> </any-schema> </extended-filter> </filters> <sorting enabled="true"> <sorting-element type="RESERVED_WORD" id="keyword" /> <sorting-element type="RESERVED_WORD" id="datatype" /> <sorting-element type="OBJECT" id="column" /> <sorting-element type="OBJECT" id="table" /> <sorting-element type="OBJECT" id="view" /> <sorting-element type="OBJECT" id="materialized view" /> <sorting-element type="OBJECT" id="index" /> <sorting-element type="OBJECT" id="constraint" /> <sorting-element type="OBJECT" id="trigger" /> <sorting-element type="OBJECT" id="synonym" /> <sorting-element type="OBJECT" id="sequence" /> <sorting-element type="OBJECT" id="procedure" /> <sorting-element type="OBJECT" id="function" /> <sorting-element type="OBJECT" id="package" /> <sorting-element type="OBJECT" id="type" /> <sorting-element type="OBJECT" id="dimension" /> <sorting-element type="OBJECT" id="cluster" /> <sorting-element type="OBJECT" id="dblink" /> <sorting-element type="OBJECT" id="schema" /> <sorting-element type="OBJECT" id="role" /> <sorting-element type="OBJECT" id="user" /> <sorting-element type="RESERVED_WORD" id="function" /> <sorting-element type="RESERVED_WORD" id="parameter" /> </sorting> <format> <enforce-code-style-case value="true" /> </format> </code-completion-settings> <execution-engine-settings> <statement-execution> <fetch-block-size value="100" /> <execution-timeout value="20" /> <debug-execution-timeout value="600" /> <focus-result value="false" /> <prompt-execution value="false" /> </statement-execution> <script-execution> <command-line-interfaces /> <execution-timeout value="300" /> </script-execution> <method-execution> <execution-timeout value="30" /> <debug-execution-timeout value="600" /> <parameter-history-size value="10" /> </method-execution> </execution-engine-settings> <operation-settings> <transactions> <uncommitted-changes> <on-project-close value="ASK" /> <on-disconnect value="ASK" /> <on-autocommit-toggle value="ASK" /> </uncommitted-changes> <multiple-uncommitted-changes> <on-commit value="ASK" /> <on-rollback value="ASK" /> </multiple-uncommitted-changes> </transactions> <session-browser> <disconnect-session value="ASK" /> <kill-session value="ASK" /> <reload-on-filter-change value="false" /> </session-browser> <compiler> <compile-type value="KEEP" /> <compile-dependencies value="ASK" /> <always-show-controls value="false" /> </compiler> </operation-settings> <ddl-file-settings> <extensions> <mapping file-type-id="VIEW" extensions="vw" /> <mapping file-type-id="TRIGGER" extensions="trg" /> <mapping file-type-id="PROCEDURE" extensions="prc" /> <mapping file-type-id="FUNCTION" extensions="fnc" /> <mapping file-type-id="PACKAGE" extensions="pkg" /> <mapping file-type-id="PACKAGE_SPEC" extensions="pks" /> <mapping file-type-id="PACKAGE_BODY" extensions="pkb" /> <mapping file-type-id="TYPE" extensions="tpe" /> <mapping file-type-id="TYPE_SPEC" extensions="tps" /> <mapping file-type-id="TYPE_BODY" extensions="tpb" /> </extensions> <general> <lookup-ddl-files value="true" /> <create-ddl-files value="false" /> <synchronize-ddl-files value="true" /> <use-qualified-names value="false" /> <make-scripts-rerunnable value="true" /> </general> </ddl-file-settings> <general-settings> <regional-settings> <date-format value="MEDIUM" /> <number-format value="UNGROUPED" /> <locale value="SYSTEM_DEFAULT" /> <use-custom-formats value="false" /> </regional-settings> <environment> <environment-types> <environment-type id="development" name="Development" description="Development environment" color="-2430209/-12296320" readonly-code="false" readonly-data="false" /> <environment-type id="integration" name="Integration" description="Integration environment" color="-2621494/-12163514" readonly-code="true" readonly-data="false" /> <environment-type id="production" name="Production" description="Productive environment" color="-11574/-10271420" readonly-code="true" readonly-data="true" /> <environment-type id="other" name="Other" description="" color="-1576/-10724543" readonly-code="false" readonly-data="false" /> </environment-types> <visibility-settings> <connection-tabs value="true" /> <dialog-headers value="true" /> <object-editor-tabs value="true" /> <script-editor-tabs value="false" /> <execution-result-tabs value="true" /> </visibility-settings> </environment> </general-settings> </component> </project> springboot-vue3/effective-pom.xml
New file Diff too large springboot-vue3/src/main/java/com/example/springboot/AuthorityApplication.java
@@ -1,7 +1,6 @@ package com.example.springboot; import com.example.springboot.common.MessageSender; import org.springframework.amqp.rabbit.annotation.EnableRabbit; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.ConfigurableApplicationContext; springboot-vue3/src/main/java/com/example/springboot/common/MessageReceiver.java
File was deleted springboot-vue3/src/main/java/com/example/springboot/common/MessageSender.java
File was deleted springboot-vue3/src/main/java/com/example/springboot/common/RabbitConfig.java
File was deleted springboot-vue3/src/main/java/com/example/springboot/component/MessageQueueReader.java
@@ -13,28 +13,19 @@ public static void main(String[] args) throws Exception { ConnectionFactory factory = new ConnectionFactory(); factory.setHost("localhost"); List<String> messages = new ArrayList<>(); try (Connection connection = factory.newConnection(); Channel channel = connection.createChannel()) { boolean autoAck = false; // autoAck 参数设置为 false,然后手动确认消息处理完成 // 循环获取队列中的所有消息 // while (true) { GetResponse response = channel.basicGet(QUEUE_NAME, autoAck); GetResponse response = channel.basicGet(QUEUE_NAME, autoAck); if (response != null) { String message = new String(response.getBody(), "UTF-8"); messages.add(message); // 手动确认消息处理完成 long deliveryTag = response.getEnvelope().getDeliveryTag(); channel.basicAck(deliveryTag, false); // } else { // // 如果队列为空,则退出循环 // break; // } } } springboot-vue3/src/main/java/com/example/springboot/component/PlcParameter.java
@@ -14,7 +14,7 @@ import java.io.InputStreamReader; import java.io.UnsupportedEncodingException; import com.example.springboot.common.MessageSender; import org.apache.commons.io.FileUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.ApplicationContext; @@ -62,8 +62,7 @@ jsonObject.put("key3", jsonArray); try { // 将 JSON 对象转换为字符串并发送到队列 RabbitMQUtils.sendJsonMessage(jsonObject, "json_queue"); // 将 JSON 对象转换为字符串并发送到队列//RabbitMQUtils.sendJsonMessage(jsonObject, "json_queue"); } catch (Exception e) { e.printStackTrace(); } springboot-vue3/src/main/java/com/example/springboot/component/Plchome.java
@@ -37,7 +37,7 @@ public static Boolean isAllowQueue = true; public static Boolean isAllowReordering = true; // 出片队列警告 public static Boolean isQueueWarning = false; public static Boolean isQueueWarning = true; // 铝框id public static String FrameNo = ""; // 是否需要手动确认玻璃 @@ -63,7 +63,10 @@ JSONObject jsonObject = new JSONObject(); try { Thread.sleep(1000); // 注入mapper String s1=S7controlalbia.getinstance().readStrings("DB14.38"); String s2=S7controlalbia.getinstance().readStrings("DB14.40"); // 注入mapper homeMapper = WebSocketServer.applicationContext.getBean(HomeMapper.class); spianMapper = WebSocketServer.applicationContext.getBean(SpianMapper.class); spianService = WebSocketServer.applicationContext.getBean(SpianService.class); @@ -126,170 +129,169 @@ // String E01id = new String( S7controlLK.getinstance().ReadByte("DB17.0",16)); // String J01id = new String( S7controlLK.getinstance().ReadByte("DB17.22",14)); // if (S7control.getinstance().CheckConnected() == true) { if (S7control.getinstance().CheckConnected() == true) { // 铝框线交互 if (S7controlLK.getinstance().CheckConnected() == true) { if (CurrentFrame != null) { S7controlLK.getinstance().writeStrings(CurrentFrame.getBarCode(), "DB17.0"); } String E01id = S7controlLK.getinstance().readStrings("DB17.0"); String J01id = S7controlLK.getinstance().readStrings("DB17.22"); // 铝框线交互 if (S7controlLK.getinstance().CheckConnected() == true) { if (CurrentFrame != null) { S7controlLK.getinstance().writeStrings(CurrentFrame.getBarCode(), "DB17.0"); List<Short> liststates = S7controlLK.getinstance().ReadWord("DB17.38", 1); List<Short> liststate = S7controlLK.getinstance().ReadWord("DB17.20", 1); Short framerequest = liststate.get(0); if (framerequest == 1) { // 铝框id String position; try { position = dbserve.SelectPositionByFrameBarcode(J01id); } catch (SQLException e) { // TODO Auto-generated catch block position = "0"; e.printStackTrace(); } Short send; if (position.equals("0")) { send = 0; } else { send = 1; } S7controlLK.getinstance().WriteWord("DB17.38", (short) send); } } String E01id = S7controlLK.getinstance().readStrings("DB17.0"); String J01id = S7controlLK.getinstance().readStrings("DB17.22"); List<Short> liststates = S7controlLK.getinstance().ReadWord("DB17.38", 1); List<Short> liststate = S7controlLK.getinstance().ReadWord("DB17.20", 1); Short framerequest = liststate.get(0); if (framerequest == 1) { // 铝框id String position; // 获取当前扫码方式 List<Boolean> Scanningmethods = S7control.getinstance().ReadBits("DB101.11.4", 1); if (Scanningmethods != null) { for (Boolean Scanningmethod : Scanningmethods) { jsonObject.append("Scanningmethod", Scanningmethod); } } // 获取当前扫码枪玻璃id String CurrrentGlassId = spianService.queGlassid("DB103.256", 14).toString(); jsonObject.append("CurrrentGlassId", CurrrentGlassId); // 获取D01-D06,A01,A02,B01,B02状态 List<Short> DeviceList = S7control.getinstance().ReadWord("DB103.0", 10); jsonObject.append("DeviceList", DeviceList); // 获取D01-D06,A01,A02,B01,B02玻璃id List<String> GlassIdList = new ArrayList<String>(); GlassIdList.add(spianService.queGlassid("DB103.44", 14).toString()); GlassIdList.add(spianService.queGlassid("DB103.58", 14).toString()); GlassIdList.add(spianService.queGlassid("DB103.184", 14).toString()); GlassIdList.add(spianService.queGlassid("DB103.212", 14).toString()); GlassIdList.add(spianService.queGlassid("DB103.128", 14).toString()); GlassIdList.add(spianService.queGlassid("DB103.142", 14).toString()); GlassIdList.add(spianService.queGlassid("DB103.156", 14).toString()); GlassIdList.add(spianService.queGlassid("DB103.72", 14).toString()); GlassIdList.add(spianService.queGlassid("DB103.86", 14).toString()); GlassIdList.add(spianService.queGlassid("DB103.100", 14).toString()); GlassIdList.add(spianService.queGlassid("DB103.114", 14).toString()); jsonObject.append("GlassIdList", GlassIdList); // 获取Plc进片车与出片车位置 List<String> addressList = new ArrayList<String>(); addressList.add("DB106.12"); addressList.add("DB106.0"); List<Short> paramlist = S7control.getinstance().ReadWord(addressList); if (paramlist != null) { jsonObject.append("params", paramlist); } // // 获取进片车状态 // List<Short> datas1ListState = S7control.getinstance().ReadWord("DB106.8", // 1);// 获取进片车状态 // if (datas1ListState != null) { // boolean exist1 = datas1ListState.contains((short) 0); // jsonObject.append("zhuangtai", exist1); // } // // 获取进片玻璃信息 // List<Short> inglassInfo = S7control.getinstance().ReadWord("DB106.24", 1); // if (inglassInfo != null) { // if (inglassInfo.size() > 0) { // jsonObject.append("loadglassheight", inglassInfo.get(0) * 70); // } // } // // 获取铝框idDB106.DBW64,添加到出片队列 // String frameno="X21763329601FB"; String frameno = spianService.queGlassid("DB103.270", 14).toString(); if (!frameno.equals(Plchome.FrameNo)) { Plchome.FrameNo = frameno; try { position = dbserve.SelectPositionByFrameBarcode(J01id); Short num = 0; List<north_glass_buffer1> north_glass_buffer1s = north_Glass_Buffer1Service .SelectAluminumFrameInfoById(Plchome.FrameNo); for (north_glass_buffer1 north_glass_buffer1 : north_glass_buffer1s) { if (north_glass_buffer1.getstorageCage() == null) { break; } num++; } if (num == north_glass_buffer1s.size()) { north_Glass_Buffer1Service.AddOutSliceS(Plchome.FrameNo); } else { Plchome.AluminumFrame = north_glass_buffer1s; } } catch (SQLException e) { // TODO Auto-generated catch block position = "0"; e.printStackTrace(); } Short send; if (position.equals("0")) { send = 0; } if (AluminumFrame != null) { jsonObject.append("AluminumFrame", AluminumFrame); } // 复位倒计时 // 地址104.9.6 List<Boolean> countdown = S7control.getinstance().ReadBits("DB104.9.6", 1); for (Boolean countdowns : countdown) { jsonObject.append("countdown", countdowns); } // jsonObject.append("countdown", true); // 复位完成信号 List<Boolean> resetss = S7control.getinstance().ReadBits("DB103.284", 1); for (Boolean reset : resetss) { jsonObject.append("reset", reset); } // 是否急停 List<Boolean> emergencystops = S7control.getinstance().ReadBits("DB104.5.1", 1); for (Boolean emergencystop : emergencystops) { jsonObject.append("emergencystop", emergencystop); } // 获取进片请求状态 List<Short> D01Request = S7control.getinstance().ReadWord("DB106.24", 1); boolean D01RequestState = D01Request.contains((short) 1); jsonObject.append("D01RequestState", D01RequestState); // 获取进片发送状态 List<Short> D01respnse = S7control.getinstance().ReadWord("DB106.16", 1); boolean D01ResponseState = D01respnse.contains((short) 1); // jsonObject.append("D01RequestState", D01RequestState); // 自动进片 isConfirm = true; if (isConfirm == true && form3.getglassId() != null && form3.getglassId() != "") { if ((form3.getglassheight() < 380 || form3.getglasswidth() < 390 || form3.getglassheight() > 1810 || form3.getglasswidth() > 2760) || (form3.getglassheight() < 390 || form3.getglasswidth() < 380 || form3.getglassheight() > 2760 || form3.getglasswidth() > 1810)) { FeedState = true; jsonObject.append("FeedState", FeedState); FeedState = false; } else { send = 1; } S7controlLK.getinstance().WriteWord("DB17.38", (short) send); } } // 获取当前扫码方式 List<Boolean> Scanningmethods = S7control.getinstance().ReadBits("DB101.11.4", 1); if (Scanningmethods != null) { for (Boolean Scanningmethod : Scanningmethods) { jsonObject.append("Scanningmethod", Scanningmethod); } } // 获取当前扫码枪玻璃id String CurrrentGlassId = spianService.queGlassid("DB103.256", 14).toString(); jsonObject.append("CurrrentGlassId", CurrrentGlassId); // 获取D01-D06,A01,A02,B01,B02状态 List<Short> DeviceList = S7control.getinstance().ReadWord("DB103.0", 10); jsonObject.append("DeviceList", DeviceList); // 获取D01-D06,A01,A02,B01,B02玻璃id List<String> GlassIdList = new ArrayList<String>(); GlassIdList.add(spianService.queGlassid("DB103.44", 14).toString()); GlassIdList.add(spianService.queGlassid("DB103.58", 14).toString()); GlassIdList.add(spianService.queGlassid("DB103.184", 14).toString()); GlassIdList.add(spianService.queGlassid("DB103.212", 14).toString()); GlassIdList.add(spianService.queGlassid("DB103.128", 14).toString()); GlassIdList.add(spianService.queGlassid("DB103.142", 14).toString()); GlassIdList.add(spianService.queGlassid("DB103.156", 14).toString()); GlassIdList.add(spianService.queGlassid("DB103.72", 14).toString()); GlassIdList.add(spianService.queGlassid("DB103.86", 14).toString()); GlassIdList.add(spianService.queGlassid("DB103.100", 14).toString()); GlassIdList.add(spianService.queGlassid("DB103.114", 14).toString()); jsonObject.append("GlassIdList", GlassIdList); // 获取Plc进片车与出片车位置 List<String> addressList = new ArrayList<String>(); addressList.add("DB106.12"); addressList.add("DB106.0"); List<Short> paramlist = S7control.getinstance().ReadWord(addressList); if (paramlist != null) { jsonObject.append("params", paramlist); } // // 获取进片车状态 // List<Short> datas1ListState = S7control.getinstance().ReadWord("DB106.8", // 1);// 获取进片车状态 // if (datas1ListState != null) { // boolean exist1 = datas1ListState.contains((short) 0); // jsonObject.append("zhuangtai", exist1); // } // // 获取进片玻璃信息 // List<Short> inglassInfo = S7control.getinstance().ReadWord("DB106.24", 1); // if (inglassInfo != null) { // if (inglassInfo.size() > 0) { // jsonObject.append("loadglassheight", inglassInfo.get(0) * 70); // } // } // // 获取铝框idDB106.DBW64,添加到出片队列 // String frameno="X21763329601FB"; String frameno = spianService.queGlassid("DB103.270", 14).toString(); if (!frameno.equals(Plchome.FrameNo)) { Plchome.FrameNo = frameno; try { Short num = 0; List<north_glass_buffer1> north_glass_buffer1s = north_Glass_Buffer1Service .SelectAluminumFrameInfoById(Plchome.FrameNo); for (north_glass_buffer1 north_glass_buffer1 : north_glass_buffer1s) { if (north_glass_buffer1.getstorageCage() == null) { break; if (D01RequestState == true && D01ResponseState != true) { storageCageService.InsertQueueGlassId((short) 1, form3); } num++; } if (num == north_glass_buffer1s.size()) { north_Glass_Buffer1Service.AddOutSliceS(Plchome.FrameNo); } else { Plchome.AluminumFrame = north_glass_buffer1s; } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } if (AluminumFrame != null) { jsonObject.append("AluminumFrame", AluminumFrame); } // 复位倒计时 // 地址104.9.6 List<Boolean> countdown = S7control.getinstance().ReadBits("DB104.9.6", 1); for (Boolean countdowns : countdown) { jsonObject.append("countdown", countdowns); } // jsonObject.append("countdown", true); // 复位完成信号 List<Boolean> resetss = S7control.getinstance().ReadBits("DB103.284", 1); for (Boolean reset : resetss) { jsonObject.append("reset", reset); } // 是否急停 List<Boolean> emergencystops = S7control.getinstance().ReadBits("DB104.5.1", 1); for (Boolean emergencystop : emergencystops) { jsonObject.append("emergencystop", emergencystop); } // 获取进片请求状态 List<Short> D01Request = S7control.getinstance().ReadWord("DB106.24", 1); boolean D01RequestState = D01Request.contains((short) 1); jsonObject.append("D01RequestState", D01RequestState); // 获取进片发送状态 List<Short> D01respnse = S7control.getinstance().ReadWord("DB106.16", 1); boolean D01ResponseState = D01respnse.contains((short) 1); // jsonObject.append("D01RequestState", D01RequestState); // 自动进片 isConfirm=true; if (isConfirm == true && form3.getglassId() != null && form3.getglassId() != "") { if ((form3.getglassheight() < 380 || form3.getglasswidth() < 390 || form3.getglassheight() > 1810 || form3.getglasswidth() > 2760) || (form3.getglassheight() < 390 || form3.getglasswidth() < 380 || form3.getglassheight() > 2760 || form3.getglasswidth() > 1810)) { FeedState = true; jsonObject.append("FeedState", FeedState); FeedState = false; } else { if (D01RequestState == true && D01ResponseState != true) { storageCageService.InsertQueueGlassId((short) 1, form3); } } } // } } } catch (InterruptedException e) { e.printStackTrace(); springboot-vue3/src/main/java/com/example/springboot/component/RabbitMQUtils.java
@@ -3,6 +3,9 @@ import com.rabbitmq.client.*; import com.fasterxml.jackson.databind.ObjectMapper; import java.util.ArrayList; import java.util.List; public class RabbitMQUtils { // ObjectMapper对象,用于序列化和反序列化JSON private static ObjectMapper objectMapper = new ObjectMapper(); @@ -25,6 +28,28 @@ } } public List<String> readMessages(String queueName) throws Exception { ConnectionFactory factory = new ConnectionFactory(); factory.setHost("localhost"); List<String> messages = new ArrayList<>(); try (Connection connection = factory.newConnection(); Channel channel = connection.createChannel()) { boolean autoAck = false; GetResponse response = channel.basicGet(queueName, autoAck); if (response != null) { String message = new String(response.getBody(), "UTF-8"); messages.add(message); // 手动确认消息处理完成 long deliveryTag = response.getEnvelope().getDeliveryTag(); channel.basicAck(deliveryTag, false); } } return messages; } // 从 RabbitMQ 队列中接收消息 public static void receiveMessage(String queueName) throws Exception { // 创建连接工厂并设置主机名 springboot-vue3/src/main/java/com/example/springboot/component/S7controlalbia.java
New file @@ -0,0 +1,456 @@ package com.example.springboot.component; import java.nio.ByteBuffer; import java.nio.ByteOrder; import java.nio.charset.StandardCharsets; import java.sql.Time; import java.util.ArrayList; import java.util.List; import com.github.xingshuangs.iot.protocol.s7.enums.EPlcType; import com.github.xingshuangs.iot.protocol.s7.service.MultiAddressWrite; import com.github.xingshuangs.iot.protocol.s7.service.S7PLC; import com.google.common.primitives.Bytes; import org.apache.ibatis.jdbc.Null; public class S7controlalbia { S7PLC s7PLC; // PLC通讯类实例 private EPlcType plcType = EPlcType.S1500; // 西门子PLC类型 private String ip = "192.168.10.1"; // plc ip地址 private int port = 65; // plc 端口号 private static volatile S7controlalbia instance = null; private S7controlalbia() { if (s7PLC == null) s7PLC = new S7PLC(plcType, ip, port, 0, 0); } // 单例模式 获取类的唯一实例 public static S7controlalbia getinstance() { if (instance == null) { synchronized (S7controlalbia.class) { if (instance == null) instance = new S7controlalbia(); } } return instance; } /** * 关闭西门子s7通讯连接 */ public void CloseS7client() { if (s7PLC == null) s7PLC.close(); s7PLC.checkConnected(); } /** * s7通讯连接状态 */ public boolean CheckConnected() { return s7PLC.checkConnected(); } /** * 按指定的地址 写入一个word * * @param address 地址 * @param data word的值 */ public void WriteWord(String address, short data) { if (s7PLC == null) { return; } s7PLC.writeInt16(address, data); } /** * 从某地址连续 写入多个word * * @param address 地址 * @param datas word的值 */ public void WriteWord(String address, List<Short> datas) { if (s7PLC == null) return; // s7PLC.write(address, data); List<String> addresslist = GetAddressList(address, datas.size(), 16); MultiAddressWrite addressWrite = new MultiAddressWrite(); for (int i = 0; i < datas.size(); i++) { addressWrite.addInt16(addresslist.get(i), datas.get(i)); } s7PLC.writeMultiData(addressWrite); } /** * 按指定的地址 写入多个word * * @param address 地址 * @param datas word的值 */ /** * 按指定的地址 写入一个Bit * * @param address 地址 * @param data Bit的值 */ public void WriteBit(String address, Boolean data) { if (s7PLC == null) return; s7PLC.writeBoolean(address, data); } /** * 按指定的地址 写入多个bit * * @param address 地址 * @param datas bit的值 */ public void WriteBit(List<String> address, List<Boolean> datas) { if (s7PLC == null) return; // s7PLC.write(address, data); MultiAddressWrite addressWrite = new MultiAddressWrite(); for (int i = 0; i < address.size(); i++) { addressWrite.addBoolean(address.get(i), datas.get(i)); } s7PLC.writeMultiData(addressWrite); } /** * 从某地址连续 写入多个bit * * @param address 地址 * @param datas word的值 */ public void WriteBit(String address, List<Boolean> datas) { if (s7PLC == null) return; // s7PLC.write(address, data); List<String> addresslist = GetAddressList(address, datas.size(), 1); MultiAddressWrite addressWrite = new MultiAddressWrite(); for (int i = 0; i < datas.size(); i++) { addressWrite.addBoolean(addresslist.get(i), datas.get(i)); } s7PLC.writeMultiData(addressWrite); } /** * 按指定的地址 写入多个byte * * @param address 地址 * @param datas byte的值 */ public void WriteByte(String address, byte[] datas) { if (s7PLC == null) return; // s7PLC.write(address, data); s7PLC.writeByte(address, datas); } /** * 按指定的地址 读取word结果集 * * @param address 地址 * @return 结果 */ public List<Short> ReadWord(List<String> address) { if (s7PLC == null) return null; try { return s7PLC.readInt16(address); } catch (Exception e) { System.out.println("读取 " + address + " 失败:" + e.getMessage()); return null; } } private int getIndexFromAddress(String address) { // 可以解析出地址中的数字部分,并转换为整数 return 0; } private String getAddressFromIndex(int index) { // 整数转换为地址格式的字符串 return ""; } /** * 按指定的地址 读取word结果集 * * @param address 地址 * @param count 连续读多少个word * @return 结果 */ public List<Short> ReadWord(String address, int count) { if (s7PLC == null) return null; List<String> addresslist = GetAddressList(address, count, 16); try { return s7PLC.readInt16(addresslist); } catch (Exception e) { System.out.println("读取 " + address + " 失败:" + e.getMessage()); return null; } } /** * 按指定的地址 读取byte结果集 * * @param address 地址 * @param count 连续读多少个byte * @return 结果 */ public byte[] ReadByte(String address, int count) { if (s7PLC == null) return null; // List<String> addresslist = GetAddressList(address, count, 16); try { return s7PLC.readByte(address, count); } catch (Exception e) { // 处理异常 System.out.println("读取 " + address + " 失败:" + e.getMessage()); return null; } } /** * 按指定的地址 按bit位 0 flase 1 true 读取结果 * * @param addresslist 地址集 * @return Boolean结果 */ public List<Boolean> ReadBits(List<String> addresslist) { if (s7PLC == null) return null; return s7PLC.readBoolean(addresslist); } // 读取不连续地址bit public List<Boolean> readBits(List<String> addressList) { if (s7PLC == null || addressList.isEmpty()) { return null; } List<Boolean> values = new ArrayList<>(); for (String address : addressList) { try { boolean value = s7PLC.readBoolean(address); values.add(value); } catch (Exception e) { // 处理异常 System.out.println("读取 " + address + " 失败:" + e.getMessage()); } } return values; } // 读取String public List<String> readStrings(List<String> addressList) { if (s7PLC == null) { return null; } List<String> result = new ArrayList<>(); for (String address : addressList) { try { byte[] bytes = s7PLC.readByte(address, 14); if (bytes != null) { String str = new String(bytes, StandardCharsets.UTF_8); result.add(str); } } catch (Exception e) { System.out.println("读取 " + address + " 失败:" + e.getMessage()); result.add(null); } } return result; } public List<String> readStringsandword(List<String> addressList) { if (s7PLC == null) { return null; } List<String> result = new ArrayList<>(); for (String address : addressList) { try { if (address.contains("-")) { address = address.substring(0, address.indexOf("-")); byte[] bytes = s7PLC.readByte(address, 14); if (bytes != null) { String str = new String(bytes, StandardCharsets.UTF_8); result.add(str); } } else { Short value = s7PLC.readInt16(address); result.add(value.toString()); } } catch (Exception e) { System.out.println("读取 " + address + " 失败:" + e.getMessage()); result.add(null); } } return result; } // 不连续地址写入Word public void WriteWord(List<String> address, List<Short> datas) { if (s7PLC == null) return; for (int i = 0; i < address.size(); i++) { String addr = address.get(i); short data = datas.get(i); if (addr.contains("-")) { outmesid(String.valueOf(data), addr); // 单独处理带破折号的地址 } else { s7PLC.writeInt16(addr, data); // 将数据写入单个地址 } } } // 字符串写入 public void outmesid(String data, String addr) { // System.out.println("outmesid: " + data); List<Byte> glassidlist = new ArrayList<>(); String[] parts = addr.split("-"); if (parts.length == 2) { addr = parts[0]; // 只保留 "-" 前面的部分 } for (char iditem : data.toCharArray()) { glassidlist.add(Byte.valueOf(String.valueOf(iditem))); } byte[] bytes = Bytes.toArray(glassidlist); S7controlalbia.getinstance().WriteByte(addr, bytes); } // 读取不连续word public List<Short> readWords(List<String> addresses) { if (s7PLC == null) { return null; } List<Short> data = new ArrayList<>(); for (String address : addresses) { try { // 单个地址 Short value = s7PLC.readInt16(address); data.add(value); } catch (Exception e) { System.out.println("读取 " + address + " 失败:" + e.getMessage()); } } return data; } // 读取时间 public Long readtime(String address) { if (s7PLC == null) return null; try { return s7PLC.readTime(address); } catch (Exception e) { System.out.println("读取 " + address + " 失败:" + e.getMessage()); return null; } } public void writetime(String address, long datas) { if (s7PLC == null) return; s7PLC.writeTime(address, datas); // 将数据写入单个地址 } private int extractAddressNumber(String address) { String numberStr = address.replaceAll("\\D+", ""); // 使用正则表达式提取数字部分 return Integer.parseInt(numberStr); } /** * 从指定的地址开始 连续按bit位读取 * * @param address 地址 * @param count 长度 * @return Boolean结果 */ public List<Boolean> ReadBits(String address, int count) { if (s7PLC == null) return null; List<String> addresslist = GetAddressList(address, count, 1); try { return s7PLC.readBoolean(addresslist); } catch (Exception e) { System.out.println("读取 " + address + " 失败:" + e.getMessage()); return null; } }; private List<String> GetAddressList(String address, int count, int addedbit) { List<String> addresslist = new ArrayList<String>(); String[] stringdatas = address.trim().split("\\."); if (stringdatas.length < 2 || !address.startsWith("DB")) return null; int dbwindex = 0; int bitindex = 0; if (stringdatas.length == 2) { dbwindex = Integer.parseInt(stringdatas[1]); } else if (stringdatas.length == 3) { dbwindex = Integer.parseInt(stringdatas[1]); bitindex = Integer.parseInt(stringdatas[2]); } else return null; addresslist.add(address); for (int i = 0; i < count - 1; i++) { int bitcurrent = bitindex + addedbit; if (bitcurrent > 7) { dbwindex += bitcurrent / 8; bitindex = 0; } else bitindex = bitcurrent; String endstr = stringdatas.length == 3 ? "." + bitindex : ""; addresslist.add(stringdatas[0] + "." + dbwindex + endstr); } return addresslist; } public void writeStrings(String data, String addr) { // List<Byte> glassidlist = new ArrayList<>(); String[] parts = addr.split("-"); if (parts.length == 2) { addr = parts[0]; } s7PLC.writeString(addr, data); } public String readStrings(String addr) { return s7PLC.readString(addr); } } springboot-vue3/src/main/java/com/example/springboot/controller/MessageController.java
File was deleted springboot-vue3/src/main/java/com/example/springboot/service/OutSliceServive.java
@@ -92,7 +92,7 @@ public void DeleteByGlassIDs(String glassid) { List<StorageCage> glassinfor = homeMapper.SelectStorageInfoByGlassId(glassid); for (StorageCage storageCage : glassinfor) { if (storageCage.getState().equals("2")) { if (storageCage.getState().equals("2")||storageCage.getState().equals("1")) { homeMapper.UpdataCageWidth(storageCage.getGlassWidth(), storageCage.getCage(), storageCage.getCell()); } } springboot-vue3/src/main/resources/application.properties
@@ -23,9 +23,9 @@ spring.jackson.date-format=yyyy-MM-dd HH:mm:ss spring.jackson.time-zone=GMT+8 spring.rabbitmq.host=localhost spring.rabbitmq.port=5672 spring.rabbitmq.username=guest spring.rabbitmq.password=guest #spring.rabbitmq.host=10.153.19.150 #spring.rabbitmq.port=5672 #spring.rabbitmq.username=guest #spring.rabbitmq.password=guest