Преглед изворни кода

优化 重构测报灯业务端逻辑为通用模式

zhaiyifei пре 10 месеци
родитељ
комит
cfb52f0bde

+ 61 - 113
src/main/java/com/yunfeiyun/agmp/iotm/device/pest/controller/IotDeviceCbdController.java

@@ -1,41 +1,32 @@
 package com.yunfeiyun.agmp.iotm.device.pest.controller;
 
 
-import com.alibaba.fastjson2.JSONObject;
-import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.yunfeiyun.agmp.common.annotation.Log;
 import com.yunfeiyun.agmp.common.constant.ErrorCode;
 import com.yunfeiyun.agmp.common.core.domain.AjaxResult;
-import com.yunfeiyun.agmp.common.core.page.PageDomain;
 import com.yunfeiyun.agmp.common.core.page.TableDataInfo;
-import com.yunfeiyun.agmp.common.core.page.TableSupport;
 import com.yunfeiyun.agmp.common.enums.BusinessType;
 import com.yunfeiyun.agmp.common.log.LogCore;
-import com.yunfeiyun.agmp.common.utils.JSONUtils;
-import com.yunfeiyun.agmp.common.utils.StringUtils;
-import com.yunfeiyun.agmp.common.utils.poi.ExcelUtil;
+import com.yunfeiyun.agmp.common.utils.DateUtils;
 import com.yunfeiyun.agmp.iot.common.constant.IotErrorCode;
 import com.yunfeiyun.agmp.iot.common.constant.devicetype.IotDeviceDictConst;
-import com.yunfeiyun.agmp.iot.common.domain.IotCbddata;
 import com.yunfeiyun.agmp.iot.common.domain.IotCbdimg;
 import com.yunfeiyun.agmp.iot.common.domain.IotDevice;
-import com.yunfeiyun.agmp.iot.common.domain.IotXctdata;
 import com.yunfeiyun.agmp.iot.common.domain.reqvo.IotCbdConfigEditReqVo;
+import com.yunfeiyun.agmp.iot.common.enums.IotDeviceStatusTypeEnum;
 import com.yunfeiyun.agmp.iot.common.exception.IotBizException;
 import com.yunfeiyun.agmp.iot.common.service.MongoService;
-import com.yunfeiyun.agmp.iot.common.service.TypeCacheService;
 import com.yunfeiyun.agmp.iotm.common.controller.BaseController;
+import com.yunfeiyun.agmp.iotm.device.common.domin.IotDeviceBaseFunReqVo;
 import com.yunfeiyun.agmp.iotm.device.common.domin.IotDeviceDataListReqVo;
-import com.yunfeiyun.agmp.iotm.device.common.domin.IotDeviceDataListResVo;
-import com.yunfeiyun.agmp.iotm.device.common.domin.IotDeviceXctDataListResVo;
+import com.yunfeiyun.agmp.iotm.device.common.domin.IotDeviceExportReqVo;
+import com.yunfeiyun.agmp.iotm.device.common.service.IotDeviceCommonService;
 import com.yunfeiyun.agmp.iotm.device.common.service.IotDeviceRefreshService;
 import com.yunfeiyun.agmp.iotm.device.pest.domain.IotCbdModifyDevRecogTypeReqVo;
 import com.yunfeiyun.agmp.iotm.device.pest.domain.IotCbdimgCountResVo;
-import com.yunfeiyun.agmp.iotm.device.pest.service.IotCbdService;
 import com.yunfeiyun.agmp.iotm.util.ValidateUtil;
 import com.yunfeiyun.agmp.iotm.web.domain.reqvo.IotDeviceListReqVo;
 import com.yunfeiyun.agmp.iotm.web.domain.resvo.IotDeviceListResVo;
