| | |
| | | import io.swagger.annotations.*; |
| | | import lombok.AllArgsConstructor; |
| | | import org.omg.PortableInterceptor.INACTIVE; |
| | | import org.springblade.common.vo.DeptVo; |
| | | import org.springblade.core.boot.ctrl.BladeController; |
| | | import org.springblade.core.mp.support.Condition; |
| | | import org.springblade.core.mp.support.Query; |
| | |
| | | import org.springblade.jfpt.catalog.service.catalogService; |
| | | import org.springblade.jfpt.deploy.service.IDeployService; |
| | | import org.springblade.jfpt.equipment.entity.Equipment; |
| | | import org.springblade.jfpt.equipment.entity.EquipmentPlayInfo; |
| | | import org.springblade.jfpt.equipment.feign.DeptFeignApi; |
| | | import org.springblade.jfpt.equipment.feign.RegionFeignApi; |
| | | import org.springblade.jfpt.equipment.service.IEquipmentService; |
| | | import org.springblade.jfpt.equipment.vo.EquipmentVO; |
| | | import org.springblade.jfpt.equipment.vo.EquipmentVOS; |
| | | import org.springblade.jfpt.equipment.wrapper.EqWrapper; |
| | | import org.springblade.system.entity.Region; |
| | | import org.springblade.system.user.entity.User; |
| | | import org.springframework.web.bind.annotation.*; |
| | | import springfox.documentation.annotations.ApiIgnore; |
| | |
| | | import javax.validation.Valid; |
| | | import java.text.ParseException; |
| | | import java.text.SimpleDateFormat; |
| | | import java.util.ArrayList; |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.*; |
| | | |
| | | /** |
| | | * 控制器 |
| | | * 设备管理控制器 |
| | | * |
| | | * @author BladeX |
| | | * @since 2020-07-01 |
| | |
| | | private final IDeployService iDeployService; |
| | | private final org.springblade.jfpt.catalog.service.catalogService catalogService; |
| | | |
| | | private final DeptFeignApi deptFeignApi; |
| | | |
| | | private final RegionFeignApi regionFeignApi; |
| | | |
| | | /** |
| | | * 详情 |
| | | */ |
| | |
| | | response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE"); |
| | | response.setHeader("Access-Control-Allow-Credentials", "true"); |
| | | /*Equipment detail = equipmentService.getOne(Condition.getQueryWrapper(equipment));*/ |
| | | |
| | | return R.data(equipmentService.selectInfo(equipment)); |
| | | EquipmentVOS equipmentVOS = equipmentService.selectInfo(equipment); |
| | | //获取部门数据 |
| | | List<DeptVo> deptVos = deptFeignApi.selDeptList(); |
| | | if (null!=equipmentVOS.getDeptId()){ |
| | | String[] split =equipmentVOS.getDeptId().split(","); |
| | | List<String> list = Arrays.asList(split); |
| | | StringBuffer deptNameBuiffer = new StringBuffer(); |
| | | //数据匹配封装 |
| | | for (String deptId:list) { |
| | | for (DeptVo deptVo:deptVos) { |
| | | if (deptId.equals(deptVo.getId().toString())){ |
| | | deptNameBuiffer.append(deptVo.getDeptName()).append("/"); |
| | | } |
| | | } |
| | | } |
| | | //封装部门名称数据 |
| | | equipmentVOS.setDeptName(deptNameBuiffer.substring(0,deptNameBuiffer.length()-1)); |
| | | } |
| | | return R.data(equipmentVOS); |
| | | } |
| | | |
| | | /** |
| | |
| | | @GetMapping("/listAll") |
| | | @ApiOperationSupport(order = 2) |
| | | @ApiOperation(value = "分页", notes = "传入equipment") |
| | | public R<List<EquipmentVO>> listAll(Equipment equipment, Query query) throws ParseException { |
| | | List<EquipmentVO> pages = equipmentService.listAll(); |
| | | public R<List<EquipmentVO>> listAll(EquipmentVO equipment, Query query) throws ParseException { |
| | | List<EquipmentVO> pages = equipmentService.listAll(equipment); |
| | | |
| | | for (int j = 0; j < pages.size(); j++) { |
| | | String expireTime = pages.get(j).getExpireTime(); |
| | |
| | | SimpleDateFormat sim = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); |
| | | String end = sim.format(dd); |
| | | //把string类型转换为long类型的 |
| | | long st = sim.parse(expireTime).getTime(); |
| | | long en = sim.parse(end).getTime(); |
| | | //计算天数 |
| | | int day = (int) ((st - en) / 86400000); |
| | | if (day <= 30) { |
| | | pages.get(j).setType(1); |
| | | } else { |
| | | pages.get(j).setType(0); |
| | | if (expireTime != null) { |
| | | long st = sim.parse(expireTime).getTime(); |
| | | long en = sim.parse(end).getTime(); |
| | | //计算天数 |
| | | int day = (int) ((st - en) / 86400000); |
| | | if (day <= 30) { |
| | | pages.get(j).setType(1); |
| | | } else { |
| | | pages.get(j).setType(0); |
| | | } |
| | | } |
| | | |
| | | |
| | | //判断设备是否在线 |
| | | String Heartbeat = pages.get(j).getHeartbeat(); |
| | | if (Heartbeat != null){ |
| | | long st = sim.parse(Heartbeat).getTime(); |
| | | long en = sim.parse(end).getTime(); |
| | | if ((en - st) >= (60 * 60 * 24 * 1000)){ |
| | | pages.get(j).setOnlineStatus("0"); |
| | | }else{ |
| | | pages.get(j).setOnlineStatus("1"); |
| | | } |
| | | }else{ |
| | | pages.get(j).setOnlineStatus("0"); |
| | | } |
| | | } |
| | | |
| | | |
| | | return R.data(pages); |
| | | } |
| | | |
| | |
| | | } |
| | | } |
| | | |
| | | if (page != null){ |
| | | if (page != null) { |
| | | for (int j = 0; j < page.getRecords().size(); j++) { |
| | | String expireTime = page.getRecords().get(j).getExpireTime(); |
| | | //1.获取当前时间 |
| | |
| | | String end = sim.format(dd); |
| | | //把string类型转换为long类型的 |
| | | |
| | | if (expireTime != null){ |
| | | if (expireTime != null) { |
| | | long st = sim.parse(expireTime).getTime(); |
| | | long en = sim.parse(end).getTime(); |
| | | //计算天数 |
| | |
| | | |
| | | /** |
| | | * 自定义分页(部门挂接) |
| | | * @param dxtype ??? |
| | | * @param equipment 设备对象信息 |
| | | * @param query 查询参数 |
| | | * @param pid 组织机构Id |
| | | * @param response servlet 响应对象 |
| | | */ |
| | | @GetMapping("/pageDept") |
| | | @ApiOperationSupport(order = 3) |
| | | @ApiOperation(value = "分页", notes = "传入equipment") |
| | | public R<IPage<EquipmentVO>> pageDept(EquipmentVO equipment, Query query, String pid, HttpServletResponse response) throws ParseException { |
| | | public R<IPage<EquipmentVO>> pageDept(EquipmentVO equipment, Query query, String pid, String dxtype, HttpServletResponse response) throws ParseException { |
| | | response.setHeader("Access-Control-Allow-Origin", "*"); |
| | | response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE"); |
| | | response.setHeader("Access-Control-Allow-Credentials", "true"); |
| | | |
| | | IPage<EquipmentVO> page = equipmentService.selectDeptPages(Condition.getPage(query), equipment, pid); |
| | | |
| | | //获取部门数据 |
| | | List<DeptVo> deptVos = deptFeignApi.selDeptList(); |
| | | //获取设备数据信息 |
| | | IPage<EquipmentVO> page = equipmentService.selectDeptPages(Condition.getPage(query), equipment, pid, dxtype); |
| | | //遍历数据 |
| | | for (int j = 0; j < page.getRecords().size(); j++) { |
| | | if (null!=page.getRecords().get(j).getDeptId()){ |
| | | String[] split = page.getRecords().get(j).getDeptId().split(","); |
| | | List<String> list = Arrays.asList(split); |
| | | StringBuffer deptNameBuiffer = new StringBuffer(); |
| | | //数据匹配封装 |
| | | for (String deptId:list) { |
| | | for (DeptVo deptVo:deptVos) { |
| | | if (deptId.equals(deptVo.getId().toString())){ |
| | | deptNameBuiffer.append(deptVo.getDeptName()).append(","); |
| | | } |
| | | } |
| | | } |
| | | //封装部门名称数据 |
| | | page.getRecords().get(j).setDeptName(deptNameBuiffer.substring(0,deptNameBuiffer.length()-1)); |
| | | } |
| | | |
| | | String expireTime = page.getRecords().get(j).getExpireTime(); |
| | | //1.获取当前时间 |
| | | Date dd = new Date(); |
| | |
| | | String end = sim.format(dd); |
| | | //把string类型转换为long类型的 |
| | | |
| | | if (expireTime != null){ |
| | | if (expireTime != null) { |
| | | long st = sim.parse(expireTime).getTime(); |
| | | long en = sim.parse(end).getTime(); |
| | | //计算天数 |
| | |
| | | page.getRecords().get(j).setType(0); |
| | | } |
| | | } |
| | | |
| | | //判断设备是否在线 |
| | | String Heartbeat = page.getRecords().get(j).getHeartbeat(); |
| | | if (Heartbeat != null){ |
| | | long st = sim.parse(Heartbeat).getTime(); |
| | | long en = sim.parse(end).getTime(); |
| | | if ((en - st) >= (60 * 60 * 24 * 1000)){ |
| | | page.getRecords().get(j).setOnlineStatus("0"); |
| | | }else{ |
| | | page.getRecords().get(j).setOnlineStatus("1"); |
| | | } |
| | | }else{ |
| | | page.getRecords().get(j).setOnlineStatus("0"); |
| | | } |
| | | } |
| | | |
| | | |
| | | return R.data(page); |
| | | } |
| | |
| | | equipment.setHeartbeat(null); |
| | | } |
| | | |
| | | if (equipment.getDtype() == null || equipment.getDtype().equals("")) { |
| | | equipment.setDtype("0"); |
| | | } |
| | | |
| | | //判断省市区的值是否为数字或者中文字符串 |
| | | if(null!=equipment.getProvince()){ |
| | | //如果不是数字,则需调用接口匹配数据(直接取区、县参数) |
| | | if (!equipment.getDistrict().matches("^[0-9]*$") && !equipment.getCity().matches("^[0-9]*$")){ |
| | | Region region = regionFeignApi.selRegionDetail(equipment.getDistrict(),equipment.getCity()); |
| | | if (null!=region){ |
| | | //封装数据 |
| | | equipment.setProvince(region.getProvinceCode()); |
| | | equipment.setCity(region.getCityCode()); |
| | | equipment.setDistrict(region.getDistrictCode()); |
| | | } |
| | | } |
| | | } |
| | | |
| | | // String deviceName = equipment.getDeviceName(); |
| | | // String deviceNumber = equipment.getDeviceNumber(); |
| | | // String pId = equipment.getPid(); |
| | |
| | | // catalogService.updateCatalog(deviceName,deviceNumber,pId); |
| | | // } |
| | | |
| | | System.out.println(equipment.getDeptId()); |
| | | |
| | | return R.status(equipmentService.saveOrUpdate(equipment)); |
| | | } |
| | | |
| | | /** |
| | | * APP新增或修改 |
| | | */ |
| | | @PostMapping("/AppSubmit") |
| | | @ApiOperationSupport(order = 6) |
| | | @ApiOperation(value = "新增或修改", notes = "传入equipment") |
| | | public R AppSubmit(@Valid EquipmentVO equipment) { |
| | | if (equipment.getStime() != null && equipment.getStime().equals("")) { |
| | | equipment.setStime(null); |
| | | } |
| | | |
| | | if (equipment.getExpireTime() != null && equipment.getExpireTime().equals("")) { |
| | | equipment.setExpireTime(null); |
| | | } |
| | | |
| | | if (equipment.getHeartbeat() != null && equipment.getHeartbeat().equals("")) { |
| | | equipment.setHeartbeat(null); |
| | | } |
| | | |
| | | if (equipment.getDtype() == null || equipment.getDtype().equals("")) { |
| | | equipment.setDtype("0"); |
| | | } |
| | | |
| | | // String deviceName = equipment.getDeviceName(); |
| | | // String deviceNumber = equipment.getDeviceNumber(); |
| | | // String pId = equipment.getPid(); |
| | | // if (equipment.getId() == null){ |
| | | // catalogService.addCatalog(deviceName,deviceNumber,pId); |
| | | // }else{ |
| | | // catalogService.updateCatalog(deviceName,deviceNumber,pId); |
| | | // } |
| | | |
| | | if (equipment.getPaddress() != null && !equipment.getPaddress().equals("")) { |
| | | equipmentService.saveImg(equipment); |
| | | } |
| | | |
| | | return R.status(equipmentService.saveOrUpdate(equipment)); |
| | | } |
| | | |
| | |
| | | @PostMapping("/updateexpireTime") |
| | | @ApiOperationSupport(order = 5) |
| | | @ApiOperation(value = "修改", notes = "传入equipment") |
| | | public R updateexpireTime(String expireTime,String deviceNumber) { |
| | | equipmentService.updateexpireTime(expireTime,deviceNumber); |
| | | public R updateexpireTime(String expireTime, String deviceNumber) { |
| | | equipmentService.updateexpireTime(expireTime, deviceNumber); |
| | | return R.success("修改成功"); |
| | | } |
| | | |
| | |
| | | @PostMapping("/updateExstate") |
| | | @ApiOperationSupport(order = 5) |
| | | @ApiOperation(value = "修改", notes = "传入equipment") |
| | | public R updateExstate(String state,String reason, String deviceNumber) { |
| | | equipmentService.updateExstate(state,reason,deviceNumber); |
| | | public R updateExstate(String state, String reason, String deviceNumber) { |
| | | equipmentService.updateExstate(state, reason, deviceNumber); |
| | | return R.success("修改成功"); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 监控台统计 |
| | | * |
| | | * @return |
| | | */ |
| | | @PostMapping("/SeleC") |
| | | public R SeleC() { |
| | | SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");//设置日期格式 |
| | | String time = df.format(new Date());// new Date()为获取当前系统时间 |
| | | //设备在线数量 |
| | | Integer integerz = equipmentService.selectEqCz(); |
| | | //设备掉线数量 |
| | | Integer integerd = equipmentService.selectEqCd(); |
| | | //设备预警数量 |
| | | List<Map<String, Object>> list = equipmentService.selectEqCy(time); |
| | | //设备故障数量 |
| | | Integer integerg = equipmentService.selectEqCg(); |
| | | Map<String, Object> map = new HashMap<String, Object>(); |
| | | map.put("zx", integerz); |
| | | map.put("dx", integerd); |
| | | map.put("yj", list.size()); |
| | | map.put("gz", integerg); |
| | | return R.data(map); |
| | | } |
| | | |
| | | /** |
| | | * 监控台统计 |
| | | * @author arsn 2021-5-6 |
| | | * @return |
| | | */ |
| | | @PostMapping("/SeleCs") |
| | | public R SeleCs() { |
| | | return R.data(equipmentService.selEqTypeSum()); |
| | | } |
| | | |
| | | /** |
| | | * 获取设备视频播放的信息 |
| | | * @param equipmentPlayInfo 视频播放地址对象,只需包含设备编号,以及视频播放格式即可 |
| | | * @param response 响应域,设置跨域 |
| | | * @return |
| | | */ |
| | | @GetMapping("/selectEquimentPlayInfo") |
| | | public R selectEquimentPlayInfo(EquipmentPlayInfo equipmentPlayInfo,HttpServletResponse response){ |
| | | response.setHeader("Access-Control-Allow-Origin", "*"); |
| | | response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE"); |
| | | response.setHeader("Access-Control-Allow-Credentials", "true"); |
| | | //返回 |
| | | return R.data(equipmentService.selectEquimentPlayInfo(equipmentPlayInfo)); |
| | | } |
| | | |
| | | |
| | | |
| | | /** |
| | | * 新增或修改设备视频播放的信息 |
| | | * @param equipmentPlayInfo 视频播放地址对象 |
| | | * @return |
| | | */ |
| | | @PostMapping("/submitEquimentPlayInfo") |
| | | public R submitEquimentPlayInfo(EquipmentPlayInfo equipmentPlayInfo){ |
| | | return R.status(equipmentService.saveOrUpdateEquipmentPlayInfo(equipmentPlayInfo)); |
| | | } |
| | | |
| | | } |