Merge remote-tracking branch 'origin/master'

This commit is contained in:
walker-sheng 2020-11-19 13:58:44 +08:00
commit d1b2d4fde0
29 changed files with 288 additions and 534 deletions

View File

@ -3,6 +3,7 @@ package club.joylink.rtss.controller;
import club.joylink.rtss.constants.RoleEnum;
import club.joylink.rtss.controller.advice.AuthenticateInterceptor;
import club.joylink.rtss.controller.advice.Role;
import club.joylink.rtss.runplan.newdraw.RunPlanInput;
import club.joylink.rtss.services.IRunPlanDraftService;
import club.joylink.rtss.vo.LoginUserInfoVO;
import club.joylink.rtss.vo.UserVO;

View File

@ -3,7 +3,6 @@ package club.joylink.rtss.controller;
import club.joylink.rtss.services.IScriptService;
import club.joylink.rtss.vo.client.PageVO;
import club.joylink.rtss.vo.client.script.ScriptQueryVO;
import club.joylink.rtss.vo.client.script.ScriptVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;

View File

@ -6,7 +6,6 @@ import club.joylink.rtss.services.IScriptDraftService;
import club.joylink.rtss.vo.UserVO;
import club.joylink.rtss.vo.client.PageQueryVO;
import club.joylink.rtss.vo.client.PageVO;
import club.joylink.rtss.vo.client.script.ScriptNewVO;
import club.joylink.rtss.vo.client.script.ScriptVO;
import club.joylink.rtss.vo.client.validGroup.ScriptCreateCheck;
import io.swagger.annotations.Api;
@ -40,7 +39,7 @@ public class ScriptDraftController {
@ApiOperation(value = "通过id查询剧本基础信息")
@GetMapping(path = "/{id}")
public ScriptNewVO getBasicInfoById(@PathVariable Long id) {
public ScriptVO getBasicInfoById(@PathVariable Long id) {
return iScriptDraftService.getBasicInfo(id);
}

View File

@ -2,7 +2,7 @@ package club.joylink.rtss.controller.script;
import club.joylink.rtss.services.script.IScriptService2;
import club.joylink.rtss.vo.client.PageVO;
import club.joylink.rtss.vo.client.script.ScriptNewVO;
import club.joylink.rtss.vo.client.script.ScriptVO;
import club.joylink.rtss.vo.client.script.ScriptQueryVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
@ -23,13 +23,13 @@ public class ScriptController2 {
@ApiOperation(value = "分页查询上线的剧本")
@GetMapping(path = "/paging/online")
public PageVO<ScriptNewVO> pagingQueryOnlineScript(ScriptQueryVO scriptQueryVO) {
public PageVO<ScriptVO> pagingQueryOnlineScript(ScriptQueryVO scriptQueryVO) {
return iScriptService2.pagingQueryOnlineScript(scriptQueryVO);
}
@ApiOperation(value = "通过id查询剧本详细信息")
@GetMapping(path = "/{id}/detail")
public ScriptNewVO getDetailInfoById(@PathVariable @NotNull Long id) {
public ScriptVO getDetailInfoById(@PathVariable @NotNull Long id) {
return iScriptService2.getDetailForClientById(id);
}
}

View File

@ -9,7 +9,7 @@ import club.joylink.rtss.vo.UserVO;
import club.joylink.rtss.vo.client.script.MapLocationVO;
import club.joylink.rtss.vo.client.script.ScriptActionNewUpdateVO;
import club.joylink.rtss.vo.client.script.ScriptActionNewVO;
import club.joylink.rtss.vo.client.script.ScriptNewVO;
import club.joylink.rtss.vo.client.script.ScriptVO;
import club.joylink.rtss.vo.client.simulationv1.SimulationMemberVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
@ -156,7 +156,7 @@ public class ScriptSimulationController {
@ApiOperation(value = "获取仿真中加载的剧本详情")
@GetMapping("/{group}/scriptDetail")
public ScriptNewVO getScriptDetail(@PathVariable String group) {
public ScriptVO getScriptDetail(@PathVariable String group) {
return iScriptSimulationService.getScriptDetail(group);
}

View File

@ -7,9 +7,8 @@ import club.joylink.rtss.entity.ScriptDraftWithBLOBs;
import club.joylink.rtss.vo.UserVO;
import club.joylink.rtss.vo.client.PageQueryVO;
import club.joylink.rtss.vo.client.PageVO;
import club.joylink.rtss.vo.client.script.ScriptNewVO;
import club.joylink.rtss.vo.client.script.ScriptQueryVO;
import club.joylink.rtss.vo.client.script.ScriptVO;
import club.joylink.rtss.vo.client.script.ScriptQueryVO;
public interface IScriptDraftService {
@ -34,7 +33,7 @@ public interface IScriptDraftService {
* @param id
* @return
*/
ScriptNewVO getBasicInfo(Long id);
ScriptVO getBasicInfo(Long id);
/**
* 更新剧本基本信息
@ -60,13 +59,6 @@ public interface IScriptDraftService {
ScriptBO getScriptBO(Long id, Simulation simulation);
/**
* 更新地图详细数据
* @param id
* @param scriptVO
*/
void updateScriptDetailData(Long id, ScriptVO scriptVO);
/**
* 更新新版剧本详细数据
*/

View File

@ -6,7 +6,6 @@ import club.joylink.rtss.entity.ScriptDraftWithBLOBs;
import club.joylink.rtss.vo.UserVO;
import club.joylink.rtss.vo.client.PageVO;
import club.joylink.rtss.vo.client.script.ScriptQueryVO;
import club.joylink.rtss.vo.client.script.ScriptVO;
public interface IScriptService {

View File

@ -1,11 +1,11 @@
package club.joylink.rtss.services;
import club.joylink.rtss.vo.client.script.ScriptVO;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import club.joylink.rtss.constants.BusinessConsts;
import club.joylink.rtss.dao.*;
import club.joylink.rtss.entity.*;
import club.joylink.rtss.util.ConvertUtil;
import club.joylink.rtss.vo.LoginUserInfoVO;
import club.joylink.rtss.vo.UserVO;
import club.joylink.rtss.vo.client.*;
@ -13,7 +13,7 @@ import club.joylink.rtss.vo.client.map.MapVO;
import club.joylink.rtss.vo.client.runplan.RunPlanQueryVO;
import club.joylink.rtss.vo.client.runplan.RunPlanVO;
import club.joylink.rtss.vo.client.script.ScriptQueryVO;
import club.joylink.rtss.vo.client.script.ScriptVO;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@ -23,7 +23,9 @@ import org.springframework.util.ObjectUtils;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
@Slf4j
@Service
public class ReleaseReviewService implements IReleaseReviewService {
@Autowired
@ -78,7 +80,7 @@ public class ReleaseReviewService implements IReleaseReviewService {
LsDraftLessonExample example = new LsDraftLessonExample();
LsDraftLessonExample.Criteria criteria = example.createCriteria().andStatusEqualTo(BusinessConsts.ReleaseReview.RELEASE_STATUS_02);
if (!ObjectUtils.isEmpty(queryVO.getMapId())){
MapVO mapVO = iMapService.getMapInfoById(ConvertUtil.str2Long(queryVO.getMapId()));
MapVO mapVO = iMapService.getMapInfoById(queryVO.getMapId());
criteria.andMapIdEqualTo(mapVO.getId());
}
if (!ObjectUtils.isEmpty(queryVO.getLessonName())) {
@ -99,7 +101,7 @@ public class ReleaseReviewService implements IReleaseReviewService {
Page<LsDraftLesson> lessonPage = (Page<LsDraftLesson>) lsDraftLessonDAO.selectByExample(example);
List<LessonVO> lessonVOList = LessonVO.convert2VO(lessonPage.getResult());
for (LessonVO lessonVO : lessonVOList) {
UserVO userVO = iSysUserService.findUserById(ConvertUtil.str2Long(lessonVO.getCreatorId()));
UserVO userVO = iSysUserService.findUserById(lessonVO.getCreatorId());
lessonVO.setUserName(userVO.getName());
MapVO mapVO = iMapService.getMapInfoById(lessonVO.getMapId());
lessonVO.setCityCode(mapVO.getCityCode());
@ -171,10 +173,93 @@ public class ReleaseReviewService implements IReleaseReviewService {
lessonVOS.add(new LessonVO(lsDraftLesson));
List<LessonChapterVO> chapterVos = this.draftLessonChapterDAO.selectChapterTrainingByLessonId(id);
// 构建课程树
List<TreeNode> treeNodes = ConvertUtil.buildLessonTreeList(lessonVOS, chapterVos);
List<TreeNode> treeNodes = buildLessonTreeList(lessonVOS, chapterVos);
return treeNodes;
}
private List<TreeNode> buildLessonTreeList(List<LessonVO> lessonVOS, List<LessonChapterVO> chapterVos) {
List<TreeNode> tree = new ArrayList<>();
List<LessonChapterVO> chapterTreeList = constructTree(chapterVos);
// 构造树节点
lessonVOS.forEach(lesson -> {
for (LessonChapterVO lessonChapterVO : chapterTreeList) {
if (lesson.getId().equals(lessonChapterVO.getLessonId())) {
lesson.addChapter(lessonChapterVO);
}
}
tree.add(buildTree(lesson));
});
sortTree(tree);
return tree;
}
/**
* 将章节列表构建成章节列表树
*/
private static List<LessonChapterVO> constructTree(List<LessonChapterVO> chapterVoList) {
List<LessonChapterVO> tree = new ArrayList<>();
if (!CollectionUtils.isEmpty(chapterVoList)) {
chapterVoList.forEach(chapterVo -> {
if (chapterVo.getParentId() == 0) {
tree.add(chapterVo);
} else {
Optional<LessonChapterVO> first = chapterVoList.stream()
.filter(chapterVO -> chapterVO.getId().equals(chapterVo.getParentId())).findFirst();
if (first.isPresent()) {
first.get().addChild(chapterVo);
} else {
log.warn(String.format("获取父级章节为null父id为%s", chapterVo.getParentId()));
}
}
});
}
return tree;
}
/**
* 构造课程节点
* @param lesson
* @return
*/
private TreeNode buildTree(LessonVO lesson) {
TreeNode node = TreeNode.buildLessonNode(lesson);
if(!CollectionUtils.isEmpty(lesson.getChapters())) {
lesson.getChapters().forEach(chapter -> node.addChild(buildTree(chapter)));
}
return node;
}
/**
* 构造章节节点
* @param chapter
* @return
*/
private static TreeNode buildTree(LessonChapterVO chapter) {
TreeNode node = TreeNode.buildChapterNode(chapter);
if(!CollectionUtils.isEmpty(chapter.getTrainingVos())) {
chapter.getTrainingVos().forEach(training -> node.addChild(TreeNode.buildTrainingNode(training)));
}
if(!CollectionUtils.isEmpty(chapter.getChildren())) {
chapter.getChildren().forEach(child -> node.addChild(buildTree(child)));
}
return node;
}
/**
* 树排序
*/
private void sortTree(List<TreeNode> list) {
if(!CollectionUtils.isEmpty(list)) {
list.sort((o1, o2) -> {
if (null == o1.getOrder() || null == o2.getOrder()) {
return 0;
}
return o1.getOrder().compareTo(o2.getOrder());
});
list.forEach(tree -> sortTree(tree.getChildren()));
}
}
//---------------剧本发布审核----------------
/**

View File

@ -1,10 +1,8 @@
package club.joylink.rtss.services;
import club.joylink.rtss.exception.BusinessExceptionAssertEnum;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import com.joylink.base.exception.BusinessException;
import com.joylink.base.exception.DBException;
import com.joylink.base.exception.constant.ExceptionMapping;
import club.joylink.rtss.simulation.cbtc.Simulation;
import club.joylink.rtss.simulation.cbtc.script.ScriptBO;
import club.joylink.rtss.simulation.cbtc.script.ScriptUpdateVO;
@ -13,13 +11,11 @@ import club.joylink.rtss.dao.ScriptDraftDAO;
import club.joylink.rtss.entity.ScriptDraft;
import club.joylink.rtss.entity.ScriptDraftExample;
import club.joylink.rtss.entity.ScriptDraftWithBLOBs;
import club.joylink.rtss.util.ConvertUtil;
import club.joylink.rtss.vo.UserVO;
import club.joylink.rtss.vo.client.PageQueryVO;
import club.joylink.rtss.vo.client.PageVO;
import club.joylink.rtss.vo.client.script.ScriptNewVO;
import club.joylink.rtss.vo.client.script.ScriptQueryVO;
import club.joylink.rtss.vo.client.script.ScriptVO;
import club.joylink.rtss.vo.client.script.ScriptQueryVO;
import org.springframework.util.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@ -55,113 +51,79 @@ public class ScriptDraftService implements IScriptDraftService {
example.createCriteria().andMapIdEqualTo(mapId)
.andCreatorIdEqualTo(user.getId());
Page<ScriptDraft> page = (Page<ScriptDraft>) scriptDraftDAO.selectByExample(example);
List<ScriptVO> scriptVOList = ScriptVO.convertDraft2VOList(page.getResult());
List<ScriptVO> scriptVOList = ScriptVO.convertFromDraftList(page.getResult());
return PageVO.convert(page, scriptVOList);
}
@Override
public String createScript(ScriptVO scriptVO, UserVO user) {
checkNameRepeat(null, scriptVO.getName(), scriptVO.getMapId(), user);
ScriptDraftWithBLOBs scriptDraft = scriptVO.convert2Draft();
ScriptDraftWithBLOBs scriptDraft = scriptVO.convert2CreateDraft();
scriptDraft.setCreatorId(user.getId());
scriptDraft.setCreateTime(LocalDateTime.now());
scriptDraft.setStatus(BusinessConsts.ReleaseReview.RELEASE_STATUS_01);
scriptDraftDAO.insert(scriptDraft);
return ConvertUtil.long2Str(scriptDraft.getId());
return scriptDraft.getId().toString();
}
@Override
public ScriptNewVO getBasicInfo(Long id) {
ScriptDraft scriptDraft = scriptDraftDAO.selectByPrimaryKey(id);
if (Objects.isNull(scriptDraft)) {
throw new DBException(ExceptionMapping.DATA_NOT_EXIST);
}
return new ScriptNewVO(scriptDraft);
public ScriptVO getBasicInfo(Long id) {
ScriptDraftWithBLOBs scriptDraftWithBLOBs = getEntityById(id);
return new ScriptVO((ScriptDraft)scriptDraftWithBLOBs);
}
@Override
public void updateScriptInfo(Long id, ScriptUpdateVO updateVO, UserVO user) {
checkNameRepeat(id, updateVO.getName(), updateVO.getMapId(), user);
ScriptDraft scriptDraft = scriptDraftDAO.selectByPrimaryKey(id);
if (Objects.isNull(scriptDraft)) {
throw new DBException(ExceptionMapping.DATA_NOT_EXIST);
}
ScriptDraftWithBLOBs scriptDraftWithBLOBs = getEntityById(id);
boolean change = false;
if (!Objects.equals(scriptDraft.getName(), updateVO.getName())) {
scriptDraft.setName(updateVO.getName());
if (!Objects.equals(scriptDraftWithBLOBs.getName(), updateVO.getName())) {
scriptDraftWithBLOBs.setName(updateVO.getName());
change = true;
}
if (!Objects.equals(scriptDraft.getDescription(), updateVO.getDescription())) {
scriptDraft.setDescription(updateVO.getDescription());
if (!Objects.equals(scriptDraftWithBLOBs.getDescription(), updateVO.getDescription())) {
scriptDraftWithBLOBs.setDescription(updateVO.getDescription());
change = true;
}
if (!Objects.equals(scriptDraft.getFullMarksDuration(), updateVO.getFullMarksDuration())) {
scriptDraft.setFullMarksDuration(updateVO.getFullMarksDuration());
if (!Objects.equals(scriptDraftWithBLOBs.getFullMarksDuration(), updateVO.getFullMarksDuration())) {
scriptDraftWithBLOBs.setFullMarksDuration(updateVO.getFullMarksDuration());
change = true;
}
if (!Objects.equals(scriptDraft.getPassingGradeDuration(), updateVO.getPassingGradeDuration())) {
scriptDraft.setPassingGradeDuration(updateVO.getPassingGradeDuration());
if (!Objects.equals(scriptDraftWithBLOBs.getPassingGradeDuration(), updateVO.getPassingGradeDuration())) {
scriptDraftWithBLOBs.setPassingGradeDuration(updateVO.getPassingGradeDuration());
change = true;
}
if (!Objects.equals(scriptDraft.getZeroDuration(), updateVO.getZeroDuration())) {
scriptDraft.setZeroDuration(updateVO.getZeroDuration());
if (!Objects.equals(scriptDraftWithBLOBs.getZeroDuration(), updateVO.getZeroDuration())) {
scriptDraftWithBLOBs.setZeroDuration(updateVO.getZeroDuration());
change = true;
}
if (change) {
scriptDraft.setStatus(BusinessConsts.ReleaseReview.RELEASE_STATUS_01);
scriptDraftDAO.updateByPrimaryKey(scriptDraft);
scriptDraftWithBLOBs.setStatus(BusinessConsts.ReleaseReview.RELEASE_STATUS_01);
scriptDraftDAO.updateByPrimaryKey(scriptDraftWithBLOBs);
}
}
@Override
public void deleteScript(Long id, UserVO user) {
ScriptDraft scriptDraft = scriptDraftDAO.selectByPrimaryKey(id);
if (!scriptDraft.getCreatorId().equals(user.getId())) {
throw new BusinessException(ExceptionMapping.ILLEGAL_OPERATION);
}
ScriptDraftWithBLOBs entity = getEntityById(id);
BusinessExceptionAssertEnum.INVALID_OPERATION.assertTrue(entity.getCreatorId().equals(user.getId()),
String.format("用户[%s]尝试删除用户[%s]的剧本[%s]", user.getId(), entity.getCreatorId(), id));
scriptDraftDAO.deleteByPrimaryKey(id);
}
@Override
public ScriptVO getScriptDetail(Long id) {
ScriptDraftWithBLOBs scriptDraftWithBLOBs = scriptDraftDAO.selectByPrimaryKey(id);
if (Objects.isNull(scriptDraftWithBLOBs)) {
throw new DBException(ExceptionMapping.DATA_NOT_EXIST);
}
return new ScriptVO(scriptDraftWithBLOBs);
return new ScriptVO(getEntityById(id));
}
@Override
public ScriptBO getScriptBO(Long id, Simulation simulation) {
ScriptDraftWithBLOBs scriptDraftWithBLOBs = scriptDraftDAO.selectByPrimaryKey(id);
if (Objects.isNull(scriptDraftWithBLOBs)) {
throw new DBException(ExceptionMapping.DATA_NOT_EXIST);
}
return new ScriptBO(scriptDraftWithBLOBs, simulation);
}
@Override
public void updateScriptDetailData(Long id, ScriptVO scriptVO) {
ScriptDraftWithBLOBs scriptDraftWithBLOBs = scriptDraftDAO.selectByPrimaryKey(id);
if (Objects.isNull(scriptDraftWithBLOBs)) {
throw new DBException(ExceptionMapping.DATA_NOT_EXIST);
}
scriptDraftWithBLOBs.setBgScenesJson(scriptVO.getBgScenesJson());
scriptDraftWithBLOBs.setFinalScenesJson(scriptVO.getFinalScenesJson());
scriptDraftWithBLOBs.setMapLocationJson(scriptVO.getMapLocationJson());
scriptDraftWithBLOBs.setMembersJson(scriptVO.getMembersJson());
scriptDraftWithBLOBs.setPlayersJson(scriptVO.getPlayersJson());
scriptDraftWithBLOBs.setActionsJson(scriptVO.getActionsJson());
scriptDraftWithBLOBs.setStatus(BusinessConsts.ReleaseReview.RELEASE_STATUS_01);
scriptDraftDAO.updateByPrimaryKeyWithBLOBs(scriptDraftWithBLOBs);
return new ScriptBO(getEntityById(id), simulation);
}
@Override
public void updateScriptDetailData(Long id, ScriptBO scriptBO) {
ScriptDraftWithBLOBs script = scriptDraftDAO.selectByPrimaryKey(id);
if (Objects.isNull(script)) {
throw new DBException(ExceptionMapping.DATA_NOT_EXIST);
}
ScriptDraftWithBLOBs script = getEntityById(id);
script.setBgScenesJson(scriptBO.getBgScenesJson());
script.setFinalScenesJson(scriptBO.getFinalScenesJson());
script.setMapLocationJson(scriptBO.getMapLocationJson());
@ -174,17 +136,14 @@ public class ScriptDraftService implements IScriptDraftService {
@Override
public void publish(Long id, String name, UserVO user) {
ScriptDraftWithBLOBs scriptDraftWithBLOBs = scriptDraftDAO.selectByPrimaryKey(id);
if (Objects.isNull(scriptDraftWithBLOBs)) {
throw new DBException(ExceptionMapping.DATA_NOT_EXIST);
}
ScriptDraftWithBLOBs entity = getEntityById(id);
if (iSysUserService.isAdmin(user)) {
iScriptService.publish(scriptDraftWithBLOBs, user);
scriptDraftWithBLOBs.setStatus(BusinessConsts.ReleaseReview.RELEASE_STATUS_03);
iScriptService.publish(entity, user);
entity.setStatus(BusinessConsts.ReleaseReview.RELEASE_STATUS_03);
} else {
scriptDraftWithBLOBs.setStatus(BusinessConsts.ReleaseReview.RELEASE_STATUS_02);
entity.setStatus(BusinessConsts.ReleaseReview.RELEASE_STATUS_02);
}
scriptDraftDAO.updateByPrimaryKey(scriptDraftWithBLOBs);
scriptDraftDAO.updateByPrimaryKey(entity);
}
@Override
@ -247,9 +206,8 @@ public class ScriptDraftService implements IScriptDraftService {
@Override
public ScriptDraftWithBLOBs getEntityById(Long scriptId) {
ScriptDraftWithBLOBs scriptDraftWithBLOBs = scriptDraftDAO.selectByPrimaryKey(scriptId);
if (Objects.isNull(scriptDraftWithBLOBs)) {
throw new DBException(ExceptionMapping.DATA_NOT_EXIST);
}
BusinessExceptionAssertEnum.DATA_NOT_EXIST.assertNotNull(scriptDraftWithBLOBs,
String.format("id为[%s]的草稿剧本不存在", scriptId));
return scriptDraftWithBLOBs;
}
@ -279,8 +237,7 @@ public class ScriptDraftService implements IScriptDraftService {
criteria.andMapIdEqualTo(mapId)
.andNameEqualTo(name)
.andCreatorIdEqualTo(userVO.getId());
if (scriptDraftDAO.countByExample(draftExample) > 0) {
throw new DBException(ExceptionMapping.NAME_REPEAT);
}
BusinessExceptionAssertEnum.DATA_UNIQUE_PROPERTY_REPEAT.assertTrue(scriptDraftDAO.countByExample(draftExample) == 0,
String.format("剧本名称[%s]重复", name));
}
}

View File

@ -16,7 +16,6 @@ import club.joylink.rtss.entity.ScriptWithBLOBs;
import club.joylink.rtss.vo.UserVO;
import club.joylink.rtss.vo.client.PageVO;
import club.joylink.rtss.vo.client.script.ScriptQueryVO;
import club.joylink.rtss.vo.client.script.ScriptVO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

View File

@ -27,10 +27,9 @@ import club.joylink.rtss.vo.UserVO;
import club.joylink.rtss.vo.client.PageVO;
import club.joylink.rtss.vo.client.competition.*;
import club.joylink.rtss.vo.client.script.ScriptActionNewVO;
import club.joylink.rtss.vo.client.script.ScriptNewVO;
import club.joylink.rtss.vo.client.script.ScriptVO;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import lombok.extern.log4j.Log4j;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@ -129,7 +128,7 @@ public class CompetitionPracticalService implements ICompetitionPracticalService
* 检查数据是否正确
*/
private void checkData(CompetitionVO competitionVO) {
ScriptNewVO scriptDetail = iScriptService2.getDetailById(competitionVO.getScriptId());
ScriptVO scriptDetail = iScriptService2.getDetailById(competitionVO.getScriptId());
Map<String, ScriptActionNewVO> actionMap = scriptDetail.getActionList()
.stream().collect(Collectors.toMap(ScriptActionNewVO::getId, Function.identity()));
for (CommandPublishStatisticVO rule : competitionVO.getCommandEvaluationRuleVOs()) {

View File

@ -1,7 +1,7 @@
package club.joylink.rtss.services.script;
import club.joylink.rtss.vo.client.PageVO;
import club.joylink.rtss.vo.client.script.ScriptNewVO;
import club.joylink.rtss.vo.client.script.ScriptVO;
import club.joylink.rtss.vo.client.script.ScriptQueryVO;
public interface IScriptService2 {
@ -11,15 +11,15 @@ public interface IScriptService2 {
* @return
* @param queryVO
*/
PageVO<ScriptNewVO> pagingQueryOnlineScript(ScriptQueryVO queryVO);
PageVO<ScriptVO> pagingQueryOnlineScript(ScriptQueryVO queryVO);
/**
* 根据id查询剧本详细信息
*/
ScriptNewVO getDetailForClientById(Long id);
ScriptVO getDetailForClientById(Long id);
/**
* 根据id获取剧本基础BO对象
*/
ScriptNewVO getDetailById(Long id);
ScriptVO getDetailById(Long id);
}

View File

@ -10,7 +10,7 @@ import club.joylink.rtss.entity.Script;
import club.joylink.rtss.entity.ScriptExample;
import club.joylink.rtss.entity.ScriptWithBLOBs;
import club.joylink.rtss.vo.client.PageVO;
import club.joylink.rtss.vo.client.script.ScriptNewVO;
import club.joylink.rtss.vo.client.script.ScriptVO;
import club.joylink.rtss.vo.client.script.ScriptQueryVO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@ -25,7 +25,7 @@ public class ScriptService2 implements IScriptService2 {
private ScriptDAO scriptDAO;
@Override
public PageVO<ScriptNewVO> pagingQueryOnlineScript(ScriptQueryVO queryVO) {
public PageVO<ScriptVO> pagingQueryOnlineScript(ScriptQueryVO queryVO) {
PageHelper.startPage(queryVO.getPageNum(), queryVO.getPageSize());
ScriptExample example = new ScriptExample();
example.setOrderByClause("id desc");
@ -35,13 +35,13 @@ public class ScriptService2 implements IScriptService2 {
criteria.andMapIdEqualTo(queryVO.getMapId());
}
Page<Script> dbList = (Page<Script>) scriptDAO.selectByExample(example);
List<ScriptNewVO> scriptVOList = ScriptNewVO.convertFromPOList(dbList.getResult());
List<ScriptVO> scriptVOList = ScriptVO.convertFromPOList(dbList.getResult());
return PageVO.convert(dbList, scriptVOList);
}
@Override
public ScriptNewVO getDetailForClientById(Long id) {
ScriptNewVO vo = getDetailById(id);
public ScriptVO getDetailForClientById(Long id) {
ScriptVO vo = getDetailById(id);
vo.setBgScenesJson(null);
vo.setFinalScenesJson(null);
return vo;
@ -51,11 +51,11 @@ public class ScriptService2 implements IScriptService2 {
* 查询剧本详情
*/
@Override
public ScriptNewVO getDetailById(Long id) {
public ScriptVO getDetailById(Long id) {
ScriptWithBLOBs script = scriptDAO.selectByPrimaryKey(id);
if (Objects.isNull(script)) {
throw new DBException(ExceptionMapping.DATA_NOT_EXIST);
}
return new ScriptNewVO(script);
return new ScriptVO(script);
}
}

View File

@ -8,7 +8,7 @@ import club.joylink.rtss.vo.UserVO;
import club.joylink.rtss.vo.client.script.MapLocationVO;
import club.joylink.rtss.vo.client.script.ScriptActionNewUpdateVO;
import club.joylink.rtss.vo.client.script.ScriptActionNewVO;
import club.joylink.rtss.vo.client.script.ScriptNewVO;
import club.joylink.rtss.vo.client.script.ScriptVO;
import club.joylink.rtss.vo.client.simulationv1.SimulationMemberVO;
import java.util.List;
@ -63,7 +63,7 @@ public interface IScriptSimulationService {
/**
* 获取仿真中加载的剧本的详情
*/
ScriptNewVO getScriptDetail(String group);
ScriptVO getScriptDetail(String group);
/**
* 重新预览剧本

View File

@ -29,7 +29,7 @@ import club.joylink.rtss.vo.client.factory.SocketMessageFactory;
import club.joylink.rtss.vo.client.script.MapLocationVO;
import club.joylink.rtss.vo.client.script.ScriptActionNewUpdateVO;
import club.joylink.rtss.vo.client.script.ScriptActionNewVO;
import club.joylink.rtss.vo.client.script.ScriptNewVO;
import club.joylink.rtss.vo.client.script.ScriptVO;
import club.joylink.rtss.vo.client.simulationv1.SimulationMemberVO;
import club.joylink.rtss.websocket.StompMessageService;
import org.springframework.util.StringUtils;
@ -215,9 +215,9 @@ public class ScriptSimulationService implements IScriptSimulationService {
}
@Override
public ScriptNewVO getScriptDetail(String group) {
public ScriptVO getScriptDetail(String group) {
Simulation simulation = groupSimulationCache.getSimulationByGroup(group);
return new ScriptNewVO(simulation.getScript());
return new ScriptVO(simulation.getScript());
}
@Override
@ -374,7 +374,7 @@ public class ScriptSimulationService implements IScriptSimulationService {
@Override
public void loadScript(String group, Long scriptId) {
Simulation simulation = groupSimulationCache.getSimulationByGroup(group);
ScriptNewVO detailById = iScriptService2.getDetailById(scriptId);
ScriptVO detailById = iScriptService2.getDetailById(scriptId);
groupSimulationService.loadScenes(simulation.getGroup(), detailById.getBgScenesJson());
ScriptBO scriptBO = iScriptService.getScriptBOById(scriptId, simulation);
this.scriptCoverSimulation(simulation, scriptBO);

View File

@ -13,7 +13,7 @@ import club.joylink.rtss.simulation.cbtc.data.support.TrainStopMessage;
import club.joylink.rtss.simulation.cbtc.data.vr.VirtualRealityTrain;
import club.joylink.rtss.simulation.cbtc.exception.SimulationException;
import club.joylink.rtss.simulation.cbtc.exception.SimulationExceptionType;
import club.joylink.rtss.simulation.cbtc.onboard.ATP.NewATPService;
import club.joylink.rtss.simulation.cbtc.onboard.ATP.ATPService;
import club.joylink.rtss.simulation.cbtc.onboard.ATP.OnboardAtpApiService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
@ -36,7 +36,7 @@ public class ZCLogicLoop {
private OnboardAtpApiService onboardAtpApiService;
@Autowired
private NewATPService newATPService;
private ATPService ATPService;
@Autowired
private AtsApiService atsApiService;
@ -66,7 +66,7 @@ public class ZCLogicLoop {
}
private void checkTrainStationParkingAndSend2Ats(Simulation simulation, VirtualRealityTrain train) {
if (!train.isParking() && this.newATPService.isStopOnTargetPosition(train)) {
if (!train.isParking() && this.ATPService.isStopOnTargetPosition(train)) {
String stationName = null;
if (train.getNextStation() != null) {
stationName = train.getNextStation().getName();

View File

@ -12,8 +12,8 @@ import club.joylink.rtss.simulation.cbtc.data.map.Stand;
import club.joylink.rtss.simulation.cbtc.data.vr.VirtualRealityTrain;
import club.joylink.rtss.simulation.cbtc.exception.SimulationException;
import club.joylink.rtss.simulation.cbtc.exception.SimulationExceptionType;
import club.joylink.rtss.simulation.cbtc.onboard.ATO.service.NewATOService;
import club.joylink.rtss.simulation.cbtc.onboard.ATP.NewATPService;
import club.joylink.rtss.simulation.cbtc.onboard.ATO.service.ATOService;
import club.joylink.rtss.simulation.cbtc.onboard.ATP.ATPService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
@ -28,10 +28,10 @@ import java.util.Objects;
public class DriverOperateHandler {
@Autowired
private NewATOService newATOService;
private ATOService ATOService;
@Autowired
private NewATPService newATPService;
private ATPService ATPService;
@Autowired
private CiApiService ciApiService;
@ -60,7 +60,7 @@ public class DriverOperateHandler {
String.format("列车牵引/制动力可调整比例范围应该在[-1, 1]之间,或为紧急制动-2"));
}
if (train.isAtoOn()) {
this.newATOService.closeATO(train);
this.ATOService.closeATO(train);
}
train.setLeverPosition(percent);
}
@ -69,9 +69,9 @@ public class DriverOperateHandler {
public void trainEB(Simulation simulation, String groupNumber) {
VirtualRealityTrain train = simulation.getRepository().getOnlineTrainBy(groupNumber);
if (train.isCircuitEB()) {
this.newATPService.cancelCircuitEB(train);
this.ATPService.cancelCircuitEB(train);
} else {
this.newATPService.triggerCircuitEB(train);
this.ATPService.triggerCircuitEB(train);
}
}
@ -145,16 +145,16 @@ public class DriverOperateHandler {
driveMode));
}
}
this.newATOService.openATO(train);
this.ATOService.openATO(train);
}
@OperateHandlerMapping(type = Operation.Type.Driver_ATP_Change)
public void changeAtpStatus(Simulation simulation, String groupNumber, boolean cutOff) {
VirtualRealityTrain train = simulation.getRepository().getOnlineTrainBy(groupNumber);
if (cutOff) {
this.newATPService.cutOffAtp(train);
this.ATPService.cutOffAtp(train);
} else {
this.newATPService.openAtp(train);
this.ATPService.openAtp(train);
}
}
@ -163,7 +163,7 @@ public class DriverOperateHandler {
VirtualRealityTrain train = simulation.getRepository().getOnlineTrainBy(groupNumber);
if (train.isStop()) {
train.setAtoOn(false);
this.newATPService.turnDirectionImmediately(train);
this.ATPService.turnDirectionImmediately(train);
}
}
@ -187,14 +187,14 @@ public class DriverOperateHandler {
}
if (door.isCloseAndLock()) {
train.setDeparture(false);
newATOService.openTrainDoor(simulation, train, door);
ATOService.openTrainDoor(simulation, train, door);
}
} else {
for (Stand stand : standList) {
this.ciApiService.closeScreenDoor(simulation, stand.getCode());
}
if (!door.isCloseAndLock()) {
newATOService.closeTrainDoor(simulation, train, door);
ATOService.closeTrainDoor(simulation, train, door);
train.setDeparture(true);
}
}

View File

@ -48,7 +48,7 @@ import club.joylink.rtss.vo.client.map.newmap.MapStationNewVO;
import club.joylink.rtss.vo.client.project.ProjectDeviceVO;
import club.joylink.rtss.vo.client.runplan.*;
import club.joylink.rtss.vo.client.schedulingNew.SchedulingPlanNewVO;
import club.joylink.rtss.vo.client.script.ScriptNewVO;
import club.joylink.rtss.vo.client.script.ScriptVO;
import club.joylink.rtss.vo.client.simulationv1.SimulationMemberVO;
import club.joylink.rtss.vo.client.simulationv1.*;
import club.joylink.rtss.vo.client.training.TrainingNewVO;
@ -621,7 +621,7 @@ public class GroupSimulationServiceImpl implements GroupSimulationService {
@Override
public void loadScript(Simulation simulation, Long scriptId) {
ScriptNewVO detailById = iScriptService2.getDetailById(scriptId);
ScriptVO detailById = iScriptService2.getDetailById(scriptId);
this.loadScenes(simulation.getGroup(), detailById.getBgScenesJson());
ScriptBO scriptBO = scriptService.getScriptBOById(scriptId, simulation);
iScriptSimulationService.scriptCoverSimulation(simulation, scriptBO);

View File

@ -40,7 +40,7 @@ public class ConversationManagerService {
private IVoiceService iVoiceService;
@Autowired
private NewSimulationVoiceHandler newSimulationVoiceHandler;
private SimulationVoiceHandler simulationVoiceHandler;
@Autowired
private ScriptExecuteService scriptExecuteService;
@ -253,7 +253,7 @@ public class ConversationManagerService {
SimulationMember member = simulation.getSimulationMemberByUserId(userVO.getId());
VoiceRecognitionResult recognitionResult = this.iVoiceService.voiceRecognition(file, "");
String upperCaseResult = recognitionResult.getResult().toUpperCase();
String handledContent = this.newSimulationVoiceHandler.handle(upperCaseResult);
String handledContent = this.simulationVoiceHandler.handle(upperCaseResult);
this.chat(simulation, conversation, member, handledContent, recognitionResult.getFilePath());
}

View File

@ -9,7 +9,7 @@ import java.util.regex.Pattern;
@Slf4j
@Component
public class NewSimulationVoiceHandler {
public class SimulationVoiceHandler {
static List<Replacement> replacementList;

View File

@ -1,6 +1,6 @@
package club.joylink.rtss.simulation.cbtc.onboard.ATO;
import club.joylink.rtss.simulation.cbtc.onboard.ATO.service.NewATOService;
import club.joylink.rtss.simulation.cbtc.onboard.ATO.service.ATOService;
import club.joylink.rtss.simulation.cbtc.Simulation;
import club.joylink.rtss.simulation.cbtc.data.vr.VirtualRealityTrain;
import lombok.extern.slf4j.Slf4j;
@ -14,7 +14,7 @@ import java.util.List;
@Slf4j
public class ATOLogicLoop {
@Autowired
private NewATOService newATOService;
private ATOService ATOService;
public void run(Simulation simulation) {
// long start = System.currentTimeMillis();
@ -22,7 +22,7 @@ public class ATOLogicLoop {
if (!CollectionUtils.isEmpty(onlineTrain)) {
onlineTrain.forEach(train -> {
if (train.isAtoOn()) {
newATOService.ATO(train);
ATOService.ATO(train);
}
});
}

View File

@ -28,7 +28,7 @@ import java.util.Objects;
*/
@Component
@Slf4j
public class NewATOService {
public class ATOService {
@Autowired
private ApplicationContext applicationContext;

View File

@ -19,7 +19,7 @@ import club.joylink.rtss.simulation.cbtc.data.vr.VirtualRealityTrain;
import club.joylink.rtss.simulation.cbtc.event.SimulationATPAutoCancelEBEvent;
import club.joylink.rtss.simulation.cbtc.event.SimulationTrainIsAbout2ArriveEvent;
import club.joylink.rtss.simulation.cbtc.member.SimulationMember;
import club.joylink.rtss.simulation.cbtc.onboard.ATO.service.NewATOService;
import club.joylink.rtss.simulation.cbtc.onboard.ATO.service.ATOService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
@ -34,7 +34,7 @@ import java.util.Objects;
public class ATPLogicLoop {
@Autowired
private NewATPService newATPService;
private ATPService ATPService;
@Autowired
private AtsApiService atsApiService;
@ -43,7 +43,7 @@ public class ATPLogicLoop {
private GroundAtpApiService groundAtpApiService;
@Autowired
private NewATOService newATOService;
private ATOService ATOService;
@Autowired
private ApplicationContext applicationContext;
@ -55,9 +55,9 @@ public class ATPLogicLoop {
for (VirtualRealityTrain train : onlineTrain) {
if (!train.isPowerOn()) { //如果列车断电
if (!train.isStop() && !train.isEB()) {
newATPService.triggerSignalEB(train);
ATPService.triggerSignalEB(train);
}
this.newATOService.closeATO(train);
this.ATOService.closeATO(train);
continue;
}
this.onboardLogicRun2(simulation, train);
@ -79,7 +79,7 @@ public class ATPLogicLoop {
if (train.isCbtcMaMiss()) { //cbtc级别ma丢失
if (train.isCBTC()) { //并且列车处于CBTC级别
train.setRunLevel(RunLevel.IL);
newATPService.triggerSignalEB(train);
ATPService.triggerSignalEB(train);
train.setMa(null);
}
} else {
@ -100,7 +100,7 @@ public class ATPLogicLoop {
private void driveLogicRun(Simulation simulation, VirtualRealityTrain train) {
if (train.isChangeEnds() && train.isStop()) {
// 列车换端中
this.newATPService.changeEndsProgress(train);
this.ATPService.changeEndsProgress(train);
return;
}
if (!train.isAtoOn()) {
@ -125,7 +125,7 @@ public class ATPLogicLoop {
this.checkOnTransferAndSend2Ats(simulation, train, headPosition, tailPosition);
if (!train.isBreaking()) { // 制动状态
// 施加常规制动防止倒溜
this.newATOService.openBreaking(train);
this.ATOService.openBreaking(train);
}
if (!train.isParkingAt()) {
this.checkParkingAndSend2Ats(simulation, train);
@ -138,7 +138,7 @@ public class ATPLogicLoop {
if (train.getLeverPosition() == 0 && train.getMa() != null) {
Float distance = CalculateService.calculateDistance(headPosition, train.getMa().getEnd().getEndPosition(), right);
if (distance != null && distance > 100) {
newATPService.cancelSignalEB(train);
ATPService.cancelSignalEB(train);
applicationContext.publishEvent(new SimulationATPAutoCancelEBEvent(this, simulation, train));
log.info(String.format("列车[%s]移动授权距离超过100mEB自动缓解", train.getGroupNumber()));
}
@ -148,7 +148,7 @@ public class ATPLogicLoop {
}
if (this.checkConditionToMove2(simulation, train)) { // 可以启动
this.newATOService.closeBreaking(train);
this.ATOService.closeBreaking(train);
} else {
return;
}
@ -160,7 +160,7 @@ public class ATPLogicLoop {
// 判断列车是否跳站
this.checkTrainJumpAndSend2Ats(simulation, train, headPosition, tailPosition, right);
if (train.isAtpOn()) {
this.newATPService.speedProtect(simulation, train);
this.ATPService.speedProtect(simulation, train);
}
if (train.isEB()) {
return;
@ -168,11 +168,11 @@ public class ATPLogicLoop {
}
// 列车ATO自动驾驶逻辑运行
this.newATOService.ATO(train);
this.ATOService.ATO(train);
}
private void checkParkingAndSend2Ats(Simulation simulation, VirtualRealityTrain train) {
if (!train.isParkingAt() && this.newATPService.isStopOnTargetPosition(train)) {
if (!train.isParkingAt() && this.ATPService.isStopOnTargetPosition(train)) {
String stationName = null;
if (train.getNextStation() != null) {
stationName = train.getNextStation().getName();
@ -197,7 +197,7 @@ public class ATPLogicLoop {
if (train.isJump()) { // 列车跳停,跳过开门
train.earlyDeparture();
} else {
this.newATOService.syncOpenDoor(simulation, train);
this.ATOService.syncOpenDoor(simulation, train);
if (this.isAllDoorOpen(simulation, train)) {
train.nextParkedTrainActivity();
}
@ -218,7 +218,7 @@ public class ATPLogicLoop {
if ((Objects.nonNull(signal) && signal.isNormalOpen()) ||
(train.isRMMode() || train.isNRMMode())) { // 进路信号机正常开放 列车为RM/NRM
// 可以关门
this.newATOService.syncCloseDoor(simulation, train);
this.ATOService.syncCloseDoor(simulation, train);
if (this.isAllDoorClose(simulation, train)) {
train.nextParkedTrainActivity();
}
@ -346,7 +346,7 @@ public class ATPLogicLoop {
if (train.isParking()) {
train.setParking(false);
}
this.newATPService.speedProtect(simulation, train);
this.ATPService.speedProtect(simulation, train);
if (train.isEB()) {
return;
}
@ -364,7 +364,7 @@ public class ATPLogicLoop {
Float distance = CalculateService.calculateDistance(headPosition, train.getMa().getEnd().getEndPosition(), right);
if (distance != null) {
if (distance > 100) {
newATPService.cancelSignalEB(train);
ATPService.cancelSignalEB(train);
applicationContext.publishEvent(new SimulationATPAutoCancelEBEvent(this, simulation, train));
log.info(String.format("列车[%s]移动授权距离超过200mEB自动缓解", train.getGroupNumber()));
}
@ -375,7 +375,7 @@ public class ATPLogicLoop {
// 列车已经停车
if (!train.isBreaking()) {
// 施加常规制动防止倒溜
this.newATOService.openBreaking(train);
this.ATOService.openBreaking(train);
}
if (!train.isParking()) {
// 检查列车是否站台停靠
@ -395,7 +395,7 @@ public class ATPLogicLoop {
// log.debug(String.format("列车[%s]发车条件不满足", train.getGroupNumber()));
return;
} else {
this.newATOService.closeBreaking(train);
this.ATOService.closeBreaking(train);
}
}
break;
@ -411,7 +411,7 @@ public class ATPLogicLoop {
if (train.isParking()) {
train.setParking(false);
}
this.newATPService.speedProtect(simulation, train);
this.ATPService.speedProtect(simulation, train);
if (train.isEB()) {
return;
}
@ -485,7 +485,7 @@ public class ATPLogicLoop {
// 检查列车是否在转换轨
this.checkOnTransferAndSend2Ats(simulation, train, headPosition, tailPosition);
// 列车ATO自动驾驶逻辑运行
this.newATOService.ATO(train);
this.ATOService.ATO(train);
}
/**
@ -584,11 +584,11 @@ public class ATPLogicLoop {
if (train.isDoorClosing()) {
return;
}
this.newATOService.syncCloseDoor(simulation, train);
this.ATOService.syncCloseDoor(simulation, train);
}
private void checkTrainStationParkingAndSend2Ats(Simulation simulation, VirtualRealityTrain train) {
if (!train.isParking() && this.newATPService.isStopOnTargetPosition(train)) {
if (!train.isParking() && this.ATPService.isStopOnTargetPosition(train)) {
String stationName = null;
if (train.getNextStation() != null) {
stationName = train.getNextStation().getName();

View File

@ -10,7 +10,7 @@ import club.joylink.rtss.simulation.cbtc.data.support.MovementAuthority;
import club.joylink.rtss.simulation.cbtc.data.support.SectionPosition;
import club.joylink.rtss.simulation.cbtc.data.vr.VirtualRealityTrain;
import club.joylink.rtss.simulation.cbtc.onboard.ATO.SpeedCurve;
import club.joylink.rtss.simulation.cbtc.onboard.ATO.service.NewATOService;
import club.joylink.rtss.simulation.cbtc.onboard.ATO.service.ATOService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@ -22,10 +22,10 @@ import java.util.Objects;
*/
@Component
@Slf4j
public class NewATPService {
public class ATPService {
@Autowired
private NewATOService newATOService;
private ATOService ATOService;
/**
* 更新列车移动授权
@ -171,7 +171,7 @@ public class NewATPService {
* 触发电路紧急停车
*/
public void triggerCircuitEB(VirtualRealityTrain train) {
newATOService.closeATO(train);
ATOService.closeATO(train);
train.setCircuitEB(true);
train.emergencyBreak();
}
@ -195,7 +195,7 @@ public class NewATPService {
*/
public void cutOffAtp(VirtualRealityTrain train) {
if (train.isAtoOn()) {
newATOService.closeATO(train);
ATOService.closeATO(train);
}
train.setAtpOn(false);
if (!DriveMode.NRM.equals(train.getDriveMode())) {

View File

@ -11,7 +11,7 @@ import club.joylink.rtss.simulation.cbtc.data.plan.TripPlan;
import club.joylink.rtss.simulation.cbtc.data.support.MovementAuthority;
import club.joylink.rtss.simulation.cbtc.data.support.RoutePath;
import club.joylink.rtss.simulation.cbtc.data.vr.VirtualRealityTrain;
import club.joylink.rtss.simulation.cbtc.onboard.ATO.service.NewATOService;
import club.joylink.rtss.simulation.cbtc.onboard.ATO.service.ATOService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@ -25,10 +25,10 @@ import java.util.Objects;
public class OnboardAtpApiServiceImpl implements OnboardAtpApiService {
@Autowired
private NewATPService newATPService;
private ATPService ATPService;
@Autowired
private NewATOService newATOService;
private ATOService ATOService;
@Override
public void updateMA4CBTC(VirtualRealityTrain train, MovementAuthority ma) {
@ -39,7 +39,7 @@ public class OnboardAtpApiServiceImpl implements OnboardAtpApiService {
return;
}
if (train.isCBTC()) {
this.newATPService.updateMA(train, ma);
this.ATPService.updateMA(train, ma);
}
train.setCbtcMaMissDuration(0);
}
@ -50,7 +50,7 @@ public class OnboardAtpApiServiceImpl implements OnboardAtpApiService {
return;
}
if (!train.isCBTC()) {
this.newATPService.updateMA(train, ma);
this.ATPService.updateMA(train, ma);
train.setItcMaMissDuration(0);
}
}
@ -82,7 +82,7 @@ public class OnboardAtpApiServiceImpl implements OnboardAtpApiService {
train.getGroupNumber(), parkTime));
if (parkTime > 0) {
// 开屏蔽门
this.newATOService.syncOpenDoor(simulation, train);
this.ATOService.syncOpenDoor(simulation, train);
}
}
@ -206,7 +206,7 @@ public class OnboardAtpApiServiceImpl implements OnboardAtpApiService {
} else if (CalculateService.isTargetSectionOnDirectionExist(headSection, !right, targetSection)) {
if (train.isAtoOn()) { //如果开启了ato
// 如果反向调头
this.newATPService.turnDirectionStart(train);
this.ATPService.turnDirectionStart(train);
}
} else {
log.debug(String.format("列车[%s]无法到达目标轨道,根据路径判断是否调头", train.getGroupNumber()));
@ -217,7 +217,7 @@ public class OnboardAtpApiServiceImpl implements OnboardAtpApiService {
boolean pathRight = routePaths.get(0).isRight();
if (!Objects.equals(right, pathRight) && train.isAtoOn()) {
// 和计划方向不同并且开启了ATO调头
this.newATPService.turnDirectionStart(train);
this.ATPService.turnDirectionStart(train);
}
}
}

View File

@ -13,7 +13,7 @@ import club.joylink.rtss.simulation.cbtc.event.SimulationConversationChatEvent;
import club.joylink.rtss.simulation.cbtc.event.SimulationConversationExitEvent;
import club.joylink.rtss.simulation.cbtc.event.SimulationOperationMessageEvent;
import club.joylink.rtss.simulation.cbtc.member.SimulationMember;
import club.joylink.rtss.simulation.cbtc.onboard.ATO.service.NewATOService;
import club.joylink.rtss.simulation.cbtc.onboard.ATO.service.ATOService;
import club.joylink.rtss.services.IVoiceService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
@ -41,7 +41,7 @@ public class RobotListenerHandler {
private ConversationManagerService conversationManagerService;
@Autowired
private NewATOService newATOService;
private ATOService ATOService;
@Autowired
@Qualifier("baiDuVoiceService")

View File

@ -31,7 +31,7 @@ public class ReleaseReviewQueryVO extends PageQueryVO {
/**
* 地图id
*/
private String mapId;
private Long mapId;
/**
* 驳回原因
*/

View File

@ -1,208 +0,0 @@
package club.joylink.rtss.vo.client.script;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import club.joylink.rtss.simulation.cbtc.member.SimulationMemberPO;
import club.joylink.rtss.simulation.cbtc.script.ScriptActionPO;
import club.joylink.rtss.simulation.cbtc.script.ScriptBO;
import club.joylink.rtss.entity.Script;
import club.joylink.rtss.entity.ScriptDraft;
import club.joylink.rtss.entity.ScriptDraftWithBLOBs;
import club.joylink.rtss.entity.ScriptWithBLOBs;
import club.joylink.rtss.util.ConvertUtil;
import club.joylink.rtss.util.JsonUtils;
import club.joylink.rtss.vo.client.simulationv1.SimulationMemberVO;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import org.springframework.util.StringUtils;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
@Getter
@Setter
@NoArgsConstructor
public class ScriptNewVO {
@JsonSerialize(using = ToStringSerializer.class)
private Long id;
/**
* 所属地图id
*/
@JsonSerialize(using = ToStringSerializer.class)
@ApiModelProperty(value = "所属地图id")
private Long mapId;
/**
* 剧本名称
*/
@ApiModelProperty(value = "剧本名称")
private String name;
/**
* 语言类型
*/
private String lang;
/**
* 剧本描述
*/
@ApiModelProperty(value = "剧本描述")
private String description;
/**
* 地图定位
*/
private MapLocationVO mapLocation;
/**
* 剧本场景
*/
private String bgScenesJson;
/**
* 剧本编制最终场景用于剧本编制可以从上次编制到的地方继续
*/
private String finalScenesJson;
@ApiModelProperty(value = "背景场景是否已经设置")
private boolean bgSet;
/**
* 剧本成员列表
*/
private List<SimulationMemberVO> memberList;
/**
* 剧本演出成员列表
*/
private List<SimulationMemberVO> playerList = new ArrayList<>();
/**
* 剧本动作
*/
private List<ScriptActionNewVO> actionList = new ArrayList<>();
private Integer fullMarksDuration;
private Integer passingGradeDuration;
private Integer zeroDuration;
/**
* 状态
*/
@ApiModelProperty(value = "状态")
private String status;
/**
* 创建人id
*/
private String creatorId;
private String creatorName;
/**
* 创建时间
*/
private LocalDateTime createTime;
private String explanation;
/**
* 上传发布审核时间
*/
private LocalDateTime uploadTime;
public ScriptNewVO(ScriptBO script) {
this.id = script.getId();
this.mapId = script.getMapId();
this.name = script.getName();
this.lang = script.getLang();
this.description = script.getDescription();
this.mapLocation = script.getMapLocation();
this.bgSet = Objects.nonNull(script.getBgScenesJson());
this.memberList = SimulationMemberVO.convert2VOList(script.getMemberList());
this.actionList = ScriptActionNewVO.convertFromBOList(script.getActionList());
this.fullMarksDuration = script.getFullMarksDuration();
this.passingGradeDuration = script.getPassingGradeDuration();
this.zeroDuration = script.getZeroDuration();
this.status = script.getStatus();
this.creatorId = script.getCreatorId();
this.creatorName = script.getCreatorName();
this.createTime = script.getCreateTime();
this.explanation = script.getExplanation();
this.uploadTime = script.getUploadTime();
}
public ScriptNewVO(ScriptDraft script) {
this.id = script.getId();
this.mapId = script.getMapId();
this.name = script.getName();
this.lang = script.getLang();
this.description = script.getDescription();
if (!org.springframework.util.StringUtils.isEmpty(script.getMapLocationJson())) {
this.mapLocation = JsonUtils.read(script.getMapLocationJson(), MapLocationVO.class);
}
this.fullMarksDuration = script.getFullMarksDuration();
this.passingGradeDuration = script.getPassingGradeDuration();
this.zeroDuration = script.getZeroDuration();
this.status = script.getStatus();
this.creatorId = ConvertUtil.long2Str(script.getCreatorId());
this.createTime = script.getCreateTime();
this.uploadTime = script.getCreateTime();
}
public ScriptNewVO(ScriptDraftWithBLOBs script) {
this((ScriptDraft) script);
}
public ScriptNewVO(Script script) {
this.id = script.getId();
this.mapId = script.getMapId();
this.name = script.getName();
this.lang = script.getLang();
this.description = script.getDescription();
if (!org.springframework.util.StringUtils.isEmpty(script.getMapLocationJson())) {
this.mapLocation = JsonUtils.read(script.getMapLocationJson(), MapLocationVO.class);
}
this.fullMarksDuration = script.getFullMarksDuration();
this.passingGradeDuration = script.getPassingGradeDuration();
this.zeroDuration = script.getZeroDuration();
this.status = script.getStatus();
this.creatorId = ConvertUtil.long2Str(script.getCreatorId());
this.createTime = script.getCreateTime();
this.uploadTime = script.getCreateTime();
}
public ScriptNewVO(ScriptWithBLOBs script) {
this((Script) script);
if (StringUtils.hasText(script.getMapLocationJson())) {
this.mapLocation = JsonUtils.read(script.getMapLocationJson(), MapLocationVO.class);
}
if (StringUtils.hasText(script.getMembersJson())) {
List<SimulationMemberPO> simulationMemberPOList =
JsonUtils.read(script.getMembersJson(), JsonUtils.getCollectionType(ArrayList.class, SimulationMemberPO.class));
this.memberList = SimulationMemberVO.convertFromPOList(simulationMemberPOList);
}
if (Objects.nonNull(script.getActionsJson())) {
List<ScriptActionPO> actionPOList = JsonUtils.read(script.getActionsJson(), JsonUtils.getCollectionType(ArrayList.class, ScriptActionPO.class));
this.actionList = ScriptActionNewVO.convertFromPOList(actionPOList);
}
this.bgScenesJson = script.getBgScenesJson();
this.finalScenesJson = script.getFinalScenesJson();
this.bgSet = Objects.nonNull(script.getBgScenesJson());
}
public static List<ScriptNewVO> convertFromPOList(List<Script> scripts) {
return scripts.stream().map(ScriptNewVO::new).collect(Collectors.toList());
}
}

View File

@ -1,39 +1,31 @@
package club.joylink.rtss.vo.client.script;
import club.joylink.rtss.constants.BusinessConsts;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import club.joylink.rtss.simulation.cbtc.member.SimulationMemberPO;
import club.joylink.rtss.simulation.cbtc.script.ScriptActionPO;
import club.joylink.rtss.simulation.cbtc.script.ScriptBO;
import club.joylink.rtss.entity.Script;
import club.joylink.rtss.entity.ScriptDraft;
import club.joylink.rtss.entity.ScriptDraftWithBLOBs;
import club.joylink.rtss.entity.ScriptWithBLOBs;
import club.joylink.rtss.exception.BusinessExceptionAssertEnum;
import club.joylink.rtss.util.JsonUtils;
import club.joylink.rtss.vo.client.validGroup.ScriptCreateCheck;
import club.joylink.rtss.vo.client.validGroup.ScriptUpdateCheck;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import io.swagger.annotations.ApiModel;
import club.joylink.rtss.vo.client.simulationv1.SimulationMemberVO;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.function.Function;
import java.util.stream.Collectors;
@Getter
@Setter
@NoArgsConstructor
@ApiModel(value = "仿真剧本")
public class ScriptVO {
@JsonSerialize(using = ToStringSerializer.class)
@ -44,27 +36,23 @@ public class ScriptVO {
*/
@JsonSerialize(using = ToStringSerializer.class)
@ApiModelProperty(value = "所属地图id")
@NotNull(groups = {ScriptCreateCheck.class})
private Long mapId;
/**
* 剧本名称
*/
@ApiModelProperty(value = "剧本名称")
@NotBlank(groups = {ScriptCreateCheck.class, ScriptUpdateCheck.class})
private String name;
/**
* 语言类型
*/
@NotBlank(groups = {ScriptCreateCheck.class})
private String lang;
/**
* 剧本描述
*/
@ApiModelProperty(value = "剧本描述")
@NotBlank(groups = {ScriptCreateCheck.class, ScriptUpdateCheck.class})
private String description;
/**
@ -88,17 +76,23 @@ public class ScriptVO {
/**
* 剧本成员列表
*/
private List<ScriptMemberVO> memberVOList;
private List<SimulationMemberVO> memberList;
/**
* 剧本演出成员列表
*/
private List<ScriptMemberVO> playerVOList;
private List<SimulationMemberVO> playerList = new ArrayList<>();
/**
* 剧本内容
* 剧本动作
*/
private List<ScriptActionVO> actionVOList;
private List<ScriptActionNewVO> actionList = new ArrayList<>();
private Integer fullMarksDuration;
private Integer passingGradeDuration;
private Integer zeroDuration;
/**
* 状态
@ -126,39 +120,45 @@ public class ScriptVO {
*/
private LocalDateTime uploadTime;
public ScriptVO(ScriptBO script) {
this.id = script.getId();
this.mapId = script.getMapId();
this.name = script.getName();
this.lang = script.getLang();
this.description = script.getDescription();
this.mapLocation = script.getMapLocation();
this.bgSet = Objects.nonNull(script.getBgScenesJson());
this.memberList = SimulationMemberVO.convert2VOList(script.getMemberList());
this.actionList = ScriptActionNewVO.convertFromBOList(script.getActionList());
this.fullMarksDuration = script.getFullMarksDuration();
this.passingGradeDuration = script.getPassingGradeDuration();
this.zeroDuration = script.getZeroDuration();
this.status = script.getStatus();
this.creatorId = script.getCreatorId();
this.creatorName = script.getCreatorName();
this.createTime = script.getCreateTime();
this.explanation = script.getExplanation();
this.uploadTime = script.getUploadTime();
}
public ScriptVO(ScriptDraft script) {
this.id = script.getId();
this.mapId = script.getMapId();
this.name = script.getName();
this.lang = script.getLang();
this.description = script.getDescription();
this.fullMarksDuration = script.getFullMarksDuration();
this.passingGradeDuration = script.getPassingGradeDuration();
this.zeroDuration = script.getZeroDuration();
this.status = script.getStatus();
this.creatorId = script.getCreatorId();
this.createTime = script.getCreateTime();
this.uploadTime = script.getCreateTime();
if (!StringUtils.isEmpty(script.getExplanation())) {
this.explanation = script.getExplanation();
}
}
public ScriptVO(ScriptDraftWithBLOBs script) {
// 基础数据
this((ScriptDraft) script);
// 剧本内容数据
if (!StringUtils.isEmpty(script.getMapLocationJson())) {
this.mapLocation = JsonUtils.read(script.getMapLocationJson(), MapLocationVO.class);
}
this.bgScenesJson = script.getBgScenesJson();
this.finalScenesJson = script.getFinalScenesJson();
if (!StringUtils.isEmpty(script.getMembersJson())) {
this.memberVOList = JsonUtils.read(script.getMembersJson(), JsonUtils.getCollectionType(ArrayList.class, ScriptMemberVO.class));
}
if (!StringUtils.isEmpty(script.getPlayersJson())) {
this.playerVOList = JsonUtils.read(script.getPlayersJson(), JsonUtils.getCollectionType(ArrayList.class, ScriptMemberVO.class));
}
if (!StringUtils.isEmpty(script.getActionsJson())) {
this.actionVOList = JsonUtils.read(script.getActionsJson(), JsonUtils.getCollectionType(ArrayList.class, ScriptActionVO.class));
}
}
public ScriptVO(Script script) {
@ -167,122 +167,54 @@ public class ScriptVO {
this.name = script.getName();
this.lang = script.getLang();
this.description = script.getDescription();
if (!org.springframework.util.StringUtils.isEmpty(script.getMapLocationJson())) {
this.mapLocation = JsonUtils.read(script.getMapLocationJson(), MapLocationVO.class);
}
this.fullMarksDuration = script.getFullMarksDuration();
this.passingGradeDuration = script.getPassingGradeDuration();
this.zeroDuration = script.getZeroDuration();
this.status = script.getStatus();
this.creatorId = script.getCreatorId();
this.createTime = script.getCreateTime();
this.uploadTime = script.getCreateTime();
}
/**
* 正式发布的剧本转换
*
* @param script
*/
public ScriptVO(ScriptWithBLOBs script) {
// 基础数据
this((Script) script);
// 剧本内容数据
if (!StringUtils.isEmpty(script.getMapLocationJson())) {
if (StringUtils.hasText(script.getMapLocationJson())) {
this.mapLocation = JsonUtils.read(script.getMapLocationJson(), MapLocationVO.class);
}
if (StringUtils.hasText(script.getMembersJson())) {
List<SimulationMemberPO> simulationMemberPOList =
JsonUtils.read(script.getMembersJson(), JsonUtils.getCollectionType(ArrayList.class, SimulationMemberPO.class));
this.memberList = SimulationMemberVO.convertFromPOList(simulationMemberPOList);
}
if (Objects.nonNull(script.getActionsJson())) {
List<ScriptActionPO> actionPOList = JsonUtils.read(script.getActionsJson(), JsonUtils.getCollectionType(ArrayList.class, ScriptActionPO.class));
this.actionList = ScriptActionNewVO.convertFromPOList(actionPOList);
}
this.bgScenesJson = script.getBgScenesJson();
this.finalScenesJson = script.getFinalScenesJson();
if (!StringUtils.isEmpty(script.getMembersJson())) {
this.memberVOList = JsonUtils.read(script.getMembersJson(), JsonUtils.getCollectionType(ArrayList.class, ScriptMemberVO.class));
}
if (!StringUtils.isEmpty(script.getPlayersJson())) {
this.playerVOList = JsonUtils.read(script.getPlayersJson(), JsonUtils.getCollectionType(ArrayList.class, ScriptMemberVO.class));
}
if (!StringUtils.isEmpty(script.getActionsJson())) {
this.actionVOList = JsonUtils.read(script.getActionsJson(), JsonUtils.getCollectionType(ArrayList.class, ScriptActionVO.class));
}
this.bgSet = Objects.nonNull(script.getBgScenesJson());
}
public static List<ScriptVO> convertDraft2VOList(List<ScriptDraft> dbList) {
List<ScriptVO> voList = new ArrayList<>();
if (!CollectionUtils.isEmpty(dbList)) {
dbList.forEach(script -> voList.add(new ScriptVO(script)));
}
return voList;
public static List<ScriptVO> convertFromPOList(List<Script> scripts) {
return scripts.stream().map(ScriptVO::new).collect(Collectors.toList());
}
public static List<ScriptVO> convert2VOList(List<Script> dbList) {
List<ScriptVO> voList = new ArrayList<>();
if (!CollectionUtils.isEmpty(dbList)) {
dbList.forEach(script -> voList.add(new ScriptVO(script)));
}
return voList;
}
public ScriptDraftWithBLOBs convert2Draft() {
ScriptDraftWithBLOBs script = new ScriptDraftWithBLOBs();
script.setId(getId());
script.setMapId(getMapId());
script.setName(getName());
script.setLang(getLang());
script.setDescription(getDescription());
return script;
}
public ScriptWithBLOBs convert2DB() {
ScriptWithBLOBs scriptPostWithBLOBs = new ScriptWithBLOBs();
scriptPostWithBLOBs.setMapId(getMapId());
scriptPostWithBLOBs.setName(getName());
scriptPostWithBLOBs.setLang(getLang());
scriptPostWithBLOBs.setDescription(getDescription());
scriptPostWithBLOBs.setMapLocationJson(getMapLocationJson());
scriptPostWithBLOBs.setBgScenesJson(getBgScenesJson());
scriptPostWithBLOBs.setFinalScenesJson(getFinalScenesJson());
scriptPostWithBLOBs.setMembersJson(getMembersJson());
scriptPostWithBLOBs.setPlayersJson(getPlayersJson());
scriptPostWithBLOBs.setActionsJson(getActionsJson());
scriptPostWithBLOBs.setStatus(BusinessConsts.STATUS_USE);
scriptPostWithBLOBs.setCreateTime(LocalDateTime.now());
return scriptPostWithBLOBs;
}
@JsonIgnore
public String getMapLocationJson() {
return Objects.nonNull(this.mapLocation) ? JsonUtils.writeValueAsString(this.mapLocation) : null;
}
@JsonIgnore
public String getActionsJson() {
return !CollectionUtils.isEmpty(this.actionVOList) ? JsonUtils.writeValueAsString(this.actionVOList) : null;
}
@JsonIgnore
public String getMembersJson() {
return !CollectionUtils.isEmpty(this.memberVOList) ? JsonUtils.writeValueAsString(this.memberVOList) : null;
}
@JsonIgnore
public String getPlayersJson() {
return !CollectionUtils.isEmpty(this.playerVOList) ? JsonUtils.writeValueAsString(this.playerVOList) : null;
public static List<ScriptVO> convertFromDraftList(List<ScriptDraft> scripts) {
return scripts.stream().map(ScriptVO::new).collect(Collectors.toList());
}
/**
* 根据客户端需要过滤数据
* 转换为做创建草稿剧本用的的DB对象
*/
public void filterDetailForClient() {
// 处理有剧情成员的信息
List<ScriptMemberVO> memberVOList = this.getPlayerVOList();
if (!CollectionUtils.isEmpty(memberVOList)) {
List<ScriptActionVO> actionVOList = this.getActionVOList();
if (!CollectionUtils.isEmpty(actionVOList)) {
Map<String, ScriptMemberVO> memberVOMap =
memberVOList.stream()
.collect(Collectors.toMap(ScriptMemberVO::getId, Function.identity()));
for (ScriptActionVO actionVO : actionVOList) {
ScriptMemberVO member = memberVOMap.get(actionVO.getMemberId());
BusinessExceptionAssertEnum.DATA_ERROR.assertNotNull(member,
"剧本数据异常:动作成员角色不存在");
member.setHasPlay(true);
}
}
}
// 删除不需要的数据
this.setBgScenesJson(null);
this.setFinalScenesJson(null);
public ScriptDraftWithBLOBs convert2CreateDraft() {
ScriptDraftWithBLOBs script = new ScriptDraftWithBLOBs();
script.setMapId(mapId);
script.setName(name);
script.setLang(lang);
script.setDescription(description);
return script;
}
}