java中枚举类的定义和使用

平台一:设备控制器调用方式



/**
 * 控制器枚举类
 */
public enum MediaCtrSeasonEnum {
    MultimediaOn, MultimediaOff
}

Server实现

/**
     * 定义控制器URL的变量
     */
    private static HttpClient   httpClient = new DefaultHttpClient();
    private static HttpPost     httppost;
    private static HttpResponse response;
    /**
     * 控制开关
     */
    public ResponseEntity<?> controlSwitch(MediaControlSwitchRequest mediaControlSwitchRequest, HttpServletRequest request){

        Criteria<BMediaControlDevice> deviceCriteria = new Criteria<>();
        deviceCriteria.add(Restrictions.eq("mcdId", mediaControlSwitchRequest.getMcdId(), false));
        deviceCriteria.add(Restrictions.eq("isdeleted", false, false));
        Optional<BMediaControlDevice> oldOptiona=mediaControlDeviceRepository.findOne(deviceCriteria);
        //当设备为NULL时
        if (!oldOptiona.isPresent()) {
            String msg = SysValidateMessageConfig.getProperty("BMediaControlDevice_Null_Error");
            CommonReturnMessage message = new CommonReturnMessage("204", msg, null);
            return new ResponseEntity<CommonReturnMessage>(message, HttpStatus.OK);
        }
        String ip=oldOptiona.get().getIpAddress();
        String port=String.valueOf(oldOptiona.get().getPort());
        //当IP和端口NULL时
        if(ip.equals("")||port.equals("null")){
            String msg = SysValidateMessageConfig.getProperty("BMediaControlDevice_Ip_Port_Null_Error");
            CommonReturnMessage message = new CommonReturnMessage("204", msg, null);
            return new ResponseEntity<CommonReturnMessage>(message, HttpStatus.OK);
        }
        try{
            String  ControlVal=mediaControlSwitchRequest.getControlVal();
            //通过valueOf,获取ControlVal的枚举类型
            MediaCtrSeasonEnum controlEnum = MediaCtrSeasonEnum.valueOf(ControlVal);
            //直接初始化
            MediaCtrSeasonEnum controlEnumVal = MediaCtrSeasonEnum.valueOf(controlEnum.toString());
            //初始化URL
            String url="";
            //JsonObject
            JSONObject jsonParam;
            //实例化对象
            StringEntity entity;
            switch (controlEnumVal){
                //中控开启
                case MultimediaOn:
                    url = "http://127.0.0.1:8000/api/mediaStart";
                    // 创建一个httppost请求
                    httppost = new HttpPost(url);
                    jsonParam = new JSONObject();
	                //传参请求ip和port端口
                    jsonParam.put("ip", ip);
                    jsonParam.put("port", port);
	                //中文乱码问题
                    entity = new StringEntity(jsonParam.toString(), "utf-8");// 解决中                            文乱码问题
                    entity.setContentEncoding("UTF-8");
                    entity.setContentType("application/json");
                    httppost.setEntity(entity);
	                //发送请求
                    response = httpClient.execute(httppost);
                    //公共处理方法(返回结果处理)
                    commonControlSwitch();
	                //关闭流
                    httppost.releaseConnection();
                    System.out.println("设备开");
                    break;
                //关闭
                case MultimediaOff:
                    url = "http://127.0.0.1:8001/api/mediaClose";
                    // 创建一个httppost请求
                    httppost = new HttpPost(url);
                    jsonParam = new JSONObject();
	                //传参请求ip和port端口
                    jsonParam.put("ip", ip);
                    jsonParam.put("port", port);
	                //中文乱码问题
                    entity = new StringEntity(jsonParam.toString(), "utf-8");// 解决中文乱码问题
                    entity.setContentEncoding("UTF-8");
                    entity.setContentType("application/json");
                    httppost.setEntity(entity);
                    response = httpClient.execute(httppost);
                    //公共处理方法(返回结果处理)
                    commonControlSwitch();
	                //关闭流
                    httppost.releaseConnection();
                    System.out.println("设备关");
                    break;
            }
        }catch (Exception e){
            CommonReturnMessage message = new CommonReturnMessage("204", "操作失败", response);
            return new ResponseEntity<CommonReturnMessage>(message, HttpStatus.OK);
        }
        MsgResponse response = new MsgResponse();
        response.setCode("200");
        response.setMessage("操作成功");
        CommonReturnMessage message = new CommonReturnMessage("200", null, response);
        return new ResponseEntity<CommonReturnMessage>(message, HttpStatus.OK);
    }

