package com.newfiber.api.pc.service.impl; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.baomidou.mybatisplus.plugins.Page; import com.baomidou.mybatisplus.service.impl.ServiceImpl; import com.newfiber.api.config.FileVisitProperty; import com.newfiber.api.core.commons.CustomException; import com.newfiber.api.core.commons.PageRequestObject; import com.newfiber.api.core.commons.PageResultObject; import com.newfiber.api.core.commons.ResultCode; import com.newfiber.api.pc.dao.DiscussionInfoMapper; import com.newfiber.api.pc.model.entity.DiscussionDic; import com.newfiber.api.pc.model.entity.DiscussionInfo; import com.newfiber.api.pc.model.entity.DiscussionInfoDTO; import com.newfiber.api.pc.model.entity.DiscussionUser; import com.newfiber.api.pc.service.DiscussionDicService; import com.newfiber.api.pc.service.DiscussionInfoService; import com.newfiber.api.pc.service.DiscussionUserService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.StringUtils; import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; import java.util.stream.Collectors; /** * @ClassName DiscussionInfoServiceImpl * @Description TODO * @Author 张鸿志 * @Date 2021年6月3日17:49:25 17:49 * Version 1.0 **/ @Service public class DiscussionInfoServiceImpl extends ServiceImpl<DiscussionInfoMapper, DiscussionInfo> implements DiscussionInfoService { @Autowired private DiscussionUserService discussionUserService; @Autowired private DiscussionDicService discussionDicService; @Autowired private FileVisitProperty fileVisitProperty; @Override public DiscussionInfo saveDiscussion(DiscussionInfo discussionInfo) { if(this.insert(discussionInfo)){ List<DiscussionUser> userList = discussionInfo.getUserList(); if(!userList.isEmpty()){ userList.forEach(e->{ e.setDiscussionInfoId(discussionInfo.getId()); }); } if(discussionUserService.insertBatch(userList)){ return discussionInfo; } } throw new CustomException(500,"添加会商错误!"); } @Override public PageResultObject<DiscussionInfo> queryPage(PageRequestObject<DiscussionInfoDTO> pageRequestObject) { int current = pageRequestObject.getCurrent(); int size = pageRequestObject.getSize(); DiscussionInfoDTO discussionInfoDTO = pageRequestObject.getObject(); EntityWrapper<DiscussionInfo> wrapper = new EntityWrapper<>(); if(!StringUtils.isEmpty(discussionInfoDTO.getDiscussionName())){ wrapper.like("discussion_theme",discussionInfoDTO.getDiscussionName()); } if(!StringUtils.isEmpty(discussionInfoDTO.getDiscussionFrom())){ wrapper.like("discussion_from",discussionInfoDTO.getDiscussionFrom()+""); } if(!StringUtils.isEmpty(discussionInfoDTO.getDiscussionType())){ wrapper.like("discussion_type",discussionInfoDTO.getDiscussionType()+""); } Page<DiscussionInfo> page = new Page<>(current, size); List<DiscussionInfo> records = this.selectPage(page, wrapper).getRecords(); int count = this.selectCount(wrapper); Set<Integer> ids = new HashSet<>(); if(records.isEmpty()){ return new PageResultObject<>(current,size,(long)count,records); } for (DiscussionInfo record : records) { ids.add(record.getDiscussionFrom()); ids.add(record.getDiscussionType()); ids.add(record.getDiscussionDivision()); } List<DiscussionDic> discussionDics = discussionDicService.selectBatchIds(ids); EntityWrapper<DiscussionUser> userEntityWrapper = new EntityWrapper<>(); userEntityWrapper.in("discussion_info_id",records.stream().map(DiscussionInfo::getId).collect(Collectors.toList())); List<DiscussionUser> discussionUsers = discussionUserService.selectList(userEntityWrapper); Map<Integer, List<DiscussionUser>> listMap = discussionUsers.stream().collect(Collectors.groupingBy(DiscussionUser::getDiscussionInfoId)); for (DiscussionInfo record : records) { for (DiscussionDic discussionDic : discussionDics) { if(record.getDiscussionFrom().equals(discussionDic.getId())){ record.setDiscussionFromName(discussionDic.getDicName()); } if(record.getDiscussionType().equals(discussionDic.getId())){ record.setDiscussionTypeName(discussionDic.getDicName()); } if(record.getDiscussionDivision().equals(discussionDic.getId())){ record.setDiscussionDivisionName(discussionDic.getDicName()); } } for (Map.Entry<Integer, List<DiscussionUser>> listEntry : listMap.entrySet()) { if(record.getId().equals(listEntry.getKey())){ record.setUserList(listEntry.getValue()); break; } } if(!StringUtils.isEmpty(record.getDiscussionSummaryFile())){ record.setFilerealPath(fileVisitProperty.getWebFile() + record.getDiscussionSummaryFile()); } } return new PageResultObject<>(current,size,(long)count,records); } @Override public DiscussionInfo updateDiscussion(DiscussionInfo discussionInfo) { if(StringUtils.isEmpty(discussionInfo.getId())){ throw new CustomException(ResultCode.PARAM_NULL); } if(this.updateById(discussionInfo)){ //删除已有的参会人员 EntityWrapper<DiscussionUser> wrapper = new EntityWrapper(); wrapper.eq("discussion_info_id",discussionInfo.getId()); if(discussionUserService.delete(wrapper)){ List<DiscussionUser> userList = discussionInfo.getUserList(); if(!userList.isEmpty()){ userList.forEach(e->{ e.setDiscussionInfoId(discussionInfo.getId()); }); } if(discussionUserService.insertBatch(discussionInfo.getUserList())){ return discussionInfo; } } } return null; } @Override public List<DiscussionInfo> queryData(DiscussionInfoDTO discussionInfoDTO) { EntityWrapper<DiscussionInfo> wrapper = new EntityWrapper<>(); if(!StringUtils.isEmpty(discussionInfoDTO.getDiscussionName())){ wrapper.like("discussion_theme",discussionInfoDTO.getDiscussionName()); } if(!StringUtils.isEmpty(discussionInfoDTO.getDiscussionFrom())){ wrapper.like("discussion_from",discussionInfoDTO.getDiscussionFrom()+""); } if(!StringUtils.isEmpty(discussionInfoDTO.getDiscussionType())){ wrapper.like("discussion_type",discussionInfoDTO.getDiscussionType()+""); } List<DiscussionInfo> records = this.selectList(wrapper); Set<Integer> ids = new HashSet<>(); for (DiscussionInfo record : records) { ids.add(record.getDiscussionFrom()); ids.add(record.getDiscussionType()); ids.add(record.getDiscussionDivision()); } List<DiscussionDic> discussionDics = discussionDicService.selectBatchIds(ids); for (DiscussionInfo record : records) { for (DiscussionDic discussionDic : discussionDics) { if(record.getDiscussionFrom().equals(discussionDic.getId())){ record.setDiscussionFromName(discussionDic.getDicName()); } if(record.getDiscussionType().equals(discussionDic.getId())){ record.setDiscussionTypeName(discussionDic.getDicName()); } if(record.getDiscussionDivision().equals(discussionDic.getId())){ record.setDiscussionDivisionName(discussionDic.getDicName()); } } } return records; } }