CanadaMes-ui/src/api/user.js
@@ -14,6 +14,14 @@ } export function currentUsername() { return request({ url: '/api/user/currentUsername', method: 'get', }) } export function resetPass(data) { return request({ url: '/api/user/resetPass', CanadaMes-ui/src/lang/locales/en-US.json
@@ -111,6 +111,8 @@ "有效": "Valid", "无效": "Invalid", "请输入名称": "Please enter a name", "请输入角色": "Please enter a role", "请输入权限描述":"Please enter a permission description", "长度在 2 到 15 个字符": "Length between 2 and 15 characters", "请输入状态": "Please enter the status", "添加角色": "Add Role", @@ -344,7 +346,7 @@ "A01~A02输送": "A01~A02 Conveying", "B01~B02输送": "B01~B02 Conveying", "D01~D02输送": "D01~D02 Conveying", "D01~D06输送": "D01~D06 Conveying", "翻转点动速度": "Flip Jog Speed", "小车点动速度": "Cart Jog Speed", "最高速度": "Max Speed", @@ -465,7 +467,7 @@ "A02手动位置": "A02 turn Target Angle(Manual)", "A02定位速度": "A02 TURN POS Velocity manual", "A02翻转实时位置": "A02 turn Actual angle", "A02翻转启动": "SERVE TURN", "A02翻转启动": "A02 SERVE TURN", "A02复位": "Reset", "未回零": "NotZero", "回零": "Zero" CanadaMes-ui/src/lang/locales/zh-CN.json
@@ -1,5 +1,5 @@ { "ip": "192.168.10.21", "ip": "localhost", "systemTitle": "登录系统", "usernamePlaceholder": "请输入用户名", "passwordPlaceholder": "请输入密码", CanadaMes-ui/src/views/Electrical/ManualJog.vue
@@ -51,10 +51,11 @@ <div class="button-row" style="display: flex; justify-content: flex-start;flex-wrap:wrap;"> <div v-for="(item, itemIndex) in dataGroup" :key="itemIndex" style="margin: 10px;"> <el-button v-if="item.button" :name="item.button.name" :class="getStatusClass(item.button.value)" class="action-button" @click="updateButtonValue(dataGroup, itemIndex); submitDataToBackend();">{{ item.button.name }}</el-button> <el-button v-if="item.button" :name="item.button.name" :class="{ 'dow': false, 'op': item.button.value === 1 }" class="action-button" @click="updateButtonValue(dataGroup, itemIndex); submitDataToBackend();">{{ item.button.name }}</el-button> </div> </div> </el-card> @@ -171,6 +172,7 @@ // console.log(parms); if(obj.params){ for (let i = 0; i < jsonData2.length; i++) { let arr = jsonData2[i]; @@ -181,6 +183,7 @@ } } } @@ -242,7 +245,7 @@ .action-button { margin-right: 10px; background: #66b1ff; background: #A0A0A0; color: #FFF; } CanadaMes-ui/src/views/Electrical/ManualonePosition.vue
@@ -338,7 +338,7 @@ const handleMouseMove = throttle(function (event) { const inputBox = document.querySelectorAll('.el-card__body'); const target = event.target; if (inputBox && Array.from(inputBox).every(box => !box.contains(target))) { if (obj.zuhe1 &&inputBox && Array.from(inputBox).every(box => !box.contains(target))) { // 执行更新逻辑 for (let i = 0; i < 4; i++) { jsonData2[i].forEach((item, index) => { CanadaMes-ui/src/views/Electrical/ManualonePosition2.vue
@@ -277,7 +277,7 @@ const handleMouseMove = throttle(function (event) { const inputBox = document.querySelectorAll('.el-card__body'); const target = event.target; if (inputBox && Array.from(inputBox).every(box => !box.contains(target))) { if (obj.zuhe1 && inputBox && Array.from(inputBox).every(box => !box.contains(target))) { // 执行更新逻辑 for (let i = 0; i < 2; i++) { jsonData2[i].forEach((item, index) => { CanadaMes-ui/src/views/Electrical/Parameter1.vue
@@ -97,6 +97,7 @@ updateButtonValue (dataGroup, itemIndex) { this.$set(dataGroup[itemIndex].button, 'value', 1); // 点击按钮后将值改为1 }, //提交数据到后端 submitDataToBackend () { const inputData = this.jsonData.map(dataGroup => { return dataGroup.map(item => { @@ -160,10 +161,11 @@ const handleMouseMove = throttle(function (event) { const inputBox = document.querySelectorAll('.el-card__body'); const target = event.target; if (inputBox && Array.from(inputBox).every(box => !box.contains(target))) { const parms = obj.params; const parms = obj.params; const fanzhuan = obj.fanzhuan; const xiaoche = obj.xiaoche; if (parms && inputBox && Array.from(inputBox).every(box => !box.contains(target))) { // console.log(obj); // console.log('parms:', parms); // console.log('fanzhuan:', fanzhuan); @@ -213,6 +215,7 @@ } }, //语言替换 replaceChineseWithEnglish() { CanadaMes-ui/src/views/Electrical/Parameter2.vue
@@ -66,9 +66,10 @@ <div class="item-row"> <span class="name" v-if="groupIndex === 13" style="width:250px;">{{ item.name }}</span> <span class="name" v-if="groupIndex === 12" style="width:250px;">{{ item.name }}</span> <span class="name" v-else style="width:150px;">{{ item.name }}</span> <el-input v-if="item.type === '0'" v-model="item.value" readonly="readonly" style="width:400px;" class="input-box"></el-input> <el-input v-if="item.type === '0'" v-model="item.value" readonly="readonly" style="width:300px;" class="input-box"></el-input> @@ -212,11 +213,9 @@ let obj = JSON.parse(msg.data); const jsonData2 = this.jsonData; // console.log(jsonData2); // 如果鼠标不在输入框内,更新输入框的值 // this.submitDataToBackend() const parms = obj.params; // const xiaoche = obj.params[3]; // console.log(obj); @@ -226,8 +225,9 @@ const inputBox = document.querySelectorAll('.action-button'); const target = event.target; if (inputBox && Array.from(inputBox).every(box => !box.contains(target))) { if (parms && inputBox && Array.from(inputBox).every(box => !box.contains(target))) { //清除id for (let i = 0; i < jsonData2.length; i++) { let arr = jsonData2[i]; for (let j = 0; j < arr.length; j++) { @@ -240,6 +240,7 @@ } //ID const specialChars = /[^\w\s]/g; // 正则表达式匹配非字母、数字、下划线和空格的字符 @@ -402,6 +403,11 @@ </script> <style scoped> html,body{ width:100%; height:85%; } .item-row { display: flex; align-items: center; CanadaMes-ui/src/views/Electrical/Positioning1.vue
@@ -99,6 +99,7 @@ updateButtonValue (dataGroup, itemIndex) { this.$set(dataGroup[itemIndex].button, 'value', 1); // 点击按钮后将值改为1 }, //提交数据到后端 submitDataToBackend () { const inputData = this.jsonData.map(dataGroup => { return dataGroup.map(item => { @@ -161,10 +162,11 @@ document.addEventListener('mouseover', function (event) { const inputBox = document.querySelectorAll('.el-card__body'); const target = event.target; if (inputBox && Array.from(inputBox).every(box => !box.contains(target))) { const parms = obj.params; if (parms && inputBox && Array.from(inputBox).every(box => !box.contains(target))) { // 如果鼠标不在输入框内,更新输入框的值 // this.submitDataToBackend() const parms = obj.params; // console.log(parms) @@ -208,6 +210,7 @@ } }, //语言替换 replaceChineseWithEnglish() { CanadaMes-ui/src/views/Electrical/Positioning2.vue
@@ -44,7 +44,7 @@ }}</router-link> </el-breadcrumb> <el-row :gutter="18" class='card'> <el-row :gutter="18" class='card'> <el-col :span="7" v-for="(dataGroup, groupIndex) in jsonData" :key="groupIndex"> <el-card class="json-block"> <div class="button-row" style="display: flex; justify-content: space-between;"> @@ -81,11 +81,15 @@ jsonData: data // 加载整个data.json文件作为jsonData } }, activated(){ activated(){ // 激活组件时调用 // 初始化WebSocket this.initWebSocket (); // 获取当前语言 const language = this.$i18n.locale; console.log(language); // 如果当前语言是英语,则将中文替换为英文 if (language === 'en-US') { this.replaceChineseWithEnglish(); } @@ -95,14 +99,19 @@ updateButtonValue (dataGroup, itemIndex) { this.$set(dataGroup[itemIndex].button, 'value', 1); // 点击按钮后将值改为1 }, submitDataToBackend () { //提交数据到后端 submitDataToBackend () { // 将jsonData转换为数组 const inputData = this.jsonData.map(dataGroup => { return dataGroup.map(item => { // 如果是数字类型,则转换为整数 if (item.type === '0') { return { value: parseInt(item.value) }; // 如果是按钮类型,则转换为整数 } else if (item.button) { return { value: parseInt(item.title.value) }; } // 否则返回null return null; }); }); @@ -110,9 +119,11 @@ // 将inputData转换为整数数组 const integerArray = inputData.map(dataGroup => { return dataGroup.map(item => { // 如果item不为null,则返回item.value if (item !== null) { return item.value; } // 否则返回null return null; }); }); @@ -157,12 +168,14 @@ document.addEventListener('mouseover', function (event) { const inputBox = document.querySelectorAll('.el-card__body'); const target = event.target; if (inputBox && Array.from(inputBox).every(box => !box.contains(target))) { const parms = obj.params; if ( parms && inputBox && Array.from(inputBox).every(box => !box.contains(target))) { // 如果鼠标不在输入框内,更新输入框的值 // this.submitDataToBackend() const parms = obj.params; // console.log(parms) let index = 0; for (let i = 0; i < jsonData2.length; i++) { let arr = jsonData2[i]; @@ -198,6 +211,7 @@ } }, //语言替换 replaceChineseWithEnglish() { @@ -223,9 +237,12 @@ // console.log(this.jsonData) }, send () { send () { // 向服务器发送消息 // 向服务器发送消息 socket?.send(JSON.stringify(this.messagepack)); }, CanadaMes-ui/src/views/Electrical/ServoManualone.vue
@@ -121,6 +121,8 @@ } }, submitDataToBackend(currentButtonName) { //A01半自动启动提交 if (currentButtonName === 'A01半自动启动' ||currentButtonName === 'A01 Semi-Auto Start') { const data = []; @@ -159,6 +161,7 @@ socket?.send(jsonString); } //A02半自动启动 提交 if (currentButtonName === 'A02半自动启动' ||currentButtonName === 'A02 Semi-Auto Start') { const data2 = []; @@ -199,6 +202,8 @@ } //复位提交 if (currentButtonName === '复位' || currentButtonName === 'Reset') { const data2 = []; const resetButtonValues = this.jsonData.map(item => { @@ -227,7 +232,7 @@ // ) } ////回零提交 if (currentButtonName === '回零' || currentButtonName === 'Home') { const data3 = []; const resetButtonValues3 = this.jsonData.map(item => { @@ -256,7 +261,7 @@ } //A01半自动提交 if (currentButtonName === 'A01半自动' || currentButtonName === 'A01 Semi-Auto' ) { const elements = document.getElementsByClassName('special-class'); @@ -327,18 +332,26 @@ if (currentButtonName === 'A02半自动' || currentButtonName === 'A02 Semi-Auto' ) { // 获取所有class为special-class2的元素 const elements = document.getElementsByClassName('special-class2'); const data = []; // 遍历所有元素 for (let i = 0; i < elements.length; i++) { // 如果元素隐藏 if (elements[i].style.display === 'none') { // 显示元素 elements[i].style.display = ''; // 显示元素 this.zhi2=1; // 遍历jsonData for (let i = 0; i < this.jsonData.length; i++) { let arr = this.jsonData[i]; // 遍历arr for (let j = 0; j < arr.length; j++) { let obj2 = arr[j]; // 如果button的name为A02半自动或者A02 Semi-Auto if (obj2.button && (obj2.button.name === "A02半自动" || obj2.button.name === "A02 Semi-Auto")) { // 设置button的value为1 obj2.button.value = 1; // console.log(obj2.button.value) } @@ -348,13 +361,18 @@ } }else{ // 如果元素显示 elements[i].style.display = 'none'; this.zhi2=0; // 遍历jsonData for (let i = 0; i < this.jsonData.length; i++) { let arr = this.jsonData[i]; // 遍历arr for (let j = 0; j < arr.length; j++) { let obj2 = arr[j]; // 如果button的name为A02半自动或者A02 Semi-Auto if (obj2.button && (obj2.button.name === "A02半自动" || obj2.button.name === "A02 Semi-Auto")) { // 设置button的value为0 obj2.button.value = 0; // console.log(obj2.button.value) } @@ -365,8 +383,10 @@ } } // 将zhi2添加到data数组中 data.push([this.zhi2]); // 将data数组添加到jsonObject中 data.unshift([],[],[],[],[],[],[]); @@ -422,7 +442,7 @@ const handleMouseMove = throttle(function(event) { const inputBox = document.querySelectorAll('.el-card__body'); const target = event.target; if (inputBox && Array.from(inputBox).every(box => !box.contains(target))) { if (obj.zuhe1 && inputBox && Array.from(inputBox).every(box => !box.contains(target))) { // 执行更新逻辑 for (let i = 0; i < 6; i++) { jsonData2[i].forEach((item, index) => { @@ -433,7 +453,7 @@ } //故障更新 for (let i = 0; i < jsonData2.length; i++) { let arr = jsonData2[i]; @@ -448,7 +468,7 @@ } // 复位更新 for (let i = 0; i < jsonData2.length; i++) { let arr = jsonData2[i]; for (let j = 0; j < arr.length; j++) { @@ -461,6 +481,7 @@ } //未回零更新 for (let i = 3; i < jsonData2.length; i++) { let arr2 = jsonData2[i]; @@ -479,6 +500,7 @@ } // console.log(jsonData2) //进片id jsonData2.forEach((item) => { item.forEach((subItem) => { if (subItem.read === 9999) { @@ -486,7 +508,7 @@ } }); }); //取片id jsonData2.forEach((item) => { item.forEach((subItem) => { if (subItem.read === 8888) { @@ -527,6 +549,7 @@ socket?.send(JSON.stringify(this.messagepack)); }, //替换语言 replaceChineseWithEnglish() { @@ -558,7 +581,11 @@ </script> <style scoped> html,body{ width:100%; height:85%; } .item-row { display: flex; CanadaMes-ui/src/views/power/index.vue
@@ -183,15 +183,15 @@ // 添加权限的验证规则 powerRules: { roleId: [ {required: true, message: '请输入角色', trigger: 'blur'} {required: true, message: this.$t('请输入角色'), trigger: 'blur'} ], permissionId: [ {required: true, message: '请输入权限描述', trigger: 'blur'}, {required: true, message: this.$t('请输入权限描述'), trigger: 'blur'}, ] }, options: [ {label: '生效', value: 1}, {label: '无效', value: 0} {label: this.$t('生效'), value: 1}, {label: this.$t('无效'), value: 0} ], roleList: [], permissionList: [] CanadaMes-ui/src/views/role/index.vue
@@ -114,14 +114,14 @@ <el-form label-width="130px"> <el-form-item :label="$t('langPermissions')" prop="permissionList"> <el-checkbox-group v-model="selectedPermissions"> <el-checkbox v-for="(permission, index) in permissionList" :key="index" :label="permission.name" :checked="permission.state === 1" @change="updatePermissionState(permission.name, $event)" >{{ permission.name }}</el-checkbox> </el-checkbox-group> <el-checkbox v-for="(permission, index) in permissionList" :key="index" :label="permission.name" @change="updatePermissionState(permission.name, $event)" >{{ permission.name }}</el-checkbox> </el-checkbox-group> </el-form-item> </el-form> <span slot="footer" class="dialog-footer"> @@ -178,16 +178,16 @@ // 添加角色的验证规则 addRoleRules: { name: [ {required: true, message: '请输入名称', trigger: 'blur'}, {min: 2, max: 15, message: '长度在 2 到 15 个字符', trigger: 'blur'} {required: true, message: this.$t('请输入名称'), trigger: 'blur'}, {min: 2, max: 15, message: this.$t('长度在 2 到 15 个字符'), trigger: 'blur'} ], state: [ {required: true, message: '请输入状态', trigger: 'blur'} {required: true, message: this.$t('请输入状态'), trigger: 'blur'} ] }, options: [ {label: '有效', value: 1}, {label: '无效', value: 0} {label: this.$t('有效'), value: 1}, {label: this.$t('无效'), value: 0} ] } }, @@ -251,22 +251,37 @@ }, showPermissionDialog(role) { this.selectedPermissions=[]; this.permissionList=[]; getById2({ roleId: role.id }).then((res) => { this.permissionList = res.data.permissionList; // 在 showPermissionDialog 方法中,只将选中的权限名称添加到 selectedPermissions 数组中 showPermissionDialog(role) { this.selectedPermissions = []; this.permissionList = []; getById2({ roleId: role.id }).then((res) => { this.permissionList = res.data.permissionList; // 只有状态为 1 的权限名称会被添加到 selectedPermissions 数组中 this.selectedPermissions = this.permissionList .filter(permission => permission.state === 1) .map(permission => permission.name); this.permissionDialogVisible = true; }); }, this.selectedPermissions = this.permissionList.map(({ name, state }) => ({ name, state: state === 1, })); console.log(this.selectedPermissions); this.permissionDialogVisible = true; }); }, // 在 updatePermissionState 方法中,根据复选框的勾选状态更新 selectedPermissions 数组 // updatePermissionState(name, isChecked) { // if (isChecked) { // // 如果复选框被勾选,将权限名称添加到数组中 // if (!this.selectedPermissions.includes(name)) { // this.selectedPermissions.push(name); // } // } else { // // 如果复选框被取消勾选,将权限名称从数组中移除 // const index = this.selectedPermissions.indexOf(name); // if (index !== -1) { // this.selectedPermissions.splice(index, 1); // } // } // }, // 取消编辑权限弹出框 cancelEditPermissions() { this.permissionDialogVisible = false; @@ -277,6 +292,7 @@ if (permission) { permission.state = isChecked ? 1 : 0; } }, @@ -293,6 +309,7 @@ // 成功更新权限后执行的操作 const 更新状态成功 = this.$t('更新状态成功'); this.$message.success(更新状态成功); this.permissionDialogVisible = false; }); }, // 展示添加角色的对话框 CanadaMes-ui/src/views/user/index.vue
@@ -137,7 +137,7 @@ <script> import { getById, removeById, saveOrUpdate, selectPage, resetPass } from "../../api/user"; import { getById, removeById, saveOrUpdate, selectPage, resetPass,currentUsername } from "../../api/user"; import { select } from "../../api/role"; import LanguageMixin from '../../lang/LanguageMixin' @@ -193,6 +193,8 @@ }, created () { this.getUserList(); this.getyonghu(); }, methods: { getUserList () { @@ -239,6 +241,7 @@ const successMessage = this.$t('updateSuccessMessage'); this.$message.success(successMessage); }); }, resetPassword (info) { this.$confirm(this.$t('confirmResetPassword'), this.$t('resetPassword'), { @@ -265,6 +268,14 @@ this.roleList = res.data; }); }, getyonghu () { currentUsername().then(res => { console.log(res) }); }, removeUserById (user) { // 弹框询问用户是否删除分类 this.$confirm(this.$t('confirmDeleteCategory'), this.$t('prompt'), { springboot-vue3/src/main/java/com/example/springboot/component/Configuration.java
New file @@ -0,0 +1,28 @@ package com.example.springboot.component; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.util.Properties; // Configuration 类用于加载配置文件并提供访问配置项的方法。 public class Configuration { private Properties properties; // Properties 对象,用于存储配置文件中的键值对。 // 构造函数,根据传入的文件名加载配置文件。 public Configuration(String fileName) throws IOException { // 使用类加载器获取资源文件的输入流。 InputStream inputStream = getClass().getClassLoader().getResourceAsStream(fileName); // 如果输入流为null,表示未找到文件,抛出FileNotFoundException。 if (inputStream == null) { throw new FileNotFoundException("Property file '" + fileName + "' not found in the classpath"); } properties = new Properties(); // 实例化Properties对象。 properties.load(inputStream); // 从输入流加载配置项。 } // 根据配置项的键获取其对应的值。 public String getProperty(String key) { return properties.getProperty(key); } } springboot-vue3/src/main/java/com/example/springboot/component/PlcParameter1.java
@@ -85,7 +85,7 @@ addresses.add("DB100.38"); addresses.add("DB100.40"); List<Short> arraylist = S7control.getinstance().readWords(addresses); //翻转 List<Short> fanzhuan1 = S7control.getinstance().ReadWord("DB100.8", 1); List<Short> xiaoche1 = S7control.getinstance().ReadWord("DB100.12", 1); // Short[] values1 = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 }; springboot-vue3/src/main/java/com/example/springboot/component/PlcParameter2.java
@@ -117,13 +117,13 @@ addressList0.add("DB101.10.2"); addressList0.add("DB101.10.3"); // 扫码枪 List<Boolean> data2 = S7control.getinstance().readBits(addressList0); List<String> addressList3 = new ArrayList<>(); addressList3.add("DB103.256"); addressList3.add("DB103.270"); List<String> data3 = S7control.getinstance().readStrings(addressList3); // A01 A02 B01 B02 List<String> addresses4 = new ArrayList<>(); addresses4.add("DB103.52"); addresses4.add("DB103.54"); @@ -143,10 +143,10 @@ // String[] values6 = { ".x1 ","x2 ","x3",";;x4","x5","x6","x7","x8","x9","x10","x11"}; // List<String> paramlist = new ArrayList<>(Arrays.asList(values6)); // Short[] values1 = { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}; // Short[] values1 = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1}; // List<Short> data = new ArrayList<>(Arrays.asList(values1)); // Boolean[] value4 = { true, true, true, true, true, true, true, true, true, // true}; // Boolean[] value4 = { false, false, false, false, false, false, false, false, false, // false}; // List<Boolean> data2 = new ArrayList<>(Arrays.asList(value4)); // String[] values3 = { ".x11 ","x21 "}; // List<String> data3 = new ArrayList<>(Arrays.asList(values3)); @@ -217,7 +217,7 @@ } // 将布尔列表写入 PLC // S7control.getinstance().WriteBit(addressList, messageBooleans); S7control.getinstance().WriteBit(addressList, messageBooleans); System.out.println("messageValues:" + messageBooleans); System.out.println("addressList:" + addressList); // 清空消息列表 springboot-vue3/src/main/java/com/example/springboot/component/PlcServoManualone.java
@@ -11,40 +11,17 @@ import java.util.List; public class PlcServoManualone extends Thread { String name = ""; Integer count = 0; public static String readFileToString(String filePath) throws IOException { File file = new File(filePath); return FileUtils.readFileToString(file, "UTF-8"); private Configuration config; public PlcServoManualone() throws IOException { config = new Configuration("config.properties"); } // public void insertDataToList(List<Short> list, String rangeAddress, int insertIndex) { // if (list.size() >= insertIndex + 14) { // List<Short> rangeData = new ArrayList<>(); // byte[] byteData = S7control.getinstance().ReadByte(rangeAddress, 14); // if (byteData != null && byteData.length >= 13) { // for (byte b : byteData) { // rangeData.add((short) b); // } // } else { // // 读取数据失败,添加默认值 // for (int i = 0; i < 14; i++) { // rangeData.add((short) -1); // } // } // // list.addAll(insertIndex, rangeData); // }else{ // List<Short> rangeData = new ArrayList<>(); // rangeData.add((short) 0); // list.addAll(insertIndex, rangeData); // } // } //读取id public StringBuilder queGlassid(String address,int count) { StringBuilder writedstrIdOut = new StringBuilder(); byte[] writedglassidbytesOut = S7control.getinstance().ReadByte(address, count); @@ -56,7 +33,7 @@ } return writedstrIdOut; } //写入id public void outmesid(String glassid,String address) { //System.out.println("outmesid:" + glassid); List<Byte> glassidlist = new ArrayList(); @@ -66,7 +43,7 @@ } byte[] bytes = Bytes.toArray(glassidlist); System.out.println("outmesidbytes:" + bytes.length); S7control.getinstance().WriteByte(address, bytes);// 派发出片id S7control.getinstance().WriteByte(address, bytes); } @Override @@ -80,59 +57,53 @@ } //A01组合中地址表集合 List<String> addresses = new ArrayList<>(); addresses.add("DB103.32"); addresses.add("DB100.144"); addresses.add("DB100.184"); addresses.add("DB100.186"); addresses.add("DB100.180"); addresses.add("DB100.182"); List<String> addresses = Arrays.asList(config.getProperty("A01.addresses").split(",")); //System.out.println(addresses); List<Short> arraylist = S7control.getinstance().readWords(addresses); // String rangeAddress = "DB100.148-161"; // String rangeAddress = "DB100.148"; // int insertIndex = 2; // insertDataToList(arraylist, rangeAddress, insertIndex); //A02组合中地址表集合 List<String> addresses2 = new ArrayList<>(); addresses2.add("DB103.26"); addresses2.add("DB100.188"); addresses2.add("DB100.190"); addresses2.add("DB100.146"); // addresses2.add("DB100.162-175"); List<String> addresses2 = Arrays.asList(config.getProperty("A02.addresses").split(",")); List<Short> arraylist2 = S7control.getinstance().readWords(addresses2); // String rangeAddress2 = "DB100.148-161"; // String rangeAddress2 = "DB100.162"; // int insertIndex2 = 4; // insertDataToList(arraylist2, rangeAddress2, insertIndex2); // System.out.println(arraylist2); //A01翻转地址 List<String> addresses3 = new ArrayList<>(); addresses3.add("DB103.42"); List<String> addresses3 = Arrays.asList(config.getProperty("A01.flipAddress")); List<Short> arraylist3 = S7control.getinstance().readWords(addresses3); //A02翻转地址 List<String> addresses4 = new ArrayList<>(); addresses4.add("DB103.46"); List<String> addresses4 = Arrays.asList(config.getProperty("A02.flipAddress")); List<Short> arraylist4 = S7control.getinstance().readWords(addresses4); //B01组合中地址 List<Short> arraylist5 = S7control.getinstance().ReadWord("DB103.27", 2); String b01Address = config.getProperty("B01.address"); List<Short> arraylist5 = S7control.getinstance().ReadWord(b01Address, 2); //B02组合地址 List<Short> arraylist6 = S7control.getinstance().ReadWord("DB103.29", 2); String b02Address = config.getProperty("B02.address"); List<Short> arraylist6 = S7control.getinstance().ReadWord(b02Address, 2); System.out.println(b02Address); // 所有故障按钮地址 List<String> addresses7 = new ArrayList<>(); addresses7.add("DB104.1.4"); addresses7.add("DB104.1.5"); addresses7.add("DB104.1.2"); addresses7.add("DB104.1.3"); addresses7.add("DB104.1.6"); addresses7.add("DB104.1.7"); List<String> addresses7 = Arrays.asList(config.getProperty("faultButtonAddresses").split(",")); List<Boolean> arraylist7 = S7control.getinstance().readBits(addresses7); // 进片id地址 String inputGlassIdAddress = config.getProperty("inputGlassIdAddress"); String outputGlassIdAddress = config.getProperty("outputGlassIdAddress"); StringBuilder queueid1 = queGlassid(inputGlassIdAddress, 14); // 存片id地址 StringBuilder queueid2 = queGlassid(outputGlassIdAddress, 14); //A01启动地址 List<String> A01start = Arrays.asList(config.getProperty("A01start")); //A02启动地址 List<String> A02start = Arrays.asList(config.getProperty("A02start")); //A01半自动地址 List<String> A01Bstart = Arrays.asList(config.getProperty("A01Bstart")); //A02半自动地址 List<String> A02Bstart = Arrays.asList(config.getProperty("A02Bstart")); //回零按钮地址 List<String> waddresses4 = Arrays.asList(config.getProperty("HomedButtonAddresses").split(",")); // 所有复位按钮地址 List<String> Reset = Arrays.asList(config.getProperty("resetButtonAddresses")); // 所有未回零按钮地址 List<String> addresses8 = Arrays.asList(config.getProperty("notHomedButtonAddresses")); // 所有故障按钮转换为1和0 short[] params2 = new short[arraylist7.size()]; @@ -142,14 +113,6 @@ } // 所有复位按钮地址 List<String> Reset = new ArrayList<>(); Reset.add("DB101.4.0"); Reset.add("DB101.4.3"); Reset.add("DB101.3.6"); Reset.add("DB101.4.1"); Reset.add("DB101.4.4"); Reset.add("DB101.4.6"); List<Boolean> Reset1 = S7control.getinstance().readBits(Reset); // 所有故障按钮转换为1和0 @@ -159,14 +122,8 @@ rReset[i] = value ? (short) 1 : (short) 0; } // 所有未回零按钮地址 List<String> addresses8 = new ArrayList<>(); addresses8.add("DB104.9.0"); addresses8.add("DB104.9.1"); addresses8.add("DB104.9.0"); addresses8.add("DB104.9.1"); addresses8.add("DB104.9.4"); addresses8.add("DB104.9.5"); List<Boolean> arraylist8 = S7control.getinstance().readBits(addresses8); short[] params = new short[arraylist8.size()]; for (int i = 0; i < arraylist8.size(); i++) { @@ -174,10 +131,7 @@ params[i] = value ? (short) 1 : (short) 0; } // 进片id地址 StringBuilder queueid1 = queGlassid("DB100.148", 14); // 存片id地址 StringBuilder queueid2 = queGlassid("DB100.162", 14); @@ -239,47 +193,6 @@ WebSocketServer webSocketServer = WebSocketServer.sessionMap.get("ServoManualone"); if (webSocketServer != null) { List<String> messages = webSocketServer.getMessages(); // A01组合地址 List<String> waddresses1 = new ArrayList<>(); waddresses1.add("DB103.32"); waddresses1.add("DB100.144"); // waddresses1.add("DB100.148-161"); waddresses1.add("DB100.184"); waddresses1.add("DB100.186"); waddresses1.add("DB100.180"); waddresses1.add("DB100.182"); // A02组合地址 List<String> waddresses2 = new ArrayList<>(); waddresses2.add("DB103.26"); waddresses2.add("DB100.188"); waddresses2.add("DB100.190"); waddresses2.add("DB100.146"); // waddresses2.add("DB100.162-175"); // 复位按钮地址 List<String> waddresses3 = new ArrayList<>(); waddresses3.add("DB101.4.0"); waddresses3.add("DB101.4.3"); waddresses3.add("DB101.3.6"); waddresses3.add("DB101.4.1"); waddresses3.add("DB101.4.4"); waddresses3.add("DB101.4.6"); //回零按钮地址 List<String> waddresses4 = new ArrayList<>(); waddresses4.add("DB101.3.7"); waddresses4.add("DB101.4.2"); waddresses4.add("DB101.4.5"); waddresses4.add("DB101.4.7"); String waddresses5="DB100.148"; String waddresses6="DB100.162"; @@ -288,8 +201,6 @@ String lastMessage = messages.get(messages.size() - 1); // System.out.println("lastMessage:" + lastMessage); JSONArray messageArray = new JSONArray(lastMessage); // 写入AO1组合 @@ -312,15 +223,11 @@ } if (!sValue.isEmpty()) { S7control.getinstance().WriteWord(waddresses1, sValue); List<String> A01start = new ArrayList<>(); A01start.add("DB101.5.0"); S7control.getinstance().WriteWord(addresses, sValue); Boolean[] a01values7 = { true}; List<Boolean> a01startval = new ArrayList<>(Arrays.asList(a01values7)); S7control.getinstance().WriteBit(A01start, a01startval); System.out.println("Values " + sValue + " written to PLC at address " + waddresses1); System.out.println("Values " + sValue + " written to PLC at address " + addresses); } } @@ -344,13 +251,12 @@ } } if (!sValue2.isEmpty()) { S7control.getinstance().WriteWord(waddresses2, sValue2); List<String> A02start = new ArrayList<>(); A02start.add("DB101.5.1"); S7control.getinstance().WriteWord(addresses2, sValue2); Boolean[] a02values7 = {true}; List<Boolean> a02startval = new ArrayList<>(Arrays.asList(a02values7)); S7control.getinstance().WriteBit(A02start, a02startval); System.out.println("Values " + sValue2 + " written to PLC at address " + waddresses2); System.out.println("Values " + sValue2 + " written to PLC at address " + addresses2); } } @@ -374,8 +280,8 @@ } } if (!sValue3.isEmpty()) { S7control.getinstance().WriteBit(waddresses3, sValue3); System.out.println("Values " + sValue3 + " written to PLC at address " + waddresses3); S7control.getinstance().WriteBit(Reset, sValue3); System.out.println("Values " + sValue3 + " written to PLC at address " + Reset); } } @@ -404,7 +310,6 @@ } //进片ID写入 if (messageArray.getJSONArray(4).size() > 0) { // JSONArray jsonArray5 = messageArray.getJSONArray(4); @@ -412,8 +317,8 @@ if (!jsonArray5.isEmpty()) { // String value = (String) jsonArray5.get(0); jsonArray5 = jsonArray5.replaceAll("[\\[\\]\"]", ""); // 去除方括号和双引号 outmesid( jsonArray5,waddresses5); System.out.println("Values " + jsonArray5 + " written to PLC at address " + waddresses5); outmesid( jsonArray5,inputGlassIdAddress); System.out.println("Values " + jsonArray5 + " written to PLC at address " + inputGlassIdAddress); } } // 存片ID写入 @@ -422,8 +327,8 @@ if (!jsonArray6.isEmpty()) { String value2 = (String) jsonArray6.get(0); outmesid( value2,waddresses6); System.out.println("Values " + value2 + " written to PLC at address " + waddresses6); outmesid( value2,outputGlassIdAddress); System.out.println("Values " + value2 + " written to PLC at address " + outputGlassIdAddress); } } if (messageArray.getJSONArray(6).size() > 0) { @@ -445,17 +350,10 @@ } if (!sValueb4.isEmpty()) { List<String> A01Bstart = new ArrayList<>(); A01Bstart.add("DB101.11.0"); // Boolean[] a01values7 = {true}; // List<Boolean> a01Bstartval = new ArrayList<>(Arrays.asList(a01values7)); S7control.getinstance().WriteBit(A01Bstart, sValueb4); System.out.println("Values " + sValueb4 + " written to PLC at address " + A01Bstart); } } if (messageArray.getJSONArray(7).size() > 0) { @@ -477,46 +375,11 @@ } if (!sValueb5.isEmpty()) { List<String> A02Bstart = new ArrayList<>(); A02Bstart.add("DB101.11.1"); // Boolean[] a01values7 = {true}; // List<Boolean> a01Bstartval = new ArrayList<>(Arrays.asList(a01values7)); S7control.getinstance().WriteBit(A02Bstart, sValueb5); System.out.println("Values " + sValueb5 + " written to PLC at address " + A02Bstart); } } // if (messageArray.getJSONArray(6).size() > 0) { // JSONArray jsonArray6 = messageArray.getJSONArray(6); // // if (!jsonArray6.isEmpty()) { // String value2 = (String) jsonArray6.get(0); // List<String> A01Bstart = new ArrayList<>(); // A01Bstart.add("DB101.11.0"); // Boolean[] a01values7 = {true}; // List<Boolean> a01Bstartval = new ArrayList<>(Arrays.asList(a01values7)); // S7control.getinstance().WriteBit(A01Bstart, a01Bstartval); // System.out.println("Values " + value2 + " written to PLC at address " + waddresses6); // } // } // if (messageArray.getJSONArray(7).size() > 0) { // JSONArray jsonArray6 = messageArray.getJSONArray(7); // // if (!jsonArray6.isEmpty()) { // String value2 = (String) jsonArray6.get(0); // List<String> A02Bstart = new ArrayList<>(); // A02Bstart.add("DB101.11.1"); // Boolean[] a02values7 = {true}; // List<Boolean> a02Bstartval = new ArrayList<>(Arrays.asList(a02values7)); // S7control.getinstance().WriteBit(A02Bstart, a02Bstartval); // System.out.println("Values " + value2 + " written to PLC at address " + waddresses6); // } // } // 清空消息列表 webSocketServer.clearMessages(); springboot-vue3/src/main/java/com/example/springboot/config/AppRunnerConfig.java
@@ -1,28 +1,10 @@ package com.example.springboot.config; import org.springframework.beans.factory.annotation.Autowired; import com.example.springboot.component.*; import org.springframework.boot.ApplicationArguments; import org.springframework.boot.ApplicationRunner; import org.springframework.core.annotation.Order; import org.springframework.stereotype.Component; import com.example.springboot.component.PLCAutomaticParameterSetting; import com.example.springboot.component.PlcHold; import com.example.springboot.component.PlcParameter; import com.example.springboot.component.Plcaction; import com.example.springboot.component.Plchome; import com.example.springboot.component.Plcalarm; import com.example.springboot.component.Plcsign; import com.example.springboot.component.Plcstate; import com.example.springboot.component.PlcPositioning1; import com.example.springboot.component.PlcPositioning2; import com.example.springboot.component.PlcParameter2; import com.example.springboot.component.PlcParameter1; import com.example.springboot.component.PlcServoManualone; import com.example.springboot.component.PLCAutomaticParameterSetting; import com.example.springboot.component.PlcManualonePosition; import com.example.springboot.component.PlcManualonePosition2; import com.example.springboot.component.PLCManualJog; @Component @Order(1) springboot-vue3/src/main/java/com/example/springboot/controller/RolePermissionController.java
@@ -94,6 +94,7 @@ @GetMapping("/getByRoleId") public com.example.springboot.common.Result selectquanxian(@RequestParam("roleId") int roleId) { List<Map<String, Object>> resultSet = RolePermissionMapper.selectquanxian(roleId); springboot-vue3/src/main/java/com/example/springboot/controller/UserController.java
@@ -168,6 +168,20 @@ private class UpdatePasswordRequest { } @ApiOperation(value = "获取当前登录用户的用户名") @GetMapping("/currentUsername") @RequiresAuthentication // 确保只有认证过的用户可以访问此接口 public Result getCurrentUsername() { User currentUser = SecurityUtil.getCurrentUser(); if (currentUser != null) { // 假设User类有getUsername方法可以获取用户名 String username = currentUser.getUsername(); return Result.success(username); } else { return Result.fail("用户未登录或会话已过期"); } } springboot-vue3/src/main/java/com/example/springboot/entity/RolePermission.java
@@ -21,7 +21,8 @@ private Long permissionId; @ApiModelProperty("状态") private Integer state; @ApiModelProperty("名字") private String name; springboot-vue3/src/main/java/com/example/springboot/entity/vo/RolePermissionVo.java
@@ -16,4 +16,5 @@ private Integer state; private Date createTime; private Date updateTime; private String name; } springboot-vue3/src/main/resources/config.properties
New file @@ -0,0 +1,34 @@ #PlcServoManualone 地址 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ # A01组合中地址表集合 A01.addresses=DB103.32,DB100.144,DB100.184,DB100.186,DB100.180,DB100.182 # A02组合中地址表集合 A02.addresses=DB103.26,DB100.188,DB100.190,DB100.146 # A01翻转地址 A01.flipAddress=DB103.42 # A02翻转地址 A02.flipAddress=DB103.46 # B01组合中地址 B01.address=DB103.27 # B02组合地址 B02.address=DB103.29 # 所有故障按钮地址 faultButtonAddresses=DB104.1.4,DB104.1.5,DB104.1.2,DB104.1.3,DB104.1.6,DB104.1.7 # 复位按钮地址 resetButtonAddresses=DB101.4.0,DB101.4.3,DB101.3.6,DB101.4.1,DB101.4.4,DB101.4.6 # 所有未回零按钮地址 notHomedButtonAddresses=DB104.9.0,DB104.9.1,DB104.9.0,DB104.9.1,DB104.9.4,DB104.9.5 # 进片id地址 inputGlassIdAddress=DB100.148 # 存片id地址 outputGlassIdAddress=DB100.162 #回零按钮地址 HomedButtonAddresses=DB101.3.7,DB101.4.2,DB101.4.5,DB101.4.7 #A02start A02start=DB101.5.1 #A01start A01start=DB101.5.0 #A02start A02Bstart=DB101.11.1 #A01start A01Bstart=DB101.11.0 #------------------------------------------------------------