|
|
@@ -0,0 +1,242 @@
|
|
|
+package bus.service.impl;
|
|
|
+
|
|
|
+import bus.model.SnowflakeUtil;
|
|
|
+import bus.model.dto.BCourseBusDto;
|
|
|
+import bus.model.dto.BCourseInfoDto;
|
|
|
+import bus.model.dto.BCourseStationDto;
|
|
|
+import bus.model.dto.BCourseTimeDto;
|
|
|
+import bus.model.dto.page.BCourseInfoPageDto;
|
|
|
+import bus.model.po.*;
|
|
|
+import bus.model.vo.BCourseInfoVo;
|
|
|
+import bus.mapper.BCourseInfoMapper;
|
|
|
+
|
|
|
+import bus.service.*;
|
|
|
+import cn.hutool.core.bean.BeanUtil;
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
+import com.orcas.common.sso.model.ExtInfo;
|
|
|
+import com.orcas.iso.config.common.user.CurrentUserHolder;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.beans.BeanUtils;
|
|
|
+import org.springframework.transaction.annotation.Transactional;
|
|
|
+
|
|
|
+import javax.annotation.Resource;
|
|
|
+import java.util.Date;
|
|
|
+import java.util.List;
|
|
|
+import java.util.stream.Collectors;
|
|
|
+
|
|
|
+/**
|
|
|
+ * @Program: bus
|
|
|
+ * @Description: 描述
|
|
|
+ * @Author: zy
|
|
|
+ * @Date: 2025-03-02 19:53:49
|
|
|
+ **/
|
|
|
+@Service
|
|
|
+
|
|
|
+public class BCourseInfoServiceImpl extends ServiceImpl<BCourseInfoMapper, BCourseInfoPo> implements BCourseInfoService {
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private BCourseInfoMapper bCourseInfoMapper;
|
|
|
+ @Resource
|
|
|
+ private SnowflakeUtil snowflakeUtil;
|
|
|
+ @Resource
|
|
|
+ private BCourseTimeService bCourseTimeService;
|
|
|
+ @Resource
|
|
|
+ private BCourseStationService bCourseStationService;
|
|
|
+ @Resource
|
|
|
+ private BStationInfoService bStationInfoService;
|
|
|
+ @Resource
|
|
|
+ private BCourseBusService bCourseBusService;
|
|
|
+ @Resource
|
|
|
+ private BBusInfoService bBusInfoService;
|
|
|
+ /**
|
|
|
+ * 详情
|
|
|
+ * @param id
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public BCourseInfoDto getDetailById(String id){
|
|
|
+ BCourseInfoPo po = this.bCourseInfoMapper.selectById(id);
|
|
|
+ BCourseInfoDto bCourseInfoDto = BeanUtil.toBean(po, BCourseInfoDto.class);
|
|
|
+
|
|
|
+ QueryWrapper<BCourseTimePo> queryWrapper = new QueryWrapper<>();
|
|
|
+ queryWrapper.eq("course_id", id);
|
|
|
+ queryWrapper.orderByAsc("sort");
|
|
|
+ List<BCourseTimePo> list = bCourseTimeService.list(queryWrapper);
|
|
|
+ bCourseInfoDto.setBCourseTimeList(BeanUtil.copyToList(list, BCourseTimeDto.class));
|
|
|
+
|
|
|
+
|
|
|
+ QueryWrapper<BCourseStationPo> queryWrapper1 = new QueryWrapper<>();
|
|
|
+ queryWrapper1.eq("course_id", id);
|
|
|
+ queryWrapper1.orderByAsc("sort");
|
|
|
+ List<BCourseStationPo> list1 = bCourseStationService.list(queryWrapper1);
|
|
|
+ List<String> stationIds = list1.stream().map(BCourseStationPo::getStationId).collect(Collectors.toList());
|
|
|
+ QueryWrapper<BStationInfoPo> queryWrapper2 = new QueryWrapper<>();
|
|
|
+ queryWrapper2.in("id", stationIds);
|
|
|
+ List<BStationInfoPo> list2 = bStationInfoService.list(queryWrapper2);
|
|
|
+ bCourseInfoDto.setBCourseStationList(BeanUtil.copyToList(list2, BCourseStationDto.class));
|
|
|
+
|
|
|
+ QueryWrapper<BCourseBusPo> queryWrapper3 = new QueryWrapper<>();
|
|
|
+ queryWrapper3.eq("course_id", id);
|
|
|
+ queryWrapper3.orderByAsc("sort");
|
|
|
+ List<BCourseBusPo> list3 = bCourseBusService.list(queryWrapper3);
|
|
|
+ List<String> busIds = list3.stream().map(BCourseBusPo::getBusId).collect(Collectors.toList());
|
|
|
+ QueryWrapper<BBusInfoPo> queryWrapper4 = new QueryWrapper<>();
|
|
|
+ queryWrapper4.in("id", busIds);
|
|
|
+ List<BBusInfoPo> list4 = bBusInfoService.list(queryWrapper4);
|
|
|
+ bCourseInfoDto.setBCourseBusList(BeanUtil.copyToList(list4, BCourseBusDto.class));
|
|
|
+ return bCourseInfoDto;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 保存
|
|
|
+ * @param dto
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ public void save(BCourseInfoDto dto){
|
|
|
+ BCourseInfoPo po = BeanUtil.toBean(dto, BCourseInfoPo.class);
|
|
|
+ ExtInfo extInfo = CurrentUserHolder.get();
|
|
|
+ po.setId(snowflakeUtil.snowflakeId());
|
|
|
+ po.setCreateTime(new Date());
|
|
|
+ po.setUpdateTime(new Date());
|
|
|
+ po.setCreatorId(extInfo.getUserId());
|
|
|
+ po.setUpdaterId(extInfo.getUserId());
|
|
|
+ po.setCreatorName(extInfo.getUserName());
|
|
|
+ po.setUpdaterName(extInfo.getUserName());
|
|
|
+ //处理时刻
|
|
|
+ List<BCourseTimeDto> bCourseTimeList = dto.getBCourseTimeList();
|
|
|
+ List<BCourseTimePo> bCourseTimePoList = BeanUtil.copyToList(bCourseTimeList, BCourseTimePo.class);
|
|
|
+ bCourseTimePoList.forEach(bCourseTimePo -> {
|
|
|
+ bCourseTimePo.setId(snowflakeUtil.snowflakeId());
|
|
|
+ bCourseTimePo.setCourseId(po.getId());
|
|
|
+ bCourseTimePo.setCreateTime(new Date());
|
|
|
+ bCourseTimePo.setUpdateTime(new Date());
|
|
|
+ bCourseTimePo.setCreatorId(extInfo.getUserId());
|
|
|
+ bCourseTimePo.setUpdaterId(extInfo.getUserId());
|
|
|
+ bCourseTimePo.setCreatorName(extInfo.getUserName());
|
|
|
+ bCourseTimePo.setUpdaterName(extInfo.getUserName());
|
|
|
+ });
|
|
|
+ bCourseTimeService.saveBatch(bCourseTimePoList);
|
|
|
+ //处理标志点
|
|
|
+ List<BCourseStationDto> bCourseStationList = dto.getBCourseStationList();
|
|
|
+ List<BCourseStationPo> bCourseStationPoList = BeanUtil.copyToList(bCourseStationList, BCourseStationPo.class);
|
|
|
+ bCourseStationPoList.forEach(bCourseStationPo -> {
|
|
|
+ bCourseStationPo.setId(snowflakeUtil.snowflakeId());
|
|
|
+ bCourseStationPo.setCourseId(po.getId());
|
|
|
+ bCourseStationPo.setCreateTime(new Date());
|
|
|
+ bCourseStationPo.setUpdateTime(new Date());
|
|
|
+ bCourseStationPo.setCreatorId(extInfo.getUserId());
|
|
|
+ bCourseStationPo.setUpdaterId(extInfo.getUserId());
|
|
|
+ bCourseStationPo.setCreatorName(extInfo.getUserName());
|
|
|
+ bCourseStationPo.setUpdaterName(extInfo.getUserName());
|
|
|
+ });
|
|
|
+ bCourseStationService.saveBatch(bCourseStationPoList);
|
|
|
+ //处理车辆
|
|
|
+ List<BCourseBusDto> bCourseBusList = dto.getBCourseBusList();
|
|
|
+ List<BCourseBusPo> bCourseBusPoList = BeanUtil.copyToList(bCourseBusList, BCourseBusPo.class);
|
|
|
+ bCourseBusPoList.forEach(bCourseBusPo -> {
|
|
|
+ bCourseBusPo.setId(snowflakeUtil.snowflakeId());
|
|
|
+ bCourseBusPo.setCourseId(po.getId());
|
|
|
+ bCourseBusPo.setCreateTime(new Date());
|
|
|
+ bCourseBusPo.setUpdateTime(new Date());
|
|
|
+ bCourseBusPo.setCreatorId(extInfo.getUserId());
|
|
|
+ bCourseBusPo.setUpdaterId(extInfo.getUserId());
|
|
|
+ bCourseBusPo.setCreatorName(extInfo.getUserName());
|
|
|
+ bCourseBusPo.setUpdaterName(extInfo.getUserName());
|
|
|
+ });
|
|
|
+ this.bCourseInfoMapper.insert(po);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 列表
|
|
|
+ * @param dto
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public List<BCourseInfoVo> list(BCourseInfoPageDto dto){
|
|
|
+ return this.bCourseInfoMapper.list(dto);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 修改
|
|
|
+ * @param dto
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public void update(BCourseInfoDto dto){
|
|
|
+ BCourseInfoPo po = BeanUtil.toBean(dto, BCourseInfoPo.class);
|
|
|
+ ExtInfo extInfo = CurrentUserHolder.get();
|
|
|
+ po.setUpdateTime(new Date());
|
|
|
+ po.setUpdaterId(extInfo.getUserId());
|
|
|
+ po.setUpdaterName(extInfo.getUserName());
|
|
|
+ //处理时刻
|
|
|
+ bCourseTimeService.deleteByCourseId(po.getId());
|
|
|
+ List<BCourseTimeDto> bCourseTimeList = dto.getBCourseTimeList();
|
|
|
+ List<BCourseTimePo> bCourseTimePoList = BeanUtil.copyToList(bCourseTimeList, BCourseTimePo.class);
|
|
|
+ bCourseTimePoList.forEach(bCourseTimePo -> {
|
|
|
+ bCourseTimePo.setId(snowflakeUtil.snowflakeId());
|
|
|
+ bCourseTimePo.setCourseId(po.getId());
|
|
|
+ bCourseTimePo.setCreateTime(new Date());
|
|
|
+ bCourseTimePo.setUpdateTime(new Date());
|
|
|
+ bCourseTimePo.setCreatorId(extInfo.getUserId());
|
|
|
+ bCourseTimePo.setUpdaterId(extInfo.getUserId());
|
|
|
+ bCourseTimePo.setCreatorName(extInfo.getUserName());
|
|
|
+ bCourseTimePo.setUpdaterName(extInfo.getUserName());
|
|
|
+ });
|
|
|
+ bCourseTimeService.saveBatch(bCourseTimePoList);
|
|
|
+ //处理标志点
|
|
|
+ bCourseStationService.deleteByCourseId(po.getId());
|
|
|
+ List<BCourseStationDto> bCourseStationList = dto.getBCourseStationList();
|
|
|
+ List<BCourseStationPo> bCourseStationPoList = BeanUtil.copyToList(bCourseStationList, BCourseStationPo.class);
|
|
|
+ bCourseStationPoList.forEach(bCourseStationPo -> {
|
|
|
+ bCourseStationPo.setId(snowflakeUtil.snowflakeId());
|
|
|
+ bCourseStationPo.setCourseId(po.getId());
|
|
|
+ bCourseStationPo.setCreateTime(new Date());
|
|
|
+ bCourseStationPo.setUpdateTime(new Date());
|
|
|
+ bCourseStationPo.setCreatorId(extInfo.getUserId());
|
|
|
+ bCourseStationPo.setUpdaterId(extInfo.getUserId());
|
|
|
+ bCourseStationPo.setCreatorName(extInfo.getUserName());
|
|
|
+ bCourseStationPo.setUpdaterName(extInfo.getUserName());
|
|
|
+ });
|
|
|
+ bCourseStationService.saveBatch(bCourseStationPoList);
|
|
|
+ //处理车辆
|
|
|
+ bCourseBusService.deleteByCourseId(po.getId());
|
|
|
+ List<BCourseBusDto> bCourseBusList = dto.getBCourseBusList();
|
|
|
+ List<BCourseBusPo> bCourseBusPoList = BeanUtil.copyToList(bCourseBusList, BCourseBusPo.class);
|
|
|
+ bCourseBusPoList.forEach(bCourseBusPo -> {
|
|
|
+ bCourseBusPo.setId(snowflakeUtil.snowflakeId());
|
|
|
+ bCourseBusPo.setCourseId(po.getId());
|
|
|
+ bCourseBusPo.setCreateTime(new Date());
|
|
|
+ bCourseBusPo.setUpdateTime(new Date());
|
|
|
+ bCourseBusPo.setCreatorId(extInfo.getUserId());
|
|
|
+ bCourseBusPo.setUpdaterId(extInfo.getUserId());
|
|
|
+ bCourseBusPo.setCreatorName(extInfo.getUserName());
|
|
|
+ bCourseBusPo.setUpdaterName(extInfo.getUserName());
|
|
|
+ });
|
|
|
+ bCourseBusService.saveBatch(bCourseBusPoList);
|
|
|
+ this.bCourseInfoMapper.insert(po);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 删除
|
|
|
+ * @param id
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ public void delete(String id){
|
|
|
+ QueryWrapper<BCourseTimePo> queryWrapper = new QueryWrapper<>();
|
|
|
+ queryWrapper.eq("course_id", id);
|
|
|
+ bCourseTimeService.remove(queryWrapper);
|
|
|
+ QueryWrapper<BCourseStationPo> queryWrapper1 = new QueryWrapper<>();
|
|
|
+ queryWrapper1.eq("course_id", id);
|
|
|
+ bCourseStationService.remove(queryWrapper1);
|
|
|
+ QueryWrapper<BCourseBusPo> queryWrapper2 = new QueryWrapper<>();
|
|
|
+ queryWrapper2.eq("course_id", id);
|
|
|
+ bCourseBusService.remove(queryWrapper2);
|
|
|
+ bCourseInfoMapper.deleteById(id);
|
|
|
+ }
|
|
|
+}
|