package com.cloudroam.service.impl; import cn.hutool.core.util.IdUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.cloudroam.bo.businessDaily.BusinessDailyBO; import com.cloudroam.common.LocalUser; import com.cloudroam.common.enumeration.DeletedEnum; import com.cloudroam.common.enumeration.FileReTypeEnum; import com.cloudroam.dto.businessDaily.BusinessDailyPageDTO; import com.cloudroam.dto.businessDaily.CreateBusinessDailyDTO; import com.cloudroam.dto.businessDaily.UpdateBusinessDailyDTO; import com.cloudroam.dto.file.FileImageInfo; import com.cloudroam.mapper.BusinessDailyMapperCustom; import com.cloudroam.mapper.BusinessDailyUserReMapper; import com.cloudroam.model.*; import com.cloudroam.mapper.BusinessDailyMapper; import com.cloudroam.service.BusinessDailyService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.cloudroam.service.BusinessDailyUserReService; import com.cloudroam.service.FileService; import com.cloudroam.service.LinFileReService; 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-11 */ @Service public class BusinessDailyServiceImpl extends ServiceImpl implements BusinessDailyService { @Autowired private BusinessDailyUserReService businessDailyUserReService; @Autowired private BusinessDailyMapperCustom businessDailyMapperCustom; @Autowired private BusinessDailyUserReMapper businessDailyUserReMapper; @Autowired private LinFileReService linFileReService; @Autowired private FileService fileService; @Transactional @Override public boolean createBusinessDaily(CreateBusinessDailyDTO validator) { BusinessDailyDO businessDailyDO=new BusinessDailyDO(); UserDO user = LocalUser.getLocalUser(); BeanUtils.copyProperties(validator,businessDailyDO); businessDailyDO.setId(IdUtil.simpleUUID()); businessDailyDO.setCreateTime(new Date()); businessDailyDO.setCreateUserId(String.valueOf(user.getId())); businessDailyDO.setCreateUserName(user.getNickname()); businessDailyDO.setUpdateTime(new Date()); businessDailyDO.setUpdateUserId(String.valueOf(user.getId())); businessDailyDO.setUpdateUserName(user.getNickname()); businessDailyDO.setIsDeleted(DeletedEnum.DELETED_NO.getCode()); final List businessDailyUserReDOS = validator.getUserIds().stream().map(userId -> { BusinessDailyUserReDO businessDailyUserReDO = new BusinessDailyUserReDO(); businessDailyUserReDO.setId(IdUtil.simpleUUID()); businessDailyUserReDO.setBussinessDailyId(businessDailyDO.getId()); businessDailyUserReDO.setUserId(userId); return businessDailyUserReDO; }).collect(Collectors.toList()); // 保存负责人信息 businessDailyUserReService.saveBatch(businessDailyUserReDOS); // 保存甘特图信息 linFileReService.saveFileReByReIdType(businessDailyDO.getId(),validator.getGanteImgList(),FileReTypeEnum.BUSINESS_GANTT); return baseMapper.insert(businessDailyDO)>0; } @Transactional @Override public boolean UpdateBusinessDaily(UpdateBusinessDailyDTO validator) { UserDO user = LocalUser.getLocalUser(); BusinessDailyDO businessDailyDO=new BusinessDailyDO(); BeanUtils.copyProperties(validator,businessDailyDO); businessDailyDO.setUpdateTime(new Date()); businessDailyDO.setUpdateUserId(String.valueOf(user.getId())); businessDailyDO.setUpdateUserName(user.getNickname()); // 删除关联人员信息 businessDailyUserReMapper.delete(new LambdaQueryWrapper().eq(BusinessDailyUserReDO::getBussinessDailyId,businessDailyDO.getId())); // 重新关联人员信息 final List businessDailyUserReDOS = validator.getUserIds().stream().map(userId -> { BusinessDailyUserReDO businessDailyUserReDO = new BusinessDailyUserReDO(); businessDailyUserReDO.setId(IdUtil.simpleUUID()); businessDailyUserReDO.setBussinessDailyId(businessDailyDO.getId()); businessDailyUserReDO.setUserId(userId); return businessDailyUserReDO; }).collect(Collectors.toList()); // 保存负责人信息 businessDailyUserReService.saveBatch(businessDailyUserReDOS); // 保存甘特图信息 linFileReService.saveFileReByReIdType(businessDailyDO.getId(),validator.getGanteImgList(),FileReTypeEnum.BUSINESS_GANTT); return baseMapper.updateById(businessDailyDO)>0; } @Override public IPage getBusinessDailyPage(BusinessDailyPageDTO dto) { Page page=new Page(dto.getPage(),dto.getCount()); return businessDailyMapperCustom.getBusinessDailyPage(page,dto); } @Override public BusinessDailyBO getBusinessDailyBOById(String id) { BusinessDailyPageDTO dto=new BusinessDailyPageDTO(); dto.setId(id); Page page=new Page(dto.getPage(),dto.getCount()); final IPage businessDailyPage = businessDailyMapperCustom.getBusinessDailyWithRelation(page,dto); // final IPage businessDailyPage = getBusinessDailyPage(dto); if(!CollectionUtils.isEmpty(businessDailyPage.getRecords())){ final BusinessDailyBO businessDailyBO = businessDailyPage.getRecords().get(0); // 获取负责人信息 final List userIds = businessDailyBO.getUserDOList().stream().map(user -> user.getId()).collect(Collectors.toList()); businessDailyBO.setUserIds(userIds); // 获取甘特图文件 List fileList=linFileReService.getFileByReIdType(businessDailyBO.getId(),FileReTypeEnum.BUSINESS_GANTT); businessDailyBO.setGanteImgList(linFileReService.transFileToFileImageInfo(fileList)); return businessDailyBO; } return null; } @Transactional @Override public void delBusinessDailyByMeetingId(String meetingId) { // businessDailyMapperCustom.delBusinessDailyByMeetingId(meetingId); UserDO user = LocalUser.getLocalUser(); BusinessDailyDO businessDailyDO=new BusinessDailyDO(); businessDailyDO.setIsDeleted(DeletedEnum.DELETED_YES.getCode()); businessDailyDO.setBusinessDate(LocalDateTime.now()); businessDailyDO.setDeleteUserId(String.valueOf(user.getId())); businessDailyDO.setDeleteUserName(user.getNickname()); LambdaQueryWrapper wrapper=new LambdaQueryWrapper<>(); wrapper.eq(BusinessDailyDO::getMeetingId,meetingId); baseMapper.update(businessDailyDO,wrapper); } }