From 3fd7702efad5c794c1c68a1a460e044d8324d5bf Mon Sep 17 00:00:00 2001 From: 18616268358 <1440265357@qq.com> Date: Wed, 10 May 2023 13:50:54 +0800 Subject: [PATCH] =?UTF-8?q?#20230510=20=E6=AC=A3=E5=BD=B1=E7=AE=A1?= =?UTF-8?q?=E7=90=86=E5=B9=B3=E5=8F=B0=E8=A3=85=E7=BD=AE=E4=BF=A1=E6=81=AF?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/TerminalController.java | 27 +++++++++--- .../xymanager_common/dto/TerminalInfoDto.java | 3 +- .../xymanager_common/model/TerminalModel.java | 7 +++ .../xymanager_common/vo/TerminalStatusVo.java | 24 ++++++++++ .../shxy/xymanager_dao/dao/TerminalsDao.java | 5 +++ .../main/resources/mappers/TerminalsDao.xml | 17 ++++++- .../impl/SystemConfigServiceImpl.java | 2 + .../impl/TerminalServiceImpl.java | 44 +++++++++++++++---- .../service/TerminalService.java | 8 ++-- 9 files changed, 116 insertions(+), 21 deletions(-) create mode 100644 xymanager_common/src/main/java/com/shxy/xymanager_common/vo/TerminalStatusVo.java diff --git a/xymanager_admin/src/main/java/com/shxy/xymanager_admin/controller/TerminalController.java b/xymanager_admin/src/main/java/com/shxy/xymanager_admin/controller/TerminalController.java index 5c891df..096dd49 100644 --- a/xymanager_admin/src/main/java/com/shxy/xymanager_admin/controller/TerminalController.java +++ b/xymanager_admin/src/main/java/com/shxy/xymanager_admin/controller/TerminalController.java @@ -83,8 +83,8 @@ public class TerminalController extends BaseController { @ApiResponses({@ApiResponse(code = 200, message = "请求成功"), @ApiResponse(code = 400, message = "请求参数没填好"), @ApiResponse(code = 404, message = "请求路径没有或页面跳转路径不对")}) @RequestMapping("/resetTerminal") @Log(title = "装置复位", type = "修改") - public ResponseReult resetTerminal(@RequestBody @Validated TerminalIdVo vo) { - ServiceBody serviceBody = terminalService.resetTerminal(vo); + public ResponseReult resetTerminal(@RequestParam("cmId") String cmId) { + ServiceBody serviceBody = terminalService.resetTerminal(cmId); if (serviceBody.getCode() == ServiceStatus.SUCCESS) { return ResponseReult.success(serviceBody.getData()); } else { @@ -92,12 +92,25 @@ public class TerminalController extends BaseController { } } - @ApiOperation(value = "获取装置信息", notes = "获取装置信息接口", httpMethod = "POST") + @ApiOperation(value = "获取装置运行状态", notes = "获取装置信息接口", httpMethod = "POST") @ApiResponses({@ApiResponse(code = 200, message = "请求成功"), @ApiResponse(code = 400, message = "请求参数没填好"), @ApiResponse(code = 404, message = "请求路径没有或页面跳转路径不对")}) - @RequestMapping("/getTerminalInfo") - @Log(title = "获取装置信息", type = "修改") - public ResponseReult getTerminalInfo(@RequestParam("termId") Integer termId) { - ServiceBody serviceBody = terminalService.getTerminalInfo(termId); + @RequestMapping("/getTerminalStatus") + @Log(title = "获取装置运行状态", type = "修改") + public ResponseReult getTerminalStatus(@RequestParam("termId")Integer termId) { + ServiceBody serviceBody = terminalService.getTerminalStatus(termId); + if (serviceBody.getCode() == ServiceStatus.SUCCESS) { + return ResponseReult.success(serviceBody.getData()); + } else { + return ResponseReult.error(serviceBody.getCode(), serviceBody.getMsg()); + } + } + + @ApiOperation(value = "获取最新装置运行状态", notes = "获取装置信息接口", httpMethod = "POST") + @ApiResponses({@ApiResponse(code = 200, message = "请求成功"), @ApiResponse(code = 400, message = "请求参数没填好"), @ApiResponse(code = 404, message = "请求路径没有或页面跳转路径不对")}) + @RequestMapping("/getLastedTerminalStatus") + @Log(title = "获取最新装置运行状态", type = "修改") + public ResponseReult getLastedTerminalStatus(@RequestBody @Validated TerminalStatusVo vo) { + ServiceBody serviceBody = terminalService.getLastedTerminalStatus(vo); if (serviceBody.getCode() == ServiceStatus.SUCCESS) { return ResponseReult.success(serviceBody.getData()); } else { diff --git a/xymanager_common/src/main/java/com/shxy/xymanager_common/dto/TerminalInfoDto.java b/xymanager_common/src/main/java/com/shxy/xymanager_common/dto/TerminalInfoDto.java index 90f7e02..8d4eb39 100644 --- a/xymanager_common/src/main/java/com/shxy/xymanager_common/dto/TerminalInfoDto.java +++ b/xymanager_common/src/main/java/com/shxy/xymanager_common/dto/TerminalInfoDto.java @@ -3,6 +3,7 @@ package com.shxy.xymanager_common.dto; import lombok.Data; import java.io.Serializable; +import java.math.BigInteger; @Data public class TerminalInfoDto implements Serializable { @@ -20,7 +21,7 @@ public class TerminalInfoDto implements Serializable { private Integer connectionState; - private Integer wsUpdateTime; + private BigInteger wsUpdateTime; private String cmId; diff --git a/xymanager_common/src/main/java/com/shxy/xymanager_common/model/TerminalModel.java b/xymanager_common/src/main/java/com/shxy/xymanager_common/model/TerminalModel.java index 18cf0a6..569c9b0 100644 --- a/xymanager_common/src/main/java/com/shxy/xymanager_common/model/TerminalModel.java +++ b/xymanager_common/src/main/java/com/shxy/xymanager_common/model/TerminalModel.java @@ -1,5 +1,6 @@ package com.shxy.xymanager_common.model; +import cn.hutool.core.date.DateTime; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -39,4 +40,10 @@ public class TerminalModel implements Serializable { @ApiModelProperty(value = "cmId", example = "123456") private String cmId; + @ApiModelProperty(value = "工作状态更新时间", example = "123456") + private Date wsUpdateTime; + + @ApiModelProperty(value = "请求时间", example = "123456") + private DateTime queryTime; + } diff --git a/xymanager_common/src/main/java/com/shxy/xymanager_common/vo/TerminalStatusVo.java b/xymanager_common/src/main/java/com/shxy/xymanager_common/vo/TerminalStatusVo.java new file mode 100644 index 0000000..81532d7 --- /dev/null +++ b/xymanager_common/src/main/java/com/shxy/xymanager_common/vo/TerminalStatusVo.java @@ -0,0 +1,24 @@ +package com.shxy.xymanager_common.vo; + +import cn.hutool.core.date.DateTime; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import java.util.Date; +import java.util.List; + +@Data +@ApiModel(value = "最新装置状态", description = "最新装置状态") +public class TerminalStatusVo { + @NotNull(message = "不能传入空值") + @ApiModelProperty(value = "装置ID", required = true, example = "A0001") + private Integer termId; + + + @ApiModelProperty(value = "手动拍照时间", required = true, example = "A0001") + private DateTime queryTime; + +} diff --git a/xymanager_dao/src/main/java/com/shxy/xymanager_dao/dao/TerminalsDao.java b/xymanager_dao/src/main/java/com/shxy/xymanager_dao/dao/TerminalsDao.java index 11725f1..bdb40d6 100644 --- a/xymanager_dao/src/main/java/com/shxy/xymanager_dao/dao/TerminalsDao.java +++ b/xymanager_dao/src/main/java/com/shxy/xymanager_dao/dao/TerminalsDao.java @@ -4,6 +4,7 @@ import com.shxy.xymanager_common.dto.TerminalInfoDto; import com.shxy.xymanager_common.entity.Terminals; import org.apache.ibatis.annotations.Param; +import java.math.BigInteger; import java.util.Date; import java.util.List; @@ -25,6 +26,10 @@ public interface TerminalsDao { int updateByPrimaryKey(Terminals record); + String getCmdIdByTermId(Integer termId); + TerminalInfoDto getTerminalInfo(@Param("termId")Integer termId); + BigInteger getUpdateTime(@Param("termId")Integer termId); + } \ No newline at end of file diff --git a/xymanager_dao/src/main/resources/mappers/TerminalsDao.xml b/xymanager_dao/src/main/resources/mappers/TerminalsDao.xml index e26ec54..fee9f1a 100644 --- a/xymanager_dao/src/main/resources/mappers/TerminalsDao.xml +++ b/xymanager_dao/src/main/resources/mappers/TerminalsDao.xml @@ -339,6 +339,21 @@ ts.term_id termId, ts.battery_voltage batteryVoltage, ts.battery_capacity batteryCapacity, ts.floating_charge floatingCharge, ts.total_working_time totalWorkingTime, ts.working_time workingTime, ts.connection_state connectionState, ts.ws_update_time wsUpdateTime,t.cmdid cmId from terminal_status ts left join terminals t on ts.term_id = t.id - where ts.termId = #{termId,jdbcType=INTEGER} + where ts.term_id = #{termId,jdbcType=INTEGER} + + + + + + \ No newline at end of file diff --git a/xymanager_service/src/main/java/com/shxy/xymanager_service/impl/SystemConfigServiceImpl.java b/xymanager_service/src/main/java/com/shxy/xymanager_service/impl/SystemConfigServiceImpl.java index 7fb271f..b051677 100644 --- a/xymanager_service/src/main/java/com/shxy/xymanager_service/impl/SystemConfigServiceImpl.java +++ b/xymanager_service/src/main/java/com/shxy/xymanager_service/impl/SystemConfigServiceImpl.java @@ -30,6 +30,7 @@ public class SystemConfigServiceImpl implements SystemConfigService { model.setHeartBeatTime(beatHeartTime); String globalTime = systemConfigDao.getGlobalTime(Constants.GLOBAL_TIME); model.setGlobalTime(Integer.parseInt(globalTime)); + String cmd = "/usr/local/bin/xympadmn --server=127.0.0.1 --port=6891 --act=termid --cmdid=DSH10H00000000001 --flag=0"; return Asserts.success(model); } @@ -39,6 +40,7 @@ public class SystemConfigServiceImpl implements SystemConfigService { param.setTermId(vo.getTermId()); param.setHeartbeatTime(vo.getHeartBeatTime()); systemConfigDao.updateSystemConfig(param); + String cmd = "/usr/local/bin/xympadmn --server=127.0.0.1 --port=6891 --act=termid --cmdid=DSH10H00000000001 --newcmdid=DSH10H00000000002"; return null; } } diff --git a/xymanager_service/src/main/java/com/shxy/xymanager_service/impl/TerminalServiceImpl.java b/xymanager_service/src/main/java/com/shxy/xymanager_service/impl/TerminalServiceImpl.java index 6feb757..b7e6649 100644 --- a/xymanager_service/src/main/java/com/shxy/xymanager_service/impl/TerminalServiceImpl.java +++ b/xymanager_service/src/main/java/com/shxy/xymanager_service/impl/TerminalServiceImpl.java @@ -3,6 +3,7 @@ package com.shxy.xymanager_service.impl; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.copier.CopyOptions; import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.date.DateTime; import com.github.pagehelper.PageInfo; import com.shxy.xymanager_common.bean.ServiceBody; import com.shxy.xymanager_common.dto.TerminalInfoDto; @@ -14,6 +15,8 @@ import com.shxy.xymanager_common.exception.Asserts; import com.shxy.xymanager_common.model.TerminalListModel; import com.shxy.xymanager_common.model.TerminalModel; import com.shxy.xymanager_common.page.PageUtils; +import com.shxy.xymanager_common.util.MyDateUtils; +import com.shxy.xymanager_common.util.ProcessExecUtils; import com.shxy.xymanager_common.vo.*; import com.shxy.xymanager_dao.dao.TerminalChannelMapperDao; import com.shxy.xymanager_dao.dao.TerminalChannelsDao; @@ -27,6 +30,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import javax.validation.constraints.NotEmpty; +import java.math.BigInteger; import java.util.ArrayList; import java.util.Date; import java.util.List; @@ -166,31 +170,53 @@ public class TerminalServiceImpl implements TerminalService { /** * 装置复位 * - * @param vo + * @param cmId * @return */ @Override - public ServiceBody resetTerminal(TerminalIdVo vo) { + public ServiceBody resetTerminal(String cmId) { // Cma cma = new Cma("47.96.238.157", 6891); - + String cmd = "/usr/local/bin/xympadmn --server=47.96.238.157 --port=6891 --act=reset --cmdid=" +cmId +"\t"+"--mode=0"; + Integer retCode = ProcessExecUtils.exec(cmd); // boolean reset = cma.reset(vo.getTermid().toString(), (short) 0x01); -// if (reset) { - return Asserts.success("删除成功"); -// } else { -// return Asserts.error("装置复位成功"); -// } + if (retCode ==0) { + return Asserts.success("装置复位成功"); + } else { + return Asserts.error("装置复位失败"); + } } @Override - public ServiceBody getTerminalInfo(Integer termId) { + public ServiceBody getTerminalStatus(Integer termId) { + String cmdId = terminalsDao.getCmdIdByTermId(termId); + String cmd = "/usr/local/bin/xympadmn --server=127.0.0.1 --act=runningstatus --cmdid="+cmdId; + ProcessExecUtils.exec(cmd); TerminalModel model = new TerminalModel(); TerminalInfoDto dto = terminalsDao.getTerminalInfo(termId); if(null!=dto) { BeanUtils.copyProperties(dto, model); + DateTime now = DateTime.now(); + model.setQueryTime(now); + } + return Asserts.success(model); } + @Override + public ServiceBody getLastedTerminalStatus(TerminalStatusVo vo) { + BigInteger wsUpdateTime = terminalsDao.getUpdateTime(vo.getTermId()); + BigInteger queryTime = MyDateUtils.TimeMillSecond2Second(vo.getQueryTime()); + Boolean hasNew =wsUpdateTime.compareTo(queryTime)<0?false:true; + TerminalModel model = new TerminalModel(); + if(hasNew) { + TerminalInfoDto dto = terminalsDao.getTerminalInfo(vo.getTermId()); + BeanUtils.copyProperties(dto,model); + return Asserts.success(model); + } + return Asserts.success(null); + } + } diff --git a/xymanager_service/src/main/java/com/shxy/xymanager_service/service/TerminalService.java b/xymanager_service/src/main/java/com/shxy/xymanager_service/service/TerminalService.java index 7638dd8..c7870b7 100644 --- a/xymanager_service/src/main/java/com/shxy/xymanager_service/service/TerminalService.java +++ b/xymanager_service/src/main/java/com/shxy/xymanager_service/service/TerminalService.java @@ -44,12 +44,14 @@ public interface TerminalService { /** * 装置复位 * - * @param vo + * @param cmId * @return */ - ServiceBody resetTerminal(TerminalIdVo vo); + ServiceBody resetTerminal(String cmId); + + ServiceBody getTerminalStatus(Integer termId); - ServiceBody getTerminalInfo(Integer termId); + ServiceBody getLastedTerminalStatus(TerminalStatusVo vo); }