wu
2023-09-12 9041bf0365d5ef7f9215543c6bc2e51375802943
Merge branch 'master' of http://10.153.19.25:10101/r/CanadaMes
18个文件已修改
1个文件已添加
625 ■■■■ 已修改文件
CanadaMes-ui/src/api/home.js 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CanadaMes-ui/src/lang/locales/en-US.json 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CanadaMes-ui/src/lang/locales/zh-CN.json 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CanadaMes-ui/src/views/Electrical/Action.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CanadaMes-ui/src/views/Electrical/Parameter.vue 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CanadaMes-ui/src/views/Electrical/Sign.vue 225 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CanadaMes-ui/src/views/Electrical/State.vue 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CanadaMes-ui/src/views/Electrical/alarm.vue 17 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CanadaMes-ui/src/views/home/index.vue 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CanadaMes-ui/src/views/user/index.vue 60 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/java/com/example/springboot/component/Plcalarm.java 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/java/com/example/springboot/component/Plchome.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/java/com/example/springboot/component/Plcsign.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/java/com/example/springboot/component/Plcstate.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/java/com/example/springboot/config/AppRunnerConfig.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/java/com/example/springboot/controller/AlarmController.java 17 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/java/com/example/springboot/controller/HomeController.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/java/com/example/springboot/mapper/HomeMapper.java 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/java/com/example/springboot/service/JdbcConnections.java 70 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CanadaMes-ui/src/api/home.js
@@ -43,9 +43,9 @@
    })
}
export function UpdateTask(types,shelfrack) {
export function UpdateTask(types,glassid,shelfrack) {
    return request({
        url: '/home/UpdateTask?types=' + types + '&shelfrack='+shelfrack,
        url: '/home/UpdateTask?types=' + types + '&glassid='+glassid+'&shelfrack='+shelfrack,
        method: 'get',
        data :""
    })
CanadaMes-ui/src/lang/locales/en-US.json
@@ -170,5 +170,6 @@
  "Sign": "Sign",
  "State": "State",
  "Alarm": "Alarm",
  "Distribute": "Distribute"
  "Distribute": "Distribute",
  "Search": "Search"
}
CanadaMes-ui/src/lang/locales/zh-CN.json
@@ -35,7 +35,6 @@
  "exit": "退出",
  "changePassword": "修改密码",
  "resetPassword": "重置密码",
  "home": "主页",
  "role": "角色",
  "langRoleManagement": "角色管理",
@@ -171,6 +170,6 @@
  "Sign": "IO状态",
  "State": "State",
  "Alarm": "报警信息",
  "Distribute": "下发"
  "Distribute": "下发",
  "Search": "搜索"
}
CanadaMes-ui/src/views/Electrical/Action.vue
@@ -147,7 +147,7 @@
            }
          }
          console.log(this.record.xyData);
          // console.log(this.record.xyData);
          this.$forceUpdate();
        };
@@ -164,7 +164,7 @@
    },
    send () {
      this.messagepack.data = this.record.xyData.map(item => parseInt(item.value)); // 转换为整数数组
      console.log(this.messagepack);
      //console.log(this.messagepack);
      socket?.send(JSON.stringify(this.messagepack));
    }
CanadaMes-ui/src/views/Electrical/Parameter.vue
@@ -22,7 +22,8 @@
  <el-input style="width: 280px; border:none;" class="in_mc" v-model="item.name" readonly></el-input> 
  <span style="margin-right: 5px; width: 50px;">{{ item.value }}</span>
  <span style="margin-right: 5px; font-size: 14px;">|</span>
  <input v-model="item.value2" type="number" style="width: 30px; margin-right: 5px; margin-top: 5px; font-size: 16px;">
        <input v-model="item.value2" type="number"
          style="width: 30px; margin-right: 5px; margin-top: 5px; font-size: 16px;">
</div>
    </el-form>
  </div>
@@ -102,7 +103,7 @@
  let isButtonDisabled = this.record.state.includes(1); 
  // 判断state中是否存在1
  console.log(isButtonDisabled)
          //console.log(isButtonDisabled)
  this.isButtonDisabled = isButtonDisabled; // 将判断结果保存到变量isButtonDisabled中
  for (let a = 0; a <= this.record.params[0].length - 1; a++) {
@@ -113,7 +114,7 @@
    }
  }
  console.log(this.record.xyData);
          //console.log(this.record.xyData);
  this.$forceUpdate();
};
  
