clll
2023-09-11 ad2cf148e0bc95f95bb758fe12acc5b664b2def5
springboot-vue3/src/main/java/com/example/springboot/component/Plcalarm.java
@@ -19,130 +19,82 @@
        e.printStackTrace();
      }
      List<Short> paramlist = S7control.getinstance().ReadWord("DB100.DBW", 12);
      List<Boolean> plclist = S7control.getinstance().ReadBits("DB104.DBx0.0", 40);
      if (plclist == null) {
      // JSONObject jsonObject = new JSONObject();
      // // jsonObject.append("params", paramlist);
      // jsonObject.append("params", new short[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
      // 11, });
      // WebSocketServer sendwServer = WebSocketServer.sessionMap.get("Parameter");
      // if (sendwServer != null) {
      // sendwServer.sendMessage(jsonObject.toString());
      // }
      } else {
      JSONObject jsonObject = new JSONObject();
        JSONObject jsonObject = new JSONObject();
      jsonObject.append("arm",
          new short[] { 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,
              1, 0, 1, 0, 1, 0, 1, 0, 1, });
      WebSocketServer sendwServer = WebSocketServer.sessionMap.get("alarm");
      if (sendwServer != null) {
        sendwServer.sendMessage(jsonObject.toString());
      }
      Short[] shuzu1 = {
          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,
          1, 0, 1, 0, 1, 0, 1, 0, 1,
      };
      String[] shuzu = {
          "D01 VFD error",
          "D02 VFD error",
          "D03 VFD error",
          "D04 VFD error",
          "D05 VFD error",
          "D06 VFD error",
          "B01 VFD error",
          "B02 VFD error",
          "A01 VFD error",
          "A02 VFD error",
          "A01 servo turn error",
          "A02 servo turn error",
          "A01 servo travel error",
          "A02 servo travel error",
          "B01 servo travel error",
          "B02 servo travel error",
          "D01 DEC error",
          "D01 pos error",
          "D02 DEC error",
          "D02 pos error",
          "D03 DEC error",
          "D03 pos error",
          "D04 DEC error",
          "D04 pos error",
          "D05 DEC error",
          "D05 pos error",
          "D06 DEC error",
          "D06 pos error",
          "A01 DEC error",
          "A01 pos error",
          "A02 DEC error",
          "A02 pos error",
          "B01 IN DEC error",
          "B01 IN pos error",
          "B01 OUT DEC error",
          "B01 OUT pos error",
          "B02 IN DEC error",
          "B02 IN pos error",
          "B02 OUT DEC error",
          "B02 OUT pos error",
      };
      alarmMapper = WebSocketServer.applicationContext.getBean(AlarmMapper.class);
      for (short i = 0; i < shuzu1.length; i++) {
        short result = alarmMapper.selectnullti(shuzu[i]);
        if (shuzu1[i] == 1 && result == 0) {
          alarmMapper.Insertalarm(shuzu[i]);
        } else if (shuzu1[i] == 0 && result > 0) {
          alarmMapper.updatealarm(shuzu[i]);
        jsonObject.append("params", plclist);
        WebSocketServer sendwServer = WebSocketServer.sessionMap.get("alarm");
        if (sendwServer != null) {
          sendwServer.sendMessage(jsonObject.toString());
        }
      }
        // 将读取到的plclist转为数组
        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,
        // };
      // 写
      WebSocketServer webSocketServer = WebSocketServer.sessionMap.get("Parameter");
      if (webSocketServer != null) {
        List<String> messages = webSocketServer.getMessages();
        String addressList = "DB100.DBW0";
        // addressList.add("DB100.DBW0");
        // addressList.add("DB100.DBW2");
        // addressList.add("DB100.DBW4");
        // addressList.add("DB100.DBW6");
        // addressList.add("DB100.DBW8");
        // addressList.add("DB100.DBW10");
        // addressList.add("DB100.DBW12");
        // addressList.add("DB100.DBW14");
        // addressList.add("DB100.DBW16");
        // addressList.add("DB100.DBW18");
        // addressList.add("DB100.DBW20");
        // addressList.add("DB100.DBW22");
        if (!messages.isEmpty()) {
          // 将最后一个消息转换为 short 类型的列表
          String lastMessage = messages.get(messages.size() - 1);
          System.out.println("messages:" + messages);
          String[] parts = lastMessage.split(",");
          List<Short> messageValues = new ArrayList<>();
          for (String part : parts) {
            try {
              // 使用正则表达式清除非数字字符
              String cleanedPart = part.replaceAll("[^0-9-]", "");
              short value = Short.parseShort(cleanedPart.trim());
              messageValues.add(value);
            } catch (NumberFormatException e) {
              // 如果无法解析为 short 类型,则忽略该部分
              e.printStackTrace();
            }
        String[] shuzu = {
            "D01 VFD error",
            "D02 VFD error",
            "D03 VFD error",
            "D04 VFD error",
            "D05 VFD error",
            "D06 VFD error",
            "B01 VFD error",
            "B02 VFD error",
            "A01 VFD error",
            "A02 VFD error",
            "A01 servo turn error",
            "A02 servo turn error",
            "A01 servo travel error",
            "A02 servo travel error",
            "B01 servo travel error",
            "B02 servo travel error",
            "D01 DEC error",
            "D01 pos error",
            "D02 DEC error",
            "D02 pos error",
            "D03 DEC error",
            "D03 pos error",
            "D04 DEC error",
            "D04 pos error",
            "D05 DEC error",
            "D05 pos error",
            "D06 DEC error",
            "D06 pos error",
            "A01 DEC error",
            "A01 pos error",
            "A02 DEC error",
            "A02 pos error",
            "B01 IN DEC error",
            "B01 IN pos error",
            "B01 OUT DEC error",
            "B01 OUT pos error",
            "B02 IN DEC error",
            "B02 IN pos error",
            "B02 OUT DEC error",
            "B02 OUT pos error",
        };
        alarmMapper = WebSocketServer.applicationContext.getBean(AlarmMapper.class);
        for (short i = 0; i < shuzu1.length; i++) {
          // 查询结束时间为null的个数
          short result = alarmMapper.selectnullti(shuzu[i]);
          // 读取PLC对应地址的值为1并且该地址没有结束时间为null的数据,添加一条新的报警信息
          if (shuzu1[i] == 1 && result == 0) {
            alarmMapper.Insertalarm(shuzu[i]);
          }
          // 将消息值写入 PLC
          // S7control.getinstance().WriteWord(addressList, messageValues);
          System.out.println("messageValues:" + messageValues);
          System.out.println("addressList:" + addressList);
          // 清空消息列表
          webSocketServer.clearMessages();
          // 读取PLC对应地址的值为0并且该地址有结束时间为null的数据,修改该条数据的结束时间
          else if (shuzu1[i] == 0 && result > 0) {
            alarmMapper.updatealarm(shuzu[i]);
          }
        }
      }
    }
  }
}
}