物联网项目-通讯协议之 Java版
0、背景
物联网项目温湿度管理后台,使用Spring boot 开发,下面主要介绍终端管理代码实现。
1、代码-终端管理
1.1 终端管理-控制器
IemsTerminalController.java
/**
* 终端管理Controller
*
* @author ken_ji_jian
* @date 20xx-11-02
*/
@Controller
@RequestMapping("/iems/terminal")
public class IemsTerminalController extends BaseController
{
private String prefix = "iems/terminal";
@Autowired
private IIemsTerminalService iemsTerminalService;
@RequiresPermissions("iems:terminal:view")
@GetMapping()
public String terminal()
{
return prefix + "/terminal";
}
/**
* 查询终端管理列表
*/
@RequiresPermissions("iems:terminal:list")
@PostMapping("/list")
@ResponseBody
public TableDataInfo list(IemsTerminal iemsTerminal)
{
startPage();
List<IemsTerminal> list = iemsTerminalService.selectIemsTerminalList(iemsTerminal);
return getDataTable(list);
}
/**
* 导出终端管理列表
*/
@RequiresPermissions("iems:terminal:export")
@PostMapping("/export")
@ResponseBody
public AjaxResult export(IemsTerminal iemsTerminal)
{
List<IemsTerminal> list = iemsTerminalService.selectIemsTerminalList(iemsTerminal);
ExcelUtil<IemsTerminal> util = new ExcelUtil<IemsTerminal>(IemsTerminal.class);
return util.exportExcel(list, "terminal");
}
/**
* 新增终端管理
*/
@GetMapping("/add")
public String add()
{
return prefix + "/add";
}
/**
* 新增保存终端管理
*/
@RequiresPermissions("iems:terminal:add")
@Log(title = "终端管理", businessType = BusinessType.INSERT)
@PostMapping("/add")
@ResponseBody
public AjaxResult addSave(IemsTerminal iemsTerminal)
{
SysUser user = ShiroUtils.getSysUser();
iemsTerminal.setCreateDate(new Date());
iemsTerminal.setCreateBy(user.getUserName());
return toAjax(iemsTerminalService.insertIemsTerminal(iemsTerminal));
}
/**
* 修改终端管理
*/
@GetMapping("/edit/{terminalId}")
public String edit(@PathVariable("terminalId") Long terminalId, ModelMap mmap)
{
IemsTerminal iemsTerminal = iemsTerminalService.selectIemsTerminalById(terminalId);
mmap.put("iemsTerminal", iemsTerminal);
return prefix + "/edit";
}
/**
* 修改保存终端管理
*/
@RequiresPermissions("iems:terminal:edit")
@Log(title = "终端管理", businessType = BusinessType.UPDATE)
@PostMapping("/edit")
@ResponseBody
public AjaxResult editSave(IemsTerminal iemsTerminal)
{
SysUser user = ShiroUtils.getSysUser();
iemsTerminal.setUpdateBy(user.getLoginName());
iemsTerminal.setUpdateDate(new Date());
return toAjax(iemsTerminalService.updateIemsTerminal(iemsTerminal));
}
/**
* 删除终端管理
*/
@RequiresPermissions("iems:terminal:remove")
@Log(title = "终端管理", businessType = BusinessType.DELETE)
@PostMapping( "/remove")
@ResponseBody
public AjaxResult remove(String ids)
{
return toAjax(iemsTerminalService.deleteIemsTerminalByIds(ids));
}
}
1.2 终端管理-模型
IemsTerminal.java
/**
* 终端管理对象 iems_terminal
*
* @author ken_ji_jian
* @date 20xx-11-02
*/
public class IemsTerminal extends BaseEntity
{
private static final long serialVersionUID = 1L;
/** ID号 */
private Long terminalId;
/** 17位终端SID号 */
@Excel(name = "17位终端SID号")
private String terminalSid;
/** 终端位置 */
@Excel(name = "终端位置")
private String location;
/** 经度 */
@Excel(name = "经度")
private String lat;
/** 维度 */
@Excel(name = "维度")
private String lon;
/** sim卡iccid号 */
@Excel(name = "sim卡iccid号")
private String iccid;
/** 终端配置 */
@Excel(name = "终端配置")
private String terminalConfig;
/** 创建时间 */
@Excel(name = "创建时间", width = 30, dateFormat = "yyyy-MM-dd")
private Date createDate;
/** 更新时间 */
@Excel(name = "更新时间", width = 30, dateFormat = "yyyy-MM-dd")
private Date updateDate;
/** 终端状态 0禁用,1启用,2离线,3在线 */
@Excel(name = "终端状态 0禁用,1启用,2离线,3在线")
private Long status;
public void setTerminalId(Long terminalId)
{
this.terminalId = terminalId;
}
public Long getTerminalId()
{
return terminalId;
}
public void setTerminalSid(String terminalSid)
{
this.terminalSid = terminalSid;
}
public String getTerminalSid()
{
return terminalSid;
}
public void setLocation(String location)
{
this.location = location;
}
public String getLocation()
{
return location;
}
public void setLat(String lat)
{
this.lat = lat;
}
public String getLat()
{
return lat;
}
public void setLon(String lon)
{
this.lon = lon;
}
public String getLon()
{
return lon;
}
public void setIccid(String iccid)
{
this.iccid = iccid;
}
public String getIccid()
{
return iccid;
}
public void setTerminalConfig(String terminalConfig)
{
this.terminalConfig = terminalConfig;
}
public String getTerminalConfig()
{
return terminalConfig;
}
public void setCreateDate(Date createDate)
{
this.createDate = createDate;
}
public Date getCreateDate()
{
return createDate;
}
public void setUpdateDate(Date updateDate)
{
this.updateDate = updateDate;
}
public Date getUpdateDate()
{
return updateDate;
}
public void setStatus(Long status)
{
this.status = status;
}
public Long getStatus()
{
return status;
}
@Override
public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
.append("terminalId", getTerminalId())
.append("terminalSid", getTerminalSid())
.append("location", getLocation())
.append("lat", getLat())
.append("lon", getLon())
.append("iccid", getIccid())
.append("remark", getRemark())
.append("terminalConfig", getTerminalConfig())
.append("createDate", getCreateDate())
.append("createBy", getCreateBy())
.append("updateDate", getUpdateDate())
.append("updateBy", getUpdateBy())
.append("status", getStatus())
.toString();
}
}
1.3 终端管理-数据库映射类
IemsTerminalMapper.java
/**
* 终端管理Mapper接口
*
* @author ken_ji_jian
* @date 20xx-11-02
*/
public interface IemsTerminalMapper
{
/**
* 查询终端管理
*
* @param terminalId 终端管理ID
* @return 终端管理
*/
public IemsTerminal selectIemsTerminalById(Long terminalId);
/**
* 查询终端管理列表
*
* @param iemsTerminal 终端管理
* @return 终端管理集合
*/
public List<IemsTerminal> selectIemsTerminalList(IemsTerminal iemsTerminal);
/**
* 新增终端管理
*
* @param iemsTerminal 终端管理
* @return 结果
*/
public int insertIemsTerminal(IemsTerminal iemsTerminal);
/**
* 修改终端管理
*
* @param iemsTerminal 终端管理
* @return 结果
*/
public int updateIemsTerminal(IemsTerminal iemsTerminal);
/**
* 删除终端管理
*
* @param terminalId 终端管理ID
* @return 结果
*/
public int deleteIemsTerminalById(Long terminalId);
/**
* 批量删除终端管理
*
* @param terminalIds 需要删除的数据ID
* @return 结果
*/
public int deleteIemsTerminalByIds(String[] terminalIds);
}
1.4 终端管理-服务接口
IIemsTerminalService.java
/**
* 终端管理Service接口
*
* @author ken_ji_jian
* @date 20xx-11-02
*/
public interface IIemsTerminalService
{
/**
* 查询终端管理
*
* @param terminalId 终端管理ID
* @return 终端管理
*/
public IemsTerminal selectIemsTerminalById(Long terminalId);
/**
* 查询终端管理列表
*
* @param iemsTerminal 终端管理
* @return 终端管理集合
*/
public List<IemsTerminal> selectIemsTerminalList(IemsTerminal iemsTerminal);
/**
* 新增终端管理
*
* @param iemsTerminal 终端管理
* @return 结果
*/
public int insertIemsTerminal(IemsTerminal iemsTerminal);
/**
* 修改终端管理
*
* @param iemsTerminal 终端管理
* @return 结果
*/
public int updateIemsTerminal(IemsTerminal iemsTerminal);
/**
* 批量删除终端管理
*
* @param ids 需要删除的数据ID
* @return 结果
*/
public int deleteIemsTerminalByIds(String ids);
/**
* 删除终端管理信息
*
* @param terminalId 终端管理ID
* @return 结果
*/
public int deleteIemsTerminalById(Long terminalId);
/**
* 获取终端列表
* @return
*/
public Map<Long, String> getIemsTerminals();
}
1.5 终端管理-服务实现
IemsTerminalServiceImpl.java
/**
* 终端管理Service业务层处理
*
* @author ken_ji_jian
* @date 20xx-11-02
*/
@Service
public class IemsTerminalServiceImpl implements IIemsTerminalService
{
@Autowired
private IemsTerminalMapper iemsTerminalMapper;
/**
* 查询终端管理
*
* @param terminalId 终端管理ID
* @return 终端管理
*/
@Override
public IemsTerminal selectIemsTerminalById(Long terminalId)
{
return iemsTerminalMapper.selectIemsTerminalById(terminalId);
}
/**
* 查询终端管理列表
*
* @param iemsTerminal 终端管理
* @return 终端管理
*/
@Override
public List<IemsTerminal> selectIemsTerminalList(IemsTerminal iemsTerminal)
{
return iemsTerminalMapper.selectIemsTerminalList(iemsTerminal);
}
/**
* 新增终端管理
*
* @param iemsTerminal 终端管理
* @return 结果
*/
@Override
public int insertIemsTerminal(IemsTerminal iemsTerminal)
{
return iemsTerminalMapper.insertIemsTerminal(iemsTerminal);
}
/**
* 修改终端管理
*
* @param iemsTerminal 终端管理
* @return 结果
*/
@Override
public int updateIemsTerminal(IemsTerminal iemsTerminal)
{
return iemsTerminalMapper.updateIemsTerminal(iemsTerminal);
}
/**
* 删除终端管理对象
*
* @param ids 需要删除的数据ID
* @return 结果
*/
@Override
public int deleteIemsTerminalByIds(String ids)
{
return iemsTerminalMapper.deleteIemsTerminalByIds(Convert.toStrArray(ids));
}
/**
* 删除终端管理信息
*
* @param terminalId 终端管理ID
* @return 结果
*/
@Override
public int deleteIemsTerminalById(Long terminalId)
{
return iemsTerminalMapper.deleteIemsTerminalById(terminalId);
}
@Override
public Map<Long, String> getIemsTerminals(){
Map<Long, String> dic = new HashMap<>();
List<IemsTerminal> list = iemsTerminalMapper.selectIemsTerminalList(null);
if(list != null){
for(IemsTerminal item : list){
dic.put(item.getTerminalId(), item.getLocation());
}
}
return dic;
}
}
1.6 终端管理-页面实现
add.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-terminal-add">
<div class="form-group">
<label class="col-sm-3 control-label">17位终端SID号:</label>
<div class="col-sm-8">
<input name="terminalSid" class="form-control" type="text" required>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">终端位置:</label>
<div class="col-sm-8">
<input name="location" class="form-control" type="text" required>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">经度:</label>
<div class="col-sm-8">
<input name="lat" 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="lon" class="form-control" type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">sim卡iccid号:</label>
<div class="col-sm-8">
<input name="iccid" class="form-control" type="text" required>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">终端配置:</label>
<div class="col-sm-8">
<input name="terminalConfig" 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="createDate" class="form-control" placeholder="yyyy-MM-dd" type="text" required>
</div>
</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="updateDate" 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 check-box">
<label>
<input type="radio" checked="" value="0" name="status"> <i></i> 禁用</label>
</div>
<div class="radio check-box">
<label>
<input type="radio" checked="checked" value="1" name="status"> <i></i> 启用</label>
</div>
<span class="help-block m-b-none"><i class="fa fa-info-circle"></i> 0禁用,1启用,2离线,3在线</span>
</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/terminal"
$("#form-terminal-add").validate({
focusCleanup: true
});
function submitHandler() {
if ($.validate.form()) {
$.operate.save(prefix + "/add", $('#form-terminal-add').serialize());
}
}
$("input[name='createDate']").datetimepicker({
format: "yyyy-mm-dd",
minView: "month",
autoclose: true
});
$("input[name='updateDate']").datetimepicker({
format: "yyyy-mm-dd",
minView: "month",
autoclose: true
});
</script>
</body>
</html>
略...