From 4f3a98f19143865cdc1de4791e8a95d96bd40c65 Mon Sep 17 00:00:00 2001 From: maven <2163098428@qq.com> Date: 星期五, 01 八月 2025 13:27:59 +0800 Subject: [PATCH] yys 密码已重置 --- cnas-manage/src/main/java/com/ruoyi/manage/service/impl/InternalMeetingServiceImpl.java | 203 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 203 insertions(+), 0 deletions(-) diff --git a/cnas-manage/src/main/java/com/ruoyi/manage/service/impl/InternalMeetingServiceImpl.java b/cnas-manage/src/main/java/com/ruoyi/manage/service/impl/InternalMeetingServiceImpl.java new file mode 100644 index 0000000..c26a0e1 --- /dev/null +++ b/cnas-manage/src/main/java/com/ruoyi/manage/service/impl/InternalMeetingServiceImpl.java @@ -0,0 +1,203 @@ +package com.ruoyi.manage.service.impl; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.deepoove.poi.XWPFTemplate; +import com.deepoove.poi.config.Configure; + +import com.ruoyi.common.utils.QueryWrappers; +import com.ruoyi.inspect.util.HackLoopTableRenderPolicy; +import com.ruoyi.manage.dto.InternalMeetingDto; +import com.ruoyi.manage.dto.InternalMeetingParticipantDto; +import com.ruoyi.manage.mapper.InternalMeetingMapper; + +import com.ruoyi.manage.pojo.InternalMeeting; +import com.ruoyi.manage.pojo.InternalMeetingDetail; +import com.ruoyi.manage.service.InternalMeetingDetailService; +import com.ruoyi.manage.service.InternalMeetingService; + + +import com.ruoyi.system.mapper.UserMapper; +import lombok.AllArgsConstructor; +import org.springframework.beans.BeanUtils; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.servlet.http.HttpServletResponse; +import java.io.InputStream; +import java.io.OutputStream; +import java.net.URLEncoder; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * <p> + * 鍐呭浼氳琛� 鏈嶅姟瀹炵幇绫� + * </p> + * + * @author + * @since 2024-11-12 02:50:44 + */ +@Service +@AllArgsConstructor +@Transactional(rollbackFor = Exception.class) +public class InternalMeetingServiceImpl extends ServiceImpl<InternalMeetingMapper, InternalMeeting> implements InternalMeetingService { + + private InternalMeetingDetailService internalMeetingDetailService; + + private UserMapper userMapper; + + /** + * 鍐呭浼氳鍒嗛〉鏌ヨ + * @param page + * @param internalMeeting + * @return + */ + @Override + public IPage<InternalMeetingDto> pageInternalMeeting(Page page, InternalMeeting internalMeeting) { + return baseMapper.pageInternalMeeting(page, QueryWrappers.queryWrappers(internalMeeting)); + } + + /** + * 鍐呭浼氳鏂板 + * @param internalMeeting + * @return + */ + @Override + public boolean addInternalMeeting(InternalMeetingDto internalMeeting) { + + baseMapper.insert(internalMeeting); +// // 鏂板璇︽儏 +// for (InternalMeetingDetail internalMeetingDetail : internalMeeting.getMeetingDetailList()) { +// internalMeetingDetail.setMeetingId(internalMeeting.getMeetingId()); +// } +// internalMeetingDetailService.saveBatch(internalMeeting.getMeetingDetailList()); + return true; + } + + /** + * 鍐呭浼氳淇敼 + * @param internalMeeting + * @return + */ + @Override + public boolean updateInternalMeeting(InternalMeetingDto internalMeeting) { + baseMapper.updateById(internalMeeting); + + // 鍒犻櫎涔嬪墠鐨勮鎯� +// internalMeetingDetailService.remove(Wrappers.<InternalMeetingDetail>lambdaQuery() +// .eq(InternalMeetingDetail::getMeetingId, internalMeeting.getMeetingId())); +// +// // 鏂板璇︽儏 +// for (InternalMeetingDetail internalMeetingDetail : internalMeeting.getMeetingDetailList()) { +// internalMeetingDetail.setMeetingId(internalMeeting.getMeetingId()); +// } + internalMeetingDetailService.saveBatch(internalMeeting.getMeetingDetailList()); + + return true; + } + + /** + * 鍐呭浼氳鍒犻櫎 + * @param MeetingId + * @return + */ + @Override + public boolean delInternalMeeting(Integer MeetingId) { + internalMeetingDetailService.remove(Wrappers.<InternalMeetingDetail>lambdaQuery() + .eq(InternalMeetingDetail::getMeetingId, MeetingId)); + baseMapper.deleteById(MeetingId); + return true; + } + + /** + * 鍐呭浼氳鏌ョ湅璇︽儏 + * @param MeetingId + * @return + */ + @Override + public InternalMeetingDto getInternalMeetingOne(Integer MeetingId) { + InternalMeeting internalMeeting = baseMapper.selectById(MeetingId); + InternalMeetingDto internalMeetingDto = new InternalMeetingDto(); + BeanUtils.copyProperties(internalMeeting, internalMeetingDto); + + // 鏌ヨ璇︾粏淇℃伅 + internalMeetingDto.setMeetingDetailList(internalMeetingDetailService.list(Wrappers.<InternalMeetingDetail>lambdaQuery() + .eq(InternalMeetingDetail::getMeetingId, MeetingId))); + return internalMeetingDto; + } + + /** + * 瀵煎嚭鍐呭浼氳 + * @param meetingId + * @param response + */ + @Override + public void exportInternalMeeting(Integer meetingId, HttpServletResponse response) { + InternalMeeting internalMeeting = baseMapper.selectById(meetingId); + + // 鏈�澶ц鏁� + int max = 11; + + // 鏌ヨ鍙傚姞浜哄憳 + List<Map<String, String>> mapList = userMapper.selectNameAnddepartment(internalMeeting.getParticipant()); + + // 鍒涘缓绌哄璞� + List<InternalMeetingParticipantDto> participants = new ArrayList<>(); + for (int i = 0; i < max; i++) { + InternalMeetingParticipantDto participant = new InternalMeetingParticipantDto(); + participants.add(participant); + } + + int count = 0; + // 娣诲姞鍙傚姞浜哄憳 + for (Map<String, String> stringMap : mapList) { + // 鍒ゆ柇鏈夋病鏈夊埌11琛� + if (count >= max * 2) { + participants.get(count - max * 2).setUserName3(stringMap.get("userName")); + participants.get(count - max * 2).setDepartment3(stringMap.get("department")); + } else if (count >= max){ + participants.get(count - max).setUserName2(stringMap.get("userName")); + participants.get(count - max).setDepartment2(stringMap.get("department")); + } else { + participants.get(count).setUserName1(stringMap.get("userName")); + participants.get(count).setDepartment1(stringMap.get("department")); + } + count ++; + } + + // 鑾峰彇璺緞 + InputStream inputStream = this.getClass().getResourceAsStream("/static/internal-meeting.docx"); + Configure configure = Configure.builder() + .bind("meetingDetails", new HackLoopTableRenderPolicy()) + .build(); + XWPFTemplate template = XWPFTemplate.compile(inputStream, configure).render( + new HashMap<String, Object>() {{ + put("meeting", internalMeeting); + put("meetingDetails", participants); + }}); + + try { + response.setContentType("application/msword"); + String fileName = URLEncoder.encode( + internalMeeting.getMeetingDate() + "鍐呭浼氳绛惧埌", "UTF-8"); + response.setHeader("Content-disposition", + "attachment;filename=" + fileName + ".docx"); + OutputStream os = response.getOutputStream(); + template.write(os); + os.flush(); + os.close(); + inputStream.close(); + } catch (Exception e) { + e.printStackTrace(); + throw new RuntimeException("瀵煎嚭澶辫触"); + } + + } + + +} -- Gitblit v1.9.3