@@ -130,7 +131,7 @@
    },
    send() {
      this.messagepack.data = this.record.xyData.map((item) => parseInt(item.value2)); // 转换为整数数组
      console.log(this.messagepack);
      //console.log(this.messagepack);
      socket?.send(JSON.stringify(this.messagepack));
    },
    handleChange(index, value) {
@@ -149,6 +150,7 @@
.el-input__inner {
  border: 1px solid black;
}
.in_mc{
  border:none;
@@ -162,6 +164,7 @@
#btn_div .el-button {
  float: right;
}
input[type="number"]::-webkit-inner-spin-button,
  input[type="number"]::-webkit-outer-spin-button {
    -webkit-appearance: none;
@@ -169,6 +172,7 @@
  }
  input[type="number"] {
    -moz-appearance: textfield; /* Firefox中禁用上下箭头 */
  -moz-appearance: textfield;
  /* Firefox中禁用上下箭头 */
  }
</style>
CanadaMes-ui/src/views/Electrical/Sign.vue
@@ -13,8 +13,7 @@
    <div>Sign</div>
    <div style="padding-right: 30px;display: flex;flex-wrap: wrap;" class="neir">
      <div class="kuai_sb" v-for="item in record.xyData" :key="item.name">
        <el-col class="deng" :class="getStatusClass(item.value, item.name)">
          <!-- <el-input v-model="item.value" style="width: 280px;" class="in_mc"></el-input> -->
        <el-col class="deng" :class="getStatusClass(item.value)">
        </el-col>
        <el-input v-model="item.name" style="width: 280px;" class="in_mc"></el-input>
@@ -34,102 +33,103 @@
  data () {
    return {
      record: {
        //定义数组,并添加默认值
        params: [1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0,
          1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,],
        xyData: [
          { name: 'D01.SR dec', value: 0 },
          { name: "D01.SR in pos", value: 0 },
          { name: "D02.SR dec", value: 0 },
          { name: "D02.SR in pos", value: 0 },
          { name: "D03.SR into", value: 0 },
          { name: "D03.SR dec", value: 0 },
          { name: 'D03.SR in pos', value: 0 },
          { name: "D04.SR dec", value: 0 },
          { name: "D04.SR in pos", value: 0 },
          { name: "D05.SR dec", value: 0 },
          { name: "D05.SR in pos", value: 0 },
          { name: "D06.SR dec", value: 0 },
          { name: 'D06.SR in pos', value: 0 },
          { name: "B01.SR out dec", value: 0 },
          { name: "B01.SR out in pos", value: 0 },
          { name: "B01.SR in dec", value: 0 },
          { name: "B01.SR in in pos", value: 0 },
          { name: "B01.SR turn on", value: 0 },
          { name: 'B01.SR turn off', value: 0 },
          { name: "B01.SR up", value: 0 },
          { name: "B01.SR down", value: 0 },
          { name: "B02.SR out dec", value: 0 },
          { name: "B02.SR out in pos", value: 0 },
          { name: "B02.SR in dec", value: 0 },
          { name: 'B02.SR in in pos', value: 0 },
          { name: "B02.SR turn on", value: 0 },
          { name: "B02.SR turn off", value: 0 },
          { name: "B02.SR up", value: 0 },
          { name: "B02.SR down", value: 0 },
          { name: "B01.SR out safety", value: 0 },
          { name: "B01.SR in safety", value: 0 },
          { name: "B02.SR out safety", value: 0 },
          { name: "SB.start(+)", value: 0 },
          { name: "SB.stop(1)", value: 0 },
          { name: "SB.reset", value: 0 },
          { name: "SB.auto/manul", value: 0 },
          { name: "SB.pause", value: 0 },
          { name: "SB.emg", value: 0 },
          { name: "D01.SB.start", value: 0 },
          { name: "D06.SB.start", value: 0 },
          { name: "B02.SR in safety", value: 0 },
          { name: "SAFETYDOOR.requset", value: 0 },
          { name: "SAFETYDOOR.confirm", value: 0 },
          { name: "SAFETYDOOR.reset", value: 0 },
          { name: "LED.red", value: 0 },
          { name: "LED.green", value: 0 },
          { name: "LED.yellow", value: 0 },
          { name: "D01.LED.green", value: 0 },
          { name: "D06.LED.green", value: 0 },
          { name: "B01.YV.turn", value: 0 },
          { name: "B01.YV.up down", value: 0 },
          { name: "B01.YV.gassing", value: 0 },
          { name: "B02.YV.turn", value: 0 },
          { name: "B02.YV.up down", value: 0 },
          { name: "B02.YV.gassing", value: 0 },
          { name: "SAFETYDOOR.led", value: 0 },
          { name: "SAFETYDOOR.open", value: 0 },
          { name: 'D01.SR dec', value: 1 },
          { name: "D01.SR in pos", value: 1 },
          { name: "D02.SR dec", value: 1 },
          { name: "D02.SR in pos", value: 1 },
          { name: "D03.SR into", value: 1 },
          { name: "D03.SR dec", value: 1 },
          { name: 'D03.SR in pos', value: 1 },
          { name: "D04.SR dec", value: 1 },
          { name: "D04.SR in pos", value: 1 },
          { name: "D05.SR dec", value: 1 },
          { name: "D05.SR in pos", value: 1 },
          { name: "D06.SR dec", value: 1 },
          { name: 'D06.SR in pos', value: 1 },
          { name: "B01.SR out dec", value: 1 },
          { name: "B01.SR out in pos", value: 1 },
          { name: "B01.SR in dec", value: 1 },
          { name: "B01.SR in in pos", value: 1 },
          { name: "B01.SR turn on", value: 1 },
          { name: 'B01.SR turn off', value: 1 },
          { name: "B01.SR up", value: 1 },
          { name: "B01.SR down", value: 1 },
          { name: "B02.SR out dec", value: 1 },
          { name: "B02.SR out in pos", value: 1 },
          { name: "B02.SR in dec", value: 1 },
          { name: 'B02.SR in in pos', value: 1 },
          { name: "B02.SR turn on", value: 1 },
          { name: "B02.SR turn off", value: 1 },
          { name: "B02.SR up", value: 1 },
          { name: "B02.SR down", value: 1 },
          { name: "B01.SR out safety", value: 1 },
          { name: "B01.SR in safety", value: 1 },
          { name: "B02.SR out safety", value: 1 },
          { name: "SB.start(+)", value: 1 },
          { name: "SB.stop(1)", value: 1 },
          { name: "SB.reset", value: 1 },
          { name: "SB.auto/manul", value: 1 },
          { name: "SB.pause", value: 1 },
          { name: "SB.emg", value: 1 },
          { name: "D01.SB.start", value: 1 },
          { name: "D06.SB.start", value: 1 },
          { name: "B02.SR in safety", value: 1 },
          { name: "SAFETYDOOR.requset", value: 1 },
          { name: "SAFETYDOOR.confirm", value: 1 },
          { name: "SAFETYDOOR.reset", value: 1 },
          { name: "LED.red", value: 1 },
          { name: "LED.green", value: 1 },
          { name: "LED.yellow", value: 1 },
          { name: "D01.LED.green", value: 1 },
          { name: "D06.LED.green", value: 1 },
          { name: "B01.YV.turn", value: 1 },
          { name: "B01.YV.up down", value: 1 },
          { name: "B01.YV.gassing", value: 1 },
          { name: "B02.YV.turn", value: 1 },
          { name: "B02.YV.up down", value: 1 },
          { name: "B02.YV.gassing", value: 1 },
          { name: "SAFETYDOOR.led", value: 1 },
          { name: "SAFETYDOOR.open", value: 1 },
        ],
        // canshu: [
        //   'D01.SR dec',
        //   'D01.SR in pos',
        //   'D02.SR dec',
        //   'D02.SR in pos',
        //   'D03.SR into',
        //   'D03.SR dec',
        //   'D03.SR in pos',
        //   'D04.SR dec',
        //   'D04.SR in pos',
        //   'D05.SR dec',
        //   'D05.SR in pos',
        //   'D06.SR dec',
        //   'D06.SR in pos',
        //   'B01.SR out dec',
        //   'B01.SR out in pos',
        //   'B01.SR in dec',
        //   'B01.SR in in pos',
        //   'B01.SR turn on',
        //   'B01.SR turn off',
        //   'B01.SR up',
        //   'B01.SR down',
        //   'B02.SR out dec',
        //   'B02.SR out in pos',
        //   'B02.SR in dec',
        //   'B02.SR in in pos',
        //   'B02.SR turn on',
        //   'B02.SR turn off',
        //   'B02.SR up',
        //   'B02.SR down',
        //   'LED.red',
        //   'LED.green',
        //   'LED.yellow',
        // ],
        canshu: [
          'D01.SR dec',
          'D01.SR in pos',
          'D02.SR dec',
          'D02.SR in pos',
          'D03.SR into',
          'D03.SR dec',
          'D03.SR in pos',
          'D04.SR dec',
          'D04.SR in pos',
          'D05.SR dec',
          'D05.SR in pos',
          'D06.SR dec',
          'D06.SR in pos',
          'B01.SR out dec',
          'B01.SR out in pos',
          'B01.SR in dec',
          'B01.SR in in pos',
          'B01.SR turn on',
          'B01.SR turn off',
          'B01.SR up',
          'B01.SR down',
          'B02.SR out dec',
          'B02.SR out in pos',
          'B02.SR in dec',
          'B02.SR in in pos',
          'B02.SR turn on',
          'B02.SR turn off',
          'B02.SR up',
          'B02.SR down',
          'LED.red',
          'LED.green',
          'LED.yellow',
        ],
      },
@@ -148,30 +148,14 @@
    this.init();
  },
  methods: {
    getStatusClass (zhuangtai, mc) {
      if (mc === "LED.green" && zhuangtai === 0) {
        return "green";
      }
      if (mc === "LED.red" && zhuangtai === 0) {
        return "red";
      }
      if (mc === "LED.yellow" && zhuangtai === 0) {
        return "yellow"
      }
    //根据读取PLC的值,根据名称改变颜色
    getStatusClass (zhuangtai) {
      if (zhuangtai === 0) {
        return "op";
      }
      else {
        return "dow";
      }
    },
    init () {
@@ -198,14 +182,16 @@
          //console.log("收到数据====" + msg.data);
          let obj = JSON.parse(msg.data);
          //this.$set(this.record.params, 0, obj.params[0]);
          this.record.params[0] = obj.sig[0];
          for (let a = 0; a <= this.record.xyData[0] - 1; a++) {
          for (let a = 0; a < this.record.params[0].length; a++) {
            if (!this.record.xyData[a]) {
              this.record.xyData[a] = { name: this.record.canshu[a], value: this.record.params[0][a] };
            } else {
              this.record.xyData[a].value = this.record.params[0][a];
            }
          }
          this.$forceUpdate();
@@ -221,10 +207,6 @@
        }
      }
    },
    send () {
      this.messagepack.data = { taskname: "前端到后台" };
      socket?.send(JSON.stringify(this.messagepack));  // 将组装好的json发送给服务端,由服务端进行转发
    }
  }
}
@@ -241,10 +223,15 @@
  padding: 0;
}
/* .neir {
.app {
  height: 100%;
}
.neir {
  /* height: 580px; */
  height: 90%;
  overflow-y: auto;
} */
}
.el-input__inner {
  text-align: center;
CanadaMes-ui/src/views/Electrical/State.vue
@@ -17,7 +17,7 @@
      <div class="kuai_div" v-for="item in this.record.xyData" :key="item.name">
        <el-input style="width: 280px;" class="in_mc" v-model="item.name"></el-input>
        <el-input v-model.number="item.value" style="width: 80px;"></el-input>
        <el-input v-model="item.value" readonly="readonly" style="width: 80px;"></el-input>
      </div>
@@ -39,18 +39,18 @@
  data () {
    return {
      record: {
        params: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0,],
        params: [1, 1, 1, 1, 1, 1, 1, 1, 1, 1,],
        xyData: [
          { name: 'D01.State', value: 0 },
          { name: 'D02.State', value: 0 },
          { name: 'B01.State', value: 0 },
          { name: 'B02.State', value: 0 },
          { name: 'A01.State', value: 0 },
          { name: 'A02.State', value: 0 },
          { name: 'D03.State', value: 0 },
          { name: 'D04.State', value: 0 },
          { name: 'D05.State', value: 0 },
          { name: 'D06.State', value: 0 },
          { name: 'D01.State', value: "自动" },
          { name: 'D02.State', value: "自动" },
          { name: 'B01.State', value: "自动" },
          { name: 'B02.State', value: "自动" },
          { name: 'A01.State', value: "自动" },
          { name: 'A02.State', value: "自动" },
          { name: 'D03.State', value: "自动" },
          { name: 'D04.State', value: "自动" },
          { name: 'D05.State', value: "自动" },
          { name: 'D06.State', value: "自动" },
        ],
        // canshu: [
        //   'D01.State',
@@ -107,7 +107,9 @@
          //console.log("收到数据====" + msg.data);
          let obj = JSON.parse(msg.data);
          this.record.params[0] = obj.sta[0];
          for (let a = 0; a <= this.record.xyData[0].length - 1; a++) {
          console.log(this.record.params[0]);
          //将读取到的PLC的数据,与定义的xyData,组合成新的数组
          for (let a = 0; a < this.record.params[0].length; a++) {
            if (!this.record.xyData[a]) {
              this.record.xyData[a] = { name: this.record.canshu[a], value: this.record.params[0][a] };
            } else {
@@ -133,9 +135,15 @@
      console.log(this.messagepack);
      socket?.send(JSON.stringify(this.messagepack));
    },
    handleChange (index, value) {
      this.record.xyData[index].value = value;
    valuezhi (zhi) {
      if (zhi == 1) {
        return "自动";
    }
      else {
        return "手动";
      }
    }
  }
CanadaMes-ui/src/views/Electrical/alarm.vue
@@ -20,7 +20,8 @@
      <el-date-picker v-model="shijian2" type="datetime" placeholder="选择日期时间" align="right"
        :picker-options="pickerOptions">
      </el-date-picker>
      <el-button type="primary" @click="selectTime()">查询</el-button>
      &nbsp;&nbsp;
      <el-button type="primary" @click="selectTime()">{{ $t('Search') }}</el-button>
    </div>
    <el-table :data="localizedRoles" style="width: 100%;" height="550">
@@ -99,9 +100,11 @@
    if (this.shijian1 == "" || this.shijian2 == "") {
      //查询当天报警信息
      this.load();
    }
    else {
      //根据时间查询报警信息
      this.selectTime();
    }
@@ -122,11 +125,13 @@
    },
    selectTime () {
      //moment需要单独安转依赖,npm install moment
      let sj1 = moment(this.shijian1).format('YYYY-MM-DD%20HH:mm');
      let sj2 = moment(this.shijian2).format('YYYY-MM-DD%20HH:mm')
      //调用setTime方法给roles赋值
      setTime(sj1, sj2).then(res => {
        this.roles = res.data.list;
        //table中的内容进行语言转换
        const language = this.$i18n.locale;
        if (language === 'zh-CN') {
          this.replaceChineseWithEnglish();
@@ -135,7 +140,7 @@
        }
      });
    },
    //语言转换
    replaceChineseWithEnglish () {
      const translation = this.$t('translation');
      this.localizedRoles = this.roles.map(role => ({
@@ -165,8 +170,6 @@
        };
        //  浏览器端收消息,获得从服务端发送过来的文本消息
        socket.onmessage = function (msg) {
          //console.log("收到数据====" + msg.data);
          let obj = JSON.parse(msg.data);
          this.record.params[0] = obj.arm;
@@ -190,10 +193,6 @@
      }
    },
    send () {
      this.messagepack.data = { taskname: "前端到后台" };
      socket?.send(JSON.stringify(this.messagepack));  // 将组装好的json发送给服务端,由服务端进行转发
    }
  }
CanadaMes-ui/src/views/home/index.vue
@@ -164,8 +164,11 @@
                    <el-table-column prop="lengthWidth" label="Length and width"></el-table-column>
                    <el-table-column prop="coating" label="coating"></el-table-column>
                    <el-table-column label="Operate">
                        <el-button type="primary" style="padding: 4px 10px;font-size: 12px;" @click="endtask(0)">end
                        <template slot-scope='scope'>
                            <el-button type="primary" style="padding: 4px 10px;font-size: 12px;"
                                @click="endtask(0, scope.row.glassId, scope.row.cell)">end
                            task</el-button>
                        </template>
                    </el-table-column>
                </el-table>
                <el-table :data="this.tasklist2" border style="width: 100%">
@@ -175,8 +178,11 @@
                    <el-table-column prop="lengthWidth" label="Length and width"></el-table-column>
                    <el-table-column prop="coating" label="coating"></el-table-column>
                    <el-table-column label="Operate">
                        <el-button type="primary" style="padding: 4px 10px;font-size: 12px;" @click="endtask(1)">end
                        <template slot-scope='scope'>
                            <el-button type="primary" style="padding: 4px 10px;font-size: 12px;"
                                @click="endtask(1, scope.row.glassId, scope.row.cell)">end
                            task</el-button>
                        </template>
                    </el-table-column>
                </el-table>
            </div>
@@ -262,7 +268,7 @@
                <el-table-column prop="endTime" label="endTime"></el-table-column>
            </el-table>
        </el-dialog>
        <el-dialog :visible.sync="dialogFormVisible3" title="Ordering Information">
        <el-dialog :visible.sync="dialogFormVisible3" title="Cage Details">
            <el-table :data="this.cageinfo" border style="width: 100%;height: 700px;overflow: auto;">
                <el-table-column :width="150" prop="cage" label="the grille number"></el-table-column>
                <el-table-column prop="cell" label="cell"></el-table-column>
@@ -324,8 +330,6 @@
            url: "../../img/bigcar01.png",
            car1: 150,
            car2: 242,
            incell: "",
            outcell: "",
            cageinfo: [],
            cage: 0
        };
@@ -362,7 +366,6 @@
                        this.car1 = 150 + 24.6 * obj.params[0][0];
                        this.car2 = 242 + 24.6 * obj.params[0][1];
                    }
                    this.tableData = obj.tableData[0];
                    this.cagelist1 = obj.cagelist1[0];
                    this.cagelist2 = obj.cagelist2[0];
@@ -370,12 +373,6 @@
                    this.cagelist4 = obj.cagelist4[0];
                    this.tasklist1 = obj.tasklist1[0];
                    this.tasklist2 = obj.tasklist2[0];
                    if (this.tasklist1.length > 0) {
                        this.incell = this.tasklist1[0]['cell'];
                    }
                    if (this.tasklist1.length > 0) {
                        this.outcell = this.tasklist2[0]['cell'];
                    }
                    this.alarm = obj.alarmmg[0];
                    SelectCageInfo(this.cage).then(res => {
@@ -461,8 +458,14 @@
                    if (res.data.message2 == 200) {
                        this.$message.success("Operation successful");
                        this.cancal();
                    } else {
                    } else if(res.data.message2 == 500) {
                        this.$message.success("There are currently tasks");
                    }
                    else if(res.data.message2 == 300) {
                        this.$message.success("There is no such grid");
                    }
                    else if(res.data.message2 == 400) {
                        this.$message.success("There is no such grid");
                    }
                });
            }
@@ -499,21 +502,12 @@
            this.dialogFormVisible1 = false;
            this.form1 = {};
        },
        endtask(type) {
            if (type == 0) {
                UpdateTask(type, this.incell).then(res => {
        endtask(type, glassid, cell) {
            UpdateTask(type, glassid, cell).then(res => {
                    if (res.data.message3 == 200) {
                        this.$message.success("Operation successful");
                    }
                });
            } else {
                UpdateTask(type, this.outcell).then(res => {
                    if (res.data.message3 == 200) {
                        this.$message.success("Operation successful");
                    }
                });
            }
        },
        showcageinfo(cage) {
            this.cage = cage;
CanadaMes-ui/src/views/user/index.vue
@@ -11,7 +11,8 @@
      <el-row :gutter="20">
        <!--搜索与添加区域-->
        <el-col :span="6">
          <el-input :placeholder= "$t('langUsernamePlaceholder')"  v-model="queryInfo.username" clearable @clear="getUserList">
          <el-input :placeholder="$t('langUsernamePlaceholder')" v-model="queryInfo.username" clearable
            @clear="getUserList">
          </el-input>
        </el-col>
        <el-col :span="6">
@@ -35,11 +36,7 @@
        <el-table-column :label="$t('langCreateTime')" prop="createTime"></el-table-column>
        <el-table-column :label="$t('langDisabled')">
          <template slot-scope="scope">
            <el-switch
                :active-value="0"
                :inactive-value="1"
                v-model="scope.row.state"
                @change="stateChange(scope.row)">
            <el-switch :active-value="0" :inactive-value="1" v-model="scope.row.state" @change="stateChange(scope.row)">
            </el-switch>
          </template>
        </el-table-column>
@@ -55,37 +52,23 @@
          <template slot-scope="scope">
            <!--修改-->
            <el-tooltip effect="dark" :content="$t('langEdit')" placement="top" :enterable="false">
              <el-button type="primary" icon="el-icon-edit" size="mini"
                         @click="showEditDialog(scope.row.id)"></el-button>
              <el-button type="primary" icon="el-icon-edit" size="mini" @click="showEditDialog(scope.row.id)"></el-button>
            </el-tooltip>
            <!--删除-->
            <el-tooltip effect="dark" :content="$t('langDelete')" placement="top" :enterable="false">
              <el-button type="danger" icon="el-icon-delete" size="mini"
                         @click="removeUserById(scope.row)"></el-button>
              <el-button type="danger" icon="el-icon-delete" size="mini" @click="removeUserById(scope.row)"></el-button>
            </el-tooltip>
          </template>
        </el-table-column>
      </el-table>
      <!--分页区域-->
       <el-pagination
      @size-change="handleSizeChange"
      @current-change="handleCurrentChange"
      :current-page="queryInfo.pageNum"
      :page-sizes="[6, 12, 18, 24]"
      :page-size="queryInfo.pageSize"
      :total="userList.total"
      :pager-count="7"
      :layout="layout"
    >
      <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange"
        :current-page="queryInfo.pageNum" :page-sizes="[6, 12, 18, 24]" :page-size="queryInfo.pageSize"
        :total="userList.total" :pager-count="7" :layout="layout">
    </el-pagination>
    </el-card>
    <!--添加用户的对话框-->
    <el-dialog
        :title="$t('langAddUserTitle')"
        :visible.sync="addDialogVisible"
        width="50%"
        @close="addDialogClosed">
    <el-dialog :title="$t('langAddUserTitle')" :visible.sync="addDialogVisible" width="50%" @close="addDialogClosed">
      <!--内容主体区域-->
      <el-form :model="addUserForm" :rules="addUserRules" ref="addUserRef" label-width="100px">
        <el-form-item :label="$t('langUsername')" prop="username" >
@@ -101,20 +84,14 @@
      
        <el-form-item :label="$t('langState')" prop="state">
          <el-select v-model="addUserForm.state" >
            <el-option v-for="(item,index) in options"
                       :key="index"
                       :value="item.value"
                       :label="item.label">
            <el-option v-for="(item, index) in options" :key="index" :value="item.value" :label="item.label">
            </el-option>
          </el-select>
        </el-form-item>
        <el-form-item :label="$t('role')" prop="roleId">
          <el-select filterable v-model="addUserForm.roleId" :placeholder="$t('langSelect')"  >
            <el-option v-for="item in roleList"
                       :key="item.id"
                       :value="item.id"
                       :label="item.name">
            <el-option v-for="item in roleList" :key="item.id" :value="item.id" :label="item.name">
            </el-option>
          </el-select>
        </el-form-item>
@@ -125,10 +102,7 @@
      </span>
    </el-dialog>
    <!--修改用户的对话框-->
    <el-dialog
        :title="$t('langEditUserTitle')"
        :visible.sync="editDialogVisible"
        width="50%">
    <el-dialog :title="$t('langEditUserTitle')" :visible.sync="editDialogVisible" width="50%">
      <!--内容主体区域-->
      <el-form :model="editUserForm" :rules="addUserRules" ref="addCategoryRef" label-width="100px">
        <el-form-item :label="$t('langUsername')" prop="username">
@@ -136,10 +110,7 @@
        </el-form-item>
        <el-form-item :label="$t('role')" prop="roleId">
          <el-select filterable v-model="editUserForm.roleId" :placeholder="$t('langSelect')" >
            <el-option v-for="item in roleList"
                       :key="item.id"
                       :value="item.id"
                       :label="item.name">
            <el-option v-for="item in roleList" :key="item.id" :value="item.id" :label="item.name">
            </el-option>
          </el-select>
        </el-form-item>
@@ -148,10 +119,7 @@
        </el-form-item>
        <el-form-item :label="$t('langDisabled')" prop="state">
          <el-select v-model="editUserForm.state" >
            <el-option v-for="(item,index) in options"
                       :key="index"
                       :value="item.value"
                       :label="item.label">
            <el-option v-for="(item, index) in options" :key="index" :value="item.value" :label="item.label">
            </el-option>
          </el-select>
        </el-form-item>
springboot-vue3/src/main/java/com/example/springboot/component/Plcalarm.java
@@ -3,6 +3,7 @@
import cn.hutool.json.JSONObject;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import com.example.springboot.mapper.AlarmMapper;
@@ -20,11 +21,14 @@
      }
      List<Boolean> plclist = S7control.getinstance().ReadBits("DB104.DBx0.0", 40);
      if(plclist==null){
      }else{
      // Boolean[] values = { true, false, true, false, true, false, true, false,
      // true, false, true, false, true, false,
      // true, false, true, false, true, false, true, false, true, false, true, false,
      // true, false, true, false, true,
      // false, true, false, true, false,
      // true, false, true, false };
      // List<Boolean> plclist = new ArrayList<>(Arrays.asList(values));
      if (plclist != null) {
      
      JSONObject jsonObject = new JSONObject();
@@ -34,12 +38,14 @@
        sendwServer.sendMessage(jsonObject.toString());
      }
      Short[] shuzu1 = plclist.toArray(new Short[0]);
      // Short[] shuzu1 = {
      // 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0,
      // 1, 0, 1, 0, 0,
      // 1, 0, 1, 0, 1, 0, 1, 0, 1,
      // };
        // 将获取的布尔类型转换为整数类型
        List<Integer> Intlist = new ArrayList<>();
        for (Boolean value : plclist) {
          Intlist.add(value == true ? 1 : 0);
        }
        // 将Intlist转换为数组
        Integer[] shuzu1 = Intlist.toArray(new Integer[0]);
      String[] shuzu = {
          "D01 VFD error",
@@ -84,12 +90,12 @@
          "B02 OUT pos error",
      };
      alarmMapper = WebSocketServer.applicationContext.getBean(AlarmMapper.class);
      for (short i = 0; i < shuzu1.length; i++) {
        for (short i = 0; i < shuzu.length; i++) {
        short result = alarmMapper.selectnullti(shuzu[i]);
        if (shuzu1[i] == 1 && result == 0) {
          // alarmMapper.Insertalarm(shuzu[i]);
            alarmMapper.Insertalarm(shuzu[i]);
        } else if (shuzu1[i] == 0 && result > 0) {
          // alarmMapper.updatealarm(shuzu[i]);
            alarmMapper.updatealarm(shuzu[i]);
        }
      }
    }
springboot-vue3/src/main/java/com/example/springboot/component/Plchome.java
@@ -5,7 +5,6 @@
import java.util.ArrayList;
import java.util.List;
import com.example.springboot.entity.StorageCage;
import com.example.springboot.entity.alarmmg;
import com.example.springboot.mapper.HomeMapper;
@@ -18,11 +17,10 @@
    public void run() {
        while (this != null) {
            try {
                Thread.sleep(5000);
                Thread.sleep(10000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            JSONObject jsonObject = new JSONObject();
            
            //注入mapper
@@ -49,13 +47,20 @@
            jsonObject.append("alarmmg", alarmmg);
            //读去Plc进片车与出片车位置W
            List<String> addressList = new ArrayList<String>();
            addressList.add("DB105.DBW0");
            addressList.add("DB105.DBW12");
            addressList.add("DB106.0");
            addressList.add("DB106.12");
            List<Short> paramlist = S7control.getinstance().ReadWord(addressList);
            //将集合转为数组
            // List<Short> paramlists = new ArrayList<Short>();
            // short para1 = 1;
            // short para2 = 2;
            // paramlists.add(para1);
            // paramlists.add(para2);
            // System.out.println(paramlists);
            if(paramlist!=null){
                Short[] paramlists = paramlist.toArray(new Short[0]);
                jsonObject.append("params", paramlists);
            // Short[] paramlists = paramlist.toArray(new Short[0]);
            jsonObject.append("params", paramlist);
            }
            // jsonObject.append("params", new short[] { 30, 40, });
            WebSocketServer sendwServer = WebSocketServer.sessionMap.get("Home");
springboot-vue3/src/main/java/com/example/springboot/component/Plcsign.java
@@ -4,6 +4,7 @@
import java.util.ArrayList;
import java.util.List;
import java.util.Arrays;
public class Plcsign extends Thread {
  @Override
@@ -16,16 +17,24 @@
      }
      List<Boolean> plclist = S7control.getinstance().ReadBits("DB102.DBX0.0", 58);
      if(plclist==null){
      // Boolean[] values = { true, false, true, false, true, false, true, false,
      // true, false, true, false, true, false,
      // true, false, true, false, true, false, true, false, true, false, true, false,
      // true, false, true, false, true,
      // false, true, false, true, false,
      // true, false, true, false, true, false, true, false, true, false,
      // true, false, true, false, true, false,
      // true, false, true, false, true, };
      // List<Boolean> plclist = new ArrayList<>(Arrays.asList(values));
      if (plclist != null) {
        // 将获取的布尔类型转换为整数类型
        List<Integer> Intlist = new ArrayList<>();
        for (Boolean value : plclist) {
          Intlist.add(value == true ? 0 : 1);
      }else{
        }
      JSONObject jsonObject = new JSONObject();
      // jsonObject3.append("sig",
      // new short[] { 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,
      // 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0,
      // 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,
      // });
      jsonObject.append("sig", plclist);
        jsonObject.append("sig", Intlist);
      WebSocketServer sendwServer3 = WebSocketServer.sessionMap.get("Sign");
      if (sendwServer3 != null) {
        sendwServer3.sendMessage(jsonObject.toString());
springboot-vue3/src/main/java/com/example/springboot/component/Plcstate.java
@@ -4,6 +4,7 @@
import java.util.ArrayList;
import java.util.List;
import java.util.Arrays;
public class Plcstate extends Thread {
  @Override
@@ -16,13 +17,18 @@
      }
      List<Short> plclist = S7control.getinstance().ReadWord("DB103.DBW0", 10);
      if (plclist == null) {
      // Short[] values = { 0, 1, 1, 0, 1, 0, 1, 0,
      // 1, 0, };
      // List<Short> plclist = new ArrayList<>(Arrays.asList(values));
      if (plclist != null) {
      } else {
        List<String> Intlist = new ArrayList<>();
        for (Short value : plclist) {
          Intlist.add(value == 1 ? "自动" : "手动");
        }
        JSONObject jsonObject = new JSONObject();
        // jsonObject.append("sta",
        // new short[] { 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, });
        jsonObject.append("sta", plclist);
        jsonObject.append("sta", Intlist);
        WebSocketServer sendwServer = WebSocketServer.sessionMap.get("State");
        if (sendwServer != null) {
          sendwServer.sendMessage(jsonObject.toString());
springboot-vue3/src/main/java/com/example/springboot/config/AppRunnerConfig.java
@@ -25,7 +25,7 @@
    //
    System.out.println("启动完成");
    new PlcHold().start();
    // new PlcHold().start();
    new Plcaction().start();
    new PlcParameter().start();
springboot-vue3/src/main/java/com/example/springboot/controller/AlarmController.java
@@ -35,22 +35,21 @@
  @GetMapping("/stTime")
  public Result selecttime(String shijian1, String shijian2) {
    System.out.println("++++++");
    System.out.println(shijian1);
    if (shijian1 != "" || shijian2 != "") {
    // if (shijian1 != "" || shijian2 != "") {
    // 将get方法传过来的参数中"#20"替换为" "
      String sj1 = shijian1.replace("#20", " ");
      String sj2 = shijian2.replace("#20", " ");
      List<alarmmg> storageCagelist = alarmMapper.selecttime(sj1, sj2);
      Map<String, Object> map = new HashMap<>();
      map.put("list", storageCagelist);
      return Result.success(map);
    } else {
      List<alarmmg> storageCagelist = alarmMapper.selectAll();
      Map<String, Object> map = new HashMap<>();
      map.put("list", storageCagelist);
      return Result.success(map);
    }
    // } else {
    // List<alarmmg> storageCagelist = alarmMapper.selectAll();
    // Map<String, Object> map = new HashMap<>();
    // map.put("list", storageCagelist);
    // return Result.success(map);
    // }
  }
springboot-vue3/src/main/java/com/example/springboot/controller/HomeController.java
@@ -78,21 +78,27 @@
        if (taskno > 0) {
            map.put("message2", "500");
        } else {
            map.put("message2", "200");
            // 调用伍上片函数
            spianService.selectAll(glassid);
            short results= spianService.selectAll(glassid);
            if(results==200){
                map.put("message2", "200");
            }else if(results==300){
                map.put("message2", "300");
            }else if(results==400){
                map.put("message2", "400");
            }
        }
        return Result.success(map);
    }
    @GetMapping("/UpdateTask")
    public Result UpdateTask(Integer types, Integer shelfrack) {
    public Result UpdateTask(Integer types, Integer shelfrack, Integer glassid) {
        Map<String, Object> map = new HashMap<>();
        homeMapper.UpdateTask(types, shelfrack);
        if (types == 0) {
            homeMapper.UpdateCageTask1(shelfrack);
            homeMapper.UpdateCageTask1(shelfrack,glassid);
        } else {
            homeMapper.UpdateCageTask2(shelfrack);
            homeMapper.UpdateCageTask2(shelfrack,glassid);
        }
        map.put("message3", "200");
        return Result.success(map);
springboot-vue3/src/main/java/com/example/springboot/mapper/HomeMapper.java
@@ -34,11 +34,11 @@
  List<StorageCage> selectinout(@Param("task_type") Integer task_type);
  // 查询是否存在此订单
  @Select("select count(*) from storage_cage where order_id=#{orderid} and state=0")
  @Select("select count(*) from storage_cage where order_id=#{orderid} and state=1")
  short SelectOrder(@Param("orderid") String orderid);
  // @Insert("insert into order_out(orderid) values('#{orderid}')")
  @Insert("INSERT INTO `canadames`.`order_out`( `orderid`,`mod_time`) VALUES ( #{orderid},now())")
  @Insert("INSERT INTO `canadames`.`order_out`( `order_id`,`state`) VALUES ( #{orderid},0)")
  void InsertOrder(String orderid);
  // 停止按当前订单出片
@@ -54,12 +54,12 @@
  void UpdateTask(@Param("task_type") Integer task_type, @Param("shelf_rack") Integer shelf_rack);
  // 手动完成进片任务修改笼子数据
  @Update("update storage_cage set state=1 where cell=#{cell} and state=2")
  void UpdateCageTask1(@Param("cell") Integer cell);
  @Update("update storage_cage set state=1 where cell=#{cell} and glass_id=#{glassid} and state=2")
  void UpdateCageTask1(@Param("cell") Integer cell,@Param("glassid") Integer glassid);
  // 手动完成出片任务修改笼子数据
  @Update("update storage_cage set state=0,glass_id=null,order_id=null,glasswidth=null,glassheight=null,coating=null where cell=#{cell} and state=2")
  void UpdateCageTask2(@Param("cell") Integer cell);
  @Update("update storage_cage set state=0,glass_id=null,order_id=null,glasswidth=null,glassheight=null,coating=null where cell=#{cell} and glass_id=#{glassid} and state=3")
  void UpdateCageTask2(@Param("cell") Integer cell,@Param("glassid") Integer glassid);
  //获取报警信息
  @Select("select id,content,timeon as timeons,endTime from alarmmg where endTime is null")
springboot-vue3/src/main/java/com/example/springboot/service/JdbcConnections.java
New file
@@ -0,0 +1,70 @@
package com.example.springboot.service;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import org.springframework.stereotype.Component;
import com.example.springboot.entity.Glass;
@Component
public class JdbcConnections {
    /**
     * 数据库连接参数
     * driver,url,username,password
     */
    private static final String DRIVER = "com.mysql.jdbc.Driver";
    private static final String URL = "jdbc:mysql://localhost:3306/canadames";
    private static final String USERNAME = "root";
    private static final String PASSWORD = "beibo.123/";
    private static Connection conn = null;
    private static PreparedStatement ps = null;
    private static ResultSet rs = null;
    public  Glass selectGlass(int glassid) throws SQLException {
        conn = getConn();
        Glass glass=new Glass();
        String sql = "select orderid from glass where glassid=?";
         ps = conn.prepareStatement(sql);
         ps.setInt(1, glassid);
         rs= ps.executeQuery();
         while (rs.next()) {
            glass.setOrderId(rs.getShort("orderid"));
         }
         return glass;
    }
    /**
     * 1. 加载驱动
     * 2. 获取连接    conn
     * 3. 创建语句 ps
     * 4. 执行语句 rs
     * 5. 处理结果
     * 6. 回收资源
     *
     * 实现CRUD
     *     更新:
     *         1增加
     *         2删除
     *         3修改
     *  查询:
     *      1. 查一个,一个对象
     *      2. 查一组,做成一个对象列表,查全部
     */
    public static Connection getConn() throws SQLException {
        Connection conn = null;
        conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/canadames?serverTimezone=GMT%2B8&characterEncoding=utf-8", "root", "beibo.123/");
        return conn;
    }
    static {
        try {
            Class.forName(DRIVER);
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }
}