diff --git a/src/main/java/club/joylink/rtss/dao/PublishedTraining2DAO.java b/src/main/java/club/joylink/rtss/dao/PublishedTraining2DAO.java index 08a2d4d97..24c2101ee 100644 --- a/src/main/java/club/joylink/rtss/dao/PublishedTraining2DAO.java +++ b/src/main/java/club/joylink/rtss/dao/PublishedTraining2DAO.java @@ -16,11 +16,11 @@ import java.util.Map; @Repository public interface PublishedTraining2DAO { - @Select("") - List selectAllLabel(@Param("mapId") Long mapId,@Param("orgId") Long orgId,@Param("type") String type); + List selectAllLabel(@Param("mapId") Long mapId,@Param("orgId") Long orgId,@Param("type") String type);*/ long countByExample(PublishedTraining2Example example); int deleteByExample(PublishedTraining2Example example); diff --git a/src/main/java/club/joylink/rtss/services/paper/PagerQuestionService.java b/src/main/java/club/joylink/rtss/services/paper/PagerQuestionService.java index 0da8df597..cea3904cf 100644 --- a/src/main/java/club/joylink/rtss/services/paper/PagerQuestionService.java +++ b/src/main/java/club/joylink/rtss/services/paper/PagerQuestionService.java @@ -47,14 +47,10 @@ public class PagerQuestionService { * @param queryLabelIsNull 当查询对象labels属性为空时 是否查询 tags is null * @return */ - private PaperQuestionExample createQueryExample(QuestionQueryVO queryVO, boolean orgIdCanNull,boolean queryLabelIsNull){ + public void createQueryExample(PaperQuestionExample.Criteria criteria,QuestionQueryVO queryVO, boolean orgIdCanNull,boolean queryLabelIsNull){ if(Objects.equals(false,orgIdCanNull)){ BusinessExceptionAssertEnum.ARGUMENT_ILLEGAL.assertTrue(Objects.nonNull(queryVO.getOrgId()),"用户组织信息不能为空"); } - - PaperQuestionExample example = new PaperQuestionExample(); - PaperQuestionExample.Criteria criteria = example.createCriteria(); - if (StringUtils.hasText(queryVO.getTopic())) { criteria.andQuestionLike(String.format("%%%s%%", queryVO.getTopic())); } @@ -65,7 +61,33 @@ public class PagerQuestionService { if(Objects.nonNull(queryVO.getOrgId())){ criteria.andOrgIdEqualTo(queryVO.getOrgId()); } - if(!StringUtils.hasText(queryVO.getLabels())){ + criteria.andIsDelEqualTo(BusinessConsts.DBLogicDelete.NORMAL.ordinal()); + if(Objects.equals(false,queryLabelIsNull) && StringUtils.hasText(queryVO.getLabels())){ + List tmpLableList = Splitter.on(",").omitEmptyStrings().splitToList(queryVO.getLabels()); + if(Objects.equals(false,CollectionUtils.isEmpty(tmpLableList))){ + StringBuilder sqlBuilder = new StringBuilder("("); + for(var i = 0 ; i < tmpLableList.size();i++){ + String data = tmpLableList.get(i); + if(i != 0){ + sqlBuilder.append(" and "); + } + sqlBuilder.append(String.format(" find_in_set('%s',tags) > 0 ",data)); + } + sqlBuilder.append(")"); + Class criteriaCls = criteria.getClass(); + Class generatedCriteriaCls = criteriaCls.getSuperclass(); + try{ + Method addCriterion = generatedCriteriaCls.getDeclaredMethod("addCriterion", String.class); + addCriterion.setAccessible(true); + addCriterion.invoke(criteria, sqlBuilder.toString()); + }catch (Exception e){ + log.error("拼写查询标签错误 msg:" + e.getMessage(),e); + } + } + }else { + criteria.andTagsIsNull(); + } + /* if(!StringUtils.hasText(queryVO.getLabels())){ if(queryLabelIsNull) { criteria.andTagsIsNull(); } @@ -91,9 +113,8 @@ public class PagerQuestionService { log.error("拼写查询标签错误 msg:" + e.getMessage(),e); } } - } - criteria.andIsDelEqualTo(BusinessConsts.DBLogicDelete.NORMAL.ordinal()); - return example; + }*/ + } /** @@ -112,7 +133,9 @@ public class PagerQuestionService { queryVO.setOrgId(orgId); queryVO.setType(type.name()); queryVO.setLabels(labels); - PaperQuestionExample example = this.createQueryExample(queryVO,false,true); + PaperQuestionExample example = new PaperQuestionExample(); + PaperQuestionExample.Criteria criteria = example.createCriteria(); + this.createQueryExample(criteria,queryVO,false,false); return this.questionDAO.countByExample(example); } @@ -124,7 +147,9 @@ public class PagerQuestionService { */ public PageVO pagingQueryQuestions(QuestionQueryVO queryVO,boolean companyIdCanNull) { PageHelper.startPage(queryVO.getPageNum(), queryVO.getPageSize()); - PaperQuestionExample example = this.createQueryExample(queryVO,companyIdCanNull,false); + PaperQuestionExample example = new PaperQuestionExample(); + PaperQuestionExample.Criteria criteria = example.createCriteria(); + this.createQueryExample(criteria,queryVO,companyIdCanNull,false); Page page = (Page)this.questionDAO.selectByExampleWithBLOBs(example); List questionVOS = PaperQuestionVO.convert2VOList(page.getResult()); return PageVO.convert(page, questionVOS); @@ -138,7 +163,9 @@ public class PagerQuestionService { * @return */ public List queryQuestions(QuestionQueryVO queryVO,boolean companyIdCanNull) { - PaperQuestionExample example = this.createQueryExample(queryVO,companyIdCanNull,false); + PaperQuestionExample example = new PaperQuestionExample(); + PaperQuestionExample.Criteria criteria = example.createCriteria(); + this.createQueryExample(criteria,queryVO,companyIdCanNull,false); List list = this.questionDAO.selectByExampleWithBLOBs(example); List questionVOS = PaperQuestionVO.convert2VOList(list); return questionVOS; diff --git a/src/main/java/club/joylink/rtss/services/paper/PaperUserCreateService.java b/src/main/java/club/joylink/rtss/services/paper/PaperUserCreateService.java index 21c7ab7cb..336db67cd 100644 --- a/src/main/java/club/joylink/rtss/services/paper/PaperUserCreateService.java +++ b/src/main/java/club/joylink/rtss/services/paper/PaperUserCreateService.java @@ -8,8 +8,10 @@ import club.joylink.rtss.entity.paper.question.PaperQuestionExample; import club.joylink.rtss.entity.training2.PublishedTraining2; import club.joylink.rtss.entity.training2.PublishedTraining2Example; import club.joylink.rtss.exception.PaperExceptionAssert; +import club.joylink.rtss.services.training2.Training2PublishService; import club.joylink.rtss.util.JsonUtils; import club.joylink.rtss.vo.AccountVO; +import club.joylink.rtss.vo.client.pager.question.QuestionQueryVO; import club.joylink.rtss.vo.paper.*; import club.joylink.rtss.vo.paper.convertor.PaperRuleConvertor; import com.google.common.base.Joiner; @@ -20,6 +22,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; +import org.springframework.util.StringUtils; import java.lang.reflect.Method; import java.time.LocalDateTime; @@ -48,6 +51,10 @@ public class PaperUserCreateService { private PaperQuestionDAO questionDAO; @Autowired private PublishedTraining2DAO trainingDAO; + @Autowired + private Training2PublishService training2PublishService; + @Autowired + private PagerQuestionService pagerQuestionService; private void resetPaperRecord(Long pcId, Long userId){ @@ -120,6 +127,7 @@ public class PaperUserCreateService { /** * 根据试卷蓝图和规则来为用户试卷分配题目 */ + @Deprecated private void dispatcherQuestion(PaperUser pu, PaperComposition pc, List ruleList) { for (PaperRule rule : ruleList) { String tags = rule.getTags();//规则标签,list json @@ -168,8 +176,10 @@ public class PaperUserCreateService { */ private List dispatcherCommonQuestion2(PaperUser pu, PaperComposition pc, PaperCompositionWithRuleVo.PaperRuleVo ruleVO,List notInList) { final int qSum = ruleVO.getAmount();//该类型问题个数 + PaperQuestionExample questionExample = new PaperQuestionExample(); + PaperQuestionExample.Criteria criteria = questionExample.createCriteria(); - PaperQuestionExample questionExample = this.commonQuestionExample2(pu, pc, ruleVO,notInList); + this.commonQuestionExample2(criteria,pu, pc, ruleVO,notInList); //符合条件的题目数目 long count = questionDAO.countByExample(questionExample); PaperExceptionAssert.PqEnough.assertTrue(count >= qSum, "符合条件的理论题数目过少:pcId = " + pc.getId() + " pcName = " + pc.getName() + " orgId = " + pc.getOrgId() + " ruleType = " + ruleVO.getSubtype().name() + " ruleSum = " + qSum); @@ -195,6 +205,7 @@ public class PaperUserCreateService { /** * 随机选择理论题目 */ + @Deprecated private List dispatcherCommonQuestion(PaperUser pu, PaperComposition pc, PaperRule rule) { final int qSum = rule.getAmount();//该类型问题个数 // @@ -259,26 +270,25 @@ public class PaperUserCreateService { String tags = rule.getTags();//规则标签,list json List tagArray = null != tags && tags.length() > 0 ? JsonUtils.readCollection(tags, ArrayList.class, String.class) : null; PaperQType.SubType subType = PaperQType.SubType.getItem(rule.getSubtype()); - // + String subTypeStr = this.paperUserService.getTrainingType(subType); + + PublishedTraining2Example questionExample = new PublishedTraining2Example(); PublishedTraining2Example.Criteria criteria = questionExample.createCriteria(); - //针对实训添加mapId 的过滤 - criteria.andMapIdEqualTo(pc.getMapId()); -// criteria.andOrgIdEqualTo(pc.getOrgId()); - if (null == tagArray) { - criteria.andTypeEqualTo(this.paperUserService.getTrainingType(subType)).andStateEqualTo(1);//1-上架 - } else { + + this.training2PublishService.basicQueryCriteria(criteria,pc.getMapId(),pc.getOrgId(), StringUtils.hasText(subTypeStr) ? subTypeStr.toUpperCase():null); + if(!CollectionUtils.isEmpty(tagArray)){ for (String tag : tagArray) { - questionExample.or().andTypeEqualTo(this.paperUserService.getTrainingType(subType)).andStateEqualTo(1).andLabelJsonLike(String.format("%%%s%%", tag)); + criteria.andLabelJsonLike(String.format("%%%s%%", tag)); } } - return questionExample; } /** * 生成根据tag查询的条件 */ + @Deprecated private PaperQuestionExample commonQuestionExample(PaperUser pu, PaperComposition pc, PaperRule rule) { String tags = rule.getTags();//规则标签,list json List tagArray = null != tags && tags.length() > 0 ? JsonUtils.readCollection(tags, ArrayList.class, String.class) : null; @@ -296,42 +306,16 @@ public class PaperUserCreateService { } return questionExample; } - private PaperQuestionExample commonQuestionExample2(PaperUser pu, PaperComposition pc, PaperCompositionWithRuleVo.PaperRuleVo ruleVO,List notInList) { -// String tags = rule.getTags();//规则标签,list json -// List tagArray = null != tags && tags.length() > 0 ? JsonUtils.readCollection(tags, ArrayList.class, String.class) : null; -// PaperQType.SubType subType = PaperQType.SubType.getItem(rule.getSubtype()); - // - PaperQuestionExample questionExample = new PaperQuestionExample(); - PaperQuestionExample.Criteria criteria = questionExample.createCriteria(); - criteria.andOrgIdEqualTo(pc.getOrgId()).andTypeEqualTo(this.paperUserService.getPaperQuestionType(ruleVO.getSubtype()).name()).andIsDelEqualTo(0); + private void commonQuestionExample2(PaperQuestionExample.Criteria criteria,PaperUser pu, PaperComposition pc, PaperCompositionWithRuleVo.PaperRuleVo ruleVO,List notInList) { + QuestionQueryVO queryVO = new QuestionQueryVO(); + if(!CollectionUtils.isEmpty(ruleVO.getTags())){ + queryVO.setLabels(Joiner.on(",").skipNulls().join(ruleVO.getTags())); + } + queryVO.setType(this.paperUserService.getPaperQuestionType(ruleVO.getSubtype()).name()); + queryVO.setOrgId(pc.getOrgId()); if(!CollectionUtils.isEmpty(notInList)){ criteria.andIdNotIn(notInList); } - List tagArray = ruleVO.getTags(); - if (!CollectionUtils.isEmpty(tagArray)) { - StringBuilder sqlBuilder = new StringBuilder("("); - for (var i = 0 ; i < tagArray.size();i++) { - String data = tagArray.get(i); - if(i != 0){ - sqlBuilder.append(" and "); - } - sqlBuilder.append(String.format(" find_in_set('%s',tags) > 0 ",data)); - } - sqlBuilder.append(")"); - Class criteriaCls = PaperQuestionExample.Criteria.class; - Class generatedCriteriaCls = criteriaCls.getSuperclass(); - try{ - Method addCriterion = generatedCriteriaCls.getDeclaredMethod("addCriterion", String.class); - addCriterion.setAccessible(true); - addCriterion.invoke(criteria, sqlBuilder.toString()); - }catch (Exception e){ - log.error("拼写查询标签错误 msg:" + e.getMessage(),e); - } - }else{ - criteria.andTagsIsNull(); - } - return questionExample; + this.pagerQuestionService.createQueryExample(criteria,queryVO,false,false); } - - } diff --git a/src/main/java/club/joylink/rtss/services/training2/Training2PublishService.java b/src/main/java/club/joylink/rtss/services/training2/Training2PublishService.java index 96b365e22..062caeddc 100644 --- a/src/main/java/club/joylink/rtss/services/training2/Training2PublishService.java +++ b/src/main/java/club/joylink/rtss/services/training2/Training2PublishService.java @@ -1,17 +1,16 @@ package club.joylink.rtss.services.training2; -import club.joylink.rtss.constants.BusinessConsts; import club.joylink.rtss.dao.PublishedTraining2DAO; -import club.joylink.rtss.entity.paper.question.PaperQuestionExample; -import club.joylink.rtss.entity.paper.question.PaperQuestionWithBLOBs; +import club.joylink.rtss.entity.paper.PaperComposition; +import club.joylink.rtss.entity.paper.PaperRule; +import club.joylink.rtss.entity.paper.PaperUser; import club.joylink.rtss.entity.training2.PublishedTraining2; import club.joylink.rtss.entity.training2.PublishedTraining2Example; import club.joylink.rtss.entity.training2.PublishedTraining2WithBLOBs; -import club.joylink.rtss.exception.BusinessException; -import club.joylink.rtss.exception.BusinessExceptionAssert; import club.joylink.rtss.exception.BusinessExceptionAssertEnum; import club.joylink.rtss.util.JsonUtils; import club.joylink.rtss.vo.client.PageVO; +import club.joylink.rtss.vo.paper.PaperQType; import club.joylink.rtss.vo.training2.publish.*; import com.github.pagehelper.Page; import com.github.pagehelper.PageHelper; @@ -22,7 +21,6 @@ import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; import org.springframework.util.StringUtils; -import java.lang.reflect.Method; import java.time.LocalDateTime; import java.util.*; import java.util.stream.Collectors; @@ -49,16 +47,9 @@ public class Training2PublishService { */ public Long queryCountForLabel(Long mapId,@Deprecated Long orgId,String type,String label){ - BusinessExceptionAssertEnum.ARGUMENT_ILLEGAL.assertTrue(Objects.nonNull(mapId),"没有关联对应的地图"); - BusinessExceptionAssertEnum.ARGUMENT_ILLEGAL.assertTrue(Objects.nonNull(orgId),"组织信息不能为空"); - BusinessExceptionAssertEnum.ARGUMENT_ILLEGAL.assertTrue(Objects.nonNull(type),"查询类型信息不能为空"); - PublishedTraining2Example example = new PublishedTraining2Example(); PublishedTraining2Example.Criteria c = example.createCriteria(); - //针对实训只过滤对应的线路 - c.andMapIdEqualTo(mapId); -// c.andOrgIdEqualTo(orgId); - c.andTypeEqualTo(type); + this.basicQueryCriteria(c,mapId,orgId,type); if(Objects.nonNull(label)){ c.andLabelJsonLike(String.format("%%%s%%", label)); } @@ -69,20 +60,29 @@ public class Training2PublishService { * 根据 组织,类型(单操作,实操) 获取标签 */ public Collection findAllLabel(Long mapId,Long orgId, String type){ - BusinessExceptionAssertEnum.ARGUMENT_ILLEGAL.assertTrue(Objects.nonNull(mapId),"请关联对应的线路"); - BusinessExceptionAssertEnum.ARGUMENT_ILLEGAL.assertTrue(Objects.nonNull(orgId),"组织信息不能为空"); - BusinessExceptionAssertEnum.ARGUMENT_ILLEGAL.assertTrue(Objects.nonNull(type),"查询类型信息不能为空"); - //针对实训只过滤关联的线路 - List list = this.publishedDao.selectAllLabel(mapId,null,type); - if(CollectionUtils.isEmpty(list)){ + PublishedTraining2Example example = new PublishedTraining2Example(); + PublishedTraining2Example.Criteria c = example.createCriteria(); + this.basicQueryCriteria(c,mapId,orgId,type); + List dataList = this.publishedDao.selectByExample(example); + if(CollectionUtils.isEmpty(dataList)){ return Collections.emptyList(); } - return list.stream().filter(StringUtils::hasText).map(d->{ + return dataList.stream().map(PublishedTraining2::getLabelJson).filter(StringUtils::hasText).map(d->{ List l = JsonUtils.readCollection(d,List.class,String.class); return l; }).flatMap(d->d.stream()).collect(Collectors.toSet()); } + public void basicQueryCriteria(PublishedTraining2Example.Criteria criteria, Long mapId, Long orgId, String type){ + BusinessExceptionAssertEnum.ARGUMENT_ILLEGAL.assertTrue(Objects.nonNull(mapId),"请关联对应的线路"); + BusinessExceptionAssertEnum.ARGUMENT_ILLEGAL.assertTrue(Objects.nonNull(orgId),"组织信息不能为空"); + BusinessExceptionAssertEnum.ARGUMENT_ILLEGAL.assertTrue(Objects.nonNull(type),"查询类型信息不能为空"); + criteria.andMapIdEqualTo(mapId); +// c.andOrgIdEqualTo(orgId); + criteria.andTypeEqualTo(type); + criteria.andStateEqualTo(1);//上架 + } + /** * 已发布实训分页列表 */ diff --git a/src/main/java/club/joylink/rtss/simulation/cbtc/ATS/operation/Operation.java b/src/main/java/club/joylink/rtss/simulation/cbtc/ATS/operation/Operation.java index 2fba32683..e0c6af1b0 100644 --- a/src/main/java/club/joylink/rtss/simulation/cbtc/ATS/operation/Operation.java +++ b/src/main/java/club/joylink/rtss/simulation/cbtc/ATS/operation/Operation.java @@ -1399,6 +1399,92 @@ public class Operation { REGULAR_TRAIN_LINE_STATION_UPDATE(new Label[]{Label.CLIENT},true), REGULAR_TRAIN_LINE_STATION_UPDATE_LIST(new Label[]{Label.CLIENT},true), REGULAR_TRAIN_LINE_STATION_UPDATE_LOAD(new Label[]{Label.CLIENT},true), + + /** + * 非正常情况接发列车关键环节控制表信息保存 + */ + KEY_LINK_CONTROL_INFO_SAVE(new Label[]{Label.CLIENT}, true), + + /** + * 非正常情况接发列车关键环节控制表信息更新 + */ + KEY_LINK_CONTROL_INFO_UPDATE(new Label[]{Label.CLIENT}, true), + + /** + * 非正常情况接发列车关键环节控制表信息查询 + */ + KEY_LINK_CONTROL_INFO_QUERY(new Label[]{Label.CLIENT}, true), + + /** + * 保存行车设备施工登记信息 + */ + EQUIPMENT_CONSTRUCTION_INFO_SAVE(new Label[]{Label.CLIENT}, true), + + /** + * 查询行车设备施工登记信息 + */ + EQUIPMENT_CONSTRUCTION_INFO_QUERY(new Label[]{Label.CLIENT}, true), + + /** + * 保存区段站交接班记录 + */ + HAND_OVER_SECTION_STATION_SAVE(new Label[]{Label.CLIENT}, true), + + /** + * 获取区间站交接班记录 + */ + HAND_OVER_SECTION_STATION_QUERY(new Label[]{Label.CLIENT}, true), + + /** + * 保存中间站交接班记录 + */ + HAND_OVER_MIDDLE_STATION_SAVE(new Label[]{Label.CLIENT}, true), + + /** + * 获取中间站交接班记录 + */ + HAND_OVER_MIDDLE_STATION_QUERY(new Label[]{Label.CLIENT}, true), + + /** + * 保存外勤助理值班员交接班记录 + */ + HAND_OVER_FIELD_PERSONNEL_SAVE(new Label[]{Label.CLIENT}, true), + + /** + * 获取外勤助理值班员交接班记录 + */ + HAND_OVER_FIELD_PERSONNEL_QUERY(new Label[]{Label.CLIENT}, true), + + /** + * 保存调车区长交接班记录 + */ + HAND_OVER_SHUT_SAVE(new Label[]{Label.CLIENT}, true), + + /** + * 获取调车区长交接班记录 + */ + HAND_OVER_SHUT_QUERY(new Label[]{Label.CLIENT}, true), + + /** + * 保存车站调度员交接班记录 + */ + HAND_OVER_DISPATCHER_SAVE(new Label[]{Label.CLIENT}, true), + + /** + * 获取车站调度员交接班记录 + */ + HAND_OVER_DISPATCHER_QUERY(new Label[]{Label.CLIENT}, true), + + /** + * 保存车号长交接班记录 + */ + HAND_OVER_STATION_MASTER_SAVE(new Label[]{Label.CLIENT}, true), + + /** + * 获取车号长交接班记录 + */ + HAND_OVER_STATION_MASTER_QUERY(new Label[]{Label.CLIENT}, true), + //----------------------------会话信息------------------------------ /** * 电话:创建电话消息 diff --git a/src/main/java/club/joylink/rtss/simulation/cbtc/CTC/data/CtcRepository.java b/src/main/java/club/joylink/rtss/simulation/cbtc/CTC/data/CtcRepository.java index 0b07f27b8..eb823b4c5 100644 --- a/src/main/java/club/joylink/rtss/simulation/cbtc/CTC/data/CtcRepository.java +++ b/src/main/java/club/joylink/rtss/simulation/cbtc/CTC/data/CtcRepository.java @@ -1,6 +1,9 @@ package club.joylink.rtss.simulation.cbtc.CTC.data; import club.joylink.rtss.exception.BusinessExceptionAssertEnum; +import club.joylink.rtss.simulation.cbtc.CTC.data.book.EquipmentConstructionInfo; +import club.joylink.rtss.simulation.cbtc.CTC.data.book.KeyLinkControlInfo; +import club.joylink.rtss.simulation.cbtc.CTC.data.book.SupervisorHandOverInfo; import club.joylink.rtss.simulation.cbtc.CTC.data.vo.CtcRunPlanVO; import club.joylink.rtss.simulation.cbtc.CTC.data.vo.CtcStationRunPlanLogVO; import club.joylink.rtss.simulation.cbtc.CTC.data.vo.RouteSequenceVO; @@ -139,6 +142,21 @@ public class CtcRepository { */ private final CopyOnWriteArrayList tickets = new CopyOnWriteArrayList<>(); + /** + * 非正常情况接发列车关键环节控制表 + */ + private final KeyLinkControlInfo keyLinkControlInfo = new KeyLinkControlInfo(); + + /** + * 行车设备施工登记簿 + */ + private final EquipmentConstructionInfo equipmentConstructionInfo = new EquipmentConstructionInfo(); + + /** + * 交接班记录登记薄 + */ + private final SupervisorHandOverInfo supervisorHandOverInfo = new SupervisorHandOverInfo(); + public void reset(Simulation simulation) { MapConfig config = simulation.getRepository().getConfig(); // 仿真运行数据直接清空 diff --git a/src/main/java/club/joylink/rtss/simulation/cbtc/CTC/data/book/EquipmentConstructionInfo.java b/src/main/java/club/joylink/rtss/simulation/cbtc/CTC/data/book/EquipmentConstructionInfo.java new file mode 100644 index 000000000..a3f44b866 --- /dev/null +++ b/src/main/java/club/joylink/rtss/simulation/cbtc/CTC/data/book/EquipmentConstructionInfo.java @@ -0,0 +1,116 @@ +package club.joylink.rtss.simulation.cbtc.CTC.data.book; + +import club.joylink.rtss.simulation.cbtc.exception.SimulationException; +import club.joylink.rtss.simulation.cbtc.exception.SimulationExceptionType; +import com.fasterxml.jackson.annotation.JsonIgnore; +import lombok.Data; +import org.springframework.util.CollectionUtils; +import org.springframework.util.StringUtils; + +import java.util.*; +import java.util.concurrent.atomic.AtomicInteger; + +/** + * 行车设备施工登记簿 + */ +@Data +public class EquipmentConstructionInfo { + + @JsonIgnore + private final AtomicInteger idGenerator = new AtomicInteger(0); + + /** + * 各个车站的行车设备施工登记簿 + */ + private Map> stationDetailInfoMap = new HashMap<>(); + + /** + * 保存行车设备施工登记 + */ + public void saveDetailInfo(ConstructionInfo detailInfo) { + if (StringUtils.isEmpty(detailInfo.getStationCode())) { + throw new SimulationException(SimulationExceptionType.Illegal_Argument, "车站信息为空"); + } + List dataList = null; + if (stationDetailInfoMap.containsKey(detailInfo.getStationCode())) { + dataList = stationDetailInfoMap.get(detailInfo.getStationCode()); + } else { + dataList = new LinkedList<>(); + stationDetailInfoMap.put(detailInfo.getStationCode(), dataList); + } + detailInfo.setId(idGenerator.incrementAndGet()); + dataList.add(detailInfo); + } + + /** + * 获取信息列表 + */ + public List getDetailInfoList(String stationCode) { + return stationDetailInfoMap.getOrDefault(stationCode, new LinkedList<>()); + } + + + /** + * 施工登记信息 + */ + @Data + public static class ConstructionInfo { + private Integer id; + + /** + * 车站信息 + */ + private String stationCode; + + /** + * 本月施工编号 + */ + private String no; + + /** + * 施工项目 + */ + private String projectName; + + /** + * 请求施工登记时间 + */ + private String requestDate; + + /** + * 请求施工登记详情信息 + */ + private String requestDetails; + + /** + * 请求施工登记所需时间 + */ + private String planSpendTime; + + /** + * 承认施工详情信息 + */ + private String acceptDetail; + + /** + * 施工后开通检查确认、销记 时间 + */ + private String confirmReviewDate; + + /** + * 施工后开通检查确认、销记 详情 + */ + private String confirmReviewDetail; + + /** + * 施工开通 + */ + private String constructionOpenDetail; + + /** + * 备注 + */ + private String remark; + } + +} diff --git a/src/main/java/club/joylink/rtss/simulation/cbtc/CTC/data/book/KeyLinkControlInfo.java b/src/main/java/club/joylink/rtss/simulation/cbtc/CTC/data/book/KeyLinkControlInfo.java new file mode 100644 index 000000000..48d30d933 --- /dev/null +++ b/src/main/java/club/joylink/rtss/simulation/cbtc/CTC/data/book/KeyLinkControlInfo.java @@ -0,0 +1,232 @@ +package club.joylink.rtss.simulation.cbtc.CTC.data.book; + +import club.joylink.rtss.simulation.cbtc.exception.SimulationException; +import club.joylink.rtss.simulation.cbtc.exception.SimulationExceptionType; +import com.fasterxml.jackson.annotation.JsonIgnore; +import lombok.Data; +import org.springframework.util.CollectionUtils; +import org.springframework.util.IdGenerator; +import org.springframework.util.StringUtils; + +import java.util.*; +import java.util.concurrent.atomic.AtomicInteger; + +/** + * 非正常情况接发列车关键环节控制表 + */ +@Data +public class KeyLinkControlInfo { + + @JsonIgnore + private final AtomicInteger idGenerator = new AtomicInteger(0); + + /** + * 各个车站的关键环节控制信息 + */ + private Map> stationDetailInfoMap = new HashMap<>(); + + /** + * 保存关键环节控制信息 + * @param detailInfo 详情信息 + */ + public void saveDetailInfo(DetailInfo detailInfo) { + if (StringUtils.isEmpty(detailInfo.getStationCode())) { + throw new SimulationException(SimulationExceptionType.Illegal_Argument, "车站信息为空"); + } + List dataList = null; + if (stationDetailInfoMap.containsKey(detailInfo.getStationCode())) { + dataList = stationDetailInfoMap.get(detailInfo.getStationCode()); + } else { + dataList = new LinkedList<>(); + stationDetailInfoMap.put(detailInfo.getStationCode(), dataList); + } + detailInfo.setId(idGenerator.incrementAndGet()); + dataList.add(detailInfo); + } + + /** + * 更新信息 + * @param detailInfo 详情信息 + */ + public void updateDetailInfo(DetailInfo detailInfo) { + List dataList = stationDetailInfoMap.get(detailInfo.getStationCode()); + if (CollectionUtils.isEmpty(dataList)) { + throw new SimulationException(SimulationExceptionType.Illegal_Argument, "无效数据"); + } + DetailInfo oldDetailInfo = dataList.stream().filter(d -> Objects.equals(d.getId(), detailInfo.getId())) + .findFirst().orElse(null); + if (oldDetailInfo == null) { + throw new SimulationException(SimulationExceptionType.Data_Not_Exist); + } + dataList.set(dataList.indexOf(oldDetailInfo), detailInfo); + } + + /** + * 获取信息列表 + * @param stationCode 车站 + * @return 信息列表 + */ + public List getDetailInfoList(String stationCode) { + return stationDetailInfoMap.getOrDefault(stationCode, new LinkedList<>()); + } + + + /** + * 表详情 + */ + @Data + public static class DetailInfo { + /** + * 主键 + */ + private Integer id; + + /** + * 车站编码 + */ + private String stationCode; + + /** + * 值班员 + */ + private String supervisor; + + /** + * 干部上岗是由 + */ + private String cadresPost; + + /** + * 监控干部 + */ + private String monitorCadres; + + /** + * 天气 + */ + private String weather; + + /** + * 日期 + */ + private String registerDate; + + /** + * 通知干部时间 + */ + private TimeStructure noticeCadresTime; + + /** + * 报告列车调度员时间 + */ + private TimeStructure reportDispatcherTime; + + /** + * 报告指挥中心时间 + */ + private TimeStructure reportCommandCentreTime; + + /** + * 监控干部到岗时间 + */ + private TimeStructure monitorArriveTime; + + /** + * 登记列表 + */ + private List registerInfoList; + + /** + * 故障内容 + */ + private String faultContent; + + /** + * 区间闭塞、封闭情况 + */ + private String sectionContent; + + /** + * 接车进路准备方式 + */ + private String pickRoutePrepareContent; + + /** + * 接车信号 + */ + private String pickSignal; + + /** + * 发车进路准备方式 + */ + private String departRoutePrepareContent; + + /** + * 其他关键环节 + */ + private String otherKeyLinkContent; + + } + + /** + * 登记信息 + */ + @Data + public static class RegisterInfo { + /** + * 登记单位 + */ + private String departmentName; + + /** + * 运统46登记(通知干部上岗) + */ + private String registration; + + /** + * 运统46签认(报告列车调度员) + */ + private boolean reportSign; + + /** + * 报告列车调度员(报告列车调度员) + */ + private boolean reportDispatcher; + + /** + * 调度命令核对、接收(报告指挥中心) + */ + private boolean centerDispatchCommandCheck; + + /** + * 运统46到点、签认(监控干部到岗) + */ + private boolean monitorArrive; + + /** + * 运统46销记、签认(安排工作人员) + */ + private boolean writeOff; + + /** + * 调度命令核对、接收(安排工作人员) + */ + private boolean workerDispatchCommandCheck; + } + + /** + * 时分数据格式 + */ + @Data + public static class TimeStructure { + /** + * 时 + */ + private String hour; + + /** + * 分 + */ + private String minute; + } +} diff --git a/src/main/java/club/joylink/rtss/simulation/cbtc/CTC/data/book/SupervisorHandOverInfo.java b/src/main/java/club/joylink/rtss/simulation/cbtc/CTC/data/book/SupervisorHandOverInfo.java new file mode 100644 index 000000000..2c0d94694 --- /dev/null +++ b/src/main/java/club/joylink/rtss/simulation/cbtc/CTC/data/book/SupervisorHandOverInfo.java @@ -0,0 +1,510 @@ +package club.joylink.rtss.simulation.cbtc.CTC.data.book; + +import club.joylink.rtss.simulation.cbtc.exception.SimulationException; +import club.joylink.rtss.simulation.cbtc.exception.SimulationExceptionType; +import com.fasterxml.jackson.annotation.JsonIgnore; +import lombok.Data; +import org.springframework.util.StringUtils; + +import java.util.*; +import java.util.concurrent.atomic.AtomicInteger; +import java.util.stream.Collectors; + +/** + * 交接班记录簿 + */ +@Data +public class SupervisorHandOverInfo { + + @JsonIgnore + private final AtomicInteger idGenerator = new AtomicInteger(0); + + /** + * 各个车站的交接班信息 + */ + private Map> handOverDetailInfoMap = new HashMap<>(); + + /** + * 保存交接班信息 + * @param detailInfo 详情信息 + */ + public void saveDetailInfo(CommonInfo detailInfo) { + if (StringUtils.isEmpty(detailInfo.getStationCode())) { + throw new SimulationException(SimulationExceptionType.Illegal_Argument, "车站信息为空"); + } + List dataList = null; + if (handOverDetailInfoMap.containsKey(detailInfo.getStationCode())) { + dataList = handOverDetailInfoMap.get(detailInfo.getStationCode()); + } else { + dataList = new LinkedList<>(); + handOverDetailInfoMap.put(detailInfo.getStationCode(), dataList); + } + detailInfo.setId(idGenerator.incrementAndGet()); + dataList.add(detailInfo); + } + + /** + * 筛选出交接班信息 + */ + public List getDetailInfoList(String stationCode, HandOverType clsType) { + if (!handOverDetailInfoMap.containsKey(stationCode)) { + return new LinkedList<>(); + } + return handOverDetailInfoMap.get(stationCode).stream().filter(d -> Objects.equals(clsType, d.getType())).collect(Collectors.toList()); + } + + /** + * 一些公共属性 + */ + @Data + public static abstract class CommonInfo { + /** + * 主键 + */ + private Integer id; + + /** + * 交接班薄类型 + */ + private HandOverType type; + + /** + * 车站编码 + */ + private String stationCode; + + /** + * 日期 + */ + private String dateStr; + + /** + * 时间 + */ + private String timeStr; + + /** + * 交班者名字 + */ + private String shifterName; + + /** + * 接班者名字 + */ + private String takerName; + } + + /** + * 表详情 + */ + @Data + public static abstract class DetailInfo extends CommonInfo { + /** + * 文电指示 + */ + private String messageContent; + + /** + * 行车设备 + */ + private String travelEquipment; + + /** + * 行车备品 + */ + private String travelSparePart; + + /** + * 路票 + */ + private String ticketContent; + + /** + * 班前预想 + */ + private String workExpect; + + /** + * 班后总结 + */ + private String workSummary; + + /** + * 操作计数器 + */ + private List counterItemList; + } + + /** + * (区段站)值班员交班详情 + */ + @Data + public static class SectionStationDetailInfo extends DetailInfo { + /** + * 左侧列车占线情况 + */ + private FieldInfo leftField; + + /** + * 右侧列车占线情况 + */ + private FieldInfo rightField; + + public SectionStationDetailInfo() { + this.setType(HandOverType.SECTION_STATION); + } + } + + /** + * (中间站)值班员交班详情 + */ + @Data + public static class MiddleStationDetailInfo extends DetailInfo { + /** + * 日班计划 + */ + private List dayShiftPlanList; + + /** + * 当前车情况 + */ + private String currentSituation; + + /** + * 齿轮工具 + */ + private List gearToolList; + + public MiddleStationDetailInfo() { + this.setType(HandOverType.MIDDLE_STATION); + } + } + + /** + * 外勤助理值班员交接班记录 + */ + @Data + public static class FieldPersonnelDetailInfo extends CommonInfo { + /** + * 站内车 + */ + private String stationCar; + + /** + * 行车备品 + */ + private String travelSparePart; + + /** + * 路票 + */ + private String ticketContent; + + /** + * 止轮工具 + */ + private String gearToolContent; + + public FieldPersonnelDetailInfo() { + this.setType(HandOverType.FIELD_PERSONNEL); + } + } + + /** + * 调车区长交接班记录簿填写样式 + */ + @Data + public static class ShuntDetailInfo extends CommonInfo { + /** + * 待编列车 + */ + private WaitTrainInfo waitTrainInfo; + + /** + * 待解列车 + */ + private WaitTrainInfo unblockTrainInfo; + + /** + * 待取车 + */ + private WaitTrainInfo fetchTrainInfo; + + /** + * 代送车 + */ + private WaitTrainInfo deliverTrainInfo; + + /** + * 重点挂运车辆 + */ + private WaitTrainInfo priorityTrainInfo; + + /** + * 确报份数 + */ + private String confirmNumber; + + /** + * 调车机整备时间 + */ + private String shutPrepareTime; + + /** + * 设备备品 + */ + private String travelSparePart; + + public ShuntDetailInfo() { + this.setType(HandOverType.SHUNT); + } + } + + /** + * 车站调度员交接班记录簿样式 + */ + @Data + public static class StationDispatcherDetailInfo extends CommonInfo { + /** + * 命令指示 + */ + private String commandInstructs; + + /** + * 重点工作 + */ + private String priorityWork; + + /** + * 调车机停留线路 + */ + private String shutStayLine; + + /** + * 整备时间 + */ + private String shutSetupTime; + + /** + * 车站施工地点 + */ + private String constructionLocation; + + /** + * 车站施工起止时间 + */ + private String constructionStartEndTime; + + /** + * 设备备品 + */ + private String travelSparePart; + + public StationDispatcherDetailInfo() { + this.setType(HandOverType.DISPATCHER); + } + } + + /** + * 车号长(员)交接班记录簿填写样式 + */ + @Data + public static class StationMasterDetailInfo extends CommonInfo { + /** + * 待发列车车次 + */ + private String waitTripNumber; + + /** + * 待发列车时间 + */ + private String waitTime; + + /** + * 上行票据张数 + */ + private String upTicket; + + /** + * 下行票据张数 + */ + private String downTicket; + + /** + * 行车设备 + */ + private String travelEquipment; + + /** + * 行车备品 + */ + private String travelSparePart; + + /** + * 列车编组顺序表-待接车 + */ + private String groupReceiveTrain; + + /** + * 列车编组顺序表-待发车 + */ + private String groupDepartTrain; + + /** + * 列车确报-待接车 + */ + private String confirmReceiveTrain; + + /** + * 列车确报-待发车 + */ + private String confirmDepartTrain; + + /** + * 记事 + */ + private String remark; + + public StationMasterDetailInfo() { + this.setType(HandOverType.STATION_MASTER); + } + } + + /** + * 占线情况详情 + */ + @Data + public static class FieldInfo { + private String name; + + private List fieldItemList; + } + + /** + * 占线情况条目 + */ + @Data + public static class FieldItem { + /** + * 线别 + */ + private String lineCode; + + /** + * 车次 + */ + private String tripNumber; + + /** + * 闭塞状态 + */ + private boolean blocked; + + /** + * 挂头状态 + */ + private boolean hung; + + /** + * 编完状态 + */ + private boolean complete; + } + + /** + * 计数器示例 + */ + @Data + public static class CounterItem { + /** + * 名称 + */ + private String name; + + /** + * 号码 + */ + private String number; + } + + /** + * 日班计划 + */ + @Data + public static class DayShiftPlan { + /** + * 名称 + */ + private String name; + + /** + * 内容 + */ + private String content; + } + + /** + * 齿轮工具 + */ + @Data + public static class GearTool { + /** + * 名称 + */ + private String name; + + /** + * 地点 + */ + private String location; + + /** + * 齿轮工具 + */ + private String amount; + } + + /** + * 等待列车信息 + */ + @Data + public static class WaitTrainInfo { + /** + * 车次 + */ + private String tripNumber; + + /** + * 股道 + */ + private String section; + + /** + * 数量 + */ + private String count; + + /** + * 时间字符串 + */ + private String timeStr; + } + + /** + * 交接班薄类型 + */ + public enum HandOverType { + SECTION_STATION("区段车站的交接班记录"), MIDDLE_STATION("中间车站的交接班记录"), + FIELD_PERSONNEL("外勤助理值班员的交接班记录"), SHUNT("调车区长交接班记录"), + DISPATCHER("车站调度员交接班记录"), STATION_MASTER("车号长(员)交接班记录"); + + /** + * 描述 + */ + private String describe; + + HandOverType(String describe) { + this.describe = describe; + } + } +} diff --git a/src/main/java/club/joylink/rtss/simulation/cbtc/CTC/operation/RailOperateHandler.java b/src/main/java/club/joylink/rtss/simulation/cbtc/CTC/operation/RailOperateHandler.java index e122c6604..ab59adca2 100644 --- a/src/main/java/club/joylink/rtss/simulation/cbtc/CTC/operation/RailOperateHandler.java +++ b/src/main/java/club/joylink/rtss/simulation/cbtc/CTC/operation/RailOperateHandler.java @@ -3,7 +3,11 @@ package club.joylink.rtss.simulation.cbtc.CTC.operation; import club.joylink.rtss.simulation.cbtc.ATS.operation.Operation; import club.joylink.rtss.simulation.cbtc.ATS.operation.annotation.OperateHandler; import club.joylink.rtss.simulation.cbtc.ATS.operation.annotation.OperateHandlerMapping; +import club.joylink.rtss.simulation.cbtc.CTC.data.book.EquipmentConstructionInfo; +import club.joylink.rtss.simulation.cbtc.CTC.data.book.KeyLinkControlInfo; import club.joylink.rtss.simulation.cbtc.CTC.data.Ticket; +import club.joylink.rtss.simulation.cbtc.CTC.data.book.SupervisorHandOverInfo; +import club.joylink.rtss.simulation.cbtc.CTC.service.RailBookService; import club.joylink.rtss.simulation.cbtc.CTC.service.RailRegisterService; import club.joylink.rtss.simulation.cbtc.CTC.data.Register; import club.joylink.rtss.simulation.cbtc.CTC.service.RailTicketService; @@ -23,6 +27,8 @@ public class RailOperateHandler { private RailRegisterService railRegisterService; @Autowired private RailTicketService railTicketService; + @Autowired + private RailBookService railBookService; /** * 填写行车簿册 @@ -63,4 +69,140 @@ public class RailOperateHandler { public void giveTicketTo(Simulation simulation, SimulationMember member, String ticketId, String memberId) { railTicketService.giveTicketTo(simulation, member, ticketId, memberId); } + + /** + * 保存非正常情况接发列车关键环节控制表 + */ + @OperateHandlerMapping(type = Operation.Type.KEY_LINK_CONTROL_INFO_SAVE) + public void saveKeyLinkControlInfo(Simulation simulation, KeyLinkControlInfo.DetailInfo detailInfo) { + railBookService.saveKeyLine(simulation, detailInfo); + } + + /** + * 更新非正常情况接发列车关键环节控制表 + */ + @OperateHandlerMapping(type = Operation.Type.KEY_LINK_CONTROL_INFO_UPDATE) + public void updateKeyLinkControlInfo(Simulation simulation, KeyLinkControlInfo.DetailInfo detailInfo) { + railBookService.updateKeyLine(simulation, detailInfo); + } + + /** + * 查询非正常情况接发列车关键环节控制表 + */ + @OperateHandlerMapping(type = Operation.Type.KEY_LINK_CONTROL_INFO_QUERY) + public List queryKeyLinkControlInfo(Simulation simulation, String stationCode) { + return railBookService.queryKeyLine(simulation, stationCode); + } + + /** + * 保存行车设备施工登记信息 + */ + @OperateHandlerMapping(type = Operation.Type.EQUIPMENT_CONSTRUCTION_INFO_SAVE) + public void saveConstructionInfo(Simulation simulation, EquipmentConstructionInfo.ConstructionInfo detailInfo) { + railBookService.saveEquipmentConstructionInfo(simulation, detailInfo); + } + + /** + * 查询行车设备施工登记信息 + */ + @OperateHandlerMapping(type = Operation.Type.EQUIPMENT_CONSTRUCTION_INFO_QUERY) + public List queryConstructionInfo(Simulation simulation, String stationCode) { + return railBookService.queryEquipmentConstructionInfo(simulation, stationCode); + } + + /** + * 保存区段站交接班记录 + */ + @OperateHandlerMapping(type = Operation.Type.HAND_OVER_SECTION_STATION_SAVE) + public void saveSectionStationHandOverInfo(Simulation simulation, SupervisorHandOverInfo.SectionStationDetailInfo detailInfo) { + railBookService.saveHandOverInfo(simulation, detailInfo); + } + + /** + * 获取区间站交接班记录 + */ + @OperateHandlerMapping(type = Operation.Type.HAND_OVER_SECTION_STATION_QUERY) + public List querySectionStationHandOverInfo(Simulation simulation, String stationCode) { + return railBookService.queryHandOverInfo(simulation, stationCode, SupervisorHandOverInfo.HandOverType.SECTION_STATION); + } + + /** + * 保存中间站交接班记录 + */ + @OperateHandlerMapping(type = Operation.Type.HAND_OVER_MIDDLE_STATION_SAVE) + public void saveMiddleStationHandOverInfo(Simulation simulation, SupervisorHandOverInfo.MiddleStationDetailInfo detailInfo) { + railBookService.saveHandOverInfo(simulation, detailInfo); + } + + /** + * 获取中间站交接班记录 + */ + @OperateHandlerMapping(type = Operation.Type.HAND_OVER_MIDDLE_STATION_QUERY) + public List queryMiddleStationHandOverInfo(Simulation simulation, String stationCode) { + return railBookService.queryHandOverInfo(simulation, stationCode, SupervisorHandOverInfo.HandOverType.MIDDLE_STATION); + } + + /** + * 保存外勤助理值班员交接班记录 + */ + @OperateHandlerMapping(type = Operation.Type.HAND_OVER_FIELD_PERSONNEL_SAVE) + public void saveFieldPersonnelHandOverInfo(Simulation simulation, SupervisorHandOverInfo.FieldPersonnelDetailInfo detailInfo) { + railBookService.saveHandOverInfo(simulation, detailInfo); + } + + /** + * 获取外勤助理值班员交接班记录 + */ + @OperateHandlerMapping(type = Operation.Type.HAND_OVER_FIELD_PERSONNEL_QUERY) + public List queryFieldPersonnelHandOverInfo(Simulation simulation, String stationCode) { + return railBookService.queryHandOverInfo(simulation, stationCode, SupervisorHandOverInfo.HandOverType.FIELD_PERSONNEL); + } + + /** + * 保存调车区长交接班记录 + */ + @OperateHandlerMapping(type = Operation.Type.HAND_OVER_SHUT_SAVE) + public void saveShutHandOverInfo(Simulation simulation, SupervisorHandOverInfo.ShuntDetailInfo detailInfo) { + railBookService.saveHandOverInfo(simulation, detailInfo); + } + + /** + * 获取调车区长交接班记录 + */ + @OperateHandlerMapping(type = Operation.Type.HAND_OVER_SHUT_QUERY) + public List queryShutHandOverInfo(Simulation simulation, String stationCode) { + return railBookService.queryHandOverInfo(simulation, stationCode, SupervisorHandOverInfo.HandOverType.SHUNT); + } + + /** + * 保存车站调度员交接班记录 + */ + @OperateHandlerMapping(type = Operation.Type.HAND_OVER_DISPATCHER_SAVE) + public void saveDispatcherHandOverInfo(Simulation simulation, SupervisorHandOverInfo.StationDispatcherDetailInfo detailInfo) { + railBookService.saveHandOverInfo(simulation, detailInfo); + } + + /** + * 获取车站调度员交接班记录 + */ + @OperateHandlerMapping(type = Operation.Type.HAND_OVER_DISPATCHER_QUERY) + public List queryDispatcherHandOverInfo(Simulation simulation, String stationCode) { + return railBookService.queryHandOverInfo(simulation, stationCode, SupervisorHandOverInfo.HandOverType.DISPATCHER); + } + + /** + * 保存车号长交接班记录 + */ + @OperateHandlerMapping(type = Operation.Type.HAND_OVER_STATION_MASTER_SAVE) + public void saveStationMasterHandOverInfo(Simulation simulation, SupervisorHandOverInfo.StationMasterDetailInfo detailInfo) { + railBookService.saveHandOverInfo(simulation, detailInfo); + } + + /** + * 获取车号长交接班记录 + */ + @OperateHandlerMapping(type = Operation.Type.HAND_OVER_STATION_MASTER_QUERY) + public List queryStationMasterHandOverInfo(Simulation simulation, String stationCode) { + return railBookService.queryHandOverInfo(simulation, stationCode, SupervisorHandOverInfo.HandOverType.STATION_MASTER); + } } diff --git a/src/main/java/club/joylink/rtss/simulation/cbtc/CTC/service/RailBookService.java b/src/main/java/club/joylink/rtss/simulation/cbtc/CTC/service/RailBookService.java new file mode 100644 index 000000000..415abdae9 --- /dev/null +++ b/src/main/java/club/joylink/rtss/simulation/cbtc/CTC/service/RailBookService.java @@ -0,0 +1,66 @@ +package club.joylink.rtss.simulation.cbtc.CTC.service; + +import club.joylink.rtss.simulation.cbtc.CTC.data.book.EquipmentConstructionInfo; +import club.joylink.rtss.simulation.cbtc.CTC.data.book.KeyLinkControlInfo; +import club.joylink.rtss.simulation.cbtc.CTC.data.book.SupervisorHandOverInfo; +import club.joylink.rtss.simulation.cbtc.Simulation; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 非正常情况接发列车关键环节控制表 + */ +@Service +public class RailBookService { + + /** + * 保存非正常情况接发列车关键环节控制表 + */ + public void saveKeyLine(Simulation simulation, KeyLinkControlInfo.DetailInfo detailInfo) { + simulation.getCtcRepository().getKeyLinkControlInfo().saveDetailInfo(detailInfo); + } + + /** + * 更新非正常情况接发列车关键环节控制表 + */ + public void updateKeyLine(Simulation simulation, KeyLinkControlInfo.DetailInfo detailInfo) { + simulation.getCtcRepository().getKeyLinkControlInfo().updateDetailInfo(detailInfo); + } + + /** + * 查询非正常情况接发列车关键环节控制表 + */ + public List queryKeyLine(Simulation simulation, String stationCode) { + return simulation.getCtcRepository().getKeyLinkControlInfo().getDetailInfoList(stationCode); + } + + /** + * 保存行车设备施工登记 + */ + public void saveEquipmentConstructionInfo(Simulation simulation, EquipmentConstructionInfo.ConstructionInfo detailInfo) { + simulation.getCtcRepository().getEquipmentConstructionInfo().saveDetailInfo(detailInfo); + } + + /** + * 获取行车设备施工登记信息列表 + */ + public List queryEquipmentConstructionInfo(Simulation simulation, String stationCode) { + return simulation.getCtcRepository().getEquipmentConstructionInfo().getDetailInfoList(stationCode); + } + + /** + * 保存交接班记录信息 + */ + public void saveHandOverInfo(Simulation simulation, SupervisorHandOverInfo.CommonInfo handoverInfo) { + simulation.getCtcRepository().getSupervisorHandOverInfo().saveDetailInfo(handoverInfo); + } + + /** + * 获取车站对应类型的交接薄记录信息 + */ + public List queryHandOverInfo(Simulation simulation, String stationCode, SupervisorHandOverInfo.HandOverType type) { + return simulation.getCtcRepository().getSupervisorHandOverInfo().getDetailInfoList(stationCode, type); + } + +}