From ee9f604388a3e77d3f4654e326f3976552e7f532 Mon Sep 17 00:00:00 2001
From: Jay <csj123456>
Date: 星期一, 25 十一月 2024 13:40:07 +0800
Subject: [PATCH] 测点启用和禁用

---
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/kio/controller/admin/ChannelKioTagController.java |  149 ++++++++++++++++++++++++++++++++++---------------
 1 files changed, 102 insertions(+), 47 deletions(-)

diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/kio/controller/admin/ChannelKioTagController.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/kio/controller/admin/ChannelKioTagController.java
index da0b4c9..f0b2ce7 100644
--- a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/kio/controller/admin/ChannelKioTagController.java
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/kio/controller/admin/ChannelKioTagController.java
@@ -1,27 +1,44 @@
 package com.iailab.module.data.channel.kio.controller.admin;
 
-import com.iailab.framework.common.constant.Constant;
-import com.iailab.framework.common.page.PageData;
+import com.iailab.framework.apilog.core.annotation.ApiAccessLog;
 import com.iailab.framework.common.pojo.CommonResult;
-import com.iailab.framework.common.util.validation.ValidationUtils;
-import com.iailab.framework.common.validation.group.AddGroup;
-import com.iailab.framework.common.validation.group.DefaultGroup;
-import com.iailab.module.data.channel.kio.dto.ChannelKioTagDTO;
+import com.iailab.framework.common.pojo.PageParam;
+import com.iailab.framework.common.pojo.PageResult;
+import com.iailab.framework.common.util.object.BeanUtils;
+import com.iailab.framework.common.util.object.ConvertUtils;
+import com.iailab.framework.excel.core.util.ExcelUtils;
+import com.iailab.module.data.channel.kio.collector.KingIOCollector;
+import com.iailab.module.data.channel.kio.entity.ChannelKioTagEntity;
 import com.iailab.module.data.channel.kio.service.ChannelKioTagService;
+import com.iailab.module.data.channel.kio.vo.KioTagPageReqVO;
+import com.iailab.module.data.channel.kio.vo.KioTagRespVO;
+import com.iailab.module.data.channel.tag.vo.TagExportExcelVO;
+import com.iailab.module.data.channel.tag.vo.TagImportExcelVO;
+import com.iailab.module.data.channel.tag.vo.TagImportRespVO;
+import com.iailab.module.data.common.enums.DataQualityEnum;
+import com.iailab.module.data.common.enums.IsEnableEnum;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.Parameter;
 import io.swagger.v3.oas.annotations.Parameters;
-import javax.annotation.Resource;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
 
-import java.util.Map;
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.Valid;
+import java.io.IOException;
+import java.util.Collections;
+import java.util.Date;
+import java.util.List;
 import java.util.UUID;
 
+import static com.iailab.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
+import static com.iailab.framework.common.pojo.CommonResult.success;
+
 /**
- * 操作opcua tag配置
- *
- * @author DongYukun
- * @createTime 2023年05月6日 17:44:00
+
  */
 @RestController
 @RequestMapping("/data/channel/kio/tag")
@@ -29,54 +46,92 @@
     @Resource
     private ChannelKioTagService channelKioTagService;
 
+    @Resource
+    private KingIOCollector kingIOCollector;
+
     /**
      * 分页查询tag
      * */
+    @PreAuthorize("@ss.hasPermission('data:channel-kio:query')")
     @GetMapping("page")
