提交 82f6e4d5 作者: 洪东保

按照制定部门计算统计次数

父级 813e64fd
...@@ -93,7 +93,10 @@ public class RobotWebSecurityConfig extends WebSecurityConfigurerAdapter { ...@@ -93,7 +93,10 @@ public class RobotWebSecurityConfig extends WebSecurityConfigurerAdapter {
"/**/*.js", "/**/*.map") "/**/*.js", "/**/*.map")
.permitAll() .permitAll()
.antMatchers("/error").anonymous() .antMatchers("/error").anonymous()
.antMatchers("/user/**").anonymous() .antMatchers("/user/login").anonymous()
.antMatchers("/user/userAuth").anonymous()
.antMatchers("/user/tokenAuth").anonymous()
.antMatchers("/user/emailAuth").anonymous()
.antMatchers("/web/**").anonymous() .antMatchers("/web/**").anonymous()
.antMatchers("/file/**") .antMatchers("/file/**")
.permitAll() .permitAll()
......
package com.cmeeting.constant;
import java.util.HashMap;
import java.util.Map;
public class DeptCollect {
public static Map<String, String> DEPT_MAP = new HashMap<>(12);
static {
DEPT_MAP.put("10340", "集团总部");
DEPT_MAP.put("11683", "中集车辆(集团)股份有限公司");
DEPT_MAP.put("11080", "中集安瑞科投资控股(深圳)有限公司");
DEPT_MAP.put("635364", "中集管理培训(深圳)有限公司");
DEPT_MAP.put("612702", "中集世联达集装箱物流(深圳)有限公司");
DEPT_MAP.put("661082", "柏坚货柜机械维修(深圳)有限公司");
DEPT_MAP.put("745168", "中集世联达国际物流有限公司");
DEPT_MAP.put("766268", "中铁集物流装备有限公司");
DEPT_MAP.put("698027", "深圳中集同创供应链有限公司");
DEPT_MAP.put("674199", "中集模块化建筑投资有限公司");
DEPT_MAP.put("698022", "深圳中集共享后勤服务有限公司");
DEPT_MAP.put("707436", "深圳市集家美寓公寓管理有限公司");
DEPT_MAP.put("640075", "财务公司");
}
}
...@@ -8,6 +8,7 @@ import com.cmeeting.ad.entity.RobotSecurityUser; ...@@ -8,6 +8,7 @@ import com.cmeeting.ad.entity.RobotSecurityUser;
import com.cmeeting.ad.util.SecurityUtil; import com.cmeeting.ad.util.SecurityUtil;
import com.cmeeting.annotation.OperLog; import com.cmeeting.annotation.OperLog;
import com.cmeeting.config.StatisticsEmailPushProperties; import com.cmeeting.config.StatisticsEmailPushProperties;
import com.cmeeting.constant.DeptCollect;
import com.cmeeting.email.EmailSender; import com.cmeeting.email.EmailSender;
import com.cmeeting.exception.RobotBaseException; import com.cmeeting.exception.RobotBaseException;
import com.cmeeting.mapper.primary.MeetingRecordTemplateMapper; import com.cmeeting.mapper.primary.MeetingRecordTemplateMapper;
...@@ -337,7 +338,7 @@ public class MeetingInfoController { ...@@ -337,7 +338,7 @@ public class MeetingInfoController {
@PostMapping("/statistics") @PostMapping("/statistics")
public void statisticsEmail(@RequestBody EmailStatisticsVo vo, HttpServletResponse response) { public void statisticsEmail(@RequestBody EmailStatisticsVo vo, HttpServletResponse response) {
meetingInfoService.statisticsEmail(vo.getType(), vo.getStartTime(), vo.getEndTime(), response); meetingInfoService.statisticsEmail(vo.getType(), vo.getStartTime(), vo.getEndTime(), response, DeptCollect.DEPT_MAP);
} }
...@@ -347,7 +348,7 @@ public class MeetingInfoController { ...@@ -347,7 +348,7 @@ public class MeetingInfoController {
String fileName = String.format("%s.xlsx", title); String fileName = String.format("%s.xlsx", title);
response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8"); response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8");
response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(fileName, "utf8")); response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(fileName, "utf8"));
meetingInfoService.statisticsEmail(title, vo.getStartTime(), vo.getEndTime(), response.getOutputStream()); meetingInfoService.statisticsEmail(title, vo.getStartTime(), vo.getEndTime(), response.getOutputStream(), DeptCollect.DEPT_MAP);
} }
@Resource @Resource
...@@ -381,7 +382,7 @@ public class MeetingInfoController { ...@@ -381,7 +382,7 @@ public class MeetingInfoController {
SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
try { try {
boolean b = meetingInfoService.statisticsEmail(subject, simpleDateFormat1.parse(simpleDateFormat.format(date) + " 00:00:00"), boolean b = meetingInfoService.statisticsEmail(subject, simpleDateFormat1.parse(simpleDateFormat.format(date) + " 00:00:00"),
simpleDateFormat1.parse(simpleDateFormat.format(date) + " 23:59:59"), new FileOutputStream(file)); simpleDateFormat1.parse(simpleDateFormat.format(date) + " 23:59:59"), new FileOutputStream(file), DeptCollect.DEPT_MAP);
if (b) { if (b) {
content = "<p data-olk-copy-source=\\\"MessageBody\\\">Dear all:<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;附件为今天Cmeeting会议纪要生成和发送情况,烦请查收。</p>"; content = "<p data-olk-copy-source=\\\"MessageBody\\\">Dear all:<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;附件为今天Cmeeting会议纪要生成和发送情况,烦请查收。</p>";
StatisticsEmailPush.Attachment attachment = new StatisticsEmailPush.Attachment(); StatisticsEmailPush.Attachment attachment = new StatisticsEmailPush.Attachment();
......
package com.cmeeting.controller; package com.cmeeting.controller;
import cn.hutool.core.util.StrUtil;
import com.azure.core.annotation.Post;
import com.cmeeting.annotation.OperLog; import com.cmeeting.annotation.OperLog;
import com.cmeeting.constant.DeptCollect;
import com.cmeeting.pojo.SysUserSyncCategory;
import com.cmeeting.service.MeetingInfoService; import com.cmeeting.service.MeetingInfoService;
import com.cmeeting.service.MeetingRecordTemplateService; import com.cmeeting.service.MeetingRecordTemplateService;
import com.cmeeting.service.SysUserSyncService;
import com.cmeeting.util.R; import com.cmeeting.util.R;
import com.cmeeting.util.page.PageUtil; import com.cmeeting.util.page.PageUtil;
import com.sun.javafx.binding.StringFormatter;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.OutputStream;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.stream.Collectors;
/** /**
* @Description * @Description
...@@ -26,10 +35,9 @@ import java.util.Map; ...@@ -26,10 +35,9 @@ import java.util.Map;
public class StatisticsController { public class StatisticsController {
@Autowired @Autowired
private MeetingRecordTemplateService meetingRecordTemplateService;
@Autowired
private MeetingInfoService meetingInfoService; private MeetingInfoService meetingInfoService;
@Autowired
private SysUserSyncService sysUserSyncService;
/** /**
* 纪要模板使用情况的统计 * 纪要模板使用情况的统计
...@@ -48,6 +56,39 @@ public class StatisticsController { ...@@ -48,6 +56,39 @@ public class StatisticsController {
return PageUtil.getDataTable(list); return PageUtil.getDataTable(list);
} }
@PostMapping("/useInfoByCompany")
public R useInfoByCompany(@Validated @RequestBody UseInfoByCompanyVO vo) throws ParseException {
List<SysUserSyncCategory> tree = sysUserSyncService.getTree();
String search = vo.getSearch();
if (StrUtil.isNotBlank(search)) {
tree = tree.stream().filter(e -> search.equals(e.getDeptId()) || e.getPath().contains(search)).collect(Collectors.toList());
}
Map<String, String> collect = tree.stream().collect(Collectors.toMap(SysUserSyncCategory::getDeptId, SysUserSyncCategory::getPath));
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
List<Map<String, Object>> list = meetingInfoService.statisticsEmail(
simpleDateFormat1.parse(simpleDateFormat.format(vo.getStartTime()) + " 00:00:00"),
simpleDateFormat1.parse(simpleDateFormat.format(vo.getEndTime()) + " 23:59:59"), collect);
return PageUtil.getDataTable(list);
}
@PostMapping("/exportUseInfoByCompany")
public void exportUseInfoByCompany(@Validated @RequestBody UseInfoByCompanyVO vo, HttpServletResponse response) throws ParseException, IOException {
String search = vo.getSearch();
List<SysUserSyncCategory> tree = sysUserSyncService.getTree();
if (StrUtil.isNotBlank(search)) {
tree = tree.stream().filter(e -> search.equals(e.getDeptId()) || e.getPath().contains(search)).collect(Collectors.toList());
}
Map<String, String> collect = tree.stream().collect(Collectors.toMap(SysUserSyncCategory::getDeptId, SysUserSyncCategory::getPath));
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String title = "会议纪要推送次数统计.docx";
meetingInfoService.statisticsEmail(title, simpleDateFormat1.parse(simpleDateFormat.format(vo.getStartTime()) + " 00:00:00"),
simpleDateFormat1.parse(simpleDateFormat.format(vo.getEndTime()) + " 23:59:59"), response.getOutputStream(), collect);
}
/** /**
* 纪要模板使用情况的统计 * 纪要模板使用情况的统计
* @param searchValue 用户部门或工号 * @param searchValue 用户部门或工号
......
...@@ -10,6 +10,7 @@ import org.springframework.web.bind.annotation.RequestParam; ...@@ -10,6 +10,7 @@ import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource; import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
@RestController @RestController
@RequestMapping("/user/sync") @RequestMapping("/user/sync")
...@@ -24,11 +25,21 @@ public class SysUseSyncController { ...@@ -24,11 +25,21 @@ public class SysUseSyncController {
@GetMapping("/category/tree") @GetMapping("/category/tree")
public R tree() { public R tree() {
return R.ok(iSysUserSyncCategoryService.tree(tenantId)); return R.ok(iSysUserSyncCategoryService.tree());
} }
@GetMapping("/list") @GetMapping("/list")
public R list(@RequestParam String categoryId, @RequestParam Integer current, @RequestParam Integer size, String search) { public R list(@RequestParam String categoryId, @RequestParam Integer current, @RequestParam Integer size, String search) {
return R.ok(iSysUserSyncService.selectPage(current, size, categoryId, search)); return R.ok(iSysUserSyncService.selectPage(current, size, categoryId, search));
} }
@GetMapping("/getTree")
public R getTree(){
return R.ok(iSysUserSyncService.getTree());
}
@GetMapping("/downloadTree")
public void downloadTree(HttpServletResponse response){
iSysUserSyncService.downloadTree(iSysUserSyncService.getTree(), response);
}
} }
package com.cmeeting.controller;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.jetbrains.annotations.NotNull;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
/**
* @author a
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class UseInfoByCompanyVO {
private String search;
@NotNull
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date startTime;
@NotNull
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date endTime;
}
...@@ -3,10 +3,12 @@ package com.cmeeting.job; ...@@ -3,10 +3,12 @@ package com.cmeeting.job;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.cmeeting.config.StatisticsEmailPushProperties; import com.cmeeting.config.StatisticsEmailPushProperties;
import com.cmeeting.constant.DeptCollect;
import com.cmeeting.dto.UserDTO; import com.cmeeting.dto.UserDTO;
import com.cmeeting.email.EmailSender; import com.cmeeting.email.EmailSender;
import com.cmeeting.mapper.primary.UserIdMapper; import com.cmeeting.mapper.primary.UserIdMapper;
import com.cmeeting.pojo.MeetingInfo; import com.cmeeting.pojo.MeetingInfo;
import com.cmeeting.pojo.SysUserSyncCategory;
import com.cmeeting.pojo.UserId; import com.cmeeting.pojo.UserId;
import com.cmeeting.pojo.WeComUser; import com.cmeeting.pojo.WeComUser;
import com.cmeeting.service.*; import com.cmeeting.service.*;
...@@ -29,9 +31,7 @@ import java.io.IOException; ...@@ -29,9 +31,7 @@ import java.io.IOException;
import java.nio.file.Files; import java.nio.file.Files;
import java.text.ParseException; import java.text.ParseException;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.*; import java.util.*;
import java.util.function.Function; import java.util.function.Function;
import java.util.stream.Collectors; import java.util.stream.Collectors;
...@@ -285,6 +285,8 @@ public class CmeetingJob { ...@@ -285,6 +285,8 @@ public class CmeetingJob {
@Resource @Resource
private StatisticsEmailPushProperties statisticsEmailPushProperties; private StatisticsEmailPushProperties statisticsEmailPushProperties;
@Resource
private SysUserSyncService sysUserSyncService;
/** /**
* 每天两小时发送会议统计邮件 * 每天两小时发送会议统计邮件
...@@ -320,9 +322,11 @@ public class CmeetingJob { ...@@ -320,9 +322,11 @@ public class CmeetingJob {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd"); SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
List<SysUserSyncCategory> tree = sysUserSyncService.getTree();
try { try {
boolean b = meetingInfoService.statisticsEmail(subject, simpleDateFormat1.parse(simpleDateFormat.format(date) + " 00:00:00"), boolean b = meetingInfoService.statisticsEmail(subject, simpleDateFormat1.parse(simpleDateFormat.format(date) + " 00:00:00"),
simpleDateFormat1.parse(simpleDateFormat.format(date) + " 23:59:59"), new FileOutputStream(file)); simpleDateFormat1.parse(simpleDateFormat.format(date) + " 23:59:59"), new FileOutputStream(file), DeptCollect.DEPT_MAP);
if (b) { if (b) {
content = "<p data-olk-copy-source=\\\"MessageBody\\\">Dear all:<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;附件为今天Cmeeting会议纪要生成和发送情况,烦请查收。</p>"; content = "<p data-olk-copy-source=\\\"MessageBody\\\">Dear all:<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;附件为今天Cmeeting会议纪要生成和发送情况,烦请查收。</p>";
StatisticsEmailPush.Attachment attachment = new StatisticsEmailPush.Attachment(); StatisticsEmailPush.Attachment attachment = new StatisticsEmailPush.Attachment();
......
...@@ -17,7 +17,7 @@ public interface ISysUserSyncCategoryService extends IService<SysUserSyncCategor ...@@ -17,7 +17,7 @@ public interface ISysUserSyncCategoryService extends IService<SysUserSyncCategor
String getPath(String deptId, Map<String, String> map); String getPath(String deptId, Map<String, String> map);
List<Tree<String>> tree(String tenantId); List<Tree<String>> tree();
List<SysUserSyncCategory> selectParentIdNoInId(String search); List<SysUserSyncCategory> selectParentIdNoInId(String search);
......
...@@ -21,9 +21,10 @@ public interface MeetingInfoService extends IService<MeetingInfo> { ...@@ -21,9 +21,10 @@ public interface MeetingInfoService extends IService<MeetingInfo> {
/** /**
* 统计邮件推送情况 * 统计邮件推送情况
*/ */
void statisticsEmail(Integer type, Date startTime, Date endTime, HttpServletResponse response); void statisticsEmail(Integer type, Date startTime, Date endTime, HttpServletResponse response, Map<String, String> map);
boolean statisticsEmail(String title, Date startTime, Date endTime, OutputStream outputStream); boolean statisticsEmail(String title, Date startTime, Date endTime, OutputStream outputStream, Map<String, String> map);
List<Map<String, Object>> statisticsEmail(Date startTime, Date endTime, Map<String, String> map);
/** /**
* 统计 * 统计
......
...@@ -7,9 +7,11 @@ import com.cmeeting.dto.PermissionCheckedDTO; ...@@ -7,9 +7,11 @@ import com.cmeeting.dto.PermissionCheckedDTO;
import com.cmeeting.dto.SysUserSyncDTO; import com.cmeeting.dto.SysUserSyncDTO;
import com.cmeeting.pojo.SysUserSyncCategory; import com.cmeeting.pojo.SysUserSyncCategory;
import javax.servlet.http.HttpServletResponse;
import java.util.List; import java.util.List;
import java.util.List; import java.util.List;
import java.util.Map;
public interface SysUserSyncService extends IService<SysUserSync> { public interface SysUserSyncService extends IService<SysUserSync> {
...@@ -44,4 +46,8 @@ public interface SysUserSyncService extends IService<SysUserSync> { ...@@ -44,4 +46,8 @@ public interface SysUserSyncService extends IService<SysUserSync> {
Page<SysUserSyncDTO> selectPage(Integer current, Integer size, String categoryId, String search); Page<SysUserSyncDTO> selectPage(Integer current, Integer size, String categoryId, String search);
List<SysUserSync> listByUserIds(List<String> userIdList, String search); List<SysUserSync> listByUserIds(List<String> userIdList, String search);
List<SysUserSyncCategory> getTree();
void downloadTree(List<SysUserSyncCategory> list, HttpServletResponse response);
} }
...@@ -614,7 +614,7 @@ public class MeetingInfoServiceImpl extends ServiceImpl<MeetingInfoMapper, Meeti ...@@ -614,7 +614,7 @@ public class MeetingInfoServiceImpl extends ServiceImpl<MeetingInfoMapper, Meeti
* 统计邮件推送情况 * 统计邮件推送情况
*/ */
@Override @Override
public void statisticsEmail(Integer type, Date startTime, Date endTime, HttpServletResponse response) { public void statisticsEmail(Integer type, Date startTime, Date endTime, HttpServletResponse response, Map<String, String> deptMap) {
DateTime now = DateUtil.date(); DateTime now = DateUtil.date();
if (ObjectUtils.isEmpty(startTime) || ObjectUtils.isEmpty(endTime)) { if (ObjectUtils.isEmpty(startTime) || ObjectUtils.isEmpty(endTime)) {
if (1== type) { if (1== type) {
...@@ -733,21 +733,40 @@ public class MeetingInfoServiceImpl extends ServiceImpl<MeetingInfoMapper, Meeti ...@@ -733,21 +733,40 @@ public class MeetingInfoServiceImpl extends ServiceImpl<MeetingInfoMapper, Meeti
} }
} }
private static Map<String, String> DEPT_MAP = new HashMap<>(12);
static {
DEPT_MAP.put("10340", "集团总部");
DEPT_MAP.put("11683", "中集车辆(集团)股份有限公司"); /**
DEPT_MAP.put("11080", "中集安瑞科投资控股(深圳)有限公司"); * 统计邮件推送情况
DEPT_MAP.put("635364", "中集管理培训(深圳)有限公司"); */
DEPT_MAP.put("612702", "中集世联达集装箱物流(深圳)有限公司"); @Override
DEPT_MAP.put("661082", "柏坚货柜机械维修(深圳)有限公司"); public boolean statisticsEmail(String title, Date startTime, Date endTime, OutputStream outputStream, Map<String, String> DEPT_MAP) {
DEPT_MAP.put("745168", "中集世联达国际物流有限公司"); List<Map<String, Object>> mapList = statisticsEmail(startTime, endTime, DEPT_MAP);
DEPT_MAP.put("766268", "中铁集物流装备有限公司"); // 导出
DEPT_MAP.put("698027", "深圳中集同创供应链有限公司"); ExcelWriter writer = ExcelUtil.getWriter(true);
DEPT_MAP.put("674199", "中集模块化建筑投资有限公司"); try {
DEPT_MAP.put("698022", "深圳中集共享后勤服务有限公司"); writer.addHeaderAlias("host", "部门");
DEPT_MAP.put("707436", "深圳市集家美寓公寓管理有限公司"); writer.addHeaderAlias("totalNum", "总会议");
DEPT_MAP.put("640075", "财务公司"); writer.addHeaderAlias("avaliableNum", "有效会议");
writer.addHeaderAlias("emptyNum", "没有转录文件");
writer.addHeaderAlias("emailPushAccessNum", "需生成纪要的会议总数");
writer.addHeaderAlias("newNum", "待处理");
writer.addHeaderAlias("generatErrorNum", "纪要生成失败");
writer.addHeaderAlias("noteGeneratedNum", "纪要生成成功");
writer.addHeaderAlias("pushSuccessNum", "纪要推送成功");
writer.addHeaderAlias("pushErrorNum", "纪要推送失败");
// 合并单元格后的标题行,使用默认标题样式
writer.merge(writer.getHeaderAlias().size() - 1, title);
// 一次性写出内容,使用默认样式,强制输出标题
writer.write(mapList, true);
writer.flush(outputStream);
} catch (Exception e) {
e.printStackTrace();
} finally {
writer.close();
IoUtil.close(outputStream);
}
return true;
} }
...@@ -755,13 +774,13 @@ public class MeetingInfoServiceImpl extends ServiceImpl<MeetingInfoMapper, Meeti ...@@ -755,13 +774,13 @@ public class MeetingInfoServiceImpl extends ServiceImpl<MeetingInfoMapper, Meeti
* 统计邮件推送情况 * 统计邮件推送情况
*/ */
@Override @Override
public boolean statisticsEmail(String title, Date startTime, Date endTime, OutputStream outputStream) { public List<Map<String, Object>> statisticsEmail(Date startTime, Date endTime, Map<String, String> DEPT_MAP) {
List<MeetingInfo> meetingInfoList = meetingInfoMapper.selectList(new LambdaQueryWrapper<MeetingInfo>() List<MeetingInfo> meetingInfoList = meetingInfoMapper.selectList(new LambdaQueryWrapper<MeetingInfo>()
.between(MeetingInfo::getStartTime, startTime, endTime)); .between(MeetingInfo::getStartTime, startTime, endTime));
log.info("会议总量: {}", meetingInfoList.size()); log.info("会议总量: {}", meetingInfoList.size());
if (meetingInfoList.size() == 0) { if (meetingInfoList.size() == 0) {
log.info("时间段内没有会议"); log.info("时间段内没有会议");
return false; return new ArrayList<>();
} }
// 查询工号以及部门 // 查询工号以及部门
...@@ -812,7 +831,7 @@ public class MeetingInfoServiceImpl extends ServiceImpl<MeetingInfoMapper, Meeti ...@@ -812,7 +831,7 @@ public class MeetingInfoServiceImpl extends ServiceImpl<MeetingInfoMapper, Meeti
List<MeetingInfo> meetingList = entry.getValue(); List<MeetingInfo> meetingList = entry.getValue();
Integer totalNum = meetingList.size(); Integer totalNum = meetingList.size();
// 没有转录文件会议,需要生成会议纪要的会议, 待处理, 处理中, 纪要生成成功, 推送成功, 推送失败 // 没有转录文件会议,需要生成会议纪要的会议, 待处理, 处理中, 纪要生成成功, 推送成功, 推送失败
Integer emptyNum=0, emailPushAccessNum=0, newNum=0, generatErrorNum=0, noteGeneratedNum=0, pushSuccessNum=0, pushErrorNum=0; Integer emptyNum = 0, emailPushAccessNum = 0, newNum = 0, generatErrorNum = 0, noteGeneratedNum = 0, pushSuccessNum = 0, pushErrorNum = 0;
for (MeetingInfo meetingInfo : meetingList) { for (MeetingInfo meetingInfo : meetingList) {
if (meetingInfo.getStatus() == MeetingState.GENERATE_ERROR.getCode()) { if (meetingInfo.getStatus() == MeetingState.GENERATE_ERROR.getCode()) {
...@@ -860,30 +879,7 @@ public class MeetingInfoServiceImpl extends ServiceImpl<MeetingInfoMapper, Meeti ...@@ -860,30 +879,7 @@ public class MeetingInfoServiceImpl extends ServiceImpl<MeetingInfoMapper, Meeti
} }
mapList.add(totalMap); mapList.add(totalMap);
// 导出 return mapList;
ExcelWriter writer = ExcelUtil.getWriter(true);
try {
writer.addHeaderAlias("host", "部门");
writer.addHeaderAlias("totalNum", "总会议");
writer.addHeaderAlias("avaliableNum", "有效会议");
writer.addHeaderAlias("emptyNum", "没有转录文件");
writer.addHeaderAlias("emailPushAccessNum", "需生成纪要的会议总数");
writer.addHeaderAlias("newNum", "待处理");
writer.addHeaderAlias("generatErrorNum", "纪要生成失败");
writer.addHeaderAlias("noteGeneratedNum", "纪要生成成功");
writer.addHeaderAlias("pushSuccessNum", "纪要推送成功");
writer.addHeaderAlias("pushErrorNum", "纪要推送失败");
// 合并单元格后的标题行,使用默认标题样式
writer.merge(writer.getHeaderAlias().size() - 1, title);
// 一次性写出内容,使用默认样式,强制输出标题
writer.write(mapList, true);
writer.flush(outputStream);
} catch (Exception e) {
e.printStackTrace();
} finally {
writer.close();
IoUtil.close(outputStream);
}
return true;
} }
} }
...@@ -34,7 +34,7 @@ public class SysUserSyncCategoryServiceImpl extends ServiceImpl<SysUserSyncCateg ...@@ -34,7 +34,7 @@ public class SysUserSyncCategoryServiceImpl extends ServiceImpl<SysUserSyncCateg
} }
@Override @Override
public List<Tree<String>> tree(String tenantId) { public List<Tree<String>> tree() {
List<SysUserSyncCategory> sysUserSyncCategories = baseMapper.selectList(new LambdaQueryWrapper<>()); List<SysUserSyncCategory> sysUserSyncCategories = baseMapper.selectList(new LambdaQueryWrapper<>());
if(CollUtil.isNotEmpty(sysUserSyncCategories)){ if(CollUtil.isNotEmpty(sysUserSyncCategories)){
Set<String> set = sysUserSyncCategories.stream().map(SysUserSyncCategory::getDeptId).collect(Collectors.toSet()); Set<String> set = sysUserSyncCategories.stream().map(SysUserSyncCategory::getDeptId).collect(Collectors.toSet());
...@@ -70,3 +70,4 @@ public class SysUserSyncCategoryServiceImpl extends ServiceImpl<SysUserSyncCateg ...@@ -70,3 +70,4 @@ public class SysUserSyncCategoryServiceImpl extends ServiceImpl<SysUserSyncCateg
return getPathName(parentIdMap.get(deptId), parentIdMap, nameMap) + CategoryConstant.ROOT_PATH + nameMap.get(deptId); return getPathName(parentIdMap.get(deptId), parentIdMap, nameMap) + CategoryConstant.ROOT_PATH + nameMap.get(deptId);
} }
} }
package com.cmeeting.service.impl; package com.cmeeting.service.impl;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.io.IoUtil;
import cn.hutool.core.lang.tree.Tree;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import cn.hutool.poi.excel.ExcelUtil;
import cn.hutool.poi.excel.ExcelWriter;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
...@@ -26,20 +31,16 @@ import org.springframework.stereotype.Service; ...@@ -26,20 +31,16 @@ import org.springframework.stereotype.Service;
import org.springframework.util.ObjectUtils; import org.springframework.util.ObjectUtils;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.ArrayList; import javax.servlet.ServletOutputStream;
import java.util.HashMap; import javax.servlet.http.HttpServletResponse;
import java.util.List; import java.net.URLEncoder;
import java.util.Map; import java.util.*;
import java.util.Set;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@Service @Service
@Slf4j @Slf4j
public class SysUserSyncServiceImpl extends ServiceImpl<SysUserSyncMapper, SysUserSync> implements SysUserSyncService { public class SysUserSyncServiceImpl extends ServiceImpl<SysUserSyncMapper, SysUserSync> implements SysUserSyncService {
// @Value(value = "${permission.tenantId}")
// private String perTenantId;
@Resource @Resource
private ISysUserSyncCategoryService iSysUserSyncCategoryService; private ISysUserSyncCategoryService iSysUserSyncCategoryService;
@Resource @Resource
...@@ -48,6 +49,7 @@ public class SysUserSyncServiceImpl extends ServiceImpl<SysUserSyncMapper, SysUs ...@@ -48,6 +49,7 @@ public class SysUserSyncServiceImpl extends ServiceImpl<SysUserSyncMapper, SysUs
private ModulePermissionService modulePermissionService; private ModulePermissionService modulePermissionService;
private static Map<String, String> DEPT_MAP = new HashMap<>(12); private static Map<String, String> DEPT_MAP = new HashMap<>(12);
static { static {
DEPT_MAP.put("10340", "集团总部"); DEPT_MAP.put("10340", "集团总部");
DEPT_MAP.put("11683", "中集车辆(集团)股份有限公司"); DEPT_MAP.put("11683", "中集车辆(集团)股份有限公司");
...@@ -264,4 +266,60 @@ public class SysUserSyncServiceImpl extends ServiceImpl<SysUserSyncMapper, SysUs ...@@ -264,4 +266,60 @@ public class SysUserSyncServiceImpl extends ServiceImpl<SysUserSyncMapper, SysUs
return ids; return ids;
} }
@Override
public List<SysUserSyncCategory> getTree() {
int companyIndex = 2;
List<Tree<String>> list = iSysUserSyncCategoryService.tree();
Tree<String> tree = list.get(0);
List<SysUserSyncCategory> categoryList = new ArrayList<>();
getList(companyIndex, categoryList, tree.getChildren(), "");
return categoryList;
}
@Override
public void downloadTree(List<SysUserSyncCategory> list, HttpServletResponse response) {
List<String> headList = CollUtil.newArrayList("/版块/一级/二级");
ServletOutputStream outputStream = null;
// 导出
ExcelWriter writer = ExcelUtil.getWriter(true);
try {
List<List<String>> rows = new ArrayList<>();
for (SysUserSyncCategory sysUserSyncCategory : list) {
rows.add(CollUtil.newArrayList(sysUserSyncCategory.getPath()));
}
writer.setColumnWidth(0, 100);
writer.writeHeadRow(headList);
writer.write(rows, true);
String fileName = String.format("分级导出%s.xlsx", DateUtil.today());
response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8");
response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(fileName, "utf8"));
outputStream = response.getOutputStream();
writer.flush(outputStream);
} catch (Exception e) {
e.printStackTrace();
} finally {
writer.close();
IoUtil.close(outputStream);
}
}
private void getList(int companyIndex, List<SysUserSyncCategory> list, List<Tree<String>> children, String pre) {
if (CollUtil.isNotEmpty(children)) {
for (Tree<String> child : children) {
if (companyIndex == 0) {
if (CollUtil.isNotEmpty(child.getChildren())) {
for (Tree<String> childChild : child.getChildren()) {
SysUserSyncCategory cate = SysUserSyncCategory.builder().deptId(childChild.getId()).name(childChild.getName().toString()).path(pre + "/" + child.getName().toString() + "/" + childChild.getName().toString()).build();
list.add(cate);
}
} else {
SysUserSyncCategory cate = SysUserSyncCategory.builder().deptId(child.getId()).name(child.getName().toString()).path(pre + "/" + child.getName().toString()).build();
list.add(cate);
}
}
getList(companyIndex - 1, list, child.getChildren(), pre + "/" + child.getName());
}
}
}
} }
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论