package com.cloudroam.service.impl;
|
|
import cn.hutool.core.util.IdUtil;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.cloudroam.bo.meeting.MeetingBO;
|
import com.cloudroam.common.LocalUser;
|
import com.cloudroam.common.enumeration.DailyCommitEnum;
|
import com.cloudroam.common.enumeration.DeletedEnum;
|
import com.cloudroam.dto.meeting.CreateMeetingDTO;
|
import com.cloudroam.dto.meeting.MeetingPageDTO;
|
import com.cloudroam.dto.meeting.UpdateMeetingDTO;
|
import com.cloudroam.mapper.MeetingMapperCustom;
|
import com.cloudroam.mapper.MeetingUserReMapper;
|
import com.cloudroam.model.*;
|
import com.cloudroam.mapper.MeetingMapper;
|
import com.cloudroam.service.BusinessDailyService;
|
import com.cloudroam.service.MeetingService;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.cloudroam.service.MeetingUserReService;
|
import com.cloudroam.service.ProjectDailyService;
|
import org.springframework.beans.BeanUtils;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.util.CollectionUtils;
|
|
import java.time.LocalDateTime;
|
import java.util.Date;
|
import java.util.List;
|
import java.util.stream.Collectors;
|
|
/**
|
* <p>
|
* 服务实现类
|
* </p>
|
*
|
* @author generator@TaoJie
|
* @since 2024-07-05
|
*/
|
@Service
|
public class MeetingServiceImpl extends ServiceImpl<MeetingMapper, MeetingDO> implements MeetingService {
|
|
@Autowired
|
private MeetingUserReService meetingUserReService;
|
|
@Autowired
|
private MeetingMapperCustom meetingMapperCustom;
|
|
@Autowired
|
private MeetingUserReMapper meetingUserReMapper;
|
|
@Autowired
|
private ProjectDailyService projectDailyService;
|
|
@Autowired
|
private BusinessDailyService businessDailyService;
|
|
@Override
|
public IPage<MeetingBO> getMeetingPage(MeetingPageDTO dto) {
|
|
Page<MeetingDO> page=new Page<MeetingDO>(dto.getPage(),dto.getCount());
|
return meetingMapperCustom.selectMeetingPage(page,dto);
|
|
}
|
|
@Transactional
|
@Override
|
public MeetingDO insertMeeting(CreateMeetingDTO validator) {
|
UserDO user = LocalUser.getLocalUser();
|
MeetingDO meetingDO=new MeetingDO();
|
BeanUtils.copyProperties(validator,meetingDO);
|
meetingDO.setId(IdUtil.simpleUUID());
|
|
meetingDO.setCreateTime(new Date());
|
meetingDO.setCreateUserId(String.valueOf(user.getId()));
|
meetingDO.setCreateUserName(user.getNickname());
|
|
meetingDO.setUpdateTime(new Date());
|
meetingDO.setUpdateUserId(String.valueOf(user.getId()));
|
meetingDO.setUpdateUserName(user.getNickname());
|
meetingDO.setIsDeleted(DeletedEnum.DELETED_NO.getCode());
|
|
|
if(!CollectionUtils.isEmpty(validator.getUserIds())){
|
final List<MeetingUserReDO> meetingUserReDOList = validator.getUserIds().stream().map(userId -> {
|
MeetingUserReDO meetingUserReDO = new MeetingUserReDO();
|
meetingUserReDO.setId(IdUtil.simpleUUID());
|
meetingUserReDO.setMeetingId(meetingDO.getId());
|
meetingUserReDO.setMeetingUserId(userId);
|
|
return meetingUserReDO;
|
}).collect(Collectors.toList());
|
meetingUserReService.saveBatch(meetingUserReDOList);
|
}
|
|
|
this.baseMapper.insert(meetingDO);
|
|
|
return this.baseMapper.selectById(meetingDO.getId());
|
|
}
|
|
@Override
|
public MeetingBO getMeetingById(String id) {
|
MeetingPageDTO dto=new MeetingPageDTO();
|
dto.setId(id);
|
Page<MeetingDO> page=new Page<MeetingDO>(dto.getPage(),dto.getCount());
|
|
final IPage<MeetingBO> meetingPage = meetingMapperCustom.selectMeetingWithRelation(page,dto);
|
|
// final IPage<MeetingBO> meetingPage = this.getMeetingPage(dto);
|
if(!CollectionUtils.isEmpty(meetingPage.getRecords())){
|
final MeetingBO meetingBO = meetingPage.getRecords().get(0);
|
final List<Integer> userIds = meetingBO.getUserDOList().stream().map(user -> user.getId()).collect(Collectors.toList());
|
meetingBO.setUserIds(userIds);
|
return meetingBO;
|
}
|
return null;
|
}
|
|
@Override
|
public boolean updateMeeting(UpdateMeetingDTO updateMeetingDTO) {
|
|
UserDO user = LocalUser.getLocalUser();
|
|
MeetingDO meetingDO=new MeetingDO();
|
BeanUtils.copyProperties(updateMeetingDTO,meetingDO);
|
meetingDO.setUpdateTime(new Date());
|
meetingDO.setUpdateUserId(String.valueOf(user.getId()));
|
meetingDO.setUpdateUserName(user.getNickname());
|
|
// 删除关联人员信息
|
meetingUserReMapper.delete(new LambdaQueryWrapper<MeetingUserReDO>().eq(MeetingUserReDO::getMeetingId,meetingDO.getId()));
|
|
|
// 重新关联人员信息
|
final List<MeetingUserReDO> meetingUserReDOList = updateMeetingDTO.getUserIds().stream().map(userId -> {
|
MeetingUserReDO meetingUserReDO = new MeetingUserReDO();
|
meetingUserReDO.setId(IdUtil.simpleUUID());
|
meetingUserReDO.setMeetingId(meetingDO.getId());
|
meetingUserReDO.setMeetingUserId(userId);
|
return meetingUserReDO;
|
}).collect(Collectors.toList());
|
|
// 保存负责人信息
|
meetingUserReService.saveBatch(meetingUserReDOList);
|
|
return baseMapper.updateById(meetingDO)>0;
|
}
|
|
@Override
|
@Transactional
|
public boolean deleteMeetingById(String id) {
|
|
// 先更新日志信息
|
meetingMapperCustom.delProjectDailyProcess(id);
|
|
// 删除关联人员信息
|
// meetingMapperCustom.delMeetingUserByMeetingId(id);
|
|
// 删除关联的商务日志信息
|
businessDailyService.delBusinessDailyByMeetingId(id);
|
|
// 删除日志信息,,逻辑删除
|
return this.baseMapper.deleteById(id)>0;
|
|
}
|
|
@Override
|
@Transactional
|
public boolean commit(String id) {
|
UserDO user = LocalUser.getLocalUser();
|
|
MeetingDO meetingDO=new MeetingDO();
|
meetingDO.setId(id);
|
meetingDO.setIsCommit(DailyCommitEnum.COMMITED.getCode());
|
meetingDO.setCommitTime(LocalDateTime.now());
|
meetingDO.setCommitUserId(String.valueOf(user.getId()));
|
meetingDO.setCommitUserName(user.getNickname());
|
|
|
|
return this.baseMapper.updateById(meetingDO)>0;
|
}
|
}
|