31a1a3fb 康伟

kangwei: 会议纪要下载

1 个父辈 8e5b9f5d
...@@ -2,6 +2,7 @@ package com.skua.modules.ajh.controller; ...@@ -2,6 +2,7 @@ package com.skua.modules.ajh.controller;
2 2
3 import java.io.*; 3 import java.io.*;
4 import java.net.URLEncoder; 4 import java.net.URLEncoder;
5
5 import java.util.*; 6 import java.util.*;
6 import java.net.URLDecoder; 7 import java.net.URLDecoder;
7 import javax.servlet.http.HttpServletRequest; 8 import javax.servlet.http.HttpServletRequest;
...@@ -23,23 +24,23 @@ import com.baomidou.mybatisplus.core.metadata.IPage; ...@@ -23,23 +24,23 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
23 import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 24 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
24 import com.skua.modules.ajh.service.IAjhMeetingSendService; 25 import com.skua.modules.ajh.service.IAjhMeetingSendService;
25 import com.skua.modules.ajh.service.IAjhMeetingService; 26 import com.skua.modules.ajh.service.IAjhMeetingService;
26 import com.skua.modules.ajh.util.Base64Utils; 27
27 import com.skua.modules.ajh.util.WordUtil; 28 import com.skua.modules.guest.util.DateUtil;
28 import com.skua.modules.ajh.vo.ExportAjhMeetingMinutesVO; 29 import com.skua.modules.system.service.ISysUserService;
29 import lombok.extern.slf4j.Slf4j; 30 import lombok.extern.slf4j.Slf4j;
30 31
31 import org.apache.poi.xwpf.usermodel.XWPFDocument;
32 import org.bytedeco.javacv.FrameFilter;
33 import org.jeecgframework.poi.excel.ExcelImportUtil; 32 import org.jeecgframework.poi.excel.ExcelImportUtil;
34 import org.jeecgframework.poi.excel.def.NormalExcelConstants; 33 import org.jeecgframework.poi.excel.def.NormalExcelConstants;
35 import org.jeecgframework.poi.excel.entity.ExportParams; 34 import org.jeecgframework.poi.excel.entity.ExportParams;
36 import org.jeecgframework.poi.excel.entity.ImportParams; 35 import org.jeecgframework.poi.excel.entity.ImportParams;
37 import org.jeecgframework.poi.excel.view.JeecgEntityExcelView; 36 import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
38 37
39 import org.jeecgframework.poi.word.WordExportUtil;
40 import org.jeecgframework.poi.word.entity.MyXWPFDocument; 38 import org.jeecgframework.poi.word.entity.MyXWPFDocument;
41 import org.jeecgframework.poi.word.entity.WordImageEntity; 39 import org.jeecgframework.poi.word.entity.WordImageEntity;
42 import org.springframework.beans.factory.annotation.Autowired; 40 import org.springframework.beans.factory.annotation.Autowired;
41 import org.springframework.beans.factory.annotation.Value;
42 import org.springframework.core.io.ClassPathResource;
43 import org.springframework.core.io.Resource;
43 import org.springframework.web.bind.annotation.*; 44 import org.springframework.web.bind.annotation.*;
44 import org.springframework.web.multipart.MultipartFile; 45 import org.springframework.web.multipart.MultipartFile;
45 import org.springframework.web.multipart.MultipartHttpServletRequest; 46 import org.springframework.web.multipart.MultipartHttpServletRequest;
...@@ -48,6 +49,8 @@ import com.alibaba.fastjson.JSON; ...@@ -48,6 +49,8 @@ import com.alibaba.fastjson.JSON;
48 import io.swagger.annotations.Api; 49 import io.swagger.annotations.Api;
49 import io.swagger.annotations.ApiOperation; 50 import io.swagger.annotations.ApiOperation;
50 51
52
53
51 /** 54 /**
52 * <pre> 55 * <pre>
53 * 会议纪要管理 56 * 会议纪要管理
...@@ -60,7 +63,8 @@ import io.swagger.annotations.ApiOperation; ...@@ -60,7 +63,8 @@ import io.swagger.annotations.ApiOperation;
60 @RestController 63 @RestController
61 @RequestMapping("/ajh/meetingMinutes") 64 @RequestMapping("/ajh/meetingMinutes")
62 public class AjhMeetingMinutesController { 65 public class AjhMeetingMinutesController {
63 66 @Value("${skua.path.upload}")
67 private String upLoadPath;
64 @Autowired 68 @Autowired
65 private IAjhMeetingMinutesService ajhMeetingMinutesService;//会议纪要 69 private IAjhMeetingMinutesService ajhMeetingMinutesService;//会议纪要
66 70
...@@ -73,6 +77,9 @@ public class AjhMeetingMinutesController { ...@@ -73,6 +77,9 @@ public class AjhMeetingMinutesController {
73 @Autowired 77 @Autowired
74 private IAjhMeetingAttendService meetingAttendService;//会议签到记录 78 private IAjhMeetingAttendService meetingAttendService;//会议签到记录
75 79
80 @Autowired
81 private ISysUserService userService;
82
76 83
77 /** 84 /**
78 * <pre> 85 * <pre>
...@@ -91,9 +98,9 @@ public class AjhMeetingMinutesController { ...@@ -91,9 +98,9 @@ public class AjhMeetingMinutesController {
91 @ApiOperation(value="会议纪要管理-分页列表查询", notes="会议纪要管理-分页列表查询") 98 @ApiOperation(value="会议纪要管理-分页列表查询", notes="会议纪要管理-分页列表查询")
92 @GetMapping(value = "/list") 99 @GetMapping(value = "/list")
93 public Result<IPage<AjhMeetingMinutes>> queryPageList(AjhMeetingMinutes ajhMeetingMinutes, 100 public Result<IPage<AjhMeetingMinutes>> queryPageList(AjhMeetingMinutes ajhMeetingMinutes,
94 @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, 101 @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
95 @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, 102 @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
96 HttpServletRequest req) { 103 HttpServletRequest req) {
97 Result<IPage<AjhMeetingMinutes>> result = new Result<IPage<AjhMeetingMinutes>>(); 104 Result<IPage<AjhMeetingMinutes>> result = new Result<IPage<AjhMeetingMinutes>>();
98 QueryWrapper<AjhMeetingMinutes> queryWrapper = QueryGenerator.initQueryWrapper(ajhMeetingMinutes, req.getParameterMap()); 105 QueryWrapper<AjhMeetingMinutes> queryWrapper = QueryGenerator.initQueryWrapper(ajhMeetingMinutes, req.getParameterMap());
99 Page<AjhMeetingMinutes> page = new Page<AjhMeetingMinutes>(pageNo, pageSize); 106 Page<AjhMeetingMinutes> page = new Page<AjhMeetingMinutes>(pageNo, pageSize);
...@@ -211,7 +218,7 @@ public class AjhMeetingMinutesController { ...@@ -211,7 +218,7 @@ public class AjhMeetingMinutesController {
211 @GetMapping(value = "/getByMeetId") 218 @GetMapping(value = "/getByMeetId")
212 public Result<AjhMeetingMinutes> queryByMeetId(@RequestParam(name="meetId",required=true) String meetId) { 219 public Result<AjhMeetingMinutes> queryByMeetId(@RequestParam(name="meetId",required=true) String meetId) {
213 Result<AjhMeetingMinutes> result = new Result<AjhMeetingMinutes>(); 220 Result<AjhMeetingMinutes> result = new Result<AjhMeetingMinutes>();
214 AjhMeetingMinutes ajhMeetingMinutes = ajhMeetingMinutesService.queryByMeetId(meetId); 221 AjhMeetingMinutes ajhMeetingMinutes = ajhMeetingMinutesService.queryByMeetsId(meetId);
215 if(ajhMeetingMinutes != null) { 222 if(ajhMeetingMinutes != null) {
216 result.setResult(ajhMeetingMinutes); 223 result.setResult(ajhMeetingMinutes);
217 result.setSuccess(true); 224 result.setSuccess(true);
...@@ -243,7 +250,7 @@ public class AjhMeetingMinutesController { ...@@ -243,7 +250,7 @@ public class AjhMeetingMinutesController {
243 return result; 250 return result;
244 } 251 }
245 252
246 /** 253 /**
247 * <pre> 254 * <pre>
248 * 导出excel 255 * 导出excel
249 * </pre> 256 * </pre>
...@@ -254,33 +261,33 @@ public class AjhMeetingMinutesController { ...@@ -254,33 +261,33 @@ public class AjhMeetingMinutesController {
254 * @Description: TODO(这里描述这个方法的需求变更情况) 261 * @Description: TODO(这里描述这个方法的需求变更情况)
255 */ 262 */
256 263
257 @RequestMapping(value = "/exportXls") 264 @RequestMapping(value = "/exportXls")
258 public ModelAndView exportXls(HttpServletRequest request, HttpServletResponse response) { 265 public ModelAndView exportXls(HttpServletRequest request, HttpServletResponse response) {
259 // Step.1 组装查询条件 266 // Step.1 组装查询条件
260 QueryWrapper<AjhMeetingMinutes> queryWrapper = null; 267 QueryWrapper<AjhMeetingMinutes> queryWrapper = null;
261 try { 268 try {
262 String paramsStr = request.getParameter("paramsStr"); 269 String paramsStr = request.getParameter("paramsStr");
263 if (ConvertUtils.isNotEmpty(paramsStr)) { 270 if (ConvertUtils.isNotEmpty(paramsStr)) {
264 String deString = URLDecoder.decode(paramsStr, "UTF-8"); 271 String deString = URLDecoder.decode(paramsStr, "UTF-8");
265 AjhMeetingMinutes ajhMeetingMinutes = JSON.parseObject(deString, AjhMeetingMinutes.class); 272 AjhMeetingMinutes ajhMeetingMinutes = JSON.parseObject(deString, AjhMeetingMinutes.class);
266 queryWrapper = QueryGenerator.initQueryWrapper(ajhMeetingMinutes, request.getParameterMap()); 273 queryWrapper = QueryGenerator.initQueryWrapper(ajhMeetingMinutes, request.getParameterMap());
267 } 274 }
268 } catch (UnsupportedEncodingException e) { 275 } catch (UnsupportedEncodingException e) {
269 e.printStackTrace(); 276 e.printStackTrace();
270 } 277 }
271 278
272 //Step.2 AutoPoi 导出Excel 279 //Step.2 AutoPoi 导出Excel
273 ModelAndView mv = new ModelAndView(new JeecgEntityExcelView()); 280 ModelAndView mv = new ModelAndView(new JeecgEntityExcelView());
274 List<AjhMeetingMinutes> pageList = ajhMeetingMinutesService.list(queryWrapper); 281 List<AjhMeetingMinutes> pageList = ajhMeetingMinutesService.list(queryWrapper);
275 //导出文件名称 282 //导出文件名称
276 mv.addObject(NormalExcelConstants.FILE_NAME, "会议纪要管理列表"); 283 mv.addObject(NormalExcelConstants.FILE_NAME, "会议纪要管理列表");
277 mv.addObject(NormalExcelConstants.CLASS, AjhMeetingMinutes.class); 284 mv.addObject(NormalExcelConstants.CLASS, AjhMeetingMinutes.class);
278 mv.addObject(NormalExcelConstants.PARAMS, new ExportParams("会议纪要管理列表数据", "导出人:Jeecg", "导出信息")); 285 mv.addObject(NormalExcelConstants.PARAMS, new ExportParams("会议纪要管理列表数据", "导出人:Jeecg", "导出信息"));
279 mv.addObject(NormalExcelConstants.DATA_LIST, pageList); 286 mv.addObject(NormalExcelConstants.DATA_LIST, pageList);
280 return mv; 287 return mv;
281 } 288 }
282 289
283 /** 290 /**
284 * <pre> 291 * <pre>
285 * 通过excel导入数据 292 * 通过excel导入数据
286 * </pre> 293 * </pre>
...@@ -290,96 +297,136 @@ public class AjhMeetingMinutesController { ...@@ -290,96 +297,136 @@ public class AjhMeetingMinutesController {
290 * @author 开发者姓名, 开发时间 297 * @author 开发者姓名, 开发时间
291 * @Description: TODO(这里描述这个方法的需求变更情况) 298 * @Description: TODO(这里描述这个方法的需求变更情况)
292 */ 299 */
293 @RequestMapping(value = "/importExcel", method = RequestMethod.POST) 300 @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
294 public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) { 301 public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
295 MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request; 302 MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
296 Map<String, MultipartFile> fileMap = multipartRequest.getFileMap(); 303 Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();
297 for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) { 304 for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) {
298 MultipartFile file = entity.getValue();// 获取上传文件对象 305 MultipartFile file = entity.getValue();// 获取上传文件对象
299 ImportParams params = new ImportParams(); 306 ImportParams params = new ImportParams();
300 params.setTitleRows(2); 307 params.setTitleRows(2);
301 params.setHeadRows(1); 308 params.setHeadRows(1);
302 params.setNeedSave(true); 309 params.setNeedSave(true);
303 try { 310 try {
304 List<AjhMeetingMinutes> listAjhMeetingMinutess = ExcelImportUtil.importExcel(file.getInputStream(), AjhMeetingMinutes.class, params); 311 List<AjhMeetingMinutes> listAjhMeetingMinutess = ExcelImportUtil.importExcel(file.getInputStream(), AjhMeetingMinutes.class, params);
305 ajhMeetingMinutesService.saveBatch(listAjhMeetingMinutess); 312 ajhMeetingMinutesService.saveBatch(listAjhMeetingMinutess);
306 return Result.ok("文件导入成功!数据行数:" + listAjhMeetingMinutess.size()); 313 return Result.ok("文件导入成功!数据行数:" + listAjhMeetingMinutess.size());
307 } catch (Exception e) { 314 } catch (Exception e) {
308 log.error(e.getMessage(),e); 315 log.error(e.getMessage(),e);
309 return Result.error("文件导入失败:"+e.getMessage()); 316 return Result.error("文件导入失败:"+e.getMessage());
310 } finally { 317 } finally {
311 try { 318 try {
312 file.getInputStream().close(); 319 file.getInputStream().close();
313 } catch (IOException e) { 320 } catch (IOException e) {
314 e.printStackTrace(); 321 e.printStackTrace();
315 } 322 }
316 } 323 }
317 } 324 }
318 return Result.ok("文件导入失败!"); 325 return Result.ok("文件导入失败!");
319 } 326 }
320 /*** 327 /***
321 * 下载会议纪要 328 * 下载会议纪要
322 * @param meetsId 329 * @param meetsId
323 * @param response 330 * @param response
324 */ 331 */
325 @AutoLog(value = "会议纪要管理-通过会议纪要id下载会议纪要")
326 @ApiOperation(value="会议纪要管理-通过id下载会议纪要", notes="会议纪要管理-通过id下载会议纪要")
327 @GetMapping("/exportWord") 332 @GetMapping("/exportWord")
328 public void exportWordData(@RequestParam(name="id",required=true) String meetsId,HttpServletResponse response ) { 333 public void exportWordData(@RequestParam(name="id",required=true) String meetsId, HttpServletResponse response ) {
329 String templatePath = "D:\\test\\会议模板-2.docx";//导出模板文件名称 334 //String templatePath = "D:\\test\\会议模板-2.docx";//导出模板文件名称
335 String templatePath = upLoadPath + File.separator ;
336 String exportName = "会议纪要.docx";//导出文件名称
330 337
331 String exportName = "****---会议纪要.docx";//导出文件名称 338 Map<String ,Object> paramMap = initParamMap();//参数map集合
332 Map<String ,Object> paramMap = new HashMap<String,Object>();
333 339
334 AjhMeetingMinutes ajhMeetingMinutes = ajhMeetingMinutesService.queryByMeetId(meetsId);
335 ExportAjhMeetingMinutesVO exprotVo = new ExportAjhMeetingMinutesVO();
336 // 标题:meetTitile 机构名称:orgDepart 纪要图片 , 住持人 ;纪要内容 ; 会议地点
337 exprotVo.convert( exprotVo , ajhMeetingMinutes);
338 // 会议记录 340 // 会议记录
339 AjhMeetingSend meetingSend = meetingSendService.getById( meetsId ); 341 AjhMeetingSend meetingSend = meetingSendService.getById( meetsId );
340 //会议通知 342 // 会议通知
341 AjhMeeting meeting = meetingService.getById( meetsId ); 343 AjhMeeting meeting = meetingService.getById( meetingSend.getMeetId() );
344 //会议纪要
345 AjhMeetingMinutes ajhMeetingMinutes = ajhMeetingMinutesService.queryByMeetsId(meetsId);
346 //ExportAjhMeetingMinutesVO exprotVo = new ExportAjhMeetingMinutesVO();
347
348 /****************会议通知**********************/
349 if(meeting != null ){
350 templatePath = templatePath + meeting.getMinutesTemplate();// 会议纪要导出模板路径
351 paramMap.put("meetTitile", meeting.getMeetTitile() );//会议标题
352 paramMap.put( "sender",meeting.getSender());//发起人
353 paramMap.put("sendTime",null);
354 if(meeting.getSendTime() != null ){
355 paramMap.put("sendTime",DateUtil.formatDate(meeting.getSendTime(),"yyyy年MM月dd日"));//会议发送时间
356 }
357 }
358 //paramMap.put("startTime",meeting.getStartTime());// 会议通知 开始时间
359 //paramMap.put("endTime",meeting.getEndTime());//会议通知 结束时间
360
361 /**************会议记录内容****************/
362
363 if(meetingSend != null ){
364 paramMap.put("startTime",null);
365 if(meetingSend.getMeetStartTime() != null ){
366 paramMap.put("startTime", DateUtil.formatDate(meetingSend.getMeetStartTime() ,"yyyy年MM月dd日") );// 会议记录 开始时间
367 }
368 paramMap.put("endTime",meetingSend.getMeetEndTime());// 会议记录 结束时间
369 paramMap.put("meetingPlace",meetingSend.getMeetLocation());//会议地址:
370 if(meetingSend.getMeetContent() != null ){
371 String meetingContent =meetingSend.getMeetContent() ;
372 meetingContent = meetingContent.replaceAll("<.*?>", "");
373
374 paramMap.put("meetingContent",meetingContent);//会议内容
375 }
376 String participantsName = userService.getUserNameByUserIds(meetingSend.getUserIds());
377 paramMap.put("participantsName",participantsName);//参会人员
378 }
379
380 // exprotVo.setOrgDepart( );
381 // 会议模板:files/20240903/中冶智慧水务运营管控平台项目阶段性汇报会议纪要20240805_1725342900006.doc
382 String templateDocPath = meetingSend.getMinutesTemplate();//会议纪要模板
383 /****************会议纪要**********************/
384
385 String minutesimage = null; //会议既要图片
386 if(ajhMeetingMinutes != null ){
387 paramMap.put("orgDepart",ajhMeetingMinutes.getOrgDepart());//集团名称
388 paramMap.put("compere",ajhMeetingMinutes.getCompere());//会议主持人
389 if(ajhMeetingMinutes.getDetail() != null ){
390 String minutesContent =ajhMeetingMinutes.getDetail() ;
391 minutesContent = minutesContent.replaceAll("<.*?>", "");
392 paramMap.put("minutesContent",minutesContent);//会议纪要内容
393 }
394
395 minutesimage = upLoadPath + File.separator + ajhMeetingMinutes.getImage();
396 }
397
342 //签到集合 398 //签到集合
343 int supplementNum = 0;//后续添加补全表格记录16 399 List<AjhMeetingAttend> meetingAttendList = meetingAttendService.getByMeetsId( meetsId );
344 List<AjhMeetingAttend> meetingAttendList = meetingAttendService.getByMeetsId( meetsId ); 400 int index = 1;
345 if(meetingAttendList == null || meetingAttendList.isEmpty()){ 401 if(meetingAttendList != null && !meetingAttendList.isEmpty()){
346 meetingAttendList = new ArrayList<AjhMeetingAttend>(); 402 for(AjhMeetingAttend ajhMeetingAttend : meetingAttendList){
347 supplementNum = 16; 403 ajhMeetingAttend.setIndex(index++);
348 }else{ 404 ajhMeetingAttend.setDuties("");
349 supplementNum = 16 - meetingAttendList.size(); 405 }
350 } 406 }
407
351 //补全签到表格集合 408 //补全签到表格集合
352 supplementList( meetingAttendList , supplementNum ); 409 supplementList( meetingAttendList , index );
353 //签到表集合 410 // //签到表集合
354 paramMap.put("attendList",meetingAttendList); 411 paramMap.put("attendList",meetingAttendList);
355 412
356 //添加图片 413 //添加图片
357 // 第三部分:图片 414 // 第三部分:图片
358 WordImageEntity img = new WordImageEntity(); 415 File minutesimageFile = new File(minutesimage);
359 img.setType(WordImageEntity.URL); 416 if(minutesimageFile.exists()){
360 img.setUrl("D:\\test\\123.jpg"); 417 WordImageEntity img = new WordImageEntity();
361 //img.setUrl("https://s2.51cto.com/media/2024/blog/logo.png"); 418 img.setType(WordImageEntity.URL);
362 img.setWidth(550); 419 img.setUrl(minutesimage);
363 img.setHeight(500); 420 //img.setUrl("https://s2.51cto.com/media/2024/blog/logo.png");
364 421 img.setWidth(550);
365 paramMap.put("meetingPlace" , img); 422 img.setHeight(500);
423
424 paramMap.put("meetingImg" , img);
425 }
366 //导出word 426 //导出word
367 exportWordData( templatePath , exportName , paramMap ,response); 427 exportWordData( templatePath , exportName , paramMap ,response);
368 } 428 }
369 429
370 /***
371 * 补全签到表格集合
372 * @param meetingAttendList
373 * @param supplementNum
374 */
375 private void supplementList(List<AjhMeetingAttend> meetingAttendList ,int supplementNum){
376 if(supplementNum > 0){
377 for(int i = 0 ;i <supplementNum ;i ++){
378 meetingAttendList.add( new AjhMeetingAttend() );
379 }
380 }
381
382 }
383 /** 430 /**
384 * 导出word模板 431 * 导出word模板
385 * @param templatePath 432 * @param templatePath
...@@ -388,16 +435,19 @@ public class AjhMeetingMinutesController { ...@@ -388,16 +435,19 @@ public class AjhMeetingMinutesController {
388 * @param response 435 * @param response
389 */ 436 */
390 private void exportWordData(String templatePath , String exportName , Map<String ,Object> paramMap, HttpServletResponse response ){ 437 private void exportWordData(String templatePath , String exportName , Map<String ,Object> paramMap, HttpServletResponse response ){
391 InputStream is = null; 438 InputStream inputStream = null;
392
393 //具体业务处理方法 439 //具体业务处理方法
394 try { 440 try {
395 //获取word文档解析对象 441 //获取word文档解析对象
396 is = new FileInputStream(templatePath); 442 File file = new File(templatePath);
443 if(file.exists()){
444 inputStream = new FileInputStream(templatePath);
445 }else{//判断文件是否存在,如果不存在使用默认模板
446 Resource resource = new ClassPathResource("templates" + File.separator + "template_AjhMeetingMinutes.docx");
447 inputStream = resource.getInputStream();
448 }
397 //加载模板文件 449 //加载模板文件
398 MyXWPFDocument document = new MyXWPFDocument(is); 450 MyXWPFDocument document = new MyXWPFDocument(inputStream);
399
400
401 //解析07版的Word并且进行赋值 451 //解析07版的Word并且进行赋值
402 //WordExportUtil.exportWord07(document, paramMap); 452 //WordExportUtil.exportWord07(document, paramMap);
403 //解析07版的Word并且进行赋值 453 //解析07版的Word并且进行赋值
...@@ -411,12 +461,10 @@ public class AjhMeetingMinutesController { ...@@ -411,12 +461,10 @@ public class AjhMeetingMinutesController {
411 response.setHeader("Content-Disposition", "attachment;filename=".concat(String.valueOf(URLEncoder.encode(exportName , "UTF-8")))); 461 response.setHeader("Content-Disposition", "attachment;filename=".concat(String.valueOf(URLEncoder.encode(exportName , "UTF-8"))));
412 // 将文档写入响应的输出流 462 // 将文档写入响应的输出流
413 463
414
415 // 输出文件路径 --测试 464 // 输出文件路径 --测试
416 /* String outputPath = "D:\\test\\会议纪要导出记录.docx"; 465 /* String outputPath = "D:\\test\\会议纪要导出记录.docx";
417 FileOutputStream outputFile = new FileOutputStream(outputPath); 466 FileOutputStream outputFile = new FileOutputStream(outputPath);
418 document.write( outputFile);*/ 467 document.write( outputFile);*/
419
420 document.write(response.getOutputStream()); 468 document.write(response.getOutputStream());
421 // 刷新和关闭输出流 469 // 刷新和关闭输出流
422 response.getOutputStream().flush(); 470 response.getOutputStream().flush();
...@@ -427,11 +475,49 @@ public class AjhMeetingMinutesController { ...@@ -427,11 +475,49 @@ public class AjhMeetingMinutesController {
427 catch (Exception e) { 475 catch (Exception e) {
428 e.printStackTrace(); 476 e.printStackTrace();
429 }finally { 477 }finally {
478 System.out.println("关闭输入流");
430 try{ 479 try{
431 if(is != null ) is.close();//关闭输入流 480 if(inputStream != null ) inputStream.close();//关闭输入流
432 }catch (Exception e1){ 481 }catch (Exception e1){
433 e1.printStackTrace(); 482 e1.printStackTrace();
434 } 483 }
435 } 484 }
436 } 485 }
486
487
488 /***
489 * 补全签到表格集合
490 * @param meetingAttendList
491 * @param index
492 */
493 private void supplementList(List<AjhMeetingAttend> meetingAttendList ,int index){
494 if(index < 17 ){
495 for(int i = index ;i < 17 ;i ++){
496 meetingAttendList.add( new AjhMeetingAttend( index++,"","","" ) );
497 }
498 }
499 }
500 /***
501 * 初始化Map参数
502 * @return
503 */
504 private Map<String ,Object> initParamMap(){
505 Map<String ,Object> paramMap = new HashMap<String,Object>();
506 paramMap.put("meetTitile", "" );//会议标题
507 paramMap.put( "sender","");//发起人
508 paramMap.put("sendTime","");//发送时间
509 paramMap.put("startTime","");
510 paramMap.put("endTime","");// 会议记录 结束时间
511 paramMap.put("meetingPlace","");//会议地址:
512 paramMap.put("meetingContent","");//会议内容
513 paramMap.put("participantsName","");//参会人员
514 paramMap.put("orgDepart","");//集团名称
515 paramMap.put("compere","");//会议主持人
516 paramMap.put("minutesContent","");//会议纪要内容
517
518 paramMap.put("attendList",new ArrayList<AjhMeetingAttend>());//签到记录
519 paramMap.put("meetingImg","");//会议纪要图片
520
521 return paramMap;
522 }
437 } 523 }
......
...@@ -96,4 +96,23 @@ public class AjhMeetingAttend { ...@@ -96,4 +96,23 @@ public class AjhMeetingAttend {
96 @TableField(exist = false) 96 @TableField(exist = false)
97 @ApiModelProperty(value = "序号") 97 @ApiModelProperty(value = "序号")
98 private Integer index; 98 private Integer index;
99
100 @TableField(exist = false)
101 @ApiModelProperty(value = "职务")
102 private String duties;
103
104 public AjhMeetingAttend() {
105 }
106
107 public AjhMeetingAttend(Integer index ,String duties) {
108 this.index = index;
109 this.duties = duties;
110 }
111
112 public AjhMeetingAttend( Integer index,String departName, String userName, String duties) {
113 this.index = index;
114 this.departName = departName;
115 this.userName = userName;
116 this.duties = duties;
117 }
99 } 118 }
......
...@@ -11,7 +11,12 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; ...@@ -11,7 +11,12 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
11 */ 11 */
12 public interface AjhMeetingMinutesMapper extends BaseMapper<AjhMeetingMinutes> { 12 public interface AjhMeetingMinutesMapper extends BaseMapper<AjhMeetingMinutes> {
13 13
14 AjhMeetingMinutes queryByMeetId(@Param("meetId") String meetId); 14 /**
15 * 根据会议记录编号获取最新的会议纪要内容
16 * @param meetsId
17 * @return
18 */
19 AjhMeetingMinutes queryByMeetsId(@Param("meetsId") String meetsId);
15 20
16 AjhMeetingMinutes getDataById(@Param("id") String id); 21 AjhMeetingMinutes getDataById(@Param("id") String id);
17 } 22 }
......
...@@ -2,8 +2,9 @@ ...@@ -2,8 +2,9 @@
2 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> 2 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
3 <mapper namespace="com.skua.modules.ajh.mapper.AjhMeetingMinutesMapper"> 3 <mapper namespace="com.skua.modules.ajh.mapper.AjhMeetingMinutesMapper">
4 4
5 <select id="queryByMeetId" resultType="com.skua.modules.ajh.entity.AjhMeetingMinutes"> 5 <!-- 根据会议记录编号获取最新的会议纪要内容-->
6 select * from ajh_meeting_minutes where meets_id = #{meetId} order by create_time desc limit 1 6 <select id="queryByMeetsId" resultType="com.skua.modules.ajh.entity.AjhMeetingMinutes">
7 select * from ajh_meeting_minutes where meets_id = #{meetsId} order by create_time desc limit 1
7 </select> 8 </select>
8 9
9 <select id="getDataById" resultType="com.skua.modules.ajh.entity.AjhMeetingMinutes"> 10 <select id="getDataById" resultType="com.skua.modules.ajh.entity.AjhMeetingMinutes">
......
...@@ -3,7 +3,6 @@ package com.skua.modules.ajh.service; ...@@ -3,7 +3,6 @@ package com.skua.modules.ajh.service;
3 import com.skua.modules.ajh.entity.AjhMeetingAttend; 3 import com.skua.modules.ajh.entity.AjhMeetingAttend;
4 import com.baomidou.mybatisplus.extension.service.IService; 4 import com.baomidou.mybatisplus.extension.service.IService;
5 import com.skua.modules.ajh.entity.AjhMeetingSend; 5 import com.skua.modules.ajh.entity.AjhMeetingSend;
6 import org.apache.ibatis.annotations.Param;
7 6
8 import java.util.List; 7 import java.util.List;
9 8
...@@ -19,6 +18,6 @@ public interface IAjhMeetingAttendService extends IService<AjhMeetingAttend> { ...@@ -19,6 +18,6 @@ public interface IAjhMeetingAttendService extends IService<AjhMeetingAttend> {
19 * @param meetsId 18 * @param meetsId
20 * @return 19 * @return
21 */ 20 */
22 public List<AjhMeetingAttend> getByMeetsId(@Param("meetsId")String meetsId); 21 public List<AjhMeetingAttend> getByMeetsId(String meetsId);
23 22
24 } 23 }
......
...@@ -8,7 +8,12 @@ import com.baomidou.mybatisplus.extension.service.IService; ...@@ -8,7 +8,12 @@ import com.baomidou.mybatisplus.extension.service.IService;
8 */ 8 */
9 public interface IAjhMeetingMinutesService extends IService<AjhMeetingMinutes> { 9 public interface IAjhMeetingMinutesService extends IService<AjhMeetingMinutes> {
10 10
11 AjhMeetingMinutes queryByMeetId(String meetId); 11 /***
12 * 根据会议记录编号获取最细的会议纪要
13 * @param meetsId
14 * @return
15 */
16 public AjhMeetingMinutes queryByMeetsId(String meetsId);
12 17
13 AjhMeetingMinutes getDataById(String id); 18 AjhMeetingMinutes getDataById(String id);
14 } 19 }
......
...@@ -32,31 +32,17 @@ public class AjhMeetingMinutesServiceImpl extends ServiceImpl<AjhMeetingMinutesM ...@@ -32,31 +32,17 @@ public class AjhMeetingMinutesServiceImpl extends ServiceImpl<AjhMeetingMinutesM
32 @Autowired 32 @Autowired
33 private ISysUserService sysUserService; 33 private ISysUserService sysUserService;
34 34
35 /***
36 * 根据会议记录编号获取最细的会议纪要
37 * @param meetsId
38 * @return
39 */
35 @Override 40 @Override
36 public AjhMeetingMinutes queryByMeetId(String meetId) { 41 public AjhMeetingMinutes queryByMeetsId(String meetsId) {
37 SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd"); 42
38 //获取会议记录信息 43 AjhMeetingMinutes ajhMeetingMinutes = ajhMeetingMinutesMapper.queryByMeetsId(meetsId);
39 AjhMeetingSend ajhMeetingSend = ajhMeetingSendService.getById(meetId); 44
40 //获取会议纪要 45 return ajhMeetingMinutes;
41 AjhMeetingMinutes ajhMeetingMinutes = ajhMeetingMinutesMapper.queryByMeetId(meetId);
42 if(ajhMeetingMinutes != null){
43 //会议时间
44 if(ajhMeetingSend.getMeetTime()!=null){
45 ajhMeetingMinutes.setAnnTime(ajhMeetingSend.getMeetTime());
46 }
47 //主持人
48 SysUser user = sysUserService.getById(ajhMeetingSend.getMeetCompere());
49 ajhMeetingMinutes.setCompere(user.getRealname());
50 //参与人
51 //创建会议时间
52 ajhMeetingMinutes.setSendDate(formatter.format(ajhMeetingSend.getCreateTime()));
53 //组织单位
54 SysDepart sysDepart = sysDepartService.getById(ajhMeetingSend.getDepartId());
55 ajhMeetingMinutes.setOrgDepart(sysDepart.getDepartName());
56 return ajhMeetingMinutes;
57 }else{
58 return new AjhMeetingMinutes();
59 }
60 } 46 }
61 47
62 @Override 48 @Override
......
...@@ -149,7 +149,7 @@ public class AjhMeetingSendServiceImpl extends ServiceImpl<AjhMeetingSendMapper, ...@@ -149,7 +149,7 @@ public class AjhMeetingSendServiceImpl extends ServiceImpl<AjhMeetingSendMapper,
149 dataMap.put("departMeetContent" ,meetingSend.getMeetContent() );//会议内容 149 dataMap.put("departMeetContent" ,meetingSend.getMeetContent() );//会议内容
150 150
151 //会议纪要 151 //会议纪要
152 AjhMeetingMinutes ajhMeetingMinutes = ajhMeetingMinutesMapper.queryByMeetId(meetingSend.getId()); 152 AjhMeetingMinutes ajhMeetingMinutes = ajhMeetingMinutesMapper.queryByMeetsId(meetingSend.getId());
153 if(ajhMeetingMinutes != null ){ 153 if(ajhMeetingMinutes != null ){
154 // dataMap.put("meetImage", Pictures.ofLocal(upLoadPath+ File.separator+ ajhMeetingMinutes.getImage() ).size(550, 500).create()); 154 // dataMap.put("meetImage", Pictures.ofLocal(upLoadPath+ File.separator+ ajhMeetingMinutes.getImage() ).size(550, 500).create());
155 //dataMap.put("meetImage" ,ajhMeetingMinutes.getImage() );//会议图片 需要转化为图片 155 //dataMap.put("meetImage" ,ajhMeetingMinutes.getImage() );//会议图片 需要转化为图片
......
...@@ -83,29 +83,7 @@ public class DateUtil { ...@@ -83,29 +83,7 @@ public class DateUtil {
83 } 83 }
84 84
85 85
86 /***
87 * 字符串日期格式化
88 * @param date
89 * @param format
90 * @return
91 */
92 public static String formatDate(String date , String format){
93 if(format == null ){
94 format = "yyyy-MM-dd";
95 }
96 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
97 86
98 SimpleDateFormat formatSDF = new SimpleDateFormat(format);
99 // 转化成日期类型
100 try {
101 Date startDate = sdf.parse(date);
102 date = formatSDF.format(startDate);
103 } catch (ParseException e) {
104 e.printStackTrace();
105 }
106 return date;
107
108 }
109 /** 87 /**
110 * 获取两个日期之间的所有日期 (年月日) 88 * 获取两个日期之间的所有日期 (年月日)
111 * 89 *
...@@ -271,4 +249,42 @@ public class DateUtil { ...@@ -271,4 +249,42 @@ public class DateUtil {
271 public static LocalDateTime dateToLocalDateTime(Date date){ 249 public static LocalDateTime dateToLocalDateTime(Date date){
272 return date.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime(); 250 return date.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
273 } 251 }
252
253
254 /***
255 * 字符串日期格式化
256 * @param date
257 * @param format
258 * @return
259 */
260 public static String formatDate(String date , String format){
261 if(format == null ){
262 format = "yyyy-MM-dd";
263 }
264 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
265
266 SimpleDateFormat formatSDF = new SimpleDateFormat(format);
267 // 转化成日期类型
268 try {
269 Date startDate = sdf.parse(date);
270 date = formatSDF.format(startDate);
271 } catch (ParseException e) {
272 e.printStackTrace();
273 }
274 return date;
275 }
276 public static String formatDate(Date dateTime , String format){
277 if(format == null ){
278 format = "yyyy-MM-dd";
279 }
280 String date = "";
281 SimpleDateFormat formatSDF = new SimpleDateFormat(format);
282 // 转化成日期类型
283 try {
284 date = formatSDF.format(dateTime);
285 } catch (Exception e) {
286 e.printStackTrace();
287 }
288 return date;
289 }
274 } 290 }
......
...@@ -104,6 +104,21 @@ ...@@ -104,6 +104,21 @@
104 '${item}' 104 '${item}'
105 </foreach> 105 </foreach>
106 </select> 106 </select>
107
108
109 <select id="getUserNameByUserIds" resultType="java.lang.String">
110 SELECT
111 username
112 FROM
113 sys_user
114 WHERE
115 id IN
116 <foreach item="item" index="index" collection="userIds.split(',')" open="(" separator="," close=")">
117 '${item}'
118 </foreach>
119 </select>
120
121
107 <select id="getUserByUserIds" resultType="com.skua.modules.system.entity.SysUser"> 122 <select id="getUserByUserIds" resultType="com.skua.modules.system.entity.SysUser">
108 SELECT 123 SELECT
109 * 124 *
......
...@@ -146,4 +146,11 @@ public interface ISysUserService extends IService<SysUser> { ...@@ -146,4 +146,11 @@ public interface ISysUserService extends IService<SysUser> {
146 List<SysUser> getUserByUserIds(String userIds); 146 List<SysUser> getUserByUserIds(String userIds);
147 147
148 List<SysUser> operationUserList(String departId); 148 List<SysUser> operationUserList(String departId);
149
150 /***
151 * 根据userids返回userName
152 * @param userIds
153 * @return
154 */
155 public String getUserNameByUserIds(String userIds);
149 } 156 }
......
...@@ -304,6 +304,24 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl ...@@ -304,6 +304,24 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
304 return list; 304 return list;
305 } 305 }
306 306
307 /***
308 * 根据userids返回userName
309 * @param userIds
310 * @return
311 */
312 public String getUserNameByUserIds(String userIds){
313 List<SysUser> userList = baseMapper.getUserByUserIds(userIds);
314
315 StringBuffer sb = new StringBuffer("");
316 if(userList != null ){
317 for(SysUser user : userList){
318 if(sb.length() >0 ) sb.append(",");
319 sb.append(user.getUsername());
320 }
321 }
322 return sb.toString();
323 }
324
307 @Override 325 @Override
308 public List<SysUser> operationUserList(String departId) { 326 public List<SysUser> operationUserList(String departId) {
309 return userMapper.operationUserList(departId); 327 return userMapper.operationUserList(departId);
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!