wu
2024-01-24 f3fea817e20a192b2831102a8356045f3d56aa73
增加json文件
13个文件已添加
947 ■■■■■ 已修改文件
springboot-vue3/JsonFile/PlcMes.json 107 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/JsonFile/PlcRead.json 195 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/JsonFile/Plcframe.json 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/java/com/example/springboot/component/PLCAutoMes.java 87 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/java/com/example/springboot/component/PLCAutomaticParameterSettingReview2.java 92 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/java/com/example/springboot/component/PlcHoldNew.java 186 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/java/com/example/springboot/component/PlcRead.java 91 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/canadames/controller/device/DeviceController.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/canadames/entity/device/DeviceEntity.java 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/canadames/mapper/device/DeviceDao.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/canadames/service/device/DeviceService.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/canadames/service/device/impl/DeviceServiceImpl.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/device/DeviceEntityMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/JsonFile/PlcMes.json
New file
@@ -0,0 +1,107 @@
{
   "plcAddressBegin":"DB105.0",
   "plcAddressLenght":"52",
   "dataType":"word",
   "parameteInfor":[
      {
         "codeId": "AddStart",
         "addressIndex":"0",
         "addressLenght":"2",
         "ratio":"1",
         "unit":"m/min"
      },
      {
          "codeId": "Addgoal",
          "addressIndex":"2",
          "addressLenght":"2",
          "ratio":"1",
          "unit":"m/min"
       },
       {
          "codeId": "AddLength",
          "addressIndex":"4",
          "addressLenght":"2",
          "ratio":"1",
          "unit":"m/min"
       },
       {
          "codeId": "AddWidth",
          "addressIndex":"6",
          "addressLenght":"2",
          "ratio":"1",
          "unit":"mm/S"
       },
       {
          "codeId": "AddCount",
          "addressIndex":"8",
          "addressLenght":"2",
          "ratio":"1",
          "unit":"mm/S"
       },
       {
          "codeId": "OutStart",
          "addressIndex":"10",
          "addressLenght":"2",
          "ratio":"1",
          "unit":"mm/S"
       },
       {
          "codeId": "Outgoal",
          "addressIndex":"12",
          "addressLenght":"2",
          "ratio":"1",
          "unit":"mm/S"
       },
       {
          "codeId": "OutCount",
          "addressIndex":"14",
          "addressLenght":"2",
          "ratio":"1",
          "unit":"mm/S"
       },
       {
          "codeId": "AddActivate",
          "addressIndex":"16",
          "addressLenght":"2",
          "ratio":"1",
          "unit":"mm/S"
       },
       {
         "codeId": "OutActivate",
         "addressIndex":"18",
         "addressLenght":"2",
         "ratio":"1",
         "unit":"mm/S"
      },
     {
       "codeId": "FeedID",
       "addressIndex":"20",
       "addressLenght":"14",
       "ratio":"1",
       "unit":"mm/S"
     },
     {
       "codeId": "ReleaseID",
       "addressIndex":"34",
       "addressLenght":"16",
       "ratio":"1",
       "unit":"mm/S"
     },
     {
       "codeId": "B01report",
       "addressIndex":"50",
       "addressLenght":"2",
       "ratio":"1",
       "unit":"mm/S"
     },
     {
       "codeId": "B02report",
       "addressIndex":"52",
       "addressLenght":"2",
       "ratio":"1",
       "unit":"m/min"
     }
   ]
}
springboot-vue3/JsonFile/PlcRead.json
New file
@@ -0,0 +1,195 @@
{
   "plcAddressBegin": "DB106.0.0",
   "plcAddressLenght": "66",
   "dataType": "word",
   "parameteInfor": [{
         "codeId": "A01Position",
         "addressIndex": "0",
         "addressLenght":"2",
         "ratio":"1",
         "unit":"m/min"
      },
      {
         "codeId": "A01FlipPosition",
         "addressIndex": "2",
         "addressLenght":"2",
         "ratio":"1",
         "unit":"m/min"
      },
      {
         "codeId": "A01QuestStartPosition",
         "addressIndex": "4",
         "addressLenght":"2",
         "ratio":"1",
         "unit":"m/min"
      },
      {
         "codeId": "A01EndPosition",
         "addressIndex": "6",
         "addressLenght":"2",
         "ratio":"1",
         "unit":"m/min"
      },
      {
         "codeId": "FeedCarStatus",
         "addressIndex": "8",
         "addressLenght":"2",
         "ratio":"1",
         "unit":"m/min"
      },
      {
         "codeId": "A02QuestOver",
         "addressIndex": "10",
         "addressLenght":"2",
         "ratio":"1",
         "unit":"m/min"
      },
      {
         "codeId": "A02Position",
         "addressIndex": "12",
         "addressLenght":"2",
         "ratio":"1",
         "unit":"m/min"
      },
      {
         "codeId": "A02FlipPosition",
         "addressIndex": "14",
         "addressLenght":"2",
         "ratio":"1",
         "unit":"m/min"
      },
      {
         "codeId": "A02QuestStartPosition",
         "addressIndex": "16",
         "addressLenght":"2",
         "ratio":"1",
         "unit":"m/min"
      },
      {
         "codeId": "A02EndPosition",
         "addressIndex": "18",
         "addressLenght":"2",
         "ratio":"1",
         "unit":"m/min"
      },
      {
         "codeId": "ExitCarStatus",
         "addressIndex": "20",
         "addressLenght":"2",
         "ratio":"1",
         "unit":"m/min"
      },
      {
         "codeId": "A02QuestOver",
         "addressIndex": "22",
         "addressLenght":"2",
         "ratio":"1",
         "unit":"m/min"
      },
      {
         "codeId": "FeedRequest",
         "addressIndex": "24",
         "addressLenght":"2",
         "ratio":"1",
         "unit":"m/min"
      },
      {
         "codeId": "FeedID",
         "addressIndex": "26",
         "addressLenght":"14",
         "ratio":"1",
         "unit":"m/min"
      },
      {
         "codeId": "B01Position",
         "addressIndex": "40",
         "addressLenght":"2",
         "ratio":"1",
         "unit":"m/min"
      },
      {
         "codeId": "B01QuestPosition",
         "addressIndex": "42",
         "addressLenght":"2",
         "ratio":"1",
         "unit":"m/min"
      },
      {
         "codeId": "B01CurrentTaskMode",
         "addressIndex": "44",
         "addressLenght":"2",
         "ratio":"1",
         "unit":"m/min"
      },
      {
         "codeId": "B01CarStatus",
         "addressIndex": "46",
         "addressLenght":"2",
         "ratio":"1",
         "unit":"m/min"
      },
      {
         "codeId": "B01CarTaskStatus",
         "addressIndex": "48",
         "addressLenght":"2",
         "ratio":"1",
         "unit":"m/min"
      },
      {
         "codeId": "B02Position",
         "addressIndex": "50",
         "addressLenght":"2",
         "ratio":"1",
         "unit":"m/min"
      },
      {
         "codeId": "B02CarCurrentTask",
         "addressIndex": "52",
         "addressLenght":"2",
         "ratio":"1",
         "unit":"m/min"
      },
      {
         "codeId": "B02CurrentTaskMode",
         "addressIndex": "54",
         "addressLenght":"2",
         "ratio":"1",
         "unit":"m/min"
      },
      {
         "codeId": "B02CarStatus",
         "addressIndex": "56",
         "addressLenght":"2",
         "ratio":"1",
         "unit":"m/min"
      },
      {
         "codeId": "B02CarSaskStatus",
         "addressIndex": "58",
         "addressLenght":"2",
         "ratio":"1",
         "unit":"m/min"
      },
      {
         "codeId": "B01CompleteTheReport",
         "addressIndex": "60",
         "addressLenght":"2",
         "ratio":"1",
         "unit":"m/min"
      },
      {
         "codeId": "B02CompleteTheReport",
         "addressIndex": "62",
         "addressLenght":"2",
         "ratio":"1",
         "unit":"m/min"
      },
      {
         "codeId": "OutRequest",
         "addressIndex": "64",
         "addressLenght":"2",
         "ratio":"1",
         "unit":"m/min"
      }
   ]
}
springboot-vue3/JsonFile/Plcframe.json
New file
@@ -0,0 +1,51 @@
{
   "plcAddressBegin":"DB17.0",
   "plcAddressLenght":"40",
   "dataType":"word",
   "parameteInfor":[
      {
         "codeId": "E01id",
         "addressIndex":"0",
         "addressLenght":"14",
         "ratio":"1",
         "unit":"m/min"
      },
      {
          "codeId": "E01Quest",
          "addressIndex":"16",
          "addressLenght":"2",
          "ratio":"1",
          "unit":"m/min"
       },
       {
          "codeId": "E01Reply",
          "addressIndex":"18",
          "addressLenght":"2",
          "ratio":"1",
          "unit":"m/min"
       },
       {
          "codeId": "J01Quest",
          "addressIndex":"20",
          "addressLenght":"2",
          "ratio":"1",
          "unit":"mm/S"
       },
       {
          "codeId": "J01id",
          "addressIndex":"22",
          "addressLenght":"14",
          "ratio":"1",
          "unit":"mm/S"
       },
       {
          "codeId": "J01TurnGo",
          "addressIndex":"38",
          "addressLenght":"2",
          "ratio":"1",
          "unit":"mm/S"
       }
   ]
}
springboot-vue3/src/main/java/com/example/springboot/component/PLCAutoMes.java
New file
@@ -0,0 +1,87 @@
package com.example.springboot.component;
import com.example.springboot.entity.device.PlcBitObject;
import com.example.springboot.entity.device.PlcParameterObject;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import static com.example.springboot.component.InitUtil.readAndUpdateBitValues;
import static com.example.springboot.component.InitUtil.readAndUpdateWordValues;
public class PLCAutoMes extends Thread {
    // 用于存储应用程序的配置信息
    private Configuration config;
    private static InitUtil initUtil;
    // 创建一个自定义的 S7 控制器消息处理器对象
    MessageHandler customS7Control = new MessageHandler();
    // 单例实例
    private static PLCAutoMes instance;
    // 私有构造函数
    public PLCAutoMes() throws IOException {
        config = new Configuration("config.properties");
        initUtil = new InitUtil();
    }
    // 获取单例实例
    public static synchronized PLCAutoMes getInstance() throws IOException {
        if (instance == null) {
            instance = new PLCAutoMes();
        }
        return instance;
    }
    @Override
    public void run() {
        while (this != null) {
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            String jsonFilePath = PLCAutoMes.class.getResource("/JsonFile/PlcMes.json").getPath();
            String jsonFilePath2 = PLCAutoMes.class.getResource("/JsonFile/PlcRead.json").getPath();
            String jsonFilePath3 = PLCAutoMes.class.getResource("/JsonFile/Plcframe.json").getPath();
            System.out.println(jsonFilePath);
            // 调用initword方法
            PlcParameterObject  PlcMesObject= initUtil.initword(jsonFilePath);
            // 调用initbit方法
            PlcParameterObject  PlcReadObject= initUtil.initword(jsonFilePath2);
             // 调用initbit方法
            PlcParameterObject  PlcframeObject= initUtil.initword(jsonFilePath3);
            readAndUpdateWordValues(PlcframeObject);
            readAndUpdateWordValues(PlcMesObject);
            readAndUpdateWordValues(PlcReadObject);
            // readAndUpdateWordValues(plcStateObject);
            int index = PlcMesObject.getPlcParameter("AddStart").getAddressIndex();
            System.out.println(index);
            PlcMesObject.getPlcParameter("AddStart").getAddress(index);
            System.out.println(PlcMesObject.getPlcParameter("AddStart").getAddress(index));
            List<String> addresses = new ArrayList<>();
            addresses.add("FeedCarStatus");
            addresses.add("OutRequest");
            System.out.println(PlcReadObject.getPlcParameterValues(addresses));
            List<String> addresses2 = new ArrayList<>();
            addresses2.add("conveyorVelocity(AutoSLOW)");
            addresses2.add("D01.SRdec");
            System.out.println(PlcReadObject.getPlcParameterValues(addresses2));
        }
    }
}
springboot-vue3/src/main/java/com/example/springboot/component/PLCAutomaticParameterSettingReview2.java
New file
@@ -0,0 +1,92 @@
package com.example.springboot.component;
import com.example.springboot.entity.device.PlcBitObject;
import com.example.springboot.entity.device.PlcParameterObject;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import static com.example.springboot.component.InitUtil.readAndUpdateBitValues;
import static com.example.springboot.component.InitUtil.readAndUpdateWordValues;
public class PLCAutomaticParameterSettingReview2 extends Thread {
    // 用于存储应用程序的配置信息
    private Configuration config;
    private static InitUtil initUtil;
    // 创建一个自定义的 S7 控制器消息处理器对象
    MessageHandler customS7Control = new MessageHandler();
    // 单例实例
    private static PLCAutomaticParameterSettingReview2 instance;
    // 私有构造函数
    public PLCAutomaticParameterSettingReview2() throws IOException {
        config = new Configuration("config.properties");
        initUtil = new InitUtil();
    }
    // 获取单例实例
    public static synchronized PLCAutomaticParameterSettingReview2 getInstance() throws IOException {
        if (instance == null) {
            instance = new PLCAutomaticParameterSettingReview2();
        }
        return instance;
    }
    @Override
    public void run() {
        while (this != null) {
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            String jsonFilePath = PLCAutomaticParameterSettingReview2.class.getResource("/JsonFile/PlcMes.json").getPath();
            // String jsonFilePath2 =
            // PLCAutomaticParameterSettingReview2.class.getResource("/JsonFile/PlcSign.json")
            // .getPath();
            // String jsonFilePath4 =
            // PLCAutomaticParameterSettingReview2.class.getResource("/JsonFile/PlcState.json")
            // .getPath();
            // System.out.println(jsonFilePath4);
            // 调用initword方法
            PlcParameterObject plcParameterObject = initUtil.initword(jsonFilePath);
            // PlcParameterObject plcStateObject = initUtil.initword(jsonFilePath4);
            // 调用initbit方法
            // PlcBitObject plcBitObject = initUtil.initbit(jsonFilePath2);
            // readAndUpdateBitValues(plcBitObject);
            readAndUpdateWordValues(plcParameterObject);
            // readAndUpdateWordValues(plcStateObject);
            int index = plcParameterObject.getPlcParameter("A01A02conveyorVelocity(Max)").getAddressIndex();
            System.out.println(index);
            plcParameterObject.getPlcParameter("A01A02conveyorVelocity(Max)").getAddress(index);
            System.out.println(plcParameterObject.getPlcParameter("A01A02conveyorVelocity(Max)").getAddress(index));
            // S7control.getinstance().WriteWord(plcParameterObject.getPlcParameter("conveyorVelocity(AutoFAST)").getAddress(index),
            // (short) 100);
            List<String> addresses = new ArrayList<>();
            addresses.add("conveyorVelocity(AutoFAST)");
            addresses.add("A02ID");
            System.out.println(plcParameterObject.getPlcParameterValues(addresses));
            List<String> addresses2 = new ArrayList<>();
            addresses2.add("conveyorVelocity(AutoSLOW)");
            addresses2.add("D01.SRdec");
            // System.out.println(plcBitObject.getPlcBitValues(addresses2));
            // int index2 = plcBitObject.getPlcBit("DO1id").getAddressIndex();
            // System.out.println(index2);
            // plcBitObject.getPlcBit("DO1id").getAddress(index2);
            // System.out.println(plcBitObject.getPlcBit("DO1id").getAddress(index2));
        }
    }
}
springboot-vue3/src/main/java/com/example/springboot/component/PlcHoldNew.java
New file
@@ -0,0 +1,186 @@
package com.example.springboot.component;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import com.example.springboot.service.JdbcConnections;
import com.example.springboot.service.SpianService;
import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONObject;
import com.example.springboot.entity.north_glass_buffer1;
import com.example.springboot.mapper.AlarmMapper;
import com.example.springboot.mapper.SpianMapper;
public class PlcHoldNew extends Thread {
  private AlarmMapper alarmMapper;
  @Autowired
  private JdbcConnections jdbcConnections;
  private SpianMapper spianMapper;
  private SpianService spianService;
  int aaa;
  @Override
  public void run() {
    while (this != null) {
      try {
        Thread.sleep(50);
      } catch (InterruptedException e) {
        // \\ TODO Auto-generated catch block
        e.printStackTrace();
      }
      // if (S7control.getinstance().CheckConnected() == false) {
      spianService = WebSocketServer.applicationContext.getBean(SpianService.class);
      spianMapper = WebSocketServer.applicationContext.getBean(SpianMapper.class);
      jdbcConnections = WebSocketServer.applicationContext.getBean(JdbcConnections.class);
    String str = "";
    BufferedReader bufferedReader = null;
    FileInputStream fileInputStream;
      // 根据玻璃id获取订单号,单独数据源
      // try {
      // north_glass_buffer1 glass = jdbcConnections.selectGlass(112);
      // // System.out.println(glass.getOrderId());
      // } catch (SQLException e) {
      // // TODO Auto-generated catch block
      // e.printStackTrace();
      // }
      // 出片任务////////////////////////////////
      List<Short> outlist = S7control.getinstance().ReadWord("DB106.20", 1); // 出片车状态
      List<Short> outlist1 = S7control.getinstance().ReadWord("DB105.18", 1); // 出片任务是否启动
      // StringBuilder writedstrIdOut = new StringBuilder();
      // 获取已下发的出片id
      byte[] writedglassidbytesOut = S7control.getinstance().ReadByte("DB105.30", 14);
      String writedstrIdOut = new String(writedglassidbytesOut);
      boolean outstate = false;// 出片车空闲判断
      boolean outstate1 = false;// 出片车任务是否启动
      if (outlist != null && outlist1 != null) {
        outstate = outlist.contains((short) 0);// 出片车空闲判断 当出片车空闲时为true
        outstate1 = outlist1.contains((short) 1);// 出片车任务是否启动 当出片车任务启动时为true
        // 判断当前是否有未执行的任务
        int outnum = spianMapper.SelectOutSliceshu();
        int cageoutsum = spianMapper.Selectcageout(3);
        // 当没有任务执行并且出片车空闲时
        if (outnum == 0 && outstate == true && Plchome.isAllowQueue == true && cageoutsum == 0) {
          // 判断铝框出片队列表是否有待出片的玻璃
          String outglassid = spianMapper.SelectOutSlice();
          // 当有待出片的玻璃时
          if (outglassid != null) {
            // 获取该玻璃是否被禁用
            int glassdisabled = spianMapper.SelectCageGlassState(outglassid);
            // 未禁用下发任务
            if (glassdisabled == 0) {
              spianService.selectout2(outglassid);
              Plchome.isQueueWarning = false;
              outstate = false;
            } else { // 禁用更改状态弹出提示
              Plchome.isQueueWarning = true;
            }
          }
        }
        if (outstate == true) {// 当出片车空闲时,且出片启动为1时,任务启动改为0
          if (outstate1 == true) {
            S7control.getinstance().WriteWord("DB105.18", (short) 0);// 出片任务启动改为0
          }
        }
      }
      ///////////// 进片任务
      List<Short> datas1List = S7control.getinstance().ReadWord("DB106.24", 1);// 获取prc进片请求数据
      List<Short> datas1ListState = S7control.getinstance().ReadWord("DB106.8", 1);// 获取进片车状态
      List<Short> datas1ListState2 = S7control.getinstance().ReadWord("DB105.16", 1);// 获取进片车任务是否启动
      boolean B01backs = spianService.listbool("DB106.60");// b01汇报
      boolean B02backs = spianService.listbool("DB106.62");// b02汇报
      StringBuilder B01glassid = spianService.queGlassid("DB103.184", 14);// BO1的玻璃id
      StringBuilder B02glassid = spianService.queGlassid("DB103.212", 14);// B02的玻璃id
      // 当进片小车完成任务时
      if (B01backs == true) {
        // 当B01小车汇报完成时更改玻璃状态 为1
        // spianService.overtask(B01glassid.toString());// 完成任务
        // S7control.getinstance().WriteWord("DB106.60", (short) 0);// 恢复B01小车应答改为0
        boolean yingda = spianService.listbool("DB106.60");// b01汇报
        System.out.println("汇报时B01|第" + aaa + "次" + B01glassid + "应答" + yingda);
        aaa += 1;
      }
      // 当出片小车完成任务时
      if (B02backs == true) {
        // 当B02小车汇报完成时更改玻璃状态为0
        // spianService.overtask(B02glassid.toString());// 完成任务
        // S7control.getinstance().WriteWord("DB106.62", (short) 0);// 恢复B02小车应答改为0
        System.out.println("汇报时B02|" + B02glassid);
        boolean yingda1 = spianService.listbool("DB106.62");// b02汇报
        System.out.println("汇报时B02|第" + aaa + "次" + B02glassid + "应答" + yingda1);
      }
      // 获取DO1数据
      StringBuilder queueid1 = spianService.queGlassid("DB106.26", 14);// 获取请求的id跟DO1同时清
      // 获取DO2数据
      StringBuilder queueid2 = spianService.queGlassid("DB103.58", 14);
      int questate = spianMapper.Selectquecount(queueid1.toString());// 判断扫码位是否有玻璃已确认
      // queueid1.toString().isEmpty()
      north_glass_buffer1 glass1 = spianMapper.selectGlass(queueid1.toString());// D01的玻璃信息
      north_glass_buffer1 glass2 = spianMapper.selectGlass(queueid2.toString());// D02玻璃信息
      // 当扫码位玻璃id为空时 宽度为0
      if (queueid1 != null && questate == 0) {
        // 写入D01的数据到上片队列表
        if (glass1 == null) { // 当没有值时传空
          spianMapper.Updatequeue(null, null, null, null, 0, null, null, null, null, 1);
        } else {
          spianMapper.Updatequeue(queueid1.toString(), glass1.getordernumber(), glass1.getlistnumber(),
              glass1.getboxnumber(), 0, glass1.getglasslengthmm().toString(), glass1.getglassheightmm().toString(),
              glass1.getglasslength().toString(), glass1.getglassheight().toString(), 1);
        }
      }
      if (queueid2 != null) {
        // 写入D02的数据到上片队列表
        if (glass2 == null) {
          spianMapper.Updatequeue(null, null, null, null, 0, null, null, null, null, 2);
        } else {
          spianMapper.Updatequeue(queueid2.toString(), glass2.getordernumber(), glass2.getlistnumber(),
              glass2.getboxnumber(), 0, glass2.getglasslengthmm().toString(), glass2.getglassheightmm().toString(),
              glass2.getglasslength().toString(), glass2.getglassheight().toString(), 2);
          spianMapper.overqueue2(queueid2.toString(), 0, 1);// 更改扫码位任务表的状态为0
          S7control.getinstance().WriteWord("DB105.16", (short) 0);// 关闭任务启动
        }
      }
      // 查询数据库
      // 推送到前端
      // }
    }
  }
}
springboot-vue3/src/main/java/com/example/springboot/component/PlcRead.java
New file
@@ -0,0 +1,91 @@
package com.example.springboot.component;
import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONObject;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.List;
import java.util.Arrays;
public class PlcRead extends Thread {
  String name = "";
  Integer count = 0;
  public void readValue() {
    String str = "";
    BufferedReader bufferedReader = null;
    FileInputStream fileInputStream;
    try {
      // 从文件中读取字节数据存入 fileInputStream
      fileInputStream = new FileInputStream("CanadaMes-ui/src/configuration/Read.json");
      // 读取 fileInputStream 中字节并将其解码为字符
      InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream, "utf-8");
      // 提高读取效率,在 BufferedReader 内包装 InputStreamReader
      bufferedReader = new BufferedReader(inputStreamReader);
      String line = null;
      // 将 bufferedReader 内容一行一行赋值给str
      while ((line = bufferedReader.readLine()) != null) {
        str += line;
      }
      // 将str字符串格式转为json
      JSONObject jsonObject = new JSONObject(str);
      // 获取json中的值
      JSONArray address = jsonObject.getJSONArray("address");
      for (int i = 0; i < address.size(); i++) {
        JSONObject ress = (JSONObject) address.get(i);
        this.name = ress.getStr("name");
        this.count = ress.getInt("count");
      }
    } catch (FileNotFoundException e) {
      e.printStackTrace();
    } catch (UnsupportedEncodingException e) {
      e.printStackTrace();
    } catch (IOException e) {
      e.printStackTrace();
    }
  }
  @Override
  public void run() {
    while (this != null) {
      try {
        Thread.sleep(1000);
      } catch (InterruptedException e) {
        e.printStackTrace();
      }
      List<Boolean> plclist = S7control.getinstance().ReadBits("DB106.0.0", 78);
      if (plclist != null) {
        // 将获取的布尔类型转换为整数类型
        List<Integer> Intlist = new ArrayList<>();
        for (Boolean value : plclist) {
          if (value != null) {
            Intlist.add(value == true ? 0 : 1);
          }
        }
        JSONObject jsonObject = new JSONObject();
        jsonObject.append("sig", Intlist);
        ArrayList<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get("Mes");
        if (sendwServer != null) {
          for (WebSocketServer webserver : sendwServer) {
            webserver.sendMessage(jsonObject.toString());
          }
        }
      }
    }
  }
}
src/main/java/com/canadames/controller/device/DeviceController.java
New file
@@ -0,0 +1,20 @@
package com.canadames.controller.device;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
 * <p>
 *  前端控制器
 * </p>
 *
 * @author yyq
 * @since 2024-01-17
 */
