| | |
| | | package com.whyc.util; |
| | | |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | | import com.baomidou.mybatisplus.core.toolkit.BeanUtils; |
| | | import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; |
| | | import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
| | | import com.google.gson.JsonObject; |
| | | import com.whyc.constant.CMD_Constant; |
| | | import com.whyc.dto.Response; |
| | | import com.whyc.mapper.CustomMapper; |
| | |
| | | * @param queryWrapper |
| | | * @param opCmd 执行的操作输入 |
| | | * @param ackTimeLimitSecond 最大限制返回时间,单位秒 |
| | | * @param battIndex 电池组index,可传入[0,1]或者null |
| | | * @return 对比opCmd的操作输出,是否操作成功或者失败 |
| | | */ |
| | | public static Response getOpStatus(CustomMapper mapper, QueryWrapper<?> queryWrapper, Integer opCmd, Integer ackTimeLimitSecond) { |
| | | public static Response getOpStatus(CustomMapper mapper, QueryWrapper<?> queryWrapper, Integer opCmd, Integer ackTimeLimitSecond, Integer battIndex) { |
| | | try { |
| | | int count = ackTimeLimitSecond * 1000 / 250; |
| | | for (int i = 0; i < count; i++) { |
| | | queryWrapper.select("op_cmd").last(" limit 1"); |
| | | queryWrapper.select("op_cmd"); |
| | | if(battIndex != null){ |
| | | queryWrapper.eq("batt_index",battIndex); |
| | | } |
| | | queryWrapper.last(" limit 1"); |
| | | Object obj = mapper.selectOne(queryWrapper); |
| | | Class clazz = obj.getClass(); |
| | | |
| | |
| | | } |
| | | Thread.sleep(250); |
| | | } |
| | | return new Response().set(1, false, "网络连接失败,更新失败"); |
| | | return new Response().set(1, false, "设备响应超时,更新失败"); |
| | | }catch (NoSuchFieldException | IllegalAccessException | InterruptedException e){ |
| | | return new Response().set(0,e.toString()); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 读取 |
| | | * @param mapper |
| | | * @param queryWrapper |
| | | * @param opCmd 执行的操作输入 |
| | | * @param ackTimeLimitSecond 最大限制返回时间,单位秒 |
| | | * @param battIndex 电池组index,可传入[0,1]或者null |
| | | * @return |
| | | */ |
| | | public static Response readByUpdateOpCmd(CustomMapper mapper, QueryWrapper<?> queryWrapper, Integer opCmd, Integer ackTimeLimitSecond,Integer battIndex) { |
| | | try { |
| | | //更新cmd |
| | | UpdateWrapper<Object> update = Wrappers.update(); |
| | | update.set("op_cmd",opCmd); |
| | | if(battIndex != null){ |
| | | update.set("batt_index",battIndex); |
| | | } |
| | | mapper.update(null,update); |
| | | //读取cmd返回 |
| | | int count = ackTimeLimitSecond * 1000 / 250; |
| | | QueryWrapper<?> query2 = null; |
| | | if(battIndex != null){ |
| | | query2 = queryWrapper.clone(); |
| | | query2.eq("batt_index",battIndex); |
| | | } |
| | | for (int i = 0; i < count; i++) { |
| | | queryWrapper.select("op_cmd"); |
| | | if(battIndex != null){ |
| | | queryWrapper.eq("batt_index",battIndex); |
| | | } |
| | | queryWrapper.last(" limit 1"); |
| | | |
| | | Object obj = mapper.selectOne(queryWrapper); |
| | | Class clazz = obj.getClass(); |
| | | |
| | | Field fieldOpCmdAck = clazz.getDeclaredField("opCmd"); |
| | | ReflectionUtils.makeAccessible(fieldOpCmdAck); |
| | | Integer opCmdAck = (Integer) fieldOpCmdAck.get(obj); |
| | | boolean ackStatus = getAckStatus(opCmd, opCmdAck); |
| | | if (ackStatus) {//操作成功 |
| | | Object data = mapper.selectList(query2).get(0); |
| | | return new Response().setII(1, true, data,"读取完成"); |
| | | } |
| | | Thread.sleep(250); |
| | | } |
| | | //Object dataFail = mapper.selectList(query2).get(0); |
| | | //return new Response().setII(1, false,dataFail, "设备响应超时,读取失败"); |
| | | return new Response().set(1, false, "设备响应超时,读取失败"); |
| | | }catch (NoSuchFieldException | IllegalAccessException | InterruptedException e){ |
| | | return new Response().set(0,e.toString()); |
| | | } |
| | |
| | | case CMD_Constant.CMD_SetACDCARK_Signal:{ |
| | | return opCmdAck == CMD_Constant.CMD_SetACDCARK_Signal_ACK; |
| | | } |
| | | |
| | | case CMD_Constant.CMD_GetModelParam:{ |
| | | return opCmdAck ==CMD_Constant.CMD_GetModelParam_ACK ; |
| | | } |
| | | case CMD_Constant.CMD_SetModelParam:{ |
| | | return opCmdAck ==CMD_Constant.CMD_SetModelParam_ACK ; |
| | | } |
| | | case CMD_Constant.CMD_SetModelControl:{ |
| | | return opCmdAck ==CMD_Constant.CMD_SetModelControl_ACK ; |
| | | } |
| | | case CMD_Constant.CMD_GetModelControl:{ |
| | | return opCmdAck ==CMD_Constant.CMD_GetModelControl_ACK ; |
| | | } |
| | | case CMD_Constant.CMD_SetBatt1MonData:{ |
| | | return opCmdAck ==CMD_Constant.CMD_SetBatt1MonData_ACK ; |
| | | } |
| | | case CMD_Constant.CMD_SetBatt1GroupData:{ |
| | | return opCmdAck ==CMD_Constant.CMD_SetBatt1GroupData_ACK ; |
| | | } |
| | | case CMD_Constant.CMD_SetBatt2MonData:{ |
| | | return opCmdAck ==CMD_Constant.CMD_SetBatt2MonData_ACK ; |
| | | } |
| | | case CMD_Constant.CMD_SetBatt2GroupData:{ |
| | | return opCmdAck ==CMD_Constant.CMD_SetBatt2GroupData_ACK ; |
| | | } |
| | | case CMD_Constant.CMD_SetBattAlarm:{ |
| | | return opCmdAck ==CMD_Constant.CMD_SetBattAlarm_ACK ; |
| | | } |
| | | case CMD_Constant.CMD_GetBattDisParam:{ |
| | | return opCmdAck ==CMD_Constant.CMD_GetBattDisParam_ACK ; |
| | | } |
| | | case CMD_Constant.CMD_SetBattDisParam:{ |
| | | return opCmdAck ==CMD_Constant.CMD_SetBattDisParam_ACK ; |
| | | } |
| | | case CMD_Constant.CMD_GetDevIP:{ |
| | | return opCmdAck ==CMD_Constant.CMD_GetDevIP_ACK ; |
| | | } |
| | | case CMD_Constant.CMD_SetDevIP:{ |
| | | return opCmdAck ==CMD_Constant.CMD_SetDevIP_ACK ; |
| | | } |
| | | case CMD_Constant.CMD_StartBatt1DisTest:{ |
| | | return opCmdAck ==CMD_Constant.CMD_StartBatt1DisTest_ACK ; |
| | | } |
| | | case CMD_Constant.CMD_StopBatt1DisTest:{ |
| | | return opCmdAck ==CMD_Constant.CMD_StopBatt1DisTest_ACK ; |
| | | } |
| | | case CMD_Constant.CMD_StartBatt2DisTest:{ |
| | | return opCmdAck ==CMD_Constant.CMD_StartBatt2DisTest_ACK ; |
| | | } |
| | | case CMD_Constant.CMD_StopBatt2DisTest:{ |
| | | return opCmdAck ==CMD_Constant.CMD_StopBatt2DisTest_ACK ; |
| | | } |
| | | case CMD_Constant.CMD_StartBatt1ResTest:{ |
| | | return opCmdAck ==CMD_Constant.CMD_StartBatt1ResTest_ACK ; |
| | | } |
| | | case CMD_Constant.CMD_StopBatt1ResTest:{ |
| | | return opCmdAck ==CMD_Constant.CMD_StopBatt1ResTest_ACK ; |
| | | } |
| | | case CMD_Constant.CMD_StartBatt2ResTest:{ |
| | | return opCmdAck ==CMD_Constant.CMD_StartBatt2ResTest_ACK ; |
| | | } |
| | | case CMD_Constant.CMD_StopBatt2ResTest:{ |
| | | return opCmdAck ==CMD_Constant.CMD_StopBatt2ResTest_ACK ; |
| | | } |
| | | case CMD_Constant.CMD_StartDevK1Test:{ |
| | | return opCmdAck ==CMD_Constant.CMD_StartDevK1Test_ACK ; |
| | | } |
| | | case CMD_Constant.CMD_StopDevK1Test:{ |
| | | return opCmdAck ==CMD_Constant.CMD_StopDevK1Test_ACK ; |
| | | } |
| | | case CMD_Constant.CMD_StartDevD1Test:{ |
| | | return opCmdAck ==CMD_Constant.CMD_StartDevD1Test_ACK ; |
| | | } |
| | | case CMD_Constant.CMD_StopDevD1Test:{ |
| | | return opCmdAck ==CMD_Constant.CMD_StopDevD1Test_ACK ; |
| | | } |
| | | case CMD_Constant.CMD_RestartDev:{ |
| | | return opCmdAck ==CMD_Constant.CMD_RestartDev_ACK ; |
| | | } |
| | | case CMD_Constant.CMD_GetAlarmParam:{ |
| | | return opCmdAck ==CMD_Constant.CMD_GetAlarmParam_ACK ; |
| | | } |
| | | case CMD_Constant.CMD_SetAlarmParam:{ |
| | | return opCmdAck ==CMD_Constant.CMD_SetAlarmParam_ACK ; |
| | | } |
| | | case CMD_Constant.CMD_SetBreakerState:{ |
| | | return opCmdAck ==CMD_Constant.CMD_SetBreakerState_ACK ; |
| | | } |
| | | case CMD_Constant.CMD_SetHRSTopBatt:{ |
| | | return opCmdAck ==CMD_Constant.CMD_SetHRSTopBatt_ACK ; |
| | | } |
| | | case CMD_Constant.CMD_SetHRSTopState:{ |
| | | return opCmdAck ==CMD_Constant.CMD_SetHRSTopState_ACK ; |
| | | } |
| | | case CMD_Constant.CMD_SetHRSTopAlm:{ |
| | | return opCmdAck ==CMD_Constant.CMD_SetHRSTopAlm_ACK ; |
| | | } |
| | | default: |
| | | return false; |
| | | } |