增加运行状态表

This commit is contained in:
zy 2026-03-30 16:27:16 +08:00
parent 86b7290c7b
commit 5e3d392722
26 changed files with 1158 additions and 76 deletions

View File

@ -24,15 +24,19 @@ import org.jeecg.common.system.util.JwtUtil;
import org.jeecg.common.util.EntityFieldUtil; import org.jeecg.common.util.EntityFieldUtil;
import org.jeecg.common.vo.DeviceCmdVo; import org.jeecg.common.vo.DeviceCmdVo;
import org.jeecg.common.vo.DeviceCmdVo2; import org.jeecg.common.vo.DeviceCmdVo2;
import org.jeecg.common.vo.iot.common.DeviceRelayVo;
import org.jeecg.modules.appmana.service.*; import org.jeecg.modules.appmana.service.*;
import org.jeecg.modules.appmana.service.impl.IotCommonP3ServiceImpl;
import org.jeecg.modules.appmana.utils.Iotutils; import org.jeecg.modules.appmana.utils.Iotutils;
import org.jeecg.modules.appmana.utils.YSUtils; import org.jeecg.modules.appmana.utils.YSUtils;
import org.jeecg.modules.mqtt.MqttService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.text.SimpleDateFormat;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.Date; import java.util.Date;
@ -51,11 +55,6 @@ import java.util.List;
public class SurvDeviceDeployController extends JeecgController<SurvDeviceDeploy, ISurvDeviceDeployService> { public class SurvDeviceDeployController extends JeecgController<SurvDeviceDeploy, ISurvDeviceDeployService> {
@Autowired @Autowired
private ISurvDeviceDeployService survDeviceDeployService; private ISurvDeviceDeployService survDeviceDeployService;
@Autowired
private IScContService scContService;
@Autowired
private IScContExeService scContExeService;
@Autowired @Autowired
private ISurvTransdataOrientwaterService orientwaterService; private ISurvTransdataOrientwaterService orientwaterService;
@ -78,8 +77,15 @@ public class SurvDeviceDeployController extends JeecgController<SurvDeviceDeploy
@Autowired @Autowired
private Iotutils iotutils; private Iotutils iotutils;
@Autowired @Autowired
private ISurvIotVirtualDeviceService iotVirtualDeviceService; private IotCommonP3ServiceImpl p3Service;
@Autowired
private ISurvDeviceDeployRunService runService;
@Autowired
private ISurvDeviceDeployRelaygroupService relaygroupService;
/** /**
* 分页列表查询 * 分页列表查询
@ -255,38 +261,13 @@ public class SurvDeviceDeployController extends JeecgController<SurvDeviceDeploy
Assert.notNull(relay,"控制项无效"); Assert.notNull(relay,"控制项无效");
SurvDeviceDeploy deviceDeploy = deviceDeployService.getById(relay.getDeployId()); SurvDeviceDeploy deviceDeploy = deviceDeployService.getById(relay.getDeployId());
if(deviceDeploy != null){ if(deviceDeploy != null){
boolean b = p3Service.sendMqttCmd(deviceDeploy,relay,deviceCmdVo.getOps());
String cmds = ""; if(b){
String fieldName = relay.getEntityField(); return Result.ok("指令发送成功");
if (IotConstants.DEVICE_CLOSE.equals(deviceCmdVo.getOps())) {//关逻辑
cmds = relay.getRegisterCmdOn();
} else if (IotConstants.DEVICE_ON.equals(deviceCmdVo.getOps())) {//开逻辑
cmds = relay.getRegisterCmdOff();
} else if (IotConstants.DEVICE_STOP.equals(deviceCmdVo.getOps())) {//停逻辑
cmds = relay.getRegisterCmdStop();
}
deviceDeploy.setSendInfo(cmds);
//todo 调整为直接发送控制指令至mqtt
deviceDeployService.updateById(deviceDeploy);
try {
Thread.sleep(8 * 1000);
}catch (InterruptedException e){
e.printStackTrace();
}
SurvTransdataOrientwater transdataOrientwater = orientwaterService.getOneByDeviceCode(deviceDeploy.getDeployCode());
if(transdataOrientwater!=null){
String vals = EntityFieldUtil.getFieldValue(transdataOrientwater,fieldName,String.class);
if(deviceCmdVo.getOps().equals(vals)){
return Result.ok("操作成功");
}else{ }else{
return Result.error("最新数据的球阀状态与操作不一致,请联系管理员"); return Result.error("指令发送失败");
}
}else {
return Result.error("未收到该设备的最新数据,请稍后再次查看是否成功");
} }
}else { }else {
return Result.error("无效的设备"); return Result.error("无效的设备");
} }
@ -409,11 +390,11 @@ public class SurvDeviceDeployController extends JeecgController<SurvDeviceDeploy
@GetMapping(value = "/getRelayList") @GetMapping(value = "/getRelayList")
public Result<JSONObject> getRelayList(@RequestParam String deployId) { public Result<DeviceRelayVo> getRelayList(@RequestParam String deployId) {
SurvDeviceDeploy deploy = deviceDeployService.getById(deployId); SurvDeviceDeploy deploy = deviceDeployService.getById(deployId);
Assert.notNull(deploy,"无效设备"); Assert.notNull(deploy,"无效设备");
JSONObject jsonObject = new JSONObject(); DeviceRelayVo deviceRelayVo = new DeviceRelayVo();
Date dateTime = null; Date dateTime = null;
if(PollutionConstants.WATER_ORIENT.equals(deploy.getDeployType())){ if(PollutionConstants.WATER_ORIENT.equals(deploy.getDeployType())){
SurvTransdataOrientwater orientwater = orientwaterService.getOneByDeviceCode(deploy.getDeployCode()); SurvTransdataOrientwater orientwater = orientwaterService.getOneByDeviceCode(deploy.getDeployCode());
@ -429,25 +410,76 @@ public class SurvDeviceDeployController extends JeecgController<SurvDeviceDeploy
switch (deploy.getProtocolCode()){ switch (deploy.getProtocolCode()){
case IotConstants.lhviot_standard: case IotConstants.lhviot_standard:
List<String> readType = new ArrayList<>(Arrays.asList("read_write")); List<SurvDeviceDeployRelaygroup> relays = relaygroupService.getRelayByGroup(deploy.getId());
List<SurvIotVirtualDeviceGroup> modules = iotVirtualDeviceService.getModuleByGroup(deploy.getDeployCode(),readType); deviceRelayVo.setModuleList(relays);
jsonObject.put("moduleList",modules); //初始化指令
List<String> readType2 = new ArrayList<>(Arrays.asList("read_only")); if(!relays.isEmpty()){
List<SurvIotVirtualDeviceModule> runs = iotVirtualDeviceService.getModuleByType(deploy.getDeployCode(),readType2); for (SurvDeviceDeployRelaygroup relaygroup : relays) {
jsonObject.put("runStatus",runs); List<SurvDeviceDeployRelay> r = relayService.initCmd(relaygroup.getRelayList());
relaygroup.setRelayList(r);
}
}
List<SurvDeviceDeployRun> runs = runService.listByDeploy(deploy.getId());
deviceRelayVo.setRunStatus(runs);
break; break;
default: default:
List<SurvDeviceDeployRelay> pageList = relayService.relayList(deployId,null); List<SurvDeviceDeployRelay> pageList = relayService.relayList(deployId,null);
jsonObject.put("relayList",pageList); deviceRelayVo.setRelayList(pageList);
break; break;
} }
if(dateTime==null) { if(dateTime==null) {
jsonObject.put("dataTime", "该设备没有监测数据返回"); deviceRelayVo.setDateTime("该设备没有监测数据返回");
}else{ }else{
jsonObject.put("dataTime",dateTime); SimpleDateFormat time = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
deviceRelayVo.setDateTime(time.format(dateTime));
} }
return Result.OK(jsonObject); return Result.OK(deviceRelayVo);
} }
// @GetMapping(value = "/getRelayList")
// public Result<JSONObject> getRelayList(@RequestParam String deployId) {
//
// SurvDeviceDeploy deploy = deviceDeployService.getById(deployId);
// Assert.notNull(deploy,"无效设备");
// JSONObject jsonObject = new JSONObject();
// Date dateTime = null;
// if(PollutionConstants.WATER_ORIENT.equals(deploy.getDeployType())){
// SurvTransdataOrientwater orientwater = orientwaterService.getOneByDeviceCode(deploy.getDeployCode());
// if(orientwater!=null) {
// dateTime = orientwater.getDataDateTime();
// }
// } else if (PollutionConstants.WATER_LIVE.contains(deploy.getDeployType())) {
// SurvTransdataLivestockwater livestockwater = livestockwaterService.getOneByDeviceCode(deploy.getDeployCode());
// if(livestockwater!=null) {
// dateTime = livestockwater.getDataDateTime();
// }
// }
//
// switch (deploy.getProtocolCode()){
// case IotConstants.lhviot_standard:
// List<String> readType = new ArrayList<>(Arrays.asList("read_write"));
// List<SurvIotVirtualDeviceGroup> modules = iotVirtualDeviceService.getModuleByGroup(deploy.getDeployCode(),readType);
// jsonObject.put("moduleList",modules);
// List<String> readType2 = new ArrayList<>(Arrays.asList("read_only"));
// List<SurvIotVirtualDeviceModule> runs = iotVirtualDeviceService.getModuleByType(deploy.getDeployCode(),readType2);
// jsonObject.put("runStatus",runs);
// break;
// default:
// List<SurvDeviceDeployRelay> pageList = relayService.relayList(deployId,null);
// jsonObject.put("relayList",pageList);
// break;
// }
//
// if(dateTime==null) {
// jsonObject.put("dataTime", "该设备没有监测数据返回");
// }else{
// jsonObject.put("dataTime",dateTime);
// }
// return Result.OK(jsonObject);
// }
} }

View File

@ -0,0 +1,248 @@
package org.jeecg.modules.appmana.controller;
import java.util.*;
import java.util.stream.Collectors;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import org.apache.commons.lang3.StringUtils;
import org.jeecg.common.api.vo.Result;
import org.jeecg.common.entity.SurvDeviceDeployRun;
import org.jeecg.common.iot.common.DeviceRunTypeVo;
import org.jeecg.common.system.query.QueryGenerator;
import org.jeecg.common.util.oConvertUtils;
import org.jeecg.common.vo.dict.DictVo;
import org.jeecg.modules.appmana.service.ISurvConfigService;
import org.jeecg.modules.appmana.service.ISurvDeviceDeployRunService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import lombok.extern.slf4j.Slf4j;
import org.jeecgframework.poi.excel.ExcelImportUtil;
import org.jeecgframework.poi.excel.def.NormalExcelConstants;
import org.jeecgframework.poi.excel.entity.ExportParams;
import org.jeecgframework.poi.excel.entity.ImportParams;
import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
import org.jeecg.common.system.base.controller.JeecgController;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import org.springframework.web.servlet.ModelAndView;
import com.alibaba.fastjson.JSON;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.jeecg.common.aspect.annotation.AutoLog;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.jeecg.common.system.util.JwtUtil;
/**
* @Description: 运行状态
* @Author: jeecg-boot
* @Date: 2026-03-30
* @Version: V1.0
*/
@Api(tags="运行状态")
@RestController
@RequestMapping("/appmana/survDeviceDeployRun")
@Slf4j
public class SurvDeviceDeployRunController extends JeecgController<SurvDeviceDeployRun, ISurvDeviceDeployRunService> {
@Autowired
private ISurvDeviceDeployRunService survDeviceDeployRunService;
@Autowired
private ISurvConfigService configService;
/**
* 分页列表查询
*
* @param survDeviceDeployRun
* @param pageNo
* @param pageSize
* @param req
* @return
*/
//@AutoLog(value = "运行状态-分页列表查询")
@ApiOperation(value="运行状态-分页列表查询", notes="运行状态-分页列表查询")
@GetMapping(value = "/list")
public Result<IPage<SurvDeviceDeployRun>> queryPageList(SurvDeviceDeployRun survDeviceDeployRun,
@RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
HttpServletRequest req) {
QueryWrapper<SurvDeviceDeployRun> queryWrapper = QueryGenerator.initQueryWrapper(survDeviceDeployRun, req.getParameterMap());
Page<SurvDeviceDeployRun> page = new Page<SurvDeviceDeployRun>(pageNo, pageSize);
IPage<SurvDeviceDeployRun> pageList = survDeviceDeployRunService.page(page, queryWrapper);
survDeviceDeployRunService.fills(pageList.getRecords());
return Result.OK(pageList);
}
/**
* 添加
*
* @param survDeviceDeployRun
* @return
*/
@AutoLog(value = "运行状态-添加")
@ApiOperation(value="运行状态-添加", notes="运行状态-添加")
//@RequiresPermissions("appmana:surv_device_deploy_run:add")
@PostMapping(value = "/add")
public Result<String> add(@RequestBody SurvDeviceDeployRun survDeviceDeployRun, HttpServletRequest request) {
String username = JwtUtil.getUserNameByToken(request);
survDeviceDeployRun.setCreateBy(username);
survDeviceDeployRun.setCreateTime(new Date());
survDeviceDeployRunService.save(survDeviceDeployRun);
return Result.OK("添加成功!");
}
/**
* 编辑
*
* @param survDeviceDeployRun
* @return
*/
@AutoLog(value = "运行状态-编辑")
@ApiOperation(value="运行状态-编辑", notes="运行状态-编辑")
//@RequiresPermissions("appmana:surv_device_deploy_run:edit")
@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
public Result<String> edit(@RequestBody SurvDeviceDeployRun survDeviceDeployRun, HttpServletRequest request) {
//创建更新时间不能编辑
survDeviceDeployRun.setCreateTime(null);
survDeviceDeployRun.setUpdateTime(null);
String username = JwtUtil.getUserNameByToken(request);
survDeviceDeployRun.setUpdateBy(username);
survDeviceDeployRunService.updateById(survDeviceDeployRun);
return Result.OK("编辑成功!");
}
/**
* 通过id删除
*
* @param id
* @return
*/
@AutoLog(value = "运行状态-通过id删除")
@ApiOperation(value="运行状态-通过id删除", notes="运行状态-通过id删除")
//@RequiresPermissions("appmana:surv_device_deploy_run:delete")
@DeleteMapping(value = "/delete")
public Result<String> delete(@RequestParam(name="id",required=true) String id) {
survDeviceDeployRunService.removeById(id);
return Result.OK("删除成功!");
}
/**
* 批量删除
*
* @param ids
* @return
*/
@AutoLog(value = "运行状态-批量删除")
@ApiOperation(value="运行状态-批量删除", notes="运行状态-批量删除")
//@RequiresPermissions("appmana:surv_device_deploy_run:deleteBatch")
@DeleteMapping(value = "/deleteBatch")
public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
this.survDeviceDeployRunService.removeByIds(Arrays.asList(ids.split(",")));
return Result.OK("批量删除成功!");
}
/**
* 通过id查询
*
* @param id
* @return
*/
//@AutoLog(value = "运行状态-通过id查询")
@ApiOperation(value="运行状态-通过id查询", notes="运行状态-通过id查询")
@GetMapping(value = "/queryById")
public Result<SurvDeviceDeployRun> queryById(@RequestParam(name="id",required=true) String id) {
SurvDeviceDeployRun survDeviceDeployRun = survDeviceDeployRunService.getById(id);
if(survDeviceDeployRun==null) {
return Result.error("未找到对应数据");
}
return Result.OK(survDeviceDeployRun);
}
/**
* 导出excel
*
* @param request
* @param survDeviceDeployRun
*/
//@RequiresPermissions("appmana:surv_device_deploy_run:exportXls")
@RequestMapping(value = "/exportXls")
public ModelAndView exportXls(HttpServletRequest request, SurvDeviceDeployRun survDeviceDeployRun) {
return super.exportXls(request, survDeviceDeployRun, SurvDeviceDeployRun.class, "运行状态");
}
/**
* 通过excel导入数据
*
* @param request
* @param response
* @return
*/
//@RequiresPermissions("appmana:surv_device_deploy_run:importExcel")
@RequestMapping(value = "/importExcel", method = RequestMethod.POST)
public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
return super.importExcel(request, response, SurvDeviceDeployRun.class);
}
/**
* 重复校验
*
* @param request
* @return
*/
@RequestMapping(value = "/relayItemCheck", method = RequestMethod.GET)
@ApiOperation("重复校验接口")
public Result<Object> relayItemCheck(SurvDeviceDeployRun fDeviceDeployRun, HttpServletRequest request) {
Long num = Long.valueOf(0);
LambdaQueryWrapper<SurvDeviceDeployRun> queryWrapper = new LambdaQueryWrapper<SurvDeviceDeployRun>();
queryWrapper.eq(SurvDeviceDeployRun::getRunKey, fDeviceDeployRun.getRunKey());
queryWrapper.eq(SurvDeviceDeployRun::getDeployId, fDeviceDeployRun.getDeployId());
if (StringUtils.isNotBlank(fDeviceDeployRun.getId())) {
// 编辑页面校验
queryWrapper.ne(SurvDeviceDeployRun::getId, fDeviceDeployRun.getId());
}
num = survDeviceDeployRunService.count(queryWrapper);
if (num == 0) {
// 该值可用
return Result.ok("该值可用!");
} else {
// 该值不可用
log.info("该值不可用,系统中已存在!");
return Result.error("该值不可用,系统中已存在!");
}
}
@ApiOperation("13.获取运行种类种类")
@ApiOperationSupport(order = 13)
@GetMapping("/getRelayType")
public Result getRelayType() {
/*1=工作类型*/
List<DeviceRunTypeVo> relayTypeVos = new ArrayList<>();
List<DictVo> dictModels = configService.getDictByCode("iot_run_type");
if(!dictModels.isEmpty()){
for (DictVo dictModel : dictModels) {
DeviceRunTypeVo deviceRunTypeVo = new DeviceRunTypeVo();
deviceRunTypeVo.setRunType(dictModel.getValue());
deviceRunTypeVo.setRunTypeName(dictModel.getText());
relayTypeVos.add(deviceRunTypeVo);
}
}
return Result.ok(relayTypeVos);
}
}

