diff --git a/xymanager_admin/src/main/java/com/shxy/xymanager_admin/controller/TerminalVideoController.java b/xymanager_admin/src/main/java/com/shxy/xymanager_admin/controller/TerminalVideoController.java index 57f4612..acd203b 100644 --- a/xymanager_admin/src/main/java/com/shxy/xymanager_admin/controller/TerminalVideoController.java +++ b/xymanager_admin/src/main/java/com/shxy/xymanager_admin/controller/TerminalVideoController.java @@ -7,7 +7,7 @@ import com.shxy.xymanager_common.bean.ServiceBody; import com.shxy.xymanager_common.bean.ServiceStatus; import com.shxy.xymanager_common.model.GetModel; import com.shxy.xymanager_common.model.TerminalVideoParamsModel; -import com.shxy.xymanager_common.vo.PhotoParamsVo; +import com.shxy.xymanager_common.vo.VideoGetVo; import com.shxy.xymanager_common.vo.VideoParamsVo; import com.shxy.xymanager_service.service.TerminalVideoService; import io.swagger.annotations.Api; @@ -48,7 +48,7 @@ public class TerminalVideoController extends BaseController { @ApiResponses({@ApiResponse(code = 200, message = "请求成功"), @ApiResponse(code = 400, message = "请求参数没填好"), @ApiResponse(code = 404, message = "请求路径没有或页面跳转路径不对")}) @RequestMapping("/videoParamGet") @Log(title = "视频参数查询触发", type = "查询") - public ResponseReult videoParamGet(@RequestBody @Validated VideoParamsVo vo) { + public ResponseReult videoParamGet(@RequestBody @Validated VideoGetVo vo) { ServiceBody serviceBody = terminalVideoService.videoParamGet(vo); if (serviceBody.getCode() == ServiceStatus.SUCCESS) { return ResponseReult.success(serviceBody.getData()); diff --git a/xymanager_common/src/main/java/com/shxy/xymanager_common/entity/Terminals.java b/xymanager_common/src/main/java/com/shxy/xymanager_common/entity/Terminals.java index 8566b4b..9488c57 100644 --- a/xymanager_common/src/main/java/com/shxy/xymanager_common/entity/Terminals.java +++ b/xymanager_common/src/main/java/com/shxy/xymanager_common/entity/Terminals.java @@ -41,6 +41,10 @@ public class Terminals implements Serializable { private Date updateTime; + private Long lastheartbeat; + + private Integer onlinestatus; + /*展示名字 等价与displayname 用于方便*/ private String name; diff --git a/xymanager_common/src/main/java/com/shxy/xymanager_common/model/DyLineAndTermModel.java b/xymanager_common/src/main/java/com/shxy/xymanager_common/model/DyLineAndTermModel.java index a591fab..ef102da 100644 --- a/xymanager_common/src/main/java/com/shxy/xymanager_common/model/DyLineAndTermModel.java +++ b/xymanager_common/src/main/java/com/shxy/xymanager_common/model/DyLineAndTermModel.java @@ -64,5 +64,8 @@ public class DyLineAndTermModel implements Serializable { @ApiModelProperty(value = "显示名", example = "名称名称") private String name; + @ApiModelProperty(value = "在线状态", example = "0--掉线1--在线") + private Integer onlinestatus; + } } diff --git a/xymanager_common/src/main/java/com/shxy/xymanager_common/vo/RequestIdListVo.java b/xymanager_common/src/main/java/com/shxy/xymanager_common/vo/RequestIdListVo.java index f3d3fc2..187af5b 100644 --- a/xymanager_common/src/main/java/com/shxy/xymanager_common/vo/RequestIdListVo.java +++ b/xymanager_common/src/main/java/com/shxy/xymanager_common/vo/RequestIdListVo.java @@ -28,6 +28,10 @@ public class RequestIdListVo { @ApiModelProperty(value = "请求编号", example = "AAAA") private Integer requestid; + @ApiModelProperty(value = "状态", example = "AAAA") + private Integer status; + + } } diff --git a/xymanager_common/src/main/java/com/shxy/xymanager_common/vo/VideoGetVo.java b/xymanager_common/src/main/java/com/shxy/xymanager_common/vo/VideoGetVo.java new file mode 100644 index 0000000..1df730e --- /dev/null +++ b/xymanager_common/src/main/java/com/shxy/xymanager_common/vo/VideoGetVo.java @@ -0,0 +1,23 @@ +package com.shxy.xymanager_common.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; + +@Data +@ApiModel(value = "声光报警设置对象", description = "声光报警设置对象描述") +public class VideoGetVo { + + @NotBlank(message = "监测装置ID") + @ApiModelProperty(value = "监测装置ID", example = "123455") + private String cmdId; + + @NotNull(message = "通道编号") + @ApiModelProperty(value = "通道编号", example = "01") + private short channelId; + + +} diff --git a/xymanager_dao/src/main/resources/mappers/DyLevelDao.xml b/xymanager_dao/src/main/resources/mappers/DyLevelDao.xml index cfe294d..0dc2e74 100644 --- a/xymanager_dao/src/main/resources/mappers/DyLevelDao.xml +++ b/xymanager_dao/src/main/resources/mappers/DyLevelDao.xml @@ -44,6 +44,7 @@ + @@ -98,13 +99,15 @@ c.id AS term_id, c.tower_id AS tower_id, c.cmdid AS cmdid, + ts.last_heartbeat as last_heartbeat, c.display_name AS display_name FROM - ((((dy_level a + (((((dy_level a left JOIN `lines` b ON a.id = b.dy_level_id and a.status = #{status} and b.status = #{status}) left JOIN terminals c ON b.id = c.line_id and c.status = #{status}) left JOIN terminal_channel_mapper d ON d.term_id = c.id) left JOIN terminal_channels e ON d.channel_id = e.id and e.status = #{status}) + left JOIN terminal_status ts ON c.id = ts.term_id ) where e.id = #{channelid} diff --git a/xymanager_service/src/main/java/com/shxy/xymanager_service/impl/TerminalScheduleRuleServiceImpl.java b/xymanager_service/src/main/java/com/shxy/xymanager_service/impl/TerminalScheduleRuleServiceImpl.java index 5b8b782..06fc00c 100644 --- a/xymanager_service/src/main/java/com/shxy/xymanager_service/impl/TerminalScheduleRuleServiceImpl.java +++ b/xymanager_service/src/main/java/com/shxy/xymanager_service/impl/TerminalScheduleRuleServiceImpl.java @@ -273,9 +273,8 @@ public class TerminalScheduleRuleServiceImpl implements TerminalScheduleRuleServ int indexOri = index; int indexAdd = indexOri + 1; int indexAddT = indexAdd + 1; - String string = "--hour" + indexOri + "=" + startHour + " --min" + indexOri + "=" + startMin + " --preset" + indexOri + "=255 --hour" + (indexAdd) + "=" + - endTimeHour + " --min" + (indexAdd) + "=" + endTimeMin + " --preset" + (indexAdd) + "=255 --hour" + indexAddT + "=" + span1 + " --min" + indexAddT + - "=" + span2 + " --preset" + indexAddT + "=255"; + String string = " --hour" + indexAddT + "=" + startHour + "\t" + "--min" + indexAddT + "=" + startMin + "\t" + "--preset" + indexAddT + "=255 --hour" + (indexAdd) + "=" + endTimeHour + "\t" + "--min" + (indexAdd) + "=" + endTimeMin + "\t" + + "--preset" + (indexAdd) + "=255 --hour" + indexOri + "=" + span1 + "\t" + "--min" + indexOri + "=" + span2 + "\t" + "--preset" + indexOri + "=255"; timestr.append(string); index = indexAddT+1; } @@ -386,7 +385,10 @@ public class TerminalScheduleRuleServiceImpl implements TerminalScheduleRuleServ terminalSchedules.add(record); } Date date = new Date(); - terminalScheduleDao.insertOrUpdate(terminalSchedules, date, date);//将实际的拍照时间表规则从临时表更新到正式表中 + if(CollectionUtil.isNotEmpty(terminalSchedules)) { + terminalScheduleDao.insertOrUpdate(terminalSchedules, date, date); + }//将实际的拍照时间表规则从临时表更新到正式表中 + ArrayList distinct = CollectionUtil.distinct(scheduleidlist); List scheduleDetails = scheduleDetailsDao.selectAllBySceduleidList(distinct); @@ -587,6 +589,7 @@ public class TerminalScheduleRuleServiceImpl implements TerminalScheduleRuleServ public ServiceBody getCmaSchelduleDetials(RequestIdVo vo) { TerminalScheduleRuleTimeListModel model = new TerminalScheduleRuleTimeListModel(); RequestResults results = requestResultsDao.selectByRequestId(vo.getRequestid()); + if(null!=results){ String resultsData = results.getData(); if (StringUtils.isNotBlank(resultsData)) { JSONObject resultObj = JSONObject.parseObject(resultsData); @@ -608,6 +611,7 @@ public class TerminalScheduleRuleServiceImpl implements TerminalScheduleRuleServ model.setIsNew(true); } } + } return Asserts.success(model); } else { return Asserts.error("查询失败"); 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 2f5ef34..034744f 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 @@ -30,6 +30,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import cn.hutool.core.date.DateUnit; import java.math.BigInteger; import java.util.ArrayList; @@ -283,6 +284,25 @@ public class TerminalServiceImpl implements TerminalService { Integer id = vo.getId(); DyLineAndTermModel model = new DyLineAndTermModel(); List list = dyLevelDao.selectTreeListByChannelId(id, CommonStatus.EFFECTIVE.value()); + list.stream().forEach(var->{ + var.getList().forEach(item->{ + item.getList().forEach(terminalsWithHeart ->{ + Long lastheartbeat = terminalsWithHeart.getLastheartbeat(); + if (!BeanUtil.isEmpty(lastheartbeat)) { + BigInteger time = MyDateUtils.TimeSecond2MillSecond(lastheartbeat); + DateTime date = MyDateUtils.date(time.longValue()); + long between = MyDateUtils.between(MyDateUtils.getNowDate(), date, DateUnit.MINUTE); + if (between > 30) { + terminalsWithHeart.setOnlinestatus(CommonStatus.DELETE.value()); + } else { + terminalsWithHeart.setOnlinestatus(CommonStatus.EFFECTIVE.value()); + } + } + + + }); + }); + }); boolean empty = CollectionUtil.isEmpty(list); if (empty) { model.setList(new ArrayList<>()); diff --git a/xymanager_service/src/main/java/com/shxy/xymanager_service/impl/TerminalVideoServiceImpl.java b/xymanager_service/src/main/java/com/shxy/xymanager_service/impl/TerminalVideoServiceImpl.java index 398d549..45641fd 100644 --- a/xymanager_service/src/main/java/com/shxy/xymanager_service/impl/TerminalVideoServiceImpl.java +++ b/xymanager_service/src/main/java/com/shxy/xymanager_service/impl/TerminalVideoServiceImpl.java @@ -59,10 +59,14 @@ public class TerminalVideoServiceImpl implements TerminalVideoService { } @Override - public ServiceBody videoParamGet(VideoParamsVo vo) { - return null; + public ServiceBody videoParamGet(VideoGetVo vo) { + GetModel model = new GetModel(); + String cmd = Constants.CMD+"videoparams --clientid=10 --flag=0 --cmdid="+vo.getCmdId()+ "\t"+"--reqid="+Constants.REQUEST_ID+"\t"+"--channel="+vo.getChannelId(); + ProcessExecUtils.exec(cmd); + model.setRequestId(Integer.parseInt( Constants.REQUEST_ID.toString())); + Constants.REQUEST_ID.addAndGet(1); + return Asserts.success(model); } - @Override public ServiceBody selectVideoParam(Integer requestId) { return null; diff --git a/xymanager_service/src/main/java/com/shxy/xymanager_service/service/TerminalVideoService.java b/xymanager_service/src/main/java/com/shxy/xymanager_service/service/TerminalVideoService.java index 31ef9da..978d928 100644 --- a/xymanager_service/src/main/java/com/shxy/xymanager_service/service/TerminalVideoService.java +++ b/xymanager_service/src/main/java/com/shxy/xymanager_service/service/TerminalVideoService.java @@ -19,7 +19,7 @@ public interface TerminalVideoService { */ ServiceBody updateVideoParam(VideoParamsVo vo); - ServiceBody videoParamGet(VideoParamsVo vo); + ServiceBody videoParamGet(VideoGetVo vo); ServiceBody selectVideoParam(Integer requestId);