diff --git a/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/controller/BusMapOverviewController.java b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/controller/BusMapOverviewController.java new file mode 100644 index 0000000..9d9f43c --- /dev/null +++ b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/controller/BusMapOverviewController.java @@ -0,0 +1,182 @@ +package com.casic.missiles.modular.system.controller; + +import cn.hutool.core.collection.CollectionUtil; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.model.exception.ServiceException; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.model.response.SuccessResponseData; +import com.casic.missiles.modular.system.dto.BusWellInfoDto; +import com.casic.missiles.modular.system.dto.DeviceDataDto; +import com.casic.missiles.modular.system.dto.DeviceInfoDto; +import com.casic.missiles.modular.system.dto.WatchDataDto; +import com.casic.missiles.modular.system.model.BusWellInfo; +import com.casic.missiles.modular.system.service.IBusDeviceSupportService; +import com.casic.missiles.modular.system.service.IBusWellInfoSupportService; +import com.casic.missiles.modular.system.service.IDataAnalysisService; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.ResponseBody; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; + +/** + * 地图总览模块的controller + * + * @author tanyue + * @Date 2019-05-13 19:20:29 + */ +@Controller +@RequestMapping("/overview") +public class BusMapOverviewController extends BaseController { + + @Resource + private AbstractPermissionContext permissionService; + @Resource + private AbstractDictService dictService; + @Resource + private IBusWellInfoSupportService busWellInfoService; + @Resource + private IDataAnalysisService dataAnalysisService; + @Resource + private IBusDeviceSupportService busDeviceSupportService; + + /** + * 获取列表 + */ + @RequestMapping(value = "/wellList") + @ResponseBody + public Object wellList(@RequestParam(required = false) String keywords, + @RequestParam(required = false) String wellType, + @RequestParam(required = false) String deptid, + @RequestParam(required = false) String isAlarm) { + + DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope(); + List wellList = new ArrayList(); + + if (null == isAlarm || isAlarm.equals("") == true) { + // isAlarm参数为空,查询所有的闸井 + + // 查询并添加当前部门的闸井 + List myList = busWellInfoService.getWellList(dataScope, keywords, wellType, deptid); + if (null != myList && myList.isEmpty() == false) { + wellList.addAll(myList); + } + + /** + * 不需要了,由dataScope控制权限 + // 查询并添加下级部门的闸井 + List subDepts = permissionService.getSubDepts(deptid,null); + if (null != subDepts && subDepts.isEmpty() == false) { + for (Long subDeptId : subDepts) { + List subList = busWellInfoService.getWellList(dataScope, keywords, wellType, String.valueOf(subDeptId)); + if (null != subList && subList.isEmpty() == false) { + wellList.addAll(subList); + } + } + } + */ + } else if (isAlarm.equals("1")) { + // isAlarm = 1 查询所有报警状态的闸井 + wellList = dataAnalysisService.getAlarmWellList(dataScope, keywords, wellType, deptid); + } else { + // isAlarm = 0 查询所有不是报警状态的闸井 + wellList = dataAnalysisService.getNotAlarmWellList(dataScope, keywords, wellType, deptid); + } + + + return ResponseData.success(wellList); + } + + /** + * 获取设备列表 + */ + @RequestMapping(value = "/deviceList") + @ResponseBody + public Object deviceList() { + + DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope(); + List wellList = new ArrayList(); + wellList = busDeviceSupportService.getDeviceList(dataScope); + return ResponseData.success(wellList); + } + + /** + * 获取设备详情 + */ + @RequestMapping(value = "/deviceDetail", method = RequestMethod.GET) + @ResponseBody + public Object deviceDetail(@RequestParam(required = true) Long id) { + if (null == id) { + throw new ServiceException(CoreExceptionEnum.REQUEST_NULL); + } + DeviceInfoDto deviceInfoDto = busDeviceSupportService.selectDeviceById(id); + SuccessResponseData successResult = new SuccessResponseData(); + if (null == deviceInfoDto) { + successResult.setCode(200); + successResult.setMessage("success"); + successResult.setData(new HashMap()); + } else { + // 设置最新的监测数据 + List deviceDataDtoList = dataAnalysisService.getDeviceDatas(deviceInfoDto.getDeviceTypeName(), deviceInfoDto.getDevcode(), deviceInfoDto.getOnlineState()); + if (CollectionUtil.isNotEmpty(deviceDataDtoList)) { + deviceInfoDto.setRealtimeData(deviceDataDtoList); + } + successResult.setMessage("success"); + successResult.setData(deviceInfoDto); + } + return successResult; + } + + + /** + * 获取闸井详情 + */ + @RequestMapping(value = "/wellInfo", method = RequestMethod.GET) + @ResponseBody + public Object wellInfo(@RequestParam(required = true) Long id) { + if (null == id) { + throw new ServiceException(CoreExceptionEnum.REQUEST_NULL); + } + + BusWellInfo busWellInfo = busWellInfoService.getById(id); + SuccessResponseData successResult = new SuccessResponseData(); + if (null == busWellInfo) { + successResult.setCode(200); + successResult.setMessage("success"); + successResult.setData(new HashMap()); + } else { + BusWellInfoDto busWellInfoDto = new BusWellInfoDto(); + busWellInfoDto.convertBusWellInfo(busWellInfo); + + // 设置字典值 + busWellInfoDto.setBfztName(dictService.getDictNameByCode("bfzt", busWellInfo.getBfzt())); + busWellInfoDto.setWellTypeName(dictService.getDictNameByCode("sluicewellType", busWellInfo.getWellType())); + busWellInfoDto.setDeptName(permissionService.getDeptService().getDeptName(busWellInfo.getDeptid())); + + // 设置最新的监测数据 + List watchDataDtos = dataAnalysisService.getWatchDatas(id); + if (null != watchDataDtos && watchDataDtos.isEmpty() == false) { + for (WatchDataDto watchDataDto : watchDataDtos) { + watchDataDto.setValue(watchDataDto.getData()); + } + } + + busWellInfoDto.setWatchData(watchDataDtos); + + successResult.setMessage("success"); + successResult.setData(busWellInfoDto.toMap()); + } + return successResult; + } + + +} diff --git a/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/controller/BusMapOverviewController.java b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/controller/BusMapOverviewController.java new file mode 100644 index 0000000..9d9f43c --- /dev/null +++ b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/controller/BusMapOverviewController.java @@ -0,0 +1,182 @@ +package com.casic.missiles.modular.system.controller; + +import cn.hutool.core.collection.CollectionUtil; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.model.exception.ServiceException; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.model.response.SuccessResponseData; +import com.casic.missiles.modular.system.dto.BusWellInfoDto; +import com.casic.missiles.modular.system.dto.DeviceDataDto; +import com.casic.missiles.modular.system.dto.DeviceInfoDto; +import com.casic.missiles.modular.system.dto.WatchDataDto; +import com.casic.missiles.modular.system.model.BusWellInfo; +import com.casic.missiles.modular.system.service.IBusDeviceSupportService; +import com.casic.missiles.modular.system.service.IBusWellInfoSupportService; +import com.casic.missiles.modular.system.service.IDataAnalysisService; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.ResponseBody; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; + +/** + * 地图总览模块的controller + * + * @author tanyue + * @Date 2019-05-13 19:20:29 + */ +@Controller +@RequestMapping("/overview") +public class BusMapOverviewController extends BaseController { + + @Resource + private AbstractPermissionContext permissionService; + @Resource + private AbstractDictService dictService; + @Resource + private IBusWellInfoSupportService busWellInfoService; + @Resource + private IDataAnalysisService dataAnalysisService; + @Resource + private IBusDeviceSupportService busDeviceSupportService; + + /** + * 获取列表 + */ + @RequestMapping(value = "/wellList") + @ResponseBody + public Object wellList(@RequestParam(required = false) String keywords, + @RequestParam(required = false) String wellType, + @RequestParam(required = false) String deptid, + @RequestParam(required = false) String isAlarm) { + + DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope(); + List wellList = new ArrayList(); + + if (null == isAlarm || isAlarm.equals("") == true) { + // isAlarm参数为空,查询所有的闸井 + + // 查询并添加当前部门的闸井 + List myList = busWellInfoService.getWellList(dataScope, keywords, wellType, deptid); + if (null != myList && myList.isEmpty() == false) { + wellList.addAll(myList); + } + + /** + * 不需要了,由dataScope控制权限 + // 查询并添加下级部门的闸井 + List subDepts = permissionService.getSubDepts(deptid,null); + if (null != subDepts && subDepts.isEmpty() == false) { + for (Long subDeptId : subDepts) { + List subList = busWellInfoService.getWellList(dataScope, keywords, wellType, String.valueOf(subDeptId)); + if (null != subList && subList.isEmpty() == false) { + wellList.addAll(subList); + } + } + } + */ + } else if (isAlarm.equals("1")) { + // isAlarm = 1 查询所有报警状态的闸井 + wellList = dataAnalysisService.getAlarmWellList(dataScope, keywords, wellType, deptid); + } else { + // isAlarm = 0 查询所有不是报警状态的闸井 + wellList = dataAnalysisService.getNotAlarmWellList(dataScope, keywords, wellType, deptid); + } + + + return ResponseData.success(wellList); + } + + /** + * 获取设备列表 + */ + @RequestMapping(value = "/deviceList") + @ResponseBody + public Object deviceList() { + + DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope(); + List wellList = new ArrayList(); + wellList = busDeviceSupportService.getDeviceList(dataScope); + return ResponseData.success(wellList); + } + + /** + * 获取设备详情 + */ + @RequestMapping(value = "/deviceDetail", method = RequestMethod.GET) + @ResponseBody + public Object deviceDetail(@RequestParam(required = true) Long id) { + if (null == id) { + throw new ServiceException(CoreExceptionEnum.REQUEST_NULL); + } + DeviceInfoDto deviceInfoDto = busDeviceSupportService.selectDeviceById(id); + SuccessResponseData successResult = new SuccessResponseData(); + if (null == deviceInfoDto) { + successResult.setCode(200); + successResult.setMessage("success"); + successResult.setData(new HashMap()); + } else { + // 设置最新的监测数据 + List deviceDataDtoList = dataAnalysisService.getDeviceDatas(deviceInfoDto.getDeviceTypeName(), deviceInfoDto.getDevcode(), deviceInfoDto.getOnlineState()); + if (CollectionUtil.isNotEmpty(deviceDataDtoList)) { + deviceInfoDto.setRealtimeData(deviceDataDtoList); + } + successResult.setMessage("success"); + successResult.setData(deviceInfoDto); + } + return successResult; + } + + + /** + * 获取闸井详情 + */ + @RequestMapping(value = "/wellInfo", method = RequestMethod.GET) + @ResponseBody + public Object wellInfo(@RequestParam(required = true) Long id) { + if (null == id) { + throw new ServiceException(CoreExceptionEnum.REQUEST_NULL); + } + + BusWellInfo busWellInfo = busWellInfoService.getById(id); + SuccessResponseData successResult = new SuccessResponseData(); + if (null == busWellInfo) { + successResult.setCode(200); + successResult.setMessage("success"); + successResult.setData(new HashMap()); + } else { + BusWellInfoDto busWellInfoDto = new BusWellInfoDto(); + busWellInfoDto.convertBusWellInfo(busWellInfo); + + // 设置字典值 + busWellInfoDto.setBfztName(dictService.getDictNameByCode("bfzt", busWellInfo.getBfzt())); + busWellInfoDto.setWellTypeName(dictService.getDictNameByCode("sluicewellType", busWellInfo.getWellType())); + busWellInfoDto.setDeptName(permissionService.getDeptService().getDeptName(busWellInfo.getDeptid())); + + // 设置最新的监测数据 + List watchDataDtos = dataAnalysisService.getWatchDatas(id); + if (null != watchDataDtos && watchDataDtos.isEmpty() == false) { + for (WatchDataDto watchDataDto : watchDataDtos) { + watchDataDto.setValue(watchDataDto.getData()); + } + } + + busWellInfoDto.setWatchData(watchDataDtos); + + successResult.setMessage("success"); + successResult.setData(busWellInfoDto.toMap()); + } + return successResult; + } + + +} diff --git a/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/controller/WellDataController.java b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/controller/WellDataController.java new file mode 100644 index 0000000..c33ec7d --- /dev/null +++ b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/controller/WellDataController.java @@ -0,0 +1,81 @@ +package com.casic.missiles.modular.system.controller; + +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.model.exception.ServiceException; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.model.response.SuccessResponseData; +import com.casic.missiles.modular.system.service.IDataAnalysisService; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.ResponseBody; + +import javax.annotation.Resource; +import java.util.List; +import java.util.Set; + +@Controller +@RequestMapping("/well") +public class WellDataController extends BaseController { + @Resource + private AbstractPermissionContext permissionService; + @Resource + private IDataAnalysisService dataAnalysisService; + + + /** + * 获取闸井设备数据 + */ + @RequestMapping(value = "/watchDataByWell", method = RequestMethod.GET) + @ResponseBody + public Object watchDataByWell(Long id) { + if (null == id) { + throw new ServiceException(CoreExceptionEnum.REQUEST_NULL); + } + SuccessResponseData resultData = new SuccessResponseData(); + resultData.setData(dataAnalysisService.getWatchDatas(id)); + + return resultData; + } + + /** + * 根据布防状态统计闸井数量接口 + */ + @RequestMapping(value = "/countByBfzt", method = RequestMethod.GET) + @ResponseBody + public Object countByBfzt() { + DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope(); + Set roleTipes = permissionService.getAuthService().getLoginUser().getRoleTips(); + List deptIds = null; + Boolean isApp = false; + if (roleTipes.contains("leader") || roleTipes.contains("member")) { + deptIds = permissionService.getDeptService().getIdsByPid(permissionService.getAuthService().getLoginUser().getDeptId(), null); + deptIds.add(permissionService.getAuthService().getLoginUser().getDeptId()); + isApp = true; + } else { + deptIds = dataScope.getDeptIds(); + isApp = false; + } + SuccessResponseData resultData = new SuccessResponseData(); + dataAnalysisService.getBfztCountData(deptIds, isApp); + resultData.setData(dataAnalysisService.getBfztCountData(deptIds, isApp)); + return resultData; + } + + /** + * 获取布防类型(APP用) + */ + @RequestMapping(value = "/bfType", method = RequestMethod.GET) + @ResponseBody + public Object bfType(Long id) { + if (null == id) { + throw new ServiceException(CoreExceptionEnum.REQUEST_NULL); + } + SuccessResponseData resultData = new SuccessResponseData(); + resultData.setData(dataAnalysisService.getWatchDatas(id)); + return resultData; + } + +} diff --git a/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/controller/BusMapOverviewController.java b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/controller/BusMapOverviewController.java new file mode 100644 index 0000000..9d9f43c --- /dev/null +++ b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/controller/BusMapOverviewController.java @@ -0,0 +1,182 @@ +package com.casic.missiles.modular.system.controller; + +import cn.hutool.core.collection.CollectionUtil; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.model.exception.ServiceException; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.model.response.SuccessResponseData; +import com.casic.missiles.modular.system.dto.BusWellInfoDto; +import com.casic.missiles.modular.system.dto.DeviceDataDto; +import com.casic.missiles.modular.system.dto.DeviceInfoDto; +import com.casic.missiles.modular.system.dto.WatchDataDto; +import com.casic.missiles.modular.system.model.BusWellInfo; +import com.casic.missiles.modular.system.service.IBusDeviceSupportService; +import com.casic.missiles.modular.system.service.IBusWellInfoSupportService; +import com.casic.missiles.modular.system.service.IDataAnalysisService; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.ResponseBody; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; + +/** + * 地图总览模块的controller + * + * @author tanyue + * @Date 2019-05-13 19:20:29 + */ +@Controller +@RequestMapping("/overview") +public class BusMapOverviewController extends BaseController { + + @Resource + private AbstractPermissionContext permissionService; + @Resource + private AbstractDictService dictService; + @Resource + private IBusWellInfoSupportService busWellInfoService; + @Resource + private IDataAnalysisService dataAnalysisService; + @Resource + private IBusDeviceSupportService busDeviceSupportService; + + /** + * 获取列表 + */ + @RequestMapping(value = "/wellList") + @ResponseBody + public Object wellList(@RequestParam(required = false) String keywords, + @RequestParam(required = false) String wellType, + @RequestParam(required = false) String deptid, + @RequestParam(required = false) String isAlarm) { + + DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope(); + List wellList = new ArrayList(); + + if (null == isAlarm || isAlarm.equals("") == true) { + // isAlarm参数为空,查询所有的闸井 + + // 查询并添加当前部门的闸井 + List myList = busWellInfoService.getWellList(dataScope, keywords, wellType, deptid); + if (null != myList && myList.isEmpty() == false) { + wellList.addAll(myList); + } + + /** + * 不需要了,由dataScope控制权限 + // 查询并添加下级部门的闸井 + List subDepts = permissionService.getSubDepts(deptid,null); + if (null != subDepts && subDepts.isEmpty() == false) { + for (Long subDeptId : subDepts) { + List subList = busWellInfoService.getWellList(dataScope, keywords, wellType, String.valueOf(subDeptId)); + if (null != subList && subList.isEmpty() == false) { + wellList.addAll(subList); + } + } + } + */ + } else if (isAlarm.equals("1")) { + // isAlarm = 1 查询所有报警状态的闸井 + wellList = dataAnalysisService.getAlarmWellList(dataScope, keywords, wellType, deptid); + } else { + // isAlarm = 0 查询所有不是报警状态的闸井 + wellList = dataAnalysisService.getNotAlarmWellList(dataScope, keywords, wellType, deptid); + } + + + return ResponseData.success(wellList); + } + + /** + * 获取设备列表 + */ + @RequestMapping(value = "/deviceList") + @ResponseBody + public Object deviceList() { + + DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope(); + List wellList = new ArrayList(); + wellList = busDeviceSupportService.getDeviceList(dataScope); + return ResponseData.success(wellList); + } + + /** + * 获取设备详情 + */ + @RequestMapping(value = "/deviceDetail", method = RequestMethod.GET) + @ResponseBody + public Object deviceDetail(@RequestParam(required = true) Long id) { + if (null == id) { + throw new ServiceException(CoreExceptionEnum.REQUEST_NULL); + } + DeviceInfoDto deviceInfoDto = busDeviceSupportService.selectDeviceById(id); + SuccessResponseData successResult = new SuccessResponseData(); + if (null == deviceInfoDto) { + successResult.setCode(200); + successResult.setMessage("success"); + successResult.setData(new HashMap()); + } else { + // 设置最新的监测数据 + List deviceDataDtoList = dataAnalysisService.getDeviceDatas(deviceInfoDto.getDeviceTypeName(), deviceInfoDto.getDevcode(), deviceInfoDto.getOnlineState()); + if (CollectionUtil.isNotEmpty(deviceDataDtoList)) { + deviceInfoDto.setRealtimeData(deviceDataDtoList); + } + successResult.setMessage("success"); + successResult.setData(deviceInfoDto); + } + return successResult; + } + + + /** + * 获取闸井详情 + */ + @RequestMapping(value = "/wellInfo", method = RequestMethod.GET) + @ResponseBody + public Object wellInfo(@RequestParam(required = true) Long id) { + if (null == id) { + throw new ServiceException(CoreExceptionEnum.REQUEST_NULL); + } + + BusWellInfo busWellInfo = busWellInfoService.getById(id); + SuccessResponseData successResult = new SuccessResponseData(); + if (null == busWellInfo) { + successResult.setCode(200); + successResult.setMessage("success"); + successResult.setData(new HashMap()); + } else { + BusWellInfoDto busWellInfoDto = new BusWellInfoDto(); + busWellInfoDto.convertBusWellInfo(busWellInfo); + + // 设置字典值 + busWellInfoDto.setBfztName(dictService.getDictNameByCode("bfzt", busWellInfo.getBfzt())); + busWellInfoDto.setWellTypeName(dictService.getDictNameByCode("sluicewellType", busWellInfo.getWellType())); + busWellInfoDto.setDeptName(permissionService.getDeptService().getDeptName(busWellInfo.getDeptid())); + + // 设置最新的监测数据 + List watchDataDtos = dataAnalysisService.getWatchDatas(id); + if (null != watchDataDtos && watchDataDtos.isEmpty() == false) { + for (WatchDataDto watchDataDto : watchDataDtos) { + watchDataDto.setValue(watchDataDto.getData()); + } + } + + busWellInfoDto.setWatchData(watchDataDtos); + + successResult.setMessage("success"); + successResult.setData(busWellInfoDto.toMap()); + } + return successResult; + } + + +} diff --git a/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/controller/WellDataController.java b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/controller/WellDataController.java new file mode 100644 index 0000000..c33ec7d --- /dev/null +++ b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/controller/WellDataController.java @@ -0,0 +1,81 @@ +package com.casic.missiles.modular.system.controller; + +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.model.exception.ServiceException; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.model.response.SuccessResponseData; +import com.casic.missiles.modular.system.service.IDataAnalysisService; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.ResponseBody; + +import javax.annotation.Resource; +import java.util.List; +import java.util.Set; + +@Controller +@RequestMapping("/well") +public class WellDataController extends BaseController { + @Resource + private AbstractPermissionContext permissionService; + @Resource + private IDataAnalysisService dataAnalysisService; + + + /** + * 获取闸井设备数据 + */ + @RequestMapping(value = "/watchDataByWell", method = RequestMethod.GET) + @ResponseBody + public Object watchDataByWell(Long id) { + if (null == id) { + throw new ServiceException(CoreExceptionEnum.REQUEST_NULL); + } + SuccessResponseData resultData = new SuccessResponseData(); + resultData.setData(dataAnalysisService.getWatchDatas(id)); + + return resultData; + } + + /** + * 根据布防状态统计闸井数量接口 + */ + @RequestMapping(value = "/countByBfzt", method = RequestMethod.GET) + @ResponseBody + public Object countByBfzt() { + DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope(); + Set roleTipes = permissionService.getAuthService().getLoginUser().getRoleTips(); + List deptIds = null; + Boolean isApp = false; + if (roleTipes.contains("leader") || roleTipes.contains("member")) { + deptIds = permissionService.getDeptService().getIdsByPid(permissionService.getAuthService().getLoginUser().getDeptId(), null); + deptIds.add(permissionService.getAuthService().getLoginUser().getDeptId()); + isApp = true; + } else { + deptIds = dataScope.getDeptIds(); + isApp = false; + } + SuccessResponseData resultData = new SuccessResponseData(); + dataAnalysisService.getBfztCountData(deptIds, isApp); + resultData.setData(dataAnalysisService.getBfztCountData(deptIds, isApp)); + return resultData; + } + + /** + * 获取布防类型(APP用) + */ + @RequestMapping(value = "/bfType", method = RequestMethod.GET) + @ResponseBody + public Object bfType(Long id) { + if (null == id) { + throw new ServiceException(CoreExceptionEnum.REQUEST_NULL); + } + SuccessResponseData resultData = new SuccessResponseData(); + resultData.setData(dataAnalysisService.getWatchDatas(id)); + return resultData; + } + +} diff --git a/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/dao/DataAnalysisMapper.java b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/dao/DataAnalysisMapper.java new file mode 100644 index 0000000..149fb82 --- /dev/null +++ b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/dao/DataAnalysisMapper.java @@ -0,0 +1,48 @@ +package com.casic.missiles.modular.system.dao; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.*; +import com.casic.missiles.modular.system.model.BusWellInfo; +import com.casic.missiles.core.datascope.DataScope; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * 闸井信息表 Mapper 接口 + *

+ * + * @author stylefeng123 + * @since 2019-05-13 + */ +public interface DataAnalysisMapper extends BaseMapper { + + List getAlarmWellList(@Param("scope") DataScope dataScope, @Param("keywords") String keywords, @Param("wellType") String deviceType, @Param("deptid") String deptid); + + List getNotAlarmWellList(@Param("scope") DataScope dataScope, @Param("keywords") String keywords, @Param("wellType") String deviceType, @Param("deptid") String deptid); + + DeviceData wellcoverData(@Param("devcode") String devcode); + + DeviceData liquidData(@Param("devcode") String devcode); + + DeviceData harmfulgasData(@Param("devcode") String devcode); + + DeviceData gasData(@Param("devcode") String devcode); + + DeviceData temphumData(@Param("devcode") String devcode); + + DeviceData digData(@Param("devcode") String devcode); + + DeviceData noiseData(@Param("devcode") String devcode); + + DeviceData wellcoverlocaData(@Param("devcode") String devcode); + + DeviceData lgGasData(@Param("devcode") String devcode);//燃气液位 + + DeviceData lgLiquidData(@Param("devcode") String devcode);//燃气液位 + + + BfztCountDataDto bfztCountData(@Param("deptIds") List deptIds, @Param("isApp") Boolean isApp); +} diff --git a/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/controller/BusMapOverviewController.java b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/controller/BusMapOverviewController.java new file mode 100644 index 0000000..9d9f43c --- /dev/null +++ b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/controller/BusMapOverviewController.java @@ -0,0 +1,182 @@ +package com.casic.missiles.modular.system.controller; + +import cn.hutool.core.collection.CollectionUtil; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.model.exception.ServiceException; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.model.response.SuccessResponseData; +import com.casic.missiles.modular.system.dto.BusWellInfoDto; +import com.casic.missiles.modular.system.dto.DeviceDataDto; +import com.casic.missiles.modular.system.dto.DeviceInfoDto; +import com.casic.missiles.modular.system.dto.WatchDataDto; +import com.casic.missiles.modular.system.model.BusWellInfo; +import com.casic.missiles.modular.system.service.IBusDeviceSupportService; +import com.casic.missiles.modular.system.service.IBusWellInfoSupportService; +import com.casic.missiles.modular.system.service.IDataAnalysisService; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.ResponseBody; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; + +/** + * 地图总览模块的controller + * + * @author tanyue + * @Date 2019-05-13 19:20:29 + */ +@Controller +@RequestMapping("/overview") +public class BusMapOverviewController extends BaseController { + + @Resource + private AbstractPermissionContext permissionService; + @Resource + private AbstractDictService dictService; + @Resource + private IBusWellInfoSupportService busWellInfoService; + @Resource + private IDataAnalysisService dataAnalysisService; + @Resource + private IBusDeviceSupportService busDeviceSupportService; + + /** + * 获取列表 + */ + @RequestMapping(value = "/wellList") + @ResponseBody + public Object wellList(@RequestParam(required = false) String keywords, + @RequestParam(required = false) String wellType, + @RequestParam(required = false) String deptid, + @RequestParam(required = false) String isAlarm) { + + DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope(); + List wellList = new ArrayList(); + + if (null == isAlarm || isAlarm.equals("") == true) { + // isAlarm参数为空,查询所有的闸井 + + // 查询并添加当前部门的闸井 + List myList = busWellInfoService.getWellList(dataScope, keywords, wellType, deptid); + if (null != myList && myList.isEmpty() == false) { + wellList.addAll(myList); + } + + /** + * 不需要了,由dataScope控制权限 + // 查询并添加下级部门的闸井 + List subDepts = permissionService.getSubDepts(deptid,null); + if (null != subDepts && subDepts.isEmpty() == false) { + for (Long subDeptId : subDepts) { + List subList = busWellInfoService.getWellList(dataScope, keywords, wellType, String.valueOf(subDeptId)); + if (null != subList && subList.isEmpty() == false) { + wellList.addAll(subList); + } + } + } + */ + } else if (isAlarm.equals("1")) { + // isAlarm = 1 查询所有报警状态的闸井 + wellList = dataAnalysisService.getAlarmWellList(dataScope, keywords, wellType, deptid); + } else { + // isAlarm = 0 查询所有不是报警状态的闸井 + wellList = dataAnalysisService.getNotAlarmWellList(dataScope, keywords, wellType, deptid); + } + + + return ResponseData.success(wellList); + } + + /** + * 获取设备列表 + */ + @RequestMapping(value = "/deviceList") + @ResponseBody + public Object deviceList() { + + DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope(); + List wellList = new ArrayList(); + wellList = busDeviceSupportService.getDeviceList(dataScope); + return ResponseData.success(wellList); + } + + /** + * 获取设备详情 + */ + @RequestMapping(value = "/deviceDetail", method = RequestMethod.GET) + @ResponseBody + public Object deviceDetail(@RequestParam(required = true) Long id) { + if (null == id) { + throw new ServiceException(CoreExceptionEnum.REQUEST_NULL); + } + DeviceInfoDto deviceInfoDto = busDeviceSupportService.selectDeviceById(id); + SuccessResponseData successResult = new SuccessResponseData(); + if (null == deviceInfoDto) { + successResult.setCode(200); + successResult.setMessage("success"); + successResult.setData(new HashMap()); + } else { + // 设置最新的监测数据 + List deviceDataDtoList = dataAnalysisService.getDeviceDatas(deviceInfoDto.getDeviceTypeName(), deviceInfoDto.getDevcode(), deviceInfoDto.getOnlineState()); + if (CollectionUtil.isNotEmpty(deviceDataDtoList)) { + deviceInfoDto.setRealtimeData(deviceDataDtoList); + } + successResult.setMessage("success"); + successResult.setData(deviceInfoDto); + } + return successResult; + } + + + /** + * 获取闸井详情 + */ + @RequestMapping(value = "/wellInfo", method = RequestMethod.GET) + @ResponseBody + public Object wellInfo(@RequestParam(required = true) Long id) { + if (null == id) { + throw new ServiceException(CoreExceptionEnum.REQUEST_NULL); + } + + BusWellInfo busWellInfo = busWellInfoService.getById(id); + SuccessResponseData successResult = new SuccessResponseData(); + if (null == busWellInfo) { + successResult.setCode(200); + successResult.setMessage("success"); + successResult.setData(new HashMap()); + } else { + BusWellInfoDto busWellInfoDto = new BusWellInfoDto(); + busWellInfoDto.convertBusWellInfo(busWellInfo); + + // 设置字典值 + busWellInfoDto.setBfztName(dictService.getDictNameByCode("bfzt", busWellInfo.getBfzt())); + busWellInfoDto.setWellTypeName(dictService.getDictNameByCode("sluicewellType", busWellInfo.getWellType())); + busWellInfoDto.setDeptName(permissionService.getDeptService().getDeptName(busWellInfo.getDeptid())); + + // 设置最新的监测数据 + List watchDataDtos = dataAnalysisService.getWatchDatas(id); + if (null != watchDataDtos && watchDataDtos.isEmpty() == false) { + for (WatchDataDto watchDataDto : watchDataDtos) { + watchDataDto.setValue(watchDataDto.getData()); + } + } + + busWellInfoDto.setWatchData(watchDataDtos); + + successResult.setMessage("success"); + successResult.setData(busWellInfoDto.toMap()); + } + return successResult; + } + + +} diff --git a/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/controller/WellDataController.java b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/controller/WellDataController.java new file mode 100644 index 0000000..c33ec7d --- /dev/null +++ b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/controller/WellDataController.java @@ -0,0 +1,81 @@ +package com.casic.missiles.modular.system.controller; + +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.model.exception.ServiceException; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.model.response.SuccessResponseData; +import com.casic.missiles.modular.system.service.IDataAnalysisService; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.ResponseBody; + +import javax.annotation.Resource; +import java.util.List; +import java.util.Set; + +@Controller +@RequestMapping("/well") +public class WellDataController extends BaseController { + @Resource + private AbstractPermissionContext permissionService; + @Resource + private IDataAnalysisService dataAnalysisService; + + + /** + * 获取闸井设备数据 + */ + @RequestMapping(value = "/watchDataByWell", method = RequestMethod.GET) + @ResponseBody + public Object watchDataByWell(Long id) { + if (null == id) { + throw new ServiceException(CoreExceptionEnum.REQUEST_NULL); + } + SuccessResponseData resultData = new SuccessResponseData(); + resultData.setData(dataAnalysisService.getWatchDatas(id)); + + return resultData; + } + + /** + * 根据布防状态统计闸井数量接口 + */ + @RequestMapping(value = "/countByBfzt", method = RequestMethod.GET) + @ResponseBody + public Object countByBfzt() { + DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope(); + Set roleTipes = permissionService.getAuthService().getLoginUser().getRoleTips(); + List deptIds = null; + Boolean isApp = false; + if (roleTipes.contains("leader") || roleTipes.contains("member")) { + deptIds = permissionService.getDeptService().getIdsByPid(permissionService.getAuthService().getLoginUser().getDeptId(), null); + deptIds.add(permissionService.getAuthService().getLoginUser().getDeptId()); + isApp = true; + } else { + deptIds = dataScope.getDeptIds(); + isApp = false; + } + SuccessResponseData resultData = new SuccessResponseData(); + dataAnalysisService.getBfztCountData(deptIds, isApp); + resultData.setData(dataAnalysisService.getBfztCountData(deptIds, isApp)); + return resultData; + } + + /** + * 获取布防类型(APP用) + */ + @RequestMapping(value = "/bfType", method = RequestMethod.GET) + @ResponseBody + public Object bfType(Long id) { + if (null == id) { + throw new ServiceException(CoreExceptionEnum.REQUEST_NULL); + } + SuccessResponseData resultData = new SuccessResponseData(); + resultData.setData(dataAnalysisService.getWatchDatas(id)); + return resultData; + } + +} diff --git a/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/dao/DataAnalysisMapper.java b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/dao/DataAnalysisMapper.java new file mode 100644 index 0000000..149fb82 --- /dev/null +++ b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/dao/DataAnalysisMapper.java @@ -0,0 +1,48 @@ +package com.casic.missiles.modular.system.dao; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.*; +import com.casic.missiles.modular.system.model.BusWellInfo; +import com.casic.missiles.core.datascope.DataScope; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * 闸井信息表 Mapper 接口 + *

+ * + * @author stylefeng123 + * @since 2019-05-13 + */ +public interface DataAnalysisMapper extends BaseMapper { + + List getAlarmWellList(@Param("scope") DataScope dataScope, @Param("keywords") String keywords, @Param("wellType") String deviceType, @Param("deptid") String deptid); + + List getNotAlarmWellList(@Param("scope") DataScope dataScope, @Param("keywords") String keywords, @Param("wellType") String deviceType, @Param("deptid") String deptid); + + DeviceData wellcoverData(@Param("devcode") String devcode); + + DeviceData liquidData(@Param("devcode") String devcode); + + DeviceData harmfulgasData(@Param("devcode") String devcode); + + DeviceData gasData(@Param("devcode") String devcode); + + DeviceData temphumData(@Param("devcode") String devcode); + + DeviceData digData(@Param("devcode") String devcode); + + DeviceData noiseData(@Param("devcode") String devcode); + + DeviceData wellcoverlocaData(@Param("devcode") String devcode); + + DeviceData lgGasData(@Param("devcode") String devcode);//燃气液位 + + DeviceData lgLiquidData(@Param("devcode") String devcode);//燃气液位 + + + BfztCountDataDto bfztCountData(@Param("deptIds") List deptIds, @Param("isApp") Boolean isApp); +} diff --git a/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/dao/mapping/DataAnalysisMapper.xml b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/dao/mapping/DataAnalysisMapper.xml new file mode 100644 index 0000000..6d7edb3 --- /dev/null +++ b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/dao/mapping/DataAnalysisMapper.xml @@ -0,0 +1,170 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ID + AS id, WELL_CODE AS wellCode, WELL_NAME AS wellName, DEEP AS deep, COORDINATE_X AS coordinateX, COORDINATE_Y AS coordinateY, LAT_BAIDU AS latBaidu, LNG_BAIDU AS lngBaidu, LNG_GAODE AS lngGaode, LAT_GAODE AS latGaode, AREA AS area, POSITION AS position, DEPTID AS deptid, PHOTOS AS photos, NOTES AS notes, WELL_TYPE AS wellType, STAFF AS staff, TEL AS tel, TS AS ts, VALID AS valid, BFZT AS bfzt, RESPONSIBLE_DEPT AS responsibleDept + + + + ID + AS id, WELL_CODE AS wellCode, WELL_NAME AS wellName, DEEP AS deep, COORDINATE_X AS coordinateX, COORDINATE_Y AS coordinateY, LAT_BAIDU AS latBaidu, LNG_BAIDU AS lngBaidu, LNG_GAODE AS lngGaode, LAT_GAODE AS latGaode, AREA AS area, POSITION AS position, DEPTID AS deptid, PHOTOS AS photos, NOTES AS notes, WELL_TYPE AS wellType, STAFF AS staff, TEL AS tel, TS AS ts, VALID AS valid, BFZT AS bfzt,d1.simplename AS deptName,d2.id AS responsibleDept,d2.simplename AS responsibleDeptName + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/controller/BusMapOverviewController.java b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/controller/BusMapOverviewController.java new file mode 100644 index 0000000..9d9f43c --- /dev/null +++ b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/controller/BusMapOverviewController.java @@ -0,0 +1,182 @@ +package com.casic.missiles.modular.system.controller; + +import cn.hutool.core.collection.CollectionUtil; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.model.exception.ServiceException; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.model.response.SuccessResponseData; +import com.casic.missiles.modular.system.dto.BusWellInfoDto; +import com.casic.missiles.modular.system.dto.DeviceDataDto; +import com.casic.missiles.modular.system.dto.DeviceInfoDto; +import com.casic.missiles.modular.system.dto.WatchDataDto; +import com.casic.missiles.modular.system.model.BusWellInfo; +import com.casic.missiles.modular.system.service.IBusDeviceSupportService; +import com.casic.missiles.modular.system.service.IBusWellInfoSupportService; +import com.casic.missiles.modular.system.service.IDataAnalysisService; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.ResponseBody; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; + +/** + * 地图总览模块的controller + * + * @author tanyue + * @Date 2019-05-13 19:20:29 + */ +@Controller +@RequestMapping("/overview") +public class BusMapOverviewController extends BaseController { + + @Resource + private AbstractPermissionContext permissionService; + @Resource + private AbstractDictService dictService; + @Resource + private IBusWellInfoSupportService busWellInfoService; + @Resource + private IDataAnalysisService dataAnalysisService; + @Resource + private IBusDeviceSupportService busDeviceSupportService; + + /** + * 获取列表 + */ + @RequestMapping(value = "/wellList") + @ResponseBody + public Object wellList(@RequestParam(required = false) String keywords, + @RequestParam(required = false) String wellType, + @RequestParam(required = false) String deptid, + @RequestParam(required = false) String isAlarm) { + + DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope(); + List wellList = new ArrayList(); + + if (null == isAlarm || isAlarm.equals("") == true) { + // isAlarm参数为空,查询所有的闸井 + + // 查询并添加当前部门的闸井 + List myList = busWellInfoService.getWellList(dataScope, keywords, wellType, deptid); + if (null != myList && myList.isEmpty() == false) { + wellList.addAll(myList); + } + + /** + * 不需要了,由dataScope控制权限 + // 查询并添加下级部门的闸井 + List subDepts = permissionService.getSubDepts(deptid,null); + if (null != subDepts && subDepts.isEmpty() == false) { + for (Long subDeptId : subDepts) { + List subList = busWellInfoService.getWellList(dataScope, keywords, wellType, String.valueOf(subDeptId)); + if (null != subList && subList.isEmpty() == false) { + wellList.addAll(subList); + } + } + } + */ + } else if (isAlarm.equals("1")) { + // isAlarm = 1 查询所有报警状态的闸井 + wellList = dataAnalysisService.getAlarmWellList(dataScope, keywords, wellType, deptid); + } else { + // isAlarm = 0 查询所有不是报警状态的闸井 + wellList = dataAnalysisService.getNotAlarmWellList(dataScope, keywords, wellType, deptid); + } + + + return ResponseData.success(wellList); + } + + /** + * 获取设备列表 + */ + @RequestMapping(value = "/deviceList") + @ResponseBody + public Object deviceList() { + + DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope(); + List wellList = new ArrayList(); + wellList = busDeviceSupportService.getDeviceList(dataScope); + return ResponseData.success(wellList); + } + + /** + * 获取设备详情 + */ + @RequestMapping(value = "/deviceDetail", method = RequestMethod.GET) + @ResponseBody + public Object deviceDetail(@RequestParam(required = true) Long id) { + if (null == id) { + throw new ServiceException(CoreExceptionEnum.REQUEST_NULL); + } + DeviceInfoDto deviceInfoDto = busDeviceSupportService.selectDeviceById(id); + SuccessResponseData successResult = new SuccessResponseData(); + if (null == deviceInfoDto) { + successResult.setCode(200); + successResult.setMessage("success"); + successResult.setData(new HashMap()); + } else { + // 设置最新的监测数据 + List deviceDataDtoList = dataAnalysisService.getDeviceDatas(deviceInfoDto.getDeviceTypeName(), deviceInfoDto.getDevcode(), deviceInfoDto.getOnlineState()); + if (CollectionUtil.isNotEmpty(deviceDataDtoList)) { + deviceInfoDto.setRealtimeData(deviceDataDtoList); + } + successResult.setMessage("success"); + successResult.setData(deviceInfoDto); + } + return successResult; + } + + + /** + * 获取闸井详情 + */ + @RequestMapping(value = "/wellInfo", method = RequestMethod.GET) + @ResponseBody + public Object wellInfo(@RequestParam(required = true) Long id) { + if (null == id) { + throw new ServiceException(CoreExceptionEnum.REQUEST_NULL); + } + + BusWellInfo busWellInfo = busWellInfoService.getById(id); + SuccessResponseData successResult = new SuccessResponseData(); + if (null == busWellInfo) { + successResult.setCode(200); + successResult.setMessage("success"); + successResult.setData(new HashMap()); + } else { + BusWellInfoDto busWellInfoDto = new BusWellInfoDto(); + busWellInfoDto.convertBusWellInfo(busWellInfo); + + // 设置字典值 + busWellInfoDto.setBfztName(dictService.getDictNameByCode("bfzt", busWellInfo.getBfzt())); + busWellInfoDto.setWellTypeName(dictService.getDictNameByCode("sluicewellType", busWellInfo.getWellType())); + busWellInfoDto.setDeptName(permissionService.getDeptService().getDeptName(busWellInfo.getDeptid())); + + // 设置最新的监测数据 + List watchDataDtos = dataAnalysisService.getWatchDatas(id); + if (null != watchDataDtos && watchDataDtos.isEmpty() == false) { + for (WatchDataDto watchDataDto : watchDataDtos) { + watchDataDto.setValue(watchDataDto.getData()); + } + } + + busWellInfoDto.setWatchData(watchDataDtos); + + successResult.setMessage("success"); + successResult.setData(busWellInfoDto.toMap()); + } + return successResult; + } + + +} diff --git a/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/controller/WellDataController.java b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/controller/WellDataController.java new file mode 100644 index 0000000..c33ec7d --- /dev/null +++ b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/controller/WellDataController.java @@ -0,0 +1,81 @@ +package com.casic.missiles.modular.system.controller; + +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.model.exception.ServiceException; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.model.response.SuccessResponseData; +import com.casic.missiles.modular.system.service.IDataAnalysisService; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.ResponseBody; + +import javax.annotation.Resource; +import java.util.List; +import java.util.Set; + +@Controller +@RequestMapping("/well") +public class WellDataController extends BaseController { + @Resource + private AbstractPermissionContext permissionService; + @Resource + private IDataAnalysisService dataAnalysisService; + + + /** + * 获取闸井设备数据 + */ + @RequestMapping(value = "/watchDataByWell", method = RequestMethod.GET) + @ResponseBody + public Object watchDataByWell(Long id) { + if (null == id) { + throw new ServiceException(CoreExceptionEnum.REQUEST_NULL); + } + SuccessResponseData resultData = new SuccessResponseData(); + resultData.setData(dataAnalysisService.getWatchDatas(id)); + + return resultData; + } + + /** + * 根据布防状态统计闸井数量接口 + */ + @RequestMapping(value = "/countByBfzt", method = RequestMethod.GET) + @ResponseBody + public Object countByBfzt() { + DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope(); + Set roleTipes = permissionService.getAuthService().getLoginUser().getRoleTips(); + List deptIds = null; + Boolean isApp = false; + if (roleTipes.contains("leader") || roleTipes.contains("member")) { + deptIds = permissionService.getDeptService().getIdsByPid(permissionService.getAuthService().getLoginUser().getDeptId(), null); + deptIds.add(permissionService.getAuthService().getLoginUser().getDeptId()); + isApp = true; + } else { + deptIds = dataScope.getDeptIds(); + isApp = false; + } + SuccessResponseData resultData = new SuccessResponseData(); + dataAnalysisService.getBfztCountData(deptIds, isApp); + resultData.setData(dataAnalysisService.getBfztCountData(deptIds, isApp)); + return resultData; + } + + /** + * 获取布防类型(APP用) + */ + @RequestMapping(value = "/bfType", method = RequestMethod.GET) + @ResponseBody + public Object bfType(Long id) { + if (null == id) { + throw new ServiceException(CoreExceptionEnum.REQUEST_NULL); + } + SuccessResponseData resultData = new SuccessResponseData(); + resultData.setData(dataAnalysisService.getWatchDatas(id)); + return resultData; + } + +} diff --git a/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/dao/DataAnalysisMapper.java b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/dao/DataAnalysisMapper.java new file mode 100644 index 0000000..149fb82 --- /dev/null +++ b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/dao/DataAnalysisMapper.java @@ -0,0 +1,48 @@ +package com.casic.missiles.modular.system.dao; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.*; +import com.casic.missiles.modular.system.model.BusWellInfo; +import com.casic.missiles.core.datascope.DataScope; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * 闸井信息表 Mapper 接口 + *

+ * + * @author stylefeng123 + * @since 2019-05-13 + */ +public interface DataAnalysisMapper extends BaseMapper { + + List getAlarmWellList(@Param("scope") DataScope dataScope, @Param("keywords") String keywords, @Param("wellType") String deviceType, @Param("deptid") String deptid); + + List getNotAlarmWellList(@Param("scope") DataScope dataScope, @Param("keywords") String keywords, @Param("wellType") String deviceType, @Param("deptid") String deptid); + + DeviceData wellcoverData(@Param("devcode") String devcode); + + DeviceData liquidData(@Param("devcode") String devcode); + + DeviceData harmfulgasData(@Param("devcode") String devcode); + + DeviceData gasData(@Param("devcode") String devcode); + + DeviceData temphumData(@Param("devcode") String devcode); + + DeviceData digData(@Param("devcode") String devcode); + + DeviceData noiseData(@Param("devcode") String devcode); + + DeviceData wellcoverlocaData(@Param("devcode") String devcode); + + DeviceData lgGasData(@Param("devcode") String devcode);//燃气液位 + + DeviceData lgLiquidData(@Param("devcode") String devcode);//燃气液位 + + + BfztCountDataDto bfztCountData(@Param("deptIds") List deptIds, @Param("isApp") Boolean isApp); +} diff --git a/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/dao/mapping/DataAnalysisMapper.xml b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/dao/mapping/DataAnalysisMapper.xml new file mode 100644 index 0000000..6d7edb3 --- /dev/null +++ b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/dao/mapping/DataAnalysisMapper.xml @@ -0,0 +1,170 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ID + AS id, WELL_CODE AS wellCode, WELL_NAME AS wellName, DEEP AS deep, COORDINATE_X AS coordinateX, COORDINATE_Y AS coordinateY, LAT_BAIDU AS latBaidu, LNG_BAIDU AS lngBaidu, LNG_GAODE AS lngGaode, LAT_GAODE AS latGaode, AREA AS area, POSITION AS position, DEPTID AS deptid, PHOTOS AS photos, NOTES AS notes, WELL_TYPE AS wellType, STAFF AS staff, TEL AS tel, TS AS ts, VALID AS valid, BFZT AS bfzt, RESPONSIBLE_DEPT AS responsibleDept + + + + ID + AS id, WELL_CODE AS wellCode, WELL_NAME AS wellName, DEEP AS deep, COORDINATE_X AS coordinateX, COORDINATE_Y AS coordinateY, LAT_BAIDU AS latBaidu, LNG_BAIDU AS lngBaidu, LNG_GAODE AS lngGaode, LAT_GAODE AS latGaode, AREA AS area, POSITION AS position, DEPTID AS deptid, PHOTOS AS photos, NOTES AS notes, WELL_TYPE AS wellType, STAFF AS staff, TEL AS tel, TS AS ts, VALID AS valid, BFZT AS bfzt,d1.simplename AS deptName,d2.id AS responsibleDept,d2.simplename AS responsibleDeptName + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/service/IDataAnalysisService.java b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/service/IDataAnalysisService.java new file mode 100644 index 0000000..69c8c60 --- /dev/null +++ b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/service/IDataAnalysisService.java @@ -0,0 +1,51 @@ +package com.casic.missiles.modular.system.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.modular.system.dto.BfztCountDataDto; +import com.casic.missiles.modular.system.dto.BusWellInfoDto; +import com.casic.missiles.modular.system.dto.DeviceDataDto; +import com.casic.missiles.modular.system.dto.WatchDataDto; +import com.casic.missiles.modular.system.model.BusWellInfo; + +import java.util.List; + +/** + * 数据统计服务接口 + * + * @author lwh + */ +public interface IDataAnalysisService extends IService { + /** + * 获取告警闸井列表 + * @param dataScope 数据权限 + * @param keywords 关键字 + * @param wellType 井列表 + * @param deptid 组织id + * @return + */ + List getAlarmWellList(DataScope dataScope, String keywords, String wellType, String deptid); + + /** + * 获取不告警井列表信息 + * @param dataScope 数据权限 + * @param keywords 关键字 + * @param wellType 井类型 + * @param deptid 组织id + * @return + */ + List getNotAlarmWellList(DataScope dataScope, String keywords, String wellType, String deptid); + + /** + * 设备数据查询接口 + * @param devTypename 设备类型 + * @param devcode 设备编码 + * @param status 设备状态 + * @return 设备监测数据 + */ + List getDeviceDatas(String devTypename, String devcode, String status); + List getWatchDatas(Long id); + + + BfztCountDataDto getBfztCountData(List deptIds, Boolean isApp); +} diff --git a/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/controller/BusMapOverviewController.java b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/controller/BusMapOverviewController.java new file mode 100644 index 0000000..9d9f43c --- /dev/null +++ b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/controller/BusMapOverviewController.java @@ -0,0 +1,182 @@ +package com.casic.missiles.modular.system.controller; + +import cn.hutool.core.collection.CollectionUtil; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.model.exception.ServiceException; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.model.response.SuccessResponseData; +import com.casic.missiles.modular.system.dto.BusWellInfoDto; +import com.casic.missiles.modular.system.dto.DeviceDataDto; +import com.casic.missiles.modular.system.dto.DeviceInfoDto; +import com.casic.missiles.modular.system.dto.WatchDataDto; +import com.casic.missiles.modular.system.model.BusWellInfo; +import com.casic.missiles.modular.system.service.IBusDeviceSupportService; +import com.casic.missiles.modular.system.service.IBusWellInfoSupportService; +import com.casic.missiles.modular.system.service.IDataAnalysisService; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.ResponseBody; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; + +/** + * 地图总览模块的controller + * + * @author tanyue + * @Date 2019-05-13 19:20:29 + */ +@Controller +@RequestMapping("/overview") +public class BusMapOverviewController extends BaseController { + + @Resource + private AbstractPermissionContext permissionService; + @Resource + private AbstractDictService dictService; + @Resource + private IBusWellInfoSupportService busWellInfoService; + @Resource + private IDataAnalysisService dataAnalysisService; + @Resource + private IBusDeviceSupportService busDeviceSupportService; + + /** + * 获取列表 + */ + @RequestMapping(value = "/wellList") + @ResponseBody + public Object wellList(@RequestParam(required = false) String keywords, + @RequestParam(required = false) String wellType, + @RequestParam(required = false) String deptid, + @RequestParam(required = false) String isAlarm) { + + DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope(); + List wellList = new ArrayList(); + + if (null == isAlarm || isAlarm.equals("") == true) { + // isAlarm参数为空,查询所有的闸井 + + // 查询并添加当前部门的闸井 + List myList = busWellInfoService.getWellList(dataScope, keywords, wellType, deptid); + if (null != myList && myList.isEmpty() == false) { + wellList.addAll(myList); + } + + /** + * 不需要了,由dataScope控制权限 + // 查询并添加下级部门的闸井 + List subDepts = permissionService.getSubDepts(deptid,null); + if (null != subDepts && subDepts.isEmpty() == false) { + for (Long subDeptId : subDepts) { + List subList = busWellInfoService.getWellList(dataScope, keywords, wellType, String.valueOf(subDeptId)); + if (null != subList && subList.isEmpty() == false) { + wellList.addAll(subList); + } + } + } + */ + } else if (isAlarm.equals("1")) { + // isAlarm = 1 查询所有报警状态的闸井 + wellList = dataAnalysisService.getAlarmWellList(dataScope, keywords, wellType, deptid); + } else { + // isAlarm = 0 查询所有不是报警状态的闸井 + wellList = dataAnalysisService.getNotAlarmWellList(dataScope, keywords, wellType, deptid); + } + + + return ResponseData.success(wellList); + } + + /** + * 获取设备列表 + */ + @RequestMapping(value = "/deviceList") + @ResponseBody + public Object deviceList() { + + DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope(); + List wellList = new ArrayList(); + wellList = busDeviceSupportService.getDeviceList(dataScope); + return ResponseData.success(wellList); + } + + /** + * 获取设备详情 + */ + @RequestMapping(value = "/deviceDetail", method = RequestMethod.GET) + @ResponseBody + public Object deviceDetail(@RequestParam(required = true) Long id) { + if (null == id) { + throw new ServiceException(CoreExceptionEnum.REQUEST_NULL); + } + DeviceInfoDto deviceInfoDto = busDeviceSupportService.selectDeviceById(id); + SuccessResponseData successResult = new SuccessResponseData(); + if (null == deviceInfoDto) { + successResult.setCode(200); + successResult.setMessage("success"); + successResult.setData(new HashMap()); + } else { + // 设置最新的监测数据 + List deviceDataDtoList = dataAnalysisService.getDeviceDatas(deviceInfoDto.getDeviceTypeName(), deviceInfoDto.getDevcode(), deviceInfoDto.getOnlineState()); + if (CollectionUtil.isNotEmpty(deviceDataDtoList)) { + deviceInfoDto.setRealtimeData(deviceDataDtoList); + } + successResult.setMessage("success"); + successResult.setData(deviceInfoDto); + } + return successResult; + } + + + /** + * 获取闸井详情 + */ + @RequestMapping(value = "/wellInfo", method = RequestMethod.GET) + @ResponseBody + public Object wellInfo(@RequestParam(required = true) Long id) { + if (null == id) { + throw new ServiceException(CoreExceptionEnum.REQUEST_NULL); + } + + BusWellInfo busWellInfo = busWellInfoService.getById(id); + SuccessResponseData successResult = new SuccessResponseData(); + if (null == busWellInfo) { + successResult.setCode(200); + successResult.setMessage("success"); + successResult.setData(new HashMap()); + } else { + BusWellInfoDto busWellInfoDto = new BusWellInfoDto(); + busWellInfoDto.convertBusWellInfo(busWellInfo); + + // 设置字典值 + busWellInfoDto.setBfztName(dictService.getDictNameByCode("bfzt", busWellInfo.getBfzt())); + busWellInfoDto.setWellTypeName(dictService.getDictNameByCode("sluicewellType", busWellInfo.getWellType())); + busWellInfoDto.setDeptName(permissionService.getDeptService().getDeptName(busWellInfo.getDeptid())); + + // 设置最新的监测数据 + List watchDataDtos = dataAnalysisService.getWatchDatas(id); + if (null != watchDataDtos && watchDataDtos.isEmpty() == false) { + for (WatchDataDto watchDataDto : watchDataDtos) { + watchDataDto.setValue(watchDataDto.getData()); + } + } + + busWellInfoDto.setWatchData(watchDataDtos); + + successResult.setMessage("success"); + successResult.setData(busWellInfoDto.toMap()); + } + return successResult; + } + + +} diff --git a/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/controller/WellDataController.java b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/controller/WellDataController.java new file mode 100644 index 0000000..c33ec7d --- /dev/null +++ b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/controller/WellDataController.java @@ -0,0 +1,81 @@ +package com.casic.missiles.modular.system.controller; + +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.model.exception.ServiceException; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.model.response.SuccessResponseData; +import com.casic.missiles.modular.system.service.IDataAnalysisService; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.ResponseBody; + +import javax.annotation.Resource; +import java.util.List; +import java.util.Set; + +@Controller +@RequestMapping("/well") +public class WellDataController extends BaseController { + @Resource + private AbstractPermissionContext permissionService; + @Resource + private IDataAnalysisService dataAnalysisService; + + + /** + * 获取闸井设备数据 + */ + @RequestMapping(value = "/watchDataByWell", method = RequestMethod.GET) + @ResponseBody + public Object watchDataByWell(Long id) { + if (null == id) { + throw new ServiceException(CoreExceptionEnum.REQUEST_NULL); + } + SuccessResponseData resultData = new SuccessResponseData(); + resultData.setData(dataAnalysisService.getWatchDatas(id)); + + return resultData; + } + + /** + * 根据布防状态统计闸井数量接口 + */ + @RequestMapping(value = "/countByBfzt", method = RequestMethod.GET) + @ResponseBody + public Object countByBfzt() { + DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope(); + Set roleTipes = permissionService.getAuthService().getLoginUser().getRoleTips(); + List deptIds = null; + Boolean isApp = false; + if (roleTipes.contains("leader") || roleTipes.contains("member")) { + deptIds = permissionService.getDeptService().getIdsByPid(permissionService.getAuthService().getLoginUser().getDeptId(), null); + deptIds.add(permissionService.getAuthService().getLoginUser().getDeptId()); + isApp = true; + } else { + deptIds = dataScope.getDeptIds(); + isApp = false; + } + SuccessResponseData resultData = new SuccessResponseData(); + dataAnalysisService.getBfztCountData(deptIds, isApp); + resultData.setData(dataAnalysisService.getBfztCountData(deptIds, isApp)); + return resultData; + } + + /** + * 获取布防类型(APP用) + */ + @RequestMapping(value = "/bfType", method = RequestMethod.GET) + @ResponseBody + public Object bfType(Long id) { + if (null == id) { + throw new ServiceException(CoreExceptionEnum.REQUEST_NULL); + } + SuccessResponseData resultData = new SuccessResponseData(); + resultData.setData(dataAnalysisService.getWatchDatas(id)); + return resultData; + } + +} diff --git a/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/dao/DataAnalysisMapper.java b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/dao/DataAnalysisMapper.java new file mode 100644 index 0000000..149fb82 --- /dev/null +++ b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/dao/DataAnalysisMapper.java @@ -0,0 +1,48 @@ +package com.casic.missiles.modular.system.dao; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.*; +import com.casic.missiles.modular.system.model.BusWellInfo; +import com.casic.missiles.core.datascope.DataScope; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * 闸井信息表 Mapper 接口 + *

+ * + * @author stylefeng123 + * @since 2019-05-13 + */ +public interface DataAnalysisMapper extends BaseMapper { + + List getAlarmWellList(@Param("scope") DataScope dataScope, @Param("keywords") String keywords, @Param("wellType") String deviceType, @Param("deptid") String deptid); + + List getNotAlarmWellList(@Param("scope") DataScope dataScope, @Param("keywords") String keywords, @Param("wellType") String deviceType, @Param("deptid") String deptid); + + DeviceData wellcoverData(@Param("devcode") String devcode); + + DeviceData liquidData(@Param("devcode") String devcode); + + DeviceData harmfulgasData(@Param("devcode") String devcode); + + DeviceData gasData(@Param("devcode") String devcode); + + DeviceData temphumData(@Param("devcode") String devcode); + + DeviceData digData(@Param("devcode") String devcode); + + DeviceData noiseData(@Param("devcode") String devcode); + + DeviceData wellcoverlocaData(@Param("devcode") String devcode); + + DeviceData lgGasData(@Param("devcode") String devcode);//燃气液位 + + DeviceData lgLiquidData(@Param("devcode") String devcode);//燃气液位 + + + BfztCountDataDto bfztCountData(@Param("deptIds") List deptIds, @Param("isApp") Boolean isApp); +} diff --git a/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/dao/mapping/DataAnalysisMapper.xml b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/dao/mapping/DataAnalysisMapper.xml new file mode 100644 index 0000000..6d7edb3 --- /dev/null +++ b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/dao/mapping/DataAnalysisMapper.xml @@ -0,0 +1,170 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ID + AS id, WELL_CODE AS wellCode, WELL_NAME AS wellName, DEEP AS deep, COORDINATE_X AS coordinateX, COORDINATE_Y AS coordinateY, LAT_BAIDU AS latBaidu, LNG_BAIDU AS lngBaidu, LNG_GAODE AS lngGaode, LAT_GAODE AS latGaode, AREA AS area, POSITION AS position, DEPTID AS deptid, PHOTOS AS photos, NOTES AS notes, WELL_TYPE AS wellType, STAFF AS staff, TEL AS tel, TS AS ts, VALID AS valid, BFZT AS bfzt, RESPONSIBLE_DEPT AS responsibleDept + + + + ID + AS id, WELL_CODE AS wellCode, WELL_NAME AS wellName, DEEP AS deep, COORDINATE_X AS coordinateX, COORDINATE_Y AS coordinateY, LAT_BAIDU AS latBaidu, LNG_BAIDU AS lngBaidu, LNG_GAODE AS lngGaode, LAT_GAODE AS latGaode, AREA AS area, POSITION AS position, DEPTID AS deptid, PHOTOS AS photos, NOTES AS notes, WELL_TYPE AS wellType, STAFF AS staff, TEL AS tel, TS AS ts, VALID AS valid, BFZT AS bfzt,d1.simplename AS deptName,d2.id AS responsibleDept,d2.simplename AS responsibleDeptName + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/service/IDataAnalysisService.java b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/service/IDataAnalysisService.java new file mode 100644 index 0000000..69c8c60 --- /dev/null +++ b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/service/IDataAnalysisService.java @@ -0,0 +1,51 @@ +package com.casic.missiles.modular.system.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.modular.system.dto.BfztCountDataDto; +import com.casic.missiles.modular.system.dto.BusWellInfoDto; +import com.casic.missiles.modular.system.dto.DeviceDataDto; +import com.casic.missiles.modular.system.dto.WatchDataDto; +import com.casic.missiles.modular.system.model.BusWellInfo; + +import java.util.List; + +/** + * 数据统计服务接口 + * + * @author lwh + */ +public interface IDataAnalysisService extends IService { + /** + * 获取告警闸井列表 + * @param dataScope 数据权限 + * @param keywords 关键字 + * @param wellType 井列表 + * @param deptid 组织id + * @return + */ + List getAlarmWellList(DataScope dataScope, String keywords, String wellType, String deptid); + + /** + * 获取不告警井列表信息 + * @param dataScope 数据权限 + * @param keywords 关键字 + * @param wellType 井类型 + * @param deptid 组织id + * @return + */ + List getNotAlarmWellList(DataScope dataScope, String keywords, String wellType, String deptid); + + /** + * 设备数据查询接口 + * @param devTypename 设备类型 + * @param devcode 设备编码 + * @param status 设备状态 + * @return 设备监测数据 + */ + List getDeviceDatas(String devTypename, String devcode, String status); + List getWatchDatas(Long id); + + + BfztCountDataDto getBfztCountData(List deptIds, Boolean isApp); +} diff --git a/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/service/impl/IDataAnalysisServiceImpl.java b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/service/impl/IDataAnalysisServiceImpl.java new file mode 100644 index 0000000..288a828 --- /dev/null +++ b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/service/impl/IDataAnalysisServiceImpl.java @@ -0,0 +1,386 @@ +package com.casic.missiles.modular.system.service.impl; + +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.modular.system.dao.DataAnalysisMapper; +import com.casic.missiles.modular.system.dto.*; +import com.casic.missiles.modular.system.enmus.HarmfulGasBusiness; +import com.casic.missiles.modular.system.enmus.TemphumBusiness; +import com.casic.missiles.modular.system.model.BusWellInfo; +import com.casic.missiles.modular.system.service.IBusDeviceSupportService; +import com.casic.missiles.modular.system.service.IDataAnalysisService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import java.text.DateFormat; +import java.text.DecimalFormat; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.List; + +/** + * 数据统计分析 + * + * @author lwh + */ +@Slf4j +@Component +public class IDataAnalysisServiceImpl extends ServiceImpl implements IDataAnalysisService { + @Resource + private AbstractDictService dictService; + @Resource + private IBusDeviceSupportService deviceSupportService; + + @Override + public List getAlarmWellList(DataScope dataScope, String keywords, String wellType, String deptid) { + return this.baseMapper.getAlarmWellList(dataScope, keywords, wellType, deptid); + } + + @Override + public List getNotAlarmWellList(DataScope dataScope, String keywords, String wellType, String deptid) { + return this.baseMapper.getNotAlarmWellList(dataScope, keywords, wellType, deptid); + } + + @Override + public List getDeviceDatas(String devTypeName, String devcode, String status) { + List deviceDataDtoList = new ArrayList<>(); + DeviceDataDto deviceDataDto = new DeviceDataDto(); + DeviceData deviceData; + DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + switch (devTypeName) { + case "井盖状态监测仪": + deviceData = this.baseMapper.wellcoverData(devcode); + deviceDataDto.setTypeName("井盖状态"); + if (ObjectUtil.isNotEmpty(deviceData)) { + //井盖离线 + if ("0".equals(status)) { + deviceDataDto.setValue("离线"); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } else if ("心跳".equals(deviceData.getData())) { + deviceDataDto.setValue("井盖状态正常"); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } else { + deviceDataDto.setValue(deviceData.getData()); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } + } else { + deviceDataDto.setValue("无数据"); + } + deviceDataDtoList.add(deviceDataDto); + break; + + case "液位监测仪": + deviceData = this.baseMapper.liquidData(devcode); + if (ObjectUtil.isNotEmpty(deviceData)) { + deviceDataDto.setTypeName("井内水位"); + deviceDataDto.setValue(deviceData.getData() + "m"); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + deviceDataDtoList.add(deviceDataDto); + } + break; + + case "有害气体监测仪": + deviceData = this.baseMapper.harmfulgasData(devcode); + if (ObjectUtil.isNotEmpty(deviceData)) { + String[] harmfulGasDatas = deviceData.getData().split(","); + HarmfulGasBusiness[] harmfulGasBusinesses = HarmfulGasBusiness.values(); + for (int i = 0; i < harmfulGasDatas.length; i++) { + deviceDataDto = new DeviceDataDto(); + deviceDataDto.setTypeName(harmfulGasBusinesses[i].getDesc()); + deviceDataDto.setValue(harmfulGasDatas[i] + harmfulGasBusinesses[i].getUnit()); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + deviceDataDtoList.add((DeviceDataDto) deviceDataDto.clone()); + } + } + break; + case "燃气智能监测终端": + deviceData = this.baseMapper.gasData(devcode); + if (ObjectUtil.isNotEmpty(deviceData)) { + deviceDataDto.setTypeName("燃气浓度"); + deviceDataDto.setValue(deviceData.getData() + "%LEL"); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + deviceDataDtoList.add(deviceDataDto); + } + break; + + case "温湿度监测仪": + deviceData = this.baseMapper.temphumData(devcode); + if (ObjectUtil.isNotEmpty(deviceData)) { + String[] temphumDatas = deviceData.getData().split(","); + TemphumBusiness[] temphumBusinesses = TemphumBusiness.values(); + for (int i = 0; i < temphumDatas.length; i++) { + deviceDataDto = new DeviceDataDto(); + deviceDataDto.setTypeName(temphumBusinesses[i].getDesc()); + deviceDataDto.setValue(temphumDatas[i] + temphumBusinesses[i].getUnit()); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + deviceDataDtoList.add((DeviceDataDto) deviceDataDto.clone()); + } + } + break; + + case "开挖监测仪": + deviceData = this.baseMapper.digData(devcode); + if (ObjectUtil.isNotEmpty(deviceData)) { + deviceDataDto.setTypeName("开挖状态"); + deviceDataDto.setValue(deviceData.getData() + "mg"); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + deviceDataDtoList.add(deviceDataDto); + } + break; + + case "噪声记录仪": + deviceData = this.baseMapper.noiseData(devcode); + if (ObjectUtil.isNotEmpty(deviceData)) { + deviceDataDto.setTypeName("管线噪声"); + deviceDataDto.setValue(deviceData.getData() + "mg"); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + deviceDataDtoList.add(deviceDataDto); + } + break; + case "井盖定位监测仪": + deviceData = this.baseMapper.wellcoverlocaData(devcode); + if (ObjectUtil.isNotEmpty(deviceData)) { + deviceDataDto.setTypeName("井盖位置"); + deviceDataDto.setValue(deviceData.getData()); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + deviceDataDtoList.add(deviceDataDto); + } + break; + + case "燃气智能监测终端(一体化)": + deviceData = this.baseMapper.lgGasData(devcode); + deviceDataDto.setTypeName("燃气浓度"); + if (ObjectUtil.isNotEmpty(deviceData)) { + + Double dValue = Double.parseDouble(deviceData.getData()); + if (dValue <= 20.0) { + deviceDataDto.setValue(deviceData.getData() + "%LEL"); + } else { + DecimalFormat df = new DecimalFormat("0.00"); + dValue = dValue / 20.0; + deviceDataDto.setValue(df.format(dValue) + "%VOL"); + } + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } else { + deviceDataDto.setValue("无数据"); + } + deviceDataDtoList.add(deviceDataDto); + + deviceData = this.baseMapper.lgLiquidData(devcode); + deviceDataDto.setTypeName("井内水位"); + if (ObjectUtil.isNotEmpty(deviceData)) { + + deviceDataDto.setValue(deviceData.getData() + "m"); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } else { + deviceDataDto.setValue("无数据"); + } + deviceDataDtoList.add((DeviceDataDto) deviceDataDto.clone()); + break; + + default://未知设备 + log.info("未知设备!"); + break; + } + return deviceDataDtoList; + } + + @Override + public BfztCountDataDto getBfztCountData(List deptIds, Boolean isApp) { + return this.baseMapper.bfztCountData(deptIds, isApp); + } + + @Override + public List getWatchDatas(Long id) { + + List deviceInWellInfos = deviceSupportService.getDeviceInWellInfo(id); + List watchDataDtos = new ArrayList<>(); + + for (DeviceInWellInfo deviceInWellInfo : deviceInWellInfos) { + WatchDataDto watchDataDto = new WatchDataDto(); + watchDataDto.setDeviceId(deviceInWellInfo.getDeviceId()); + watchDataDto.setDevcode(deviceInWellInfo.getDevcode()); + watchDataDto.setInstallDate(deviceInWellInfo.getInstallDate()); + watchDataDto.setOnlineState(deviceInWellInfo.getOnlineState()); + watchDataDto.setOnlineStateName(dictService.getDictNameByCode("onlineStatus", deviceInWellInfo.getOnlineState())); + + DeviceData deviceData; + DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + + switch (deviceInWellInfo.getTypeName()) { + case "井盖状态监测仪": + deviceData = this.baseMapper.wellcoverData(deviceInWellInfo.getDevcode()); + watchDataDto.setWatchType("井盖状态"); + watchDataDto.setType("1"); + if (ObjectUtil.isNotEmpty(deviceData)) { + //井盖离线 + if ("0".equals(watchDataDto.getOnlineState())) { + watchDataDto.setValue("离线"); + watchDataDto.setData("离线"); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } else if ("心跳".equals(deviceData.getData())) { + watchDataDto.setValue("井盖状态正常"); + watchDataDto.setData("井盖状态正常"); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } else { + watchDataDto.setValue(deviceData.getData()); + watchDataDto.setData(deviceData.getData()); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } + } else { + watchDataDto.setValue("无数据"); + watchDataDto.setData("无数据"); + } + watchDataDtos.add(watchDataDto); + break; + + case "液位监测仪": + deviceData = this.baseMapper.liquidData(deviceInWellInfo.getDevcode()); + if (ObjectUtil.isNotEmpty(deviceData)) { + watchDataDto.setWatchType("井内水位"); + watchDataDto.setType("2"); + + watchDataDto.setValue(deviceData.getData() + "m"); + watchDataDto.setData(deviceData.getData() + "m"); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + watchDataDtos.add(watchDataDto); + } + break; + + case "有害气体监测仪": + deviceData = this.baseMapper.harmfulgasData(deviceInWellInfo.getDevcode()); + if (ObjectUtil.isNotEmpty(deviceData)) { + String[] harmfulGasDatas = deviceData.getData().split(","); + HarmfulGasBusiness[] harmfulGasBusinesses = HarmfulGasBusiness.values(); + + for (int i = 0; i < harmfulGasDatas.length; i++) { + watchDataDto.setWatchType(harmfulGasBusinesses[i].getDesc()); + watchDataDto.setType("3"); + watchDataDto.setValue(harmfulGasDatas[i] + harmfulGasBusinesses[i].getUnit()); + watchDataDto.setData(harmfulGasDatas[i] + harmfulGasBusinesses[i].getUnit()); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + watchDataDtos.add((WatchDataDto) watchDataDto.clone()); + } + } + break; + + case "燃气智能监测终端": + deviceData = this.baseMapper.gasData(deviceInWellInfo.getDevcode()); + if (ObjectUtil.isNotEmpty(deviceData)) { + watchDataDto.setWatchType("燃气浓度"); + watchDataDto.setType("4"); + + watchDataDto.setValue(deviceData.getData() + "%LEL"); + watchDataDto.setData(deviceData.getData() + "%LEL"); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + watchDataDtos.add(watchDataDto); + } + break; + + case "温湿度监测仪": + deviceData = this.baseMapper.temphumData(deviceInWellInfo.getDevcode()); + if (ObjectUtil.isNotEmpty(deviceData)) { + String[] temphumDatas = deviceData.getData().split(","); + TemphumBusiness[] temphumBusinesses = TemphumBusiness.values(); + + for (int i = 0; i < temphumDatas.length; i++) { + watchDataDto.setWatchType(temphumBusinesses[i].getDesc()); + watchDataDto.setType("5"); + watchDataDto.setValue(temphumDatas[i] + temphumBusinesses[i].getUnit()); + watchDataDto.setData(temphumDatas[i] + temphumBusinesses[i].getUnit()); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + watchDataDtos.add((WatchDataDto) watchDataDto.clone()); + } + } + break; + + case "开挖监测仪": + deviceData = this.baseMapper.digData(deviceInWellInfo.getDevcode()); + if (ObjectUtil.isNotEmpty(deviceData)) { + watchDataDto.setWatchType("开挖状态"); + watchDataDto.setType("6"); + + watchDataDto.setValue(deviceData.getData() + "mg"); + watchDataDto.setData(deviceData.getData() + "mg"); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + watchDataDtos.add(watchDataDto); + } + break; + + case "噪声记录仪": + deviceData = this.baseMapper.noiseData(deviceInWellInfo.getDevcode()); + if (ObjectUtil.isNotEmpty(deviceData)) { + watchDataDto.setWatchType("管线噪声"); + watchDataDto.setType("8"); + + watchDataDto.setValue(deviceData.getData() + "mg"); + watchDataDto.setData(deviceData.getData() + "mg"); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + watchDataDtos.add(watchDataDto); + } + break; + + case "井盖定位监测仪": + deviceData = this.baseMapper.wellcoverlocaData(deviceInWellInfo.getDevcode()); + if (ObjectUtil.isNotEmpty(deviceData)) { + watchDataDto.setWatchType("井盖位置"); + watchDataDto.setType("7"); + + watchDataDto.setValue(deviceData.getData()); + watchDataDto.setData(deviceData.getData()); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + watchDataDtos.add(watchDataDto); + } + break; + + case "燃气智能监测终端(一体化)": + deviceData = this.baseMapper.lgGasData(deviceInWellInfo.getDevcode()); + watchDataDto.setWatchType("燃气浓度"); + watchDataDto.setType("10"); + if (ObjectUtil.isNotEmpty(deviceData)) { + + Double dValue = Double.parseDouble(deviceData.getData()); + if (dValue <= 20.0) { + watchDataDto.setValue(deviceData.getData() + "%LEL"); + watchDataDto.setData(deviceData.getData() + "%LEL"); + } else { + DecimalFormat df = new DecimalFormat("0.00"); + dValue = dValue / 20.0; + watchDataDto.setValue(df.format(dValue) + "%VOL"); + watchDataDto.setData(df.format(dValue) + "%VOL"); + } + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } else { + watchDataDto.setValue("无数据"); + watchDataDto.setData("无数据"); + } + watchDataDtos.add((WatchDataDto) watchDataDto.clone()); + + deviceData = this.baseMapper.lgLiquidData(deviceInWellInfo.getDevcode()); + watchDataDto.setWatchType("井内水位"); + watchDataDto.setType("10"); + if (ObjectUtil.isNotEmpty(deviceData)) { + + watchDataDto.setValue(deviceData.getData() + "m"); + watchDataDto.setData(deviceData.getData() + "m"); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } else { + watchDataDto.setValue("无数据"); + watchDataDto.setData("无数据"); + } + watchDataDtos.add((WatchDataDto) watchDataDto.clone()); + break; + + default://未知设备 + log.info("未知设备!"); + break; + } + } + + return watchDataDtos; + } + +} diff --git a/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/controller/BusMapOverviewController.java b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/controller/BusMapOverviewController.java new file mode 100644 index 0000000..9d9f43c --- /dev/null +++ b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/controller/BusMapOverviewController.java @@ -0,0 +1,182 @@ +package com.casic.missiles.modular.system.controller; + +import cn.hutool.core.collection.CollectionUtil; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.model.exception.ServiceException; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.model.response.SuccessResponseData; +import com.casic.missiles.modular.system.dto.BusWellInfoDto; +import com.casic.missiles.modular.system.dto.DeviceDataDto; +import com.casic.missiles.modular.system.dto.DeviceInfoDto; +import com.casic.missiles.modular.system.dto.WatchDataDto; +import com.casic.missiles.modular.system.model.BusWellInfo; +import com.casic.missiles.modular.system.service.IBusDeviceSupportService; +import com.casic.missiles.modular.system.service.IBusWellInfoSupportService; +import com.casic.missiles.modular.system.service.IDataAnalysisService; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.ResponseBody; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; + +/** + * 地图总览模块的controller + * + * @author tanyue + * @Date 2019-05-13 19:20:29 + */ +@Controller +@RequestMapping("/overview") +public class BusMapOverviewController extends BaseController { + + @Resource + private AbstractPermissionContext permissionService; + @Resource + private AbstractDictService dictService; + @Resource + private IBusWellInfoSupportService busWellInfoService; + @Resource + private IDataAnalysisService dataAnalysisService; + @Resource + private IBusDeviceSupportService busDeviceSupportService; + + /** + * 获取列表 + */ + @RequestMapping(value = "/wellList") + @ResponseBody + public Object wellList(@RequestParam(required = false) String keywords, + @RequestParam(required = false) String wellType, + @RequestParam(required = false) String deptid, + @RequestParam(required = false) String isAlarm) { + + DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope(); + List wellList = new ArrayList(); + + if (null == isAlarm || isAlarm.equals("") == true) { + // isAlarm参数为空,查询所有的闸井 + + // 查询并添加当前部门的闸井 + List myList = busWellInfoService.getWellList(dataScope, keywords, wellType, deptid); + if (null != myList && myList.isEmpty() == false) { + wellList.addAll(myList); + } + + /** + * 不需要了,由dataScope控制权限 + // 查询并添加下级部门的闸井 + List subDepts = permissionService.getSubDepts(deptid,null); + if (null != subDepts && subDepts.isEmpty() == false) { + for (Long subDeptId : subDepts) { + List subList = busWellInfoService.getWellList(dataScope, keywords, wellType, String.valueOf(subDeptId)); + if (null != subList && subList.isEmpty() == false) { + wellList.addAll(subList); + } + } + } + */ + } else if (isAlarm.equals("1")) { + // isAlarm = 1 查询所有报警状态的闸井 + wellList = dataAnalysisService.getAlarmWellList(dataScope, keywords, wellType, deptid); + } else { + // isAlarm = 0 查询所有不是报警状态的闸井 + wellList = dataAnalysisService.getNotAlarmWellList(dataScope, keywords, wellType, deptid); + } + + + return ResponseData.success(wellList); + } + + /** + * 获取设备列表 + */ + @RequestMapping(value = "/deviceList") + @ResponseBody + public Object deviceList() { + + DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope(); + List wellList = new ArrayList(); + wellList = busDeviceSupportService.getDeviceList(dataScope); + return ResponseData.success(wellList); + } + + /** + * 获取设备详情 + */ + @RequestMapping(value = "/deviceDetail", method = RequestMethod.GET) + @ResponseBody + public Object deviceDetail(@RequestParam(required = true) Long id) { + if (null == id) { + throw new ServiceException(CoreExceptionEnum.REQUEST_NULL); + } + DeviceInfoDto deviceInfoDto = busDeviceSupportService.selectDeviceById(id); + SuccessResponseData successResult = new SuccessResponseData(); + if (null == deviceInfoDto) { + successResult.setCode(200); + successResult.setMessage("success"); + successResult.setData(new HashMap()); + } else { + // 设置最新的监测数据 + List deviceDataDtoList = dataAnalysisService.getDeviceDatas(deviceInfoDto.getDeviceTypeName(), deviceInfoDto.getDevcode(), deviceInfoDto.getOnlineState()); + if (CollectionUtil.isNotEmpty(deviceDataDtoList)) { + deviceInfoDto.setRealtimeData(deviceDataDtoList); + } + successResult.setMessage("success"); + successResult.setData(deviceInfoDto); + } + return successResult; + } + + + /** + * 获取闸井详情 + */ + @RequestMapping(value = "/wellInfo", method = RequestMethod.GET) + @ResponseBody + public Object wellInfo(@RequestParam(required = true) Long id) { + if (null == id) { + throw new ServiceException(CoreExceptionEnum.REQUEST_NULL); + } + + BusWellInfo busWellInfo = busWellInfoService.getById(id); + SuccessResponseData successResult = new SuccessResponseData(); + if (null == busWellInfo) { + successResult.setCode(200); + successResult.setMessage("success"); + successResult.setData(new HashMap()); + } else { + BusWellInfoDto busWellInfoDto = new BusWellInfoDto(); + busWellInfoDto.convertBusWellInfo(busWellInfo); + + // 设置字典值 + busWellInfoDto.setBfztName(dictService.getDictNameByCode("bfzt", busWellInfo.getBfzt())); + busWellInfoDto.setWellTypeName(dictService.getDictNameByCode("sluicewellType", busWellInfo.getWellType())); + busWellInfoDto.setDeptName(permissionService.getDeptService().getDeptName(busWellInfo.getDeptid())); + + // 设置最新的监测数据 + List watchDataDtos = dataAnalysisService.getWatchDatas(id); + if (null != watchDataDtos && watchDataDtos.isEmpty() == false) { + for (WatchDataDto watchDataDto : watchDataDtos) { + watchDataDto.setValue(watchDataDto.getData()); + } + } + + busWellInfoDto.setWatchData(watchDataDtos); + + successResult.setMessage("success"); + successResult.setData(busWellInfoDto.toMap()); + } + return successResult; + } + + +} diff --git a/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/controller/WellDataController.java b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/controller/WellDataController.java new file mode 100644 index 0000000..c33ec7d --- /dev/null +++ b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/controller/WellDataController.java @@ -0,0 +1,81 @@ +package com.casic.missiles.modular.system.controller; + +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.model.exception.ServiceException; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.model.response.SuccessResponseData; +import com.casic.missiles.modular.system.service.IDataAnalysisService; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.ResponseBody; + +import javax.annotation.Resource; +import java.util.List; +import java.util.Set; + +@Controller +@RequestMapping("/well") +public class WellDataController extends BaseController { + @Resource + private AbstractPermissionContext permissionService; + @Resource + private IDataAnalysisService dataAnalysisService; + + + /** + * 获取闸井设备数据 + */ + @RequestMapping(value = "/watchDataByWell", method = RequestMethod.GET) + @ResponseBody + public Object watchDataByWell(Long id) { + if (null == id) { + throw new ServiceException(CoreExceptionEnum.REQUEST_NULL); + } + SuccessResponseData resultData = new SuccessResponseData(); + resultData.setData(dataAnalysisService.getWatchDatas(id)); + + return resultData; + } + + /** + * 根据布防状态统计闸井数量接口 + */ + @RequestMapping(value = "/countByBfzt", method = RequestMethod.GET) + @ResponseBody + public Object countByBfzt() { + DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope(); + Set roleTipes = permissionService.getAuthService().getLoginUser().getRoleTips(); + List deptIds = null; + Boolean isApp = false; + if (roleTipes.contains("leader") || roleTipes.contains("member")) { + deptIds = permissionService.getDeptService().getIdsByPid(permissionService.getAuthService().getLoginUser().getDeptId(), null); + deptIds.add(permissionService.getAuthService().getLoginUser().getDeptId()); + isApp = true; + } else { + deptIds = dataScope.getDeptIds(); + isApp = false; + } + SuccessResponseData resultData = new SuccessResponseData(); + dataAnalysisService.getBfztCountData(deptIds, isApp); + resultData.setData(dataAnalysisService.getBfztCountData(deptIds, isApp)); + return resultData; + } + + /** + * 获取布防类型(APP用) + */ + @RequestMapping(value = "/bfType", method = RequestMethod.GET) + @ResponseBody + public Object bfType(Long id) { + if (null == id) { + throw new ServiceException(CoreExceptionEnum.REQUEST_NULL); + } + SuccessResponseData resultData = new SuccessResponseData(); + resultData.setData(dataAnalysisService.getWatchDatas(id)); + return resultData; + } + +} diff --git a/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/dao/DataAnalysisMapper.java b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/dao/DataAnalysisMapper.java new file mode 100644 index 0000000..149fb82 --- /dev/null +++ b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/dao/DataAnalysisMapper.java @@ -0,0 +1,48 @@ +package com.casic.missiles.modular.system.dao; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.*; +import com.casic.missiles.modular.system.model.BusWellInfo; +import com.casic.missiles.core.datascope.DataScope; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * 闸井信息表 Mapper 接口 + *

+ * + * @author stylefeng123 + * @since 2019-05-13 + */ +public interface DataAnalysisMapper extends BaseMapper { + + List getAlarmWellList(@Param("scope") DataScope dataScope, @Param("keywords") String keywords, @Param("wellType") String deviceType, @Param("deptid") String deptid); + + List getNotAlarmWellList(@Param("scope") DataScope dataScope, @Param("keywords") String keywords, @Param("wellType") String deviceType, @Param("deptid") String deptid); + + DeviceData wellcoverData(@Param("devcode") String devcode); + + DeviceData liquidData(@Param("devcode") String devcode); + + DeviceData harmfulgasData(@Param("devcode") String devcode); + + DeviceData gasData(@Param("devcode") String devcode); + + DeviceData temphumData(@Param("devcode") String devcode); + + DeviceData digData(@Param("devcode") String devcode); + + DeviceData noiseData(@Param("devcode") String devcode); + + DeviceData wellcoverlocaData(@Param("devcode") String devcode); + + DeviceData lgGasData(@Param("devcode") String devcode);//燃气液位 + + DeviceData lgLiquidData(@Param("devcode") String devcode);//燃气液位 + + + BfztCountDataDto bfztCountData(@Param("deptIds") List deptIds, @Param("isApp") Boolean isApp); +} diff --git a/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/dao/mapping/DataAnalysisMapper.xml b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/dao/mapping/DataAnalysisMapper.xml new file mode 100644 index 0000000..6d7edb3 --- /dev/null +++ b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/dao/mapping/DataAnalysisMapper.xml @@ -0,0 +1,170 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ID + AS id, WELL_CODE AS wellCode, WELL_NAME AS wellName, DEEP AS deep, COORDINATE_X AS coordinateX, COORDINATE_Y AS coordinateY, LAT_BAIDU AS latBaidu, LNG_BAIDU AS lngBaidu, LNG_GAODE AS lngGaode, LAT_GAODE AS latGaode, AREA AS area, POSITION AS position, DEPTID AS deptid, PHOTOS AS photos, NOTES AS notes, WELL_TYPE AS wellType, STAFF AS staff, TEL AS tel, TS AS ts, VALID AS valid, BFZT AS bfzt, RESPONSIBLE_DEPT AS responsibleDept + + + + ID + AS id, WELL_CODE AS wellCode, WELL_NAME AS wellName, DEEP AS deep, COORDINATE_X AS coordinateX, COORDINATE_Y AS coordinateY, LAT_BAIDU AS latBaidu, LNG_BAIDU AS lngBaidu, LNG_GAODE AS lngGaode, LAT_GAODE AS latGaode, AREA AS area, POSITION AS position, DEPTID AS deptid, PHOTOS AS photos, NOTES AS notes, WELL_TYPE AS wellType, STAFF AS staff, TEL AS tel, TS AS ts, VALID AS valid, BFZT AS bfzt,d1.simplename AS deptName,d2.id AS responsibleDept,d2.simplename AS responsibleDeptName + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/service/IDataAnalysisService.java b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/service/IDataAnalysisService.java new file mode 100644 index 0000000..69c8c60 --- /dev/null +++ b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/service/IDataAnalysisService.java @@ -0,0 +1,51 @@ +package com.casic.missiles.modular.system.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.modular.system.dto.BfztCountDataDto; +import com.casic.missiles.modular.system.dto.BusWellInfoDto; +import com.casic.missiles.modular.system.dto.DeviceDataDto; +import com.casic.missiles.modular.system.dto.WatchDataDto; +import com.casic.missiles.modular.system.model.BusWellInfo; + +import java.util.List; + +/** + * 数据统计服务接口 + * + * @author lwh + */ +public interface IDataAnalysisService extends IService { + /** + * 获取告警闸井列表 + * @param dataScope 数据权限 + * @param keywords 关键字 + * @param wellType 井列表 + * @param deptid 组织id + * @return + */ + List getAlarmWellList(DataScope dataScope, String keywords, String wellType, String deptid); + + /** + * 获取不告警井列表信息 + * @param dataScope 数据权限 + * @param keywords 关键字 + * @param wellType 井类型 + * @param deptid 组织id + * @return + */ + List getNotAlarmWellList(DataScope dataScope, String keywords, String wellType, String deptid); + + /** + * 设备数据查询接口 + * @param devTypename 设备类型 + * @param devcode 设备编码 + * @param status 设备状态 + * @return 设备监测数据 + */ + List getDeviceDatas(String devTypename, String devcode, String status); + List getWatchDatas(Long id); + + + BfztCountDataDto getBfztCountData(List deptIds, Boolean isApp); +} diff --git a/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/service/impl/IDataAnalysisServiceImpl.java b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/service/impl/IDataAnalysisServiceImpl.java new file mode 100644 index 0000000..288a828 --- /dev/null +++ b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/service/impl/IDataAnalysisServiceImpl.java @@ -0,0 +1,386 @@ +package com.casic.missiles.modular.system.service.impl; + +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.modular.system.dao.DataAnalysisMapper; +import com.casic.missiles.modular.system.dto.*; +import com.casic.missiles.modular.system.enmus.HarmfulGasBusiness; +import com.casic.missiles.modular.system.enmus.TemphumBusiness; +import com.casic.missiles.modular.system.model.BusWellInfo; +import com.casic.missiles.modular.system.service.IBusDeviceSupportService; +import com.casic.missiles.modular.system.service.IDataAnalysisService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import java.text.DateFormat; +import java.text.DecimalFormat; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.List; + +/** + * 数据统计分析 + * + * @author lwh + */ +@Slf4j +@Component +public class IDataAnalysisServiceImpl extends ServiceImpl implements IDataAnalysisService { + @Resource + private AbstractDictService dictService; + @Resource + private IBusDeviceSupportService deviceSupportService; + + @Override + public List getAlarmWellList(DataScope dataScope, String keywords, String wellType, String deptid) { + return this.baseMapper.getAlarmWellList(dataScope, keywords, wellType, deptid); + } + + @Override + public List getNotAlarmWellList(DataScope dataScope, String keywords, String wellType, String deptid) { + return this.baseMapper.getNotAlarmWellList(dataScope, keywords, wellType, deptid); + } + + @Override + public List getDeviceDatas(String devTypeName, String devcode, String status) { + List deviceDataDtoList = new ArrayList<>(); + DeviceDataDto deviceDataDto = new DeviceDataDto(); + DeviceData deviceData; + DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + switch (devTypeName) { + case "井盖状态监测仪": + deviceData = this.baseMapper.wellcoverData(devcode); + deviceDataDto.setTypeName("井盖状态"); + if (ObjectUtil.isNotEmpty(deviceData)) { + //井盖离线 + if ("0".equals(status)) { + deviceDataDto.setValue("离线"); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } else if ("心跳".equals(deviceData.getData())) { + deviceDataDto.setValue("井盖状态正常"); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } else { + deviceDataDto.setValue(deviceData.getData()); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } + } else { + deviceDataDto.setValue("无数据"); + } + deviceDataDtoList.add(deviceDataDto); + break; + + case "液位监测仪": + deviceData = this.baseMapper.liquidData(devcode); + if (ObjectUtil.isNotEmpty(deviceData)) { + deviceDataDto.setTypeName("井内水位"); + deviceDataDto.setValue(deviceData.getData() + "m"); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + deviceDataDtoList.add(deviceDataDto); + } + break; + + case "有害气体监测仪": + deviceData = this.baseMapper.harmfulgasData(devcode); + if (ObjectUtil.isNotEmpty(deviceData)) { + String[] harmfulGasDatas = deviceData.getData().split(","); + HarmfulGasBusiness[] harmfulGasBusinesses = HarmfulGasBusiness.values(); + for (int i = 0; i < harmfulGasDatas.length; i++) { + deviceDataDto = new DeviceDataDto(); + deviceDataDto.setTypeName(harmfulGasBusinesses[i].getDesc()); + deviceDataDto.setValue(harmfulGasDatas[i] + harmfulGasBusinesses[i].getUnit()); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + deviceDataDtoList.add((DeviceDataDto) deviceDataDto.clone()); + } + } + break; + case "燃气智能监测终端": + deviceData = this.baseMapper.gasData(devcode); + if (ObjectUtil.isNotEmpty(deviceData)) { + deviceDataDto.setTypeName("燃气浓度"); + deviceDataDto.setValue(deviceData.getData() + "%LEL"); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + deviceDataDtoList.add(deviceDataDto); + } + break; + + case "温湿度监测仪": + deviceData = this.baseMapper.temphumData(devcode); + if (ObjectUtil.isNotEmpty(deviceData)) { + String[] temphumDatas = deviceData.getData().split(","); + TemphumBusiness[] temphumBusinesses = TemphumBusiness.values(); + for (int i = 0; i < temphumDatas.length; i++) { + deviceDataDto = new DeviceDataDto(); + deviceDataDto.setTypeName(temphumBusinesses[i].getDesc()); + deviceDataDto.setValue(temphumDatas[i] + temphumBusinesses[i].getUnit()); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + deviceDataDtoList.add((DeviceDataDto) deviceDataDto.clone()); + } + } + break; + + case "开挖监测仪": + deviceData = this.baseMapper.digData(devcode); + if (ObjectUtil.isNotEmpty(deviceData)) { + deviceDataDto.setTypeName("开挖状态"); + deviceDataDto.setValue(deviceData.getData() + "mg"); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + deviceDataDtoList.add(deviceDataDto); + } + break; + + case "噪声记录仪": + deviceData = this.baseMapper.noiseData(devcode); + if (ObjectUtil.isNotEmpty(deviceData)) { + deviceDataDto.setTypeName("管线噪声"); + deviceDataDto.setValue(deviceData.getData() + "mg"); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + deviceDataDtoList.add(deviceDataDto); + } + break; + case "井盖定位监测仪": + deviceData = this.baseMapper.wellcoverlocaData(devcode); + if (ObjectUtil.isNotEmpty(deviceData)) { + deviceDataDto.setTypeName("井盖位置"); + deviceDataDto.setValue(deviceData.getData()); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + deviceDataDtoList.add(deviceDataDto); + } + break; + + case "燃气智能监测终端(一体化)": + deviceData = this.baseMapper.lgGasData(devcode); + deviceDataDto.setTypeName("燃气浓度"); + if (ObjectUtil.isNotEmpty(deviceData)) { + + Double dValue = Double.parseDouble(deviceData.getData()); + if (dValue <= 20.0) { + deviceDataDto.setValue(deviceData.getData() + "%LEL"); + } else { + DecimalFormat df = new DecimalFormat("0.00"); + dValue = dValue / 20.0; + deviceDataDto.setValue(df.format(dValue) + "%VOL"); + } + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } else { + deviceDataDto.setValue("无数据"); + } + deviceDataDtoList.add(deviceDataDto); + + deviceData = this.baseMapper.lgLiquidData(devcode); + deviceDataDto.setTypeName("井内水位"); + if (ObjectUtil.isNotEmpty(deviceData)) { + + deviceDataDto.setValue(deviceData.getData() + "m"); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } else { + deviceDataDto.setValue("无数据"); + } + deviceDataDtoList.add((DeviceDataDto) deviceDataDto.clone()); + break; + + default://未知设备 + log.info("未知设备!"); + break; + } + return deviceDataDtoList; + } + + @Override + public BfztCountDataDto getBfztCountData(List deptIds, Boolean isApp) { + return this.baseMapper.bfztCountData(deptIds, isApp); + } + + @Override + public List getWatchDatas(Long id) { + + List deviceInWellInfos = deviceSupportService.getDeviceInWellInfo(id); + List watchDataDtos = new ArrayList<>(); + + for (DeviceInWellInfo deviceInWellInfo : deviceInWellInfos) { + WatchDataDto watchDataDto = new WatchDataDto(); + watchDataDto.setDeviceId(deviceInWellInfo.getDeviceId()); + watchDataDto.setDevcode(deviceInWellInfo.getDevcode()); + watchDataDto.setInstallDate(deviceInWellInfo.getInstallDate()); + watchDataDto.setOnlineState(deviceInWellInfo.getOnlineState()); + watchDataDto.setOnlineStateName(dictService.getDictNameByCode("onlineStatus", deviceInWellInfo.getOnlineState())); + + DeviceData deviceData; + DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + + switch (deviceInWellInfo.getTypeName()) { + case "井盖状态监测仪": + deviceData = this.baseMapper.wellcoverData(deviceInWellInfo.getDevcode()); + watchDataDto.setWatchType("井盖状态"); + watchDataDto.setType("1"); + if (ObjectUtil.isNotEmpty(deviceData)) { + //井盖离线 + if ("0".equals(watchDataDto.getOnlineState())) { + watchDataDto.setValue("离线"); + watchDataDto.setData("离线"); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } else if ("心跳".equals(deviceData.getData())) { + watchDataDto.setValue("井盖状态正常"); + watchDataDto.setData("井盖状态正常"); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } else { + watchDataDto.setValue(deviceData.getData()); + watchDataDto.setData(deviceData.getData()); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } + } else { + watchDataDto.setValue("无数据"); + watchDataDto.setData("无数据"); + } + watchDataDtos.add(watchDataDto); + break; + + case "液位监测仪": + deviceData = this.baseMapper.liquidData(deviceInWellInfo.getDevcode()); + if (ObjectUtil.isNotEmpty(deviceData)) { + watchDataDto.setWatchType("井内水位"); + watchDataDto.setType("2"); + + watchDataDto.setValue(deviceData.getData() + "m"); + watchDataDto.setData(deviceData.getData() + "m"); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + watchDataDtos.add(watchDataDto); + } + break; + + case "有害气体监测仪": + deviceData = this.baseMapper.harmfulgasData(deviceInWellInfo.getDevcode()); + if (ObjectUtil.isNotEmpty(deviceData)) { + String[] harmfulGasDatas = deviceData.getData().split(","); + HarmfulGasBusiness[] harmfulGasBusinesses = HarmfulGasBusiness.values(); + + for (int i = 0; i < harmfulGasDatas.length; i++) { + watchDataDto.setWatchType(harmfulGasBusinesses[i].getDesc()); + watchDataDto.setType("3"); + watchDataDto.setValue(harmfulGasDatas[i] + harmfulGasBusinesses[i].getUnit()); + watchDataDto.setData(harmfulGasDatas[i] + harmfulGasBusinesses[i].getUnit()); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + watchDataDtos.add((WatchDataDto) watchDataDto.clone()); + } + } + break; + + case "燃气智能监测终端": + deviceData = this.baseMapper.gasData(deviceInWellInfo.getDevcode()); + if (ObjectUtil.isNotEmpty(deviceData)) { + watchDataDto.setWatchType("燃气浓度"); + watchDataDto.setType("4"); + + watchDataDto.setValue(deviceData.getData() + "%LEL"); + watchDataDto.setData(deviceData.getData() + "%LEL"); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + watchDataDtos.add(watchDataDto); + } + break; + + case "温湿度监测仪": + deviceData = this.baseMapper.temphumData(deviceInWellInfo.getDevcode()); + if (ObjectUtil.isNotEmpty(deviceData)) { + String[] temphumDatas = deviceData.getData().split(","); + TemphumBusiness[] temphumBusinesses = TemphumBusiness.values(); + + for (int i = 0; i < temphumDatas.length; i++) { + watchDataDto.setWatchType(temphumBusinesses[i].getDesc()); + watchDataDto.setType("5"); + watchDataDto.setValue(temphumDatas[i] + temphumBusinesses[i].getUnit()); + watchDataDto.setData(temphumDatas[i] + temphumBusinesses[i].getUnit()); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + watchDataDtos.add((WatchDataDto) watchDataDto.clone()); + } + } + break; + + case "开挖监测仪": + deviceData = this.baseMapper.digData(deviceInWellInfo.getDevcode()); + if (ObjectUtil.isNotEmpty(deviceData)) { + watchDataDto.setWatchType("开挖状态"); + watchDataDto.setType("6"); + + watchDataDto.setValue(deviceData.getData() + "mg"); + watchDataDto.setData(deviceData.getData() + "mg"); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + watchDataDtos.add(watchDataDto); + } + break; + + case "噪声记录仪": + deviceData = this.baseMapper.noiseData(deviceInWellInfo.getDevcode()); + if (ObjectUtil.isNotEmpty(deviceData)) { + watchDataDto.setWatchType("管线噪声"); + watchDataDto.setType("8"); + + watchDataDto.setValue(deviceData.getData() + "mg"); + watchDataDto.setData(deviceData.getData() + "mg"); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + watchDataDtos.add(watchDataDto); + } + break; + + case "井盖定位监测仪": + deviceData = this.baseMapper.wellcoverlocaData(deviceInWellInfo.getDevcode()); + if (ObjectUtil.isNotEmpty(deviceData)) { + watchDataDto.setWatchType("井盖位置"); + watchDataDto.setType("7"); + + watchDataDto.setValue(deviceData.getData()); + watchDataDto.setData(deviceData.getData()); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + watchDataDtos.add(watchDataDto); + } + break; + + case "燃气智能监测终端(一体化)": + deviceData = this.baseMapper.lgGasData(deviceInWellInfo.getDevcode()); + watchDataDto.setWatchType("燃气浓度"); + watchDataDto.setType("10"); + if (ObjectUtil.isNotEmpty(deviceData)) { + + Double dValue = Double.parseDouble(deviceData.getData()); + if (dValue <= 20.0) { + watchDataDto.setValue(deviceData.getData() + "%LEL"); + watchDataDto.setData(deviceData.getData() + "%LEL"); + } else { + DecimalFormat df = new DecimalFormat("0.00"); + dValue = dValue / 20.0; + watchDataDto.setValue(df.format(dValue) + "%VOL"); + watchDataDto.setData(df.format(dValue) + "%VOL"); + } + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } else { + watchDataDto.setValue("无数据"); + watchDataDto.setData("无数据"); + } + watchDataDtos.add((WatchDataDto) watchDataDto.clone()); + + deviceData = this.baseMapper.lgLiquidData(deviceInWellInfo.getDevcode()); + watchDataDto.setWatchType("井内水位"); + watchDataDto.setType("10"); + if (ObjectUtil.isNotEmpty(deviceData)) { + + watchDataDto.setValue(deviceData.getData() + "m"); + watchDataDto.setData(deviceData.getData() + "m"); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } else { + watchDataDto.setValue("无数据"); + watchDataDto.setData("无数据"); + } + watchDataDtos.add((WatchDataDto) watchDataDto.clone()); + break; + + default://未知设备 + log.info("未知设备!"); + break; + } + } + + return watchDataDtos; + } + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java index d45eaf7..b9ca243 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java @@ -21,7 +21,7 @@ public interface DeviceMapper extends BaseMapper { List selectDataScopePage(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("deviceType") String deviceType, @Param("deptid") String deptid, @Param("beginTime") String beginTime, @Param("endTime") String endTime, @Param("keywords") String keywords,@Param("isOnline") String isOnline); - + List getDeviceList(@Param("scope") DataScope dataScope); DeviceWellDto selectWellIdByCode(@Param("wellCode") String wellCode); DeviceConcentratorDto selectDeviceConcentorByCode(@Param("concenCode") String concenCode); @@ -61,4 +61,13 @@ List> selectTempDataList(@Param("dataScope")DataScope dataScope, @Param("wellCode")String wellCode, @Param("beginTime")String beginTime, @Param("endTime")String endTime); List> selectHarmfulDataList(@Param("dataScope")DataScope dataScope, @Param("wellCode")String wellCode, @Param("beginTime")String beginTime, @Param("endTime")String endTime); + + /** + * 查询设备信息 + * @param id 设备主键 + * @return + */ + DeviceInfoDto selectDeviceById(@Param("id") Long id); + + List getDeviceInWellInfo(@Param("id") Long id); } diff --git a/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/controller/BusMapOverviewController.java b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/controller/BusMapOverviewController.java new file mode 100644 index 0000000..9d9f43c --- /dev/null +++ b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/controller/BusMapOverviewController.java @@ -0,0 +1,182 @@ +package com.casic.missiles.modular.system.controller; + +import cn.hutool.core.collection.CollectionUtil; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.model.exception.ServiceException; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.model.response.SuccessResponseData; +import com.casic.missiles.modular.system.dto.BusWellInfoDto; +import com.casic.missiles.modular.system.dto.DeviceDataDto; +import com.casic.missiles.modular.system.dto.DeviceInfoDto; +import com.casic.missiles.modular.system.dto.WatchDataDto; +import com.casic.missiles.modular.system.model.BusWellInfo; +import com.casic.missiles.modular.system.service.IBusDeviceSupportService; +import com.casic.missiles.modular.system.service.IBusWellInfoSupportService; +import com.casic.missiles.modular.system.service.IDataAnalysisService; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.ResponseBody; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; + +/** + * 地图总览模块的controller + * + * @author tanyue + * @Date 2019-05-13 19:20:29 + */ +@Controller +@RequestMapping("/overview") +public class BusMapOverviewController extends BaseController { + + @Resource + private AbstractPermissionContext permissionService; + @Resource + private AbstractDictService dictService; + @Resource + private IBusWellInfoSupportService busWellInfoService; + @Resource + private IDataAnalysisService dataAnalysisService; + @Resource + private IBusDeviceSupportService busDeviceSupportService; + + /** + * 获取列表 + */ + @RequestMapping(value = "/wellList") + @ResponseBody + public Object wellList(@RequestParam(required = false) String keywords, + @RequestParam(required = false) String wellType, + @RequestParam(required = false) String deptid, + @RequestParam(required = false) String isAlarm) { + + DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope(); + List wellList = new ArrayList(); + + if (null == isAlarm || isAlarm.equals("") == true) { + // isAlarm参数为空,查询所有的闸井 + + // 查询并添加当前部门的闸井 + List myList = busWellInfoService.getWellList(dataScope, keywords, wellType, deptid); + if (null != myList && myList.isEmpty() == false) { + wellList.addAll(myList); + } + + /** + * 不需要了,由dataScope控制权限 + // 查询并添加下级部门的闸井 + List subDepts = permissionService.getSubDepts(deptid,null); + if (null != subDepts && subDepts.isEmpty() == false) { + for (Long subDeptId : subDepts) { + List subList = busWellInfoService.getWellList(dataScope, keywords, wellType, String.valueOf(subDeptId)); + if (null != subList && subList.isEmpty() == false) { + wellList.addAll(subList); + } + } + } + */ + } else if (isAlarm.equals("1")) { + // isAlarm = 1 查询所有报警状态的闸井 + wellList = dataAnalysisService.getAlarmWellList(dataScope, keywords, wellType, deptid); + } else { + // isAlarm = 0 查询所有不是报警状态的闸井 + wellList = dataAnalysisService.getNotAlarmWellList(dataScope, keywords, wellType, deptid); + } + + + return ResponseData.success(wellList); + } + + /** + * 获取设备列表 + */ + @RequestMapping(value = "/deviceList") + @ResponseBody + public Object deviceList() { + + DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope(); + List wellList = new ArrayList(); + wellList = busDeviceSupportService.getDeviceList(dataScope); + return ResponseData.success(wellList); + } + + /** + * 获取设备详情 + */ + @RequestMapping(value = "/deviceDetail", method = RequestMethod.GET) + @ResponseBody + public Object deviceDetail(@RequestParam(required = true) Long id) { + if (null == id) { + throw new ServiceException(CoreExceptionEnum.REQUEST_NULL); + } + DeviceInfoDto deviceInfoDto = busDeviceSupportService.selectDeviceById(id); + SuccessResponseData successResult = new SuccessResponseData(); + if (null == deviceInfoDto) { + successResult.setCode(200); + successResult.setMessage("success"); + successResult.setData(new HashMap()); + } else { + // 设置最新的监测数据 + List deviceDataDtoList = dataAnalysisService.getDeviceDatas(deviceInfoDto.getDeviceTypeName(), deviceInfoDto.getDevcode(), deviceInfoDto.getOnlineState()); + if (CollectionUtil.isNotEmpty(deviceDataDtoList)) { + deviceInfoDto.setRealtimeData(deviceDataDtoList); + } + successResult.setMessage("success"); + successResult.setData(deviceInfoDto); + } + return successResult; + } + + + /** + * 获取闸井详情 + */ + @RequestMapping(value = "/wellInfo", method = RequestMethod.GET) + @ResponseBody + public Object wellInfo(@RequestParam(required = true) Long id) { + if (null == id) { + throw new ServiceException(CoreExceptionEnum.REQUEST_NULL); + } + + BusWellInfo busWellInfo = busWellInfoService.getById(id); + SuccessResponseData successResult = new SuccessResponseData(); + if (null == busWellInfo) { + successResult.setCode(200); + successResult.setMessage("success"); + successResult.setData(new HashMap()); + } else { + BusWellInfoDto busWellInfoDto = new BusWellInfoDto(); + busWellInfoDto.convertBusWellInfo(busWellInfo); + + // 设置字典值 + busWellInfoDto.setBfztName(dictService.getDictNameByCode("bfzt", busWellInfo.getBfzt())); + busWellInfoDto.setWellTypeName(dictService.getDictNameByCode("sluicewellType", busWellInfo.getWellType())); + busWellInfoDto.setDeptName(permissionService.getDeptService().getDeptName(busWellInfo.getDeptid())); + + // 设置最新的监测数据 + List watchDataDtos = dataAnalysisService.getWatchDatas(id); + if (null != watchDataDtos && watchDataDtos.isEmpty() == false) { + for (WatchDataDto watchDataDto : watchDataDtos) { + watchDataDto.setValue(watchDataDto.getData()); + } + } + + busWellInfoDto.setWatchData(watchDataDtos); + + successResult.setMessage("success"); + successResult.setData(busWellInfoDto.toMap()); + } + return successResult; + } + + +} diff --git a/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/controller/WellDataController.java b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/controller/WellDataController.java new file mode 100644 index 0000000..c33ec7d --- /dev/null +++ b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/controller/WellDataController.java @@ -0,0 +1,81 @@ +package com.casic.missiles.modular.system.controller; + +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.model.exception.ServiceException; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.model.response.SuccessResponseData; +import com.casic.missiles.modular.system.service.IDataAnalysisService; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.ResponseBody; + +import javax.annotation.Resource; +import java.util.List; +import java.util.Set; + +@Controller +@RequestMapping("/well") +public class WellDataController extends BaseController { + @Resource + private AbstractPermissionContext permissionService; + @Resource + private IDataAnalysisService dataAnalysisService; + + + /** + * 获取闸井设备数据 + */ + @RequestMapping(value = "/watchDataByWell", method = RequestMethod.GET) + @ResponseBody + public Object watchDataByWell(Long id) { + if (null == id) { + throw new ServiceException(CoreExceptionEnum.REQUEST_NULL); + } + SuccessResponseData resultData = new SuccessResponseData(); + resultData.setData(dataAnalysisService.getWatchDatas(id)); + + return resultData; + } + + /** + * 根据布防状态统计闸井数量接口 + */ + @RequestMapping(value = "/countByBfzt", method = RequestMethod.GET) + @ResponseBody + public Object countByBfzt() { + DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope(); + Set roleTipes = permissionService.getAuthService().getLoginUser().getRoleTips(); + List deptIds = null; + Boolean isApp = false; + if (roleTipes.contains("leader") || roleTipes.contains("member")) { + deptIds = permissionService.getDeptService().getIdsByPid(permissionService.getAuthService().getLoginUser().getDeptId(), null); + deptIds.add(permissionService.getAuthService().getLoginUser().getDeptId()); + isApp = true; + } else { + deptIds = dataScope.getDeptIds(); + isApp = false; + } + SuccessResponseData resultData = new SuccessResponseData(); + dataAnalysisService.getBfztCountData(deptIds, isApp); + resultData.setData(dataAnalysisService.getBfztCountData(deptIds, isApp)); + return resultData; + } + + /** + * 获取布防类型(APP用) + */ + @RequestMapping(value = "/bfType", method = RequestMethod.GET) + @ResponseBody + public Object bfType(Long id) { + if (null == id) { + throw new ServiceException(CoreExceptionEnum.REQUEST_NULL); + } + SuccessResponseData resultData = new SuccessResponseData(); + resultData.setData(dataAnalysisService.getWatchDatas(id)); + return resultData; + } + +} diff --git a/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/dao/DataAnalysisMapper.java b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/dao/DataAnalysisMapper.java new file mode 100644 index 0000000..149fb82 --- /dev/null +++ b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/dao/DataAnalysisMapper.java @@ -0,0 +1,48 @@ +package com.casic.missiles.modular.system.dao; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.*; +import com.casic.missiles.modular.system.model.BusWellInfo; +import com.casic.missiles.core.datascope.DataScope; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * 闸井信息表 Mapper 接口 + *

+ * + * @author stylefeng123 + * @since 2019-05-13 + */ +public interface DataAnalysisMapper extends BaseMapper { + + List getAlarmWellList(@Param("scope") DataScope dataScope, @Param("keywords") String keywords, @Param("wellType") String deviceType, @Param("deptid") String deptid); + + List getNotAlarmWellList(@Param("scope") DataScope dataScope, @Param("keywords") String keywords, @Param("wellType") String deviceType, @Param("deptid") String deptid); + + DeviceData wellcoverData(@Param("devcode") String devcode); + + DeviceData liquidData(@Param("devcode") String devcode); + + DeviceData harmfulgasData(@Param("devcode") String devcode); + + DeviceData gasData(@Param("devcode") String devcode); + + DeviceData temphumData(@Param("devcode") String devcode); + + DeviceData digData(@Param("devcode") String devcode); + + DeviceData noiseData(@Param("devcode") String devcode); + + DeviceData wellcoverlocaData(@Param("devcode") String devcode); + + DeviceData lgGasData(@Param("devcode") String devcode);//燃气液位 + + DeviceData lgLiquidData(@Param("devcode") String devcode);//燃气液位 + + + BfztCountDataDto bfztCountData(@Param("deptIds") List deptIds, @Param("isApp") Boolean isApp); +} diff --git a/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/dao/mapping/DataAnalysisMapper.xml b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/dao/mapping/DataAnalysisMapper.xml new file mode 100644 index 0000000..6d7edb3 --- /dev/null +++ b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/dao/mapping/DataAnalysisMapper.xml @@ -0,0 +1,170 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ID + AS id, WELL_CODE AS wellCode, WELL_NAME AS wellName, DEEP AS deep, COORDINATE_X AS coordinateX, COORDINATE_Y AS coordinateY, LAT_BAIDU AS latBaidu, LNG_BAIDU AS lngBaidu, LNG_GAODE AS lngGaode, LAT_GAODE AS latGaode, AREA AS area, POSITION AS position, DEPTID AS deptid, PHOTOS AS photos, NOTES AS notes, WELL_TYPE AS wellType, STAFF AS staff, TEL AS tel, TS AS ts, VALID AS valid, BFZT AS bfzt, RESPONSIBLE_DEPT AS responsibleDept + + + + ID + AS id, WELL_CODE AS wellCode, WELL_NAME AS wellName, DEEP AS deep, COORDINATE_X AS coordinateX, COORDINATE_Y AS coordinateY, LAT_BAIDU AS latBaidu, LNG_BAIDU AS lngBaidu, LNG_GAODE AS lngGaode, LAT_GAODE AS latGaode, AREA AS area, POSITION AS position, DEPTID AS deptid, PHOTOS AS photos, NOTES AS notes, WELL_TYPE AS wellType, STAFF AS staff, TEL AS tel, TS AS ts, VALID AS valid, BFZT AS bfzt,d1.simplename AS deptName,d2.id AS responsibleDept,d2.simplename AS responsibleDeptName + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/service/IDataAnalysisService.java b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/service/IDataAnalysisService.java new file mode 100644 index 0000000..69c8c60 --- /dev/null +++ b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/service/IDataAnalysisService.java @@ -0,0 +1,51 @@ +package com.casic.missiles.modular.system.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.modular.system.dto.BfztCountDataDto; +import com.casic.missiles.modular.system.dto.BusWellInfoDto; +import com.casic.missiles.modular.system.dto.DeviceDataDto; +import com.casic.missiles.modular.system.dto.WatchDataDto; +import com.casic.missiles.modular.system.model.BusWellInfo; + +import java.util.List; + +/** + * 数据统计服务接口 + * + * @author lwh + */ +public interface IDataAnalysisService extends IService { + /** + * 获取告警闸井列表 + * @param dataScope 数据权限 + * @param keywords 关键字 + * @param wellType 井列表 + * @param deptid 组织id + * @return + */ + List getAlarmWellList(DataScope dataScope, String keywords, String wellType, String deptid); + + /** + * 获取不告警井列表信息 + * @param dataScope 数据权限 + * @param keywords 关键字 + * @param wellType 井类型 + * @param deptid 组织id + * @return + */ + List getNotAlarmWellList(DataScope dataScope, String keywords, String wellType, String deptid); + + /** + * 设备数据查询接口 + * @param devTypename 设备类型 + * @param devcode 设备编码 + * @param status 设备状态 + * @return 设备监测数据 + */ + List getDeviceDatas(String devTypename, String devcode, String status); + List getWatchDatas(Long id); + + + BfztCountDataDto getBfztCountData(List deptIds, Boolean isApp); +} diff --git a/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/service/impl/IDataAnalysisServiceImpl.java b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/service/impl/IDataAnalysisServiceImpl.java new file mode 100644 index 0000000..288a828 --- /dev/null +++ b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/service/impl/IDataAnalysisServiceImpl.java @@ -0,0 +1,386 @@ +package com.casic.missiles.modular.system.service.impl; + +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.modular.system.dao.DataAnalysisMapper; +import com.casic.missiles.modular.system.dto.*; +import com.casic.missiles.modular.system.enmus.HarmfulGasBusiness; +import com.casic.missiles.modular.system.enmus.TemphumBusiness; +import com.casic.missiles.modular.system.model.BusWellInfo; +import com.casic.missiles.modular.system.service.IBusDeviceSupportService; +import com.casic.missiles.modular.system.service.IDataAnalysisService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import java.text.DateFormat; +import java.text.DecimalFormat; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.List; + +/** + * 数据统计分析 + * + * @author lwh + */ +@Slf4j +@Component +public class IDataAnalysisServiceImpl extends ServiceImpl implements IDataAnalysisService { + @Resource + private AbstractDictService dictService; + @Resource + private IBusDeviceSupportService deviceSupportService; + + @Override + public List getAlarmWellList(DataScope dataScope, String keywords, String wellType, String deptid) { + return this.baseMapper.getAlarmWellList(dataScope, keywords, wellType, deptid); + } + + @Override + public List getNotAlarmWellList(DataScope dataScope, String keywords, String wellType, String deptid) { + return this.baseMapper.getNotAlarmWellList(dataScope, keywords, wellType, deptid); + } + + @Override + public List getDeviceDatas(String devTypeName, String devcode, String status) { + List deviceDataDtoList = new ArrayList<>(); + DeviceDataDto deviceDataDto = new DeviceDataDto(); + DeviceData deviceData; + DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + switch (devTypeName) { + case "井盖状态监测仪": + deviceData = this.baseMapper.wellcoverData(devcode); + deviceDataDto.setTypeName("井盖状态"); + if (ObjectUtil.isNotEmpty(deviceData)) { + //井盖离线 + if ("0".equals(status)) { + deviceDataDto.setValue("离线"); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } else if ("心跳".equals(deviceData.getData())) { + deviceDataDto.setValue("井盖状态正常"); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } else { + deviceDataDto.setValue(deviceData.getData()); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } + } else { + deviceDataDto.setValue("无数据"); + } + deviceDataDtoList.add(deviceDataDto); + break; + + case "液位监测仪": + deviceData = this.baseMapper.liquidData(devcode); + if (ObjectUtil.isNotEmpty(deviceData)) { + deviceDataDto.setTypeName("井内水位"); + deviceDataDto.setValue(deviceData.getData() + "m"); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + deviceDataDtoList.add(deviceDataDto); + } + break; + + case "有害气体监测仪": + deviceData = this.baseMapper.harmfulgasData(devcode); + if (ObjectUtil.isNotEmpty(deviceData)) { + String[] harmfulGasDatas = deviceData.getData().split(","); + HarmfulGasBusiness[] harmfulGasBusinesses = HarmfulGasBusiness.values(); + for (int i = 0; i < harmfulGasDatas.length; i++) { + deviceDataDto = new DeviceDataDto(); + deviceDataDto.setTypeName(harmfulGasBusinesses[i].getDesc()); + deviceDataDto.setValue(harmfulGasDatas[i] + harmfulGasBusinesses[i].getUnit()); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + deviceDataDtoList.add((DeviceDataDto) deviceDataDto.clone()); + } + } + break; + case "燃气智能监测终端": + deviceData = this.baseMapper.gasData(devcode); + if (ObjectUtil.isNotEmpty(deviceData)) { + deviceDataDto.setTypeName("燃气浓度"); + deviceDataDto.setValue(deviceData.getData() + "%LEL"); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + deviceDataDtoList.add(deviceDataDto); + } + break; + + case "温湿度监测仪": + deviceData = this.baseMapper.temphumData(devcode); + if (ObjectUtil.isNotEmpty(deviceData)) { + String[] temphumDatas = deviceData.getData().split(","); + TemphumBusiness[] temphumBusinesses = TemphumBusiness.values(); + for (int i = 0; i < temphumDatas.length; i++) { + deviceDataDto = new DeviceDataDto(); + deviceDataDto.setTypeName(temphumBusinesses[i].getDesc()); + deviceDataDto.setValue(temphumDatas[i] + temphumBusinesses[i].getUnit()); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + deviceDataDtoList.add((DeviceDataDto) deviceDataDto.clone()); + } + } + break; + + case "开挖监测仪": + deviceData = this.baseMapper.digData(devcode); + if (ObjectUtil.isNotEmpty(deviceData)) { + deviceDataDto.setTypeName("开挖状态"); + deviceDataDto.setValue(deviceData.getData() + "mg"); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + deviceDataDtoList.add(deviceDataDto); + } + break; + + case "噪声记录仪": + deviceData = this.baseMapper.noiseData(devcode); + if (ObjectUtil.isNotEmpty(deviceData)) { + deviceDataDto.setTypeName("管线噪声"); + deviceDataDto.setValue(deviceData.getData() + "mg"); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + deviceDataDtoList.add(deviceDataDto); + } + break; + case "井盖定位监测仪": + deviceData = this.baseMapper.wellcoverlocaData(devcode); + if (ObjectUtil.isNotEmpty(deviceData)) { + deviceDataDto.setTypeName("井盖位置"); + deviceDataDto.setValue(deviceData.getData()); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + deviceDataDtoList.add(deviceDataDto); + } + break; + + case "燃气智能监测终端(一体化)": + deviceData = this.baseMapper.lgGasData(devcode); + deviceDataDto.setTypeName("燃气浓度"); + if (ObjectUtil.isNotEmpty(deviceData)) { + + Double dValue = Double.parseDouble(deviceData.getData()); + if (dValue <= 20.0) { + deviceDataDto.setValue(deviceData.getData() + "%LEL"); + } else { + DecimalFormat df = new DecimalFormat("0.00"); + dValue = dValue / 20.0; + deviceDataDto.setValue(df.format(dValue) + "%VOL"); + } + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } else { + deviceDataDto.setValue("无数据"); + } + deviceDataDtoList.add(deviceDataDto); + + deviceData = this.baseMapper.lgLiquidData(devcode); + deviceDataDto.setTypeName("井内水位"); + if (ObjectUtil.isNotEmpty(deviceData)) { + + deviceDataDto.setValue(deviceData.getData() + "m"); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } else { + deviceDataDto.setValue("无数据"); + } + deviceDataDtoList.add((DeviceDataDto) deviceDataDto.clone()); + break; + + default://未知设备 + log.info("未知设备!"); + break; + } + return deviceDataDtoList; + } + + @Override + public BfztCountDataDto getBfztCountData(List deptIds, Boolean isApp) { + return this.baseMapper.bfztCountData(deptIds, isApp); + } + + @Override + public List getWatchDatas(Long id) { + + List deviceInWellInfos = deviceSupportService.getDeviceInWellInfo(id); + List watchDataDtos = new ArrayList<>(); + + for (DeviceInWellInfo deviceInWellInfo : deviceInWellInfos) { + WatchDataDto watchDataDto = new WatchDataDto(); + watchDataDto.setDeviceId(deviceInWellInfo.getDeviceId()); + watchDataDto.setDevcode(deviceInWellInfo.getDevcode()); + watchDataDto.setInstallDate(deviceInWellInfo.getInstallDate()); + watchDataDto.setOnlineState(deviceInWellInfo.getOnlineState()); + watchDataDto.setOnlineStateName(dictService.getDictNameByCode("onlineStatus", deviceInWellInfo.getOnlineState())); + + DeviceData deviceData; + DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + + switch (deviceInWellInfo.getTypeName()) { + case "井盖状态监测仪": + deviceData = this.baseMapper.wellcoverData(deviceInWellInfo.getDevcode()); + watchDataDto.setWatchType("井盖状态"); + watchDataDto.setType("1"); + if (ObjectUtil.isNotEmpty(deviceData)) { + //井盖离线 + if ("0".equals(watchDataDto.getOnlineState())) { + watchDataDto.setValue("离线"); + watchDataDto.setData("离线"); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } else if ("心跳".equals(deviceData.getData())) { + watchDataDto.setValue("井盖状态正常"); + watchDataDto.setData("井盖状态正常"); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } else { + watchDataDto.setValue(deviceData.getData()); + watchDataDto.setData(deviceData.getData()); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } + } else { + watchDataDto.setValue("无数据"); + watchDataDto.setData("无数据"); + } + watchDataDtos.add(watchDataDto); + break; + + case "液位监测仪": + deviceData = this.baseMapper.liquidData(deviceInWellInfo.getDevcode()); + if (ObjectUtil.isNotEmpty(deviceData)) { + watchDataDto.setWatchType("井内水位"); + watchDataDto.setType("2"); + + watchDataDto.setValue(deviceData.getData() + "m"); + watchDataDto.setData(deviceData.getData() + "m"); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + watchDataDtos.add(watchDataDto); + } + break; + + case "有害气体监测仪": + deviceData = this.baseMapper.harmfulgasData(deviceInWellInfo.getDevcode()); + if (ObjectUtil.isNotEmpty(deviceData)) { + String[] harmfulGasDatas = deviceData.getData().split(","); + HarmfulGasBusiness[] harmfulGasBusinesses = HarmfulGasBusiness.values(); + + for (int i = 0; i < harmfulGasDatas.length; i++) { + watchDataDto.setWatchType(harmfulGasBusinesses[i].getDesc()); + watchDataDto.setType("3"); + watchDataDto.setValue(harmfulGasDatas[i] + harmfulGasBusinesses[i].getUnit()); + watchDataDto.setData(harmfulGasDatas[i] + harmfulGasBusinesses[i].getUnit()); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + watchDataDtos.add((WatchDataDto) watchDataDto.clone()); + } + } + break; + + case "燃气智能监测终端": + deviceData = this.baseMapper.gasData(deviceInWellInfo.getDevcode()); + if (ObjectUtil.isNotEmpty(deviceData)) { + watchDataDto.setWatchType("燃气浓度"); + watchDataDto.setType("4"); + + watchDataDto.setValue(deviceData.getData() + "%LEL"); + watchDataDto.setData(deviceData.getData() + "%LEL"); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + watchDataDtos.add(watchDataDto); + } + break; + + case "温湿度监测仪": + deviceData = this.baseMapper.temphumData(deviceInWellInfo.getDevcode()); + if (ObjectUtil.isNotEmpty(deviceData)) { + String[] temphumDatas = deviceData.getData().split(","); + TemphumBusiness[] temphumBusinesses = TemphumBusiness.values(); + + for (int i = 0; i < temphumDatas.length; i++) { + watchDataDto.setWatchType(temphumBusinesses[i].getDesc()); + watchDataDto.setType("5"); + watchDataDto.setValue(temphumDatas[i] + temphumBusinesses[i].getUnit()); + watchDataDto.setData(temphumDatas[i] + temphumBusinesses[i].getUnit()); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + watchDataDtos.add((WatchDataDto) watchDataDto.clone()); + } + } + break; + + case "开挖监测仪": + deviceData = this.baseMapper.digData(deviceInWellInfo.getDevcode()); + if (ObjectUtil.isNotEmpty(deviceData)) { + watchDataDto.setWatchType("开挖状态"); + watchDataDto.setType("6"); + + watchDataDto.setValue(deviceData.getData() + "mg"); + watchDataDto.setData(deviceData.getData() + "mg"); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + watchDataDtos.add(watchDataDto); + } + break; + + case "噪声记录仪": + deviceData = this.baseMapper.noiseData(deviceInWellInfo.getDevcode()); + if (ObjectUtil.isNotEmpty(deviceData)) { + watchDataDto.setWatchType("管线噪声"); + watchDataDto.setType("8"); + + watchDataDto.setValue(deviceData.getData() + "mg"); + watchDataDto.setData(deviceData.getData() + "mg"); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + watchDataDtos.add(watchDataDto); + } + break; + + case "井盖定位监测仪": + deviceData = this.baseMapper.wellcoverlocaData(deviceInWellInfo.getDevcode()); + if (ObjectUtil.isNotEmpty(deviceData)) { + watchDataDto.setWatchType("井盖位置"); + watchDataDto.setType("7"); + + watchDataDto.setValue(deviceData.getData()); + watchDataDto.setData(deviceData.getData()); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + watchDataDtos.add(watchDataDto); + } + break; + + case "燃气智能监测终端(一体化)": + deviceData = this.baseMapper.lgGasData(deviceInWellInfo.getDevcode()); + watchDataDto.setWatchType("燃气浓度"); + watchDataDto.setType("10"); + if (ObjectUtil.isNotEmpty(deviceData)) { + + Double dValue = Double.parseDouble(deviceData.getData()); + if (dValue <= 20.0) { + watchDataDto.setValue(deviceData.getData() + "%LEL"); + watchDataDto.setData(deviceData.getData() + "%LEL"); + } else { + DecimalFormat df = new DecimalFormat("0.00"); + dValue = dValue / 20.0; + watchDataDto.setValue(df.format(dValue) + "%VOL"); + watchDataDto.setData(df.format(dValue) + "%VOL"); + } + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } else { + watchDataDto.setValue("无数据"); + watchDataDto.setData("无数据"); + } + watchDataDtos.add((WatchDataDto) watchDataDto.clone()); + + deviceData = this.baseMapper.lgLiquidData(deviceInWellInfo.getDevcode()); + watchDataDto.setWatchType("井内水位"); + watchDataDto.setType("10"); + if (ObjectUtil.isNotEmpty(deviceData)) { + + watchDataDto.setValue(deviceData.getData() + "m"); + watchDataDto.setData(deviceData.getData() + "m"); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } else { + watchDataDto.setValue("无数据"); + watchDataDto.setData("无数据"); + } + watchDataDtos.add((WatchDataDto) watchDataDto.clone()); + break; + + default://未知设备 + log.info("未知设备!"); + break; + } + } + + return watchDataDtos; + } + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java index d45eaf7..b9ca243 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java @@ -21,7 +21,7 @@ public interface DeviceMapper extends BaseMapper { List selectDataScopePage(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("deviceType") String deviceType, @Param("deptid") String deptid, @Param("beginTime") String beginTime, @Param("endTime") String endTime, @Param("keywords") String keywords,@Param("isOnline") String isOnline); - + List getDeviceList(@Param("scope") DataScope dataScope); DeviceWellDto selectWellIdByCode(@Param("wellCode") String wellCode); DeviceConcentratorDto selectDeviceConcentorByCode(@Param("concenCode") String concenCode); @@ -61,4 +61,13 @@ List> selectTempDataList(@Param("dataScope")DataScope dataScope, @Param("wellCode")String wellCode, @Param("beginTime")String beginTime, @Param("endTime")String endTime); List> selectHarmfulDataList(@Param("dataScope")DataScope dataScope, @Param("wellCode")String wellCode, @Param("beginTime")String beginTime, @Param("endTime")String endTime); + + /** + * 查询设备信息 + * @param id 设备主键 + * @return + */ + DeviceInfoDto selectDeviceById(@Param("id") Long id); + + List getDeviceInWellInfo(@Param("id") Long id); } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml index fb6f4f4..c956057 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml @@ -902,5 +902,64 @@ ) t1 ORDER BY uptime asc + + + + d.ID AS deviceId, DEVCODE AS devcode, INSTALL_DATE AS installDate, ONLINE_STATE AS onlineState, t.TYPE_NAME AS typeName + + diff --git a/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/controller/BusMapOverviewController.java b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/controller/BusMapOverviewController.java new file mode 100644 index 0000000..9d9f43c --- /dev/null +++ b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/controller/BusMapOverviewController.java @@ -0,0 +1,182 @@ +package com.casic.missiles.modular.system.controller; + +import cn.hutool.core.collection.CollectionUtil; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.model.exception.ServiceException; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.model.response.SuccessResponseData; +import com.casic.missiles.modular.system.dto.BusWellInfoDto; +import com.casic.missiles.modular.system.dto.DeviceDataDto; +import com.casic.missiles.modular.system.dto.DeviceInfoDto; +import com.casic.missiles.modular.system.dto.WatchDataDto; +import com.casic.missiles.modular.system.model.BusWellInfo; +import com.casic.missiles.modular.system.service.IBusDeviceSupportService; +import com.casic.missiles.modular.system.service.IBusWellInfoSupportService; +import com.casic.missiles.modular.system.service.IDataAnalysisService; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.ResponseBody; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; + +/** + * 地图总览模块的controller + * + * @author tanyue + * @Date 2019-05-13 19:20:29 + */ +@Controller +@RequestMapping("/overview") +public class BusMapOverviewController extends BaseController { + + @Resource + private AbstractPermissionContext permissionService; + @Resource + private AbstractDictService dictService; + @Resource + private IBusWellInfoSupportService busWellInfoService; + @Resource + private IDataAnalysisService dataAnalysisService; + @Resource + private IBusDeviceSupportService busDeviceSupportService; + + /** + * 获取列表 + */ + @RequestMapping(value = "/wellList") + @ResponseBody + public Object wellList(@RequestParam(required = false) String keywords, + @RequestParam(required = false) String wellType, + @RequestParam(required = false) String deptid, + @RequestParam(required = false) String isAlarm) { + + DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope(); + List wellList = new ArrayList(); + + if (null == isAlarm || isAlarm.equals("") == true) { + // isAlarm参数为空,查询所有的闸井 + + // 查询并添加当前部门的闸井 + List myList = busWellInfoService.getWellList(dataScope, keywords, wellType, deptid); + if (null != myList && myList.isEmpty() == false) { + wellList.addAll(myList); + } + + /** + * 不需要了,由dataScope控制权限 + // 查询并添加下级部门的闸井 + List subDepts = permissionService.getSubDepts(deptid,null); + if (null != subDepts && subDepts.isEmpty() == false) { + for (Long subDeptId : subDepts) { + List subList = busWellInfoService.getWellList(dataScope, keywords, wellType, String.valueOf(subDeptId)); + if (null != subList && subList.isEmpty() == false) { + wellList.addAll(subList); + } + } + } + */ + } else if (isAlarm.equals("1")) { + // isAlarm = 1 查询所有报警状态的闸井 + wellList = dataAnalysisService.getAlarmWellList(dataScope, keywords, wellType, deptid); + } else { + // isAlarm = 0 查询所有不是报警状态的闸井 + wellList = dataAnalysisService.getNotAlarmWellList(dataScope, keywords, wellType, deptid); + } + + + return ResponseData.success(wellList); + } + + /** + * 获取设备列表 + */ + @RequestMapping(value = "/deviceList") + @ResponseBody + public Object deviceList() { + + DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope(); + List wellList = new ArrayList(); + wellList = busDeviceSupportService.getDeviceList(dataScope); + return ResponseData.success(wellList); + } + + /** + * 获取设备详情 + */ + @RequestMapping(value = "/deviceDetail", method = RequestMethod.GET) + @ResponseBody + public Object deviceDetail(@RequestParam(required = true) Long id) { + if (null == id) { + throw new ServiceException(CoreExceptionEnum.REQUEST_NULL); + } + DeviceInfoDto deviceInfoDto = busDeviceSupportService.selectDeviceById(id); + SuccessResponseData successResult = new SuccessResponseData(); + if (null == deviceInfoDto) { + successResult.setCode(200); + successResult.setMessage("success"); + successResult.setData(new HashMap()); + } else { + // 设置最新的监测数据 + List deviceDataDtoList = dataAnalysisService.getDeviceDatas(deviceInfoDto.getDeviceTypeName(), deviceInfoDto.getDevcode(), deviceInfoDto.getOnlineState()); + if (CollectionUtil.isNotEmpty(deviceDataDtoList)) { + deviceInfoDto.setRealtimeData(deviceDataDtoList); + } + successResult.setMessage("success"); + successResult.setData(deviceInfoDto); + } + return successResult; + } + + + /** + * 获取闸井详情 + */ + @RequestMapping(value = "/wellInfo", method = RequestMethod.GET) + @ResponseBody + public Object wellInfo(@RequestParam(required = true) Long id) { + if (null == id) { + throw new ServiceException(CoreExceptionEnum.REQUEST_NULL); + } + + BusWellInfo busWellInfo = busWellInfoService.getById(id); + SuccessResponseData successResult = new SuccessResponseData(); + if (null == busWellInfo) { + successResult.setCode(200); + successResult.setMessage("success"); + successResult.setData(new HashMap()); + } else { + BusWellInfoDto busWellInfoDto = new BusWellInfoDto(); + busWellInfoDto.convertBusWellInfo(busWellInfo); + + // 设置字典值 + busWellInfoDto.setBfztName(dictService.getDictNameByCode("bfzt", busWellInfo.getBfzt())); + busWellInfoDto.setWellTypeName(dictService.getDictNameByCode("sluicewellType", busWellInfo.getWellType())); + busWellInfoDto.setDeptName(permissionService.getDeptService().getDeptName(busWellInfo.getDeptid())); + + // 设置最新的监测数据 + List watchDataDtos = dataAnalysisService.getWatchDatas(id); + if (null != watchDataDtos && watchDataDtos.isEmpty() == false) { + for (WatchDataDto watchDataDto : watchDataDtos) { + watchDataDto.setValue(watchDataDto.getData()); + } + } + + busWellInfoDto.setWatchData(watchDataDtos); + + successResult.setMessage("success"); + successResult.setData(busWellInfoDto.toMap()); + } + return successResult; + } + + +} diff --git a/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/controller/WellDataController.java b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/controller/WellDataController.java new file mode 100644 index 0000000..c33ec7d --- /dev/null +++ b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/controller/WellDataController.java @@ -0,0 +1,81 @@ +package com.casic.missiles.modular.system.controller; + +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.model.exception.ServiceException; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.model.response.SuccessResponseData; +import com.casic.missiles.modular.system.service.IDataAnalysisService; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.ResponseBody; + +import javax.annotation.Resource; +import java.util.List; +import java.util.Set; + +@Controller +@RequestMapping("/well") +public class WellDataController extends BaseController { + @Resource + private AbstractPermissionContext permissionService; + @Resource + private IDataAnalysisService dataAnalysisService; + + + /** + * 获取闸井设备数据 + */ + @RequestMapping(value = "/watchDataByWell", method = RequestMethod.GET) + @ResponseBody + public Object watchDataByWell(Long id) { + if (null == id) { + throw new ServiceException(CoreExceptionEnum.REQUEST_NULL); + } + SuccessResponseData resultData = new SuccessResponseData(); + resultData.setData(dataAnalysisService.getWatchDatas(id)); + + return resultData; + } + + /** + * 根据布防状态统计闸井数量接口 + */ + @RequestMapping(value = "/countByBfzt", method = RequestMethod.GET) + @ResponseBody + public Object countByBfzt() { + DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope(); + Set roleTipes = permissionService.getAuthService().getLoginUser().getRoleTips(); + List deptIds = null; + Boolean isApp = false; + if (roleTipes.contains("leader") || roleTipes.contains("member")) { + deptIds = permissionService.getDeptService().getIdsByPid(permissionService.getAuthService().getLoginUser().getDeptId(), null); + deptIds.add(permissionService.getAuthService().getLoginUser().getDeptId()); + isApp = true; + } else { + deptIds = dataScope.getDeptIds(); + isApp = false; + } + SuccessResponseData resultData = new SuccessResponseData(); + dataAnalysisService.getBfztCountData(deptIds, isApp); + resultData.setData(dataAnalysisService.getBfztCountData(deptIds, isApp)); + return resultData; + } + + /** + * 获取布防类型(APP用) + */ + @RequestMapping(value = "/bfType", method = RequestMethod.GET) + @ResponseBody + public Object bfType(Long id) { + if (null == id) { + throw new ServiceException(CoreExceptionEnum.REQUEST_NULL); + } + SuccessResponseData resultData = new SuccessResponseData(); + resultData.setData(dataAnalysisService.getWatchDatas(id)); + return resultData; + } + +} diff --git a/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/dao/DataAnalysisMapper.java b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/dao/DataAnalysisMapper.java new file mode 100644 index 0000000..149fb82 --- /dev/null +++ b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/dao/DataAnalysisMapper.java @@ -0,0 +1,48 @@ +package com.casic.missiles.modular.system.dao; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.*; +import com.casic.missiles.modular.system.model.BusWellInfo; +import com.casic.missiles.core.datascope.DataScope; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * 闸井信息表 Mapper 接口 + *

+ * + * @author stylefeng123 + * @since 2019-05-13 + */ +public interface DataAnalysisMapper extends BaseMapper { + + List getAlarmWellList(@Param("scope") DataScope dataScope, @Param("keywords") String keywords, @Param("wellType") String deviceType, @Param("deptid") String deptid); + + List getNotAlarmWellList(@Param("scope") DataScope dataScope, @Param("keywords") String keywords, @Param("wellType") String deviceType, @Param("deptid") String deptid); + + DeviceData wellcoverData(@Param("devcode") String devcode); + + DeviceData liquidData(@Param("devcode") String devcode); + + DeviceData harmfulgasData(@Param("devcode") String devcode); + + DeviceData gasData(@Param("devcode") String devcode); + + DeviceData temphumData(@Param("devcode") String devcode); + + DeviceData digData(@Param("devcode") String devcode); + + DeviceData noiseData(@Param("devcode") String devcode); + + DeviceData wellcoverlocaData(@Param("devcode") String devcode); + + DeviceData lgGasData(@Param("devcode") String devcode);//燃气液位 + + DeviceData lgLiquidData(@Param("devcode") String devcode);//燃气液位 + + + BfztCountDataDto bfztCountData(@Param("deptIds") List deptIds, @Param("isApp") Boolean isApp); +} diff --git a/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/dao/mapping/DataAnalysisMapper.xml b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/dao/mapping/DataAnalysisMapper.xml new file mode 100644 index 0000000..6d7edb3 --- /dev/null +++ b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/dao/mapping/DataAnalysisMapper.xml @@ -0,0 +1,170 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ID + AS id, WELL_CODE AS wellCode, WELL_NAME AS wellName, DEEP AS deep, COORDINATE_X AS coordinateX, COORDINATE_Y AS coordinateY, LAT_BAIDU AS latBaidu, LNG_BAIDU AS lngBaidu, LNG_GAODE AS lngGaode, LAT_GAODE AS latGaode, AREA AS area, POSITION AS position, DEPTID AS deptid, PHOTOS AS photos, NOTES AS notes, WELL_TYPE AS wellType, STAFF AS staff, TEL AS tel, TS AS ts, VALID AS valid, BFZT AS bfzt, RESPONSIBLE_DEPT AS responsibleDept + + + + ID + AS id, WELL_CODE AS wellCode, WELL_NAME AS wellName, DEEP AS deep, COORDINATE_X AS coordinateX, COORDINATE_Y AS coordinateY, LAT_BAIDU AS latBaidu, LNG_BAIDU AS lngBaidu, LNG_GAODE AS lngGaode, LAT_GAODE AS latGaode, AREA AS area, POSITION AS position, DEPTID AS deptid, PHOTOS AS photos, NOTES AS notes, WELL_TYPE AS wellType, STAFF AS staff, TEL AS tel, TS AS ts, VALID AS valid, BFZT AS bfzt,d1.simplename AS deptName,d2.id AS responsibleDept,d2.simplename AS responsibleDeptName + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/service/IDataAnalysisService.java b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/service/IDataAnalysisService.java new file mode 100644 index 0000000..69c8c60 --- /dev/null +++ b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/service/IDataAnalysisService.java @@ -0,0 +1,51 @@ +package com.casic.missiles.modular.system.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.modular.system.dto.BfztCountDataDto; +import com.casic.missiles.modular.system.dto.BusWellInfoDto; +import com.casic.missiles.modular.system.dto.DeviceDataDto; +import com.casic.missiles.modular.system.dto.WatchDataDto; +import com.casic.missiles.modular.system.model.BusWellInfo; + +import java.util.List; + +/** + * 数据统计服务接口 + * + * @author lwh + */ +public interface IDataAnalysisService extends IService { + /** + * 获取告警闸井列表 + * @param dataScope 数据权限 + * @param keywords 关键字 + * @param wellType 井列表 + * @param deptid 组织id + * @return + */ + List getAlarmWellList(DataScope dataScope, String keywords, String wellType, String deptid); + + /** + * 获取不告警井列表信息 + * @param dataScope 数据权限 + * @param keywords 关键字 + * @param wellType 井类型 + * @param deptid 组织id + * @return + */ + List getNotAlarmWellList(DataScope dataScope, String keywords, String wellType, String deptid); + + /** + * 设备数据查询接口 + * @param devTypename 设备类型 + * @param devcode 设备编码 + * @param status 设备状态 + * @return 设备监测数据 + */ + List getDeviceDatas(String devTypename, String devcode, String status); + List getWatchDatas(Long id); + + + BfztCountDataDto getBfztCountData(List deptIds, Boolean isApp); +} diff --git a/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/service/impl/IDataAnalysisServiceImpl.java b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/service/impl/IDataAnalysisServiceImpl.java new file mode 100644 index 0000000..288a828 --- /dev/null +++ b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/service/impl/IDataAnalysisServiceImpl.java @@ -0,0 +1,386 @@ +package com.casic.missiles.modular.system.service.impl; + +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.modular.system.dao.DataAnalysisMapper; +import com.casic.missiles.modular.system.dto.*; +import com.casic.missiles.modular.system.enmus.HarmfulGasBusiness; +import com.casic.missiles.modular.system.enmus.TemphumBusiness; +import com.casic.missiles.modular.system.model.BusWellInfo; +import com.casic.missiles.modular.system.service.IBusDeviceSupportService; +import com.casic.missiles.modular.system.service.IDataAnalysisService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import java.text.DateFormat; +import java.text.DecimalFormat; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.List; + +/** + * 数据统计分析 + * + * @author lwh + */ +@Slf4j +@Component +public class IDataAnalysisServiceImpl extends ServiceImpl implements IDataAnalysisService { + @Resource + private AbstractDictService dictService; + @Resource + private IBusDeviceSupportService deviceSupportService; + + @Override + public List getAlarmWellList(DataScope dataScope, String keywords, String wellType, String deptid) { + return this.baseMapper.getAlarmWellList(dataScope, keywords, wellType, deptid); + } + + @Override + public List getNotAlarmWellList(DataScope dataScope, String keywords, String wellType, String deptid) { + return this.baseMapper.getNotAlarmWellList(dataScope, keywords, wellType, deptid); + } + + @Override + public List getDeviceDatas(String devTypeName, String devcode, String status) { + List deviceDataDtoList = new ArrayList<>(); + DeviceDataDto deviceDataDto = new DeviceDataDto(); + DeviceData deviceData; + DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + switch (devTypeName) { + case "井盖状态监测仪": + deviceData = this.baseMapper.wellcoverData(devcode); + deviceDataDto.setTypeName("井盖状态"); + if (ObjectUtil.isNotEmpty(deviceData)) { + //井盖离线 + if ("0".equals(status)) { + deviceDataDto.setValue("离线"); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } else if ("心跳".equals(deviceData.getData())) { + deviceDataDto.setValue("井盖状态正常"); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } else { + deviceDataDto.setValue(deviceData.getData()); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } + } else { + deviceDataDto.setValue("无数据"); + } + deviceDataDtoList.add(deviceDataDto); + break; + + case "液位监测仪": + deviceData = this.baseMapper.liquidData(devcode); + if (ObjectUtil.isNotEmpty(deviceData)) { + deviceDataDto.setTypeName("井内水位"); + deviceDataDto.setValue(deviceData.getData() + "m"); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + deviceDataDtoList.add(deviceDataDto); + } + break; + + case "有害气体监测仪": + deviceData = this.baseMapper.harmfulgasData(devcode); + if (ObjectUtil.isNotEmpty(deviceData)) { + String[] harmfulGasDatas = deviceData.getData().split(","); + HarmfulGasBusiness[] harmfulGasBusinesses = HarmfulGasBusiness.values(); + for (int i = 0; i < harmfulGasDatas.length; i++) { + deviceDataDto = new DeviceDataDto(); + deviceDataDto.setTypeName(harmfulGasBusinesses[i].getDesc()); + deviceDataDto.setValue(harmfulGasDatas[i] + harmfulGasBusinesses[i].getUnit()); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + deviceDataDtoList.add((DeviceDataDto) deviceDataDto.clone()); + } + } + break; + case "燃气智能监测终端": + deviceData = this.baseMapper.gasData(devcode); + if (ObjectUtil.isNotEmpty(deviceData)) { + deviceDataDto.setTypeName("燃气浓度"); + deviceDataDto.setValue(deviceData.getData() + "%LEL"); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + deviceDataDtoList.add(deviceDataDto); + } + break; + + case "温湿度监测仪": + deviceData = this.baseMapper.temphumData(devcode); + if (ObjectUtil.isNotEmpty(deviceData)) { + String[] temphumDatas = deviceData.getData().split(","); + TemphumBusiness[] temphumBusinesses = TemphumBusiness.values(); + for (int i = 0; i < temphumDatas.length; i++) { + deviceDataDto = new DeviceDataDto(); + deviceDataDto.setTypeName(temphumBusinesses[i].getDesc()); + deviceDataDto.setValue(temphumDatas[i] + temphumBusinesses[i].getUnit()); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + deviceDataDtoList.add((DeviceDataDto) deviceDataDto.clone()); + } + } + break; + + case "开挖监测仪": + deviceData = this.baseMapper.digData(devcode); + if (ObjectUtil.isNotEmpty(deviceData)) { + deviceDataDto.setTypeName("开挖状态"); + deviceDataDto.setValue(deviceData.getData() + "mg"); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + deviceDataDtoList.add(deviceDataDto); + } + break; + + case "噪声记录仪": + deviceData = this.baseMapper.noiseData(devcode); + if (ObjectUtil.isNotEmpty(deviceData)) { + deviceDataDto.setTypeName("管线噪声"); + deviceDataDto.setValue(deviceData.getData() + "mg"); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + deviceDataDtoList.add(deviceDataDto); + } + break; + case "井盖定位监测仪": + deviceData = this.baseMapper.wellcoverlocaData(devcode); + if (ObjectUtil.isNotEmpty(deviceData)) { + deviceDataDto.setTypeName("井盖位置"); + deviceDataDto.setValue(deviceData.getData()); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + deviceDataDtoList.add(deviceDataDto); + } + break; + + case "燃气智能监测终端(一体化)": + deviceData = this.baseMapper.lgGasData(devcode); + deviceDataDto.setTypeName("燃气浓度"); + if (ObjectUtil.isNotEmpty(deviceData)) { + + Double dValue = Double.parseDouble(deviceData.getData()); + if (dValue <= 20.0) { + deviceDataDto.setValue(deviceData.getData() + "%LEL"); + } else { + DecimalFormat df = new DecimalFormat("0.00"); + dValue = dValue / 20.0; + deviceDataDto.setValue(df.format(dValue) + "%VOL"); + } + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } else { + deviceDataDto.setValue("无数据"); + } + deviceDataDtoList.add(deviceDataDto); + + deviceData = this.baseMapper.lgLiquidData(devcode); + deviceDataDto.setTypeName("井内水位"); + if (ObjectUtil.isNotEmpty(deviceData)) { + + deviceDataDto.setValue(deviceData.getData() + "m"); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } else { + deviceDataDto.setValue("无数据"); + } + deviceDataDtoList.add((DeviceDataDto) deviceDataDto.clone()); + break; + + default://未知设备 + log.info("未知设备!"); + break; + } + return deviceDataDtoList; + } + + @Override + public BfztCountDataDto getBfztCountData(List deptIds, Boolean isApp) { + return this.baseMapper.bfztCountData(deptIds, isApp); + } + + @Override + public List getWatchDatas(Long id) { + + List deviceInWellInfos = deviceSupportService.getDeviceInWellInfo(id); + List watchDataDtos = new ArrayList<>(); + + for (DeviceInWellInfo deviceInWellInfo : deviceInWellInfos) { + WatchDataDto watchDataDto = new WatchDataDto(); + watchDataDto.setDeviceId(deviceInWellInfo.getDeviceId()); + watchDataDto.setDevcode(deviceInWellInfo.getDevcode()); + watchDataDto.setInstallDate(deviceInWellInfo.getInstallDate()); + watchDataDto.setOnlineState(deviceInWellInfo.getOnlineState()); + watchDataDto.setOnlineStateName(dictService.getDictNameByCode("onlineStatus", deviceInWellInfo.getOnlineState())); + + DeviceData deviceData; + DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + + switch (deviceInWellInfo.getTypeName()) { + case "井盖状态监测仪": + deviceData = this.baseMapper.wellcoverData(deviceInWellInfo.getDevcode()); + watchDataDto.setWatchType("井盖状态"); + watchDataDto.setType("1"); + if (ObjectUtil.isNotEmpty(deviceData)) { + //井盖离线 + if ("0".equals(watchDataDto.getOnlineState())) { + watchDataDto.setValue("离线"); + watchDataDto.setData("离线"); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } else if ("心跳".equals(deviceData.getData())) { + watchDataDto.setValue("井盖状态正常"); + watchDataDto.setData("井盖状态正常"); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } else { + watchDataDto.setValue(deviceData.getData()); + watchDataDto.setData(deviceData.getData()); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } + } else { + watchDataDto.setValue("无数据"); + watchDataDto.setData("无数据"); + } + watchDataDtos.add(watchDataDto); + break; + + case "液位监测仪": + deviceData = this.baseMapper.liquidData(deviceInWellInfo.getDevcode()); + if (ObjectUtil.isNotEmpty(deviceData)) { + watchDataDto.setWatchType("井内水位"); + watchDataDto.setType("2"); + + watchDataDto.setValue(deviceData.getData() + "m"); + watchDataDto.setData(deviceData.getData() + "m"); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + watchDataDtos.add(watchDataDto); + } + break; + + case "有害气体监测仪": + deviceData = this.baseMapper.harmfulgasData(deviceInWellInfo.getDevcode()); + if (ObjectUtil.isNotEmpty(deviceData)) { + String[] harmfulGasDatas = deviceData.getData().split(","); + HarmfulGasBusiness[] harmfulGasBusinesses = HarmfulGasBusiness.values(); + + for (int i = 0; i < harmfulGasDatas.length; i++) { + watchDataDto.setWatchType(harmfulGasBusinesses[i].getDesc()); + watchDataDto.setType("3"); + watchDataDto.setValue(harmfulGasDatas[i] + harmfulGasBusinesses[i].getUnit()); + watchDataDto.setData(harmfulGasDatas[i] + harmfulGasBusinesses[i].getUnit()); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + watchDataDtos.add((WatchDataDto) watchDataDto.clone()); + } + } + break; + + case "燃气智能监测终端": + deviceData = this.baseMapper.gasData(deviceInWellInfo.getDevcode()); + if (ObjectUtil.isNotEmpty(deviceData)) { + watchDataDto.setWatchType("燃气浓度"); + watchDataDto.setType("4"); + + watchDataDto.setValue(deviceData.getData() + "%LEL"); + watchDataDto.setData(deviceData.getData() + "%LEL"); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + watchDataDtos.add(watchDataDto); + } + break; + + case "温湿度监测仪": + deviceData = this.baseMapper.temphumData(deviceInWellInfo.getDevcode()); + if (ObjectUtil.isNotEmpty(deviceData)) { + String[] temphumDatas = deviceData.getData().split(","); + TemphumBusiness[] temphumBusinesses = TemphumBusiness.values(); + + for (int i = 0; i < temphumDatas.length; i++) { + watchDataDto.setWatchType(temphumBusinesses[i].getDesc()); + watchDataDto.setType("5"); + watchDataDto.setValue(temphumDatas[i] + temphumBusinesses[i].getUnit()); + watchDataDto.setData(temphumDatas[i] + temphumBusinesses[i].getUnit()); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + watchDataDtos.add((WatchDataDto) watchDataDto.clone()); + } + } + break; + + case "开挖监测仪": + deviceData = this.baseMapper.digData(deviceInWellInfo.getDevcode()); + if (ObjectUtil.isNotEmpty(deviceData)) { + watchDataDto.setWatchType("开挖状态"); + watchDataDto.setType("6"); + + watchDataDto.setValue(deviceData.getData() + "mg"); + watchDataDto.setData(deviceData.getData() + "mg"); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + watchDataDtos.add(watchDataDto); + } + break; + + case "噪声记录仪": + deviceData = this.baseMapper.noiseData(deviceInWellInfo.getDevcode()); + if (ObjectUtil.isNotEmpty(deviceData)) { + watchDataDto.setWatchType("管线噪声"); + watchDataDto.setType("8"); + + watchDataDto.setValue(deviceData.getData() + "mg"); + watchDataDto.setData(deviceData.getData() + "mg"); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + watchDataDtos.add(watchDataDto); + } + break; + + case "井盖定位监测仪": + deviceData = this.baseMapper.wellcoverlocaData(deviceInWellInfo.getDevcode()); + if (ObjectUtil.isNotEmpty(deviceData)) { + watchDataDto.setWatchType("井盖位置"); + watchDataDto.setType("7"); + + watchDataDto.setValue(deviceData.getData()); + watchDataDto.setData(deviceData.getData()); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + watchDataDtos.add(watchDataDto); + } + break; + + case "燃气智能监测终端(一体化)": + deviceData = this.baseMapper.lgGasData(deviceInWellInfo.getDevcode()); + watchDataDto.setWatchType("燃气浓度"); + watchDataDto.setType("10"); + if (ObjectUtil.isNotEmpty(deviceData)) { + + Double dValue = Double.parseDouble(deviceData.getData()); + if (dValue <= 20.0) { + watchDataDto.setValue(deviceData.getData() + "%LEL"); + watchDataDto.setData(deviceData.getData() + "%LEL"); + } else { + DecimalFormat df = new DecimalFormat("0.00"); + dValue = dValue / 20.0; + watchDataDto.setValue(df.format(dValue) + "%VOL"); + watchDataDto.setData(df.format(dValue) + "%VOL"); + } + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } else { + watchDataDto.setValue("无数据"); + watchDataDto.setData("无数据"); + } + watchDataDtos.add((WatchDataDto) watchDataDto.clone()); + + deviceData = this.baseMapper.lgLiquidData(deviceInWellInfo.getDevcode()); + watchDataDto.setWatchType("井内水位"); + watchDataDto.setType("10"); + if (ObjectUtil.isNotEmpty(deviceData)) { + + watchDataDto.setValue(deviceData.getData() + "m"); + watchDataDto.setData(deviceData.getData() + "m"); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } else { + watchDataDto.setValue("无数据"); + watchDataDto.setData("无数据"); + } + watchDataDtos.add((WatchDataDto) watchDataDto.clone()); + break; + + default://未知设备 + log.info("未知设备!"); + break; + } + } + + return watchDataDtos; + } + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java index d45eaf7..b9ca243 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java @@ -21,7 +21,7 @@ public interface DeviceMapper extends BaseMapper { List selectDataScopePage(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("deviceType") String deviceType, @Param("deptid") String deptid, @Param("beginTime") String beginTime, @Param("endTime") String endTime, @Param("keywords") String keywords,@Param("isOnline") String isOnline); - + List getDeviceList(@Param("scope") DataScope dataScope); DeviceWellDto selectWellIdByCode(@Param("wellCode") String wellCode); DeviceConcentratorDto selectDeviceConcentorByCode(@Param("concenCode") String concenCode); @@ -61,4 +61,13 @@ List> selectTempDataList(@Param("dataScope")DataScope dataScope, @Param("wellCode")String wellCode, @Param("beginTime")String beginTime, @Param("endTime")String endTime); List> selectHarmfulDataList(@Param("dataScope")DataScope dataScope, @Param("wellCode")String wellCode, @Param("beginTime")String beginTime, @Param("endTime")String endTime); + + /** + * 查询设备信息 + * @param id 设备主键 + * @return + */ + DeviceInfoDto selectDeviceById(@Param("id") Long id); + + List getDeviceInWellInfo(@Param("id") Long id); } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml index fb6f4f4..c956057 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml @@ -902,5 +902,64 @@ ) t1 ORDER BY uptime asc + + + + d.ID AS deviceId, DEVCODE AS devcode, INSTALL_DATE AS installDate, ONLINE_STATE AS onlineState, t.TYPE_NAME AS typeName + + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java b/casic-device/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java index 72c60f0..090415c 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java @@ -17,7 +17,7 @@ * @author lwh123 * @since 2019-05-23 */ -public interface IDeviceService extends IService { +public interface IDeviceService extends IService{ /** * 根据条件分页查询设备列表 diff --git a/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/controller/BusMapOverviewController.java b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/controller/BusMapOverviewController.java new file mode 100644 index 0000000..9d9f43c --- /dev/null +++ b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/controller/BusMapOverviewController.java @@ -0,0 +1,182 @@ +package com.casic.missiles.modular.system.controller; + +import cn.hutool.core.collection.CollectionUtil; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.model.exception.ServiceException; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.model.response.SuccessResponseData; +import com.casic.missiles.modular.system.dto.BusWellInfoDto; +import com.casic.missiles.modular.system.dto.DeviceDataDto; +import com.casic.missiles.modular.system.dto.DeviceInfoDto; +import com.casic.missiles.modular.system.dto.WatchDataDto; +import com.casic.missiles.modular.system.model.BusWellInfo; +import com.casic.missiles.modular.system.service.IBusDeviceSupportService; +import com.casic.missiles.modular.system.service.IBusWellInfoSupportService; +import com.casic.missiles.modular.system.service.IDataAnalysisService; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.ResponseBody; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; + +/** + * 地图总览模块的controller + * + * @author tanyue + * @Date 2019-05-13 19:20:29 + */ +@Controller +@RequestMapping("/overview") +public class BusMapOverviewController extends BaseController { + + @Resource + private AbstractPermissionContext permissionService; + @Resource + private AbstractDictService dictService; + @Resource + private IBusWellInfoSupportService busWellInfoService; + @Resource + private IDataAnalysisService dataAnalysisService; + @Resource + private IBusDeviceSupportService busDeviceSupportService; + + /** + * 获取列表 + */ + @RequestMapping(value = "/wellList") + @ResponseBody + public Object wellList(@RequestParam(required = false) String keywords, + @RequestParam(required = false) String wellType, + @RequestParam(required = false) String deptid, + @RequestParam(required = false) String isAlarm) { + + DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope(); + List wellList = new ArrayList(); + + if (null == isAlarm || isAlarm.equals("") == true) { + // isAlarm参数为空,查询所有的闸井 + + // 查询并添加当前部门的闸井 + List myList = busWellInfoService.getWellList(dataScope, keywords, wellType, deptid); + if (null != myList && myList.isEmpty() == false) { + wellList.addAll(myList); + } + + /** + * 不需要了,由dataScope控制权限 + // 查询并添加下级部门的闸井 + List subDepts = permissionService.getSubDepts(deptid,null); + if (null != subDepts && subDepts.isEmpty() == false) { + for (Long subDeptId : subDepts) { + List subList = busWellInfoService.getWellList(dataScope, keywords, wellType, String.valueOf(subDeptId)); + if (null != subList && subList.isEmpty() == false) { + wellList.addAll(subList); + } + } + } + */ + } else if (isAlarm.equals("1")) { + // isAlarm = 1 查询所有报警状态的闸井 + wellList = dataAnalysisService.getAlarmWellList(dataScope, keywords, wellType, deptid); + } else { + // isAlarm = 0 查询所有不是报警状态的闸井 + wellList = dataAnalysisService.getNotAlarmWellList(dataScope, keywords, wellType, deptid); + } + + + return ResponseData.success(wellList); + } + + /** + * 获取设备列表 + */ + @RequestMapping(value = "/deviceList") + @ResponseBody + public Object deviceList() { + + DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope(); + List wellList = new ArrayList(); + wellList = busDeviceSupportService.getDeviceList(dataScope); + return ResponseData.success(wellList); + } + + /** + * 获取设备详情 + */ + @RequestMapping(value = "/deviceDetail", method = RequestMethod.GET) + @ResponseBody + public Object deviceDetail(@RequestParam(required = true) Long id) { + if (null == id) { + throw new ServiceException(CoreExceptionEnum.REQUEST_NULL); + } + DeviceInfoDto deviceInfoDto = busDeviceSupportService.selectDeviceById(id); + SuccessResponseData successResult = new SuccessResponseData(); + if (null == deviceInfoDto) { + successResult.setCode(200); + successResult.setMessage("success"); + successResult.setData(new HashMap()); + } else { + // 设置最新的监测数据 + List deviceDataDtoList = dataAnalysisService.getDeviceDatas(deviceInfoDto.getDeviceTypeName(), deviceInfoDto.getDevcode(), deviceInfoDto.getOnlineState()); + if (CollectionUtil.isNotEmpty(deviceDataDtoList)) { + deviceInfoDto.setRealtimeData(deviceDataDtoList); + } + successResult.setMessage("success"); + successResult.setData(deviceInfoDto); + } + return successResult; + } + + + /** + * 获取闸井详情 + */ + @RequestMapping(value = "/wellInfo", method = RequestMethod.GET) + @ResponseBody + public Object wellInfo(@RequestParam(required = true) Long id) { + if (null == id) { + throw new ServiceException(CoreExceptionEnum.REQUEST_NULL); + } + + BusWellInfo busWellInfo = busWellInfoService.getById(id); + SuccessResponseData successResult = new SuccessResponseData(); + if (null == busWellInfo) { + successResult.setCode(200); + successResult.setMessage("success"); + successResult.setData(new HashMap()); + } else { + BusWellInfoDto busWellInfoDto = new BusWellInfoDto(); + busWellInfoDto.convertBusWellInfo(busWellInfo); + + // 设置字典值 + busWellInfoDto.setBfztName(dictService.getDictNameByCode("bfzt", busWellInfo.getBfzt())); + busWellInfoDto.setWellTypeName(dictService.getDictNameByCode("sluicewellType", busWellInfo.getWellType())); + busWellInfoDto.setDeptName(permissionService.getDeptService().getDeptName(busWellInfo.getDeptid())); + + // 设置最新的监测数据 + List watchDataDtos = dataAnalysisService.getWatchDatas(id); + if (null != watchDataDtos && watchDataDtos.isEmpty() == false) { + for (WatchDataDto watchDataDto : watchDataDtos) { + watchDataDto.setValue(watchDataDto.getData()); + } + } + + busWellInfoDto.setWatchData(watchDataDtos); + + successResult.setMessage("success"); + successResult.setData(busWellInfoDto.toMap()); + } + return successResult; + } + + +} diff --git a/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/controller/WellDataController.java b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/controller/WellDataController.java new file mode 100644 index 0000000..c33ec7d --- /dev/null +++ b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/controller/WellDataController.java @@ -0,0 +1,81 @@ +package com.casic.missiles.modular.system.controller; + +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.model.exception.ServiceException; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.model.response.SuccessResponseData; +import com.casic.missiles.modular.system.service.IDataAnalysisService; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.ResponseBody; + +import javax.annotation.Resource; +import java.util.List; +import java.util.Set; + +@Controller +@RequestMapping("/well") +public class WellDataController extends BaseController { + @Resource + private AbstractPermissionContext permissionService; + @Resource + private IDataAnalysisService dataAnalysisService; + + + /** + * 获取闸井设备数据 + */ + @RequestMapping(value = "/watchDataByWell", method = RequestMethod.GET) + @ResponseBody + public Object watchDataByWell(Long id) { + if (null == id) { + throw new ServiceException(CoreExceptionEnum.REQUEST_NULL); + } + SuccessResponseData resultData = new SuccessResponseData(); + resultData.setData(dataAnalysisService.getWatchDatas(id)); + + return resultData; + } + + /** + * 根据布防状态统计闸井数量接口 + */ + @RequestMapping(value = "/countByBfzt", method = RequestMethod.GET) + @ResponseBody + public Object countByBfzt() { + DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope(); + Set roleTipes = permissionService.getAuthService().getLoginUser().getRoleTips(); + List deptIds = null; + Boolean isApp = false; + if (roleTipes.contains("leader") || roleTipes.contains("member")) { + deptIds = permissionService.getDeptService().getIdsByPid(permissionService.getAuthService().getLoginUser().getDeptId(), null); + deptIds.add(permissionService.getAuthService().getLoginUser().getDeptId()); + isApp = true; + } else { + deptIds = dataScope.getDeptIds(); + isApp = false; + } + SuccessResponseData resultData = new SuccessResponseData(); + dataAnalysisService.getBfztCountData(deptIds, isApp); + resultData.setData(dataAnalysisService.getBfztCountData(deptIds, isApp)); + return resultData; + } + + /** + * 获取布防类型(APP用) + */ + @RequestMapping(value = "/bfType", method = RequestMethod.GET) + @ResponseBody + public Object bfType(Long id) { + if (null == id) { + throw new ServiceException(CoreExceptionEnum.REQUEST_NULL); + } + SuccessResponseData resultData = new SuccessResponseData(); + resultData.setData(dataAnalysisService.getWatchDatas(id)); + return resultData; + } + +} diff --git a/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/dao/DataAnalysisMapper.java b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/dao/DataAnalysisMapper.java new file mode 100644 index 0000000..149fb82 --- /dev/null +++ b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/dao/DataAnalysisMapper.java @@ -0,0 +1,48 @@ +package com.casic.missiles.modular.system.dao; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.*; +import com.casic.missiles.modular.system.model.BusWellInfo; +import com.casic.missiles.core.datascope.DataScope; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * 闸井信息表 Mapper 接口 + *

+ * + * @author stylefeng123 + * @since 2019-05-13 + */ +public interface DataAnalysisMapper extends BaseMapper { + + List getAlarmWellList(@Param("scope") DataScope dataScope, @Param("keywords") String keywords, @Param("wellType") String deviceType, @Param("deptid") String deptid); + + List getNotAlarmWellList(@Param("scope") DataScope dataScope, @Param("keywords") String keywords, @Param("wellType") String deviceType, @Param("deptid") String deptid); + + DeviceData wellcoverData(@Param("devcode") String devcode); + + DeviceData liquidData(@Param("devcode") String devcode); + + DeviceData harmfulgasData(@Param("devcode") String devcode); + + DeviceData gasData(@Param("devcode") String devcode); + + DeviceData temphumData(@Param("devcode") String devcode); + + DeviceData digData(@Param("devcode") String devcode); + + DeviceData noiseData(@Param("devcode") String devcode); + + DeviceData wellcoverlocaData(@Param("devcode") String devcode); + + DeviceData lgGasData(@Param("devcode") String devcode);//燃气液位 + + DeviceData lgLiquidData(@Param("devcode") String devcode);//燃气液位 + + + BfztCountDataDto bfztCountData(@Param("deptIds") List deptIds, @Param("isApp") Boolean isApp); +} diff --git a/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/dao/mapping/DataAnalysisMapper.xml b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/dao/mapping/DataAnalysisMapper.xml new file mode 100644 index 0000000..6d7edb3 --- /dev/null +++ b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/dao/mapping/DataAnalysisMapper.xml @@ -0,0 +1,170 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ID + AS id, WELL_CODE AS wellCode, WELL_NAME AS wellName, DEEP AS deep, COORDINATE_X AS coordinateX, COORDINATE_Y AS coordinateY, LAT_BAIDU AS latBaidu, LNG_BAIDU AS lngBaidu, LNG_GAODE AS lngGaode, LAT_GAODE AS latGaode, AREA AS area, POSITION AS position, DEPTID AS deptid, PHOTOS AS photos, NOTES AS notes, WELL_TYPE AS wellType, STAFF AS staff, TEL AS tel, TS AS ts, VALID AS valid, BFZT AS bfzt, RESPONSIBLE_DEPT AS responsibleDept + + + + ID + AS id, WELL_CODE AS wellCode, WELL_NAME AS wellName, DEEP AS deep, COORDINATE_X AS coordinateX, COORDINATE_Y AS coordinateY, LAT_BAIDU AS latBaidu, LNG_BAIDU AS lngBaidu, LNG_GAODE AS lngGaode, LAT_GAODE AS latGaode, AREA AS area, POSITION AS position, DEPTID AS deptid, PHOTOS AS photos, NOTES AS notes, WELL_TYPE AS wellType, STAFF AS staff, TEL AS tel, TS AS ts, VALID AS valid, BFZT AS bfzt,d1.simplename AS deptName,d2.id AS responsibleDept,d2.simplename AS responsibleDeptName + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/service/IDataAnalysisService.java b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/service/IDataAnalysisService.java new file mode 100644 index 0000000..69c8c60 --- /dev/null +++ b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/service/IDataAnalysisService.java @@ -0,0 +1,51 @@ +package com.casic.missiles.modular.system.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.modular.system.dto.BfztCountDataDto; +import com.casic.missiles.modular.system.dto.BusWellInfoDto; +import com.casic.missiles.modular.system.dto.DeviceDataDto; +import com.casic.missiles.modular.system.dto.WatchDataDto; +import com.casic.missiles.modular.system.model.BusWellInfo; + +import java.util.List; + +/** + * 数据统计服务接口 + * + * @author lwh + */ +public interface IDataAnalysisService extends IService { + /** + * 获取告警闸井列表 + * @param dataScope 数据权限 + * @param keywords 关键字 + * @param wellType 井列表 + * @param deptid 组织id + * @return + */ + List getAlarmWellList(DataScope dataScope, String keywords, String wellType, String deptid); + + /** + * 获取不告警井列表信息 + * @param dataScope 数据权限 + * @param keywords 关键字 + * @param wellType 井类型 + * @param deptid 组织id + * @return + */ + List getNotAlarmWellList(DataScope dataScope, String keywords, String wellType, String deptid); + + /** + * 设备数据查询接口 + * @param devTypename 设备类型 + * @param devcode 设备编码 + * @param status 设备状态 + * @return 设备监测数据 + */ + List getDeviceDatas(String devTypename, String devcode, String status); + List getWatchDatas(Long id); + + + BfztCountDataDto getBfztCountData(List deptIds, Boolean isApp); +} diff --git a/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/service/impl/IDataAnalysisServiceImpl.java b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/service/impl/IDataAnalysisServiceImpl.java new file mode 100644 index 0000000..288a828 --- /dev/null +++ b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/service/impl/IDataAnalysisServiceImpl.java @@ -0,0 +1,386 @@ +package com.casic.missiles.modular.system.service.impl; + +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.modular.system.dao.DataAnalysisMapper; +import com.casic.missiles.modular.system.dto.*; +import com.casic.missiles.modular.system.enmus.HarmfulGasBusiness; +import com.casic.missiles.modular.system.enmus.TemphumBusiness; +import com.casic.missiles.modular.system.model.BusWellInfo; +import com.casic.missiles.modular.system.service.IBusDeviceSupportService; +import com.casic.missiles.modular.system.service.IDataAnalysisService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import java.text.DateFormat; +import java.text.DecimalFormat; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.List; + +/** + * 数据统计分析 + * + * @author lwh + */ +@Slf4j +@Component +public class IDataAnalysisServiceImpl extends ServiceImpl implements IDataAnalysisService { + @Resource + private AbstractDictService dictService; + @Resource + private IBusDeviceSupportService deviceSupportService; + + @Override + public List getAlarmWellList(DataScope dataScope, String keywords, String wellType, String deptid) { + return this.baseMapper.getAlarmWellList(dataScope, keywords, wellType, deptid); + } + + @Override + public List getNotAlarmWellList(DataScope dataScope, String keywords, String wellType, String deptid) { + return this.baseMapper.getNotAlarmWellList(dataScope, keywords, wellType, deptid); + } + + @Override + public List getDeviceDatas(String devTypeName, String devcode, String status) { + List deviceDataDtoList = new ArrayList<>(); + DeviceDataDto deviceDataDto = new DeviceDataDto(); + DeviceData deviceData; + DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + switch (devTypeName) { + case "井盖状态监测仪": + deviceData = this.baseMapper.wellcoverData(devcode); + deviceDataDto.setTypeName("井盖状态"); + if (ObjectUtil.isNotEmpty(deviceData)) { + //井盖离线 + if ("0".equals(status)) { + deviceDataDto.setValue("离线"); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } else if ("心跳".equals(deviceData.getData())) { + deviceDataDto.setValue("井盖状态正常"); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } else { + deviceDataDto.setValue(deviceData.getData()); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } + } else { + deviceDataDto.setValue("无数据"); + } + deviceDataDtoList.add(deviceDataDto); + break; + + case "液位监测仪": + deviceData = this.baseMapper.liquidData(devcode); + if (ObjectUtil.isNotEmpty(deviceData)) { + deviceDataDto.setTypeName("井内水位"); + deviceDataDto.setValue(deviceData.getData() + "m"); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + deviceDataDtoList.add(deviceDataDto); + } + break; + + case "有害气体监测仪": + deviceData = this.baseMapper.harmfulgasData(devcode); + if (ObjectUtil.isNotEmpty(deviceData)) { + String[] harmfulGasDatas = deviceData.getData().split(","); + HarmfulGasBusiness[] harmfulGasBusinesses = HarmfulGasBusiness.values(); + for (int i = 0; i < harmfulGasDatas.length; i++) { + deviceDataDto = new DeviceDataDto(); + deviceDataDto.setTypeName(harmfulGasBusinesses[i].getDesc()); + deviceDataDto.setValue(harmfulGasDatas[i] + harmfulGasBusinesses[i].getUnit()); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + deviceDataDtoList.add((DeviceDataDto) deviceDataDto.clone()); + } + } + break; + case "燃气智能监测终端": + deviceData = this.baseMapper.gasData(devcode); + if (ObjectUtil.isNotEmpty(deviceData)) { + deviceDataDto.setTypeName("燃气浓度"); + deviceDataDto.setValue(deviceData.getData() + "%LEL"); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + deviceDataDtoList.add(deviceDataDto); + } + break; + + case "温湿度监测仪": + deviceData = this.baseMapper.temphumData(devcode); + if (ObjectUtil.isNotEmpty(deviceData)) { + String[] temphumDatas = deviceData.getData().split(","); + TemphumBusiness[] temphumBusinesses = TemphumBusiness.values(); + for (int i = 0; i < temphumDatas.length; i++) { + deviceDataDto = new DeviceDataDto(); + deviceDataDto.setTypeName(temphumBusinesses[i].getDesc()); + deviceDataDto.setValue(temphumDatas[i] + temphumBusinesses[i].getUnit()); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + deviceDataDtoList.add((DeviceDataDto) deviceDataDto.clone()); + } + } + break; + + case "开挖监测仪": + deviceData = this.baseMapper.digData(devcode); + if (ObjectUtil.isNotEmpty(deviceData)) { + deviceDataDto.setTypeName("开挖状态"); + deviceDataDto.setValue(deviceData.getData() + "mg"); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + deviceDataDtoList.add(deviceDataDto); + } + break; + + case "噪声记录仪": + deviceData = this.baseMapper.noiseData(devcode); + if (ObjectUtil.isNotEmpty(deviceData)) { + deviceDataDto.setTypeName("管线噪声"); + deviceDataDto.setValue(deviceData.getData() + "mg"); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + deviceDataDtoList.add(deviceDataDto); + } + break; + case "井盖定位监测仪": + deviceData = this.baseMapper.wellcoverlocaData(devcode); + if (ObjectUtil.isNotEmpty(deviceData)) { + deviceDataDto.setTypeName("井盖位置"); + deviceDataDto.setValue(deviceData.getData()); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + deviceDataDtoList.add(deviceDataDto); + } + break; + + case "燃气智能监测终端(一体化)": + deviceData = this.baseMapper.lgGasData(devcode); + deviceDataDto.setTypeName("燃气浓度"); + if (ObjectUtil.isNotEmpty(deviceData)) { + + Double dValue = Double.parseDouble(deviceData.getData()); + if (dValue <= 20.0) { + deviceDataDto.setValue(deviceData.getData() + "%LEL"); + } else { + DecimalFormat df = new DecimalFormat("0.00"); + dValue = dValue / 20.0; + deviceDataDto.setValue(df.format(dValue) + "%VOL"); + } + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } else { + deviceDataDto.setValue("无数据"); + } + deviceDataDtoList.add(deviceDataDto); + + deviceData = this.baseMapper.lgLiquidData(devcode); + deviceDataDto.setTypeName("井内水位"); + if (ObjectUtil.isNotEmpty(deviceData)) { + + deviceDataDto.setValue(deviceData.getData() + "m"); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } else { + deviceDataDto.setValue("无数据"); + } + deviceDataDtoList.add((DeviceDataDto) deviceDataDto.clone()); + break; + + default://未知设备 + log.info("未知设备!"); + break; + } + return deviceDataDtoList; + } + + @Override + public BfztCountDataDto getBfztCountData(List deptIds, Boolean isApp) { + return this.baseMapper.bfztCountData(deptIds, isApp); + } + + @Override + public List getWatchDatas(Long id) { + + List deviceInWellInfos = deviceSupportService.getDeviceInWellInfo(id); + List watchDataDtos = new ArrayList<>(); + + for (DeviceInWellInfo deviceInWellInfo : deviceInWellInfos) { + WatchDataDto watchDataDto = new WatchDataDto(); + watchDataDto.setDeviceId(deviceInWellInfo.getDeviceId()); + watchDataDto.setDevcode(deviceInWellInfo.getDevcode()); + watchDataDto.setInstallDate(deviceInWellInfo.getInstallDate()); + watchDataDto.setOnlineState(deviceInWellInfo.getOnlineState()); + watchDataDto.setOnlineStateName(dictService.getDictNameByCode("onlineStatus", deviceInWellInfo.getOnlineState())); + + DeviceData deviceData; + DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + + switch (deviceInWellInfo.getTypeName()) { + case "井盖状态监测仪": + deviceData = this.baseMapper.wellcoverData(deviceInWellInfo.getDevcode()); + watchDataDto.setWatchType("井盖状态"); + watchDataDto.setType("1"); + if (ObjectUtil.isNotEmpty(deviceData)) { + //井盖离线 + if ("0".equals(watchDataDto.getOnlineState())) { + watchDataDto.setValue("离线"); + watchDataDto.setData("离线"); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } else if ("心跳".equals(deviceData.getData())) { + watchDataDto.setValue("井盖状态正常"); + watchDataDto.setData("井盖状态正常"); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } else { + watchDataDto.setValue(deviceData.getData()); + watchDataDto.setData(deviceData.getData()); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } + } else { + watchDataDto.setValue("无数据"); + watchDataDto.setData("无数据"); + } + watchDataDtos.add(watchDataDto); + break; + + case "液位监测仪": + deviceData = this.baseMapper.liquidData(deviceInWellInfo.getDevcode()); + if (ObjectUtil.isNotEmpty(deviceData)) { + watchDataDto.setWatchType("井内水位"); + watchDataDto.setType("2"); + + watchDataDto.setValue(deviceData.getData() + "m"); + watchDataDto.setData(deviceData.getData() + "m"); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + watchDataDtos.add(watchDataDto); + } + break; + + case "有害气体监测仪": + deviceData = this.baseMapper.harmfulgasData(deviceInWellInfo.getDevcode()); + if (ObjectUtil.isNotEmpty(deviceData)) { + String[] harmfulGasDatas = deviceData.getData().split(","); + HarmfulGasBusiness[] harmfulGasBusinesses = HarmfulGasBusiness.values(); + + for (int i = 0; i < harmfulGasDatas.length; i++) { + watchDataDto.setWatchType(harmfulGasBusinesses[i].getDesc()); + watchDataDto.setType("3"); + watchDataDto.setValue(harmfulGasDatas[i] + harmfulGasBusinesses[i].getUnit()); + watchDataDto.setData(harmfulGasDatas[i] + harmfulGasBusinesses[i].getUnit()); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + watchDataDtos.add((WatchDataDto) watchDataDto.clone()); + } + } + break; + + case "燃气智能监测终端": + deviceData = this.baseMapper.gasData(deviceInWellInfo.getDevcode()); + if (ObjectUtil.isNotEmpty(deviceData)) { + watchDataDto.setWatchType("燃气浓度"); + watchDataDto.setType("4"); + + watchDataDto.setValue(deviceData.getData() + "%LEL"); + watchDataDto.setData(deviceData.getData() + "%LEL"); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + watchDataDtos.add(watchDataDto); + } + break; + + case "温湿度监测仪": + deviceData = this.baseMapper.temphumData(deviceInWellInfo.getDevcode()); + if (ObjectUtil.isNotEmpty(deviceData)) { + String[] temphumDatas = deviceData.getData().split(","); + TemphumBusiness[] temphumBusinesses = TemphumBusiness.values(); + + for (int i = 0; i < temphumDatas.length; i++) { + watchDataDto.setWatchType(temphumBusinesses[i].getDesc()); + watchDataDto.setType("5"); + watchDataDto.setValue(temphumDatas[i] + temphumBusinesses[i].getUnit()); + watchDataDto.setData(temphumDatas[i] + temphumBusinesses[i].getUnit()); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + watchDataDtos.add((WatchDataDto) watchDataDto.clone()); + } + } + break; + + case "开挖监测仪": + deviceData = this.baseMapper.digData(deviceInWellInfo.getDevcode()); + if (ObjectUtil.isNotEmpty(deviceData)) { + watchDataDto.setWatchType("开挖状态"); + watchDataDto.setType("6"); + + watchDataDto.setValue(deviceData.getData() + "mg"); + watchDataDto.setData(deviceData.getData() + "mg"); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + watchDataDtos.add(watchDataDto); + } + break; + + case "噪声记录仪": + deviceData = this.baseMapper.noiseData(deviceInWellInfo.getDevcode()); + if (ObjectUtil.isNotEmpty(deviceData)) { + watchDataDto.setWatchType("管线噪声"); + watchDataDto.setType("8"); + + watchDataDto.setValue(deviceData.getData() + "mg"); + watchDataDto.setData(deviceData.getData() + "mg"); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + watchDataDtos.add(watchDataDto); + } + break; + + case "井盖定位监测仪": + deviceData = this.baseMapper.wellcoverlocaData(deviceInWellInfo.getDevcode()); + if (ObjectUtil.isNotEmpty(deviceData)) { + watchDataDto.setWatchType("井盖位置"); + watchDataDto.setType("7"); + + watchDataDto.setValue(deviceData.getData()); + watchDataDto.setData(deviceData.getData()); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + watchDataDtos.add(watchDataDto); + } + break; + + case "燃气智能监测终端(一体化)": + deviceData = this.baseMapper.lgGasData(deviceInWellInfo.getDevcode()); + watchDataDto.setWatchType("燃气浓度"); + watchDataDto.setType("10"); + if (ObjectUtil.isNotEmpty(deviceData)) { + + Double dValue = Double.parseDouble(deviceData.getData()); + if (dValue <= 20.0) { + watchDataDto.setValue(deviceData.getData() + "%LEL"); + watchDataDto.setData(deviceData.getData() + "%LEL"); + } else { + DecimalFormat df = new DecimalFormat("0.00"); + dValue = dValue / 20.0; + watchDataDto.setValue(df.format(dValue) + "%VOL"); + watchDataDto.setData(df.format(dValue) + "%VOL"); + } + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } else { + watchDataDto.setValue("无数据"); + watchDataDto.setData("无数据"); + } + watchDataDtos.add((WatchDataDto) watchDataDto.clone()); + + deviceData = this.baseMapper.lgLiquidData(deviceInWellInfo.getDevcode()); + watchDataDto.setWatchType("井内水位"); + watchDataDto.setType("10"); + if (ObjectUtil.isNotEmpty(deviceData)) { + + watchDataDto.setValue(deviceData.getData() + "m"); + watchDataDto.setData(deviceData.getData() + "m"); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } else { + watchDataDto.setValue("无数据"); + watchDataDto.setData("无数据"); + } + watchDataDtos.add((WatchDataDto) watchDataDto.clone()); + break; + + default://未知设备 + log.info("未知设备!"); + break; + } + } + + return watchDataDtos; + } + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java index d45eaf7..b9ca243 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java @@ -21,7 +21,7 @@ public interface DeviceMapper extends BaseMapper { List selectDataScopePage(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("deviceType") String deviceType, @Param("deptid") String deptid, @Param("beginTime") String beginTime, @Param("endTime") String endTime, @Param("keywords") String keywords,@Param("isOnline") String isOnline); - + List getDeviceList(@Param("scope") DataScope dataScope); DeviceWellDto selectWellIdByCode(@Param("wellCode") String wellCode); DeviceConcentratorDto selectDeviceConcentorByCode(@Param("concenCode") String concenCode); @@ -61,4 +61,13 @@ List> selectTempDataList(@Param("dataScope")DataScope dataScope, @Param("wellCode")String wellCode, @Param("beginTime")String beginTime, @Param("endTime")String endTime); List> selectHarmfulDataList(@Param("dataScope")DataScope dataScope, @Param("wellCode")String wellCode, @Param("beginTime")String beginTime, @Param("endTime")String endTime); + + /** + * 查询设备信息 + * @param id 设备主键 + * @return + */ + DeviceInfoDto selectDeviceById(@Param("id") Long id); + + List getDeviceInWellInfo(@Param("id") Long id); } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml index fb6f4f4..c956057 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml @@ -902,5 +902,64 @@ ) t1 ORDER BY uptime asc + + + + d.ID AS deviceId, DEVCODE AS devcode, INSTALL_DATE AS installDate, ONLINE_STATE AS onlineState, t.TYPE_NAME AS typeName + + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java b/casic-device/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java index 72c60f0..090415c 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java @@ -17,7 +17,7 @@ * @author lwh123 * @since 2019-05-23 */ -public interface IDeviceService extends IService { +public interface IDeviceService extends IService{ /** * 根据条件分页查询设备列表 diff --git a/casic-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java index 0b089f3..de9111e 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java @@ -39,7 +39,7 @@ * @since 2019-05-23 */ @Service -public class DeviceServiceImpl extends ServiceImpl implements IDeviceService { +public class DeviceServiceImpl extends ServiceImpl implements IDeviceService,IBusDeviceSupportService { @Autowired private IDeviceTypeService deviceTypeService; @@ -514,4 +514,19 @@ } return list; } + + @Override + public List getDeviceList(DataScope dataScope) { + return this.baseMapper.getDeviceList(dataScope); + } + + @Override + public DeviceInfoDto selectDeviceById(Long id) { + return this.baseMapper.selectDeviceById(id); + } + + @Override + public List getDeviceInWellInfo(Long id) { + return this.baseMapper.getDeviceInWellInfo(id); + } } diff --git a/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/controller/BusMapOverviewController.java b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/controller/BusMapOverviewController.java new file mode 100644 index 0000000..9d9f43c --- /dev/null +++ b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/controller/BusMapOverviewController.java @@ -0,0 +1,182 @@ +package com.casic.missiles.modular.system.controller; + +import cn.hutool.core.collection.CollectionUtil; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.model.exception.ServiceException; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.model.response.SuccessResponseData; +import com.casic.missiles.modular.system.dto.BusWellInfoDto; +import com.casic.missiles.modular.system.dto.DeviceDataDto; +import com.casic.missiles.modular.system.dto.DeviceInfoDto; +import com.casic.missiles.modular.system.dto.WatchDataDto; +import com.casic.missiles.modular.system.model.BusWellInfo; +import com.casic.missiles.modular.system.service.IBusDeviceSupportService; +import com.casic.missiles.modular.system.service.IBusWellInfoSupportService; +import com.casic.missiles.modular.system.service.IDataAnalysisService; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.ResponseBody; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; + +/** + * 地图总览模块的controller + * + * @author tanyue + * @Date 2019-05-13 19:20:29 + */ +@Controller +@RequestMapping("/overview") +public class BusMapOverviewController extends BaseController { + + @Resource + private AbstractPermissionContext permissionService; + @Resource + private AbstractDictService dictService; + @Resource + private IBusWellInfoSupportService busWellInfoService; + @Resource + private IDataAnalysisService dataAnalysisService; + @Resource + private IBusDeviceSupportService busDeviceSupportService; + + /** + * 获取列表 + */ + @RequestMapping(value = "/wellList") + @ResponseBody + public Object wellList(@RequestParam(required = false) String keywords, + @RequestParam(required = false) String wellType, + @RequestParam(required = false) String deptid, + @RequestParam(required = false) String isAlarm) { + + DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope(); + List wellList = new ArrayList(); + + if (null == isAlarm || isAlarm.equals("") == true) { + // isAlarm参数为空,查询所有的闸井 + + // 查询并添加当前部门的闸井 + List myList = busWellInfoService.getWellList(dataScope, keywords, wellType, deptid); + if (null != myList && myList.isEmpty() == false) { + wellList.addAll(myList); + } + + /** + * 不需要了,由dataScope控制权限 + // 查询并添加下级部门的闸井 + List subDepts = permissionService.getSubDepts(deptid,null); + if (null != subDepts && subDepts.isEmpty() == false) { + for (Long subDeptId : subDepts) { + List subList = busWellInfoService.getWellList(dataScope, keywords, wellType, String.valueOf(subDeptId)); + if (null != subList && subList.isEmpty() == false) { + wellList.addAll(subList); + } + } + } + */ + } else if (isAlarm.equals("1")) { + // isAlarm = 1 查询所有报警状态的闸井 + wellList = dataAnalysisService.getAlarmWellList(dataScope, keywords, wellType, deptid); + } else { + // isAlarm = 0 查询所有不是报警状态的闸井 + wellList = dataAnalysisService.getNotAlarmWellList(dataScope, keywords, wellType, deptid); + } + + + return ResponseData.success(wellList); + } + + /** + * 获取设备列表 + */ + @RequestMapping(value = "/deviceList") + @ResponseBody + public Object deviceList() { + + DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope(); + List wellList = new ArrayList(); + wellList = busDeviceSupportService.getDeviceList(dataScope); + return ResponseData.success(wellList); + } + + /** + * 获取设备详情 + */ + @RequestMapping(value = "/deviceDetail", method = RequestMethod.GET) + @ResponseBody + public Object deviceDetail(@RequestParam(required = true) Long id) { + if (null == id) { + throw new ServiceException(CoreExceptionEnum.REQUEST_NULL); + } + DeviceInfoDto deviceInfoDto = busDeviceSupportService.selectDeviceById(id); + SuccessResponseData successResult = new SuccessResponseData(); + if (null == deviceInfoDto) { + successResult.setCode(200); + successResult.setMessage("success"); + successResult.setData(new HashMap()); + } else { + // 设置最新的监测数据 + List deviceDataDtoList = dataAnalysisService.getDeviceDatas(deviceInfoDto.getDeviceTypeName(), deviceInfoDto.getDevcode(), deviceInfoDto.getOnlineState()); + if (CollectionUtil.isNotEmpty(deviceDataDtoList)) { + deviceInfoDto.setRealtimeData(deviceDataDtoList); + } + successResult.setMessage("success"); + successResult.setData(deviceInfoDto); + } + return successResult; + } + + + /** + * 获取闸井详情 + */ + @RequestMapping(value = "/wellInfo", method = RequestMethod.GET) + @ResponseBody + public Object wellInfo(@RequestParam(required = true) Long id) { + if (null == id) { + throw new ServiceException(CoreExceptionEnum.REQUEST_NULL); + } + + BusWellInfo busWellInfo = busWellInfoService.getById(id); + SuccessResponseData successResult = new SuccessResponseData(); + if (null == busWellInfo) { + successResult.setCode(200); + successResult.setMessage("success"); + successResult.setData(new HashMap()); + } else { + BusWellInfoDto busWellInfoDto = new BusWellInfoDto(); + busWellInfoDto.convertBusWellInfo(busWellInfo); + + // 设置字典值 + busWellInfoDto.setBfztName(dictService.getDictNameByCode("bfzt", busWellInfo.getBfzt())); + busWellInfoDto.setWellTypeName(dictService.getDictNameByCode("sluicewellType", busWellInfo.getWellType())); + busWellInfoDto.setDeptName(permissionService.getDeptService().getDeptName(busWellInfo.getDeptid())); + + // 设置最新的监测数据 + List watchDataDtos = dataAnalysisService.getWatchDatas(id); + if (null != watchDataDtos && watchDataDtos.isEmpty() == false) { + for (WatchDataDto watchDataDto : watchDataDtos) { + watchDataDto.setValue(watchDataDto.getData()); + } + } + + busWellInfoDto.setWatchData(watchDataDtos); + + successResult.setMessage("success"); + successResult.setData(busWellInfoDto.toMap()); + } + return successResult; + } + + +} diff --git a/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/controller/WellDataController.java b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/controller/WellDataController.java new file mode 100644 index 0000000..c33ec7d --- /dev/null +++ b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/controller/WellDataController.java @@ -0,0 +1,81 @@ +package com.casic.missiles.modular.system.controller; + +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.model.exception.ServiceException; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.model.response.SuccessResponseData; +import com.casic.missiles.modular.system.service.IDataAnalysisService; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.ResponseBody; + +import javax.annotation.Resource; +import java.util.List; +import java.util.Set; + +@Controller +@RequestMapping("/well") +public class WellDataController extends BaseController { + @Resource + private AbstractPermissionContext permissionService; + @Resource + private IDataAnalysisService dataAnalysisService; + + + /** + * 获取闸井设备数据 + */ + @RequestMapping(value = "/watchDataByWell", method = RequestMethod.GET) + @ResponseBody + public Object watchDataByWell(Long id) { + if (null == id) { + throw new ServiceException(CoreExceptionEnum.REQUEST_NULL); + } + SuccessResponseData resultData = new SuccessResponseData(); + resultData.setData(dataAnalysisService.getWatchDatas(id)); + + return resultData; + } + + /** + * 根据布防状态统计闸井数量接口 + */ + @RequestMapping(value = "/countByBfzt", method = RequestMethod.GET) + @ResponseBody + public Object countByBfzt() { + DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope(); + Set roleTipes = permissionService.getAuthService().getLoginUser().getRoleTips(); + List deptIds = null; + Boolean isApp = false; + if (roleTipes.contains("leader") || roleTipes.contains("member")) { + deptIds = permissionService.getDeptService().getIdsByPid(permissionService.getAuthService().getLoginUser().getDeptId(), null); + deptIds.add(permissionService.getAuthService().getLoginUser().getDeptId()); + isApp = true; + } else { + deptIds = dataScope.getDeptIds(); + isApp = false; + } + SuccessResponseData resultData = new SuccessResponseData(); + dataAnalysisService.getBfztCountData(deptIds, isApp); + resultData.setData(dataAnalysisService.getBfztCountData(deptIds, isApp)); + return resultData; + } + + /** + * 获取布防类型(APP用) + */ + @RequestMapping(value = "/bfType", method = RequestMethod.GET) + @ResponseBody + public Object bfType(Long id) { + if (null == id) { + throw new ServiceException(CoreExceptionEnum.REQUEST_NULL); + } + SuccessResponseData resultData = new SuccessResponseData(); + resultData.setData(dataAnalysisService.getWatchDatas(id)); + return resultData; + } + +} diff --git a/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/dao/DataAnalysisMapper.java b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/dao/DataAnalysisMapper.java new file mode 100644 index 0000000..149fb82 --- /dev/null +++ b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/dao/DataAnalysisMapper.java @@ -0,0 +1,48 @@ +package com.casic.missiles.modular.system.dao; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.*; +import com.casic.missiles.modular.system.model.BusWellInfo; +import com.casic.missiles.core.datascope.DataScope; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * 闸井信息表 Mapper 接口 + *

+ * + * @author stylefeng123 + * @since 2019-05-13 + */ +public interface DataAnalysisMapper extends BaseMapper { + + List getAlarmWellList(@Param("scope") DataScope dataScope, @Param("keywords") String keywords, @Param("wellType") String deviceType, @Param("deptid") String deptid); + + List getNotAlarmWellList(@Param("scope") DataScope dataScope, @Param("keywords") String keywords, @Param("wellType") String deviceType, @Param("deptid") String deptid); + + DeviceData wellcoverData(@Param("devcode") String devcode); + + DeviceData liquidData(@Param("devcode") String devcode); + + DeviceData harmfulgasData(@Param("devcode") String devcode); + + DeviceData gasData(@Param("devcode") String devcode); + + DeviceData temphumData(@Param("devcode") String devcode); + + DeviceData digData(@Param("devcode") String devcode); + + DeviceData noiseData(@Param("devcode") String devcode); + + DeviceData wellcoverlocaData(@Param("devcode") String devcode); + + DeviceData lgGasData(@Param("devcode") String devcode);//燃气液位 + + DeviceData lgLiquidData(@Param("devcode") String devcode);//燃气液位 + + + BfztCountDataDto bfztCountData(@Param("deptIds") List deptIds, @Param("isApp") Boolean isApp); +} diff --git a/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/dao/mapping/DataAnalysisMapper.xml b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/dao/mapping/DataAnalysisMapper.xml new file mode 100644 index 0000000..6d7edb3 --- /dev/null +++ b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/dao/mapping/DataAnalysisMapper.xml @@ -0,0 +1,170 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ID + AS id, WELL_CODE AS wellCode, WELL_NAME AS wellName, DEEP AS deep, COORDINATE_X AS coordinateX, COORDINATE_Y AS coordinateY, LAT_BAIDU AS latBaidu, LNG_BAIDU AS lngBaidu, LNG_GAODE AS lngGaode, LAT_GAODE AS latGaode, AREA AS area, POSITION AS position, DEPTID AS deptid, PHOTOS AS photos, NOTES AS notes, WELL_TYPE AS wellType, STAFF AS staff, TEL AS tel, TS AS ts, VALID AS valid, BFZT AS bfzt, RESPONSIBLE_DEPT AS responsibleDept + + + + ID + AS id, WELL_CODE AS wellCode, WELL_NAME AS wellName, DEEP AS deep, COORDINATE_X AS coordinateX, COORDINATE_Y AS coordinateY, LAT_BAIDU AS latBaidu, LNG_BAIDU AS lngBaidu, LNG_GAODE AS lngGaode, LAT_GAODE AS latGaode, AREA AS area, POSITION AS position, DEPTID AS deptid, PHOTOS AS photos, NOTES AS notes, WELL_TYPE AS wellType, STAFF AS staff, TEL AS tel, TS AS ts, VALID AS valid, BFZT AS bfzt,d1.simplename AS deptName,d2.id AS responsibleDept,d2.simplename AS responsibleDeptName + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/service/IDataAnalysisService.java b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/service/IDataAnalysisService.java new file mode 100644 index 0000000..69c8c60 --- /dev/null +++ b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/service/IDataAnalysisService.java @@ -0,0 +1,51 @@ +package com.casic.missiles.modular.system.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.modular.system.dto.BfztCountDataDto; +import com.casic.missiles.modular.system.dto.BusWellInfoDto; +import com.casic.missiles.modular.system.dto.DeviceDataDto; +import com.casic.missiles.modular.system.dto.WatchDataDto; +import com.casic.missiles.modular.system.model.BusWellInfo; + +import java.util.List; + +/** + * 数据统计服务接口 + * + * @author lwh + */ +public interface IDataAnalysisService extends IService { + /** + * 获取告警闸井列表 + * @param dataScope 数据权限 + * @param keywords 关键字 + * @param wellType 井列表 + * @param deptid 组织id + * @return + */ + List getAlarmWellList(DataScope dataScope, String keywords, String wellType, String deptid); + + /** + * 获取不告警井列表信息 + * @param dataScope 数据权限 + * @param keywords 关键字 + * @param wellType 井类型 + * @param deptid 组织id + * @return + */ + List getNotAlarmWellList(DataScope dataScope, String keywords, String wellType, String deptid); + + /** + * 设备数据查询接口 + * @param devTypename 设备类型 + * @param devcode 设备编码 + * @param status 设备状态 + * @return 设备监测数据 + */ + List getDeviceDatas(String devTypename, String devcode, String status); + List getWatchDatas(Long id); + + + BfztCountDataDto getBfztCountData(List deptIds, Boolean isApp); +} diff --git a/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/service/impl/IDataAnalysisServiceImpl.java b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/service/impl/IDataAnalysisServiceImpl.java new file mode 100644 index 0000000..288a828 --- /dev/null +++ b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/service/impl/IDataAnalysisServiceImpl.java @@ -0,0 +1,386 @@ +package com.casic.missiles.modular.system.service.impl; + +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.modular.system.dao.DataAnalysisMapper; +import com.casic.missiles.modular.system.dto.*; +import com.casic.missiles.modular.system.enmus.HarmfulGasBusiness; +import com.casic.missiles.modular.system.enmus.TemphumBusiness; +import com.casic.missiles.modular.system.model.BusWellInfo; +import com.casic.missiles.modular.system.service.IBusDeviceSupportService; +import com.casic.missiles.modular.system.service.IDataAnalysisService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import java.text.DateFormat; +import java.text.DecimalFormat; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.List; + +/** + * 数据统计分析 + * + * @author lwh + */ +@Slf4j +@Component +public class IDataAnalysisServiceImpl extends ServiceImpl implements IDataAnalysisService { + @Resource + private AbstractDictService dictService; + @Resource + private IBusDeviceSupportService deviceSupportService; + + @Override + public List getAlarmWellList(DataScope dataScope, String keywords, String wellType, String deptid) { + return this.baseMapper.getAlarmWellList(dataScope, keywords, wellType, deptid); + } + + @Override + public List getNotAlarmWellList(DataScope dataScope, String keywords, String wellType, String deptid) { + return this.baseMapper.getNotAlarmWellList(dataScope, keywords, wellType, deptid); + } + + @Override + public List getDeviceDatas(String devTypeName, String devcode, String status) { + List deviceDataDtoList = new ArrayList<>(); + DeviceDataDto deviceDataDto = new DeviceDataDto(); + DeviceData deviceData; + DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + switch (devTypeName) { + case "井盖状态监测仪": + deviceData = this.baseMapper.wellcoverData(devcode); + deviceDataDto.setTypeName("井盖状态"); + if (ObjectUtil.isNotEmpty(deviceData)) { + //井盖离线 + if ("0".equals(status)) { + deviceDataDto.setValue("离线"); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } else if ("心跳".equals(deviceData.getData())) { + deviceDataDto.setValue("井盖状态正常"); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } else { + deviceDataDto.setValue(deviceData.getData()); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } + } else { + deviceDataDto.setValue("无数据"); + } + deviceDataDtoList.add(deviceDataDto); + break; + + case "液位监测仪": + deviceData = this.baseMapper.liquidData(devcode); + if (ObjectUtil.isNotEmpty(deviceData)) { + deviceDataDto.setTypeName("井内水位"); + deviceDataDto.setValue(deviceData.getData() + "m"); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + deviceDataDtoList.add(deviceDataDto); + } + break; + + case "有害气体监测仪": + deviceData = this.baseMapper.harmfulgasData(devcode); + if (ObjectUtil.isNotEmpty(deviceData)) { + String[] harmfulGasDatas = deviceData.getData().split(","); + HarmfulGasBusiness[] harmfulGasBusinesses = HarmfulGasBusiness.values(); + for (int i = 0; i < harmfulGasDatas.length; i++) { + deviceDataDto = new DeviceDataDto(); + deviceDataDto.setTypeName(harmfulGasBusinesses[i].getDesc()); + deviceDataDto.setValue(harmfulGasDatas[i] + harmfulGasBusinesses[i].getUnit()); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + deviceDataDtoList.add((DeviceDataDto) deviceDataDto.clone()); + } + } + break; + case "燃气智能监测终端": + deviceData = this.baseMapper.gasData(devcode); + if (ObjectUtil.isNotEmpty(deviceData)) { + deviceDataDto.setTypeName("燃气浓度"); + deviceDataDto.setValue(deviceData.getData() + "%LEL"); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + deviceDataDtoList.add(deviceDataDto); + } + break; + + case "温湿度监测仪": + deviceData = this.baseMapper.temphumData(devcode); + if (ObjectUtil.isNotEmpty(deviceData)) { + String[] temphumDatas = deviceData.getData().split(","); + TemphumBusiness[] temphumBusinesses = TemphumBusiness.values(); + for (int i = 0; i < temphumDatas.length; i++) { + deviceDataDto = new DeviceDataDto(); + deviceDataDto.setTypeName(temphumBusinesses[i].getDesc()); + deviceDataDto.setValue(temphumDatas[i] + temphumBusinesses[i].getUnit()); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + deviceDataDtoList.add((DeviceDataDto) deviceDataDto.clone()); + } + } + break; + + case "开挖监测仪": + deviceData = this.baseMapper.digData(devcode); + if (ObjectUtil.isNotEmpty(deviceData)) { + deviceDataDto.setTypeName("开挖状态"); + deviceDataDto.setValue(deviceData.getData() + "mg"); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + deviceDataDtoList.add(deviceDataDto); + } + break; + + case "噪声记录仪": + deviceData = this.baseMapper.noiseData(devcode); + if (ObjectUtil.isNotEmpty(deviceData)) { + deviceDataDto.setTypeName("管线噪声"); + deviceDataDto.setValue(deviceData.getData() + "mg"); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + deviceDataDtoList.add(deviceDataDto); + } + break; + case "井盖定位监测仪": + deviceData = this.baseMapper.wellcoverlocaData(devcode); + if (ObjectUtil.isNotEmpty(deviceData)) { + deviceDataDto.setTypeName("井盖位置"); + deviceDataDto.setValue(deviceData.getData()); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + deviceDataDtoList.add(deviceDataDto); + } + break; + + case "燃气智能监测终端(一体化)": + deviceData = this.baseMapper.lgGasData(devcode); + deviceDataDto.setTypeName("燃气浓度"); + if (ObjectUtil.isNotEmpty(deviceData)) { + + Double dValue = Double.parseDouble(deviceData.getData()); + if (dValue <= 20.0) { + deviceDataDto.setValue(deviceData.getData() + "%LEL"); + } else { + DecimalFormat df = new DecimalFormat("0.00"); + dValue = dValue / 20.0; + deviceDataDto.setValue(df.format(dValue) + "%VOL"); + } + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } else { + deviceDataDto.setValue("无数据"); + } + deviceDataDtoList.add(deviceDataDto); + + deviceData = this.baseMapper.lgLiquidData(devcode); + deviceDataDto.setTypeName("井内水位"); + if (ObjectUtil.isNotEmpty(deviceData)) { + + deviceDataDto.setValue(deviceData.getData() + "m"); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } else { + deviceDataDto.setValue("无数据"); + } + deviceDataDtoList.add((DeviceDataDto) deviceDataDto.clone()); + break; + + default://未知设备 + log.info("未知设备!"); + break; + } + return deviceDataDtoList; + } + + @Override + public BfztCountDataDto getBfztCountData(List deptIds, Boolean isApp) { + return this.baseMapper.bfztCountData(deptIds, isApp); + } + + @Override + public List getWatchDatas(Long id) { + + List deviceInWellInfos = deviceSupportService.getDeviceInWellInfo(id); + List watchDataDtos = new ArrayList<>(); + + for (DeviceInWellInfo deviceInWellInfo : deviceInWellInfos) { + WatchDataDto watchDataDto = new WatchDataDto(); + watchDataDto.setDeviceId(deviceInWellInfo.getDeviceId()); + watchDataDto.setDevcode(deviceInWellInfo.getDevcode()); + watchDataDto.setInstallDate(deviceInWellInfo.getInstallDate()); + watchDataDto.setOnlineState(deviceInWellInfo.getOnlineState()); + watchDataDto.setOnlineStateName(dictService.getDictNameByCode("onlineStatus", deviceInWellInfo.getOnlineState())); + + DeviceData deviceData; + DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + + switch (deviceInWellInfo.getTypeName()) { + case "井盖状态监测仪": + deviceData = this.baseMapper.wellcoverData(deviceInWellInfo.getDevcode()); + watchDataDto.setWatchType("井盖状态"); + watchDataDto.setType("1"); + if (ObjectUtil.isNotEmpty(deviceData)) { + //井盖离线 + if ("0".equals(watchDataDto.getOnlineState())) { + watchDataDto.setValue("离线"); + watchDataDto.setData("离线"); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } else if ("心跳".equals(deviceData.getData())) { + watchDataDto.setValue("井盖状态正常"); + watchDataDto.setData("井盖状态正常"); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } else { + watchDataDto.setValue(deviceData.getData()); + watchDataDto.setData(deviceData.getData()); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } + } else { + watchDataDto.setValue("无数据"); + watchDataDto.setData("无数据"); + } + watchDataDtos.add(watchDataDto); + break; + + case "液位监测仪": + deviceData = this.baseMapper.liquidData(deviceInWellInfo.getDevcode()); + if (ObjectUtil.isNotEmpty(deviceData)) { + watchDataDto.setWatchType("井内水位"); + watchDataDto.setType("2"); + + watchDataDto.setValue(deviceData.getData() + "m"); + watchDataDto.setData(deviceData.getData() + "m"); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + watchDataDtos.add(watchDataDto); + } + break; + + case "有害气体监测仪": + deviceData = this.baseMapper.harmfulgasData(deviceInWellInfo.getDevcode()); + if (ObjectUtil.isNotEmpty(deviceData)) { + String[] harmfulGasDatas = deviceData.getData().split(","); + HarmfulGasBusiness[] harmfulGasBusinesses = HarmfulGasBusiness.values(); + + for (int i = 0; i < harmfulGasDatas.length; i++) { + watchDataDto.setWatchType(harmfulGasBusinesses[i].getDesc()); + watchDataDto.setType("3"); + watchDataDto.setValue(harmfulGasDatas[i] + harmfulGasBusinesses[i].getUnit()); + watchDataDto.setData(harmfulGasDatas[i] + harmfulGasBusinesses[i].getUnit()); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + watchDataDtos.add((WatchDataDto) watchDataDto.clone()); + } + } + break; + + case "燃气智能监测终端": + deviceData = this.baseMapper.gasData(deviceInWellInfo.getDevcode()); + if (ObjectUtil.isNotEmpty(deviceData)) { + watchDataDto.setWatchType("燃气浓度"); + watchDataDto.setType("4"); + + watchDataDto.setValue(deviceData.getData() + "%LEL"); + watchDataDto.setData(deviceData.getData() + "%LEL"); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + watchDataDtos.add(watchDataDto); + } + break; + + case "温湿度监测仪": + deviceData = this.baseMapper.temphumData(deviceInWellInfo.getDevcode()); + if (ObjectUtil.isNotEmpty(deviceData)) { + String[] temphumDatas = deviceData.getData().split(","); + TemphumBusiness[] temphumBusinesses = TemphumBusiness.values(); + + for (int i = 0; i < temphumDatas.length; i++) { + watchDataDto.setWatchType(temphumBusinesses[i].getDesc()); + watchDataDto.setType("5"); + watchDataDto.setValue(temphumDatas[i] + temphumBusinesses[i].getUnit()); + watchDataDto.setData(temphumDatas[i] + temphumBusinesses[i].getUnit()); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + watchDataDtos.add((WatchDataDto) watchDataDto.clone()); + } + } + break; + + case "开挖监测仪": + deviceData = this.baseMapper.digData(deviceInWellInfo.getDevcode()); + if (ObjectUtil.isNotEmpty(deviceData)) { + watchDataDto.setWatchType("开挖状态"); + watchDataDto.setType("6"); + + watchDataDto.setValue(deviceData.getData() + "mg"); + watchDataDto.setData(deviceData.getData() + "mg"); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + watchDataDtos.add(watchDataDto); + } + break; + + case "噪声记录仪": + deviceData = this.baseMapper.noiseData(deviceInWellInfo.getDevcode()); + if (ObjectUtil.isNotEmpty(deviceData)) { + watchDataDto.setWatchType("管线噪声"); + watchDataDto.setType("8"); + + watchDataDto.setValue(deviceData.getData() + "mg"); + watchDataDto.setData(deviceData.getData() + "mg"); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + watchDataDtos.add(watchDataDto); + } + break; + + case "井盖定位监测仪": + deviceData = this.baseMapper.wellcoverlocaData(deviceInWellInfo.getDevcode()); + if (ObjectUtil.isNotEmpty(deviceData)) { + watchDataDto.setWatchType("井盖位置"); + watchDataDto.setType("7"); + + watchDataDto.setValue(deviceData.getData()); + watchDataDto.setData(deviceData.getData()); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + watchDataDtos.add(watchDataDto); + } + break; + + case "燃气智能监测终端(一体化)": + deviceData = this.baseMapper.lgGasData(deviceInWellInfo.getDevcode()); + watchDataDto.setWatchType("燃气浓度"); + watchDataDto.setType("10"); + if (ObjectUtil.isNotEmpty(deviceData)) { + + Double dValue = Double.parseDouble(deviceData.getData()); + if (dValue <= 20.0) { + watchDataDto.setValue(deviceData.getData() + "%LEL"); + watchDataDto.setData(deviceData.getData() + "%LEL"); + } else { + DecimalFormat df = new DecimalFormat("0.00"); + dValue = dValue / 20.0; + watchDataDto.setValue(df.format(dValue) + "%VOL"); + watchDataDto.setData(df.format(dValue) + "%VOL"); + } + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } else { + watchDataDto.setValue("无数据"); + watchDataDto.setData("无数据"); + } + watchDataDtos.add((WatchDataDto) watchDataDto.clone()); + + deviceData = this.baseMapper.lgLiquidData(deviceInWellInfo.getDevcode()); + watchDataDto.setWatchType("井内水位"); + watchDataDto.setType("10"); + if (ObjectUtil.isNotEmpty(deviceData)) { + + watchDataDto.setValue(deviceData.getData() + "m"); + watchDataDto.setData(deviceData.getData() + "m"); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } else { + watchDataDto.setValue("无数据"); + watchDataDto.setData("无数据"); + } + watchDataDtos.add((WatchDataDto) watchDataDto.clone()); + break; + + default://未知设备 + log.info("未知设备!"); + break; + } + } + + return watchDataDtos; + } + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java index d45eaf7..b9ca243 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java @@ -21,7 +21,7 @@ public interface DeviceMapper extends BaseMapper { List selectDataScopePage(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("deviceType") String deviceType, @Param("deptid") String deptid, @Param("beginTime") String beginTime, @Param("endTime") String endTime, @Param("keywords") String keywords,@Param("isOnline") String isOnline); - + List getDeviceList(@Param("scope") DataScope dataScope); DeviceWellDto selectWellIdByCode(@Param("wellCode") String wellCode); DeviceConcentratorDto selectDeviceConcentorByCode(@Param("concenCode") String concenCode); @@ -61,4 +61,13 @@ List> selectTempDataList(@Param("dataScope")DataScope dataScope, @Param("wellCode")String wellCode, @Param("beginTime")String beginTime, @Param("endTime")String endTime); List> selectHarmfulDataList(@Param("dataScope")DataScope dataScope, @Param("wellCode")String wellCode, @Param("beginTime")String beginTime, @Param("endTime")String endTime); + + /** + * 查询设备信息 + * @param id 设备主键 + * @return + */ + DeviceInfoDto selectDeviceById(@Param("id") Long id); + + List getDeviceInWellInfo(@Param("id") Long id); } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml index fb6f4f4..c956057 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml @@ -902,5 +902,64 @@ ) t1 ORDER BY uptime asc + + + + d.ID AS deviceId, DEVCODE AS devcode, INSTALL_DATE AS installDate, ONLINE_STATE AS onlineState, t.TYPE_NAME AS typeName + + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java b/casic-device/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java index 72c60f0..090415c 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java @@ -17,7 +17,7 @@ * @author lwh123 * @since 2019-05-23 */ -public interface IDeviceService extends IService { +public interface IDeviceService extends IService{ /** * 根据条件分页查询设备列表 diff --git a/casic-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java index 0b089f3..de9111e 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java @@ -39,7 +39,7 @@ * @since 2019-05-23 */ @Service -public class DeviceServiceImpl extends ServiceImpl implements IDeviceService { +public class DeviceServiceImpl extends ServiceImpl implements IDeviceService,IBusDeviceSupportService { @Autowired private IDeviceTypeService deviceTypeService; @@ -514,4 +514,19 @@ } return list; } + + @Override + public List getDeviceList(DataScope dataScope) { + return this.baseMapper.getDeviceList(dataScope); + } + + @Override + public DeviceInfoDto selectDeviceById(Long id) { + return this.baseMapper.selectDeviceById(id); + } + + @Override + public List getDeviceInWellInfo(Long id) { + return this.baseMapper.getDeviceInWellInfo(id); + } } diff --git a/casic-server-support/src/main/java/com/casic/missiles/modular/system/enmus/HarmfulGasBusiness.java b/casic-server-support/src/main/java/com/casic/missiles/modular/system/enmus/HarmfulGasBusiness.java new file mode 100644 index 0000000..d3bfabc --- /dev/null +++ b/casic-server-support/src/main/java/com/casic/missiles/modular/system/enmus/HarmfulGasBusiness.java @@ -0,0 +1,44 @@ +package com.casic.missiles.modular.system.enmus; + +public enum HarmfulGasBusiness { + + CO(0, "CO浓度","ppm"), + CH4(1, "CH4浓度","%VOL"), + H2S(2, "H2S浓度","ppm"), + O2(3, "O2浓度","%VOL"); + //SWITCH(4, "液位开关",""); + + private int code; + private String desc; + private String unit; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public String getDesc() { + return desc; + } + + public void setDesc(String desc) { + this.desc = desc; + } + + public String getUnit() { + return unit; + } + + public void setUnit(String unit) { + this.unit = unit; + } + + HarmfulGasBusiness(int code, String desc, String unit) { + this.code = code; + this.desc = desc; + this.unit = unit; + } +} diff --git a/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/controller/BusMapOverviewController.java b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/controller/BusMapOverviewController.java new file mode 100644 index 0000000..9d9f43c --- /dev/null +++ b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/controller/BusMapOverviewController.java @@ -0,0 +1,182 @@ +package com.casic.missiles.modular.system.controller; + +import cn.hutool.core.collection.CollectionUtil; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.model.exception.ServiceException; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.model.response.SuccessResponseData; +import com.casic.missiles.modular.system.dto.BusWellInfoDto; +import com.casic.missiles.modular.system.dto.DeviceDataDto; +import com.casic.missiles.modular.system.dto.DeviceInfoDto; +import com.casic.missiles.modular.system.dto.WatchDataDto; +import com.casic.missiles.modular.system.model.BusWellInfo; +import com.casic.missiles.modular.system.service.IBusDeviceSupportService; +import com.casic.missiles.modular.system.service.IBusWellInfoSupportService; +import com.casic.missiles.modular.system.service.IDataAnalysisService; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.ResponseBody; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; + +/** + * 地图总览模块的controller + * + * @author tanyue + * @Date 2019-05-13 19:20:29 + */ +@Controller +@RequestMapping("/overview") +public class BusMapOverviewController extends BaseController { + + @Resource + private AbstractPermissionContext permissionService; + @Resource + private AbstractDictService dictService; + @Resource + private IBusWellInfoSupportService busWellInfoService; + @Resource + private IDataAnalysisService dataAnalysisService; + @Resource + private IBusDeviceSupportService busDeviceSupportService; + + /** + * 获取列表 + */ + @RequestMapping(value = "/wellList") + @ResponseBody + public Object wellList(@RequestParam(required = false) String keywords, + @RequestParam(required = false) String wellType, + @RequestParam(required = false) String deptid, + @RequestParam(required = false) String isAlarm) { + + DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope(); + List wellList = new ArrayList(); + + if (null == isAlarm || isAlarm.equals("") == true) { + // isAlarm参数为空,查询所有的闸井 + + // 查询并添加当前部门的闸井 + List myList = busWellInfoService.getWellList(dataScope, keywords, wellType, deptid); + if (null != myList && myList.isEmpty() == false) { + wellList.addAll(myList); + } + + /** + * 不需要了,由dataScope控制权限 + // 查询并添加下级部门的闸井 + List subDepts = permissionService.getSubDepts(deptid,null); + if (null != subDepts && subDepts.isEmpty() == false) { + for (Long subDeptId : subDepts) { + List subList = busWellInfoService.getWellList(dataScope, keywords, wellType, String.valueOf(subDeptId)); + if (null != subList && subList.isEmpty() == false) { + wellList.addAll(subList); + } + } + } + */ + } else if (isAlarm.equals("1")) { + // isAlarm = 1 查询所有报警状态的闸井 + wellList = dataAnalysisService.getAlarmWellList(dataScope, keywords, wellType, deptid); + } else { + // isAlarm = 0 查询所有不是报警状态的闸井 + wellList = dataAnalysisService.getNotAlarmWellList(dataScope, keywords, wellType, deptid); + } + + + return ResponseData.success(wellList); + } + + /** + * 获取设备列表 + */ + @RequestMapping(value = "/deviceList") + @ResponseBody + public Object deviceList() { + + DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope(); + List wellList = new ArrayList(); + wellList = busDeviceSupportService.getDeviceList(dataScope); + return ResponseData.success(wellList); + } + + /** + * 获取设备详情 + */ + @RequestMapping(value = "/deviceDetail", method = RequestMethod.GET) + @ResponseBody + public Object deviceDetail(@RequestParam(required = true) Long id) { + if (null == id) { + throw new ServiceException(CoreExceptionEnum.REQUEST_NULL); + } + DeviceInfoDto deviceInfoDto = busDeviceSupportService.selectDeviceById(id); + SuccessResponseData successResult = new SuccessResponseData(); + if (null == deviceInfoDto) { + successResult.setCode(200); + successResult.setMessage("success"); + successResult.setData(new HashMap()); + } else { + // 设置最新的监测数据 + List deviceDataDtoList = dataAnalysisService.getDeviceDatas(deviceInfoDto.getDeviceTypeName(), deviceInfoDto.getDevcode(), deviceInfoDto.getOnlineState()); + if (CollectionUtil.isNotEmpty(deviceDataDtoList)) { + deviceInfoDto.setRealtimeData(deviceDataDtoList); + } + successResult.setMessage("success"); + successResult.setData(deviceInfoDto); + } + return successResult; + } + + + /** + * 获取闸井详情 + */ + @RequestMapping(value = "/wellInfo", method = RequestMethod.GET) + @ResponseBody + public Object wellInfo(@RequestParam(required = true) Long id) { + if (null == id) { + throw new ServiceException(CoreExceptionEnum.REQUEST_NULL); + } + + BusWellInfo busWellInfo = busWellInfoService.getById(id); + SuccessResponseData successResult = new SuccessResponseData(); + if (null == busWellInfo) { + successResult.setCode(200); + successResult.setMessage("success"); + successResult.setData(new HashMap()); + } else { + BusWellInfoDto busWellInfoDto = new BusWellInfoDto(); + busWellInfoDto.convertBusWellInfo(busWellInfo); + + // 设置字典值 + busWellInfoDto.setBfztName(dictService.getDictNameByCode("bfzt", busWellInfo.getBfzt())); + busWellInfoDto.setWellTypeName(dictService.getDictNameByCode("sluicewellType", busWellInfo.getWellType())); + busWellInfoDto.setDeptName(permissionService.getDeptService().getDeptName(busWellInfo.getDeptid())); + + // 设置最新的监测数据 + List watchDataDtos = dataAnalysisService.getWatchDatas(id); + if (null != watchDataDtos && watchDataDtos.isEmpty() == false) { + for (WatchDataDto watchDataDto : watchDataDtos) { + watchDataDto.setValue(watchDataDto.getData()); + } + } + + busWellInfoDto.setWatchData(watchDataDtos); + + successResult.setMessage("success"); + successResult.setData(busWellInfoDto.toMap()); + } + return successResult; + } + + +} diff --git a/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/controller/WellDataController.java b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/controller/WellDataController.java new file mode 100644 index 0000000..c33ec7d --- /dev/null +++ b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/controller/WellDataController.java @@ -0,0 +1,81 @@ +package com.casic.missiles.modular.system.controller; + +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.model.exception.ServiceException; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.model.response.SuccessResponseData; +import com.casic.missiles.modular.system.service.IDataAnalysisService; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.ResponseBody; + +import javax.annotation.Resource; +import java.util.List; +import java.util.Set; + +@Controller +@RequestMapping("/well") +public class WellDataController extends BaseController { + @Resource + private AbstractPermissionContext permissionService; + @Resource + private IDataAnalysisService dataAnalysisService; + + + /** + * 获取闸井设备数据 + */ + @RequestMapping(value = "/watchDataByWell", method = RequestMethod.GET) + @ResponseBody + public Object watchDataByWell(Long id) { + if (null == id) { + throw new ServiceException(CoreExceptionEnum.REQUEST_NULL); + } + SuccessResponseData resultData = new SuccessResponseData(); + resultData.setData(dataAnalysisService.getWatchDatas(id)); + + return resultData; + } + + /** + * 根据布防状态统计闸井数量接口 + */ + @RequestMapping(value = "/countByBfzt", method = RequestMethod.GET) + @ResponseBody + public Object countByBfzt() { + DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope(); + Set roleTipes = permissionService.getAuthService().getLoginUser().getRoleTips(); + List deptIds = null; + Boolean isApp = false; + if (roleTipes.contains("leader") || roleTipes.contains("member")) { + deptIds = permissionService.getDeptService().getIdsByPid(permissionService.getAuthService().getLoginUser().getDeptId(), null); + deptIds.add(permissionService.getAuthService().getLoginUser().getDeptId()); + isApp = true; + } else { + deptIds = dataScope.getDeptIds(); + isApp = false; + } + SuccessResponseData resultData = new SuccessResponseData(); + dataAnalysisService.getBfztCountData(deptIds, isApp); + resultData.setData(dataAnalysisService.getBfztCountData(deptIds, isApp)); + return resultData; + } + + /** + * 获取布防类型(APP用) + */ + @RequestMapping(value = "/bfType", method = RequestMethod.GET) + @ResponseBody + public Object bfType(Long id) { + if (null == id) { + throw new ServiceException(CoreExceptionEnum.REQUEST_NULL); + } + SuccessResponseData resultData = new SuccessResponseData(); + resultData.setData(dataAnalysisService.getWatchDatas(id)); + return resultData; + } + +} diff --git a/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/dao/DataAnalysisMapper.java b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/dao/DataAnalysisMapper.java new file mode 100644 index 0000000..149fb82 --- /dev/null +++ b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/dao/DataAnalysisMapper.java @@ -0,0 +1,48 @@ +package com.casic.missiles.modular.system.dao; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.*; +import com.casic.missiles.modular.system.model.BusWellInfo; +import com.casic.missiles.core.datascope.DataScope; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * 闸井信息表 Mapper 接口 + *

+ * + * @author stylefeng123 + * @since 2019-05-13 + */ +public interface DataAnalysisMapper extends BaseMapper { + + List getAlarmWellList(@Param("scope") DataScope dataScope, @Param("keywords") String keywords, @Param("wellType") String deviceType, @Param("deptid") String deptid); + + List getNotAlarmWellList(@Param("scope") DataScope dataScope, @Param("keywords") String keywords, @Param("wellType") String deviceType, @Param("deptid") String deptid); + + DeviceData wellcoverData(@Param("devcode") String devcode); + + DeviceData liquidData(@Param("devcode") String devcode); + + DeviceData harmfulgasData(@Param("devcode") String devcode); + + DeviceData gasData(@Param("devcode") String devcode); + + DeviceData temphumData(@Param("devcode") String devcode); + + DeviceData digData(@Param("devcode") String devcode); + + DeviceData noiseData(@Param("devcode") String devcode); + + DeviceData wellcoverlocaData(@Param("devcode") String devcode); + + DeviceData lgGasData(@Param("devcode") String devcode);//燃气液位 + + DeviceData lgLiquidData(@Param("devcode") String devcode);//燃气液位 + + + BfztCountDataDto bfztCountData(@Param("deptIds") List deptIds, @Param("isApp") Boolean isApp); +} diff --git a/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/dao/mapping/DataAnalysisMapper.xml b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/dao/mapping/DataAnalysisMapper.xml new file mode 100644 index 0000000..6d7edb3 --- /dev/null +++ b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/dao/mapping/DataAnalysisMapper.xml @@ -0,0 +1,170 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ID + AS id, WELL_CODE AS wellCode, WELL_NAME AS wellName, DEEP AS deep, COORDINATE_X AS coordinateX, COORDINATE_Y AS coordinateY, LAT_BAIDU AS latBaidu, LNG_BAIDU AS lngBaidu, LNG_GAODE AS lngGaode, LAT_GAODE AS latGaode, AREA AS area, POSITION AS position, DEPTID AS deptid, PHOTOS AS photos, NOTES AS notes, WELL_TYPE AS wellType, STAFF AS staff, TEL AS tel, TS AS ts, VALID AS valid, BFZT AS bfzt, RESPONSIBLE_DEPT AS responsibleDept + + + + ID + AS id, WELL_CODE AS wellCode, WELL_NAME AS wellName, DEEP AS deep, COORDINATE_X AS coordinateX, COORDINATE_Y AS coordinateY, LAT_BAIDU AS latBaidu, LNG_BAIDU AS lngBaidu, LNG_GAODE AS lngGaode, LAT_GAODE AS latGaode, AREA AS area, POSITION AS position, DEPTID AS deptid, PHOTOS AS photos, NOTES AS notes, WELL_TYPE AS wellType, STAFF AS staff, TEL AS tel, TS AS ts, VALID AS valid, BFZT AS bfzt,d1.simplename AS deptName,d2.id AS responsibleDept,d2.simplename AS responsibleDeptName + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/service/IDataAnalysisService.java b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/service/IDataAnalysisService.java new file mode 100644 index 0000000..69c8c60 --- /dev/null +++ b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/service/IDataAnalysisService.java @@ -0,0 +1,51 @@ +package com.casic.missiles.modular.system.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.modular.system.dto.BfztCountDataDto; +import com.casic.missiles.modular.system.dto.BusWellInfoDto; +import com.casic.missiles.modular.system.dto.DeviceDataDto; +import com.casic.missiles.modular.system.dto.WatchDataDto; +import com.casic.missiles.modular.system.model.BusWellInfo; + +import java.util.List; + +/** + * 数据统计服务接口 + * + * @author lwh + */ +public interface IDataAnalysisService extends IService { + /** + * 获取告警闸井列表 + * @param dataScope 数据权限 + * @param keywords 关键字 + * @param wellType 井列表 + * @param deptid 组织id + * @return + */ + List getAlarmWellList(DataScope dataScope, String keywords, String wellType, String deptid); + + /** + * 获取不告警井列表信息 + * @param dataScope 数据权限 + * @param keywords 关键字 + * @param wellType 井类型 + * @param deptid 组织id + * @return + */ + List getNotAlarmWellList(DataScope dataScope, String keywords, String wellType, String deptid); + + /** + * 设备数据查询接口 + * @param devTypename 设备类型 + * @param devcode 设备编码 + * @param status 设备状态 + * @return 设备监测数据 + */ + List getDeviceDatas(String devTypename, String devcode, String status); + List getWatchDatas(Long id); + + + BfztCountDataDto getBfztCountData(List deptIds, Boolean isApp); +} diff --git a/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/service/impl/IDataAnalysisServiceImpl.java b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/service/impl/IDataAnalysisServiceImpl.java new file mode 100644 index 0000000..288a828 --- /dev/null +++ b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/service/impl/IDataAnalysisServiceImpl.java @@ -0,0 +1,386 @@ +package com.casic.missiles.modular.system.service.impl; + +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.modular.system.dao.DataAnalysisMapper; +import com.casic.missiles.modular.system.dto.*; +import com.casic.missiles.modular.system.enmus.HarmfulGasBusiness; +import com.casic.missiles.modular.system.enmus.TemphumBusiness; +import com.casic.missiles.modular.system.model.BusWellInfo; +import com.casic.missiles.modular.system.service.IBusDeviceSupportService; +import com.casic.missiles.modular.system.service.IDataAnalysisService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import java.text.DateFormat; +import java.text.DecimalFormat; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.List; + +/** + * 数据统计分析 + * + * @author lwh + */ +@Slf4j +@Component +public class IDataAnalysisServiceImpl extends ServiceImpl implements IDataAnalysisService { + @Resource + private AbstractDictService dictService; + @Resource + private IBusDeviceSupportService deviceSupportService; + + @Override + public List getAlarmWellList(DataScope dataScope, String keywords, String wellType, String deptid) { + return this.baseMapper.getAlarmWellList(dataScope, keywords, wellType, deptid); + } + + @Override + public List getNotAlarmWellList(DataScope dataScope, String keywords, String wellType, String deptid) { + return this.baseMapper.getNotAlarmWellList(dataScope, keywords, wellType, deptid); + } + + @Override + public List getDeviceDatas(String devTypeName, String devcode, String status) { + List deviceDataDtoList = new ArrayList<>(); + DeviceDataDto deviceDataDto = new DeviceDataDto(); + DeviceData deviceData; + DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + switch (devTypeName) { + case "井盖状态监测仪": + deviceData = this.baseMapper.wellcoverData(devcode); + deviceDataDto.setTypeName("井盖状态"); + if (ObjectUtil.isNotEmpty(deviceData)) { + //井盖离线 + if ("0".equals(status)) { + deviceDataDto.setValue("离线"); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } else if ("心跳".equals(deviceData.getData())) { + deviceDataDto.setValue("井盖状态正常"); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } else { + deviceDataDto.setValue(deviceData.getData()); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } + } else { + deviceDataDto.setValue("无数据"); + } + deviceDataDtoList.add(deviceDataDto); + break; + + case "液位监测仪": + deviceData = this.baseMapper.liquidData(devcode); + if (ObjectUtil.isNotEmpty(deviceData)) { + deviceDataDto.setTypeName("井内水位"); + deviceDataDto.setValue(deviceData.getData() + "m"); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + deviceDataDtoList.add(deviceDataDto); + } + break; + + case "有害气体监测仪": + deviceData = this.baseMapper.harmfulgasData(devcode); + if (ObjectUtil.isNotEmpty(deviceData)) { + String[] harmfulGasDatas = deviceData.getData().split(","); + HarmfulGasBusiness[] harmfulGasBusinesses = HarmfulGasBusiness.values(); + for (int i = 0; i < harmfulGasDatas.length; i++) { + deviceDataDto = new DeviceDataDto(); + deviceDataDto.setTypeName(harmfulGasBusinesses[i].getDesc()); + deviceDataDto.setValue(harmfulGasDatas[i] + harmfulGasBusinesses[i].getUnit()); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + deviceDataDtoList.add((DeviceDataDto) deviceDataDto.clone()); + } + } + break; + case "燃气智能监测终端": + deviceData = this.baseMapper.gasData(devcode); + if (ObjectUtil.isNotEmpty(deviceData)) { + deviceDataDto.setTypeName("燃气浓度"); + deviceDataDto.setValue(deviceData.getData() + "%LEL"); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + deviceDataDtoList.add(deviceDataDto); + } + break; + + case "温湿度监测仪": + deviceData = this.baseMapper.temphumData(devcode); + if (ObjectUtil.isNotEmpty(deviceData)) { + String[] temphumDatas = deviceData.getData().split(","); + TemphumBusiness[] temphumBusinesses = TemphumBusiness.values(); + for (int i = 0; i < temphumDatas.length; i++) { + deviceDataDto = new DeviceDataDto(); + deviceDataDto.setTypeName(temphumBusinesses[i].getDesc()); + deviceDataDto.setValue(temphumDatas[i] + temphumBusinesses[i].getUnit()); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + deviceDataDtoList.add((DeviceDataDto) deviceDataDto.clone()); + } + } + break; + + case "开挖监测仪": + deviceData = this.baseMapper.digData(devcode); + if (ObjectUtil.isNotEmpty(deviceData)) { + deviceDataDto.setTypeName("开挖状态"); + deviceDataDto.setValue(deviceData.getData() + "mg"); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + deviceDataDtoList.add(deviceDataDto); + } + break; + + case "噪声记录仪": + deviceData = this.baseMapper.noiseData(devcode); + if (ObjectUtil.isNotEmpty(deviceData)) { + deviceDataDto.setTypeName("管线噪声"); + deviceDataDto.setValue(deviceData.getData() + "mg"); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + deviceDataDtoList.add(deviceDataDto); + } + break; + case "井盖定位监测仪": + deviceData = this.baseMapper.wellcoverlocaData(devcode); + if (ObjectUtil.isNotEmpty(deviceData)) { + deviceDataDto.setTypeName("井盖位置"); + deviceDataDto.setValue(deviceData.getData()); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + deviceDataDtoList.add(deviceDataDto); + } + break; + + case "燃气智能监测终端(一体化)": + deviceData = this.baseMapper.lgGasData(devcode); + deviceDataDto.setTypeName("燃气浓度"); + if (ObjectUtil.isNotEmpty(deviceData)) { + + Double dValue = Double.parseDouble(deviceData.getData()); + if (dValue <= 20.0) { + deviceDataDto.setValue(deviceData.getData() + "%LEL"); + } else { + DecimalFormat df = new DecimalFormat("0.00"); + dValue = dValue / 20.0; + deviceDataDto.setValue(df.format(dValue) + "%VOL"); + } + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } else { + deviceDataDto.setValue("无数据"); + } + deviceDataDtoList.add(deviceDataDto); + + deviceData = this.baseMapper.lgLiquidData(devcode); + deviceDataDto.setTypeName("井内水位"); + if (ObjectUtil.isNotEmpty(deviceData)) { + + deviceDataDto.setValue(deviceData.getData() + "m"); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } else { + deviceDataDto.setValue("无数据"); + } + deviceDataDtoList.add((DeviceDataDto) deviceDataDto.clone()); + break; + + default://未知设备 + log.info("未知设备!"); + break; + } + return deviceDataDtoList; + } + + @Override + public BfztCountDataDto getBfztCountData(List deptIds, Boolean isApp) { + return this.baseMapper.bfztCountData(deptIds, isApp); + } + + @Override + public List getWatchDatas(Long id) { + + List deviceInWellInfos = deviceSupportService.getDeviceInWellInfo(id); + List watchDataDtos = new ArrayList<>(); + + for (DeviceInWellInfo deviceInWellInfo : deviceInWellInfos) { + WatchDataDto watchDataDto = new WatchDataDto(); + watchDataDto.setDeviceId(deviceInWellInfo.getDeviceId()); + watchDataDto.setDevcode(deviceInWellInfo.getDevcode()); + watchDataDto.setInstallDate(deviceInWellInfo.getInstallDate()); + watchDataDto.setOnlineState(deviceInWellInfo.getOnlineState()); + watchDataDto.setOnlineStateName(dictService.getDictNameByCode("onlineStatus", deviceInWellInfo.getOnlineState())); + + DeviceData deviceData; + DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + + switch (deviceInWellInfo.getTypeName()) { + case "井盖状态监测仪": + deviceData = this.baseMapper.wellcoverData(deviceInWellInfo.getDevcode()); + watchDataDto.setWatchType("井盖状态"); + watchDataDto.setType("1"); + if (ObjectUtil.isNotEmpty(deviceData)) { + //井盖离线 + if ("0".equals(watchDataDto.getOnlineState())) { + watchDataDto.setValue("离线"); + watchDataDto.setData("离线"); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } else if ("心跳".equals(deviceData.getData())) { + watchDataDto.setValue("井盖状态正常"); + watchDataDto.setData("井盖状态正常"); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } else { + watchDataDto.setValue(deviceData.getData()); + watchDataDto.setData(deviceData.getData()); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } + } else { + watchDataDto.setValue("无数据"); + watchDataDto.setData("无数据"); + } + watchDataDtos.add(watchDataDto); + break; + + case "液位监测仪": + deviceData = this.baseMapper.liquidData(deviceInWellInfo.getDevcode()); + if (ObjectUtil.isNotEmpty(deviceData)) { + watchDataDto.setWatchType("井内水位"); + watchDataDto.setType("2"); + + watchDataDto.setValue(deviceData.getData() + "m"); + watchDataDto.setData(deviceData.getData() + "m"); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + watchDataDtos.add(watchDataDto); + } + break; + + case "有害气体监测仪": + deviceData = this.baseMapper.harmfulgasData(deviceInWellInfo.getDevcode()); + if (ObjectUtil.isNotEmpty(deviceData)) { + String[] harmfulGasDatas = deviceData.getData().split(","); + HarmfulGasBusiness[] harmfulGasBusinesses = HarmfulGasBusiness.values(); + + for (int i = 0; i < harmfulGasDatas.length; i++) { + watchDataDto.setWatchType(harmfulGasBusinesses[i].getDesc()); + watchDataDto.setType("3"); + watchDataDto.setValue(harmfulGasDatas[i] + harmfulGasBusinesses[i].getUnit()); + watchDataDto.setData(harmfulGasDatas[i] + harmfulGasBusinesses[i].getUnit()); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + watchDataDtos.add((WatchDataDto) watchDataDto.clone()); + } + } + break; + + case "燃气智能监测终端": + deviceData = this.baseMapper.gasData(deviceInWellInfo.getDevcode()); + if (ObjectUtil.isNotEmpty(deviceData)) { + watchDataDto.setWatchType("燃气浓度"); + watchDataDto.setType("4"); + + watchDataDto.setValue(deviceData.getData() + "%LEL"); + watchDataDto.setData(deviceData.getData() + "%LEL"); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + watchDataDtos.add(watchDataDto); + } + break; + + case "温湿度监测仪": + deviceData = this.baseMapper.temphumData(deviceInWellInfo.getDevcode()); + if (ObjectUtil.isNotEmpty(deviceData)) { + String[] temphumDatas = deviceData.getData().split(","); + TemphumBusiness[] temphumBusinesses = TemphumBusiness.values(); + + for (int i = 0; i < temphumDatas.length; i++) { + watchDataDto.setWatchType(temphumBusinesses[i].getDesc()); + watchDataDto.setType("5"); + watchDataDto.setValue(temphumDatas[i] + temphumBusinesses[i].getUnit()); + watchDataDto.setData(temphumDatas[i] + temphumBusinesses[i].getUnit()); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + watchDataDtos.add((WatchDataDto) watchDataDto.clone()); + } + } + break; + + case "开挖监测仪": + deviceData = this.baseMapper.digData(deviceInWellInfo.getDevcode()); + if (ObjectUtil.isNotEmpty(deviceData)) { + watchDataDto.setWatchType("开挖状态"); + watchDataDto.setType("6"); + + watchDataDto.setValue(deviceData.getData() + "mg"); + watchDataDto.setData(deviceData.getData() + "mg"); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + watchDataDtos.add(watchDataDto); + } + break; + + case "噪声记录仪": + deviceData = this.baseMapper.noiseData(deviceInWellInfo.getDevcode()); + if (ObjectUtil.isNotEmpty(deviceData)) { + watchDataDto.setWatchType("管线噪声"); + watchDataDto.setType("8"); + + watchDataDto.setValue(deviceData.getData() + "mg"); + watchDataDto.setData(deviceData.getData() + "mg"); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + watchDataDtos.add(watchDataDto); + } + break; + + case "井盖定位监测仪": + deviceData = this.baseMapper.wellcoverlocaData(deviceInWellInfo.getDevcode()); + if (ObjectUtil.isNotEmpty(deviceData)) { + watchDataDto.setWatchType("井盖位置"); + watchDataDto.setType("7"); + + watchDataDto.setValue(deviceData.getData()); + watchDataDto.setData(deviceData.getData()); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + watchDataDtos.add(watchDataDto); + } + break; + + case "燃气智能监测终端(一体化)": + deviceData = this.baseMapper.lgGasData(deviceInWellInfo.getDevcode()); + watchDataDto.setWatchType("燃气浓度"); + watchDataDto.setType("10"); + if (ObjectUtil.isNotEmpty(deviceData)) { + + Double dValue = Double.parseDouble(deviceData.getData()); + if (dValue <= 20.0) { + watchDataDto.setValue(deviceData.getData() + "%LEL"); + watchDataDto.setData(deviceData.getData() + "%LEL"); + } else { + DecimalFormat df = new DecimalFormat("0.00"); + dValue = dValue / 20.0; + watchDataDto.setValue(df.format(dValue) + "%VOL"); + watchDataDto.setData(df.format(dValue) + "%VOL"); + } + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } else { + watchDataDto.setValue("无数据"); + watchDataDto.setData("无数据"); + } + watchDataDtos.add((WatchDataDto) watchDataDto.clone()); + + deviceData = this.baseMapper.lgLiquidData(deviceInWellInfo.getDevcode()); + watchDataDto.setWatchType("井内水位"); + watchDataDto.setType("10"); + if (ObjectUtil.isNotEmpty(deviceData)) { + + watchDataDto.setValue(deviceData.getData() + "m"); + watchDataDto.setData(deviceData.getData() + "m"); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } else { + watchDataDto.setValue("无数据"); + watchDataDto.setData("无数据"); + } + watchDataDtos.add((WatchDataDto) watchDataDto.clone()); + break; + + default://未知设备 + log.info("未知设备!"); + break; + } + } + + return watchDataDtos; + } + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java index d45eaf7..b9ca243 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java @@ -21,7 +21,7 @@ public interface DeviceMapper extends BaseMapper { List selectDataScopePage(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("deviceType") String deviceType, @Param("deptid") String deptid, @Param("beginTime") String beginTime, @Param("endTime") String endTime, @Param("keywords") String keywords,@Param("isOnline") String isOnline); - + List getDeviceList(@Param("scope") DataScope dataScope); DeviceWellDto selectWellIdByCode(@Param("wellCode") String wellCode); DeviceConcentratorDto selectDeviceConcentorByCode(@Param("concenCode") String concenCode); @@ -61,4 +61,13 @@ List> selectTempDataList(@Param("dataScope")DataScope dataScope, @Param("wellCode")String wellCode, @Param("beginTime")String beginTime, @Param("endTime")String endTime); List> selectHarmfulDataList(@Param("dataScope")DataScope dataScope, @Param("wellCode")String wellCode, @Param("beginTime")String beginTime, @Param("endTime")String endTime); + + /** + * 查询设备信息 + * @param id 设备主键 + * @return + */ + DeviceInfoDto selectDeviceById(@Param("id") Long id); + + List getDeviceInWellInfo(@Param("id") Long id); } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml index fb6f4f4..c956057 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml @@ -902,5 +902,64 @@ ) t1 ORDER BY uptime asc + + + + d.ID AS deviceId, DEVCODE AS devcode, INSTALL_DATE AS installDate, ONLINE_STATE AS onlineState, t.TYPE_NAME AS typeName + + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java b/casic-device/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java index 72c60f0..090415c 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java @@ -17,7 +17,7 @@ * @author lwh123 * @since 2019-05-23 */ -public interface IDeviceService extends IService { +public interface IDeviceService extends IService{ /** * 根据条件分页查询设备列表 diff --git a/casic-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java index 0b089f3..de9111e 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java @@ -39,7 +39,7 @@ * @since 2019-05-23 */ @Service -public class DeviceServiceImpl extends ServiceImpl implements IDeviceService { +public class DeviceServiceImpl extends ServiceImpl implements IDeviceService,IBusDeviceSupportService { @Autowired private IDeviceTypeService deviceTypeService; @@ -514,4 +514,19 @@ } return list; } + + @Override + public List getDeviceList(DataScope dataScope) { + return this.baseMapper.getDeviceList(dataScope); + } + + @Override + public DeviceInfoDto selectDeviceById(Long id) { + return this.baseMapper.selectDeviceById(id); + } + + @Override + public List getDeviceInWellInfo(Long id) { + return this.baseMapper.getDeviceInWellInfo(id); + } } diff --git a/casic-server-support/src/main/java/com/casic/missiles/modular/system/enmus/HarmfulGasBusiness.java b/casic-server-support/src/main/java/com/casic/missiles/modular/system/enmus/HarmfulGasBusiness.java new file mode 100644 index 0000000..d3bfabc --- /dev/null +++ b/casic-server-support/src/main/java/com/casic/missiles/modular/system/enmus/HarmfulGasBusiness.java @@ -0,0 +1,44 @@ +package com.casic.missiles.modular.system.enmus; + +public enum HarmfulGasBusiness { + + CO(0, "CO浓度","ppm"), + CH4(1, "CH4浓度","%VOL"), + H2S(2, "H2S浓度","ppm"), + O2(3, "O2浓度","%VOL"); + //SWITCH(4, "液位开关",""); + + private int code; + private String desc; + private String unit; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public String getDesc() { + return desc; + } + + public void setDesc(String desc) { + this.desc = desc; + } + + public String getUnit() { + return unit; + } + + public void setUnit(String unit) { + this.unit = unit; + } + + HarmfulGasBusiness(int code, String desc, String unit) { + this.code = code; + this.desc = desc; + this.unit = unit; + } +} diff --git a/casic-server-support/src/main/java/com/casic/missiles/modular/system/enmus/SluicewellExportEnum.java b/casic-server-support/src/main/java/com/casic/missiles/modular/system/enmus/SluicewellExportEnum.java new file mode 100644 index 0000000..d451598 --- /dev/null +++ b/casic-server-support/src/main/java/com/casic/missiles/modular/system/enmus/SluicewellExportEnum.java @@ -0,0 +1,59 @@ +package com.casic.missiles.modular.system.enmus; + + + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +public enum SluicewellExportEnum { + + DEVICE_EXPORT( + new ArrayList() {{ +// add(new Header("井编号", "wellCode")); +// add(new Header("井名称", "wellName")); +// add(new Header("井深", "deep")); +// add(new Header("详细地址", "position")); +// add(new Header("井类型", "wellTypeName")); +// add(new Header("权属单位", "deptName")); +// add(new Header("设备数量", "deviceCount")); +// add(new Header("布防状态", "bfztName")); + }}, "sluicewell.xlsx", "井数据导出"); + + //SLUICEWELLDATA_EXPORT("sluicewell.xlsx", "sluicewell.xlsx", "闸井数据"); + + /** + * 导出模板相对路径 + */ + private List headers; + /** + * 下载文件名 + */ + private String fileName; + /** + * 描述信息 + */ + private String description; + + SluicewellExportEnum(List headers, String fileName, String description) { + this.headers = headers; + this.fileName = fileName; + this.description = description; + } + + public List getHeaders() { + return headers; + } + + public String getFileName() { + return fileName; + } + + public String getDescription() { + return description; + } + + public Map getCustomColumnStyle() { + return null; + } +} diff --git a/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/controller/BusMapOverviewController.java b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/controller/BusMapOverviewController.java new file mode 100644 index 0000000..9d9f43c --- /dev/null +++ b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/controller/BusMapOverviewController.java @@ -0,0 +1,182 @@ +package com.casic.missiles.modular.system.controller; + +import cn.hutool.core.collection.CollectionUtil; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.model.exception.ServiceException; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.model.response.SuccessResponseData; +import com.casic.missiles.modular.system.dto.BusWellInfoDto; +import com.casic.missiles.modular.system.dto.DeviceDataDto; +import com.casic.missiles.modular.system.dto.DeviceInfoDto; +import com.casic.missiles.modular.system.dto.WatchDataDto; +import com.casic.missiles.modular.system.model.BusWellInfo; +import com.casic.missiles.modular.system.service.IBusDeviceSupportService; +import com.casic.missiles.modular.system.service.IBusWellInfoSupportService; +import com.casic.missiles.modular.system.service.IDataAnalysisService; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.ResponseBody; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; + +/** + * 地图总览模块的controller + * + * @author tanyue + * @Date 2019-05-13 19:20:29 + */ +@Controller +@RequestMapping("/overview") +public class BusMapOverviewController extends BaseController { + + @Resource + private AbstractPermissionContext permissionService; + @Resource + private AbstractDictService dictService; + @Resource + private IBusWellInfoSupportService busWellInfoService; + @Resource + private IDataAnalysisService dataAnalysisService; + @Resource + private IBusDeviceSupportService busDeviceSupportService; + + /** + * 获取列表 + */ + @RequestMapping(value = "/wellList") + @ResponseBody + public Object wellList(@RequestParam(required = false) String keywords, + @RequestParam(required = false) String wellType, + @RequestParam(required = false) String deptid, + @RequestParam(required = false) String isAlarm) { + + DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope(); + List wellList = new ArrayList(); + + if (null == isAlarm || isAlarm.equals("") == true) { + // isAlarm参数为空,查询所有的闸井 + + // 查询并添加当前部门的闸井 + List myList = busWellInfoService.getWellList(dataScope, keywords, wellType, deptid); + if (null != myList && myList.isEmpty() == false) { + wellList.addAll(myList); + } + + /** + * 不需要了,由dataScope控制权限 + // 查询并添加下级部门的闸井 + List subDepts = permissionService.getSubDepts(deptid,null); + if (null != subDepts && subDepts.isEmpty() == false) { + for (Long subDeptId : subDepts) { + List subList = busWellInfoService.getWellList(dataScope, keywords, wellType, String.valueOf(subDeptId)); + if (null != subList && subList.isEmpty() == false) { + wellList.addAll(subList); + } + } + } + */ + } else if (isAlarm.equals("1")) { + // isAlarm = 1 查询所有报警状态的闸井 + wellList = dataAnalysisService.getAlarmWellList(dataScope, keywords, wellType, deptid); + } else { + // isAlarm = 0 查询所有不是报警状态的闸井 + wellList = dataAnalysisService.getNotAlarmWellList(dataScope, keywords, wellType, deptid); + } + + + return ResponseData.success(wellList); + } + + /** + * 获取设备列表 + */ + @RequestMapping(value = "/deviceList") + @ResponseBody + public Object deviceList() { + + DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope(); + List wellList = new ArrayList(); + wellList = busDeviceSupportService.getDeviceList(dataScope); + return ResponseData.success(wellList); + } + + /** + * 获取设备详情 + */ + @RequestMapping(value = "/deviceDetail", method = RequestMethod.GET) + @ResponseBody + public Object deviceDetail(@RequestParam(required = true) Long id) { + if (null == id) { + throw new ServiceException(CoreExceptionEnum.REQUEST_NULL); + } + DeviceInfoDto deviceInfoDto = busDeviceSupportService.selectDeviceById(id); + SuccessResponseData successResult = new SuccessResponseData(); + if (null == deviceInfoDto) { + successResult.setCode(200); + successResult.setMessage("success"); + successResult.setData(new HashMap()); + } else { + // 设置最新的监测数据 + List deviceDataDtoList = dataAnalysisService.getDeviceDatas(deviceInfoDto.getDeviceTypeName(), deviceInfoDto.getDevcode(), deviceInfoDto.getOnlineState()); + if (CollectionUtil.isNotEmpty(deviceDataDtoList)) { + deviceInfoDto.setRealtimeData(deviceDataDtoList); + } + successResult.setMessage("success"); + successResult.setData(deviceInfoDto); + } + return successResult; + } + + + /** + * 获取闸井详情 + */ + @RequestMapping(value = "/wellInfo", method = RequestMethod.GET) + @ResponseBody + public Object wellInfo(@RequestParam(required = true) Long id) { + if (null == id) { + throw new ServiceException(CoreExceptionEnum.REQUEST_NULL); + } + + BusWellInfo busWellInfo = busWellInfoService.getById(id); + SuccessResponseData successResult = new SuccessResponseData(); + if (null == busWellInfo) { + successResult.setCode(200); + successResult.setMessage("success"); + successResult.setData(new HashMap()); + } else { + BusWellInfoDto busWellInfoDto = new BusWellInfoDto(); + busWellInfoDto.convertBusWellInfo(busWellInfo); + + // 设置字典值 + busWellInfoDto.setBfztName(dictService.getDictNameByCode("bfzt", busWellInfo.getBfzt())); + busWellInfoDto.setWellTypeName(dictService.getDictNameByCode("sluicewellType", busWellInfo.getWellType())); + busWellInfoDto.setDeptName(permissionService.getDeptService().getDeptName(busWellInfo.getDeptid())); + + // 设置最新的监测数据 + List watchDataDtos = dataAnalysisService.getWatchDatas(id); + if (null != watchDataDtos && watchDataDtos.isEmpty() == false) { + for (WatchDataDto watchDataDto : watchDataDtos) { + watchDataDto.setValue(watchDataDto.getData()); + } + } + + busWellInfoDto.setWatchData(watchDataDtos); + + successResult.setMessage("success"); + successResult.setData(busWellInfoDto.toMap()); + } + return successResult; + } + + +} diff --git a/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/controller/WellDataController.java b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/controller/WellDataController.java new file mode 100644 index 0000000..c33ec7d --- /dev/null +++ b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/controller/WellDataController.java @@ -0,0 +1,81 @@ +package com.casic.missiles.modular.system.controller; + +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.model.exception.ServiceException; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.model.response.SuccessResponseData; +import com.casic.missiles.modular.system.service.IDataAnalysisService; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.ResponseBody; + +import javax.annotation.Resource; +import java.util.List; +import java.util.Set; + +@Controller +@RequestMapping("/well") +public class WellDataController extends BaseController { + @Resource + private AbstractPermissionContext permissionService; + @Resource + private IDataAnalysisService dataAnalysisService; + + + /** + * 获取闸井设备数据 + */ + @RequestMapping(value = "/watchDataByWell", method = RequestMethod.GET) + @ResponseBody + public Object watchDataByWell(Long id) { + if (null == id) { + throw new ServiceException(CoreExceptionEnum.REQUEST_NULL); + } + SuccessResponseData resultData = new SuccessResponseData(); + resultData.setData(dataAnalysisService.getWatchDatas(id)); + + return resultData; + } + + /** + * 根据布防状态统计闸井数量接口 + */ + @RequestMapping(value = "/countByBfzt", method = RequestMethod.GET) + @ResponseBody + public Object countByBfzt() { + DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope(); + Set roleTipes = permissionService.getAuthService().getLoginUser().getRoleTips(); + List deptIds = null; + Boolean isApp = false; + if (roleTipes.contains("leader") || roleTipes.contains("member")) { + deptIds = permissionService.getDeptService().getIdsByPid(permissionService.getAuthService().getLoginUser().getDeptId(), null); + deptIds.add(permissionService.getAuthService().getLoginUser().getDeptId()); + isApp = true; + } else { + deptIds = dataScope.getDeptIds(); + isApp = false; + } + SuccessResponseData resultData = new SuccessResponseData(); + dataAnalysisService.getBfztCountData(deptIds, isApp); + resultData.setData(dataAnalysisService.getBfztCountData(deptIds, isApp)); + return resultData; + } + + /** + * 获取布防类型(APP用) + */ + @RequestMapping(value = "/bfType", method = RequestMethod.GET) + @ResponseBody + public Object bfType(Long id) { + if (null == id) { + throw new ServiceException(CoreExceptionEnum.REQUEST_NULL); + } + SuccessResponseData resultData = new SuccessResponseData(); + resultData.setData(dataAnalysisService.getWatchDatas(id)); + return resultData; + } + +} diff --git a/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/dao/DataAnalysisMapper.java b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/dao/DataAnalysisMapper.java new file mode 100644 index 0000000..149fb82 --- /dev/null +++ b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/dao/DataAnalysisMapper.java @@ -0,0 +1,48 @@ +package com.casic.missiles.modular.system.dao; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.*; +import com.casic.missiles.modular.system.model.BusWellInfo; +import com.casic.missiles.core.datascope.DataScope; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * 闸井信息表 Mapper 接口 + *

+ * + * @author stylefeng123 + * @since 2019-05-13 + */ +public interface DataAnalysisMapper extends BaseMapper { + + List getAlarmWellList(@Param("scope") DataScope dataScope, @Param("keywords") String keywords, @Param("wellType") String deviceType, @Param("deptid") String deptid); + + List getNotAlarmWellList(@Param("scope") DataScope dataScope, @Param("keywords") String keywords, @Param("wellType") String deviceType, @Param("deptid") String deptid); + + DeviceData wellcoverData(@Param("devcode") String devcode); + + DeviceData liquidData(@Param("devcode") String devcode); + + DeviceData harmfulgasData(@Param("devcode") String devcode); + + DeviceData gasData(@Param("devcode") String devcode); + + DeviceData temphumData(@Param("devcode") String devcode); + + DeviceData digData(@Param("devcode") String devcode); + + DeviceData noiseData(@Param("devcode") String devcode); + + DeviceData wellcoverlocaData(@Param("devcode") String devcode); + + DeviceData lgGasData(@Param("devcode") String devcode);//燃气液位 + + DeviceData lgLiquidData(@Param("devcode") String devcode);//燃气液位 + + + BfztCountDataDto bfztCountData(@Param("deptIds") List deptIds, @Param("isApp") Boolean isApp); +} diff --git a/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/dao/mapping/DataAnalysisMapper.xml b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/dao/mapping/DataAnalysisMapper.xml new file mode 100644 index 0000000..6d7edb3 --- /dev/null +++ b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/dao/mapping/DataAnalysisMapper.xml @@ -0,0 +1,170 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ID + AS id, WELL_CODE AS wellCode, WELL_NAME AS wellName, DEEP AS deep, COORDINATE_X AS coordinateX, COORDINATE_Y AS coordinateY, LAT_BAIDU AS latBaidu, LNG_BAIDU AS lngBaidu, LNG_GAODE AS lngGaode, LAT_GAODE AS latGaode, AREA AS area, POSITION AS position, DEPTID AS deptid, PHOTOS AS photos, NOTES AS notes, WELL_TYPE AS wellType, STAFF AS staff, TEL AS tel, TS AS ts, VALID AS valid, BFZT AS bfzt, RESPONSIBLE_DEPT AS responsibleDept + + + + ID + AS id, WELL_CODE AS wellCode, WELL_NAME AS wellName, DEEP AS deep, COORDINATE_X AS coordinateX, COORDINATE_Y AS coordinateY, LAT_BAIDU AS latBaidu, LNG_BAIDU AS lngBaidu, LNG_GAODE AS lngGaode, LAT_GAODE AS latGaode, AREA AS area, POSITION AS position, DEPTID AS deptid, PHOTOS AS photos, NOTES AS notes, WELL_TYPE AS wellType, STAFF AS staff, TEL AS tel, TS AS ts, VALID AS valid, BFZT AS bfzt,d1.simplename AS deptName,d2.id AS responsibleDept,d2.simplename AS responsibleDeptName + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/service/IDataAnalysisService.java b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/service/IDataAnalysisService.java new file mode 100644 index 0000000..69c8c60 --- /dev/null +++ b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/service/IDataAnalysisService.java @@ -0,0 +1,51 @@ +package com.casic.missiles.modular.system.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.modular.system.dto.BfztCountDataDto; +import com.casic.missiles.modular.system.dto.BusWellInfoDto; +import com.casic.missiles.modular.system.dto.DeviceDataDto; +import com.casic.missiles.modular.system.dto.WatchDataDto; +import com.casic.missiles.modular.system.model.BusWellInfo; + +import java.util.List; + +/** + * 数据统计服务接口 + * + * @author lwh + */ +public interface IDataAnalysisService extends IService { + /** + * 获取告警闸井列表 + * @param dataScope 数据权限 + * @param keywords 关键字 + * @param wellType 井列表 + * @param deptid 组织id + * @return + */ + List getAlarmWellList(DataScope dataScope, String keywords, String wellType, String deptid); + + /** + * 获取不告警井列表信息 + * @param dataScope 数据权限 + * @param keywords 关键字 + * @param wellType 井类型 + * @param deptid 组织id + * @return + */ + List getNotAlarmWellList(DataScope dataScope, String keywords, String wellType, String deptid); + + /** + * 设备数据查询接口 + * @param devTypename 设备类型 + * @param devcode 设备编码 + * @param status 设备状态 + * @return 设备监测数据 + */ + List getDeviceDatas(String devTypename, String devcode, String status); + List getWatchDatas(Long id); + + + BfztCountDataDto getBfztCountData(List deptIds, Boolean isApp); +} diff --git a/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/service/impl/IDataAnalysisServiceImpl.java b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/service/impl/IDataAnalysisServiceImpl.java new file mode 100644 index 0000000..288a828 --- /dev/null +++ b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/service/impl/IDataAnalysisServiceImpl.java @@ -0,0 +1,386 @@ +package com.casic.missiles.modular.system.service.impl; + +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.modular.system.dao.DataAnalysisMapper; +import com.casic.missiles.modular.system.dto.*; +import com.casic.missiles.modular.system.enmus.HarmfulGasBusiness; +import com.casic.missiles.modular.system.enmus.TemphumBusiness; +import com.casic.missiles.modular.system.model.BusWellInfo; +import com.casic.missiles.modular.system.service.IBusDeviceSupportService; +import com.casic.missiles.modular.system.service.IDataAnalysisService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import java.text.DateFormat; +import java.text.DecimalFormat; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.List; + +/** + * 数据统计分析 + * + * @author lwh + */ +@Slf4j +@Component +public class IDataAnalysisServiceImpl extends ServiceImpl implements IDataAnalysisService { + @Resource + private AbstractDictService dictService; + @Resource + private IBusDeviceSupportService deviceSupportService; + + @Override + public List getAlarmWellList(DataScope dataScope, String keywords, String wellType, String deptid) { + return this.baseMapper.getAlarmWellList(dataScope, keywords, wellType, deptid); + } + + @Override + public List getNotAlarmWellList(DataScope dataScope, String keywords, String wellType, String deptid) { + return this.baseMapper.getNotAlarmWellList(dataScope, keywords, wellType, deptid); + } + + @Override + public List getDeviceDatas(String devTypeName, String devcode, String status) { + List deviceDataDtoList = new ArrayList<>(); + DeviceDataDto deviceDataDto = new DeviceDataDto(); + DeviceData deviceData; + DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + switch (devTypeName) { + case "井盖状态监测仪": + deviceData = this.baseMapper.wellcoverData(devcode); + deviceDataDto.setTypeName("井盖状态"); + if (ObjectUtil.isNotEmpty(deviceData)) { + //井盖离线 + if ("0".equals(status)) { + deviceDataDto.setValue("离线"); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } else if ("心跳".equals(deviceData.getData())) { + deviceDataDto.setValue("井盖状态正常"); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } else { + deviceDataDto.setValue(deviceData.getData()); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } + } else { + deviceDataDto.setValue("无数据"); + } + deviceDataDtoList.add(deviceDataDto); + break; + + case "液位监测仪": + deviceData = this.baseMapper.liquidData(devcode); + if (ObjectUtil.isNotEmpty(deviceData)) { + deviceDataDto.setTypeName("井内水位"); + deviceDataDto.setValue(deviceData.getData() + "m"); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + deviceDataDtoList.add(deviceDataDto); + } + break; + + case "有害气体监测仪": + deviceData = this.baseMapper.harmfulgasData(devcode); + if (ObjectUtil.isNotEmpty(deviceData)) { + String[] harmfulGasDatas = deviceData.getData().split(","); + HarmfulGasBusiness[] harmfulGasBusinesses = HarmfulGasBusiness.values(); + for (int i = 0; i < harmfulGasDatas.length; i++) { + deviceDataDto = new DeviceDataDto(); + deviceDataDto.setTypeName(harmfulGasBusinesses[i].getDesc()); + deviceDataDto.setValue(harmfulGasDatas[i] + harmfulGasBusinesses[i].getUnit()); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + deviceDataDtoList.add((DeviceDataDto) deviceDataDto.clone()); + } + } + break; + case "燃气智能监测终端": + deviceData = this.baseMapper.gasData(devcode); + if (ObjectUtil.isNotEmpty(deviceData)) { + deviceDataDto.setTypeName("燃气浓度"); + deviceDataDto.setValue(deviceData.getData() + "%LEL"); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + deviceDataDtoList.add(deviceDataDto); + } + break; + + case "温湿度监测仪": + deviceData = this.baseMapper.temphumData(devcode); + if (ObjectUtil.isNotEmpty(deviceData)) { + String[] temphumDatas = deviceData.getData().split(","); + TemphumBusiness[] temphumBusinesses = TemphumBusiness.values(); + for (int i = 0; i < temphumDatas.length; i++) { + deviceDataDto = new DeviceDataDto(); + deviceDataDto.setTypeName(temphumBusinesses[i].getDesc()); + deviceDataDto.setValue(temphumDatas[i] + temphumBusinesses[i].getUnit()); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + deviceDataDtoList.add((DeviceDataDto) deviceDataDto.clone()); + } + } + break; + + case "开挖监测仪": + deviceData = this.baseMapper.digData(devcode); + if (ObjectUtil.isNotEmpty(deviceData)) { + deviceDataDto.setTypeName("开挖状态"); + deviceDataDto.setValue(deviceData.getData() + "mg"); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + deviceDataDtoList.add(deviceDataDto); + } + break; + + case "噪声记录仪": + deviceData = this.baseMapper.noiseData(devcode); + if (ObjectUtil.isNotEmpty(deviceData)) { + deviceDataDto.setTypeName("管线噪声"); + deviceDataDto.setValue(deviceData.getData() + "mg"); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + deviceDataDtoList.add(deviceDataDto); + } + break; + case "井盖定位监测仪": + deviceData = this.baseMapper.wellcoverlocaData(devcode); + if (ObjectUtil.isNotEmpty(deviceData)) { + deviceDataDto.setTypeName("井盖位置"); + deviceDataDto.setValue(deviceData.getData()); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + deviceDataDtoList.add(deviceDataDto); + } + break; + + case "燃气智能监测终端(一体化)": + deviceData = this.baseMapper.lgGasData(devcode); + deviceDataDto.setTypeName("燃气浓度"); + if (ObjectUtil.isNotEmpty(deviceData)) { + + Double dValue = Double.parseDouble(deviceData.getData()); + if (dValue <= 20.0) { + deviceDataDto.setValue(deviceData.getData() + "%LEL"); + } else { + DecimalFormat df = new DecimalFormat("0.00"); + dValue = dValue / 20.0; + deviceDataDto.setValue(df.format(dValue) + "%VOL"); + } + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } else { + deviceDataDto.setValue("无数据"); + } + deviceDataDtoList.add(deviceDataDto); + + deviceData = this.baseMapper.lgLiquidData(devcode); + deviceDataDto.setTypeName("井内水位"); + if (ObjectUtil.isNotEmpty(deviceData)) { + + deviceDataDto.setValue(deviceData.getData() + "m"); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } else { + deviceDataDto.setValue("无数据"); + } + deviceDataDtoList.add((DeviceDataDto) deviceDataDto.clone()); + break; + + default://未知设备 + log.info("未知设备!"); + break; + } + return deviceDataDtoList; + } + + @Override + public BfztCountDataDto getBfztCountData(List deptIds, Boolean isApp) { + return this.baseMapper.bfztCountData(deptIds, isApp); + } + + @Override + public List getWatchDatas(Long id) { + + List deviceInWellInfos = deviceSupportService.getDeviceInWellInfo(id); + List watchDataDtos = new ArrayList<>(); + + for (DeviceInWellInfo deviceInWellInfo : deviceInWellInfos) { + WatchDataDto watchDataDto = new WatchDataDto(); + watchDataDto.setDeviceId(deviceInWellInfo.getDeviceId()); + watchDataDto.setDevcode(deviceInWellInfo.getDevcode()); + watchDataDto.setInstallDate(deviceInWellInfo.getInstallDate()); + watchDataDto.setOnlineState(deviceInWellInfo.getOnlineState()); + watchDataDto.setOnlineStateName(dictService.getDictNameByCode("onlineStatus", deviceInWellInfo.getOnlineState())); + + DeviceData deviceData; + DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + + switch (deviceInWellInfo.getTypeName()) { + case "井盖状态监测仪": + deviceData = this.baseMapper.wellcoverData(deviceInWellInfo.getDevcode()); + watchDataDto.setWatchType("井盖状态"); + watchDataDto.setType("1"); + if (ObjectUtil.isNotEmpty(deviceData)) { + //井盖离线 + if ("0".equals(watchDataDto.getOnlineState())) { + watchDataDto.setValue("离线"); + watchDataDto.setData("离线"); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } else if ("心跳".equals(deviceData.getData())) { + watchDataDto.setValue("井盖状态正常"); + watchDataDto.setData("井盖状态正常"); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } else { + watchDataDto.setValue(deviceData.getData()); + watchDataDto.setData(deviceData.getData()); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } + } else { + watchDataDto.setValue("无数据"); + watchDataDto.setData("无数据"); + } + watchDataDtos.add(watchDataDto); + break; + + case "液位监测仪": + deviceData = this.baseMapper.liquidData(deviceInWellInfo.getDevcode()); + if (ObjectUtil.isNotEmpty(deviceData)) { + watchDataDto.setWatchType("井内水位"); + watchDataDto.setType("2"); + + watchDataDto.setValue(deviceData.getData() + "m"); + watchDataDto.setData(deviceData.getData() + "m"); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + watchDataDtos.add(watchDataDto); + } + break; + + case "有害气体监测仪": + deviceData = this.baseMapper.harmfulgasData(deviceInWellInfo.getDevcode()); + if (ObjectUtil.isNotEmpty(deviceData)) { + String[] harmfulGasDatas = deviceData.getData().split(","); + HarmfulGasBusiness[] harmfulGasBusinesses = HarmfulGasBusiness.values(); + + for (int i = 0; i < harmfulGasDatas.length; i++) { + watchDataDto.setWatchType(harmfulGasBusinesses[i].getDesc()); + watchDataDto.setType("3"); + watchDataDto.setValue(harmfulGasDatas[i] + harmfulGasBusinesses[i].getUnit()); + watchDataDto.setData(harmfulGasDatas[i] + harmfulGasBusinesses[i].getUnit()); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + watchDataDtos.add((WatchDataDto) watchDataDto.clone()); + } + } + break; + + case "燃气智能监测终端": + deviceData = this.baseMapper.gasData(deviceInWellInfo.getDevcode()); + if (ObjectUtil.isNotEmpty(deviceData)) { + watchDataDto.setWatchType("燃气浓度"); + watchDataDto.setType("4"); + + watchDataDto.setValue(deviceData.getData() + "%LEL"); + watchDataDto.setData(deviceData.getData() + "%LEL"); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + watchDataDtos.add(watchDataDto); + } + break; + + case "温湿度监测仪": + deviceData = this.baseMapper.temphumData(deviceInWellInfo.getDevcode()); + if (ObjectUtil.isNotEmpty(deviceData)) { + String[] temphumDatas = deviceData.getData().split(","); + TemphumBusiness[] temphumBusinesses = TemphumBusiness.values(); + + for (int i = 0; i < temphumDatas.length; i++) { + watchDataDto.setWatchType(temphumBusinesses[i].getDesc()); + watchDataDto.setType("5"); + watchDataDto.setValue(temphumDatas[i] + temphumBusinesses[i].getUnit()); + watchDataDto.setData(temphumDatas[i] + temphumBusinesses[i].getUnit()); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + watchDataDtos.add((WatchDataDto) watchDataDto.clone()); + } + } + break; + + case "开挖监测仪": + deviceData = this.baseMapper.digData(deviceInWellInfo.getDevcode()); + if (ObjectUtil.isNotEmpty(deviceData)) { + watchDataDto.setWatchType("开挖状态"); + watchDataDto.setType("6"); + + watchDataDto.setValue(deviceData.getData() + "mg"); + watchDataDto.setData(deviceData.getData() + "mg"); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + watchDataDtos.add(watchDataDto); + } + break; + + case "噪声记录仪": + deviceData = this.baseMapper.noiseData(deviceInWellInfo.getDevcode()); + if (ObjectUtil.isNotEmpty(deviceData)) { + watchDataDto.setWatchType("管线噪声"); + watchDataDto.setType("8"); + + watchDataDto.setValue(deviceData.getData() + "mg"); + watchDataDto.setData(deviceData.getData() + "mg"); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + watchDataDtos.add(watchDataDto); + } + break; + + case "井盖定位监测仪": + deviceData = this.baseMapper.wellcoverlocaData(deviceInWellInfo.getDevcode()); + if (ObjectUtil.isNotEmpty(deviceData)) { + watchDataDto.setWatchType("井盖位置"); + watchDataDto.setType("7"); + + watchDataDto.setValue(deviceData.getData()); + watchDataDto.setData(deviceData.getData()); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + watchDataDtos.add(watchDataDto); + } + break; + + case "燃气智能监测终端(一体化)": + deviceData = this.baseMapper.lgGasData(deviceInWellInfo.getDevcode()); + watchDataDto.setWatchType("燃气浓度"); + watchDataDto.setType("10"); + if (ObjectUtil.isNotEmpty(deviceData)) { + + Double dValue = Double.parseDouble(deviceData.getData()); + if (dValue <= 20.0) { + watchDataDto.setValue(deviceData.getData() + "%LEL"); + watchDataDto.setData(deviceData.getData() + "%LEL"); + } else { + DecimalFormat df = new DecimalFormat("0.00"); + dValue = dValue / 20.0; + watchDataDto.setValue(df.format(dValue) + "%VOL"); + watchDataDto.setData(df.format(dValue) + "%VOL"); + } + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } else { + watchDataDto.setValue("无数据"); + watchDataDto.setData("无数据"); + } + watchDataDtos.add((WatchDataDto) watchDataDto.clone()); + + deviceData = this.baseMapper.lgLiquidData(deviceInWellInfo.getDevcode()); + watchDataDto.setWatchType("井内水位"); + watchDataDto.setType("10"); + if (ObjectUtil.isNotEmpty(deviceData)) { + + watchDataDto.setValue(deviceData.getData() + "m"); + watchDataDto.setData(deviceData.getData() + "m"); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } else { + watchDataDto.setValue("无数据"); + watchDataDto.setData("无数据"); + } + watchDataDtos.add((WatchDataDto) watchDataDto.clone()); + break; + + default://未知设备 + log.info("未知设备!"); + break; + } + } + + return watchDataDtos; + } + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java index d45eaf7..b9ca243 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java @@ -21,7 +21,7 @@ public interface DeviceMapper extends BaseMapper { List selectDataScopePage(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("deviceType") String deviceType, @Param("deptid") String deptid, @Param("beginTime") String beginTime, @Param("endTime") String endTime, @Param("keywords") String keywords,@Param("isOnline") String isOnline); - + List getDeviceList(@Param("scope") DataScope dataScope); DeviceWellDto selectWellIdByCode(@Param("wellCode") String wellCode); DeviceConcentratorDto selectDeviceConcentorByCode(@Param("concenCode") String concenCode); @@ -61,4 +61,13 @@ List> selectTempDataList(@Param("dataScope")DataScope dataScope, @Param("wellCode")String wellCode, @Param("beginTime")String beginTime, @Param("endTime")String endTime); List> selectHarmfulDataList(@Param("dataScope")DataScope dataScope, @Param("wellCode")String wellCode, @Param("beginTime")String beginTime, @Param("endTime")String endTime); + + /** + * 查询设备信息 + * @param id 设备主键 + * @return + */ + DeviceInfoDto selectDeviceById(@Param("id") Long id); + + List getDeviceInWellInfo(@Param("id") Long id); } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml index fb6f4f4..c956057 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml @@ -902,5 +902,64 @@ ) t1 ORDER BY uptime asc + + + + d.ID AS deviceId, DEVCODE AS devcode, INSTALL_DATE AS installDate, ONLINE_STATE AS onlineState, t.TYPE_NAME AS typeName + + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java b/casic-device/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java index 72c60f0..090415c 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java @@ -17,7 +17,7 @@ * @author lwh123 * @since 2019-05-23 */ -public interface IDeviceService extends IService { +public interface IDeviceService extends IService{ /** * 根据条件分页查询设备列表 diff --git a/casic-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java index 0b089f3..de9111e 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java @@ -39,7 +39,7 @@ * @since 2019-05-23 */ @Service -public class DeviceServiceImpl extends ServiceImpl implements IDeviceService { +public class DeviceServiceImpl extends ServiceImpl implements IDeviceService,IBusDeviceSupportService { @Autowired private IDeviceTypeService deviceTypeService; @@ -514,4 +514,19 @@ } return list; } + + @Override + public List getDeviceList(DataScope dataScope) { + return this.baseMapper.getDeviceList(dataScope); + } + + @Override + public DeviceInfoDto selectDeviceById(Long id) { + return this.baseMapper.selectDeviceById(id); + } + + @Override + public List getDeviceInWellInfo(Long id) { + return this.baseMapper.getDeviceInWellInfo(id); + } } diff --git a/casic-server-support/src/main/java/com/casic/missiles/modular/system/enmus/HarmfulGasBusiness.java b/casic-server-support/src/main/java/com/casic/missiles/modular/system/enmus/HarmfulGasBusiness.java new file mode 100644 index 0000000..d3bfabc --- /dev/null +++ b/casic-server-support/src/main/java/com/casic/missiles/modular/system/enmus/HarmfulGasBusiness.java @@ -0,0 +1,44 @@ +package com.casic.missiles.modular.system.enmus; + +public enum HarmfulGasBusiness { + + CO(0, "CO浓度","ppm"), + CH4(1, "CH4浓度","%VOL"), + H2S(2, "H2S浓度","ppm"), + O2(3, "O2浓度","%VOL"); + //SWITCH(4, "液位开关",""); + + private int code; + private String desc; + private String unit; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public String getDesc() { + return desc; + } + + public void setDesc(String desc) { + this.desc = desc; + } + + public String getUnit() { + return unit; + } + + public void setUnit(String unit) { + this.unit = unit; + } + + HarmfulGasBusiness(int code, String desc, String unit) { + this.code = code; + this.desc = desc; + this.unit = unit; + } +} diff --git a/casic-server-support/src/main/java/com/casic/missiles/modular/system/enmus/SluicewellExportEnum.java b/casic-server-support/src/main/java/com/casic/missiles/modular/system/enmus/SluicewellExportEnum.java new file mode 100644 index 0000000..d451598 --- /dev/null +++ b/casic-server-support/src/main/java/com/casic/missiles/modular/system/enmus/SluicewellExportEnum.java @@ -0,0 +1,59 @@ +package com.casic.missiles.modular.system.enmus; + + + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +public enum SluicewellExportEnum { + + DEVICE_EXPORT( + new ArrayList() {{ +// add(new Header("井编号", "wellCode")); +// add(new Header("井名称", "wellName")); +// add(new Header("井深", "deep")); +// add(new Header("详细地址", "position")); +// add(new Header("井类型", "wellTypeName")); +// add(new Header("权属单位", "deptName")); +// add(new Header("设备数量", "deviceCount")); +// add(new Header("布防状态", "bfztName")); + }}, "sluicewell.xlsx", "井数据导出"); + + //SLUICEWELLDATA_EXPORT("sluicewell.xlsx", "sluicewell.xlsx", "闸井数据"); + + /** + * 导出模板相对路径 + */ + private List headers; + /** + * 下载文件名 + */ + private String fileName; + /** + * 描述信息 + */ + private String description; + + SluicewellExportEnum(List headers, String fileName, String description) { + this.headers = headers; + this.fileName = fileName; + this.description = description; + } + + public List getHeaders() { + return headers; + } + + public String getFileName() { + return fileName; + } + + public String getDescription() { + return description; + } + + public Map getCustomColumnStyle() { + return null; + } +} diff --git a/casic-server-support/src/main/java/com/casic/missiles/modular/system/enmus/TemphumBusiness.java b/casic-server-support/src/main/java/com/casic/missiles/modular/system/enmus/TemphumBusiness.java new file mode 100644 index 0000000..27d15e2 --- /dev/null +++ b/casic-server-support/src/main/java/com/casic/missiles/modular/system/enmus/TemphumBusiness.java @@ -0,0 +1,41 @@ +package com.casic.missiles.modular.system.enmus; + +public enum TemphumBusiness { + + TEMP(0, "井内温度","℃"), + HUM(1, "井内湿度","%RH"); + + private int code; + private String desc; + private String unit; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public String getDesc() { + return desc; + } + + public void setDesc(String desc) { + this.desc = desc; + } + + public String getUnit() { + return unit; + } + + public void setUnit(String unit) { + this.unit = unit; + } + + TemphumBusiness(int code, String desc, String unit) { + this.code = code; + this.desc = desc; + this.unit = unit; + } +} diff --git a/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/controller/BusMapOverviewController.java b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/controller/BusMapOverviewController.java new file mode 100644 index 0000000..9d9f43c --- /dev/null +++ b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/controller/BusMapOverviewController.java @@ -0,0 +1,182 @@ +package com.casic.missiles.modular.system.controller; + +import cn.hutool.core.collection.CollectionUtil; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.model.exception.ServiceException; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.model.response.SuccessResponseData; +import com.casic.missiles.modular.system.dto.BusWellInfoDto; +import com.casic.missiles.modular.system.dto.DeviceDataDto; +import com.casic.missiles.modular.system.dto.DeviceInfoDto; +import com.casic.missiles.modular.system.dto.WatchDataDto; +import com.casic.missiles.modular.system.model.BusWellInfo; +import com.casic.missiles.modular.system.service.IBusDeviceSupportService; +import com.casic.missiles.modular.system.service.IBusWellInfoSupportService; +import com.casic.missiles.modular.system.service.IDataAnalysisService; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.ResponseBody; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; + +/** + * 地图总览模块的controller + * + * @author tanyue + * @Date 2019-05-13 19:20:29 + */ +@Controller +@RequestMapping("/overview") +public class BusMapOverviewController extends BaseController { + + @Resource + private AbstractPermissionContext permissionService; + @Resource + private AbstractDictService dictService; + @Resource + private IBusWellInfoSupportService busWellInfoService; + @Resource + private IDataAnalysisService dataAnalysisService; + @Resource + private IBusDeviceSupportService busDeviceSupportService; + + /** + * 获取列表 + */ + @RequestMapping(value = "/wellList") + @ResponseBody + public Object wellList(@RequestParam(required = false) String keywords, + @RequestParam(required = false) String wellType, + @RequestParam(required = false) String deptid, + @RequestParam(required = false) String isAlarm) { + + DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope(); + List wellList = new ArrayList(); + + if (null == isAlarm || isAlarm.equals("") == true) { + // isAlarm参数为空,查询所有的闸井 + + // 查询并添加当前部门的闸井 + List myList = busWellInfoService.getWellList(dataScope, keywords, wellType, deptid); + if (null != myList && myList.isEmpty() == false) { + wellList.addAll(myList); + } + + /** + * 不需要了,由dataScope控制权限 + // 查询并添加下级部门的闸井 + List subDepts = permissionService.getSubDepts(deptid,null); + if (null != subDepts && subDepts.isEmpty() == false) { + for (Long subDeptId : subDepts) { + List subList = busWellInfoService.getWellList(dataScope, keywords, wellType, String.valueOf(subDeptId)); + if (null != subList && subList.isEmpty() == false) { + wellList.addAll(subList); + } + } + } + */ + } else if (isAlarm.equals("1")) { + // isAlarm = 1 查询所有报警状态的闸井 + wellList = dataAnalysisService.getAlarmWellList(dataScope, keywords, wellType, deptid); + } else { + // isAlarm = 0 查询所有不是报警状态的闸井 + wellList = dataAnalysisService.getNotAlarmWellList(dataScope, keywords, wellType, deptid); + } + + + return ResponseData.success(wellList); + } + + /** + * 获取设备列表 + */ + @RequestMapping(value = "/deviceList") + @ResponseBody + public Object deviceList() { + + DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope(); + List wellList = new ArrayList(); + wellList = busDeviceSupportService.getDeviceList(dataScope); + return ResponseData.success(wellList); + } + + /** + * 获取设备详情 + */ + @RequestMapping(value = "/deviceDetail", method = RequestMethod.GET) + @ResponseBody + public Object deviceDetail(@RequestParam(required = true) Long id) { + if (null == id) { + throw new ServiceException(CoreExceptionEnum.REQUEST_NULL); + } + DeviceInfoDto deviceInfoDto = busDeviceSupportService.selectDeviceById(id); + SuccessResponseData successResult = new SuccessResponseData(); + if (null == deviceInfoDto) { + successResult.setCode(200); + successResult.setMessage("success"); + successResult.setData(new HashMap()); + } else { + // 设置最新的监测数据 + List deviceDataDtoList = dataAnalysisService.getDeviceDatas(deviceInfoDto.getDeviceTypeName(), deviceInfoDto.getDevcode(), deviceInfoDto.getOnlineState()); + if (CollectionUtil.isNotEmpty(deviceDataDtoList)) { + deviceInfoDto.setRealtimeData(deviceDataDtoList); + } + successResult.setMessage("success"); + successResult.setData(deviceInfoDto); + } + return successResult; + } + + + /** + * 获取闸井详情 + */ + @RequestMapping(value = "/wellInfo", method = RequestMethod.GET) + @ResponseBody + public Object wellInfo(@RequestParam(required = true) Long id) { + if (null == id) { + throw new ServiceException(CoreExceptionEnum.REQUEST_NULL); + } + + BusWellInfo busWellInfo = busWellInfoService.getById(id); + SuccessResponseData successResult = new SuccessResponseData(); + if (null == busWellInfo) { + successResult.setCode(200); + successResult.setMessage("success"); + successResult.setData(new HashMap()); + } else { + BusWellInfoDto busWellInfoDto = new BusWellInfoDto(); + busWellInfoDto.convertBusWellInfo(busWellInfo); + + // 设置字典值 + busWellInfoDto.setBfztName(dictService.getDictNameByCode("bfzt", busWellInfo.getBfzt())); + busWellInfoDto.setWellTypeName(dictService.getDictNameByCode("sluicewellType", busWellInfo.getWellType())); + busWellInfoDto.setDeptName(permissionService.getDeptService().getDeptName(busWellInfo.getDeptid())); + + // 设置最新的监测数据 + List watchDataDtos = dataAnalysisService.getWatchDatas(id); + if (null != watchDataDtos && watchDataDtos.isEmpty() == false) { + for (WatchDataDto watchDataDto : watchDataDtos) { + watchDataDto.setValue(watchDataDto.getData()); + } + } + + busWellInfoDto.setWatchData(watchDataDtos); + + successResult.setMessage("success"); + successResult.setData(busWellInfoDto.toMap()); + } + return successResult; + } + + +} diff --git a/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/controller/WellDataController.java b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/controller/WellDataController.java new file mode 100644 index 0000000..c33ec7d --- /dev/null +++ b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/controller/WellDataController.java @@ -0,0 +1,81 @@ +package com.casic.missiles.modular.system.controller; + +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.model.exception.ServiceException; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.model.response.SuccessResponseData; +import com.casic.missiles.modular.system.service.IDataAnalysisService; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.ResponseBody; + +import javax.annotation.Resource; +import java.util.List; +import java.util.Set; + +@Controller +@RequestMapping("/well") +public class WellDataController extends BaseController { + @Resource + private AbstractPermissionContext permissionService; + @Resource + private IDataAnalysisService dataAnalysisService; + + + /** + * 获取闸井设备数据 + */ + @RequestMapping(value = "/watchDataByWell", method = RequestMethod.GET) + @ResponseBody + public Object watchDataByWell(Long id) { + if (null == id) { + throw new ServiceException(CoreExceptionEnum.REQUEST_NULL); + } + SuccessResponseData resultData = new SuccessResponseData(); + resultData.setData(dataAnalysisService.getWatchDatas(id)); + + return resultData; + } + + /** + * 根据布防状态统计闸井数量接口 + */ + @RequestMapping(value = "/countByBfzt", method = RequestMethod.GET) + @ResponseBody + public Object countByBfzt() { + DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope(); + Set roleTipes = permissionService.getAuthService().getLoginUser().getRoleTips(); + List deptIds = null; + Boolean isApp = false; + if (roleTipes.contains("leader") || roleTipes.contains("member")) { + deptIds = permissionService.getDeptService().getIdsByPid(permissionService.getAuthService().getLoginUser().getDeptId(), null); + deptIds.add(permissionService.getAuthService().getLoginUser().getDeptId()); + isApp = true; + } else { + deptIds = dataScope.getDeptIds(); + isApp = false; + } + SuccessResponseData resultData = new SuccessResponseData(); + dataAnalysisService.getBfztCountData(deptIds, isApp); + resultData.setData(dataAnalysisService.getBfztCountData(deptIds, isApp)); + return resultData; + } + + /** + * 获取布防类型(APP用) + */ + @RequestMapping(value = "/bfType", method = RequestMethod.GET) + @ResponseBody + public Object bfType(Long id) { + if (null == id) { + throw new ServiceException(CoreExceptionEnum.REQUEST_NULL); + } + SuccessResponseData resultData = new SuccessResponseData(); + resultData.setData(dataAnalysisService.getWatchDatas(id)); + return resultData; + } + +} diff --git a/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/dao/DataAnalysisMapper.java b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/dao/DataAnalysisMapper.java new file mode 100644 index 0000000..149fb82 --- /dev/null +++ b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/dao/DataAnalysisMapper.java @@ -0,0 +1,48 @@ +package com.casic.missiles.modular.system.dao; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.*; +import com.casic.missiles.modular.system.model.BusWellInfo; +import com.casic.missiles.core.datascope.DataScope; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * 闸井信息表 Mapper 接口 + *

+ * + * @author stylefeng123 + * @since 2019-05-13 + */ +public interface DataAnalysisMapper extends BaseMapper { + + List getAlarmWellList(@Param("scope") DataScope dataScope, @Param("keywords") String keywords, @Param("wellType") String deviceType, @Param("deptid") String deptid); + + List getNotAlarmWellList(@Param("scope") DataScope dataScope, @Param("keywords") String keywords, @Param("wellType") String deviceType, @Param("deptid") String deptid); + + DeviceData wellcoverData(@Param("devcode") String devcode); + + DeviceData liquidData(@Param("devcode") String devcode); + + DeviceData harmfulgasData(@Param("devcode") String devcode); + + DeviceData gasData(@Param("devcode") String devcode); + + DeviceData temphumData(@Param("devcode") String devcode); + + DeviceData digData(@Param("devcode") String devcode); + + DeviceData noiseData(@Param("devcode") String devcode); + + DeviceData wellcoverlocaData(@Param("devcode") String devcode); + + DeviceData lgGasData(@Param("devcode") String devcode);//燃气液位 + + DeviceData lgLiquidData(@Param("devcode") String devcode);//燃气液位 + + + BfztCountDataDto bfztCountData(@Param("deptIds") List deptIds, @Param("isApp") Boolean isApp); +} diff --git a/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/dao/mapping/DataAnalysisMapper.xml b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/dao/mapping/DataAnalysisMapper.xml new file mode 100644 index 0000000..6d7edb3 --- /dev/null +++ b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/dao/mapping/DataAnalysisMapper.xml @@ -0,0 +1,170 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ID + AS id, WELL_CODE AS wellCode, WELL_NAME AS wellName, DEEP AS deep, COORDINATE_X AS coordinateX, COORDINATE_Y AS coordinateY, LAT_BAIDU AS latBaidu, LNG_BAIDU AS lngBaidu, LNG_GAODE AS lngGaode, LAT_GAODE AS latGaode, AREA AS area, POSITION AS position, DEPTID AS deptid, PHOTOS AS photos, NOTES AS notes, WELL_TYPE AS wellType, STAFF AS staff, TEL AS tel, TS AS ts, VALID AS valid, BFZT AS bfzt, RESPONSIBLE_DEPT AS responsibleDept + + + + ID + AS id, WELL_CODE AS wellCode, WELL_NAME AS wellName, DEEP AS deep, COORDINATE_X AS coordinateX, COORDINATE_Y AS coordinateY, LAT_BAIDU AS latBaidu, LNG_BAIDU AS lngBaidu, LNG_GAODE AS lngGaode, LAT_GAODE AS latGaode, AREA AS area, POSITION AS position, DEPTID AS deptid, PHOTOS AS photos, NOTES AS notes, WELL_TYPE AS wellType, STAFF AS staff, TEL AS tel, TS AS ts, VALID AS valid, BFZT AS bfzt,d1.simplename AS deptName,d2.id AS responsibleDept,d2.simplename AS responsibleDeptName + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/service/IDataAnalysisService.java b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/service/IDataAnalysisService.java new file mode 100644 index 0000000..69c8c60 --- /dev/null +++ b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/service/IDataAnalysisService.java @@ -0,0 +1,51 @@ +package com.casic.missiles.modular.system.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.modular.system.dto.BfztCountDataDto; +import com.casic.missiles.modular.system.dto.BusWellInfoDto; +import com.casic.missiles.modular.system.dto.DeviceDataDto; +import com.casic.missiles.modular.system.dto.WatchDataDto; +import com.casic.missiles.modular.system.model.BusWellInfo; + +import java.util.List; + +/** + * 数据统计服务接口 + * + * @author lwh + */ +public interface IDataAnalysisService extends IService { + /** + * 获取告警闸井列表 + * @param dataScope 数据权限 + * @param keywords 关键字 + * @param wellType 井列表 + * @param deptid 组织id + * @return + */ + List getAlarmWellList(DataScope dataScope, String keywords, String wellType, String deptid); + + /** + * 获取不告警井列表信息 + * @param dataScope 数据权限 + * @param keywords 关键字 + * @param wellType 井类型 + * @param deptid 组织id + * @return + */ + List getNotAlarmWellList(DataScope dataScope, String keywords, String wellType, String deptid); + + /** + * 设备数据查询接口 + * @param devTypename 设备类型 + * @param devcode 设备编码 + * @param status 设备状态 + * @return 设备监测数据 + */ + List getDeviceDatas(String devTypename, String devcode, String status); + List getWatchDatas(Long id); + + + BfztCountDataDto getBfztCountData(List deptIds, Boolean isApp); +} diff --git a/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/service/impl/IDataAnalysisServiceImpl.java b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/service/impl/IDataAnalysisServiceImpl.java new file mode 100644 index 0000000..288a828 --- /dev/null +++ b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/service/impl/IDataAnalysisServiceImpl.java @@ -0,0 +1,386 @@ +package com.casic.missiles.modular.system.service.impl; + +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.modular.system.dao.DataAnalysisMapper; +import com.casic.missiles.modular.system.dto.*; +import com.casic.missiles.modular.system.enmus.HarmfulGasBusiness; +import com.casic.missiles.modular.system.enmus.TemphumBusiness; +import com.casic.missiles.modular.system.model.BusWellInfo; +import com.casic.missiles.modular.system.service.IBusDeviceSupportService; +import com.casic.missiles.modular.system.service.IDataAnalysisService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import java.text.DateFormat; +import java.text.DecimalFormat; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.List; + +/** + * 数据统计分析 + * + * @author lwh + */ +@Slf4j +@Component +public class IDataAnalysisServiceImpl extends ServiceImpl implements IDataAnalysisService { + @Resource + private AbstractDictService dictService; + @Resource + private IBusDeviceSupportService deviceSupportService; + + @Override + public List getAlarmWellList(DataScope dataScope, String keywords, String wellType, String deptid) { + return this.baseMapper.getAlarmWellList(dataScope, keywords, wellType, deptid); + } + + @Override + public List getNotAlarmWellList(DataScope dataScope, String keywords, String wellType, String deptid) { + return this.baseMapper.getNotAlarmWellList(dataScope, keywords, wellType, deptid); + } + + @Override + public List getDeviceDatas(String devTypeName, String devcode, String status) { + List deviceDataDtoList = new ArrayList<>(); + DeviceDataDto deviceDataDto = new DeviceDataDto(); + DeviceData deviceData; + DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + switch (devTypeName) { + case "井盖状态监测仪": + deviceData = this.baseMapper.wellcoverData(devcode); + deviceDataDto.setTypeName("井盖状态"); + if (ObjectUtil.isNotEmpty(deviceData)) { + //井盖离线 + if ("0".equals(status)) { + deviceDataDto.setValue("离线"); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } else if ("心跳".equals(deviceData.getData())) { + deviceDataDto.setValue("井盖状态正常"); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } else { + deviceDataDto.setValue(deviceData.getData()); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } + } else { + deviceDataDto.setValue("无数据"); + } + deviceDataDtoList.add(deviceDataDto); + break; + + case "液位监测仪": + deviceData = this.baseMapper.liquidData(devcode); + if (ObjectUtil.isNotEmpty(deviceData)) { + deviceDataDto.setTypeName("井内水位"); + deviceDataDto.setValue(deviceData.getData() + "m"); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + deviceDataDtoList.add(deviceDataDto); + } + break; + + case "有害气体监测仪": + deviceData = this.baseMapper.harmfulgasData(devcode); + if (ObjectUtil.isNotEmpty(deviceData)) { + String[] harmfulGasDatas = deviceData.getData().split(","); + HarmfulGasBusiness[] harmfulGasBusinesses = HarmfulGasBusiness.values(); + for (int i = 0; i < harmfulGasDatas.length; i++) { + deviceDataDto = new DeviceDataDto(); + deviceDataDto.setTypeName(harmfulGasBusinesses[i].getDesc()); + deviceDataDto.setValue(harmfulGasDatas[i] + harmfulGasBusinesses[i].getUnit()); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + deviceDataDtoList.add((DeviceDataDto) deviceDataDto.clone()); + } + } + break; + case "燃气智能监测终端": + deviceData = this.baseMapper.gasData(devcode); + if (ObjectUtil.isNotEmpty(deviceData)) { + deviceDataDto.setTypeName("燃气浓度"); + deviceDataDto.setValue(deviceData.getData() + "%LEL"); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + deviceDataDtoList.add(deviceDataDto); + } + break; + + case "温湿度监测仪": + deviceData = this.baseMapper.temphumData(devcode); + if (ObjectUtil.isNotEmpty(deviceData)) { + String[] temphumDatas = deviceData.getData().split(","); + TemphumBusiness[] temphumBusinesses = TemphumBusiness.values(); + for (int i = 0; i < temphumDatas.length; i++) { + deviceDataDto = new DeviceDataDto(); + deviceDataDto.setTypeName(temphumBusinesses[i].getDesc()); + deviceDataDto.setValue(temphumDatas[i] + temphumBusinesses[i].getUnit()); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + deviceDataDtoList.add((DeviceDataDto) deviceDataDto.clone()); + } + } + break; + + case "开挖监测仪": + deviceData = this.baseMapper.digData(devcode); + if (ObjectUtil.isNotEmpty(deviceData)) { + deviceDataDto.setTypeName("开挖状态"); + deviceDataDto.setValue(deviceData.getData() + "mg"); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + deviceDataDtoList.add(deviceDataDto); + } + break; + + case "噪声记录仪": + deviceData = this.baseMapper.noiseData(devcode); + if (ObjectUtil.isNotEmpty(deviceData)) { + deviceDataDto.setTypeName("管线噪声"); + deviceDataDto.setValue(deviceData.getData() + "mg"); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + deviceDataDtoList.add(deviceDataDto); + } + break; + case "井盖定位监测仪": + deviceData = this.baseMapper.wellcoverlocaData(devcode); + if (ObjectUtil.isNotEmpty(deviceData)) { + deviceDataDto.setTypeName("井盖位置"); + deviceDataDto.setValue(deviceData.getData()); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + deviceDataDtoList.add(deviceDataDto); + } + break; + + case "燃气智能监测终端(一体化)": + deviceData = this.baseMapper.lgGasData(devcode); + deviceDataDto.setTypeName("燃气浓度"); + if (ObjectUtil.isNotEmpty(deviceData)) { + + Double dValue = Double.parseDouble(deviceData.getData()); + if (dValue <= 20.0) { + deviceDataDto.setValue(deviceData.getData() + "%LEL"); + } else { + DecimalFormat df = new DecimalFormat("0.00"); + dValue = dValue / 20.0; + deviceDataDto.setValue(df.format(dValue) + "%VOL"); + } + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } else { + deviceDataDto.setValue("无数据"); + } + deviceDataDtoList.add(deviceDataDto); + + deviceData = this.baseMapper.lgLiquidData(devcode); + deviceDataDto.setTypeName("井内水位"); + if (ObjectUtil.isNotEmpty(deviceData)) { + + deviceDataDto.setValue(deviceData.getData() + "m"); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } else { + deviceDataDto.setValue("无数据"); + } + deviceDataDtoList.add((DeviceDataDto) deviceDataDto.clone()); + break; + + default://未知设备 + log.info("未知设备!"); + break; + } + return deviceDataDtoList; + } + + @Override + public BfztCountDataDto getBfztCountData(List deptIds, Boolean isApp) { + return this.baseMapper.bfztCountData(deptIds, isApp); + } + + @Override + public List getWatchDatas(Long id) { + + List deviceInWellInfos = deviceSupportService.getDeviceInWellInfo(id); + List watchDataDtos = new ArrayList<>(); + + for (DeviceInWellInfo deviceInWellInfo : deviceInWellInfos) { + WatchDataDto watchDataDto = new WatchDataDto(); + watchDataDto.setDeviceId(deviceInWellInfo.getDeviceId()); + watchDataDto.setDevcode(deviceInWellInfo.getDevcode()); + watchDataDto.setInstallDate(deviceInWellInfo.getInstallDate()); + watchDataDto.setOnlineState(deviceInWellInfo.getOnlineState()); + watchDataDto.setOnlineStateName(dictService.getDictNameByCode("onlineStatus", deviceInWellInfo.getOnlineState())); + + DeviceData deviceData; + DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + + switch (deviceInWellInfo.getTypeName()) { + case "井盖状态监测仪": + deviceData = this.baseMapper.wellcoverData(deviceInWellInfo.getDevcode()); + watchDataDto.setWatchType("井盖状态"); + watchDataDto.setType("1"); + if (ObjectUtil.isNotEmpty(deviceData)) { + //井盖离线 + if ("0".equals(watchDataDto.getOnlineState())) { + watchDataDto.setValue("离线"); + watchDataDto.setData("离线"); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } else if ("心跳".equals(deviceData.getData())) { + watchDataDto.setValue("井盖状态正常"); + watchDataDto.setData("井盖状态正常"); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } else { + watchDataDto.setValue(deviceData.getData()); + watchDataDto.setData(deviceData.getData()); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } + } else { + watchDataDto.setValue("无数据"); + watchDataDto.setData("无数据"); + } + watchDataDtos.add(watchDataDto); + break; + + case "液位监测仪": + deviceData = this.baseMapper.liquidData(deviceInWellInfo.getDevcode()); + if (ObjectUtil.isNotEmpty(deviceData)) { + watchDataDto.setWatchType("井内水位"); + watchDataDto.setType("2"); + + watchDataDto.setValue(deviceData.getData() + "m"); + watchDataDto.setData(deviceData.getData() + "m"); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + watchDataDtos.add(watchDataDto); + } + break; + + case "有害气体监测仪": + deviceData = this.baseMapper.harmfulgasData(deviceInWellInfo.getDevcode()); + if (ObjectUtil.isNotEmpty(deviceData)) { + String[] harmfulGasDatas = deviceData.getData().split(","); + HarmfulGasBusiness[] harmfulGasBusinesses = HarmfulGasBusiness.values(); + + for (int i = 0; i < harmfulGasDatas.length; i++) { + watchDataDto.setWatchType(harmfulGasBusinesses[i].getDesc()); + watchDataDto.setType("3"); + watchDataDto.setValue(harmfulGasDatas[i] + harmfulGasBusinesses[i].getUnit()); + watchDataDto.setData(harmfulGasDatas[i] + harmfulGasBusinesses[i].getUnit()); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + watchDataDtos.add((WatchDataDto) watchDataDto.clone()); + } + } + break; + + case "燃气智能监测终端": + deviceData = this.baseMapper.gasData(deviceInWellInfo.getDevcode()); + if (ObjectUtil.isNotEmpty(deviceData)) { + watchDataDto.setWatchType("燃气浓度"); + watchDataDto.setType("4"); + + watchDataDto.setValue(deviceData.getData() + "%LEL"); + watchDataDto.setData(deviceData.getData() + "%LEL"); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + watchDataDtos.add(watchDataDto); + } + break; + + case "温湿度监测仪": + deviceData = this.baseMapper.temphumData(deviceInWellInfo.getDevcode()); + if (ObjectUtil.isNotEmpty(deviceData)) { + String[] temphumDatas = deviceData.getData().split(","); + TemphumBusiness[] temphumBusinesses = TemphumBusiness.values(); + + for (int i = 0; i < temphumDatas.length; i++) { + watchDataDto.setWatchType(temphumBusinesses[i].getDesc()); + watchDataDto.setType("5"); + watchDataDto.setValue(temphumDatas[i] + temphumBusinesses[i].getUnit()); + watchDataDto.setData(temphumDatas[i] + temphumBusinesses[i].getUnit()); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + watchDataDtos.add((WatchDataDto) watchDataDto.clone()); + } + } + break; + + case "开挖监测仪": + deviceData = this.baseMapper.digData(deviceInWellInfo.getDevcode()); + if (ObjectUtil.isNotEmpty(deviceData)) { + watchDataDto.setWatchType("开挖状态"); + watchDataDto.setType("6"); + + watchDataDto.setValue(deviceData.getData() + "mg"); + watchDataDto.setData(deviceData.getData() + "mg"); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + watchDataDtos.add(watchDataDto); + } + break; + + case "噪声记录仪": + deviceData = this.baseMapper.noiseData(deviceInWellInfo.getDevcode()); + if (ObjectUtil.isNotEmpty(deviceData)) { + watchDataDto.setWatchType("管线噪声"); + watchDataDto.setType("8"); + + watchDataDto.setValue(deviceData.getData() + "mg"); + watchDataDto.setData(deviceData.getData() + "mg"); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + watchDataDtos.add(watchDataDto); + } + break; + + case "井盖定位监测仪": + deviceData = this.baseMapper.wellcoverlocaData(deviceInWellInfo.getDevcode()); + if (ObjectUtil.isNotEmpty(deviceData)) { + watchDataDto.setWatchType("井盖位置"); + watchDataDto.setType("7"); + + watchDataDto.setValue(deviceData.getData()); + watchDataDto.setData(deviceData.getData()); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + watchDataDtos.add(watchDataDto); + } + break; + + case "燃气智能监测终端(一体化)": + deviceData = this.baseMapper.lgGasData(deviceInWellInfo.getDevcode()); + watchDataDto.setWatchType("燃气浓度"); + watchDataDto.setType("10"); + if (ObjectUtil.isNotEmpty(deviceData)) { + + Double dValue = Double.parseDouble(deviceData.getData()); + if (dValue <= 20.0) { + watchDataDto.setValue(deviceData.getData() + "%LEL"); + watchDataDto.setData(deviceData.getData() + "%LEL"); + } else { + DecimalFormat df = new DecimalFormat("0.00"); + dValue = dValue / 20.0; + watchDataDto.setValue(df.format(dValue) + "%VOL"); + watchDataDto.setData(df.format(dValue) + "%VOL"); + } + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } else { + watchDataDto.setValue("无数据"); + watchDataDto.setData("无数据"); + } + watchDataDtos.add((WatchDataDto) watchDataDto.clone()); + + deviceData = this.baseMapper.lgLiquidData(deviceInWellInfo.getDevcode()); + watchDataDto.setWatchType("井内水位"); + watchDataDto.setType("10"); + if (ObjectUtil.isNotEmpty(deviceData)) { + + watchDataDto.setValue(deviceData.getData() + "m"); + watchDataDto.setData(deviceData.getData() + "m"); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } else { + watchDataDto.setValue("无数据"); + watchDataDto.setData("无数据"); + } + watchDataDtos.add((WatchDataDto) watchDataDto.clone()); + break; + + default://未知设备 + log.info("未知设备!"); + break; + } + } + + return watchDataDtos; + } + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java index d45eaf7..b9ca243 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java @@ -21,7 +21,7 @@ public interface DeviceMapper extends BaseMapper { List selectDataScopePage(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("deviceType") String deviceType, @Param("deptid") String deptid, @Param("beginTime") String beginTime, @Param("endTime") String endTime, @Param("keywords") String keywords,@Param("isOnline") String isOnline); - + List getDeviceList(@Param("scope") DataScope dataScope); DeviceWellDto selectWellIdByCode(@Param("wellCode") String wellCode); DeviceConcentratorDto selectDeviceConcentorByCode(@Param("concenCode") String concenCode); @@ -61,4 +61,13 @@ List> selectTempDataList(@Param("dataScope")DataScope dataScope, @Param("wellCode")String wellCode, @Param("beginTime")String beginTime, @Param("endTime")String endTime); List> selectHarmfulDataList(@Param("dataScope")DataScope dataScope, @Param("wellCode")String wellCode, @Param("beginTime")String beginTime, @Param("endTime")String endTime); + + /** + * 查询设备信息 + * @param id 设备主键 + * @return + */ + DeviceInfoDto selectDeviceById(@Param("id") Long id); + + List getDeviceInWellInfo(@Param("id") Long id); } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml index fb6f4f4..c956057 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml @@ -902,5 +902,64 @@ ) t1 ORDER BY uptime asc + + + + d.ID AS deviceId, DEVCODE AS devcode, INSTALL_DATE AS installDate, ONLINE_STATE AS onlineState, t.TYPE_NAME AS typeName + + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java b/casic-device/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java index 72c60f0..090415c 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java @@ -17,7 +17,7 @@ * @author lwh123 * @since 2019-05-23 */ -public interface IDeviceService extends IService { +public interface IDeviceService extends IService{ /** * 根据条件分页查询设备列表 diff --git a/casic-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java index 0b089f3..de9111e 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java @@ -39,7 +39,7 @@ * @since 2019-05-23 */ @Service -public class DeviceServiceImpl extends ServiceImpl implements IDeviceService { +public class DeviceServiceImpl extends ServiceImpl implements IDeviceService,IBusDeviceSupportService { @Autowired private IDeviceTypeService deviceTypeService; @@ -514,4 +514,19 @@ } return list; } + + @Override + public List getDeviceList(DataScope dataScope) { + return this.baseMapper.getDeviceList(dataScope); + } + + @Override + public DeviceInfoDto selectDeviceById(Long id) { + return this.baseMapper.selectDeviceById(id); + } + + @Override + public List getDeviceInWellInfo(Long id) { + return this.baseMapper.getDeviceInWellInfo(id); + } } diff --git a/casic-server-support/src/main/java/com/casic/missiles/modular/system/enmus/HarmfulGasBusiness.java b/casic-server-support/src/main/java/com/casic/missiles/modular/system/enmus/HarmfulGasBusiness.java new file mode 100644 index 0000000..d3bfabc --- /dev/null +++ b/casic-server-support/src/main/java/com/casic/missiles/modular/system/enmus/HarmfulGasBusiness.java @@ -0,0 +1,44 @@ +package com.casic.missiles.modular.system.enmus; + +public enum HarmfulGasBusiness { + + CO(0, "CO浓度","ppm"), + CH4(1, "CH4浓度","%VOL"), + H2S(2, "H2S浓度","ppm"), + O2(3, "O2浓度","%VOL"); + //SWITCH(4, "液位开关",""); + + private int code; + private String desc; + private String unit; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public String getDesc() { + return desc; + } + + public void setDesc(String desc) { + this.desc = desc; + } + + public String getUnit() { + return unit; + } + + public void setUnit(String unit) { + this.unit = unit; + } + + HarmfulGasBusiness(int code, String desc, String unit) { + this.code = code; + this.desc = desc; + this.unit = unit; + } +} diff --git a/casic-server-support/src/main/java/com/casic/missiles/modular/system/enmus/SluicewellExportEnum.java b/casic-server-support/src/main/java/com/casic/missiles/modular/system/enmus/SluicewellExportEnum.java new file mode 100644 index 0000000..d451598 --- /dev/null +++ b/casic-server-support/src/main/java/com/casic/missiles/modular/system/enmus/SluicewellExportEnum.java @@ -0,0 +1,59 @@ +package com.casic.missiles.modular.system.enmus; + + + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +public enum SluicewellExportEnum { + + DEVICE_EXPORT( + new ArrayList() {{ +// add(new Header("井编号", "wellCode")); +// add(new Header("井名称", "wellName")); +// add(new Header("井深", "deep")); +// add(new Header("详细地址", "position")); +// add(new Header("井类型", "wellTypeName")); +// add(new Header("权属单位", "deptName")); +// add(new Header("设备数量", "deviceCount")); +// add(new Header("布防状态", "bfztName")); + }}, "sluicewell.xlsx", "井数据导出"); + + //SLUICEWELLDATA_EXPORT("sluicewell.xlsx", "sluicewell.xlsx", "闸井数据"); + + /** + * 导出模板相对路径 + */ + private List headers; + /** + * 下载文件名 + */ + private String fileName; + /** + * 描述信息 + */ + private String description; + + SluicewellExportEnum(List headers, String fileName, String description) { + this.headers = headers; + this.fileName = fileName; + this.description = description; + } + + public List getHeaders() { + return headers; + } + + public String getFileName() { + return fileName; + } + + public String getDescription() { + return description; + } + + public Map getCustomColumnStyle() { + return null; + } +} diff --git a/casic-server-support/src/main/java/com/casic/missiles/modular/system/enmus/TemphumBusiness.java b/casic-server-support/src/main/java/com/casic/missiles/modular/system/enmus/TemphumBusiness.java new file mode 100644 index 0000000..27d15e2 --- /dev/null +++ b/casic-server-support/src/main/java/com/casic/missiles/modular/system/enmus/TemphumBusiness.java @@ -0,0 +1,41 @@ +package com.casic.missiles.modular.system.enmus; + +public enum TemphumBusiness { + + TEMP(0, "井内温度","℃"), + HUM(1, "井内湿度","%RH"); + + private int code; + private String desc; + private String unit; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public String getDesc() { + return desc; + } + + public void setDesc(String desc) { + this.desc = desc; + } + + public String getUnit() { + return unit; + } + + public void setUnit(String unit) { + this.unit = unit; + } + + TemphumBusiness(int code, String desc, String unit) { + this.code = code; + this.desc = desc; + this.unit = unit; + } +} diff --git a/casic-server-support/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceSupportService.java b/casic-server-support/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceSupportService.java new file mode 100644 index 0000000..0b6fd75 --- /dev/null +++ b/casic-server-support/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceSupportService.java @@ -0,0 +1,42 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.model.application.service.IRepositorySupportService; +import com.casic.missiles.modular.system.dto.DeviceInWellInfo; +import com.casic.missiles.modular.system.dto.DeviceInfoDto; +import com.casic.missiles.modular.system.model.Device; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 设备支撑 + * + * @author lwh + */ +public interface IBusDeviceSupportService { + /** + * 获取设备列表 + * + * @param dataScope 数据权限 + * @return 设备列表 + */ + List getDeviceList(DataScope dataScope); + + + /** + * 查询设备信息 + * + * @param id 设备主键 + * @return 设备信息 + */ + DeviceInfoDto selectDeviceById(Long id); + + /** + * 查询井下设备信息 + * + * @param id 井主键 + * @return 井下设备信息 + */ + List getDeviceInWellInfo(Long id); +} diff --git a/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/controller/BusMapOverviewController.java b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/controller/BusMapOverviewController.java new file mode 100644 index 0000000..9d9f43c --- /dev/null +++ b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/controller/BusMapOverviewController.java @@ -0,0 +1,182 @@ +package com.casic.missiles.modular.system.controller; + +import cn.hutool.core.collection.CollectionUtil; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.model.exception.ServiceException; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.model.response.SuccessResponseData; +import com.casic.missiles.modular.system.dto.BusWellInfoDto; +import com.casic.missiles.modular.system.dto.DeviceDataDto; +import com.casic.missiles.modular.system.dto.DeviceInfoDto; +import com.casic.missiles.modular.system.dto.WatchDataDto; +import com.casic.missiles.modular.system.model.BusWellInfo; +import com.casic.missiles.modular.system.service.IBusDeviceSupportService; +import com.casic.missiles.modular.system.service.IBusWellInfoSupportService; +import com.casic.missiles.modular.system.service.IDataAnalysisService; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.ResponseBody; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; + +/** + * 地图总览模块的controller + * + * @author tanyue + * @Date 2019-05-13 19:20:29 + */ +@Controller +@RequestMapping("/overview") +public class BusMapOverviewController extends BaseController { + + @Resource + private AbstractPermissionContext permissionService; + @Resource + private AbstractDictService dictService; + @Resource + private IBusWellInfoSupportService busWellInfoService; + @Resource + private IDataAnalysisService dataAnalysisService; + @Resource + private IBusDeviceSupportService busDeviceSupportService; + + /** + * 获取列表 + */ + @RequestMapping(value = "/wellList") + @ResponseBody + public Object wellList(@RequestParam(required = false) String keywords, + @RequestParam(required = false) String wellType, + @RequestParam(required = false) String deptid, + @RequestParam(required = false) String isAlarm) { + + DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope(); + List wellList = new ArrayList(); + + if (null == isAlarm || isAlarm.equals("") == true) { + // isAlarm参数为空,查询所有的闸井 + + // 查询并添加当前部门的闸井 + List myList = busWellInfoService.getWellList(dataScope, keywords, wellType, deptid); + if (null != myList && myList.isEmpty() == false) { + wellList.addAll(myList); + } + + /** + * 不需要了,由dataScope控制权限 + // 查询并添加下级部门的闸井 + List subDepts = permissionService.getSubDepts(deptid,null); + if (null != subDepts && subDepts.isEmpty() == false) { + for (Long subDeptId : subDepts) { + List subList = busWellInfoService.getWellList(dataScope, keywords, wellType, String.valueOf(subDeptId)); + if (null != subList && subList.isEmpty() == false) { + wellList.addAll(subList); + } + } + } + */ + } else if (isAlarm.equals("1")) { + // isAlarm = 1 查询所有报警状态的闸井 + wellList = dataAnalysisService.getAlarmWellList(dataScope, keywords, wellType, deptid); + } else { + // isAlarm = 0 查询所有不是报警状态的闸井 + wellList = dataAnalysisService.getNotAlarmWellList(dataScope, keywords, wellType, deptid); + } + + + return ResponseData.success(wellList); + } + + /** + * 获取设备列表 + */ + @RequestMapping(value = "/deviceList") + @ResponseBody + public Object deviceList() { + + DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope(); + List wellList = new ArrayList(); + wellList = busDeviceSupportService.getDeviceList(dataScope); + return ResponseData.success(wellList); + } + + /** + * 获取设备详情 + */ + @RequestMapping(value = "/deviceDetail", method = RequestMethod.GET) + @ResponseBody + public Object deviceDetail(@RequestParam(required = true) Long id) { + if (null == id) { + throw new ServiceException(CoreExceptionEnum.REQUEST_NULL); + } + DeviceInfoDto deviceInfoDto = busDeviceSupportService.selectDeviceById(id); + SuccessResponseData successResult = new SuccessResponseData(); + if (null == deviceInfoDto) { + successResult.setCode(200); + successResult.setMessage("success"); + successResult.setData(new HashMap()); + } else { + // 设置最新的监测数据 + List deviceDataDtoList = dataAnalysisService.getDeviceDatas(deviceInfoDto.getDeviceTypeName(), deviceInfoDto.getDevcode(), deviceInfoDto.getOnlineState()); + if (CollectionUtil.isNotEmpty(deviceDataDtoList)) { + deviceInfoDto.setRealtimeData(deviceDataDtoList); + } + successResult.setMessage("success"); + successResult.setData(deviceInfoDto); + } + return successResult; + } + + + /** + * 获取闸井详情 + */ + @RequestMapping(value = "/wellInfo", method = RequestMethod.GET) + @ResponseBody + public Object wellInfo(@RequestParam(required = true) Long id) { + if (null == id) { + throw new ServiceException(CoreExceptionEnum.REQUEST_NULL); + } + + BusWellInfo busWellInfo = busWellInfoService.getById(id); + SuccessResponseData successResult = new SuccessResponseData(); + if (null == busWellInfo) { + successResult.setCode(200); + successResult.setMessage("success"); + successResult.setData(new HashMap()); + } else { + BusWellInfoDto busWellInfoDto = new BusWellInfoDto(); + busWellInfoDto.convertBusWellInfo(busWellInfo); + + // 设置字典值 + busWellInfoDto.setBfztName(dictService.getDictNameByCode("bfzt", busWellInfo.getBfzt())); + busWellInfoDto.setWellTypeName(dictService.getDictNameByCode("sluicewellType", busWellInfo.getWellType())); + busWellInfoDto.setDeptName(permissionService.getDeptService().getDeptName(busWellInfo.getDeptid())); + + // 设置最新的监测数据 + List watchDataDtos = dataAnalysisService.getWatchDatas(id); + if (null != watchDataDtos && watchDataDtos.isEmpty() == false) { + for (WatchDataDto watchDataDto : watchDataDtos) { + watchDataDto.setValue(watchDataDto.getData()); + } + } + + busWellInfoDto.setWatchData(watchDataDtos); + + successResult.setMessage("success"); + successResult.setData(busWellInfoDto.toMap()); + } + return successResult; + } + + +} diff --git a/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/controller/WellDataController.java b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/controller/WellDataController.java new file mode 100644 index 0000000..c33ec7d --- /dev/null +++ b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/controller/WellDataController.java @@ -0,0 +1,81 @@ +package com.casic.missiles.modular.system.controller; + +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.model.exception.ServiceException; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.model.response.SuccessResponseData; +import com.casic.missiles.modular.system.service.IDataAnalysisService; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.ResponseBody; + +import javax.annotation.Resource; +import java.util.List; +import java.util.Set; + +@Controller +@RequestMapping("/well") +public class WellDataController extends BaseController { + @Resource + private AbstractPermissionContext permissionService; + @Resource + private IDataAnalysisService dataAnalysisService; + + + /** + * 获取闸井设备数据 + */ + @RequestMapping(value = "/watchDataByWell", method = RequestMethod.GET) + @ResponseBody + public Object watchDataByWell(Long id) { + if (null == id) { + throw new ServiceException(CoreExceptionEnum.REQUEST_NULL); + } + SuccessResponseData resultData = new SuccessResponseData(); + resultData.setData(dataAnalysisService.getWatchDatas(id)); + + return resultData; + } + + /** + * 根据布防状态统计闸井数量接口 + */ + @RequestMapping(value = "/countByBfzt", method = RequestMethod.GET) + @ResponseBody + public Object countByBfzt() { + DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope(); + Set roleTipes = permissionService.getAuthService().getLoginUser().getRoleTips(); + List deptIds = null; + Boolean isApp = false; + if (roleTipes.contains("leader") || roleTipes.contains("member")) { + deptIds = permissionService.getDeptService().getIdsByPid(permissionService.getAuthService().getLoginUser().getDeptId(), null); + deptIds.add(permissionService.getAuthService().getLoginUser().getDeptId()); + isApp = true; + } else { + deptIds = dataScope.getDeptIds(); + isApp = false; + } + SuccessResponseData resultData = new SuccessResponseData(); + dataAnalysisService.getBfztCountData(deptIds, isApp); + resultData.setData(dataAnalysisService.getBfztCountData(deptIds, isApp)); + return resultData; + } + + /** + * 获取布防类型(APP用) + */ + @RequestMapping(value = "/bfType", method = RequestMethod.GET) + @ResponseBody + public Object bfType(Long id) { + if (null == id) { + throw new ServiceException(CoreExceptionEnum.REQUEST_NULL); + } + SuccessResponseData resultData = new SuccessResponseData(); + resultData.setData(dataAnalysisService.getWatchDatas(id)); + return resultData; + } + +} diff --git a/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/dao/DataAnalysisMapper.java b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/dao/DataAnalysisMapper.java new file mode 100644 index 0000000..149fb82 --- /dev/null +++ b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/dao/DataAnalysisMapper.java @@ -0,0 +1,48 @@ +package com.casic.missiles.modular.system.dao; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.*; +import com.casic.missiles.modular.system.model.BusWellInfo; +import com.casic.missiles.core.datascope.DataScope; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * 闸井信息表 Mapper 接口 + *

+ * + * @author stylefeng123 + * @since 2019-05-13 + */ +public interface DataAnalysisMapper extends BaseMapper { + + List getAlarmWellList(@Param("scope") DataScope dataScope, @Param("keywords") String keywords, @Param("wellType") String deviceType, @Param("deptid") String deptid); + + List getNotAlarmWellList(@Param("scope") DataScope dataScope, @Param("keywords") String keywords, @Param("wellType") String deviceType, @Param("deptid") String deptid); + + DeviceData wellcoverData(@Param("devcode") String devcode); + + DeviceData liquidData(@Param("devcode") String devcode); + + DeviceData harmfulgasData(@Param("devcode") String devcode); + + DeviceData gasData(@Param("devcode") String devcode); + + DeviceData temphumData(@Param("devcode") String devcode); + + DeviceData digData(@Param("devcode") String devcode); + + DeviceData noiseData(@Param("devcode") String devcode); + + DeviceData wellcoverlocaData(@Param("devcode") String devcode); + + DeviceData lgGasData(@Param("devcode") String devcode);//燃气液位 + + DeviceData lgLiquidData(@Param("devcode") String devcode);//燃气液位 + + + BfztCountDataDto bfztCountData(@Param("deptIds") List deptIds, @Param("isApp") Boolean isApp); +} diff --git a/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/dao/mapping/DataAnalysisMapper.xml b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/dao/mapping/DataAnalysisMapper.xml new file mode 100644 index 0000000..6d7edb3 --- /dev/null +++ b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/dao/mapping/DataAnalysisMapper.xml @@ -0,0 +1,170 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ID + AS id, WELL_CODE AS wellCode, WELL_NAME AS wellName, DEEP AS deep, COORDINATE_X AS coordinateX, COORDINATE_Y AS coordinateY, LAT_BAIDU AS latBaidu, LNG_BAIDU AS lngBaidu, LNG_GAODE AS lngGaode, LAT_GAODE AS latGaode, AREA AS area, POSITION AS position, DEPTID AS deptid, PHOTOS AS photos, NOTES AS notes, WELL_TYPE AS wellType, STAFF AS staff, TEL AS tel, TS AS ts, VALID AS valid, BFZT AS bfzt, RESPONSIBLE_DEPT AS responsibleDept + + + + ID + AS id, WELL_CODE AS wellCode, WELL_NAME AS wellName, DEEP AS deep, COORDINATE_X AS coordinateX, COORDINATE_Y AS coordinateY, LAT_BAIDU AS latBaidu, LNG_BAIDU AS lngBaidu, LNG_GAODE AS lngGaode, LAT_GAODE AS latGaode, AREA AS area, POSITION AS position, DEPTID AS deptid, PHOTOS AS photos, NOTES AS notes, WELL_TYPE AS wellType, STAFF AS staff, TEL AS tel, TS AS ts, VALID AS valid, BFZT AS bfzt,d1.simplename AS deptName,d2.id AS responsibleDept,d2.simplename AS responsibleDeptName + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/service/IDataAnalysisService.java b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/service/IDataAnalysisService.java new file mode 100644 index 0000000..69c8c60 --- /dev/null +++ b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/service/IDataAnalysisService.java @@ -0,0 +1,51 @@ +package com.casic.missiles.modular.system.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.modular.system.dto.BfztCountDataDto; +import com.casic.missiles.modular.system.dto.BusWellInfoDto; +import com.casic.missiles.modular.system.dto.DeviceDataDto; +import com.casic.missiles.modular.system.dto.WatchDataDto; +import com.casic.missiles.modular.system.model.BusWellInfo; + +import java.util.List; + +/** + * 数据统计服务接口 + * + * @author lwh + */ +public interface IDataAnalysisService extends IService { + /** + * 获取告警闸井列表 + * @param dataScope 数据权限 + * @param keywords 关键字 + * @param wellType 井列表 + * @param deptid 组织id + * @return + */ + List getAlarmWellList(DataScope dataScope, String keywords, String wellType, String deptid); + + /** + * 获取不告警井列表信息 + * @param dataScope 数据权限 + * @param keywords 关键字 + * @param wellType 井类型 + * @param deptid 组织id + * @return + */ + List getNotAlarmWellList(DataScope dataScope, String keywords, String wellType, String deptid); + + /** + * 设备数据查询接口 + * @param devTypename 设备类型 + * @param devcode 设备编码 + * @param status 设备状态 + * @return 设备监测数据 + */ + List getDeviceDatas(String devTypename, String devcode, String status); + List getWatchDatas(Long id); + + + BfztCountDataDto getBfztCountData(List deptIds, Boolean isApp); +} diff --git a/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/service/impl/IDataAnalysisServiceImpl.java b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/service/impl/IDataAnalysisServiceImpl.java new file mode 100644 index 0000000..288a828 --- /dev/null +++ b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/service/impl/IDataAnalysisServiceImpl.java @@ -0,0 +1,386 @@ +package com.casic.missiles.modular.system.service.impl; + +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.modular.system.dao.DataAnalysisMapper; +import com.casic.missiles.modular.system.dto.*; +import com.casic.missiles.modular.system.enmus.HarmfulGasBusiness; +import com.casic.missiles.modular.system.enmus.TemphumBusiness; +import com.casic.missiles.modular.system.model.BusWellInfo; +import com.casic.missiles.modular.system.service.IBusDeviceSupportService; +import com.casic.missiles.modular.system.service.IDataAnalysisService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import java.text.DateFormat; +import java.text.DecimalFormat; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.List; + +/** + * 数据统计分析 + * + * @author lwh + */ +@Slf4j +@Component +public class IDataAnalysisServiceImpl extends ServiceImpl implements IDataAnalysisService { + @Resource + private AbstractDictService dictService; + @Resource + private IBusDeviceSupportService deviceSupportService; + + @Override + public List getAlarmWellList(DataScope dataScope, String keywords, String wellType, String deptid) { + return this.baseMapper.getAlarmWellList(dataScope, keywords, wellType, deptid); + } + + @Override + public List getNotAlarmWellList(DataScope dataScope, String keywords, String wellType, String deptid) { + return this.baseMapper.getNotAlarmWellList(dataScope, keywords, wellType, deptid); + } + + @Override + public List getDeviceDatas(String devTypeName, String devcode, String status) { + List deviceDataDtoList = new ArrayList<>(); + DeviceDataDto deviceDataDto = new DeviceDataDto(); + DeviceData deviceData; + DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + switch (devTypeName) { + case "井盖状态监测仪": + deviceData = this.baseMapper.wellcoverData(devcode); + deviceDataDto.setTypeName("井盖状态"); + if (ObjectUtil.isNotEmpty(deviceData)) { + //井盖离线 + if ("0".equals(status)) { + deviceDataDto.setValue("离线"); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } else if ("心跳".equals(deviceData.getData())) { + deviceDataDto.setValue("井盖状态正常"); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } else { + deviceDataDto.setValue(deviceData.getData()); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } + } else { + deviceDataDto.setValue("无数据"); + } + deviceDataDtoList.add(deviceDataDto); + break; + + case "液位监测仪": + deviceData = this.baseMapper.liquidData(devcode); + if (ObjectUtil.isNotEmpty(deviceData)) { + deviceDataDto.setTypeName("井内水位"); + deviceDataDto.setValue(deviceData.getData() + "m"); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + deviceDataDtoList.add(deviceDataDto); + } + break; + + case "有害气体监测仪": + deviceData = this.baseMapper.harmfulgasData(devcode); + if (ObjectUtil.isNotEmpty(deviceData)) { + String[] harmfulGasDatas = deviceData.getData().split(","); + HarmfulGasBusiness[] harmfulGasBusinesses = HarmfulGasBusiness.values(); + for (int i = 0; i < harmfulGasDatas.length; i++) { + deviceDataDto = new DeviceDataDto(); + deviceDataDto.setTypeName(harmfulGasBusinesses[i].getDesc()); + deviceDataDto.setValue(harmfulGasDatas[i] + harmfulGasBusinesses[i].getUnit()); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + deviceDataDtoList.add((DeviceDataDto) deviceDataDto.clone()); + } + } + break; + case "燃气智能监测终端": + deviceData = this.baseMapper.gasData(devcode); + if (ObjectUtil.isNotEmpty(deviceData)) { + deviceDataDto.setTypeName("燃气浓度"); + deviceDataDto.setValue(deviceData.getData() + "%LEL"); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + deviceDataDtoList.add(deviceDataDto); + } + break; + + case "温湿度监测仪": + deviceData = this.baseMapper.temphumData(devcode); + if (ObjectUtil.isNotEmpty(deviceData)) { + String[] temphumDatas = deviceData.getData().split(","); + TemphumBusiness[] temphumBusinesses = TemphumBusiness.values(); + for (int i = 0; i < temphumDatas.length; i++) { + deviceDataDto = new DeviceDataDto(); + deviceDataDto.setTypeName(temphumBusinesses[i].getDesc()); + deviceDataDto.setValue(temphumDatas[i] + temphumBusinesses[i].getUnit()); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + deviceDataDtoList.add((DeviceDataDto) deviceDataDto.clone()); + } + } + break; + + case "开挖监测仪": + deviceData = this.baseMapper.digData(devcode); + if (ObjectUtil.isNotEmpty(deviceData)) { + deviceDataDto.setTypeName("开挖状态"); + deviceDataDto.setValue(deviceData.getData() + "mg"); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + deviceDataDtoList.add(deviceDataDto); + } + break; + + case "噪声记录仪": + deviceData = this.baseMapper.noiseData(devcode); + if (ObjectUtil.isNotEmpty(deviceData)) { + deviceDataDto.setTypeName("管线噪声"); + deviceDataDto.setValue(deviceData.getData() + "mg"); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + deviceDataDtoList.add(deviceDataDto); + } + break; + case "井盖定位监测仪": + deviceData = this.baseMapper.wellcoverlocaData(devcode); + if (ObjectUtil.isNotEmpty(deviceData)) { + deviceDataDto.setTypeName("井盖位置"); + deviceDataDto.setValue(deviceData.getData()); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + deviceDataDtoList.add(deviceDataDto); + } + break; + + case "燃气智能监测终端(一体化)": + deviceData = this.baseMapper.lgGasData(devcode); + deviceDataDto.setTypeName("燃气浓度"); + if (ObjectUtil.isNotEmpty(deviceData)) { + + Double dValue = Double.parseDouble(deviceData.getData()); + if (dValue <= 20.0) { + deviceDataDto.setValue(deviceData.getData() + "%LEL"); + } else { + DecimalFormat df = new DecimalFormat("0.00"); + dValue = dValue / 20.0; + deviceDataDto.setValue(df.format(dValue) + "%VOL"); + } + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } else { + deviceDataDto.setValue("无数据"); + } + deviceDataDtoList.add(deviceDataDto); + + deviceData = this.baseMapper.lgLiquidData(devcode); + deviceDataDto.setTypeName("井内水位"); + if (ObjectUtil.isNotEmpty(deviceData)) { + + deviceDataDto.setValue(deviceData.getData() + "m"); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } else { + deviceDataDto.setValue("无数据"); + } + deviceDataDtoList.add((DeviceDataDto) deviceDataDto.clone()); + break; + + default://未知设备 + log.info("未知设备!"); + break; + } + return deviceDataDtoList; + } + + @Override + public BfztCountDataDto getBfztCountData(List deptIds, Boolean isApp) { + return this.baseMapper.bfztCountData(deptIds, isApp); + } + + @Override + public List getWatchDatas(Long id) { + + List deviceInWellInfos = deviceSupportService.getDeviceInWellInfo(id); + List watchDataDtos = new ArrayList<>(); + + for (DeviceInWellInfo deviceInWellInfo : deviceInWellInfos) { + WatchDataDto watchDataDto = new WatchDataDto(); + watchDataDto.setDeviceId(deviceInWellInfo.getDeviceId()); + watchDataDto.setDevcode(deviceInWellInfo.getDevcode()); + watchDataDto.setInstallDate(deviceInWellInfo.getInstallDate()); + watchDataDto.setOnlineState(deviceInWellInfo.getOnlineState()); + watchDataDto.setOnlineStateName(dictService.getDictNameByCode("onlineStatus", deviceInWellInfo.getOnlineState())); + + DeviceData deviceData; + DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + + switch (deviceInWellInfo.getTypeName()) { + case "井盖状态监测仪": + deviceData = this.baseMapper.wellcoverData(deviceInWellInfo.getDevcode()); + watchDataDto.setWatchType("井盖状态"); + watchDataDto.setType("1"); + if (ObjectUtil.isNotEmpty(deviceData)) { + //井盖离线 + if ("0".equals(watchDataDto.getOnlineState())) { + watchDataDto.setValue("离线"); + watchDataDto.setData("离线"); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } else if ("心跳".equals(deviceData.getData())) { + watchDataDto.setValue("井盖状态正常"); + watchDataDto.setData("井盖状态正常"); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } else { + watchDataDto.setValue(deviceData.getData()); + watchDataDto.setData(deviceData.getData()); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } + } else { + watchDataDto.setValue("无数据"); + watchDataDto.setData("无数据"); + } + watchDataDtos.add(watchDataDto); + break; + + case "液位监测仪": + deviceData = this.baseMapper.liquidData(deviceInWellInfo.getDevcode()); + if (ObjectUtil.isNotEmpty(deviceData)) { + watchDataDto.setWatchType("井内水位"); + watchDataDto.setType("2"); + + watchDataDto.setValue(deviceData.getData() + "m"); + watchDataDto.setData(deviceData.getData() + "m"); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + watchDataDtos.add(watchDataDto); + } + break; + + case "有害气体监测仪": + deviceData = this.baseMapper.harmfulgasData(deviceInWellInfo.getDevcode()); + if (ObjectUtil.isNotEmpty(deviceData)) { + String[] harmfulGasDatas = deviceData.getData().split(","); + HarmfulGasBusiness[] harmfulGasBusinesses = HarmfulGasBusiness.values(); + + for (int i = 0; i < harmfulGasDatas.length; i++) { + watchDataDto.setWatchType(harmfulGasBusinesses[i].getDesc()); + watchDataDto.setType("3"); + watchDataDto.setValue(harmfulGasDatas[i] + harmfulGasBusinesses[i].getUnit()); + watchDataDto.setData(harmfulGasDatas[i] + harmfulGasBusinesses[i].getUnit()); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + watchDataDtos.add((WatchDataDto) watchDataDto.clone()); + } + } + break; + + case "燃气智能监测终端": + deviceData = this.baseMapper.gasData(deviceInWellInfo.getDevcode()); + if (ObjectUtil.isNotEmpty(deviceData)) { + watchDataDto.setWatchType("燃气浓度"); + watchDataDto.setType("4"); + + watchDataDto.setValue(deviceData.getData() + "%LEL"); + watchDataDto.setData(deviceData.getData() + "%LEL"); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + watchDataDtos.add(watchDataDto); + } + break; + + case "温湿度监测仪": + deviceData = this.baseMapper.temphumData(deviceInWellInfo.getDevcode()); + if (ObjectUtil.isNotEmpty(deviceData)) { + String[] temphumDatas = deviceData.getData().split(","); + TemphumBusiness[] temphumBusinesses = TemphumBusiness.values(); + + for (int i = 0; i < temphumDatas.length; i++) { + watchDataDto.setWatchType(temphumBusinesses[i].getDesc()); + watchDataDto.setType("5"); + watchDataDto.setValue(temphumDatas[i] + temphumBusinesses[i].getUnit()); + watchDataDto.setData(temphumDatas[i] + temphumBusinesses[i].getUnit()); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + watchDataDtos.add((WatchDataDto) watchDataDto.clone()); + } + } + break; + + case "开挖监测仪": + deviceData = this.baseMapper.digData(deviceInWellInfo.getDevcode()); + if (ObjectUtil.isNotEmpty(deviceData)) { + watchDataDto.setWatchType("开挖状态"); + watchDataDto.setType("6"); + + watchDataDto.setValue(deviceData.getData() + "mg"); + watchDataDto.setData(deviceData.getData() + "mg"); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + watchDataDtos.add(watchDataDto); + } + break; + + case "噪声记录仪": + deviceData = this.baseMapper.noiseData(deviceInWellInfo.getDevcode()); + if (ObjectUtil.isNotEmpty(deviceData)) { + watchDataDto.setWatchType("管线噪声"); + watchDataDto.setType("8"); + + watchDataDto.setValue(deviceData.getData() + "mg"); + watchDataDto.setData(deviceData.getData() + "mg"); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + watchDataDtos.add(watchDataDto); + } + break; + + case "井盖定位监测仪": + deviceData = this.baseMapper.wellcoverlocaData(deviceInWellInfo.getDevcode()); + if (ObjectUtil.isNotEmpty(deviceData)) { + watchDataDto.setWatchType("井盖位置"); + watchDataDto.setType("7"); + + watchDataDto.setValue(deviceData.getData()); + watchDataDto.setData(deviceData.getData()); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + watchDataDtos.add(watchDataDto); + } + break; + + case "燃气智能监测终端(一体化)": + deviceData = this.baseMapper.lgGasData(deviceInWellInfo.getDevcode()); + watchDataDto.setWatchType("燃气浓度"); + watchDataDto.setType("10"); + if (ObjectUtil.isNotEmpty(deviceData)) { + + Double dValue = Double.parseDouble(deviceData.getData()); + if (dValue <= 20.0) { + watchDataDto.setValue(deviceData.getData() + "%LEL"); + watchDataDto.setData(deviceData.getData() + "%LEL"); + } else { + DecimalFormat df = new DecimalFormat("0.00"); + dValue = dValue / 20.0; + watchDataDto.setValue(df.format(dValue) + "%VOL"); + watchDataDto.setData(df.format(dValue) + "%VOL"); + } + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } else { + watchDataDto.setValue("无数据"); + watchDataDto.setData("无数据"); + } + watchDataDtos.add((WatchDataDto) watchDataDto.clone()); + + deviceData = this.baseMapper.lgLiquidData(deviceInWellInfo.getDevcode()); + watchDataDto.setWatchType("井内水位"); + watchDataDto.setType("10"); + if (ObjectUtil.isNotEmpty(deviceData)) { + + watchDataDto.setValue(deviceData.getData() + "m"); + watchDataDto.setData(deviceData.getData() + "m"); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } else { + watchDataDto.setValue("无数据"); + watchDataDto.setData("无数据"); + } + watchDataDtos.add((WatchDataDto) watchDataDto.clone()); + break; + + default://未知设备 + log.info("未知设备!"); + break; + } + } + + return watchDataDtos; + } + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java index d45eaf7..b9ca243 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java @@ -21,7 +21,7 @@ public interface DeviceMapper extends BaseMapper { List selectDataScopePage(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("deviceType") String deviceType, @Param("deptid") String deptid, @Param("beginTime") String beginTime, @Param("endTime") String endTime, @Param("keywords") String keywords,@Param("isOnline") String isOnline); - + List getDeviceList(@Param("scope") DataScope dataScope); DeviceWellDto selectWellIdByCode(@Param("wellCode") String wellCode); DeviceConcentratorDto selectDeviceConcentorByCode(@Param("concenCode") String concenCode); @@ -61,4 +61,13 @@ List> selectTempDataList(@Param("dataScope")DataScope dataScope, @Param("wellCode")String wellCode, @Param("beginTime")String beginTime, @Param("endTime")String endTime); List> selectHarmfulDataList(@Param("dataScope")DataScope dataScope, @Param("wellCode")String wellCode, @Param("beginTime")String beginTime, @Param("endTime")String endTime); + + /** + * 查询设备信息 + * @param id 设备主键 + * @return + */ + DeviceInfoDto selectDeviceById(@Param("id") Long id); + + List getDeviceInWellInfo(@Param("id") Long id); } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml index fb6f4f4..c956057 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml @@ -902,5 +902,64 @@ ) t1 ORDER BY uptime asc + + + + d.ID AS deviceId, DEVCODE AS devcode, INSTALL_DATE AS installDate, ONLINE_STATE AS onlineState, t.TYPE_NAME AS typeName + + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java b/casic-device/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java index 72c60f0..090415c 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java @@ -17,7 +17,7 @@ * @author lwh123 * @since 2019-05-23 */ -public interface IDeviceService extends IService { +public interface IDeviceService extends IService{ /** * 根据条件分页查询设备列表 diff --git a/casic-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java index 0b089f3..de9111e 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java @@ -39,7 +39,7 @@ * @since 2019-05-23 */ @Service -public class DeviceServiceImpl extends ServiceImpl implements IDeviceService { +public class DeviceServiceImpl extends ServiceImpl implements IDeviceService,IBusDeviceSupportService { @Autowired private IDeviceTypeService deviceTypeService; @@ -514,4 +514,19 @@ } return list; } + + @Override + public List getDeviceList(DataScope dataScope) { + return this.baseMapper.getDeviceList(dataScope); + } + + @Override + public DeviceInfoDto selectDeviceById(Long id) { + return this.baseMapper.selectDeviceById(id); + } + + @Override + public List getDeviceInWellInfo(Long id) { + return this.baseMapper.getDeviceInWellInfo(id); + } } diff --git a/casic-server-support/src/main/java/com/casic/missiles/modular/system/enmus/HarmfulGasBusiness.java b/casic-server-support/src/main/java/com/casic/missiles/modular/system/enmus/HarmfulGasBusiness.java new file mode 100644 index 0000000..d3bfabc --- /dev/null +++ b/casic-server-support/src/main/java/com/casic/missiles/modular/system/enmus/HarmfulGasBusiness.java @@ -0,0 +1,44 @@ +package com.casic.missiles.modular.system.enmus; + +public enum HarmfulGasBusiness { + + CO(0, "CO浓度","ppm"), + CH4(1, "CH4浓度","%VOL"), + H2S(2, "H2S浓度","ppm"), + O2(3, "O2浓度","%VOL"); + //SWITCH(4, "液位开关",""); + + private int code; + private String desc; + private String unit; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public String getDesc() { + return desc; + } + + public void setDesc(String desc) { + this.desc = desc; + } + + public String getUnit() { + return unit; + } + + public void setUnit(String unit) { + this.unit = unit; + } + + HarmfulGasBusiness(int code, String desc, String unit) { + this.code = code; + this.desc = desc; + this.unit = unit; + } +} diff --git a/casic-server-support/src/main/java/com/casic/missiles/modular/system/enmus/SluicewellExportEnum.java b/casic-server-support/src/main/java/com/casic/missiles/modular/system/enmus/SluicewellExportEnum.java new file mode 100644 index 0000000..d451598 --- /dev/null +++ b/casic-server-support/src/main/java/com/casic/missiles/modular/system/enmus/SluicewellExportEnum.java @@ -0,0 +1,59 @@ +package com.casic.missiles.modular.system.enmus; + + + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +public enum SluicewellExportEnum { + + DEVICE_EXPORT( + new ArrayList() {{ +// add(new Header("井编号", "wellCode")); +// add(new Header("井名称", "wellName")); +// add(new Header("井深", "deep")); +// add(new Header("详细地址", "position")); +// add(new Header("井类型", "wellTypeName")); +// add(new Header("权属单位", "deptName")); +// add(new Header("设备数量", "deviceCount")); +// add(new Header("布防状态", "bfztName")); + }}, "sluicewell.xlsx", "井数据导出"); + + //SLUICEWELLDATA_EXPORT("sluicewell.xlsx", "sluicewell.xlsx", "闸井数据"); + + /** + * 导出模板相对路径 + */ + private List headers; + /** + * 下载文件名 + */ + private String fileName; + /** + * 描述信息 + */ + private String description; + + SluicewellExportEnum(List headers, String fileName, String description) { + this.headers = headers; + this.fileName = fileName; + this.description = description; + } + + public List getHeaders() { + return headers; + } + + public String getFileName() { + return fileName; + } + + public String getDescription() { + return description; + } + + public Map getCustomColumnStyle() { + return null; + } +} diff --git a/casic-server-support/src/main/java/com/casic/missiles/modular/system/enmus/TemphumBusiness.java b/casic-server-support/src/main/java/com/casic/missiles/modular/system/enmus/TemphumBusiness.java new file mode 100644 index 0000000..27d15e2 --- /dev/null +++ b/casic-server-support/src/main/java/com/casic/missiles/modular/system/enmus/TemphumBusiness.java @@ -0,0 +1,41 @@ +package com.casic.missiles.modular.system.enmus; + +public enum TemphumBusiness { + + TEMP(0, "井内温度","℃"), + HUM(1, "井内湿度","%RH"); + + private int code; + private String desc; + private String unit; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public String getDesc() { + return desc; + } + + public void setDesc(String desc) { + this.desc = desc; + } + + public String getUnit() { + return unit; + } + + public void setUnit(String unit) { + this.unit = unit; + } + + TemphumBusiness(int code, String desc, String unit) { + this.code = code; + this.desc = desc; + this.unit = unit; + } +} diff --git a/casic-server-support/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceSupportService.java b/casic-server-support/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceSupportService.java new file mode 100644 index 0000000..0b6fd75 --- /dev/null +++ b/casic-server-support/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceSupportService.java @@ -0,0 +1,42 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.model.application.service.IRepositorySupportService; +import com.casic.missiles.modular.system.dto.DeviceInWellInfo; +import com.casic.missiles.modular.system.dto.DeviceInfoDto; +import com.casic.missiles.modular.system.model.Device; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 设备支撑 + * + * @author lwh + */ +public interface IBusDeviceSupportService { + /** + * 获取设备列表 + * + * @param dataScope 数据权限 + * @return 设备列表 + */ + List getDeviceList(DataScope dataScope); + + + /** + * 查询设备信息 + * + * @param id 设备主键 + * @return 设备信息 + */ + DeviceInfoDto selectDeviceById(Long id); + + /** + * 查询井下设备信息 + * + * @param id 井主键 + * @return 井下设备信息 + */ + List getDeviceInWellInfo(Long id); +} diff --git a/casic-server-support/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoSupportService.java b/casic-server-support/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoSupportService.java new file mode 100644 index 0000000..e34c98e --- /dev/null +++ b/casic-server-support/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoSupportService.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.model.application.service.IRepositorySupportService; +import com.casic.missiles.modular.system.dto.BusWellInfoDto; +import com.casic.missiles.modular.system.model.BusWellInfo; + +import java.util.List; + +/** + * 闸井服务支撑接口 + * + * @author lwh + */ +public interface IBusWellInfoSupportService { + /** + * 获取井列表接口 + * + * @param dataScope 数据权限 + * @param keywords 关键字 + * @param wellType 井类型 + * @param deptid 组织ID + * @return + */ + List getWellList(DataScope dataScope, String keywords, String wellType, String deptid); + + BusWellInfo getById(Long id); +} diff --git a/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/controller/BusMapOverviewController.java b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/controller/BusMapOverviewController.java new file mode 100644 index 0000000..9d9f43c --- /dev/null +++ b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/controller/BusMapOverviewController.java @@ -0,0 +1,182 @@ +package com.casic.missiles.modular.system.controller; + +import cn.hutool.core.collection.CollectionUtil; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.model.exception.ServiceException; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.model.response.SuccessResponseData; +import com.casic.missiles.modular.system.dto.BusWellInfoDto; +import com.casic.missiles.modular.system.dto.DeviceDataDto; +import com.casic.missiles.modular.system.dto.DeviceInfoDto; +import com.casic.missiles.modular.system.dto.WatchDataDto; +import com.casic.missiles.modular.system.model.BusWellInfo; +import com.casic.missiles.modular.system.service.IBusDeviceSupportService; +import com.casic.missiles.modular.system.service.IBusWellInfoSupportService; +import com.casic.missiles.modular.system.service.IDataAnalysisService; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.ResponseBody; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; + +/** + * 地图总览模块的controller + * + * @author tanyue + * @Date 2019-05-13 19:20:29 + */ +@Controller +@RequestMapping("/overview") +public class BusMapOverviewController extends BaseController { + + @Resource + private AbstractPermissionContext permissionService; + @Resource + private AbstractDictService dictService; + @Resource + private IBusWellInfoSupportService busWellInfoService; + @Resource + private IDataAnalysisService dataAnalysisService; + @Resource + private IBusDeviceSupportService busDeviceSupportService; + + /** + * 获取列表 + */ + @RequestMapping(value = "/wellList") + @ResponseBody + public Object wellList(@RequestParam(required = false) String keywords, + @RequestParam(required = false) String wellType, + @RequestParam(required = false) String deptid, + @RequestParam(required = false) String isAlarm) { + + DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope(); + List wellList = new ArrayList(); + + if (null == isAlarm || isAlarm.equals("") == true) { + // isAlarm参数为空,查询所有的闸井 + + // 查询并添加当前部门的闸井 + List myList = busWellInfoService.getWellList(dataScope, keywords, wellType, deptid); + if (null != myList && myList.isEmpty() == false) { + wellList.addAll(myList); + } + + /** + * 不需要了,由dataScope控制权限 + // 查询并添加下级部门的闸井 + List subDepts = permissionService.getSubDepts(deptid,null); + if (null != subDepts && subDepts.isEmpty() == false) { + for (Long subDeptId : subDepts) { + List subList = busWellInfoService.getWellList(dataScope, keywords, wellType, String.valueOf(subDeptId)); + if (null != subList && subList.isEmpty() == false) { + wellList.addAll(subList); + } + } + } + */ + } else if (isAlarm.equals("1")) { + // isAlarm = 1 查询所有报警状态的闸井 + wellList = dataAnalysisService.getAlarmWellList(dataScope, keywords, wellType, deptid); + } else { + // isAlarm = 0 查询所有不是报警状态的闸井 + wellList = dataAnalysisService.getNotAlarmWellList(dataScope, keywords, wellType, deptid); + } + + + return ResponseData.success(wellList); + } + + /** + * 获取设备列表 + */ + @RequestMapping(value = "/deviceList") + @ResponseBody + public Object deviceList() { + + DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope(); + List wellList = new ArrayList(); + wellList = busDeviceSupportService.getDeviceList(dataScope); + return ResponseData.success(wellList); + } + + /** + * 获取设备详情 + */ + @RequestMapping(value = "/deviceDetail", method = RequestMethod.GET) + @ResponseBody + public Object deviceDetail(@RequestParam(required = true) Long id) { + if (null == id) { + throw new ServiceException(CoreExceptionEnum.REQUEST_NULL); + } + DeviceInfoDto deviceInfoDto = busDeviceSupportService.selectDeviceById(id); + SuccessResponseData successResult = new SuccessResponseData(); + if (null == deviceInfoDto) { + successResult.setCode(200); + successResult.setMessage("success"); + successResult.setData(new HashMap()); + } else { + // 设置最新的监测数据 + List deviceDataDtoList = dataAnalysisService.getDeviceDatas(deviceInfoDto.getDeviceTypeName(), deviceInfoDto.getDevcode(), deviceInfoDto.getOnlineState()); + if (CollectionUtil.isNotEmpty(deviceDataDtoList)) { + deviceInfoDto.setRealtimeData(deviceDataDtoList); + } + successResult.setMessage("success"); + successResult.setData(deviceInfoDto); + } + return successResult; + } + + + /** + * 获取闸井详情 + */ + @RequestMapping(value = "/wellInfo", method = RequestMethod.GET) + @ResponseBody + public Object wellInfo(@RequestParam(required = true) Long id) { + if (null == id) { + throw new ServiceException(CoreExceptionEnum.REQUEST_NULL); + } + + BusWellInfo busWellInfo = busWellInfoService.getById(id); + SuccessResponseData successResult = new SuccessResponseData(); + if (null == busWellInfo) { + successResult.setCode(200); + successResult.setMessage("success"); + successResult.setData(new HashMap()); + } else { + BusWellInfoDto busWellInfoDto = new BusWellInfoDto(); + busWellInfoDto.convertBusWellInfo(busWellInfo); + + // 设置字典值 + busWellInfoDto.setBfztName(dictService.getDictNameByCode("bfzt", busWellInfo.getBfzt())); + busWellInfoDto.setWellTypeName(dictService.getDictNameByCode("sluicewellType", busWellInfo.getWellType())); + busWellInfoDto.setDeptName(permissionService.getDeptService().getDeptName(busWellInfo.getDeptid())); + + // 设置最新的监测数据 + List watchDataDtos = dataAnalysisService.getWatchDatas(id); + if (null != watchDataDtos && watchDataDtos.isEmpty() == false) { + for (WatchDataDto watchDataDto : watchDataDtos) { + watchDataDto.setValue(watchDataDto.getData()); + } + } + + busWellInfoDto.setWatchData(watchDataDtos); + + successResult.setMessage("success"); + successResult.setData(busWellInfoDto.toMap()); + } + return successResult; + } + + +} diff --git a/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/controller/WellDataController.java b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/controller/WellDataController.java new file mode 100644 index 0000000..c33ec7d --- /dev/null +++ b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/controller/WellDataController.java @@ -0,0 +1,81 @@ +package com.casic.missiles.modular.system.controller; + +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.model.exception.ServiceException; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.model.response.SuccessResponseData; +import com.casic.missiles.modular.system.service.IDataAnalysisService; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.ResponseBody; + +import javax.annotation.Resource; +import java.util.List; +import java.util.Set; + +@Controller +@RequestMapping("/well") +public class WellDataController extends BaseController { + @Resource + private AbstractPermissionContext permissionService; + @Resource + private IDataAnalysisService dataAnalysisService; + + + /** + * 获取闸井设备数据 + */ + @RequestMapping(value = "/watchDataByWell", method = RequestMethod.GET) + @ResponseBody + public Object watchDataByWell(Long id) { + if (null == id) { + throw new ServiceException(CoreExceptionEnum.REQUEST_NULL); + } + SuccessResponseData resultData = new SuccessResponseData(); + resultData.setData(dataAnalysisService.getWatchDatas(id)); + + return resultData; + } + + /** + * 根据布防状态统计闸井数量接口 + */ + @RequestMapping(value = "/countByBfzt", method = RequestMethod.GET) + @ResponseBody + public Object countByBfzt() { + DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope(); + Set roleTipes = permissionService.getAuthService().getLoginUser().getRoleTips(); + List deptIds = null; + Boolean isApp = false; + if (roleTipes.contains("leader") || roleTipes.contains("member")) { + deptIds = permissionService.getDeptService().getIdsByPid(permissionService.getAuthService().getLoginUser().getDeptId(), null); + deptIds.add(permissionService.getAuthService().getLoginUser().getDeptId()); + isApp = true; + } else { + deptIds = dataScope.getDeptIds(); + isApp = false; + } + SuccessResponseData resultData = new SuccessResponseData(); + dataAnalysisService.getBfztCountData(deptIds, isApp); + resultData.setData(dataAnalysisService.getBfztCountData(deptIds, isApp)); + return resultData; + } + + /** + * 获取布防类型(APP用) + */ + @RequestMapping(value = "/bfType", method = RequestMethod.GET) + @ResponseBody + public Object bfType(Long id) { + if (null == id) { + throw new ServiceException(CoreExceptionEnum.REQUEST_NULL); + } + SuccessResponseData resultData = new SuccessResponseData(); + resultData.setData(dataAnalysisService.getWatchDatas(id)); + return resultData; + } + +} diff --git a/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/dao/DataAnalysisMapper.java b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/dao/DataAnalysisMapper.java new file mode 100644 index 0000000..149fb82 --- /dev/null +++ b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/dao/DataAnalysisMapper.java @@ -0,0 +1,48 @@ +package com.casic.missiles.modular.system.dao; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.*; +import com.casic.missiles.modular.system.model.BusWellInfo; +import com.casic.missiles.core.datascope.DataScope; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * 闸井信息表 Mapper 接口 + *

+ * + * @author stylefeng123 + * @since 2019-05-13 + */ +public interface DataAnalysisMapper extends BaseMapper { + + List getAlarmWellList(@Param("scope") DataScope dataScope, @Param("keywords") String keywords, @Param("wellType") String deviceType, @Param("deptid") String deptid); + + List getNotAlarmWellList(@Param("scope") DataScope dataScope, @Param("keywords") String keywords, @Param("wellType") String deviceType, @Param("deptid") String deptid); + + DeviceData wellcoverData(@Param("devcode") String devcode); + + DeviceData liquidData(@Param("devcode") String devcode); + + DeviceData harmfulgasData(@Param("devcode") String devcode); + + DeviceData gasData(@Param("devcode") String devcode); + + DeviceData temphumData(@Param("devcode") String devcode); + + DeviceData digData(@Param("devcode") String devcode); + + DeviceData noiseData(@Param("devcode") String devcode); + + DeviceData wellcoverlocaData(@Param("devcode") String devcode); + + DeviceData lgGasData(@Param("devcode") String devcode);//燃气液位 + + DeviceData lgLiquidData(@Param("devcode") String devcode);//燃气液位 + + + BfztCountDataDto bfztCountData(@Param("deptIds") List deptIds, @Param("isApp") Boolean isApp); +} diff --git a/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/dao/mapping/DataAnalysisMapper.xml b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/dao/mapping/DataAnalysisMapper.xml new file mode 100644 index 0000000..6d7edb3 --- /dev/null +++ b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/dao/mapping/DataAnalysisMapper.xml @@ -0,0 +1,170 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ID + AS id, WELL_CODE AS wellCode, WELL_NAME AS wellName, DEEP AS deep, COORDINATE_X AS coordinateX, COORDINATE_Y AS coordinateY, LAT_BAIDU AS latBaidu, LNG_BAIDU AS lngBaidu, LNG_GAODE AS lngGaode, LAT_GAODE AS latGaode, AREA AS area, POSITION AS position, DEPTID AS deptid, PHOTOS AS photos, NOTES AS notes, WELL_TYPE AS wellType, STAFF AS staff, TEL AS tel, TS AS ts, VALID AS valid, BFZT AS bfzt, RESPONSIBLE_DEPT AS responsibleDept + + + + ID + AS id, WELL_CODE AS wellCode, WELL_NAME AS wellName, DEEP AS deep, COORDINATE_X AS coordinateX, COORDINATE_Y AS coordinateY, LAT_BAIDU AS latBaidu, LNG_BAIDU AS lngBaidu, LNG_GAODE AS lngGaode, LAT_GAODE AS latGaode, AREA AS area, POSITION AS position, DEPTID AS deptid, PHOTOS AS photos, NOTES AS notes, WELL_TYPE AS wellType, STAFF AS staff, TEL AS tel, TS AS ts, VALID AS valid, BFZT AS bfzt,d1.simplename AS deptName,d2.id AS responsibleDept,d2.simplename AS responsibleDeptName + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/service/IDataAnalysisService.java b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/service/IDataAnalysisService.java new file mode 100644 index 0000000..69c8c60 --- /dev/null +++ b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/service/IDataAnalysisService.java @@ -0,0 +1,51 @@ +package com.casic.missiles.modular.system.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.modular.system.dto.BfztCountDataDto; +import com.casic.missiles.modular.system.dto.BusWellInfoDto; +import com.casic.missiles.modular.system.dto.DeviceDataDto; +import com.casic.missiles.modular.system.dto.WatchDataDto; +import com.casic.missiles.modular.system.model.BusWellInfo; + +import java.util.List; + +/** + * 数据统计服务接口 + * + * @author lwh + */ +public interface IDataAnalysisService extends IService { + /** + * 获取告警闸井列表 + * @param dataScope 数据权限 + * @param keywords 关键字 + * @param wellType 井列表 + * @param deptid 组织id + * @return + */ + List getAlarmWellList(DataScope dataScope, String keywords, String wellType, String deptid); + + /** + * 获取不告警井列表信息 + * @param dataScope 数据权限 + * @param keywords 关键字 + * @param wellType 井类型 + * @param deptid 组织id + * @return + */ + List getNotAlarmWellList(DataScope dataScope, String keywords, String wellType, String deptid); + + /** + * 设备数据查询接口 + * @param devTypename 设备类型 + * @param devcode 设备编码 + * @param status 设备状态 + * @return 设备监测数据 + */ + List getDeviceDatas(String devTypename, String devcode, String status); + List getWatchDatas(Long id); + + + BfztCountDataDto getBfztCountData(List deptIds, Boolean isApp); +} diff --git a/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/service/impl/IDataAnalysisServiceImpl.java b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/service/impl/IDataAnalysisServiceImpl.java new file mode 100644 index 0000000..288a828 --- /dev/null +++ b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/service/impl/IDataAnalysisServiceImpl.java @@ -0,0 +1,386 @@ +package com.casic.missiles.modular.system.service.impl; + +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.modular.system.dao.DataAnalysisMapper; +import com.casic.missiles.modular.system.dto.*; +import com.casic.missiles.modular.system.enmus.HarmfulGasBusiness; +import com.casic.missiles.modular.system.enmus.TemphumBusiness; +import com.casic.missiles.modular.system.model.BusWellInfo; +import com.casic.missiles.modular.system.service.IBusDeviceSupportService; +import com.casic.missiles.modular.system.service.IDataAnalysisService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import java.text.DateFormat; +import java.text.DecimalFormat; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.List; + +/** + * 数据统计分析 + * + * @author lwh + */ +@Slf4j +@Component +public class IDataAnalysisServiceImpl extends ServiceImpl implements IDataAnalysisService { + @Resource + private AbstractDictService dictService; + @Resource + private IBusDeviceSupportService deviceSupportService; + + @Override + public List getAlarmWellList(DataScope dataScope, String keywords, String wellType, String deptid) { + return this.baseMapper.getAlarmWellList(dataScope, keywords, wellType, deptid); + } + + @Override + public List getNotAlarmWellList(DataScope dataScope, String keywords, String wellType, String deptid) { + return this.baseMapper.getNotAlarmWellList(dataScope, keywords, wellType, deptid); + } + + @Override + public List getDeviceDatas(String devTypeName, String devcode, String status) { + List deviceDataDtoList = new ArrayList<>(); + DeviceDataDto deviceDataDto = new DeviceDataDto(); + DeviceData deviceData; + DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + switch (devTypeName) { + case "井盖状态监测仪": + deviceData = this.baseMapper.wellcoverData(devcode); + deviceDataDto.setTypeName("井盖状态"); + if (ObjectUtil.isNotEmpty(deviceData)) { + //井盖离线 + if ("0".equals(status)) { + deviceDataDto.setValue("离线"); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } else if ("心跳".equals(deviceData.getData())) { + deviceDataDto.setValue("井盖状态正常"); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } else { + deviceDataDto.setValue(deviceData.getData()); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } + } else { + deviceDataDto.setValue("无数据"); + } + deviceDataDtoList.add(deviceDataDto); + break; + + case "液位监测仪": + deviceData = this.baseMapper.liquidData(devcode); + if (ObjectUtil.isNotEmpty(deviceData)) { + deviceDataDto.setTypeName("井内水位"); + deviceDataDto.setValue(deviceData.getData() + "m"); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + deviceDataDtoList.add(deviceDataDto); + } + break; + + case "有害气体监测仪": + deviceData = this.baseMapper.harmfulgasData(devcode); + if (ObjectUtil.isNotEmpty(deviceData)) { + String[] harmfulGasDatas = deviceData.getData().split(","); + HarmfulGasBusiness[] harmfulGasBusinesses = HarmfulGasBusiness.values(); + for (int i = 0; i < harmfulGasDatas.length; i++) { + deviceDataDto = new DeviceDataDto(); + deviceDataDto.setTypeName(harmfulGasBusinesses[i].getDesc()); + deviceDataDto.setValue(harmfulGasDatas[i] + harmfulGasBusinesses[i].getUnit()); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + deviceDataDtoList.add((DeviceDataDto) deviceDataDto.clone()); + } + } + break; + case "燃气智能监测终端": + deviceData = this.baseMapper.gasData(devcode); + if (ObjectUtil.isNotEmpty(deviceData)) { + deviceDataDto.setTypeName("燃气浓度"); + deviceDataDto.setValue(deviceData.getData() + "%LEL"); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + deviceDataDtoList.add(deviceDataDto); + } + break; + + case "温湿度监测仪": + deviceData = this.baseMapper.temphumData(devcode); + if (ObjectUtil.isNotEmpty(deviceData)) { + String[] temphumDatas = deviceData.getData().split(","); + TemphumBusiness[] temphumBusinesses = TemphumBusiness.values(); + for (int i = 0; i < temphumDatas.length; i++) { + deviceDataDto = new DeviceDataDto(); + deviceDataDto.setTypeName(temphumBusinesses[i].getDesc()); + deviceDataDto.setValue(temphumDatas[i] + temphumBusinesses[i].getUnit()); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + deviceDataDtoList.add((DeviceDataDto) deviceDataDto.clone()); + } + } + break; + + case "开挖监测仪": + deviceData = this.baseMapper.digData(devcode); + if (ObjectUtil.isNotEmpty(deviceData)) { + deviceDataDto.setTypeName("开挖状态"); + deviceDataDto.setValue(deviceData.getData() + "mg"); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + deviceDataDtoList.add(deviceDataDto); + } + break; + + case "噪声记录仪": + deviceData = this.baseMapper.noiseData(devcode); + if (ObjectUtil.isNotEmpty(deviceData)) { + deviceDataDto.setTypeName("管线噪声"); + deviceDataDto.setValue(deviceData.getData() + "mg"); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + deviceDataDtoList.add(deviceDataDto); + } + break; + case "井盖定位监测仪": + deviceData = this.baseMapper.wellcoverlocaData(devcode); + if (ObjectUtil.isNotEmpty(deviceData)) { + deviceDataDto.setTypeName("井盖位置"); + deviceDataDto.setValue(deviceData.getData()); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + deviceDataDtoList.add(deviceDataDto); + } + break; + + case "燃气智能监测终端(一体化)": + deviceData = this.baseMapper.lgGasData(devcode); + deviceDataDto.setTypeName("燃气浓度"); + if (ObjectUtil.isNotEmpty(deviceData)) { + + Double dValue = Double.parseDouble(deviceData.getData()); + if (dValue <= 20.0) { + deviceDataDto.setValue(deviceData.getData() + "%LEL"); + } else { + DecimalFormat df = new DecimalFormat("0.00"); + dValue = dValue / 20.0; + deviceDataDto.setValue(df.format(dValue) + "%VOL"); + } + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } else { + deviceDataDto.setValue("无数据"); + } + deviceDataDtoList.add(deviceDataDto); + + deviceData = this.baseMapper.lgLiquidData(devcode); + deviceDataDto.setTypeName("井内水位"); + if (ObjectUtil.isNotEmpty(deviceData)) { + + deviceDataDto.setValue(deviceData.getData() + "m"); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } else { + deviceDataDto.setValue("无数据"); + } + deviceDataDtoList.add((DeviceDataDto) deviceDataDto.clone()); + break; + + default://未知设备 + log.info("未知设备!"); + break; + } + return deviceDataDtoList; + } + + @Override + public BfztCountDataDto getBfztCountData(List deptIds, Boolean isApp) { + return this.baseMapper.bfztCountData(deptIds, isApp); + } + + @Override + public List getWatchDatas(Long id) { + + List deviceInWellInfos = deviceSupportService.getDeviceInWellInfo(id); + List watchDataDtos = new ArrayList<>(); + + for (DeviceInWellInfo deviceInWellInfo : deviceInWellInfos) { + WatchDataDto watchDataDto = new WatchDataDto(); + watchDataDto.setDeviceId(deviceInWellInfo.getDeviceId()); + watchDataDto.setDevcode(deviceInWellInfo.getDevcode()); + watchDataDto.setInstallDate(deviceInWellInfo.getInstallDate()); + watchDataDto.setOnlineState(deviceInWellInfo.getOnlineState()); + watchDataDto.setOnlineStateName(dictService.getDictNameByCode("onlineStatus", deviceInWellInfo.getOnlineState())); + + DeviceData deviceData; + DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + + switch (deviceInWellInfo.getTypeName()) { + case "井盖状态监测仪": + deviceData = this.baseMapper.wellcoverData(deviceInWellInfo.getDevcode()); + watchDataDto.setWatchType("井盖状态"); + watchDataDto.setType("1"); + if (ObjectUtil.isNotEmpty(deviceData)) { + //井盖离线 + if ("0".equals(watchDataDto.getOnlineState())) { + watchDataDto.setValue("离线"); + watchDataDto.setData("离线"); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } else if ("心跳".equals(deviceData.getData())) { + watchDataDto.setValue("井盖状态正常"); + watchDataDto.setData("井盖状态正常"); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } else { + watchDataDto.setValue(deviceData.getData()); + watchDataDto.setData(deviceData.getData()); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } + } else { + watchDataDto.setValue("无数据"); + watchDataDto.setData("无数据"); + } + watchDataDtos.add(watchDataDto); + break; + + case "液位监测仪": + deviceData = this.baseMapper.liquidData(deviceInWellInfo.getDevcode()); + if (ObjectUtil.isNotEmpty(deviceData)) { + watchDataDto.setWatchType("井内水位"); + watchDataDto.setType("2"); + + watchDataDto.setValue(deviceData.getData() + "m"); + watchDataDto.setData(deviceData.getData() + "m"); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + watchDataDtos.add(watchDataDto); + } + break; + + case "有害气体监测仪": + deviceData = this.baseMapper.harmfulgasData(deviceInWellInfo.getDevcode()); + if (ObjectUtil.isNotEmpty(deviceData)) { + String[] harmfulGasDatas = deviceData.getData().split(","); + HarmfulGasBusiness[] harmfulGasBusinesses = HarmfulGasBusiness.values(); + + for (int i = 0; i < harmfulGasDatas.length; i++) { + watchDataDto.setWatchType(harmfulGasBusinesses[i].getDesc()); + watchDataDto.setType("3"); + watchDataDto.setValue(harmfulGasDatas[i] + harmfulGasBusinesses[i].getUnit()); + watchDataDto.setData(harmfulGasDatas[i] + harmfulGasBusinesses[i].getUnit()); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + watchDataDtos.add((WatchDataDto) watchDataDto.clone()); + } + } + break; + + case "燃气智能监测终端": + deviceData = this.baseMapper.gasData(deviceInWellInfo.getDevcode()); + if (ObjectUtil.isNotEmpty(deviceData)) { + watchDataDto.setWatchType("燃气浓度"); + watchDataDto.setType("4"); + + watchDataDto.setValue(deviceData.getData() + "%LEL"); + watchDataDto.setData(deviceData.getData() + "%LEL"); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + watchDataDtos.add(watchDataDto); + } + break; + + case "温湿度监测仪": + deviceData = this.baseMapper.temphumData(deviceInWellInfo.getDevcode()); + if (ObjectUtil.isNotEmpty(deviceData)) { + String[] temphumDatas = deviceData.getData().split(","); + TemphumBusiness[] temphumBusinesses = TemphumBusiness.values(); + + for (int i = 0; i < temphumDatas.length; i++) { + watchDataDto.setWatchType(temphumBusinesses[i].getDesc()); + watchDataDto.setType("5"); + watchDataDto.setValue(temphumDatas[i] + temphumBusinesses[i].getUnit()); + watchDataDto.setData(temphumDatas[i] + temphumBusinesses[i].getUnit()); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + watchDataDtos.add((WatchDataDto) watchDataDto.clone()); + } + } + break; + + case "开挖监测仪": + deviceData = this.baseMapper.digData(deviceInWellInfo.getDevcode()); + if (ObjectUtil.isNotEmpty(deviceData)) { + watchDataDto.setWatchType("开挖状态"); + watchDataDto.setType("6"); + + watchDataDto.setValue(deviceData.getData() + "mg"); + watchDataDto.setData(deviceData.getData() + "mg"); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + watchDataDtos.add(watchDataDto); + } + break; + + case "噪声记录仪": + deviceData = this.baseMapper.noiseData(deviceInWellInfo.getDevcode()); + if (ObjectUtil.isNotEmpty(deviceData)) { + watchDataDto.setWatchType("管线噪声"); + watchDataDto.setType("8"); + + watchDataDto.setValue(deviceData.getData() + "mg"); + watchDataDto.setData(deviceData.getData() + "mg"); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + watchDataDtos.add(watchDataDto); + } + break; + + case "井盖定位监测仪": + deviceData = this.baseMapper.wellcoverlocaData(deviceInWellInfo.getDevcode()); + if (ObjectUtil.isNotEmpty(deviceData)) { + watchDataDto.setWatchType("井盖位置"); + watchDataDto.setType("7"); + + watchDataDto.setValue(deviceData.getData()); + watchDataDto.setData(deviceData.getData()); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + watchDataDtos.add(watchDataDto); + } + break; + + case "燃气智能监测终端(一体化)": + deviceData = this.baseMapper.lgGasData(deviceInWellInfo.getDevcode()); + watchDataDto.setWatchType("燃气浓度"); + watchDataDto.setType("10"); + if (ObjectUtil.isNotEmpty(deviceData)) { + + Double dValue = Double.parseDouble(deviceData.getData()); + if (dValue <= 20.0) { + watchDataDto.setValue(deviceData.getData() + "%LEL"); + watchDataDto.setData(deviceData.getData() + "%LEL"); + } else { + DecimalFormat df = new DecimalFormat("0.00"); + dValue = dValue / 20.0; + watchDataDto.setValue(df.format(dValue) + "%VOL"); + watchDataDto.setData(df.format(dValue) + "%VOL"); + } + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } else { + watchDataDto.setValue("无数据"); + watchDataDto.setData("无数据"); + } + watchDataDtos.add((WatchDataDto) watchDataDto.clone()); + + deviceData = this.baseMapper.lgLiquidData(deviceInWellInfo.getDevcode()); + watchDataDto.setWatchType("井内水位"); + watchDataDto.setType("10"); + if (ObjectUtil.isNotEmpty(deviceData)) { + + watchDataDto.setValue(deviceData.getData() + "m"); + watchDataDto.setData(deviceData.getData() + "m"); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } else { + watchDataDto.setValue("无数据"); + watchDataDto.setData("无数据"); + } + watchDataDtos.add((WatchDataDto) watchDataDto.clone()); + break; + + default://未知设备 + log.info("未知设备!"); + break; + } + } + + return watchDataDtos; + } + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java index d45eaf7..b9ca243 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java @@ -21,7 +21,7 @@ public interface DeviceMapper extends BaseMapper { List selectDataScopePage(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("deviceType") String deviceType, @Param("deptid") String deptid, @Param("beginTime") String beginTime, @Param("endTime") String endTime, @Param("keywords") String keywords,@Param("isOnline") String isOnline); - + List getDeviceList(@Param("scope") DataScope dataScope); DeviceWellDto selectWellIdByCode(@Param("wellCode") String wellCode); DeviceConcentratorDto selectDeviceConcentorByCode(@Param("concenCode") String concenCode); @@ -61,4 +61,13 @@ List> selectTempDataList(@Param("dataScope")DataScope dataScope, @Param("wellCode")String wellCode, @Param("beginTime")String beginTime, @Param("endTime")String endTime); List> selectHarmfulDataList(@Param("dataScope")DataScope dataScope, @Param("wellCode")String wellCode, @Param("beginTime")String beginTime, @Param("endTime")String endTime); + + /** + * 查询设备信息 + * @param id 设备主键 + * @return + */ + DeviceInfoDto selectDeviceById(@Param("id") Long id); + + List getDeviceInWellInfo(@Param("id") Long id); } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml index fb6f4f4..c956057 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml @@ -902,5 +902,64 @@ ) t1 ORDER BY uptime asc + + + + d.ID AS deviceId, DEVCODE AS devcode, INSTALL_DATE AS installDate, ONLINE_STATE AS onlineState, t.TYPE_NAME AS typeName + + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java b/casic-device/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java index 72c60f0..090415c 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java @@ -17,7 +17,7 @@ * @author lwh123 * @since 2019-05-23 */ -public interface IDeviceService extends IService { +public interface IDeviceService extends IService{ /** * 根据条件分页查询设备列表 diff --git a/casic-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java index 0b089f3..de9111e 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java @@ -39,7 +39,7 @@ * @since 2019-05-23 */ @Service -public class DeviceServiceImpl extends ServiceImpl implements IDeviceService { +public class DeviceServiceImpl extends ServiceImpl implements IDeviceService,IBusDeviceSupportService { @Autowired private IDeviceTypeService deviceTypeService; @@ -514,4 +514,19 @@ } return list; } + + @Override + public List getDeviceList(DataScope dataScope) { + return this.baseMapper.getDeviceList(dataScope); + } + + @Override + public DeviceInfoDto selectDeviceById(Long id) { + return this.baseMapper.selectDeviceById(id); + } + + @Override + public List getDeviceInWellInfo(Long id) { + return this.baseMapper.getDeviceInWellInfo(id); + } } diff --git a/casic-server-support/src/main/java/com/casic/missiles/modular/system/enmus/HarmfulGasBusiness.java b/casic-server-support/src/main/java/com/casic/missiles/modular/system/enmus/HarmfulGasBusiness.java new file mode 100644 index 0000000..d3bfabc --- /dev/null +++ b/casic-server-support/src/main/java/com/casic/missiles/modular/system/enmus/HarmfulGasBusiness.java @@ -0,0 +1,44 @@ +package com.casic.missiles.modular.system.enmus; + +public enum HarmfulGasBusiness { + + CO(0, "CO浓度","ppm"), + CH4(1, "CH4浓度","%VOL"), + H2S(2, "H2S浓度","ppm"), + O2(3, "O2浓度","%VOL"); + //SWITCH(4, "液位开关",""); + + private int code; + private String desc; + private String unit; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public String getDesc() { + return desc; + } + + public void setDesc(String desc) { + this.desc = desc; + } + + public String getUnit() { + return unit; + } + + public void setUnit(String unit) { + this.unit = unit; + } + + HarmfulGasBusiness(int code, String desc, String unit) { + this.code = code; + this.desc = desc; + this.unit = unit; + } +} diff --git a/casic-server-support/src/main/java/com/casic/missiles/modular/system/enmus/SluicewellExportEnum.java b/casic-server-support/src/main/java/com/casic/missiles/modular/system/enmus/SluicewellExportEnum.java new file mode 100644 index 0000000..d451598 --- /dev/null +++ b/casic-server-support/src/main/java/com/casic/missiles/modular/system/enmus/SluicewellExportEnum.java @@ -0,0 +1,59 @@ +package com.casic.missiles.modular.system.enmus; + + + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +public enum SluicewellExportEnum { + + DEVICE_EXPORT( + new ArrayList() {{ +// add(new Header("井编号", "wellCode")); +// add(new Header("井名称", "wellName")); +// add(new Header("井深", "deep")); +// add(new Header("详细地址", "position")); +// add(new Header("井类型", "wellTypeName")); +// add(new Header("权属单位", "deptName")); +// add(new Header("设备数量", "deviceCount")); +// add(new Header("布防状态", "bfztName")); + }}, "sluicewell.xlsx", "井数据导出"); + + //SLUICEWELLDATA_EXPORT("sluicewell.xlsx", "sluicewell.xlsx", "闸井数据"); + + /** + * 导出模板相对路径 + */ + private List headers; + /** + * 下载文件名 + */ + private String fileName; + /** + * 描述信息 + */ + private String description; + + SluicewellExportEnum(List headers, String fileName, String description) { + this.headers = headers; + this.fileName = fileName; + this.description = description; + } + + public List getHeaders() { + return headers; + } + + public String getFileName() { + return fileName; + } + + public String getDescription() { + return description; + } + + public Map getCustomColumnStyle() { + return null; + } +} diff --git a/casic-server-support/src/main/java/com/casic/missiles/modular/system/enmus/TemphumBusiness.java b/casic-server-support/src/main/java/com/casic/missiles/modular/system/enmus/TemphumBusiness.java new file mode 100644 index 0000000..27d15e2 --- /dev/null +++ b/casic-server-support/src/main/java/com/casic/missiles/modular/system/enmus/TemphumBusiness.java @@ -0,0 +1,41 @@ +package com.casic.missiles.modular.system.enmus; + +public enum TemphumBusiness { + + TEMP(0, "井内温度","℃"), + HUM(1, "井内湿度","%RH"); + + private int code; + private String desc; + private String unit; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public String getDesc() { + return desc; + } + + public void setDesc(String desc) { + this.desc = desc; + } + + public String getUnit() { + return unit; + } + + public void setUnit(String unit) { + this.unit = unit; + } + + TemphumBusiness(int code, String desc, String unit) { + this.code = code; + this.desc = desc; + this.unit = unit; + } +} diff --git a/casic-server-support/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceSupportService.java b/casic-server-support/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceSupportService.java new file mode 100644 index 0000000..0b6fd75 --- /dev/null +++ b/casic-server-support/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceSupportService.java @@ -0,0 +1,42 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.model.application.service.IRepositorySupportService; +import com.casic.missiles.modular.system.dto.DeviceInWellInfo; +import com.casic.missiles.modular.system.dto.DeviceInfoDto; +import com.casic.missiles.modular.system.model.Device; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 设备支撑 + * + * @author lwh + */ +public interface IBusDeviceSupportService { + /** + * 获取设备列表 + * + * @param dataScope 数据权限 + * @return 设备列表 + */ + List getDeviceList(DataScope dataScope); + + + /** + * 查询设备信息 + * + * @param id 设备主键 + * @return 设备信息 + */ + DeviceInfoDto selectDeviceById(Long id); + + /** + * 查询井下设备信息 + * + * @param id 井主键 + * @return 井下设备信息 + */ + List getDeviceInWellInfo(Long id); +} diff --git a/casic-server-support/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoSupportService.java b/casic-server-support/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoSupportService.java new file mode 100644 index 0000000..e34c98e --- /dev/null +++ b/casic-server-support/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoSupportService.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.model.application.service.IRepositorySupportService; +import com.casic.missiles.modular.system.dto.BusWellInfoDto; +import com.casic.missiles.modular.system.model.BusWellInfo; + +import java.util.List; + +/** + * 闸井服务支撑接口 + * + * @author lwh + */ +public interface IBusWellInfoSupportService { + /** + * 获取井列表接口 + * + * @param dataScope 数据权限 + * @param keywords 关键字 + * @param wellType 井类型 + * @param deptid 组织ID + * @return + */ + List getWellList(DataScope dataScope, String keywords, String wellType, String deptid); + + BusWellInfo getById(Long id); +} diff --git a/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/controller/BusMapOverviewController.java b/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/controller/BusMapOverviewController.java deleted file mode 100644 index 078eaf6..0000000 --- a/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/controller/BusMapOverviewController.java +++ /dev/null @@ -1,178 +0,0 @@ -package com.casic.missiles.modular.system.controller; - -import cn.hutool.core.collection.CollectionUtil; -import com.casic.missiles.core.application.context.AbstractPermissionContext; -import com.casic.missiles.core.application.service.AbstractDictService; -import com.casic.missiles.core.base.controller.BaseController; -import com.casic.missiles.core.datascope.DataScope; -import com.casic.missiles.model.exception.ServiceException; -import com.casic.missiles.model.exception.enums.CoreExceptionEnum; -import com.casic.missiles.model.response.ResponseData; -import com.casic.missiles.model.response.SuccessResponseData; -import com.casic.missiles.modular.system.dto.BusWellInfoDto; -import com.casic.missiles.modular.system.dto.DeviceDataDto; -import com.casic.missiles.modular.system.dto.DeviceInfoDto; -import com.casic.missiles.modular.system.dto.WatchDataDto; -import com.casic.missiles.modular.system.model.BusWellInfo; -import com.casic.missiles.modular.system.service.IBusWellInfoService; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestMethod; -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.bind.annotation.ResponseBody; - -import javax.annotation.Resource; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - -/** - * 地图总览模块的controller - * - * @author tanyue - * @Date 2019-05-13 19:20:29 - */ -@Controller -@RequestMapping("/overview") -public class BusMapOverviewController extends BaseController { - - @Resource - private AbstractPermissionContext permissionService; - @Resource - private AbstractDictService dictService; - @Autowired - private IBusWellInfoService busWellInfoService; - - /** - * 获取列表 - */ - @RequestMapping(value = "/wellList") - @ResponseBody - public Object wellList(@RequestParam(required = false) String keywords, - @RequestParam(required = false) String wellType, - @RequestParam(required = false) String deptid, - @RequestParam(required = false) String isAlarm) { - - DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope(); - List wellList = new ArrayList(); - - if (null == isAlarm || isAlarm.equals("") == true) { - // isAlarm参数为空,查询所有的闸井 - - // 查询并添加当前部门的闸井 - List myList = busWellInfoService.getWellList(dataScope, keywords, wellType, deptid); - if (null != myList && myList.isEmpty() == false) { - wellList.addAll(myList); - } - - /** - * 不需要了,由dataScope控制权限 - // 查询并添加下级部门的闸井 - List subDepts = permissionService.getSubDepts(deptid,null); - if (null != subDepts && subDepts.isEmpty() == false) { - for (Long subDeptId : subDepts) { - List subList = busWellInfoService.getWellList(dataScope, keywords, wellType, String.valueOf(subDeptId)); - if (null != subList && subList.isEmpty() == false) { - wellList.addAll(subList); - } - } - } - */ - } else if (isAlarm.equals("1")) { - // isAlarm = 1 查询所有报警状态的闸井 - wellList = busWellInfoService.getAlarmWellList(dataScope, keywords, wellType, deptid); - } else { - // isAlarm = 0 查询所有不是报警状态的闸井 - wellList = busWellInfoService.getNotAlarmWellList(dataScope, keywords, wellType, deptid); - } - - - return ResponseData.success(wellList); - } - - /** - * 获取设备列表 - */ - @RequestMapping(value = "/deviceList") - @ResponseBody - public Object deviceList() { - - DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope(); - List wellList = new ArrayList(); - wellList = busWellInfoService.getDeviceList(dataScope); - return ResponseData.success(wellList); - } - - /** - * 获取设备详情 - */ - @RequestMapping(value = "/deviceDetail", method = RequestMethod.GET) - @ResponseBody - public Object deviceDetail(@RequestParam(required = true) Long id) { - if (null == id) { - throw new ServiceException(CoreExceptionEnum.REQUEST_NULL); - } - DeviceInfoDto deviceInfoDto = busWellInfoService.selectDeviceById(id); - SuccessResponseData successResult = new SuccessResponseData(); - if (null == deviceInfoDto) { - successResult.setCode(200); - successResult.setMessage("success"); - successResult.setData(new HashMap()); - } else { - // 设置最新的监测数据 - List deviceDataDtoList = busWellInfoService. - getDeviceDatas(deviceInfoDto.getDeviceTypeName(), deviceInfoDto.getDevcode(), deviceInfoDto.getOnlineState()); - if (CollectionUtil.isNotEmpty(deviceDataDtoList)) { - deviceInfoDto.setRealtimeData(deviceDataDtoList); - } - successResult.setMessage("success"); - successResult.setData(deviceInfoDto); - } - return successResult; - } - - - /** - * 获取闸井详情 - */ - @RequestMapping(value = "/wellInfo", method = RequestMethod.GET) - @ResponseBody - public Object wellInfo(@RequestParam(required = true) Long id) { - if (null == id) { - throw new ServiceException(CoreExceptionEnum.REQUEST_NULL); - } - - BusWellInfo busWellInfo = busWellInfoService.getById(id); - SuccessResponseData successResult = new SuccessResponseData(); - if (null == busWellInfo) { - successResult.setCode(200); - successResult.setMessage("success"); - successResult.setData(new HashMap()); - } else { - BusWellInfoDto busWellInfoDto = new BusWellInfoDto(); - busWellInfoDto.convertBusWellInfo(busWellInfo); - - // 设置字典值 - busWellInfoDto.setBfztName(dictService.getDictNameByCode("bfzt", busWellInfo.getBfzt())); - busWellInfoDto.setWellTypeName(dictService.getDictNameByCode("sluicewellType", busWellInfo.getWellType())); - busWellInfoDto.setDeptName(permissionService.getDeptService().getDeptName(busWellInfo.getDeptid())); - - // 设置最新的监测数据 - List watchDataDtos = busWellInfoService.getWatchDatas(id); - if (null != watchDataDtos && watchDataDtos.isEmpty() == false) { - for (WatchDataDto watchDataDto : watchDataDtos) { - watchDataDto.setValue(watchDataDto.getData()); - } - } - - busWellInfoDto.setWatchData(watchDataDtos); - - successResult.setMessage("success"); - successResult.setData(busWellInfoDto.toMap()); - } - - return successResult; - } - -} diff --git a/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/controller/BusMapOverviewController.java b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/controller/BusMapOverviewController.java new file mode 100644 index 0000000..9d9f43c --- /dev/null +++ b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/controller/BusMapOverviewController.java @@ -0,0 +1,182 @@ +package com.casic.missiles.modular.system.controller; + +import cn.hutool.core.collection.CollectionUtil; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.model.exception.ServiceException; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.model.response.SuccessResponseData; +import com.casic.missiles.modular.system.dto.BusWellInfoDto; +import com.casic.missiles.modular.system.dto.DeviceDataDto; +import com.casic.missiles.modular.system.dto.DeviceInfoDto; +import com.casic.missiles.modular.system.dto.WatchDataDto; +import com.casic.missiles.modular.system.model.BusWellInfo; +import com.casic.missiles.modular.system.service.IBusDeviceSupportService; +import com.casic.missiles.modular.system.service.IBusWellInfoSupportService; +import com.casic.missiles.modular.system.service.IDataAnalysisService; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.ResponseBody; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; + +/** + * 地图总览模块的controller + * + * @author tanyue + * @Date 2019-05-13 19:20:29 + */ +@Controller +@RequestMapping("/overview") +public class BusMapOverviewController extends BaseController { + + @Resource + private AbstractPermissionContext permissionService; + @Resource + private AbstractDictService dictService; + @Resource + private IBusWellInfoSupportService busWellInfoService; + @Resource + private IDataAnalysisService dataAnalysisService; + @Resource + private IBusDeviceSupportService busDeviceSupportService; + + /** + * 获取列表 + */ + @RequestMapping(value = "/wellList") + @ResponseBody + public Object wellList(@RequestParam(required = false) String keywords, + @RequestParam(required = false) String wellType, + @RequestParam(required = false) String deptid, + @RequestParam(required = false) String isAlarm) { + + DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope(); + List wellList = new ArrayList(); + + if (null == isAlarm || isAlarm.equals("") == true) { + // isAlarm参数为空,查询所有的闸井 + + // 查询并添加当前部门的闸井 + List myList = busWellInfoService.getWellList(dataScope, keywords, wellType, deptid); + if (null != myList && myList.isEmpty() == false) { + wellList.addAll(myList); + } + + /** + * 不需要了,由dataScope控制权限 + // 查询并添加下级部门的闸井 + List subDepts = permissionService.getSubDepts(deptid,null); + if (null != subDepts && subDepts.isEmpty() == false) { + for (Long subDeptId : subDepts) { + List subList = busWellInfoService.getWellList(dataScope, keywords, wellType, String.valueOf(subDeptId)); + if (null != subList && subList.isEmpty() == false) { + wellList.addAll(subList); + } + } + } + */ + } else if (isAlarm.equals("1")) { + // isAlarm = 1 查询所有报警状态的闸井 + wellList = dataAnalysisService.getAlarmWellList(dataScope, keywords, wellType, deptid); + } else { + // isAlarm = 0 查询所有不是报警状态的闸井 + wellList = dataAnalysisService.getNotAlarmWellList(dataScope, keywords, wellType, deptid); + } + + + return ResponseData.success(wellList); + } + + /** + * 获取设备列表 + */ + @RequestMapping(value = "/deviceList") + @ResponseBody + public Object deviceList() { + + DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope(); + List wellList = new ArrayList(); + wellList = busDeviceSupportService.getDeviceList(dataScope); + return ResponseData.success(wellList); + } + + /** + * 获取设备详情 + */ + @RequestMapping(value = "/deviceDetail", method = RequestMethod.GET) + @ResponseBody + public Object deviceDetail(@RequestParam(required = true) Long id) { + if (null == id) { + throw new ServiceException(CoreExceptionEnum.REQUEST_NULL); + } + DeviceInfoDto deviceInfoDto = busDeviceSupportService.selectDeviceById(id); + SuccessResponseData successResult = new SuccessResponseData(); + if (null == deviceInfoDto) { + successResult.setCode(200); + successResult.setMessage("success"); + successResult.setData(new HashMap()); + } else { + // 设置最新的监测数据 + List deviceDataDtoList = dataAnalysisService.getDeviceDatas(deviceInfoDto.getDeviceTypeName(), deviceInfoDto.getDevcode(), deviceInfoDto.getOnlineState()); + if (CollectionUtil.isNotEmpty(deviceDataDtoList)) { + deviceInfoDto.setRealtimeData(deviceDataDtoList); + } + successResult.setMessage("success"); + successResult.setData(deviceInfoDto); + } + return successResult; + } + + + /** + * 获取闸井详情 + */ + @RequestMapping(value = "/wellInfo", method = RequestMethod.GET) + @ResponseBody + public Object wellInfo(@RequestParam(required = true) Long id) { + if (null == id) { + throw new ServiceException(CoreExceptionEnum.REQUEST_NULL); + } + + BusWellInfo busWellInfo = busWellInfoService.getById(id); + SuccessResponseData successResult = new SuccessResponseData(); + if (null == busWellInfo) { + successResult.setCode(200); + successResult.setMessage("success"); + successResult.setData(new HashMap()); + } else { + BusWellInfoDto busWellInfoDto = new BusWellInfoDto(); + busWellInfoDto.convertBusWellInfo(busWellInfo); + + // 设置字典值 + busWellInfoDto.setBfztName(dictService.getDictNameByCode("bfzt", busWellInfo.getBfzt())); + busWellInfoDto.setWellTypeName(dictService.getDictNameByCode("sluicewellType", busWellInfo.getWellType())); + busWellInfoDto.setDeptName(permissionService.getDeptService().getDeptName(busWellInfo.getDeptid())); + + // 设置最新的监测数据 + List watchDataDtos = dataAnalysisService.getWatchDatas(id); + if (null != watchDataDtos && watchDataDtos.isEmpty() == false) { + for (WatchDataDto watchDataDto : watchDataDtos) { + watchDataDto.setValue(watchDataDto.getData()); + } + } + + busWellInfoDto.setWatchData(watchDataDtos); + + successResult.setMessage("success"); + successResult.setData(busWellInfoDto.toMap()); + } + return successResult; + } + + +} diff --git a/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/controller/WellDataController.java b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/controller/WellDataController.java new file mode 100644 index 0000000..c33ec7d --- /dev/null +++ b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/controller/WellDataController.java @@ -0,0 +1,81 @@ +package com.casic.missiles.modular.system.controller; + +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.model.exception.ServiceException; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.model.response.SuccessResponseData; +import com.casic.missiles.modular.system.service.IDataAnalysisService; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.ResponseBody; + +import javax.annotation.Resource; +import java.util.List; +import java.util.Set; + +@Controller +@RequestMapping("/well") +public class WellDataController extends BaseController { + @Resource + private AbstractPermissionContext permissionService; + @Resource + private IDataAnalysisService dataAnalysisService; + + + /** + * 获取闸井设备数据 + */ + @RequestMapping(value = "/watchDataByWell", method = RequestMethod.GET) + @ResponseBody + public Object watchDataByWell(Long id) { + if (null == id) { + throw new ServiceException(CoreExceptionEnum.REQUEST_NULL); + } + SuccessResponseData resultData = new SuccessResponseData(); + resultData.setData(dataAnalysisService.getWatchDatas(id)); + + return resultData; + } + + /** + * 根据布防状态统计闸井数量接口 + */ + @RequestMapping(value = "/countByBfzt", method = RequestMethod.GET) + @ResponseBody + public Object countByBfzt() { + DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope(); + Set roleTipes = permissionService.getAuthService().getLoginUser().getRoleTips(); + List deptIds = null; + Boolean isApp = false; + if (roleTipes.contains("leader") || roleTipes.contains("member")) { + deptIds = permissionService.getDeptService().getIdsByPid(permissionService.getAuthService().getLoginUser().getDeptId(), null); + deptIds.add(permissionService.getAuthService().getLoginUser().getDeptId()); + isApp = true; + } else { + deptIds = dataScope.getDeptIds(); + isApp = false; + } + SuccessResponseData resultData = new SuccessResponseData(); + dataAnalysisService.getBfztCountData(deptIds, isApp); + resultData.setData(dataAnalysisService.getBfztCountData(deptIds, isApp)); + return resultData; + } + + /** + * 获取布防类型(APP用) + */ + @RequestMapping(value = "/bfType", method = RequestMethod.GET) + @ResponseBody + public Object bfType(Long id) { + if (null == id) { + throw new ServiceException(CoreExceptionEnum.REQUEST_NULL); + } + SuccessResponseData resultData = new SuccessResponseData(); + resultData.setData(dataAnalysisService.getWatchDatas(id)); + return resultData; + } + +} diff --git a/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/dao/DataAnalysisMapper.java b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/dao/DataAnalysisMapper.java new file mode 100644 index 0000000..149fb82 --- /dev/null +++ b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/dao/DataAnalysisMapper.java @@ -0,0 +1,48 @@ +package com.casic.missiles.modular.system.dao; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.*; +import com.casic.missiles.modular.system.model.BusWellInfo; +import com.casic.missiles.core.datascope.DataScope; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * 闸井信息表 Mapper 接口 + *

+ * + * @author stylefeng123 + * @since 2019-05-13 + */ +public interface DataAnalysisMapper extends BaseMapper { + + List getAlarmWellList(@Param("scope") DataScope dataScope, @Param("keywords") String keywords, @Param("wellType") String deviceType, @Param("deptid") String deptid); + + List getNotAlarmWellList(@Param("scope") DataScope dataScope, @Param("keywords") String keywords, @Param("wellType") String deviceType, @Param("deptid") String deptid); + + DeviceData wellcoverData(@Param("devcode") String devcode); + + DeviceData liquidData(@Param("devcode") String devcode); + + DeviceData harmfulgasData(@Param("devcode") String devcode); + + DeviceData gasData(@Param("devcode") String devcode); + + DeviceData temphumData(@Param("devcode") String devcode); + + DeviceData digData(@Param("devcode") String devcode); + + DeviceData noiseData(@Param("devcode") String devcode); + + DeviceData wellcoverlocaData(@Param("devcode") String devcode); + + DeviceData lgGasData(@Param("devcode") String devcode);//燃气液位 + + DeviceData lgLiquidData(@Param("devcode") String devcode);//燃气液位 + + + BfztCountDataDto bfztCountData(@Param("deptIds") List deptIds, @Param("isApp") Boolean isApp); +} diff --git a/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/dao/mapping/DataAnalysisMapper.xml b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/dao/mapping/DataAnalysisMapper.xml new file mode 100644 index 0000000..6d7edb3 --- /dev/null +++ b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/dao/mapping/DataAnalysisMapper.xml @@ -0,0 +1,170 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ID + AS id, WELL_CODE AS wellCode, WELL_NAME AS wellName, DEEP AS deep, COORDINATE_X AS coordinateX, COORDINATE_Y AS coordinateY, LAT_BAIDU AS latBaidu, LNG_BAIDU AS lngBaidu, LNG_GAODE AS lngGaode, LAT_GAODE AS latGaode, AREA AS area, POSITION AS position, DEPTID AS deptid, PHOTOS AS photos, NOTES AS notes, WELL_TYPE AS wellType, STAFF AS staff, TEL AS tel, TS AS ts, VALID AS valid, BFZT AS bfzt, RESPONSIBLE_DEPT AS responsibleDept + + + + ID + AS id, WELL_CODE AS wellCode, WELL_NAME AS wellName, DEEP AS deep, COORDINATE_X AS coordinateX, COORDINATE_Y AS coordinateY, LAT_BAIDU AS latBaidu, LNG_BAIDU AS lngBaidu, LNG_GAODE AS lngGaode, LAT_GAODE AS latGaode, AREA AS area, POSITION AS position, DEPTID AS deptid, PHOTOS AS photos, NOTES AS notes, WELL_TYPE AS wellType, STAFF AS staff, TEL AS tel, TS AS ts, VALID AS valid, BFZT AS bfzt,d1.simplename AS deptName,d2.id AS responsibleDept,d2.simplename AS responsibleDeptName + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/service/IDataAnalysisService.java b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/service/IDataAnalysisService.java new file mode 100644 index 0000000..69c8c60 --- /dev/null +++ b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/service/IDataAnalysisService.java @@ -0,0 +1,51 @@ +package com.casic.missiles.modular.system.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.modular.system.dto.BfztCountDataDto; +import com.casic.missiles.modular.system.dto.BusWellInfoDto; +import com.casic.missiles.modular.system.dto.DeviceDataDto; +import com.casic.missiles.modular.system.dto.WatchDataDto; +import com.casic.missiles.modular.system.model.BusWellInfo; + +import java.util.List; + +/** + * 数据统计服务接口 + * + * @author lwh + */ +public interface IDataAnalysisService extends IService { + /** + * 获取告警闸井列表 + * @param dataScope 数据权限 + * @param keywords 关键字 + * @param wellType 井列表 + * @param deptid 组织id + * @return + */ + List getAlarmWellList(DataScope dataScope, String keywords, String wellType, String deptid); + + /** + * 获取不告警井列表信息 + * @param dataScope 数据权限 + * @param keywords 关键字 + * @param wellType 井类型 + * @param deptid 组织id + * @return + */ + List getNotAlarmWellList(DataScope dataScope, String keywords, String wellType, String deptid); + + /** + * 设备数据查询接口 + * @param devTypename 设备类型 + * @param devcode 设备编码 + * @param status 设备状态 + * @return 设备监测数据 + */ + List getDeviceDatas(String devTypename, String devcode, String status); + List getWatchDatas(Long id); + + + BfztCountDataDto getBfztCountData(List deptIds, Boolean isApp); +} diff --git a/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/service/impl/IDataAnalysisServiceImpl.java b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/service/impl/IDataAnalysisServiceImpl.java new file mode 100644 index 0000000..288a828 --- /dev/null +++ b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/service/impl/IDataAnalysisServiceImpl.java @@ -0,0 +1,386 @@ +package com.casic.missiles.modular.system.service.impl; + +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.modular.system.dao.DataAnalysisMapper; +import com.casic.missiles.modular.system.dto.*; +import com.casic.missiles.modular.system.enmus.HarmfulGasBusiness; +import com.casic.missiles.modular.system.enmus.TemphumBusiness; +import com.casic.missiles.modular.system.model.BusWellInfo; +import com.casic.missiles.modular.system.service.IBusDeviceSupportService; +import com.casic.missiles.modular.system.service.IDataAnalysisService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import java.text.DateFormat; +import java.text.DecimalFormat; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.List; + +/** + * 数据统计分析 + * + * @author lwh + */ +@Slf4j +@Component +public class IDataAnalysisServiceImpl extends ServiceImpl implements IDataAnalysisService { + @Resource + private AbstractDictService dictService; + @Resource + private IBusDeviceSupportService deviceSupportService; + + @Override + public List getAlarmWellList(DataScope dataScope, String keywords, String wellType, String deptid) { + return this.baseMapper.getAlarmWellList(dataScope, keywords, wellType, deptid); + } + + @Override + public List getNotAlarmWellList(DataScope dataScope, String keywords, String wellType, String deptid) { + return this.baseMapper.getNotAlarmWellList(dataScope, keywords, wellType, deptid); + } + + @Override + public List getDeviceDatas(String devTypeName, String devcode, String status) { + List deviceDataDtoList = new ArrayList<>(); + DeviceDataDto deviceDataDto = new DeviceDataDto(); + DeviceData deviceData; + DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + switch (devTypeName) { + case "井盖状态监测仪": + deviceData = this.baseMapper.wellcoverData(devcode); + deviceDataDto.setTypeName("井盖状态"); + if (ObjectUtil.isNotEmpty(deviceData)) { + //井盖离线 + if ("0".equals(status)) { + deviceDataDto.setValue("离线"); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } else if ("心跳".equals(deviceData.getData())) { + deviceDataDto.setValue("井盖状态正常"); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } else { + deviceDataDto.setValue(deviceData.getData()); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } + } else { + deviceDataDto.setValue("无数据"); + } + deviceDataDtoList.add(deviceDataDto); + break; + + case "液位监测仪": + deviceData = this.baseMapper.liquidData(devcode); + if (ObjectUtil.isNotEmpty(deviceData)) { + deviceDataDto.setTypeName("井内水位"); + deviceDataDto.setValue(deviceData.getData() + "m"); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + deviceDataDtoList.add(deviceDataDto); + } + break; + + case "有害气体监测仪": + deviceData = this.baseMapper.harmfulgasData(devcode); + if (ObjectUtil.isNotEmpty(deviceData)) { + String[] harmfulGasDatas = deviceData.getData().split(","); + HarmfulGasBusiness[] harmfulGasBusinesses = HarmfulGasBusiness.values(); + for (int i = 0; i < harmfulGasDatas.length; i++) { + deviceDataDto = new DeviceDataDto(); + deviceDataDto.setTypeName(harmfulGasBusinesses[i].getDesc()); + deviceDataDto.setValue(harmfulGasDatas[i] + harmfulGasBusinesses[i].getUnit()); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + deviceDataDtoList.add((DeviceDataDto) deviceDataDto.clone()); + } + } + break; + case "燃气智能监测终端": + deviceData = this.baseMapper.gasData(devcode); + if (ObjectUtil.isNotEmpty(deviceData)) { + deviceDataDto.setTypeName("燃气浓度"); + deviceDataDto.setValue(deviceData.getData() + "%LEL"); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + deviceDataDtoList.add(deviceDataDto); + } + break; + + case "温湿度监测仪": + deviceData = this.baseMapper.temphumData(devcode); + if (ObjectUtil.isNotEmpty(deviceData)) { + String[] temphumDatas = deviceData.getData().split(","); + TemphumBusiness[] temphumBusinesses = TemphumBusiness.values(); + for (int i = 0; i < temphumDatas.length; i++) { + deviceDataDto = new DeviceDataDto(); + deviceDataDto.setTypeName(temphumBusinesses[i].getDesc()); + deviceDataDto.setValue(temphumDatas[i] + temphumBusinesses[i].getUnit()); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + deviceDataDtoList.add((DeviceDataDto) deviceDataDto.clone()); + } + } + break; + + case "开挖监测仪": + deviceData = this.baseMapper.digData(devcode); + if (ObjectUtil.isNotEmpty(deviceData)) { + deviceDataDto.setTypeName("开挖状态"); + deviceDataDto.setValue(deviceData.getData() + "mg"); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + deviceDataDtoList.add(deviceDataDto); + } + break; + + case "噪声记录仪": + deviceData = this.baseMapper.noiseData(devcode); + if (ObjectUtil.isNotEmpty(deviceData)) { + deviceDataDto.setTypeName("管线噪声"); + deviceDataDto.setValue(deviceData.getData() + "mg"); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + deviceDataDtoList.add(deviceDataDto); + } + break; + case "井盖定位监测仪": + deviceData = this.baseMapper.wellcoverlocaData(devcode); + if (ObjectUtil.isNotEmpty(deviceData)) { + deviceDataDto.setTypeName("井盖位置"); + deviceDataDto.setValue(deviceData.getData()); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + deviceDataDtoList.add(deviceDataDto); + } + break; + + case "燃气智能监测终端(一体化)": + deviceData = this.baseMapper.lgGasData(devcode); + deviceDataDto.setTypeName("燃气浓度"); + if (ObjectUtil.isNotEmpty(deviceData)) { + + Double dValue = Double.parseDouble(deviceData.getData()); + if (dValue <= 20.0) { + deviceDataDto.setValue(deviceData.getData() + "%LEL"); + } else { + DecimalFormat df = new DecimalFormat("0.00"); + dValue = dValue / 20.0; + deviceDataDto.setValue(df.format(dValue) + "%VOL"); + } + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } else { + deviceDataDto.setValue("无数据"); + } + deviceDataDtoList.add(deviceDataDto); + + deviceData = this.baseMapper.lgLiquidData(devcode); + deviceDataDto.setTypeName("井内水位"); + if (ObjectUtil.isNotEmpty(deviceData)) { + + deviceDataDto.setValue(deviceData.getData() + "m"); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } else { + deviceDataDto.setValue("无数据"); + } + deviceDataDtoList.add((DeviceDataDto) deviceDataDto.clone()); + break; + + default://未知设备 + log.info("未知设备!"); + break; + } + return deviceDataDtoList; + } + + @Override + public BfztCountDataDto getBfztCountData(List deptIds, Boolean isApp) { + return this.baseMapper.bfztCountData(deptIds, isApp); + } + + @Override + public List getWatchDatas(Long id) { + + List deviceInWellInfos = deviceSupportService.getDeviceInWellInfo(id); + List watchDataDtos = new ArrayList<>(); + + for (DeviceInWellInfo deviceInWellInfo : deviceInWellInfos) { + WatchDataDto watchDataDto = new WatchDataDto(); + watchDataDto.setDeviceId(deviceInWellInfo.getDeviceId()); + watchDataDto.setDevcode(deviceInWellInfo.getDevcode()); + watchDataDto.setInstallDate(deviceInWellInfo.getInstallDate()); + watchDataDto.setOnlineState(deviceInWellInfo.getOnlineState()); + watchDataDto.setOnlineStateName(dictService.getDictNameByCode("onlineStatus", deviceInWellInfo.getOnlineState())); + + DeviceData deviceData; + DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + + switch (deviceInWellInfo.getTypeName()) { + case "井盖状态监测仪": + deviceData = this.baseMapper.wellcoverData(deviceInWellInfo.getDevcode()); + watchDataDto.setWatchType("井盖状态"); + watchDataDto.setType("1"); + if (ObjectUtil.isNotEmpty(deviceData)) { + //井盖离线 + if ("0".equals(watchDataDto.getOnlineState())) { + watchDataDto.setValue("离线"); + watchDataDto.setData("离线"); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } else if ("心跳".equals(deviceData.getData())) { + watchDataDto.setValue("井盖状态正常"); + watchDataDto.setData("井盖状态正常"); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } else { + watchDataDto.setValue(deviceData.getData()); + watchDataDto.setData(deviceData.getData()); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } + } else { + watchDataDto.setValue("无数据"); + watchDataDto.setData("无数据"); + } + watchDataDtos.add(watchDataDto); + break; + + case "液位监测仪": + deviceData = this.baseMapper.liquidData(deviceInWellInfo.getDevcode()); + if (ObjectUtil.isNotEmpty(deviceData)) { + watchDataDto.setWatchType("井内水位"); + watchDataDto.setType("2"); + + watchDataDto.setValue(deviceData.getData() + "m"); + watchDataDto.setData(deviceData.getData() + "m"); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + watchDataDtos.add(watchDataDto); + } + break; + + case "有害气体监测仪": + deviceData = this.baseMapper.harmfulgasData(deviceInWellInfo.getDevcode()); + if (ObjectUtil.isNotEmpty(deviceData)) { + String[] harmfulGasDatas = deviceData.getData().split(","); + HarmfulGasBusiness[] harmfulGasBusinesses = HarmfulGasBusiness.values(); + + for (int i = 0; i < harmfulGasDatas.length; i++) { + watchDataDto.setWatchType(harmfulGasBusinesses[i].getDesc()); + watchDataDto.setType("3"); + watchDataDto.setValue(harmfulGasDatas[i] + harmfulGasBusinesses[i].getUnit()); + watchDataDto.setData(harmfulGasDatas[i] + harmfulGasBusinesses[i].getUnit()); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + watchDataDtos.add((WatchDataDto) watchDataDto.clone()); + } + } + break; + + case "燃气智能监测终端": + deviceData = this.baseMapper.gasData(deviceInWellInfo.getDevcode()); + if (ObjectUtil.isNotEmpty(deviceData)) { + watchDataDto.setWatchType("燃气浓度"); + watchDataDto.setType("4"); + + watchDataDto.setValue(deviceData.getData() + "%LEL"); + watchDataDto.setData(deviceData.getData() + "%LEL"); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + watchDataDtos.add(watchDataDto); + } + break; + + case "温湿度监测仪": + deviceData = this.baseMapper.temphumData(deviceInWellInfo.getDevcode()); + if (ObjectUtil.isNotEmpty(deviceData)) { + String[] temphumDatas = deviceData.getData().split(","); + TemphumBusiness[] temphumBusinesses = TemphumBusiness.values(); + + for (int i = 0; i < temphumDatas.length; i++) { + watchDataDto.setWatchType(temphumBusinesses[i].getDesc()); + watchDataDto.setType("5"); + watchDataDto.setValue(temphumDatas[i] + temphumBusinesses[i].getUnit()); + watchDataDto.setData(temphumDatas[i] + temphumBusinesses[i].getUnit()); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + watchDataDtos.add((WatchDataDto) watchDataDto.clone()); + } + } + break; + + case "开挖监测仪": + deviceData = this.baseMapper.digData(deviceInWellInfo.getDevcode()); + if (ObjectUtil.isNotEmpty(deviceData)) { + watchDataDto.setWatchType("开挖状态"); + watchDataDto.setType("6"); + + watchDataDto.setValue(deviceData.getData() + "mg"); + watchDataDto.setData(deviceData.getData() + "mg"); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + watchDataDtos.add(watchDataDto); + } + break; + + case "噪声记录仪": + deviceData = this.baseMapper.noiseData(deviceInWellInfo.getDevcode()); + if (ObjectUtil.isNotEmpty(deviceData)) { + watchDataDto.setWatchType("管线噪声"); + watchDataDto.setType("8"); + + watchDataDto.setValue(deviceData.getData() + "mg"); + watchDataDto.setData(deviceData.getData() + "mg"); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + watchDataDtos.add(watchDataDto); + } + break; + + case "井盖定位监测仪": + deviceData = this.baseMapper.wellcoverlocaData(deviceInWellInfo.getDevcode()); + if (ObjectUtil.isNotEmpty(deviceData)) { + watchDataDto.setWatchType("井盖位置"); + watchDataDto.setType("7"); + + watchDataDto.setValue(deviceData.getData()); + watchDataDto.setData(deviceData.getData()); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + watchDataDtos.add(watchDataDto); + } + break; + + case "燃气智能监测终端(一体化)": + deviceData = this.baseMapper.lgGasData(deviceInWellInfo.getDevcode()); + watchDataDto.setWatchType("燃气浓度"); + watchDataDto.setType("10"); + if (ObjectUtil.isNotEmpty(deviceData)) { + + Double dValue = Double.parseDouble(deviceData.getData()); + if (dValue <= 20.0) { + watchDataDto.setValue(deviceData.getData() + "%LEL"); + watchDataDto.setData(deviceData.getData() + "%LEL"); + } else { + DecimalFormat df = new DecimalFormat("0.00"); + dValue = dValue / 20.0; + watchDataDto.setValue(df.format(dValue) + "%VOL"); + watchDataDto.setData(df.format(dValue) + "%VOL"); + } + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } else { + watchDataDto.setValue("无数据"); + watchDataDto.setData("无数据"); + } + watchDataDtos.add((WatchDataDto) watchDataDto.clone()); + + deviceData = this.baseMapper.lgLiquidData(deviceInWellInfo.getDevcode()); + watchDataDto.setWatchType("井内水位"); + watchDataDto.setType("10"); + if (ObjectUtil.isNotEmpty(deviceData)) { + + watchDataDto.setValue(deviceData.getData() + "m"); + watchDataDto.setData(deviceData.getData() + "m"); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } else { + watchDataDto.setValue("无数据"); + watchDataDto.setData("无数据"); + } + watchDataDtos.add((WatchDataDto) watchDataDto.clone()); + break; + + default://未知设备 + log.info("未知设备!"); + break; + } + } + + return watchDataDtos; + } + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java index d45eaf7..b9ca243 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java @@ -21,7 +21,7 @@ public interface DeviceMapper extends BaseMapper { List selectDataScopePage(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("deviceType") String deviceType, @Param("deptid") String deptid, @Param("beginTime") String beginTime, @Param("endTime") String endTime, @Param("keywords") String keywords,@Param("isOnline") String isOnline); - + List getDeviceList(@Param("scope") DataScope dataScope); DeviceWellDto selectWellIdByCode(@Param("wellCode") String wellCode); DeviceConcentratorDto selectDeviceConcentorByCode(@Param("concenCode") String concenCode); @@ -61,4 +61,13 @@ List> selectTempDataList(@Param("dataScope")DataScope dataScope, @Param("wellCode")String wellCode, @Param("beginTime")String beginTime, @Param("endTime")String endTime); List> selectHarmfulDataList(@Param("dataScope")DataScope dataScope, @Param("wellCode")String wellCode, @Param("beginTime")String beginTime, @Param("endTime")String endTime); + + /** + * 查询设备信息 + * @param id 设备主键 + * @return + */ + DeviceInfoDto selectDeviceById(@Param("id") Long id); + + List getDeviceInWellInfo(@Param("id") Long id); } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml index fb6f4f4..c956057 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml @@ -902,5 +902,64 @@ ) t1 ORDER BY uptime asc + + + + d.ID AS deviceId, DEVCODE AS devcode, INSTALL_DATE AS installDate, ONLINE_STATE AS onlineState, t.TYPE_NAME AS typeName + + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java b/casic-device/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java index 72c60f0..090415c 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java @@ -17,7 +17,7 @@ * @author lwh123 * @since 2019-05-23 */ -public interface IDeviceService extends IService { +public interface IDeviceService extends IService{ /** * 根据条件分页查询设备列表 diff --git a/casic-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java index 0b089f3..de9111e 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java @@ -39,7 +39,7 @@ * @since 2019-05-23 */ @Service -public class DeviceServiceImpl extends ServiceImpl implements IDeviceService { +public class DeviceServiceImpl extends ServiceImpl implements IDeviceService,IBusDeviceSupportService { @Autowired private IDeviceTypeService deviceTypeService; @@ -514,4 +514,19 @@ } return list; } + + @Override + public List getDeviceList(DataScope dataScope) { + return this.baseMapper.getDeviceList(dataScope); + } + + @Override + public DeviceInfoDto selectDeviceById(Long id) { + return this.baseMapper.selectDeviceById(id); + } + + @Override + public List getDeviceInWellInfo(Long id) { + return this.baseMapper.getDeviceInWellInfo(id); + } } diff --git a/casic-server-support/src/main/java/com/casic/missiles/modular/system/enmus/HarmfulGasBusiness.java b/casic-server-support/src/main/java/com/casic/missiles/modular/system/enmus/HarmfulGasBusiness.java new file mode 100644 index 0000000..d3bfabc --- /dev/null +++ b/casic-server-support/src/main/java/com/casic/missiles/modular/system/enmus/HarmfulGasBusiness.java @@ -0,0 +1,44 @@ +package com.casic.missiles.modular.system.enmus; + +public enum HarmfulGasBusiness { + + CO(0, "CO浓度","ppm"), + CH4(1, "CH4浓度","%VOL"), + H2S(2, "H2S浓度","ppm"), + O2(3, "O2浓度","%VOL"); + //SWITCH(4, "液位开关",""); + + private int code; + private String desc; + private String unit; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public String getDesc() { + return desc; + } + + public void setDesc(String desc) { + this.desc = desc; + } + + public String getUnit() { + return unit; + } + + public void setUnit(String unit) { + this.unit = unit; + } + + HarmfulGasBusiness(int code, String desc, String unit) { + this.code = code; + this.desc = desc; + this.unit = unit; + } +} diff --git a/casic-server-support/src/main/java/com/casic/missiles/modular/system/enmus/SluicewellExportEnum.java b/casic-server-support/src/main/java/com/casic/missiles/modular/system/enmus/SluicewellExportEnum.java new file mode 100644 index 0000000..d451598 --- /dev/null +++ b/casic-server-support/src/main/java/com/casic/missiles/modular/system/enmus/SluicewellExportEnum.java @@ -0,0 +1,59 @@ +package com.casic.missiles.modular.system.enmus; + + + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +public enum SluicewellExportEnum { + + DEVICE_EXPORT( + new ArrayList() {{ +// add(new Header("井编号", "wellCode")); +// add(new Header("井名称", "wellName")); +// add(new Header("井深", "deep")); +// add(new Header("详细地址", "position")); +// add(new Header("井类型", "wellTypeName")); +// add(new Header("权属单位", "deptName")); +// add(new Header("设备数量", "deviceCount")); +// add(new Header("布防状态", "bfztName")); + }}, "sluicewell.xlsx", "井数据导出"); + + //SLUICEWELLDATA_EXPORT("sluicewell.xlsx", "sluicewell.xlsx", "闸井数据"); + + /** + * 导出模板相对路径 + */ + private List headers; + /** + * 下载文件名 + */ + private String fileName; + /** + * 描述信息 + */ + private String description; + + SluicewellExportEnum(List headers, String fileName, String description) { + this.headers = headers; + this.fileName = fileName; + this.description = description; + } + + public List getHeaders() { + return headers; + } + + public String getFileName() { + return fileName; + } + + public String getDescription() { + return description; + } + + public Map getCustomColumnStyle() { + return null; + } +} diff --git a/casic-server-support/src/main/java/com/casic/missiles/modular/system/enmus/TemphumBusiness.java b/casic-server-support/src/main/java/com/casic/missiles/modular/system/enmus/TemphumBusiness.java new file mode 100644 index 0000000..27d15e2 --- /dev/null +++ b/casic-server-support/src/main/java/com/casic/missiles/modular/system/enmus/TemphumBusiness.java @@ -0,0 +1,41 @@ +package com.casic.missiles.modular.system.enmus; + +public enum TemphumBusiness { + + TEMP(0, "井内温度","℃"), + HUM(1, "井内湿度","%RH"); + + private int code; + private String desc; + private String unit; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public String getDesc() { + return desc; + } + + public void setDesc(String desc) { + this.desc = desc; + } + + public String getUnit() { + return unit; + } + + public void setUnit(String unit) { + this.unit = unit; + } + + TemphumBusiness(int code, String desc, String unit) { + this.code = code; + this.desc = desc; + this.unit = unit; + } +} diff --git a/casic-server-support/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceSupportService.java b/casic-server-support/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceSupportService.java new file mode 100644 index 0000000..0b6fd75 --- /dev/null +++ b/casic-server-support/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceSupportService.java @@ -0,0 +1,42 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.model.application.service.IRepositorySupportService; +import com.casic.missiles.modular.system.dto.DeviceInWellInfo; +import com.casic.missiles.modular.system.dto.DeviceInfoDto; +import com.casic.missiles.modular.system.model.Device; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 设备支撑 + * + * @author lwh + */ +public interface IBusDeviceSupportService { + /** + * 获取设备列表 + * + * @param dataScope 数据权限 + * @return 设备列表 + */ + List getDeviceList(DataScope dataScope); + + + /** + * 查询设备信息 + * + * @param id 设备主键 + * @return 设备信息 + */ + DeviceInfoDto selectDeviceById(Long id); + + /** + * 查询井下设备信息 + * + * @param id 井主键 + * @return 井下设备信息 + */ + List getDeviceInWellInfo(Long id); +} diff --git a/casic-server-support/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoSupportService.java b/casic-server-support/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoSupportService.java new file mode 100644 index 0000000..e34c98e --- /dev/null +++ b/casic-server-support/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoSupportService.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.model.application.service.IRepositorySupportService; +import com.casic.missiles.modular.system.dto.BusWellInfoDto; +import com.casic.missiles.modular.system.model.BusWellInfo; + +import java.util.List; + +/** + * 闸井服务支撑接口 + * + * @author lwh + */ +public interface IBusWellInfoSupportService { + /** + * 获取井列表接口 + * + * @param dataScope 数据权限 + * @param keywords 关键字 + * @param wellType 井类型 + * @param deptid 组织ID + * @return + */ + List getWellList(DataScope dataScope, String keywords, String wellType, String deptid); + + BusWellInfo getById(Long id); +} diff --git a/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/controller/BusMapOverviewController.java b/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/controller/BusMapOverviewController.java deleted file mode 100644 index 078eaf6..0000000 --- a/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/controller/BusMapOverviewController.java +++ /dev/null @@ -1,178 +0,0 @@ -package com.casic.missiles.modular.system.controller; - -import cn.hutool.core.collection.CollectionUtil; -import com.casic.missiles.core.application.context.AbstractPermissionContext; -import com.casic.missiles.core.application.service.AbstractDictService; -import com.casic.missiles.core.base.controller.BaseController; -import com.casic.missiles.core.datascope.DataScope; -import com.casic.missiles.model.exception.ServiceException; -import com.casic.missiles.model.exception.enums.CoreExceptionEnum; -import com.casic.missiles.model.response.ResponseData; -import com.casic.missiles.model.response.SuccessResponseData; -import com.casic.missiles.modular.system.dto.BusWellInfoDto; -import com.casic.missiles.modular.system.dto.DeviceDataDto; -import com.casic.missiles.modular.system.dto.DeviceInfoDto; -import com.casic.missiles.modular.system.dto.WatchDataDto; -import com.casic.missiles.modular.system.model.BusWellInfo; -import com.casic.missiles.modular.system.service.IBusWellInfoService; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestMethod; -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.bind.annotation.ResponseBody; - -import javax.annotation.Resource; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - -/** - * 地图总览模块的controller - * - * @author tanyue - * @Date 2019-05-13 19:20:29 - */ -@Controller -@RequestMapping("/overview") -public class BusMapOverviewController extends BaseController { - - @Resource - private AbstractPermissionContext permissionService; - @Resource - private AbstractDictService dictService; - @Autowired - private IBusWellInfoService busWellInfoService; - - /** - * 获取列表 - */ - @RequestMapping(value = "/wellList") - @ResponseBody - public Object wellList(@RequestParam(required = false) String keywords, - @RequestParam(required = false) String wellType, - @RequestParam(required = false) String deptid, - @RequestParam(required = false) String isAlarm) { - - DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope(); - List wellList = new ArrayList(); - - if (null == isAlarm || isAlarm.equals("") == true) { - // isAlarm参数为空,查询所有的闸井 - - // 查询并添加当前部门的闸井 - List myList = busWellInfoService.getWellList(dataScope, keywords, wellType, deptid); - if (null != myList && myList.isEmpty() == false) { - wellList.addAll(myList); - } - - /** - * 不需要了,由dataScope控制权限 - // 查询并添加下级部门的闸井 - List subDepts = permissionService.getSubDepts(deptid,null); - if (null != subDepts && subDepts.isEmpty() == false) { - for (Long subDeptId : subDepts) { - List subList = busWellInfoService.getWellList(dataScope, keywords, wellType, String.valueOf(subDeptId)); - if (null != subList && subList.isEmpty() == false) { - wellList.addAll(subList); - } - } - } - */ - } else if (isAlarm.equals("1")) { - // isAlarm = 1 查询所有报警状态的闸井 - wellList = busWellInfoService.getAlarmWellList(dataScope, keywords, wellType, deptid); - } else { - // isAlarm = 0 查询所有不是报警状态的闸井 - wellList = busWellInfoService.getNotAlarmWellList(dataScope, keywords, wellType, deptid); - } - - - return ResponseData.success(wellList); - } - - /** - * 获取设备列表 - */ - @RequestMapping(value = "/deviceList") - @ResponseBody - public Object deviceList() { - - DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope(); - List wellList = new ArrayList(); - wellList = busWellInfoService.getDeviceList(dataScope); - return ResponseData.success(wellList); - } - - /** - * 获取设备详情 - */ - @RequestMapping(value = "/deviceDetail", method = RequestMethod.GET) - @ResponseBody - public Object deviceDetail(@RequestParam(required = true) Long id) { - if (null == id) { - throw new ServiceException(CoreExceptionEnum.REQUEST_NULL); - } - DeviceInfoDto deviceInfoDto = busWellInfoService.selectDeviceById(id); - SuccessResponseData successResult = new SuccessResponseData(); - if (null == deviceInfoDto) { - successResult.setCode(200); - successResult.setMessage("success"); - successResult.setData(new HashMap()); - } else { - // 设置最新的监测数据 - List deviceDataDtoList = busWellInfoService. - getDeviceDatas(deviceInfoDto.getDeviceTypeName(), deviceInfoDto.getDevcode(), deviceInfoDto.getOnlineState()); - if (CollectionUtil.isNotEmpty(deviceDataDtoList)) { - deviceInfoDto.setRealtimeData(deviceDataDtoList); - } - successResult.setMessage("success"); - successResult.setData(deviceInfoDto); - } - return successResult; - } - - - /** - * 获取闸井详情 - */ - @RequestMapping(value = "/wellInfo", method = RequestMethod.GET) - @ResponseBody - public Object wellInfo(@RequestParam(required = true) Long id) { - if (null == id) { - throw new ServiceException(CoreExceptionEnum.REQUEST_NULL); - } - - BusWellInfo busWellInfo = busWellInfoService.getById(id); - SuccessResponseData successResult = new SuccessResponseData(); - if (null == busWellInfo) { - successResult.setCode(200); - successResult.setMessage("success"); - successResult.setData(new HashMap()); - } else { - BusWellInfoDto busWellInfoDto = new BusWellInfoDto(); - busWellInfoDto.convertBusWellInfo(busWellInfo); - - // 设置字典值 - busWellInfoDto.setBfztName(dictService.getDictNameByCode("bfzt", busWellInfo.getBfzt())); - busWellInfoDto.setWellTypeName(dictService.getDictNameByCode("sluicewellType", busWellInfo.getWellType())); - busWellInfoDto.setDeptName(permissionService.getDeptService().getDeptName(busWellInfo.getDeptid())); - - // 设置最新的监测数据 - List watchDataDtos = busWellInfoService.getWatchDatas(id); - if (null != watchDataDtos && watchDataDtos.isEmpty() == false) { - for (WatchDataDto watchDataDto : watchDataDtos) { - watchDataDto.setValue(watchDataDto.getData()); - } - } - - busWellInfoDto.setWatchData(watchDataDtos); - - successResult.setMessage("success"); - successResult.setData(busWellInfoDto.toMap()); - } - - return successResult; - } - -} diff --git a/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java b/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java index bd62f3f..ef5a8a8 100644 --- a/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java +++ b/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java @@ -19,7 +19,6 @@ import com.casic.missiles.modular.system.dict.BusWellDict; import com.casic.missiles.modular.system.dto.BatchExportDataDto; import com.casic.missiles.modular.system.dto.HasWellDto; -import com.casic.missiles.modular.system.enmus.SluicewellExportEnum; import com.casic.missiles.modular.system.util.Utility; import com.casic.missiles.quartz.service.IQuartzManager; import org.slf4j.Logger; @@ -217,46 +216,9 @@ } - /** - * 获取闸井设备数据 - */ - @RequestMapping(value = "/watchDataByWell", method = RequestMethod.GET) - @ResponseBody - public Object watchDataByWell(Long id) { - if (null == id) { - throw new ServiceException(CoreExceptionEnum.REQUEST_NULL); - } - SuccessResponseData resultData = new SuccessResponseData(); - resultData.setData(busWellInfoService.getWatchDatas(id)); - - return resultData; - } - - /** - * 根据布防状态统计闸井数量接口 - */ - @RequestMapping(value = "/countByBfzt", method = RequestMethod.GET) - @ResponseBody - public Object countByBfzt() { - DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope(); - Set roleTipes = permissionService.getAuthService().getLoginUser().getRoleTips(); - List deptIds = null; - Boolean isApp = false; - if (roleTipes.contains("leader") || roleTipes.contains("member")) { - deptIds = permissionService.getDeptService().getIdsByPid(permissionService.getAuthService().getLoginUser().getDeptId(), null); - deptIds.add(permissionService.getAuthService().getLoginUser().getDeptId()); - isApp = true; - }else{ - deptIds = dataScope.getDeptIds(); - isApp = false; - } - SuccessResponseData resultData = new SuccessResponseData(); - busWellInfoService.getBfztCountData(deptIds,isApp); - resultData.setData(busWellInfoService.getBfztCountData(deptIds,isApp)); - return resultData; - } + /** * 闸井布防撤防接口 @@ -289,20 +251,6 @@ return ResponseData.success(); } - /** - * 获取布防类型(APP用) - */ - @RequestMapping(value = "/bfType", method = RequestMethod.GET) - @ResponseBody - public Object bfType(Long id) { - if (null ==id) { - throw new ServiceException(CoreExceptionEnum.REQUEST_NULL); - } - SuccessResponseData resultData = new SuccessResponseData(); - resultData.setData(busWellInfoService.getWatchDatas(id)); - - return resultData; - } /** diff --git a/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/controller/BusMapOverviewController.java b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/controller/BusMapOverviewController.java new file mode 100644 index 0000000..9d9f43c --- /dev/null +++ b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/controller/BusMapOverviewController.java @@ -0,0 +1,182 @@ +package com.casic.missiles.modular.system.controller; + +import cn.hutool.core.collection.CollectionUtil; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.model.exception.ServiceException; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.model.response.SuccessResponseData; +import com.casic.missiles.modular.system.dto.BusWellInfoDto; +import com.casic.missiles.modular.system.dto.DeviceDataDto; +import com.casic.missiles.modular.system.dto.DeviceInfoDto; +import com.casic.missiles.modular.system.dto.WatchDataDto; +import com.casic.missiles.modular.system.model.BusWellInfo; +import com.casic.missiles.modular.system.service.IBusDeviceSupportService; +import com.casic.missiles.modular.system.service.IBusWellInfoSupportService; +import com.casic.missiles.modular.system.service.IDataAnalysisService; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.ResponseBody; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; + +/** + * 地图总览模块的controller + * + * @author tanyue + * @Date 2019-05-13 19:20:29 + */ +@Controller +@RequestMapping("/overview") +public class BusMapOverviewController extends BaseController { + + @Resource + private AbstractPermissionContext permissionService; + @Resource + private AbstractDictService dictService; + @Resource + private IBusWellInfoSupportService busWellInfoService; + @Resource + private IDataAnalysisService dataAnalysisService; + @Resource + private IBusDeviceSupportService busDeviceSupportService; + + /** + * 获取列表 + */ + @RequestMapping(value = "/wellList") + @ResponseBody + public Object wellList(@RequestParam(required = false) String keywords, + @RequestParam(required = false) String wellType, + @RequestParam(required = false) String deptid, + @RequestParam(required = false) String isAlarm) { + + DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope(); + List wellList = new ArrayList(); + + if (null == isAlarm || isAlarm.equals("") == true) { + // isAlarm参数为空,查询所有的闸井 + + // 查询并添加当前部门的闸井 + List myList = busWellInfoService.getWellList(dataScope, keywords, wellType, deptid); + if (null != myList && myList.isEmpty() == false) { + wellList.addAll(myList); + } + + /** + * 不需要了,由dataScope控制权限 + // 查询并添加下级部门的闸井 + List subDepts = permissionService.getSubDepts(deptid,null); + if (null != subDepts && subDepts.isEmpty() == false) { + for (Long subDeptId : subDepts) { + List subList = busWellInfoService.getWellList(dataScope, keywords, wellType, String.valueOf(subDeptId)); + if (null != subList && subList.isEmpty() == false) { + wellList.addAll(subList); + } + } + } + */ + } else if (isAlarm.equals("1")) { + // isAlarm = 1 查询所有报警状态的闸井 + wellList = dataAnalysisService.getAlarmWellList(dataScope, keywords, wellType, deptid); + } else { + // isAlarm = 0 查询所有不是报警状态的闸井 + wellList = dataAnalysisService.getNotAlarmWellList(dataScope, keywords, wellType, deptid); + } + + + return ResponseData.success(wellList); + } + + /** + * 获取设备列表 + */ + @RequestMapping(value = "/deviceList") + @ResponseBody + public Object deviceList() { + + DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope(); + List wellList = new ArrayList(); + wellList = busDeviceSupportService.getDeviceList(dataScope); + return ResponseData.success(wellList); + } + + /** + * 获取设备详情 + */ + @RequestMapping(value = "/deviceDetail", method = RequestMethod.GET) + @ResponseBody + public Object deviceDetail(@RequestParam(required = true) Long id) { + if (null == id) { + throw new ServiceException(CoreExceptionEnum.REQUEST_NULL); + } + DeviceInfoDto deviceInfoDto = busDeviceSupportService.selectDeviceById(id); + SuccessResponseData successResult = new SuccessResponseData(); + if (null == deviceInfoDto) { + successResult.setCode(200); + successResult.setMessage("success"); + successResult.setData(new HashMap()); + } else { + // 设置最新的监测数据 + List deviceDataDtoList = dataAnalysisService.getDeviceDatas(deviceInfoDto.getDeviceTypeName(), deviceInfoDto.getDevcode(), deviceInfoDto.getOnlineState()); + if (CollectionUtil.isNotEmpty(deviceDataDtoList)) { + deviceInfoDto.setRealtimeData(deviceDataDtoList); + } + successResult.setMessage("success"); + successResult.setData(deviceInfoDto); + } + return successResult; + } + + + /** + * 获取闸井详情 + */ + @RequestMapping(value = "/wellInfo", method = RequestMethod.GET) + @ResponseBody + public Object wellInfo(@RequestParam(required = true) Long id) { + if (null == id) { + throw new ServiceException(CoreExceptionEnum.REQUEST_NULL); + } + + BusWellInfo busWellInfo = busWellInfoService.getById(id); + SuccessResponseData successResult = new SuccessResponseData(); + if (null == busWellInfo) { + successResult.setCode(200); + successResult.setMessage("success"); + successResult.setData(new HashMap()); + } else { + BusWellInfoDto busWellInfoDto = new BusWellInfoDto(); + busWellInfoDto.convertBusWellInfo(busWellInfo); + + // 设置字典值 + busWellInfoDto.setBfztName(dictService.getDictNameByCode("bfzt", busWellInfo.getBfzt())); + busWellInfoDto.setWellTypeName(dictService.getDictNameByCode("sluicewellType", busWellInfo.getWellType())); + busWellInfoDto.setDeptName(permissionService.getDeptService().getDeptName(busWellInfo.getDeptid())); + + // 设置最新的监测数据 + List watchDataDtos = dataAnalysisService.getWatchDatas(id); + if (null != watchDataDtos && watchDataDtos.isEmpty() == false) { + for (WatchDataDto watchDataDto : watchDataDtos) { + watchDataDto.setValue(watchDataDto.getData()); + } + } + + busWellInfoDto.setWatchData(watchDataDtos); + + successResult.setMessage("success"); + successResult.setData(busWellInfoDto.toMap()); + } + return successResult; + } + + +} diff --git a/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/controller/WellDataController.java b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/controller/WellDataController.java new file mode 100644 index 0000000..c33ec7d --- /dev/null +++ b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/controller/WellDataController.java @@ -0,0 +1,81 @@ +package com.casic.missiles.modular.system.controller; + +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.model.exception.ServiceException; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.model.response.SuccessResponseData; +import com.casic.missiles.modular.system.service.IDataAnalysisService; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.ResponseBody; + +import javax.annotation.Resource; +import java.util.List; +import java.util.Set; + +@Controller +@RequestMapping("/well") +public class WellDataController extends BaseController { + @Resource + private AbstractPermissionContext permissionService; + @Resource + private IDataAnalysisService dataAnalysisService; + + + /** + * 获取闸井设备数据 + */ + @RequestMapping(value = "/watchDataByWell", method = RequestMethod.GET) + @ResponseBody + public Object watchDataByWell(Long id) { + if (null == id) { + throw new ServiceException(CoreExceptionEnum.REQUEST_NULL); + } + SuccessResponseData resultData = new SuccessResponseData(); + resultData.setData(dataAnalysisService.getWatchDatas(id)); + + return resultData; + } + + /** + * 根据布防状态统计闸井数量接口 + */ + @RequestMapping(value = "/countByBfzt", method = RequestMethod.GET) + @ResponseBody + public Object countByBfzt() { + DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope(); + Set roleTipes = permissionService.getAuthService().getLoginUser().getRoleTips(); + List deptIds = null; + Boolean isApp = false; + if (roleTipes.contains("leader") || roleTipes.contains("member")) { + deptIds = permissionService.getDeptService().getIdsByPid(permissionService.getAuthService().getLoginUser().getDeptId(), null); + deptIds.add(permissionService.getAuthService().getLoginUser().getDeptId()); + isApp = true; + } else { + deptIds = dataScope.getDeptIds(); + isApp = false; + } + SuccessResponseData resultData = new SuccessResponseData(); + dataAnalysisService.getBfztCountData(deptIds, isApp); + resultData.setData(dataAnalysisService.getBfztCountData(deptIds, isApp)); + return resultData; + } + + /** + * 获取布防类型(APP用) + */ + @RequestMapping(value = "/bfType", method = RequestMethod.GET) + @ResponseBody + public Object bfType(Long id) { + if (null == id) { + throw new ServiceException(CoreExceptionEnum.REQUEST_NULL); + } + SuccessResponseData resultData = new SuccessResponseData(); + resultData.setData(dataAnalysisService.getWatchDatas(id)); + return resultData; + } + +} diff --git a/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/dao/DataAnalysisMapper.java b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/dao/DataAnalysisMapper.java new file mode 100644 index 0000000..149fb82 --- /dev/null +++ b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/dao/DataAnalysisMapper.java @@ -0,0 +1,48 @@ +package com.casic.missiles.modular.system.dao; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.*; +import com.casic.missiles.modular.system.model.BusWellInfo; +import com.casic.missiles.core.datascope.DataScope; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * 闸井信息表 Mapper 接口 + *

+ * + * @author stylefeng123 + * @since 2019-05-13 + */ +public interface DataAnalysisMapper extends BaseMapper { + + List getAlarmWellList(@Param("scope") DataScope dataScope, @Param("keywords") String keywords, @Param("wellType") String deviceType, @Param("deptid") String deptid); + + List getNotAlarmWellList(@Param("scope") DataScope dataScope, @Param("keywords") String keywords, @Param("wellType") String deviceType, @Param("deptid") String deptid); + + DeviceData wellcoverData(@Param("devcode") String devcode); + + DeviceData liquidData(@Param("devcode") String devcode); + + DeviceData harmfulgasData(@Param("devcode") String devcode); + + DeviceData gasData(@Param("devcode") String devcode); + + DeviceData temphumData(@Param("devcode") String devcode); + + DeviceData digData(@Param("devcode") String devcode); + + DeviceData noiseData(@Param("devcode") String devcode); + + DeviceData wellcoverlocaData(@Param("devcode") String devcode); + + DeviceData lgGasData(@Param("devcode") String devcode);//燃气液位 + + DeviceData lgLiquidData(@Param("devcode") String devcode);//燃气液位 + + + BfztCountDataDto bfztCountData(@Param("deptIds") List deptIds, @Param("isApp") Boolean isApp); +} diff --git a/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/dao/mapping/DataAnalysisMapper.xml b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/dao/mapping/DataAnalysisMapper.xml new file mode 100644 index 0000000..6d7edb3 --- /dev/null +++ b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/dao/mapping/DataAnalysisMapper.xml @@ -0,0 +1,170 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ID + AS id, WELL_CODE AS wellCode, WELL_NAME AS wellName, DEEP AS deep, COORDINATE_X AS coordinateX, COORDINATE_Y AS coordinateY, LAT_BAIDU AS latBaidu, LNG_BAIDU AS lngBaidu, LNG_GAODE AS lngGaode, LAT_GAODE AS latGaode, AREA AS area, POSITION AS position, DEPTID AS deptid, PHOTOS AS photos, NOTES AS notes, WELL_TYPE AS wellType, STAFF AS staff, TEL AS tel, TS AS ts, VALID AS valid, BFZT AS bfzt, RESPONSIBLE_DEPT AS responsibleDept + + + + ID + AS id, WELL_CODE AS wellCode, WELL_NAME AS wellName, DEEP AS deep, COORDINATE_X AS coordinateX, COORDINATE_Y AS coordinateY, LAT_BAIDU AS latBaidu, LNG_BAIDU AS lngBaidu, LNG_GAODE AS lngGaode, LAT_GAODE AS latGaode, AREA AS area, POSITION AS position, DEPTID AS deptid, PHOTOS AS photos, NOTES AS notes, WELL_TYPE AS wellType, STAFF AS staff, TEL AS tel, TS AS ts, VALID AS valid, BFZT AS bfzt,d1.simplename AS deptName,d2.id AS responsibleDept,d2.simplename AS responsibleDeptName + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/service/IDataAnalysisService.java b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/service/IDataAnalysisService.java new file mode 100644 index 0000000..69c8c60 --- /dev/null +++ b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/service/IDataAnalysisService.java @@ -0,0 +1,51 @@ +package com.casic.missiles.modular.system.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.modular.system.dto.BfztCountDataDto; +import com.casic.missiles.modular.system.dto.BusWellInfoDto; +import com.casic.missiles.modular.system.dto.DeviceDataDto; +import com.casic.missiles.modular.system.dto.WatchDataDto; +import com.casic.missiles.modular.system.model.BusWellInfo; + +import java.util.List; + +/** + * 数据统计服务接口 + * + * @author lwh + */ +public interface IDataAnalysisService extends IService { + /** + * 获取告警闸井列表 + * @param dataScope 数据权限 + * @param keywords 关键字 + * @param wellType 井列表 + * @param deptid 组织id + * @return + */ + List getAlarmWellList(DataScope dataScope, String keywords, String wellType, String deptid); + + /** + * 获取不告警井列表信息 + * @param dataScope 数据权限 + * @param keywords 关键字 + * @param wellType 井类型 + * @param deptid 组织id + * @return + */ + List getNotAlarmWellList(DataScope dataScope, String keywords, String wellType, String deptid); + + /** + * 设备数据查询接口 + * @param devTypename 设备类型 + * @param devcode 设备编码 + * @param status 设备状态 + * @return 设备监测数据 + */ + List getDeviceDatas(String devTypename, String devcode, String status); + List getWatchDatas(Long id); + + + BfztCountDataDto getBfztCountData(List deptIds, Boolean isApp); +} diff --git a/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/service/impl/IDataAnalysisServiceImpl.java b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/service/impl/IDataAnalysisServiceImpl.java new file mode 100644 index 0000000..288a828 --- /dev/null +++ b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/service/impl/IDataAnalysisServiceImpl.java @@ -0,0 +1,386 @@ +package com.casic.missiles.modular.system.service.impl; + +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.modular.system.dao.DataAnalysisMapper; +import com.casic.missiles.modular.system.dto.*; +import com.casic.missiles.modular.system.enmus.HarmfulGasBusiness; +import com.casic.missiles.modular.system.enmus.TemphumBusiness; +import com.casic.missiles.modular.system.model.BusWellInfo; +import com.casic.missiles.modular.system.service.IBusDeviceSupportService; +import com.casic.missiles.modular.system.service.IDataAnalysisService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import java.text.DateFormat; +import java.text.DecimalFormat; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.List; + +/** + * 数据统计分析 + * + * @author lwh + */ +@Slf4j +@Component +public class IDataAnalysisServiceImpl extends ServiceImpl implements IDataAnalysisService { + @Resource + private AbstractDictService dictService; + @Resource + private IBusDeviceSupportService deviceSupportService; + + @Override + public List getAlarmWellList(DataScope dataScope, String keywords, String wellType, String deptid) { + return this.baseMapper.getAlarmWellList(dataScope, keywords, wellType, deptid); + } + + @Override + public List getNotAlarmWellList(DataScope dataScope, String keywords, String wellType, String deptid) { + return this.baseMapper.getNotAlarmWellList(dataScope, keywords, wellType, deptid); + } + + @Override + public List getDeviceDatas(String devTypeName, String devcode, String status) { + List deviceDataDtoList = new ArrayList<>(); + DeviceDataDto deviceDataDto = new DeviceDataDto(); + DeviceData deviceData; + DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + switch (devTypeName) { + case "井盖状态监测仪": + deviceData = this.baseMapper.wellcoverData(devcode); + deviceDataDto.setTypeName("井盖状态"); + if (ObjectUtil.isNotEmpty(deviceData)) { + //井盖离线 + if ("0".equals(status)) { + deviceDataDto.setValue("离线"); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } else if ("心跳".equals(deviceData.getData())) { + deviceDataDto.setValue("井盖状态正常"); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } else { + deviceDataDto.setValue(deviceData.getData()); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } + } else { + deviceDataDto.setValue("无数据"); + } + deviceDataDtoList.add(deviceDataDto); + break; + + case "液位监测仪": + deviceData = this.baseMapper.liquidData(devcode); + if (ObjectUtil.isNotEmpty(deviceData)) { + deviceDataDto.setTypeName("井内水位"); + deviceDataDto.setValue(deviceData.getData() + "m"); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + deviceDataDtoList.add(deviceDataDto); + } + break; + + case "有害气体监测仪": + deviceData = this.baseMapper.harmfulgasData(devcode); + if (ObjectUtil.isNotEmpty(deviceData)) { + String[] harmfulGasDatas = deviceData.getData().split(","); + HarmfulGasBusiness[] harmfulGasBusinesses = HarmfulGasBusiness.values(); + for (int i = 0; i < harmfulGasDatas.length; i++) { + deviceDataDto = new DeviceDataDto(); + deviceDataDto.setTypeName(harmfulGasBusinesses[i].getDesc()); + deviceDataDto.setValue(harmfulGasDatas[i] + harmfulGasBusinesses[i].getUnit()); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + deviceDataDtoList.add((DeviceDataDto) deviceDataDto.clone()); + } + } + break; + case "燃气智能监测终端": + deviceData = this.baseMapper.gasData(devcode); + if (ObjectUtil.isNotEmpty(deviceData)) { + deviceDataDto.setTypeName("燃气浓度"); + deviceDataDto.setValue(deviceData.getData() + "%LEL"); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + deviceDataDtoList.add(deviceDataDto); + } + break; + + case "温湿度监测仪": + deviceData = this.baseMapper.temphumData(devcode); + if (ObjectUtil.isNotEmpty(deviceData)) { + String[] temphumDatas = deviceData.getData().split(","); + TemphumBusiness[] temphumBusinesses = TemphumBusiness.values(); + for (int i = 0; i < temphumDatas.length; i++) { + deviceDataDto = new DeviceDataDto(); + deviceDataDto.setTypeName(temphumBusinesses[i].getDesc()); + deviceDataDto.setValue(temphumDatas[i] + temphumBusinesses[i].getUnit()); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + deviceDataDtoList.add((DeviceDataDto) deviceDataDto.clone()); + } + } + break; + + case "开挖监测仪": + deviceData = this.baseMapper.digData(devcode); + if (ObjectUtil.isNotEmpty(deviceData)) { + deviceDataDto.setTypeName("开挖状态"); + deviceDataDto.setValue(deviceData.getData() + "mg"); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + deviceDataDtoList.add(deviceDataDto); + } + break; + + case "噪声记录仪": + deviceData = this.baseMapper.noiseData(devcode); + if (ObjectUtil.isNotEmpty(deviceData)) { + deviceDataDto.setTypeName("管线噪声"); + deviceDataDto.setValue(deviceData.getData() + "mg"); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + deviceDataDtoList.add(deviceDataDto); + } + break; + case "井盖定位监测仪": + deviceData = this.baseMapper.wellcoverlocaData(devcode); + if (ObjectUtil.isNotEmpty(deviceData)) { + deviceDataDto.setTypeName("井盖位置"); + deviceDataDto.setValue(deviceData.getData()); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + deviceDataDtoList.add(deviceDataDto); + } + break; + + case "燃气智能监测终端(一体化)": + deviceData = this.baseMapper.lgGasData(devcode); + deviceDataDto.setTypeName("燃气浓度"); + if (ObjectUtil.isNotEmpty(deviceData)) { + + Double dValue = Double.parseDouble(deviceData.getData()); + if (dValue <= 20.0) { + deviceDataDto.setValue(deviceData.getData() + "%LEL"); + } else { + DecimalFormat df = new DecimalFormat("0.00"); + dValue = dValue / 20.0; + deviceDataDto.setValue(df.format(dValue) + "%VOL"); + } + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } else { + deviceDataDto.setValue("无数据"); + } + deviceDataDtoList.add(deviceDataDto); + + deviceData = this.baseMapper.lgLiquidData(devcode); + deviceDataDto.setTypeName("井内水位"); + if (ObjectUtil.isNotEmpty(deviceData)) { + + deviceDataDto.setValue(deviceData.getData() + "m"); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } else { + deviceDataDto.setValue("无数据"); + } + deviceDataDtoList.add((DeviceDataDto) deviceDataDto.clone()); + break; + + default://未知设备 + log.info("未知设备!"); + break; + } + return deviceDataDtoList; + } + + @Override + public BfztCountDataDto getBfztCountData(List deptIds, Boolean isApp) { + return this.baseMapper.bfztCountData(deptIds, isApp); + } + + @Override + public List getWatchDatas(Long id) { + + List deviceInWellInfos = deviceSupportService.getDeviceInWellInfo(id); + List watchDataDtos = new ArrayList<>(); + + for (DeviceInWellInfo deviceInWellInfo : deviceInWellInfos) { + WatchDataDto watchDataDto = new WatchDataDto(); + watchDataDto.setDeviceId(deviceInWellInfo.getDeviceId()); + watchDataDto.setDevcode(deviceInWellInfo.getDevcode()); + watchDataDto.setInstallDate(deviceInWellInfo.getInstallDate()); + watchDataDto.setOnlineState(deviceInWellInfo.getOnlineState()); + watchDataDto.setOnlineStateName(dictService.getDictNameByCode("onlineStatus", deviceInWellInfo.getOnlineState())); + + DeviceData deviceData; + DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + + switch (deviceInWellInfo.getTypeName()) { + case "井盖状态监测仪": + deviceData = this.baseMapper.wellcoverData(deviceInWellInfo.getDevcode()); + watchDataDto.setWatchType("井盖状态"); + watchDataDto.setType("1"); + if (ObjectUtil.isNotEmpty(deviceData)) { + //井盖离线 + if ("0".equals(watchDataDto.getOnlineState())) { + watchDataDto.setValue("离线"); + watchDataDto.setData("离线"); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } else if ("心跳".equals(deviceData.getData())) { + watchDataDto.setValue("井盖状态正常"); + watchDataDto.setData("井盖状态正常"); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } else { + watchDataDto.setValue(deviceData.getData()); + watchDataDto.setData(deviceData.getData()); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } + } else { + watchDataDto.setValue("无数据"); + watchDataDto.setData("无数据"); + } + watchDataDtos.add(watchDataDto); + break; + + case "液位监测仪": + deviceData = this.baseMapper.liquidData(deviceInWellInfo.getDevcode()); + if (ObjectUtil.isNotEmpty(deviceData)) { + watchDataDto.setWatchType("井内水位"); + watchDataDto.setType("2"); + + watchDataDto.setValue(deviceData.getData() + "m"); + watchDataDto.setData(deviceData.getData() + "m"); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + watchDataDtos.add(watchDataDto); + } + break; + + case "有害气体监测仪": + deviceData = this.baseMapper.harmfulgasData(deviceInWellInfo.getDevcode()); + if (ObjectUtil.isNotEmpty(deviceData)) { + String[] harmfulGasDatas = deviceData.getData().split(","); + HarmfulGasBusiness[] harmfulGasBusinesses = HarmfulGasBusiness.values(); + + for (int i = 0; i < harmfulGasDatas.length; i++) { + watchDataDto.setWatchType(harmfulGasBusinesses[i].getDesc()); + watchDataDto.setType("3"); + watchDataDto.setValue(harmfulGasDatas[i] + harmfulGasBusinesses[i].getUnit()); + watchDataDto.setData(harmfulGasDatas[i] + harmfulGasBusinesses[i].getUnit()); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + watchDataDtos.add((WatchDataDto) watchDataDto.clone()); + } + } + break; + + case "燃气智能监测终端": + deviceData = this.baseMapper.gasData(deviceInWellInfo.getDevcode()); + if (ObjectUtil.isNotEmpty(deviceData)) { + watchDataDto.setWatchType("燃气浓度"); + watchDataDto.setType("4"); + + watchDataDto.setValue(deviceData.getData() + "%LEL"); + watchDataDto.setData(deviceData.getData() + "%LEL"); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + watchDataDtos.add(watchDataDto); + } + break; + + case "温湿度监测仪": + deviceData = this.baseMapper.temphumData(deviceInWellInfo.getDevcode()); + if (ObjectUtil.isNotEmpty(deviceData)) { + String[] temphumDatas = deviceData.getData().split(","); + TemphumBusiness[] temphumBusinesses = TemphumBusiness.values(); + + for (int i = 0; i < temphumDatas.length; i++) { + watchDataDto.setWatchType(temphumBusinesses[i].getDesc()); + watchDataDto.setType("5"); + watchDataDto.setValue(temphumDatas[i] + temphumBusinesses[i].getUnit()); + watchDataDto.setData(temphumDatas[i] + temphumBusinesses[i].getUnit()); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + watchDataDtos.add((WatchDataDto) watchDataDto.clone()); + } + } + break; + + case "开挖监测仪": + deviceData = this.baseMapper.digData(deviceInWellInfo.getDevcode()); + if (ObjectUtil.isNotEmpty(deviceData)) { + watchDataDto.setWatchType("开挖状态"); + watchDataDto.setType("6"); + + watchDataDto.setValue(deviceData.getData() + "mg"); + watchDataDto.setData(deviceData.getData() + "mg"); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + watchDataDtos.add(watchDataDto); + } + break; + + case "噪声记录仪": + deviceData = this.baseMapper.noiseData(deviceInWellInfo.getDevcode()); + if (ObjectUtil.isNotEmpty(deviceData)) { + watchDataDto.setWatchType("管线噪声"); + watchDataDto.setType("8"); + + watchDataDto.setValue(deviceData.getData() + "mg"); + watchDataDto.setData(deviceData.getData() + "mg"); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + watchDataDtos.add(watchDataDto); + } + break; + + case "井盖定位监测仪": + deviceData = this.baseMapper.wellcoverlocaData(deviceInWellInfo.getDevcode()); + if (ObjectUtil.isNotEmpty(deviceData)) { + watchDataDto.setWatchType("井盖位置"); + watchDataDto.setType("7"); + + watchDataDto.setValue(deviceData.getData()); + watchDataDto.setData(deviceData.getData()); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + watchDataDtos.add(watchDataDto); + } + break; + + case "燃气智能监测终端(一体化)": + deviceData = this.baseMapper.lgGasData(deviceInWellInfo.getDevcode()); + watchDataDto.setWatchType("燃气浓度"); + watchDataDto.setType("10"); + if (ObjectUtil.isNotEmpty(deviceData)) { + + Double dValue = Double.parseDouble(deviceData.getData()); + if (dValue <= 20.0) { + watchDataDto.setValue(deviceData.getData() + "%LEL"); + watchDataDto.setData(deviceData.getData() + "%LEL"); + } else { + DecimalFormat df = new DecimalFormat("0.00"); + dValue = dValue / 20.0; + watchDataDto.setValue(df.format(dValue) + "%VOL"); + watchDataDto.setData(df.format(dValue) + "%VOL"); + } + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } else { + watchDataDto.setValue("无数据"); + watchDataDto.setData("无数据"); + } + watchDataDtos.add((WatchDataDto) watchDataDto.clone()); + + deviceData = this.baseMapper.lgLiquidData(deviceInWellInfo.getDevcode()); + watchDataDto.setWatchType("井内水位"); + watchDataDto.setType("10"); + if (ObjectUtil.isNotEmpty(deviceData)) { + + watchDataDto.setValue(deviceData.getData() + "m"); + watchDataDto.setData(deviceData.getData() + "m"); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } else { + watchDataDto.setValue("无数据"); + watchDataDto.setData("无数据"); + } + watchDataDtos.add((WatchDataDto) watchDataDto.clone()); + break; + + default://未知设备 + log.info("未知设备!"); + break; + } + } + + return watchDataDtos; + } + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java index d45eaf7..b9ca243 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java @@ -21,7 +21,7 @@ public interface DeviceMapper extends BaseMapper { List selectDataScopePage(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("deviceType") String deviceType, @Param("deptid") String deptid, @Param("beginTime") String beginTime, @Param("endTime") String endTime, @Param("keywords") String keywords,@Param("isOnline") String isOnline); - + List getDeviceList(@Param("scope") DataScope dataScope); DeviceWellDto selectWellIdByCode(@Param("wellCode") String wellCode); DeviceConcentratorDto selectDeviceConcentorByCode(@Param("concenCode") String concenCode); @@ -61,4 +61,13 @@ List> selectTempDataList(@Param("dataScope")DataScope dataScope, @Param("wellCode")String wellCode, @Param("beginTime")String beginTime, @Param("endTime")String endTime); List> selectHarmfulDataList(@Param("dataScope")DataScope dataScope, @Param("wellCode")String wellCode, @Param("beginTime")String beginTime, @Param("endTime")String endTime); + + /** + * 查询设备信息 + * @param id 设备主键 + * @return + */ + DeviceInfoDto selectDeviceById(@Param("id") Long id); + + List getDeviceInWellInfo(@Param("id") Long id); } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml index fb6f4f4..c956057 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml @@ -902,5 +902,64 @@ ) t1 ORDER BY uptime asc + + + + d.ID AS deviceId, DEVCODE AS devcode, INSTALL_DATE AS installDate, ONLINE_STATE AS onlineState, t.TYPE_NAME AS typeName + + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java b/casic-device/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java index 72c60f0..090415c 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java @@ -17,7 +17,7 @@ * @author lwh123 * @since 2019-05-23 */ -public interface IDeviceService extends IService { +public interface IDeviceService extends IService{ /** * 根据条件分页查询设备列表 diff --git a/casic-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java index 0b089f3..de9111e 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java @@ -39,7 +39,7 @@ * @since 2019-05-23 */ @Service -public class DeviceServiceImpl extends ServiceImpl implements IDeviceService { +public class DeviceServiceImpl extends ServiceImpl implements IDeviceService,IBusDeviceSupportService { @Autowired private IDeviceTypeService deviceTypeService; @@ -514,4 +514,19 @@ } return list; } + + @Override + public List getDeviceList(DataScope dataScope) { + return this.baseMapper.getDeviceList(dataScope); + } + + @Override + public DeviceInfoDto selectDeviceById(Long id) { + return this.baseMapper.selectDeviceById(id); + } + + @Override + public List getDeviceInWellInfo(Long id) { + return this.baseMapper.getDeviceInWellInfo(id); + } } diff --git a/casic-server-support/src/main/java/com/casic/missiles/modular/system/enmus/HarmfulGasBusiness.java b/casic-server-support/src/main/java/com/casic/missiles/modular/system/enmus/HarmfulGasBusiness.java new file mode 100644 index 0000000..d3bfabc --- /dev/null +++ b/casic-server-support/src/main/java/com/casic/missiles/modular/system/enmus/HarmfulGasBusiness.java @@ -0,0 +1,44 @@ +package com.casic.missiles.modular.system.enmus; + +public enum HarmfulGasBusiness { + + CO(0, "CO浓度","ppm"), + CH4(1, "CH4浓度","%VOL"), + H2S(2, "H2S浓度","ppm"), + O2(3, "O2浓度","%VOL"); + //SWITCH(4, "液位开关",""); + + private int code; + private String desc; + private String unit; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public String getDesc() { + return desc; + } + + public void setDesc(String desc) { + this.desc = desc; + } + + public String getUnit() { + return unit; + } + + public void setUnit(String unit) { + this.unit = unit; + } + + HarmfulGasBusiness(int code, String desc, String unit) { + this.code = code; + this.desc = desc; + this.unit = unit; + } +} diff --git a/casic-server-support/src/main/java/com/casic/missiles/modular/system/enmus/SluicewellExportEnum.java b/casic-server-support/src/main/java/com/casic/missiles/modular/system/enmus/SluicewellExportEnum.java new file mode 100644 index 0000000..d451598 --- /dev/null +++ b/casic-server-support/src/main/java/com/casic/missiles/modular/system/enmus/SluicewellExportEnum.java @@ -0,0 +1,59 @@ +package com.casic.missiles.modular.system.enmus; + + + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +public enum SluicewellExportEnum { + + DEVICE_EXPORT( + new ArrayList() {{ +// add(new Header("井编号", "wellCode")); +// add(new Header("井名称", "wellName")); +// add(new Header("井深", "deep")); +// add(new Header("详细地址", "position")); +// add(new Header("井类型", "wellTypeName")); +// add(new Header("权属单位", "deptName")); +// add(new Header("设备数量", "deviceCount")); +// add(new Header("布防状态", "bfztName")); + }}, "sluicewell.xlsx", "井数据导出"); + + //SLUICEWELLDATA_EXPORT("sluicewell.xlsx", "sluicewell.xlsx", "闸井数据"); + + /** + * 导出模板相对路径 + */ + private List headers; + /** + * 下载文件名 + */ + private String fileName; + /** + * 描述信息 + */ + private String description; + + SluicewellExportEnum(List headers, String fileName, String description) { + this.headers = headers; + this.fileName = fileName; + this.description = description; + } + + public List getHeaders() { + return headers; + } + + public String getFileName() { + return fileName; + } + + public String getDescription() { + return description; + } + + public Map getCustomColumnStyle() { + return null; + } +} diff --git a/casic-server-support/src/main/java/com/casic/missiles/modular/system/enmus/TemphumBusiness.java b/casic-server-support/src/main/java/com/casic/missiles/modular/system/enmus/TemphumBusiness.java new file mode 100644 index 0000000..27d15e2 --- /dev/null +++ b/casic-server-support/src/main/java/com/casic/missiles/modular/system/enmus/TemphumBusiness.java @@ -0,0 +1,41 @@ +package com.casic.missiles.modular.system.enmus; + +public enum TemphumBusiness { + + TEMP(0, "井内温度","℃"), + HUM(1, "井内湿度","%RH"); + + private int code; + private String desc; + private String unit; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public String getDesc() { + return desc; + } + + public void setDesc(String desc) { + this.desc = desc; + } + + public String getUnit() { + return unit; + } + + public void setUnit(String unit) { + this.unit = unit; + } + + TemphumBusiness(int code, String desc, String unit) { + this.code = code; + this.desc = desc; + this.unit = unit; + } +} diff --git a/casic-server-support/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceSupportService.java b/casic-server-support/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceSupportService.java new file mode 100644 index 0000000..0b6fd75 --- /dev/null +++ b/casic-server-support/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceSupportService.java @@ -0,0 +1,42 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.model.application.service.IRepositorySupportService; +import com.casic.missiles.modular.system.dto.DeviceInWellInfo; +import com.casic.missiles.modular.system.dto.DeviceInfoDto; +import com.casic.missiles.modular.system.model.Device; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 设备支撑 + * + * @author lwh + */ +public interface IBusDeviceSupportService { + /** + * 获取设备列表 + * + * @param dataScope 数据权限 + * @return 设备列表 + */ + List getDeviceList(DataScope dataScope); + + + /** + * 查询设备信息 + * + * @param id 设备主键 + * @return 设备信息 + */ + DeviceInfoDto selectDeviceById(Long id); + + /** + * 查询井下设备信息 + * + * @param id 井主键 + * @return 井下设备信息 + */ + List getDeviceInWellInfo(Long id); +} diff --git a/casic-server-support/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoSupportService.java b/casic-server-support/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoSupportService.java new file mode 100644 index 0000000..e34c98e --- /dev/null +++ b/casic-server-support/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoSupportService.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.model.application.service.IRepositorySupportService; +import com.casic.missiles.modular.system.dto.BusWellInfoDto; +import com.casic.missiles.modular.system.model.BusWellInfo; + +import java.util.List; + +/** + * 闸井服务支撑接口 + * + * @author lwh + */ +public interface IBusWellInfoSupportService { + /** + * 获取井列表接口 + * + * @param dataScope 数据权限 + * @param keywords 关键字 + * @param wellType 井类型 + * @param deptid 组织ID + * @return + */ + List getWellList(DataScope dataScope, String keywords, String wellType, String deptid); + + BusWellInfo getById(Long id); +} diff --git a/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/controller/BusMapOverviewController.java b/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/controller/BusMapOverviewController.java deleted file mode 100644 index 078eaf6..0000000 --- a/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/controller/BusMapOverviewController.java +++ /dev/null @@ -1,178 +0,0 @@ -package com.casic.missiles.modular.system.controller; - -import cn.hutool.core.collection.CollectionUtil; -import com.casic.missiles.core.application.context.AbstractPermissionContext; -import com.casic.missiles.core.application.service.AbstractDictService; -import com.casic.missiles.core.base.controller.BaseController; -import com.casic.missiles.core.datascope.DataScope; -import com.casic.missiles.model.exception.ServiceException; -import com.casic.missiles.model.exception.enums.CoreExceptionEnum; -import com.casic.missiles.model.response.ResponseData; -import com.casic.missiles.model.response.SuccessResponseData; -import com.casic.missiles.modular.system.dto.BusWellInfoDto; -import com.casic.missiles.modular.system.dto.DeviceDataDto; -import com.casic.missiles.modular.system.dto.DeviceInfoDto; -import com.casic.missiles.modular.system.dto.WatchDataDto; -import com.casic.missiles.modular.system.model.BusWellInfo; -import com.casic.missiles.modular.system.service.IBusWellInfoService; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestMethod; -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.bind.annotation.ResponseBody; - -import javax.annotation.Resource; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - -/** - * 地图总览模块的controller - * - * @author tanyue - * @Date 2019-05-13 19:20:29 - */ -@Controller -@RequestMapping("/overview") -public class BusMapOverviewController extends BaseController { - - @Resource - private AbstractPermissionContext permissionService; - @Resource - private AbstractDictService dictService; - @Autowired - private IBusWellInfoService busWellInfoService; - - /** - * 获取列表 - */ - @RequestMapping(value = "/wellList") - @ResponseBody - public Object wellList(@RequestParam(required = false) String keywords, - @RequestParam(required = false) String wellType, - @RequestParam(required = false) String deptid, - @RequestParam(required = false) String isAlarm) { - - DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope(); - List wellList = new ArrayList(); - - if (null == isAlarm || isAlarm.equals("") == true) { - // isAlarm参数为空,查询所有的闸井 - - // 查询并添加当前部门的闸井 - List myList = busWellInfoService.getWellList(dataScope, keywords, wellType, deptid); - if (null != myList && myList.isEmpty() == false) { - wellList.addAll(myList); - } - - /** - * 不需要了,由dataScope控制权限 - // 查询并添加下级部门的闸井 - List subDepts = permissionService.getSubDepts(deptid,null); - if (null != subDepts && subDepts.isEmpty() == false) { - for (Long subDeptId : subDepts) { - List subList = busWellInfoService.getWellList(dataScope, keywords, wellType, String.valueOf(subDeptId)); - if (null != subList && subList.isEmpty() == false) { - wellList.addAll(subList); - } - } - } - */ - } else if (isAlarm.equals("1")) { - // isAlarm = 1 查询所有报警状态的闸井 - wellList = busWellInfoService.getAlarmWellList(dataScope, keywords, wellType, deptid); - } else { - // isAlarm = 0 查询所有不是报警状态的闸井 - wellList = busWellInfoService.getNotAlarmWellList(dataScope, keywords, wellType, deptid); - } - - - return ResponseData.success(wellList); - } - - /** - * 获取设备列表 - */ - @RequestMapping(value = "/deviceList") - @ResponseBody - public Object deviceList() { - - DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope(); - List wellList = new ArrayList(); - wellList = busWellInfoService.getDeviceList(dataScope); - return ResponseData.success(wellList); - } - - /** - * 获取设备详情 - */ - @RequestMapping(value = "/deviceDetail", method = RequestMethod.GET) - @ResponseBody - public Object deviceDetail(@RequestParam(required = true) Long id) { - if (null == id) { - throw new ServiceException(CoreExceptionEnum.REQUEST_NULL); - } - DeviceInfoDto deviceInfoDto = busWellInfoService.selectDeviceById(id); - SuccessResponseData successResult = new SuccessResponseData(); - if (null == deviceInfoDto) { - successResult.setCode(200); - successResult.setMessage("success"); - successResult.setData(new HashMap()); - } else { - // 设置最新的监测数据 - List deviceDataDtoList = busWellInfoService. - getDeviceDatas(deviceInfoDto.getDeviceTypeName(), deviceInfoDto.getDevcode(), deviceInfoDto.getOnlineState()); - if (CollectionUtil.isNotEmpty(deviceDataDtoList)) { - deviceInfoDto.setRealtimeData(deviceDataDtoList); - } - successResult.setMessage("success"); - successResult.setData(deviceInfoDto); - } - return successResult; - } - - - /** - * 获取闸井详情 - */ - @RequestMapping(value = "/wellInfo", method = RequestMethod.GET) - @ResponseBody - public Object wellInfo(@RequestParam(required = true) Long id) { - if (null == id) { - throw new ServiceException(CoreExceptionEnum.REQUEST_NULL); - } - - BusWellInfo busWellInfo = busWellInfoService.getById(id); - SuccessResponseData successResult = new SuccessResponseData(); - if (null == busWellInfo) { - successResult.setCode(200); - successResult.setMessage("success"); - successResult.setData(new HashMap()); - } else { - BusWellInfoDto busWellInfoDto = new BusWellInfoDto(); - busWellInfoDto.convertBusWellInfo(busWellInfo); - - // 设置字典值 - busWellInfoDto.setBfztName(dictService.getDictNameByCode("bfzt", busWellInfo.getBfzt())); - busWellInfoDto.setWellTypeName(dictService.getDictNameByCode("sluicewellType", busWellInfo.getWellType())); - busWellInfoDto.setDeptName(permissionService.getDeptService().getDeptName(busWellInfo.getDeptid())); - - // 设置最新的监测数据 - List watchDataDtos = busWellInfoService.getWatchDatas(id); - if (null != watchDataDtos && watchDataDtos.isEmpty() == false) { - for (WatchDataDto watchDataDto : watchDataDtos) { - watchDataDto.setValue(watchDataDto.getData()); - } - } - - busWellInfoDto.setWatchData(watchDataDtos); - - successResult.setMessage("success"); - successResult.setData(busWellInfoDto.toMap()); - } - - return successResult; - } - -} diff --git a/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java b/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java index bd62f3f..ef5a8a8 100644 --- a/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java +++ b/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java @@ -19,7 +19,6 @@ import com.casic.missiles.modular.system.dict.BusWellDict; import com.casic.missiles.modular.system.dto.BatchExportDataDto; import com.casic.missiles.modular.system.dto.HasWellDto; -import com.casic.missiles.modular.system.enmus.SluicewellExportEnum; import com.casic.missiles.modular.system.util.Utility; import com.casic.missiles.quartz.service.IQuartzManager; import org.slf4j.Logger; @@ -217,46 +216,9 @@ } - /** - * 获取闸井设备数据 - */ - @RequestMapping(value = "/watchDataByWell", method = RequestMethod.GET) - @ResponseBody - public Object watchDataByWell(Long id) { - if (null == id) { - throw new ServiceException(CoreExceptionEnum.REQUEST_NULL); - } - SuccessResponseData resultData = new SuccessResponseData(); - resultData.setData(busWellInfoService.getWatchDatas(id)); - - return resultData; - } - - /** - * 根据布防状态统计闸井数量接口 - */ - @RequestMapping(value = "/countByBfzt", method = RequestMethod.GET) - @ResponseBody - public Object countByBfzt() { - DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope(); - Set roleTipes = permissionService.getAuthService().getLoginUser().getRoleTips(); - List deptIds = null; - Boolean isApp = false; - if (roleTipes.contains("leader") || roleTipes.contains("member")) { - deptIds = permissionService.getDeptService().getIdsByPid(permissionService.getAuthService().getLoginUser().getDeptId(), null); - deptIds.add(permissionService.getAuthService().getLoginUser().getDeptId()); - isApp = true; - }else{ - deptIds = dataScope.getDeptIds(); - isApp = false; - } - SuccessResponseData resultData = new SuccessResponseData(); - busWellInfoService.getBfztCountData(deptIds,isApp); - resultData.setData(busWellInfoService.getBfztCountData(deptIds,isApp)); - return resultData; - } + /** * 闸井布防撤防接口 @@ -289,20 +251,6 @@ return ResponseData.success(); } - /** - * 获取布防类型(APP用) - */ - @RequestMapping(value = "/bfType", method = RequestMethod.GET) - @ResponseBody - public Object bfType(Long id) { - if (null ==id) { - throw new ServiceException(CoreExceptionEnum.REQUEST_NULL); - } - SuccessResponseData resultData = new SuccessResponseData(); - resultData.setData(busWellInfoService.getWatchDatas(id)); - - return resultData; - } /** diff --git a/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java b/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java index 001f704..f649b2c 100644 --- a/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java +++ b/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java @@ -21,32 +21,11 @@ List selectDataScopePage(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("keywords") String keywords, @Param("wellType") String wellType, @Param("deptid") String deptid, @Param("bfzt") String bfzt); - List getDeviceInWellInfo(@Param("id") Long id); + List watchData(@Param("id") Long id); - DeviceData wellcoverData(@Param("devcode") String devcode); - DeviceData liquidData(@Param("devcode") String devcode); - - DeviceData harmfulgasData(@Param("devcode") String devcode); - - DeviceData gasData(@Param("devcode") String devcode); - - DeviceData temphumData(@Param("devcode") String devcode); - - DeviceData digData(@Param("devcode") String devcode); - - DeviceData noiseData(@Param("devcode") String devcode); - - DeviceData wellcoverlocaData(@Param("devcode") String devcode); - - DeviceData lgGasData(@Param("devcode") String devcode);//燃气液位 - - DeviceData lgLiquidData(@Param("devcode") String devcode);//燃气液位 - - - BfztCountDataDto bfztCountData(@Param("deptIds") List deptIds, @Param("isApp") Boolean isApp); List selectDataScope(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("wellType") String deviceType, @Param("deptid") String deptid, @Param("keywords") String keywords); @@ -63,9 +42,6 @@ List getWellList(@Param("scope") DataScope dataScope, @Param("keywords") String keywords, @Param("wellType") String deviceType, @Param("deptid") String deptid); - List getAlarmWellList(@Param("scope") DataScope dataScope, @Param("keywords") String keywords, @Param("wellType") String deviceType, @Param("deptid") String deptid); - - List getNotAlarmWellList(@Param("scope") DataScope dataScope, @Param("keywords") String keywords, @Param("wellType") String deviceType, @Param("deptid") String deptid); void updateBatchBfcf(@Param("keywords") String keywords, @Param("wellType") String wellType, @Param("deptid") String deptid, @Param("bfzt") String bfzt, @Param("deptIds") List deptIds); @@ -75,7 +51,7 @@ List getWellListAll(); - List getDeviceList(@Param("scope") DataScope dataScope); - DeviceInfoDto selectDeviceById(@Param("id") Long id); + + } diff --git a/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/controller/BusMapOverviewController.java b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/controller/BusMapOverviewController.java new file mode 100644 index 0000000..9d9f43c --- /dev/null +++ b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/controller/BusMapOverviewController.java @@ -0,0 +1,182 @@ +package com.casic.missiles.modular.system.controller; + +import cn.hutool.core.collection.CollectionUtil; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.model.exception.ServiceException; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.model.response.SuccessResponseData; +import com.casic.missiles.modular.system.dto.BusWellInfoDto; +import com.casic.missiles.modular.system.dto.DeviceDataDto; +import com.casic.missiles.modular.system.dto.DeviceInfoDto; +import com.casic.missiles.modular.system.dto.WatchDataDto; +import com.casic.missiles.modular.system.model.BusWellInfo; +import com.casic.missiles.modular.system.service.IBusDeviceSupportService; +import com.casic.missiles.modular.system.service.IBusWellInfoSupportService; +import com.casic.missiles.modular.system.service.IDataAnalysisService; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.ResponseBody; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; + +/** + * 地图总览模块的controller + * + * @author tanyue + * @Date 2019-05-13 19:20:29 + */ +@Controller +@RequestMapping("/overview") +public class BusMapOverviewController extends BaseController { + + @Resource + private AbstractPermissionContext permissionService; + @Resource + private AbstractDictService dictService; + @Resource + private IBusWellInfoSupportService busWellInfoService; + @Resource + private IDataAnalysisService dataAnalysisService; + @Resource + private IBusDeviceSupportService busDeviceSupportService; + + /** + * 获取列表 + */ + @RequestMapping(value = "/wellList") + @ResponseBody + public Object wellList(@RequestParam(required = false) String keywords, + @RequestParam(required = false) String wellType, + @RequestParam(required = false) String deptid, + @RequestParam(required = false) String isAlarm) { + + DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope(); + List wellList = new ArrayList(); + + if (null == isAlarm || isAlarm.equals("") == true) { + // isAlarm参数为空,查询所有的闸井 + + // 查询并添加当前部门的闸井 + List myList = busWellInfoService.getWellList(dataScope, keywords, wellType, deptid); + if (null != myList && myList.isEmpty() == false) { + wellList.addAll(myList); + } + + /** + * 不需要了,由dataScope控制权限 + // 查询并添加下级部门的闸井 + List subDepts = permissionService.getSubDepts(deptid,null); + if (null != subDepts && subDepts.isEmpty() == false) { + for (Long subDeptId : subDepts) { + List subList = busWellInfoService.getWellList(dataScope, keywords, wellType, String.valueOf(subDeptId)); + if (null != subList && subList.isEmpty() == false) { + wellList.addAll(subList); + } + } + } + */ + } else if (isAlarm.equals("1")) { + // isAlarm = 1 查询所有报警状态的闸井 + wellList = dataAnalysisService.getAlarmWellList(dataScope, keywords, wellType, deptid); + } else { + // isAlarm = 0 查询所有不是报警状态的闸井 + wellList = dataAnalysisService.getNotAlarmWellList(dataScope, keywords, wellType, deptid); + } + + + return ResponseData.success(wellList); + } + + /** + * 获取设备列表 + */ + @RequestMapping(value = "/deviceList") + @ResponseBody + public Object deviceList() { + + DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope(); + List wellList = new ArrayList(); + wellList = busDeviceSupportService.getDeviceList(dataScope); + return ResponseData.success(wellList); + } + + /** + * 获取设备详情 + */ + @RequestMapping(value = "/deviceDetail", method = RequestMethod.GET) + @ResponseBody + public Object deviceDetail(@RequestParam(required = true) Long id) { + if (null == id) { + throw new ServiceException(CoreExceptionEnum.REQUEST_NULL); + } + DeviceInfoDto deviceInfoDto = busDeviceSupportService.selectDeviceById(id); + SuccessResponseData successResult = new SuccessResponseData(); + if (null == deviceInfoDto) { + successResult.setCode(200); + successResult.setMessage("success"); + successResult.setData(new HashMap()); + } else { + // 设置最新的监测数据 + List deviceDataDtoList = dataAnalysisService.getDeviceDatas(deviceInfoDto.getDeviceTypeName(), deviceInfoDto.getDevcode(), deviceInfoDto.getOnlineState()); + if (CollectionUtil.isNotEmpty(deviceDataDtoList)) { + deviceInfoDto.setRealtimeData(deviceDataDtoList); + } + successResult.setMessage("success"); + successResult.setData(deviceInfoDto); + } + return successResult; + } + + + /** + * 获取闸井详情 + */ + @RequestMapping(value = "/wellInfo", method = RequestMethod.GET) + @ResponseBody + public Object wellInfo(@RequestParam(required = true) Long id) { + if (null == id) { + throw new ServiceException(CoreExceptionEnum.REQUEST_NULL); + } + + BusWellInfo busWellInfo = busWellInfoService.getById(id); + SuccessResponseData successResult = new SuccessResponseData(); + if (null == busWellInfo) { + successResult.setCode(200); + successResult.setMessage("success"); + successResult.setData(new HashMap()); + } else { + BusWellInfoDto busWellInfoDto = new BusWellInfoDto(); + busWellInfoDto.convertBusWellInfo(busWellInfo); + + // 设置字典值 + busWellInfoDto.setBfztName(dictService.getDictNameByCode("bfzt", busWellInfo.getBfzt())); + busWellInfoDto.setWellTypeName(dictService.getDictNameByCode("sluicewellType", busWellInfo.getWellType())); + busWellInfoDto.setDeptName(permissionService.getDeptService().getDeptName(busWellInfo.getDeptid())); + + // 设置最新的监测数据 + List watchDataDtos = dataAnalysisService.getWatchDatas(id); + if (null != watchDataDtos && watchDataDtos.isEmpty() == false) { + for (WatchDataDto watchDataDto : watchDataDtos) { + watchDataDto.setValue(watchDataDto.getData()); + } + } + + busWellInfoDto.setWatchData(watchDataDtos); + + successResult.setMessage("success"); + successResult.setData(busWellInfoDto.toMap()); + } + return successResult; + } + + +} diff --git a/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/controller/WellDataController.java b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/controller/WellDataController.java new file mode 100644 index 0000000..c33ec7d --- /dev/null +++ b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/controller/WellDataController.java @@ -0,0 +1,81 @@ +package com.casic.missiles.modular.system.controller; + +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.model.exception.ServiceException; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.model.response.SuccessResponseData; +import com.casic.missiles.modular.system.service.IDataAnalysisService; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.ResponseBody; + +import javax.annotation.Resource; +import java.util.List; +import java.util.Set; + +@Controller +@RequestMapping("/well") +public class WellDataController extends BaseController { + @Resource + private AbstractPermissionContext permissionService; + @Resource + private IDataAnalysisService dataAnalysisService; + + + /** + * 获取闸井设备数据 + */ + @RequestMapping(value = "/watchDataByWell", method = RequestMethod.GET) + @ResponseBody + public Object watchDataByWell(Long id) { + if (null == id) { + throw new ServiceException(CoreExceptionEnum.REQUEST_NULL); + } + SuccessResponseData resultData = new SuccessResponseData(); + resultData.setData(dataAnalysisService.getWatchDatas(id)); + + return resultData; + } + + /** + * 根据布防状态统计闸井数量接口 + */ + @RequestMapping(value = "/countByBfzt", method = RequestMethod.GET) + @ResponseBody + public Object countByBfzt() { + DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope(); + Set roleTipes = permissionService.getAuthService().getLoginUser().getRoleTips(); + List deptIds = null; + Boolean isApp = false; + if (roleTipes.contains("leader") || roleTipes.contains("member")) { + deptIds = permissionService.getDeptService().getIdsByPid(permissionService.getAuthService().getLoginUser().getDeptId(), null); + deptIds.add(permissionService.getAuthService().getLoginUser().getDeptId()); + isApp = true; + } else { + deptIds = dataScope.getDeptIds(); + isApp = false; + } + SuccessResponseData resultData = new SuccessResponseData(); + dataAnalysisService.getBfztCountData(deptIds, isApp); + resultData.setData(dataAnalysisService.getBfztCountData(deptIds, isApp)); + return resultData; + } + + /** + * 获取布防类型(APP用) + */ + @RequestMapping(value = "/bfType", method = RequestMethod.GET) + @ResponseBody + public Object bfType(Long id) { + if (null == id) { + throw new ServiceException(CoreExceptionEnum.REQUEST_NULL); + } + SuccessResponseData resultData = new SuccessResponseData(); + resultData.setData(dataAnalysisService.getWatchDatas(id)); + return resultData; + } + +} diff --git a/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/dao/DataAnalysisMapper.java b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/dao/DataAnalysisMapper.java new file mode 100644 index 0000000..149fb82 --- /dev/null +++ b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/dao/DataAnalysisMapper.java @@ -0,0 +1,48 @@ +package com.casic.missiles.modular.system.dao; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.*; +import com.casic.missiles.modular.system.model.BusWellInfo; +import com.casic.missiles.core.datascope.DataScope; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * 闸井信息表 Mapper 接口 + *

+ * + * @author stylefeng123 + * @since 2019-05-13 + */ +public interface DataAnalysisMapper extends BaseMapper { + + List getAlarmWellList(@Param("scope") DataScope dataScope, @Param("keywords") String keywords, @Param("wellType") String deviceType, @Param("deptid") String deptid); + + List getNotAlarmWellList(@Param("scope") DataScope dataScope, @Param("keywords") String keywords, @Param("wellType") String deviceType, @Param("deptid") String deptid); + + DeviceData wellcoverData(@Param("devcode") String devcode); + + DeviceData liquidData(@Param("devcode") String devcode); + + DeviceData harmfulgasData(@Param("devcode") String devcode); + + DeviceData gasData(@Param("devcode") String devcode); + + DeviceData temphumData(@Param("devcode") String devcode); + + DeviceData digData(@Param("devcode") String devcode); + + DeviceData noiseData(@Param("devcode") String devcode); + + DeviceData wellcoverlocaData(@Param("devcode") String devcode); + + DeviceData lgGasData(@Param("devcode") String devcode);//燃气液位 + + DeviceData lgLiquidData(@Param("devcode") String devcode);//燃气液位 + + + BfztCountDataDto bfztCountData(@Param("deptIds") List deptIds, @Param("isApp") Boolean isApp); +} diff --git a/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/dao/mapping/DataAnalysisMapper.xml b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/dao/mapping/DataAnalysisMapper.xml new file mode 100644 index 0000000..6d7edb3 --- /dev/null +++ b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/dao/mapping/DataAnalysisMapper.xml @@ -0,0 +1,170 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ID + AS id, WELL_CODE AS wellCode, WELL_NAME AS wellName, DEEP AS deep, COORDINATE_X AS coordinateX, COORDINATE_Y AS coordinateY, LAT_BAIDU AS latBaidu, LNG_BAIDU AS lngBaidu, LNG_GAODE AS lngGaode, LAT_GAODE AS latGaode, AREA AS area, POSITION AS position, DEPTID AS deptid, PHOTOS AS photos, NOTES AS notes, WELL_TYPE AS wellType, STAFF AS staff, TEL AS tel, TS AS ts, VALID AS valid, BFZT AS bfzt, RESPONSIBLE_DEPT AS responsibleDept + + + + ID + AS id, WELL_CODE AS wellCode, WELL_NAME AS wellName, DEEP AS deep, COORDINATE_X AS coordinateX, COORDINATE_Y AS coordinateY, LAT_BAIDU AS latBaidu, LNG_BAIDU AS lngBaidu, LNG_GAODE AS lngGaode, LAT_GAODE AS latGaode, AREA AS area, POSITION AS position, DEPTID AS deptid, PHOTOS AS photos, NOTES AS notes, WELL_TYPE AS wellType, STAFF AS staff, TEL AS tel, TS AS ts, VALID AS valid, BFZT AS bfzt,d1.simplename AS deptName,d2.id AS responsibleDept,d2.simplename AS responsibleDeptName + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/service/IDataAnalysisService.java b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/service/IDataAnalysisService.java new file mode 100644 index 0000000..69c8c60 --- /dev/null +++ b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/service/IDataAnalysisService.java @@ -0,0 +1,51 @@ +package com.casic.missiles.modular.system.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.modular.system.dto.BfztCountDataDto; +import com.casic.missiles.modular.system.dto.BusWellInfoDto; +import com.casic.missiles.modular.system.dto.DeviceDataDto; +import com.casic.missiles.modular.system.dto.WatchDataDto; +import com.casic.missiles.modular.system.model.BusWellInfo; + +import java.util.List; + +/** + * 数据统计服务接口 + * + * @author lwh + */ +public interface IDataAnalysisService extends IService { + /** + * 获取告警闸井列表 + * @param dataScope 数据权限 + * @param keywords 关键字 + * @param wellType 井列表 + * @param deptid 组织id + * @return + */ + List getAlarmWellList(DataScope dataScope, String keywords, String wellType, String deptid); + + /** + * 获取不告警井列表信息 + * @param dataScope 数据权限 + * @param keywords 关键字 + * @param wellType 井类型 + * @param deptid 组织id + * @return + */ + List getNotAlarmWellList(DataScope dataScope, String keywords, String wellType, String deptid); + + /** + * 设备数据查询接口 + * @param devTypename 设备类型 + * @param devcode 设备编码 + * @param status 设备状态 + * @return 设备监测数据 + */ + List getDeviceDatas(String devTypename, String devcode, String status); + List getWatchDatas(Long id); + + + BfztCountDataDto getBfztCountData(List deptIds, Boolean isApp); +} diff --git a/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/service/impl/IDataAnalysisServiceImpl.java b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/service/impl/IDataAnalysisServiceImpl.java new file mode 100644 index 0000000..288a828 --- /dev/null +++ b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/service/impl/IDataAnalysisServiceImpl.java @@ -0,0 +1,386 @@ +package com.casic.missiles.modular.system.service.impl; + +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.modular.system.dao.DataAnalysisMapper; +import com.casic.missiles.modular.system.dto.*; +import com.casic.missiles.modular.system.enmus.HarmfulGasBusiness; +import com.casic.missiles.modular.system.enmus.TemphumBusiness; +import com.casic.missiles.modular.system.model.BusWellInfo; +import com.casic.missiles.modular.system.service.IBusDeviceSupportService; +import com.casic.missiles.modular.system.service.IDataAnalysisService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import java.text.DateFormat; +import java.text.DecimalFormat; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.List; + +/** + * 数据统计分析 + * + * @author lwh + */ +@Slf4j +@Component +public class IDataAnalysisServiceImpl extends ServiceImpl implements IDataAnalysisService { + @Resource + private AbstractDictService dictService; + @Resource + private IBusDeviceSupportService deviceSupportService; + + @Override + public List getAlarmWellList(DataScope dataScope, String keywords, String wellType, String deptid) { + return this.baseMapper.getAlarmWellList(dataScope, keywords, wellType, deptid); + } + + @Override + public List getNotAlarmWellList(DataScope dataScope, String keywords, String wellType, String deptid) { + return this.baseMapper.getNotAlarmWellList(dataScope, keywords, wellType, deptid); + } + + @Override + public List getDeviceDatas(String devTypeName, String devcode, String status) { + List deviceDataDtoList = new ArrayList<>(); + DeviceDataDto deviceDataDto = new DeviceDataDto(); + DeviceData deviceData; + DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + switch (devTypeName) { + case "井盖状态监测仪": + deviceData = this.baseMapper.wellcoverData(devcode); + deviceDataDto.setTypeName("井盖状态"); + if (ObjectUtil.isNotEmpty(deviceData)) { + //井盖离线 + if ("0".equals(status)) { + deviceDataDto.setValue("离线"); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } else if ("心跳".equals(deviceData.getData())) { + deviceDataDto.setValue("井盖状态正常"); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } else { + deviceDataDto.setValue(deviceData.getData()); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } + } else { + deviceDataDto.setValue("无数据"); + } + deviceDataDtoList.add(deviceDataDto); + break; + + case "液位监测仪": + deviceData = this.baseMapper.liquidData(devcode); + if (ObjectUtil.isNotEmpty(deviceData)) { + deviceDataDto.setTypeName("井内水位"); + deviceDataDto.setValue(deviceData.getData() + "m"); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + deviceDataDtoList.add(deviceDataDto); + } + break; + + case "有害气体监测仪": + deviceData = this.baseMapper.harmfulgasData(devcode); + if (ObjectUtil.isNotEmpty(deviceData)) { + String[] harmfulGasDatas = deviceData.getData().split(","); + HarmfulGasBusiness[] harmfulGasBusinesses = HarmfulGasBusiness.values(); + for (int i = 0; i < harmfulGasDatas.length; i++) { + deviceDataDto = new DeviceDataDto(); + deviceDataDto.setTypeName(harmfulGasBusinesses[i].getDesc()); + deviceDataDto.setValue(harmfulGasDatas[i] + harmfulGasBusinesses[i].getUnit()); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + deviceDataDtoList.add((DeviceDataDto) deviceDataDto.clone()); + } + } + break; + case "燃气智能监测终端": + deviceData = this.baseMapper.gasData(devcode); + if (ObjectUtil.isNotEmpty(deviceData)) { + deviceDataDto.setTypeName("燃气浓度"); + deviceDataDto.setValue(deviceData.getData() + "%LEL"); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + deviceDataDtoList.add(deviceDataDto); + } + break; + + case "温湿度监测仪": + deviceData = this.baseMapper.temphumData(devcode); + if (ObjectUtil.isNotEmpty(deviceData)) { + String[] temphumDatas = deviceData.getData().split(","); + TemphumBusiness[] temphumBusinesses = TemphumBusiness.values(); + for (int i = 0; i < temphumDatas.length; i++) { + deviceDataDto = new DeviceDataDto(); + deviceDataDto.setTypeName(temphumBusinesses[i].getDesc()); + deviceDataDto.setValue(temphumDatas[i] + temphumBusinesses[i].getUnit()); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + deviceDataDtoList.add((DeviceDataDto) deviceDataDto.clone()); + } + } + break; + + case "开挖监测仪": + deviceData = this.baseMapper.digData(devcode); + if (ObjectUtil.isNotEmpty(deviceData)) { + deviceDataDto.setTypeName("开挖状态"); + deviceDataDto.setValue(deviceData.getData() + "mg"); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + deviceDataDtoList.add(deviceDataDto); + } + break; + + case "噪声记录仪": + deviceData = this.baseMapper.noiseData(devcode); + if (ObjectUtil.isNotEmpty(deviceData)) { + deviceDataDto.setTypeName("管线噪声"); + deviceDataDto.setValue(deviceData.getData() + "mg"); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + deviceDataDtoList.add(deviceDataDto); + } + break; + case "井盖定位监测仪": + deviceData = this.baseMapper.wellcoverlocaData(devcode); + if (ObjectUtil.isNotEmpty(deviceData)) { + deviceDataDto.setTypeName("井盖位置"); + deviceDataDto.setValue(deviceData.getData()); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + deviceDataDtoList.add(deviceDataDto); + } + break; + + case "燃气智能监测终端(一体化)": + deviceData = this.baseMapper.lgGasData(devcode); + deviceDataDto.setTypeName("燃气浓度"); + if (ObjectUtil.isNotEmpty(deviceData)) { + + Double dValue = Double.parseDouble(deviceData.getData()); + if (dValue <= 20.0) { + deviceDataDto.setValue(deviceData.getData() + "%LEL"); + } else { + DecimalFormat df = new DecimalFormat("0.00"); + dValue = dValue / 20.0; + deviceDataDto.setValue(df.format(dValue) + "%VOL"); + } + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } else { + deviceDataDto.setValue("无数据"); + } + deviceDataDtoList.add(deviceDataDto); + + deviceData = this.baseMapper.lgLiquidData(devcode); + deviceDataDto.setTypeName("井内水位"); + if (ObjectUtil.isNotEmpty(deviceData)) { + + deviceDataDto.setValue(deviceData.getData() + "m"); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } else { + deviceDataDto.setValue("无数据"); + } + deviceDataDtoList.add((DeviceDataDto) deviceDataDto.clone()); + break; + + default://未知设备 + log.info("未知设备!"); + break; + } + return deviceDataDtoList; + } + + @Override + public BfztCountDataDto getBfztCountData(List deptIds, Boolean isApp) { + return this.baseMapper.bfztCountData(deptIds, isApp); + } + + @Override + public List getWatchDatas(Long id) { + + List deviceInWellInfos = deviceSupportService.getDeviceInWellInfo(id); + List watchDataDtos = new ArrayList<>(); + + for (DeviceInWellInfo deviceInWellInfo : deviceInWellInfos) { + WatchDataDto watchDataDto = new WatchDataDto(); + watchDataDto.setDeviceId(deviceInWellInfo.getDeviceId()); + watchDataDto.setDevcode(deviceInWellInfo.getDevcode()); + watchDataDto.setInstallDate(deviceInWellInfo.getInstallDate()); + watchDataDto.setOnlineState(deviceInWellInfo.getOnlineState()); + watchDataDto.setOnlineStateName(dictService.getDictNameByCode("onlineStatus", deviceInWellInfo.getOnlineState())); + + DeviceData deviceData; + DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + + switch (deviceInWellInfo.getTypeName()) { + case "井盖状态监测仪": + deviceData = this.baseMapper.wellcoverData(deviceInWellInfo.getDevcode()); + watchDataDto.setWatchType("井盖状态"); + watchDataDto.setType("1"); + if (ObjectUtil.isNotEmpty(deviceData)) { + //井盖离线 + if ("0".equals(watchDataDto.getOnlineState())) { + watchDataDto.setValue("离线"); + watchDataDto.setData("离线"); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } else if ("心跳".equals(deviceData.getData())) { + watchDataDto.setValue("井盖状态正常"); + watchDataDto.setData("井盖状态正常"); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } else { + watchDataDto.setValue(deviceData.getData()); + watchDataDto.setData(deviceData.getData()); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } + } else { + watchDataDto.setValue("无数据"); + watchDataDto.setData("无数据"); + } + watchDataDtos.add(watchDataDto); + break; + + case "液位监测仪": + deviceData = this.baseMapper.liquidData(deviceInWellInfo.getDevcode()); + if (ObjectUtil.isNotEmpty(deviceData)) { + watchDataDto.setWatchType("井内水位"); + watchDataDto.setType("2"); + + watchDataDto.setValue(deviceData.getData() + "m"); + watchDataDto.setData(deviceData.getData() + "m"); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + watchDataDtos.add(watchDataDto); + } + break; + + case "有害气体监测仪": + deviceData = this.baseMapper.harmfulgasData(deviceInWellInfo.getDevcode()); + if (ObjectUtil.isNotEmpty(deviceData)) { + String[] harmfulGasDatas = deviceData.getData().split(","); + HarmfulGasBusiness[] harmfulGasBusinesses = HarmfulGasBusiness.values(); + + for (int i = 0; i < harmfulGasDatas.length; i++) { + watchDataDto.setWatchType(harmfulGasBusinesses[i].getDesc()); + watchDataDto.setType("3"); + watchDataDto.setValue(harmfulGasDatas[i] + harmfulGasBusinesses[i].getUnit()); + watchDataDto.setData(harmfulGasDatas[i] + harmfulGasBusinesses[i].getUnit()); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + watchDataDtos.add((WatchDataDto) watchDataDto.clone()); + } + } + break; + + case "燃气智能监测终端": + deviceData = this.baseMapper.gasData(deviceInWellInfo.getDevcode()); + if (ObjectUtil.isNotEmpty(deviceData)) { + watchDataDto.setWatchType("燃气浓度"); + watchDataDto.setType("4"); + + watchDataDto.setValue(deviceData.getData() + "%LEL"); + watchDataDto.setData(deviceData.getData() + "%LEL"); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + watchDataDtos.add(watchDataDto); + } + break; + + case "温湿度监测仪": + deviceData = this.baseMapper.temphumData(deviceInWellInfo.getDevcode()); + if (ObjectUtil.isNotEmpty(deviceData)) { + String[] temphumDatas = deviceData.getData().split(","); + TemphumBusiness[] temphumBusinesses = TemphumBusiness.values(); + + for (int i = 0; i < temphumDatas.length; i++) { + watchDataDto.setWatchType(temphumBusinesses[i].getDesc()); + watchDataDto.setType("5"); + watchDataDto.setValue(temphumDatas[i] + temphumBusinesses[i].getUnit()); + watchDataDto.setData(temphumDatas[i] + temphumBusinesses[i].getUnit()); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + watchDataDtos.add((WatchDataDto) watchDataDto.clone()); + } + } + break; + + case "开挖监测仪": + deviceData = this.baseMapper.digData(deviceInWellInfo.getDevcode()); + if (ObjectUtil.isNotEmpty(deviceData)) { + watchDataDto.setWatchType("开挖状态"); + watchDataDto.setType("6"); + + watchDataDto.setValue(deviceData.getData() + "mg"); + watchDataDto.setData(deviceData.getData() + "mg"); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + watchDataDtos.add(watchDataDto); + } + break; + + case "噪声记录仪": + deviceData = this.baseMapper.noiseData(deviceInWellInfo.getDevcode()); + if (ObjectUtil.isNotEmpty(deviceData)) { + watchDataDto.setWatchType("管线噪声"); + watchDataDto.setType("8"); + + watchDataDto.setValue(deviceData.getData() + "mg"); + watchDataDto.setData(deviceData.getData() + "mg"); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + watchDataDtos.add(watchDataDto); + } + break; + + case "井盖定位监测仪": + deviceData = this.baseMapper.wellcoverlocaData(deviceInWellInfo.getDevcode()); + if (ObjectUtil.isNotEmpty(deviceData)) { + watchDataDto.setWatchType("井盖位置"); + watchDataDto.setType("7"); + + watchDataDto.setValue(deviceData.getData()); + watchDataDto.setData(deviceData.getData()); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + watchDataDtos.add(watchDataDto); + } + break; + + case "燃气智能监测终端(一体化)": + deviceData = this.baseMapper.lgGasData(deviceInWellInfo.getDevcode()); + watchDataDto.setWatchType("燃气浓度"); + watchDataDto.setType("10"); + if (ObjectUtil.isNotEmpty(deviceData)) { + + Double dValue = Double.parseDouble(deviceData.getData()); + if (dValue <= 20.0) { + watchDataDto.setValue(deviceData.getData() + "%LEL"); + watchDataDto.setData(deviceData.getData() + "%LEL"); + } else { + DecimalFormat df = new DecimalFormat("0.00"); + dValue = dValue / 20.0; + watchDataDto.setValue(df.format(dValue) + "%VOL"); + watchDataDto.setData(df.format(dValue) + "%VOL"); + } + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } else { + watchDataDto.setValue("无数据"); + watchDataDto.setData("无数据"); + } + watchDataDtos.add((WatchDataDto) watchDataDto.clone()); + + deviceData = this.baseMapper.lgLiquidData(deviceInWellInfo.getDevcode()); + watchDataDto.setWatchType("井内水位"); + watchDataDto.setType("10"); + if (ObjectUtil.isNotEmpty(deviceData)) { + + watchDataDto.setValue(deviceData.getData() + "m"); + watchDataDto.setData(deviceData.getData() + "m"); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } else { + watchDataDto.setValue("无数据"); + watchDataDto.setData("无数据"); + } + watchDataDtos.add((WatchDataDto) watchDataDto.clone()); + break; + + default://未知设备 + log.info("未知设备!"); + break; + } + } + + return watchDataDtos; + } + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java index d45eaf7..b9ca243 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java @@ -21,7 +21,7 @@ public interface DeviceMapper extends BaseMapper { List selectDataScopePage(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("deviceType") String deviceType, @Param("deptid") String deptid, @Param("beginTime") String beginTime, @Param("endTime") String endTime, @Param("keywords") String keywords,@Param("isOnline") String isOnline); - + List getDeviceList(@Param("scope") DataScope dataScope); DeviceWellDto selectWellIdByCode(@Param("wellCode") String wellCode); DeviceConcentratorDto selectDeviceConcentorByCode(@Param("concenCode") String concenCode); @@ -61,4 +61,13 @@ List> selectTempDataList(@Param("dataScope")DataScope dataScope, @Param("wellCode")String wellCode, @Param("beginTime")String beginTime, @Param("endTime")String endTime); List> selectHarmfulDataList(@Param("dataScope")DataScope dataScope, @Param("wellCode")String wellCode, @Param("beginTime")String beginTime, @Param("endTime")String endTime); + + /** + * 查询设备信息 + * @param id 设备主键 + * @return + */ + DeviceInfoDto selectDeviceById(@Param("id") Long id); + + List getDeviceInWellInfo(@Param("id") Long id); } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml index fb6f4f4..c956057 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml @@ -902,5 +902,64 @@ ) t1 ORDER BY uptime asc + + + + d.ID AS deviceId, DEVCODE AS devcode, INSTALL_DATE AS installDate, ONLINE_STATE AS onlineState, t.TYPE_NAME AS typeName + + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java b/casic-device/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java index 72c60f0..090415c 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java @@ -17,7 +17,7 @@ * @author lwh123 * @since 2019-05-23 */ -public interface IDeviceService extends IService { +public interface IDeviceService extends IService{ /** * 根据条件分页查询设备列表 diff --git a/casic-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java index 0b089f3..de9111e 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java @@ -39,7 +39,7 @@ * @since 2019-05-23 */ @Service -public class DeviceServiceImpl extends ServiceImpl implements IDeviceService { +public class DeviceServiceImpl extends ServiceImpl implements IDeviceService,IBusDeviceSupportService { @Autowired private IDeviceTypeService deviceTypeService; @@ -514,4 +514,19 @@ } return list; } + + @Override + public List getDeviceList(DataScope dataScope) { + return this.baseMapper.getDeviceList(dataScope); + } + + @Override + public DeviceInfoDto selectDeviceById(Long id) { + return this.baseMapper.selectDeviceById(id); + } + + @Override + public List getDeviceInWellInfo(Long id) { + return this.baseMapper.getDeviceInWellInfo(id); + } } diff --git a/casic-server-support/src/main/java/com/casic/missiles/modular/system/enmus/HarmfulGasBusiness.java b/casic-server-support/src/main/java/com/casic/missiles/modular/system/enmus/HarmfulGasBusiness.java new file mode 100644 index 0000000..d3bfabc --- /dev/null +++ b/casic-server-support/src/main/java/com/casic/missiles/modular/system/enmus/HarmfulGasBusiness.java @@ -0,0 +1,44 @@ +package com.casic.missiles.modular.system.enmus; + +public enum HarmfulGasBusiness { + + CO(0, "CO浓度","ppm"), + CH4(1, "CH4浓度","%VOL"), + H2S(2, "H2S浓度","ppm"), + O2(3, "O2浓度","%VOL"); + //SWITCH(4, "液位开关",""); + + private int code; + private String desc; + private String unit; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public String getDesc() { + return desc; + } + + public void setDesc(String desc) { + this.desc = desc; + } + + public String getUnit() { + return unit; + } + + public void setUnit(String unit) { + this.unit = unit; + } + + HarmfulGasBusiness(int code, String desc, String unit) { + this.code = code; + this.desc = desc; + this.unit = unit; + } +} diff --git a/casic-server-support/src/main/java/com/casic/missiles/modular/system/enmus/SluicewellExportEnum.java b/casic-server-support/src/main/java/com/casic/missiles/modular/system/enmus/SluicewellExportEnum.java new file mode 100644 index 0000000..d451598 --- /dev/null +++ b/casic-server-support/src/main/java/com/casic/missiles/modular/system/enmus/SluicewellExportEnum.java @@ -0,0 +1,59 @@ +package com.casic.missiles.modular.system.enmus; + + + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +public enum SluicewellExportEnum { + + DEVICE_EXPORT( + new ArrayList() {{ +// add(new Header("井编号", "wellCode")); +// add(new Header("井名称", "wellName")); +// add(new Header("井深", "deep")); +// add(new Header("详细地址", "position")); +// add(new Header("井类型", "wellTypeName")); +// add(new Header("权属单位", "deptName")); +// add(new Header("设备数量", "deviceCount")); +// add(new Header("布防状态", "bfztName")); + }}, "sluicewell.xlsx", "井数据导出"); + + //SLUICEWELLDATA_EXPORT("sluicewell.xlsx", "sluicewell.xlsx", "闸井数据"); + + /** + * 导出模板相对路径 + */ + private List headers; + /** + * 下载文件名 + */ + private String fileName; + /** + * 描述信息 + */ + private String description; + + SluicewellExportEnum(List headers, String fileName, String description) { + this.headers = headers; + this.fileName = fileName; + this.description = description; + } + + public List getHeaders() { + return headers; + } + + public String getFileName() { + return fileName; + } + + public String getDescription() { + return description; + } + + public Map getCustomColumnStyle() { + return null; + } +} diff --git a/casic-server-support/src/main/java/com/casic/missiles/modular/system/enmus/TemphumBusiness.java b/casic-server-support/src/main/java/com/casic/missiles/modular/system/enmus/TemphumBusiness.java new file mode 100644 index 0000000..27d15e2 --- /dev/null +++ b/casic-server-support/src/main/java/com/casic/missiles/modular/system/enmus/TemphumBusiness.java @@ -0,0 +1,41 @@ +package com.casic.missiles.modular.system.enmus; + +public enum TemphumBusiness { + + TEMP(0, "井内温度","℃"), + HUM(1, "井内湿度","%RH"); + + private int code; + private String desc; + private String unit; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public String getDesc() { + return desc; + } + + public void setDesc(String desc) { + this.desc = desc; + } + + public String getUnit() { + return unit; + } + + public void setUnit(String unit) { + this.unit = unit; + } + + TemphumBusiness(int code, String desc, String unit) { + this.code = code; + this.desc = desc; + this.unit = unit; + } +} diff --git a/casic-server-support/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceSupportService.java b/casic-server-support/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceSupportService.java new file mode 100644 index 0000000..0b6fd75 --- /dev/null +++ b/casic-server-support/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceSupportService.java @@ -0,0 +1,42 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.model.application.service.IRepositorySupportService; +import com.casic.missiles.modular.system.dto.DeviceInWellInfo; +import com.casic.missiles.modular.system.dto.DeviceInfoDto; +import com.casic.missiles.modular.system.model.Device; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 设备支撑 + * + * @author lwh + */ +public interface IBusDeviceSupportService { + /** + * 获取设备列表 + * + * @param dataScope 数据权限 + * @return 设备列表 + */ + List getDeviceList(DataScope dataScope); + + + /** + * 查询设备信息 + * + * @param id 设备主键 + * @return 设备信息 + */ + DeviceInfoDto selectDeviceById(Long id); + + /** + * 查询井下设备信息 + * + * @param id 井主键 + * @return 井下设备信息 + */ + List getDeviceInWellInfo(Long id); +} diff --git a/casic-server-support/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoSupportService.java b/casic-server-support/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoSupportService.java new file mode 100644 index 0000000..e34c98e --- /dev/null +++ b/casic-server-support/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoSupportService.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.model.application.service.IRepositorySupportService; +import com.casic.missiles.modular.system.dto.BusWellInfoDto; +import com.casic.missiles.modular.system.model.BusWellInfo; + +import java.util.List; + +/** + * 闸井服务支撑接口 + * + * @author lwh + */ +public interface IBusWellInfoSupportService { + /** + * 获取井列表接口 + * + * @param dataScope 数据权限 + * @param keywords 关键字 + * @param wellType 井类型 + * @param deptid 组织ID + * @return + */ + List getWellList(DataScope dataScope, String keywords, String wellType, String deptid); + + BusWellInfo getById(Long id); +} diff --git a/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/controller/BusMapOverviewController.java b/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/controller/BusMapOverviewController.java deleted file mode 100644 index 078eaf6..0000000 --- a/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/controller/BusMapOverviewController.java +++ /dev/null @@ -1,178 +0,0 @@ -package com.casic.missiles.modular.system.controller; - -import cn.hutool.core.collection.CollectionUtil; -import com.casic.missiles.core.application.context.AbstractPermissionContext; -import com.casic.missiles.core.application.service.AbstractDictService; -import com.casic.missiles.core.base.controller.BaseController; -import com.casic.missiles.core.datascope.DataScope; -import com.casic.missiles.model.exception.ServiceException; -import com.casic.missiles.model.exception.enums.CoreExceptionEnum; -import com.casic.missiles.model.response.ResponseData; -import com.casic.missiles.model.response.SuccessResponseData; -import com.casic.missiles.modular.system.dto.BusWellInfoDto; -import com.casic.missiles.modular.system.dto.DeviceDataDto; -import com.casic.missiles.modular.system.dto.DeviceInfoDto; -import com.casic.missiles.modular.system.dto.WatchDataDto; -import com.casic.missiles.modular.system.model.BusWellInfo; -import com.casic.missiles.modular.system.service.IBusWellInfoService; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestMethod; -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.bind.annotation.ResponseBody; - -import javax.annotation.Resource; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - -/** - * 地图总览模块的controller - * - * @author tanyue - * @Date 2019-05-13 19:20:29 - */ -@Controller -@RequestMapping("/overview") -public class BusMapOverviewController extends BaseController { - - @Resource - private AbstractPermissionContext permissionService; - @Resource - private AbstractDictService dictService; - @Autowired - private IBusWellInfoService busWellInfoService; - - /** - * 获取列表 - */ - @RequestMapping(value = "/wellList") - @ResponseBody - public Object wellList(@RequestParam(required = false) String keywords, - @RequestParam(required = false) String wellType, - @RequestParam(required = false) String deptid, - @RequestParam(required = false) String isAlarm) { - - DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope(); - List wellList = new ArrayList(); - - if (null == isAlarm || isAlarm.equals("") == true) { - // isAlarm参数为空,查询所有的闸井 - - // 查询并添加当前部门的闸井 - List myList = busWellInfoService.getWellList(dataScope, keywords, wellType, deptid); - if (null != myList && myList.isEmpty() == false) { - wellList.addAll(myList); - } - - /** - * 不需要了,由dataScope控制权限 - // 查询并添加下级部门的闸井 - List subDepts = permissionService.getSubDepts(deptid,null); - if (null != subDepts && subDepts.isEmpty() == false) { - for (Long subDeptId : subDepts) { - List subList = busWellInfoService.getWellList(dataScope, keywords, wellType, String.valueOf(subDeptId)); - if (null != subList && subList.isEmpty() == false) { - wellList.addAll(subList); - } - } - } - */ - } else if (isAlarm.equals("1")) { - // isAlarm = 1 查询所有报警状态的闸井 - wellList = busWellInfoService.getAlarmWellList(dataScope, keywords, wellType, deptid); - } else { - // isAlarm = 0 查询所有不是报警状态的闸井 - wellList = busWellInfoService.getNotAlarmWellList(dataScope, keywords, wellType, deptid); - } - - - return ResponseData.success(wellList); - } - - /** - * 获取设备列表 - */ - @RequestMapping(value = "/deviceList") - @ResponseBody - public Object deviceList() { - - DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope(); - List wellList = new ArrayList(); - wellList = busWellInfoService.getDeviceList(dataScope); - return ResponseData.success(wellList); - } - - /** - * 获取设备详情 - */ - @RequestMapping(value = "/deviceDetail", method = RequestMethod.GET) - @ResponseBody - public Object deviceDetail(@RequestParam(required = true) Long id) { - if (null == id) { - throw new ServiceException(CoreExceptionEnum.REQUEST_NULL); - } - DeviceInfoDto deviceInfoDto = busWellInfoService.selectDeviceById(id); - SuccessResponseData successResult = new SuccessResponseData(); - if (null == deviceInfoDto) { - successResult.setCode(200); - successResult.setMessage("success"); - successResult.setData(new HashMap()); - } else { - // 设置最新的监测数据 - List deviceDataDtoList = busWellInfoService. - getDeviceDatas(deviceInfoDto.getDeviceTypeName(), deviceInfoDto.getDevcode(), deviceInfoDto.getOnlineState()); - if (CollectionUtil.isNotEmpty(deviceDataDtoList)) { - deviceInfoDto.setRealtimeData(deviceDataDtoList); - } - successResult.setMessage("success"); - successResult.setData(deviceInfoDto); - } - return successResult; - } - - - /** - * 获取闸井详情 - */ - @RequestMapping(value = "/wellInfo", method = RequestMethod.GET) - @ResponseBody - public Object wellInfo(@RequestParam(required = true) Long id) { - if (null == id) { - throw new ServiceException(CoreExceptionEnum.REQUEST_NULL); - } - - BusWellInfo busWellInfo = busWellInfoService.getById(id); - SuccessResponseData successResult = new SuccessResponseData(); - if (null == busWellInfo) { - successResult.setCode(200); - successResult.setMessage("success"); - successResult.setData(new HashMap()); - } else { - BusWellInfoDto busWellInfoDto = new BusWellInfoDto(); - busWellInfoDto.convertBusWellInfo(busWellInfo); - - // 设置字典值 - busWellInfoDto.setBfztName(dictService.getDictNameByCode("bfzt", busWellInfo.getBfzt())); - busWellInfoDto.setWellTypeName(dictService.getDictNameByCode("sluicewellType", busWellInfo.getWellType())); - busWellInfoDto.setDeptName(permissionService.getDeptService().getDeptName(busWellInfo.getDeptid())); - - // 设置最新的监测数据 - List watchDataDtos = busWellInfoService.getWatchDatas(id); - if (null != watchDataDtos && watchDataDtos.isEmpty() == false) { - for (WatchDataDto watchDataDto : watchDataDtos) { - watchDataDto.setValue(watchDataDto.getData()); - } - } - - busWellInfoDto.setWatchData(watchDataDtos); - - successResult.setMessage("success"); - successResult.setData(busWellInfoDto.toMap()); - } - - return successResult; - } - -} diff --git a/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java b/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java index bd62f3f..ef5a8a8 100644 --- a/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java +++ b/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java @@ -19,7 +19,6 @@ import com.casic.missiles.modular.system.dict.BusWellDict; import com.casic.missiles.modular.system.dto.BatchExportDataDto; import com.casic.missiles.modular.system.dto.HasWellDto; -import com.casic.missiles.modular.system.enmus.SluicewellExportEnum; import com.casic.missiles.modular.system.util.Utility; import com.casic.missiles.quartz.service.IQuartzManager; import org.slf4j.Logger; @@ -217,46 +216,9 @@ } - /** - * 获取闸井设备数据 - */ - @RequestMapping(value = "/watchDataByWell", method = RequestMethod.GET) - @ResponseBody - public Object watchDataByWell(Long id) { - if (null == id) { - throw new ServiceException(CoreExceptionEnum.REQUEST_NULL); - } - SuccessResponseData resultData = new SuccessResponseData(); - resultData.setData(busWellInfoService.getWatchDatas(id)); - - return resultData; - } - - /** - * 根据布防状态统计闸井数量接口 - */ - @RequestMapping(value = "/countByBfzt", method = RequestMethod.GET) - @ResponseBody - public Object countByBfzt() { - DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope(); - Set roleTipes = permissionService.getAuthService().getLoginUser().getRoleTips(); - List deptIds = null; - Boolean isApp = false; - if (roleTipes.contains("leader") || roleTipes.contains("member")) { - deptIds = permissionService.getDeptService().getIdsByPid(permissionService.getAuthService().getLoginUser().getDeptId(), null); - deptIds.add(permissionService.getAuthService().getLoginUser().getDeptId()); - isApp = true; - }else{ - deptIds = dataScope.getDeptIds(); - isApp = false; - } - SuccessResponseData resultData = new SuccessResponseData(); - busWellInfoService.getBfztCountData(deptIds,isApp); - resultData.setData(busWellInfoService.getBfztCountData(deptIds,isApp)); - return resultData; - } + /** * 闸井布防撤防接口 @@ -289,20 +251,6 @@ return ResponseData.success(); } - /** - * 获取布防类型(APP用) - */ - @RequestMapping(value = "/bfType", method = RequestMethod.GET) - @ResponseBody - public Object bfType(Long id) { - if (null ==id) { - throw new ServiceException(CoreExceptionEnum.REQUEST_NULL); - } - SuccessResponseData resultData = new SuccessResponseData(); - resultData.setData(busWellInfoService.getWatchDatas(id)); - - return resultData; - } /** diff --git a/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java b/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java index 001f704..f649b2c 100644 --- a/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java +++ b/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java @@ -21,32 +21,11 @@ List selectDataScopePage(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("keywords") String keywords, @Param("wellType") String wellType, @Param("deptid") String deptid, @Param("bfzt") String bfzt); - List getDeviceInWellInfo(@Param("id") Long id); + List watchData(@Param("id") Long id); - DeviceData wellcoverData(@Param("devcode") String devcode); - DeviceData liquidData(@Param("devcode") String devcode); - - DeviceData harmfulgasData(@Param("devcode") String devcode); - - DeviceData gasData(@Param("devcode") String devcode); - - DeviceData temphumData(@Param("devcode") String devcode); - - DeviceData digData(@Param("devcode") String devcode); - - DeviceData noiseData(@Param("devcode") String devcode); - - DeviceData wellcoverlocaData(@Param("devcode") String devcode); - - DeviceData lgGasData(@Param("devcode") String devcode);//燃气液位 - - DeviceData lgLiquidData(@Param("devcode") String devcode);//燃气液位 - - - BfztCountDataDto bfztCountData(@Param("deptIds") List deptIds, @Param("isApp") Boolean isApp); List selectDataScope(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("wellType") String deviceType, @Param("deptid") String deptid, @Param("keywords") String keywords); @@ -63,9 +42,6 @@ List getWellList(@Param("scope") DataScope dataScope, @Param("keywords") String keywords, @Param("wellType") String deviceType, @Param("deptid") String deptid); - List getAlarmWellList(@Param("scope") DataScope dataScope, @Param("keywords") String keywords, @Param("wellType") String deviceType, @Param("deptid") String deptid); - - List getNotAlarmWellList(@Param("scope") DataScope dataScope, @Param("keywords") String keywords, @Param("wellType") String deviceType, @Param("deptid") String deptid); void updateBatchBfcf(@Param("keywords") String keywords, @Param("wellType") String wellType, @Param("deptid") String deptid, @Param("bfzt") String bfzt, @Param("deptIds") List deptIds); @@ -75,7 +51,7 @@ List getWellListAll(); - List getDeviceList(@Param("scope") DataScope dataScope); - DeviceInfoDto selectDeviceById(@Param("id") Long id); + + } diff --git a/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml b/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml index 138f825..44eccc8 100644 --- a/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml +++ b/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml @@ -91,27 +91,6 @@ ) - - d - . - ID - AS deviceId, DEVCODE AS devcode, INSTALL_DATE AS installDate, ONLINE_STATE AS onlineState, t.TYPE_NAME AS typeName - - - @@ -137,103 +116,7 @@ ) - - - - - - - - - - - - - - - - - - - - UPDATE @@ -420,46 +272,6 @@ - - + + diff --git a/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/controller/BusMapOverviewController.java b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/controller/BusMapOverviewController.java new file mode 100644 index 0000000..9d9f43c --- /dev/null +++ b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/controller/BusMapOverviewController.java @@ -0,0 +1,182 @@ +package com.casic.missiles.modular.system.controller; + +import cn.hutool.core.collection.CollectionUtil; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.model.exception.ServiceException; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.model.response.SuccessResponseData; +import com.casic.missiles.modular.system.dto.BusWellInfoDto; +import com.casic.missiles.modular.system.dto.DeviceDataDto; +import com.casic.missiles.modular.system.dto.DeviceInfoDto; +import com.casic.missiles.modular.system.dto.WatchDataDto; +import com.casic.missiles.modular.system.model.BusWellInfo; +import com.casic.missiles.modular.system.service.IBusDeviceSupportService; +import com.casic.missiles.modular.system.service.IBusWellInfoSupportService; +import com.casic.missiles.modular.system.service.IDataAnalysisService; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.ResponseBody; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; + +/** + * 地图总览模块的controller + * + * @author tanyue + * @Date 2019-05-13 19:20:29 + */ +@Controller +@RequestMapping("/overview") +public class BusMapOverviewController extends BaseController { + + @Resource + private AbstractPermissionContext permissionService; + @Resource + private AbstractDictService dictService; + @Resource + private IBusWellInfoSupportService busWellInfoService; + @Resource + private IDataAnalysisService dataAnalysisService; + @Resource + private IBusDeviceSupportService busDeviceSupportService; + + /** + * 获取列表 + */ + @RequestMapping(value = "/wellList") + @ResponseBody + public Object wellList(@RequestParam(required = false) String keywords, + @RequestParam(required = false) String wellType, + @RequestParam(required = false) String deptid, + @RequestParam(required = false) String isAlarm) { + + DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope(); + List wellList = new ArrayList(); + + if (null == isAlarm || isAlarm.equals("") == true) { + // isAlarm参数为空,查询所有的闸井 + + // 查询并添加当前部门的闸井 + List myList = busWellInfoService.getWellList(dataScope, keywords, wellType, deptid); + if (null != myList && myList.isEmpty() == false) { + wellList.addAll(myList); + } + + /** + * 不需要了,由dataScope控制权限 + // 查询并添加下级部门的闸井 + List subDepts = permissionService.getSubDepts(deptid,null); + if (null != subDepts && subDepts.isEmpty() == false) { + for (Long subDeptId : subDepts) { + List subList = busWellInfoService.getWellList(dataScope, keywords, wellType, String.valueOf(subDeptId)); + if (null != subList && subList.isEmpty() == false) { + wellList.addAll(subList); + } + } + } + */ + } else if (isAlarm.equals("1")) { + // isAlarm = 1 查询所有报警状态的闸井 + wellList = dataAnalysisService.getAlarmWellList(dataScope, keywords, wellType, deptid); + } else { + // isAlarm = 0 查询所有不是报警状态的闸井 + wellList = dataAnalysisService.getNotAlarmWellList(dataScope, keywords, wellType, deptid); + } + + + return ResponseData.success(wellList); + } + + /** + * 获取设备列表 + */ + @RequestMapping(value = "/deviceList") + @ResponseBody + public Object deviceList() { + + DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope(); + List wellList = new ArrayList(); + wellList = busDeviceSupportService.getDeviceList(dataScope); + return ResponseData.success(wellList); + } + + /** + * 获取设备详情 + */ + @RequestMapping(value = "/deviceDetail", method = RequestMethod.GET) + @ResponseBody + public Object deviceDetail(@RequestParam(required = true) Long id) { + if (null == id) { + throw new ServiceException(CoreExceptionEnum.REQUEST_NULL); + } + DeviceInfoDto deviceInfoDto = busDeviceSupportService.selectDeviceById(id); + SuccessResponseData successResult = new SuccessResponseData(); + if (null == deviceInfoDto) { + successResult.setCode(200); + successResult.setMessage("success"); + successResult.setData(new HashMap()); + } else { + // 设置最新的监测数据 + List deviceDataDtoList = dataAnalysisService.getDeviceDatas(deviceInfoDto.getDeviceTypeName(), deviceInfoDto.getDevcode(), deviceInfoDto.getOnlineState()); + if (CollectionUtil.isNotEmpty(deviceDataDtoList)) { + deviceInfoDto.setRealtimeData(deviceDataDtoList); + } + successResult.setMessage("success"); + successResult.setData(deviceInfoDto); + } + return successResult; + } + + + /** + * 获取闸井详情 + */ + @RequestMapping(value = "/wellInfo", method = RequestMethod.GET) + @ResponseBody + public Object wellInfo(@RequestParam(required = true) Long id) { + if (null == id) { + throw new ServiceException(CoreExceptionEnum.REQUEST_NULL); + } + + BusWellInfo busWellInfo = busWellInfoService.getById(id); + SuccessResponseData successResult = new SuccessResponseData(); + if (null == busWellInfo) { + successResult.setCode(200); + successResult.setMessage("success"); + successResult.setData(new HashMap()); + } else { + BusWellInfoDto busWellInfoDto = new BusWellInfoDto(); + busWellInfoDto.convertBusWellInfo(busWellInfo); + + // 设置字典值 + busWellInfoDto.setBfztName(dictService.getDictNameByCode("bfzt", busWellInfo.getBfzt())); + busWellInfoDto.setWellTypeName(dictService.getDictNameByCode("sluicewellType", busWellInfo.getWellType())); + busWellInfoDto.setDeptName(permissionService.getDeptService().getDeptName(busWellInfo.getDeptid())); + + // 设置最新的监测数据 + List watchDataDtos = dataAnalysisService.getWatchDatas(id); + if (null != watchDataDtos && watchDataDtos.isEmpty() == false) { + for (WatchDataDto watchDataDto : watchDataDtos) { + watchDataDto.setValue(watchDataDto.getData()); + } + } + + busWellInfoDto.setWatchData(watchDataDtos); + + successResult.setMessage("success"); + successResult.setData(busWellInfoDto.toMap()); + } + return successResult; + } + + +} diff --git a/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/controller/WellDataController.java b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/controller/WellDataController.java new file mode 100644 index 0000000..c33ec7d --- /dev/null +++ b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/controller/WellDataController.java @@ -0,0 +1,81 @@ +package com.casic.missiles.modular.system.controller; + +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.model.exception.ServiceException; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.model.response.SuccessResponseData; +import com.casic.missiles.modular.system.service.IDataAnalysisService; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.ResponseBody; + +import javax.annotation.Resource; +import java.util.List; +import java.util.Set; + +@Controller +@RequestMapping("/well") +public class WellDataController extends BaseController { + @Resource + private AbstractPermissionContext permissionService; + @Resource + private IDataAnalysisService dataAnalysisService; + + + /** + * 获取闸井设备数据 + */ + @RequestMapping(value = "/watchDataByWell", method = RequestMethod.GET) + @ResponseBody + public Object watchDataByWell(Long id) { + if (null == id) { + throw new ServiceException(CoreExceptionEnum.REQUEST_NULL); + } + SuccessResponseData resultData = new SuccessResponseData(); + resultData.setData(dataAnalysisService.getWatchDatas(id)); + + return resultData; + } + + /** + * 根据布防状态统计闸井数量接口 + */ + @RequestMapping(value = "/countByBfzt", method = RequestMethod.GET) + @ResponseBody + public Object countByBfzt() { + DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope(); + Set roleTipes = permissionService.getAuthService().getLoginUser().getRoleTips(); + List deptIds = null; + Boolean isApp = false; + if (roleTipes.contains("leader") || roleTipes.contains("member")) { + deptIds = permissionService.getDeptService().getIdsByPid(permissionService.getAuthService().getLoginUser().getDeptId(), null); + deptIds.add(permissionService.getAuthService().getLoginUser().getDeptId()); + isApp = true; + } else { + deptIds = dataScope.getDeptIds(); + isApp = false; + } + SuccessResponseData resultData = new SuccessResponseData(); + dataAnalysisService.getBfztCountData(deptIds, isApp); + resultData.setData(dataAnalysisService.getBfztCountData(deptIds, isApp)); + return resultData; + } + + /** + * 获取布防类型(APP用) + */ + @RequestMapping(value = "/bfType", method = RequestMethod.GET) + @ResponseBody + public Object bfType(Long id) { + if (null == id) { + throw new ServiceException(CoreExceptionEnum.REQUEST_NULL); + } + SuccessResponseData resultData = new SuccessResponseData(); + resultData.setData(dataAnalysisService.getWatchDatas(id)); + return resultData; + } + +} diff --git a/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/dao/DataAnalysisMapper.java b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/dao/DataAnalysisMapper.java new file mode 100644 index 0000000..149fb82 --- /dev/null +++ b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/dao/DataAnalysisMapper.java @@ -0,0 +1,48 @@ +package com.casic.missiles.modular.system.dao; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.*; +import com.casic.missiles.modular.system.model.BusWellInfo; +import com.casic.missiles.core.datascope.DataScope; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * 闸井信息表 Mapper 接口 + *

+ * + * @author stylefeng123 + * @since 2019-05-13 + */ +public interface DataAnalysisMapper extends BaseMapper { + + List getAlarmWellList(@Param("scope") DataScope dataScope, @Param("keywords") String keywords, @Param("wellType") String deviceType, @Param("deptid") String deptid); + + List getNotAlarmWellList(@Param("scope") DataScope dataScope, @Param("keywords") String keywords, @Param("wellType") String deviceType, @Param("deptid") String deptid); + + DeviceData wellcoverData(@Param("devcode") String devcode); + + DeviceData liquidData(@Param("devcode") String devcode); + + DeviceData harmfulgasData(@Param("devcode") String devcode); + + DeviceData gasData(@Param("devcode") String devcode); + + DeviceData temphumData(@Param("devcode") String devcode); + + DeviceData digData(@Param("devcode") String devcode); + + DeviceData noiseData(@Param("devcode") String devcode); + + DeviceData wellcoverlocaData(@Param("devcode") String devcode); + + DeviceData lgGasData(@Param("devcode") String devcode);//燃气液位 + + DeviceData lgLiquidData(@Param("devcode") String devcode);//燃气液位 + + + BfztCountDataDto bfztCountData(@Param("deptIds") List deptIds, @Param("isApp") Boolean isApp); +} diff --git a/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/dao/mapping/DataAnalysisMapper.xml b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/dao/mapping/DataAnalysisMapper.xml new file mode 100644 index 0000000..6d7edb3 --- /dev/null +++ b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/dao/mapping/DataAnalysisMapper.xml @@ -0,0 +1,170 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ID + AS id, WELL_CODE AS wellCode, WELL_NAME AS wellName, DEEP AS deep, COORDINATE_X AS coordinateX, COORDINATE_Y AS coordinateY, LAT_BAIDU AS latBaidu, LNG_BAIDU AS lngBaidu, LNG_GAODE AS lngGaode, LAT_GAODE AS latGaode, AREA AS area, POSITION AS position, DEPTID AS deptid, PHOTOS AS photos, NOTES AS notes, WELL_TYPE AS wellType, STAFF AS staff, TEL AS tel, TS AS ts, VALID AS valid, BFZT AS bfzt, RESPONSIBLE_DEPT AS responsibleDept + + + + ID + AS id, WELL_CODE AS wellCode, WELL_NAME AS wellName, DEEP AS deep, COORDINATE_X AS coordinateX, COORDINATE_Y AS coordinateY, LAT_BAIDU AS latBaidu, LNG_BAIDU AS lngBaidu, LNG_GAODE AS lngGaode, LAT_GAODE AS latGaode, AREA AS area, POSITION AS position, DEPTID AS deptid, PHOTOS AS photos, NOTES AS notes, WELL_TYPE AS wellType, STAFF AS staff, TEL AS tel, TS AS ts, VALID AS valid, BFZT AS bfzt,d1.simplename AS deptName,d2.id AS responsibleDept,d2.simplename AS responsibleDeptName + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/service/IDataAnalysisService.java b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/service/IDataAnalysisService.java new file mode 100644 index 0000000..69c8c60 --- /dev/null +++ b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/service/IDataAnalysisService.java @@ -0,0 +1,51 @@ +package com.casic.missiles.modular.system.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.modular.system.dto.BfztCountDataDto; +import com.casic.missiles.modular.system.dto.BusWellInfoDto; +import com.casic.missiles.modular.system.dto.DeviceDataDto; +import com.casic.missiles.modular.system.dto.WatchDataDto; +import com.casic.missiles.modular.system.model.BusWellInfo; + +import java.util.List; + +/** + * 数据统计服务接口 + * + * @author lwh + */ +public interface IDataAnalysisService extends IService { + /** + * 获取告警闸井列表 + * @param dataScope 数据权限 + * @param keywords 关键字 + * @param wellType 井列表 + * @param deptid 组织id + * @return + */ + List getAlarmWellList(DataScope dataScope, String keywords, String wellType, String deptid); + + /** + * 获取不告警井列表信息 + * @param dataScope 数据权限 + * @param keywords 关键字 + * @param wellType 井类型 + * @param deptid 组织id + * @return + */ + List getNotAlarmWellList(DataScope dataScope, String keywords, String wellType, String deptid); + + /** + * 设备数据查询接口 + * @param devTypename 设备类型 + * @param devcode 设备编码 + * @param status 设备状态 + * @return 设备监测数据 + */ + List getDeviceDatas(String devTypename, String devcode, String status); + List getWatchDatas(Long id); + + + BfztCountDataDto getBfztCountData(List deptIds, Boolean isApp); +} diff --git a/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/service/impl/IDataAnalysisServiceImpl.java b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/service/impl/IDataAnalysisServiceImpl.java new file mode 100644 index 0000000..288a828 --- /dev/null +++ b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/service/impl/IDataAnalysisServiceImpl.java @@ -0,0 +1,386 @@ +package com.casic.missiles.modular.system.service.impl; + +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.modular.system.dao.DataAnalysisMapper; +import com.casic.missiles.modular.system.dto.*; +import com.casic.missiles.modular.system.enmus.HarmfulGasBusiness; +import com.casic.missiles.modular.system.enmus.TemphumBusiness; +import com.casic.missiles.modular.system.model.BusWellInfo; +import com.casic.missiles.modular.system.service.IBusDeviceSupportService; +import com.casic.missiles.modular.system.service.IDataAnalysisService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import java.text.DateFormat; +import java.text.DecimalFormat; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.List; + +/** + * 数据统计分析 + * + * @author lwh + */ +@Slf4j +@Component +public class IDataAnalysisServiceImpl extends ServiceImpl implements IDataAnalysisService { + @Resource + private AbstractDictService dictService; + @Resource + private IBusDeviceSupportService deviceSupportService; + + @Override + public List getAlarmWellList(DataScope dataScope, String keywords, String wellType, String deptid) { + return this.baseMapper.getAlarmWellList(dataScope, keywords, wellType, deptid); + } + + @Override + public List getNotAlarmWellList(DataScope dataScope, String keywords, String wellType, String deptid) { + return this.baseMapper.getNotAlarmWellList(dataScope, keywords, wellType, deptid); + } + + @Override + public List getDeviceDatas(String devTypeName, String devcode, String status) { + List deviceDataDtoList = new ArrayList<>(); + DeviceDataDto deviceDataDto = new DeviceDataDto(); + DeviceData deviceData; + DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + switch (devTypeName) { + case "井盖状态监测仪": + deviceData = this.baseMapper.wellcoverData(devcode); + deviceDataDto.setTypeName("井盖状态"); + if (ObjectUtil.isNotEmpty(deviceData)) { + //井盖离线 + if ("0".equals(status)) { + deviceDataDto.setValue("离线"); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } else if ("心跳".equals(deviceData.getData())) { + deviceDataDto.setValue("井盖状态正常"); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } else { + deviceDataDto.setValue(deviceData.getData()); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } + } else { + deviceDataDto.setValue("无数据"); + } + deviceDataDtoList.add(deviceDataDto); + break; + + case "液位监测仪": + deviceData = this.baseMapper.liquidData(devcode); + if (ObjectUtil.isNotEmpty(deviceData)) { + deviceDataDto.setTypeName("井内水位"); + deviceDataDto.setValue(deviceData.getData() + "m"); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + deviceDataDtoList.add(deviceDataDto); + } + break; + + case "有害气体监测仪": + deviceData = this.baseMapper.harmfulgasData(devcode); + if (ObjectUtil.isNotEmpty(deviceData)) { + String[] harmfulGasDatas = deviceData.getData().split(","); + HarmfulGasBusiness[] harmfulGasBusinesses = HarmfulGasBusiness.values(); + for (int i = 0; i < harmfulGasDatas.length; i++) { + deviceDataDto = new DeviceDataDto(); + deviceDataDto.setTypeName(harmfulGasBusinesses[i].getDesc()); + deviceDataDto.setValue(harmfulGasDatas[i] + harmfulGasBusinesses[i].getUnit()); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + deviceDataDtoList.add((DeviceDataDto) deviceDataDto.clone()); + } + } + break; + case "燃气智能监测终端": + deviceData = this.baseMapper.gasData(devcode); + if (ObjectUtil.isNotEmpty(deviceData)) { + deviceDataDto.setTypeName("燃气浓度"); + deviceDataDto.setValue(deviceData.getData() + "%LEL"); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + deviceDataDtoList.add(deviceDataDto); + } + break; + + case "温湿度监测仪": + deviceData = this.baseMapper.temphumData(devcode); + if (ObjectUtil.isNotEmpty(deviceData)) { + String[] temphumDatas = deviceData.getData().split(","); + TemphumBusiness[] temphumBusinesses = TemphumBusiness.values(); + for (int i = 0; i < temphumDatas.length; i++) { + deviceDataDto = new DeviceDataDto(); + deviceDataDto.setTypeName(temphumBusinesses[i].getDesc()); + deviceDataDto.setValue(temphumDatas[i] + temphumBusinesses[i].getUnit()); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + deviceDataDtoList.add((DeviceDataDto) deviceDataDto.clone()); + } + } + break; + + case "开挖监测仪": + deviceData = this.baseMapper.digData(devcode); + if (ObjectUtil.isNotEmpty(deviceData)) { + deviceDataDto.setTypeName("开挖状态"); + deviceDataDto.setValue(deviceData.getData() + "mg"); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + deviceDataDtoList.add(deviceDataDto); + } + break; + + case "噪声记录仪": + deviceData = this.baseMapper.noiseData(devcode); + if (ObjectUtil.isNotEmpty(deviceData)) { + deviceDataDto.setTypeName("管线噪声"); + deviceDataDto.setValue(deviceData.getData() + "mg"); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + deviceDataDtoList.add(deviceDataDto); + } + break; + case "井盖定位监测仪": + deviceData = this.baseMapper.wellcoverlocaData(devcode); + if (ObjectUtil.isNotEmpty(deviceData)) { + deviceDataDto.setTypeName("井盖位置"); + deviceDataDto.setValue(deviceData.getData()); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + deviceDataDtoList.add(deviceDataDto); + } + break; + + case "燃气智能监测终端(一体化)": + deviceData = this.baseMapper.lgGasData(devcode); + deviceDataDto.setTypeName("燃气浓度"); + if (ObjectUtil.isNotEmpty(deviceData)) { + + Double dValue = Double.parseDouble(deviceData.getData()); + if (dValue <= 20.0) { + deviceDataDto.setValue(deviceData.getData() + "%LEL"); + } else { + DecimalFormat df = new DecimalFormat("0.00"); + dValue = dValue / 20.0; + deviceDataDto.setValue(df.format(dValue) + "%VOL"); + } + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } else { + deviceDataDto.setValue("无数据"); + } + deviceDataDtoList.add(deviceDataDto); + + deviceData = this.baseMapper.lgLiquidData(devcode); + deviceDataDto.setTypeName("井内水位"); + if (ObjectUtil.isNotEmpty(deviceData)) { + + deviceDataDto.setValue(deviceData.getData() + "m"); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } else { + deviceDataDto.setValue("无数据"); + } + deviceDataDtoList.add((DeviceDataDto) deviceDataDto.clone()); + break; + + default://未知设备 + log.info("未知设备!"); + break; + } + return deviceDataDtoList; + } + + @Override + public BfztCountDataDto getBfztCountData(List deptIds, Boolean isApp) { + return this.baseMapper.bfztCountData(deptIds, isApp); + } + + @Override + public List getWatchDatas(Long id) { + + List deviceInWellInfos = deviceSupportService.getDeviceInWellInfo(id); + List watchDataDtos = new ArrayList<>(); + + for (DeviceInWellInfo deviceInWellInfo : deviceInWellInfos) { + WatchDataDto watchDataDto = new WatchDataDto(); + watchDataDto.setDeviceId(deviceInWellInfo.getDeviceId()); + watchDataDto.setDevcode(deviceInWellInfo.getDevcode()); + watchDataDto.setInstallDate(deviceInWellInfo.getInstallDate()); + watchDataDto.setOnlineState(deviceInWellInfo.getOnlineState()); + watchDataDto.setOnlineStateName(dictService.getDictNameByCode("onlineStatus", deviceInWellInfo.getOnlineState())); + + DeviceData deviceData; + DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + + switch (deviceInWellInfo.getTypeName()) { + case "井盖状态监测仪": + deviceData = this.baseMapper.wellcoverData(deviceInWellInfo.getDevcode()); + watchDataDto.setWatchType("井盖状态"); + watchDataDto.setType("1"); + if (ObjectUtil.isNotEmpty(deviceData)) { + //井盖离线 + if ("0".equals(watchDataDto.getOnlineState())) { + watchDataDto.setValue("离线"); + watchDataDto.setData("离线"); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } else if ("心跳".equals(deviceData.getData())) { + watchDataDto.setValue("井盖状态正常"); + watchDataDto.setData("井盖状态正常"); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } else { + watchDataDto.setValue(deviceData.getData()); + watchDataDto.setData(deviceData.getData()); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } + } else { + watchDataDto.setValue("无数据"); + watchDataDto.setData("无数据"); + } + watchDataDtos.add(watchDataDto); + break; + + case "液位监测仪": + deviceData = this.baseMapper.liquidData(deviceInWellInfo.getDevcode()); + if (ObjectUtil.isNotEmpty(deviceData)) { + watchDataDto.setWatchType("井内水位"); + watchDataDto.setType("2"); + + watchDataDto.setValue(deviceData.getData() + "m"); + watchDataDto.setData(deviceData.getData() + "m"); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + watchDataDtos.add(watchDataDto); + } + break; + + case "有害气体监测仪": + deviceData = this.baseMapper.harmfulgasData(deviceInWellInfo.getDevcode()); + if (ObjectUtil.isNotEmpty(deviceData)) { + String[] harmfulGasDatas = deviceData.getData().split(","); + HarmfulGasBusiness[] harmfulGasBusinesses = HarmfulGasBusiness.values(); + + for (int i = 0; i < harmfulGasDatas.length; i++) { + watchDataDto.setWatchType(harmfulGasBusinesses[i].getDesc()); + watchDataDto.setType("3"); + watchDataDto.setValue(harmfulGasDatas[i] + harmfulGasBusinesses[i].getUnit()); + watchDataDto.setData(harmfulGasDatas[i] + harmfulGasBusinesses[i].getUnit()); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + watchDataDtos.add((WatchDataDto) watchDataDto.clone()); + } + } + break; + + case "燃气智能监测终端": + deviceData = this.baseMapper.gasData(deviceInWellInfo.getDevcode()); + if (ObjectUtil.isNotEmpty(deviceData)) { + watchDataDto.setWatchType("燃气浓度"); + watchDataDto.setType("4"); + + watchDataDto.setValue(deviceData.getData() + "%LEL"); + watchDataDto.setData(deviceData.getData() + "%LEL"); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + watchDataDtos.add(watchDataDto); + } + break; + + case "温湿度监测仪": + deviceData = this.baseMapper.temphumData(deviceInWellInfo.getDevcode()); + if (ObjectUtil.isNotEmpty(deviceData)) { + String[] temphumDatas = deviceData.getData().split(","); + TemphumBusiness[] temphumBusinesses = TemphumBusiness.values(); + + for (int i = 0; i < temphumDatas.length; i++) { + watchDataDto.setWatchType(temphumBusinesses[i].getDesc()); + watchDataDto.setType("5"); + watchDataDto.setValue(temphumDatas[i] + temphumBusinesses[i].getUnit()); + watchDataDto.setData(temphumDatas[i] + temphumBusinesses[i].getUnit()); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + watchDataDtos.add((WatchDataDto) watchDataDto.clone()); + } + } + break; + + case "开挖监测仪": + deviceData = this.baseMapper.digData(deviceInWellInfo.getDevcode()); + if (ObjectUtil.isNotEmpty(deviceData)) { + watchDataDto.setWatchType("开挖状态"); + watchDataDto.setType("6"); + + watchDataDto.setValue(deviceData.getData() + "mg"); + watchDataDto.setData(deviceData.getData() + "mg"); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + watchDataDtos.add(watchDataDto); + } + break; + + case "噪声记录仪": + deviceData = this.baseMapper.noiseData(deviceInWellInfo.getDevcode()); + if (ObjectUtil.isNotEmpty(deviceData)) { + watchDataDto.setWatchType("管线噪声"); + watchDataDto.setType("8"); + + watchDataDto.setValue(deviceData.getData() + "mg"); + watchDataDto.setData(deviceData.getData() + "mg"); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + watchDataDtos.add(watchDataDto); + } + break; + + case "井盖定位监测仪": + deviceData = this.baseMapper.wellcoverlocaData(deviceInWellInfo.getDevcode()); + if (ObjectUtil.isNotEmpty(deviceData)) { + watchDataDto.setWatchType("井盖位置"); + watchDataDto.setType("7"); + + watchDataDto.setValue(deviceData.getData()); + watchDataDto.setData(deviceData.getData()); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + watchDataDtos.add(watchDataDto); + } + break; + + case "燃气智能监测终端(一体化)": + deviceData = this.baseMapper.lgGasData(deviceInWellInfo.getDevcode()); + watchDataDto.setWatchType("燃气浓度"); + watchDataDto.setType("10"); + if (ObjectUtil.isNotEmpty(deviceData)) { + + Double dValue = Double.parseDouble(deviceData.getData()); + if (dValue <= 20.0) { + watchDataDto.setValue(deviceData.getData() + "%LEL"); + watchDataDto.setData(deviceData.getData() + "%LEL"); + } else { + DecimalFormat df = new DecimalFormat("0.00"); + dValue = dValue / 20.0; + watchDataDto.setValue(df.format(dValue) + "%VOL"); + watchDataDto.setData(df.format(dValue) + "%VOL"); + } + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } else { + watchDataDto.setValue("无数据"); + watchDataDto.setData("无数据"); + } + watchDataDtos.add((WatchDataDto) watchDataDto.clone()); + + deviceData = this.baseMapper.lgLiquidData(deviceInWellInfo.getDevcode()); + watchDataDto.setWatchType("井内水位"); + watchDataDto.setType("10"); + if (ObjectUtil.isNotEmpty(deviceData)) { + + watchDataDto.setValue(deviceData.getData() + "m"); + watchDataDto.setData(deviceData.getData() + "m"); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } else { + watchDataDto.setValue("无数据"); + watchDataDto.setData("无数据"); + } + watchDataDtos.add((WatchDataDto) watchDataDto.clone()); + break; + + default://未知设备 + log.info("未知设备!"); + break; + } + } + + return watchDataDtos; + } + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java index d45eaf7..b9ca243 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java @@ -21,7 +21,7 @@ public interface DeviceMapper extends BaseMapper { List selectDataScopePage(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("deviceType") String deviceType, @Param("deptid") String deptid, @Param("beginTime") String beginTime, @Param("endTime") String endTime, @Param("keywords") String keywords,@Param("isOnline") String isOnline); - + List getDeviceList(@Param("scope") DataScope dataScope); DeviceWellDto selectWellIdByCode(@Param("wellCode") String wellCode); DeviceConcentratorDto selectDeviceConcentorByCode(@Param("concenCode") String concenCode); @@ -61,4 +61,13 @@ List> selectTempDataList(@Param("dataScope")DataScope dataScope, @Param("wellCode")String wellCode, @Param("beginTime")String beginTime, @Param("endTime")String endTime); List> selectHarmfulDataList(@Param("dataScope")DataScope dataScope, @Param("wellCode")String wellCode, @Param("beginTime")String beginTime, @Param("endTime")String endTime); + + /** + * 查询设备信息 + * @param id 设备主键 + * @return + */ + DeviceInfoDto selectDeviceById(@Param("id") Long id); + + List getDeviceInWellInfo(@Param("id") Long id); } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml index fb6f4f4..c956057 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml @@ -902,5 +902,64 @@ ) t1 ORDER BY uptime asc + + + + d.ID AS deviceId, DEVCODE AS devcode, INSTALL_DATE AS installDate, ONLINE_STATE AS onlineState, t.TYPE_NAME AS typeName + + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java b/casic-device/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java index 72c60f0..090415c 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java @@ -17,7 +17,7 @@ * @author lwh123 * @since 2019-05-23 */ -public interface IDeviceService extends IService { +public interface IDeviceService extends IService{ /** * 根据条件分页查询设备列表 diff --git a/casic-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java index 0b089f3..de9111e 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java @@ -39,7 +39,7 @@ * @since 2019-05-23 */ @Service -public class DeviceServiceImpl extends ServiceImpl implements IDeviceService { +public class DeviceServiceImpl extends ServiceImpl implements IDeviceService,IBusDeviceSupportService { @Autowired private IDeviceTypeService deviceTypeService; @@ -514,4 +514,19 @@ } return list; } + + @Override + public List getDeviceList(DataScope dataScope) { + return this.baseMapper.getDeviceList(dataScope); + } + + @Override + public DeviceInfoDto selectDeviceById(Long id) { + return this.baseMapper.selectDeviceById(id); + } + + @Override + public List getDeviceInWellInfo(Long id) { + return this.baseMapper.getDeviceInWellInfo(id); + } } diff --git a/casic-server-support/src/main/java/com/casic/missiles/modular/system/enmus/HarmfulGasBusiness.java b/casic-server-support/src/main/java/com/casic/missiles/modular/system/enmus/HarmfulGasBusiness.java new file mode 100644 index 0000000..d3bfabc --- /dev/null +++ b/casic-server-support/src/main/java/com/casic/missiles/modular/system/enmus/HarmfulGasBusiness.java @@ -0,0 +1,44 @@ +package com.casic.missiles.modular.system.enmus; + +public enum HarmfulGasBusiness { + + CO(0, "CO浓度","ppm"), + CH4(1, "CH4浓度","%VOL"), + H2S(2, "H2S浓度","ppm"), + O2(3, "O2浓度","%VOL"); + //SWITCH(4, "液位开关",""); + + private int code; + private String desc; + private String unit; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public String getDesc() { + return desc; + } + + public void setDesc(String desc) { + this.desc = desc; + } + + public String getUnit() { + return unit; + } + + public void setUnit(String unit) { + this.unit = unit; + } + + HarmfulGasBusiness(int code, String desc, String unit) { + this.code = code; + this.desc = desc; + this.unit = unit; + } +} diff --git a/casic-server-support/src/main/java/com/casic/missiles/modular/system/enmus/SluicewellExportEnum.java b/casic-server-support/src/main/java/com/casic/missiles/modular/system/enmus/SluicewellExportEnum.java new file mode 100644 index 0000000..d451598 --- /dev/null +++ b/casic-server-support/src/main/java/com/casic/missiles/modular/system/enmus/SluicewellExportEnum.java @@ -0,0 +1,59 @@ +package com.casic.missiles.modular.system.enmus; + + + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +public enum SluicewellExportEnum { + + DEVICE_EXPORT( + new ArrayList() {{ +// add(new Header("井编号", "wellCode")); +// add(new Header("井名称", "wellName")); +// add(new Header("井深", "deep")); +// add(new Header("详细地址", "position")); +// add(new Header("井类型", "wellTypeName")); +// add(new Header("权属单位", "deptName")); +// add(new Header("设备数量", "deviceCount")); +// add(new Header("布防状态", "bfztName")); + }}, "sluicewell.xlsx", "井数据导出"); + + //SLUICEWELLDATA_EXPORT("sluicewell.xlsx", "sluicewell.xlsx", "闸井数据"); + + /** + * 导出模板相对路径 + */ + private List headers; + /** + * 下载文件名 + */ + private String fileName; + /** + * 描述信息 + */ + private String description; + + SluicewellExportEnum(List headers, String fileName, String description) { + this.headers = headers; + this.fileName = fileName; + this.description = description; + } + + public List getHeaders() { + return headers; + } + + public String getFileName() { + return fileName; + } + + public String getDescription() { + return description; + } + + public Map getCustomColumnStyle() { + return null; + } +} diff --git a/casic-server-support/src/main/java/com/casic/missiles/modular/system/enmus/TemphumBusiness.java b/casic-server-support/src/main/java/com/casic/missiles/modular/system/enmus/TemphumBusiness.java new file mode 100644 index 0000000..27d15e2 --- /dev/null +++ b/casic-server-support/src/main/java/com/casic/missiles/modular/system/enmus/TemphumBusiness.java @@ -0,0 +1,41 @@ +package com.casic.missiles.modular.system.enmus; + +public enum TemphumBusiness { + + TEMP(0, "井内温度","℃"), + HUM(1, "井内湿度","%RH"); + + private int code; + private String desc; + private String unit; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public String getDesc() { + return desc; + } + + public void setDesc(String desc) { + this.desc = desc; + } + + public String getUnit() { + return unit; + } + + public void setUnit(String unit) { + this.unit = unit; + } + + TemphumBusiness(int code, String desc, String unit) { + this.code = code; + this.desc = desc; + this.unit = unit; + } +} diff --git a/casic-server-support/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceSupportService.java b/casic-server-support/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceSupportService.java new file mode 100644 index 0000000..0b6fd75 --- /dev/null +++ b/casic-server-support/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceSupportService.java @@ -0,0 +1,42 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.model.application.service.IRepositorySupportService; +import com.casic.missiles.modular.system.dto.DeviceInWellInfo; +import com.casic.missiles.modular.system.dto.DeviceInfoDto; +import com.casic.missiles.modular.system.model.Device; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 设备支撑 + * + * @author lwh + */ +public interface IBusDeviceSupportService { + /** + * 获取设备列表 + * + * @param dataScope 数据权限 + * @return 设备列表 + */ + List getDeviceList(DataScope dataScope); + + + /** + * 查询设备信息 + * + * @param id 设备主键 + * @return 设备信息 + */ + DeviceInfoDto selectDeviceById(Long id); + + /** + * 查询井下设备信息 + * + * @param id 井主键 + * @return 井下设备信息 + */ + List getDeviceInWellInfo(Long id); +} diff --git a/casic-server-support/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoSupportService.java b/casic-server-support/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoSupportService.java new file mode 100644 index 0000000..e34c98e --- /dev/null +++ b/casic-server-support/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoSupportService.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.model.application.service.IRepositorySupportService; +import com.casic.missiles.modular.system.dto.BusWellInfoDto; +import com.casic.missiles.modular.system.model.BusWellInfo; + +import java.util.List; + +/** + * 闸井服务支撑接口 + * + * @author lwh + */ +public interface IBusWellInfoSupportService { + /** + * 获取井列表接口 + * + * @param dataScope 数据权限 + * @param keywords 关键字 + * @param wellType 井类型 + * @param deptid 组织ID + * @return + */ + List getWellList(DataScope dataScope, String keywords, String wellType, String deptid); + + BusWellInfo getById(Long id); +} diff --git a/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/controller/BusMapOverviewController.java b/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/controller/BusMapOverviewController.java deleted file mode 100644 index 078eaf6..0000000 --- a/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/controller/BusMapOverviewController.java +++ /dev/null @@ -1,178 +0,0 @@ -package com.casic.missiles.modular.system.controller; - -import cn.hutool.core.collection.CollectionUtil; -import com.casic.missiles.core.application.context.AbstractPermissionContext; -import com.casic.missiles.core.application.service.AbstractDictService; -import com.casic.missiles.core.base.controller.BaseController; -import com.casic.missiles.core.datascope.DataScope; -import com.casic.missiles.model.exception.ServiceException; -import com.casic.missiles.model.exception.enums.CoreExceptionEnum; -import com.casic.missiles.model.response.ResponseData; -import com.casic.missiles.model.response.SuccessResponseData; -import com.casic.missiles.modular.system.dto.BusWellInfoDto; -import com.casic.missiles.modular.system.dto.DeviceDataDto; -import com.casic.missiles.modular.system.dto.DeviceInfoDto; -import com.casic.missiles.modular.system.dto.WatchDataDto; -import com.casic.missiles.modular.system.model.BusWellInfo; -import com.casic.missiles.modular.system.service.IBusWellInfoService; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestMethod; -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.bind.annotation.ResponseBody; - -import javax.annotation.Resource; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - -/** - * 地图总览模块的controller - * - * @author tanyue - * @Date 2019-05-13 19:20:29 - */ -@Controller -@RequestMapping("/overview") -public class BusMapOverviewController extends BaseController { - - @Resource - private AbstractPermissionContext permissionService; - @Resource - private AbstractDictService dictService; - @Autowired - private IBusWellInfoService busWellInfoService; - - /** - * 获取列表 - */ - @RequestMapping(value = "/wellList") - @ResponseBody - public Object wellList(@RequestParam(required = false) String keywords, - @RequestParam(required = false) String wellType, - @RequestParam(required = false) String deptid, - @RequestParam(required = false) String isAlarm) { - - DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope(); - List wellList = new ArrayList(); - - if (null == isAlarm || isAlarm.equals("") == true) { - // isAlarm参数为空,查询所有的闸井 - - // 查询并添加当前部门的闸井 - List myList = busWellInfoService.getWellList(dataScope, keywords, wellType, deptid); - if (null != myList && myList.isEmpty() == false) { - wellList.addAll(myList); - } - - /** - * 不需要了,由dataScope控制权限 - // 查询并添加下级部门的闸井 - List subDepts = permissionService.getSubDepts(deptid,null); - if (null != subDepts && subDepts.isEmpty() == false) { - for (Long subDeptId : subDepts) { - List subList = busWellInfoService.getWellList(dataScope, keywords, wellType, String.valueOf(subDeptId)); - if (null != subList && subList.isEmpty() == false) { - wellList.addAll(subList); - } - } - } - */ - } else if (isAlarm.equals("1")) { - // isAlarm = 1 查询所有报警状态的闸井 - wellList = busWellInfoService.getAlarmWellList(dataScope, keywords, wellType, deptid); - } else { - // isAlarm = 0 查询所有不是报警状态的闸井 - wellList = busWellInfoService.getNotAlarmWellList(dataScope, keywords, wellType, deptid); - } - - - return ResponseData.success(wellList); - } - - /** - * 获取设备列表 - */ - @RequestMapping(value = "/deviceList") - @ResponseBody - public Object deviceList() { - - DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope(); - List wellList = new ArrayList(); - wellList = busWellInfoService.getDeviceList(dataScope); - return ResponseData.success(wellList); - } - - /** - * 获取设备详情 - */ - @RequestMapping(value = "/deviceDetail", method = RequestMethod.GET) - @ResponseBody - public Object deviceDetail(@RequestParam(required = true) Long id) { - if (null == id) { - throw new ServiceException(CoreExceptionEnum.REQUEST_NULL); - } - DeviceInfoDto deviceInfoDto = busWellInfoService.selectDeviceById(id); - SuccessResponseData successResult = new SuccessResponseData(); - if (null == deviceInfoDto) { - successResult.setCode(200); - successResult.setMessage("success"); - successResult.setData(new HashMap()); - } else { - // 设置最新的监测数据 - List deviceDataDtoList = busWellInfoService. - getDeviceDatas(deviceInfoDto.getDeviceTypeName(), deviceInfoDto.getDevcode(), deviceInfoDto.getOnlineState()); - if (CollectionUtil.isNotEmpty(deviceDataDtoList)) { - deviceInfoDto.setRealtimeData(deviceDataDtoList); - } - successResult.setMessage("success"); - successResult.setData(deviceInfoDto); - } - return successResult; - } - - - /** - * 获取闸井详情 - */ - @RequestMapping(value = "/wellInfo", method = RequestMethod.GET) - @ResponseBody - public Object wellInfo(@RequestParam(required = true) Long id) { - if (null == id) { - throw new ServiceException(CoreExceptionEnum.REQUEST_NULL); - } - - BusWellInfo busWellInfo = busWellInfoService.getById(id); - SuccessResponseData successResult = new SuccessResponseData(); - if (null == busWellInfo) { - successResult.setCode(200); - successResult.setMessage("success"); - successResult.setData(new HashMap()); - } else { - BusWellInfoDto busWellInfoDto = new BusWellInfoDto(); - busWellInfoDto.convertBusWellInfo(busWellInfo); - - // 设置字典值 - busWellInfoDto.setBfztName(dictService.getDictNameByCode("bfzt", busWellInfo.getBfzt())); - busWellInfoDto.setWellTypeName(dictService.getDictNameByCode("sluicewellType", busWellInfo.getWellType())); - busWellInfoDto.setDeptName(permissionService.getDeptService().getDeptName(busWellInfo.getDeptid())); - - // 设置最新的监测数据 - List watchDataDtos = busWellInfoService.getWatchDatas(id); - if (null != watchDataDtos && watchDataDtos.isEmpty() == false) { - for (WatchDataDto watchDataDto : watchDataDtos) { - watchDataDto.setValue(watchDataDto.getData()); - } - } - - busWellInfoDto.setWatchData(watchDataDtos); - - successResult.setMessage("success"); - successResult.setData(busWellInfoDto.toMap()); - } - - return successResult; - } - -} diff --git a/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java b/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java index bd62f3f..ef5a8a8 100644 --- a/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java +++ b/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java @@ -19,7 +19,6 @@ import com.casic.missiles.modular.system.dict.BusWellDict; import com.casic.missiles.modular.system.dto.BatchExportDataDto; import com.casic.missiles.modular.system.dto.HasWellDto; -import com.casic.missiles.modular.system.enmus.SluicewellExportEnum; import com.casic.missiles.modular.system.util.Utility; import com.casic.missiles.quartz.service.IQuartzManager; import org.slf4j.Logger; @@ -217,46 +216,9 @@ } - /** - * 获取闸井设备数据 - */ - @RequestMapping(value = "/watchDataByWell", method = RequestMethod.GET) - @ResponseBody - public Object watchDataByWell(Long id) { - if (null == id) { - throw new ServiceException(CoreExceptionEnum.REQUEST_NULL); - } - SuccessResponseData resultData = new SuccessResponseData(); - resultData.setData(busWellInfoService.getWatchDatas(id)); - - return resultData; - } - - /** - * 根据布防状态统计闸井数量接口 - */ - @RequestMapping(value = "/countByBfzt", method = RequestMethod.GET) - @ResponseBody - public Object countByBfzt() { - DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope(); - Set roleTipes = permissionService.getAuthService().getLoginUser().getRoleTips(); - List deptIds = null; - Boolean isApp = false; - if (roleTipes.contains("leader") || roleTipes.contains("member")) { - deptIds = permissionService.getDeptService().getIdsByPid(permissionService.getAuthService().getLoginUser().getDeptId(), null); - deptIds.add(permissionService.getAuthService().getLoginUser().getDeptId()); - isApp = true; - }else{ - deptIds = dataScope.getDeptIds(); - isApp = false; - } - SuccessResponseData resultData = new SuccessResponseData(); - busWellInfoService.getBfztCountData(deptIds,isApp); - resultData.setData(busWellInfoService.getBfztCountData(deptIds,isApp)); - return resultData; - } + /** * 闸井布防撤防接口 @@ -289,20 +251,6 @@ return ResponseData.success(); } - /** - * 获取布防类型(APP用) - */ - @RequestMapping(value = "/bfType", method = RequestMethod.GET) - @ResponseBody - public Object bfType(Long id) { - if (null ==id) { - throw new ServiceException(CoreExceptionEnum.REQUEST_NULL); - } - SuccessResponseData resultData = new SuccessResponseData(); - resultData.setData(busWellInfoService.getWatchDatas(id)); - - return resultData; - } /** diff --git a/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java b/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java index 001f704..f649b2c 100644 --- a/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java +++ b/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java @@ -21,32 +21,11 @@ List selectDataScopePage(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("keywords") String keywords, @Param("wellType") String wellType, @Param("deptid") String deptid, @Param("bfzt") String bfzt); - List getDeviceInWellInfo(@Param("id") Long id); + List watchData(@Param("id") Long id); - DeviceData wellcoverData(@Param("devcode") String devcode); - DeviceData liquidData(@Param("devcode") String devcode); - - DeviceData harmfulgasData(@Param("devcode") String devcode); - - DeviceData gasData(@Param("devcode") String devcode); - - DeviceData temphumData(@Param("devcode") String devcode); - - DeviceData digData(@Param("devcode") String devcode); - - DeviceData noiseData(@Param("devcode") String devcode); - - DeviceData wellcoverlocaData(@Param("devcode") String devcode); - - DeviceData lgGasData(@Param("devcode") String devcode);//燃气液位 - - DeviceData lgLiquidData(@Param("devcode") String devcode);//燃气液位 - - - BfztCountDataDto bfztCountData(@Param("deptIds") List deptIds, @Param("isApp") Boolean isApp); List selectDataScope(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("wellType") String deviceType, @Param("deptid") String deptid, @Param("keywords") String keywords); @@ -63,9 +42,6 @@ List getWellList(@Param("scope") DataScope dataScope, @Param("keywords") String keywords, @Param("wellType") String deviceType, @Param("deptid") String deptid); - List getAlarmWellList(@Param("scope") DataScope dataScope, @Param("keywords") String keywords, @Param("wellType") String deviceType, @Param("deptid") String deptid); - - List getNotAlarmWellList(@Param("scope") DataScope dataScope, @Param("keywords") String keywords, @Param("wellType") String deviceType, @Param("deptid") String deptid); void updateBatchBfcf(@Param("keywords") String keywords, @Param("wellType") String wellType, @Param("deptid") String deptid, @Param("bfzt") String bfzt, @Param("deptIds") List deptIds); @@ -75,7 +51,7 @@ List getWellListAll(); - List getDeviceList(@Param("scope") DataScope dataScope); - DeviceInfoDto selectDeviceById(@Param("id") Long id); + + } diff --git a/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml b/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml index 138f825..44eccc8 100644 --- a/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml +++ b/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml @@ -91,27 +91,6 @@ )
- - d - . - ID - AS deviceId, DEVCODE AS devcode, INSTALL_DATE AS installDate, ONLINE_STATE AS onlineState, t.TYPE_NAME AS typeName - - - @@ -137,103 +116,7 @@ ) - - - - - - - - - - - - - - - - - - - - UPDATE @@ -420,46 +272,6 @@ - - + + diff --git a/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/enmus/HarmfulGasBusiness.java b/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/enmus/HarmfulGasBusiness.java deleted file mode 100644 index d3bfabc..0000000 --- a/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/enmus/HarmfulGasBusiness.java +++ /dev/null @@ -1,44 +0,0 @@ -package com.casic.missiles.modular.system.enmus; - -public enum HarmfulGasBusiness { - - CO(0, "CO浓度","ppm"), - CH4(1, "CH4浓度","%VOL"), - H2S(2, "H2S浓度","ppm"), - O2(3, "O2浓度","%VOL"); - //SWITCH(4, "液位开关",""); - - private int code; - private String desc; - private String unit; - - public int getCode() { - return code; - } - - public void setCode(int code) { - this.code = code; - } - - public String getDesc() { - return desc; - } - - public void setDesc(String desc) { - this.desc = desc; - } - - public String getUnit() { - return unit; - } - - public void setUnit(String unit) { - this.unit = unit; - } - - HarmfulGasBusiness(int code, String desc, String unit) { - this.code = code; - this.desc = desc; - this.unit = unit; - } -} diff --git a/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/controller/BusMapOverviewController.java b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/controller/BusMapOverviewController.java new file mode 100644 index 0000000..9d9f43c --- /dev/null +++ b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/controller/BusMapOverviewController.java @@ -0,0 +1,182 @@ +package com.casic.missiles.modular.system.controller; + +import cn.hutool.core.collection.CollectionUtil; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.model.exception.ServiceException; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.model.response.SuccessResponseData; +import com.casic.missiles.modular.system.dto.BusWellInfoDto; +import com.casic.missiles.modular.system.dto.DeviceDataDto; +import com.casic.missiles.modular.system.dto.DeviceInfoDto; +import com.casic.missiles.modular.system.dto.WatchDataDto; +import com.casic.missiles.modular.system.model.BusWellInfo; +import com.casic.missiles.modular.system.service.IBusDeviceSupportService; +import com.casic.missiles.modular.system.service.IBusWellInfoSupportService; +import com.casic.missiles.modular.system.service.IDataAnalysisService; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.ResponseBody; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; + +/** + * 地图总览模块的controller + * + * @author tanyue + * @Date 2019-05-13 19:20:29 + */ +@Controller +@RequestMapping("/overview") +public class BusMapOverviewController extends BaseController { + + @Resource + private AbstractPermissionContext permissionService; + @Resource + private AbstractDictService dictService; + @Resource + private IBusWellInfoSupportService busWellInfoService; + @Resource + private IDataAnalysisService dataAnalysisService; + @Resource + private IBusDeviceSupportService busDeviceSupportService; + + /** + * 获取列表 + */ + @RequestMapping(value = "/wellList") + @ResponseBody + public Object wellList(@RequestParam(required = false) String keywords, + @RequestParam(required = false) String wellType, + @RequestParam(required = false) String deptid, + @RequestParam(required = false) String isAlarm) { + + DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope(); + List wellList = new ArrayList(); + + if (null == isAlarm || isAlarm.equals("") == true) { + // isAlarm参数为空,查询所有的闸井 + + // 查询并添加当前部门的闸井 + List myList = busWellInfoService.getWellList(dataScope, keywords, wellType, deptid); + if (null != myList && myList.isEmpty() == false) { + wellList.addAll(myList); + } + + /** + * 不需要了,由dataScope控制权限 + // 查询并添加下级部门的闸井 + List subDepts = permissionService.getSubDepts(deptid,null); + if (null != subDepts && subDepts.isEmpty() == false) { + for (Long subDeptId : subDepts) { + List subList = busWellInfoService.getWellList(dataScope, keywords, wellType, String.valueOf(subDeptId)); + if (null != subList && subList.isEmpty() == false) { + wellList.addAll(subList); + } + } + } + */ + } else if (isAlarm.equals("1")) { + // isAlarm = 1 查询所有报警状态的闸井 + wellList = dataAnalysisService.getAlarmWellList(dataScope, keywords, wellType, deptid); + } else { + // isAlarm = 0 查询所有不是报警状态的闸井 + wellList = dataAnalysisService.getNotAlarmWellList(dataScope, keywords, wellType, deptid); + } + + + return ResponseData.success(wellList); + } + + /** + * 获取设备列表 + */ + @RequestMapping(value = "/deviceList") + @ResponseBody + public Object deviceList() { + + DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope(); + List wellList = new ArrayList(); + wellList = busDeviceSupportService.getDeviceList(dataScope); + return ResponseData.success(wellList); + } + + /** + * 获取设备详情 + */ + @RequestMapping(value = "/deviceDetail", method = RequestMethod.GET) + @ResponseBody + public Object deviceDetail(@RequestParam(required = true) Long id) { + if (null == id) { + throw new ServiceException(CoreExceptionEnum.REQUEST_NULL); + } + DeviceInfoDto deviceInfoDto = busDeviceSupportService.selectDeviceById(id); + SuccessResponseData successResult = new SuccessResponseData(); + if (null == deviceInfoDto) { + successResult.setCode(200); + successResult.setMessage("success"); + successResult.setData(new HashMap()); + } else { + // 设置最新的监测数据 + List deviceDataDtoList = dataAnalysisService.getDeviceDatas(deviceInfoDto.getDeviceTypeName(), deviceInfoDto.getDevcode(), deviceInfoDto.getOnlineState()); + if (CollectionUtil.isNotEmpty(deviceDataDtoList)) { + deviceInfoDto.setRealtimeData(deviceDataDtoList); + } + successResult.setMessage("success"); + successResult.setData(deviceInfoDto); + } + return successResult; + } + + + /** + * 获取闸井详情 + */ + @RequestMapping(value = "/wellInfo", method = RequestMethod.GET) + @ResponseBody + public Object wellInfo(@RequestParam(required = true) Long id) { + if (null == id) { + throw new ServiceException(CoreExceptionEnum.REQUEST_NULL); + } + + BusWellInfo busWellInfo = busWellInfoService.getById(id); + SuccessResponseData successResult = new SuccessResponseData(); + if (null == busWellInfo) { + successResult.setCode(200); + successResult.setMessage("success"); + successResult.setData(new HashMap()); + } else { + BusWellInfoDto busWellInfoDto = new BusWellInfoDto(); + busWellInfoDto.convertBusWellInfo(busWellInfo); + + // 设置字典值 + busWellInfoDto.setBfztName(dictService.getDictNameByCode("bfzt", busWellInfo.getBfzt())); + busWellInfoDto.setWellTypeName(dictService.getDictNameByCode("sluicewellType", busWellInfo.getWellType())); + busWellInfoDto.setDeptName(permissionService.getDeptService().getDeptName(busWellInfo.getDeptid())); + + // 设置最新的监测数据 + List watchDataDtos = dataAnalysisService.getWatchDatas(id); + if (null != watchDataDtos && watchDataDtos.isEmpty() == false) { + for (WatchDataDto watchDataDto : watchDataDtos) { + watchDataDto.setValue(watchDataDto.getData()); + } + } + + busWellInfoDto.setWatchData(watchDataDtos); + + successResult.setMessage("success"); + successResult.setData(busWellInfoDto.toMap()); + } + return successResult; + } + + +} diff --git a/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/controller/WellDataController.java b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/controller/WellDataController.java new file mode 100644 index 0000000..c33ec7d --- /dev/null +++ b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/controller/WellDataController.java @@ -0,0 +1,81 @@ +package com.casic.missiles.modular.system.controller; + +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.model.exception.ServiceException; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.model.response.SuccessResponseData; +import com.casic.missiles.modular.system.service.IDataAnalysisService; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.ResponseBody; + +import javax.annotation.Resource; +import java.util.List; +import java.util.Set; + +@Controller +@RequestMapping("/well") +public class WellDataController extends BaseController { + @Resource + private AbstractPermissionContext permissionService; + @Resource + private IDataAnalysisService dataAnalysisService; + + + /** + * 获取闸井设备数据 + */ + @RequestMapping(value = "/watchDataByWell", method = RequestMethod.GET) + @ResponseBody + public Object watchDataByWell(Long id) { + if (null == id) { + throw new ServiceException(CoreExceptionEnum.REQUEST_NULL); + } + SuccessResponseData resultData = new SuccessResponseData(); + resultData.setData(dataAnalysisService.getWatchDatas(id)); + + return resultData; + } + + /** + * 根据布防状态统计闸井数量接口 + */ + @RequestMapping(value = "/countByBfzt", method = RequestMethod.GET) + @ResponseBody + public Object countByBfzt() { + DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope(); + Set roleTipes = permissionService.getAuthService().getLoginUser().getRoleTips(); + List deptIds = null; + Boolean isApp = false; + if (roleTipes.contains("leader") || roleTipes.contains("member")) { + deptIds = permissionService.getDeptService().getIdsByPid(permissionService.getAuthService().getLoginUser().getDeptId(), null); + deptIds.add(permissionService.getAuthService().getLoginUser().getDeptId()); + isApp = true; + } else { + deptIds = dataScope.getDeptIds(); + isApp = false; + } + SuccessResponseData resultData = new SuccessResponseData(); + dataAnalysisService.getBfztCountData(deptIds, isApp); + resultData.setData(dataAnalysisService.getBfztCountData(deptIds, isApp)); + return resultData; + } + + /** + * 获取布防类型(APP用) + */ + @RequestMapping(value = "/bfType", method = RequestMethod.GET) + @ResponseBody + public Object bfType(Long id) { + if (null == id) { + throw new ServiceException(CoreExceptionEnum.REQUEST_NULL); + } + SuccessResponseData resultData = new SuccessResponseData(); + resultData.setData(dataAnalysisService.getWatchDatas(id)); + return resultData; + } + +} diff --git a/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/dao/DataAnalysisMapper.java b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/dao/DataAnalysisMapper.java new file mode 100644 index 0000000..149fb82 --- /dev/null +++ b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/dao/DataAnalysisMapper.java @@ -0,0 +1,48 @@ +package com.casic.missiles.modular.system.dao; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.*; +import com.casic.missiles.modular.system.model.BusWellInfo; +import com.casic.missiles.core.datascope.DataScope; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * 闸井信息表 Mapper 接口 + *

+ * + * @author stylefeng123 + * @since 2019-05-13 + */ +public interface DataAnalysisMapper extends BaseMapper { + + List getAlarmWellList(@Param("scope") DataScope dataScope, @Param("keywords") String keywords, @Param("wellType") String deviceType, @Param("deptid") String deptid); + + List getNotAlarmWellList(@Param("scope") DataScope dataScope, @Param("keywords") String keywords, @Param("wellType") String deviceType, @Param("deptid") String deptid); + + DeviceData wellcoverData(@Param("devcode") String devcode); + + DeviceData liquidData(@Param("devcode") String devcode); + + DeviceData harmfulgasData(@Param("devcode") String devcode); + + DeviceData gasData(@Param("devcode") String devcode); + + DeviceData temphumData(@Param("devcode") String devcode); + + DeviceData digData(@Param("devcode") String devcode); + + DeviceData noiseData(@Param("devcode") String devcode); + + DeviceData wellcoverlocaData(@Param("devcode") String devcode); + + DeviceData lgGasData(@Param("devcode") String devcode);//燃气液位 + + DeviceData lgLiquidData(@Param("devcode") String devcode);//燃气液位 + + + BfztCountDataDto bfztCountData(@Param("deptIds") List deptIds, @Param("isApp") Boolean isApp); +} diff --git a/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/dao/mapping/DataAnalysisMapper.xml b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/dao/mapping/DataAnalysisMapper.xml new file mode 100644 index 0000000..6d7edb3 --- /dev/null +++ b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/dao/mapping/DataAnalysisMapper.xml @@ -0,0 +1,170 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ID + AS id, WELL_CODE AS wellCode, WELL_NAME AS wellName, DEEP AS deep, COORDINATE_X AS coordinateX, COORDINATE_Y AS coordinateY, LAT_BAIDU AS latBaidu, LNG_BAIDU AS lngBaidu, LNG_GAODE AS lngGaode, LAT_GAODE AS latGaode, AREA AS area, POSITION AS position, DEPTID AS deptid, PHOTOS AS photos, NOTES AS notes, WELL_TYPE AS wellType, STAFF AS staff, TEL AS tel, TS AS ts, VALID AS valid, BFZT AS bfzt, RESPONSIBLE_DEPT AS responsibleDept + + + + ID + AS id, WELL_CODE AS wellCode, WELL_NAME AS wellName, DEEP AS deep, COORDINATE_X AS coordinateX, COORDINATE_Y AS coordinateY, LAT_BAIDU AS latBaidu, LNG_BAIDU AS lngBaidu, LNG_GAODE AS lngGaode, LAT_GAODE AS latGaode, AREA AS area, POSITION AS position, DEPTID AS deptid, PHOTOS AS photos, NOTES AS notes, WELL_TYPE AS wellType, STAFF AS staff, TEL AS tel, TS AS ts, VALID AS valid, BFZT AS bfzt,d1.simplename AS deptName,d2.id AS responsibleDept,d2.simplename AS responsibleDeptName + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/service/IDataAnalysisService.java b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/service/IDataAnalysisService.java new file mode 100644 index 0000000..69c8c60 --- /dev/null +++ b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/service/IDataAnalysisService.java @@ -0,0 +1,51 @@ +package com.casic.missiles.modular.system.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.modular.system.dto.BfztCountDataDto; +import com.casic.missiles.modular.system.dto.BusWellInfoDto; +import com.casic.missiles.modular.system.dto.DeviceDataDto; +import com.casic.missiles.modular.system.dto.WatchDataDto; +import com.casic.missiles.modular.system.model.BusWellInfo; + +import java.util.List; + +/** + * 数据统计服务接口 + * + * @author lwh + */ +public interface IDataAnalysisService extends IService { + /** + * 获取告警闸井列表 + * @param dataScope 数据权限 + * @param keywords 关键字 + * @param wellType 井列表 + * @param deptid 组织id + * @return + */ + List getAlarmWellList(DataScope dataScope, String keywords, String wellType, String deptid); + + /** + * 获取不告警井列表信息 + * @param dataScope 数据权限 + * @param keywords 关键字 + * @param wellType 井类型 + * @param deptid 组织id + * @return + */ + List getNotAlarmWellList(DataScope dataScope, String keywords, String wellType, String deptid); + + /** + * 设备数据查询接口 + * @param devTypename 设备类型 + * @param devcode 设备编码 + * @param status 设备状态 + * @return 设备监测数据 + */ + List getDeviceDatas(String devTypename, String devcode, String status); + List getWatchDatas(Long id); + + + BfztCountDataDto getBfztCountData(List deptIds, Boolean isApp); +} diff --git a/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/service/impl/IDataAnalysisServiceImpl.java b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/service/impl/IDataAnalysisServiceImpl.java new file mode 100644 index 0000000..288a828 --- /dev/null +++ b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/service/impl/IDataAnalysisServiceImpl.java @@ -0,0 +1,386 @@ +package com.casic.missiles.modular.system.service.impl; + +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.modular.system.dao.DataAnalysisMapper; +import com.casic.missiles.modular.system.dto.*; +import com.casic.missiles.modular.system.enmus.HarmfulGasBusiness; +import com.casic.missiles.modular.system.enmus.TemphumBusiness; +import com.casic.missiles.modular.system.model.BusWellInfo; +import com.casic.missiles.modular.system.service.IBusDeviceSupportService; +import com.casic.missiles.modular.system.service.IDataAnalysisService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import java.text.DateFormat; +import java.text.DecimalFormat; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.List; + +/** + * 数据统计分析 + * + * @author lwh + */ +@Slf4j +@Component +public class IDataAnalysisServiceImpl extends ServiceImpl implements IDataAnalysisService { + @Resource + private AbstractDictService dictService; + @Resource + private IBusDeviceSupportService deviceSupportService; + + @Override + public List getAlarmWellList(DataScope dataScope, String keywords, String wellType, String deptid) { + return this.baseMapper.getAlarmWellList(dataScope, keywords, wellType, deptid); + } + + @Override + public List getNotAlarmWellList(DataScope dataScope, String keywords, String wellType, String deptid) { + return this.baseMapper.getNotAlarmWellList(dataScope, keywords, wellType, deptid); + } + + @Override + public List getDeviceDatas(String devTypeName, String devcode, String status) { + List deviceDataDtoList = new ArrayList<>(); + DeviceDataDto deviceDataDto = new DeviceDataDto(); + DeviceData deviceData; + DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + switch (devTypeName) { + case "井盖状态监测仪": + deviceData = this.baseMapper.wellcoverData(devcode); + deviceDataDto.setTypeName("井盖状态"); + if (ObjectUtil.isNotEmpty(deviceData)) { + //井盖离线 + if ("0".equals(status)) { + deviceDataDto.setValue("离线"); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } else if ("心跳".equals(deviceData.getData())) { + deviceDataDto.setValue("井盖状态正常"); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } else { + deviceDataDto.setValue(deviceData.getData()); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } + } else { + deviceDataDto.setValue("无数据"); + } + deviceDataDtoList.add(deviceDataDto); + break; + + case "液位监测仪": + deviceData = this.baseMapper.liquidData(devcode); + if (ObjectUtil.isNotEmpty(deviceData)) { + deviceDataDto.setTypeName("井内水位"); + deviceDataDto.setValue(deviceData.getData() + "m"); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + deviceDataDtoList.add(deviceDataDto); + } + break; + + case "有害气体监测仪": + deviceData = this.baseMapper.harmfulgasData(devcode); + if (ObjectUtil.isNotEmpty(deviceData)) { + String[] harmfulGasDatas = deviceData.getData().split(","); + HarmfulGasBusiness[] harmfulGasBusinesses = HarmfulGasBusiness.values(); + for (int i = 0; i < harmfulGasDatas.length; i++) { + deviceDataDto = new DeviceDataDto(); + deviceDataDto.setTypeName(harmfulGasBusinesses[i].getDesc()); + deviceDataDto.setValue(harmfulGasDatas[i] + harmfulGasBusinesses[i].getUnit()); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + deviceDataDtoList.add((DeviceDataDto) deviceDataDto.clone()); + } + } + break; + case "燃气智能监测终端": + deviceData = this.baseMapper.gasData(devcode); + if (ObjectUtil.isNotEmpty(deviceData)) { + deviceDataDto.setTypeName("燃气浓度"); + deviceDataDto.setValue(deviceData.getData() + "%LEL"); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + deviceDataDtoList.add(deviceDataDto); + } + break; + + case "温湿度监测仪": + deviceData = this.baseMapper.temphumData(devcode); + if (ObjectUtil.isNotEmpty(deviceData)) { + String[] temphumDatas = deviceData.getData().split(","); + TemphumBusiness[] temphumBusinesses = TemphumBusiness.values(); + for (int i = 0; i < temphumDatas.length; i++) { + deviceDataDto = new DeviceDataDto(); + deviceDataDto.setTypeName(temphumBusinesses[i].getDesc()); + deviceDataDto.setValue(temphumDatas[i] + temphumBusinesses[i].getUnit()); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + deviceDataDtoList.add((DeviceDataDto) deviceDataDto.clone()); + } + } + break; + + case "开挖监测仪": + deviceData = this.baseMapper.digData(devcode); + if (ObjectUtil.isNotEmpty(deviceData)) { + deviceDataDto.setTypeName("开挖状态"); + deviceDataDto.setValue(deviceData.getData() + "mg"); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + deviceDataDtoList.add(deviceDataDto); + } + break; + + case "噪声记录仪": + deviceData = this.baseMapper.noiseData(devcode); + if (ObjectUtil.isNotEmpty(deviceData)) { + deviceDataDto.setTypeName("管线噪声"); + deviceDataDto.setValue(deviceData.getData() + "mg"); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + deviceDataDtoList.add(deviceDataDto); + } + break; + case "井盖定位监测仪": + deviceData = this.baseMapper.wellcoverlocaData(devcode); + if (ObjectUtil.isNotEmpty(deviceData)) { + deviceDataDto.setTypeName("井盖位置"); + deviceDataDto.setValue(deviceData.getData()); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + deviceDataDtoList.add(deviceDataDto); + } + break; + + case "燃气智能监测终端(一体化)": + deviceData = this.baseMapper.lgGasData(devcode); + deviceDataDto.setTypeName("燃气浓度"); + if (ObjectUtil.isNotEmpty(deviceData)) { + + Double dValue = Double.parseDouble(deviceData.getData()); + if (dValue <= 20.0) { + deviceDataDto.setValue(deviceData.getData() + "%LEL"); + } else { + DecimalFormat df = new DecimalFormat("0.00"); + dValue = dValue / 20.0; + deviceDataDto.setValue(df.format(dValue) + "%VOL"); + } + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } else { + deviceDataDto.setValue("无数据"); + } + deviceDataDtoList.add(deviceDataDto); + + deviceData = this.baseMapper.lgLiquidData(devcode); + deviceDataDto.setTypeName("井内水位"); + if (ObjectUtil.isNotEmpty(deviceData)) { + + deviceDataDto.setValue(deviceData.getData() + "m"); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } else { + deviceDataDto.setValue("无数据"); + } + deviceDataDtoList.add((DeviceDataDto) deviceDataDto.clone()); + break; + + default://未知设备 + log.info("未知设备!"); + break; + } + return deviceDataDtoList; + } + + @Override + public BfztCountDataDto getBfztCountData(List deptIds, Boolean isApp) { + return this.baseMapper.bfztCountData(deptIds, isApp); + } + + @Override + public List getWatchDatas(Long id) { + + List deviceInWellInfos = deviceSupportService.getDeviceInWellInfo(id); + List watchDataDtos = new ArrayList<>(); + + for (DeviceInWellInfo deviceInWellInfo : deviceInWellInfos) { + WatchDataDto watchDataDto = new WatchDataDto(); + watchDataDto.setDeviceId(deviceInWellInfo.getDeviceId()); + watchDataDto.setDevcode(deviceInWellInfo.getDevcode()); + watchDataDto.setInstallDate(deviceInWellInfo.getInstallDate()); + watchDataDto.setOnlineState(deviceInWellInfo.getOnlineState()); + watchDataDto.setOnlineStateName(dictService.getDictNameByCode("onlineStatus", deviceInWellInfo.getOnlineState())); + + DeviceData deviceData; + DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + + switch (deviceInWellInfo.getTypeName()) { + case "井盖状态监测仪": + deviceData = this.baseMapper.wellcoverData(deviceInWellInfo.getDevcode()); + watchDataDto.setWatchType("井盖状态"); + watchDataDto.setType("1"); + if (ObjectUtil.isNotEmpty(deviceData)) { + //井盖离线 + if ("0".equals(watchDataDto.getOnlineState())) { + watchDataDto.setValue("离线"); + watchDataDto.setData("离线"); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } else if ("心跳".equals(deviceData.getData())) { + watchDataDto.setValue("井盖状态正常"); + watchDataDto.setData("井盖状态正常"); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } else { + watchDataDto.setValue(deviceData.getData()); + watchDataDto.setData(deviceData.getData()); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } + } else { + watchDataDto.setValue("无数据"); + watchDataDto.setData("无数据"); + } + watchDataDtos.add(watchDataDto); + break; + + case "液位监测仪": + deviceData = this.baseMapper.liquidData(deviceInWellInfo.getDevcode()); + if (ObjectUtil.isNotEmpty(deviceData)) { + watchDataDto.setWatchType("井内水位"); + watchDataDto.setType("2"); + + watchDataDto.setValue(deviceData.getData() + "m"); + watchDataDto.setData(deviceData.getData() + "m"); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + watchDataDtos.add(watchDataDto); + } + break; + + case "有害气体监测仪": + deviceData = this.baseMapper.harmfulgasData(deviceInWellInfo.getDevcode()); + if (ObjectUtil.isNotEmpty(deviceData)) { + String[] harmfulGasDatas = deviceData.getData().split(","); + HarmfulGasBusiness[] harmfulGasBusinesses = HarmfulGasBusiness.values(); + + for (int i = 0; i < harmfulGasDatas.length; i++) { + watchDataDto.setWatchType(harmfulGasBusinesses[i].getDesc()); + watchDataDto.setType("3"); + watchDataDto.setValue(harmfulGasDatas[i] + harmfulGasBusinesses[i].getUnit()); + watchDataDto.setData(harmfulGasDatas[i] + harmfulGasBusinesses[i].getUnit()); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + watchDataDtos.add((WatchDataDto) watchDataDto.clone()); + } + } + break; + + case "燃气智能监测终端": + deviceData = this.baseMapper.gasData(deviceInWellInfo.getDevcode()); + if (ObjectUtil.isNotEmpty(deviceData)) { + watchDataDto.setWatchType("燃气浓度"); + watchDataDto.setType("4"); + + watchDataDto.setValue(deviceData.getData() + "%LEL"); + watchDataDto.setData(deviceData.getData() + "%LEL"); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + watchDataDtos.add(watchDataDto); + } + break; + + case "温湿度监测仪": + deviceData = this.baseMapper.temphumData(deviceInWellInfo.getDevcode()); + if (ObjectUtil.isNotEmpty(deviceData)) { + String[] temphumDatas = deviceData.getData().split(","); + TemphumBusiness[] temphumBusinesses = TemphumBusiness.values(); + + for (int i = 0; i < temphumDatas.length; i++) { + watchDataDto.setWatchType(temphumBusinesses[i].getDesc()); + watchDataDto.setType("5"); + watchDataDto.setValue(temphumDatas[i] + temphumBusinesses[i].getUnit()); + watchDataDto.setData(temphumDatas[i] + temphumBusinesses[i].getUnit()); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + watchDataDtos.add((WatchDataDto) watchDataDto.clone()); + } + } + break; + + case "开挖监测仪": + deviceData = this.baseMapper.digData(deviceInWellInfo.getDevcode()); + if (ObjectUtil.isNotEmpty(deviceData)) { + watchDataDto.setWatchType("开挖状态"); + watchDataDto.setType("6"); + + watchDataDto.setValue(deviceData.getData() + "mg"); + watchDataDto.setData(deviceData.getData() + "mg"); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + watchDataDtos.add(watchDataDto); + } + break; + + case "噪声记录仪": + deviceData = this.baseMapper.noiseData(deviceInWellInfo.getDevcode()); + if (ObjectUtil.isNotEmpty(deviceData)) { + watchDataDto.setWatchType("管线噪声"); + watchDataDto.setType("8"); + + watchDataDto.setValue(deviceData.getData() + "mg"); + watchDataDto.setData(deviceData.getData() + "mg"); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + watchDataDtos.add(watchDataDto); + } + break; + + case "井盖定位监测仪": + deviceData = this.baseMapper.wellcoverlocaData(deviceInWellInfo.getDevcode()); + if (ObjectUtil.isNotEmpty(deviceData)) { + watchDataDto.setWatchType("井盖位置"); + watchDataDto.setType("7"); + + watchDataDto.setValue(deviceData.getData()); + watchDataDto.setData(deviceData.getData()); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + watchDataDtos.add(watchDataDto); + } + break; + + case "燃气智能监测终端(一体化)": + deviceData = this.baseMapper.lgGasData(deviceInWellInfo.getDevcode()); + watchDataDto.setWatchType("燃气浓度"); + watchDataDto.setType("10"); + if (ObjectUtil.isNotEmpty(deviceData)) { + + Double dValue = Double.parseDouble(deviceData.getData()); + if (dValue <= 20.0) { + watchDataDto.setValue(deviceData.getData() + "%LEL"); + watchDataDto.setData(deviceData.getData() + "%LEL"); + } else { + DecimalFormat df = new DecimalFormat("0.00"); + dValue = dValue / 20.0; + watchDataDto.setValue(df.format(dValue) + "%VOL"); + watchDataDto.setData(df.format(dValue) + "%VOL"); + } + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } else { + watchDataDto.setValue("无数据"); + watchDataDto.setData("无数据"); + } + watchDataDtos.add((WatchDataDto) watchDataDto.clone()); + + deviceData = this.baseMapper.lgLiquidData(deviceInWellInfo.getDevcode()); + watchDataDto.setWatchType("井内水位"); + watchDataDto.setType("10"); + if (ObjectUtil.isNotEmpty(deviceData)) { + + watchDataDto.setValue(deviceData.getData() + "m"); + watchDataDto.setData(deviceData.getData() + "m"); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } else { + watchDataDto.setValue("无数据"); + watchDataDto.setData("无数据"); + } + watchDataDtos.add((WatchDataDto) watchDataDto.clone()); + break; + + default://未知设备 + log.info("未知设备!"); + break; + } + } + + return watchDataDtos; + } + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java index d45eaf7..b9ca243 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java @@ -21,7 +21,7 @@ public interface DeviceMapper extends BaseMapper { List selectDataScopePage(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("deviceType") String deviceType, @Param("deptid") String deptid, @Param("beginTime") String beginTime, @Param("endTime") String endTime, @Param("keywords") String keywords,@Param("isOnline") String isOnline); - + List getDeviceList(@Param("scope") DataScope dataScope); DeviceWellDto selectWellIdByCode(@Param("wellCode") String wellCode); DeviceConcentratorDto selectDeviceConcentorByCode(@Param("concenCode") String concenCode); @@ -61,4 +61,13 @@ List> selectTempDataList(@Param("dataScope")DataScope dataScope, @Param("wellCode")String wellCode, @Param("beginTime")String beginTime, @Param("endTime")String endTime); List> selectHarmfulDataList(@Param("dataScope")DataScope dataScope, @Param("wellCode")String wellCode, @Param("beginTime")String beginTime, @Param("endTime")String endTime); + + /** + * 查询设备信息 + * @param id 设备主键 + * @return + */ + DeviceInfoDto selectDeviceById(@Param("id") Long id); + + List getDeviceInWellInfo(@Param("id") Long id); } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml index fb6f4f4..c956057 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml @@ -902,5 +902,64 @@ ) t1 ORDER BY uptime asc + + + + d.ID AS deviceId, DEVCODE AS devcode, INSTALL_DATE AS installDate, ONLINE_STATE AS onlineState, t.TYPE_NAME AS typeName + + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java b/casic-device/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java index 72c60f0..090415c 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java @@ -17,7 +17,7 @@ * @author lwh123 * @since 2019-05-23 */ -public interface IDeviceService extends IService { +public interface IDeviceService extends IService{ /** * 根据条件分页查询设备列表 diff --git a/casic-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java index 0b089f3..de9111e 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java @@ -39,7 +39,7 @@ * @since 2019-05-23 */ @Service -public class DeviceServiceImpl extends ServiceImpl implements IDeviceService { +public class DeviceServiceImpl extends ServiceImpl implements IDeviceService,IBusDeviceSupportService { @Autowired private IDeviceTypeService deviceTypeService; @@ -514,4 +514,19 @@ } return list; } + + @Override + public List getDeviceList(DataScope dataScope) { + return this.baseMapper.getDeviceList(dataScope); + } + + @Override + public DeviceInfoDto selectDeviceById(Long id) { + return this.baseMapper.selectDeviceById(id); + } + + @Override + public List getDeviceInWellInfo(Long id) { + return this.baseMapper.getDeviceInWellInfo(id); + } } diff --git a/casic-server-support/src/main/java/com/casic/missiles/modular/system/enmus/HarmfulGasBusiness.java b/casic-server-support/src/main/java/com/casic/missiles/modular/system/enmus/HarmfulGasBusiness.java new file mode 100644 index 0000000..d3bfabc --- /dev/null +++ b/casic-server-support/src/main/java/com/casic/missiles/modular/system/enmus/HarmfulGasBusiness.java @@ -0,0 +1,44 @@ +package com.casic.missiles.modular.system.enmus; + +public enum HarmfulGasBusiness { + + CO(0, "CO浓度","ppm"), + CH4(1, "CH4浓度","%VOL"), + H2S(2, "H2S浓度","ppm"), + O2(3, "O2浓度","%VOL"); + //SWITCH(4, "液位开关",""); + + private int code; + private String desc; + private String unit; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public String getDesc() { + return desc; + } + + public void setDesc(String desc) { + this.desc = desc; + } + + public String getUnit() { + return unit; + } + + public void setUnit(String unit) { + this.unit = unit; + } + + HarmfulGasBusiness(int code, String desc, String unit) { + this.code = code; + this.desc = desc; + this.unit = unit; + } +} diff --git a/casic-server-support/src/main/java/com/casic/missiles/modular/system/enmus/SluicewellExportEnum.java b/casic-server-support/src/main/java/com/casic/missiles/modular/system/enmus/SluicewellExportEnum.java new file mode 100644 index 0000000..d451598 --- /dev/null +++ b/casic-server-support/src/main/java/com/casic/missiles/modular/system/enmus/SluicewellExportEnum.java @@ -0,0 +1,59 @@ +package com.casic.missiles.modular.system.enmus; + + + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +public enum SluicewellExportEnum { + + DEVICE_EXPORT( + new ArrayList() {{ +// add(new Header("井编号", "wellCode")); +// add(new Header("井名称", "wellName")); +// add(new Header("井深", "deep")); +// add(new Header("详细地址", "position")); +// add(new Header("井类型", "wellTypeName")); +// add(new Header("权属单位", "deptName")); +// add(new Header("设备数量", "deviceCount")); +// add(new Header("布防状态", "bfztName")); + }}, "sluicewell.xlsx", "井数据导出"); + + //SLUICEWELLDATA_EXPORT("sluicewell.xlsx", "sluicewell.xlsx", "闸井数据"); + + /** + * 导出模板相对路径 + */ + private List headers; + /** + * 下载文件名 + */ + private String fileName; + /** + * 描述信息 + */ + private String description; + + SluicewellExportEnum(List headers, String fileName, String description) { + this.headers = headers; + this.fileName = fileName; + this.description = description; + } + + public List getHeaders() { + return headers; + } + + public String getFileName() { + return fileName; + } + + public String getDescription() { + return description; + } + + public Map getCustomColumnStyle() { + return null; + } +} diff --git a/casic-server-support/src/main/java/com/casic/missiles/modular/system/enmus/TemphumBusiness.java b/casic-server-support/src/main/java/com/casic/missiles/modular/system/enmus/TemphumBusiness.java new file mode 100644 index 0000000..27d15e2 --- /dev/null +++ b/casic-server-support/src/main/java/com/casic/missiles/modular/system/enmus/TemphumBusiness.java @@ -0,0 +1,41 @@ +package com.casic.missiles.modular.system.enmus; + +public enum TemphumBusiness { + + TEMP(0, "井内温度","℃"), + HUM(1, "井内湿度","%RH"); + + private int code; + private String desc; + private String unit; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public String getDesc() { + return desc; + } + + public void setDesc(String desc) { + this.desc = desc; + } + + public String getUnit() { + return unit; + } + + public void setUnit(String unit) { + this.unit = unit; + } + + TemphumBusiness(int code, String desc, String unit) { + this.code = code; + this.desc = desc; + this.unit = unit; + } +} diff --git a/casic-server-support/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceSupportService.java b/casic-server-support/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceSupportService.java new file mode 100644 index 0000000..0b6fd75 --- /dev/null +++ b/casic-server-support/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceSupportService.java @@ -0,0 +1,42 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.model.application.service.IRepositorySupportService; +import com.casic.missiles.modular.system.dto.DeviceInWellInfo; +import com.casic.missiles.modular.system.dto.DeviceInfoDto; +import com.casic.missiles.modular.system.model.Device; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 设备支撑 + * + * @author lwh + */ +public interface IBusDeviceSupportService { + /** + * 获取设备列表 + * + * @param dataScope 数据权限 + * @return 设备列表 + */ + List getDeviceList(DataScope dataScope); + + + /** + * 查询设备信息 + * + * @param id 设备主键 + * @return 设备信息 + */ + DeviceInfoDto selectDeviceById(Long id); + + /** + * 查询井下设备信息 + * + * @param id 井主键 + * @return 井下设备信息 + */ + List getDeviceInWellInfo(Long id); +} diff --git a/casic-server-support/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoSupportService.java b/casic-server-support/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoSupportService.java new file mode 100644 index 0000000..e34c98e --- /dev/null +++ b/casic-server-support/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoSupportService.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.model.application.service.IRepositorySupportService; +import com.casic.missiles.modular.system.dto.BusWellInfoDto; +import com.casic.missiles.modular.system.model.BusWellInfo; + +import java.util.List; + +/** + * 闸井服务支撑接口 + * + * @author lwh + */ +public interface IBusWellInfoSupportService { + /** + * 获取井列表接口 + * + * @param dataScope 数据权限 + * @param keywords 关键字 + * @param wellType 井类型 + * @param deptid 组织ID + * @return + */ + List getWellList(DataScope dataScope, String keywords, String wellType, String deptid); + + BusWellInfo getById(Long id); +} diff --git a/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/controller/BusMapOverviewController.java b/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/controller/BusMapOverviewController.java deleted file mode 100644 index 078eaf6..0000000 --- a/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/controller/BusMapOverviewController.java +++ /dev/null @@ -1,178 +0,0 @@ -package com.casic.missiles.modular.system.controller; - -import cn.hutool.core.collection.CollectionUtil; -import com.casic.missiles.core.application.context.AbstractPermissionContext; -import com.casic.missiles.core.application.service.AbstractDictService; -import com.casic.missiles.core.base.controller.BaseController; -import com.casic.missiles.core.datascope.DataScope; -import com.casic.missiles.model.exception.ServiceException; -import com.casic.missiles.model.exception.enums.CoreExceptionEnum; -import com.casic.missiles.model.response.ResponseData; -import com.casic.missiles.model.response.SuccessResponseData; -import com.casic.missiles.modular.system.dto.BusWellInfoDto; -import com.casic.missiles.modular.system.dto.DeviceDataDto; -import com.casic.missiles.modular.system.dto.DeviceInfoDto; -import com.casic.missiles.modular.system.dto.WatchDataDto; -import com.casic.missiles.modular.system.model.BusWellInfo; -import com.casic.missiles.modular.system.service.IBusWellInfoService; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestMethod; -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.bind.annotation.ResponseBody; - -import javax.annotation.Resource; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - -/** - * 地图总览模块的controller - * - * @author tanyue - * @Date 2019-05-13 19:20:29 - */ -@Controller -@RequestMapping("/overview") -public class BusMapOverviewController extends BaseController { - - @Resource - private AbstractPermissionContext permissionService; - @Resource - private AbstractDictService dictService; - @Autowired - private IBusWellInfoService busWellInfoService; - - /** - * 获取列表 - */ - @RequestMapping(value = "/wellList") - @ResponseBody - public Object wellList(@RequestParam(required = false) String keywords, - @RequestParam(required = false) String wellType, - @RequestParam(required = false) String deptid, - @RequestParam(required = false) String isAlarm) { - - DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope(); - List wellList = new ArrayList(); - - if (null == isAlarm || isAlarm.equals("") == true) { - // isAlarm参数为空,查询所有的闸井 - - // 查询并添加当前部门的闸井 - List myList = busWellInfoService.getWellList(dataScope, keywords, wellType, deptid); - if (null != myList && myList.isEmpty() == false) { - wellList.addAll(myList); - } - - /** - * 不需要了,由dataScope控制权限 - // 查询并添加下级部门的闸井 - List subDepts = permissionService.getSubDepts(deptid,null); - if (null != subDepts && subDepts.isEmpty() == false) { - for (Long subDeptId : subDepts) { - List subList = busWellInfoService.getWellList(dataScope, keywords, wellType, String.valueOf(subDeptId)); - if (null != subList && subList.isEmpty() == false) { - wellList.addAll(subList); - } - } - } - */ - } else if (isAlarm.equals("1")) { - // isAlarm = 1 查询所有报警状态的闸井 - wellList = busWellInfoService.getAlarmWellList(dataScope, keywords, wellType, deptid); - } else { - // isAlarm = 0 查询所有不是报警状态的闸井 - wellList = busWellInfoService.getNotAlarmWellList(dataScope, keywords, wellType, deptid); - } - - - return ResponseData.success(wellList); - } - - /** - * 获取设备列表 - */ - @RequestMapping(value = "/deviceList") - @ResponseBody - public Object deviceList() { - - DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope(); - List wellList = new ArrayList(); - wellList = busWellInfoService.getDeviceList(dataScope); - return ResponseData.success(wellList); - } - - /** - * 获取设备详情 - */ - @RequestMapping(value = "/deviceDetail", method = RequestMethod.GET) - @ResponseBody - public Object deviceDetail(@RequestParam(required = true) Long id) { - if (null == id) { - throw new ServiceException(CoreExceptionEnum.REQUEST_NULL); - } - DeviceInfoDto deviceInfoDto = busWellInfoService.selectDeviceById(id); - SuccessResponseData successResult = new SuccessResponseData(); - if (null == deviceInfoDto) { - successResult.setCode(200); - successResult.setMessage("success"); - successResult.setData(new HashMap()); - } else { - // 设置最新的监测数据 - List deviceDataDtoList = busWellInfoService. - getDeviceDatas(deviceInfoDto.getDeviceTypeName(), deviceInfoDto.getDevcode(), deviceInfoDto.getOnlineState()); - if (CollectionUtil.isNotEmpty(deviceDataDtoList)) { - deviceInfoDto.setRealtimeData(deviceDataDtoList); - } - successResult.setMessage("success"); - successResult.setData(deviceInfoDto); - } - return successResult; - } - - - /** - * 获取闸井详情 - */ - @RequestMapping(value = "/wellInfo", method = RequestMethod.GET) - @ResponseBody - public Object wellInfo(@RequestParam(required = true) Long id) { - if (null == id) { - throw new ServiceException(CoreExceptionEnum.REQUEST_NULL); - } - - BusWellInfo busWellInfo = busWellInfoService.getById(id); - SuccessResponseData successResult = new SuccessResponseData(); - if (null == busWellInfo) { - successResult.setCode(200); - successResult.setMessage("success"); - successResult.setData(new HashMap()); - } else { - BusWellInfoDto busWellInfoDto = new BusWellInfoDto(); - busWellInfoDto.convertBusWellInfo(busWellInfo); - - // 设置字典值 - busWellInfoDto.setBfztName(dictService.getDictNameByCode("bfzt", busWellInfo.getBfzt())); - busWellInfoDto.setWellTypeName(dictService.getDictNameByCode("sluicewellType", busWellInfo.getWellType())); - busWellInfoDto.setDeptName(permissionService.getDeptService().getDeptName(busWellInfo.getDeptid())); - - // 设置最新的监测数据 - List watchDataDtos = busWellInfoService.getWatchDatas(id); - if (null != watchDataDtos && watchDataDtos.isEmpty() == false) { - for (WatchDataDto watchDataDto : watchDataDtos) { - watchDataDto.setValue(watchDataDto.getData()); - } - } - - busWellInfoDto.setWatchData(watchDataDtos); - - successResult.setMessage("success"); - successResult.setData(busWellInfoDto.toMap()); - } - - return successResult; - } - -} diff --git a/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java b/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java index bd62f3f..ef5a8a8 100644 --- a/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java +++ b/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java @@ -19,7 +19,6 @@ import com.casic.missiles.modular.system.dict.BusWellDict; import com.casic.missiles.modular.system.dto.BatchExportDataDto; import com.casic.missiles.modular.system.dto.HasWellDto; -import com.casic.missiles.modular.system.enmus.SluicewellExportEnum; import com.casic.missiles.modular.system.util.Utility; import com.casic.missiles.quartz.service.IQuartzManager; import org.slf4j.Logger; @@ -217,46 +216,9 @@ } - /** - * 获取闸井设备数据 - */ - @RequestMapping(value = "/watchDataByWell", method = RequestMethod.GET) - @ResponseBody - public Object watchDataByWell(Long id) { - if (null == id) { - throw new ServiceException(CoreExceptionEnum.REQUEST_NULL); - } - SuccessResponseData resultData = new SuccessResponseData(); - resultData.setData(busWellInfoService.getWatchDatas(id)); - - return resultData; - } - - /** - * 根据布防状态统计闸井数量接口 - */ - @RequestMapping(value = "/countByBfzt", method = RequestMethod.GET) - @ResponseBody - public Object countByBfzt() { - DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope(); - Set roleTipes = permissionService.getAuthService().getLoginUser().getRoleTips(); - List deptIds = null; - Boolean isApp = false; - if (roleTipes.contains("leader") || roleTipes.contains("member")) { - deptIds = permissionService.getDeptService().getIdsByPid(permissionService.getAuthService().getLoginUser().getDeptId(), null); - deptIds.add(permissionService.getAuthService().getLoginUser().getDeptId()); - isApp = true; - }else{ - deptIds = dataScope.getDeptIds(); - isApp = false; - } - SuccessResponseData resultData = new SuccessResponseData(); - busWellInfoService.getBfztCountData(deptIds,isApp); - resultData.setData(busWellInfoService.getBfztCountData(deptIds,isApp)); - return resultData; - } + /** * 闸井布防撤防接口 @@ -289,20 +251,6 @@ return ResponseData.success(); } - /** - * 获取布防类型(APP用) - */ - @RequestMapping(value = "/bfType", method = RequestMethod.GET) - @ResponseBody - public Object bfType(Long id) { - if (null ==id) { - throw new ServiceException(CoreExceptionEnum.REQUEST_NULL); - } - SuccessResponseData resultData = new SuccessResponseData(); - resultData.setData(busWellInfoService.getWatchDatas(id)); - - return resultData; - } /** diff --git a/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java b/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java index 001f704..f649b2c 100644 --- a/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java +++ b/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java @@ -21,32 +21,11 @@ List selectDataScopePage(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("keywords") String keywords, @Param("wellType") String wellType, @Param("deptid") String deptid, @Param("bfzt") String bfzt); - List getDeviceInWellInfo(@Param("id") Long id); + List watchData(@Param("id") Long id); - DeviceData wellcoverData(@Param("devcode") String devcode); - DeviceData liquidData(@Param("devcode") String devcode); - - DeviceData harmfulgasData(@Param("devcode") String devcode); - - DeviceData gasData(@Param("devcode") String devcode); - - DeviceData temphumData(@Param("devcode") String devcode); - - DeviceData digData(@Param("devcode") String devcode); - - DeviceData noiseData(@Param("devcode") String devcode); - - DeviceData wellcoverlocaData(@Param("devcode") String devcode); - - DeviceData lgGasData(@Param("devcode") String devcode);//燃气液位 - - DeviceData lgLiquidData(@Param("devcode") String devcode);//燃气液位 - - - BfztCountDataDto bfztCountData(@Param("deptIds") List deptIds, @Param("isApp") Boolean isApp); List selectDataScope(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("wellType") String deviceType, @Param("deptid") String deptid, @Param("keywords") String keywords); @@ -63,9 +42,6 @@ List getWellList(@Param("scope") DataScope dataScope, @Param("keywords") String keywords, @Param("wellType") String deviceType, @Param("deptid") String deptid); - List getAlarmWellList(@Param("scope") DataScope dataScope, @Param("keywords") String keywords, @Param("wellType") String deviceType, @Param("deptid") String deptid); - - List getNotAlarmWellList(@Param("scope") DataScope dataScope, @Param("keywords") String keywords, @Param("wellType") String deviceType, @Param("deptid") String deptid); void updateBatchBfcf(@Param("keywords") String keywords, @Param("wellType") String wellType, @Param("deptid") String deptid, @Param("bfzt") String bfzt, @Param("deptIds") List deptIds); @@ -75,7 +51,7 @@ List getWellListAll(); - List getDeviceList(@Param("scope") DataScope dataScope); - DeviceInfoDto selectDeviceById(@Param("id") Long id); + + } diff --git a/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml b/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml index 138f825..44eccc8 100644 --- a/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml +++ b/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml @@ -91,27 +91,6 @@ )
- - d - . - ID - AS deviceId, DEVCODE AS devcode, INSTALL_DATE AS installDate, ONLINE_STATE AS onlineState, t.TYPE_NAME AS typeName - - - @@ -137,103 +116,7 @@ ) - - - - - - - - - - - - - - - - - - - - UPDATE @@ -420,46 +272,6 @@ - - + + diff --git a/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/enmus/HarmfulGasBusiness.java b/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/enmus/HarmfulGasBusiness.java deleted file mode 100644 index d3bfabc..0000000 --- a/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/enmus/HarmfulGasBusiness.java +++ /dev/null @@ -1,44 +0,0 @@ -package com.casic.missiles.modular.system.enmus; - -public enum HarmfulGasBusiness { - - CO(0, "CO浓度","ppm"), - CH4(1, "CH4浓度","%VOL"), - H2S(2, "H2S浓度","ppm"), - O2(3, "O2浓度","%VOL"); - //SWITCH(4, "液位开关",""); - - private int code; - private String desc; - private String unit; - - public int getCode() { - return code; - } - - public void setCode(int code) { - this.code = code; - } - - public String getDesc() { - return desc; - } - - public void setDesc(String desc) { - this.desc = desc; - } - - public String getUnit() { - return unit; - } - - public void setUnit(String unit) { - this.unit = unit; - } - - HarmfulGasBusiness(int code, String desc, String unit) { - this.code = code; - this.desc = desc; - this.unit = unit; - } -} diff --git a/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/enmus/SluicewellExportEnum.java b/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/enmus/SluicewellExportEnum.java deleted file mode 100644 index d451598..0000000 --- a/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/enmus/SluicewellExportEnum.java +++ /dev/null @@ -1,59 +0,0 @@ -package com.casic.missiles.modular.system.enmus; - - - -import java.util.ArrayList; -import java.util.List; -import java.util.Map; - -public enum SluicewellExportEnum { - - DEVICE_EXPORT( - new ArrayList() {{ -// add(new Header("井编号", "wellCode")); -// add(new Header("井名称", "wellName")); -// add(new Header("井深", "deep")); -// add(new Header("详细地址", "position")); -// add(new Header("井类型", "wellTypeName")); -// add(new Header("权属单位", "deptName")); -// add(new Header("设备数量", "deviceCount")); -// add(new Header("布防状态", "bfztName")); - }}, "sluicewell.xlsx", "井数据导出"); - - //SLUICEWELLDATA_EXPORT("sluicewell.xlsx", "sluicewell.xlsx", "闸井数据"); - - /** - * 导出模板相对路径 - */ - private List headers; - /** - * 下载文件名 - */ - private String fileName; - /** - * 描述信息 - */ - private String description; - - SluicewellExportEnum(List headers, String fileName, String description) { - this.headers = headers; - this.fileName = fileName; - this.description = description; - } - - public List getHeaders() { - return headers; - } - - public String getFileName() { - return fileName; - } - - public String getDescription() { - return description; - } - - public Map getCustomColumnStyle() { - return null; - } -} diff --git a/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/controller/BusMapOverviewController.java b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/controller/BusMapOverviewController.java new file mode 100644 index 0000000..9d9f43c --- /dev/null +++ b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/controller/BusMapOverviewController.java @@ -0,0 +1,182 @@ +package com.casic.missiles.modular.system.controller; + +import cn.hutool.core.collection.CollectionUtil; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.model.exception.ServiceException; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.model.response.SuccessResponseData; +import com.casic.missiles.modular.system.dto.BusWellInfoDto; +import com.casic.missiles.modular.system.dto.DeviceDataDto; +import com.casic.missiles.modular.system.dto.DeviceInfoDto; +import com.casic.missiles.modular.system.dto.WatchDataDto; +import com.casic.missiles.modular.system.model.BusWellInfo; +import com.casic.missiles.modular.system.service.IBusDeviceSupportService; +import com.casic.missiles.modular.system.service.IBusWellInfoSupportService; +import com.casic.missiles.modular.system.service.IDataAnalysisService; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.ResponseBody; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; + +/** + * 地图总览模块的controller + * + * @author tanyue + * @Date 2019-05-13 19:20:29 + */ +@Controller +@RequestMapping("/overview") +public class BusMapOverviewController extends BaseController { + + @Resource + private AbstractPermissionContext permissionService; + @Resource + private AbstractDictService dictService; + @Resource + private IBusWellInfoSupportService busWellInfoService; + @Resource + private IDataAnalysisService dataAnalysisService; + @Resource + private IBusDeviceSupportService busDeviceSupportService; + + /** + * 获取列表 + */ + @RequestMapping(value = "/wellList") + @ResponseBody + public Object wellList(@RequestParam(required = false) String keywords, + @RequestParam(required = false) String wellType, + @RequestParam(required = false) String deptid, + @RequestParam(required = false) String isAlarm) { + + DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope(); + List wellList = new ArrayList(); + + if (null == isAlarm || isAlarm.equals("") == true) { + // isAlarm参数为空,查询所有的闸井 + + // 查询并添加当前部门的闸井 + List myList = busWellInfoService.getWellList(dataScope, keywords, wellType, deptid); + if (null != myList && myList.isEmpty() == false) { + wellList.addAll(myList); + } + + /** + * 不需要了,由dataScope控制权限 + // 查询并添加下级部门的闸井 + List subDepts = permissionService.getSubDepts(deptid,null); + if (null != subDepts && subDepts.isEmpty() == false) { + for (Long subDeptId : subDepts) { + List subList = busWellInfoService.getWellList(dataScope, keywords, wellType, String.valueOf(subDeptId)); + if (null != subList && subList.isEmpty() == false) { + wellList.addAll(subList); + } + } + } + */ + } else if (isAlarm.equals("1")) { + // isAlarm = 1 查询所有报警状态的闸井 + wellList = dataAnalysisService.getAlarmWellList(dataScope, keywords, wellType, deptid); + } else { + // isAlarm = 0 查询所有不是报警状态的闸井 + wellList = dataAnalysisService.getNotAlarmWellList(dataScope, keywords, wellType, deptid); + } + + + return ResponseData.success(wellList); + } + + /** + * 获取设备列表 + */ + @RequestMapping(value = "/deviceList") + @ResponseBody + public Object deviceList() { + + DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope(); + List wellList = new ArrayList(); + wellList = busDeviceSupportService.getDeviceList(dataScope); + return ResponseData.success(wellList); + } + + /** + * 获取设备详情 + */ + @RequestMapping(value = "/deviceDetail", method = RequestMethod.GET) + @ResponseBody + public Object deviceDetail(@RequestParam(required = true) Long id) { + if (null == id) { + throw new ServiceException(CoreExceptionEnum.REQUEST_NULL); + } + DeviceInfoDto deviceInfoDto = busDeviceSupportService.selectDeviceById(id); + SuccessResponseData successResult = new SuccessResponseData(); + if (null == deviceInfoDto) { + successResult.setCode(200); + successResult.setMessage("success"); + successResult.setData(new HashMap()); + } else { + // 设置最新的监测数据 + List deviceDataDtoList = dataAnalysisService.getDeviceDatas(deviceInfoDto.getDeviceTypeName(), deviceInfoDto.getDevcode(), deviceInfoDto.getOnlineState()); + if (CollectionUtil.isNotEmpty(deviceDataDtoList)) { + deviceInfoDto.setRealtimeData(deviceDataDtoList); + } + successResult.setMessage("success"); + successResult.setData(deviceInfoDto); + } + return successResult; + } + + + /** + * 获取闸井详情 + */ + @RequestMapping(value = "/wellInfo", method = RequestMethod.GET) + @ResponseBody + public Object wellInfo(@RequestParam(required = true) Long id) { + if (null == id) { + throw new ServiceException(CoreExceptionEnum.REQUEST_NULL); + } + + BusWellInfo busWellInfo = busWellInfoService.getById(id); + SuccessResponseData successResult = new SuccessResponseData(); + if (null == busWellInfo) { + successResult.setCode(200); + successResult.setMessage("success"); + successResult.setData(new HashMap()); + } else { + BusWellInfoDto busWellInfoDto = new BusWellInfoDto(); + busWellInfoDto.convertBusWellInfo(busWellInfo); + + // 设置字典值 + busWellInfoDto.setBfztName(dictService.getDictNameByCode("bfzt", busWellInfo.getBfzt())); + busWellInfoDto.setWellTypeName(dictService.getDictNameByCode("sluicewellType", busWellInfo.getWellType())); + busWellInfoDto.setDeptName(permissionService.getDeptService().getDeptName(busWellInfo.getDeptid())); + + // 设置最新的监测数据 + List watchDataDtos = dataAnalysisService.getWatchDatas(id); + if (null != watchDataDtos && watchDataDtos.isEmpty() == false) { + for (WatchDataDto watchDataDto : watchDataDtos) { + watchDataDto.setValue(watchDataDto.getData()); + } + } + + busWellInfoDto.setWatchData(watchDataDtos); + + successResult.setMessage("success"); + successResult.setData(busWellInfoDto.toMap()); + } + return successResult; + } + + +} diff --git a/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/controller/WellDataController.java b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/controller/WellDataController.java new file mode 100644 index 0000000..c33ec7d --- /dev/null +++ b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/controller/WellDataController.java @@ -0,0 +1,81 @@ +package com.casic.missiles.modular.system.controller; + +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.model.exception.ServiceException; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.model.response.SuccessResponseData; +import com.casic.missiles.modular.system.service.IDataAnalysisService; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.ResponseBody; + +import javax.annotation.Resource; +import java.util.List; +import java.util.Set; + +@Controller +@RequestMapping("/well") +public class WellDataController extends BaseController { + @Resource + private AbstractPermissionContext permissionService; + @Resource + private IDataAnalysisService dataAnalysisService; + + + /** + * 获取闸井设备数据 + */ + @RequestMapping(value = "/watchDataByWell", method = RequestMethod.GET) + @ResponseBody + public Object watchDataByWell(Long id) { + if (null == id) { + throw new ServiceException(CoreExceptionEnum.REQUEST_NULL); + } + SuccessResponseData resultData = new SuccessResponseData(); + resultData.setData(dataAnalysisService.getWatchDatas(id)); + + return resultData; + } + + /** + * 根据布防状态统计闸井数量接口 + */ + @RequestMapping(value = "/countByBfzt", method = RequestMethod.GET) + @ResponseBody + public Object countByBfzt() { + DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope(); + Set roleTipes = permissionService.getAuthService().getLoginUser().getRoleTips(); + List deptIds = null; + Boolean isApp = false; + if (roleTipes.contains("leader") || roleTipes.contains("member")) { + deptIds = permissionService.getDeptService().getIdsByPid(permissionService.getAuthService().getLoginUser().getDeptId(), null); + deptIds.add(permissionService.getAuthService().getLoginUser().getDeptId()); + isApp = true; + } else { + deptIds = dataScope.getDeptIds(); + isApp = false; + } + SuccessResponseData resultData = new SuccessResponseData(); + dataAnalysisService.getBfztCountData(deptIds, isApp); + resultData.setData(dataAnalysisService.getBfztCountData(deptIds, isApp)); + return resultData; + } + + /** + * 获取布防类型(APP用) + */ + @RequestMapping(value = "/bfType", method = RequestMethod.GET) + @ResponseBody + public Object bfType(Long id) { + if (null == id) { + throw new ServiceException(CoreExceptionEnum.REQUEST_NULL); + } + SuccessResponseData resultData = new SuccessResponseData(); + resultData.setData(dataAnalysisService.getWatchDatas(id)); + return resultData; + } + +} diff --git a/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/dao/DataAnalysisMapper.java b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/dao/DataAnalysisMapper.java new file mode 100644 index 0000000..149fb82 --- /dev/null +++ b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/dao/DataAnalysisMapper.java @@ -0,0 +1,48 @@ +package com.casic.missiles.modular.system.dao; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.*; +import com.casic.missiles.modular.system.model.BusWellInfo; +import com.casic.missiles.core.datascope.DataScope; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * 闸井信息表 Mapper 接口 + *

+ * + * @author stylefeng123 + * @since 2019-05-13 + */ +public interface DataAnalysisMapper extends BaseMapper { + + List getAlarmWellList(@Param("scope") DataScope dataScope, @Param("keywords") String keywords, @Param("wellType") String deviceType, @Param("deptid") String deptid); + + List getNotAlarmWellList(@Param("scope") DataScope dataScope, @Param("keywords") String keywords, @Param("wellType") String deviceType, @Param("deptid") String deptid); + + DeviceData wellcoverData(@Param("devcode") String devcode); + + DeviceData liquidData(@Param("devcode") String devcode); + + DeviceData harmfulgasData(@Param("devcode") String devcode); + + DeviceData gasData(@Param("devcode") String devcode); + + DeviceData temphumData(@Param("devcode") String devcode); + + DeviceData digData(@Param("devcode") String devcode); + + DeviceData noiseData(@Param("devcode") String devcode); + + DeviceData wellcoverlocaData(@Param("devcode") String devcode); + + DeviceData lgGasData(@Param("devcode") String devcode);//燃气液位 + + DeviceData lgLiquidData(@Param("devcode") String devcode);//燃气液位 + + + BfztCountDataDto bfztCountData(@Param("deptIds") List deptIds, @Param("isApp") Boolean isApp); +} diff --git a/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/dao/mapping/DataAnalysisMapper.xml b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/dao/mapping/DataAnalysisMapper.xml new file mode 100644 index 0000000..6d7edb3 --- /dev/null +++ b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/dao/mapping/DataAnalysisMapper.xml @@ -0,0 +1,170 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ID + AS id, WELL_CODE AS wellCode, WELL_NAME AS wellName, DEEP AS deep, COORDINATE_X AS coordinateX, COORDINATE_Y AS coordinateY, LAT_BAIDU AS latBaidu, LNG_BAIDU AS lngBaidu, LNG_GAODE AS lngGaode, LAT_GAODE AS latGaode, AREA AS area, POSITION AS position, DEPTID AS deptid, PHOTOS AS photos, NOTES AS notes, WELL_TYPE AS wellType, STAFF AS staff, TEL AS tel, TS AS ts, VALID AS valid, BFZT AS bfzt, RESPONSIBLE_DEPT AS responsibleDept + + + + ID + AS id, WELL_CODE AS wellCode, WELL_NAME AS wellName, DEEP AS deep, COORDINATE_X AS coordinateX, COORDINATE_Y AS coordinateY, LAT_BAIDU AS latBaidu, LNG_BAIDU AS lngBaidu, LNG_GAODE AS lngGaode, LAT_GAODE AS latGaode, AREA AS area, POSITION AS position, DEPTID AS deptid, PHOTOS AS photos, NOTES AS notes, WELL_TYPE AS wellType, STAFF AS staff, TEL AS tel, TS AS ts, VALID AS valid, BFZT AS bfzt,d1.simplename AS deptName,d2.id AS responsibleDept,d2.simplename AS responsibleDeptName + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/service/IDataAnalysisService.java b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/service/IDataAnalysisService.java new file mode 100644 index 0000000..69c8c60 --- /dev/null +++ b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/service/IDataAnalysisService.java @@ -0,0 +1,51 @@ +package com.casic.missiles.modular.system.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.modular.system.dto.BfztCountDataDto; +import com.casic.missiles.modular.system.dto.BusWellInfoDto; +import com.casic.missiles.modular.system.dto.DeviceDataDto; +import com.casic.missiles.modular.system.dto.WatchDataDto; +import com.casic.missiles.modular.system.model.BusWellInfo; + +import java.util.List; + +/** + * 数据统计服务接口 + * + * @author lwh + */ +public interface IDataAnalysisService extends IService { + /** + * 获取告警闸井列表 + * @param dataScope 数据权限 + * @param keywords 关键字 + * @param wellType 井列表 + * @param deptid 组织id + * @return + */ + List getAlarmWellList(DataScope dataScope, String keywords, String wellType, String deptid); + + /** + * 获取不告警井列表信息 + * @param dataScope 数据权限 + * @param keywords 关键字 + * @param wellType 井类型 + * @param deptid 组织id + * @return + */ + List getNotAlarmWellList(DataScope dataScope, String keywords, String wellType, String deptid); + + /** + * 设备数据查询接口 + * @param devTypename 设备类型 + * @param devcode 设备编码 + * @param status 设备状态 + * @return 设备监测数据 + */ + List getDeviceDatas(String devTypename, String devcode, String status); + List getWatchDatas(Long id); + + + BfztCountDataDto getBfztCountData(List deptIds, Boolean isApp); +} diff --git a/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/service/impl/IDataAnalysisServiceImpl.java b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/service/impl/IDataAnalysisServiceImpl.java new file mode 100644 index 0000000..288a828 --- /dev/null +++ b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/service/impl/IDataAnalysisServiceImpl.java @@ -0,0 +1,386 @@ +package com.casic.missiles.modular.system.service.impl; + +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.modular.system.dao.DataAnalysisMapper; +import com.casic.missiles.modular.system.dto.*; +import com.casic.missiles.modular.system.enmus.HarmfulGasBusiness; +import com.casic.missiles.modular.system.enmus.TemphumBusiness; +import com.casic.missiles.modular.system.model.BusWellInfo; +import com.casic.missiles.modular.system.service.IBusDeviceSupportService; +import com.casic.missiles.modular.system.service.IDataAnalysisService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import java.text.DateFormat; +import java.text.DecimalFormat; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.List; + +/** + * 数据统计分析 + * + * @author lwh + */ +@Slf4j +@Component +public class IDataAnalysisServiceImpl extends ServiceImpl implements IDataAnalysisService { + @Resource + private AbstractDictService dictService; + @Resource + private IBusDeviceSupportService deviceSupportService; + + @Override + public List getAlarmWellList(DataScope dataScope, String keywords, String wellType, String deptid) { + return this.baseMapper.getAlarmWellList(dataScope, keywords, wellType, deptid); + } + + @Override + public List getNotAlarmWellList(DataScope dataScope, String keywords, String wellType, String deptid) { + return this.baseMapper.getNotAlarmWellList(dataScope, keywords, wellType, deptid); + } + + @Override + public List getDeviceDatas(String devTypeName, String devcode, String status) { + List deviceDataDtoList = new ArrayList<>(); + DeviceDataDto deviceDataDto = new DeviceDataDto(); + DeviceData deviceData; + DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + switch (devTypeName) { + case "井盖状态监测仪": + deviceData = this.baseMapper.wellcoverData(devcode); + deviceDataDto.setTypeName("井盖状态"); + if (ObjectUtil.isNotEmpty(deviceData)) { + //井盖离线 + if ("0".equals(status)) { + deviceDataDto.setValue("离线"); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } else if ("心跳".equals(deviceData.getData())) { + deviceDataDto.setValue("井盖状态正常"); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } else { + deviceDataDto.setValue(deviceData.getData()); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } + } else { + deviceDataDto.setValue("无数据"); + } + deviceDataDtoList.add(deviceDataDto); + break; + + case "液位监测仪": + deviceData = this.baseMapper.liquidData(devcode); + if (ObjectUtil.isNotEmpty(deviceData)) { + deviceDataDto.setTypeName("井内水位"); + deviceDataDto.setValue(deviceData.getData() + "m"); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + deviceDataDtoList.add(deviceDataDto); + } + break; + + case "有害气体监测仪": + deviceData = this.baseMapper.harmfulgasData(devcode); + if (ObjectUtil.isNotEmpty(deviceData)) { + String[] harmfulGasDatas = deviceData.getData().split(","); + HarmfulGasBusiness[] harmfulGasBusinesses = HarmfulGasBusiness.values(); + for (int i = 0; i < harmfulGasDatas.length; i++) { + deviceDataDto = new DeviceDataDto(); + deviceDataDto.setTypeName(harmfulGasBusinesses[i].getDesc()); + deviceDataDto.setValue(harmfulGasDatas[i] + harmfulGasBusinesses[i].getUnit()); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + deviceDataDtoList.add((DeviceDataDto) deviceDataDto.clone()); + } + } + break; + case "燃气智能监测终端": + deviceData = this.baseMapper.gasData(devcode); + if (ObjectUtil.isNotEmpty(deviceData)) { + deviceDataDto.setTypeName("燃气浓度"); + deviceDataDto.setValue(deviceData.getData() + "%LEL"); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + deviceDataDtoList.add(deviceDataDto); + } + break; + + case "温湿度监测仪": + deviceData = this.baseMapper.temphumData(devcode); + if (ObjectUtil.isNotEmpty(deviceData)) { + String[] temphumDatas = deviceData.getData().split(","); + TemphumBusiness[] temphumBusinesses = TemphumBusiness.values(); + for (int i = 0; i < temphumDatas.length; i++) { + deviceDataDto = new DeviceDataDto(); + deviceDataDto.setTypeName(temphumBusinesses[i].getDesc()); + deviceDataDto.setValue(temphumDatas[i] + temphumBusinesses[i].getUnit()); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + deviceDataDtoList.add((DeviceDataDto) deviceDataDto.clone()); + } + } + break; + + case "开挖监测仪": + deviceData = this.baseMapper.digData(devcode); + if (ObjectUtil.isNotEmpty(deviceData)) { + deviceDataDto.setTypeName("开挖状态"); + deviceDataDto.setValue(deviceData.getData() + "mg"); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + deviceDataDtoList.add(deviceDataDto); + } + break; + + case "噪声记录仪": + deviceData = this.baseMapper.noiseData(devcode); + if (ObjectUtil.isNotEmpty(deviceData)) { + deviceDataDto.setTypeName("管线噪声"); + deviceDataDto.setValue(deviceData.getData() + "mg"); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + deviceDataDtoList.add(deviceDataDto); + } + break; + case "井盖定位监测仪": + deviceData = this.baseMapper.wellcoverlocaData(devcode); + if (ObjectUtil.isNotEmpty(deviceData)) { + deviceDataDto.setTypeName("井盖位置"); + deviceDataDto.setValue(deviceData.getData()); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + deviceDataDtoList.add(deviceDataDto); + } + break; + + case "燃气智能监测终端(一体化)": + deviceData = this.baseMapper.lgGasData(devcode); + deviceDataDto.setTypeName("燃气浓度"); + if (ObjectUtil.isNotEmpty(deviceData)) { + + Double dValue = Double.parseDouble(deviceData.getData()); + if (dValue <= 20.0) { + deviceDataDto.setValue(deviceData.getData() + "%LEL"); + } else { + DecimalFormat df = new DecimalFormat("0.00"); + dValue = dValue / 20.0; + deviceDataDto.setValue(df.format(dValue) + "%VOL"); + } + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } else { + deviceDataDto.setValue("无数据"); + } + deviceDataDtoList.add(deviceDataDto); + + deviceData = this.baseMapper.lgLiquidData(devcode); + deviceDataDto.setTypeName("井内水位"); + if (ObjectUtil.isNotEmpty(deviceData)) { + + deviceDataDto.setValue(deviceData.getData() + "m"); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } else { + deviceDataDto.setValue("无数据"); + } + deviceDataDtoList.add((DeviceDataDto) deviceDataDto.clone()); + break; + + default://未知设备 + log.info("未知设备!"); + break; + } + return deviceDataDtoList; + } + + @Override + public BfztCountDataDto getBfztCountData(List deptIds, Boolean isApp) { + return this.baseMapper.bfztCountData(deptIds, isApp); + } + + @Override + public List getWatchDatas(Long id) { + + List deviceInWellInfos = deviceSupportService.getDeviceInWellInfo(id); + List watchDataDtos = new ArrayList<>(); + + for (DeviceInWellInfo deviceInWellInfo : deviceInWellInfos) { + WatchDataDto watchDataDto = new WatchDataDto(); + watchDataDto.setDeviceId(deviceInWellInfo.getDeviceId()); + watchDataDto.setDevcode(deviceInWellInfo.getDevcode()); + watchDataDto.setInstallDate(deviceInWellInfo.getInstallDate()); + watchDataDto.setOnlineState(deviceInWellInfo.getOnlineState()); + watchDataDto.setOnlineStateName(dictService.getDictNameByCode("onlineStatus", deviceInWellInfo.getOnlineState())); + + DeviceData deviceData; + DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + + switch (deviceInWellInfo.getTypeName()) { + case "井盖状态监测仪": + deviceData = this.baseMapper.wellcoverData(deviceInWellInfo.getDevcode()); + watchDataDto.setWatchType("井盖状态"); + watchDataDto.setType("1"); + if (ObjectUtil.isNotEmpty(deviceData)) { + //井盖离线 + if ("0".equals(watchDataDto.getOnlineState())) { + watchDataDto.setValue("离线"); + watchDataDto.setData("离线"); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } else if ("心跳".equals(deviceData.getData())) { + watchDataDto.setValue("井盖状态正常"); + watchDataDto.setData("井盖状态正常"); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } else { + watchDataDto.setValue(deviceData.getData()); + watchDataDto.setData(deviceData.getData()); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } + } else { + watchDataDto.setValue("无数据"); + watchDataDto.setData("无数据"); + } + watchDataDtos.add(watchDataDto); + break; + + case "液位监测仪": + deviceData = this.baseMapper.liquidData(deviceInWellInfo.getDevcode()); + if (ObjectUtil.isNotEmpty(deviceData)) { + watchDataDto.setWatchType("井内水位"); + watchDataDto.setType("2"); + + watchDataDto.setValue(deviceData.getData() + "m"); + watchDataDto.setData(deviceData.getData() + "m"); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + watchDataDtos.add(watchDataDto); + } + break; + + case "有害气体监测仪": + deviceData = this.baseMapper.harmfulgasData(deviceInWellInfo.getDevcode()); + if (ObjectUtil.isNotEmpty(deviceData)) { + String[] harmfulGasDatas = deviceData.getData().split(","); + HarmfulGasBusiness[] harmfulGasBusinesses = HarmfulGasBusiness.values(); + + for (int i = 0; i < harmfulGasDatas.length; i++) { + watchDataDto.setWatchType(harmfulGasBusinesses[i].getDesc()); + watchDataDto.setType("3"); + watchDataDto.setValue(harmfulGasDatas[i] + harmfulGasBusinesses[i].getUnit()); + watchDataDto.setData(harmfulGasDatas[i] + harmfulGasBusinesses[i].getUnit()); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + watchDataDtos.add((WatchDataDto) watchDataDto.clone()); + } + } + break; + + case "燃气智能监测终端": + deviceData = this.baseMapper.gasData(deviceInWellInfo.getDevcode()); + if (ObjectUtil.isNotEmpty(deviceData)) { + watchDataDto.setWatchType("燃气浓度"); + watchDataDto.setType("4"); + + watchDataDto.setValue(deviceData.getData() + "%LEL"); + watchDataDto.setData(deviceData.getData() + "%LEL"); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + watchDataDtos.add(watchDataDto); + } + break; + + case "温湿度监测仪": + deviceData = this.baseMapper.temphumData(deviceInWellInfo.getDevcode()); + if (ObjectUtil.isNotEmpty(deviceData)) { + String[] temphumDatas = deviceData.getData().split(","); + TemphumBusiness[] temphumBusinesses = TemphumBusiness.values(); + + for (int i = 0; i < temphumDatas.length; i++) { + watchDataDto.setWatchType(temphumBusinesses[i].getDesc()); + watchDataDto.setType("5"); + watchDataDto.setValue(temphumDatas[i] + temphumBusinesses[i].getUnit()); + watchDataDto.setData(temphumDatas[i] + temphumBusinesses[i].getUnit()); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + watchDataDtos.add((WatchDataDto) watchDataDto.clone()); + } + } + break; + + case "开挖监测仪": + deviceData = this.baseMapper.digData(deviceInWellInfo.getDevcode()); + if (ObjectUtil.isNotEmpty(deviceData)) { + watchDataDto.setWatchType("开挖状态"); + watchDataDto.setType("6"); + + watchDataDto.setValue(deviceData.getData() + "mg"); + watchDataDto.setData(deviceData.getData() + "mg"); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + watchDataDtos.add(watchDataDto); + } + break; + + case "噪声记录仪": + deviceData = this.baseMapper.noiseData(deviceInWellInfo.getDevcode()); + if (ObjectUtil.isNotEmpty(deviceData)) { + watchDataDto.setWatchType("管线噪声"); + watchDataDto.setType("8"); + + watchDataDto.setValue(deviceData.getData() + "mg"); + watchDataDto.setData(deviceData.getData() + "mg"); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + watchDataDtos.add(watchDataDto); + } + break; + + case "井盖定位监测仪": + deviceData = this.baseMapper.wellcoverlocaData(deviceInWellInfo.getDevcode()); + if (ObjectUtil.isNotEmpty(deviceData)) { + watchDataDto.setWatchType("井盖位置"); + watchDataDto.setType("7"); + + watchDataDto.setValue(deviceData.getData()); + watchDataDto.setData(deviceData.getData()); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + watchDataDtos.add(watchDataDto); + } + break; + + case "燃气智能监测终端(一体化)": + deviceData = this.baseMapper.lgGasData(deviceInWellInfo.getDevcode()); + watchDataDto.setWatchType("燃气浓度"); + watchDataDto.setType("10"); + if (ObjectUtil.isNotEmpty(deviceData)) { + + Double dValue = Double.parseDouble(deviceData.getData()); + if (dValue <= 20.0) { + watchDataDto.setValue(deviceData.getData() + "%LEL"); + watchDataDto.setData(deviceData.getData() + "%LEL"); + } else { + DecimalFormat df = new DecimalFormat("0.00"); + dValue = dValue / 20.0; + watchDataDto.setValue(df.format(dValue) + "%VOL"); + watchDataDto.setData(df.format(dValue) + "%VOL"); + } + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } else { + watchDataDto.setValue("无数据"); + watchDataDto.setData("无数据"); + } + watchDataDtos.add((WatchDataDto) watchDataDto.clone()); + + deviceData = this.baseMapper.lgLiquidData(deviceInWellInfo.getDevcode()); + watchDataDto.setWatchType("井内水位"); + watchDataDto.setType("10"); + if (ObjectUtil.isNotEmpty(deviceData)) { + + watchDataDto.setValue(deviceData.getData() + "m"); + watchDataDto.setData(deviceData.getData() + "m"); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } else { + watchDataDto.setValue("无数据"); + watchDataDto.setData("无数据"); + } + watchDataDtos.add((WatchDataDto) watchDataDto.clone()); + break; + + default://未知设备 + log.info("未知设备!"); + break; + } + } + + return watchDataDtos; + } + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java index d45eaf7..b9ca243 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java @@ -21,7 +21,7 @@ public interface DeviceMapper extends BaseMapper { List selectDataScopePage(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("deviceType") String deviceType, @Param("deptid") String deptid, @Param("beginTime") String beginTime, @Param("endTime") String endTime, @Param("keywords") String keywords,@Param("isOnline") String isOnline); - + List getDeviceList(@Param("scope") DataScope dataScope); DeviceWellDto selectWellIdByCode(@Param("wellCode") String wellCode); DeviceConcentratorDto selectDeviceConcentorByCode(@Param("concenCode") String concenCode); @@ -61,4 +61,13 @@ List> selectTempDataList(@Param("dataScope")DataScope dataScope, @Param("wellCode")String wellCode, @Param("beginTime")String beginTime, @Param("endTime")String endTime); List> selectHarmfulDataList(@Param("dataScope")DataScope dataScope, @Param("wellCode")String wellCode, @Param("beginTime")String beginTime, @Param("endTime")String endTime); + + /** + * 查询设备信息 + * @param id 设备主键 + * @return + */ + DeviceInfoDto selectDeviceById(@Param("id") Long id); + + List getDeviceInWellInfo(@Param("id") Long id); } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml index fb6f4f4..c956057 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml @@ -902,5 +902,64 @@ ) t1 ORDER BY uptime asc + + + + d.ID AS deviceId, DEVCODE AS devcode, INSTALL_DATE AS installDate, ONLINE_STATE AS onlineState, t.TYPE_NAME AS typeName + + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java b/casic-device/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java index 72c60f0..090415c 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java @@ -17,7 +17,7 @@ * @author lwh123 * @since 2019-05-23 */ -public interface IDeviceService extends IService { +public interface IDeviceService extends IService{ /** * 根据条件分页查询设备列表 diff --git a/casic-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java index 0b089f3..de9111e 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java @@ -39,7 +39,7 @@ * @since 2019-05-23 */ @Service -public class DeviceServiceImpl extends ServiceImpl implements IDeviceService { +public class DeviceServiceImpl extends ServiceImpl implements IDeviceService,IBusDeviceSupportService { @Autowired private IDeviceTypeService deviceTypeService; @@ -514,4 +514,19 @@ } return list; } + + @Override + public List getDeviceList(DataScope dataScope) { + return this.baseMapper.getDeviceList(dataScope); + } + + @Override + public DeviceInfoDto selectDeviceById(Long id) { + return this.baseMapper.selectDeviceById(id); + } + + @Override + public List getDeviceInWellInfo(Long id) { + return this.baseMapper.getDeviceInWellInfo(id); + } } diff --git a/casic-server-support/src/main/java/com/casic/missiles/modular/system/enmus/HarmfulGasBusiness.java b/casic-server-support/src/main/java/com/casic/missiles/modular/system/enmus/HarmfulGasBusiness.java new file mode 100644 index 0000000..d3bfabc --- /dev/null +++ b/casic-server-support/src/main/java/com/casic/missiles/modular/system/enmus/HarmfulGasBusiness.java @@ -0,0 +1,44 @@ +package com.casic.missiles.modular.system.enmus; + +public enum HarmfulGasBusiness { + + CO(0, "CO浓度","ppm"), + CH4(1, "CH4浓度","%VOL"), + H2S(2, "H2S浓度","ppm"), + O2(3, "O2浓度","%VOL"); + //SWITCH(4, "液位开关",""); + + private int code; + private String desc; + private String unit; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public String getDesc() { + return desc; + } + + public void setDesc(String desc) { + this.desc = desc; + } + + public String getUnit() { + return unit; + } + + public void setUnit(String unit) { + this.unit = unit; + } + + HarmfulGasBusiness(int code, String desc, String unit) { + this.code = code; + this.desc = desc; + this.unit = unit; + } +} diff --git a/casic-server-support/src/main/java/com/casic/missiles/modular/system/enmus/SluicewellExportEnum.java b/casic-server-support/src/main/java/com/casic/missiles/modular/system/enmus/SluicewellExportEnum.java new file mode 100644 index 0000000..d451598 --- /dev/null +++ b/casic-server-support/src/main/java/com/casic/missiles/modular/system/enmus/SluicewellExportEnum.java @@ -0,0 +1,59 @@ +package com.casic.missiles.modular.system.enmus; + + + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +public enum SluicewellExportEnum { + + DEVICE_EXPORT( + new ArrayList() {{ +// add(new Header("井编号", "wellCode")); +// add(new Header("井名称", "wellName")); +// add(new Header("井深", "deep")); +// add(new Header("详细地址", "position")); +// add(new Header("井类型", "wellTypeName")); +// add(new Header("权属单位", "deptName")); +// add(new Header("设备数量", "deviceCount")); +// add(new Header("布防状态", "bfztName")); + }}, "sluicewell.xlsx", "井数据导出"); + + //SLUICEWELLDATA_EXPORT("sluicewell.xlsx", "sluicewell.xlsx", "闸井数据"); + + /** + * 导出模板相对路径 + */ + private List headers; + /** + * 下载文件名 + */ + private String fileName; + /** + * 描述信息 + */ + private String description; + + SluicewellExportEnum(List headers, String fileName, String description) { + this.headers = headers; + this.fileName = fileName; + this.description = description; + } + + public List getHeaders() { + return headers; + } + + public String getFileName() { + return fileName; + } + + public String getDescription() { + return description; + } + + public Map getCustomColumnStyle() { + return null; + } +} diff --git a/casic-server-support/src/main/java/com/casic/missiles/modular/system/enmus/TemphumBusiness.java b/casic-server-support/src/main/java/com/casic/missiles/modular/system/enmus/TemphumBusiness.java new file mode 100644 index 0000000..27d15e2 --- /dev/null +++ b/casic-server-support/src/main/java/com/casic/missiles/modular/system/enmus/TemphumBusiness.java @@ -0,0 +1,41 @@ +package com.casic.missiles.modular.system.enmus; + +public enum TemphumBusiness { + + TEMP(0, "井内温度","℃"), + HUM(1, "井内湿度","%RH"); + + private int code; + private String desc; + private String unit; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public String getDesc() { + return desc; + } + + public void setDesc(String desc) { + this.desc = desc; + } + + public String getUnit() { + return unit; + } + + public void setUnit(String unit) { + this.unit = unit; + } + + TemphumBusiness(int code, String desc, String unit) { + this.code = code; + this.desc = desc; + this.unit = unit; + } +} diff --git a/casic-server-support/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceSupportService.java b/casic-server-support/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceSupportService.java new file mode 100644 index 0000000..0b6fd75 --- /dev/null +++ b/casic-server-support/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceSupportService.java @@ -0,0 +1,42 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.model.application.service.IRepositorySupportService; +import com.casic.missiles.modular.system.dto.DeviceInWellInfo; +import com.casic.missiles.modular.system.dto.DeviceInfoDto; +import com.casic.missiles.modular.system.model.Device; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 设备支撑 + * + * @author lwh + */ +public interface IBusDeviceSupportService { + /** + * 获取设备列表 + * + * @param dataScope 数据权限 + * @return 设备列表 + */ + List getDeviceList(DataScope dataScope); + + + /** + * 查询设备信息 + * + * @param id 设备主键 + * @return 设备信息 + */ + DeviceInfoDto selectDeviceById(Long id); + + /** + * 查询井下设备信息 + * + * @param id 井主键 + * @return 井下设备信息 + */ + List getDeviceInWellInfo(Long id); +} diff --git a/casic-server-support/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoSupportService.java b/casic-server-support/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoSupportService.java new file mode 100644 index 0000000..e34c98e --- /dev/null +++ b/casic-server-support/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoSupportService.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.model.application.service.IRepositorySupportService; +import com.casic.missiles.modular.system.dto.BusWellInfoDto; +import com.casic.missiles.modular.system.model.BusWellInfo; + +import java.util.List; + +/** + * 闸井服务支撑接口 + * + * @author lwh + */ +public interface IBusWellInfoSupportService { + /** + * 获取井列表接口 + * + * @param dataScope 数据权限 + * @param keywords 关键字 + * @param wellType 井类型 + * @param deptid 组织ID + * @return + */ + List getWellList(DataScope dataScope, String keywords, String wellType, String deptid); + + BusWellInfo getById(Long id); +} diff --git a/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/controller/BusMapOverviewController.java b/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/controller/BusMapOverviewController.java deleted file mode 100644 index 078eaf6..0000000 --- a/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/controller/BusMapOverviewController.java +++ /dev/null @@ -1,178 +0,0 @@ -package com.casic.missiles.modular.system.controller; - -import cn.hutool.core.collection.CollectionUtil; -import com.casic.missiles.core.application.context.AbstractPermissionContext; -import com.casic.missiles.core.application.service.AbstractDictService; -import com.casic.missiles.core.base.controller.BaseController; -import com.casic.missiles.core.datascope.DataScope; -import com.casic.missiles.model.exception.ServiceException; -import com.casic.missiles.model.exception.enums.CoreExceptionEnum; -import com.casic.missiles.model.response.ResponseData; -import com.casic.missiles.model.response.SuccessResponseData; -import com.casic.missiles.modular.system.dto.BusWellInfoDto; -import com.casic.missiles.modular.system.dto.DeviceDataDto; -import com.casic.missiles.modular.system.dto.DeviceInfoDto; -import com.casic.missiles.modular.system.dto.WatchDataDto; -import com.casic.missiles.modular.system.model.BusWellInfo; -import com.casic.missiles.modular.system.service.IBusWellInfoService; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestMethod; -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.bind.annotation.ResponseBody; - -import javax.annotation.Resource; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - -/** - * 地图总览模块的controller - * - * @author tanyue - * @Date 2019-05-13 19:20:29 - */ -@Controller -@RequestMapping("/overview") -public class BusMapOverviewController extends BaseController { - - @Resource - private AbstractPermissionContext permissionService; - @Resource - private AbstractDictService dictService; - @Autowired - private IBusWellInfoService busWellInfoService; - - /** - * 获取列表 - */ - @RequestMapping(value = "/wellList") - @ResponseBody - public Object wellList(@RequestParam(required = false) String keywords, - @RequestParam(required = false) String wellType, - @RequestParam(required = false) String deptid, - @RequestParam(required = false) String isAlarm) { - - DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope(); - List wellList = new ArrayList(); - - if (null == isAlarm || isAlarm.equals("") == true) { - // isAlarm参数为空,查询所有的闸井 - - // 查询并添加当前部门的闸井 - List myList = busWellInfoService.getWellList(dataScope, keywords, wellType, deptid); - if (null != myList && myList.isEmpty() == false) { - wellList.addAll(myList); - } - - /** - * 不需要了,由dataScope控制权限 - // 查询并添加下级部门的闸井 - List subDepts = permissionService.getSubDepts(deptid,null); - if (null != subDepts && subDepts.isEmpty() == false) { - for (Long subDeptId : subDepts) { - List subList = busWellInfoService.getWellList(dataScope, keywords, wellType, String.valueOf(subDeptId)); - if (null != subList && subList.isEmpty() == false) { - wellList.addAll(subList); - } - } - } - */ - } else if (isAlarm.equals("1")) { - // isAlarm = 1 查询所有报警状态的闸井 - wellList = busWellInfoService.getAlarmWellList(dataScope, keywords, wellType, deptid); - } else { - // isAlarm = 0 查询所有不是报警状态的闸井 - wellList = busWellInfoService.getNotAlarmWellList(dataScope, keywords, wellType, deptid); - } - - - return ResponseData.success(wellList); - } - - /** - * 获取设备列表 - */ - @RequestMapping(value = "/deviceList") - @ResponseBody - public Object deviceList() { - - DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope(); - List wellList = new ArrayList(); - wellList = busWellInfoService.getDeviceList(dataScope); - return ResponseData.success(wellList); - } - - /** - * 获取设备详情 - */ - @RequestMapping(value = "/deviceDetail", method = RequestMethod.GET) - @ResponseBody - public Object deviceDetail(@RequestParam(required = true) Long id) { - if (null == id) { - throw new ServiceException(CoreExceptionEnum.REQUEST_NULL); - } - DeviceInfoDto deviceInfoDto = busWellInfoService.selectDeviceById(id); - SuccessResponseData successResult = new SuccessResponseData(); - if (null == deviceInfoDto) { - successResult.setCode(200); - successResult.setMessage("success"); - successResult.setData(new HashMap()); - } else { - // 设置最新的监测数据 - List deviceDataDtoList = busWellInfoService. - getDeviceDatas(deviceInfoDto.getDeviceTypeName(), deviceInfoDto.getDevcode(), deviceInfoDto.getOnlineState()); - if (CollectionUtil.isNotEmpty(deviceDataDtoList)) { - deviceInfoDto.setRealtimeData(deviceDataDtoList); - } - successResult.setMessage("success"); - successResult.setData(deviceInfoDto); - } - return successResult; - } - - - /** - * 获取闸井详情 - */ - @RequestMapping(value = "/wellInfo", method = RequestMethod.GET) - @ResponseBody - public Object wellInfo(@RequestParam(required = true) Long id) { - if (null == id) { - throw new ServiceException(CoreExceptionEnum.REQUEST_NULL); - } - - BusWellInfo busWellInfo = busWellInfoService.getById(id); - SuccessResponseData successResult = new SuccessResponseData(); - if (null == busWellInfo) { - successResult.setCode(200); - successResult.setMessage("success"); - successResult.setData(new HashMap()); - } else { - BusWellInfoDto busWellInfoDto = new BusWellInfoDto(); - busWellInfoDto.convertBusWellInfo(busWellInfo); - - // 设置字典值 - busWellInfoDto.setBfztName(dictService.getDictNameByCode("bfzt", busWellInfo.getBfzt())); - busWellInfoDto.setWellTypeName(dictService.getDictNameByCode("sluicewellType", busWellInfo.getWellType())); - busWellInfoDto.setDeptName(permissionService.getDeptService().getDeptName(busWellInfo.getDeptid())); - - // 设置最新的监测数据 - List watchDataDtos = busWellInfoService.getWatchDatas(id); - if (null != watchDataDtos && watchDataDtos.isEmpty() == false) { - for (WatchDataDto watchDataDto : watchDataDtos) { - watchDataDto.setValue(watchDataDto.getData()); - } - } - - busWellInfoDto.setWatchData(watchDataDtos); - - successResult.setMessage("success"); - successResult.setData(busWellInfoDto.toMap()); - } - - return successResult; - } - -} diff --git a/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java b/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java index bd62f3f..ef5a8a8 100644 --- a/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java +++ b/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java @@ -19,7 +19,6 @@ import com.casic.missiles.modular.system.dict.BusWellDict; import com.casic.missiles.modular.system.dto.BatchExportDataDto; import com.casic.missiles.modular.system.dto.HasWellDto; -import com.casic.missiles.modular.system.enmus.SluicewellExportEnum; import com.casic.missiles.modular.system.util.Utility; import com.casic.missiles.quartz.service.IQuartzManager; import org.slf4j.Logger; @@ -217,46 +216,9 @@ } - /** - * 获取闸井设备数据 - */ - @RequestMapping(value = "/watchDataByWell", method = RequestMethod.GET) - @ResponseBody - public Object watchDataByWell(Long id) { - if (null == id) { - throw new ServiceException(CoreExceptionEnum.REQUEST_NULL); - } - SuccessResponseData resultData = new SuccessResponseData(); - resultData.setData(busWellInfoService.getWatchDatas(id)); - - return resultData; - } - - /** - * 根据布防状态统计闸井数量接口 - */ - @RequestMapping(value = "/countByBfzt", method = RequestMethod.GET) - @ResponseBody - public Object countByBfzt() { - DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope(); - Set roleTipes = permissionService.getAuthService().getLoginUser().getRoleTips(); - List deptIds = null; - Boolean isApp = false; - if (roleTipes.contains("leader") || roleTipes.contains("member")) { - deptIds = permissionService.getDeptService().getIdsByPid(permissionService.getAuthService().getLoginUser().getDeptId(), null); - deptIds.add(permissionService.getAuthService().getLoginUser().getDeptId()); - isApp = true; - }else{ - deptIds = dataScope.getDeptIds(); - isApp = false; - } - SuccessResponseData resultData = new SuccessResponseData(); - busWellInfoService.getBfztCountData(deptIds,isApp); - resultData.setData(busWellInfoService.getBfztCountData(deptIds,isApp)); - return resultData; - } + /** * 闸井布防撤防接口 @@ -289,20 +251,6 @@ return ResponseData.success(); } - /** - * 获取布防类型(APP用) - */ - @RequestMapping(value = "/bfType", method = RequestMethod.GET) - @ResponseBody - public Object bfType(Long id) { - if (null ==id) { - throw new ServiceException(CoreExceptionEnum.REQUEST_NULL); - } - SuccessResponseData resultData = new SuccessResponseData(); - resultData.setData(busWellInfoService.getWatchDatas(id)); - - return resultData; - } /** diff --git a/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java b/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java index 001f704..f649b2c 100644 --- a/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java +++ b/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java @@ -21,32 +21,11 @@ List selectDataScopePage(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("keywords") String keywords, @Param("wellType") String wellType, @Param("deptid") String deptid, @Param("bfzt") String bfzt); - List getDeviceInWellInfo(@Param("id") Long id); + List watchData(@Param("id") Long id); - DeviceData wellcoverData(@Param("devcode") String devcode); - DeviceData liquidData(@Param("devcode") String devcode); - - DeviceData harmfulgasData(@Param("devcode") String devcode); - - DeviceData gasData(@Param("devcode") String devcode); - - DeviceData temphumData(@Param("devcode") String devcode); - - DeviceData digData(@Param("devcode") String devcode); - - DeviceData noiseData(@Param("devcode") String devcode); - - DeviceData wellcoverlocaData(@Param("devcode") String devcode); - - DeviceData lgGasData(@Param("devcode") String devcode);//燃气液位 - - DeviceData lgLiquidData(@Param("devcode") String devcode);//燃气液位 - - - BfztCountDataDto bfztCountData(@Param("deptIds") List deptIds, @Param("isApp") Boolean isApp); List selectDataScope(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("wellType") String deviceType, @Param("deptid") String deptid, @Param("keywords") String keywords); @@ -63,9 +42,6 @@ List getWellList(@Param("scope") DataScope dataScope, @Param("keywords") String keywords, @Param("wellType") String deviceType, @Param("deptid") String deptid); - List getAlarmWellList(@Param("scope") DataScope dataScope, @Param("keywords") String keywords, @Param("wellType") String deviceType, @Param("deptid") String deptid); - - List getNotAlarmWellList(@Param("scope") DataScope dataScope, @Param("keywords") String keywords, @Param("wellType") String deviceType, @Param("deptid") String deptid); void updateBatchBfcf(@Param("keywords") String keywords, @Param("wellType") String wellType, @Param("deptid") String deptid, @Param("bfzt") String bfzt, @Param("deptIds") List deptIds); @@ -75,7 +51,7 @@ List getWellListAll(); - List getDeviceList(@Param("scope") DataScope dataScope); - DeviceInfoDto selectDeviceById(@Param("id") Long id); + + } diff --git a/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml b/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml index 138f825..44eccc8 100644 --- a/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml +++ b/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml @@ -91,27 +91,6 @@ )
- - d - . - ID - AS deviceId, DEVCODE AS devcode, INSTALL_DATE AS installDate, ONLINE_STATE AS onlineState, t.TYPE_NAME AS typeName - - - @@ -137,103 +116,7 @@ ) - - - - - - - - - - - - - - - - - - - - UPDATE @@ -420,46 +272,6 @@ - - + + diff --git a/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/enmus/HarmfulGasBusiness.java b/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/enmus/HarmfulGasBusiness.java deleted file mode 100644 index d3bfabc..0000000 --- a/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/enmus/HarmfulGasBusiness.java +++ /dev/null @@ -1,44 +0,0 @@ -package com.casic.missiles.modular.system.enmus; - -public enum HarmfulGasBusiness { - - CO(0, "CO浓度","ppm"), - CH4(1, "CH4浓度","%VOL"), - H2S(2, "H2S浓度","ppm"), - O2(3, "O2浓度","%VOL"); - //SWITCH(4, "液位开关",""); - - private int code; - private String desc; - private String unit; - - public int getCode() { - return code; - } - - public void setCode(int code) { - this.code = code; - } - - public String getDesc() { - return desc; - } - - public void setDesc(String desc) { - this.desc = desc; - } - - public String getUnit() { - return unit; - } - - public void setUnit(String unit) { - this.unit = unit; - } - - HarmfulGasBusiness(int code, String desc, String unit) { - this.code = code; - this.desc = desc; - this.unit = unit; - } -} diff --git a/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/enmus/SluicewellExportEnum.java b/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/enmus/SluicewellExportEnum.java deleted file mode 100644 index d451598..0000000 --- a/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/enmus/SluicewellExportEnum.java +++ /dev/null @@ -1,59 +0,0 @@ -package com.casic.missiles.modular.system.enmus; - - - -import java.util.ArrayList; -import java.util.List; -import java.util.Map; - -public enum SluicewellExportEnum { - - DEVICE_EXPORT( - new ArrayList() {{ -// add(new Header("井编号", "wellCode")); -// add(new Header("井名称", "wellName")); -// add(new Header("井深", "deep")); -// add(new Header("详细地址", "position")); -// add(new Header("井类型", "wellTypeName")); -// add(new Header("权属单位", "deptName")); -// add(new Header("设备数量", "deviceCount")); -// add(new Header("布防状态", "bfztName")); - }}, "sluicewell.xlsx", "井数据导出"); - - //SLUICEWELLDATA_EXPORT("sluicewell.xlsx", "sluicewell.xlsx", "闸井数据"); - - /** - * 导出模板相对路径 - */ - private List headers; - /** - * 下载文件名 - */ - private String fileName; - /** - * 描述信息 - */ - private String description; - - SluicewellExportEnum(List headers, String fileName, String description) { - this.headers = headers; - this.fileName = fileName; - this.description = description; - } - - public List getHeaders() { - return headers; - } - - public String getFileName() { - return fileName; - } - - public String getDescription() { - return description; - } - - public Map getCustomColumnStyle() { - return null; - } -} diff --git a/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/enmus/TemphumBusiness.java b/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/enmus/TemphumBusiness.java deleted file mode 100644 index 27d15e2..0000000 --- a/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/enmus/TemphumBusiness.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.casic.missiles.modular.system.enmus; - -public enum TemphumBusiness { - - TEMP(0, "井内温度","℃"), - HUM(1, "井内湿度","%RH"); - - private int code; - private String desc; - private String unit; - - public int getCode() { - return code; - } - - public void setCode(int code) { - this.code = code; - } - - public String getDesc() { - return desc; - } - - public void setDesc(String desc) { - this.desc = desc; - } - - public String getUnit() { - return unit; - } - - public void setUnit(String unit) { - this.unit = unit; - } - - TemphumBusiness(int code, String desc, String unit) { - this.code = code; - this.desc = desc; - this.unit = unit; - } -} diff --git a/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/controller/BusMapOverviewController.java b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/controller/BusMapOverviewController.java new file mode 100644 index 0000000..9d9f43c --- /dev/null +++ b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/controller/BusMapOverviewController.java @@ -0,0 +1,182 @@ +package com.casic.missiles.modular.system.controller; + +import cn.hutool.core.collection.CollectionUtil; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.model.exception.ServiceException; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.model.response.SuccessResponseData; +import com.casic.missiles.modular.system.dto.BusWellInfoDto; +import com.casic.missiles.modular.system.dto.DeviceDataDto; +import com.casic.missiles.modular.system.dto.DeviceInfoDto; +import com.casic.missiles.modular.system.dto.WatchDataDto; +import com.casic.missiles.modular.system.model.BusWellInfo; +import com.casic.missiles.modular.system.service.IBusDeviceSupportService; +import com.casic.missiles.modular.system.service.IBusWellInfoSupportService; +import com.casic.missiles.modular.system.service.IDataAnalysisService; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.ResponseBody; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; + +/** + * 地图总览模块的controller + * + * @author tanyue + * @Date 2019-05-13 19:20:29 + */ +@Controller +@RequestMapping("/overview") +public class BusMapOverviewController extends BaseController { + + @Resource + private AbstractPermissionContext permissionService; + @Resource + private AbstractDictService dictService; + @Resource + private IBusWellInfoSupportService busWellInfoService; + @Resource + private IDataAnalysisService dataAnalysisService; + @Resource + private IBusDeviceSupportService busDeviceSupportService; + + /** + * 获取列表 + */ + @RequestMapping(value = "/wellList") + @ResponseBody + public Object wellList(@RequestParam(required = false) String keywords, + @RequestParam(required = false) String wellType, + @RequestParam(required = false) String deptid, + @RequestParam(required = false) String isAlarm) { + + DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope(); + List wellList = new ArrayList(); + + if (null == isAlarm || isAlarm.equals("") == true) { + // isAlarm参数为空,查询所有的闸井 + + // 查询并添加当前部门的闸井 + List myList = busWellInfoService.getWellList(dataScope, keywords, wellType, deptid); + if (null != myList && myList.isEmpty() == false) { + wellList.addAll(myList); + } + + /** + * 不需要了,由dataScope控制权限 + // 查询并添加下级部门的闸井 + List subDepts = permissionService.getSubDepts(deptid,null); + if (null != subDepts && subDepts.isEmpty() == false) { + for (Long subDeptId : subDepts) { + List subList = busWellInfoService.getWellList(dataScope, keywords, wellType, String.valueOf(subDeptId)); + if (null != subList && subList.isEmpty() == false) { + wellList.addAll(subList); + } + } + } + */ + } else if (isAlarm.equals("1")) { + // isAlarm = 1 查询所有报警状态的闸井 + wellList = dataAnalysisService.getAlarmWellList(dataScope, keywords, wellType, deptid); + } else { + // isAlarm = 0 查询所有不是报警状态的闸井 + wellList = dataAnalysisService.getNotAlarmWellList(dataScope, keywords, wellType, deptid); + } + + + return ResponseData.success(wellList); + } + + /** + * 获取设备列表 + */ + @RequestMapping(value = "/deviceList") + @ResponseBody + public Object deviceList() { + + DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope(); + List wellList = new ArrayList(); + wellList = busDeviceSupportService.getDeviceList(dataScope); + return ResponseData.success(wellList); + } + + /** + * 获取设备详情 + */ + @RequestMapping(value = "/deviceDetail", method = RequestMethod.GET) + @ResponseBody + public Object deviceDetail(@RequestParam(required = true) Long id) { + if (null == id) { + throw new ServiceException(CoreExceptionEnum.REQUEST_NULL); + } + DeviceInfoDto deviceInfoDto = busDeviceSupportService.selectDeviceById(id); + SuccessResponseData successResult = new SuccessResponseData(); + if (null == deviceInfoDto) { + successResult.setCode(200); + successResult.setMessage("success"); + successResult.setData(new HashMap()); + } else { + // 设置最新的监测数据 + List deviceDataDtoList = dataAnalysisService.getDeviceDatas(deviceInfoDto.getDeviceTypeName(), deviceInfoDto.getDevcode(), deviceInfoDto.getOnlineState()); + if (CollectionUtil.isNotEmpty(deviceDataDtoList)) { + deviceInfoDto.setRealtimeData(deviceDataDtoList); + } + successResult.setMessage("success"); + successResult.setData(deviceInfoDto); + } + return successResult; + } + + + /** + * 获取闸井详情 + */ + @RequestMapping(value = "/wellInfo", method = RequestMethod.GET) + @ResponseBody + public Object wellInfo(@RequestParam(required = true) Long id) { + if (null == id) { + throw new ServiceException(CoreExceptionEnum.REQUEST_NULL); + } + + BusWellInfo busWellInfo = busWellInfoService.getById(id); + SuccessResponseData successResult = new SuccessResponseData(); + if (null == busWellInfo) { + successResult.setCode(200); + successResult.setMessage("success"); + successResult.setData(new HashMap()); + } else { + BusWellInfoDto busWellInfoDto = new BusWellInfoDto(); + busWellInfoDto.convertBusWellInfo(busWellInfo); + + // 设置字典值 + busWellInfoDto.setBfztName(dictService.getDictNameByCode("bfzt", busWellInfo.getBfzt())); + busWellInfoDto.setWellTypeName(dictService.getDictNameByCode("sluicewellType", busWellInfo.getWellType())); + busWellInfoDto.setDeptName(permissionService.getDeptService().getDeptName(busWellInfo.getDeptid())); + + // 设置最新的监测数据 + List watchDataDtos = dataAnalysisService.getWatchDatas(id); + if (null != watchDataDtos && watchDataDtos.isEmpty() == false) { + for (WatchDataDto watchDataDto : watchDataDtos) { + watchDataDto.setValue(watchDataDto.getData()); + } + } + + busWellInfoDto.setWatchData(watchDataDtos); + + successResult.setMessage("success"); + successResult.setData(busWellInfoDto.toMap()); + } + return successResult; + } + + +} diff --git a/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/controller/WellDataController.java b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/controller/WellDataController.java new file mode 100644 index 0000000..c33ec7d --- /dev/null +++ b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/controller/WellDataController.java @@ -0,0 +1,81 @@ +package com.casic.missiles.modular.system.controller; + +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.model.exception.ServiceException; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.model.response.SuccessResponseData; +import com.casic.missiles.modular.system.service.IDataAnalysisService; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.ResponseBody; + +import javax.annotation.Resource; +import java.util.List; +import java.util.Set; + +@Controller +@RequestMapping("/well") +public class WellDataController extends BaseController { + @Resource + private AbstractPermissionContext permissionService; + @Resource + private IDataAnalysisService dataAnalysisService; + + + /** + * 获取闸井设备数据 + */ + @RequestMapping(value = "/watchDataByWell", method = RequestMethod.GET) + @ResponseBody + public Object watchDataByWell(Long id) { + if (null == id) { + throw new ServiceException(CoreExceptionEnum.REQUEST_NULL); + } + SuccessResponseData resultData = new SuccessResponseData(); + resultData.setData(dataAnalysisService.getWatchDatas(id)); + + return resultData; + } + + /** + * 根据布防状态统计闸井数量接口 + */ + @RequestMapping(value = "/countByBfzt", method = RequestMethod.GET) + @ResponseBody + public Object countByBfzt() { + DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope(); + Set roleTipes = permissionService.getAuthService().getLoginUser().getRoleTips(); + List deptIds = null; + Boolean isApp = false; + if (roleTipes.contains("leader") || roleTipes.contains("member")) { + deptIds = permissionService.getDeptService().getIdsByPid(permissionService.getAuthService().getLoginUser().getDeptId(), null); + deptIds.add(permissionService.getAuthService().getLoginUser().getDeptId()); + isApp = true; + } else { + deptIds = dataScope.getDeptIds(); + isApp = false; + } + SuccessResponseData resultData = new SuccessResponseData(); + dataAnalysisService.getBfztCountData(deptIds, isApp); + resultData.setData(dataAnalysisService.getBfztCountData(deptIds, isApp)); + return resultData; + } + + /** + * 获取布防类型(APP用) + */ + @RequestMapping(value = "/bfType", method = RequestMethod.GET) + @ResponseBody + public Object bfType(Long id) { + if (null == id) { + throw new ServiceException(CoreExceptionEnum.REQUEST_NULL); + } + SuccessResponseData resultData = new SuccessResponseData(); + resultData.setData(dataAnalysisService.getWatchDatas(id)); + return resultData; + } + +} diff --git a/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/dao/DataAnalysisMapper.java b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/dao/DataAnalysisMapper.java new file mode 100644 index 0000000..149fb82 --- /dev/null +++ b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/dao/DataAnalysisMapper.java @@ -0,0 +1,48 @@ +package com.casic.missiles.modular.system.dao; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.*; +import com.casic.missiles.modular.system.model.BusWellInfo; +import com.casic.missiles.core.datascope.DataScope; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * 闸井信息表 Mapper 接口 + *

+ * + * @author stylefeng123 + * @since 2019-05-13 + */ +public interface DataAnalysisMapper extends BaseMapper { + + List getAlarmWellList(@Param("scope") DataScope dataScope, @Param("keywords") String keywords, @Param("wellType") String deviceType, @Param("deptid") String deptid); + + List getNotAlarmWellList(@Param("scope") DataScope dataScope, @Param("keywords") String keywords, @Param("wellType") String deviceType, @Param("deptid") String deptid); + + DeviceData wellcoverData(@Param("devcode") String devcode); + + DeviceData liquidData(@Param("devcode") String devcode); + + DeviceData harmfulgasData(@Param("devcode") String devcode); + + DeviceData gasData(@Param("devcode") String devcode); + + DeviceData temphumData(@Param("devcode") String devcode); + + DeviceData digData(@Param("devcode") String devcode); + + DeviceData noiseData(@Param("devcode") String devcode); + + DeviceData wellcoverlocaData(@Param("devcode") String devcode); + + DeviceData lgGasData(@Param("devcode") String devcode);//燃气液位 + + DeviceData lgLiquidData(@Param("devcode") String devcode);//燃气液位 + + + BfztCountDataDto bfztCountData(@Param("deptIds") List deptIds, @Param("isApp") Boolean isApp); +} diff --git a/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/dao/mapping/DataAnalysisMapper.xml b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/dao/mapping/DataAnalysisMapper.xml new file mode 100644 index 0000000..6d7edb3 --- /dev/null +++ b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/dao/mapping/DataAnalysisMapper.xml @@ -0,0 +1,170 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ID + AS id, WELL_CODE AS wellCode, WELL_NAME AS wellName, DEEP AS deep, COORDINATE_X AS coordinateX, COORDINATE_Y AS coordinateY, LAT_BAIDU AS latBaidu, LNG_BAIDU AS lngBaidu, LNG_GAODE AS lngGaode, LAT_GAODE AS latGaode, AREA AS area, POSITION AS position, DEPTID AS deptid, PHOTOS AS photos, NOTES AS notes, WELL_TYPE AS wellType, STAFF AS staff, TEL AS tel, TS AS ts, VALID AS valid, BFZT AS bfzt, RESPONSIBLE_DEPT AS responsibleDept + + + + ID + AS id, WELL_CODE AS wellCode, WELL_NAME AS wellName, DEEP AS deep, COORDINATE_X AS coordinateX, COORDINATE_Y AS coordinateY, LAT_BAIDU AS latBaidu, LNG_BAIDU AS lngBaidu, LNG_GAODE AS lngGaode, LAT_GAODE AS latGaode, AREA AS area, POSITION AS position, DEPTID AS deptid, PHOTOS AS photos, NOTES AS notes, WELL_TYPE AS wellType, STAFF AS staff, TEL AS tel, TS AS ts, VALID AS valid, BFZT AS bfzt,d1.simplename AS deptName,d2.id AS responsibleDept,d2.simplename AS responsibleDeptName + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/service/IDataAnalysisService.java b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/service/IDataAnalysisService.java new file mode 100644 index 0000000..69c8c60 --- /dev/null +++ b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/service/IDataAnalysisService.java @@ -0,0 +1,51 @@ +package com.casic.missiles.modular.system.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.modular.system.dto.BfztCountDataDto; +import com.casic.missiles.modular.system.dto.BusWellInfoDto; +import com.casic.missiles.modular.system.dto.DeviceDataDto; +import com.casic.missiles.modular.system.dto.WatchDataDto; +import com.casic.missiles.modular.system.model.BusWellInfo; + +import java.util.List; + +/** + * 数据统计服务接口 + * + * @author lwh + */ +public interface IDataAnalysisService extends IService { + /** + * 获取告警闸井列表 + * @param dataScope 数据权限 + * @param keywords 关键字 + * @param wellType 井列表 + * @param deptid 组织id + * @return + */ + List getAlarmWellList(DataScope dataScope, String keywords, String wellType, String deptid); + + /** + * 获取不告警井列表信息 + * @param dataScope 数据权限 + * @param keywords 关键字 + * @param wellType 井类型 + * @param deptid 组织id + * @return + */ + List getNotAlarmWellList(DataScope dataScope, String keywords, String wellType, String deptid); + + /** + * 设备数据查询接口 + * @param devTypename 设备类型 + * @param devcode 设备编码 + * @param status 设备状态 + * @return 设备监测数据 + */ + List getDeviceDatas(String devTypename, String devcode, String status); + List getWatchDatas(Long id); + + + BfztCountDataDto getBfztCountData(List deptIds, Boolean isApp); +} diff --git a/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/service/impl/IDataAnalysisServiceImpl.java b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/service/impl/IDataAnalysisServiceImpl.java new file mode 100644 index 0000000..288a828 --- /dev/null +++ b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/service/impl/IDataAnalysisServiceImpl.java @@ -0,0 +1,386 @@ +package com.casic.missiles.modular.system.service.impl; + +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.modular.system.dao.DataAnalysisMapper; +import com.casic.missiles.modular.system.dto.*; +import com.casic.missiles.modular.system.enmus.HarmfulGasBusiness; +import com.casic.missiles.modular.system.enmus.TemphumBusiness; +import com.casic.missiles.modular.system.model.BusWellInfo; +import com.casic.missiles.modular.system.service.IBusDeviceSupportService; +import com.casic.missiles.modular.system.service.IDataAnalysisService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import java.text.DateFormat; +import java.text.DecimalFormat; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.List; + +/** + * 数据统计分析 + * + * @author lwh + */ +@Slf4j +@Component +public class IDataAnalysisServiceImpl extends ServiceImpl implements IDataAnalysisService { + @Resource + private AbstractDictService dictService; + @Resource + private IBusDeviceSupportService deviceSupportService; + + @Override + public List getAlarmWellList(DataScope dataScope, String keywords, String wellType, String deptid) { + return this.baseMapper.getAlarmWellList(dataScope, keywords, wellType, deptid); + } + + @Override + public List getNotAlarmWellList(DataScope dataScope, String keywords, String wellType, String deptid) { + return this.baseMapper.getNotAlarmWellList(dataScope, keywords, wellType, deptid); + } + + @Override + public List getDeviceDatas(String devTypeName, String devcode, String status) { + List deviceDataDtoList = new ArrayList<>(); + DeviceDataDto deviceDataDto = new DeviceDataDto(); + DeviceData deviceData; + DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + switch (devTypeName) { + case "井盖状态监测仪": + deviceData = this.baseMapper.wellcoverData(devcode); + deviceDataDto.setTypeName("井盖状态"); + if (ObjectUtil.isNotEmpty(deviceData)) { + //井盖离线 + if ("0".equals(status)) { + deviceDataDto.setValue("离线"); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } else if ("心跳".equals(deviceData.getData())) { + deviceDataDto.setValue("井盖状态正常"); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } else { + deviceDataDto.setValue(deviceData.getData()); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } + } else { + deviceDataDto.setValue("无数据"); + } + deviceDataDtoList.add(deviceDataDto); + break; + + case "液位监测仪": + deviceData = this.baseMapper.liquidData(devcode); + if (ObjectUtil.isNotEmpty(deviceData)) { + deviceDataDto.setTypeName("井内水位"); + deviceDataDto.setValue(deviceData.getData() + "m"); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + deviceDataDtoList.add(deviceDataDto); + } + break; + + case "有害气体监测仪": + deviceData = this.baseMapper.harmfulgasData(devcode); + if (ObjectUtil.isNotEmpty(deviceData)) { + String[] harmfulGasDatas = deviceData.getData().split(","); + HarmfulGasBusiness[] harmfulGasBusinesses = HarmfulGasBusiness.values(); + for (int i = 0; i < harmfulGasDatas.length; i++) { + deviceDataDto = new DeviceDataDto(); + deviceDataDto.setTypeName(harmfulGasBusinesses[i].getDesc()); + deviceDataDto.setValue(harmfulGasDatas[i] + harmfulGasBusinesses[i].getUnit()); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + deviceDataDtoList.add((DeviceDataDto) deviceDataDto.clone()); + } + } + break; + case "燃气智能监测终端": + deviceData = this.baseMapper.gasData(devcode); + if (ObjectUtil.isNotEmpty(deviceData)) { + deviceDataDto.setTypeName("燃气浓度"); + deviceDataDto.setValue(deviceData.getData() + "%LEL"); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + deviceDataDtoList.add(deviceDataDto); + } + break; + + case "温湿度监测仪": + deviceData = this.baseMapper.temphumData(devcode); + if (ObjectUtil.isNotEmpty(deviceData)) { + String[] temphumDatas = deviceData.getData().split(","); + TemphumBusiness[] temphumBusinesses = TemphumBusiness.values(); + for (int i = 0; i < temphumDatas.length; i++) { + deviceDataDto = new DeviceDataDto(); + deviceDataDto.setTypeName(temphumBusinesses[i].getDesc()); + deviceDataDto.setValue(temphumDatas[i] + temphumBusinesses[i].getUnit()); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + deviceDataDtoList.add((DeviceDataDto) deviceDataDto.clone()); + } + } + break; + + case "开挖监测仪": + deviceData = this.baseMapper.digData(devcode); + if (ObjectUtil.isNotEmpty(deviceData)) { + deviceDataDto.setTypeName("开挖状态"); + deviceDataDto.setValue(deviceData.getData() + "mg"); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + deviceDataDtoList.add(deviceDataDto); + } + break; + + case "噪声记录仪": + deviceData = this.baseMapper.noiseData(devcode); + if (ObjectUtil.isNotEmpty(deviceData)) { + deviceDataDto.setTypeName("管线噪声"); + deviceDataDto.setValue(deviceData.getData() + "mg"); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + deviceDataDtoList.add(deviceDataDto); + } + break; + case "井盖定位监测仪": + deviceData = this.baseMapper.wellcoverlocaData(devcode); + if (ObjectUtil.isNotEmpty(deviceData)) { + deviceDataDto.setTypeName("井盖位置"); + deviceDataDto.setValue(deviceData.getData()); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + deviceDataDtoList.add(deviceDataDto); + } + break; + + case "燃气智能监测终端(一体化)": + deviceData = this.baseMapper.lgGasData(devcode); + deviceDataDto.setTypeName("燃气浓度"); + if (ObjectUtil.isNotEmpty(deviceData)) { + + Double dValue = Double.parseDouble(deviceData.getData()); + if (dValue <= 20.0) { + deviceDataDto.setValue(deviceData.getData() + "%LEL"); + } else { + DecimalFormat df = new DecimalFormat("0.00"); + dValue = dValue / 20.0; + deviceDataDto.setValue(df.format(dValue) + "%VOL"); + } + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } else { + deviceDataDto.setValue("无数据"); + } + deviceDataDtoList.add(deviceDataDto); + + deviceData = this.baseMapper.lgLiquidData(devcode); + deviceDataDto.setTypeName("井内水位"); + if (ObjectUtil.isNotEmpty(deviceData)) { + + deviceDataDto.setValue(deviceData.getData() + "m"); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } else { + deviceDataDto.setValue("无数据"); + } + deviceDataDtoList.add((DeviceDataDto) deviceDataDto.clone()); + break; + + default://未知设备 + log.info("未知设备!"); + break; + } + return deviceDataDtoList; + } + + @Override + public BfztCountDataDto getBfztCountData(List deptIds, Boolean isApp) { + return this.baseMapper.bfztCountData(deptIds, isApp); + } + + @Override + public List getWatchDatas(Long id) { + + List deviceInWellInfos = deviceSupportService.getDeviceInWellInfo(id); + List watchDataDtos = new ArrayList<>(); + + for (DeviceInWellInfo deviceInWellInfo : deviceInWellInfos) { + WatchDataDto watchDataDto = new WatchDataDto(); + watchDataDto.setDeviceId(deviceInWellInfo.getDeviceId()); + watchDataDto.setDevcode(deviceInWellInfo.getDevcode()); + watchDataDto.setInstallDate(deviceInWellInfo.getInstallDate()); + watchDataDto.setOnlineState(deviceInWellInfo.getOnlineState()); + watchDataDto.setOnlineStateName(dictService.getDictNameByCode("onlineStatus", deviceInWellInfo.getOnlineState())); + + DeviceData deviceData; + DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + + switch (deviceInWellInfo.getTypeName()) { + case "井盖状态监测仪": + deviceData = this.baseMapper.wellcoverData(deviceInWellInfo.getDevcode()); + watchDataDto.setWatchType("井盖状态"); + watchDataDto.setType("1"); + if (ObjectUtil.isNotEmpty(deviceData)) { + //井盖离线 + if ("0".equals(watchDataDto.getOnlineState())) { + watchDataDto.setValue("离线"); + watchDataDto.setData("离线"); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } else if ("心跳".equals(deviceData.getData())) { + watchDataDto.setValue("井盖状态正常"); + watchDataDto.setData("井盖状态正常"); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } else { + watchDataDto.setValue(deviceData.getData()); + watchDataDto.setData(deviceData.getData()); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } + } else { + watchDataDto.setValue("无数据"); + watchDataDto.setData("无数据"); + } + watchDataDtos.add(watchDataDto); + break; + + case "液位监测仪": + deviceData = this.baseMapper.liquidData(deviceInWellInfo.getDevcode()); + if (ObjectUtil.isNotEmpty(deviceData)) { + watchDataDto.setWatchType("井内水位"); + watchDataDto.setType("2"); + + watchDataDto.setValue(deviceData.getData() + "m"); + watchDataDto.setData(deviceData.getData() + "m"); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + watchDataDtos.add(watchDataDto); + } + break; + + case "有害气体监测仪": + deviceData = this.baseMapper.harmfulgasData(deviceInWellInfo.getDevcode()); + if (ObjectUtil.isNotEmpty(deviceData)) { + String[] harmfulGasDatas = deviceData.getData().split(","); + HarmfulGasBusiness[] harmfulGasBusinesses = HarmfulGasBusiness.values(); + + for (int i = 0; i < harmfulGasDatas.length; i++) { + watchDataDto.setWatchType(harmfulGasBusinesses[i].getDesc()); + watchDataDto.setType("3"); + watchDataDto.setValue(harmfulGasDatas[i] + harmfulGasBusinesses[i].getUnit()); + watchDataDto.setData(harmfulGasDatas[i] + harmfulGasBusinesses[i].getUnit()); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + watchDataDtos.add((WatchDataDto) watchDataDto.clone()); + } + } + break; + + case "燃气智能监测终端": + deviceData = this.baseMapper.gasData(deviceInWellInfo.getDevcode()); + if (ObjectUtil.isNotEmpty(deviceData)) { + watchDataDto.setWatchType("燃气浓度"); + watchDataDto.setType("4"); + + watchDataDto.setValue(deviceData.getData() + "%LEL"); + watchDataDto.setData(deviceData.getData() + "%LEL"); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + watchDataDtos.add(watchDataDto); + } + break; + + case "温湿度监测仪": + deviceData = this.baseMapper.temphumData(deviceInWellInfo.getDevcode()); + if (ObjectUtil.isNotEmpty(deviceData)) { + String[] temphumDatas = deviceData.getData().split(","); + TemphumBusiness[] temphumBusinesses = TemphumBusiness.values(); + + for (int i = 0; i < temphumDatas.length; i++) { + watchDataDto.setWatchType(temphumBusinesses[i].getDesc()); + watchDataDto.setType("5"); + watchDataDto.setValue(temphumDatas[i] + temphumBusinesses[i].getUnit()); + watchDataDto.setData(temphumDatas[i] + temphumBusinesses[i].getUnit()); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + watchDataDtos.add((WatchDataDto) watchDataDto.clone()); + } + } + break; + + case "开挖监测仪": + deviceData = this.baseMapper.digData(deviceInWellInfo.getDevcode()); + if (ObjectUtil.isNotEmpty(deviceData)) { + watchDataDto.setWatchType("开挖状态"); + watchDataDto.setType("6"); + + watchDataDto.setValue(deviceData.getData() + "mg"); + watchDataDto.setData(deviceData.getData() + "mg"); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + watchDataDtos.add(watchDataDto); + } + break; + + case "噪声记录仪": + deviceData = this.baseMapper.noiseData(deviceInWellInfo.getDevcode()); + if (ObjectUtil.isNotEmpty(deviceData)) { + watchDataDto.setWatchType("管线噪声"); + watchDataDto.setType("8"); + + watchDataDto.setValue(deviceData.getData() + "mg"); + watchDataDto.setData(deviceData.getData() + "mg"); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + watchDataDtos.add(watchDataDto); + } + break; + + case "井盖定位监测仪": + deviceData = this.baseMapper.wellcoverlocaData(deviceInWellInfo.getDevcode()); + if (ObjectUtil.isNotEmpty(deviceData)) { + watchDataDto.setWatchType("井盖位置"); + watchDataDto.setType("7"); + + watchDataDto.setValue(deviceData.getData()); + watchDataDto.setData(deviceData.getData()); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + watchDataDtos.add(watchDataDto); + } + break; + + case "燃气智能监测终端(一体化)": + deviceData = this.baseMapper.lgGasData(deviceInWellInfo.getDevcode()); + watchDataDto.setWatchType("燃气浓度"); + watchDataDto.setType("10"); + if (ObjectUtil.isNotEmpty(deviceData)) { + + Double dValue = Double.parseDouble(deviceData.getData()); + if (dValue <= 20.0) { + watchDataDto.setValue(deviceData.getData() + "%LEL"); + watchDataDto.setData(deviceData.getData() + "%LEL"); + } else { + DecimalFormat df = new DecimalFormat("0.00"); + dValue = dValue / 20.0; + watchDataDto.setValue(df.format(dValue) + "%VOL"); + watchDataDto.setData(df.format(dValue) + "%VOL"); + } + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } else { + watchDataDto.setValue("无数据"); + watchDataDto.setData("无数据"); + } + watchDataDtos.add((WatchDataDto) watchDataDto.clone()); + + deviceData = this.baseMapper.lgLiquidData(deviceInWellInfo.getDevcode()); + watchDataDto.setWatchType("井内水位"); + watchDataDto.setType("10"); + if (ObjectUtil.isNotEmpty(deviceData)) { + + watchDataDto.setValue(deviceData.getData() + "m"); + watchDataDto.setData(deviceData.getData() + "m"); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } else { + watchDataDto.setValue("无数据"); + watchDataDto.setData("无数据"); + } + watchDataDtos.add((WatchDataDto) watchDataDto.clone()); + break; + + default://未知设备 + log.info("未知设备!"); + break; + } + } + + return watchDataDtos; + } + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java index d45eaf7..b9ca243 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java @@ -21,7 +21,7 @@ public interface DeviceMapper extends BaseMapper { List selectDataScopePage(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("deviceType") String deviceType, @Param("deptid") String deptid, @Param("beginTime") String beginTime, @Param("endTime") String endTime, @Param("keywords") String keywords,@Param("isOnline") String isOnline); - + List getDeviceList(@Param("scope") DataScope dataScope); DeviceWellDto selectWellIdByCode(@Param("wellCode") String wellCode); DeviceConcentratorDto selectDeviceConcentorByCode(@Param("concenCode") String concenCode); @@ -61,4 +61,13 @@ List> selectTempDataList(@Param("dataScope")DataScope dataScope, @Param("wellCode")String wellCode, @Param("beginTime")String beginTime, @Param("endTime")String endTime); List> selectHarmfulDataList(@Param("dataScope")DataScope dataScope, @Param("wellCode")String wellCode, @Param("beginTime")String beginTime, @Param("endTime")String endTime); + + /** + * 查询设备信息 + * @param id 设备主键 + * @return + */ + DeviceInfoDto selectDeviceById(@Param("id") Long id); + + List getDeviceInWellInfo(@Param("id") Long id); } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml index fb6f4f4..c956057 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml @@ -902,5 +902,64 @@ ) t1 ORDER BY uptime asc + + + + d.ID AS deviceId, DEVCODE AS devcode, INSTALL_DATE AS installDate, ONLINE_STATE AS onlineState, t.TYPE_NAME AS typeName + + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java b/casic-device/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java index 72c60f0..090415c 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java @@ -17,7 +17,7 @@ * @author lwh123 * @since 2019-05-23 */ -public interface IDeviceService extends IService { +public interface IDeviceService extends IService{ /** * 根据条件分页查询设备列表 diff --git a/casic-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java index 0b089f3..de9111e 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java @@ -39,7 +39,7 @@ * @since 2019-05-23 */ @Service -public class DeviceServiceImpl extends ServiceImpl implements IDeviceService { +public class DeviceServiceImpl extends ServiceImpl implements IDeviceService,IBusDeviceSupportService { @Autowired private IDeviceTypeService deviceTypeService; @@ -514,4 +514,19 @@ } return list; } + + @Override + public List getDeviceList(DataScope dataScope) { + return this.baseMapper.getDeviceList(dataScope); + } + + @Override + public DeviceInfoDto selectDeviceById(Long id) { + return this.baseMapper.selectDeviceById(id); + } + + @Override + public List getDeviceInWellInfo(Long id) { + return this.baseMapper.getDeviceInWellInfo(id); + } } diff --git a/casic-server-support/src/main/java/com/casic/missiles/modular/system/enmus/HarmfulGasBusiness.java b/casic-server-support/src/main/java/com/casic/missiles/modular/system/enmus/HarmfulGasBusiness.java new file mode 100644 index 0000000..d3bfabc --- /dev/null +++ b/casic-server-support/src/main/java/com/casic/missiles/modular/system/enmus/HarmfulGasBusiness.java @@ -0,0 +1,44 @@ +package com.casic.missiles.modular.system.enmus; + +public enum HarmfulGasBusiness { + + CO(0, "CO浓度","ppm"), + CH4(1, "CH4浓度","%VOL"), + H2S(2, "H2S浓度","ppm"), + O2(3, "O2浓度","%VOL"); + //SWITCH(4, "液位开关",""); + + private int code; + private String desc; + private String unit; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public String getDesc() { + return desc; + } + + public void setDesc(String desc) { + this.desc = desc; + } + + public String getUnit() { + return unit; + } + + public void setUnit(String unit) { + this.unit = unit; + } + + HarmfulGasBusiness(int code, String desc, String unit) { + this.code = code; + this.desc = desc; + this.unit = unit; + } +} diff --git a/casic-server-support/src/main/java/com/casic/missiles/modular/system/enmus/SluicewellExportEnum.java b/casic-server-support/src/main/java/com/casic/missiles/modular/system/enmus/SluicewellExportEnum.java new file mode 100644 index 0000000..d451598 --- /dev/null +++ b/casic-server-support/src/main/java/com/casic/missiles/modular/system/enmus/SluicewellExportEnum.java @@ -0,0 +1,59 @@ +package com.casic.missiles.modular.system.enmus; + + + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +public enum SluicewellExportEnum { + + DEVICE_EXPORT( + new ArrayList() {{ +// add(new Header("井编号", "wellCode")); +// add(new Header("井名称", "wellName")); +// add(new Header("井深", "deep")); +// add(new Header("详细地址", "position")); +// add(new Header("井类型", "wellTypeName")); +// add(new Header("权属单位", "deptName")); +// add(new Header("设备数量", "deviceCount")); +// add(new Header("布防状态", "bfztName")); + }}, "sluicewell.xlsx", "井数据导出"); + + //SLUICEWELLDATA_EXPORT("sluicewell.xlsx", "sluicewell.xlsx", "闸井数据"); + + /** + * 导出模板相对路径 + */ + private List headers; + /** + * 下载文件名 + */ + private String fileName; + /** + * 描述信息 + */ + private String description; + + SluicewellExportEnum(List headers, String fileName, String description) { + this.headers = headers; + this.fileName = fileName; + this.description = description; + } + + public List getHeaders() { + return headers; + } + + public String getFileName() { + return fileName; + } + + public String getDescription() { + return description; + } + + public Map getCustomColumnStyle() { + return null; + } +} diff --git a/casic-server-support/src/main/java/com/casic/missiles/modular/system/enmus/TemphumBusiness.java b/casic-server-support/src/main/java/com/casic/missiles/modular/system/enmus/TemphumBusiness.java new file mode 100644 index 0000000..27d15e2 --- /dev/null +++ b/casic-server-support/src/main/java/com/casic/missiles/modular/system/enmus/TemphumBusiness.java @@ -0,0 +1,41 @@ +package com.casic.missiles.modular.system.enmus; + +public enum TemphumBusiness { + + TEMP(0, "井内温度","℃"), + HUM(1, "井内湿度","%RH"); + + private int code; + private String desc; + private String unit; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public String getDesc() { + return desc; + } + + public void setDesc(String desc) { + this.desc = desc; + } + + public String getUnit() { + return unit; + } + + public void setUnit(String unit) { + this.unit = unit; + } + + TemphumBusiness(int code, String desc, String unit) { + this.code = code; + this.desc = desc; + this.unit = unit; + } +} diff --git a/casic-server-support/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceSupportService.java b/casic-server-support/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceSupportService.java new file mode 100644 index 0000000..0b6fd75 --- /dev/null +++ b/casic-server-support/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceSupportService.java @@ -0,0 +1,42 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.model.application.service.IRepositorySupportService; +import com.casic.missiles.modular.system.dto.DeviceInWellInfo; +import com.casic.missiles.modular.system.dto.DeviceInfoDto; +import com.casic.missiles.modular.system.model.Device; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 设备支撑 + * + * @author lwh + */ +public interface IBusDeviceSupportService { + /** + * 获取设备列表 + * + * @param dataScope 数据权限 + * @return 设备列表 + */ + List getDeviceList(DataScope dataScope); + + + /** + * 查询设备信息 + * + * @param id 设备主键 + * @return 设备信息 + */ + DeviceInfoDto selectDeviceById(Long id); + + /** + * 查询井下设备信息 + * + * @param id 井主键 + * @return 井下设备信息 + */ + List getDeviceInWellInfo(Long id); +} diff --git a/casic-server-support/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoSupportService.java b/casic-server-support/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoSupportService.java new file mode 100644 index 0000000..e34c98e --- /dev/null +++ b/casic-server-support/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoSupportService.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.model.application.service.IRepositorySupportService; +import com.casic.missiles.modular.system.dto.BusWellInfoDto; +import com.casic.missiles.modular.system.model.BusWellInfo; + +import java.util.List; + +/** + * 闸井服务支撑接口 + * + * @author lwh + */ +public interface IBusWellInfoSupportService { + /** + * 获取井列表接口 + * + * @param dataScope 数据权限 + * @param keywords 关键字 + * @param wellType 井类型 + * @param deptid 组织ID + * @return + */ + List getWellList(DataScope dataScope, String keywords, String wellType, String deptid); + + BusWellInfo getById(Long id); +} diff --git a/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/controller/BusMapOverviewController.java b/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/controller/BusMapOverviewController.java deleted file mode 100644 index 078eaf6..0000000 --- a/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/controller/BusMapOverviewController.java +++ /dev/null @@ -1,178 +0,0 @@ -package com.casic.missiles.modular.system.controller; - -import cn.hutool.core.collection.CollectionUtil; -import com.casic.missiles.core.application.context.AbstractPermissionContext; -import com.casic.missiles.core.application.service.AbstractDictService; -import com.casic.missiles.core.base.controller.BaseController; -import com.casic.missiles.core.datascope.DataScope; -import com.casic.missiles.model.exception.ServiceException; -import com.casic.missiles.model.exception.enums.CoreExceptionEnum; -import com.casic.missiles.model.response.ResponseData; -import com.casic.missiles.model.response.SuccessResponseData; -import com.casic.missiles.modular.system.dto.BusWellInfoDto; -import com.casic.missiles.modular.system.dto.DeviceDataDto; -import com.casic.missiles.modular.system.dto.DeviceInfoDto; -import com.casic.missiles.modular.system.dto.WatchDataDto; -import com.casic.missiles.modular.system.model.BusWellInfo; -import com.casic.missiles.modular.system.service.IBusWellInfoService; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestMethod; -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.bind.annotation.ResponseBody; - -import javax.annotation.Resource; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - -/** - * 地图总览模块的controller - * - * @author tanyue - * @Date 2019-05-13 19:20:29 - */ -@Controller -@RequestMapping("/overview") -public class BusMapOverviewController extends BaseController { - - @Resource - private AbstractPermissionContext permissionService; - @Resource - private AbstractDictService dictService; - @Autowired - private IBusWellInfoService busWellInfoService; - - /** - * 获取列表 - */ - @RequestMapping(value = "/wellList") - @ResponseBody - public Object wellList(@RequestParam(required = false) String keywords, - @RequestParam(required = false) String wellType, - @RequestParam(required = false) String deptid, - @RequestParam(required = false) String isAlarm) { - - DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope(); - List wellList = new ArrayList(); - - if (null == isAlarm || isAlarm.equals("") == true) { - // isAlarm参数为空,查询所有的闸井 - - // 查询并添加当前部门的闸井 - List myList = busWellInfoService.getWellList(dataScope, keywords, wellType, deptid); - if (null != myList && myList.isEmpty() == false) { - wellList.addAll(myList); - } - - /** - * 不需要了,由dataScope控制权限 - // 查询并添加下级部门的闸井 - List subDepts = permissionService.getSubDepts(deptid,null); - if (null != subDepts && subDepts.isEmpty() == false) { - for (Long subDeptId : subDepts) { - List subList = busWellInfoService.getWellList(dataScope, keywords, wellType, String.valueOf(subDeptId)); - if (null != subList && subList.isEmpty() == false) { - wellList.addAll(subList); - } - } - } - */ - } else if (isAlarm.equals("1")) { - // isAlarm = 1 查询所有报警状态的闸井 - wellList = busWellInfoService.getAlarmWellList(dataScope, keywords, wellType, deptid); - } else { - // isAlarm = 0 查询所有不是报警状态的闸井 - wellList = busWellInfoService.getNotAlarmWellList(dataScope, keywords, wellType, deptid); - } - - - return ResponseData.success(wellList); - } - - /** - * 获取设备列表 - */ - @RequestMapping(value = "/deviceList") - @ResponseBody - public Object deviceList() { - - DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope(); - List wellList = new ArrayList(); - wellList = busWellInfoService.getDeviceList(dataScope); - return ResponseData.success(wellList); - } - - /** - * 获取设备详情 - */ - @RequestMapping(value = "/deviceDetail", method = RequestMethod.GET) - @ResponseBody - public Object deviceDetail(@RequestParam(required = true) Long id) { - if (null == id) { - throw new ServiceException(CoreExceptionEnum.REQUEST_NULL); - } - DeviceInfoDto deviceInfoDto = busWellInfoService.selectDeviceById(id); - SuccessResponseData successResult = new SuccessResponseData(); - if (null == deviceInfoDto) { - successResult.setCode(200); - successResult.setMessage("success"); - successResult.setData(new HashMap()); - } else { - // 设置最新的监测数据 - List deviceDataDtoList = busWellInfoService. - getDeviceDatas(deviceInfoDto.getDeviceTypeName(), deviceInfoDto.getDevcode(), deviceInfoDto.getOnlineState()); - if (CollectionUtil.isNotEmpty(deviceDataDtoList)) { - deviceInfoDto.setRealtimeData(deviceDataDtoList); - } - successResult.setMessage("success"); - successResult.setData(deviceInfoDto); - } - return successResult; - } - - - /** - * 获取闸井详情 - */ - @RequestMapping(value = "/wellInfo", method = RequestMethod.GET) - @ResponseBody - public Object wellInfo(@RequestParam(required = true) Long id) { - if (null == id) { - throw new ServiceException(CoreExceptionEnum.REQUEST_NULL); - } - - BusWellInfo busWellInfo = busWellInfoService.getById(id); - SuccessResponseData successResult = new SuccessResponseData(); - if (null == busWellInfo) { - successResult.setCode(200); - successResult.setMessage("success"); - successResult.setData(new HashMap()); - } else { - BusWellInfoDto busWellInfoDto = new BusWellInfoDto(); - busWellInfoDto.convertBusWellInfo(busWellInfo); - - // 设置字典值 - busWellInfoDto.setBfztName(dictService.getDictNameByCode("bfzt", busWellInfo.getBfzt())); - busWellInfoDto.setWellTypeName(dictService.getDictNameByCode("sluicewellType", busWellInfo.getWellType())); - busWellInfoDto.setDeptName(permissionService.getDeptService().getDeptName(busWellInfo.getDeptid())); - - // 设置最新的监测数据 - List watchDataDtos = busWellInfoService.getWatchDatas(id); - if (null != watchDataDtos && watchDataDtos.isEmpty() == false) { - for (WatchDataDto watchDataDto : watchDataDtos) { - watchDataDto.setValue(watchDataDto.getData()); - } - } - - busWellInfoDto.setWatchData(watchDataDtos); - - successResult.setMessage("success"); - successResult.setData(busWellInfoDto.toMap()); - } - - return successResult; - } - -} diff --git a/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java b/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java index bd62f3f..ef5a8a8 100644 --- a/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java +++ b/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java @@ -19,7 +19,6 @@ import com.casic.missiles.modular.system.dict.BusWellDict; import com.casic.missiles.modular.system.dto.BatchExportDataDto; import com.casic.missiles.modular.system.dto.HasWellDto; -import com.casic.missiles.modular.system.enmus.SluicewellExportEnum; import com.casic.missiles.modular.system.util.Utility; import com.casic.missiles.quartz.service.IQuartzManager; import org.slf4j.Logger; @@ -217,46 +216,9 @@ } - /** - * 获取闸井设备数据 - */ - @RequestMapping(value = "/watchDataByWell", method = RequestMethod.GET) - @ResponseBody - public Object watchDataByWell(Long id) { - if (null == id) { - throw new ServiceException(CoreExceptionEnum.REQUEST_NULL); - } - SuccessResponseData resultData = new SuccessResponseData(); - resultData.setData(busWellInfoService.getWatchDatas(id)); - - return resultData; - } - - /** - * 根据布防状态统计闸井数量接口 - */ - @RequestMapping(value = "/countByBfzt", method = RequestMethod.GET) - @ResponseBody - public Object countByBfzt() { - DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope(); - Set roleTipes = permissionService.getAuthService().getLoginUser().getRoleTips(); - List deptIds = null; - Boolean isApp = false; - if (roleTipes.contains("leader") || roleTipes.contains("member")) { - deptIds = permissionService.getDeptService().getIdsByPid(permissionService.getAuthService().getLoginUser().getDeptId(), null); - deptIds.add(permissionService.getAuthService().getLoginUser().getDeptId()); - isApp = true; - }else{ - deptIds = dataScope.getDeptIds(); - isApp = false; - } - SuccessResponseData resultData = new SuccessResponseData(); - busWellInfoService.getBfztCountData(deptIds,isApp); - resultData.setData(busWellInfoService.getBfztCountData(deptIds,isApp)); - return resultData; - } + /** * 闸井布防撤防接口 @@ -289,20 +251,6 @@ return ResponseData.success(); } - /** - * 获取布防类型(APP用) - */ - @RequestMapping(value = "/bfType", method = RequestMethod.GET) - @ResponseBody - public Object bfType(Long id) { - if (null ==id) { - throw new ServiceException(CoreExceptionEnum.REQUEST_NULL); - } - SuccessResponseData resultData = new SuccessResponseData(); - resultData.setData(busWellInfoService.getWatchDatas(id)); - - return resultData; - } /** diff --git a/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java b/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java index 001f704..f649b2c 100644 --- a/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java +++ b/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java @@ -21,32 +21,11 @@ List selectDataScopePage(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("keywords") String keywords, @Param("wellType") String wellType, @Param("deptid") String deptid, @Param("bfzt") String bfzt); - List getDeviceInWellInfo(@Param("id") Long id); + List watchData(@Param("id") Long id); - DeviceData wellcoverData(@Param("devcode") String devcode); - DeviceData liquidData(@Param("devcode") String devcode); - - DeviceData harmfulgasData(@Param("devcode") String devcode); - - DeviceData gasData(@Param("devcode") String devcode); - - DeviceData temphumData(@Param("devcode") String devcode); - - DeviceData digData(@Param("devcode") String devcode); - - DeviceData noiseData(@Param("devcode") String devcode); - - DeviceData wellcoverlocaData(@Param("devcode") String devcode); - - DeviceData lgGasData(@Param("devcode") String devcode);//燃气液位 - - DeviceData lgLiquidData(@Param("devcode") String devcode);//燃气液位 - - - BfztCountDataDto bfztCountData(@Param("deptIds") List deptIds, @Param("isApp") Boolean isApp); List selectDataScope(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("wellType") String deviceType, @Param("deptid") String deptid, @Param("keywords") String keywords); @@ -63,9 +42,6 @@ List getWellList(@Param("scope") DataScope dataScope, @Param("keywords") String keywords, @Param("wellType") String deviceType, @Param("deptid") String deptid); - List getAlarmWellList(@Param("scope") DataScope dataScope, @Param("keywords") String keywords, @Param("wellType") String deviceType, @Param("deptid") String deptid); - - List getNotAlarmWellList(@Param("scope") DataScope dataScope, @Param("keywords") String keywords, @Param("wellType") String deviceType, @Param("deptid") String deptid); void updateBatchBfcf(@Param("keywords") String keywords, @Param("wellType") String wellType, @Param("deptid") String deptid, @Param("bfzt") String bfzt, @Param("deptIds") List deptIds); @@ -75,7 +51,7 @@ List getWellListAll(); - List getDeviceList(@Param("scope") DataScope dataScope); - DeviceInfoDto selectDeviceById(@Param("id") Long id); + + } diff --git a/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml b/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml index 138f825..44eccc8 100644 --- a/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml +++ b/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml @@ -91,27 +91,6 @@ )
- - d - . - ID - AS deviceId, DEVCODE AS devcode, INSTALL_DATE AS installDate, ONLINE_STATE AS onlineState, t.TYPE_NAME AS typeName - - - @@ -137,103 +116,7 @@ ) - - - - - - - - - - - - - - - - - - - - UPDATE @@ -420,46 +272,6 @@ - - + + diff --git a/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/enmus/HarmfulGasBusiness.java b/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/enmus/HarmfulGasBusiness.java deleted file mode 100644 index d3bfabc..0000000 --- a/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/enmus/HarmfulGasBusiness.java +++ /dev/null @@ -1,44 +0,0 @@ -package com.casic.missiles.modular.system.enmus; - -public enum HarmfulGasBusiness { - - CO(0, "CO浓度","ppm"), - CH4(1, "CH4浓度","%VOL"), - H2S(2, "H2S浓度","ppm"), - O2(3, "O2浓度","%VOL"); - //SWITCH(4, "液位开关",""); - - private int code; - private String desc; - private String unit; - - public int getCode() { - return code; - } - - public void setCode(int code) { - this.code = code; - } - - public String getDesc() { - return desc; - } - - public void setDesc(String desc) { - this.desc = desc; - } - - public String getUnit() { - return unit; - } - - public void setUnit(String unit) { - this.unit = unit; - } - - HarmfulGasBusiness(int code, String desc, String unit) { - this.code = code; - this.desc = desc; - this.unit = unit; - } -} diff --git a/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/enmus/SluicewellExportEnum.java b/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/enmus/SluicewellExportEnum.java deleted file mode 100644 index d451598..0000000 --- a/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/enmus/SluicewellExportEnum.java +++ /dev/null @@ -1,59 +0,0 @@ -package com.casic.missiles.modular.system.enmus; - - - -import java.util.ArrayList; -import java.util.List; -import java.util.Map; - -public enum SluicewellExportEnum { - - DEVICE_EXPORT( - new ArrayList() {{ -// add(new Header("井编号", "wellCode")); -// add(new Header("井名称", "wellName")); -// add(new Header("井深", "deep")); -// add(new Header("详细地址", "position")); -// add(new Header("井类型", "wellTypeName")); -// add(new Header("权属单位", "deptName")); -// add(new Header("设备数量", "deviceCount")); -// add(new Header("布防状态", "bfztName")); - }}, "sluicewell.xlsx", "井数据导出"); - - //SLUICEWELLDATA_EXPORT("sluicewell.xlsx", "sluicewell.xlsx", "闸井数据"); - - /** - * 导出模板相对路径 - */ - private List headers; - /** - * 下载文件名 - */ - private String fileName; - /** - * 描述信息 - */ - private String description; - - SluicewellExportEnum(List headers, String fileName, String description) { - this.headers = headers; - this.fileName = fileName; - this.description = description; - } - - public List getHeaders() { - return headers; - } - - public String getFileName() { - return fileName; - } - - public String getDescription() { - return description; - } - - public Map getCustomColumnStyle() { - return null; - } -} diff --git a/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/enmus/TemphumBusiness.java b/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/enmus/TemphumBusiness.java deleted file mode 100644 index 27d15e2..0000000 --- a/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/enmus/TemphumBusiness.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.casic.missiles.modular.system.enmus; - -public enum TemphumBusiness { - - TEMP(0, "井内温度","℃"), - HUM(1, "井内湿度","%RH"); - - private int code; - private String desc; - private String unit; - - public int getCode() { - return code; - } - - public void setCode(int code) { - this.code = code; - } - - public String getDesc() { - return desc; - } - - public void setDesc(String desc) { - this.desc = desc; - } - - public String getUnit() { - return unit; - } - - public void setUnit(String unit) { - this.unit = unit; - } - - TemphumBusiness(int code, String desc, String unit) { - this.code = code; - this.desc = desc; - this.unit = unit; - } -} diff --git a/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java b/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java index f87d398..c65eb40 100644 --- a/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java +++ b/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java @@ -17,7 +17,7 @@ * @author lwh * @since 2019-05-13 */ -public interface IBusWellInfoService extends IService { +public interface IBusWellInfoService extends IService{ /** * 根据条件分页查询闸井列表 @@ -30,24 +30,17 @@ List deleteBatchByIds(List id); - List getWatchDatas(Long id); - - List getDeviceDatas(String devTypename,String devcode,String status); - - BfztCountDataDto getBfztCountData(List deptIds, Boolean isApp); - List selectDataScope(DataScope dataScope, Page page, String deviceType, String deptid, String keywords); List getBatchExportData(DataScope dataScope, Page page, String deviceType, String deptid, String keywords); Integer getDeviceCountData(Long id); + String getDeptNameData(String deptid); List addWellBatch(List results); List getWellList(DataScope dataScope, String keywords, String wellType, String deptid); - List getAlarmWellList(DataScope dataScope, String keywords, String wellType, String deptid); - List getNotAlarmWellList(DataScope dataScope, String keywords, String wellType, String deptid); String getAreaPid(String id); @@ -57,8 +50,4 @@ Boolean changeCoordinates(int startNumber); - List getDeviceList(DataScope dataScope); - - DeviceInfoDto selectDeviceById(Long id); - } diff --git a/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/controller/BusMapOverviewController.java b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/controller/BusMapOverviewController.java new file mode 100644 index 0000000..9d9f43c --- /dev/null +++ b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/controller/BusMapOverviewController.java @@ -0,0 +1,182 @@ +package com.casic.missiles.modular.system.controller; + +import cn.hutool.core.collection.CollectionUtil; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.model.exception.ServiceException; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.model.response.SuccessResponseData; +import com.casic.missiles.modular.system.dto.BusWellInfoDto; +import com.casic.missiles.modular.system.dto.DeviceDataDto; +import com.casic.missiles.modular.system.dto.DeviceInfoDto; +import com.casic.missiles.modular.system.dto.WatchDataDto; +import com.casic.missiles.modular.system.model.BusWellInfo; +import com.casic.missiles.modular.system.service.IBusDeviceSupportService; +import com.casic.missiles.modular.system.service.IBusWellInfoSupportService; +import com.casic.missiles.modular.system.service.IDataAnalysisService; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.ResponseBody; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; + +/** + * 地图总览模块的controller + * + * @author tanyue + * @Date 2019-05-13 19:20:29 + */ +@Controller +@RequestMapping("/overview") +public class BusMapOverviewController extends BaseController { + + @Resource + private AbstractPermissionContext permissionService; + @Resource + private AbstractDictService dictService; + @Resource + private IBusWellInfoSupportService busWellInfoService; + @Resource + private IDataAnalysisService dataAnalysisService; + @Resource + private IBusDeviceSupportService busDeviceSupportService; + + /** + * 获取列表 + */ + @RequestMapping(value = "/wellList") + @ResponseBody + public Object wellList(@RequestParam(required = false) String keywords, + @RequestParam(required = false) String wellType, + @RequestParam(required = false) String deptid, + @RequestParam(required = false) String isAlarm) { + + DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope(); + List wellList = new ArrayList(); + + if (null == isAlarm || isAlarm.equals("") == true) { + // isAlarm参数为空,查询所有的闸井 + + // 查询并添加当前部门的闸井 + List myList = busWellInfoService.getWellList(dataScope, keywords, wellType, deptid); + if (null != myList && myList.isEmpty() == false) { + wellList.addAll(myList); + } + + /** + * 不需要了,由dataScope控制权限 + // 查询并添加下级部门的闸井 + List subDepts = permissionService.getSubDepts(deptid,null); + if (null != subDepts && subDepts.isEmpty() == false) { + for (Long subDeptId : subDepts) { + List subList = busWellInfoService.getWellList(dataScope, keywords, wellType, String.valueOf(subDeptId)); + if (null != subList && subList.isEmpty() == false) { + wellList.addAll(subList); + } + } + } + */ + } else if (isAlarm.equals("1")) { + // isAlarm = 1 查询所有报警状态的闸井 + wellList = dataAnalysisService.getAlarmWellList(dataScope, keywords, wellType, deptid); + } else { + // isAlarm = 0 查询所有不是报警状态的闸井 + wellList = dataAnalysisService.getNotAlarmWellList(dataScope, keywords, wellType, deptid); + } + + + return ResponseData.success(wellList); + } + + /** + * 获取设备列表 + */ + @RequestMapping(value = "/deviceList") + @ResponseBody + public Object deviceList() { + + DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope(); + List wellList = new ArrayList(); + wellList = busDeviceSupportService.getDeviceList(dataScope); + return ResponseData.success(wellList); + } + + /** + * 获取设备详情 + */ + @RequestMapping(value = "/deviceDetail", method = RequestMethod.GET) + @ResponseBody + public Object deviceDetail(@RequestParam(required = true) Long id) { + if (null == id) { + throw new ServiceException(CoreExceptionEnum.REQUEST_NULL); + } + DeviceInfoDto deviceInfoDto = busDeviceSupportService.selectDeviceById(id); + SuccessResponseData successResult = new SuccessResponseData(); + if (null == deviceInfoDto) { + successResult.setCode(200); + successResult.setMessage("success"); + successResult.setData(new HashMap()); + } else { + // 设置最新的监测数据 + List deviceDataDtoList = dataAnalysisService.getDeviceDatas(deviceInfoDto.getDeviceTypeName(), deviceInfoDto.getDevcode(), deviceInfoDto.getOnlineState()); + if (CollectionUtil.isNotEmpty(deviceDataDtoList)) { + deviceInfoDto.setRealtimeData(deviceDataDtoList); + } + successResult.setMessage("success"); + successResult.setData(deviceInfoDto); + } + return successResult; + } + + + /** + * 获取闸井详情 + */ + @RequestMapping(value = "/wellInfo", method = RequestMethod.GET) + @ResponseBody + public Object wellInfo(@RequestParam(required = true) Long id) { + if (null == id) { + throw new ServiceException(CoreExceptionEnum.REQUEST_NULL); + } + + BusWellInfo busWellInfo = busWellInfoService.getById(id); + SuccessResponseData successResult = new SuccessResponseData(); + if (null == busWellInfo) { + successResult.setCode(200); + successResult.setMessage("success"); + successResult.setData(new HashMap()); + } else { + BusWellInfoDto busWellInfoDto = new BusWellInfoDto(); + busWellInfoDto.convertBusWellInfo(busWellInfo); + + // 设置字典值 + busWellInfoDto.setBfztName(dictService.getDictNameByCode("bfzt", busWellInfo.getBfzt())); + busWellInfoDto.setWellTypeName(dictService.getDictNameByCode("sluicewellType", busWellInfo.getWellType())); + busWellInfoDto.setDeptName(permissionService.getDeptService().getDeptName(busWellInfo.getDeptid())); + + // 设置最新的监测数据 + List watchDataDtos = dataAnalysisService.getWatchDatas(id); + if (null != watchDataDtos && watchDataDtos.isEmpty() == false) { + for (WatchDataDto watchDataDto : watchDataDtos) { + watchDataDto.setValue(watchDataDto.getData()); + } + } + + busWellInfoDto.setWatchData(watchDataDtos); + + successResult.setMessage("success"); + successResult.setData(busWellInfoDto.toMap()); + } + return successResult; + } + + +} diff --git a/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/controller/WellDataController.java b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/controller/WellDataController.java new file mode 100644 index 0000000..c33ec7d --- /dev/null +++ b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/controller/WellDataController.java @@ -0,0 +1,81 @@ +package com.casic.missiles.modular.system.controller; + +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.model.exception.ServiceException; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.model.response.SuccessResponseData; +import com.casic.missiles.modular.system.service.IDataAnalysisService; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.ResponseBody; + +import javax.annotation.Resource; +import java.util.List; +import java.util.Set; + +@Controller +@RequestMapping("/well") +public class WellDataController extends BaseController { + @Resource + private AbstractPermissionContext permissionService; + @Resource + private IDataAnalysisService dataAnalysisService; + + + /** + * 获取闸井设备数据 + */ + @RequestMapping(value = "/watchDataByWell", method = RequestMethod.GET) + @ResponseBody + public Object watchDataByWell(Long id) { + if (null == id) { + throw new ServiceException(CoreExceptionEnum.REQUEST_NULL); + } + SuccessResponseData resultData = new SuccessResponseData(); + resultData.setData(dataAnalysisService.getWatchDatas(id)); + + return resultData; + } + + /** + * 根据布防状态统计闸井数量接口 + */ + @RequestMapping(value = "/countByBfzt", method = RequestMethod.GET) + @ResponseBody + public Object countByBfzt() { + DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope(); + Set roleTipes = permissionService.getAuthService().getLoginUser().getRoleTips(); + List deptIds = null; + Boolean isApp = false; + if (roleTipes.contains("leader") || roleTipes.contains("member")) { + deptIds = permissionService.getDeptService().getIdsByPid(permissionService.getAuthService().getLoginUser().getDeptId(), null); + deptIds.add(permissionService.getAuthService().getLoginUser().getDeptId()); + isApp = true; + } else { + deptIds = dataScope.getDeptIds(); + isApp = false; + } + SuccessResponseData resultData = new SuccessResponseData(); + dataAnalysisService.getBfztCountData(deptIds, isApp); + resultData.setData(dataAnalysisService.getBfztCountData(deptIds, isApp)); + return resultData; + } + + /** + * 获取布防类型(APP用) + */ + @RequestMapping(value = "/bfType", method = RequestMethod.GET) + @ResponseBody + public Object bfType(Long id) { + if (null == id) { + throw new ServiceException(CoreExceptionEnum.REQUEST_NULL); + } + SuccessResponseData resultData = new SuccessResponseData(); + resultData.setData(dataAnalysisService.getWatchDatas(id)); + return resultData; + } + +} diff --git a/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/dao/DataAnalysisMapper.java b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/dao/DataAnalysisMapper.java new file mode 100644 index 0000000..149fb82 --- /dev/null +++ b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/dao/DataAnalysisMapper.java @@ -0,0 +1,48 @@ +package com.casic.missiles.modular.system.dao; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.system.dto.*; +import com.casic.missiles.modular.system.model.BusWellInfo; +import com.casic.missiles.core.datascope.DataScope; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * 闸井信息表 Mapper 接口 + *

+ * + * @author stylefeng123 + * @since 2019-05-13 + */ +public interface DataAnalysisMapper extends BaseMapper { + + List getAlarmWellList(@Param("scope") DataScope dataScope, @Param("keywords") String keywords, @Param("wellType") String deviceType, @Param("deptid") String deptid); + + List getNotAlarmWellList(@Param("scope") DataScope dataScope, @Param("keywords") String keywords, @Param("wellType") String deviceType, @Param("deptid") String deptid); + + DeviceData wellcoverData(@Param("devcode") String devcode); + + DeviceData liquidData(@Param("devcode") String devcode); + + DeviceData harmfulgasData(@Param("devcode") String devcode); + + DeviceData gasData(@Param("devcode") String devcode); + + DeviceData temphumData(@Param("devcode") String devcode); + + DeviceData digData(@Param("devcode") String devcode); + + DeviceData noiseData(@Param("devcode") String devcode); + + DeviceData wellcoverlocaData(@Param("devcode") String devcode); + + DeviceData lgGasData(@Param("devcode") String devcode);//燃气液位 + + DeviceData lgLiquidData(@Param("devcode") String devcode);//燃气液位 + + + BfztCountDataDto bfztCountData(@Param("deptIds") List deptIds, @Param("isApp") Boolean isApp); +} diff --git a/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/dao/mapping/DataAnalysisMapper.xml b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/dao/mapping/DataAnalysisMapper.xml new file mode 100644 index 0000000..6d7edb3 --- /dev/null +++ b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/dao/mapping/DataAnalysisMapper.xml @@ -0,0 +1,170 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ID + AS id, WELL_CODE AS wellCode, WELL_NAME AS wellName, DEEP AS deep, COORDINATE_X AS coordinateX, COORDINATE_Y AS coordinateY, LAT_BAIDU AS latBaidu, LNG_BAIDU AS lngBaidu, LNG_GAODE AS lngGaode, LAT_GAODE AS latGaode, AREA AS area, POSITION AS position, DEPTID AS deptid, PHOTOS AS photos, NOTES AS notes, WELL_TYPE AS wellType, STAFF AS staff, TEL AS tel, TS AS ts, VALID AS valid, BFZT AS bfzt, RESPONSIBLE_DEPT AS responsibleDept + + + + ID + AS id, WELL_CODE AS wellCode, WELL_NAME AS wellName, DEEP AS deep, COORDINATE_X AS coordinateX, COORDINATE_Y AS coordinateY, LAT_BAIDU AS latBaidu, LNG_BAIDU AS lngBaidu, LNG_GAODE AS lngGaode, LAT_GAODE AS latGaode, AREA AS area, POSITION AS position, DEPTID AS deptid, PHOTOS AS photos, NOTES AS notes, WELL_TYPE AS wellType, STAFF AS staff, TEL AS tel, TS AS ts, VALID AS valid, BFZT AS bfzt,d1.simplename AS deptName,d2.id AS responsibleDept,d2.simplename AS responsibleDeptName + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/service/IDataAnalysisService.java b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/service/IDataAnalysisService.java new file mode 100644 index 0000000..69c8c60 --- /dev/null +++ b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/service/IDataAnalysisService.java @@ -0,0 +1,51 @@ +package com.casic.missiles.modular.system.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.modular.system.dto.BfztCountDataDto; +import com.casic.missiles.modular.system.dto.BusWellInfoDto; +import com.casic.missiles.modular.system.dto.DeviceDataDto; +import com.casic.missiles.modular.system.dto.WatchDataDto; +import com.casic.missiles.modular.system.model.BusWellInfo; + +import java.util.List; + +/** + * 数据统计服务接口 + * + * @author lwh + */ +public interface IDataAnalysisService extends IService { + /** + * 获取告警闸井列表 + * @param dataScope 数据权限 + * @param keywords 关键字 + * @param wellType 井列表 + * @param deptid 组织id + * @return + */ + List getAlarmWellList(DataScope dataScope, String keywords, String wellType, String deptid); + + /** + * 获取不告警井列表信息 + * @param dataScope 数据权限 + * @param keywords 关键字 + * @param wellType 井类型 + * @param deptid 组织id + * @return + */ + List getNotAlarmWellList(DataScope dataScope, String keywords, String wellType, String deptid); + + /** + * 设备数据查询接口 + * @param devTypename 设备类型 + * @param devcode 设备编码 + * @param status 设备状态 + * @return 设备监测数据 + */ + List getDeviceDatas(String devTypename, String devcode, String status); + List getWatchDatas(Long id); + + + BfztCountDataDto getBfztCountData(List deptIds, Boolean isApp); +} diff --git a/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/service/impl/IDataAnalysisServiceImpl.java b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/service/impl/IDataAnalysisServiceImpl.java new file mode 100644 index 0000000..288a828 --- /dev/null +++ b/casic-data-analysis/src/main/java/com/casic/missiles/modular/system/service/impl/IDataAnalysisServiceImpl.java @@ -0,0 +1,386 @@ +package com.casic.missiles.modular.system.service.impl; + +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.modular.system.dao.DataAnalysisMapper; +import com.casic.missiles.modular.system.dto.*; +import com.casic.missiles.modular.system.enmus.HarmfulGasBusiness; +import com.casic.missiles.modular.system.enmus.TemphumBusiness; +import com.casic.missiles.modular.system.model.BusWellInfo; +import com.casic.missiles.modular.system.service.IBusDeviceSupportService; +import com.casic.missiles.modular.system.service.IDataAnalysisService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import java.text.DateFormat; +import java.text.DecimalFormat; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.List; + +/** + * 数据统计分析 + * + * @author lwh + */ +@Slf4j +@Component +public class IDataAnalysisServiceImpl extends ServiceImpl implements IDataAnalysisService { + @Resource + private AbstractDictService dictService; + @Resource + private IBusDeviceSupportService deviceSupportService; + + @Override + public List getAlarmWellList(DataScope dataScope, String keywords, String wellType, String deptid) { + return this.baseMapper.getAlarmWellList(dataScope, keywords, wellType, deptid); + } + + @Override + public List getNotAlarmWellList(DataScope dataScope, String keywords, String wellType, String deptid) { + return this.baseMapper.getNotAlarmWellList(dataScope, keywords, wellType, deptid); + } + + @Override + public List getDeviceDatas(String devTypeName, String devcode, String status) { + List deviceDataDtoList = new ArrayList<>(); + DeviceDataDto deviceDataDto = new DeviceDataDto(); + DeviceData deviceData; + DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + switch (devTypeName) { + case "井盖状态监测仪": + deviceData = this.baseMapper.wellcoverData(devcode); + deviceDataDto.setTypeName("井盖状态"); + if (ObjectUtil.isNotEmpty(deviceData)) { + //井盖离线 + if ("0".equals(status)) { + deviceDataDto.setValue("离线"); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } else if ("心跳".equals(deviceData.getData())) { + deviceDataDto.setValue("井盖状态正常"); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } else { + deviceDataDto.setValue(deviceData.getData()); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } + } else { + deviceDataDto.setValue("无数据"); + } + deviceDataDtoList.add(deviceDataDto); + break; + + case "液位监测仪": + deviceData = this.baseMapper.liquidData(devcode); + if (ObjectUtil.isNotEmpty(deviceData)) { + deviceDataDto.setTypeName("井内水位"); + deviceDataDto.setValue(deviceData.getData() + "m"); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + deviceDataDtoList.add(deviceDataDto); + } + break; + + case "有害气体监测仪": + deviceData = this.baseMapper.harmfulgasData(devcode); + if (ObjectUtil.isNotEmpty(deviceData)) { + String[] harmfulGasDatas = deviceData.getData().split(","); + HarmfulGasBusiness[] harmfulGasBusinesses = HarmfulGasBusiness.values(); + for (int i = 0; i < harmfulGasDatas.length; i++) { + deviceDataDto = new DeviceDataDto(); + deviceDataDto.setTypeName(harmfulGasBusinesses[i].getDesc()); + deviceDataDto.setValue(harmfulGasDatas[i] + harmfulGasBusinesses[i].getUnit()); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + deviceDataDtoList.add((DeviceDataDto) deviceDataDto.clone()); + } + } + break; + case "燃气智能监测终端": + deviceData = this.baseMapper.gasData(devcode); + if (ObjectUtil.isNotEmpty(deviceData)) { + deviceDataDto.setTypeName("燃气浓度"); + deviceDataDto.setValue(deviceData.getData() + "%LEL"); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + deviceDataDtoList.add(deviceDataDto); + } + break; + + case "温湿度监测仪": + deviceData = this.baseMapper.temphumData(devcode); + if (ObjectUtil.isNotEmpty(deviceData)) { + String[] temphumDatas = deviceData.getData().split(","); + TemphumBusiness[] temphumBusinesses = TemphumBusiness.values(); + for (int i = 0; i < temphumDatas.length; i++) { + deviceDataDto = new DeviceDataDto(); + deviceDataDto.setTypeName(temphumBusinesses[i].getDesc()); + deviceDataDto.setValue(temphumDatas[i] + temphumBusinesses[i].getUnit()); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + deviceDataDtoList.add((DeviceDataDto) deviceDataDto.clone()); + } + } + break; + + case "开挖监测仪": + deviceData = this.baseMapper.digData(devcode); + if (ObjectUtil.isNotEmpty(deviceData)) { + deviceDataDto.setTypeName("开挖状态"); + deviceDataDto.setValue(deviceData.getData() + "mg"); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + deviceDataDtoList.add(deviceDataDto); + } + break; + + case "噪声记录仪": + deviceData = this.baseMapper.noiseData(devcode); + if (ObjectUtil.isNotEmpty(deviceData)) { + deviceDataDto.setTypeName("管线噪声"); + deviceDataDto.setValue(deviceData.getData() + "mg"); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + deviceDataDtoList.add(deviceDataDto); + } + break; + case "井盖定位监测仪": + deviceData = this.baseMapper.wellcoverlocaData(devcode); + if (ObjectUtil.isNotEmpty(deviceData)) { + deviceDataDto.setTypeName("井盖位置"); + deviceDataDto.setValue(deviceData.getData()); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + deviceDataDtoList.add(deviceDataDto); + } + break; + + case "燃气智能监测终端(一体化)": + deviceData = this.baseMapper.lgGasData(devcode); + deviceDataDto.setTypeName("燃气浓度"); + if (ObjectUtil.isNotEmpty(deviceData)) { + + Double dValue = Double.parseDouble(deviceData.getData()); + if (dValue <= 20.0) { + deviceDataDto.setValue(deviceData.getData() + "%LEL"); + } else { + DecimalFormat df = new DecimalFormat("0.00"); + dValue = dValue / 20.0; + deviceDataDto.setValue(df.format(dValue) + "%VOL"); + } + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } else { + deviceDataDto.setValue("无数据"); + } + deviceDataDtoList.add(deviceDataDto); + + deviceData = this.baseMapper.lgLiquidData(devcode); + deviceDataDto.setTypeName("井内水位"); + if (ObjectUtil.isNotEmpty(deviceData)) { + + deviceDataDto.setValue(deviceData.getData() + "m"); + deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } else { + deviceDataDto.setValue("无数据"); + } + deviceDataDtoList.add((DeviceDataDto) deviceDataDto.clone()); + break; + + default://未知设备 + log.info("未知设备!"); + break; + } + return deviceDataDtoList; + } + + @Override + public BfztCountDataDto getBfztCountData(List deptIds, Boolean isApp) { + return this.baseMapper.bfztCountData(deptIds, isApp); + } + + @Override + public List getWatchDatas(Long id) { + + List deviceInWellInfos = deviceSupportService.getDeviceInWellInfo(id); + List watchDataDtos = new ArrayList<>(); + + for (DeviceInWellInfo deviceInWellInfo : deviceInWellInfos) { + WatchDataDto watchDataDto = new WatchDataDto(); + watchDataDto.setDeviceId(deviceInWellInfo.getDeviceId()); + watchDataDto.setDevcode(deviceInWellInfo.getDevcode()); + watchDataDto.setInstallDate(deviceInWellInfo.getInstallDate()); + watchDataDto.setOnlineState(deviceInWellInfo.getOnlineState()); + watchDataDto.setOnlineStateName(dictService.getDictNameByCode("onlineStatus", deviceInWellInfo.getOnlineState())); + + DeviceData deviceData; + DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + + switch (deviceInWellInfo.getTypeName()) { + case "井盖状态监测仪": + deviceData = this.baseMapper.wellcoverData(deviceInWellInfo.getDevcode()); + watchDataDto.setWatchType("井盖状态"); + watchDataDto.setType("1"); + if (ObjectUtil.isNotEmpty(deviceData)) { + //井盖离线 + if ("0".equals(watchDataDto.getOnlineState())) { + watchDataDto.setValue("离线"); + watchDataDto.setData("离线"); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } else if ("心跳".equals(deviceData.getData())) { + watchDataDto.setValue("井盖状态正常"); + watchDataDto.setData("井盖状态正常"); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } else { + watchDataDto.setValue(deviceData.getData()); + watchDataDto.setData(deviceData.getData()); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } + } else { + watchDataDto.setValue("无数据"); + watchDataDto.setData("无数据"); + } + watchDataDtos.add(watchDataDto); + break; + + case "液位监测仪": + deviceData = this.baseMapper.liquidData(deviceInWellInfo.getDevcode()); + if (ObjectUtil.isNotEmpty(deviceData)) { + watchDataDto.setWatchType("井内水位"); + watchDataDto.setType("2"); + + watchDataDto.setValue(deviceData.getData() + "m"); + watchDataDto.setData(deviceData.getData() + "m"); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + watchDataDtos.add(watchDataDto); + } + break; + + case "有害气体监测仪": + deviceData = this.baseMapper.harmfulgasData(deviceInWellInfo.getDevcode()); + if (ObjectUtil.isNotEmpty(deviceData)) { + String[] harmfulGasDatas = deviceData.getData().split(","); + HarmfulGasBusiness[] harmfulGasBusinesses = HarmfulGasBusiness.values(); + + for (int i = 0; i < harmfulGasDatas.length; i++) { + watchDataDto.setWatchType(harmfulGasBusinesses[i].getDesc()); + watchDataDto.setType("3"); + watchDataDto.setValue(harmfulGasDatas[i] + harmfulGasBusinesses[i].getUnit()); + watchDataDto.setData(harmfulGasDatas[i] + harmfulGasBusinesses[i].getUnit()); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + watchDataDtos.add((WatchDataDto) watchDataDto.clone()); + } + } + break; + + case "燃气智能监测终端": + deviceData = this.baseMapper.gasData(deviceInWellInfo.getDevcode()); + if (ObjectUtil.isNotEmpty(deviceData)) { + watchDataDto.setWatchType("燃气浓度"); + watchDataDto.setType("4"); + + watchDataDto.setValue(deviceData.getData() + "%LEL"); + watchDataDto.setData(deviceData.getData() + "%LEL"); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + watchDataDtos.add(watchDataDto); + } + break; + + case "温湿度监测仪": + deviceData = this.baseMapper.temphumData(deviceInWellInfo.getDevcode()); + if (ObjectUtil.isNotEmpty(deviceData)) { + String[] temphumDatas = deviceData.getData().split(","); + TemphumBusiness[] temphumBusinesses = TemphumBusiness.values(); + + for (int i = 0; i < temphumDatas.length; i++) { + watchDataDto.setWatchType(temphumBusinesses[i].getDesc()); + watchDataDto.setType("5"); + watchDataDto.setValue(temphumDatas[i] + temphumBusinesses[i].getUnit()); + watchDataDto.setData(temphumDatas[i] + temphumBusinesses[i].getUnit()); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + watchDataDtos.add((WatchDataDto) watchDataDto.clone()); + } + } + break; + + case "开挖监测仪": + deviceData = this.baseMapper.digData(deviceInWellInfo.getDevcode()); + if (ObjectUtil.isNotEmpty(deviceData)) { + watchDataDto.setWatchType("开挖状态"); + watchDataDto.setType("6"); + + watchDataDto.setValue(deviceData.getData() + "mg"); + watchDataDto.setData(deviceData.getData() + "mg"); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + watchDataDtos.add(watchDataDto); + } + break; + + case "噪声记录仪": + deviceData = this.baseMapper.noiseData(deviceInWellInfo.getDevcode()); + if (ObjectUtil.isNotEmpty(deviceData)) { + watchDataDto.setWatchType("管线噪声"); + watchDataDto.setType("8"); + + watchDataDto.setValue(deviceData.getData() + "mg"); + watchDataDto.setData(deviceData.getData() + "mg"); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + watchDataDtos.add(watchDataDto); + } + break; + + case "井盖定位监测仪": + deviceData = this.baseMapper.wellcoverlocaData(deviceInWellInfo.getDevcode()); + if (ObjectUtil.isNotEmpty(deviceData)) { + watchDataDto.setWatchType("井盖位置"); + watchDataDto.setType("7"); + + watchDataDto.setValue(deviceData.getData()); + watchDataDto.setData(deviceData.getData()); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + watchDataDtos.add(watchDataDto); + } + break; + + case "燃气智能监测终端(一体化)": + deviceData = this.baseMapper.lgGasData(deviceInWellInfo.getDevcode()); + watchDataDto.setWatchType("燃气浓度"); + watchDataDto.setType("10"); + if (ObjectUtil.isNotEmpty(deviceData)) { + + Double dValue = Double.parseDouble(deviceData.getData()); + if (dValue <= 20.0) { + watchDataDto.setValue(deviceData.getData() + "%LEL"); + watchDataDto.setData(deviceData.getData() + "%LEL"); + } else { + DecimalFormat df = new DecimalFormat("0.00"); + dValue = dValue / 20.0; + watchDataDto.setValue(df.format(dValue) + "%VOL"); + watchDataDto.setData(df.format(dValue) + "%VOL"); + } + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } else { + watchDataDto.setValue("无数据"); + watchDataDto.setData("无数据"); + } + watchDataDtos.add((WatchDataDto) watchDataDto.clone()); + + deviceData = this.baseMapper.lgLiquidData(deviceInWellInfo.getDevcode()); + watchDataDto.setWatchType("井内水位"); + watchDataDto.setType("10"); + if (ObjectUtil.isNotEmpty(deviceData)) { + + watchDataDto.setValue(deviceData.getData() + "m"); + watchDataDto.setData(deviceData.getData() + "m"); + watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); + } else { + watchDataDto.setValue("无数据"); + watchDataDto.setData("无数据"); + } + watchDataDtos.add((WatchDataDto) watchDataDto.clone()); + break; + + default://未知设备 + log.info("未知设备!"); + break; + } + } + + return watchDataDtos; + } + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java index d45eaf7..b9ca243 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/system/dao/DeviceMapper.java @@ -21,7 +21,7 @@ public interface DeviceMapper extends BaseMapper { List selectDataScopePage(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("deviceType") String deviceType, @Param("deptid") String deptid, @Param("beginTime") String beginTime, @Param("endTime") String endTime, @Param("keywords") String keywords,@Param("isOnline") String isOnline); - + List getDeviceList(@Param("scope") DataScope dataScope); DeviceWellDto selectWellIdByCode(@Param("wellCode") String wellCode); DeviceConcentratorDto selectDeviceConcentorByCode(@Param("concenCode") String concenCode); @@ -61,4 +61,13 @@ List> selectTempDataList(@Param("dataScope")DataScope dataScope, @Param("wellCode")String wellCode, @Param("beginTime")String beginTime, @Param("endTime")String endTime); List> selectHarmfulDataList(@Param("dataScope")DataScope dataScope, @Param("wellCode")String wellCode, @Param("beginTime")String beginTime, @Param("endTime")String endTime); + + /** + * 查询设备信息 + * @param id 设备主键 + * @return + */ + DeviceInfoDto selectDeviceById(@Param("id") Long id); + + List getDeviceInWellInfo(@Param("id") Long id); } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml index fb6f4f4..c956057 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/system/dao/mapping/DeviceMapper.xml @@ -902,5 +902,64 @@ ) t1 ORDER BY uptime asc + + + + d.ID AS deviceId, DEVCODE AS devcode, INSTALL_DATE AS installDate, ONLINE_STATE AS onlineState, t.TYPE_NAME AS typeName + + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java b/casic-device/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java index 72c60f0..090415c 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/system/service/IDeviceService.java @@ -17,7 +17,7 @@ * @author lwh123 * @since 2019-05-23 */ -public interface IDeviceService extends IService { +public interface IDeviceService extends IService{ /** * 根据条件分页查询设备列表 diff --git a/casic-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java index 0b089f3..de9111e 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/system/service/impl/DeviceServiceImpl.java @@ -39,7 +39,7 @@ * @since 2019-05-23 */ @Service -public class DeviceServiceImpl extends ServiceImpl implements IDeviceService { +public class DeviceServiceImpl extends ServiceImpl implements IDeviceService,IBusDeviceSupportService { @Autowired private IDeviceTypeService deviceTypeService; @@ -514,4 +514,19 @@ } return list; } + + @Override + public List getDeviceList(DataScope dataScope) { + return this.baseMapper.getDeviceList(dataScope); + } + + @Override + public DeviceInfoDto selectDeviceById(Long id) { + return this.baseMapper.selectDeviceById(id); + } + + @Override + public List getDeviceInWellInfo(Long id) { + return this.baseMapper.getDeviceInWellInfo(id); + } } diff --git a/casic-server-support/src/main/java/com/casic/missiles/modular/system/enmus/HarmfulGasBusiness.java b/casic-server-support/src/main/java/com/casic/missiles/modular/system/enmus/HarmfulGasBusiness.java new file mode 100644 index 0000000..d3bfabc --- /dev/null +++ b/casic-server-support/src/main/java/com/casic/missiles/modular/system/enmus/HarmfulGasBusiness.java @@ -0,0 +1,44 @@ +package com.casic.missiles.modular.system.enmus; + +public enum HarmfulGasBusiness { + + CO(0, "CO浓度","ppm"), + CH4(1, "CH4浓度","%VOL"), + H2S(2, "H2S浓度","ppm"), + O2(3, "O2浓度","%VOL"); + //SWITCH(4, "液位开关",""); + + private int code; + private String desc; + private String unit; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public String getDesc() { + return desc; + } + + public void setDesc(String desc) { + this.desc = desc; + } + + public String getUnit() { + return unit; + } + + public void setUnit(String unit) { + this.unit = unit; + } + + HarmfulGasBusiness(int code, String desc, String unit) { + this.code = code; + this.desc = desc; + this.unit = unit; + } +} diff --git a/casic-server-support/src/main/java/com/casic/missiles/modular/system/enmus/SluicewellExportEnum.java b/casic-server-support/src/main/java/com/casic/missiles/modular/system/enmus/SluicewellExportEnum.java new file mode 100644 index 0000000..d451598 --- /dev/null +++ b/casic-server-support/src/main/java/com/casic/missiles/modular/system/enmus/SluicewellExportEnum.java @@ -0,0 +1,59 @@ +package com.casic.missiles.modular.system.enmus; + + + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +public enum SluicewellExportEnum { + + DEVICE_EXPORT( + new ArrayList() {{ +// add(new Header("井编号", "wellCode")); +// add(new Header("井名称", "wellName")); +// add(new Header("井深", "deep")); +// add(new Header("详细地址", "position")); +// add(new Header("井类型", "wellTypeName")); +// add(new Header("权属单位", "deptName")); +// add(new Header("设备数量", "deviceCount")); +// add(new Header("布防状态", "bfztName")); + }}, "sluicewell.xlsx", "井数据导出"); + + //SLUICEWELLDATA_EXPORT("sluicewell.xlsx", "sluicewell.xlsx", "闸井数据"); + + /** + * 导出模板相对路径 + */ + private List headers; + /** + * 下载文件名 + */ + private String fileName; + /** + * 描述信息 + */ + private String description; + + SluicewellExportEnum(List headers, String fileName, String description) { + this.headers = headers; + this.fileName = fileName; + this.description = description; + } + + public List getHeaders() { + return headers; + } + + public String getFileName() { + return fileName; + } + + public String getDescription() { + return description; + } + + public Map getCustomColumnStyle() { + return null; + } +} diff --git a/casic-server-support/src/main/java/com/casic/missiles/modular/system/enmus/TemphumBusiness.java b/casic-server-support/src/main/java/com/casic/missiles/modular/system/enmus/TemphumBusiness.java new file mode 100644 index 0000000..27d15e2 --- /dev/null +++ b/casic-server-support/src/main/java/com/casic/missiles/modular/system/enmus/TemphumBusiness.java @@ -0,0 +1,41 @@ +package com.casic.missiles.modular.system.enmus; + +public enum TemphumBusiness { + + TEMP(0, "井内温度","℃"), + HUM(1, "井内湿度","%RH"); + + private int code; + private String desc; + private String unit; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public String getDesc() { + return desc; + } + + public void setDesc(String desc) { + this.desc = desc; + } + + public String getUnit() { + return unit; + } + + public void setUnit(String unit) { + this.unit = unit; + } + + TemphumBusiness(int code, String desc, String unit) { + this.code = code; + this.desc = desc; + this.unit = unit; + } +} diff --git a/casic-server-support/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceSupportService.java b/casic-server-support/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceSupportService.java new file mode 100644 index 0000000..0b6fd75 --- /dev/null +++ b/casic-server-support/src/main/java/com/casic/missiles/modular/system/service/IBusDeviceSupportService.java @@ -0,0 +1,42 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.model.application.service.IRepositorySupportService; +import com.casic.missiles.modular.system.dto.DeviceInWellInfo; +import com.casic.missiles.modular.system.dto.DeviceInfoDto; +import com.casic.missiles.modular.system.model.Device; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 设备支撑 + * + * @author lwh + */ +public interface IBusDeviceSupportService { + /** + * 获取设备列表 + * + * @param dataScope 数据权限 + * @return 设备列表 + */ + List getDeviceList(DataScope dataScope); + + + /** + * 查询设备信息 + * + * @param id 设备主键 + * @return 设备信息 + */ + DeviceInfoDto selectDeviceById(Long id); + + /** + * 查询井下设备信息 + * + * @param id 井主键 + * @return 井下设备信息 + */ + List getDeviceInWellInfo(Long id); +} diff --git a/casic-server-support/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoSupportService.java b/casic-server-support/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoSupportService.java new file mode 100644 index 0000000..e34c98e --- /dev/null +++ b/casic-server-support/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoSupportService.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.system.service; + +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.model.application.service.IRepositorySupportService; +import com.casic.missiles.modular.system.dto.BusWellInfoDto; +import com.casic.missiles.modular.system.model.BusWellInfo; + +import java.util.List; + +/** + * 闸井服务支撑接口 + * + * @author lwh + */ +public interface IBusWellInfoSupportService { + /** + * 获取井列表接口 + * + * @param dataScope 数据权限 + * @param keywords 关键字 + * @param wellType 井类型 + * @param deptid 组织ID + * @return + */ + List getWellList(DataScope dataScope, String keywords, String wellType, String deptid); + + BusWellInfo getById(Long id); +} diff --git a/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/controller/BusMapOverviewController.java b/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/controller/BusMapOverviewController.java deleted file mode 100644 index 078eaf6..0000000 --- a/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/controller/BusMapOverviewController.java +++ /dev/null @@ -1,178 +0,0 @@ -package com.casic.missiles.modular.system.controller; - -import cn.hutool.core.collection.CollectionUtil; -import com.casic.missiles.core.application.context.AbstractPermissionContext; -import com.casic.missiles.core.application.service.AbstractDictService; -import com.casic.missiles.core.base.controller.BaseController; -import com.casic.missiles.core.datascope.DataScope; -import com.casic.missiles.model.exception.ServiceException; -import com.casic.missiles.model.exception.enums.CoreExceptionEnum; -import com.casic.missiles.model.response.ResponseData; -import com.casic.missiles.model.response.SuccessResponseData; -import com.casic.missiles.modular.system.dto.BusWellInfoDto; -import com.casic.missiles.modular.system.dto.DeviceDataDto; -import com.casic.missiles.modular.system.dto.DeviceInfoDto; -import com.casic.missiles.modular.system.dto.WatchDataDto; -import com.casic.missiles.modular.system.model.BusWellInfo; -import com.casic.missiles.modular.system.service.IBusWellInfoService; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestMethod; -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.bind.annotation.ResponseBody; - -import javax.annotation.Resource; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - -/** - * 地图总览模块的controller - * - * @author tanyue - * @Date 2019-05-13 19:20:29 - */ -@Controller -@RequestMapping("/overview") -public class BusMapOverviewController extends BaseController { - - @Resource - private AbstractPermissionContext permissionService; - @Resource - private AbstractDictService dictService; - @Autowired - private IBusWellInfoService busWellInfoService; - - /** - * 获取列表 - */ - @RequestMapping(value = "/wellList") - @ResponseBody - public Object wellList(@RequestParam(required = false) String keywords, - @RequestParam(required = false) String wellType, - @RequestParam(required = false) String deptid, - @RequestParam(required = false) String isAlarm) { - - DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope(); - List wellList = new ArrayList(); - - if (null == isAlarm || isAlarm.equals("") == true) { - // isAlarm参数为空,查询所有的闸井 - - // 查询并添加当前部门的闸井 - List myList = busWellInfoService.getWellList(dataScope, keywords, wellType, deptid); - if (null != myList && myList.isEmpty() == false) { - wellList.addAll(myList); - } - - /** - * 不需要了,由dataScope控制权限 - // 查询并添加下级部门的闸井 - List subDepts = permissionService.getSubDepts(deptid,null); - if (null != subDepts && subDepts.isEmpty() == false) { - for (Long subDeptId : subDepts) { - List subList = busWellInfoService.getWellList(dataScope, keywords, wellType, String.valueOf(subDeptId)); - if (null != subList && subList.isEmpty() == false) { - wellList.addAll(subList); - } - } - } - */ - } else if (isAlarm.equals("1")) { - // isAlarm = 1 查询所有报警状态的闸井 - wellList = busWellInfoService.getAlarmWellList(dataScope, keywords, wellType, deptid); - } else { - // isAlarm = 0 查询所有不是报警状态的闸井 - wellList = busWellInfoService.getNotAlarmWellList(dataScope, keywords, wellType, deptid); - } - - - return ResponseData.success(wellList); - } - - /** - * 获取设备列表 - */ - @RequestMapping(value = "/deviceList") - @ResponseBody - public Object deviceList() { - - DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope(); - List wellList = new ArrayList(); - wellList = busWellInfoService.getDeviceList(dataScope); - return ResponseData.success(wellList); - } - - /** - * 获取设备详情 - */ - @RequestMapping(value = "/deviceDetail", method = RequestMethod.GET) - @ResponseBody - public Object deviceDetail(@RequestParam(required = true) Long id) { - if (null == id) { - throw new ServiceException(CoreExceptionEnum.REQUEST_NULL); - } - DeviceInfoDto deviceInfoDto = busWellInfoService.selectDeviceById(id); - SuccessResponseData successResult = new SuccessResponseData(); - if (null == deviceInfoDto) { - successResult.setCode(200); - successResult.setMessage("success"); - successResult.setData(new HashMap()); - } else { - // 设置最新的监测数据 - List deviceDataDtoList = busWellInfoService. - getDeviceDatas(deviceInfoDto.getDeviceTypeName(), deviceInfoDto.getDevcode(), deviceInfoDto.getOnlineState()); - if (CollectionUtil.isNotEmpty(deviceDataDtoList)) { - deviceInfoDto.setRealtimeData(deviceDataDtoList); - } - successResult.setMessage("success"); - successResult.setData(deviceInfoDto); - } - return successResult; - } - - - /** - * 获取闸井详情 - */ - @RequestMapping(value = "/wellInfo", method = RequestMethod.GET) - @ResponseBody - public Object wellInfo(@RequestParam(required = true) Long id) { - if (null == id) { - throw new ServiceException(CoreExceptionEnum.REQUEST_NULL); - } - - BusWellInfo busWellInfo = busWellInfoService.getById(id); - SuccessResponseData successResult = new SuccessResponseData(); - if (null == busWellInfo) { - successResult.setCode(200); - successResult.setMessage("success"); - successResult.setData(new HashMap()); - } else { - BusWellInfoDto busWellInfoDto = new BusWellInfoDto(); - busWellInfoDto.convertBusWellInfo(busWellInfo); - - // 设置字典值 - busWellInfoDto.setBfztName(dictService.getDictNameByCode("bfzt", busWellInfo.getBfzt())); - busWellInfoDto.setWellTypeName(dictService.getDictNameByCode("sluicewellType", busWellInfo.getWellType())); - busWellInfoDto.setDeptName(permissionService.getDeptService().getDeptName(busWellInfo.getDeptid())); - - // 设置最新的监测数据 - List watchDataDtos = busWellInfoService.getWatchDatas(id); - if (null != watchDataDtos && watchDataDtos.isEmpty() == false) { - for (WatchDataDto watchDataDto : watchDataDtos) { - watchDataDto.setValue(watchDataDto.getData()); - } - } - - busWellInfoDto.setWatchData(watchDataDtos); - - successResult.setMessage("success"); - successResult.setData(busWellInfoDto.toMap()); - } - - return successResult; - } - -} diff --git a/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java b/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java index bd62f3f..ef5a8a8 100644 --- a/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java +++ b/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/controller/BusWellInfoController.java @@ -19,7 +19,6 @@ import com.casic.missiles.modular.system.dict.BusWellDict; import com.casic.missiles.modular.system.dto.BatchExportDataDto; import com.casic.missiles.modular.system.dto.HasWellDto; -import com.casic.missiles.modular.system.enmus.SluicewellExportEnum; import com.casic.missiles.modular.system.util.Utility; import com.casic.missiles.quartz.service.IQuartzManager; import org.slf4j.Logger; @@ -217,46 +216,9 @@ } - /** - * 获取闸井设备数据 - */ - @RequestMapping(value = "/watchDataByWell", method = RequestMethod.GET) - @ResponseBody - public Object watchDataByWell(Long id) { - if (null == id) { - throw new ServiceException(CoreExceptionEnum.REQUEST_NULL); - } - SuccessResponseData resultData = new SuccessResponseData(); - resultData.setData(busWellInfoService.getWatchDatas(id)); - - return resultData; - } - - /** - * 根据布防状态统计闸井数量接口 - */ - @RequestMapping(value = "/countByBfzt", method = RequestMethod.GET) - @ResponseBody - public Object countByBfzt() { - DataScope dataScope = permissionService.getAuthService().getLoginUserDataScope(); - Set roleTipes = permissionService.getAuthService().getLoginUser().getRoleTips(); - List deptIds = null; - Boolean isApp = false; - if (roleTipes.contains("leader") || roleTipes.contains("member")) { - deptIds = permissionService.getDeptService().getIdsByPid(permissionService.getAuthService().getLoginUser().getDeptId(), null); - deptIds.add(permissionService.getAuthService().getLoginUser().getDeptId()); - isApp = true; - }else{ - deptIds = dataScope.getDeptIds(); - isApp = false; - } - SuccessResponseData resultData = new SuccessResponseData(); - busWellInfoService.getBfztCountData(deptIds,isApp); - resultData.setData(busWellInfoService.getBfztCountData(deptIds,isApp)); - return resultData; - } + /** * 闸井布防撤防接口 @@ -289,20 +251,6 @@ return ResponseData.success(); } - /** - * 获取布防类型(APP用) - */ - @RequestMapping(value = "/bfType", method = RequestMethod.GET) - @ResponseBody - public Object bfType(Long id) { - if (null ==id) { - throw new ServiceException(CoreExceptionEnum.REQUEST_NULL); - } - SuccessResponseData resultData = new SuccessResponseData(); - resultData.setData(busWellInfoService.getWatchDatas(id)); - - return resultData; - } /** diff --git a/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java b/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java index 001f704..f649b2c 100644 --- a/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java +++ b/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/dao/BusWellInfoMapper.java @@ -21,32 +21,11 @@ List selectDataScopePage(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("keywords") String keywords, @Param("wellType") String wellType, @Param("deptid") String deptid, @Param("bfzt") String bfzt); - List getDeviceInWellInfo(@Param("id") Long id); + List watchData(@Param("id") Long id); - DeviceData wellcoverData(@Param("devcode") String devcode); - DeviceData liquidData(@Param("devcode") String devcode); - - DeviceData harmfulgasData(@Param("devcode") String devcode); - - DeviceData gasData(@Param("devcode") String devcode); - - DeviceData temphumData(@Param("devcode") String devcode); - - DeviceData digData(@Param("devcode") String devcode); - - DeviceData noiseData(@Param("devcode") String devcode); - - DeviceData wellcoverlocaData(@Param("devcode") String devcode); - - DeviceData lgGasData(@Param("devcode") String devcode);//燃气液位 - - DeviceData lgLiquidData(@Param("devcode") String devcode);//燃气液位 - - - BfztCountDataDto bfztCountData(@Param("deptIds") List deptIds, @Param("isApp") Boolean isApp); List selectDataScope(@Param("scope") DataScope dataScope, @Param("page") Page page, @Param("wellType") String deviceType, @Param("deptid") String deptid, @Param("keywords") String keywords); @@ -63,9 +42,6 @@ List getWellList(@Param("scope") DataScope dataScope, @Param("keywords") String keywords, @Param("wellType") String deviceType, @Param("deptid") String deptid); - List getAlarmWellList(@Param("scope") DataScope dataScope, @Param("keywords") String keywords, @Param("wellType") String deviceType, @Param("deptid") String deptid); - - List getNotAlarmWellList(@Param("scope") DataScope dataScope, @Param("keywords") String keywords, @Param("wellType") String deviceType, @Param("deptid") String deptid); void updateBatchBfcf(@Param("keywords") String keywords, @Param("wellType") String wellType, @Param("deptid") String deptid, @Param("bfzt") String bfzt, @Param("deptIds") List deptIds); @@ -75,7 +51,7 @@ List getWellListAll(); - List getDeviceList(@Param("scope") DataScope dataScope); - DeviceInfoDto selectDeviceById(@Param("id") Long id); + + } diff --git a/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml b/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml index 138f825..44eccc8 100644 --- a/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml +++ b/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusWellInfoMapper.xml @@ -91,27 +91,6 @@ )
- - d - . - ID - AS deviceId, DEVCODE AS devcode, INSTALL_DATE AS installDate, ONLINE_STATE AS onlineState, t.TYPE_NAME AS typeName - - - @@ -137,103 +116,7 @@ ) - - - - - - - - - - - - - - - - - - - - UPDATE @@ -420,46 +272,6 @@ - - + + diff --git a/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/enmus/HarmfulGasBusiness.java b/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/enmus/HarmfulGasBusiness.java deleted file mode 100644 index d3bfabc..0000000 --- a/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/enmus/HarmfulGasBusiness.java +++ /dev/null @@ -1,44 +0,0 @@ -package com.casic.missiles.modular.system.enmus; - -public enum HarmfulGasBusiness { - - CO(0, "CO浓度","ppm"), - CH4(1, "CH4浓度","%VOL"), - H2S(2, "H2S浓度","ppm"), - O2(3, "O2浓度","%VOL"); - //SWITCH(4, "液位开关",""); - - private int code; - private String desc; - private String unit; - - public int getCode() { - return code; - } - - public void setCode(int code) { - this.code = code; - } - - public String getDesc() { - return desc; - } - - public void setDesc(String desc) { - this.desc = desc; - } - - public String getUnit() { - return unit; - } - - public void setUnit(String unit) { - this.unit = unit; - } - - HarmfulGasBusiness(int code, String desc, String unit) { - this.code = code; - this.desc = desc; - this.unit = unit; - } -} diff --git a/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/enmus/SluicewellExportEnum.java b/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/enmus/SluicewellExportEnum.java deleted file mode 100644 index d451598..0000000 --- a/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/enmus/SluicewellExportEnum.java +++ /dev/null @@ -1,59 +0,0 @@ -package com.casic.missiles.modular.system.enmus; - - - -import java.util.ArrayList; -import java.util.List; -import java.util.Map; - -public enum SluicewellExportEnum { - - DEVICE_EXPORT( - new ArrayList() {{ -// add(new Header("井编号", "wellCode")); -// add(new Header("井名称", "wellName")); -// add(new Header("井深", "deep")); -// add(new Header("详细地址", "position")); -// add(new Header("井类型", "wellTypeName")); -// add(new Header("权属单位", "deptName")); -// add(new Header("设备数量", "deviceCount")); -// add(new Header("布防状态", "bfztName")); - }}, "sluicewell.xlsx", "井数据导出"); - - //SLUICEWELLDATA_EXPORT("sluicewell.xlsx", "sluicewell.xlsx", "闸井数据"); - - /** - * 导出模板相对路径 - */ - private List headers; - /** - * 下载文件名 - */ - private String fileName; - /** - * 描述信息 - */ - private String description; - - SluicewellExportEnum(List headers, String fileName, String description) { - this.headers = headers; - this.fileName = fileName; - this.description = description; - } - - public List getHeaders() { - return headers; - } - - public String getFileName() { - return fileName; - } - - public String getDescription() { - return description; - } - - public Map getCustomColumnStyle() { - return null; - } -} diff --git a/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/enmus/TemphumBusiness.java b/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/enmus/TemphumBusiness.java deleted file mode 100644 index 27d15e2..0000000 --- a/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/enmus/TemphumBusiness.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.casic.missiles.modular.system.enmus; - -public enum TemphumBusiness { - - TEMP(0, "井内温度","℃"), - HUM(1, "井内湿度","%RH"); - - private int code; - private String desc; - private String unit; - - public int getCode() { - return code; - } - - public void setCode(int code) { - this.code = code; - } - - public String getDesc() { - return desc; - } - - public void setDesc(String desc) { - this.desc = desc; - } - - public String getUnit() { - return unit; - } - - public void setUnit(String unit) { - this.unit = unit; - } - - TemphumBusiness(int code, String desc, String unit) { - this.code = code; - this.desc = desc; - this.unit = unit; - } -} diff --git a/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java b/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java index f87d398..c65eb40 100644 --- a/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java +++ b/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/service/IBusWellInfoService.java @@ -17,7 +17,7 @@ * @author lwh * @since 2019-05-13 */ -public interface IBusWellInfoService extends IService { +public interface IBusWellInfoService extends IService{ /** * 根据条件分页查询闸井列表 @@ -30,24 +30,17 @@ List deleteBatchByIds(List id); - List getWatchDatas(Long id); - - List getDeviceDatas(String devTypename,String devcode,String status); - - BfztCountDataDto getBfztCountData(List deptIds, Boolean isApp); - List selectDataScope(DataScope dataScope, Page page, String deviceType, String deptid, String keywords); List getBatchExportData(DataScope dataScope, Page page, String deviceType, String deptid, String keywords); Integer getDeviceCountData(Long id); + String getDeptNameData(String deptid); List addWellBatch(List results); List getWellList(DataScope dataScope, String keywords, String wellType, String deptid); - List getAlarmWellList(DataScope dataScope, String keywords, String wellType, String deptid); - List getNotAlarmWellList(DataScope dataScope, String keywords, String wellType, String deptid); String getAreaPid(String id); @@ -57,8 +50,4 @@ Boolean changeCoordinates(int startNumber); - List getDeviceList(DataScope dataScope); - - DeviceInfoDto selectDeviceById(Long id); - } diff --git a/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java b/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java index 9776169..d241d8c 100644 --- a/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java +++ b/casic-sluicewell/src/main/java/com/casic/missiles/modular/system/service/impl/BusWellInfoServiceImpl.java @@ -1,23 +1,22 @@ package com.casic.missiles.modular.system.service.impl; import cn.hutool.core.collection.CollectionUtil; -import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.util.SpringContextHolder; import com.casic.missiles.modular.config.SluicewellProperties; import com.casic.missiles.modular.system.constant.BusWellConst; -import com.casic.missiles.modular.system.enmus.HarmfulGasBusiness; -import com.casic.missiles.modular.system.enmus.TemphumBusiness; -import com.casic.missiles.modular.system.dto.*; -import com.casic.missiles.modular.system.model.BusWellInfo; -import com.casic.missiles.core.application.context.AbstractPermissionContext; -import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.system.dao.BusWellInfoMapper; +import com.casic.missiles.modular.system.dto.BatchExportDataDto; +import com.casic.missiles.modular.system.dto.BusWellInfoDto; +import com.casic.missiles.modular.system.model.BusWellInfo; import com.casic.missiles.modular.system.model.Dict; import com.casic.missiles.modular.system.service.IBusWellInfoService; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.system.service.IBusWellInfoSupportService; import com.casic.missiles.modular.system.util.Utility; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -30,10 +29,10 @@ import javax.annotation.Resource; import java.io.Serializable; -import java.text.DateFormat; -import java.text.DecimalFormat; -import java.text.SimpleDateFormat; -import java.util.*; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; /** *

@@ -44,7 +43,7 @@ * @since 2019-05-13 */ @Service -public class BusWellInfoServiceImpl extends ServiceImpl implements IBusWellInfoService { +public class BusWellInfoServiceImpl extends ServiceImpl implements IBusWellInfoService, IBusWellInfoSupportService { private static final Logger logger = LoggerFactory.getLogger(BusWellInfoServiceImpl.class); @Resource @@ -82,346 +81,10 @@ return list; } - @Override - public List getWatchDatas(Long id) { - - List deviceInWellInfos = this.baseMapper.getDeviceInWellInfo(id); - List watchDataDtos = new ArrayList<>(); - - for (DeviceInWellInfo deviceInWellInfo : deviceInWellInfos) { - WatchDataDto watchDataDto = new WatchDataDto(); - watchDataDto.setDeviceId(deviceInWellInfo.getDeviceId()); - watchDataDto.setDevcode(deviceInWellInfo.getDevcode()); - watchDataDto.setInstallDate(deviceInWellInfo.getInstallDate()); - watchDataDto.setOnlineState(deviceInWellInfo.getOnlineState()); - watchDataDto.setOnlineStateName(dictService.getDictNameByCode("onlineStatus", deviceInWellInfo.getOnlineState())); - - DeviceData deviceData; - DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); - - switch (deviceInWellInfo.getTypeName()) { - case "井盖状态监测仪": - deviceData = this.baseMapper.wellcoverData(deviceInWellInfo.getDevcode()); - watchDataDto.setWatchType("井盖状态"); - watchDataDto.setType("1"); - if (ObjectUtil.isNotEmpty(deviceData)) { - //井盖离线 - if ("0".equals(watchDataDto.getOnlineState())) { - watchDataDto.setValue("离线"); - watchDataDto.setData("离线"); - watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); - } else if ("心跳".equals(deviceData.getData())) { - watchDataDto.setValue("井盖状态正常"); - watchDataDto.setData("井盖状态正常"); - watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); - } else { - watchDataDto.setValue(deviceData.getData()); - watchDataDto.setData(deviceData.getData()); - watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); - } - } else { - watchDataDto.setValue("无数据"); - watchDataDto.setData("无数据"); - } - watchDataDtos.add(watchDataDto); - break; - - case "液位监测仪": - deviceData = this.baseMapper.liquidData(deviceInWellInfo.getDevcode()); - if (ObjectUtil.isNotEmpty(deviceData)) { - watchDataDto.setWatchType("井内水位"); - watchDataDto.setType("2"); - - watchDataDto.setValue(deviceData.getData() + "m"); - watchDataDto.setData(deviceData.getData() + "m"); - watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); - watchDataDtos.add(watchDataDto); - } - break; - - case "有害气体监测仪": - deviceData = this.baseMapper.harmfulgasData(deviceInWellInfo.getDevcode()); - if (ObjectUtil.isNotEmpty(deviceData)) { - String[] harmfulGasDatas = deviceData.getData().split(","); - HarmfulGasBusiness[] harmfulGasBusinesses = HarmfulGasBusiness.values(); - - for (int i = 0; i < harmfulGasDatas.length; i++) { - watchDataDto.setWatchType(harmfulGasBusinesses[i].getDesc()); - watchDataDto.setType("3"); - watchDataDto.setValue(harmfulGasDatas[i] + harmfulGasBusinesses[i].getUnit()); - watchDataDto.setData(harmfulGasDatas[i] + harmfulGasBusinesses[i].getUnit()); - watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); - watchDataDtos.add((WatchDataDto) watchDataDto.clone()); - } - } - break; - - case "燃气智能监测终端": - deviceData = this.baseMapper.gasData(deviceInWellInfo.getDevcode()); - if (ObjectUtil.isNotEmpty(deviceData)) { - watchDataDto.setWatchType("燃气浓度"); - watchDataDto.setType("4"); - - watchDataDto.setValue(deviceData.getData() + "%LEL"); - watchDataDto.setData(deviceData.getData() + "%LEL"); - watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); - watchDataDtos.add(watchDataDto); - } - break; - - case "温湿度监测仪": - deviceData = this.baseMapper.temphumData(deviceInWellInfo.getDevcode()); - if (ObjectUtil.isNotEmpty(deviceData)) { - String[] temphumDatas = deviceData.getData().split(","); - TemphumBusiness[] temphumBusinesses = TemphumBusiness.values(); - - for (int i = 0; i < temphumDatas.length; i++) { - watchDataDto.setWatchType(temphumBusinesses[i].getDesc()); - watchDataDto.setType("5"); - watchDataDto.setValue(temphumDatas[i] + temphumBusinesses[i].getUnit()); - watchDataDto.setData(temphumDatas[i] + temphumBusinesses[i].getUnit()); - watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); - watchDataDtos.add((WatchDataDto) watchDataDto.clone()); - } - } - break; - - case "开挖监测仪": - deviceData = this.baseMapper.digData(deviceInWellInfo.getDevcode()); - if (ObjectUtil.isNotEmpty(deviceData)) { - watchDataDto.setWatchType("开挖状态"); - watchDataDto.setType("6"); - - watchDataDto.setValue(deviceData.getData() + "mg"); - watchDataDto.setData(deviceData.getData() + "mg"); - watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); - watchDataDtos.add(watchDataDto); - } - break; - - case "噪声记录仪": - deviceData = this.baseMapper.noiseData(deviceInWellInfo.getDevcode()); - if (ObjectUtil.isNotEmpty(deviceData)) { - watchDataDto.setWatchType("管线噪声"); - watchDataDto.setType("8"); - - watchDataDto.setValue(deviceData.getData() + "mg"); - watchDataDto.setData(deviceData.getData() + "mg"); - watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); - watchDataDtos.add(watchDataDto); - } - break; - - case "井盖定位监测仪": - deviceData = this.baseMapper.wellcoverlocaData(deviceInWellInfo.getDevcode()); - if (ObjectUtil.isNotEmpty(deviceData)) { - watchDataDto.setWatchType("井盖位置"); - watchDataDto.setType("7"); - - watchDataDto.setValue(deviceData.getData()); - watchDataDto.setData(deviceData.getData()); - watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); - watchDataDtos.add(watchDataDto); - } - break; - - case "燃气智能监测终端(一体化)": - deviceData = this.baseMapper.lgGasData(deviceInWellInfo.getDevcode()); - watchDataDto.setWatchType("燃气浓度"); - watchDataDto.setType("10"); - if (ObjectUtil.isNotEmpty(deviceData)) { - - Double dValue = Double.parseDouble(deviceData.getData()); - if (dValue <= 20.0) { - watchDataDto.setValue(deviceData.getData() + "%LEL"); - watchDataDto.setData(deviceData.getData() + "%LEL"); - } else { - DecimalFormat df = new DecimalFormat("0.00"); - dValue = dValue / 20.0; - watchDataDto.setValue(df.format(dValue) + "%VOL"); - watchDataDto.setData(df.format(dValue) + "%VOL"); - } - watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); - } else { - watchDataDto.setValue("无数据"); - watchDataDto.setData("无数据"); - } - watchDataDtos.add((WatchDataDto) watchDataDto.clone()); - - deviceData = this.baseMapper.lgLiquidData(deviceInWellInfo.getDevcode()); - watchDataDto.setWatchType("井内水位"); - watchDataDto.setType("10"); - if (ObjectUtil.isNotEmpty(deviceData)) { - - watchDataDto.setValue(deviceData.getData() + "m"); - watchDataDto.setData(deviceData.getData() + "m"); - watchDataDto.setLogtime(sdf.format(deviceData.getLogtime())); - } else { - watchDataDto.setValue("无数据"); - watchDataDto.setData("无数据"); - } - watchDataDtos.add((WatchDataDto) watchDataDto.clone()); - break; - - default://未知设备 - logger.info("未知设备!"); - break; - } - } - - return watchDataDtos; - } - @Override - public List getDeviceDatas(String devTypeName, String devcode, String status) { - List deviceDataDtoList = new ArrayList<>(); - DeviceDataDto deviceDataDto = new DeviceDataDto(); - DeviceData deviceData; - DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); - switch (devTypeName) { - case "井盖状态监测仪": - deviceData = this.baseMapper.wellcoverData(devcode); - deviceDataDto.setTypeName("井盖状态"); - if (ObjectUtil.isNotEmpty(deviceData)) { - //井盖离线 - if ("0".equals(status)) { - deviceDataDto.setValue("离线"); - deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); - } else if ("心跳".equals(deviceData.getData())) { - deviceDataDto.setValue("井盖状态正常"); - deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); - } else { - deviceDataDto.setValue(deviceData.getData()); - deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); - } - } else { - deviceDataDto.setValue("无数据"); - } - deviceDataDtoList.add(deviceDataDto); - break; - - case "液位监测仪": - deviceData = this.baseMapper.liquidData(devcode); - if (ObjectUtil.isNotEmpty(deviceData)) { - deviceDataDto.setTypeName("井内水位"); - deviceDataDto.setValue(deviceData.getData() + "m"); - deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); - deviceDataDtoList.add(deviceDataDto); - } - break; - - case "有害气体监测仪": - deviceData = this.baseMapper.harmfulgasData(devcode); - if (ObjectUtil.isNotEmpty(deviceData)) { - String[] harmfulGasDatas = deviceData.getData().split(","); - HarmfulGasBusiness[] harmfulGasBusinesses = HarmfulGasBusiness.values(); - for (int i = 0; i < harmfulGasDatas.length; i++) { - deviceDataDto = new DeviceDataDto(); - deviceDataDto.setTypeName(harmfulGasBusinesses[i].getDesc()); - deviceDataDto.setValue(harmfulGasDatas[i] + harmfulGasBusinesses[i].getUnit()); - deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); - deviceDataDtoList.add((DeviceDataDto) deviceDataDto.clone()); - } - } - break; - case "燃气智能监测终端": - deviceData = this.baseMapper.gasData(devcode); - if (ObjectUtil.isNotEmpty(deviceData)) { - deviceDataDto.setTypeName("燃气浓度"); - deviceDataDto.setValue(deviceData.getData() + "%LEL"); - deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); - deviceDataDtoList.add(deviceDataDto); - } - break; - - case "温湿度监测仪": - deviceData = this.baseMapper.temphumData(devcode); - if (ObjectUtil.isNotEmpty(deviceData)) { - String[] temphumDatas = deviceData.getData().split(","); - TemphumBusiness[] temphumBusinesses = TemphumBusiness.values(); - for (int i = 0; i < temphumDatas.length; i++) { - deviceDataDto = new DeviceDataDto(); - deviceDataDto.setTypeName(temphumBusinesses[i].getDesc()); - deviceDataDto.setValue(temphumDatas[i] + temphumBusinesses[i].getUnit()); - deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); - deviceDataDtoList.add((DeviceDataDto) deviceDataDto.clone()); - } - } - break; - - case "开挖监测仪": - deviceData = this.baseMapper.digData(devcode); - if (ObjectUtil.isNotEmpty(deviceData)) { - deviceDataDto.setTypeName("开挖状态"); - deviceDataDto.setValue(deviceData.getData() + "mg"); - deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); - deviceDataDtoList.add(deviceDataDto); - } - break; - - case "噪声记录仪": - deviceData = this.baseMapper.noiseData(devcode); - if (ObjectUtil.isNotEmpty(deviceData)) { - deviceDataDto.setTypeName("管线噪声"); - deviceDataDto.setValue(deviceData.getData() + "mg"); - deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); - deviceDataDtoList.add(deviceDataDto); - } - break; - case "井盖定位监测仪": - deviceData = this.baseMapper.wellcoverlocaData(devcode); - if (ObjectUtil.isNotEmpty(deviceData)) { - deviceDataDto.setTypeName("井盖位置"); - deviceDataDto.setValue(deviceData.getData()); - deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); - deviceDataDtoList.add(deviceDataDto); - } - break; - - case "燃气智能监测终端(一体化)": - deviceData = this.baseMapper.lgGasData(devcode); - deviceDataDto.setTypeName("燃气浓度"); - if (ObjectUtil.isNotEmpty(deviceData)) { - - Double dValue = Double.parseDouble(deviceData.getData()); - if (dValue <= 20.0) { - deviceDataDto.setValue(deviceData.getData() + "%LEL"); - } else { - DecimalFormat df = new DecimalFormat("0.00"); - dValue = dValue / 20.0; - deviceDataDto.setValue(df.format(dValue) + "%VOL"); - } - deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); - } else { - deviceDataDto.setValue("无数据"); - } - deviceDataDtoList.add(deviceDataDto); - - deviceData = this.baseMapper.lgLiquidData(devcode); - deviceDataDto.setTypeName("井内水位"); - if (ObjectUtil.isNotEmpty(deviceData)) { - - deviceDataDto.setValue(deviceData.getData() + "m"); - deviceDataDto.setLogtime(sdf.format(deviceData.getLogtime())); - } else { - deviceDataDto.setValue("无数据"); - } - deviceDataDtoList.add((DeviceDataDto) deviceDataDto.clone()); - break; - - default://未知设备 - logger.info("未知设备!"); - break; - } - return deviceDataDtoList; - } - @Override - public BfztCountDataDto getBfztCountData(List deptIds, Boolean isApp) { - return this.baseMapper.bfztCountData(deptIds, isApp); - } @Override public List selectDataScope(DataScope dataScope, Page page, String deviceType, String deptid, String keywords) { @@ -568,14 +231,10 @@ } @Override - public List getAlarmWellList(DataScope dataScope, String keywords, String wellType, String deptid) { - return this.baseMapper.getAlarmWellList(dataScope, keywords, wellType, deptid); + public BusWellInfo getById(Long id) { + return this.baseMapper.selectById(id); } - @Override - public List getNotAlarmWellList(DataScope dataScope, String keywords, String wellType, String deptid) { - return this.baseMapper.getNotAlarmWellList(dataScope, keywords, wellType, deptid); - } @Override public String getAreaPid(String id) { @@ -625,14 +284,4 @@ return false; } } - - @Override - public List getDeviceList(DataScope dataScope) { - return this.baseMapper.getDeviceList(dataScope); - } - - @Override - public DeviceInfoDto selectDeviceById(Long id) { - return this.baseMapper.selectDeviceById(id); - } }