@RestController
@RequestMapping("/device-entity")
public class DeviceController {
}
src/main/java/com/canadames/entity/device/DeviceEntity.java
New file
@@ -0,0 +1,61 @@
package com.canadames.entity.device;
import com.baomidou.mybatisplus.annotation.TableName;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.io.Serializable;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
 * <p>
 *
 * </p>
 *
 * @author yyq
 * @since 2024-01-17
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("device")
@ApiModel(value="DeviceEntity对象", description="")
public class DeviceEntity implements Serializable {
    private static final long serialVersionUID = 1L;
    private String deviceId;
    private String createUser;
    private LocalDateTime createTime;
    private String deviceName;
    private String status;
    private String info;
    private String model;
    private LocalDateTime countTimeFlag;
    private String address;
    private String gps;
    private LocalDate debugTime;
    private LocalDate endTime;
    private String customerName;
    private String customerDeviceName;
    private LocalDate lastProductCountDate;
}
src/main/java/com/canadames/mapper/device/DeviceDao.java
New file
@@ -0,0 +1,16 @@
package com.canadames.mapper.device;
import com.canadames.entity.device.DeviceEntity;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
 * <p>
 *  Mapper 接口
 * </p>
 *
 * @author yyq
 * @since 2024-01-17
 */
public interface DeviceDao extends BaseMapper<DeviceEntity> {
}
src/main/java/com/canadames/service/device/DeviceService.java
New file
@@ -0,0 +1,16 @@
package com.canadames.service.device;
import com.canadames.entity.device.DeviceEntity;
import com.baomidou.mybatisplus.extension.service.IService;
/**
 * <p>
 *  服务类
 * </p>
 *
 * @author yyq
 * @since 2024-01-17
 */
public interface DeviceService extends IService<DeviceEntity> {
}
src/main/java/com/canadames/service/device/impl/DeviceServiceImpl.java
New file
@@ -0,0 +1,20 @@
package com.canadames.service.device.impl;
import com.canadames.entity.device.DeviceEntity;
import com.canadames.mapper.device.DeviceDao;
import com.canadames.service.device.DeviceService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
 * <p>
 *  服务实现类
 * </p>
 *
 * @author yyq
 * @since 2024-01-17
 */
@Service
public class DeviceServiceImpl extends ServiceImpl<DeviceDao, DeviceEntity> implements DeviceService {
}
src/main/resources/mapper/device/DeviceEntityMapper.xml
New file
@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.canadames.mapper.device.DeviceDao">
</mapper>