From db184afd0c5bf3359b44eb0251fa5b07386eb3ff Mon Sep 17 00:00:00 2001
From: dengzedong <dengzedong@email>
Date: 星期三, 06 十一月 2024 09:48:13 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/channel/kio/controller/admin/ChannelKioTagController.java |  161 ++++++++++++++++++++++++++++++++++++++---------------
 1 files changed, 114 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..e9f8e5b 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,45 @@
 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.framework.common.util.object.ConvertUtils;
+import com.iailab.framework.excel.core.util.ExcelUtils;
+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 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 java.util.stream.Collectors;
+
+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 +47,103 @@
     @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> pageResultVO = new PageResult<>();
+        pageResultVO.setTotal(page.getTotal());
+
+        List<KioTagRespVO> vos = page.getList().stream().map(entity -> {
+
+            KioTagRespVO vo = BeanUtils.toBean(entity,KioTagRespVO.class);
+            try {
+                vo.setDataValue(Double.parseDouble(kingIOCollector.getTagValue(reqVO.getDeviceId(), entity.getTagName())));
+            }catch (Exception e){
+                e.printStackTrace();
+            }
+            return vo;
+        }).collect(Collectors.toList());
+
+        pageResultVO.setList(vos);
+
+        return success(pageResultVO);
     }
 
-    @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(1)
+                        .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