|
|
@@ -1,8 +1,20 @@
|
|
|
package cn.iocoder.yudao.module.bpm.controller.admin.meeting.reserve;
|
|
|
|
|
|
+import cn.hutool.core.collection.CollUtil;
|
|
|
+import cn.hutool.core.util.StrUtil;
|
|
|
+import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
|
|
|
+import cn.iocoder.yudao.module.bpm.api.metting.room.vo.OaMeetingRoomRespDTO;
|
|
|
import cn.iocoder.yudao.module.bpm.controller.admin.meeting.reserve.vo.OaMeetingReservePageReqVO;
|
|
|
import cn.iocoder.yudao.module.bpm.controller.admin.meeting.reserve.vo.OaMeetingReserveRespVO;
|
|
|
import cn.iocoder.yudao.module.bpm.controller.admin.meeting.reserve.vo.OaMeetingReserveSaveReqVO;
|
|
|
+import cn.iocoder.yudao.module.bpm.controller.admin.meeting.room.vo.OaMeetingRoomRespVO;
|
|
|
+import cn.iocoder.yudao.module.bpm.enums.MeetingReserveStatusEnum;
|
|
|
+import cn.iocoder.yudao.module.bpm.service.meeting.room.OaMeetingRoomService;
|
|
|
+import cn.iocoder.yudao.module.system.api.dept.DeptApi;
|
|
|
+import cn.iocoder.yudao.module.system.api.dept.dto.DeptRespDTO;
|
|
|
+import cn.iocoder.yudao.module.system.api.user.AdminUserApi;
|
|
|
+import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO;
|
|
|
+import org.springdoc.api.annotations.ParameterObject;
|
|
|
import org.springframework.web.bind.annotation.*;
|
|
|
import javax.annotation.Resource;
|
|
|
import org.springframework.validation.annotation.Validated;
|
|
|
@@ -15,6 +27,8 @@ import javax.validation.*;
|
|
|
import javax.servlet.http.*;
|
|
|
import java.util.*;
|
|
|
import java.io.IOException;
|
|
|
+import java.util.function.Function;
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
import cn.iocoder.yudao.framework.common.pojo.PageParam;
|
|
|
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
|
|
@@ -39,16 +53,25 @@ public class OaMeetingReserveController {
|
|
|
@Resource
|
|
|
private OaMeetingReserveService oaMeetingReserveService;
|
|
|
|
|
|
+ @Resource
|
|
|
+ private AdminUserApi adminUserApi;
|
|
|
+
|
|
|
+ @Resource
|
|
|
+ private DeptApi deptApi;
|
|
|
+
|
|
|
+ @Resource
|
|
|
+ private OaMeetingRoomService oaMeetingRoomService;
|
|
|
+
|
|
|
@PostMapping("/create")
|
|
|
@Operation(summary = "创建会议室预定管理信息")
|
|
|
- @PreAuthorize("@ss.hasPermission('bpm:oa-meeting-reserve:create')")
|
|
|
+ // @PreAuthorize("@ss.hasPermission('bpm:oa-meeting-reserve:create')")
|
|
|
public CommonResult<Long> createOaMeetingReserve(@Valid @RequestBody OaMeetingReserveSaveReqVO createReqVO) {
|
|
|
return success(oaMeetingReserveService.createOaMeetingReserve(createReqVO));
|
|
|
}
|
|
|
|
|
|
@PutMapping("/update")
|
|
|
@Operation(summary = "更新会议室预定管理信息")
|
|
|
- @PreAuthorize("@ss.hasPermission('bpm:oa-meeting-reserve:update')")
|
|
|
+ // @PreAuthorize("@ss.hasPermission('bpm:oa-meeting-reserve:update')")
|
|
|
public CommonResult<Boolean> updateOaMeetingReserve(@Valid @RequestBody OaMeetingReserveSaveReqVO updateReqVO) {
|
|
|
oaMeetingReserveService.updateOaMeetingReserve(updateReqVO);
|
|
|
return success(true);
|
|
|
@@ -57,7 +80,7 @@ public class OaMeetingReserveController {
|
|
|
@DeleteMapping("/delete")
|
|
|
@Operation(summary = "删除会议室预定管理信息")
|
|
|
@Parameter(name = "id", description = "编号", required = true)
|
|
|
- @PreAuthorize("@ss.hasPermission('bpm:oa-meeting-reserve:delete')")
|
|
|
+ // @PreAuthorize("@ss.hasPermission('bpm:oa-meeting-reserve:delete')")
|
|
|
public CommonResult<Boolean> deleteOaMeetingReserve(@RequestParam("id") Long id) {
|
|
|
oaMeetingReserveService.deleteOaMeetingReserve(id);
|
|
|
return success(true);
|
|
|
@@ -65,24 +88,126 @@ public class OaMeetingReserveController {
|
|
|
|
|
|
@GetMapping("/get")
|
|
|
@Operation(summary = "获得会议室预定管理信息")
|
|
|
- @Parameter(name = "id", description = "编号", required = true, example = "1024")
|
|
|
- @PreAuthorize("@ss.hasPermission('bpm:oa-meeting-reserve:query')")
|
|
|
+ @Parameter(name = "id", description = "编号", required = true, example = "2")
|
|
|
+ // @PreAuthorize("@ss.hasPermission('bpm:oa-meeting-reserve:query')")
|
|
|
public CommonResult<OaMeetingReserveRespVO> getOaMeetingReserve(@RequestParam("id") Long id) {
|
|
|
OaMeetingReserveDO oaMeetingReserve = oaMeetingReserveService.getOaMeetingReserve(id);
|
|
|
- return success(BeanUtils.toBean(oaMeetingReserve, OaMeetingReserveRespVO.class));
|
|
|
+ OaMeetingReserveRespVO oaMeetingReserveRespVO = BeanUtils.toBean(oaMeetingReserve, OaMeetingReserveRespVO.class);
|
|
|
+ String participants = oaMeetingReserve.getParticipants();
|
|
|
+ if (StrUtil.isNotBlank(participants)) {
|
|
|
+ String[] participantsStringArray = participants.split(",");
|
|
|
+ List<Long> participantsLongList = Arrays.stream(participantsStringArray).map(Long::valueOf).collect(Collectors.toList());
|
|
|
+ oaMeetingReserveRespVO.setParticipants(participantsLongList);
|
|
|
+
|
|
|
+ List<AdminUserRespDTO> userList = adminUserApi.getUserList(participantsLongList);
|
|
|
+ String participantsName = userList.stream().map(AdminUserRespDTO::getNickname).collect(Collectors.joining(","));
|
|
|
+ oaMeetingReserveRespVO.setParticipantsName(participantsName);
|
|
|
+ } else {
|
|
|
+ oaMeetingReserveRespVO.setParticipants(Collections.emptyList());
|
|
|
+ }
|
|
|
+ // 申请人
|
|
|
+ Long applyEmployeeId = oaMeetingReserve.getApplyEmployeeId();
|
|
|
+ if (applyEmployeeId != null) {
|
|
|
+ AdminUserRespDTO user = adminUserApi.getUser(applyEmployeeId);
|
|
|
+ oaMeetingReserveRespVO.setApplyEmployeeName(user.getNickname());
|
|
|
+ }
|
|
|
+ // 状态描述
|
|
|
+ String status = oaMeetingReserve.getStatus();
|
|
|
+ Map<String, String> enumsMap = Arrays.stream(MeetingReserveStatusEnum.values())
|
|
|
+ .collect(Collectors.toMap(MeetingReserveStatusEnum::getStatus, MeetingReserveStatusEnum::getDesc));
|
|
|
+ oaMeetingReserveRespVO.setStatusDesc(enumsMap.get(status));
|
|
|
+ // 部门名称
|
|
|
+ Long deptId = oaMeetingReserve.getDeptId();
|
|
|
+ if (deptId != null) {
|
|
|
+ DeptRespDTO dept = deptApi.getDept(deptId);
|
|
|
+ if (dept != null) {
|
|
|
+ oaMeetingReserveRespVO.setDepName(dept.getName());
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return success(oaMeetingReserveRespVO);
|
|
|
}
|
|
|
|
|
|
@GetMapping("/page")
|
|
|
@Operation(summary = "获得会议室预定管理信息分页")
|
|
|
- @PreAuthorize("@ss.hasPermission('bpm:oa-meeting-reserve:query')")
|
|
|
- public CommonResult<PageResult<OaMeetingReserveRespVO>> getOaMeetingReservePage(@Valid OaMeetingReservePageReqVO pageReqVO) {
|
|
|
+ // @PreAuthorize("@ss.hasPermission('bpm:oa-meeting-reserve:query')")
|
|
|
+ public CommonResult<PageResult<OaMeetingReserveRespVO>> getOaMeetingReservePage(@Valid @ParameterObject OaMeetingReservePageReqVO pageReqVO) {
|
|
|
PageResult<OaMeetingReserveDO> pageResult = oaMeetingReserveService.getOaMeetingReservePage(pageReqVO);
|
|
|
- return success(BeanUtils.toBean(pageResult, OaMeetingReserveRespVO.class));
|
|
|
+ // List<OaMeetingReserveDO> oaMeetingReserveDOList = pageResult.getList();
|
|
|
+ PageResult<OaMeetingReserveRespVO> voPageResult = BeanUtils.toBean(pageResult, OaMeetingReserveRespVO.class);
|
|
|
+ List<OaMeetingReserveRespVO> oaMeetingReserveRespVOList = voPageResult.getList();
|
|
|
+ if (oaMeetingReserveRespVOList.size() > 0) {
|
|
|
+ // 申请人
|
|
|
+ List<Long> applyEmployeeIds = oaMeetingReserveRespVOList.stream().map(OaMeetingReserveRespVO::getApplyEmployeeId).collect(Collectors.toList());
|
|
|
+ List<AdminUserRespDTO> userList = adminUserApi.getUserList(applyEmployeeIds);
|
|
|
+ Map<Long, AdminUserRespDTO> userMap = userList.stream().collect(Collectors.toMap(AdminUserRespDTO::getId, Function.identity()));
|
|
|
+
|
|
|
+ // // 参与人
|
|
|
+ // List<Long> participantEmployeeIds = new ArrayList<>();
|
|
|
+ // for (OaMeetingReserveDO oaMeetingReserveDO : oaMeetingReserveDOList) {
|
|
|
+ // String participants = oaMeetingReserveDO.getParticipants();
|
|
|
+ // if (StrUtil.isNotBlank(participants)) {
|
|
|
+ // String[] participantsStringArray = participants.split(",");
|
|
|
+ // List<Long> participantsLongList = Arrays.stream(participantsStringArray).map(Long::valueOf).collect(Collectors.toList());
|
|
|
+ // participantEmployeeIds.addAll(participantsLongList);
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ // List<AdminUserRespDTO> participantUserList = adminUserApi.getUserList(participantEmployeeIds);
|
|
|
+ // Map<Long, AdminUserRespDTO> participantUserMap = participantUserList.stream().collect(Collectors.toMap(AdminUserRespDTO::getId, Function.identity()));
|
|
|
+
|
|
|
+ // 状态描述
|
|
|
+ Map<String, String> enumsMap = Arrays.stream(MeetingReserveStatusEnum.values())
|
|
|
+ .collect(Collectors.toMap(MeetingReserveStatusEnum::getStatus, MeetingReserveStatusEnum::getDesc));
|
|
|
+
|
|
|
+ // 部门名称
|
|
|
+ List<Long> deptIds = oaMeetingReserveRespVOList.stream().map(OaMeetingReserveRespVO::getDeptId).collect(Collectors.toList());
|
|
|
+ List<DeptRespDTO> deptList = deptApi.getDeptList(deptIds);
|
|
|
+ Map<Long, DeptRespDTO> deptMap = deptList.stream().collect(Collectors.toMap(DeptRespDTO::getId, Function.identity()));
|
|
|
+
|
|
|
+ // 会议室名称
|
|
|
+ List<Long> roomIds = oaMeetingReserveRespVOList.stream().map(OaMeetingReserveRespVO::getRoomId).collect(Collectors.toList());
|
|
|
+ List<OaMeetingRoomRespDTO> roomList = oaMeetingRoomService.getOaMeetingRoomList(roomIds);
|
|
|
+ Map<Long, OaMeetingRoomRespDTO> roomRespDTOMap = roomList.stream().collect(Collectors.toMap(OaMeetingRoomRespDTO::getId, Function.identity()));
|
|
|
+
|
|
|
+ for (OaMeetingReserveRespVO oaMeetingReserveRespVO : oaMeetingReserveRespVOList) {
|
|
|
+ // 申请人姓名
|
|
|
+ Long applyEmployeeId = oaMeetingReserveRespVO.getApplyEmployeeId();
|
|
|
+ if (applyEmployeeId != null) {
|
|
|
+ AdminUserRespDTO user = userMap.get(applyEmployeeId);
|
|
|
+ if (user != null) {
|
|
|
+ oaMeetingReserveRespVO.setApplyEmployeeName(user.getNickname());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // // 参与人姓名
|
|
|
+ // String participants = oaMeetingReserveRespVO.getParticipants();
|
|
|
+ // 状态描述
|
|
|
+ String status = oaMeetingReserveRespVO.getStatus();
|
|
|
+ oaMeetingReserveRespVO.setStatusDesc(enumsMap.get(status));
|
|
|
+ // 部门名称
|
|
|
+ Long deptId = oaMeetingReserveRespVO.getDeptId();
|
|
|
+ if (deptId != null) {
|
|
|
+ DeptRespDTO dept = deptMap.get(deptId);
|
|
|
+ if (dept != null) {
|
|
|
+ oaMeetingReserveRespVO.setDepName(dept.getName());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 会议室名称
|
|
|
+ Long roomId = oaMeetingReserveRespVO.getRoomId();
|
|
|
+ if (roomId != null) {
|
|
|
+ OaMeetingRoomRespDTO room = roomRespDTOMap.get(roomId);
|
|
|
+ if (room != null) {
|
|
|
+ oaMeetingReserveRespVO.setRoomName(room.getName());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return success(voPageResult);
|
|
|
}
|
|
|
|
|
|
@GetMapping("/export-excel")
|
|
|
@Operation(summary = "导出会议室预定管理信息 Excel")
|
|
|
- @PreAuthorize("@ss.hasPermission('bpm:oa-meeting-reserve:export')")
|
|
|
+ // @PreAuthorize("@ss.hasPermission('bpm:oa-meeting-reserve:export')")
|
|
|
@ApiAccessLog(operateType = EXPORT)
|
|
|
public void exportOaMeetingReserveExcel(@Valid OaMeetingReservePageReqVO pageReqVO,
|
|
|
HttpServletResponse response) throws IOException {
|