wuyouming666
2023-12-05 58607e314f405faf6f9479be894243098aedb3bb
增加Configuration 对象   plc地址存储在config.properties
PlcServoManualone调用
22个文件已修改
2个文件已添加
591 ■■■■ 已修改文件
CanadaMes-ui/src/api/user.js 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CanadaMes-ui/src/lang/locales/en-US.json 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CanadaMes-ui/src/lang/locales/zh-CN.json 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
CanadaMes-ui/src/views/Electrical/ManualJog.vue 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CanadaMes-ui/src/views/Electrical/ManualonePosition.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
CanadaMes-ui/src/views/Electrical/ManualonePosition2.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
CanadaMes-ui/src/views/Electrical/Parameter1.vue 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CanadaMes-ui/src/views/Electrical/Parameter2.vue 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CanadaMes-ui/src/views/Electrical/Positioning1.vue 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CanadaMes-ui/src/views/Electrical/Positioning2.vue 29 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CanadaMes-ui/src/views/Electrical/ServoManualone.vue 39 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CanadaMes-ui/src/views/power/index.vue 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CanadaMes-ui/src/views/role/index.vue 73 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CanadaMes-ui/src/views/user/index.vue 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/java/com/example/springboot/component/Configuration.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/java/com/example/springboot/component/PlcParameter1.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/java/com/example/springboot/component/PlcParameter2.java 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/java/com/example/springboot/component/PlcServoManualone.java 247 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/java/com/example/springboot/config/AppRunnerConfig.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/java/com/example/springboot/controller/RolePermissionController.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/java/com/example/springboot/controller/UserController.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/java/com/example/springboot/entity/RolePermission.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/java/com/example/springboot/entity/vo/RolePermissionVo.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/resources/config.properties 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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
#------------------------------------------------------------