View File

@ -0,0 +1,224 @@
package org.jeecg.modules.appmana.controller;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import org.apache.commons.lang3.StringUtils;
import org.jeecg.common.api.vo.Result;
import org.jeecg.common.entity.SurvDeviceDeployRungroup;
import org.jeecg.common.system.query.QueryGenerator;
import org.jeecg.common.util.oConvertUtils;
import org.jeecg.modules.appmana.service.ISurvDeviceDeployRungroupService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import lombok.extern.slf4j.Slf4j;
import org.jeecgframework.poi.excel.ExcelImportUtil;
import org.jeecgframework.poi.excel.def.NormalExcelConstants;
import org.jeecgframework.poi.excel.entity.ExportParams;
import org.jeecgframework.poi.excel.entity.ImportParams;
import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
import org.jeecg.common.system.base.controller.JeecgController;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import org.springframework.web.servlet.ModelAndView;
import com.alibaba.fastjson.JSON;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.jeecg.common.aspect.annotation.AutoLog;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.jeecg.common.system.util.JwtUtil;
/**
* @Description: 运行状态分组
* @Author: jeecg-boot
* @Date: 2026-03-30
* @Version: V1.0
*/
@Api(tags="运行状态分组")
@RestController
@RequestMapping("/appmana/survDeviceDeployRungroup")
@Slf4j
public class SurvDeviceDeployRungroupController extends JeecgController<SurvDeviceDeployRungroup, ISurvDeviceDeployRungroupService> {
@Autowired
private ISurvDeviceDeployRungroupService survDeviceDeployRungroupService;
/**
* 分页列表查询
*
* @param survDeviceDeployRungroup
* @param pageNo
* @param pageSize
* @param req
* @return
*/
//@AutoLog(value = "运行状态分组-分页列表查询")
@ApiOperation(value="运行状态分组-分页列表查询", notes="运行状态分组-分页列表查询")
@GetMapping(value = "/list")
public Result<IPage<SurvDeviceDeployRungroup>> queryPageList(SurvDeviceDeployRungroup survDeviceDeployRungroup,
@RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
HttpServletRequest req) {
QueryWrapper<SurvDeviceDeployRungroup> queryWrapper = QueryGenerator.initQueryWrapper(survDeviceDeployRungroup, req.getParameterMap());
Page<SurvDeviceDeployRungroup> page = new Page<SurvDeviceDeployRungroup>(pageNo, pageSize);
IPage<SurvDeviceDeployRungroup> pageList = survDeviceDeployRungroupService.page(page, queryWrapper);
return Result.OK(pageList);
}
/**
* 添加
*
* @param survDeviceDeployRungroup
* @return
*/
@AutoLog(value = "运行状态分组-添加")
@ApiOperation(value="运行状态分组-添加", notes="运行状态分组-添加")
//@RequiresPermissions("appmana:surv_device_deploy_rungroup:add")
@PostMapping(value = "/add")
public Result<String> add(@RequestBody SurvDeviceDeployRungroup survDeviceDeployRungroup, HttpServletRequest request) {
String username = JwtUtil.getUserNameByToken(request);
survDeviceDeployRungroup.setCreateBy(username);
survDeviceDeployRungroup.setCreateTime(new Date());
survDeviceDeployRungroupService.save(survDeviceDeployRungroup);
return Result.OK("添加成功!");
}
/**
* 编辑
*
* @param survDeviceDeployRungroup
* @return
*/
@AutoLog(value = "运行状态分组-编辑")
@ApiOperation(value="运行状态分组-编辑", notes="运行状态分组-编辑")
//@RequiresPermissions("appmana:surv_device_deploy_rungroup:edit")
@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
public Result<String> edit(@RequestBody SurvDeviceDeployRungroup survDeviceDeployRungroup, HttpServletRequest request) {
//创建更新时间不能编辑
survDeviceDeployRungroup.setCreateTime(null);
survDeviceDeployRungroup.setUpdateTime(null);
String username = JwtUtil.getUserNameByToken(request);
survDeviceDeployRungroup.setUpdateBy(username);
survDeviceDeployRungroupService.updateById(survDeviceDeployRungroup);
return Result.OK("编辑成功!");
}
/**
* 通过id删除
*
* @param id
* @return
*/
@AutoLog(value = "运行状态分组-通过id删除")
@ApiOperation(value="运行状态分组-通过id删除", notes="运行状态分组-通过id删除")
//@RequiresPermissions("appmana:surv_device_deploy_rungroup:delete")
@DeleteMapping(value = "/delete")
public Result<String> delete(@RequestParam(name="id",required=true) String id) {
survDeviceDeployRungroupService.removeById(id);
return Result.OK("删除成功!");
}
/**
* 批量删除
*
* @param ids
* @return
*/
@AutoLog(value = "运行状态分组-批量删除")
@ApiOperation(value="运行状态分组-批量删除", notes="运行状态分组-批量删除")
//@RequiresPermissions("appmana:surv_device_deploy_rungroup:deleteBatch")
@DeleteMapping(value = "/deleteBatch")
public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
this.survDeviceDeployRungroupService.removeByIds(Arrays.asList(ids.split(",")));
return Result.OK("批量删除成功!");
}
/**
* 通过id查询
*
* @param id
* @return
*/
//@AutoLog(value = "运行状态分组-通过id查询")
@ApiOperation(value="运行状态分组-通过id查询", notes="运行状态分组-通过id查询")
@GetMapping(value = "/queryById")
public Result<SurvDeviceDeployRungroup> queryById(@RequestParam(name="id",required=true) String id) {
SurvDeviceDeployRungroup survDeviceDeployRungroup = survDeviceDeployRungroupService.getById(id);
if(survDeviceDeployRungroup==null) {
return Result.error("未找到对应数据");
}
return Result.OK(survDeviceDeployRungroup);
}
/**
* 导出excel
*
* @param request
* @param survDeviceDeployRungroup
*/
//@RequiresPermissions("appmana:surv_device_deploy_rungroup:exportXls")
@RequestMapping(value = "/exportXls")
public ModelAndView exportXls(HttpServletRequest request, SurvDeviceDeployRungroup survDeviceDeployRungroup) {
return super.exportXls(request, survDeviceDeployRungroup, SurvDeviceDeployRungroup.class, "运行状态分组");
}
/**
* 通过excel导入数据
*
* @param request
* @param response
* @return
*/
//@RequiresPermissions("appmana:surv_device_deploy_rungroup:importExcel")
@RequestMapping(value = "/importExcel", method = RequestMethod.POST)
public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
return super.importExcel(request, response, SurvDeviceDeployRungroup.class);
}
/**
* 重复校验
*
* @param request
* @return
*/
@RequestMapping(value = "/itemCheck", method = RequestMethod.GET)
@ApiOperation("重复校验接口")
public Result<Object> itemCheck(SurvDeviceDeployRungroup survDeviceDeployRungroup, HttpServletRequest request) {
// SurvDeviceDeployRelaygroup relayGroup = fDeviceDeployRelaygroupService.getById(fDeviceDeployRelaygroup.getDeployId());
// Assert.notNull(relayGroup,"无效分组");
Long num = Long.valueOf(0);
LambdaQueryWrapper<SurvDeviceDeployRungroup> queryWrapper = new LambdaQueryWrapper<SurvDeviceDeployRungroup>();
queryWrapper.eq(SurvDeviceDeployRungroup::getGroupName, survDeviceDeployRungroup.getGroupName());
queryWrapper.eq(SurvDeviceDeployRungroup::getDeployId, survDeviceDeployRungroup.getDeployId());
if (StringUtils.isNotBlank(survDeviceDeployRungroup.getId())) {
// 编辑页面校验
queryWrapper.ne(SurvDeviceDeployRungroup::getId, survDeviceDeployRungroup.getId());
}
num = survDeviceDeployRungroupService.count(queryWrapper);
if (num == 0) {
// 该值可用
return Result.ok("该值可用!");
} else {
// 该值不可用
log.info("该值不可用,系统中已存在!");
return Result.error("该值不可用,系统中已存在!");
}
}
}

