物联网项目-温湿度Web管理后台代码之三
  CLYEAq02EKEQ 2023年11月02日 36 0

物联网项目-温湿度表结构

物联网项目-温湿度-Web后台

物联网项目-温湿度Web管理后台代码之一

物联网项目-温湿度Web管理后台代码之二

物联网项目-温湿度Web管理后台代码之三

物联网项目-温湿度Web管理后台代码之四

物联网项目-温湿度Web管理后台代码之五

物联网项目-服务端TCP Server

物联网项目-订阅者Subscribe

物联网项目-温湿度之 TCP 协议包C#版

物联网项目-通讯协议之 C语言版 STM32

物联网项目-通讯协议之 Java版

物联网项目-温湿度之 nodemcu esp8266 刷机

物联网项目-温湿度stm32 发送短信打电话

物联网项目-温湿度Web管理后台代码之三_物联网后台

0、背景

物联网项目温湿度管理后台,使用Spring boot 开发,下面主要介绍终端实时状态的代码实现。

1、代码-终端实时状态

1.1 终端实时状态-控制器

IemsTerminalRealtimeController.java

/**
 * 实时状态Controller
 * 
 * @author ken_ji_jian
 * @date 2019-11-02
 */
@Controller
@RequestMapping("/iems/realtime")
public class IemsTerminalRealtimeController extends BaseController
{
    private String prefix = "iems/realtime";

    @Autowired
    private IIemsTerminalRealtimeService iemsTerminalRealtimeService;

    @RequiresPermissions("iems:realtime:view")
    @GetMapping()
    public String realtime()
    {
        return prefix + "/realtime";
    }

    /**
     * 查询实时状态列表
     */
    @RequiresPermissions("iems:realtime:list")
    @PostMapping("/list")
    @ResponseBody
    public TableDataInfo list(IemsTerminalRealtime iemsTerminalRealtime)
    {
        startPage();
        List<IemsTerminalRealtime> list = iemsTerminalRealtimeService.selectIemsTerminalRealtimeList(iemsTerminalRealtime);
        return getDataTable(list);
    }

    /**
     * 导出实时状态列表
     */
    @RequiresPermissions("iems:realtime:export")
    @PostMapping("/export")
    @ResponseBody
    public AjaxResult export(IemsTerminalRealtime iemsTerminalRealtime)
    {
        List<IemsTerminalRealtime> list = iemsTerminalRealtimeService.selectIemsTerminalRealtimeList(iemsTerminalRealtime);
        ExcelUtil<IemsTerminalRealtime> util = new ExcelUtil<IemsTerminalRealtime>(IemsTerminalRealtime.class);
        return util.exportExcel(list, "realtime");
    }

    /**
     * 新增实时状态
     */
    @GetMapping("/add")
    public String add()
    {
        return prefix + "/add";
    }

    /**
     * 新增保存实时状态
     */
    @RequiresPermissions("iems:realtime:add")
    @Log(title = "实时状态", businessType = BusinessType.INSERT)
    @PostMapping("/add")
    @ResponseBody
    public AjaxResult addSave(IemsTerminalRealtime iemsTerminalRealtime)
    {
        return toAjax(iemsTerminalRealtimeService.insertIemsTerminalRealtime(iemsTerminalRealtime));
    }

    /**
     * 修改实时状态
     */
    @GetMapping("/edit/{terminalId}")
    public String edit(@PathVariable("terminalId") Long terminalId, ModelMap mmap)
    {
        IemsTerminalRealtime iemsTerminalRealtime = iemsTerminalRealtimeService.selectIemsTerminalRealtimeById(terminalId);
        mmap.put("iemsTerminalRealtime", iemsTerminalRealtime);
        return prefix + "/edit";
    }

    /**
     * 修改保存实时状态
     */
    @RequiresPermissions("iems:realtime:edit")
    @Log(title = "实时状态", businessType = BusinessType.UPDATE)
    @PostMapping("/edit")
    @ResponseBody
    public AjaxResult editSave(IemsTerminalRealtime iemsTerminalRealtime)
    {
        return toAjax(iemsTerminalRealtimeService.updateIemsTerminalRealtime(iemsTerminalRealtime));
    }

