diff --git a/xymanager_common/src/main/java/com/shxy/xymanager_common/entity/TerminalSchedulesTemp.java b/xymanager_common/src/main/java/com/shxy/xymanager_common/entity/TerminalSchedulesTemp.java index 5fec758..9fc2c63 100644 --- a/xymanager_common/src/main/java/com/shxy/xymanager_common/entity/TerminalSchedulesTemp.java +++ b/xymanager_common/src/main/java/com/shxy/xymanager_common/entity/TerminalSchedulesTemp.java @@ -19,6 +19,8 @@ public class TerminalSchedulesTemp implements Serializable { private Integer status; + private Integer offset; + private Date createTime; private Date updateTime; diff --git a/xymanager_dao/src/main/resources/mappers/TerminalScheduleTempDao.xml b/xymanager_dao/src/main/resources/mappers/TerminalScheduleTempDao.xml index eca2882..4e23fee 100644 --- a/xymanager_dao/src/main/resources/mappers/TerminalScheduleTempDao.xml +++ b/xymanager_dao/src/main/resources/mappers/TerminalScheduleTempDao.xml @@ -94,6 +94,9 @@ status, + + offset, + create_time, @@ -117,6 +120,9 @@ #{status}, + + #{offset}, + #{createTime,jdbcType=TIMESTAMP}, diff --git a/xymanager_service/src/main/java/com/shxy/xymanager_service/impl/LineServiceImpl.java b/xymanager_service/src/main/java/com/shxy/xymanager_service/impl/LineServiceImpl.java index f0285bf..536d9c4 100644 --- a/xymanager_service/src/main/java/com/shxy/xymanager_service/impl/LineServiceImpl.java +++ b/xymanager_service/src/main/java/com/shxy/xymanager_service/impl/LineServiceImpl.java @@ -150,7 +150,7 @@ public class LineServiceImpl implements LineService { LineAndGtAndChannelListModel model = new LineAndGtAndChannelListModel(); Integer id = vo.getId(); Integer type = vo.getType(); - if (id.intValue() == 0) { + if (id != null && id.intValue() == 0) { id = null; } //查询所有 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 280cca5..6510684 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 @@ -6,6 +6,7 @@ import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateField; import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.RandomUtil; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.github.pagehelper.PageInfo; @@ -38,6 +39,7 @@ import java.sql.Time; import java.util.ArrayList; import java.util.Date; import java.util.List; +import java.util.Random; /** * 时间任务实现层 @@ -249,43 +251,19 @@ public class TerminalScheduleRuleServiceImpl implements TerminalScheduleRuleServ if (CollectionUtil.isEmpty(dtoList)) { return Asserts.error("没有该拍照时间规则"); } - StringBuffer timestr = new StringBuffer(); - int index = 1; - for (int j = 0; j < dtoList.size(); j++) { - Integer span = dtoList.get(j).getSpan(); - Date startTime = dtoList.get(j).getStartTime(); - Short startHour = Short.parseShort(MyDateUtils.parseHourAndMinute(startTime).split("/")[0]); - Short startMin = Short.parseShort(MyDateUtils.parseHourAndMinute(startTime).split("/")[1]); - Date endTime = dtoList.get(j).getEndTime(); - Short endTimeHour = Short.parseShort(MyDateUtils.parseHourAndMinute(endTime).split("/")[0]); - Short endTimeMin = Short.parseShort(MyDateUtils.parseHourAndMinute(endTime).split("/")[1]); - Integer span1 = -1; - Integer span2 = -1; - if (span / 60 > 0) { - span1 = (span / 60); - span2 = (span % 60); - } else if (span < 60) { - span1 = 0; - span2 = span; - } - int indexOri = index; - int indexAdd = indexOri + 1; - int indexAddT = indexAdd + 1; - 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; - } ArrayList requestIdList = new ArrayList<>(); for (int x = 0; x < terminalsList.size(); x++) { ChannelAndTermDto channelAndTermDto = terminalsList.get(x); int requestId = Constants.REQUEST_ID.addAndGet(1); - String cmd = Constants.CMD + "schedule --group=" + dtoList.size()*3 + " --flag=1 --clientid=10 --cmdid=" + int offset = RandomUtil.randomInt(10); + String timestr = relateTime(dtoList, offset); + + String cmd = Constants.CMD + "schedule --group=" + dtoList.size() * 3 + " --flag=1 --clientid=10 --cmdid=" + channelAndTermDto.getCmdid() + " --reqid=" + requestId + " --channel=" + channelAndTermDto.getChannelid() + " " + - timestr.toString(); + timestr; ProcessExecUtils.exec(cmd); GetScheduleRequestIdListModel.RequestBean requestBean = new GetScheduleRequestIdListModel.RequestBean(); @@ -301,6 +279,7 @@ public class TerminalScheduleRuleServiceImpl implements TerminalScheduleRuleServ temp.setScheduleId(scheduleid); temp.setRequestId(requestId); temp.setStatus(CommonStatus.DELETE.value()); + temp.setOffset(offset); temp.setCreateTime(date); temp.setUpdateTime(date); terminalSchedulesTempDao.insertSelective(temp); @@ -309,6 +288,41 @@ public class TerminalScheduleRuleServiceImpl implements TerminalScheduleRuleServ return Asserts.success(model); } + private String relateTime(List dtoList, int offset) { + StringBuffer timestr = new StringBuffer(); + int index = 1; + for (int j = 0; j < dtoList.size(); j++) { + Integer span = dtoList.get(j).getSpan(); + Date startTime = dtoList.get(j).getStartTime(); + DateTime startstr = MyDateUtils.offsetMinute(startTime, offset); + + Short startHour = Short.parseShort(MyDateUtils.parseHourAndMinute(startstr).split("/")[0]); + Short startMin = Short.parseShort(MyDateUtils.parseHourAndMinute(startstr).split("/")[1]); + + Date endTime = dtoList.get(j).getEndTime(); + DateTime endstr = MyDateUtils.offsetMinute(endTime, offset); + Short endTimeHour = Short.parseShort(MyDateUtils.parseHourAndMinute(endstr).split("/")[0]); + Short endTimeMin = Short.parseShort(MyDateUtils.parseHourAndMinute(endstr).split("/")[1]); + Integer span1 = -1; + Integer span2 = -1; + if (span / 60 > 0) { + span1 = (span / 60); + span2 = (span % 60); + } else if (span < 60) { + span1 = 0; + span2 = span; + } + int indexOri = index; + int indexAdd = indexOri + 1; + int indexAddT = indexAdd + 1; + 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; + } + return timestr.toString(); + } + /** * 查询拍照时间表任务是否下发成功 @@ -402,7 +416,7 @@ public class TerminalScheduleRuleServiceImpl implements TerminalScheduleRuleServ terminalSchedules.add(record); } Date date = new Date(); - if(CollectionUtil.isNotEmpty(terminalSchedules)) { + if (CollectionUtil.isNotEmpty(terminalSchedules)) { terminalScheduleDao.insertOrUpdate(terminalSchedules, date, date);//将实际的拍照时间表规则从临时表更新到正式表中 } ArrayList distinct = CollectionUtil.distinct(scheduleidlist); @@ -423,7 +437,7 @@ public class TerminalScheduleRuleServiceImpl implements TerminalScheduleRuleServ } } } - if(CollectionUtil.isNotEmpty(terminalSchedules)) { + if (CollectionUtil.isNotEmpty(terminalSchedules)) { terminalScheduleDetailsDao.deleteByTermidAndChannelIdList(terminalSchedules); } terminalScheduleDetailsDao.insertList(terminalScheduleDetails, date, date); @@ -435,7 +449,6 @@ public class TerminalScheduleRuleServiceImpl implements TerminalScheduleRuleServ } } - /** * 获取通道的规则时间表 * @@ -491,7 +504,7 @@ public class TerminalScheduleRuleServiceImpl implements TerminalScheduleRuleServ public ServiceBody getCmaSchelduleDetials(RequestIdVo vo) { TerminalScheduleRuleTimeListModel model = new TerminalScheduleRuleTimeListModel(); RequestResults results = requestResultsDao.selectByRequestId(vo.getRequestid()); - if(null!=results) { + if (null != results) { String resultsData = results.getData(); if (StringUtils.isNotBlank(resultsData)) { JSONObject resultObj = JSONObject.parseObject(resultsData); @@ -523,7 +536,7 @@ public class TerminalScheduleRuleServiceImpl implements TerminalScheduleRuleServ } } } - return Asserts.success(model); + return Asserts.success(model); } }