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; /** *

* 服务实现类 *

* * @author generator@TaoJie * @since 2024-07-05 */ @Service public class MeetingServiceImpl extends ServiceImpl 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 getMeetingPage(MeetingPageDTO dto) { Page page=new Page(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 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 page=new Page(dto.getPage(),dto.getCount()); final IPage meetingPage = meetingMapperCustom.selectMeetingWithRelation(page,dto); // final IPage meetingPage = this.getMeetingPage(dto); if(!CollectionUtils.isEmpty(meetingPage.getRecords())){ final MeetingBO meetingBO = meetingPage.getRecords().get(0); final List 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().eq(MeetingUserReDO::getMeetingId,meetingDO.getId())); // 重新关联人员信息 final List 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; } }