-import com.yunfeiyun.agmp.iotm.web.service.IIotCmdtaskService;
 import com.yunfeiyun.agmp.iotm.web.service.IIotDeviceService;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -63,22 +54,16 @@ import java.util.*;
 public class IotDeviceCbdController extends BaseController {
 
     @Resource
-    private IIotCmdtaskService iIotCmdtaskService;
-
-    @Resource
     private MongoService mongoService;
 
     @Autowired
-    private IotCbdService iotCbdService;
-
-    @Autowired
     private IIotDeviceService iIotDeviceService;
 
     @Resource
-    private TypeCacheService typeCacheService;
+    private IotDeviceRefreshService iotDeviceRefreshService;
 
     @Resource
-    private IotDeviceRefreshService iotDeviceRefreshService;
+    private IotDeviceCommonService iotDeviceCommonService;
 
     private Map<String, Long> getImgCountMap(List<String> devBidList) {
         Criteria criteria = new Criteria()
@@ -202,9 +187,32 @@ public class IotDeviceCbdController extends BaseController {
      * @throws Exception
      */
     @PostMapping("/config/edit")
-    public AjaxResult sendConfigCmd(@RequestBody IotCbdConfigEditReqVo iotCbdConfigEditReqVo) {
+    public AjaxResult sendConfigCmd(@RequestBody IotCbdConfigEditReqVo reqVo) {
         log.info("【{}】【测报灯】【下发指令配置】客户id {}", LogCore.getSeq(), getCustomerId());
-        String taskId=iotCbdService.editConfig(iotCbdConfigEditReqVo);
+        String devBid = reqVo.getDevBid();
+        IotDevice iotDevice = iIotDeviceService.selectIotDeviceByDevBid(devBid);
+        if(iotDevice == null){
+            throw new IotBizException(ErrorCode.INVALID_PARAMETER.getCode(),"设备不存在");
+        }
+
+        String devStatus = iotDevice.getDevStatus();
+        String devCreateddate = iotDevice.getDevCreateddate();
+        Date createdDate = DateUtils.dateTime(DateUtils.YYYY_MM_DD_HH_MM_SS, devCreateddate);
+        Date nowDate = DateUtils.getNowDate();
+        long diffTime = nowDate.getTime() - createdDate.getTime();
+        if(diffTime > 10 * 1000){
+            if (!Objects.equals(devStatus, IotDeviceStatusTypeEnum.ONLINE.getCode()) && !Objects.equals(devStatus, IotDeviceStatusTypeEnum.WAIT_ACTIVATE.getCode())) {
+                throw new IotBizException(IotErrorCode.FAILURE.getCode(), "设备离线无法操作");
+            }
+        }
+
+        reqVo.setIotDevice(iotDevice);
+
+        IotDeviceBaseFunReqVo iotDeviceBaseFunReqVo = new IotDeviceBaseFunReqVo();
+        iotDeviceBaseFunReqVo.setDevBid(reqVo.getDevBid());
+        iotDeviceBaseFunReqVo.setMethodName("sendConfigCmd");
+        iotDeviceBaseFunReqVo.setParam(reqVo);
+        String taskId = iotDeviceCommonService.func(iotDeviceBaseFunReqVo);
 
         return new AjaxResult(ErrorCode.SUCCESS.getCode(), "下发成功,等待设备响应结果", taskId);
     }
@@ -218,103 +226,37 @@ public class IotDeviceCbdController extends BaseController {
     @GetMapping("/takephoto/{devBid}")
     public AjaxResult takePhoto(@PathVariable("devBid") String devBid) {
         log.info("【{}】【测报灯】【拍照】客户id {}", LogCore.getSeq(), getCustomerId());
-        String taskId=iotCbdService.takePhoto(devBid);
+        IotDeviceBaseFunReqVo iotDeviceBaseFunReqVo = new IotDeviceBaseFunReqVo();
+        iotDeviceBaseFunReqVo.setDevBid(devBid);
+        iotDeviceBaseFunReqVo.setMethodName("takePhoto");
+        iotDeviceBaseFunReqVo.setParam(devBid);
+        String taskId = iotDeviceCommonService.func(iotDeviceBaseFunReqVo);
         return new AjaxResult(ErrorCode.SUCCESS.getCode(), "下发成功,等待设备响应结果", taskId);
     }
 
     @GetMapping({"/data/list", "/xct/data/list"})
-    public TableDataInfo getList(HttpServletRequest request, IotDeviceDataListReqVo reqVo) {
-        String devBid = reqVo.getDevBid();
-        ValidateUtil.validateDevBid(devBid);
-        String reqUri = request.getRequestURI();
-        Class tableClass = IotCbddata.class;
-        if(reqUri.endsWith("/xct/data/list")) {
-            tableClass = IotXctdata.class;
-        }
-
-        Map<String, Object> map = new HashMap<>();
-        map.put("devBid", reqVo.getDevBid());
-        if (StringUtils.isNotEmpty(reqVo.getStartTime()) && StringUtils.isEmpty(reqVo.getEndTime())) {
-            map.put("gte_cbddataCreatedDate", reqVo.getStartTime());
-        }
-        if (StringUtils.isEmpty(reqVo.getStartTime()) && StringUtils.isNotEmpty(reqVo.getEndTime())) {
-            map.put("lte_cbddataCreatedDate", reqVo.getEndTime());
-        }
-        if (StringUtils.isNotEmpty(reqVo.getStartTime()) && StringUtils.isNotEmpty(reqVo.getEndTime())) {
-            map.put("time_cbddataCreatedDate", reqVo.getStartTime() + "," + reqVo.getEndTime());
-        }
-
-        PageDomain pageDomain = TableSupport.buildPageRequest();
-        String orderByColumn = pageDomain.getOrderByColumn();
-        if (Objects.equals(orderByColumn, "cdbdataContent.stamp")){
-            pageDomain.setOrderByColumn("cbddataCreatedDate");
-        }
-
-        IPage page = mongoService.findListPage(tableClass, map, pageDomain);
-        List<?> data = page.getRecords();
-        List<JSONObject> list = new ArrayList<>();
-        for (Object datum : data) {
-            JSONObject jsonObject = JSONObject.from(datum);
-            JSONObject cdbdataContent = jsonObject.getJSONObject("cdbdataContent");
-            jsonObject.putAll(cdbdataContent);
-            jsonObject.remove("cdbdataContent");
-            list.add(jsonObject);
-        }
-        page.setRecords(list);
-
-        return getDataTable(page);
+    public TableDataInfo dataList(IotDeviceDataListReqVo reqVo) {
+        ValidateUtil.validateDevBid(reqVo.getDevBid());
+        IotDeviceBaseFunReqVo iotDeviceBaseFunReqVo = new IotDeviceBaseFunReqVo();
+        iotDeviceBaseFunReqVo.setDevBid(reqVo.getDevBid());
+        iotDeviceBaseFunReqVo.setMethodName("dataList");
+        iotDeviceBaseFunReqVo.setParam(reqVo);
+        return iotDeviceCommonService.func(iotDeviceBaseFunReqVo);
     }
+
     @Log(title = "设备数据", businessType = BusinessType.EXPORT)
     @PostMapping("/data/export")
     public void dataExport(HttpServletRequest request, HttpServletResponse response, @RequestBody IotDeviceDataListReqVo reqVo) {
         ValidateUtil.validateDevBid(reqVo.getDevBid());
-        String devBid = reqVo.getDevBid();
-        String startTime = reqVo.getStartTime();
-        String endTime = reqVo.getEndTime();
-        String[] params = {devBid, startTime, endTime};
-        for (String k : params) {
-            if (StringUtils.isEmpty(k)) {
-                throw new IotBizException(IotErrorCode.PARAM_INVALID.getCode(), "参数不能为空");
-            }
-        }
-        IotDevice iotDevice = iIotDeviceService.selectIotDeviceByDevBid(devBid);
-        if (iotDevice == null) {
-            throw new IotBizException(IotErrorCode.PARAM_INVALID.getCode(), "设备不存在");
-        }
-
-        Map<String, Object> map = new HashMap<>();
-        map.put("devBid", reqVo.getDevBid());
-        if (StringUtils.isNotEmpty(reqVo.getStartTime()) && StringUtils.isEmpty(reqVo.getEndTime())) {
-            map.put("gte_cbddataCreatedDate", reqVo.getStartTime());
-        }
-        if (StringUtils.isEmpty(reqVo.getStartTime()) && StringUtils.isNotEmpty(reqVo.getEndTime())) {
-            map.put("lte_cbddataCreatedDate", reqVo.getEndTime());
-        }
-        if (StringUtils.isNotEmpty(reqVo.getStartTime()) && StringUtils.isNotEmpty(reqVo.getEndTime())) {
-            map.put("time_cbddataCreatedDate", reqVo.getStartTime() + "," + reqVo.getEndTime());
-        }
-
-        if(iotDevice.getDevtypeBid().equals(IotDeviceDictConst.TYPE_YF_XCT)) {
-            List<IotXctdata> xctdataList = mongoService.findAll(IotXctdata.class, map, "cbddataCreatedDate desc");
-            List<IotDeviceXctDataListResVo> list = new ArrayList<>();
-            for(IotXctdata iotXctdata: xctdataList){
-                IotDeviceXctDataListResVo resVo = JSONUtils.toObject(iotXctdata.getCdbdataContent().toJSONString(), IotDeviceXctDataListResVo.class);
-                resVo.setCbddataCreatedDate(iotXctdata.getCbddataCreatedDate());
-                list.add(resVo);
-            }
-            ExcelUtil<IotDeviceXctDataListResVo> util = new ExcelUtil<>(IotDeviceXctDataListResVo.class);
-            util.exportExcel(response, list, "设备数据");
-        }else{
-            List<IotCbddata> cbddataList = mongoService.findAll(IotCbddata.class, map, "cbddataCreatedDate desc");
-            List<IotDeviceDataListResVo> list = new ArrayList<>();
-            for(IotCbddata iotCbddata: cbddataList){
-                IotDeviceDataListResVo resVo = JSONUtils.toObject(iotCbddata.getCdbdataContent().toJSONString(), IotDeviceDataListResVo.class);
-                resVo.setCbddataCreatedDate(iotCbddata.getCbddataCreatedDate());
-                list.add(resVo);
-            }
-            ExcelUtil<IotDeviceDataListResVo> util = new ExcelUtil<>(IotDeviceDataListResVo.class);
-            util.exportExcel(response, list, "设备数据");
-        }
+        IotDeviceExportReqVo iotDeviceExportReqVo = new IotDeviceExportReqVo();
+        iotDeviceExportReqVo.setResponse(response);
+        iotDeviceExportReqVo.setReqVo(reqVo);
+
+        IotDeviceBaseFunReqVo iotDeviceBaseFunReqVo = new IotDeviceBaseFunReqVo();
+        iotDeviceBaseFunReqVo.setDevBid(reqVo.getDevBid());
+        iotDeviceBaseFunReqVo.setMethodName("dataExport");
+        iotDeviceBaseFunReqVo.setParam(iotDeviceExportReqVo);
+        iotDeviceCommonService.func(iotDeviceBaseFunReqVo);
     }
 
     @GetMapping("/refresh/{devBid}")
@@ -326,7 +268,13 @@ public class IotDeviceCbdController extends BaseController {
     @Transactional(rollbackFor = Exception.class)
     @PostMapping("/modify/recog")
     public AjaxResult modifyRecog(@RequestBody IotCbdModifyDevRecogTypeReqVo reqVo) {
-        int status = iotCbdService.modifyRecog(reqVo);
+        ValidateUtil.validateDevBid(reqVo.getDevBid());
+
+        IotDeviceBaseFunReqVo iotDeviceBaseFunReqVo = new IotDeviceBaseFunReqVo();
+        iotDeviceBaseFunReqVo.setDevBid(reqVo.getDevBid());
+        iotDeviceBaseFunReqVo.setMethodName("modifyRecog");
+        iotDeviceBaseFunReqVo.setParam(reqVo);
+        int status = iotDeviceCommonService.func(iotDeviceBaseFunReqVo);
         return toAjax(status);
     }
 

+ 293 - 0
src/main/java/com/yunfeiyun/agmp/iotm/device/pest/service/IIotCbdCommService.java

@@ -0,0 +1,293 @@
+package com.yunfeiyun.agmp.iotm.device.pest.service;
+
+import com.alibaba.fastjson2.JSONObject;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.yunfeiyun.agmp.common.constant.ErrorCode;
+import com.yunfeiyun.agmp.common.core.page.PageDomain;
+import com.yunfeiyun.agmp.common.core.page.TableDataInfo;
+import com.yunfeiyun.agmp.common.core.page.TableSupport;
+import com.yunfeiyun.agmp.common.log.LogCore;
+import com.yunfeiyun.agmp.common.utils.DateUtils;
+import com.yunfeiyun.agmp.common.utils.JSONUtils;
+import com.yunfeiyun.agmp.common.utils.StringUtils;
+import com.yunfeiyun.agmp.common.utils.poi.ExcelUtil;
+import com.yunfeiyun.agmp.common.utils.uuid.IdUtils;
+import com.yunfeiyun.agmp.iot.common.constant.IotErrorCode;
+import com.yunfeiyun.agmp.iot.common.constant.devicetype.IotDeviceDictConst;
+import com.yunfeiyun.agmp.iot.common.domain.*;
+import com.yunfeiyun.agmp.iot.common.domain.reqvo.IotCbdConfigEditReqVo;
+import com.yunfeiyun.agmp.iot.common.enums.EnumDevRecogType;
+import com.yunfeiyun.agmp.iot.common.exception.IotBizException;
+import com.yunfeiyun.agmp.iot.common.model.cmd.CmdGroupModel;
+import com.yunfeiyun.agmp.iot.common.service.MongoService;
+import com.yunfeiyun.agmp.iotm.device.common.domin.*;
+import com.yunfeiyun.agmp.iotm.device.common.service.IotDeviceBaseService;
+import com.yunfeiyun.agmp.iotm.device.common.service.impl.IotDeviceBaseServiceImpl;
+import com.yunfeiyun.agmp.iotm.device.pest.domain.IotCbdModifyDevRecogTypeReqVo;
+import com.yunfeiyun.agmp.iotm.web.service.IIotCmdtaskService;
+import com.yunfeiyun.agmp.iotm.web.service.IIotDeviceService;
+import com.yunfeiyun.agmp.iotm.web.service.IIotDeviceconfigService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+import java.util.*;
+
+@Slf4j
+public class IIotCbdCommService extends IotDeviceBaseServiceImpl implements IotDeviceBaseService {
+    @Resource
+    private IIotDeviceconfigService iIotDeviceconfigService;
+
+    @Autowired
+    private IIotCmdtaskService iIotCmdtaskService;
+
+    @Autowired
+    private IIotDeviceService iotDeviceService;
+
+    @Autowired
+    private MongoService mongoService;
+
+    public Class getTableClass(String devtypeBid) {
+        Class tableClass = null;
+        switch (devtypeBid){
+            case IotDeviceDictConst.TYPE_YF_CBD:
+                tableClass = IotCbddata.class;
+                break;
+            case IotDeviceDictConst.TYPE_YF_XCT:
+                tableClass = IotXctdata.class;
+                break;
+            default:
+                break;
+        }
+        return tableClass;
+    }
+
+    public TableDataInfo dataList(IotDeviceDataListReqVo reqVo){
+        TableDataInfo rspData = new TableDataInfo();
+        rspData.setCode(ErrorCode.SUCCESS.getCode());
+        rspData.setMsg(ErrorCode.SUCCESS.getMessage());
+        rspData.setData(new ArrayList<>());
+        rspData.setTotal(0);
+
+        String devBid = reqVo.getDevBid();
+        String startTime = reqVo.getStartTime();
+        String endTime = reqVo.getEndTime();
+
+        if (startTime == null || endTime == null) {
+            throw new IotBizException(ErrorCode.INVALID_PARAMETER.getCode(), "请输入正确的起止时间");
+        }
+
+        IotDevice findDevice = iotDeviceService.selectIotDeviceByDevBid(devBid);
+        if (findDevice == null) {
+            throw new IotBizException(ErrorCode.INVALID_PARAMETER.getCode(), "设备不存在");
+        }
+
+        Map<String, Object> map = new HashMap<>();
+        map.put("devBid", reqVo.getDevBid());
+        if (StringUtils.isNotEmpty(reqVo.getStartTime()) && StringUtils.isEmpty(reqVo.getEndTime())) {
+            map.put("gte_cbddataCreatedDate", reqVo.getStartTime());
+        }
+        if (StringUtils.isEmpty(reqVo.getStartTime()) && StringUtils.isNotEmpty(reqVo.getEndTime())) {
+            map.put("lte_cbddataCreatedDate", reqVo.getEndTime());
+        }
+        if (StringUtils.isNotEmpty(reqVo.getStartTime()) && StringUtils.isNotEmpty(reqVo.getEndTime())) {
+            map.put("time_cbddataCreatedDate", reqVo.getStartTime() + "," + reqVo.getEndTime());
+        }
+
+        PageDomain pageDomain = TableSupport.buildPageRequest();
+        String orderByColumn = pageDomain.getOrderByColumn();
+        if (Objects.equals(orderByColumn, "cdbdataContent.stamp")){
+            pageDomain.setOrderByColumn("cbddataCreatedDate");
+        }
+
+        Class tableClass = getTableClass(findDevice.getDevtypeBid());
+        IPage page = mongoService.findListPage(tableClass, map, pageDomain);
+        List<?> data = page.getRecords();
+        List<JSONObject> list = new ArrayList<>();
+        for (Object datum : data) {
+            JSONObject jsonObject = JSONObject.from(datum);
+            JSONObject cdbdataContent = jsonObject.getJSONObject("cdbdataContent");
+            jsonObject.putAll(cdbdataContent);
+            jsonObject.remove("cdbdataContent");
+            list.add(jsonObject);
+        }
+        rspData.setData(list);
+        rspData.setTotal(page.getTotal());
+        return rspData;
+    }
+
+
+    public String takePhoto(String devBid) {
+        log.info("【{}】【测报灯】【拍照】客户id {}", LogCore.getSeq());
+        IotDevice iotDevice = iotDeviceService.selectIotDeviceByDevBid(devBid);
+        if (iotDevice == null) {
+            throw new IotBizException(ErrorCode.FAILURE.getCode(),"设备不存在");
+        }
+
+        IotDeviceconfig iotDeviceconfig = new IotDeviceconfig();
+        iotDeviceconfig.setTid(iotDevice.getTid());
+        iotDeviceconfig.setDevBid(devBid);
+
+        CmdGroupModel cmdGroupModel = iIotDeviceconfigService.createTakePhotoCmd(iotDeviceconfig);
+        cmdGroupModel.setRequestId(IdUtils.fastUUID());
+        // 适配增加详细日志使用
+        cmdGroupModel.setDevCode(iotDevice.getDevCode());
+        cmdGroupModel.setCtBiztitle(iotDevice.getDevtypeName() + ":" + iotDevice.getDevCode());
+        cmdGroupModel.setCtBiztype("3");
+        cmdGroupModel.setCtDevtype(iotDevice.getDevtypeBid());
+        //cmdGroupModel.setCtParam(deviceConfigurationTranslator.logTakePhoto(iotDevice.getDevBid()));
+        cmdGroupModel.setCtParam("设备id:"+devBid);
+        iIotCmdtaskService.handInternalCmd(cmdGroupModel);
+        return cmdGroupModel.getTaskUuid();
+    }
+
+    /**
+     * 发送更改配置
+     * @param iotCbdConfigEditReqVo
+     * @return
+     */
+    public String sendConfigCmd(IotCbdConfigEditReqVo iotCbdConfigEditReqVo) {
+        log.info("【{}】【测报灯】【下发指令配置】客户id {}", LogCore.getSeq());
+        String devBid = iotCbdConfigEditReqVo.getDevBid();
+        if (StringUtils.isEmpty(devBid)) {
+            throw new IotBizException(IotErrorCode.PARAM_INVALID.getCode(),"设备标识不能为空");
+        }
+
+        IotDevice iotDevice = iotCbdConfigEditReqVo.getIotDevice();
+        IotDeviceconfig iotDeviceconfig = iIotDeviceconfigService.selectIotDeviceConfigByDevBid(devBid);
+        if (null == iotDeviceconfig) {
+            // 如果测报灯配置为空,则新增测报灯配置
+            iotDeviceconfig = new IotDeviceconfig();
+            iotDeviceconfig.setDevcfgBid(iotDeviceconfig.getUUId());
+            iotDeviceconfig.setTid(iotDevice.getTid());
+            iotDeviceconfig.setDevBid(devBid);
+            iotDeviceconfig.setDevcfgContext(JSONUtils.toJSONString(iotCbdConfigEditReqVo.getIotCbdConfig()));
+            iotDeviceconfig.setDevcfgDelstatus("0");
+            iIotDeviceconfigService.insertIotDeviceconfig(iotDeviceconfig);
+        } else {
+            // 如果测报灯配置不为空,则更新测报灯配置
+            iotDeviceconfig.setDevcfgContext(JSONUtils.toJSONString(iotCbdConfigEditReqVo.getIotCbdConfig()));
+            iIotDeviceconfigService.updateIotDeviceconfig(iotDeviceconfig);
+        }
+
+        CmdGroupModel cmdGroupModel = iIotDeviceconfigService.createConfigCmd(iotDeviceconfig);
+        log.info("【{}】【测报灯】【构建 cmdGroupModel】{}", LogCore.getSeq(), JSONUtils.toJSONString(cmdGroupModel));
+        cmdGroupModel.setRequestId(IdUtils.fastUUID());
+
+        // 适配增加详细日志使用
+        cmdGroupModel.setDevCode(iotDevice.getDevCode());
+        cmdGroupModel.setCtBiztitle(iotDevice.getDevtypeName() + ":" + iotDevice.getDevCode());
+        cmdGroupModel.setCtBiztype("3");
+        cmdGroupModel.setCtDevtype(iotDevice.getDevtypeBid());
+        //cmdGroupModel.setCtParam(deviceConfigurationTranslator.configTranslate(iotCbdConfigEditReqVo));
+        cmdGroupModel.setCtParam(JSONUtils.toJSONString(iotCbdConfigEditReqVo));
+        iIotCmdtaskService.handInternalCmd(cmdGroupModel);
+        return cmdGroupModel.getTaskUuid();
+    }
+
+    /**
+     * 数据导出
+     *
+     * @param iotDeviceExportReqVo
+     */
+    public void dataExport(IotDeviceExportReqVo iotDeviceExportReqVo) {
+        HttpServletResponse response = iotDeviceExportReqVo.getResponse();
+        IotDeviceDataListReqVo reqVo = iotDeviceExportReqVo.getReqVo();
+
+        String startTime = reqVo.getStartTime();
+        String endTime = reqVo.getEndTime();
+
+        if (startTime == null || endTime == null) {
+            throw new IotBizException(ErrorCode.INVALID_PARAMETER.getCode(), "请输入正确的起止时间");
+        }
+
+        IotDevice iotDevice = iotDeviceService.selectIotDeviceByDevBid(reqVo.getDevBid());
+        if (iotDevice == null) {
+            throw new IotBizException(ErrorCode.INVALID_PARAMETER.getCode(), "设备不存在");
+        }
+
+        Map<String, Object> map = new HashMap<>();
+        map.put("devBid", reqVo.getDevBid());
+        if (StringUtils.isNotEmpty(reqVo.getStartTime()) && StringUtils.isEmpty(reqVo.getEndTime())) {
+            map.put("gte_cbddataCreatedDate", reqVo.getStartTime());
+        }
+        if (StringUtils.isEmpty(reqVo.getStartTime()) && StringUtils.isNotEmpty(reqVo.getEndTime())) {
+            map.put("lte_cbddataCreatedDate", reqVo.getEndTime());
+        }
+        if (StringUtils.isNotEmpty(reqVo.getStartTime()) && StringUtils.isNotEmpty(reqVo.getEndTime())) {
+            map.put("time_cbddataCreatedDate", reqVo.getStartTime() + "," + reqVo.getEndTime());
+        }
+
+        Class tableClass = getTableClass(iotDevice.getDevtypeBid());
+        List<CbdBaseDataEntity> dataList = mongoService.findAll(tableClass, map, "cbddataCreatedDate desc");
+        if(iotDevice.getDevtypeBid().equals(IotDeviceDictConst.TYPE_YF_XCT)) {
+            List<IotDeviceXctDataListResVo> list = new ArrayList<>();
+            for(CbdBaseDataEntity item: dataList){
+                String cbddataCreatedDate = item.getCbddataCreatedDate();
+                IotDeviceXctDataListResVo resVo = JSONUtils.toObject(item.getCdbdataContent().toJSONString(), IotDeviceXctDataListResVo.class);
+                resVo.setCbddataCreatedDate(cbddataCreatedDate);
+                list.add(resVo);
+            }
+            ExcelUtil<IotDeviceXctDataListResVo> util = new ExcelUtil<>(IotDeviceXctDataListResVo.class);
+            util.exportExcel(response, list, "设备数据");
+        }else{
+            List<IotDeviceDataListResVo> list = new ArrayList<>();
+            for(CbdBaseDataEntity item: dataList){
+                String cbddataCreatedDate = item.getCbddataCreatedDate();
+                IotDeviceDataListResVo resVo = JSONUtils.toObject(item.getCdbdataContent().toJSONString(), IotDeviceDataListResVo.class);
+                resVo.setCbddataCreatedDate(cbddataCreatedDate);
+                list.add(resVo);
+            }
+            ExcelUtil<IotDeviceDataListResVo> util = new ExcelUtil<>(IotDeviceDataListResVo.class);
+            util.exportExcel(response, list, "设备数据");
+        }
+    }
+
+    public void refresh(DeviceRefreshDto reqVo) {
+        IotDevice iotDevice = reqVo.getIotDevice();
+        String devBid = iotDevice.getDevBid();
+
+        log.info("创建【“刷新”指令集任务】,设备类型:CBD");
+        JSONObject payload = new JSONObject();
+        payload.put("cmd", "read");
+        payload.put("ext", "data");
+        IotDeviceconfig iotDeviceconfig = new IotDeviceconfig();
+        iotDeviceconfig.setTid(iotDevice.getTid());
+        iotDeviceconfig.setDevBid(devBid);
+        iotDeviceconfig.setDevcfgContext(JSONUtils.toJSONString(payload));
+
+        CmdGroupModel cmdGroupModel = iIotDeviceconfigService.createRefreshCmd(iotDeviceconfig);
+
+        // 构建日志需要用的内容
+        cmdGroupModel.setRequestId(IdUtils.fastUUID());
+        cmdGroupModel.setDevCode(iotDevice.getDevCode());
+        cmdGroupModel.setCtBiztype("3");
+        cmdGroupModel.setCtDevtype(iotDevice.getDevtypeBid());
+        cmdGroupModel.setCtBiztitle(iotDevice.getDevtypeName() + ":" + iotDevice.getDevCode());
+        //cmdGroupModel.setCtParam(cbdDeviceConfigurationTranslator.logTakeRefresh(iotDevice.getDevBid()));
+        cmdGroupModel.setCtParam("设备id:"+devBid);
+        iIotCmdtaskService.handInternalCmd(cmdGroupModel);
+    }
+
+    public int modifyRecog(IotCbdModifyDevRecogTypeReqVo reqVo) {
+        log.info("【{}】【测报灯】【修改识别类型】客户id {}", LogCore.getSeq(), reqVo);
+        String devBid = reqVo.getDevBid();
+        String devRecogtype = reqVo.getDevRecogtype();
+
+        if(EnumDevRecogType.findEnumByCode(devRecogtype) == null){
+            throw new IotBizException(ErrorCode.FAILURE.getCode(),"识别类型不正确");
+        }
+        IotDevice iotDevice = iotDeviceService.selectIotDeviceByDevBid(devBid);
+        if(iotDevice == null){
+            throw new IotBizException(ErrorCode.FAILURE.getCode(),"设备不存在");
+        }
+        IotDevice iotDeviceUpdate = new IotDevice();
+        iotDeviceUpdate.setDevBid(devBid);
+        iotDeviceUpdate.setDevRecogtype(devRecogtype);
+        iotDeviceUpdate.setDevModifieddate(DateUtils.dateTimeNow());
+        return iotDeviceService.updateIotDevice(iotDeviceUpdate, null, null);
+    }
+
+
+}

+ 0 - 19
src/main/java/com/yunfeiyun/agmp/iotm/device/pest/service/IotCbdService.java

@@ -1,19 +0,0 @@
-package com.yunfeiyun.agmp.iotm.device.pest.service;
-
-import com.yunfeiyun.agmp.iot.common.domain.reqvo.IotCbdConfigEditReqVo;
-import com.yunfeiyun.agmp.iotm.device.common.domin.DeviceRefreshDto;
-import com.yunfeiyun.agmp.iotm.device.common.service.IotDeviceBaseService;
-import com.yunfeiyun.agmp.iotm.device.pest.domain.IotCbdModifyDevRecogTypeReqVo;
-
-/**
- * @author 123
- */
-public interface IotCbdService extends IotDeviceBaseService {
-    /**抓拍*/
-    public String takePhoto(String devId);
-
-    public void refresh(DeviceRefreshDto reqVo);
-    public String editConfig(IotCbdConfigEditReqVo iotCbdConfigEditReqVo);
-
-    public int modifyRecog(IotCbdModifyDevRecogTypeReqVo reqVo);
-}

+ 2 - 154
src/main/java/com/yunfeiyun/agmp/iotm/device/pest/service/impl/IotCbdServiceImpl.java

@@ -1,33 +1,10 @@
 package com.yunfeiyun.agmp.iotm.device.pest.service.impl;
 
-import com.alibaba.fastjson2.JSONObject;
-import com.yunfeiyun.agmp.common.constant.ErrorCode;
-import com.yunfeiyun.agmp.common.log.LogCore;
-import com.yunfeiyun.agmp.common.utils.DateUtils;
-import com.yunfeiyun.agmp.common.utils.JSONUtils;
-import com.yunfeiyun.agmp.common.utils.StringUtils;
-import com.yunfeiyun.agmp.common.utils.uuid.IdUtils;
 import com.yunfeiyun.agmp.iot.common.constant.devicetype.ServiceNameConst;
-import com.yunfeiyun.agmp.iot.common.domain.IotDevice;
-import com.yunfeiyun.agmp.iot.common.domain.IotDeviceconfig;
-import com.yunfeiyun.agmp.iot.common.domain.reqvo.IotCbdConfigEditReqVo;
-import com.yunfeiyun.agmp.iot.common.enums.EnumDevRecogType;
-import com.yunfeiyun.agmp.iot.common.exception.IotBizException;
-import com.yunfeiyun.agmp.iot.common.model.cmd.CmdGroupModel;
-import com.yunfeiyun.agmp.iotm.device.common.domin.DeviceRefreshDto;
-import com.yunfeiyun.agmp.iotm.device.common.service.impl.IotDeviceBaseServiceImpl;
-import com.yunfeiyun.agmp.iotm.device.pest.domain.IotCbdModifyDevRecogTypeReqVo;
-import com.yunfeiyun.agmp.iotm.device.pest.service.IotCbdService;
-import com.yunfeiyun.agmp.iotm.web.mapper.IotDeviceMapper;
-import com.yunfeiyun.agmp.iotm.web.service.IIotCmdtaskService;
-import com.yunfeiyun.agmp.iotm.web.service.IIotDeviceService;
-import com.yunfeiyun.agmp.iotm.web.service.IIotDeviceconfigService;
+import com.yunfeiyun.agmp.iotm.device.pest.service.IIotCbdCommService;
 import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
-import javax.annotation.Resource;
-
 /**
  * 测报灯
  *
@@ -36,135 +13,6 @@ import javax.annotation.Resource;
  * */
 @Slf4j
 @Service(value = ServiceNameConst.SERVICE_YF_CBD)
-public class  IotCbdServiceImpl extends IotDeviceBaseServiceImpl implements IotCbdService {
-
-    @Resource
-    private IotDeviceMapper iotDeviceMapper;
-    @Autowired
-    private IIotCmdtaskService iIotCmdtaskService;
-
-    @Autowired
-    private IIotDeviceService iIotDeviceService;
-
-    @Resource
-    private IIotDeviceconfigService iIotDeviceconfigService;
-    /**
-     * 发送更改配置
-     * @param iotCbdConfigEditReqVo
-     * @return
-     */
-    @Override
-    public String editConfig(IotCbdConfigEditReqVo iotCbdConfigEditReqVo) {
-        log.info("【{}】【测报灯】【下发指令配置】客户id {}", LogCore.getSeq());
-        if (StringUtils.isEmpty(iotCbdConfigEditReqVo.getCdbdataBid())) {
-            throw new IotBizException(ErrorCode.FAILURE.getCode(),"设备id不可为空");
-        }
-        IotDevice iotDevice = iIotDeviceService.selectIotDeviceByDevBid(iotCbdConfigEditReqVo.getCdbdataBid());
-        if (iotDevice == null) {
-            throw new IotBizException(ErrorCode.FAILURE.getCode(),"设备不存在");
-        }
-        IotDeviceconfig iotDeviceconfig = iIotDeviceconfigService.selectIotDeviceConfigByDevBid(iotCbdConfigEditReqVo.getCdbdataBid());
-        if (null == iotDeviceconfig) {
-            // 如果测报灯配置为空,则新增测报灯配置
-            iotDeviceconfig = new IotDeviceconfig();
-            iotDeviceconfig.setDevcfgBid(iotDeviceconfig.getUUId());
-            iotDeviceconfig.setTid(iotDevice.getTid());
-            iotDeviceconfig.setDevBid(iotCbdConfigEditReqVo.getCdbdataBid());
-            iotDeviceconfig.setDevcfgContext(JSONUtils.toJSONString(iotCbdConfigEditReqVo.getIotCbdConfig()));
-            iotDeviceconfig.setDevcfgDelstatus("0");
-            iIotDeviceconfigService.insertIotDeviceconfig(iotDeviceconfig);
-        } else {
-            // 如果测报灯配置不为空,则更新测报灯配置
-            iotDeviceconfig.setDevcfgContext(JSONUtils.toJSONString(iotCbdConfigEditReqVo.getIotCbdConfig()));
-            iIotDeviceconfigService.updateIotDeviceconfig(iotDeviceconfig);
-        }
-
-        CmdGroupModel cmdGroupModel = iIotDeviceconfigService.createConfigCmd(iotDeviceconfig);
-        log.info("【{}】【测报灯】【构建 cmdGroupModel】{}", LogCore.getSeq(), JSONUtils.toJSONString(cmdGroupModel));
-        cmdGroupModel.setRequestId(IdUtils.fastUUID());
-
-        // 适配增加详细日志使用
-        cmdGroupModel.setDevCode(iotDevice.getDevCode());
-        cmdGroupModel.setCtBiztitle(iotDevice.getDevtypeName() + ":" + iotDevice.getDevCode());
-        cmdGroupModel.setCtBiztype("3");
-        cmdGroupModel.setCtDevtype(iotDevice.getDevtypeBid());
-        //cmdGroupModel.setCtParam(deviceConfigurationTranslator.configTranslate(iotCbdConfigEditReqVo));
-        cmdGroupModel.setCtParam(JSONUtils.toJSONString(iotCbdConfigEditReqVo));
-        iIotCmdtaskService.handInternalCmd(cmdGroupModel);
-        return cmdGroupModel.getTaskUuid();
-    }
-
-    @Override
-    public String takePhoto(String devBid) {
-        log.info("【{}】【测报灯】【拍照】客户id {}", LogCore.getSeq());
-        IotDevice iotDevice = iIotDeviceService.selectIotDeviceByDevBid(devBid);
-        if (iotDevice == null) {
-            throw new IotBizException(ErrorCode.FAILURE.getCode(),"设备不存在");
-        }
-
-        IotDeviceconfig iotDeviceconfig = new IotDeviceconfig();
-        iotDeviceconfig.setTid(iotDevice.getTid());
-        iotDeviceconfig.setDevBid(devBid);
-
-        CmdGroupModel cmdGroupModel = iIotDeviceconfigService.createTakePhotoCmd(iotDeviceconfig);
-        cmdGroupModel.setRequestId(IdUtils.fastUUID());
-        // 适配增加详细日志使用
-        cmdGroupModel.setDevCode(iotDevice.getDevCode());
-        cmdGroupModel.setCtBiztitle(iotDevice.getDevtypeName() + ":" + iotDevice.getDevCode());
-        cmdGroupModel.setCtBiztype("3");
-        cmdGroupModel.setCtDevtype(iotDevice.getDevtypeBid());
-        //cmdGroupModel.setCtParam(deviceConfigurationTranslator.logTakePhoto(iotDevice.getDevBid()));
-        cmdGroupModel.setCtParam("设备id:"+devBid);
-        iIotCmdtaskService.handInternalCmd(cmdGroupModel);
-        return cmdGroupModel.getTaskUuid();
-    }
-
-
-    @Override
-    public void refresh(DeviceRefreshDto reqVo) {
-        IotDevice iotDevice = reqVo.getIotDevice();
-        String devBid = iotDevice.getDevBid();
-
-        log.info("创建【“刷新”指令集任务】,设备类型:CBD");
-        JSONObject   payload = new JSONObject();
-        payload.put("cmd", "read");
-        payload.put("ext", "data");
-        IotDeviceconfig iotDeviceconfig = new IotDeviceconfig();
-        iotDeviceconfig.setTid(iotDevice.getTid());
-        iotDeviceconfig.setDevBid(devBid);
-        iotDeviceconfig.setDevcfgContext(JSONUtils.toJSONString(payload));
-
-        CmdGroupModel cmdGroupModel = iIotDeviceconfigService.createRefreshCmd(iotDeviceconfig);
-
-        // 构建日志需要用的内容
-        cmdGroupModel.setRequestId(IdUtils.fastUUID());
-        cmdGroupModel.setDevCode(iotDevice.getDevCode());
-        cmdGroupModel.setCtBiztype("3");
-        cmdGroupModel.setCtDevtype(iotDevice.getDevtypeBid());
-        cmdGroupModel.setCtBiztitle(iotDevice.getDevtypeName() + ":" + iotDevice.getDevCode());
-        //cmdGroupModel.setCtParam(cbdDeviceConfigurationTranslator.logTakeRefresh(iotDevice.getDevBid()));
-        cmdGroupModel.setCtParam("设备id:"+devBid);
-        iIotCmdtaskService.handInternalCmd(cmdGroupModel);
-    }
-
-    @Override
-    public int modifyRecog(IotCbdModifyDevRecogTypeReqVo reqVo) {
-        log.info("【{}】【测报灯】【修改识别类型】客户id {}", LogCore.getSeq(), reqVo);
-        String devBid = reqVo.getDevBid();
-        String devRecogtype = reqVo.getDevRecogtype();
-
-        if(EnumDevRecogType.findEnumByCode(devRecogtype) == null){
-            throw new IotBizException(ErrorCode.FAILURE.getCode(),"识别类型不正确");
-        }
-        IotDevice iotDevice = iIotDeviceService.selectIotDeviceByDevBid(devBid);
-        if(iotDevice == null){
-            throw new IotBizException(ErrorCode.FAILURE.getCode(),"设备不存在");
-        }
-        IotDevice iotDeviceUpdate = new IotDevice();
-        iotDeviceUpdate.setDevBid(devBid);
-        iotDeviceUpdate.setDevRecogtype(devRecogtype);
-        iotDeviceUpdate.setDevModifieddate(DateUtils.dateTimeNow());
-        return iIotDeviceService.updateIotDevice(iotDeviceUpdate, null, null);
-    }
+public class  IotCbdServiceImpl extends IIotCbdCommService {
 
 }

+ 18 - 0
src/main/java/com/yunfeiyun/agmp/iotm/device/pest/service/impl/IotXctServiceImpl.java

@@ -0,0 +1,18 @@
+package com.yunfeiyun.agmp.iotm.device.pest.service.impl;
+
+import com.yunfeiyun.agmp.iot.common.constant.devicetype.ServiceNameConst;
+import com.yunfeiyun.agmp.iotm.device.pest.service.IIotCbdCommService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+/**
+ * 吸虫塔
+ *
+ * @author liuyaowen
+ *
+ * */
+@Slf4j
+@Service(value = ServiceNameConst.SERVICE_YF_XCT)
+public class IotXctServiceImpl extends IIotCbdCommService {
+
+}

+ 2 - 15
src/main/java/com/yunfeiyun/agmp/iotm/web/controller/IotDeviceController.java

@@ -13,7 +13,6 @@ import com.yunfeiyun.agmp.iotm.web.domain.reqvo.IotDeviceListReqVo;
 import com.yunfeiyun.agmp.iotm.web.domain.reqvo.IotDeviceModifyReqVo;
 import com.yunfeiyun.agmp.iotm.web.domain.resvo.IotDeviceListResVo;
 import com.yunfeiyun.agmp.iotm.web.service.IIotDeviceService;
-import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.transaction.annotation.Transactional;
@@ -21,7 +20,6 @@ import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletResponse;
 import javax.validation.Valid;
-import java.util.ArrayList;
 import java.util.List;
 
 /**
@@ -54,20 +52,9 @@ public class IotDeviceController extends BaseController
     @GetMapping("/list")
     public TableDataInfo list(IotDeviceListReqVo reqVo) {
         startPage();
-        List<IotDevice> iotDeviceList = iotDeviceService.seletIotDeviceList(reqVo);
+        List<IotDeviceListResVo> iotDeviceList = iotDeviceService.selectIotDeviceListByType(reqVo);
 
-        TableDataInfo tableDataInfo = getDataTable(iotDeviceList);
-        List<IotDevice> data = (List<IotDevice>) tableDataInfo.getData();
-
-        List<IotDeviceListResVo> iotDeviceListResVoList = new ArrayList<>();
-        for (IotDevice iotDevice : data) {
-            IotDeviceListResVo iotDeviceListResVo = new IotDeviceListResVo();
-            BeanUtils.copyProperties(iotDevice, iotDeviceListResVo);
-            iotDeviceListResVoList.add(iotDeviceListResVo);
-        }
-        tableDataInfo.setData(iotDeviceListResVoList);
-
-        return tableDataInfo;
+        return getDataTable(iotDeviceList);
     }
 
     /**

+ 5 - 0
src/main/java/com/yunfeiyun/agmp/iotm/web/domain/reqvo/IotHomeDeviceListReqVo.java

@@ -12,6 +12,11 @@ public class IotHomeDeviceListReqVo {
      */
     private String devBid;
 
+    /**
+     * 设备状态 1 在线 0 离线
+     */
+    private String devStatus;
+
     /** 设备编码 名称 合二为一 支持模糊搜索 */
     private String devQuery;
 

+ 1 - 0
src/main/java/com/yunfeiyun/agmp/iotm/web/service/impl/IotHomeServiceImpl.java

@@ -66,6 +66,7 @@ public class IotHomeServiceImpl implements IIotHomeService {
         req.setTid(tid);
         req.setDevQuery(devQery);
         req.setDevtypeBidList(devtypeBidList);
+        req.setDevStatus(reqVo.getDevStatus());
 
         List<IotDeviceListResVo> iotDeviceList = iIotDeviceService.selectIotDeviceListByType(req);
         Map<String, IotDeviceListResVo> deviceMap = new HashMap<>();