-    @Operation(summary = "分页")
-    @Parameters({
-            @Parameter(name = Constant.PAGE, description = "当前页码,从1开始", required = true) ,
-            @Parameter(name = Constant.LIMIT, description = "每页显示记录数", required = true) ,
-            @Parameter(name = Constant.ORDER_FIELD, description = "排序字段") ,
-            @Parameter(name = Constant.ORDER, description = "排序方式,可选值(asc、desc)")
-    })
-    public CommonResult<PageData<ChannelKioTagDTO>> page(@RequestParam Map<String, Object> params){
-        PageData<ChannelKioTagDTO> page = channelKioTagService.page(params);
-        return  new CommonResult<PageData<ChannelKioTagDTO>>().setData(page);
+    public CommonResult<PageResult<KioTagRespVO>> page(@Valid KioTagPageReqVO reqVO){
+        PageResult<ChannelKioTagEntity> page = channelKioTagService.queryPage(reqVO);
+        PageResult<KioTagRespVO> pageResult = BeanUtils.toBean(page, KioTagRespVO.class);
+        pageResult.getList().forEach(item -> {
+            item.setDataValue(kingIOCollector.getTagValue(item.getDevice(), item.getTagName()));
+            item.setDataTime(new Date());
+            item.setDataQuality(DataQualityEnum.getEumByValue(item.getDataValue()).getDesc());
+        });
+        return success(pageResult);
     }
 
-    @GetMapping("{id}")
+    @PreAuthorize("@ss.hasPermission('data:channel-kio:query')")
+    @GetMapping("/info/{id}")
     @Operation(summary = "信息")
-    public CommonResult<ChannelKioTagDTO> get(@PathVariable("id") String id){
-        ChannelKioTagDTO data= channelKioTagService.get(id);
-        return new CommonResult<ChannelKioTagDTO>().setData(data);
+    public CommonResult<ChannelKioTagEntity> info(@PathVariable("id") String id) {
+        ChannelKioTagEntity info = channelKioTagService.info(id);
+        return success(info);
     }
 
-    @PostMapping
-    @Operation(summary = "保存")
-    public CommonResult save(@RequestBody ChannelKioTagDTO entity){
-        entity.setId(UUID.randomUUID().toString());
-        channelKioTagService.save(entity);
-        return new CommonResult();
+    @PreAuthorize("@ss.hasPermission('data:channel-kio:create')")
+    @PostMapping("/create")
+    public CommonResult<Boolean> create(@RequestBody ChannelKioTagEntity channelKioTagEntity) {
+        String id = UUID.randomUUID().toString();
+        channelKioTagEntity.setId(id);
+        channelKioTagEntity.setCreateTime(new Date());
+        channelKioTagService.add(channelKioTagEntity);
+        return success(true);
     }
 
-    /**
-     * 修改tag
-     */
-    @PutMapping
-    @Operation(summary = "修改")
-    public CommonResult update(@RequestBody ChannelKioTagDTO dto) {
-        //效验数据
-        ValidationUtils.validate(dto, AddGroup.class, DefaultGroup.class);
-        channelKioTagService.update(dto);
-        return new CommonResult();
+    @PreAuthorize("@ss.hasPermission('data:channel-kio:update')")
+    @PutMapping("/update")
+    public CommonResult<Boolean> update(@RequestBody ChannelKioTagEntity channelKioTagEntity) {
+        channelKioTagEntity.setUpdateTime(new Date());
+        channelKioTagService.update(channelKioTagEntity);
+        return success(true);
     }
 
-    @DeleteMapping
-    @Operation(summary = "删除")
-    public CommonResult tagDelete(@RequestBody String[] ids) {
-        channelKioTagService.delete(ids);
-        return new CommonResult();
+    @PreAuthorize("@ss.hasPermission('data:channel-kio:delete')")
+    @DeleteMapping("/delete")
+    public CommonResult<Boolean> delete(@RequestParam("id") String id) {
+        channelKioTagService.delete(id);
+        return success(true);
     }
 
+    @GetMapping("/export")
+    @Operation(summary = "导出modbus tag列表")
+    @PreAuthorize("@ss.hasPermission('data:channel-kio-tag:export')")
+    @ApiAccessLog(operateType = EXPORT)
+    public void exportPointList(@Validated KioTagPageReqVO reqVO, HttpServletResponse response) throws IOException {
+        reqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
+        PageResult<ChannelKioTagEntity> page = channelKioTagService.queryPage(reqVO);
+        List<TagExportExcelVO> list = ConvertUtils.sourceToTarget(page.getList(), TagExportExcelVO.class);
+        ExcelUtils.write(response, "tag列表.xls", "数据", TagExportExcelVO.class, list, true);
+    }
+
+    @GetMapping("/get-import-template")
+    @Operation(summary = "获得tag导入模板")
+    public void importTemplate(HttpServletResponse response) throws IOException {
+        // 手动创建导出 demo
+        List<TagImportExcelVO> list = Collections.singletonList(
+                TagImportExcelVO.builder().tagName("Tag名称").tagDesc("Tag描述").dataType("String").enabled(IsEnableEnum.ENABLE.getCode())
+                        .build()
+        );
+        // 输出
+        ExcelUtils.write(response, "tag导入模板.xls", "tag列表", TagImportExcelVO.class, list,true);
+    }
+
+    @PostMapping("/import")
+    @Operation(summary = "导入tag")
+    @Parameters({
+            @Parameter(name = "file", description = "Excel 文件", required = true),
+            @Parameter(name = "updateSupport", description = "是否支持更新,默认为 false", example = "true")
+    })
+    @PreAuthorize("@ss.hasPermission('data:channel-kio-tag:import')")
+    public CommonResult<TagImportRespVO> importExcel(@RequestParam("file") MultipartFile file,
+                                                     @RequestParam(value = "updateSupport", required = false, defaultValue = "false") Boolean updateSupport,
+                                                     @RequestParam("device") String device) throws Exception {
+        List<TagImportExcelVO> list = ExcelUtils.read(file, TagImportExcelVO.class);
+        return success(channelKioTagService.importKioTagList(list, updateSupport, device));
+    }
 }

--
Gitblit v1.9.3