View File

@ -3,6 +3,7 @@ package org.jeecg.modules.appmana.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import org.jeecg.common.entity.SurvDeviceDeployRelay; import org.jeecg.common.entity.SurvDeviceDeployRelay;
import org.jeecg.common.entity.SurvDeviceDeployRelaygroup;
import org.jeecg.common.iot.common.DeployRelayCountVo; import org.jeecg.common.iot.common.DeployRelayCountVo;
import java.util.List; import java.util.List;
@ -20,4 +21,7 @@ public interface SurvDeviceDeployRelayMapper extends BaseMapper<SurvDeviceDeploy
List<SurvDeviceDeployRelay> relayList(@Param("deployId") String deployId, @Param("groups") List<String> groups); List<SurvDeviceDeployRelay> relayList(@Param("deployId") String deployId, @Param("groups") List<String> groups);
List<SurvDeviceDeployRelay> deployRelayList(@Param("deployId") List<String> deployId, @Param("groups") List<String> groups); List<SurvDeviceDeployRelay> deployRelayList(@Param("deployId") List<String> deployId, @Param("groups") List<String> groups);
List<SurvDeviceDeployRelay> getRelayByGroup(@Param("deployId")String deployId);
} }

View File

@ -1,8 +1,11 @@
package org.jeecg.modules.appmana.mapper; package org.jeecg.modules.appmana.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
import org.jeecg.common.entity.SurvDeviceDeployRelaygroup; import org.jeecg.common.entity.SurvDeviceDeployRelaygroup;
import java.util.List;
/** /**
* @Description: 继电器分组 * @Description: 继电器分组
* @Author: jeecg-boot * @Author: jeecg-boot
@ -11,4 +14,5 @@ import org.jeecg.common.entity.SurvDeviceDeployRelaygroup;
*/ */
public interface SurvDeviceDeployRelaygroupMapper extends BaseMapper<SurvDeviceDeployRelaygroup> { public interface SurvDeviceDeployRelaygroupMapper extends BaseMapper<SurvDeviceDeployRelaygroup> {
List<SurvDeviceDeployRelaygroup> getRelayByGroup(@Param("deployId")String deployId);
} }

