干燥机配套车间生产管理系统/云平台服务端
bsw215583320
2024-11-05 0c38037ff515a568a005f555436ad74cbaaed2db
合并opc ua部分
已修改4个文件
668 ■■■■ 文件已修改
jeecg-module-dry/jeecg-module-dry-api/pom.xml 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jeecg-module-dry/jeecg-module-dry-biz/src/main/java/org/jeecg/modules/dry/controller/DryOpcDeviceController.java 410 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jeecg-module-dry/jeecg-module-dry-biz/src/main/java/org/jeecg/modules/dry/controller/OpcController.java 132 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jeecg-module-dry/jeecg-module-dry-biz/src/main/java/org/jeecg/modules/dry/runner/OpcCustomRunner.java 116 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jeecg-module-dry/jeecg-module-dry-api/pom.xml
@@ -42,11 +42,11 @@
<!--            <artifactId>bcprov-jdk15on</artifactId>-->
<!--            <version>1.70</version>-->
<!--        </dependency>-->
<!--        <dependency>-->
<!--            <groupId>com.kangaroohy</groupId>-->
<!--            <artifactId>milo-spring-boot-starter</artifactId>-->
<!--            <version>3.0.4</version>-->
<!--        </dependency>-->
        <dependency>
            <groupId>com.kangaroohy</groupId>
            <artifactId>milo-spring-boot-starter</artifactId>
            <version>3.0.4</version>
        </dependency>
        <dependency>
            <groupId>ai.djl.pytorch</groupId>
            <artifactId>pytorch-engine</artifactId>
