| | |
| | | package com.whyc.util; |
| | | |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | | import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; |
| | | import com.baomidou.mybatisplus.core.toolkit.BeanUtils; |
| | | import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
| | | import com.google.gson.JsonObject; |
| | |
| | | } |
| | | } |
| | | |
| | | /**读取*/ |
| | | public static Response readByUpdateOpCmd(CustomMapper mapper, QueryWrapper<?> queryWrapper, Integer opCmd, Integer ackTimeLimitSecond) { |
| | | try { |
| | | //更新cmd |
| | | UpdateWrapper<Object> update = Wrappers.update(); |
| | | update.set("op_cmd",opCmd); |
| | | mapper.update(null,update); |
| | | //读取cmd返回 |
| | | int count = ackTimeLimitSecond * 1000 / 250; |
| | | for (int i = 0; i < count; i++) { |
| | | queryWrapper.select("op_cmd").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(null).get(0); |
| | | return new Response().setII(1, true, data,"读取完成"); |
| | | } |
| | | Thread.sleep(250); |
| | | } |
| | | return new Response().set(1, false, "网络连接失败,读取失败"); |
| | | }catch (NoSuchFieldException | IllegalAccessException | InterruptedException e){ |
| | | return new Response().set(0,e.toString()); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 持续更新cmd和cmdAck对应关系 |
| | | * @param opCmd |