View File

@ -0,0 +1,17 @@
package org.jeecg.modules.appmana.mapper;
import java.util.List;
import org.apache.ibatis.annotations.Param;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.jeecg.common.entity.SurvDeviceDeployRun;
/**
* @Description: 运行状态
* @Author: jeecg-boot
* @Date: 2026-03-30
* @Version: V1.0
*/
public interface SurvDeviceDeployRunMapper extends BaseMapper<SurvDeviceDeployRun> {
}

View File

@ -0,0 +1,17 @@
package org.jeecg.modules.appmana.mapper;
import java.util.List;
import org.apache.ibatis.annotations.Param;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.jeecg.common.entity.SurvDeviceDeployRungroup;
/**
* @Description: 运行状态分组
* @Author: jeecg-boot
* @Date: 2026-03-30
* @Version: V1.0
*/
public interface SurvDeviceDeployRungroupMapper extends BaseMapper<SurvDeviceDeployRungroup> {
}

View File

@ -52,6 +52,7 @@
<select id="getItemCounts" resultType="org.jeecg.common.iot.common.DeployRelayCountVo"> <select id="getItemCounts" resultType="org.jeecg.common.iot.common.DeployRelayCountVo">
select DEPLOY_ID as deployId,count(ID) as relayCounts from surv_device_deploy_relay select DEPLOY_ID as deployId,count(ID) as relayCounts from surv_device_deploy_relay
where IS_DEL = 0 AND DEPLOY_ID IN where IS_DEL = 0 AND DEPLOY_ID IN
@ -99,4 +100,10 @@
</if> </if>
</where> </where>
</select> </select>
<select id="getRelays" resultMap="SurvDeviceDeployRelayMap">
select
<include refid="baseSql"/>
from surv_device_deploy_relay
where GROUP_ID = #{groupId} order by SORT_NO,CREATE_TIME desc
</select>
</mapper> </mapper>

