diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/controller/SysDictController.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/controller/SysDictController.java index 72b426d..f41f1c0 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/controller/SysDictController.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/controller/SysDictController.java @@ -171,6 +171,12 @@ public class SysDictController { public Result> getDictItems(@PathVariable("dictCode") String dictCode, @RequestParam(value = "sign",required = false) String sign,HttpServletRequest request) { log.info(" dictCode : "+ dictCode); Result> result = new Result>(); + if(dictCode.contains("undefined")){ + List emptyList = new ArrayList<>(); + result.setSuccess(true); + result.setResult(emptyList); + return result; + } //update-begin-author:taoyan date:20220317 for: VUEN-222【安全机制】字典接口、online报表、online图表等接口,加一些安全机制 if(!dictQueryBlackListHandler.isPass(dictCode)){ return result.error500(dictQueryBlackListHandler.getError()); 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 4453ff9..db3541d 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 @@ -23,7 +23,9 @@ import org.jeecg.common.iot.common.DTOCamControl; import org.jeecg.common.iot.common.IotDeviceCtlResult; import org.jeecg.common.system.query.QueryGenerator; 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.modules.appmana.service.*; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; @@ -70,6 +72,9 @@ public class SurvDeviceDeployController extends JeecgController pageList = survDeviceDeployService.getDeviceListByStation(null,deviceFilterDTO.getDeployTypes()); return Result.OK(pageList); } + + + @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(); + } + } + + List pageList = relayService.relayList(deployId,null); + jsonObject.put("relayList",pageList); + + 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/SurvDeviceDeployRelayController.java b/zh-module-applet/zh-applet-admin/src/main/java/org/jeecg/modules/appmana/controller/SurvDeviceDeployRelayController.java new file mode 100644 index 0000000..a3e9955 --- /dev/null +++ b/zh-module-applet/zh-applet-admin/src/main/java/org/jeecg/modules/appmana/controller/SurvDeviceDeployRelayController.java @@ -0,0 +1,229 @@ +package org.jeecg.modules.appmana.controller; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.apache.shiro.authz.annotation.RequiresPermissions; +import org.jeecg.common.api.vo.Result; +import org.jeecg.common.aspect.annotation.AutoLog; +import org.jeecg.common.entity.SurvDeviceDeployRelay; +import org.jeecg.common.iot.common.DeviceRelayTypeVo; +import org.jeecg.common.system.base.controller.JeecgController; +import org.jeecg.common.system.query.QueryGenerator; +import org.jeecg.common.system.util.JwtUtil; +import org.jeecg.common.system.vo.DictModel; +import org.jeecg.common.vo.dict.DictVo; +import org.jeecg.modules.appmana.service.ISurvConfigService; +import org.jeecg.modules.appmana.service.ISurvDeviceDeployRelayService; +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.util.ArrayList; +import java.util.Arrays; +import java.util.Date; +import java.util.List; + + +/** + * @Description: 设备继电器 + * @Author: jeecg-boot + * @Date: 2024-12-20 + * @Version: V1.0 + */ +@Api(tags = "99. 设备继电器 id") +@RestController +@RequestMapping("/appmana/survDeviceDeployRelay") +@Slf4j +public class SurvDeviceDeployRelayController extends JeecgController { + @Autowired + private ISurvDeviceDeployRelayService fDeviceDeployRelayService; + @Autowired + private ISurvConfigService configService; + + + //@AutoLog(value = "设备继电器-分页列表查询") + @ApiOperation(value = "01. 分页查询", notes = "") + @ApiOperationSupport(order = 1) + @GetMapping(value = "/list") + public Result> queryPageList(SurvDeviceDeployRelay fDeviceDeployRelay, + @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, + @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize, + HttpServletRequest req) { + if(StringUtils.isNotBlank(fDeviceDeployRelay.getRelayId())){ + fDeviceDeployRelay.setDeployId(fDeviceDeployRelay.getRelayId()); + } + QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(fDeviceDeployRelay, req.getParameterMap()); + Page page = new Page(pageNo, pageSize); + IPage pageList = fDeviceDeployRelayService.page(page, queryWrapper); + fDeviceDeployRelayService.fills(pageList.getRecords()); + return Result.OK(pageList); + } + + + @AutoLog(value = "设备继电器-添加") + @ApiOperationSupport(order = 2) + @ApiOperation(value = "02. 添加", notes = "") + @RequiresPermissions("appmana:surv_device_deploy:add") + @PostMapping(value = "/add") + public Result add(@RequestBody SurvDeviceDeployRelay fDeviceDeployRelay, HttpServletRequest request) { + String username = JwtUtil.getUserNameByToken(request); + fDeviceDeployRelay.setCreateBy(username); + fDeviceDeployRelay.setCreateTime(new Date()); + fDeviceDeployRelayService.processGroupName(fDeviceDeployRelay); + fDeviceDeployRelayService.save(fDeviceDeployRelay); + return Result.OK("添加成功!"); + } + + @AutoLog(value = "设备继电器-编辑") + @ApiOperationSupport(order = 3) + @ApiOperation(value = "03. 编辑", notes = "") + @RequiresPermissions("appmana:surv_device_deploy:edit") + @PostMapping(value = "/edit") + public Result edit(@RequestBody SurvDeviceDeployRelay fDeviceDeployRelay, HttpServletRequest request) { + //创建、更新时间不能编辑 + fDeviceDeployRelay.setCreateTime(null); + fDeviceDeployRelay.setUpdateTime(null); + String username = JwtUtil.getUserNameByToken(request); + fDeviceDeployRelay.setUpdateBy(username); + fDeviceDeployRelayService.processGroupName(fDeviceDeployRelay); + fDeviceDeployRelayService.updateById(fDeviceDeployRelay); + return Result.OK("编辑成功!"); + } + + /** + * 通过id删除 + * + * @param id + * @return + */ + @AutoLog(value = "设备继电器-通过id删除") + @ApiOperation(value = "04.通过id删除", notes = "") + @RequiresPermissions("appmana:surv_device_deploy:delete") + @DeleteMapping(value = "/delete") + public Result delete(@RequestParam(name = "id", required = true) String id) { + fDeviceDeployRelayService.removeById(id); + return Result.OK("删除成功!"); + } + + + @AutoLog(value = "设备继电器-批量删除") + @ApiOperationSupport(order = 4) + @ApiOperation(value = "04. 批量删除", notes = "") + @RequiresPermissions("appmana:surv_device_deploy:deleteBatch") + @DeleteMapping(value = "/deleteBatch") + public Result deleteBatch(@RequestParam(name = "ids", required = true) String ids) { + this.fDeviceDeployRelayService.removeByIds(Arrays.asList(ids.split(","))); + return Result.OK("批量删除成功!"); + } + + + //@AutoLog(value = "设备继电器-通过id查询") + @ApiOperationSupport(order = 5) + @ApiOperation(value = "05. 通过id查询", notes = "") + @GetMapping(value = "/queryById") + public Result queryById(@RequestParam(name = "id", required = true) String id) { + SurvDeviceDeployRelay fDeviceDeployRelay = fDeviceDeployRelayService.getById(id); + if (fDeviceDeployRelay == null) { + return Result.error("未找到对应数据"); + } + return Result.OK(fDeviceDeployRelay); + } + + + @ApiOperationSupport(order = 6) + @ApiOperation(value = "06. 导出excel", notes = "") + @RequiresPermissions("appmana:surv_device_deploy:exportXls") + @GetMapping(value = "/exportXls") + public ModelAndView exportXls(HttpServletRequest request, SurvDeviceDeployRelay fDeviceDeployRelay) { + return super.exportXls(request, fDeviceDeployRelay, SurvDeviceDeployRelay.class, "设备继电器"); + } + + + @ApiOperationSupport(order = 7) + @ApiOperation(value = "07. 导入excel", notes = "") + @RequiresPermissions("appmana:surv_device_deploy:importExcel") + @PostMapping(value = "/importExcel") + public Result importExcel(HttpServletRequest request, HttpServletResponse response) { + return super.importExcel(request, response, SurvDeviceDeployRelay.class); + } + + @AutoLog(value = "设备继电器-同步") + @ApiOperationSupport(order = 4) + @ApiOperation(value = "04. 设备继电器-同步", notes = "") + @PostMapping(value = "/syncRelays") + public Result syncRelays(@RequestParam(name = "ids", required = true) String ids) { + boolean b = fDeviceDeployRelayService.syncRelays(Arrays.asList(ids.split(","))); + if(b){ + return Result.OK("同步成功!"); + }else{ + return Result.error("同步失败,请联系管理员!"); + } + + } + + + + + /** + * 重复校验 + * + * @param request + * @return + */ + @RequestMapping(value = "/relayItemCheck", method = RequestMethod.GET) + @ApiOperation("重复校验接口") + public Result relayItemCheck(SurvDeviceDeployRelay fDeviceDeployRelay, HttpServletRequest request) { +// SurvDeviceDeployRelay relay = fDeviceDeployRelayService.getById(fDeviceDeployRelay.getId()); +// Assert.notNull(relay,"无效继电器"); + + Long num = Long.valueOf(0); + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper(); + queryWrapper.eq(SurvDeviceDeployRelay::getRelayKey, fDeviceDeployRelay.getRelayKey()); + queryWrapper.eq(SurvDeviceDeployRelay::getDeployId, fDeviceDeployRelay.getDeployId()); + if (StringUtils.isNotBlank(fDeviceDeployRelay.getId())) { + // 编辑页面校验 + queryWrapper.ne(SurvDeviceDeployRelay::getId, fDeviceDeployRelay.getId()); + } + num = fDeviceDeployRelayService.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=风机,2=水泵,3=增氧机,4=湿帘,5=遮阳,6=开窗,7=保温,8=投食机*/ + List relayTypeVos = new ArrayList<>(); + + + List dictModels = configService.getDictByCode("iot_relay_type"); + if(!dictModels.isEmpty()){ + for (DictVo dictModel : dictModels) { + DeviceRelayTypeVo deviceRelayTypeVo = new DeviceRelayTypeVo(); + deviceRelayTypeVo.setRelayType(dictModel.getValue()); + deviceRelayTypeVo.setRelayTypeName(dictModel.getText()); + relayTypeVos.add(deviceRelayTypeVo); + } + } + + return Result.ok(relayTypeVos); + } + +} diff --git a/zh-module-applet/zh-applet-admin/src/main/java/org/jeecg/modules/appmana/controller/SurvDeviceDeployRelaygroupController.java b/zh-module-applet/zh-applet-admin/src/main/java/org/jeecg/modules/appmana/controller/SurvDeviceDeployRelaygroupController.java new file mode 100644 index 0000000..3df01a5 --- /dev/null +++ b/zh-module-applet/zh-applet-admin/src/main/java/org/jeecg/modules/appmana/controller/SurvDeviceDeployRelaygroupController.java @@ -0,0 +1,178 @@ +package org.jeecg.modules.appmana.controller; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.apache.shiro.authz.annotation.RequiresPermissions; +import org.jeecg.common.api.vo.Result; +import org.jeecg.common.aspect.annotation.AutoLog; +import org.jeecg.common.entity.SurvDeviceDeployRelaygroup; +import org.jeecg.common.system.base.controller.JeecgController; +import org.jeecg.common.system.query.QueryGenerator; +import org.jeecg.common.system.util.JwtUtil; +import org.jeecg.modules.appmana.service.ISurvDeviceDeployRelaygroupService; +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.util.Arrays; +import java.util.Date; + + +/** +* @Description: 继电器分组 +* @Author: jeecg-boot +* @Date: 2025-03-06 +* @Version: V1.0 +*/ +@Api(tags="99. 继电器分组 id") +@RestController +@RequestMapping("/appmana/survDeviceDeployRelaygroup") +@Slf4j +public class SurvDeviceDeployRelaygroupController extends JeecgController { + @Autowired + private ISurvDeviceDeployRelaygroupService fDeviceDeployRelaygroupService; + + + //@AutoLog(value = "继电器分组-分页列表查询") + @ApiOperation(value="01. 分页查询", notes="") + @ApiOperationSupport(order = 1) + @GetMapping(value = "/list") + public Result> queryPageList(SurvDeviceDeployRelaygroup fDeviceDeployRelaygroup, + @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, + @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, + HttpServletRequest req) { + QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(fDeviceDeployRelaygroup, req.getParameterMap()); + Page page = new Page(pageNo, pageSize); + IPage pageList = fDeviceDeployRelaygroupService.page(page, queryWrapper); + fDeviceDeployRelaygroupService.fills(pageList.getRecords()); + return Result.OK(pageList); + } + + + @AutoLog(value = "继电器分组-添加") + @ApiOperationSupport(order = 2) + @ApiOperation(value="02. 添加", notes="") + @RequiresPermissions("appmana:surv_device_deploy:add") + @PostMapping(value = "/add") + public Result add(@RequestBody SurvDeviceDeployRelaygroup fDeviceDeployRelaygroup, HttpServletRequest request) { + String username = JwtUtil.getUserNameByToken(request); + fDeviceDeployRelaygroup.setCreateBy(username); + fDeviceDeployRelaygroup.setCreateTime(new Date()); + fDeviceDeployRelaygroupService.save(fDeviceDeployRelaygroup); + return Result.OK("添加成功!"); + } + + @AutoLog(value = "继电器分组-编辑") + @ApiOperationSupport(order = 3) + @ApiOperation(value="03. 编辑", notes="") + @RequiresPermissions("appmana:surv_device_deploy:edit") + @PostMapping(value = "/edit") + public Result edit(@RequestBody SurvDeviceDeployRelaygroup fDeviceDeployRelaygroup, HttpServletRequest request) { + //创建、更新时间不能编辑 + fDeviceDeployRelaygroup.setCreateTime(null); + fDeviceDeployRelaygroup.setUpdateTime(null); + String username = JwtUtil.getUserNameByToken(request); + fDeviceDeployRelaygroup.setUpdateBy(username); + fDeviceDeployRelaygroupService.updateById(fDeviceDeployRelaygroup); + return Result.OK("编辑成功!"); + } + + /** + * 通过id删除 + * + * @param id + * @return + */ + @AutoLog(value = "继电器分组-通过id删除") + @ApiOperation(value="04.通过id删除", notes="") + @RequiresPermissions("appmana:surv_device_deploy:delete") + @DeleteMapping(value = "/delete") + public Result delete(@RequestParam(name="id",required=true) String id) { + fDeviceDeployRelaygroupService.removeById(id); + return Result.OK("删除成功!"); + } + + + @AutoLog(value = "继电器分组-批量删除") + @ApiOperationSupport(order = 4) + @ApiOperation(value="04. 批量删除", notes="") + @RequiresPermissions("appmana:surv_device_deploy:deleteBatch") + @DeleteMapping(value = "/deleteBatch") + public Result deleteBatch(@RequestParam(name="ids",required=true) String ids) { + this.fDeviceDeployRelaygroupService.removeByIds(Arrays.asList(ids.split(","))); + return Result.OK("批量删除成功!"); + } + + + //@AutoLog(value = "继电器分组-通过id查询") + @ApiOperationSupport(order = 5) + @ApiOperation(value="05. 通过id查询", notes="") + @GetMapping(value = "/queryById") + public Result queryById(@RequestParam(name="id",required=true) String id) { + SurvDeviceDeployRelaygroup fDeviceDeployRelaygroup = fDeviceDeployRelaygroupService.getById(id); + if(fDeviceDeployRelaygroup==null) { + return Result.error("未找到对应数据"); + } + return Result.OK(fDeviceDeployRelaygroup); + } + + + @ApiOperationSupport(order = 6) + @ApiOperation(value="06. 导出excel", notes="") + @RequiresPermissions("appmana:surv_device_deploy:exportXls") + @GetMapping(value = "/exportXls") + public ModelAndView exportXls(HttpServletRequest request, SurvDeviceDeployRelaygroup fDeviceDeployRelaygroup) { + return super.exportXls(request, fDeviceDeployRelaygroup, SurvDeviceDeployRelaygroup.class, "继电器分组"); + } + + + @ApiOperationSupport(order = 7) + @ApiOperation(value="07. 导入excel", notes="") + @RequiresPermissions("appmana:surv_device_deploy:importExcel") + @PostMapping(value = "/importExcel") + public Result importExcel(HttpServletRequest request, HttpServletResponse response) { + return super.importExcel(request, response, SurvDeviceDeployRelaygroup.class); + } + + + + /** + * 重复校验 + * + * @param request + * @return + */ + @RequestMapping(value = "/itemCheck", method = RequestMethod.GET) + @ApiOperation("重复校验接口") + public Result itemCheck(SurvDeviceDeployRelaygroup fDeviceDeployRelaygroup, HttpServletRequest request) { +// SurvDeviceDeployRelaygroup relayGroup = fDeviceDeployRelaygroupService.getById(fDeviceDeployRelaygroup.getDeployId()); +// Assert.notNull(relayGroup,"无效分组"); + + Long num = Long.valueOf(0); + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper(); + queryWrapper.eq(SurvDeviceDeployRelaygroup::getGroupName, fDeviceDeployRelaygroup.getGroupName()); + queryWrapper.eq(SurvDeviceDeployRelaygroup::getDeployId, fDeviceDeployRelaygroup.getDeployId()); + if (StringUtils.isNotBlank(fDeviceDeployRelaygroup.getId())) { + // 编辑页面校验 + queryWrapper.ne(SurvDeviceDeployRelaygroup::getId, fDeviceDeployRelaygroup.getId()); + } + num = fDeviceDeployRelaygroupService.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/controller/SurvIotManufacturerConfigController.java b/zh-module-applet/zh-applet-admin/src/main/java/org/jeecg/modules/appmana/controller/SurvIotManufacturerConfigController.java new file mode 100644 index 0000000..4fa2b05 --- /dev/null +++ b/zh-module-applet/zh-applet-admin/src/main/java/org/jeecg/modules/appmana/controller/SurvIotManufacturerConfigController.java @@ -0,0 +1,158 @@ +package org.jeecg.modules.appmana.controller; + +import cn.hutool.json.JSONUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.apache.shiro.authz.annotation.RequiresPermissions; +import org.jeecg.common.api.vo.Result; +import org.jeecg.common.aspect.annotation.AutoLog; +import org.jeecg.common.entity.SurvIotManufacturerConfig; +import org.jeecg.common.system.base.controller.JeecgController; +import org.jeecg.common.system.query.QueryGenerator; +import org.jeecg.common.system.util.JwtUtil; +import org.jeecg.modules.appmana.service.ISurvIotManufacturerConfigService; +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.util.Arrays; +import java.util.Date; + + + /** + * @Description: 厂商配置 + * @Author: jeecg-boot + * @Date: 2025-03-06 + * @Version: V1.0 + */ +@Api(tags="99. 厂商配置 id") +@RestController +@RequestMapping("/appmana/survIotManufacturerConfig") +@Slf4j +public class SurvIotManufacturerConfigController extends JeecgController { + @Autowired + private ISurvIotManufacturerConfigService fIotManufacturerConfigService; + + + //@AutoLog(value = "厂商配置-分页列表查询") + @ApiOperation(value="01. 分页查询", notes="") + @ApiOperationSupport(order = 1) + @GetMapping(value = "/list") + public Result> queryPageList(SurvIotManufacturerConfig survIotManufacturerConfig, + @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, + @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, + HttpServletRequest req) { + QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(survIotManufacturerConfig, req.getParameterMap()); + Page page = new Page(pageNo, pageSize); + IPage pageList = fIotManufacturerConfigService.page(page, queryWrapper); + if (!pageList.getRecords().isEmpty()) { + pageList.getRecords().forEach(item -> { + if (item.getConfigJson() != null) { + item.setConfigJsonStr(JSONUtil.toJsonStr(item.getConfigJson())); + } + }); + } + return Result.OK(pageList); + } + + + @AutoLog(value = "厂商配置-添加") + @ApiOperationSupport(order = 2) + @ApiOperation(value="02. 添加", notes="") + @RequiresPermissions("appmana:surv_device_deploy:add") + @PostMapping(value = "/add") + public Result add(@RequestBody SurvIotManufacturerConfig survIotManufacturerConfig, HttpServletRequest request) { + String username = JwtUtil.getUserNameByToken(request); + survIotManufacturerConfig.setCreateBy(username); + survIotManufacturerConfig.setCreateTime(new Date()); + if (StringUtils.isNotBlank(survIotManufacturerConfig.getConfigJsonStr())) { + survIotManufacturerConfig.setConfigJson(JSONUtil.parseObj(survIotManufacturerConfig.getConfigJsonStr())); + } + fIotManufacturerConfigService.save(survIotManufacturerConfig); + return Result.OK("添加成功!"); + } + + @AutoLog(value = "厂商配置-编辑") + @ApiOperationSupport(order = 3) + @ApiOperation(value="03. 编辑", notes="") + @RequiresPermissions("appmana:surv_device_deploy:edit") + @PostMapping(value = "/edit") + public Result edit(@RequestBody SurvIotManufacturerConfig survIotManufacturerConfig, HttpServletRequest request) { + //创建、更新时间不能编辑 + survIotManufacturerConfig.setCreateTime(null); + survIotManufacturerConfig.setUpdateTime(null); + String username = JwtUtil.getUserNameByToken(request); + survIotManufacturerConfig.setUpdateBy(username); + if (StringUtils.isNotBlank(survIotManufacturerConfig.getConfigJsonStr())) { + survIotManufacturerConfig.setConfigJson(JSONUtil.parseObj(survIotManufacturerConfig.getConfigJsonStr())); + } + fIotManufacturerConfigService.updateById(survIotManufacturerConfig); + return Result.OK("编辑成功!"); + } + + /** + * 通过id删除 + * + * @param id + * @return + */ + @AutoLog(value = "厂商配置-通过id删除") + @ApiOperation(value="04.通过id删除", notes="") + @RequiresPermissions("appmana:surv_device_deploy:delete") + @DeleteMapping(value = "/delete") + public Result delete(@RequestParam(name="id",required=true) String id) { + fIotManufacturerConfigService.removeById(id); + return Result.OK("删除成功!"); + } + + + @AutoLog(value = "厂商配置-批量删除") + @ApiOperationSupport(order = 4) + @ApiOperation(value="04. 批量删除", notes="") + @RequiresPermissions("appmana:surv_device_deploy:deleteBatch") + @DeleteMapping(value = "/deleteBatch") + public Result deleteBatch(@RequestParam(name="ids",required=true) String ids) { + this.fIotManufacturerConfigService.removeByIds(Arrays.asList(ids.split(","))); + return Result.OK("批量删除成功!"); + } + + + //@AutoLog(value = "厂商配置-通过id查询") + @ApiOperationSupport(order = 5) + @ApiOperation(value="05. 通过id查询", notes="") + @GetMapping(value = "/queryById") + public Result queryById(@RequestParam(name="id",required=true) String id) { + SurvIotManufacturerConfig survIotManufacturerConfig = fIotManufacturerConfigService.getById(id); + if(survIotManufacturerConfig ==null) { + return Result.error("未找到对应数据"); + } + return Result.OK(survIotManufacturerConfig); + } + + + @ApiOperationSupport(order = 6) + @ApiOperation(value="06. 导出excel", notes="") + @RequiresPermissions("appmana:surv_device_deploy:exportXls") + @GetMapping(value = "/exportXls") + public ModelAndView exportXls(HttpServletRequest request, SurvIotManufacturerConfig survIotManufacturerConfig) { + return super.exportXls(request, survIotManufacturerConfig, SurvIotManufacturerConfig.class, "厂商配置"); + } + + + @ApiOperationSupport(order = 7) + @ApiOperation(value="07. 导入excel", notes="") + @RequiresPermissions("appmana:surv_device_deploy:importExcel") + @PostMapping(value = "/importExcel") + public Result importExcel(HttpServletRequest request, HttpServletResponse response) { + return super.importExcel(request, response, SurvIotManufacturerConfig.class); + } + +} diff --git a/zh-module-applet/zh-applet-admin/src/main/java/org/jeecg/modules/appmana/controller/SurvIotManufacturerInfoController.java b/zh-module-applet/zh-applet-admin/src/main/java/org/jeecg/modules/appmana/controller/SurvIotManufacturerInfoController.java new file mode 100644 index 0000000..73fb3fe --- /dev/null +++ b/zh-module-applet/zh-applet-admin/src/main/java/org/jeecg/modules/appmana/controller/SurvIotManufacturerInfoController.java @@ -0,0 +1,149 @@ +package org.jeecg.modules.appmana.controller; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.apache.shiro.authz.annotation.RequiresPermissions; +import org.jeecg.common.api.vo.Result; +import org.jeecg.common.aspect.annotation.AutoLog; +import org.jeecg.common.entity.SurvIotManufacturerInfo; +import org.jeecg.common.system.base.controller.JeecgController; +import org.jeecg.common.system.query.QueryGenerator; +import org.jeecg.common.system.util.JwtUtil; + +import org.jeecg.modules.appmana.service.ISurvIotManufacturerInfoService; +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.util.Arrays; +import java.util.Date; + + + /** + * @Description: 厂家信息 + * @Author: jeecg-boot + * @Date: 2025-03-06 + * @Version: V1.0 + */ +@Api(tags="99. 厂家信息 id") +@RestController +@RequestMapping("/appmana/survIotManufacturerInfo") +@Slf4j +public class SurvIotManufacturerInfoController extends JeecgController { + @Autowired + private ISurvIotManufacturerInfoService fIotManufacturerInfoService; + + + //@AutoLog(value = "厂家信息-分页列表查询") + @ApiOperation(value="01. 分页查询", notes="") + @ApiOperationSupport(order = 1) + @GetMapping(value = "/list") + public Result> queryPageList(SurvIotManufacturerInfo fIotManufacturerInfo, + @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, + @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, + HttpServletRequest req) { + if(StringUtils.isNotBlank(fIotManufacturerInfo.getMaName())){ + fIotManufacturerInfo.setMaName("*"+fIotManufacturerInfo.getMaName()+"*"); + } + + QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(fIotManufacturerInfo, req.getParameterMap()); + Page page = new Page(pageNo, pageSize); + IPage pageList = fIotManufacturerInfoService.page(page, queryWrapper); + return Result.OK(pageList); + } + + + @AutoLog(value = "厂家信息-添加") + @ApiOperationSupport(order = 2) + @ApiOperation(value="02. 添加", notes="") + @RequiresPermissions("appmana:surv_device_deploy:add") + @PostMapping(value = "/add") + public Result add(@RequestBody SurvIotManufacturerInfo fIotManufacturerInfo, HttpServletRequest request) { + String username = JwtUtil.getUserNameByToken(request); + fIotManufacturerInfo.setCreateBy(username); + fIotManufacturerInfo.setCreateTime(new Date()); + fIotManufacturerInfoService.save(fIotManufacturerInfo); + return Result.OK("添加成功!"); + } + + @AutoLog(value = "厂家信息-编辑") + @ApiOperationSupport(order = 3) + @ApiOperation(value="03. 编辑", notes="") + @RequiresPermissions("appmana:surv_device_deploy:edit") + @PostMapping(value = "/edit") + public Result edit(@RequestBody SurvIotManufacturerInfo fIotManufacturerInfo, HttpServletRequest request) { + //创建、更新时间不能编辑 + fIotManufacturerInfo.setCreateTime(null); + fIotManufacturerInfo.setUpdateTime(null); + String username = JwtUtil.getUserNameByToken(request); + fIotManufacturerInfo.setUpdateBy(username); + fIotManufacturerInfoService.updateById(fIotManufacturerInfo); + return Result.OK("编辑成功!"); + } + + /** + * 通过id删除 + * + * @param id + * @return + */ + @AutoLog(value = "厂家信息-通过id删除") + @ApiOperation(value="04.通过id删除", notes="") + @RequiresPermissions("appmana:surv_device_deploy:delete") + @DeleteMapping(value = "/delete") + public Result delete(@RequestParam(name="id",required=true) String id) { + fIotManufacturerInfoService.removeById(id); + return Result.OK("删除成功!"); + } + + + @AutoLog(value = "厂家信息-批量删除") + @ApiOperationSupport(order = 4) + @ApiOperation(value="04. 批量删除", notes="") + @RequiresPermissions("appmana:surv_device_deploy:deleteBatch") + @DeleteMapping(value = "/deleteBatch") + public Result deleteBatch(@RequestParam(name="ids",required=true) String ids) { + this.fIotManufacturerInfoService.removeByIds(Arrays.asList(ids.split(","))); + return Result.OK("批量删除成功!"); + } + + + //@AutoLog(value = "厂家信息-通过id查询") + @ApiOperationSupport(order = 5) + @ApiOperation(value="05. 通过id查询", notes="") + @GetMapping(value = "/queryById") + public Result queryById(@RequestParam(name="id",required=true) String id) { + SurvIotManufacturerInfo fIotManufacturerInfo = fIotManufacturerInfoService.getById(id); + if(fIotManufacturerInfo==null) { + return Result.error("未找到对应数据"); + } + return Result.OK(fIotManufacturerInfo); + } + + + @ApiOperationSupport(order = 6) + @ApiOperation(value="06. 导出excel", notes="") + @RequiresPermissions("appmana:surv_device_deploy:exportXls") + @GetMapping(value = "/exportXls") + public ModelAndView exportXls(HttpServletRequest request, SurvIotManufacturerInfo fIotManufacturerInfo) { + return super.exportXls(request, fIotManufacturerInfo, SurvIotManufacturerInfo.class, "厂家信息"); + } + + + @ApiOperationSupport(order = 7) + @ApiOperation(value="07. 导入excel", notes="") + @RequiresPermissions("appmana:surv_device_deploy:importExcel") + @PostMapping(value = "/importExcel") + public Result importExcel(HttpServletRequest request, HttpServletResponse response) { + return super.importExcel(request, response, SurvIotManufacturerInfo.class); + } + +} 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 new file mode 100644 index 0000000..9c6cb77 --- /dev/null +++ b/zh-module-applet/zh-applet-admin/src/main/java/org/jeecg/modules/appmana/mapper/SurvDeviceDeployRelayMapper.java @@ -0,0 +1,23 @@ +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.iot.common.DeployRelayCountVo; + +import java.util.List; + +/** + * @Description: 设备继电器 + * @Author: jeecg-boot + * @Date: 2024-12-20 + * @Version: V1.0 + */ +public interface SurvDeviceDeployRelayMapper extends BaseMapper { + + List getItemCounts(@Param("depList") List depList); + + List relayList(@Param("deployId") String deployId, @Param("groups") List groups); + + List deployRelayList(@Param("deployId") List deployId, @Param("groups") List groups); +} 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 new file mode 100644 index 0000000..0e638f0 --- /dev/null +++ b/zh-module-applet/zh-applet-admin/src/main/java/org/jeecg/modules/appmana/mapper/SurvDeviceDeployRelaygroupMapper.java @@ -0,0 +1,14 @@ +package org.jeecg.modules.appmana.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.jeecg.common.entity.SurvDeviceDeployRelaygroup; + +/** + * @Description: 继电器分组 + * @Author: jeecg-boot + * @Date: 2025-03-06 + * @Version: V1.0 + */ +public interface SurvDeviceDeployRelaygroupMapper extends BaseMapper { + +} diff --git a/zh-module-applet/zh-applet-admin/src/main/java/org/jeecg/modules/appmana/mapper/SurvIotManufacturerConfigMapper.java b/zh-module-applet/zh-applet-admin/src/main/java/org/jeecg/modules/appmana/mapper/SurvIotManufacturerConfigMapper.java new file mode 100644 index 0000000..cd55f10 --- /dev/null +++ b/zh-module-applet/zh-applet-admin/src/main/java/org/jeecg/modules/appmana/mapper/SurvIotManufacturerConfigMapper.java @@ -0,0 +1,14 @@ +package org.jeecg.modules.appmana.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.jeecg.common.entity.SurvIotManufacturerConfig; + +/** + * @Description: 厂商配置 + * @Author: jeecg-boot + * @Date: 2025-03-06 + * @Version: V1.0 + */ +public interface SurvIotManufacturerConfigMapper extends BaseMapper { + +} diff --git a/zh-module-applet/zh-applet-admin/src/main/java/org/jeecg/modules/appmana/mapper/SurvIotManufacturerInfoMapper.java b/zh-module-applet/zh-applet-admin/src/main/java/org/jeecg/modules/appmana/mapper/SurvIotManufacturerInfoMapper.java new file mode 100644 index 0000000..f196804 --- /dev/null +++ b/zh-module-applet/zh-applet-admin/src/main/java/org/jeecg/modules/appmana/mapper/SurvIotManufacturerInfoMapper.java @@ -0,0 +1,14 @@ +package org.jeecg.modules.appmana.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.jeecg.common.entity.SurvIotManufacturerInfo; + +/** + * @Description: 厂家信息 + * @Author: jeecg-boot + * @Date: 2025-03-06 + * @Version: V1.0 + */ +public interface SurvIotManufacturerInfoMapper extends BaseMapper { + +} diff --git a/zh-module-applet/zh-applet-admin/src/main/java/org/jeecg/modules/appmana/mapper/xml/SurvDeviceDeployMapper.xml b/zh-module-applet/zh-applet-admin/src/main/java/org/jeecg/modules/appmana/mapper/xml/SurvDeviceDeployMapper.xml index 26f0ff5..2a8fc44 100644 --- a/zh-module-applet/zh-applet-admin/src/main/java/org/jeecg/modules/appmana/mapper/xml/SurvDeviceDeployMapper.xml +++ b/zh-module-applet/zh-applet-admin/src/main/java/org/jeecg/modules/appmana/mapper/xml/SurvDeviceDeployMapper.xml @@ -138,4 +138,10 @@ #{id} + + \ No newline at end of file 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 new file mode 100644 index 0000000..2e307ba --- /dev/null +++ b/zh-module-applet/zh-applet-admin/src/main/java/org/jeecg/modules/appmana/mapper/xml/SurvDeviceDeployRelayMapper.xml @@ -0,0 +1,102 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ID,DEPLOY_ID,RELAY_CATE,RELAY_TYPE,RELAY_KEY,RELAY_NAME,RELAY_NOTES,RELAY_MARK,REGISTER_TYPE,REGISTER_NUM,REGISTER_CMD_ON,REGISTER_CMD_OFF,REGISTER_CMD_STOP,REGISTER_ON,REGISTER_OFF,REGISTER_STOP,IS_ENABLE,IS_ABLE_REMOTE,GROUP_ID,GROUP_CODE,GROUP_NAME,SORT_NO,TENANT_ID,RE_VISION,CREATE_BY,CREATE_TIME,UPDATE_BY,IS_DEL,UPDATE_TIME,REVISION,ENTITY_FIELD + + + + + + + + + + + + + + \ 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 new file mode 100644 index 0000000..a3d9aad --- /dev/null +++ b/zh-module-applet/zh-applet-admin/src/main/java/org/jeecg/modules/appmana/mapper/xml/SurvDeviceDeployRelaygroupMapper.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/SurvIotManufacturerConfigMapper.xml b/zh-module-applet/zh-applet-admin/src/main/java/org/jeecg/modules/appmana/mapper/xml/SurvIotManufacturerConfigMapper.xml new file mode 100644 index 0000000..84ca7c2 --- /dev/null +++ b/zh-module-applet/zh-applet-admin/src/main/java/org/jeecg/modules/appmana/mapper/xml/SurvIotManufacturerConfigMapper.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/SurvIotManufacturerInfoMapper.xml b/zh-module-applet/zh-applet-admin/src/main/java/org/jeecg/modules/appmana/mapper/xml/SurvIotManufacturerInfoMapper.xml new file mode 100644 index 0000000..e5f277e --- /dev/null +++ b/zh-module-applet/zh-applet-admin/src/main/java/org/jeecg/modules/appmana/mapper/xml/SurvIotManufacturerInfoMapper.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/ISurvConfigService.java b/zh-module-applet/zh-applet-admin/src/main/java/org/jeecg/modules/appmana/service/ISurvConfigService.java index df20c3f..1b25147 100644 --- a/zh-module-applet/zh-applet-admin/src/main/java/org/jeecg/modules/appmana/service/ISurvConfigService.java +++ b/zh-module-applet/zh-applet-admin/src/main/java/org/jeecg/modules/appmana/service/ISurvConfigService.java @@ -10,6 +10,7 @@ import org.springframework.cache.annotation.Cacheable; import java.util.LinkedHashMap; import java.util.List; +import java.util.Map; /** * @Description: 业务参数配置表 @@ -32,4 +33,6 @@ public interface ISurvConfigService extends IService { List getDictByCode(String applyConfigType); IPage pages(Page page, SurvConfig survConfig); + + Map getDictMapByCode(String dictCode); } 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 new file mode 100644 index 0000000..df0c45e --- /dev/null +++ b/zh-module-applet/zh-applet-admin/src/main/java/org/jeecg/modules/appmana/service/ISurvDeviceDeployRelayService.java @@ -0,0 +1,37 @@ +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.iot.common.DeployRelayCountVo; + +import java.util.List; + +/** + * @Description: 设备继电器 + * @Author: jeecg-boot + * @Date: 2024-12-20 + * @Version: V1.0 + */ +public interface ISurvDeviceDeployRelayService extends IService { + + boolean syncRelays(List list); + + List getItemCounts(List depIdList); + + /*延迟低版本*/ + SurvDeviceDeploy addStatus(SurvDeviceDeploy deploy, List relays); + + /*初版1分钟延迟版本*/ + void addStatus2(SurvDeviceDeploy deploy, List relays); + + List relayList(String deployId, List groups); + + List deployRelayList(List deployId, List groupId); + + void addGroupName(List records); + + void processGroupName(SurvDeviceDeployRelay fDeviceDeployRelay); + + void fills(List list); +} 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 new file mode 100644 index 0000000..0c6d24a --- /dev/null +++ b/zh-module-applet/zh-applet-admin/src/main/java/org/jeecg/modules/appmana/service/ISurvDeviceDeployRelaygroupService.java @@ -0,0 +1,17 @@ +package org.jeecg.modules.appmana.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import org.jeecg.common.entity.SurvDeviceDeployRelaygroup; + +import java.util.List; + +/** + * @Description: 继电器分组 + * @Author: jeecg-boot + * @Date: 2025-03-06 + * @Version: V1.0 + */ +public interface ISurvDeviceDeployRelaygroupService extends IService { + + void fills(List records); +} diff --git a/zh-module-applet/zh-applet-admin/src/main/java/org/jeecg/modules/appmana/service/ISurvIotManufacturerConfigService.java b/zh-module-applet/zh-applet-admin/src/main/java/org/jeecg/modules/appmana/service/ISurvIotManufacturerConfigService.java new file mode 100644 index 0000000..99b4096 --- /dev/null +++ b/zh-module-applet/zh-applet-admin/src/main/java/org/jeecg/modules/appmana/service/ISurvIotManufacturerConfigService.java @@ -0,0 +1,14 @@ +package org.jeecg.modules.appmana.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import org.jeecg.common.entity.SurvIotManufacturerConfig; + +/** + * @Description: 厂商配置 + * @Author: jeecg-boot + * @Date: 2025-03-06 + * @Version: V1.0 + */ +public interface ISurvIotManufacturerConfigService extends IService { + SurvIotManufacturerConfig getConfigByProtocol(String protocolCode); +} diff --git a/zh-module-applet/zh-applet-admin/src/main/java/org/jeecg/modules/appmana/service/ISurvIotManufacturerInfoService.java b/zh-module-applet/zh-applet-admin/src/main/java/org/jeecg/modules/appmana/service/ISurvIotManufacturerInfoService.java new file mode 100644 index 0000000..c25c400 --- /dev/null +++ b/zh-module-applet/zh-applet-admin/src/main/java/org/jeecg/modules/appmana/service/ISurvIotManufacturerInfoService.java @@ -0,0 +1,14 @@ +package org.jeecg.modules.appmana.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import org.jeecg.common.entity.SurvIotManufacturerInfo; + +/** + * @Description: 厂家信息 + * @Author: jeecg-boot + * @Date: 2025-03-06 + * @Version: V1.0 + */ +public interface ISurvIotManufacturerInfoService extends IService { + +} diff --git a/zh-module-applet/zh-applet-admin/src/main/java/org/jeecg/modules/appmana/service/impl/SurvConfigServiceImpl.java b/zh-module-applet/zh-applet-admin/src/main/java/org/jeecg/modules/appmana/service/impl/SurvConfigServiceImpl.java index 3319123..f9f6eef 100644 --- a/zh-module-applet/zh-applet-admin/src/main/java/org/jeecg/modules/appmana/service/impl/SurvConfigServiceImpl.java +++ b/zh-module-applet/zh-applet-admin/src/main/java/org/jeecg/modules/appmana/service/impl/SurvConfigServiceImpl.java @@ -17,10 +17,7 @@ import org.springframework.stereotype.Service; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import java.util.Collections; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.stream.Collectors; /** @@ -127,4 +124,14 @@ public class SurvConfigServiceImpl extends ServiceImpl getDictMapByCode(String dictCode) { + List list = getDictByCode(dictCode); + Map map = new HashMap<>(); + if(!list.isEmpty()){ + list.forEach(item->map.put(item.getValue(),item.getText())); + } + return map; + } } 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 new file mode 100644 index 0000000..7392f23 --- /dev/null +++ b/zh-module-applet/zh-applet-admin/src/main/java/org/jeecg/modules/appmana/service/impl/SurvDeviceDeployRelayServiceImpl.java @@ -0,0 +1,307 @@ +package org.jeecg.modules.appmana.service.impl; + +import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.IdUtil; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.apache.commons.lang3.StringUtils; + +import org.jeecg.common.constant.IotConstants; +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 org.jeecg.common.iot.xph.XphDeviceInfoVo; +import org.jeecg.common.iot.xph.XphDeviceNewestDataDetailVo; +import org.jeecg.common.iot.xph.XphDeviceNewestDataRelVo; +import org.jeecg.common.iot.xph.XphDeviceNewestDataVo; +import org.jeecg.modules.appmana.mapper.SurvDeviceDeployRelayMapper; +import org.jeecg.modules.appmana.service.ISurvDeviceDeployRelayService; +import org.jeecg.modules.appmana.utils.XphUtils; +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.util.regex.Matcher; +import java.util.regex.Pattern; +import java.util.stream.Collectors; + +/** + * @Description: 设备继电器 + * @Author: jeecg-boot + * @Date: 2024-12-20 + * @Version: V1.0 + */ +@Service +public class SurvDeviceDeployRelayServiceImpl extends ServiceImpl implements ISurvDeviceDeployRelayService { + @Autowired + @Lazy + private SurvDeviceDeployServiceImpl deviceDeployService; + @Autowired + @Lazy + private SurvDeviceDeployRelaygroupServiceImpl relaygroupService; + @Autowired + @Lazy + private XphUtils xphUtils; + @Autowired + @Lazy + private SurvConfigServiceImpl configService; + + @Override + public boolean syncRelays(List list) { + if (!list.isEmpty()) { + List deploys = deviceDeployService.listByIds(list); + if (!deploys.isEmpty()) { + for (SurvDeviceDeploy deploy : deploys) { + XphDeviceInfoVo xphDeviceInfoVo = xphUtils.getDeviceInfo(deploy); + if (xphDeviceInfoVo != null) { + deviceDeployService.updDeployRelay(deploy, xphDeviceInfoVo); + } + } + return true; + } + } + + return false; + } + + public List getItemCounts(List depList) { + return baseMapper.getItemCounts(depList); + } + + /*延迟低版本*/ + @Override + public SurvDeviceDeploy addStatus(SurvDeviceDeploy deploy, List relays) { + if (!relays.isEmpty()) { + switch (deploy.getProtocolCode()) { + case IotConstants.xph_v2: + deploy.setRelayList(processXphRelays(deploy, relays)); + break; + case IotConstants.lhviot_standard: + //蓝海http逻辑 todo + break; + } + } + return deploy; + } + + + + /*初版1分钟延迟版本*/ + @Override + public void addStatus2(SurvDeviceDeploy deploy, List relays) { + if (!relays.isEmpty()) { + XphDeviceNewestDataVo deviceNewestDataVo = xphUtils.getDeviceNewestData(deploy); + Map relayMap = new HashMap<>(); + Map relayDesMap = new HashMap<>(); + if (deviceNewestDataVo != null) { + if (deviceNewestDataVo.getList() != null) { + XphDeviceNewestDataDetailVo xphDeviceNewestDataDetailVo = deviceNewestDataVo.getList().get(0); + if (xphDeviceNewestDataDetailVo != null) { + if (xphDeviceNewestDataDetailVo.getRelLists() != null && !xphDeviceNewestDataDetailVo.getRelLists().isEmpty()) { + for (XphDeviceNewestDataRelVo rel : xphDeviceNewestDataDetailVo.getRelLists()) { + String relayNum = rel.getKey().replace("j", ""); + Integer status = null; + String statusDes = ""; + if ("开".equals(rel.getValue())) { + status = 1; + } else if ("关".equals(rel.getValue())) { + status = 0; + } else { + status = 2; + } + statusDes = rel.getValue(); + if (StringUtils.isBlank(statusDes)) { + statusDes = "设备异常"; + } + Integer keyNum = Integer.parseInt(relayNum) - 1; + relayMap.put(keyNum + "", status); + relayDesMap.put(keyNum + "", statusDes); + } + } + } + } + } + for (SurvDeviceDeployRelay relay : relays) { + relay.setRelayValue(relayMap.get(relay.getRelayKey())); + relay.setRelayValueDes(relayDesMap.get(relay.getRelayKey())); + } + } + } + + + public List getAllItem(List depIdList) { + + List relays = lambdaQuery() + .in(SurvDeviceDeployRelay::getDeployId, depIdList) + .eq(SurvDeviceDeployRelay::getIsDel, 0) + .orderByAsc(SurvDeviceDeployRelay::getSortNo) + .orderByDesc(SurvDeviceDeployRelay::getCreateTime) + .list(); + return relays; + } + + public List getAllItemById(String deployId) { + List relays = lambdaQuery() + .eq(SurvDeviceDeployRelay::getDeployId, deployId) + .eq(SurvDeviceDeployRelay::getIsDel, 0) + .orderByAsc(SurvDeviceDeployRelay::getSortNo) + .orderByDesc(SurvDeviceDeployRelay::getCreateTime) + .list(); + return relays; + } + + @Override + public List relayList(String deployId, List groups) { + return baseMapper.relayList(deployId, groups); + } + + @Override + public List deployRelayList(List deployId, List groupId) { + return baseMapper.deployRelayList(deployId, groupId); + } + + @Override + public void addGroupName(List records) { + if(!records.isEmpty()){ + List groupIds = records.stream().map(SurvDeviceDeployRelay::getGroupId).collect(Collectors.toList()); + if(!groupIds.isEmpty()){ + List relaygroups = relaygroupService.listByIds(groupIds); + if(!relaygroups.isEmpty()){ + Map map = new HashMap<>(); + relaygroups.forEach(item->{ + map.put(item.getId(),item.getGroupName()); + }); + + for (SurvDeviceDeployRelay record : records) { + record.setGroupNameStr(map.get(record.getGroupId())); + } + } + } + + } + } + + @Override + public void processGroupName(SurvDeviceDeployRelay fDeviceDeployRelay) { + SurvDeviceDeploy deploy = deviceDeployService.getById(fDeviceDeployRelay.getDeployId()); + Assert.notNull(deploy,"设备已失效"); + if(StringUtils.isNotBlank(fDeviceDeployRelay.getGroupId())){ + if(containsChinese(fDeviceDeployRelay.getGroupId())){//如果含有中文,说明为新增 + String groupId = IdUtil.getSnowflakeNextIdStr();; + SurvDeviceDeployRelaygroup fDeviceDeployRelaygroup = new SurvDeviceDeployRelaygroup(); + fDeviceDeployRelaygroup.setId(groupId); + fDeviceDeployRelaygroup.setDeployId(deploy.getId()); + fDeviceDeployRelaygroup.setGroupName(fDeviceDeployRelay.getGroupId()); + fDeviceDeployRelaygroup.setGroupType("switch"); + fDeviceDeployRelaygroup.setGroupNotes("分组_"+fDeviceDeployRelay.getGroupId()); + fDeviceDeployRelaygroup.setSortNo(fDeviceDeployRelay.getSortNo());//暂时使用继电器的排序 + fDeviceDeployRelaygroup.setTenantId(deploy.getTenantId()); + relaygroupService.save(fDeviceDeployRelaygroup); + //最终设置分组id + fDeviceDeployRelay.setGroupId(groupId); + }else{//如果是直接传入分组id + //如果更改了分组id,检查是否需要移除当前的空分组 + if(StringUtils.isNotBlank(fDeviceDeployRelay.getId())){ + SurvDeviceDeployRelay oldRelay = getById(fDeviceDeployRelay.getId()); + if(oldRelay.getGroupId()!=null && !oldRelay.getGroupId().equals(fDeviceDeployRelay.getGroupId())){//更换了分组id + proceDelGroup(oldRelay.getGroupId(),fDeviceDeployRelay.getId()); + } + } + } + }else{ + if(StringUtils.isNotBlank(fDeviceDeployRelay.getId())){ + SurvDeviceDeployRelay oldRelay = getById(fDeviceDeployRelay.getId()); + if(oldRelay.getGroupId()!=null){//移除了之前的分组,则检查是否清理分组 + proceDelGroup(oldRelay.getGroupId(),fDeviceDeployRelay.getId()); + } + } + } + } + + + /** + * 检查是否需要清理分组 + */ + public void proceDelGroup(String groupId,String curRelayId){ + //检查分组是否已空 + long counts = lambdaQuery() + .eq(SurvDeviceDeployRelay::getGroupId, groupId) + .ne(SurvDeviceDeployRelay::getId, curRelayId) + .count(); + if (counts == 0) { + relaygroupService.lambdaUpdate().eq(SurvDeviceDeployRelaygroup::getId, groupId).remove(); + } + } + + + /** + * 判断字符串是否包含中文字符 + * + * @param input 输入字符串 + * @return 是否包含中文字符 + */ + public static boolean containsChinese(String input) { + String regex = "[\u4e00-\u9fa5]"; // 匹配中文字符的正则表达式 + Pattern pattern = Pattern.compile(regex); + Matcher matcher = pattern.matcher(input); + return matcher.find(); // 如果找到中文字符,返回 true + } + + + public List processXphRelays(SurvDeviceDeploy deploy,List relays){ + List relayStatusList = xphUtils.getDeviceRelayStatus(deploy); + Map relayMap = new HashMap<>(); + Map relayDesMap = new HashMap<>(); + if (relayStatusList != null) { + int relayNum = 1; + for (String re : relayStatusList) { + Integer status = null; + String statusDes = ""; + if ("open".equals(re)) { + statusDes = "开"; + status = 1; + } else if ("close".equals(re)) { + statusDes = "关"; + status = 0; + } else { + statusDes = "异常"; + status = 2; + } + Integer keyNum = relayNum - 1; + relayMap.put(keyNum + "", status); + relayDesMap.put(keyNum + "", statusDes); + relayNum++; + } + + } + for (SurvDeviceDeployRelay relay : relays) { + relay.setRelayValue(relayMap.get(relay.getRelayKey())); + relay.setRelayValueDes(relayDesMap.get(relay.getRelayKey())); + relay.setIsOnline(deploy.getIsOnline()); + } + return relays; + } + + @Override + public void fills(List list) { + if(list!=null && !list.isEmpty()){ + Map typeMaps = configService.getDictMapByCode("iot_relay_type"); + Map cateMaps = configService.getDictMapByCode("iot_relay_cate"); + List relaygroups = relaygroupService.groupList(list.get(0).getDeployId()); + Map groupMaps = new HashMap<>(); + if(!relaygroups.isEmpty()){ + relaygroups.forEach(item->groupMaps.put(item.getId(),item.getGroupName())); + } + + for (SurvDeviceDeployRelay survDeviceDeployRelay : list) { + survDeviceDeployRelay.setRelayCateName(cateMaps.get(survDeviceDeployRelay.getRelayCate()+"")); + survDeviceDeployRelay.setRelayTypeName(typeMaps.get(survDeviceDeployRelay.getRelayType()+"")); + survDeviceDeployRelay.setGroupNameStr(groupMaps.get(survDeviceDeployRelay.getGroupId())); + } + } + } + +} 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 new file mode 100644 index 0000000..a641ebe --- /dev/null +++ b/zh-module-applet/zh-applet-admin/src/main/java/org/jeecg/modules/appmana/service/impl/SurvDeviceDeployRelaygroupServiceImpl.java @@ -0,0 +1,44 @@ +package org.jeecg.modules.appmana.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.jeecg.common.entity.SurvDeviceDeployRelaygroup; +import org.jeecg.modules.appmana.mapper.SurvDeviceDeployRelaygroupMapper; +import org.jeecg.modules.appmana.service.ISurvDeviceDeployRelaygroupService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Map; + +/** + * @Description: 继电器分组 + * @Author: jeecg-boot + * @Date: 2025-03-06 + * @Version: V1.0 + */ +@Service +public class SurvDeviceDeployRelaygroupServiceImpl extends ServiceImpl implements ISurvDeviceDeployRelaygroupService { + + @Autowired + @Lazy + private SurvConfigServiceImpl configService; + + @Override + public void fills(List records) { + if(records!=null && !records.isEmpty()){ + Map maps = configService.getDictMapByCode("iot_relay_group_type"); + for (SurvDeviceDeployRelaygroup record : records) { + record.setGroupTypeName(maps.get(record.getGroupType())); + } + } + } + public List groupList(String deployId) { + List list = lambdaQuery() + .eq(SurvDeviceDeployRelaygroup::getIsEnable,1) + .eq(SurvDeviceDeployRelaygroup::getDeployId,deployId) + .list(); + return list; + } + +} diff --git a/zh-module-applet/zh-applet-admin/src/main/java/org/jeecg/modules/appmana/service/impl/SurvDeviceDeployServiceImpl.java b/zh-module-applet/zh-applet-admin/src/main/java/org/jeecg/modules/appmana/service/impl/SurvDeviceDeployServiceImpl.java index f2be601..284bf94 100644 --- a/zh-module-applet/zh-applet-admin/src/main/java/org/jeecg/modules/appmana/service/impl/SurvDeviceDeployServiceImpl.java +++ b/zh-module-applet/zh-applet-admin/src/main/java/org/jeecg/modules/appmana/service/impl/SurvDeviceDeployServiceImpl.java @@ -1,7 +1,9 @@ package org.jeecg.modules.appmana.service.impl; import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.IdUtil; import cn.hutool.json.JSONUtil; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import lombok.extern.slf4j.Slf4j; @@ -11,10 +13,14 @@ import org.jeecg.common.constant.PollutionConstants; import org.jeecg.common.constant.enums.DeviceDeployEnum; import org.jeecg.common.entity.*; import org.jeecg.common.constant.enums.IotManufacturerEnum; +import org.jeecg.common.exception.JeecgBootException; import org.jeecg.common.iot.renke.DataItem; import org.jeecg.common.iot.renke.RegisterItem; import org.jeecg.common.iot.renke.RenkeDataRealTimeDetail; import org.jeecg.common.iot.renke.RenkeDataRealTimePack; +import org.jeecg.common.iot.rule.ManufacturerConfigRelayGroupVo; +import org.jeecg.common.iot.rule.ManufacturerConfigVo; +import org.jeecg.common.iot.xph.XphDeviceInfoVo; import org.jeecg.common.iot.xph.XphDeviceQueryDataVo; import org.jeecg.common.iot.xph.XphdeviceQueryDetailVo; import org.jeecg.modules.appmana.mapper.SurvDeviceDeployMapper; @@ -29,10 +35,7 @@ import org.springframework.stereotype.Service; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import java.util.ArrayList; -import java.util.Collections; -import java.util.Date; -import java.util.List; +import java.util.*; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -65,6 +68,13 @@ public class SurvDeviceDeployServiceImpl extends ServiceImpl pages(IPage page, SurvDeviceDeploy survDeviceDeploy) { @@ -452,4 +462,153 @@ public class SurvDeviceDeployServiceImpl extends ServiceImpl saves = new ArrayList<>(); + Map motorIdMap = new HashMap<>(); + int groupCount = 0; + List relaygroups = new ArrayList<>(); + for (int i = 0; i < names.length; i++) { + String relayName = names[i].trim(); + String relayNum = nums[i].trim(); + if (!relayName.isEmpty() && !"-".equals(relayName)) { + SurvDeviceDeployRelay fDeviceDeployRelay = new SurvDeviceDeployRelay(); + fDeviceDeployRelay.setDeployId(fDeviceDeploy.getId()); + fDeviceDeployRelay.setRelayName(relayName); + fDeviceDeployRelay.setRelayKey(i + ""); + fDeviceDeployRelay.setRelayNotes(relayName); + fDeviceDeployRelay.setSortNo(i); + fDeviceDeployRelay.setTenantId(fDeviceDeploy.getTenantId()); + //检查此继电器是否需要id + SurvDeviceDeployRelaygroup relaygroup = processRelayGroup(manufacturerConfigVo,fDeviceDeployRelay,motorIdMap,groupCount); + if(relaygroup!=null){ + groupCount = relaygroup.getSortNo(); + relaygroups.add(relaygroup); + } + Integer rNum = null; + try { + rNum = Integer.parseInt(relayNum); + } catch (NumberFormatException e) { + e.printStackTrace(); + } + fDeviceDeployRelay.setRelayType(rNum); + saves.add(fDeviceDeployRelay); + } + } + if (!saves.isEmpty()) { + boolean b = relayService.saveBatch(saves); + if(b){ + if(!relaygroups.isEmpty()){ + relaygroupService.saveBatch(relaygroups); + } + } + } + } + } + + + private SurvDeviceDeployRelaygroup processRelayGroup(ManufacturerConfigVo manufacturerConfigVo,SurvDeviceDeployRelay relay,Map motorIdMap,int groupCount){ + SurvDeviceDeployRelaygroup fDeviceDeployRelaygroup = null; + if(manufacturerConfigVo.getRelayGroup()!=null){ + if(!manufacturerConfigVo.getRelayGroup().isEmpty()){ + for (ManufacturerConfigRelayGroupVo manufacturerConfigRelayGroupVo : manufacturerConfigVo.getRelayGroup()) { + String[] keys = manufacturerConfigRelayGroupVo.getKeywords().split(","); + if(matchKeywords(relay.getRelayName(),manufacturerConfigRelayGroupVo.getPattern())){//如果继电器匹配了正则表达式,如果有多个逻辑则后面的覆盖前面的 + //替换掉关键侧,剩余分组名称 + String relayGroupCn = replaceAllInArray(removeNonChinese(relay.getRelayName()),keys,""); + String groupId = motorIdMap.get(relayGroupCn); + if(StringUtils.isBlank(groupId)){ + groupId = IdUtil.getSnowflakeNextIdStr(); + motorIdMap.put(relayGroupCn,groupId); + groupCount = groupCount + 1; + fDeviceDeployRelaygroup = new SurvDeviceDeployRelaygroup(); + fDeviceDeployRelaygroup.setId(groupId); + fDeviceDeployRelaygroup.setDeployId(relay.getDeployId()); + fDeviceDeployRelaygroup.setGroupName(relayGroupCn); + fDeviceDeployRelaygroup.setGroupType(manufacturerConfigRelayGroupVo.getRelayGroupType()); + fDeviceDeployRelaygroup.setGroupNotes("分组_"+relayGroupCn); + fDeviceDeployRelaygroup.setSortNo(groupCount); + fDeviceDeployRelaygroup.setTenantId(relay.getTenantId()); + } +// relay.setGroupName(relayGroupCn);//不再保存分组名,直接使用id获取 + relay.setGroupId(groupId); + } + } + } + } + return fDeviceDeployRelaygroup; + } + + /** + * 判断字符串中是否包含指定的中文关键词 + * + * @param input 输入字符串 + * @param patternStr 需要匹配的中文关键词 + * @return 是否包含关键词 + */ + public static boolean matchKeywords(String input, String patternStr) { + // 构建正则表达式,匹配关键词 + Pattern pattern = Pattern.compile(patternStr); + Matcher matcher = pattern.matcher(input); + return matcher.matches(); + } + + public String replaceAllInArray(String input, String[] array, String replacement) { + for (String item : array) { + input = input.replace(item, replacement); // 替换所有匹配项 + } + return input; + } + + /** + * 移除所有非中文字符 + * @param input + * @return + */ + public static String removeNonChinese(String input) { + return input.replaceAll("[^\\u4e00-\\u9fa5]", ""); + } + } diff --git a/zh-module-applet/zh-applet-admin/src/main/java/org/jeecg/modules/appmana/service/impl/SurvIotManufacturerConfigServiceImpl.java b/zh-module-applet/zh-applet-admin/src/main/java/org/jeecg/modules/appmana/service/impl/SurvIotManufacturerConfigServiceImpl.java new file mode 100644 index 0000000..f719b24 --- /dev/null +++ b/zh-module-applet/zh-applet-admin/src/main/java/org/jeecg/modules/appmana/service/impl/SurvIotManufacturerConfigServiceImpl.java @@ -0,0 +1,25 @@ +package org.jeecg.modules.appmana.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.jeecg.common.constant.IotConstants; +import org.jeecg.common.entity.SurvIotManufacturerConfig; +import org.jeecg.modules.appmana.mapper.SurvIotManufacturerConfigMapper; +import org.jeecg.modules.appmana.service.ISurvIotManufacturerConfigService; +import org.springframework.cache.annotation.Cacheable; +import org.springframework.stereotype.Service; + +/** + * @Description: 厂商配置 + * @Author: jeecg-boot + * @Date: 2025-03-06 + * @Version: V1.0 + */ +@Service +public class SurvIotManufacturerConfigServiceImpl extends ServiceImpl implements ISurvIotManufacturerConfigService { + @Override + @Cacheable(value = IotConstants.iot_protocol_cache, key = "#protocolCode", unless = "#result == null ") + public SurvIotManufacturerConfig getConfigByProtocol(String protocolCode) { + SurvIotManufacturerConfig config = lambdaQuery().eq(SurvIotManufacturerConfig::getProtocolCode, protocolCode).last("limit 1").one(); + return config; + } +} diff --git a/zh-module-applet/zh-applet-admin/src/main/java/org/jeecg/modules/appmana/service/impl/SurvIotManufacturerInfoServiceImpl.java b/zh-module-applet/zh-applet-admin/src/main/java/org/jeecg/modules/appmana/service/impl/SurvIotManufacturerInfoServiceImpl.java new file mode 100644 index 0000000..2f144f6 --- /dev/null +++ b/zh-module-applet/zh-applet-admin/src/main/java/org/jeecg/modules/appmana/service/impl/SurvIotManufacturerInfoServiceImpl.java @@ -0,0 +1,18 @@ +package org.jeecg.modules.appmana.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.jeecg.common.entity.SurvIotManufacturerInfo; +import org.jeecg.modules.appmana.mapper.SurvIotManufacturerInfoMapper; +import org.jeecg.modules.appmana.service.ISurvIotManufacturerInfoService; +import org.springframework.stereotype.Service; + +/** + * @Description: 厂家信息 + * @Author: jeecg-boot + * @Date: 2025-03-06 + * @Version: V1.0 + */ +@Service +public class SurvIotManufacturerInfoServiceImpl extends ServiceImpl implements ISurvIotManufacturerInfoService { + +} diff --git a/zh-module-applet/zh-applet-common/src/main/java/org/jeecg/common/constant/IotConstants.java b/zh-module-applet/zh-applet-common/src/main/java/org/jeecg/common/constant/IotConstants.java index 5d80a02..5d49160 100644 --- a/zh-module-applet/zh-applet-common/src/main/java/org/jeecg/common/constant/IotConstants.java +++ b/zh-module-applet/zh-applet-common/src/main/java/org/jeecg/common/constant/IotConstants.java @@ -264,4 +264,20 @@ public interface IotConstants { */ String Data_Types_Nsp="nsp"; + /** + * 设备关 + */ + String DEVICE_CLOSE="0"; + + /** + * 设备开 + */ + String DEVICE_ON="1"; + + + /** + * 设备停 + */ + String DEVICE_STOP="2"; + } diff --git a/zh-module-applet/zh-applet-common/src/main/java/org/jeecg/common/entity/SurvDeviceDeploy.java b/zh-module-applet/zh-applet-common/src/main/java/org/jeecg/common/entity/SurvDeviceDeploy.java index 45f28e2..ee43dde 100644 --- a/zh-module-applet/zh-applet-common/src/main/java/org/jeecg/common/entity/SurvDeviceDeploy.java +++ b/zh-module-applet/zh-applet-common/src/main/java/org/jeecg/common/entity/SurvDeviceDeploy.java @@ -205,6 +205,20 @@ public class SurvDeviceDeploy implements Serializable { @TableField(typeHandler = JsonTypeHandler.class, jdbcType = JdbcType.VARCHAR, value = "DEVICE_CONFIG") private cn.hutool.json.JSONObject deviceConfig; + /** + * 继电器名称 + */ + @Excel(name = "继电器名称", width = 15) + @ApiModelProperty(value = "继电器名称") + private java.lang.String relayName; + + /** + * 继电器编号 + */ + @Excel(name = "继电器编号", width = 15) + @ApiModelProperty(value = "继电器编号") + private java.lang.String relayNum; + @ApiModelProperty("1#球阀状态") @TableField(exist = false) @@ -276,6 +290,9 @@ public class SurvDeviceDeploy implements Serializable { @TableField(exist = false) private String configJsonStr; + @TableField(exist = false) + private List relayList; + public String[] getDepCodeArr() { if(StringUtils.isNotBlank(depCodes)) { return depCodes.split(","); diff --git a/zh-module-applet/zh-applet-common/src/main/java/org/jeecg/common/entity/SurvDeviceDeployRelay.java b/zh-module-applet/zh-applet-common/src/main/java/org/jeecg/common/entity/SurvDeviceDeployRelay.java new file mode 100644 index 0000000..3061e47 --- /dev/null +++ b/zh-module-applet/zh-applet-common/src/main/java/org/jeecg/common/entity/SurvDeviceDeployRelay.java @@ -0,0 +1,304 @@ +package org.jeecg.common.entity; + +import com.baomidou.mybatisplus.annotation.*; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +import org.jeecgframework.poi.excel.annotation.Excel; +import org.springframework.format.annotation.DateTimeFormat; + +import java.io.Serializable; + +/** + * @Description: 设备继电器 + * @Author: jeecg-boot + * @Date: 2024-12-20 + * @Version: V1.06 + */ +@Data +@TableName("surv_device_deploy_relay") +@Accessors(chain = true) +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "设备继电器", description = "设备继电器") +public class SurvDeviceDeployRelay implements Serializable { + private static final long serialVersionUID = 1L; + + + /** + * 主键 + */ + @TableId(type = IdType.ASSIGN_ID) + @ApiModelProperty(value = "主键") + private String id; + + /** + * 设备ID + */ + @Excel(name = "设备ID", width = 15) + @ApiModelProperty(value = "设备ID") + private String deployId; + + + /** + * 1=常规 + */ + @Excel(name = "继电器类别", width = 15) + @ApiModelProperty(value = "继电器类别") + private Integer relayCate; + + /*1=风机,2=水泵,3=增氧机,4=湿帘,5=遮阳,6=开窗,7=保温,8=投食机*/ + @Excel(name = "继电器种类", width = 15) + @ApiModelProperty(value = "继电器种类") + private Integer relayType; + + /** + * 继电器key/编号 + */ + @Excel(name = "继电器key/编号", width = 15) + @ApiModelProperty(value = "继电器key/编号") + private String relayKey; + + /** + * 继电器名称 + */ + @Excel(name = "继电器名称", width = 15) + @ApiModelProperty(value = "继电器名称") + private String relayName; + + /** + * 继电器备注 + */ + @Excel(name = "继电器备注", width = 15) + @ApiModelProperty(value = "继电器备注") + private String relayNotes; + + /** + * 继电器标记 + */ + @Excel(name = "继电器标记", width = 15) + @ApiModelProperty(value = "继电器标记") + private String relayMark; + + + /** + * 寄存器类型 + */ + @Excel(name = "寄存器类型", width = 15) + @ApiModelProperty(value = "寄存器类型") + private Integer registerType; + + + + /** + * 寄存器序号 通讯地址 + */ + @Excel(name = "寄存器序号(通讯地址)", width = 15) + @ApiModelProperty(value = "寄存器序号(通讯地址)") + private Integer registerNum; + + /** + * 开指令 + */ + @Excel(name = "开指令", width = 15) + @ApiModelProperty(value = "开指令") + private String registerCmdOn; + + /** + * 关指令 + */ + @Excel(name = "关指令", width = 15) + @ApiModelProperty(value = "关指令") + private String registerCmdOff; + + /** + * 停指令 + */ + @Excel(name = "停指令", width = 15) + @ApiModelProperty(value = "停指令") + private String registerCmdStop; + + /** + * 回执状态开 + */ + @Excel(name = "回执状态开", width = 15) + @ApiModelProperty(value = "回执状态开") + private String registerOn; + + /** + * 回执状态关 + */ + @Excel(name = "回执状态关", width = 15) + @ApiModelProperty(value = "回执状态关") + private String registerOff; + + /** + * 回执状态停 + */ + @Excel(name = "回执状态停", width = 15) + @ApiModelProperty(value = "回执状态停") + private String registerStop; + + /** + * 实体对应字段 + */ + @Excel(name = "实体对应字段", width = 15) + @ApiModelProperty(value = "实体对应字段") + private String entityField; + + /** + * 是否启用 + */ + @Excel(name = "是否启用", width = 15) + @ApiModelProperty(value = "是否启用") + private Integer isEnable; + + /** + * 是否可远程控制 + */ + @Excel(name = "是否可远程控制", width = 15) + @ApiModelProperty(value = "是否可远程控制") + private Integer isAbleRemote; + + /** + * 分组ID + */ + @Excel(name = "分组ID", width = 15) + @ApiModelProperty(value = "分组ID") + @TableField(updateStrategy = FieldStrategy.IGNORED) + private String groupId; + + /** + * 分组CODE + */ + @Excel(name = "分组CODE", width = 15) + @ApiModelProperty(value = "分组CODE") + private String groupCode; + + /** + * 分组名称 + */ + @Excel(name = "分组名称", width = 15) + @ApiModelProperty(value = "分组名称") + private String groupName; + + @Excel(name = "排序号", width = 15) + @ApiModelProperty(value = "排序号") + private Integer sortNo; + + /** + * 租户号 + */ + @Excel(name = "租户号", width = 15) + @ApiModelProperty(value = "租户号") + private String tenantId; + + /** + * 乐观锁 + */ + @Excel(name = "乐观锁", width = 15) + @ApiModelProperty(value = "乐观锁") + private Integer reVision; + + /** + * 创建人 + */ + @ApiModelProperty(value = "创建人") + private 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 String updateBy; + + /** + * 逻辑删除 + */ + @Excel(name = "逻辑删除", width = 15) + @ApiModelProperty(value = "逻辑删除") + private 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 Integer revision; + + @TableField(exist = false) + private Integer relayValue; + + @TableField(exist = false) + private String relayValueDes; + + @TableField(exist = false) + private Integer isOnline; + + @TableField(exist = false) + private SurvDeviceDeploy deploy; + + /** + * 指令优先级 + */ + @TableField(exist = false) + private Integer priorityLevel; + + /** + * 指令类别,开关停 + */ + @TableField(exist = false) + private String cmdType; + + /** + * 顶保温等特殊设备反转效果后的备注 + */ + @TableField(exist = false) + private String extLog; + + /** + * 临时参数 + */ + @TableField(exist = false) + private String relayId; + + + /** + * 分组名称 + */ + @ApiModelProperty(value = "分组名称") + @TableField(exist = false) + private String groupNameStr; + + /** + * 继电器种类 + */ + @ApiModelProperty(value = "继电器种类") + @TableField(exist = false) + private String relayTypeName; + + /** + * 继电器类别 + */ + @ApiModelProperty(value = "继电器类别") + @TableField(exist = false) + private String relayCateName; +} 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 new file mode 100644 index 0000000..acd9a7f --- /dev/null +++ b/zh-module-applet/zh-applet-common/src/main/java/org/jeecg/common/entity/SurvDeviceDeployRelaygroup.java @@ -0,0 +1,104 @@ +package org.jeecg.common.entity; + +import com.baomidou.mybatisplus.annotation.*; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +import org.jeecgframework.poi.excel.annotation.Excel; +import org.springframework.format.annotation.DateTimeFormat; + +import java.io.Serializable; +import java.util.Date; + +/** + * @Description: 继电器分组 + * @Author: jeecg-boot + * @Date: 2025-03-06 + * @Version: V1.06 + */ +@Data +@TableName("surv_device_deploy_relaygroup") +@Accessors(chain = true) +@EqualsAndHashCode(callSuper = false) +@ApiModel(value="继电器分组", description="继电器分组") +public class SurvDeviceDeployRelaygroup implements Serializable { + private static final long serialVersionUID = 1L; + + + /**主键*/ + @TableId(type = IdType.ASSIGN_ID) + @ApiModelProperty(value = "主键") + private String id; + + /**设备id*/ + @Excel(name = "设备id", width = 15) + @ApiModelProperty(value = "设备id") + private String deployId; + + /**分组类型;button=按钮,switch=两开关,shifter=三开关*/ + @Excel(name = "分组类型;button=按钮,switch=两开关,shifter=三开关", width = 15) + @ApiModelProperty(value = "分组类型;button=按钮,switch=两开关,shifter=三开关") + private String groupType; + + /**分组名称*/ + @Excel(name = "分组名称", width = 15) + @ApiModelProperty(value = "分组名称") + private String groupName; + + /**分组备注*/ + @Excel(name = "分组备注", width = 15) + @ApiModelProperty(value = "分组备注") + private String groupNotes; + + /**序号*/ + @Excel(name = "序号", width = 15) + @ApiModelProperty(value = "序号") + private Integer sortNo; + + /**是否启用*/ + @Excel(name = "是否启用", width = 15) + @ApiModelProperty(value = "是否启用") + private Integer isEnable; + + /**租户号*/ + @Excel(name = "租户号", width = 15) + @ApiModelProperty(value = "租户号") + private String tenantId; + + /**乐观锁*/ + @Excel(name = "乐观锁", width = 15) + @ApiModelProperty(value = "乐观锁") + private Integer reVision; + + /**创建人*/ + @ApiModelProperty(value = "创建人") + private String createBy; + + /**创建时间*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @ApiModelProperty(value = "创建时间") + private Date createTime; + + /**更新人*/ + @ApiModelProperty(value = "更新人") + private String updateBy; + + /**逻辑删除*/ + @Excel(name = "逻辑删除", width = 15) + @ApiModelProperty(value = "逻辑删除") + @TableLogic + private Integer isDel; + + /**更新时间*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @ApiModelProperty(value = "更新时间") + private Date updateTime; + + @TableField(exist = false) + private String groupTypeName; +} diff --git a/zh-module-applet/zh-applet-common/src/main/java/org/jeecg/common/entity/SurvIotManufacturerConfig.java b/zh-module-applet/zh-applet-common/src/main/java/org/jeecg/common/entity/SurvIotManufacturerConfig.java new file mode 100644 index 0000000..c1d2d08 --- /dev/null +++ b/zh-module-applet/zh-applet-common/src/main/java/org/jeecg/common/entity/SurvIotManufacturerConfig.java @@ -0,0 +1,99 @@ +package org.jeecg.common.entity; + +import cn.hutool.json.JSONObject; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +import org.apache.ibatis.type.JdbcType; +import org.jeecg.common.mybatis.typehandler.JsonTypeHandler; +import org.jeecgframework.poi.excel.annotation.Excel; +import org.springframework.format.annotation.DateTimeFormat; + +import java.io.Serializable; +import java.util.Date; +/** + * @Description: 厂商配置 + * @Author: jeecg-boot + * @Date: 2025-03-06 + * @Version: V1.06 + */ +@Data +@TableName("surv_iot_manufacturer_config") +@Accessors(chain = true) +@EqualsAndHashCode(callSuper = false) +@ApiModel(value="厂商配置", description="厂商配置") +public class SurvIotManufacturerConfig implements Serializable { + private static final long serialVersionUID = 1L; + + + /**主键*/ + @TableId(type = IdType.ASSIGN_ID) + @ApiModelProperty(value = "主键") + private String id; + + /**厂家ID*/ + @Excel(name = "厂家ID", width = 15) + @ApiModelProperty(value = "厂家ID") + private String maId; + + /**协议编号*/ + @Excel(name = "协议编号", width = 15) + @ApiModelProperty(value = "协议编号") + private String protocolCode; + + /**配置类型;1=模型配置,2=其他*/ + @Excel(name = "配置类型;1=模型配置,2=其他", width = 15) + @ApiModelProperty(value = "配置类型;1=模型配置,2=其他") + private Integer configType; + + /**配置*/ + @Excel(name = "配置", width = 15) + @ApiModelProperty(value = "配置") + @TableField(typeHandler = JsonTypeHandler.class, jdbcType = JdbcType.VARCHAR, value = "CONFIG_JSON") + private JSONObject configJson; + + /**租户号*/ + @Excel(name = "租户号", width = 15) + @ApiModelProperty(value = "租户号") + private String tenantId; + + /**乐观锁*/ + @Excel(name = "乐观锁", width = 15) + @ApiModelProperty(value = "乐观锁") + private Integer reVision; + + /**创建人*/ + @ApiModelProperty(value = "创建人") + private String createBy; + + /**创建时间*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @ApiModelProperty(value = "创建时间") + private Date createTime; + + /**更新人*/ + @ApiModelProperty(value = "更新人") + private String updateBy; + + /**逻辑删除*/ + @Excel(name = "逻辑删除", width = 15) + @ApiModelProperty(value = "逻辑删除") + private Integer isDel; + + /**更新时间*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @ApiModelProperty(value = "更新时间") + private Date updateTime; + + @TableField(exist = false) + private String configJsonStr; +} diff --git a/zh-module-applet/zh-applet-common/src/main/java/org/jeecg/common/entity/SurvIotManufacturerInfo.java b/zh-module-applet/zh-applet-common/src/main/java/org/jeecg/common/entity/SurvIotManufacturerInfo.java new file mode 100644 index 0000000..d9bda36 --- /dev/null +++ b/zh-module-applet/zh-applet-common/src/main/java/org/jeecg/common/entity/SurvIotManufacturerInfo.java @@ -0,0 +1,103 @@ +package org.jeecg.common.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +import org.jeecgframework.poi.excel.annotation.Excel; +import org.springframework.format.annotation.DateTimeFormat; + +import java.io.Serializable; +import java.util.Date; +/** + * @Description: 厂家信息 + * @Author: jeecg-boot + * @Date: 2025-03-06 + * @Version: V1.06 + */ +@Data +@TableName("f_iot_manufacturer_info") +@Accessors(chain = true) +@EqualsAndHashCode(callSuper = false) +@ApiModel(value="厂家信息", description="厂家信息") +public class SurvIotManufacturerInfo implements Serializable { + private static final long serialVersionUID = 1L; + + + /**主键*/ + @TableId(type = IdType.ASSIGN_ID) + @ApiModelProperty(value = "主键") + private String id; + + /**厂家名称*/ + @Excel(name = "厂家名称", width = 15) + @ApiModelProperty(value = "厂家名称") + private String maName; + + /**厂家编号*/ + @Excel(name = "厂家编号", width = 15) + @ApiModelProperty(value = "厂家编号") + private String maCode; + + /**厂家名称地址*/ + @Excel(name = "厂家名称地址", width = 15) + @ApiModelProperty(value = "厂家名称地址") + private String maAddr; + + /**联系电话*/ + @Excel(name = "联系电话", width = 15) + @ApiModelProperty(value = "联系电话") + private String maTel; + + /**备注*/ + @Excel(name = "备注", width = 15) + @ApiModelProperty(value = "备注") + private String maNotes; + + /** + * 排序 + */ + @Excel(name = "排序", width = 15) + @ApiModelProperty(value = "排序") + private Integer sortNo; + + /**租户号*/ + @Excel(name = "租户号", width = 15) + @ApiModelProperty(value = "租户号") + private String tenantId; + + /**乐观锁*/ + @Excel(name = "乐观锁", width = 15) + @ApiModelProperty(value = "乐观锁") + private Integer reVision; + + /**创建人*/ + @ApiModelProperty(value = "创建人") + private String createBy; + + /**创建时间*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @ApiModelProperty(value = "创建时间") + private Date createTime; + + /**更新人*/ + @ApiModelProperty(value = "更新人") + private String updateBy; + + /**逻辑删除*/ + @Excel(name = "逻辑删除", width = 15) + @ApiModelProperty(value = "逻辑删除") + private Integer isDel; + + /**更新时间*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @ApiModelProperty(value = "更新时间") + private Date updateTime; +} diff --git a/zh-module-applet/zh-applet-common/src/main/java/org/jeecg/common/iot/common/DeployRelayCountVo.java b/zh-module-applet/zh-applet-common/src/main/java/org/jeecg/common/iot/common/DeployRelayCountVo.java new file mode 100644 index 0000000..6b676fc --- /dev/null +++ b/zh-module-applet/zh-applet-common/src/main/java/org/jeecg/common/iot/common/DeployRelayCountVo.java @@ -0,0 +1,9 @@ +package org.jeecg.common.iot.common; + +import lombok.Data; + +@Data +public class DeployRelayCountVo { + private String deployId; + private Integer relayCounts; +} diff --git a/zh-module-applet/zh-applet-common/src/main/java/org/jeecg/common/iot/common/DeviceRelayTypeVo.java b/zh-module-applet/zh-applet-common/src/main/java/org/jeecg/common/iot/common/DeviceRelayTypeVo.java new file mode 100644 index 0000000..065f0fe --- /dev/null +++ b/zh-module-applet/zh-applet-common/src/main/java/org/jeecg/common/iot/common/DeviceRelayTypeVo.java @@ -0,0 +1,9 @@ +package org.jeecg.common.iot.common; + +import lombok.Data; + +@Data +public class DeviceRelayTypeVo { + private String relayTypeName; + private String relayType; +} diff --git a/zh-module-applet/zh-applet-common/src/main/java/org/jeecg/common/iot/rule/ManufacturerConfigCmdVo.java b/zh-module-applet/zh-applet-common/src/main/java/org/jeecg/common/iot/rule/ManufacturerConfigCmdVo.java new file mode 100644 index 0000000..efc5782 --- /dev/null +++ b/zh-module-applet/zh-applet-common/src/main/java/org/jeecg/common/iot/rule/ManufacturerConfigCmdVo.java @@ -0,0 +1,11 @@ +package org.jeecg.common.iot.rule; + +import lombok.Data; + +@Data +public class ManufacturerConfigCmdVo { + /*关键词*/ + private String keywords; + /*条件sql*/ + private String condition; +} diff --git a/zh-module-applet/zh-applet-common/src/main/java/org/jeecg/common/iot/rule/ManufacturerConfigRelayGroupVo.java b/zh-module-applet/zh-applet-common/src/main/java/org/jeecg/common/iot/rule/ManufacturerConfigRelayGroupVo.java new file mode 100644 index 0000000..424fd15 --- /dev/null +++ b/zh-module-applet/zh-applet-common/src/main/java/org/jeecg/common/iot/rule/ManufacturerConfigRelayGroupVo.java @@ -0,0 +1,13 @@ +package org.jeecg.common.iot.rule; + +import lombok.Data; + +@Data +public class ManufacturerConfigRelayGroupVo { + /*匹配正则表达式*/ + private String pattern; + /*需要替换的关键词*/ + private String keywords; + /*分组类型;button=按钮,switch=两开关,shifter=三开*/ + private String relayGroupType; +} diff --git a/zh-module-applet/zh-applet-common/src/main/java/org/jeecg/common/iot/rule/ManufacturerConfigRelayVo.java b/zh-module-applet/zh-applet-common/src/main/java/org/jeecg/common/iot/rule/ManufacturerConfigRelayVo.java new file mode 100644 index 0000000..d0b1dbe --- /dev/null +++ b/zh-module-applet/zh-applet-common/src/main/java/org/jeecg/common/iot/rule/ManufacturerConfigRelayVo.java @@ -0,0 +1,11 @@ +package org.jeecg.common.iot.rule; + +import lombok.Data; + +@Data +public class ManufacturerConfigRelayVo { + /*关键词*/ + private String keywords; + /*继电器标记*/ + private String relayOperate; +} diff --git a/zh-module-applet/zh-applet-common/src/main/java/org/jeecg/common/iot/rule/ManufacturerConfigRuleVo.java b/zh-module-applet/zh-applet-common/src/main/java/org/jeecg/common/iot/rule/ManufacturerConfigRuleVo.java new file mode 100644 index 0000000..93be701 --- /dev/null +++ b/zh-module-applet/zh-applet-common/src/main/java/org/jeecg/common/iot/rule/ManufacturerConfigRuleVo.java @@ -0,0 +1,11 @@ +package org.jeecg.common.iot.rule; + +import lombok.Data; + +@Data +public class ManufacturerConfigRuleVo { + /*关键词*/ + private String keywords; + /*模型字段名*/ + private String modelSet; +} diff --git a/zh-module-applet/zh-applet-common/src/main/java/org/jeecg/common/iot/rule/ManufacturerConfigVo.java b/zh-module-applet/zh-applet-common/src/main/java/org/jeecg/common/iot/rule/ManufacturerConfigVo.java new file mode 100644 index 0000000..66200cb --- /dev/null +++ b/zh-module-applet/zh-applet-common/src/main/java/org/jeecg/common/iot/rule/ManufacturerConfigVo.java @@ -0,0 +1,19 @@ +package org.jeecg.common.iot.rule; + +import lombok.Data; + +import java.util.List; + +@Data +public class ManufacturerConfigVo { + /*匹配规则*/ + private List matchRule; + /*继电器规则*/ + private List relayRule; + /*前置指令*/ + private List preCmd; + /*启动指令*/ + private ManufacturerConfigCmdVo launchCmd; + /*继电器分组配置*/ + private List relayGroup; +} diff --git a/zh-module-applet/zh-applet-common/src/main/java/org/jeecg/common/vo/DeviceCmdVo.java b/zh-module-applet/zh-applet-common/src/main/java/org/jeecg/common/vo/DeviceCmdVo.java index 9298a49..695a793 100644 --- a/zh-module-applet/zh-applet-common/src/main/java/org/jeecg/common/vo/DeviceCmdVo.java +++ b/zh-module-applet/zh-applet-common/src/main/java/org/jeecg/common/vo/DeviceCmdVo.java @@ -4,7 +4,16 @@ import lombok.Data; @Data public class DeviceCmdVo { - private String deployCode; - private String valveCode; - private String os; + /** + * 设备id + */ + private String deployId; + /** + * 继电器id + */ + private String relayId; + /** + * 指令,0关,1开,2停 + */ + private String ops; } diff --git a/zh-module-applet/zh-applet-common/src/main/java/org/jeecg/common/vo/DeviceCmdVo2.java b/zh-module-applet/zh-applet-common/src/main/java/org/jeecg/common/vo/DeviceCmdVo2.java new file mode 100644 index 0000000..2429371 --- /dev/null +++ b/zh-module-applet/zh-applet-common/src/main/java/org/jeecg/common/vo/DeviceCmdVo2.java @@ -0,0 +1,10 @@ +package org.jeecg.common.vo; + +import lombok.Data; + +@Data +public class DeviceCmdVo2 { + private String deployCode; + private String valveCode; + private String os; +}