/**
     * 提取设备控制器-公共处理方法
     * @return
     */
    public  ResponseEntity<?> commonControlSwitch(){
        try {
            String strResult = EntityUtils.toString(response.getEntity());
            JSONObject jsonData = JSONObject.parseObject(strResult);
            JSONObject info = jsonData.getJSONObject("data");
            Iterator iter = info.entrySet().iterator();
            String key="";
            String value="";
            Map<String, String> map = new HashMap<String, String>();
            List<Map<String,String>> list = new ArrayList<Map<String,String>>();
            MsgResponse response = new MsgResponse();
            CommonReturnMessage message=null;
            while (iter.hasNext()) {
                Map.Entry entry = (Map.Entry) iter.next();
                //获取key的值
                key = entry.getKey().toString();
                //获取value的值
                value = entry.getValue().toString();
                map.put(key,value);
            }
            //将map的put结果放入list集合
            list.add(map);
            System.out.println(list);
            //循环list取第一个值
            for(int i=0;i<1;i++){
                System.out.println(list.get(i));
	            //将对应的值写入response对应的code和message
                response.setCode(list.get(i).get("code"));
                response.setMessage(list.get(i).get("message"));
	            //组装message 结果
                message = new CommonReturnMessage(list.get(i).get("code"),null, response);
            }
            //返回结果信息
            return  new ResponseEntity<CommonReturnMessage>(message, HttpStatus.OK);
        } catch (Exception e) {
            e.printStackTrace();
        }
        MsgResponse response = new MsgResponse();
        response.setCode("204");
        response.setMessage("操作失败");
        CommonReturnMessage message = new CommonReturnMessage("204", null, response);
        return new ResponseEntity<CommonReturnMessage>(message, HttpStatus.OK);
    }

请求平台二控制器

/**
     * 设备开启
     * @param mediaRequest
     * @param bindingResult
     * @param request
     * @return
     */
    @RequestMapping(value = "/mediaStart", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
    public HttpEntity<?> mediaStart(@Valid @RequestBody MediaRequest mediaRequest, BindingResult bindingResult,
                                 HttpServletRequest request
    ) {
        if (bindingResult.hasErrors()) {
            return new ResponseEntity<>(new SysMessage(bindingResult.getFieldError().getDefaultMessage()),
                    HttpStatus.BAD_REQUEST);
        }
        ResponseEntity<?> responseEntity = null;
        try
        {
            responseEntity = mediaCtrService.mediaStart( request,mediaRequest);
        } catch (Exception e)
        {
            logger.error(e.getMessage(), e);
            return new SysMessage(e).buildErrorResponseEntity();
        }
        return responseEntity;
    }

Server实现

/**
     * //设备开机/
     * 4B  06  00  00  01  XX  00  00  00  5A
     * XX 为开关状态,0x00-关,0x01-开
     */
    public ResponseEntity<?> mediaStart(HttpServletRequest request, MediaRequest mediaRequest){
        String code="";
        try {
            byte[] dataBytes = new byte[10];
            dataBytes[0] = (byte) 0x4B;
            dataBytes[1] = (byte) 0x06;
            dataBytes[2] = (byte) 0x00;
            dataBytes[3] = (byte) 0x00;
            dataBytes[4] = (byte) 0x01;
            //控制代码
            dataBytes[5] = (byte) 0x01;
            dataBytes[6] = (byte) 0x00;

            dataBytes[7] = (byte) 0x00;
            dataBytes[8] = (byte) 0x00;
            dataBytes[9] = (byte) 0x5A;

            //向ip地址发送
            String ip=mediaRequest.getIp();
            System.out.println(mediaRequest.getPort());
            int port=mediaRequest.getPort();
            InetAddress destHost = InetAddress.getByName(ip);
            Socket socket = new Socket(destHost, port);//创建Socket类对象

            DataInputStream in = new DataInputStream(socket
                    .getInputStream());// 读取传过来信息的DataInputStream

            DataOutputStream out = new DataOutputStream(socket
                    .getOutputStream());// 发送信息的DataOutputStream


            out.write(dataBytes);

            Thread.sleep(1000*5);

            byte b[]=new byte[64];

            in.read(b);
            System.out.println(HexStringUtils.bytesToHexString(b));
            code=HexStringUtils.bytesToHexString(b);

//            System.out.println(HexStringUtils.toHexString(b));
            socket.close();

        }catch (Exception e){
            System.out.println("异常:"+e.getMessage());
        }
        MsgResponse response=new MsgResponse();
        CommonReturnMessage message=null;
        //判断执行成功与否
        if (StringUtils.isEmpty(code)){
            response.setCode("204");
            response.setMessage("执行失败");
            message = new CommonReturnMessage("204", null, response);
        }else {
            response.setCode("200");
            response.setMessage("执行成功");
            message = new CommonReturnMessage("200", null, response);
        }

        return new ResponseEntity<CommonReturnMessage>(message, HttpStatus.OK);
    }
发布了97 篇原创文章 · 获赞 13 · 访问量 7万+

猜你喜欢

转载自blog.csdn.net/weixin_39559301/article/details/103696381
今日推荐