View File

@ -1,5 +1,35 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.jeecg.modules.appmana.mapper.SurvDeviceDeployRelaygroupMapper"> <mapper namespace="org.jeecg.modules.appmana.mapper.SurvDeviceDeployRelaygroupMapper">
<resultMap type="org.jeecg.common.entity.SurvDeviceDeployRelaygroup" id="SurvDeviceDeployRelaygroupMap">
<result property="id" column="ID" jdbcType="VARCHAR"/>
<result property="deployId" column="DEPLOY_ID" jdbcType="VARCHAR"/>
<result property="groupType" column="GROUP_TYPE" jdbcType="VARCHAR"/>
<result property="groupName" column="GROUP_NAME" jdbcType="VARCHAR"/>
<result property="groupNotes" column="GROUP_NOTES" jdbcType="VARCHAR"/>
<result property="sortNo" column="SORT_NO" jdbcType="INTEGER"/>
<result property="isEnable" column="IS_ENABLE" jdbcType="INTEGER"/>
<result property="tenantId" column="TENANT_ID" jdbcType="VARCHAR"/>
<result property="reVision" column="RE_VISION" jdbcType="INTEGER"/>
<result property="createBy" column="CREATE_BY" jdbcType="VARCHAR"/>
<result property="createTime" column="CREATE_TIME" jdbcType="TIMESTAMP"/>
<result property="updateBy" column="UPDATE_BY" jdbcType="VARCHAR"/>
<result property="isDel" column="IS_DEL" jdbcType="INTEGER"/>
<result property="updateTime" column="UPDATE_TIME" jdbcType="TIMESTAMP"/>
</resultMap>
<resultMap id="relayMap" type="org.jeecg.common.entity.SurvDeviceDeployRelaygroup" extends="SurvDeviceDeployRelaygroupMap">
<collection property="relayList" column="{groupId = ID}" select="org.jeecg.modules.appmana.mapper.SurvDeviceDeployRelayMapper.getRelays"/>
</resultMap>
<sql id="baseSql">
ID,DEPLOY_ID,GROUP_TYPE,GROUP_NAME,GROUP_NOTES,SORT_NO,IS_ENABLE,TENANT_ID,RE_VISION,CREATE_BY,CREATE_TIME,UPDATE_BY,IS_DEL,UPDATE_TIME
</sql>
<select id="getRelayByGroup" resultMap="relayMap">
select <include refid="baseSql"/>
from surv_device_deploy_relaygroup
where DEPLOY_ID = #{deployId} order by SORT_NO,CREATE_TIME desc
</select>
</mapper> </mapper>

View File

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.jeecg.modules.appmana.mapper.SurvDeviceDeployRunMapper">
</mapper>

View File

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.jeecg.modules.appmana.mapper.SurvDeviceDeployRungroupMapper">
</mapper>

View File