    /**
     * 删除实时状态
     */
    @RequiresPermissions("iems:realtime:remove")
    @Log(title = "实时状态", businessType = BusinessType.DELETE)
    @PostMapping( "/remove")
    @ResponseBody
    public AjaxResult remove(String ids)
    {
        return toAjax(iemsTerminalRealtimeService.deleteIemsTerminalRealtimeByIds(ids));
    }
}

1.2 终端实时状态-模型

IemsTerminalRealtime.java

/**
 * 实时状态对象 iems_terminal_realtime
 * 
 * @author ken_ji_jian
 * @date 2019-11-02
 */
public class IemsTerminalRealtime extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 终端id */
    private Long terminalId;

    public String getTerminalSid() {
        return terminalSid;
    }

    public void setTerminalSid(String terminalSid) {
        this.terminalSid = terminalSid;
    }

    /** 终端sid */
    private String terminalSid;
    /** 上线时间 */
    @Excel(name = "上线时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date onlineTime;

    /** 状态 */
    @Excel(name = "状态")
    private Long status;

    /** 刷新时间 */
    @Excel(name = "刷新时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date refreshTime;

    /** 心跳频率n秒 */
    @Excel(name = "心跳频率n秒")
    private Long heartbeatRate;

    /** 实时上报周期 */
    @Excel(name = "实时上报周期")
    private Long reportCycle;

    /** 实时数据上报时间 */
    @Excel(name = "实时数据上报时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date reportTime;

    /** 超期周期120秒 */
    @Excel(name = "超期周期120秒")
    private Long overdueCycle;

    /** 超期倒计时心跳刷新 */
    @Excel(name = "超期倒计时心跳刷新")
    private Long overdueCountdown;

    /** 温度 n */
    @Excel(name = "温度 n")
    private Float temper;

    /** 湿度 n% */
    @Excel(name = "湿度 n%")
    private Float humidity;

    /** 0 不支持 1 未检出烟 2检出烟 */
    @Excel(name = "0 不支持 1 未检出烟 2检出烟")
    private Long smoke;

    /** 0 不支持 1 未水浸 2水浸 */
    @Excel(name = "0 不支持 1 未水浸 2水浸")
    private Long water;

    /** 0 不支持 1 有源供电 2有源断电 */
    @Excel(name = "0 不支持 1 有源供电 2有源断电")
    private Long elect;

    /** 入侵 0不支持 1未入侵 2入侵 */
    @Excel(name = "入侵 0不支持 1未入侵 2入侵")
    private Long human;

    public void setTerminalId(Long terminalId) 
    {
        this.terminalId = terminalId;
    }

    public Long getTerminalId() 
    {
        return terminalId;
    }
    public void setOnlineTime(Date onlineTime) 
    {
        this.onlineTime = onlineTime;
    }

    public Date getOnlineTime() 
    {
        return onlineTime;
    }
    public void setStatus(Long status) 
    {
        this.status = status;
    }

    public Long getStatus() 
    {
        return status;
    }
    public void setRefreshTime(Date refreshTime) 
    {
        this.refreshTime = refreshTime;
    }

    public Date getRefreshTime() 
    {
        return refreshTime;
    }
    public void setHeartbeatRate(Long heartbeatRate) 
    {
        this.heartbeatRate = heartbeatRate;
    }

    public Long getHeartbeatRate() 
    {
        return heartbeatRate;
    }
    public void setReportCycle(Long reportCycle) 
    {
        this.reportCycle = reportCycle;
    }

    public Long getReportCycle() 
    {
        return reportCycle;
    }
    public void setReportTime(Date reportTime) 
    {
        this.reportTime = reportTime;
    }

    public Date getReportTime() 
    {
        return reportTime;
    }
    public void setOverdueCycle(Long overdueCycle) 
    {
        this.overdueCycle = overdueCycle;
    }

    public Long getOverdueCycle() 
    {
        return overdueCycle;
    }
    public void setOverdueCountdown(Long overdueCountdown) 
    {
        this.overdueCountdown = overdueCountdown;
    }

    public Long getOverdueCountdown() 
    {
        return overdueCountdown;
    }
    public void setTemper(Float temper)
    {
        this.temper = temper;
    }

    public Float getTemper()
    {
        return temper;
    }
    public void setHumidity(Float humidity)
    {
        this.humidity = humidity;
    }

    public Float getHumidity()
    {
        return humidity;
    }
    public void setSmoke(Long smoke) 
    {
        this.smoke = smoke;
    }

    public Long getSmoke() 
    {
        return smoke;
    }
    public void setWater(Long water) 
    {
        this.water = water;
    }

    public Long getWater() 
    {
        return water;
    }
    public void setElect(Long elect) 
    {
        this.elect = elect;
    }

    public Long getElect() 
    {
        return elect;
    }
    public void setHuman(Long human) 
    {
        this.human = human;
    }

    public Long getHuman() 
    {
        return human;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("terminalId", getTerminalId())
            .append("onlineTime", getOnlineTime())
            .append("status", getStatus())
            .append("refreshTime", getRefreshTime())
            .append("heartbeatRate", getHeartbeatRate())
            .append("reportCycle", getReportCycle())
            .append("reportTime", getReportTime())
            .append("overdueCycle", getOverdueCycle())
            .append("overdueCountdown", getOverdueCountdown())
            .append("temper", getTemper())
            .append("humidity", getHumidity())
            .append("smoke", getSmoke())
            .append("water", getWater())
            .append("elect", getElect())
            .append("human", getHuman())
            .toString();
    }
}

1.3 终端实时状态-数据库映射类

IemsTerminalRealtimeMapper.java

/**
 * 实时状态Mapper接口
 * 
 * @author ken_ji_jian
 * @date 2019-11-02
 */
public interface IemsTerminalRealtimeMapper 
{
    /**
     * 查询实时状态
     * 
     * @param terminalId 实时状态ID
     * @return 实时状态
     */
    public IemsTerminalRealtime selectIemsTerminalRealtimeById(Long terminalId);

    /**
     * 查询实时状态列表
     * 
     * @param iemsTerminalRealtime 实时状态
     * @return 实时状态集合
     */
    public List<IemsTerminalRealtime> selectIemsTerminalRealtimeList(IemsTerminalRealtime iemsTerminalRealtime);

    /**
     * 新增实时状态
     * 
     * @param iemsTerminalRealtime 实时状态
     * @return 结果
     */
    public int insertIemsTerminalRealtime(IemsTerminalRealtime iemsTerminalRealtime);

    /**
     * 修改实时状态
     * 
     * @param iemsTerminalRealtime 实时状态
     * @return 结果
     */
    public int updateIemsTerminalRealtime(IemsTerminalRealtime iemsTerminalRealtime);

    /**
     * 删除实时状态
     * 
     * @param terminalId 实时状态ID
     * @return 结果
     */
    public int deleteIemsTerminalRealtimeById(Long terminalId);

    /**
     * 批量删除实时状态
     * 
     * @param terminalIds 需要删除的数据ID
     * @return 结果
     */
    public int deleteIemsTerminalRealtimeByIds(String[] terminalIds);
}

1.4 终端实时状态-服务接口

IIemsTerminalRealtimeService.java

/**
 * 实时状态Service接口
 * 
 * @author ken_ji_jian
 * @date 2019-11-02
 */
public interface IIemsTerminalRealtimeService 
{
    /**
     * 查询实时状态
     * 
     * @param terminalId 实时状态ID
     * @return 实时状态
     */
    public IemsTerminalRealtime selectIemsTerminalRealtimeById(Long terminalId);

    /**
     * 查询实时状态列表
     * 
     * @param iemsTerminalRealtime 实时状态
     * @return 实时状态集合
     */
    public List<IemsTerminalRealtime> selectIemsTerminalRealtimeList(IemsTerminalRealtime iemsTerminalRealtime);

    //public List<IemsTerminalRealtime> selectIemsTerminalRealtimeListExcludeNotUse();
    /**
     * 新增实时状态
     * 
     * @param iemsTerminalRealtime 实时状态
     * @return 结果
     */
    public int insertIemsTerminalRealtime(IemsTerminalRealtime iemsTerminalRealtime);

    /**
     * 修改实时状态
     * 
     * @param iemsTerminalRealtime 实时状态
     * @return 结果
     */
    public int updateIemsTerminalRealtime(IemsTerminalRealtime iemsTerminalRealtime);

    /**
     * 批量删除实时状态
     * 
     * @param ids 需要删除的数据ID
     * @return 结果
     */
    public int deleteIemsTerminalRealtimeByIds(String ids);

    /**
     * 删除实时状态信息
     * 
     * @param terminalId 实时状态ID
     * @return 结果
     */
    public int deleteIemsTerminalRealtimeById(Long terminalId);


}

1.5 终端实时状态-服务实现

IemsTerminalRealtimeServiceImpl.java

/**
 * 实时状态Service业务层处理
 * 
 * @author ken_ji_jian
 * @date 2019-11-02
 */
@Service
public class IemsTerminalRealtimeServiceImpl implements IIemsTerminalRealtimeService 
{
    @Autowired
    private IemsTerminalRealtimeMapper iemsTerminalRealtimeMapper;

    /**
     * 查询实时状态
     * 
     * @param terminalId 实时状态ID
     * @return 实时状态
     */
    @Override
    public IemsTerminalRealtime selectIemsTerminalRealtimeById(Long terminalId)
    {
        return iemsTerminalRealtimeMapper.selectIemsTerminalRealtimeById(terminalId);
    }

    /**
     * 查询实时状态列表
     * 
     * @param iemsTerminalRealtime 实时状态
     * @return 实时状态
     */
    @Override
    public List<IemsTerminalRealtime> selectIemsTerminalRealtimeList(IemsTerminalRealtime iemsTerminalRealtime)
    {
        return iemsTerminalRealtimeMapper.selectIemsTerminalRealtimeList(iemsTerminalRealtime);
    }

    /**
     * 新增实时状态
     * 
     * @param iemsTerminalRealtime 实时状态
     * @return 结果
     */
    @Override
    public int insertIemsTerminalRealtime(IemsTerminalRealtime iemsTerminalRealtime)
    {
        return iemsTerminalRealtimeMapper.insertIemsTerminalRealtime(iemsTerminalRealtime);
    }

    /**
     * 修改实时状态
     * 
     * @param iemsTerminalRealtime 实时状态
     * @return 结果
     */
    @Override
    public int updateIemsTerminalRealtime(IemsTerminalRealtime iemsTerminalRealtime)
    {
        return iemsTerminalRealtimeMapper.updateIemsTerminalRealtime(iemsTerminalRealtime);
    }

    /**
     * 删除实时状态对象
     * 
     * @param ids 需要删除的数据ID
     * @return 结果
     */
    @Override
    public int deleteIemsTerminalRealtimeByIds(String ids)
    {
        return iemsTerminalRealtimeMapper.deleteIemsTerminalRealtimeByIds(Convert.toStrArray(ids));
    }

    /**
     * 删除实时状态信息
     * 
     * @param terminalId 实时状态ID
     * @return 结果
     */
    @Override
    public int deleteIemsTerminalRealtimeById(Long terminalId)
    {
        return iemsTerminalRealtimeMapper.deleteIemsTerminalRealtimeById(terminalId);
    }
}

1.6 终端报表-页面实现

edit.html

<!DOCTYPE html>
<html lang="zh" xmlns:th="http://www.thymeleaf.org" >
<head>
    <th:block th:include="include :: header('修改实时状态')" />
    <th:block th:include="include :: datetimepicker-css" />
</head>
<body class="white-bg">
    <div class="wrapper wrapper-content animated fadeInRight ibox-content">
        <form class="form-horizontal m" id="form-realtime-edit" th:object="${iemsTerminalRealtime}">
            <input name="terminalId" th:field="*{terminalId}" type="hidden">
            <div class="form-group">    
                <label class="col-sm-3 control-label">上线时间:</label>
                <div class="col-sm-8">
                    <div class="input-group date">
                        <span class="input-group-addon"><i class="fa fa-calendar"></i></span>
                        <input name="onlineTime" th:value="${#dates.format(iemsTerminalRealtime.onlineTime, 'yyyy-MM-dd')}" class="form-control" placeholder="yyyy-MM-dd" type="text">
                    </div>
                </div>
            </div>
            <div class="form-group">    
                <label class="col-sm-3 control-label">状态:</label>
                <div class="col-sm-8">
                    <div class="radio-box">
                        <input type="radio" name="status" value="">
                        <label th:for="status" th:text="未知"></label>
                    </div>
                    <span class="help-block m-b-none"><i class="fa fa-info-circle"></i> 代码生成请选择字典属性</span>
                </div>
            </div>
            <div class="form-group">    
                <label class="col-sm-3 control-label">刷新时间:</label>
                <div class="col-sm-8">
                    <div class="input-group date">
                        <span class="input-group-addon"><i class="fa fa-calendar"></i></span>
                        <input name="refreshTime" th:value="${#dates.format(iemsTerminalRealtime.refreshTime, 'yyyy-MM-dd')}" class="form-control" placeholder="yyyy-MM-dd" type="text">
                    </div>
                </div>
            </div>
            <div class="form-group">    
                <label class="col-sm-3 control-label">心跳频率n秒:</label>
                <div class="col-sm-8">
                    <input name="heartbeatRate" th:field="*{heartbeatRate}" class="form-control" type="text">
                </div>
            </div>
            <div class="form-group">    
                <label class="col-sm-3 control-label">实时上报周期:</label>
                <div class="col-sm-8">
                    <input name="reportCycle" th:field="*{reportCycle}" class="form-control" type="text">
                </div>
            </div>
            <div class="form-group">    
                <label class="col-sm-3 control-label">实时数据上报时间:</label>
                <div class="col-sm-8">
                    <div class="input-group date">
                        <span class="input-group-addon"><i class="fa fa-calendar"></i></span>
                        <input name="reportTime" th:value="${#dates.format(iemsTerminalRealtime.reportTime, 'yyyy-MM-dd')}" class="form-control" placeholder="yyyy-MM-dd" type="text">
                    </div>
                </div>
            </div>
            <div class="form-group">    
                <label class="col-sm-3 control-label">超期周期120秒:</label>
                <div class="col-sm-8">
                    <input name="overdueCycle" th:field="*{overdueCycle}" class="form-control" type="text">
                </div>
            </div>
            <div class="form-group">    
                <label class="col-sm-3 control-label">超期倒计时心跳刷新:</label>
                <div class="col-sm-8">
                    <input name="overdueCountdown" th:field="*{overdueCountdown}" class="form-control" type="text">
                </div>
            </div>
            <div class="form-group">    
                <label class="col-sm-3 control-label">温度 n:</label>
                <div class="col-sm-8">
                    <input name="temper" th:field="*{temper}" class="form-control" type="text">
                </div>
            </div>
            <div class="form-group">    
                <label class="col-sm-3 control-label">湿度 n%:</label>
                <div class="col-sm-8">
                    <input name="humidity" th:field="*{humidity}" class="form-control" type="text">
                </div>
            </div>
            <div class="form-group">    
                <label class="col-sm-3 control-label">0 不支持 1 未检出烟 2检出烟:</label>
                <div class="col-sm-8">
                    <input name="smoke" th:field="*{smoke}" class="form-control" type="text">
                </div>
            </div>
            <div class="form-group">    
                <label class="col-sm-3 control-label">0 不支持 1 未水浸 2水浸:</label>
                <div class="col-sm-8">
                    <input name="water" th:field="*{water}" class="form-control" type="text">
                </div>
            </div>
            <div class="form-group">    
                <label class="col-sm-3 control-label">0 不支持 1 有源供电 2有源断电:</label>
                <div class="col-sm-8">
                    <input name="elect" th:field="*{elect}" class="form-control" type="text">
                </div>
            </div>
            <div class="form-group">    
                <label class="col-sm-3 control-label">入侵 0不支持 1未入侵 2入侵:</label>
                <div class="col-sm-8">
                    <input name="human" th:field="*{human}" class="form-control" type="text">
                </div>
            </div>
        </form>
    </div>
    <th:block th:include="include :: footer" />
    <th:block th:include="include :: datetimepicker-js" />
    <script type="text/javascript">
        var prefix = ctx + "iems/realtime";
        $("#form-realtime-edit").validate({
            focusCleanup: true
        });

        function submitHandler() {
            if ($.validate.form()) {
                $.operate.save(prefix + "/edit", $('#form-realtime-edit').serialize());
            }
        }

        $("input[name='onlineTime']").datetimepicker({
            format: "yyyy-mm-dd",
            minView: "month",
            autoclose: true
        });

        $("input[name='refreshTime']").datetimepicker({
            format: "yyyy-mm-dd",
            minView: "month",
            autoclose: true
        });

        $("input[name='reportTime']").datetimepicker({
            format: "yyyy-mm-dd",
            minView: "month",
            autoclose: true
        });
    </script>
</body>
</html>


【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

CLYEAq02EKEQ