jeecg-module-dry/jeecg-module-dry-biz/src/main/java/org/jeecg/modules/dry/controller/DryOpcDeviceController.java
@@ -1,205 +1,205 @@
//package org.jeecg.modules.dry.controller;
//
//import java.util.Arrays;
//import java.util.List;
//import java.util.Map;
//import java.util.stream.Collectors;
//import java.io.IOException;
//import java.io.UnsupportedEncodingException;
//import java.net.URLDecoder;
//import javax.servlet.http.HttpServletRequest;
//import javax.servlet.http.HttpServletResponse;
//
//import com.kangaroohy.milo.model.ReadWriteEntity;
//import com.kangaroohy.milo.service.MiloService;
//import org.jeecg.common.api.vo.Result;
//import org.jeecg.common.system.query.QueryGenerator;
//import org.jeecg.common.util.oConvertUtils;
//import org.jeecg.modules.dry.entity.DryOpcDevice;
//import org.jeecg.modules.dry.service.IDryOpcDeviceService;
//
//import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
//import com.baomidou.mybatisplus.core.metadata.IPage;
//import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
//import lombok.extern.slf4j.Slf4j;
//
//import org.jeecgframework.poi.excel.ExcelImportUtil;
//import org.jeecgframework.poi.excel.def.NormalExcelConstants;
//import org.jeecgframework.poi.excel.entity.ExportParams;
//import org.jeecgframework.poi.excel.entity.ImportParams;
//import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
//import org.jeecg.common.system.base.controller.JeecgController;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.web.bind.annotation.*;
//import org.springframework.web.multipart.MultipartFile;
//import org.springframework.web.multipart.MultipartHttpServletRequest;
//import org.springframework.web.servlet.ModelAndView;
//import com.alibaba.fastjson.JSON;
//import io.swagger.annotations.Api;
//import io.swagger.annotations.ApiOperation;
//import org.jeecg.common.aspect.annotation.AutoLog;
//import org.apache.shiro.authz.annotation.RequiresPermissions;
//
// /**
// * @Description: dry_opc_device
// * @Author: jeecg-boot
// * @Date:   2023-11-28
// * @Version: V1.0
// */
//@Api(tags="dry_opc_device")
//@RestController
//@RequestMapping("/dry/dryOpcDevice")
//@Slf4j
//public class DryOpcDeviceController extends JeecgController<DryOpcDevice, IDryOpcDeviceService> {
//    @Autowired
//    private IDryOpcDeviceService dryOpcDeviceService;
//
//
//    @Autowired
//    private MiloService miloService;
//
//
//    /**
//     * 分页列表查询
//     *
//     * @param dryOpcDevice
//     * @param pageNo
//     * @param pageSize
//     * @param req
//     * @return
//     */
//    //@AutoLog(value = "dry_opc_device-分页列表查询")
//    @ApiOperation(value="dry_opc_device-分页列表查询", notes="dry_opc_device-分页列表查询")
//    @GetMapping(value = "/list")
//    public Result<IPage<DryOpcDevice>> queryPageList(DryOpcDevice dryOpcDevice,
//                                   @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
//                                   @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
//                                   HttpServletRequest req) {
//        QueryWrapper<DryOpcDevice> queryWrapper = QueryGenerator.initQueryWrapper(dryOpcDevice, req.getParameterMap());
//        Page<DryOpcDevice> page = new Page<DryOpcDevice>(pageNo, pageSize);
//        IPage<DryOpcDevice> pageList = dryOpcDeviceService.page(page, queryWrapper);
//        return Result.OK(pageList);
//    }
//
//     @GetMapping(value = "/listAll")
//     public Result<List<DryOpcDevice>> queryList(DryOpcDevice dryOpcDevice,
//
//                                                      HttpServletRequest req) {
//         QueryWrapper<DryOpcDevice> queryWrapper = QueryGenerator.initQueryWrapper(dryOpcDevice, req.getParameterMap());
//         queryWrapper.orderByAsc("sort_order");
//         List<DryOpcDevice> list = dryOpcDeviceService.list(queryWrapper);
//        list.forEach(item -> {
//            try {
//                ReadWriteEntity readWriteEntity = miloService.readFromOpcUa(item.getIdentifier());
//                item.setValue((Boolean) readWriteEntity.getValue());
//            } catch (Exception e) {
//                throw new RuntimeException(e);
//            }
//        });
//         return Result.OK(list);
//     }
//
//
//    /**
//     *   添加
//     *
//     * @param dryOpcDevice
//     * @return
//     */
//    @AutoLog(value = "dry_opc_device-添加")
//    @ApiOperation(value="dry_opc_device-添加", notes="dry_opc_device-添加")
//    @RequiresPermissions("dry:dry_opc_device:add")
//    @PostMapping(value = "/add")
//    public Result<String> add(@RequestBody DryOpcDevice dryOpcDevice) {
//        dryOpcDeviceService.save(dryOpcDevice);
//        return Result.OK("添加成功!");
//    }
//
//    /**
//     *  编辑
//     *
//     * @param dryOpcDevice
//     * @return
//     */
//    @AutoLog(value = "dry_opc_device-编辑")
//    @ApiOperation(value="dry_opc_device-编辑", notes="dry_opc_device-编辑")
//    @RequiresPermissions("dry:dry_opc_device:edit")
//    @RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
//    public Result<String> edit(@RequestBody DryOpcDevice dryOpcDevice) {
//        dryOpcDeviceService.updateById(dryOpcDevice);
//        return Result.OK("编辑成功!");
//    }
//
//    /**
//     *   通过id删除
//     *
//     * @param id
//     * @return
//     */
//    @AutoLog(value = "dry_opc_device-通过id删除")
//    @ApiOperation(value="dry_opc_device-通过id删除", notes="dry_opc_device-通过id删除")
//    @RequiresPermissions("dry:dry_opc_device:delete")
//    @DeleteMapping(value = "/delete")
//    public Result<String> delete(@RequestParam(name="id",required=true) String id) {
//        dryOpcDeviceService.removeById(id);
//        return Result.OK("删除成功!");
//    }
//
//    /**
//     *  批量删除
//     *
//     * @param ids
//     * @return
//     */
//    @AutoLog(value = "dry_opc_device-批量删除")
//    @ApiOperation(value="dry_opc_device-批量删除", notes="dry_opc_device-批量删除")
//    @RequiresPermissions("dry:dry_opc_device:deleteBatch")
//    @DeleteMapping(value = "/deleteBatch")
//    public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
//        this.dryOpcDeviceService.removeByIds(Arrays.asList(ids.split(",")));
//        return Result.OK("批量删除成功!");
//    }
//
//    /**
//     * 通过id查询
//     *
//     * @param id
//     * @return
//     */
//    //@AutoLog(value = "dry_opc_device-通过id查询")
//    @ApiOperation(value="dry_opc_device-通过id查询", notes="dry_opc_device-通过id查询")
//    @GetMapping(value = "/queryById")
//    public Result<DryOpcDevice> queryById(@RequestParam(name="id",required=true) String id) {
//        DryOpcDevice dryOpcDevice = dryOpcDeviceService.getById(id);
//        if(dryOpcDevice==null) {
//            return Result.error("未找到对应数据");
//        }
//        return Result.OK(dryOpcDevice);
//    }
//
//    /**
//    * 导出excel
//    *
//    * @param request
//    * @param dryOpcDevice
//    */
//    @RequiresPermissions("dry:dry_opc_device:exportXls")
//    @RequestMapping(value = "/exportXls")
//    public ModelAndView exportXls(HttpServletRequest request, DryOpcDevice dryOpcDevice) {
//        return super.exportXls(request, dryOpcDevice, DryOpcDevice.class, "dry_opc_device");
//    }
//
//    /**
//      * 通过excel导入数据
//    *
//    * @param request
//    * @param response
//    * @return
//    */
//    @RequiresPermissions("dry:dry_opc_device:importExcel")
//    @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
//    public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
//        return super.importExcel(request, response, DryOpcDevice.class);
//    }
//
//}
package org.jeecg.modules.dry.controller;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.kangaroohy.milo.model.ReadWriteEntity;
import com.kangaroohy.milo.service.MiloService;
import org.jeecg.common.api.vo.Result;
import org.jeecg.common.system.query.QueryGenerator;
import org.jeecg.common.util.oConvertUtils;
import org.jeecg.modules.dry.entity.DryOpcDevice;
import org.jeecg.modules.dry.service.IDryOpcDeviceService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import lombok.extern.slf4j.Slf4j;
import org.jeecgframework.poi.excel.ExcelImportUtil;
import org.jeecgframework.poi.excel.def.NormalExcelConstants;
import org.jeecgframework.poi.excel.entity.ExportParams;
import org.jeecgframework.poi.excel.entity.ImportParams;
import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
import org.jeecg.common.system.base.controller.JeecgController;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import org.springframework.web.servlet.ModelAndView;
import com.alibaba.fastjson.JSON;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.jeecg.common.aspect.annotation.AutoLog;
import org.apache.shiro.authz.annotation.RequiresPermissions;
 /**
 * @Description: dry_opc_device
 * @Author: jeecg-boot
 * @Date:   2023-11-28
 * @Version: V1.0
 */
