diff --git a/xymanager_admin/src/main/java/com/shxy/xymanager_admin/controller/TerminalScheduleRuleController.java b/xymanager_admin/src/main/java/com/shxy/xymanager_admin/controller/TerminalScheduleRuleController.java index 09db745..8864a9c 100644 --- a/xymanager_admin/src/main/java/com/shxy/xymanager_admin/controller/TerminalScheduleRuleController.java +++ b/xymanager_admin/src/main/java/com/shxy/xymanager_admin/controller/TerminalScheduleRuleController.java @@ -122,4 +122,30 @@ public class TerminalScheduleRuleController extends BaseController { } } + @ApiOperation(value = "通过Cma获取装置的实际拍照时间调用", notes = "通过Cma获取装置的实际拍照时间调用", httpMethod = "POST") + @ApiResponses({@ApiResponse(code = 200, message = "请求成功"), @ApiResponse(code = 400, message = "请求参数没填好"), @ApiResponse(code = 404, message = "请求路径没有或页面跳转路径不对")}) + @RequestMapping("/cmaSchelduleDetials") + @Log(title = "通过Cma获取装置的实际拍照时间调用", type = "查询") + public ResponseReult cmaSchelduleDetials(@RequestBody @Validated TerminalAndChannelIdVo vo) { + ServiceBody serviceBody = terminalScheduleRuleService.cmaSchelduleDetials(vo); + if (serviceBody.getCode() == ServiceStatus.SUCCESS) { + return ResponseReult.success(serviceBody.getData()); + } else { + return ResponseReult.error(serviceBody.getCode(), serviceBody.getMsg()); + } + } + + @ApiOperation(value = "获取Cma调用实际拍照时间的结果", notes = "获取Cma调用实际拍照时间的结果", httpMethod = "POST") + @ApiResponses({@ApiResponse(code = 200, message = "请求成功"), @ApiResponse(code = 400, message = "请求参数没填好"), @ApiResponse(code = 404, message = "请求路径没有或页面跳转路径不对")}) + @RequestMapping("/getCmaSchelduleDetials") + @Log(title = "获取Cma调用实际拍照时间的结果", type = "查询") + public ResponseReult getCmaSchelduleDetials(@RequestBody @Validated RequestIdVo vo) { + ServiceBody serviceBody = terminalScheduleRuleService.getCmaSchelduleDetials(vo); + if (serviceBody.getCode() == ServiceStatus.SUCCESS) { + return ResponseReult.success(serviceBody.getData()); + } else { + return ResponseReult.error(serviceBody.getCode(), serviceBody.getMsg()); + } + } + } diff --git a/xymanager_common/src/main/java/com/shxy/xymanager_common/vo/RequestIdVo.java b/xymanager_common/src/main/java/com/shxy/xymanager_common/vo/RequestIdVo.java new file mode 100644 index 0000000..4461a0d --- /dev/null +++ b/xymanager_common/src/main/java/com/shxy/xymanager_common/vo/RequestIdVo.java @@ -0,0 +1,17 @@ +package com.shxy.xymanager_common.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +@Data +@ApiModel(value = "查询Cma结果requestid的Vo", description = "查询Cma结果requestid的Vo") +public class RequestIdVo { + + @NotNull(message = "查询编号不能缺少") + @ApiModelProperty(value = "查询编号", example = "123455") + private Integer requestid; + +} diff --git a/xymanager_dao/src/main/java/com/shxy/xymanager_dao/dao/TerminalScheduleDetailsDao.java b/xymanager_dao/src/main/java/com/shxy/xymanager_dao/dao/TerminalScheduleDetailsDao.java index 39ee26f..85586a4 100644 --- a/xymanager_dao/src/main/java/com/shxy/xymanager_dao/dao/TerminalScheduleDetailsDao.java +++ b/xymanager_dao/src/main/java/com/shxy/xymanager_dao/dao/TerminalScheduleDetailsDao.java @@ -1,12 +1,17 @@ package com.shxy.xymanager_dao.dao; import com.shxy.xymanager_common.entity.TerminalScheduleDetails; +import org.apache.ibatis.annotations.Param; + +import java.util.List; public interface TerminalScheduleDetailsDao { int deleteByPrimaryKey(Integer id); int insert(TerminalScheduleDetails record); + int insertList(@Param("list") List record); + int insertSelective(TerminalScheduleDetails record); TerminalScheduleDetails selectByPrimaryKey(Integer id); diff --git a/xymanager_dao/src/main/resources/mappers/TerminalScheduleDetailsDao.xml b/xymanager_dao/src/main/resources/mappers/TerminalScheduleDetailsDao.xml index 58153eb..6446d13 100644 --- a/xymanager_dao/src/main/resources/mappers/TerminalScheduleDetailsDao.xml +++ b/xymanager_dao/src/main/resources/mappers/TerminalScheduleDetailsDao.xml @@ -1,29 +1,29 @@ - - - - - - - - - - + + + + + + + + + + id, schedule_id, start_time, end_time, span, create_time, update_time - - + + delete from terminal_schedule_details where id = #{id,jdbcType=INTEGER} - + insert into terminal_schedule_details (id, schedule_id, start_time, end_time, span, create_time, update_time) @@ -31,80 +31,92 @@ #{endTime,jdbcType=TIME}, #{span,jdbcType=INTEGER}, #{createTime,jdbcType=TIMESTAMP}, #{updateTime,jdbcType=TIMESTAMP}) - - insert into terminal_schedule_details - - - id, - - - schedule_id, - - - start_time, - - - end_time, - - - span, - - - create_time, - - - update_time, - - - - - #{id,jdbcType=INTEGER}, - - - #{scheduleId,jdbcType=INTEGER}, - - - #{startTime,jdbcType=TIME}, - - - #{endTime,jdbcType=TIME}, - - - #{span,jdbcType=INTEGER}, - - - #{createTime,jdbcType=TIMESTAMP}, - - - #{updateTime,jdbcType=TIMESTAMP}, - - - - - update terminal_schedule_details - - - schedule_id = #{scheduleId,jdbcType=INTEGER}, - - - start_time = #{startTime,jdbcType=TIME}, - - - end_time = #{endTime,jdbcType=TIME}, - - - span = #{span,jdbcType=INTEGER}, - - - create_time = #{createTime,jdbcType=TIMESTAMP}, - - - update_time = #{updateTime,jdbcType=TIMESTAMP}, - - - where id = #{id,jdbcType=INTEGER} - - + + + + insert into terminal_schedule_details + (term_id, channel_id,start_time, end_time, span, create_time, update_time) + values (#{id,jdbcType=INTEGER}, #{scheduleId,jdbcType=INTEGER}, #{startTime,jdbcType=TIME}, + #{endTime,jdbcType=TIME}, #{span,jdbcType=INTEGER}, #{createTime,jdbcType=TIMESTAMP}, + #{updateTime,jdbcType=TIMESTAMP}) + + (#{item.termId},#{item.channelId},#{item.startTime},#{item.endTime},#{span},#{createat},#{updateat}) + + + + insert into terminal_schedule_details + + + id, + + + schedule_id, + + + start_time, + + + end_time, + + + span, + + + create_time, + + + update_time, + + + + + #{id,jdbcType=INTEGER}, + + + #{scheduleId,jdbcType=INTEGER}, + + + #{startTime,jdbcType=TIME}, + + + #{endTime,jdbcType=TIME}, + + + #{span,jdbcType=INTEGER}, + + + #{createTime,jdbcType=TIMESTAMP}, + + + #{updateTime,jdbcType=TIMESTAMP}, + + + + + update terminal_schedule_details + + + schedule_id = #{scheduleId,jdbcType=INTEGER}, + + + start_time = #{startTime,jdbcType=TIME}, + + + end_time = #{endTime,jdbcType=TIME}, + + + span = #{span,jdbcType=INTEGER}, + + + create_time = #{createTime,jdbcType=TIMESTAMP}, + + + update_time = #{updateTime,jdbcType=TIMESTAMP}, + + + where id = #{id,jdbcType=INTEGER} + + update terminal_schedule_details set schedule_id = #{scheduleId,jdbcType=INTEGER}, start_time = #{startTime,jdbcType=TIME}, 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 531ee35..c0ef59b 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,10 +6,14 @@ 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 com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; import com.github.pagehelper.PageInfo; +import com.google.common.collect.Lists; import com.shxy.xymanager_common.bean.ServiceBody; import com.shxy.xymanager_common.constant.Constants; import com.shxy.xymanager_common.dto.ChannelAndTermDto; +import com.shxy.xymanager_common.dto.PhotoTimeResultDto; import com.shxy.xymanager_common.dto.ScheduleAndRuleDto; import com.shxy.xymanager_common.dto.ScheduleRuleDto; import com.shxy.xymanager_common.entity.*; @@ -19,14 +23,18 @@ import com.shxy.xymanager_common.model.*; 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.util.StringUtils; import com.shxy.xymanager_common.vo.*; import com.shxy.xymanager_dao.dao.*; import com.shxy.xymanager_service.service.TerminalScheduleRuleService; import lombok.extern.slf4j.Slf4j; +import org.omg.PortableInterceptor.INACTIVE; +import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import javax.validation.constraints.NotNull; import java.sql.Time; import java.util.ArrayList; import java.util.Date; @@ -57,6 +65,9 @@ public class TerminalScheduleRuleServiceImpl implements TerminalScheduleRuleServ @Autowired RequestResultsDao requestResultsDao; + @Autowired + TerminalScheduleDetailsDao terminalScheduleDetailsDao; + /** * 获取时间任务规则列表 * @@ -291,7 +302,6 @@ public class TerminalScheduleRuleServiceImpl implements TerminalScheduleRuleServ } - /** * 查询拍照时间表任务是否下发成功 * @@ -299,85 +309,90 @@ public class TerminalScheduleRuleServiceImpl implements TerminalScheduleRuleServ * @return */ @Transactional - public ServiceBody checkScheldule(RelateTerminalListRuleIdVo vo) { + public ServiceBody checkScheldule(RelateTerminalListRuleIdVo vo) { + Integer requestid = 0; ArrayList intlist = new ArrayList<>(); RequestResults results = requestResultsDao.selectByRequestId(1); - String data = results.getData(); - Integer result = results.getResult(); - if (result == 255) { -// terminalSchedulesTempDao.selectByRequestId(intlist); + /* + * 如果下发成功 + * 1,将临时表中的数据状态改成1下发成功状态 + * 2,将装置关联拍照时间正式表改为临时表的对应状态 + * 3,将装置自身detial表插入新数据 + * */ + if (results != null) { + TerminalSchedulesTemp record = new TerminalSchedulesTemp(); + record.setStatus(CommonStatus.EFFECTIVE.value()); + record.setRequestId(requestid); + terminalSchedulesTempDao.updateByPrimaryKeySelective(record); } + ArrayList id = new ArrayList<>(); + TerminalSchedulesTemp temp1 = terminalSchedulesTempDao.selectByRequestId(id, CommonStatus.EFFECTIVE.value()); - GetModel model = new GetModel(); - List list = terminalSchedulesTempDao.selectByTermAndChannel(vo.getList(), CommonStatus.DELETE.value()); - if (CollectionUtil.isNotEmpty(list)) { - return Asserts.error("有装置时间尚未下发成功"); - } - List termlist = vo.getList(); + TerminalSchedules record = new TerminalSchedules(); + record.setChannelId(temp1.getChannelId()); + record.setScheduleId(temp1.getScheduleId()); + record.setTermId(temp1.getTermId()); + terminalSchedulesDao.updateByPrimaryKeySelective(record);//将实际的拍照时间表规则从临时表更新到正式表中 - Integer scheduleid = vo.getScheduleid(); - List temps = new ArrayList<>(); - List termidlist = new ArrayList<>(); - for (RelateTerminalListRuleIdVo.Items item : termlist) { - termidlist.add(item.getTermid()); - List channelidlist = item.getChannelidlist(); - for (Integer it : channelidlist) { - TerminalSchedulesTemp temp = new TerminalSchedulesTemp(); - temp.setTermId(item.getTermid()); - temp.setScheduleId(scheduleid); - temp.setChannelId(it); - temps.add(temp); - } - } - Date date = new Date(); - int i = terminalSchedulesTempDao.insertList(temps, CommonStatus.EFFECTIVE.value(), date, date); +// terminalScheduleDetailsDao.deleteByPrimaryKey();//根据装置编号和通道编号删除之前对应的实际拍照时间表详情 - List terminalsList = terminalsDao.selectByIdList(vo.getList(), CommonStatus.EFFECTIVE.value()); + ArrayList record1 = new ArrayList<>(); + terminalScheduleDetailsDao.insertList(record1);//插入新的对应的拍照时间表规则详情 - if (CollectionUtil.isEmpty(termidlist)) { - return Asserts.error("没有该装置"); + int i = requestResultsDao.updateByPrimaryKey(new RequestResults());//根据requestid将结果表中的状态修改为已下发 +//end + + if (i != 0) { + return Asserts.success("下发成功"); + } else { + return Asserts.error("关联失败"); } - ScheduleAndRuleDto dto = schedulesDao.selectSingle(scheduleid, CommonStatus.EFFECTIVE.value()); - List dtoList = dto.getList(); - if (CollectionUtil.isEmpty(dtoList)) { - return Asserts.error("没有该拍照时间规则"); + } + + + /** + * 根据装置和通道编号查询拍照时间表 + * + * @param vo + * @return + */ + @Transactional + public ServiceBody getSchedule(RelateTerminalListRuleIdVo vo) { + GetModel model = new GetModel(); + Integer requestid = 0; + ArrayList intlist = new ArrayList<>(); + RequestResults results = requestResultsDao.selectByRequestId(1); + /* + * 如果下发成功 + * 1,将临时表中的数据状态改成1下发成功状态 + * 2,将装置关联拍照时间正式表改为临时表的对应状态 + * 3,将装置自身detial表插入新数据 + * */ + if (results != null) { + TerminalSchedulesTemp record = new TerminalSchedulesTemp(); + record.setStatus(CommonStatus.EFFECTIVE.value()); + record.setRequestId(requestid); + terminalSchedulesTempDao.updateByPrimaryKeySelective(record); } - StringBuffer timestr = new StringBuffer(); - for (int j = 0; j < dtoList.size(); j++) { - TerminalPhotosTimeModel.PhotosTimeBean bean = new TerminalPhotosTimeModel.PhotosTimeBean(); - 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]); + ArrayList id = new ArrayList<>(); + TerminalSchedulesTemp temp1 = terminalSchedulesTempDao.selectByRequestId(id, CommonStatus.EFFECTIVE.value()); + TerminalSchedules record = new TerminalSchedules(); + record.setChannelId(temp1.getChannelId()); + record.setScheduleId(temp1.getScheduleId()); + record.setTermId(temp1.getTermId()); + terminalSchedulesDao.updateByPrimaryKeySelective(record);//将实际的拍照时间表规则从临时表更新到正式表中 - Date endTime = dtoList.get(j).getEndTime(); - Short endTimeHour = Short.parseShort(MyDateUtils.parseHourAndMinute(endTime).split("/")[0]); - Short endTimeMin = Short.parseShort(MyDateUtils.parseHourAndMinute(endTime).split("/")[1]); + terminalScheduleDetailsDao.deleteByPrimaryKey(0);//根据装置编号和通道编号删除之前对应的实际拍照时间表详情 + + ArrayList record1 = new ArrayList<>(); + terminalScheduleDetailsDao.insertList(record1);//插入新的对应的拍照时间表规则详情 + + int i = requestResultsDao.updateByPrimaryKey(new RequestResults());//根据requestid将结果表中的状态修改为已下发 +//end - Integer span1 = -1; - Integer span2 = -1; - if (span / 60 > 0) { - span1 = (span / 60); - span2 = (span % 60); - } else if (span < 60) { - span1 = 0; - span2 = span; - } - String string = "--hour1=" + startHour + "\t" + "--min1=" + startMin + "\t" + "--preset1=255 --hour2=" + endTimeHour + "\t" + "--min2=" + endTimeMin + "\t" - + "--preset2=255 --hour3=" + span1 + "\t" + "--min3=" + span2 + "\t" + "--preset3=255"; - timestr.append(string); - } - for (int x = 0; x < terminalsList.size(); x++) { - ChannelAndTermDto channelAndTermDto = terminalsList.get(x); - String cmd = Constants.CMD + "schedule --flag=1 --cmdid=" + channelAndTermDto.getCmdid() + "\t" + "--channel=" + channelAndTermDto.getChannelid() + "\t" + - timestr.toString(); - ProcessExecUtils.exec(cmd); - } - model.setRequestId(Integer.parseInt(Constants.REQUEST_ID.toString())); - Constants.REQUEST_ID.addAndGet(1); if (i != 0) { return Asserts.success(model); } else { @@ -417,4 +432,56 @@ public class TerminalScheduleRuleServiceImpl implements TerminalScheduleRuleServ return Asserts.success(model); } + + //调用CMA获取装置的拍照时间表详情 + @Override + public ServiceBody cmaSchelduleDetials(TerminalAndChannelIdVo vo) { + GetModel model = new GetModel(); + + Integer terminalid = vo.getTerminalid(); + Integer channelid = vo.getChannelid(); + String cmdIdByTermId = terminalsDao.getCmdIdByTermId(terminalid); + + String cmd = Constants.CMD + "schedule --cmdid=" + cmdIdByTermId + "\t" + "--reqid=" + Constants.REQUEST_ID + "\t" + "--clientid=10 --flag=0 --rf=7 --channel=" + channelid; + ProcessExecUtils.exec(cmd); + Integer requestId = Integer.parseInt(Constants.REQUEST_ID.toString()); + model.setRequestId(requestId); + Constants.REQUEST_ID.addAndGet(1); + model.setRequestId(requestId); + return Asserts.success(model); + } + + + /*获取Cma调用获取装置拍照时间表结果*/ + @Override + public ServiceBody getCmaSchelduleDetials(RequestIdVo vo) { + TerminalScheduleRuleTimeListModel model = new TerminalScheduleRuleTimeListModel(); + RequestResults results = requestResultsDao.selectByRequestId(vo.getRequestid()); + String resultsData = results.getData(); + if (StringUtils.isNotBlank(resultsData)) { + JSONObject resultObj = JSONObject.parseObject(resultsData); + if (null != resultObj.get("groupData")) { + List resultDtoList = JSONArray.parseArray(resultObj.get("groupData").toString(), PhotoTimeResultDto.class); + if (CollectionUtil.isNotEmpty(resultDtoList)) { + List resultList = Lists.newArrayList(); + String startTimeStr = resultDtoList.get(0).getHour() + ":" + resultDtoList.get(0).getMinute() + ":00"; + String endTimeStr = resultDtoList.get(1).getHour() + ":" + resultDtoList.get(1).getMinute() + ":00"; + Date startTime = DateUtil.parseTime(startTimeStr); + Date endTime = DateUtil.parseTime(endTimeStr); + Integer span = resultDtoList.get(2).getHour() * 60 + resultDtoList.get(2).getMinute(); + List dateTimes = MyDateUtils.rangeToList(startTime, endTime, DateField.MINUTE, span); + for (DateTime data : dateTimes) { + String dateTime = DateUtil.formatTime(data); + resultList.add(dateTime); + } + model.setList(resultList); + model.setIsNew(true); + } + } + return Asserts.success(model); + } else { + return Asserts.error("查询失败"); + } + } + } diff --git a/xymanager_service/src/main/java/com/shxy/xymanager_service/service/TerminalScheduleRuleService.java b/xymanager_service/src/main/java/com/shxy/xymanager_service/service/TerminalScheduleRuleService.java index f3ad30d..dd56988 100644 --- a/xymanager_service/src/main/java/com/shxy/xymanager_service/service/TerminalScheduleRuleService.java +++ b/xymanager_service/src/main/java/com/shxy/xymanager_service/service/TerminalScheduleRuleService.java @@ -65,4 +65,18 @@ public interface TerminalScheduleRuleService { * @return */ ServiceBody getChannelSchelduleRule(TerminalAndChannelIdVo vo); + + /** + * 调用CMA获取装置的实际拍照时间表 + * @param vo + * @return + */ + ServiceBody cmaSchelduleDetials(TerminalAndChannelIdVo vo); + + /** + * 获取Cma调用实际拍照时间的结果 + * @param vo + * @return + */ + ServiceBody getCmaSchelduleDetials(RequestIdVo vo); }