@ -3,6 +3,7 @@ package org.jeecg.modules.appmana.service;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import org.jeecg.common.entity.SurvDeviceDeploy; import org.jeecg.common.entity.SurvDeviceDeploy;
import org.jeecg.common.entity.SurvDeviceDeployRelay; import org.jeecg.common.entity.SurvDeviceDeployRelay;
import org.jeecg.common.entity.SurvDeviceDeployRelaygroup;
import org.jeecg.common.iot.common.DeployRelayCountVo; import org.jeecg.common.iot.common.DeployRelayCountVo;
import java.util.List; import java.util.List;
@ -34,4 +35,7 @@ public interface ISurvDeviceDeployRelayService extends IService<SurvDeviceDeploy
void processGroupName(SurvDeviceDeployRelay fDeviceDeployRelay); void processGroupName(SurvDeviceDeployRelay fDeviceDeployRelay);
void fills(List<SurvDeviceDeployRelay> list); void fills(List<SurvDeviceDeployRelay> list);
List<SurvDeviceDeployRelay> initCmd(List<SurvDeviceDeployRelay> relayList);
} }

View File

@ -14,4 +14,6 @@ import java.util.List;
public interface ISurvDeviceDeployRelaygroupService extends IService<SurvDeviceDeployRelaygroup> { public interface ISurvDeviceDeployRelaygroupService extends IService<SurvDeviceDeployRelaygroup> {
void fills(List<SurvDeviceDeployRelaygroup> records); void fills(List<SurvDeviceDeployRelaygroup> records);
List<SurvDeviceDeployRelaygroup> getRelayByGroup(String id);
} }

View File

@ -0,0 +1,20 @@
package org.jeecg.modules.appmana.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import org.jeecg.common.entity.SurvDeviceDeployRun;
import java.util.List;
/**
* @Description: 运行状态
* @Author: jeecg-boot
* @Date: 2026-03-30
* @Version: V1.0
*/
public interface ISurvDeviceDeployRunService extends IService<SurvDeviceDeployRun> {
List<SurvDeviceDeployRun> listByDeploy(String deployId);
void fills(List<SurvDeviceDeployRun> pageList);
}

View File

@ -0,0 +1,14 @@
package org.jeecg.modules.appmana.service;
import com.baomidou.mybatisplus.extension.service.IService;
import org.jeecg.common.entity.SurvDeviceDeployRungroup;
/**
* @Description: 运行状态分组
* @Author: jeecg-boot
* @Date: 2026-03-30
* @Version: V1.0
*/
public interface ISurvDeviceDeployRungroupService extends IService<SurvDeviceDeployRungroup> {
}

View File

@ -8,16 +8,14 @@ import org.apache.commons.lang3.StringUtils;
import org.jeecg.common.constant.IotConstants; import org.jeecg.common.constant.IotConstants;
import org.jeecg.common.constant.PollutionConstants; import org.jeecg.common.constant.PollutionConstants;
import org.jeecg.common.constant.enums.PollutionEnum; import org.jeecg.common.constant.enums.PollutionEnum;
import org.jeecg.common.entity.ScEquZhibiao; import org.jeecg.common.entity.*;
import org.jeecg.common.entity.SurvConfig;
import org.jeecg.common.entity.SurvDeviceDeploy;
import org.jeecg.common.entity.SurvStationInfo;
import org.jeecg.common.util.DateUtilTools; import org.jeecg.common.util.DateUtilTools;
import org.jeecg.common.util.EntityFieldUtil; import org.jeecg.common.util.EntityFieldUtil;
import org.jeecg.common.vo.*; import org.jeecg.common.vo.*;
import org.jeecg.common.vo.statistic.DTOIotSummray; import org.jeecg.common.vo.statistic.DTOIotSummray;
import org.jeecg.modules.appmana.service.IScEquZhibiaoService; import org.jeecg.modules.appmana.service.IScEquZhibiaoService;
import org.jeecg.modules.appmana.utils.Iotutils; import org.jeecg.modules.appmana.utils.Iotutils;
import org.jeecg.modules.mqtt.MqttService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy; import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -52,7 +50,9 @@ public class IotCommonP3ServiceImpl {
@Autowired @Autowired
@Lazy @Lazy
private SurvConfigServiceImpl survConfigService; private SurvConfigServiceImpl survConfigService;
@Lazy
@Autowired(required = false)
private MqttService mqttService;
/** /**
* 物联网设备统计 * 物联网设备统计
@ -708,4 +708,25 @@ public class IotCommonP3ServiceImpl {
return voHisResult; return voHisResult;
} }
public boolean sendMqttCmd(SurvDeviceDeploy deploy, SurvDeviceDeployRelay relay,String ops){
if(deploy!=null){
String cmds = "";
String fieldName = relay.getEntityField();
if (IotConstants.DEVICE_CLOSE.equals(ops)) {//关逻辑
cmds = relay.getRegisterCmdOn();
} else if (IotConstants.DEVICE_ON.equals(ops)) {//开逻辑
cmds = relay.getRegisterCmdOff();
} else if (IotConstants.DEVICE_STOP.equals(ops)) {//停逻辑
cmds = relay.getRegisterCmdStop();
}
switch (deploy.getProtocolCode()){
// mqttService
}
}
return true;
}
} }

View File

@ -20,9 +20,11 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy; import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.HashMap; import java.time.Instant;
import java.util.List; import java.time.ZoneId;
import java.util.Map; import java.time.format.DateTimeFormatter;
import java.util.*;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.regex.Matcher; import java.util.regex.Matcher;
import java.util.regex.Pattern; import java.util.regex.Pattern;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@ -47,6 +49,10 @@ public class SurvDeviceDeployRelayServiceImpl extends ServiceImpl<SurvDeviceDepl
@Autowired @Autowired
@Lazy @Lazy
private SurvConfigServiceImpl configService; private SurvConfigServiceImpl configService;
private static final AtomicInteger counter = new AtomicInteger(0);
private static final DateTimeFormatter FORMATTER =
DateTimeFormatter.ofPattern("yyyyMMddHHmmss")
.withZone(ZoneId.systemDefault());
@Override @Override
public boolean syncRelays(List<String> list) { public boolean syncRelays(List<String> list) {
@ -302,4 +308,44 @@ public class SurvDeviceDeployRelayServiceImpl extends ServiceImpl<SurvDeviceDepl
} }
} }
@Override
public List<SurvDeviceDeployRelay> initCmd(List<SurvDeviceDeployRelay> relayList) {
List<SurvDeviceDeployRelay> re = new ArrayList<>();
if(relayList!=null && !relayList.isEmpty()){
for (SurvDeviceDeployRelay survDeviceDeployRelay : relayList) {
survDeviceDeployRelay.setRegisterCmdOn(completeCmd(survDeviceDeployRelay.getRegisterCmdOn()));
survDeviceDeployRelay.setRegisterCmdOff(completeCmd(survDeviceDeployRelay.getRegisterCmdOff()));
survDeviceDeployRelay.setRegisterCmdStop(completeCmd(survDeviceDeployRelay.getRegisterCmdStop()));
re.add(survDeviceDeployRelay);
}
}
return re;
}
private String completeCmd(String cmdStr){
String cmds = "";
if(StringUtils.isNotBlank(cmdStr)){
cmds = String.format(cmdStr,generate());
}
return cmds;
}
/**
* 线程安全的高并发版本
*/
public static String generate() {
// 1. 生成时间戳部分
String timestamp = FORMATTER.format(Instant.now());
// 2. 生成4位随机数使用AtomicInteger保证线程安全
int random = counter.incrementAndGet() % 10000;
if (random < 0) {
random = -random;
}
String randomStr = String.format("%04d", random);
return timestamp + randomStr;
}
} }