@Api(tags="dry_opc_device")
@RestController
@RequestMapping("/dry/dryOpcDevice")
@Slf4j
public class DryOpcDeviceController extends JeecgController<DryOpcDevice, IDryOpcDeviceService> {
    @Autowired
    private IDryOpcDeviceService dryOpcDeviceService;
    @Autowired
    private MiloService miloService;
    /**
     * 分页列表查询
     *
     * @param dryOpcDevice
     * @param pageNo
     * @param pageSize
     * @param req
     * @return
     */
    //@AutoLog(value = "dry_opc_device-分页列表查询")
    @ApiOperation(value="dry_opc_device-分页列表查询", notes="dry_opc_device-分页列表查询")
    @GetMapping(value = "/list")
    public Result<IPage<DryOpcDevice>> queryPageList(DryOpcDevice dryOpcDevice,
                                   @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
                                   @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
                                   HttpServletRequest req) {
        QueryWrapper<DryOpcDevice> queryWrapper = QueryGenerator.initQueryWrapper(dryOpcDevice, req.getParameterMap());
        Page<DryOpcDevice> page = new Page<DryOpcDevice>(pageNo, pageSize);
        IPage<DryOpcDevice> pageList = dryOpcDeviceService.page(page, queryWrapper);
        return Result.OK(pageList);
    }
     @GetMapping(value = "/listAll")
     public Result<List<DryOpcDevice>> queryList(DryOpcDevice dryOpcDevice,
                                                      HttpServletRequest req) {
         QueryWrapper<DryOpcDevice> queryWrapper = QueryGenerator.initQueryWrapper(dryOpcDevice, req.getParameterMap());
         queryWrapper.orderByAsc("sort_order");
         List<DryOpcDevice> list = dryOpcDeviceService.list(queryWrapper);
        list.forEach(item -> {
            try {
                ReadWriteEntity readWriteEntity = miloService.readFromOpcUa(item.getIdentifier());
                item.setValue((Boolean) readWriteEntity.getValue());
            } catch (Exception e) {
                throw new RuntimeException(e);
            }
        });
         return Result.OK(list);
     }
    /**
     *   添加
     *
     * @param dryOpcDevice
     * @return
     */
    @AutoLog(value = "dry_opc_device-添加")
    @ApiOperation(value="dry_opc_device-添加", notes="dry_opc_device-添加")
    @RequiresPermissions("dry:dry_opc_device:add")
    @PostMapping(value = "/add")
    public Result<String> add(@RequestBody DryOpcDevice dryOpcDevice) {
        dryOpcDeviceService.save(dryOpcDevice);
        return Result.OK("添加成功!");
    }
    /**
     *  编辑
     *
     * @param dryOpcDevice
     * @return
     */
    @AutoLog(value = "dry_opc_device-编辑")
    @ApiOperation(value="dry_opc_device-编辑", notes="dry_opc_device-编辑")
    @RequiresPermissions("dry:dry_opc_device:edit")
    @RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
    public Result<String> edit(@RequestBody DryOpcDevice dryOpcDevice) {
        dryOpcDeviceService.updateById(dryOpcDevice);
        return Result.OK("编辑成功!");
    }
    /**
     *   通过id删除
     *
     * @param id
     * @return
     */
    @AutoLog(value = "dry_opc_device-通过id删除")
    @ApiOperation(value="dry_opc_device-通过id删除", notes="dry_opc_device-通过id删除")
    @RequiresPermissions("dry:dry_opc_device:delete")
    @DeleteMapping(value = "/delete")
    public Result<String> delete(@RequestParam(name="id",required=true) String id) {
        dryOpcDeviceService.removeById(id);
        return Result.OK("删除成功!");
    }
    /**
     *  批量删除
     *
     * @param ids
     * @return
     */
    @AutoLog(value = "dry_opc_device-批量删除")
    @ApiOperation(value="dry_opc_device-批量删除", notes="dry_opc_device-批量删除")
    @RequiresPermissions("dry:dry_opc_device:deleteBatch")
    @DeleteMapping(value = "/deleteBatch")
    public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
        this.dryOpcDeviceService.removeByIds(Arrays.asList(ids.split(",")));
        return Result.OK("批量删除成功!");
    }
    /**
     * 通过id查询
     *
     * @param id
     * @return
     */
    //@AutoLog(value = "dry_opc_device-通过id查询")
    @ApiOperation(value="dry_opc_device-通过id查询", notes="dry_opc_device-通过id查询")
    @GetMapping(value = "/queryById")
    public Result<DryOpcDevice> queryById(@RequestParam(name="id",required=true) String id) {
        DryOpcDevice dryOpcDevice = dryOpcDeviceService.getById(id);
        if(dryOpcDevice==null) {
            return Result.error("未找到对应数据");
        }
        return Result.OK(dryOpcDevice);
    }
    /**
    * 导出excel
    *
    * @param request
    * @param dryOpcDevice
    */
    @RequiresPermissions("dry:dry_opc_device:exportXls")
    @RequestMapping(value = "/exportXls")
    public ModelAndView exportXls(HttpServletRequest request, DryOpcDevice dryOpcDevice) {
        return super.exportXls(request, dryOpcDevice, DryOpcDevice.class, "dry_opc_device");
    }
    /**
      * 通过excel导入数据
    *
    * @param request
    * @param response
    * @return
    */
    @RequiresPermissions("dry:dry_opc_device:importExcel")
    @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
    public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
        return super.importExcel(request, response, DryOpcDevice.class);
    }
}
jeecg-module-dry/jeecg-module-dry-biz/src/main/java/org/jeecg/modules/dry/controller/OpcController.java
@@ -1,66 +1,66 @@
//package org.jeecg.modules.dry.controller;
//
//import com.kangaroohy.milo.model.ReadWriteEntity;
//import com.kangaroohy.milo.service.MiloService;
//import io.swagger.annotations.Api;
//import io.swagger.annotations.ApiOperation;
//import lombok.extern.slf4j.Slf4j;
//import org.eclipse.milo.opcua.sdk.client.OpcUaClient;
//import org.eclipse.milo.opcua.stack.core.types.builtin.DataValue;
//import org.eclipse.milo.opcua.stack.core.types.builtin.NodeId;
//import org.eclipse.milo.opcua.stack.core.types.builtin.StatusCode;
//import org.eclipse.milo.opcua.stack.core.types.builtin.Variant;
//import org.jeecg.common.api.vo.Result;
//import org.jeecg.modules.dry.entity.DryOpcDevice;
//import org.jeecg.modules.dry.service.IDryOpcDeviceService;
//import org.jeecg.modules.dry.vo.CommandMessageVo;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.web.bind.annotation.PostMapping;
//import org.springframework.web.bind.annotation.RequestBody;
//import org.springframework.web.bind.annotation.RequestMapping;
//import org.springframework.web.bind.annotation.RestController;
//
//import java.util.List;
//import java.util.concurrent.ExecutionException;
//
///**
// * opc控制器,用于控制现场摄像头电源,灯的开关
// */
//
//@Api(tags="OPC控制器")
//@RestController
//@RequestMapping("/dry/opc")
//@Slf4j
//public class OpcController {
//
//    @Autowired
//    private MiloService miloService;
//
//    @Autowired
//    private IDryOpcDeviceService opcDeviceService;
//
//
//    @ApiOperation(value="发送控制指令", notes="向服务端发送控制指令,由服务端转发给控制模块")
//    @PostMapping("/sendWriteCommand")
//    public Result<?> sendWriteCommand(@RequestBody CommandMessageVo msgVo) throws Exception {
//
//        miloService.writeToOpcUa(ReadWriteEntity.builder()
//                .identifier(msgVo.getCode())
//                //Kep中是Boolean类型
//                .value(Boolean.valueOf(msgVo.getMsg()))
//                .build());
//        return Result.OK();
//    }
//
//    @ApiOperation(value="发送控制指令", notes="向服务端发送控制指令,由服务端转发给控制模块")
//    @PostMapping("/initDevice")
//    public Result<?> initDevice() throws Exception {
//        List<DryOpcDevice> list = opcDeviceService.list();
//
//        list.forEach(item -> {
//
//        });
//
//        return Result.OK();
//    }
//}
package org.jeecg.modules.dry.controller;
import com.kangaroohy.milo.model.ReadWriteEntity;
import com.kangaroohy.milo.service.MiloService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.eclipse.milo.opcua.sdk.client.OpcUaClient;
import org.eclipse.milo.opcua.stack.core.types.builtin.DataValue;
import org.eclipse.milo.opcua.stack.core.types.builtin.NodeId;
import org.eclipse.milo.opcua.stack.core.types.builtin.StatusCode;
import org.eclipse.milo.opcua.stack.core.types.builtin.Variant;
import org.jeecg.common.api.vo.Result;
import org.jeecg.modules.dry.entity.DryOpcDevice;
import org.jeecg.modules.dry.service.IDryOpcDeviceService;
import org.jeecg.modules.dry.vo.CommandMessageVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
import java.util.concurrent.ExecutionException;
/**
 * opc控制器,用于控制现场摄像头电源,灯的开关
 */
