Browse Source

环境监测集成modbus/tcp定时任务

王先生 2 years ago
parent
commit
798bdcedd4

+ 10 - 21
eladmin-system/src/main/java/me/zhengjie/modules/dm/envmonitor/historydata/domain/DmEnvHistoryData.java

@@ -20,15 +20,20 @@ import cn.hutool.core.bean.BeanUtil;
 import io.swagger.annotations.ApiModelProperty;
 import cn.hutool.core.bean.copier.CopyOptions;
 import javax.persistence.*;
+import javax.persistence.CascadeType;
 import javax.validation.constraints.*;
 import javax.persistence.Entity;
 import javax.persistence.Table;
+
+import me.zhengjie.base.BaseEntity;
+import me.zhengjie.modules.dm.envmonitor.historymodbusdata.domain.DmEnvHistoryModbusData;
 import org.hibernate.annotations.*;
 import org.springframework.data.annotation.CreatedBy;
 import org.springframework.data.annotation.LastModifiedBy;
 
 import java.sql.Timestamp;
 import java.io.Serializable;
+import java.util.Set;
 
 /**
 * @website https://el-admin.vip
@@ -39,7 +44,7 @@ import java.io.Serializable;
 @Entity
 @Data
 @Table(name="dm_env_history_data")
-public class DmEnvHistoryData implements Serializable {
+public class DmEnvHistoryData extends BaseEntity implements Serializable {
 
     @Id
     @GeneratedValue(strategy = GenerationType.IDENTITY)
@@ -59,30 +64,14 @@ public class DmEnvHistoryData implements Serializable {
     @ApiModelProperty(value = "监控对象")
     private String monitorObject;
 
-    @CreatedBy
-    @Column(name = "create_by", updatable = false)
-    @ApiModelProperty(value = "创建人", hidden = true)
-    private String createBy;
-
-    @LastModifiedBy
-    @Column(name = "update_by")
-    @ApiModelProperty(value = "更新人", hidden = true)
-    private String updateBy;
-
-    @CreationTimestamp
-    @Column(name = "create_time", updatable = false)
-    @ApiModelProperty(value = "创建时间", hidden = true)
-    private Timestamp createTime;
-
-    @UpdateTimestamp
-    @Column(name = "update_time")
-    @ApiModelProperty(value = "更新时间", hidden = true)
-    private Timestamp updateTime;
-
     @Column(name = "device_state")
     @ApiModelProperty(value = "状态 0离线 1在线 2告警")
     private Integer deviceState;
 
+    @OneToMany(fetch = FetchType.EAGER,cascade = {CascadeType.REFRESH})
+    @JoinColumn(name = "device_identifier")
+    private Set<DmEnvHistoryModbusData> dmEnvHistoryModbusDataSet;
+
     public void copy(DmEnvHistoryData source){
         BeanUtil.copyProperties(source,this, CopyOptions.create().setIgnoreNullValue(true));
     }

+ 10 - 13
eladmin-system/src/main/java/me/zhengjie/modules/dm/envmonitor/historydata/service/dto/DmEnvHistoryDataDto.java

@@ -15,9 +15,15 @@
 */
 package me.zhengjie.modules.dm.envmonitor.historydata.service.dto;
 
+import com.alibaba.fastjson.annotation.JSONField;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
 import lombok.Data;
+import me.zhengjie.base.BaseDTO;
+import me.zhengjie.modules.dm.envmonitor.historymodbusdata.domain.DmEnvHistoryModbusData;
+
 import java.sql.Timestamp;
 import java.io.Serializable;
+import java.util.Set;
 
 /**
 * @website https://el-admin.vip
@@ -26,9 +32,10 @@ import java.io.Serializable;
 * @date 2022-05-19
 **/
 @Data
