From 5e3d3927221e0589b1cc119d856f50d5f4381695 Mon Sep 17 00:00:00 2001 From: zy <82248909@qq.com> Date: Mon, 30 Mar 2026 16:27:16 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E8=BF=90=E8=A1=8C=E7=8A=B6?= =?UTF-8?q?=E6=80=81=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../SurvDeviceDeployController.java | 168 +++++++----- .../SurvDeviceDeployRunController.java | 248 ++++++++++++++++++ .../SurvDeviceDeployRungroupController.java | 224 ++++++++++++++++ .../mapper/SurvDeviceDeployRelayMapper.java | 4 + .../SurvDeviceDeployRelaygroupMapper.java | 4 + .../mapper/SurvDeviceDeployRunMapper.java | 17 ++ .../SurvDeviceDeployRungroupMapper.java | 17 ++ .../xml/SurvDeviceDeployRelayMapper.xml | 7 + .../xml/SurvDeviceDeployRelaygroupMapper.xml | 30 +++ .../mapper/xml/SurvDeviceDeployRunMapper.xml | 5 + .../xml/SurvDeviceDeployRungroupMapper.xml | 5 + .../ISurvDeviceDeployRelayService.java | 4 + .../ISurvDeviceDeployRelaygroupService.java | 2 + .../service/ISurvDeviceDeployRunService.java | 20 ++ .../ISurvDeviceDeployRungroupService.java | 14 + .../service/impl/IotCommonP3ServiceImpl.java | 31 ++- .../SurvDeviceDeployRelayServiceImpl.java | 52 +++- ...SurvDeviceDeployRelaygroupServiceImpl.java | 6 + .../impl/SurvDeviceDeployRunServiceImpl.java | 64 +++++ .../SurvDeviceDeployRungroupServiceImpl.java | 28 ++ .../entity/SurvDeviceDeployRelaygroup.java | 4 + .../common/entity/SurvDeviceDeployRun.java | 149 +++++++++++ .../entity/SurvDeviceDeployRungroup.java | 90 +++++++ .../entity/SurvIotVirtualDeviceModule.java | 4 + .../common/iot/common/DeviceRunTypeVo.java | 9 + .../common/vo/iot/common/DeviceRelayVo.java | 28 ++ 26 files changed, 1158 insertions(+), 76 deletions(-) create mode 100644 zh-module-applet/zh-applet-admin/src/main/java/org/jeecg/modules/appmana/controller/SurvDeviceDeployRunController.java create mode 100644 zh-module-applet/zh-applet-admin/src/main/java/org/jeecg/modules/appmana/controller/SurvDeviceDeployRungroupController.java create mode 100644 zh-module-applet/zh-applet-admin/src/main/java/org/jeecg/modules/appmana/mapper/SurvDeviceDeployRunMapper.java create mode 100644 zh-module-applet/zh-applet-admin/src/main/java/org/jeecg/modules/appmana/mapper/SurvDeviceDeployRungroupMapper.java create mode 100644 zh-module-applet/zh-applet-admin/src/main/java/org/jeecg/modules/appmana/mapper/xml/SurvDeviceDeployRunMapper.xml create mode 100644 zh-module-applet/zh-applet-admin/src/main/java/org/jeecg/modules/appmana/mapper/xml/SurvDeviceDeployRungroupMapper.xml create mode 100644 zh-module-applet/zh-applet-admin/src/main/java/org/jeecg/modules/appmana/service/ISurvDeviceDeployRunService.java create mode 100644 zh-module-applet/zh-applet-admin/src/main/java/org/jeecg/modules/appmana/service/ISurvDeviceDeployRungroupService.java create mode 100644 zh-module-applet/zh-applet-admin/src/main/java/org/jeecg/modules/appmana/service/impl/SurvDeviceDeployRunServiceImpl.java create mode 100644 zh-module-applet/zh-applet-admin/src/main/java/org/jeecg/modules/appmana/service/impl/SurvDeviceDeployRungroupServiceImpl.java create mode 100644 zh-module-applet/zh-applet-common/src/main/java/org/jeecg/common/entity/SurvDeviceDeployRun.java create mode 100644 zh-module-applet/zh-applet-common/src/main/java/org/jeecg/common/entity/SurvDeviceDeployRungroup.java create mode 100644 zh-module-applet/zh-applet-common/src/main/java/org/jeecg/common/iot/common/DeviceRunTypeVo.java create mode 100644 zh-module-applet/zh-applet-common/src/main/java/org/jeecg/common/vo/iot/common/DeviceRelayVo.java diff --git a/zh-module-applet/zh-applet-admin/src/main/java/org/jeecg/modules/appmana/controller/SurvDeviceDeployController.java b/zh-module-applet/zh-applet-admin/src/main/java/org/jeecg/modules/appmana/controller/SurvDeviceDeployController.java index baca425..fcb1c96 100644 --- a/zh-module-applet/zh-applet-admin/src/main/java/org/jeecg/modules/appmana/controller/SurvDeviceDeployController.java +++ b/zh-module-applet/zh-applet-admin/src/main/java/org/jeecg/modules/appmana/controller/SurvDeviceDeployController.java @@ -24,15 +24,19 @@ import org.jeecg.common.system.util.JwtUtil; import org.jeecg.common.util.EntityFieldUtil; import org.jeecg.common.vo.DeviceCmdVo; 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.impl.IotCommonP3ServiceImpl; import org.jeecg.modules.appmana.utils.Iotutils; import org.jeecg.modules.appmana.utils.YSUtils; +import org.jeecg.modules.mqtt.MqttService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Arrays; import java.util.Date; @@ -51,11 +55,6 @@ import java.util.List; public class SurvDeviceDeployController extends JeecgController { @Autowired private ISurvDeviceDeployService survDeviceDeployService; - @Autowired - private IScContService scContService; - - @Autowired - private IScContExeService scContExeService; @Autowired private ISurvTransdataOrientwaterService orientwaterService; @@ -78,8 +77,15 @@ public class SurvDeviceDeployController extends JeecgController getRelayList(@RequestParam String deployId) { + @GetMapping(value = "/getRelayList") + public Result 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(); - } - } + SurvDeviceDeploy deploy = deviceDeployService.getById(deployId); + Assert.notNull(deploy,"无效设备"); + DeviceRelayVo deviceRelayVo = new DeviceRelayVo(); + 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 readType = new ArrayList<>(Arrays.asList("read_write")); - List modules = iotVirtualDeviceService.getModuleByGroup(deploy.getDeployCode(),readType); - jsonObject.put("moduleList",modules); - List readType2 = new ArrayList<>(Arrays.asList("read_only")); - List runs = iotVirtualDeviceService.getModuleByType(deploy.getDeployCode(),readType2); - jsonObject.put("runStatus",runs); + List relays = relaygroupService.getRelayByGroup(deploy.getId()); + deviceRelayVo.setModuleList(relays); + //初始化指令 + if(!relays.isEmpty()){ + for (SurvDeviceDeployRelaygroup relaygroup : relays) { + List r = relayService.initCmd(relaygroup.getRelayList()); + relaygroup.setRelayList(r); + } + } + + List runs = runService.listByDeploy(deploy.getId()); + deviceRelayVo.setRunStatus(runs); break; default: List pageList = relayService.relayList(deployId,null); - jsonObject.put("relayList",pageList); + deviceRelayVo.setRelayList(pageList); break; } - if(dateTime==null) { - jsonObject.put("dataTime", "该设备没有监测数据返回"); - }else{ - jsonObject.put("dataTime",dateTime); - } - return Result.OK(jsonObject); - } + if(dateTime==null) { + deviceRelayVo.setDateTime("该设备没有监测数据返回"); + }else{ + SimpleDateFormat time = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + deviceRelayVo.setDateTime(time.format(dateTime)); + } + return Result.OK(deviceRelayVo); + } + + + +// @GetMapping(value = "/getRelayList") +// public Result 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 readType = new ArrayList<>(Arrays.asList("read_write")); +// List modules = iotVirtualDeviceService.getModuleByGroup(deploy.getDeployCode(),readType); +// jsonObject.put("moduleList",modules); +// List readType2 = new ArrayList<>(Arrays.asList("read_only")); +// List runs = iotVirtualDeviceService.getModuleByType(deploy.getDeployCode(),readType2); +// jsonObject.put("runStatus",runs); +// break; +// default: +// List 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); +// } } diff --git a/zh-module-applet/zh-applet-admin/src/main/java/org/jeecg/modules/appmana/controller/SurvDeviceDeployRunController.java b/zh-module-applet/zh-applet-admin/src/main/java/org/jeecg/modules/appmana/controller/SurvDeviceDeployRunController.java new file mode 100644 index 0000000..7e07693 --- /dev/null +++ b/zh-module-applet/zh-applet-admin/src/main/java/org/jeecg/modules/appmana/controller/SurvDeviceDeployRunController.java @@ -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 { + @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> queryPageList(SurvDeviceDeployRun survDeviceDeployRun, + @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, + @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, + HttpServletRequest req) { + QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(survDeviceDeployRun, req.getParameterMap()); + Page page = new Page(pageNo, pageSize); + IPage 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 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 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 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 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 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 relayItemCheck(SurvDeviceDeployRun fDeviceDeployRun, HttpServletRequest request) { + + Long num = Long.valueOf(0); + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper(); + 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 relayTypeVos = new ArrayList<>(); + + + List 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); + } +} diff --git a/zh-module-applet/zh-applet-admin/src/main/java/org/jeecg/modules/appmana/controller/SurvDeviceDeployRungroupController.java b/zh-module-applet/zh-applet-admin/src/main/java/org/jeecg/modules/appmana/controller/SurvDeviceDeployRungroupController.java new file mode 100644 index 0000000..625212a --- /dev/null +++ b/zh-module-applet/zh-applet-admin/src/main/java/org/jeecg/modules/appmana/controller/SurvDeviceDeployRungroupController.java @@ -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 { + @Autowired + private ISurvDeviceDeployRungroupService survDeviceDeployRungroupService; + + /** + * 分页列表查询 + * + * @param survDeviceDeployRungroup + * @param pageNo + * @param pageSize + * @param req + * @return + */ + //@AutoLog(value = "运行状态分组-分页列表查询") + @ApiOperation(value="运行状态分组-分页列表查询", notes="运行状态分组-分页列表查询") + @GetMapping(value = "/list") + public Result> queryPageList(SurvDeviceDeployRungroup survDeviceDeployRungroup, + @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, + @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, + HttpServletRequest req) { + QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(survDeviceDeployRungroup, req.getParameterMap()); + Page page = new Page(pageNo, pageSize); + IPage 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 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 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 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 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 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 itemCheck(SurvDeviceDeployRungroup survDeviceDeployRungroup, HttpServletRequest request) { +// SurvDeviceDeployRelaygroup relayGroup = fDeviceDeployRelaygroupService.getById(fDeviceDeployRelaygroup.getDeployId()); +// Assert.notNull(relayGroup,"无效分组"); + + Long num = Long.valueOf(0); + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper(); + 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("该值不可用,系统中已存在!"); + } + } + +} diff --git a/zh-module-applet/zh-applet-admin/src/main/java/org/jeecg/modules/appmana/mapper/SurvDeviceDeployRelayMapper.java b/zh-module-applet/zh-applet-admin/src/main/java/org/jeecg/modules/appmana/mapper/SurvDeviceDeployRelayMapper.java index 9c6cb77..5457f09 100644 --- a/zh-module-applet/zh-applet-admin/src/main/java/org/jeecg/modules/appmana/mapper/SurvDeviceDeployRelayMapper.java +++ b/zh-module-applet/zh-applet-admin/src/main/java/org/jeecg/modules/appmana/mapper/SurvDeviceDeployRelayMapper.java @@ -3,6 +3,7 @@ package org.jeecg.modules.appmana.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; import org.jeecg.common.entity.SurvDeviceDeployRelay; +import org.jeecg.common.entity.SurvDeviceDeployRelaygroup; import org.jeecg.common.iot.common.DeployRelayCountVo; import java.util.List; @@ -20,4 +21,7 @@ public interface SurvDeviceDeployRelayMapper extends BaseMapper relayList(@Param("deployId") String deployId, @Param("groups") List groups); List deployRelayList(@Param("deployId") List deployId, @Param("groups") List groups); + + List getRelayByGroup(@Param("deployId")String deployId); + } diff --git a/zh-module-applet/zh-applet-admin/src/main/java/org/jeecg/modules/appmana/mapper/SurvDeviceDeployRelaygroupMapper.java b/zh-module-applet/zh-applet-admin/src/main/java/org/jeecg/modules/appmana/mapper/SurvDeviceDeployRelaygroupMapper.java index 0e638f0..75a0bf8 100644 --- a/zh-module-applet/zh-applet-admin/src/main/java/org/jeecg/modules/appmana/mapper/SurvDeviceDeployRelaygroupMapper.java +++ b/zh-module-applet/zh-applet-admin/src/main/java/org/jeecg/modules/appmana/mapper/SurvDeviceDeployRelaygroupMapper.java @@ -1,8 +1,11 @@ package org.jeecg.modules.appmana.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; import org.jeecg.common.entity.SurvDeviceDeployRelaygroup; +import java.util.List; + /** * @Description: 继电器分组 * @Author: jeecg-boot @@ -11,4 +14,5 @@ import org.jeecg.common.entity.SurvDeviceDeployRelaygroup; */ public interface SurvDeviceDeployRelaygroupMapper extends BaseMapper { + List getRelayByGroup(@Param("deployId")String deployId); } diff --git a/zh-module-applet/zh-applet-admin/src/main/java/org/jeecg/modules/appmana/mapper/SurvDeviceDeployRunMapper.java b/zh-module-applet/zh-applet-admin/src/main/java/org/jeecg/modules/appmana/mapper/SurvDeviceDeployRunMapper.java new file mode 100644 index 0000000..f4572f3 --- /dev/null +++ b/zh-module-applet/zh-applet-admin/src/main/java/org/jeecg/modules/appmana/mapper/SurvDeviceDeployRunMapper.java @@ -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 { + +} diff --git a/zh-module-applet/zh-applet-admin/src/main/java/org/jeecg/modules/appmana/mapper/SurvDeviceDeployRungroupMapper.java b/zh-module-applet/zh-applet-admin/src/main/java/org/jeecg/modules/appmana/mapper/SurvDeviceDeployRungroupMapper.java new file mode 100644 index 0000000..05994e0 --- /dev/null +++ b/zh-module-applet/zh-applet-admin/src/main/java/org/jeecg/modules/appmana/mapper/SurvDeviceDeployRungroupMapper.java @@ -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 { + +} diff --git a/zh-module-applet/zh-applet-admin/src/main/java/org/jeecg/modules/appmana/mapper/xml/SurvDeviceDeployRelayMapper.xml b/zh-module-applet/zh-applet-admin/src/main/java/org/jeecg/modules/appmana/mapper/xml/SurvDeviceDeployRelayMapper.xml index 2e307ba..ceb3c95 100644 --- a/zh-module-applet/zh-applet-admin/src/main/java/org/jeecg/modules/appmana/mapper/xml/SurvDeviceDeployRelayMapper.xml +++ b/zh-module-applet/zh-applet-admin/src/main/java/org/jeecg/modules/appmana/mapper/xml/SurvDeviceDeployRelayMapper.xml @@ -52,6 +52,7 @@ + + \ No newline at end of file diff --git a/zh-module-applet/zh-applet-admin/src/main/java/org/jeecg/modules/appmana/mapper/xml/SurvDeviceDeployRelaygroupMapper.xml b/zh-module-applet/zh-applet-admin/src/main/java/org/jeecg/modules/appmana/mapper/xml/SurvDeviceDeployRelaygroupMapper.xml index a3d9aad..67c9925 100644 --- a/zh-module-applet/zh-applet-admin/src/main/java/org/jeecg/modules/appmana/mapper/xml/SurvDeviceDeployRelaygroupMapper.xml +++ b/zh-module-applet/zh-applet-admin/src/main/java/org/jeecg/modules/appmana/mapper/xml/SurvDeviceDeployRelaygroupMapper.xml @@ -1,5 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + 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 + + + + \ No newline at end of file diff --git a/zh-module-applet/zh-applet-admin/src/main/java/org/jeecg/modules/appmana/mapper/xml/SurvDeviceDeployRunMapper.xml b/zh-module-applet/zh-applet-admin/src/main/java/org/jeecg/modules/appmana/mapper/xml/SurvDeviceDeployRunMapper.xml new file mode 100644 index 0000000..dfbb569 --- /dev/null +++ b/zh-module-applet/zh-applet-admin/src/main/java/org/jeecg/modules/appmana/mapper/xml/SurvDeviceDeployRunMapper.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/zh-module-applet/zh-applet-admin/src/main/java/org/jeecg/modules/appmana/mapper/xml/SurvDeviceDeployRungroupMapper.xml b/zh-module-applet/zh-applet-admin/src/main/java/org/jeecg/modules/appmana/mapper/xml/SurvDeviceDeployRungroupMapper.xml new file mode 100644 index 0000000..78d32ac --- /dev/null +++ b/zh-module-applet/zh-applet-admin/src/main/java/org/jeecg/modules/appmana/mapper/xml/SurvDeviceDeployRungroupMapper.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/zh-module-applet/zh-applet-admin/src/main/java/org/jeecg/modules/appmana/service/ISurvDeviceDeployRelayService.java b/zh-module-applet/zh-applet-admin/src/main/java/org/jeecg/modules/appmana/service/ISurvDeviceDeployRelayService.java index df0c45e..da40257 100644 --- a/zh-module-applet/zh-applet-admin/src/main/java/org/jeecg/modules/appmana/service/ISurvDeviceDeployRelayService.java +++ b/zh-module-applet/zh-applet-admin/src/main/java/org/jeecg/modules/appmana/service/ISurvDeviceDeployRelayService.java @@ -3,6 +3,7 @@ package org.jeecg.modules.appmana.service; import com.baomidou.mybatisplus.extension.service.IService; import org.jeecg.common.entity.SurvDeviceDeploy; import org.jeecg.common.entity.SurvDeviceDeployRelay; +import org.jeecg.common.entity.SurvDeviceDeployRelaygroup; import org.jeecg.common.iot.common.DeployRelayCountVo; import java.util.List; @@ -34,4 +35,7 @@ public interface ISurvDeviceDeployRelayService extends IService list); + + + List initCmd(List relayList); } diff --git a/zh-module-applet/zh-applet-admin/src/main/java/org/jeecg/modules/appmana/service/ISurvDeviceDeployRelaygroupService.java b/zh-module-applet/zh-applet-admin/src/main/java/org/jeecg/modules/appmana/service/ISurvDeviceDeployRelaygroupService.java index 0c6d24a..e8c3228 100644 --- a/zh-module-applet/zh-applet-admin/src/main/java/org/jeecg/modules/appmana/service/ISurvDeviceDeployRelaygroupService.java +++ b/zh-module-applet/zh-applet-admin/src/main/java/org/jeecg/modules/appmana/service/ISurvDeviceDeployRelaygroupService.java @@ -14,4 +14,6 @@ import java.util.List; public interface ISurvDeviceDeployRelaygroupService extends IService { void fills(List records); + + List getRelayByGroup(String id); } diff --git a/zh-module-applet/zh-applet-admin/src/main/java/org/jeecg/modules/appmana/service/ISurvDeviceDeployRunService.java b/zh-module-applet/zh-applet-admin/src/main/java/org/jeecg/modules/appmana/service/ISurvDeviceDeployRunService.java new file mode 100644 index 0000000..815db94 --- /dev/null +++ b/zh-module-applet/zh-applet-admin/src/main/java/org/jeecg/modules/appmana/service/ISurvDeviceDeployRunService.java @@ -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 { + + List listByDeploy(String deployId); + + void fills(List pageList); +} diff --git a/zh-module-applet/zh-applet-admin/src/main/java/org/jeecg/modules/appmana/service/ISurvDeviceDeployRungroupService.java b/zh-module-applet/zh-applet-admin/src/main/java/org/jeecg/modules/appmana/service/ISurvDeviceDeployRungroupService.java new file mode 100644 index 0000000..ffd3abe --- /dev/null +++ b/zh-module-applet/zh-applet-admin/src/main/java/org/jeecg/modules/appmana/service/ISurvDeviceDeployRungroupService.java @@ -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 { + +} diff --git a/zh-module-applet/zh-applet-admin/src/main/java/org/jeecg/modules/appmana/service/impl/IotCommonP3ServiceImpl.java b/zh-module-applet/zh-applet-admin/src/main/java/org/jeecg/modules/appmana/service/impl/IotCommonP3ServiceImpl.java index 5b3fb05..05e72ee 100644 --- a/zh-module-applet/zh-applet-admin/src/main/java/org/jeecg/modules/appmana/service/impl/IotCommonP3ServiceImpl.java +++ b/zh-module-applet/zh-applet-admin/src/main/java/org/jeecg/modules/appmana/service/impl/IotCommonP3ServiceImpl.java @@ -8,16 +8,14 @@ import org.apache.commons.lang3.StringUtils; import org.jeecg.common.constant.IotConstants; import org.jeecg.common.constant.PollutionConstants; import org.jeecg.common.constant.enums.PollutionEnum; -import org.jeecg.common.entity.ScEquZhibiao; -import org.jeecg.common.entity.SurvConfig; -import org.jeecg.common.entity.SurvDeviceDeploy; -import org.jeecg.common.entity.SurvStationInfo; +import org.jeecg.common.entity.*; import org.jeecg.common.util.DateUtilTools; import org.jeecg.common.util.EntityFieldUtil; import org.jeecg.common.vo.*; import org.jeecg.common.vo.statistic.DTOIotSummray; import org.jeecg.modules.appmana.service.IScEquZhibiaoService; import org.jeecg.modules.appmana.utils.Iotutils; +import org.jeecg.modules.mqtt.MqttService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; @@ -52,7 +50,9 @@ public class IotCommonP3ServiceImpl { @Autowired @Lazy private SurvConfigServiceImpl survConfigService; - + @Lazy + @Autowired(required = false) + private MqttService mqttService; /** * 物联网设备统计 @@ -708,4 +708,25 @@ public class IotCommonP3ServiceImpl { 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; + } } diff --git a/zh-module-applet/zh-applet-admin/src/main/java/org/jeecg/modules/appmana/service/impl/SurvDeviceDeployRelayServiceImpl.java b/zh-module-applet/zh-applet-admin/src/main/java/org/jeecg/modules/appmana/service/impl/SurvDeviceDeployRelayServiceImpl.java index 4a5e6d8..95b5d85 100644 --- a/zh-module-applet/zh-applet-admin/src/main/java/org/jeecg/modules/appmana/service/impl/SurvDeviceDeployRelayServiceImpl.java +++ b/zh-module-applet/zh-applet-admin/src/main/java/org/jeecg/modules/appmana/service/impl/SurvDeviceDeployRelayServiceImpl.java @@ -20,9 +20,11 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.time.Instant; +import java.time.ZoneId; +import java.time.format.DateTimeFormatter; +import java.util.*; +import java.util.concurrent.atomic.AtomicInteger; import java.util.regex.Matcher; import java.util.regex.Pattern; import java.util.stream.Collectors; @@ -47,6 +49,10 @@ public class SurvDeviceDeployRelayServiceImpl extends ServiceImpl list) { @@ -302,4 +308,44 @@ public class SurvDeviceDeployRelayServiceImpl extends ServiceImpl initCmd(List relayList) { + List 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; + } + } diff --git a/zh-module-applet/zh-applet-admin/src/main/java/org/jeecg/modules/appmana/service/impl/SurvDeviceDeployRelaygroupServiceImpl.java b/zh-module-applet/zh-applet-admin/src/main/java/org/jeecg/modules/appmana/service/impl/SurvDeviceDeployRelaygroupServiceImpl.java index a641ebe..951d167 100644 --- a/zh-module-applet/zh-applet-admin/src/main/java/org/jeecg/modules/appmana/service/impl/SurvDeviceDeployRelaygroupServiceImpl.java +++ b/zh-module-applet/zh-applet-admin/src/main/java/org/jeecg/modules/appmana/service/impl/SurvDeviceDeployRelaygroupServiceImpl.java @@ -41,4 +41,10 @@ public class SurvDeviceDeployRelaygroupServiceImpl extends ServiceImpl getRelayByGroup(String deployId) { + return baseMapper.getRelayByGroup(deployId); + } } diff --git a/zh-module-applet/zh-applet-admin/src/main/java/org/jeecg/modules/appmana/service/impl/SurvDeviceDeployRunServiceImpl.java b/zh-module-applet/zh-applet-admin/src/main/java/org/jeecg/modules/appmana/service/impl/SurvDeviceDeployRunServiceImpl.java new file mode 100644 index 0000000..1f3b792 --- /dev/null +++ b/zh-module-applet/zh-applet-admin/src/main/java/org/jeecg/modules/appmana/service/impl/SurvDeviceDeployRunServiceImpl.java @@ -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 implements ISurvDeviceDeployRunService { + + @Autowired + @Lazy + private SurvConfigServiceImpl configService; + @Autowired + @Lazy + private SurvDeviceDeployRungroupServiceImpl rungroupService; + + @Override + public List listByDeploy(String deployId) { + List list = lambdaQuery() + .eq(SurvDeviceDeployRun::getDeployId,deployId) + .orderByAsc(SurvDeviceDeployRun::getSortNo) + .orderByDesc(SurvDeviceDeployRun::getCreateTime) + .list(); + return list; + } + + @Override + public void fills(List pageList) { + if(pageList!=null && !pageList.isEmpty()){ + Map typeMaps = configService.getDictMapByCode("iot_run_type"); + Map cateMaps = configService.getDictMapByCode("iot_run_cate"); + List relaygroups = rungroupService.groupList(pageList.get(0).getDeployId()); + Map 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())); + } + } + } +} diff --git a/zh-module-applet/zh-applet-admin/src/main/java/org/jeecg/modules/appmana/service/impl/SurvDeviceDeployRungroupServiceImpl.java b/zh-module-applet/zh-applet-admin/src/main/java/org/jeecg/modules/appmana/service/impl/SurvDeviceDeployRungroupServiceImpl.java new file mode 100644 index 0000000..aba5a95 --- /dev/null +++ b/zh-module-applet/zh-applet-admin/src/main/java/org/jeecg/modules/appmana/service/impl/SurvDeviceDeployRungroupServiceImpl.java @@ -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 implements ISurvDeviceDeployRungroupService { + + public List groupList(String deployId) { + List list = lambdaQuery() + .eq(SurvDeviceDeployRungroup::getIsEnable,1) + .eq(SurvDeviceDeployRungroup::getDeployId,deployId) + .list(); + return list; + } +} diff --git a/zh-module-applet/zh-applet-common/src/main/java/org/jeecg/common/entity/SurvDeviceDeployRelaygroup.java b/zh-module-applet/zh-applet-common/src/main/java/org/jeecg/common/entity/SurvDeviceDeployRelaygroup.java index acd9a7f..70b18f3 100644 --- a/zh-module-applet/zh-applet-common/src/main/java/org/jeecg/common/entity/SurvDeviceDeployRelaygroup.java +++ b/zh-module-applet/zh-applet-common/src/main/java/org/jeecg/common/entity/SurvDeviceDeployRelaygroup.java @@ -12,6 +12,7 @@ import org.springframework.format.annotation.DateTimeFormat; import java.io.Serializable; import java.util.Date; +import java.util.List; /** * @Description: 继电器分组 @@ -101,4 +102,7 @@ public class SurvDeviceDeployRelaygroup implements Serializable { @TableField(exist = false) private String groupTypeName; + + @TableField(exist = false) + private List relayList; } diff --git a/zh-module-applet/zh-applet-common/src/main/java/org/jeecg/common/entity/SurvDeviceDeployRun.java b/zh-module-applet/zh-applet-common/src/main/java/org/jeecg/common/entity/SurvDeviceDeployRun.java new file mode 100644 index 0000000..2b31211 --- /dev/null +++ b/zh-module-applet/zh-applet-common/src/main/java/org/jeecg/common/entity/SurvDeviceDeployRun.java @@ -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; +} diff --git a/zh-module-applet/zh-applet-common/src/main/java/org/jeecg/common/entity/SurvDeviceDeployRungroup.java b/zh-module-applet/zh-applet-common/src/main/java/org/jeecg/common/entity/SurvDeviceDeployRungroup.java new file mode 100644 index 0000000..2e22327 --- /dev/null +++ b/zh-module-applet/zh-applet-common/src/main/java/org/jeecg/common/entity/SurvDeviceDeployRungroup.java @@ -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; +} diff --git a/zh-module-applet/zh-applet-common/src/main/java/org/jeecg/common/entity/SurvIotVirtualDeviceModule.java b/zh-module-applet/zh-applet-common/src/main/java/org/jeecg/common/entity/SurvIotVirtualDeviceModule.java index ab99589..39107d8 100644 --- a/zh-module-applet/zh-applet-common/src/main/java/org/jeecg/common/entity/SurvIotVirtualDeviceModule.java +++ b/zh-module-applet/zh-applet-common/src/main/java/org/jeecg/common/entity/SurvIotVirtualDeviceModule.java @@ -226,4 +226,8 @@ public class SurvIotVirtualDeviceModule implements Serializable { @TableField(exist = false) @ApiModelProperty("设备状态,-1=获取失败,0=关闭,1=开启,2=异常") private String moduleStatus; + + + @TableField(exist = false) + private String value=""; } diff --git a/zh-module-applet/zh-applet-common/src/main/java/org/jeecg/common/iot/common/DeviceRunTypeVo.java b/zh-module-applet/zh-applet-common/src/main/java/org/jeecg/common/iot/common/DeviceRunTypeVo.java new file mode 100644 index 0000000..d7a46aa --- /dev/null +++ b/zh-module-applet/zh-applet-common/src/main/java/org/jeecg/common/iot/common/DeviceRunTypeVo.java @@ -0,0 +1,9 @@ +package org.jeecg.common.iot.common; + +import lombok.Data; + +@Data +public class DeviceRunTypeVo { + private String runTypeName; + private String runType; +} diff --git a/zh-module-applet/zh-applet-common/src/main/java/org/jeecg/common/vo/iot/common/DeviceRelayVo.java b/zh-module-applet/zh-applet-common/src/main/java/org/jeecg/common/vo/iot/common/DeviceRelayVo.java new file mode 100644 index 0000000..0a37e0d --- /dev/null +++ b/zh-module-applet/zh-applet-common/src/main/java/org/jeecg/common/vo/iot/common/DeviceRelayVo.java @@ -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 moduleList; + /** + * 控制项列表(无分组) + */ + private List relayList; + /** + * 设备运行参数状态 + */ + private List runStatus; + /** + * 最新数据时间 + */ + private String dateTime; +}