@Api(tags="OPC控制器")
@RestController
@RequestMapping("/dry/opc")
@Slf4j
public class OpcController {
    @Autowired
    private MiloService miloService;
    @Autowired
    private IDryOpcDeviceService opcDeviceService;
    @ApiOperation(value="发送控制指令", notes="向服务端发送控制指令,由服务端转发给控制模块")
    @PostMapping("/sendWriteCommand")
    public Result<?> sendWriteCommand(@RequestBody CommandMessageVo msgVo) throws Exception {
        miloService.writeToOpcUa(ReadWriteEntity.builder()
                .identifier(msgVo.getCode())
                //Kep中是Boolean类型
                .value(Boolean.valueOf(msgVo.getMsg()))
                .build());
        return Result.OK();
    }
    @ApiOperation(value="发送控制指令", notes="向服务端发送控制指令,由服务端转发给控制模块")
    @PostMapping("/initDevice")
    public Result<?> initDevice() throws Exception {
        List<DryOpcDevice> list = opcDeviceService.list();
        list.forEach(item -> {
        });
        return Result.OK();
    }
}
jeecg-module-dry/jeecg-module-dry-biz/src/main/java/org/jeecg/modules/dry/runner/OpcCustomRunner.java
@@ -1,58 +1,58 @@
//package org.jeecg.modules.dry.runner;
//
//import com.alibaba.fastjson.JSON;
//import com.kangaroohy.milo.service.MiloService;
//import lombok.extern.slf4j.Slf4j;
//import org.jeecg.modules.dry.entity.DryOpcDevice;
//import org.jeecg.modules.dry.service.IDryOpcDeviceService;
//import org.jeecg.modules.dry.vo.DryOpcMsgVo;
//import org.jeecg.modules.dry.websocket.DrySocket;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.boot.ApplicationArguments;
//import org.springframework.boot.ApplicationRunner;
//import org.springframework.stereotype.Component;
//
//import java.util.ArrayList;
//import java.util.List;
//
//@Component
//@Slf4j
//public class OpcCustomRunner implements ApplicationRunner {
//    @Autowired
//    private MiloService miloService;
//
//
//    @Autowired
//    private IDryOpcDeviceService dryOpcDeviceService;
//
//    @Autowired
//    private DrySocket drySocket;
//    @Override
//    public void run(ApplicationArguments args) throws Exception {
//
//        subscript();
//
//    }
//
//    private void subscript() throws Exception {
//        List<String> ids = new ArrayList<>();
//        List<DryOpcDevice> list = dryOpcDeviceService.list();
//        list.forEach(item -> {
//            ids.add(item.getIdentifier());
//        });
////        ids.add("通道 1.设备 1.标记 1");
////        ids.add("通道 1.设备 1.标记 2");
////        ids.add("channel1.device1.tag1");
////        ids.add("channel1.device1.tag2");
////        ids.add("channel1.device1.tag3");
////        ids.add("channel1.device1.tag4");
////        ids.add("channel1.device1.tag5");
////        ids.add("channel1.device1.tag6");
//        miloService.subscriptionFromOpcUa(ids, (id,value)->{
//            log.info("subscription 点位:{} 订阅到消息:{}", id, value);
//
//            DryOpcMsgVo dryOpcMsgVo = new DryOpcMsgVo(id, (Boolean) value);
//            drySocket.pushMessage("1003", JSON.toJSONString(dryOpcMsgVo));
//        } );
//    }
//}
package org.jeecg.modules.dry.runner;
import com.alibaba.fastjson.JSON;
import com.kangaroohy.milo.service.MiloService;
import lombok.extern.slf4j.Slf4j;
import org.jeecg.modules.dry.entity.DryOpcDevice;
import org.jeecg.modules.dry.service.IDryOpcDeviceService;
import org.jeecg.modules.dry.vo.DryOpcMsgVo;
import org.jeecg.modules.dry.websocket.DrySocket;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.List;
@Component
@Slf4j
public class OpcCustomRunner implements ApplicationRunner {
    @Autowired
    private MiloService miloService;
    @Autowired
    private IDryOpcDeviceService dryOpcDeviceService;
    @Autowired
    private DrySocket drySocket;
    @Override
    public void run(ApplicationArguments args) throws Exception {
        subscript();
    }
    private void subscript() throws Exception {
        List<String> ids = new ArrayList<>();
        List<DryOpcDevice> list = dryOpcDeviceService.list();
        list.forEach(item -> {
            ids.add(item.getIdentifier());
        });
//        ids.add("通道 1.设备 1.标记 1");
//        ids.add("通道 1.设备 1.标记 2");
//        ids.add("channel1.device1.tag1");
//        ids.add("channel1.device1.tag2");
//        ids.add("channel1.device1.tag3");
//        ids.add("channel1.device1.tag4");
//        ids.add("channel1.device1.tag5");
//        ids.add("channel1.device1.tag6");
        miloService.subscriptionFromOpcUa(ids, (id,value)->{
            log.info("subscription 点位:{} 订阅到消息:{}", id, value);
            DryOpcMsgVo dryOpcMsgVo = new DryOpcMsgVo(id, (Boolean) value);
            drySocket.pushMessage("1003", JSON.toJSONString(dryOpcMsgVo));
        } );
    }
}