View File

@ -41,4 +41,10 @@ public class SurvDeviceDeployRelaygroupServiceImpl extends ServiceImpl<SurvDevic
return list; return list;
} }
@Override
public List<SurvDeviceDeployRelaygroup> getRelayByGroup(String deployId) {
return baseMapper.getRelayByGroup(deployId);
}
} }

View File

@ -0,0 +1,64 @@
package org.jeecg.modules.appmana.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.jeecg.common.entity.SurvDeviceDeployRelaygroup;
import org.jeecg.common.entity.SurvDeviceDeployRun;
import org.jeecg.common.entity.SurvDeviceDeployRungroup;
import org.jeecg.modules.appmana.mapper.SurvDeviceDeployRunMapper;
import org.jeecg.modules.appmana.service.ISurvDeviceDeployRunService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @Description: 运行状态
* @Author: jeecg-boot
* @Date: 2026-03-30
* @Version: V1.0
*/
@Service
public class SurvDeviceDeployRunServiceImpl extends ServiceImpl<SurvDeviceDeployRunMapper, SurvDeviceDeployRun> implements ISurvDeviceDeployRunService {
@Autowired
@Lazy
private SurvConfigServiceImpl configService;
@Autowired
@Lazy
private SurvDeviceDeployRungroupServiceImpl rungroupService;
@Override
public List<SurvDeviceDeployRun> listByDeploy(String deployId) {
List<SurvDeviceDeployRun> list = lambdaQuery()
.eq(SurvDeviceDeployRun::getDeployId,deployId)
.orderByAsc(SurvDeviceDeployRun::getSortNo)
.orderByDesc(SurvDeviceDeployRun::getCreateTime)
.list();
return list;
}
@Override
public void fills(List<SurvDeviceDeployRun> pageList) {
if(pageList!=null && !pageList.isEmpty()){
Map<String,String> typeMaps = configService.getDictMapByCode("iot_run_type");
Map<String,String> cateMaps = configService.getDictMapByCode("iot_run_cate");
List<SurvDeviceDeployRungroup> relaygroups = rungroupService.groupList(pageList.get(0).getDeployId());
Map<String,String> groupMaps = new HashMap<>();
if(!relaygroups.isEmpty()){
relaygroups.forEach(item->groupMaps.put(item.getId(),item.getGroupName()));
}
for (SurvDeviceDeployRun survDeviceDeployRun : pageList) {
survDeviceDeployRun.setRunCateName(cateMaps.get(survDeviceDeployRun.getRunCate()+""));
survDeviceDeployRun.setRunTypeName(typeMaps.get(survDeviceDeployRun.getRunType()+""));
survDeviceDeployRun.setGroupNameStr(groupMaps.get(survDeviceDeployRun.getGroupId()));
}
}
}
}

View File

@ -0,0 +1,28 @@
package org.jeecg.modules.appmana.service.impl;
import org.jeecg.common.entity.SurvDeviceDeployRungroup;
import org.jeecg.modules.appmana.mapper.SurvDeviceDeployRungroupMapper;
import org.jeecg.modules.appmana.service.ISurvDeviceDeployRungroupService;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import java.util.List;
/**
* @Description: 运行状态分组
* @Author: jeecg-boot
* @Date: 2026-03-30
* @Version: V1.0
*/
@Service
public class SurvDeviceDeployRungroupServiceImpl extends ServiceImpl<SurvDeviceDeployRungroupMapper, SurvDeviceDeployRungroup> implements ISurvDeviceDeployRungroupService {
public List<SurvDeviceDeployRungroup> groupList(String deployId) {
List<SurvDeviceDeployRungroup> list = lambdaQuery()
.eq(SurvDeviceDeployRungroup::getIsEnable,1)
.eq(SurvDeviceDeployRungroup::getDeployId,deployId)
.list();
return list;
}
}

View File

