From f103eb4fde47b0229b561329f66574db81257dd5 Mon Sep 17 00:00:00 2001
From: zhuguifei <312353457@qq.com>
Date: 星期三, 20 十一月 2024 10:46:45 +0800
Subject: [PATCH] Merge branch 'herb' of https://gitee.com/baoshwi/herb into herb

---
 jeecg-module-dry/jeecg-module-dry-api/pom.xml                                                                    |   10 
 jeecg-module-dry/jeecg-module-dry-biz/src/main/java/org/jeecg/modules/dry/controller/DryOpcDeviceController.java |  410 +++++++++++++++++-----------------
 jeecg-module-dry/jeecg-module-dry-biz/src/main/java/org/jeecg/modules/dry/runner/OpcCustomRunner.java            |  116 ++++----
 jeecg-module-dry/jeecg-module-dry-biz/src/main/java/org/jeecg/modules/dry/controller/OpcController.java          |  132 +++++-----
 4 files changed, 334 insertions(+), 334 deletions(-)

diff --git a/jeecg-module-dry/jeecg-module-dry-api/pom.xml b/jeecg-module-dry/jeecg-module-dry-api/pom.xml
index fd4d4a0..8bce88b 100644
--- a/jeecg-module-dry/jeecg-module-dry-api/pom.xml
+++ b/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>
diff --git a/jeecg-module-dry/jeecg-module-dry-biz/src/main/java/org/jeecg/modules/dry/controller/DryOpcDeviceController.java b/jeecg-module-dry/jeecg-module-dry-biz/src/main/java/org/jeecg/modules/dry/controller/DryOpcDeviceController.java
index 58dbb08..767677f 100644
--- a/jeecg-module-dry/jeecg-module-dry-biz/src/main/java/org/jeecg/modules/dry/controller/DryOpcDeviceController.java
+++ b/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);
+    }
+
+}
diff --git a/jeecg-module-dry/jeecg-module-dry-biz/src/main/java/org/jeecg/modules/dry/controller/OpcController.java b/jeecg-module-dry/jeecg-module-dry-biz/src/main/java/org/jeecg/modules/dry/controller/OpcController.java
index 84e7484..02852d6 100644
--- a/jeecg-module-dry/jeecg-module-dry-biz/src/main/java/org/jeecg/modules/dry/controller/OpcController.java
+++ b/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();
+    }
+}
diff --git a/jeecg-module-dry/jeecg-module-dry-biz/src/main/java/org/jeecg/modules/dry/runner/OpcCustomRunner.java b/jeecg-module-dry/jeecg-module-dry-biz/src/main/java/org/jeecg/modules/dry/runner/OpcCustomRunner.java
index 98bb58d..e9149dd 100644
--- a/jeecg-module-dry/jeecg-module-dry-biz/src/main/java/org/jeecg/modules/dry/runner/OpcCustomRunner.java
+++ b/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));
+        } );
+    }
+}

--
Gitblit v1.9.3