-public class DmEnvHistoryDataDto implements Serializable {
+public class DmEnvHistoryDataDto extends BaseDTO implements Serializable {
 
     /** 主键 */
+    @JSONField(serializeUsing = ToStringSerializer.class)
     private Long id;
 
     /** 设备编号 */
@@ -40,18 +47,8 @@ public class DmEnvHistoryDataDto implements Serializable {
     /** 监控对象 */
     private String monitorObject;
 
-    /** 创建人 */
-    private String createBy;
-
-    /** 更新人 */
-    private String updateBy;
-
-    /** 创建时间 */
-    private Timestamp createTime;
-
-    /** 更新时间 */
-    private Timestamp updateTime;
-
     /** 状态 0离线 1在线 2告警 */
     private Integer deviceState;
+
+    private Set<DmEnvHistoryModbusData> dmEnvHistoryModbusDataSet;
 }

+ 77 - 0
eladmin-system/src/main/java/me/zhengjie/modules/dm/envmonitor/historymodbusdata/domain/DmEnvHistoryModbusData.java

@@ -0,0 +1,77 @@
+/*
+*  Copyright 2019-2020 Zheng Jie
+*
+*  Licensed under the Apache License, Version 2.0 (the "License");
+*  you may not use this file except in compliance with the License.
+*  You may obtain a copy of the License at
+*
+*  http://www.apache.org/licenses/LICENSE-2.0
+*
+*  Unless required by applicable law or agreed to in writing, software
+*  distributed under the License is distributed on an "AS IS" BASIS,
+*  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+*  See the License for the specific language governing permissions and
+*  limitations under the License.
+*/
+package me.zhengjie.modules.dm.envmonitor.historymodbusdata.domain;
+
+import lombok.Data;
+import cn.hutool.core.bean.BeanUtil;
+import io.swagger.annotations.ApiModelProperty;
+import cn.hutool.core.bean.copier.CopyOptions;
+import javax.persistence.*;
+import javax.validation.constraints.*;
+import java.io.Serializable;
+
+/**
+* @website https://el-admin.vip
+* @description /
+* @author wld
+* @date 2022-05-24
+**/
+@Entity
+@Data
+@Table(name="dm_env_history_modbus_data")
+public class DmEnvHistoryModbusData implements Serializable {
+
+    @Id
+    @Column(name = "id")
+    @ApiModelProperty(value = "主键")
+    private Long id;
+
+    @Column(name = "CHO")
+    @ApiModelProperty(value = "cho")
+    private String cho;
+
+    @Column(name = "CO2")
+    @ApiModelProperty(value = "co2")
+    private String co2;
+
+    @Column(name = "H")
+    @ApiModelProperty(value = "h")
+    private String h;
+
+    @Column(name = "PM10")
+    @ApiModelProperty(value = "pm10")
+    private String pm10;
+
+    @Column(name = "PM25")
+    @ApiModelProperty(value = "pm25")
+    private String pm25;
+
+    @Column(name = "T")
+    @ApiModelProperty(value = "t")
+    private String t;
+
+    @Column(name = "VOC")
+    @ApiModelProperty(value = "voc")
+    private String voc;
+
+    @Column(name = "device_identifier")
+    @ApiModelProperty(value = "关联对象id")
+    private Long dataId;
+
+    public void copy(DmEnvHistoryModbusData source){
+        BeanUtil.copyProperties(source,this, CopyOptions.create().setIgnoreNullValue(true));
+    }
+}

+ 28 - 0
eladmin-system/src/main/java/me/zhengjie/modules/dm/envmonitor/historymodbusdata/repository/DmEnvHistoryModbusDataRepository.java

@@ -0,0 +1,28 @@
+/*
+*  Copyright 2019-2020 Zheng Jie
+*
+*  Licensed under the Apache License, Version 2.0 (the "License");
+*  you may not use this file except in compliance with the License.
+*  You may obtain a copy of the License at
+*
+*  http://www.apache.org/licenses/LICENSE-2.0
+*
+*  Unless required by applicable law or agreed to in writing, software
+*  distributed under the License is distributed on an "AS IS" BASIS,
+*  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+*  See the License for the specific language governing permissions and
+*  limitations under the License.
+*/
+package me.zhengjie.modules.dm.envmonitor.historymodbusdata.repository;
+
+import me.zhengjie.modules.dm.envmonitor.historymodbusdata.domain.DmEnvHistoryModbusData;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+
+/**
+* @website https://el-admin.vip
+* @author wld
+* @date 2022-05-24
+**/
+public interface DmEnvHistoryModbusDataRepository extends JpaRepository<DmEnvHistoryModbusData, Long>, JpaSpecificationExecutor<DmEnvHistoryModbusData> {
+}

+ 87 - 0
eladmin-system/src/main/java/me/zhengjie/modules/dm/envmonitor/historymodbusdata/rest/DmEnvHistoryModbusDataController.java

@@ -0,0 +1,87 @@
+/*
+*  Copyright 2019-2020 Zheng Jie
+*
+*  Licensed under the Apache License, Version 2.0 (the "License");
+*  you may not use this file except in compliance with the License.
+*  You may obtain a copy of the License at
+*
+*  http://www.apache.org/licenses/LICENSE-2.0
+*
+*  Unless required by applicable law or agreed to in writing, software
+*  distributed under the License is distributed on an "AS IS" BASIS,
+*  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+*  See the License for the specific language governing permissions and
+*  limitations under the License.
+*/
+package me.zhengjie.modules.dm.envmonitor.historymodbusdata.rest;
+
+import me.zhengjie.annotation.Log;
+import me.zhengjie.modules.dm.envmonitor.historymodbusdata.domain.DmEnvHistoryModbusData;
+import me.zhengjie.modules.dm.envmonitor.historymodbusdata.service.DmEnvHistoryModbusDataService;
+import me.zhengjie.modules.dm.envmonitor.historymodbusdata.service.dto.DmEnvHistoryModbusDataQueryCriteria;
+import org.springframework.data.domain.Pageable;
+import lombok.RequiredArgsConstructor;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+import io.swagger.annotations.*;
+import java.io.IOException;
+import javax.servlet.http.HttpServletResponse;
+
+/**
+* @website https://el-admin.vip
+* @author wld
+* @date 2022-05-24
+**/
+@RestController
+@RequiredArgsConstructor
+@Api(tags = "管理modbus获取的数据管理")
+@RequestMapping("/api/dmEnvHistoryModbusData")
+public class DmEnvHistoryModbusDataController {
+
+    private final DmEnvHistoryModbusDataService dmEnvHistoryModbusDataService;
+
+    @Log("导出数据")
+    @ApiOperation("导出数据")
+    @GetMapping(value = "/download")
+    @PreAuthorize("@el.check('dmEnvHistoryModbusData:list')")
+    public void download(HttpServletResponse response, DmEnvHistoryModbusDataQueryCriteria criteria) throws IOException {
+        dmEnvHistoryModbusDataService.download(dmEnvHistoryModbusDataService.queryAll(criteria), response);
+    }
+
+    @GetMapping
+    @Log("查询管理modbus获取的数据")
+    @ApiOperation("查询管理modbus获取的数据")
+    @PreAuthorize("@el.check('dmEnvHistoryModbusData:list')")
+    public ResponseEntity<Object> query(DmEnvHistoryModbusDataQueryCriteria criteria, Pageable pageable){
+        return new ResponseEntity<>(dmEnvHistoryModbusDataService.queryAll(criteria,pageable),HttpStatus.OK);
+    }
+
+    @PostMapping
+    @Log("新增管理modbus获取的数据")
+    @ApiOperation("新增管理modbus获取的数据")
+    @PreAuthorize("@el.check('dmEnvHistoryModbusData:add')")
+    public ResponseEntity<Object> create(@Validated @RequestBody DmEnvHistoryModbusData resources){
+        return new ResponseEntity<>(dmEnvHistoryModbusDataService.create(resources),HttpStatus.CREATED);
+    }
+
+    @PutMapping
+    @Log("修改管理modbus获取的数据")
+    @ApiOperation("修改管理modbus获取的数据")
+    @PreAuthorize("@el.check('dmEnvHistoryModbusData:edit')")
+    public ResponseEntity<Object> update(@Validated @RequestBody DmEnvHistoryModbusData resources){
+        dmEnvHistoryModbusDataService.update(resources);
+        return new ResponseEntity<>(HttpStatus.NO_CONTENT);
+    }
+
+    @Log("删除管理modbus获取的数据")
+    @ApiOperation("删除管理modbus获取的数据")
+    @PreAuthorize("@el.check('dmEnvHistoryModbusData:del')")
+    @DeleteMapping
+    public ResponseEntity<Object> delete(@RequestBody Long[] ids) {
+        dmEnvHistoryModbusDataService.deleteAll(ids);
+        return new ResponseEntity<>(HttpStatus.OK);
+    }
+}

+ 83 - 0
eladmin-system/src/main/java/me/zhengjie/modules/dm/envmonitor/historymodbusdata/service/DmEnvHistoryModbusDataService.java

@@ -0,0 +1,83 @@
+/*
+*  Copyright 2019-2020 Zheng Jie
+*
+*  Licensed under the Apache License, Version 2.0 (the "License");
+*  you may not use this file except in compliance with the License.
+*  You may obtain a copy of the License at
+*
+*  http://www.apache.org/licenses/LICENSE-2.0
+*
+*  Unless required by applicable law or agreed to in writing, software
+*  distributed under the License is distributed on an "AS IS" BASIS,
+*  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+*  See the License for the specific language governing permissions and
+*  limitations under the License.
+*/
+package me.zhengjie.modules.dm.envmonitor.historymodbusdata.service;
+
+import me.zhengjie.modules.dm.envmonitor.historymodbusdata.domain.DmEnvHistoryModbusData;
+import me.zhengjie.modules.dm.envmonitor.historymodbusdata.service.dto.DmEnvHistoryModbusDataDto;
+import me.zhengjie.modules.dm.envmonitor.historymodbusdata.service.dto.DmEnvHistoryModbusDataQueryCriteria;
+import org.springframework.data.domain.Pageable;
+import java.util.Map;
+import java.util.List;
+import java.io.IOException;
+import javax.servlet.http.HttpServletResponse;
+
+/**
+* @website https://el-admin.vip
+* @description 服务接口
+* @author wld
+* @date 2022-05-24
+**/
+public interface DmEnvHistoryModbusDataService {
+
+    /**
+    * 查询数据分页
+    * @param criteria 条件
+    * @param pageable 分页参数
+    * @return Map<String,Object>
+    */
+    Map<String,Object> queryAll(DmEnvHistoryModbusDataQueryCriteria criteria, Pageable pageable);
+
+    /**
+    * 查询所有数据不分页
+    * @param criteria 条件参数
+    * @return List<DmEnvHistoryModbusDataDto>
+    */
+    List<DmEnvHistoryModbusDataDto> queryAll(DmEnvHistoryModbusDataQueryCriteria criteria);
+
+    /**
+     * 根据ID查询
+     * @param id ID
+     * @return DmEnvHistoryModbusDataDto
+     */
+    DmEnvHistoryModbusDataDto findById(Long id);
+
+    /**
+    * 创建
+    * @param resources /
+    * @return DmEnvHistoryModbusDataDto
+    */
+    DmEnvHistoryModbusDataDto create(DmEnvHistoryModbusData resources);
+
+    /**
+    * 编辑
+    * @param resources /
+    */
+    void update(DmEnvHistoryModbusData resources);
+
+    /**
+    * 多选删除
+    * @param ids /
+    */
+    void deleteAll(Long[] ids);
+
+    /**
+    * 导出数据
+    * @param all 待导出的数据
+    * @param response /
+    * @throws IOException /
+    */
+    void download(List<DmEnvHistoryModbusDataDto> all, HttpServletResponse response) throws IOException;
+}

+ 53 - 0
eladmin-system/src/main/java/me/zhengjie/modules/dm/envmonitor/historymodbusdata/service/dto/DmEnvHistoryModbusDataDto.java

@@ -0,0 +1,53 @@
+/*
+*  Copyright 2019-2020 Zheng Jie
+*
+*  Licensed under the Apache License, Version 2.0 (the "License");
+*  you may not use this file except in compliance with the License.
+*  You may obtain a copy of the License at
+*
+*  http://www.apache.org/licenses/LICENSE-2.0
+*
+*  Unless required by applicable law or agreed to in writing, software
+*  distributed under the License is distributed on an "AS IS" BASIS,
+*  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+*  See the License for the specific language governing permissions and
+*  limitations under the License.
+*/
+package me.zhengjie.modules.dm.envmonitor.historymodbusdata.service.dto;
+
+import lombok.Data;
+import java.io.Serializable;
+import com.alibaba.fastjson.annotation.JSONField;
+import com.alibaba.fastjson.serializer.ToStringSerializer;
+
+/**
+* @website https://el-admin.vip
+* @description /
+* @author wld
+* @date 2022-05-24
+**/
+@Data
+public class DmEnvHistoryModbusDataDto implements Serializable {
+
+    /** 主键 */
+    /** 防止精度丢失 */
+    @JSONField(serializeUsing = ToStringSerializer.class)
+    private Long id;
+
+    private String cho;
+
+    private String co2;
+
+    private String h;
+
+    private String pm10;
+
+    private String pm25;
+
+    private String t;
+
+    private String voc;
+
+    /** 关联对象id */
+    private Long dataId;
+}

+ 29 - 0
eladmin-system/src/main/java/me/zhengjie/modules/dm/envmonitor/historymodbusdata/service/dto/DmEnvHistoryModbusDataQueryCriteria.java

@@ -0,0 +1,29 @@
+/*
+*  Copyright 2019-2020 Zheng Jie
+*
+*  Licensed under the Apache License, Version 2.0 (the "License");
+*  you may not use this file except in compliance with the License.
+*  You may obtain a copy of the License at
+*
+*  http://www.apache.org/licenses/LICENSE-2.0
+*
+*  Unless required by applicable law or agreed to in writing, software
+*  distributed under the License is distributed on an "AS IS" BASIS,
+*  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+*  See the License for the specific language governing permissions and
+*  limitations under the License.
+*/
+package me.zhengjie.modules.dm.envmonitor.historymodbusdata.service.dto;
+
+import lombok.Data;
+import java.util.List;
+import me.zhengjie.annotation.Query;
+
+/**
+* @website https://el-admin.vip
+* @author wld
+* @date 2022-05-24
+**/
+@Data
+public class DmEnvHistoryModbusDataQueryCriteria{
+}

+ 115 - 0
eladmin-system/src/main/java/me/zhengjie/modules/dm/envmonitor/historymodbusdata/service/impl/DmEnvHistoryModbusDataServiceImpl.java

@@ -0,0 +1,115 @@
+/*
+*  Copyright 2019-2020 Zheng Jie
+*
+*  Licensed under the Apache License, Version 2.0 (the "License");
+*  you may not use this file except in compliance with the License.
+*  You may obtain a copy of the License at
+*
+*  http://www.apache.org/licenses/LICENSE-2.0
+*
+*  Unless required by applicable law or agreed to in writing, software
+*  distributed under the License is distributed on an "AS IS" BASIS,
+*  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+*  See the License for the specific language governing permissions and
+*  limitations under the License.
+*/
+package me.zhengjie.modules.dm.envmonitor.historymodbusdata.service.impl;
+
+import me.zhengjie.modules.dm.envmonitor.historymodbusdata.domain.DmEnvHistoryModbusData;
+import me.zhengjie.utils.ValidationUtil;
+import me.zhengjie.utils.FileUtil;
+import lombok.RequiredArgsConstructor;
+import me.zhengjie.modules.dm.envmonitor.historymodbusdata.repository.DmEnvHistoryModbusDataRepository;
+import me.zhengjie.modules.dm.envmonitor.historymodbusdata.service.DmEnvHistoryModbusDataService;
+import me.zhengjie.modules.dm.envmonitor.historymodbusdata.service.dto.DmEnvHistoryModbusDataDto;
+import me.zhengjie.modules.dm.envmonitor.historymodbusdata.service.dto.DmEnvHistoryModbusDataQueryCriteria;
+import me.zhengjie.modules.dm.envmonitor.historymodbusdata.service.mapstruct.DmEnvHistoryModbusDataMapper;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import cn.hutool.core.lang.Snowflake;
+import cn.hutool.core.util.IdUtil;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Pageable;
+import me.zhengjie.utils.PageUtil;
+import me.zhengjie.utils.QueryHelp;
+import java.util.List;
+import java.util.Map;
+import java.io.IOException;
+import javax.servlet.http.HttpServletResponse;
+import java.util.ArrayList;
+import java.util.LinkedHashMap;
+
+/**
+* @website https://el-admin.vip
+* @description 服务实现
+* @author wld
+* @date 2022-05-24
+**/
+@Service
+@RequiredArgsConstructor
+public class DmEnvHistoryModbusDataServiceImpl implements DmEnvHistoryModbusDataService {
+
+    private final DmEnvHistoryModbusDataRepository dmEnvHistoryModbusDataRepository;
+    private final DmEnvHistoryModbusDataMapper dmEnvHistoryModbusDataMapper;
+
+    @Override
+    public Map<String,Object> queryAll(DmEnvHistoryModbusDataQueryCriteria criteria, Pageable pageable){
+        Page<DmEnvHistoryModbusData> page = dmEnvHistoryModbusDataRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder),pageable);
+        return PageUtil.toPage(page.map(dmEnvHistoryModbusDataMapper::toDto));
+    }
+
+    @Override
+    public List<DmEnvHistoryModbusDataDto> queryAll(DmEnvHistoryModbusDataQueryCriteria criteria){
+        return dmEnvHistoryModbusDataMapper.toDto(dmEnvHistoryModbusDataRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder)));
+    }
+
+    @Override
+    @Transactional
+    public DmEnvHistoryModbusDataDto findById(Long id) {
+        DmEnvHistoryModbusData dmEnvHistoryModbusData = dmEnvHistoryModbusDataRepository.findById(id).orElseGet(DmEnvHistoryModbusData::new);
+        ValidationUtil.isNull(dmEnvHistoryModbusData.getId(),"DmEnvHistoryModbusData","id",id);
+        return dmEnvHistoryModbusDataMapper.toDto(dmEnvHistoryModbusData);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public DmEnvHistoryModbusDataDto create(DmEnvHistoryModbusData resources) {
+        Snowflake snowflake = IdUtil.createSnowflake(1, 1);
+        resources.setId(snowflake.nextId()); 
+        return dmEnvHistoryModbusDataMapper.toDto(dmEnvHistoryModbusDataRepository.save(resources));
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void update(DmEnvHistoryModbusData resources) {
+        DmEnvHistoryModbusData dmEnvHistoryModbusData = dmEnvHistoryModbusDataRepository.findById(resources.getId()).orElseGet(DmEnvHistoryModbusData::new);
+        ValidationUtil.isNull( dmEnvHistoryModbusData.getId(),"DmEnvHistoryModbusData","id",resources.getId());
+        dmEnvHistoryModbusData.copy(resources);
+        dmEnvHistoryModbusDataRepository.save(dmEnvHistoryModbusData);
+    }
+
+    @Override
+    public void deleteAll(Long[] ids) {
+        for (Long id : ids) {
+            dmEnvHistoryModbusDataRepository.deleteById(id);
+        }
+    }
+
+    @Override
+    public void download(List<DmEnvHistoryModbusDataDto> all, HttpServletResponse response) throws IOException {
+        List<Map<String, Object>> list = new ArrayList<>();
+        for (DmEnvHistoryModbusDataDto dmEnvHistoryModbusData : all) {
+            Map<String,Object> map = new LinkedHashMap<>();
+            map.put(" cho",  dmEnvHistoryModbusData.getCho());
+            map.put(" co2",  dmEnvHistoryModbusData.getCo2());
+            map.put(" h",  dmEnvHistoryModbusData.getH());
+            map.put(" pm10",  dmEnvHistoryModbusData.getPm10());
+            map.put(" pm25",  dmEnvHistoryModbusData.getPm25());
+            map.put(" t",  dmEnvHistoryModbusData.getT());
+            map.put(" voc",  dmEnvHistoryModbusData.getVoc());
+            map.put("关联对象id", dmEnvHistoryModbusData.getDataId());
+            list.add(map);
+        }
+        FileUtil.downloadExcel(list, response);
+    }
+}

+ 32 - 0
eladmin-system/src/main/java/me/zhengjie/modules/dm/envmonitor/historymodbusdata/service/mapstruct/DmEnvHistoryModbusDataMapper.java

@@ -0,0 +1,32 @@
+/*
+*  Copyright 2019-2020 Zheng Jie
+*
+*  Licensed under the Apache License, Version 2.0 (the "License");
+*  you may not use this file except in compliance with the License.
+*  You may obtain a copy of the License at
+*
+*  http://www.apache.org/licenses/LICENSE-2.0
+*
+*  Unless required by applicable law or agreed to in writing, software
+*  distributed under the License is distributed on an "AS IS" BASIS,
+*  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+*  See the License for the specific language governing permissions and
+*  limitations under the License.
+*/
+package me.zhengjie.modules.dm.envmonitor.historymodbusdata.service.mapstruct;
+
+import me.zhengjie.base.BaseMapper;
+import me.zhengjie.modules.dm.envmonitor.historymodbusdata.domain.DmEnvHistoryModbusData;
+import me.zhengjie.modules.dm.envmonitor.historymodbusdata.service.dto.DmEnvHistoryModbusDataDto;
+import org.mapstruct.Mapper;
+import org.mapstruct.ReportingPolicy;
+
+/**
+* @website https://el-admin.vip
+* @author wld
+* @date 2022-05-24
+**/
+@Mapper(componentModel = "spring", unmappedTargetPolicy = ReportingPolicy.IGNORE)
+public interface DmEnvHistoryModbusDataMapper extends BaseMapper<DmEnvHistoryModbusDataDto, DmEnvHistoryModbusData> {
+
+}

+ 73 - 16
eladmin-system/src/main/java/me/zhengjie/modules/quartz/task/ModbusTask.java

@@ -11,6 +11,7 @@ package me.zhengjie.modules.quartz.task;/**
  * Description: iot-ykt
  */
 
+import com.alibaba.fastjson.JSONObject;
 import com.digitalpetri.modbus.codec.Modbus;
 import com.digitalpetri.modbus.master.ModbusTcpMaster;
 import com.digitalpetri.modbus.master.ModbusTcpMasterConfig;
@@ -26,6 +27,9 @@ import io.netty.buffer.ByteBuf;
 import io.netty.util.ReferenceCountUtil;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
+import me.zhengjie.modules.dm.envmonitor.historydata.domain.DmEnvHistoryData;
+import me.zhengjie.modules.dm.envmonitor.historymodbusdata.domain.DmEnvHistoryModbusData;
+import me.zhengjie.modules.dm.envmonitor.historymodbusdata.service.DmEnvHistoryModbusDataService;
 import me.zhengjie.modules.dm.modbus.channel.domain.DmModbusChannel;
 import me.zhengjie.modules.dm.modbus.data.domain.DmModbusData;
 import me.zhengjie.modules.dm.modbus.device.domain.DmModbusDevice;
@@ -34,6 +38,7 @@ import me.zhengjie.modules.dm.modbus.drive.service.DmModbusDriveService;
 import me.zhengjie.modules.dm.modbus.drive.service.dto.DmModbusDriveDto;
 import me.zhengjie.modules.dm.modbus.group.domain.DmModbusGroup;
 import me.zhengjie.modules.system.repository.UserRepository;
+import me.zhengjie.utils.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Component;
@@ -41,6 +46,7 @@ import org.springframework.web.bind.annotation.InitBinder;
 
 import javax.annotation.PostConstruct;
 import javax.annotation.PreDestroy;
+import java.util.HashSet;
 import java.util.List;
 import java.util.Objects;
 import java.util.Set;
@@ -61,6 +67,9 @@ import java.util.concurrent.ExecutionException;
 public class ModbusTask {
 
     private final DmModbusDriveService dmModbusDriveService;
+
+    private final DmEnvHistoryModbusDataService dmEnvHistoryModbusDataService;
+
     @Value("${modbusUrl}")
     private String modbusUrl; // modbus默认地址
     private final int modbusPort = 502; // modbus默认端口号
@@ -112,24 +121,27 @@ public class ModbusTask {
                                           */
                                           List<DmModbusData> dmModbusData = group.getDmModbusData();
                                           if (!dmModbusData.isEmpty()){
+                                              DmEnvHistoryModbusData dmEnvHistoryModbusData = new DmEnvHistoryModbusData();
+//                                               DmEnvHistoryData dmEnvHistoryData = new DmEnvHistoryData();
+//                                              Set<DmEnvHistoryData> dmEnvHistoryDataSet = new HashSet<>();
                                               //已经确认 空气质量统一用3X(Input  Register)  数据类型为short
                                               dmModbusData.forEach(data->{
                                                   switch (data.getSoftwareRegisterType()){
-                                                      case "3X(Input  Register)":
-                                                          log.info("调用读取InputRegisters模拟量数据");
-                                                          try {
-                                                              Number number = readInputRegisters(Integer.valueOf(data.getSoftwareRegisterAddress()), 1, 1);
-
-                                                          } catch (InterruptedException e) {
-                                                              log.error("调用读取InputRegisters模拟量数据,modbus读取数据失败,失败原因:{}",e.getMessage());
-                                                          } catch (ExecutionException e) {
-                                                              log.error("调用读取InputRegisters模拟量数据,modbus读取数据失败,失败原因:{}",e.getMessage());
-                                                          }
-                                                          break;
+//                                                      case "3X(Input  Register)":
+//                                                          log.info("调用读取InputRegisters模拟量数据");
+//                                                          try {
+//                                                              Number number = readInputRegisters(Integer.valueOf(data.getSoftwareRegisterAddress()), 1, modbusSalveId);
+//
+//                                                          } catch (InterruptedException e) {
+//                                                              log.error("调用读取InputRegisters模拟量数据,modbus读取数据失败,失败原因:{}",e.getMessage());
+//                                                          } catch (ExecutionException e) {
+//                                                              log.error("调用读取InputRegisters模拟量数据,modbus读取数据失败,失败原因:{}",e.getMessage());
+//                                                          }
+//                                                          break;
                                                       case "4X(Holding  Register)":
                                                           log.info("调用读取HoldingRegister数据方法");
                                                           try {
-                                                               Number number = readHoldingRegisters(Integer.valueOf(data.getSoftwareRegisterAddress()), 1, 1);
+                                                               Number number = readHoldingRegisters(Integer.valueOf(data.getSoftwareRegisterAddress()), 1, modbusSalveId);
                                                           } catch (InterruptedException e) {
                                                               log.error("调用读取HoldingRegister数据方法,modbus读取数据失败,失败原因:{}",e.getMessage());
                                                           } catch (ExecutionException e) {
@@ -139,7 +151,7 @@ public class ModbusTask {
                                                       case "1X(Input  Status)":
                                                           log.info("调用读取readDiscreteInputs开关量方法");
                                                           try {
-                                                              Boolean aBoolean = readDiscreteInputs(Integer.valueOf(data.getSoftwareRegisterAddress()), 1, 1);
+                                                              Boolean aBoolean = readDiscreteInputs(Integer.valueOf(data.getSoftwareRegisterAddress()), 1, modbusSalveId);
                                                           } catch (InterruptedException e) {
                                                               log.error("调用读取HoldingRegister数据方法,modbus读取数据失败,失败原因:{}",e.getMessage());
                                                           } catch (ExecutionException e) {
@@ -149,15 +161,58 @@ public class ModbusTask {
                                                       case "0X(Coil  Status)":
                                                           log.info("调用读取Coils开关量,{readCoils}方法");
                                                           try {
-                                                              Boolean aBoolean = readCoils(Integer.valueOf(data.getSoftwareRegisterAddress()), 1, 1);
+                                                              Boolean aBoolean = readCoils(Integer.valueOf(data.getSoftwareRegisterAddress()), 1, modbusSalveId);
                                                           } catch (InterruptedException e) {
                                                               e.printStackTrace();
                                                           } catch (ExecutionException e) {
                                                               e.printStackTrace();
                                                           }
                                                           break;
-                                                  }
+                                                      default:
+                                                          //默认使用 3X(Input  Register)
+                                                          log.info("调用读取InputRegisters模拟量数据");
+                                                          try {
+                                                              // 读取数据 数据类型为 float
+                                                              Number number = readInputRegisters(Integer.valueOf(data.getSoftwareRegisterAddress()), 1, modbusSalveId);
+                                                              //获取点名 例如 1F_CO2
+                                                              String callTheRoll = data.getCallTheRoll();
+                                                              // 获取楼层id
+                                                               String F = StringUtils.substringBefore(callTheRoll, "F");
+                                                               // 获取检测的数据名称
+                                                               String dataName = StringUtils.substringAfterLast(callTheRoll, "_");
+                                                               switch (dataName){
+                                                                   case "CHO":
+                                                                       dmEnvHistoryModbusData.setCho(number.toString());
+                                                                       break;
+                                                                   case "CO2":
+                                                                       dmEnvHistoryModbusData.setCo2(number.toString());
+                                                                       break;
+                                                                   case "H":
+                                                                       dmEnvHistoryModbusData.setH(number.toString());
+                                                                       break;
+                                                                   case "PM10":
+                                                                       dmEnvHistoryModbusData.setPm10(number.toString());
+                                                                       break;
+                                                                   case "T":
+                                                                       dmEnvHistoryModbusData.setT(number.toString());
+                                                                       break;
+                                                                   case "VOC":
+                                                                       dmEnvHistoryModbusData.setVoc(number.toString());
+                                                                       break;
+                                                               }
 
+                                                               //设置关联id
+                                                              dmEnvHistoryModbusData.setDataId(Long.valueOf(F));
+
+                                                          } catch (InterruptedException e) {
+                                                              log.error("调用读取InputRegisters模拟量数据,modbus读取数据失败,失败原因:{}",e.getMessage());
+                                                          } catch (ExecutionException e) {
+                                                              log.error("调用读取InputRegisters模拟量数据,modbus读取数据失败,失败原因:{}",e.getMessage());
+                                                          }
+                                                          break;
+                                                  }
+                                                  dmEnvHistoryModbusDataService.create(dmEnvHistoryModbusData);
+                                                  log.info("添加的modbus的数据,{}" + JSONObject.toJSONString(dmEnvHistoryModbusData) );
                                               });
                                           }
                                      });
@@ -168,9 +223,11 @@ public class ModbusTask {
                 }
             });
 
-            log.info(dmModbusDriveDtos.toString());
+            log.info("所有的驱动下的数据,{}" + JSONObject.toJSONString(dmModbusDriveDtos) );
+            release();
         }catch (Exception e){
             log.error("modbus获取失败,失败原因:{}",e.getMessage());
+            release();
         }