@ -12,6 +12,7 @@ import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable; import java.io.Serializable;
import java.util.Date; import java.util.Date;
import java.util.List;
/** /**
* @Description: 继电器分组 * @Description: 继电器分组
@ -101,4 +102,7 @@ public class SurvDeviceDeployRelaygroup implements Serializable {
@TableField(exist = false) @TableField(exist = false)
private String groupTypeName; private String groupTypeName;
@TableField(exist = false)
private List<SurvDeviceDeployRelay> relayList;
} }

View File

@ -0,0 +1,149 @@
package org.jeecg.common.entity;
import java.io.Serializable;
import java.io.UnsupportedEncodingException;
import java.util.Date;
import java.math.BigDecimal;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.springframework.format.annotation.DateTimeFormat;
import org.jeecgframework.poi.excel.annotation.Excel;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
* @Description: 运行状态
* @Author: jeecg-boot
* @Date: 2026-03-30
* @Version: V1.06
*/
@Data
@TableName("surv_device_deploy_run")
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = false)
@ApiModel(value="surv_device_deploy_run对象", description="运行状态")
public class SurvDeviceDeployRun implements Serializable {
private static final long serialVersionUID = 1L;
/**主键*/
@TableId(type = IdType.ASSIGN_ID)
@ApiModelProperty(value = "主键")
private java.lang.String id;
/**设备ID*/
@Excel(name = "设备ID", width = 15)
@ApiModelProperty(value = "设备ID")
private java.lang.String deployId;
/**类别1=普通*/
@Excel(name = "类别1=普通", width = 15)
@ApiModelProperty(value = "类别1=普通")
private java.lang.Integer runCate;
/**1=工作运行状态*/
@Excel(name = "1=工作运行状态", width = 15)
@ApiModelProperty(value = "1=工作运行状态")
private java.lang.Integer runType;
/**状态key/编号*/
@Excel(name = "状态key/编号", width = 15)
@ApiModelProperty(value = "状态key/编号")
private java.lang.String runKey;
/**状态名称*/
@Excel(name = "状态名称", width = 15)
@ApiModelProperty(value = "状态名称")
private java.lang.String runName;
/**状态备注*/
@Excel(name = "状态备注", width = 15)
@ApiModelProperty(value = "状态备注")
private java.lang.String relayNotes;
/**状态标记*/
@Excel(name = "状态标记", width = 15)
@ApiModelProperty(value = "状态标记")
private java.lang.String relayMark;
/**回执状态开*/
@Excel(name = "回执状态开", width = 15)
@ApiModelProperty(value = "回执状态开")
private java.lang.String registerOn;
/**回执状态关*/
@Excel(name = "回执状态关", width = 15)
@ApiModelProperty(value = "回执状态关")
private java.lang.String registerOff;
/**回执状态停*/
@Excel(name = "回执状态停", width = 15)
@ApiModelProperty(value = "回执状态停")
private java.lang.String registerStop;
/**是否启用*/
@Excel(name = "是否启用", width = 15)
@ApiModelProperty(value = "是否启用")
private java.lang.Integer isEnable;
/**分组ID*/
@Excel(name = "分组ID", width = 15)
@ApiModelProperty(value = "分组ID")
private java.lang.String groupId;
/**分组CODE*/
@Excel(name = "分组CODE", width = 15)
@ApiModelProperty(value = "分组CODE")
private java.lang.String groupCode;
/**分组名称*/
@Excel(name = "分组名称", width = 15)
@ApiModelProperty(value = "分组名称")
private java.lang.String groupName;
/**排序号*/
@Excel(name = "排序号", width = 15)
@ApiModelProperty(value = "排序号")
private java.lang.Integer sortNo;
/**租户号*/
@Excel(name = "租户号", width = 15)
@ApiModelProperty(value = "租户号")
private java.lang.String tenantId;
/**乐观锁*/
@Excel(name = "乐观锁", width = 15)
@ApiModelProperty(value = "乐观锁")
private java.lang.Integer reVision;
/**创建人*/
@ApiModelProperty(value = "创建人")
private java.lang.String createBy;
/**创建时间*/
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
@ApiModelProperty(value = "创建时间")
private java.util.Date createTime;
/**更新人*/
@ApiModelProperty(value = "更新人")
private java.lang.String updateBy;
/**逻辑删除*/
@Excel(name = "逻辑删除", width = 15)
@ApiModelProperty(value = "逻辑删除")
private java.lang.Integer isDel;
/**更新时间*/
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
@ApiModelProperty(value = "更新时间")
private java.util.Date updateTime;
/**乐观锁*/
@Excel(name = "乐观锁", width = 15)
@ApiModelProperty(value = "乐观锁")
private java.lang.Integer revision;
/**
* 分组名称
*/
@ApiModelProperty(value = "分组名称")
@TableField(exist = false)
private String groupNameStr;
/**
* 运行种类
*/
@ApiModelProperty(value = "运行种类")
@TableField(exist = false)
private String runTypeName;
/**
* 运行类别
*/
@ApiModelProperty(value = "运行类别")
@TableField(exist = false)
private String runCateName;
}

View File

@ -0,0 +1,90 @@
package org.jeecg.common.entity;
import java.io.Serializable;
import java.io.UnsupportedEncodingException;
import java.util.Date;
import java.math.BigDecimal;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.TableLogic;
import lombok.Data;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.springframework.format.annotation.DateTimeFormat;
import org.jeecgframework.poi.excel.annotation.Excel;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
* @Description: 运行状态分组
* @Author: jeecg-boot
* @Date: 2026-03-30
* @Version: V1.06
*/
@Data
@TableName("surv_device_deploy_rungroup")
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = false)
@ApiModel(value="surv_device_deploy_rungroup对象", description="运行状态分组")
public class SurvDeviceDeployRungroup implements Serializable {
private static final long serialVersionUID = 1L;
/**主键*/
@TableId(type = IdType.ASSIGN_ID)
@ApiModelProperty(value = "主键")
private java.lang.String id;
/**设备id*/
@Excel(name = "设备id", width = 15)
@ApiModelProperty(value = "设备id")
private java.lang.String deployId;
/**分组类型;button=按钮switch=两开关shifter=三开关*/
@Excel(name = "分组类型;button=按钮switch=两开关shifter=三开关", width = 15)
@ApiModelProperty(value = "分组类型;button=按钮switch=两开关shifter=三开关")
private java.lang.String groupType;
/**分组名称*/
@Excel(name = "分组名称", width = 15)
@ApiModelProperty(value = "分组名称")
private java.lang.String groupName;
/**分组备注*/
@Excel(name = "分组备注", width = 15)
@ApiModelProperty(value = "分组备注")
private java.lang.String groupNotes;
/**序号*/
@Excel(name = "序号", width = 15)
@ApiModelProperty(value = "序号")
private java.lang.Integer sortNo;
/**是否启用*/
@Excel(name = "是否启用", width = 15)
@ApiModelProperty(value = "是否启用")
private java.lang.Integer isEnable;
/**租户号*/
@Excel(name = "租户号", width = 15)
@ApiModelProperty(value = "租户号")
private java.lang.String tenantId;
/**乐观锁*/
@Excel(name = "乐观锁", width = 15)
@ApiModelProperty(value = "乐观锁")
private java.lang.Integer reVision;
/**创建人*/
@ApiModelProperty(value = "创建人")
private java.lang.String createBy;
/**创建时间*/
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
@ApiModelProperty(value = "创建时间")
private java.util.Date createTime;
/**更新人*/
@ApiModelProperty(value = "更新人")
private java.lang.String updateBy;
/**逻辑删除*/
@Excel(name = "逻辑删除", width = 15)
@ApiModelProperty(value = "逻辑删除")
private java.lang.Integer isDel;
/**更新时间*/
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
@ApiModelProperty(value = "更新时间")
private java.util.Date updateTime;
}

View File

@ -226,4 +226,8 @@ public class SurvIotVirtualDeviceModule implements Serializable {
@TableField(exist = false) @TableField(exist = false)
@ApiModelProperty("设备状态,-1=获取失败0=关闭1=开启2=异常") @ApiModelProperty("设备状态,-1=获取失败0=关闭1=开启2=异常")
private String moduleStatus; private String moduleStatus;
@TableField(exist = false)
private String value="";
} }

View File

@ -0,0 +1,9 @@
package org.jeecg.common.iot.common;
import lombok.Data;
@Data
public class DeviceRunTypeVo {
private String runTypeName;
private String runType;
}

View File

@ -0,0 +1,28 @@
package org.jeecg.common.vo.iot.common;
import lombok.Data;
import org.jeecg.common.entity.SurvDeviceDeployRelay;
import org.jeecg.common.entity.SurvDeviceDeployRelaygroup;
import org.jeecg.common.entity.SurvDeviceDeployRun;
import java.util.List;
@Data
public class DeviceRelayVo {
/**
* 控制项列表
*/
private List<SurvDeviceDeployRelaygroup> moduleList;
/**
* 控制项列表(无分组)
*/
private List<SurvDeviceDeployRelay> relayList;
/**
* 设备运行参数状态
*/
private List<SurvDeviceDeployRun> runStatus;
/**
* 最新数据时间
*/
private String dateTime;
}