From a951a1dc32d97129519822a0817a89384b8e9daf Mon Sep 17 00:00:00 2001 From: lujiang Date: Sun, 22 Sep 2024 23:13:28 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=9A=E8=AE=AE=E9=A2=84=E7=BA=A6=E6=95=B4?= =?UTF-8?q?=E4=BD=93=E9=98=B6=E6=AE=B5=E6=80=A7=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../MeetingReservationController.java | 282 +++++++++++ .../controller/MeetingRoomController.java | 142 ++++++ .../controller/MeetingUtoController.java | 91 ++++ .../controller/MeetingWaiterController.java | 100 ++++ .../admin/controller/RepairController.java | 3 - .../ics/admin/domain/MeetingReservation.java | 79 +++ .../com/ics/admin/domain/MeetingRoom.java | 98 ++++ .../com/ics/admin/domain/MeetingServe.java | 54 +++ .../java/com/ics/admin/domain/MeetingUto.java | 45 ++ .../com/ics/admin/domain/MeetingWaiter.java | 38 ++ .../com/ics/admin/domain/RepairRemind.java | 16 +- .../mapper/MeetingReservationMapper.java | 87 ++++ .../ics/admin/mapper/MeetingRoomMapper.java | 68 +++ .../ics/admin/mapper/MeetingServeMapper.java | 45 ++ .../ics/admin/mapper/MeetingUtoMapper.java | 68 +++ .../ics/admin/mapper/MeetingWaiterMapper.java | 42 ++ .../ics/admin/mapper/RepairRemindMapper.java | 8 + .../service/IMeetingReservationService.java | 114 +++++ .../admin/service/IMeetingRoomService.java | 64 +++ .../admin/service/IMeetingServeService.java | 29 ++ .../ics/admin/service/IMeetingUtoService.java | 69 +++ .../admin/service/IMeetingWaiterService.java | 32 ++ .../impl/MeetingReservationServiceImpl.java | 449 ++++++++++++++++++ .../service/impl/MeetingRoomServiceImpl.java | 118 +++++ .../service/impl/MeetingServeServiceImpl.java | 35 ++ .../service/impl/MeetingUtoServiceImpl.java | 106 +++++ .../impl/MeetingWaiterServiceImpl.java | 54 +++ .../ics/admin/utils/MeetingRemindContent.java | 27 ++ .../admin/utils/MeetingReservationDTO.java | 30 ++ .../java/com/ics/admin/utils/MrOperate.java | 30 ++ .../com/ics/admin/vo/MeetingRecordVo.java | 167 +++++++ .../ics/admin/vo/MeetingReservationVo.java | 83 ++++ .../java/com/ics/admin/vo/MeetingRoomVo.java | 99 ++++ .../java/com/ics/admin/vo/MeetingServeVo.java | 39 ++ .../com/ics/admin/vo/MeetingWaiterVo.java | 37 ++ .../mapper/admin/IcsCustomerStaffMapper.xml | 12 +- .../mapper/admin/MeetingReservationMapper.xml | 200 ++++++++ .../mapper/admin/MeetingRoomMapper.xml | 146 ++++++ .../mapper/admin/MeetingServeMapper.xml | 44 ++ .../mapper/admin/MeetingUtoMapper.xml | 128 +++++ .../mapper/admin/MeetingWaiterMapper.xml | 43 ++ .../mapper/admin/RepairRemindMapper.xml | 6 + .../main/resources/repairRemind.properties | 15 +- .../common/core/domain/IcsCustomerStaff.java | 6 + .../quartz/task/MeetingReservationTask.java | 25 + .../system/handlers/MyParkLineHandler.java | 5 +- .../system/handlers/MyTenantLineHandler.java | 5 +- .../mobile/WxLoginAPIController.java | 1 + shoot-hand/ics/2024/会议预约.eddx | Bin 0 -> 10330 bytes shoot-hand/ics/2024/会议预约.png | Bin 0 -> 78203 bytes 50 files changed, 3473 insertions(+), 11 deletions(-) create mode 100644 shoot-hand/ics-admin/src/main/java/com/ics/admin/controller/MeetingReservationController.java create mode 100644 shoot-hand/ics-admin/src/main/java/com/ics/admin/controller/MeetingRoomController.java create mode 100644 shoot-hand/ics-admin/src/main/java/com/ics/admin/controller/MeetingUtoController.java create mode 100644 shoot-hand/ics-admin/src/main/java/com/ics/admin/controller/MeetingWaiterController.java create mode 100644 shoot-hand/ics-admin/src/main/java/com/ics/admin/domain/MeetingReservation.java create mode 100644 shoot-hand/ics-admin/src/main/java/com/ics/admin/domain/MeetingRoom.java create mode 100644 shoot-hand/ics-admin/src/main/java/com/ics/admin/domain/MeetingServe.java create mode 100644 shoot-hand/ics-admin/src/main/java/com/ics/admin/domain/MeetingUto.java create mode 100644 shoot-hand/ics-admin/src/main/java/com/ics/admin/domain/MeetingWaiter.java create mode 100644 shoot-hand/ics-admin/src/main/java/com/ics/admin/mapper/MeetingReservationMapper.java create mode 100644 shoot-hand/ics-admin/src/main/java/com/ics/admin/mapper/MeetingRoomMapper.java create mode 100644 shoot-hand/ics-admin/src/main/java/com/ics/admin/mapper/MeetingServeMapper.java create mode 100644 shoot-hand/ics-admin/src/main/java/com/ics/admin/mapper/MeetingUtoMapper.java create mode 100644 shoot-hand/ics-admin/src/main/java/com/ics/admin/mapper/MeetingWaiterMapper.java create mode 100644 shoot-hand/ics-admin/src/main/java/com/ics/admin/service/IMeetingReservationService.java create mode 100644 shoot-hand/ics-admin/src/main/java/com/ics/admin/service/IMeetingRoomService.java create mode 100644 shoot-hand/ics-admin/src/main/java/com/ics/admin/service/IMeetingServeService.java create mode 100644 shoot-hand/ics-admin/src/main/java/com/ics/admin/service/IMeetingUtoService.java create mode 100644 shoot-hand/ics-admin/src/main/java/com/ics/admin/service/IMeetingWaiterService.java create mode 100644 shoot-hand/ics-admin/src/main/java/com/ics/admin/service/impl/MeetingReservationServiceImpl.java create mode 100644 shoot-hand/ics-admin/src/main/java/com/ics/admin/service/impl/MeetingRoomServiceImpl.java create mode 100644 shoot-hand/ics-admin/src/main/java/com/ics/admin/service/impl/MeetingServeServiceImpl.java create mode 100644 shoot-hand/ics-admin/src/main/java/com/ics/admin/service/impl/MeetingUtoServiceImpl.java create mode 100644 shoot-hand/ics-admin/src/main/java/com/ics/admin/service/impl/MeetingWaiterServiceImpl.java create mode 100644 shoot-hand/ics-admin/src/main/java/com/ics/admin/utils/MeetingRemindContent.java create mode 100644 shoot-hand/ics-admin/src/main/java/com/ics/admin/utils/MeetingReservationDTO.java create mode 100644 shoot-hand/ics-admin/src/main/java/com/ics/admin/utils/MrOperate.java create mode 100644 shoot-hand/ics-admin/src/main/java/com/ics/admin/vo/MeetingRecordVo.java create mode 100644 shoot-hand/ics-admin/src/main/java/com/ics/admin/vo/MeetingReservationVo.java create mode 100644 shoot-hand/ics-admin/src/main/java/com/ics/admin/vo/MeetingRoomVo.java create mode 100644 shoot-hand/ics-admin/src/main/java/com/ics/admin/vo/MeetingServeVo.java create mode 100644 shoot-hand/ics-admin/src/main/java/com/ics/admin/vo/MeetingWaiterVo.java create mode 100644 shoot-hand/ics-admin/src/main/resources/mapper/admin/MeetingReservationMapper.xml create mode 100644 shoot-hand/ics-admin/src/main/resources/mapper/admin/MeetingRoomMapper.xml create mode 100644 shoot-hand/ics-admin/src/main/resources/mapper/admin/MeetingServeMapper.xml create mode 100644 shoot-hand/ics-admin/src/main/resources/mapper/admin/MeetingUtoMapper.xml create mode 100644 shoot-hand/ics-admin/src/main/resources/mapper/admin/MeetingWaiterMapper.xml create mode 100644 shoot-hand/ics-quartz/src/main/java/com/ics/quartz/task/MeetingReservationTask.java create mode 100644 shoot-hand/ics/2024/会议预约.eddx create mode 100644 shoot-hand/ics/2024/会议预约.png diff --git a/shoot-hand/ics-admin/src/main/java/com/ics/admin/controller/MeetingReservationController.java b/shoot-hand/ics-admin/src/main/java/com/ics/admin/controller/MeetingReservationController.java new file mode 100644 index 0000000..96cbbf8 --- /dev/null +++ b/shoot-hand/ics-admin/src/main/java/com/ics/admin/controller/MeetingReservationController.java @@ -0,0 +1,282 @@ +package com.ics.admin.controller; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.ics.admin.domain.MeetingReservation; +import com.ics.admin.domain.MeetingUto; +import com.ics.admin.service.IIcsCustomerStaffService; +import com.ics.admin.service.IMeetingReservationService; +import com.ics.admin.service.IMeetingRoomService; +import com.ics.admin.service.IMeetingServeService; +import com.ics.admin.service.IMeetingUtoService; +import com.ics.admin.service.IMeetingWaiterService; +import com.ics.admin.utils.MeetingReservationDTO; +import com.ics.admin.vo.MeetingRecordVo; +import com.ics.admin.vo.MeetingRoomVo; +import com.ics.admin.vo.MeetingServeVo; +import com.ics.admin.vo.MeetingWaiterVo; +import com.ics.common.core.controller.BaseController; +import com.ics.common.core.domain.IcsCustomerStaff; +import com.ics.common.core.domain.R; +import com.ics.common.utils.DateUtils; +import com.ics.common.utils.bean.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import org.wf.jwtp.annotation.Logical; +import org.wf.jwtp.annotation.RequiresPermissions; + +import java.util.Date; +import java.util.List; +import java.util.Map; + +/** + * 会议室预约记录 + * + * @author ics + * @date 2024-09-18 + */ +@RestController +@RequestMapping({"/admin/mr", "/app/mr"}) +public class MeetingReservationController extends BaseController { + + @Autowired + private IMeetingReservationService meetingReservationService; + + @Autowired + private IMeetingRoomService meetingRoomService; + + @Autowired + private IMeetingServeService meetingServeService; + + @Autowired + private IMeetingWaiterService meetingWaiterService; + + @Autowired + private IIcsCustomerStaffService customerStaffService; + + @Autowired + private IMeetingUtoService meetingUtoService; + + /** + * 用户登录 + */ + @RequiresPermissions(value = {"mr:manage:operator", "member:center:view"}, logical = Logical.OR) + @PostMapping("login") + public R login(@RequestBody MeetingUto meetingUto) { + MeetingUto uto = meetingUtoService.login(meetingUto); + if (uto == null) return R.error("登录失败"); + JSONObject jsonObject = new JSONObject(); + jsonObject.put("orgId", uto.getOrgId()); + jsonObject.put("orgName", uto.getOrgName()); + return R.ok().put("data", jsonObject); + } + + /** + * 获取字典数据 + */ + @RequiresPermissions(value = {"mr:manage:operator", "member:center:view"}, logical = Logical.OR) + @PostMapping("getConstData") + public R getConstData() { + JSONObject jsonObject = meetingReservationService.getConstData(); + return R.ok().put("data", jsonObject); + } + + /** + * 新增会议室预约记录 + */ + @RequiresPermissions(value = {"mr:manage:operator", "member:center:view"}, logical = Logical.OR) + @PostMapping("booking") + public R booking(@RequestBody MeetingReservationDTO meetingReservationDTO) { + MeetingReservation meetingReservation = new MeetingReservation(); + BeanUtils.copyBeanProp(meetingReservation, meetingReservationDTO.getMr()); + if (meetingReservation.getTimeFormat() > 0) {//非任意时间 + Date start = convert(meetingReservationDTO.getMr().getMrdate(), meetingReservation.getTimeFormat(), true); + Date end = convert(meetingReservationDTO.getMr().getMrdate(), meetingReservation.getTimeFormat(), false); + if (start == null || end == null) return R.error("预约时间解析错误"); + meetingReservation.setStart(start); + meetingReservation.setEnd(end); + } + if (meetingReservation.getEnd().getTime() <= meetingReservation.getStart().getTime()) return R.error("预约时间无效"); + Long userId = getLoginStaffId(); + String result = meetingReservationService.insertMeetingReservation(userId, meetingReservation, meetingReservationDTO.getServe()); + if (IMeetingReservationService.OK.equals(result)) { + return R.ok("预约成功"); + } else { + return R.error(result); + } + } + + /* 预定时间的转换 */ + private Date convert(String date, Integer timeFormat, boolean start) { + String time = ""; + if (timeFormat == 1) time = start ? " 08:30:00" : " 12:00:00";//1 上午 + if (timeFormat == 2) time = start ? " 12:00:01" : " 17:30:00";//2 下午 + if (timeFormat == 3) time = start ? " 17:30:01" : " 23:59:59";//3 晚上 + if (timeFormat == 4) time = start ? " 08:30:00" : " 23:59:59";//4 全天 + try { + return DateUtils.dateTime(DateUtils.YYYY_MM_DD_HH_MM_SS, date + time); + } catch (Exception e) { + e.printStackTrace(); + return null; + } + } + + /** + * 操作会议室预约记录 + *

+ * id:预约记录id + * operate:操作,CANCEL 取消 REJECTED 驳回 PASS 审核通过 + * content:操作的原因 + *

+ */ + @RequiresPermissions(value = {"mr:manage:operator", "member:center:view"}, logical = Logical.OR) + @PostMapping("handle") + public R handleMeetingReservation(@RequestBody MeetingReservationDTO mrDTO) { + Long userId = getLoginStaffId(); + String result = meetingReservationService.operateMeetingReservation(userId, mrDTO.getId(), mrDTO.getOperate(), mrDTO.getContent()); + if (IMeetingReservationService.OK.equals(result)) { + return R.ok("操作成功"); + } else { + return R.error(result); + } + } + + /** + * 变更预约记录 + */ + @RequiresPermissions(value = {"mr:manage:operator", "member:center:view"}, logical = Logical.OR) + @PostMapping("update") + public R update(@RequestBody MeetingReservationDTO meetingReservationDTO) { + Long userId = getLoginStaffId(); + //获取待更新会议室内预约记录 + MeetingReservation meetingReservation = meetingReservationService.selectMeetingReservationById(meetingReservationDTO.getMr().getId()); + if (meetingReservation == null) return R.error("未找到预约记录"); + Integer status = meetingReservation.getStatus(); + BeanUtils.copyBeanProp(meetingReservation, meetingReservationDTO.getMr()); + meetingReservation.setStatus(status);//防止用户端修改预约记录状态 + if (meetingReservation.getTimeFormat() > 0) {//非任意时间 + Date start = convert(meetingReservationDTO.getMr().getMrdate(), meetingReservation.getTimeFormat(), true); + Date end = convert(meetingReservationDTO.getMr().getMrdate(), meetingReservation.getTimeFormat(), false); + meetingReservation.setStart(start); + meetingReservation.setEnd(end); + } + if (meetingReservation.getStart() == null || meetingReservation.getEnd() == null) + return R.error("预约时间解析错误");//防止用户端置空预约记录时间 + if (meetingReservation.getEnd().getTime() <= meetingReservation.getStart().getTime()) return R.error("预约时间无效"); + String result = meetingReservationService.updateMeetingReservation(userId, meetingReservation, meetingReservationDTO.getServe()); + if (IMeetingReservationService.OK.equals(result)) { + return R.ok("操作成功"); + } else { + return R.error(result); + } + } + + /** + * 占用 + */ + @RequiresPermissions(value = {"mr:manage:operator", "member:center:view"}, logical = Logical.OR) + @PostMapping("beforehand") + public R beforehand(@RequestBody MeetingReservationDTO meetingReservationDTO) { + Long userId = getLoginStaffId(); + MeetingReservation meetingReservation = new MeetingReservation(); + if (meetingReservationDTO.getMr().getTimeFormat() > 0) {//非任意时间 + Date start = convert(meetingReservationDTO.getMr().getMrdate(), meetingReservation.getTimeFormat(), true); + Date end = convert(meetingReservationDTO.getMr().getMrdate(), meetingReservation.getTimeFormat(), false); + meetingReservation.setStart(start); + meetingReservation.setEnd(end); + } else { + meetingReservation.setStart(meetingReservationDTO.getMr().getStart()); + meetingReservation.setEnd(meetingReservationDTO.getMr().getEnd()); + } + meetingReservation.setTimeFormat(meetingReservationDTO.getMr().getTimeFormat()); + meetingReservation.setRoomId(meetingReservationDTO.getMr().getRoomId()); + meetingReservation.setTitle("占用"); + String result = meetingReservationService.beforehand(userId, meetingReservation); + if (IMeetingReservationService.OK.equals(result)) { + return R.ok("占用成功"); + } else { + return R.error(result); + } + } + + /** + * 获取服务员 + */ + @RequiresPermissions(value = {"mr:manage:operator", "member:center:view"}, logical = Logical.OR) + @PostMapping("getWaiter") + public R getWaiter() { + IcsCustomerStaff p = new IcsCustomerStaff(); + p.setRoomRole(3); + p.setRoomRoleType(1); + List voiceWaiters = customerStaffService.selectIcsCustomerStaffList(p); + p.setRoomRoleType(3); + List serveWaiters = customerStaffService.selectIcsCustomerStaffList(p); + JSONArray voiceWaiter = processWaiter(voiceWaiters); + JSONArray serveWaiter = processWaiter(serveWaiters); + return R.ok().put("voiceWaiter", voiceWaiter).put("serveWaiter", serveWaiter); + } + + private JSONArray processWaiter(List list) { + JSONArray array = new JSONArray(); + for (IcsCustomerStaff staff : list) { + JSONObject one = new JSONObject(); + one.put("id", staff.getId()); + one.put("username", staff.getUsername()); + one.put("mobile", staff.getMobile()); + array.add(one); + } + return array; + } + + /** + * 分配服务员 + */ + @RequiresPermissions(value = {"mr:manage:operator", "member:center:view"}, logical = Logical.OR) + @PostMapping("addWaiter") + public R addWaiter(@RequestBody Map param) { + Long userId = getLoginStaffId(); + Long id = Long.parseLong(param.get("id")); + String voiceWaiter = param.get("voiceWaiter"); + String serveWaiter = param.get("serveWaiter"); + return toAjax(meetingReservationService.addWaiter(userId, id, voiceWaiter, serveWaiter)); + } + + /** + * 删除会议室预约记录 + */ + @RequiresPermissions(value = {"mr:manage:operator", "member:center:view"}, logical = Logical.OR) + @RequestMapping("delete") + public R delete(@RequestBody Map param) { + Long id = param.get("id"); + return toAjax(meetingReservationService.deleteMeetingReservationById(id)); + } + + /** + * 会议室预约详情 + */ + @RequiresPermissions(value = {"mr:manage:operator", "member:center:view"}, logical = Logical.OR) + @RequestMapping("getInfo") + public R get(@RequestBody Map param) { + Long id = param.get("id"); + MeetingReservation meetingReservation = meetingReservationService.selectMeetingReservationById(id); + MeetingRoomVo room = meetingRoomService.selectMeetingRoomById(meetingReservation.getRoomId()); + List waiters = meetingWaiterService.selectMeetingWaiterList(meetingReservation.getId()); + List serves = meetingServeService.selectMeetingServeList(meetingReservation.getId()); + return R.ok().put("mr", meetingReservation).put("room", room).put("serve", serves).put("waiters", waiters); + } + + /** + * 查询会议室预约记录列表 + */ + @RequiresPermissions(value = {"mr:manage:operator", "member:center:view"}, logical = Logical.OR) + @PostMapping("list") + public R list(@RequestBody MeetingRecordVo meetingRecordVo) { + startPage(); + Long userId = getLoginStaffId(); + meetingRecordVo.setUserId(userId); + return result(meetingReservationService.selectMeetingReservationList(meetingRecordVo)); + } +} diff --git a/shoot-hand/ics-admin/src/main/java/com/ics/admin/controller/MeetingRoomController.java b/shoot-hand/ics-admin/src/main/java/com/ics/admin/controller/MeetingRoomController.java new file mode 100644 index 0000000..7f69295 --- /dev/null +++ b/shoot-hand/ics-admin/src/main/java/com/ics/admin/controller/MeetingRoomController.java @@ -0,0 +1,142 @@ +package com.ics.admin.controller; + +import com.ics.admin.domain.MeetingRoom; +import com.ics.admin.domain.RepairAttach; +import com.ics.admin.service.IMeetingRoomService; +import com.ics.admin.service.IRepairAttachService; +import com.ics.admin.vo.MeetingRoomVo; +import com.ics.common.core.controller.BaseController; +import com.ics.common.core.domain.R; +import com.ics.common.utils.file.FileUploadUtils; +import com.ics.system.config.DfsConfig; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.multipart.MultipartFile; +import org.wf.jwtp.annotation.Logical; +import org.wf.jwtp.annotation.RequiresPermissions; + +import java.util.Date; + +/** + * 会议室 管理 + * + * @author ics + * @date 2024-09-18 + */ +@RestController +@RequestMapping("/admin/meetingRoom") +public class MeetingRoomController extends BaseController { + + @Autowired + private IMeetingRoomService meetingRoomService; + + @Autowired + private IRepairAttachService repairAttachService; + + @Autowired + private DfsConfig dfsConfig; + + /**会议室图片上传*/ + @RequiresPermissions(value = {"repair:attach:operator", "member:center:view"}, logical = Logical.OR) + @PostMapping("upload") + public R Upload(MultipartFile file) { + String originalFilename = file.getOriginalFilename(); + long size = file.getSize(); + Long userId = getLoginStaffId(); + if (userId == null) return R.error("未找到有效用户"); + try { + // 上传文件路径 + String filePath = dfsConfig.getPath(); + // 上传并返回新文件名称 + String url = FileUploadUtils.upload(filePath, file); + RepairAttach repairAttach = new RepairAttach(); + repairAttach.setTypeId(1); + repairAttach.setNodeId(0); + repairAttach.setOriginalFilename(originalFilename); + repairAttach.setUrl(url); + repairAttach.setFileSize(size); + repairAttach.setExt1(IRepairAttachService.FILE_IMG); + repairAttach.setDeleteFlag(0); + repairAttach.setCreateTime(new Date()); + repairAttach.setCreateBy(userId.toString()); + repairAttachService.insertRepairAttach(repairAttach);//插入附件数据 + return R.ok().put("id", repairAttach.getId()) + .put("originalFilename", originalFilename) + .put("url", url); + } catch (Exception e) { + return R.error(e.getMessage()); + } + } + + /** + * 删除会议室图片 + */ + @RequiresPermissions(value = {"repair:attach:operator"}) + @PostMapping("deleteImg") + public R delete(Long id) { + return toAjax(repairAttachService.deleteRepairAttachById(id)); + } + + /** + * 查询会议室 + */ + @RequiresPermissions("admin:room:list")//mr:manage:operator + @GetMapping("get/{id}") + public MeetingRoomVo get(@PathVariable("id") Long id) { + return meetingRoomService.selectMeetingRoomById(id); + } + + /** + * floor 所属楼层名称,精确查询 + * name 会议室名称,模糊查询 + * typeName 会议室形式,精确查询 + * device 会议室设备,模糊查询 + * capacityNum 容纳人数,精确查询 + * + * 分页查询会议室列表 + */ + @RequiresPermissions("admin:room:list") + @PostMapping("list") + public R list(MeetingRoom meetingRoom) { + startPage(); + return result(meetingRoomService.selectMeetingRoomList(meetingRoom)); + } + + /** + * 新增保存会议室 + * @param files 附件id + */ + @RequiresPermissions("admin:room:add") + @PostMapping("save") + public R addSave(MeetingRoom meetingRoom, String[] files) { + Long userId = getLoginStaffId(); + meetingRoom.setDeleteFlag(0); + meetingRoom.setCreateBy(userId.toString()); + meetingRoom.setCreateTime(new Date()); + return toAjax(meetingRoomService.insertMeetingRoom(meetingRoom,files)); + } + + /** + * 修改保存会议室 + * @param files 附件id + */ + @RequiresPermissions("admin:room:edit") + @PostMapping("update") + public R editSave(MeetingRoom meetingRoom, String[] files) { + return toAjax(meetingRoomService.updateMeetingRoom(meetingRoom, files)); + } + + /** + * 删除会议室 + */ + @RequiresPermissions("admin:room:remove") + @PostMapping("remove") + public R remove(String ids) { + return toAjax(meetingRoomService.deleteMeetingRoomByIds(ids)); + } + +} diff --git a/shoot-hand/ics-admin/src/main/java/com/ics/admin/controller/MeetingUtoController.java b/shoot-hand/ics-admin/src/main/java/com/ics/admin/controller/MeetingUtoController.java new file mode 100644 index 0000000..bfadc43 --- /dev/null +++ b/shoot-hand/ics-admin/src/main/java/com/ics/admin/controller/MeetingUtoController.java @@ -0,0 +1,91 @@ +package com.ics.admin.controller; + +import com.ics.admin.domain.MeetingUto; +import com.ics.admin.service.IMeetingUtoService; +import com.ics.common.core.controller.BaseController; +import com.ics.common.core.domain.R; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import org.wf.jwtp.annotation.RequiresPermissions; + +import java.util.Date; + +/** + * 用户与机构关联 提供者 + * + * @author ics + * @date 2024-09-18 + */ +@RestController +@RequestMapping("admin/uto") +public class MeetingUtoController extends BaseController { + + @Autowired + private IMeetingUtoService meetingUtoService; + + /** + * 查询用户与机构关联 + */ + @RequiresPermissions(value = {"mr:manage:operator"}) + @RequestMapping("get") + public MeetingUto get(Long id) { + return meetingUtoService.selectMeetingUtoById(id); + } + + /** + * 查询用户与机构关联列表 + */ + @RequiresPermissions(value = {"mr:manage:operator"}) + @RequestMapping("list") + public R list(MeetingUto meetingUto) { + startPage(); + return result(meetingUtoService.selectMeetingUtoList(meetingUto)); + } + + /** + * 新增保存用户与机构关联 + */ + @RequiresPermissions(value = {"mr:manage:operator"}) + @PostMapping("save") + public R addSave(MeetingUto meetingUto) { + Long userId = getLoginStaffId(); + meetingUto.setDeleteFlag(0); + meetingUto.setCreateBy(userId.toString()); + meetingUto.setCreateTime(new Date()); + String result = meetingUtoService.insertMeetingUto(meetingUto); + if (IMeetingUtoService.OK.equals(result)) { + return R.ok("操作成功"); + } else { + return R.error(result); + } + } + + /** + * 修改保存用户与机构关联 + */ + @RequiresPermissions(value = {"mr:manage:operator"}) + @PostMapping("update") + public R editSave(MeetingUto meetingUto) { + Long userId = getLoginStaffId(); + meetingUto.setUpdateBy(userId.toString()); + meetingUto.setUpdateTime(new Date()); + String result = meetingUtoService.updateMeetingUto(meetingUto); + if (IMeetingUtoService.OK.equals(result)) { + return R.ok("操作成功"); + } else { + return R.error(result); + } + } + + /** + * 删除用户与机构关联 + */ + @RequiresPermissions(value = {"mr:manage:operator"}) + @PostMapping("remove") + public R remove(String ids) { + return toAjax(meetingUtoService.deleteMeetingUtoByIds(ids)); + } + +} diff --git a/shoot-hand/ics-admin/src/main/java/com/ics/admin/controller/MeetingWaiterController.java b/shoot-hand/ics-admin/src/main/java/com/ics/admin/controller/MeetingWaiterController.java new file mode 100644 index 0000000..bea9b89 --- /dev/null +++ b/shoot-hand/ics-admin/src/main/java/com/ics/admin/controller/MeetingWaiterController.java @@ -0,0 +1,100 @@ +package com.ics.admin.controller; + +import com.ics.admin.domain.MeetingServe; +import com.ics.admin.mapper.MeetingRoomMapper; +import com.ics.admin.service.IMeetingServeService; +import com.ics.admin.service.IMeetingWaiterService; +import com.ics.common.core.controller.BaseController; +import com.ics.common.core.domain.R; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import org.wf.jwtp.annotation.Logical; +import org.wf.jwtp.annotation.RequiresPermissions; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +/** + * 会议室预约记录与会务人员关联 提供者 + * + * @author ics + * @date 2024-09-18 + */ +@RestController +@RequestMapping("waiter1") +public class MeetingWaiterController extends BaseController { + + @Autowired + private IMeetingWaiterService meetingWaiterService; + + @Autowired + private IMeetingServeService meetingServeService; + + @Autowired + private MeetingRoomMapper meetingRoomMapper; + + /** + * 查询会议室预约记录与会务人员关联 + */ + @RequiresPermissions(value = {"repair:manage:operator", "member:center:view"}, logical = Logical.OR) + @GetMapping("get/{id}") + public R get(@PathVariable("id") Long id) { + Long userId = getLoginStaffId(); + + //meetingWaiterService.saveOrUpdateMeetingWaiter(userId,56L,"10111,10112,10113","10120,10121,10122"); + + //List list=meetingWaiterService.selectMeetingWaiterList(56l); +// Date now =new Date(); +// List list=new ArrayList<>(); +// list.add(new MeetingServe(1l, "参数", "110", "", now, userId)); +// list.add(new MeetingServe(1l, "音乐", "111", "国歌,国际歌", now, userId)); +// list.add(new MeetingServe(1l, "飘箱", "112", "50人", now, userId)); + + //meetingServeService.saveOrUpdateMeetingServe(1l, list); + + return R.ok().put("list",meetingRoomMapper.getCapacityNum()); + } + +// /** +// * 查询会议室预约记录与会务人员关联列表 +// */ +// @RequiresPermissions("core:waiter:list") +// @GetMapping("list") +// public R list(MeetingWaiter meetingWaiter) { +// startPage(); +// return result(meetingWaiterService.selectMeetingWaiterList(meetingWaiter)); +// } +// +// +// /** +// * 新增保存会议室预约记录与会务人员关联 +// */ +// @RequiresPermissions("core:waiter:add") +// @PostMapping("save") +// public R addSave(@RequestBody MeetingWaiter meetingWaiter) { +// return toAjax(meetingWaiterService.insertMeetingWaiter(meetingWaiter)); +// } +// +// /** +// * 修改保存会议室预约记录与会务人员关联 +// */ +// @RequiresPermissions("core:waiter:edit") +// @PostMapping("update") +// public R editSave(@RequestBody MeetingWaiter meetingWaiter) { +// return toAjax(meetingWaiterService.updateMeetingWaiter(meetingWaiter)); +// } +// +// /** +// * 删除会议室预约记录与会务人员关联 +// */ +// @RequiresPermissions("core:waiter:remove") +// @PostMapping("remove") +// public R remove(String ids) { +// return toAjax(meetingWaiterService.deleteMeetingWaiterByIds(ids)); +// } + +} diff --git a/shoot-hand/ics-admin/src/main/java/com/ics/admin/controller/RepairController.java b/shoot-hand/ics-admin/src/main/java/com/ics/admin/controller/RepairController.java index 1ea4692..c911f58 100644 --- a/shoot-hand/ics-admin/src/main/java/com/ics/admin/controller/RepairController.java +++ b/shoot-hand/ics-admin/src/main/java/com/ics/admin/controller/RepairController.java @@ -1,7 +1,6 @@ package com.ics.admin.controller; import com.ics.admin.domain.Repair; -import com.ics.admin.domain.RepairAttach; import com.ics.admin.domain.RepairLog; import com.ics.admin.service.IIcsCustomerStaffService; import com.ics.admin.service.IRepairAttachService; @@ -9,7 +8,6 @@ import com.ics.admin.service.IRepairLogService; import com.ics.admin.service.IRepairService; import com.ics.admin.utils.RepairDTO; import com.ics.admin.utils.RepairListDTO; -import com.ics.admin.vo.RepairAttachVO; import com.ics.common.core.controller.BaseController; import com.ics.common.core.domain.IcsCustomerStaff; import com.ics.common.core.domain.R; @@ -23,7 +21,6 @@ import org.springframework.web.bind.annotation.RestController; import org.wf.jwtp.annotation.Logical; import org.wf.jwtp.annotation.RequiresPermissions; -import java.util.ArrayList; import java.util.Date; import java.util.HashMap; import java.util.List; diff --git a/shoot-hand/ics-admin/src/main/java/com/ics/admin/domain/MeetingReservation.java b/shoot-hand/ics-admin/src/main/java/com/ics/admin/domain/MeetingReservation.java new file mode 100644 index 0000000..b8df88c --- /dev/null +++ b/shoot-hand/ics-admin/src/main/java/com/ics/admin/domain/MeetingReservation.java @@ -0,0 +1,79 @@ +package com.ics.admin.domain; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.annotation.JsonRawValue; +import com.ics.common.core.domain.BaseEntity; +import lombok.Data; + +import java.util.Date; + +/** + * 会议室预约记录对象 + * + * @author ics + * @date 2024-09-18 + */ +@Data +@TableName("ics_meeting_reservation") +public class MeetingReservation extends BaseEntity { + private static final long serialVersionUID = -202409181409L; + + /** 预约号 */ + private String sn; + + /** 会议室id */ + private Long roomId; + + /** 预约-开始时间 */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date start; + + /** 预约-结束时间 */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date end; + + /** 预约时间格式:0 任意时间,1上午,2下午,3晚上 4 全天*/ + private Integer timeFormat; + + /** 会议名称 */ + private String title; + + /** 参与人数 */ + private Long personNum; + + /** 参会领导 */ + private String leader; + + /** 预约人姓名 */ + private String bookingUserName; + + /** 预约人联系电话 */ + private String bookingUserPhone; + + /** 预约用户单位id */ + private Long userOrgId; + + /** 预约用户单位名称 */ + private String userOrg; + + /** 预约状态,1 取消 3 驳回 4 占用 5 待审核 7 审核通过,待开始 9 进行中 11已结束 */ + private Integer status; + + /** 操作记录,json 格式 */ + @JsonRawValue + private String operate; + + /** 备注 */ + private String remark; + + /** 扩展1 */ + private String ext1; + + /** 扩展2 */ + private String ext2; + + /** 扩展3 */ + private String ext3; + +} \ No newline at end of file diff --git a/shoot-hand/ics-admin/src/main/java/com/ics/admin/domain/MeetingRoom.java b/shoot-hand/ics-admin/src/main/java/com/ics/admin/domain/MeetingRoom.java new file mode 100644 index 0000000..a9d04c4 --- /dev/null +++ b/shoot-hand/ics-admin/src/main/java/com/ics/admin/domain/MeetingRoom.java @@ -0,0 +1,98 @@ +package com.ics.admin.domain; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.ics.common.core.domain.BaseEntity; +import lombok.Data; + +/** + * 会议室对象 + * + * @author ics + * @date 2024-09-18 + */ +@Data +@TableName("ics_meeting_room") +public class MeetingRoom extends BaseEntity { + private static final long serialVersionUID = 202409181411L; + + /** + * 所属楼层值 + */ + private String floorId; + + /** + * 所属楼层名称 + */ + private String floor; + + /** + * 名称 + */ + private String name; + + /** + * 会议室形式值 + */ + private String typeId; + + /** + * 会议室形式 + */ + private String typeName; + + /** + * 设备 格式: #设备1 #设备2 #设备3 + */ + private String device; + + /** + * 房间号 + */ + private String roomNum; + + /** + * 会议室面积 + */ + private String area; + + /** + * 容纳人数 + */ + private Long capacityNum; + + /** + * 会议描述 + */ + private String content; + + /** + * 是否启用 0 启用 1禁用 + */ + private Integer enable; + + /** 会议室状态 0可预约 1不可预约 */ + @TableField(exist = false) + private Integer status; + + /** + * 扩展1 + */ + private String ext1; + + /** + * 扩展2 + */ + private String ext2; + + /** + * 扩展3 + */ + private String ext3; + + /** + * 备注 + */ + private String remark; + +} \ No newline at end of file diff --git a/shoot-hand/ics-admin/src/main/java/com/ics/admin/domain/MeetingServe.java b/shoot-hand/ics-admin/src/main/java/com/ics/admin/domain/MeetingServe.java new file mode 100644 index 0000000..e1a3559 --- /dev/null +++ b/shoot-hand/ics-admin/src/main/java/com/ics/admin/domain/MeetingServe.java @@ -0,0 +1,54 @@ +package com.ics.admin.domain; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.ics.common.core.domain.BaseEntity; +import lombok.Data; + +import java.util.Date; + +/** + * 会议室预约的会务服务对象 + * + * @author ics + * @date 2024-09-18 + */ +@Data +@TableName("ics_meeting_serve") +public class MeetingServe extends BaseEntity { + private static final long serialVersionUID = -202409181410L; + + /** + * 会议预约id + */ + private Long rid; + + /** + * 服务名称 + */ + private String name; + + /** + * 服务对应值 + */ + private String value; + + /** + * 服务备注 + */ + private String remark; + + public MeetingServe() { + } + + public MeetingServe(Long rid, String name, String value, String remark, Date now, Long createBy) { + this.rid = rid; + this.name = name; + this.value = value; + this.remark = remark; + this.setDeleteFlag(0); + this.setCreateTime(now); + this.setCreateBy(createBy + ""); + } + + +} diff --git a/shoot-hand/ics-admin/src/main/java/com/ics/admin/domain/MeetingUto.java b/shoot-hand/ics-admin/src/main/java/com/ics/admin/domain/MeetingUto.java new file mode 100644 index 0000000..4d33d95 --- /dev/null +++ b/shoot-hand/ics-admin/src/main/java/com/ics/admin/domain/MeetingUto.java @@ -0,0 +1,45 @@ +package com.ics.admin.domain; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.ics.common.core.domain.BaseEntity; +import lombok.Data; + +/** + * 用户与机构关联对象 + * + * @author ics + * @date 2024-09-18 + */ +@Data +@TableName("ics_meeting_uto") +public class MeetingUto extends BaseEntity { + private static final long serialVersionUID = -202409181412L; + + /** 部门id */ + private Long orgId; + + /** 部门名称 */ + private String orgName; + + /** 姓名 */ + private String userName; + + /** 登录名 */ + private String loginName; + + /** 密码 */ + private String password; + + /** 备注 */ + private String remark; + + /** 扩展1 */ + private String ext1; + + /** 扩展2 */ + private String ext2; + + /** 扩展3 */ + private String ext3; + +} diff --git a/shoot-hand/ics-admin/src/main/java/com/ics/admin/domain/MeetingWaiter.java b/shoot-hand/ics-admin/src/main/java/com/ics/admin/domain/MeetingWaiter.java new file mode 100644 index 0000000..f95c57c --- /dev/null +++ b/shoot-hand/ics-admin/src/main/java/com/ics/admin/domain/MeetingWaiter.java @@ -0,0 +1,38 @@ +package com.ics.admin.domain; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.ics.common.core.domain.BaseEntity; +import lombok.Data; + +import java.util.Date; + +/** + * 会议室预约记录与会务人员关联对象 ics_meeting_waiter + * + * @author ics + * @date 2024-09-18 + */ +@Data +@TableName("ics_meeting_waiter") +public class MeetingWaiter extends BaseEntity { + private static final long serialVersionUID = -202409181404L; + + /** 会议预约id */ + private Long rid; + /** 会务人员类型(1 音控组 3会议服务组) */ + private String type; + /** 会务人员id */ + private Long userId; + + public MeetingWaiter() { + } + + public MeetingWaiter(Long rid, String type, Long userId, Date now, Long createBy) { + this.rid = rid; + this.type = type; + this.userId = userId; + this.setDeleteFlag(0); + this.setCreateTime(now); + this.setCreateBy(createBy + ""); + } +} diff --git a/shoot-hand/ics-admin/src/main/java/com/ics/admin/domain/RepairRemind.java b/shoot-hand/ics-admin/src/main/java/com/ics/admin/domain/RepairRemind.java index 248d025..0755ed2 100644 --- a/shoot-hand/ics-admin/src/main/java/com/ics/admin/domain/RepairRemind.java +++ b/shoot-hand/ics-admin/src/main/java/com/ics/admin/domain/RepairRemind.java @@ -72,7 +72,7 @@ public class RepairRemind extends BaseEntity { this.content = content; this.read = 0; this.setDeleteFlag(0); - this.setCreateBy(createBy + ""); + this.setCreateBy(createBy.toString()); this.setCreateTime(createTime); } @@ -83,7 +83,19 @@ public class RepairRemind extends BaseEntity { this.content = content; this.read = 0; this.setDeleteFlag(0); - this.setCreateBy(createBy + ""); + this.setCreateBy(createBy.toString()); + this.setCreateTime(createTime); + this.ext1 = ext1; + } + + public RepairRemind(Integer typeId, Long repairId, Long userId, String content, Long createBy, Date createTime, String ext1) { + this.typeId = typeId; + this.repairId = repairId; + this.userId = userId; + this.content = content; + this.read = 0; + this.setDeleteFlag(0); + this.setCreateBy(createBy.toString()); this.setCreateTime(createTime); this.ext1 = ext1; } diff --git a/shoot-hand/ics-admin/src/main/java/com/ics/admin/mapper/MeetingReservationMapper.java b/shoot-hand/ics-admin/src/main/java/com/ics/admin/mapper/MeetingReservationMapper.java new file mode 100644 index 0000000..f3ef57d --- /dev/null +++ b/shoot-hand/ics-admin/src/main/java/com/ics/admin/mapper/MeetingReservationMapper.java @@ -0,0 +1,87 @@ +package com.ics.admin.mapper; + +import com.ics.admin.domain.MeetingReservation; +import com.ics.admin.vo.MeetingRecordVo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.Date; +import java.util.List; + +/** + * 会议室预约记录Mapper接口 + * + * @author ics + * @date 2024-09-18 + */ +@Mapper +public interface MeetingReservationMapper { + + /** + * 查询会议室预约记录 + * + * @param id 会议室预约记录ID + * @return 会议室预约记录 + */ + MeetingReservation selectMeetingReservationById(Long id); + + /** + * 查询会议室被占用情况 + * + * @param roomId 会议室id + * @param id 预约记录id + * @param startTime 预定开始时间 + * @param endTime 预定结束时间 + * @return 已经占用的预约记录id, 如果返回空则表示没有占用可以预约 + */ + List checkBooking(@Param("roomId") Long roomId,@Param("id") Long id, @Param("startTime") Date startTime, @Param("endTime") Date endTime); + + /** + * 获取即将开始的预约 + */ + List getSoonMeetingReservation(); + + /** 审核通过的会议预约变成进行中 */ + int goMeetingReservation(); + + /** 进行中会议预约变成结束 */ + int endMeetingReservation(); + + /** + * 新增会议室预约记录 + * + * @param meetingReservation 会议室预约记录 + * @return 结果 + */ + int insertMeetingReservation(MeetingReservation meetingReservation); + + /** + * 修改会议室预约记录 + * + * @param meetingReservation 会议室预约记录 + * @return 结果 + */ + int updateMeetingReservation(MeetingReservation meetingReservation); + + /** + * 查询会议室预约记录列表 + * + */ + List selectMeetingReservationList(MeetingRecordVo meetingRecordVo); + + /** + * 删除会议室预约记录 + * + * @param id 会议室预约记录ID + * @return 结果 + */ + int deleteMeetingReservationById(Long id); + + /** + * 批量删除会议室预约记录 + * + * @param ids 需要删除的数据ID + * @return 结果 + */ + int deleteMeetingReservationByIds(String[] ids); +} diff --git a/shoot-hand/ics-admin/src/main/java/com/ics/admin/mapper/MeetingRoomMapper.java b/shoot-hand/ics-admin/src/main/java/com/ics/admin/mapper/MeetingRoomMapper.java new file mode 100644 index 0000000..4669ea2 --- /dev/null +++ b/shoot-hand/ics-admin/src/main/java/com/ics/admin/mapper/MeetingRoomMapper.java @@ -0,0 +1,68 @@ +package com.ics.admin.mapper; + +import com.ics.admin.domain.MeetingRoom; +import com.ics.admin.vo.MeetingRoomVo; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * 会议室Mapper接口 + * + * @author ics + * @date 2024-09-18 + */ +@Mapper +public interface MeetingRoomMapper { + /** + * 查询会议室 + * + * @param id 会议室ID + * @return 会议室 + */ + MeetingRoomVo selectMeetingRoomById(Long id); + + /** + * 查询会议室列表 + * + * @param meetingRoom 会议室 + * @return 会议室集合 + */ + List selectMeetingRoomList(MeetingRoom meetingRoom); + + /** + * 获取会议室不重复排好序的容纳人数 + */ + List getCapacityNum(); + /** + * 新增会议室 + * + * @param meetingRoom 会议室 + * @return 结果 + */ + int insertMeetingRoom(MeetingRoom meetingRoom); + + /** + * 修改会议室 + * + * @param meetingRoom 会议室 + * @return 结果 + */ + int updateMeetingRoom(MeetingRoom meetingRoom); + + /** + * 删除会议室 + * + * @param id 会议室ID + * @return 结果 + */ + int deleteMeetingRoomById(Long id); + + /** + * 批量删除会议室 + * + * @param ids 需要删除的数据ID + * @return 结果 + */ + int deleteMeetingRoomByIds(String[] ids); +} diff --git a/shoot-hand/ics-admin/src/main/java/com/ics/admin/mapper/MeetingServeMapper.java b/shoot-hand/ics-admin/src/main/java/com/ics/admin/mapper/MeetingServeMapper.java new file mode 100644 index 0000000..58103a8 --- /dev/null +++ b/shoot-hand/ics-admin/src/main/java/com/ics/admin/mapper/MeetingServeMapper.java @@ -0,0 +1,45 @@ +package com.ics.admin.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.ics.admin.domain.MeetingServe; +import com.ics.admin.vo.MeetingServeVo; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * 会议室预约的会务服务Mapper接口 + * + * @author ics + * @date 2024-09-18 + */ +@Mapper +public interface MeetingServeMapper extends BaseMapper { + + /** + * 查询会议室预约的会务服务列表 + * + * @param rid 预约id + * @return + */ + List selectMeetingServeList(Long rid); + + /** + * 批量插入会务服务的值 + * + * @param list + * @return + */ + int batchInsert(List list); + + + /** + * 删除会议室预约的会务服务 + * + * @param rid 会议室预约的ID + * @return 结果 + */ + int deleteByRid(Long rid); + + +} diff --git a/shoot-hand/ics-admin/src/main/java/com/ics/admin/mapper/MeetingUtoMapper.java b/shoot-hand/ics-admin/src/main/java/com/ics/admin/mapper/MeetingUtoMapper.java new file mode 100644 index 0000000..36cc8b3 --- /dev/null +++ b/shoot-hand/ics-admin/src/main/java/com/ics/admin/mapper/MeetingUtoMapper.java @@ -0,0 +1,68 @@ +package com.ics.admin.mapper; + +import com.ics.admin.domain.MeetingUto; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * 用户与机构关联Mapper接口 + * + * @author ics + * @date 2024-09-18 + */ +@Mapper +public interface MeetingUtoMapper { + /** + * 查询用户与机构关联 + * + * @param id 用户与机构关联ID + * @return 用户与机构关联 + */ + MeetingUto selectMeetingUtoById(Long id); + + /** + * 查询用户与机构关联列表 + * + * @param meetingUto 用户与机构关联 + * @return 用户与机构关联集合 + */ + List selectMeetingUtoList(MeetingUto meetingUto); + + List checkLoginName(MeetingUto meetingUto); + + List checkOrgId(MeetingUto meetingUto); + + List login(MeetingUto meetingUto); + /** + * 新增用户与机构关联 + * + * @param meetingUto 用户与机构关联 + * @return 结果 + */ + int insertMeetingUto(MeetingUto meetingUto); + + /** + * 修改用户与机构关联 + * + * @param meetingUto 用户与机构关联 + * @return 结果 + */ + int updateMeetingUto(MeetingUto meetingUto); + + /** + * 删除用户与机构关联 + * + * @param id 用户与机构关联ID + * @return 结果 + */ + int deleteMeetingUtoById(Long id); + + /** + * 批量删除用户与机构关联 + * + * @param ids 需要删除的数据ID + * @return 结果 + */ + int deleteMeetingUtoByIds(String[] ids); +} diff --git a/shoot-hand/ics-admin/src/main/java/com/ics/admin/mapper/MeetingWaiterMapper.java b/shoot-hand/ics-admin/src/main/java/com/ics/admin/mapper/MeetingWaiterMapper.java new file mode 100644 index 0000000..dba0c5b --- /dev/null +++ b/shoot-hand/ics-admin/src/main/java/com/ics/admin/mapper/MeetingWaiterMapper.java @@ -0,0 +1,42 @@ +package com.ics.admin.mapper; + +import com.ics.admin.domain.MeetingWaiter; +import com.ics.admin.vo.MeetingWaiterVo; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * 会议室预约记录与会务人员关联Mapper接口 + * + * @author ics + * @date 2024-09-18 + */ +@Mapper +public interface MeetingWaiterMapper { + + /** + * 查询会议室预约记录与会务人员关联列表 + * + * @param rid 会议室预约记录id + * @return 会议室预约记录与会务人员关联集合 + */ + List selectMeetingWaiterList(Long rid); + + /** + * 新增会议室预约记录与会务人员关联 + * + * @param list 会议室预约记录选择的会务人员 + * @return 结果 + */ + int batchInsert(List list); + + /** + * 删除会议室预约记录与会务人员关联 + * + * @param rid 会议室预约记录ID + * @return 结果 + */ + int deleteByRid(Long rid); + +} diff --git a/shoot-hand/ics-admin/src/main/java/com/ics/admin/mapper/RepairRemindMapper.java b/shoot-hand/ics-admin/src/main/java/com/ics/admin/mapper/RepairRemindMapper.java index 2ec6c37..725fc17 100644 --- a/shoot-hand/ics-admin/src/main/java/com/ics/admin/mapper/RepairRemindMapper.java +++ b/shoot-hand/ics-admin/src/main/java/com/ics/admin/mapper/RepairRemindMapper.java @@ -94,6 +94,14 @@ public interface RepairRemindMapper { */ int deleteRepairRemindByIds(String[] ids); + /** + * 删除业务数据的 提醒 + * @param id 工单或者会议预约的id + * @param typeId 0 工单 1 会议室预约 + * @return + */ + int deleteRemind(@Param("id") Long id, @Param("typeId") Integer typeId); + /** * 获取待推送的提醒 */ diff --git a/shoot-hand/ics-admin/src/main/java/com/ics/admin/service/IMeetingReservationService.java b/shoot-hand/ics-admin/src/main/java/com/ics/admin/service/IMeetingReservationService.java new file mode 100644 index 0000000..8dd7db3 --- /dev/null +++ b/shoot-hand/ics-admin/src/main/java/com/ics/admin/service/IMeetingReservationService.java @@ -0,0 +1,114 @@ +package com.ics.admin.service; + +import com.alibaba.fastjson.JSONObject; +import com.ics.admin.domain.MeetingReservation; +import com.baomidou.mybatisplus.extension.service.IService; +import com.ics.admin.domain.MeetingServe; +import com.ics.admin.mapper.MeetingServeMapper; +import com.ics.admin.utils.MrOperate; +import com.ics.admin.vo.MeetingRecordVo; + +import java.util.List; + +/** + * 会议室预约记录Service接口 + * + * @author ics + * @date 2024-09-18 + */ +public interface IMeetingReservationService { + String OK = "okay"; + + /** + * 获取字典数据 + */ + JSONObject getConstData(); + + /** + * 新增会议室预约记录 + * + * @param currentUserId 当前用户id + * @param meetingReservation 会议室预约记录 + * @param meetingServes 选择的会议服务 + * @return 结果 + */ + String insertMeetingReservation(Long currentUserId, MeetingReservation meetingReservation, MeetingServe[] meetingServes); + + /** + * 取消预约:用户只能取消自己预约且状态为 待审核(5)的预约 + * 驳回预约:需要给出驳回原因,即content;状态为 待审核(5)的预约 + * 审核通过预约:状态为 待审核(5)的预约 + * @param currentUserId 当前用户id + * @param id 预约记录id + * @param operate 操作: 1 取消 3驳回 7 审核通过 + * @param content 操作内容 + * @return + */ + String operateMeetingReservation(Long currentUserId, Long id, MrOperate operate, String content); + + /** + * 查询会议室预约记录 + * + * @param id 会议室预约记录ID + * @return 会议室预约记录 + */ + MeetingReservation selectMeetingReservationById(Long id); + + /** + * 修改会议室预约记录 + * + * @param meetingReservation 会议室预约记录 + * @return 结果 + */ + String updateMeetingReservation(Long currentUserId, MeetingReservation meetingReservation, MeetingServe[] meetingServes); + + /** + * 占用会议室 + * @param currentUserId 当前用户id + * @param meetingReservation 会议室预约记录 + * @return + */ + String beforehand(Long currentUserId, MeetingReservation meetingReservation); + + /** + * 分配服务员 + */ + int addWaiter(Long currentUserId, Long rid, String voiceWaiter, String serveWaiter); + + /** + * 即将开始提醒 + */ + void getSoonMeetingReservation(); + + /** + * 审核通过的会议预约,从待开始变成进行中,变成结束。 + * @return + */ + int changeMeetingReservation(); + + /** + * 删除会议室预约记录信息 + * + * @param id 会议室预约记录ID + * @return 结果 + */ + int deleteMeetingReservationById(Long id); + + /** + * 预约记录分页查询 + * @param meetingRecordVo + * @return + */ + List selectMeetingReservationList(MeetingRecordVo meetingRecordVo); + + + /** + * 批量删除会议室预约记录 + * + * @param ids 需要删除的数据ID + * @return 结果 + */ + int deleteMeetingReservationByIds(String ids); + + +} diff --git a/shoot-hand/ics-admin/src/main/java/com/ics/admin/service/IMeetingRoomService.java b/shoot-hand/ics-admin/src/main/java/com/ics/admin/service/IMeetingRoomService.java new file mode 100644 index 0000000..e230a6e --- /dev/null +++ b/shoot-hand/ics-admin/src/main/java/com/ics/admin/service/IMeetingRoomService.java @@ -0,0 +1,64 @@ +package com.ics.admin.service; + +import com.ics.admin.domain.MeetingRoom; +import com.ics.admin.vo.MeetingRoomVo; + +import java.util.List; + +/** + * 会议室Service接口 + * + * @author ics + * @date 2024-09-18 + */ +public interface IMeetingRoomService { + /** + * 查询会议室 + * + * @param id 会议室ID + * @return 会议室 + */ + MeetingRoomVo selectMeetingRoomById(Long id); + + /** + * 查询会议室列表 + * + * @param meetingRoom 会议室 + * @return 会议室集合 + */ + List selectMeetingRoomList(MeetingRoom meetingRoom); + + /** + * 新增会议室 + * + * @param meetingRoom 会议室 + * @param files 附件id数据 + * @return 结果 + */ + int insertMeetingRoom(MeetingRoom meetingRoom, String[] files); + + /** + * 修改会议室 + * + * @param meetingRoom 会议室 + * @param files 附件id数据 + * @return 结果 + */ + int updateMeetingRoom(MeetingRoom meetingRoom, String[] files); + + /** + * 批量删除会议室 + * + * @param ids 需要删除的数据ID + * @return 结果 + */ + int deleteMeetingRoomByIds(String ids); + + /** + * 删除会议室信息 + * + * @param id 会议室ID + * @return 结果 + */ + int deleteMeetingRoomById(Long id); +} diff --git a/shoot-hand/ics-admin/src/main/java/com/ics/admin/service/IMeetingServeService.java b/shoot-hand/ics-admin/src/main/java/com/ics/admin/service/IMeetingServeService.java new file mode 100644 index 0000000..9cea886 --- /dev/null +++ b/shoot-hand/ics-admin/src/main/java/com/ics/admin/service/IMeetingServeService.java @@ -0,0 +1,29 @@ +package com.ics.admin.service; + +import com.ics.admin.domain.MeetingServe; +import com.ics.admin.vo.MeetingServeVo; + +import java.util.List; + +/** + * 会议室预约的会务服务Service接口 + * + * @author ics + * @date 2024-09-18 + */ +public interface IMeetingServeService { + + /** + * 根据预约记录查询 预约的所有服务事项 + * @param rid + * @return + */ + List selectMeetingServeList(Long rid); + + /** + * 插入或者更新 预约的服务事项 + * @param list + * @return + */ + int saveOrUpdateMeetingServe(Long rid, List list); +} diff --git a/shoot-hand/ics-admin/src/main/java/com/ics/admin/service/IMeetingUtoService.java b/shoot-hand/ics-admin/src/main/java/com/ics/admin/service/IMeetingUtoService.java new file mode 100644 index 0000000..0402760 --- /dev/null +++ b/shoot-hand/ics-admin/src/main/java/com/ics/admin/service/IMeetingUtoService.java @@ -0,0 +1,69 @@ +package com.ics.admin.service; + +import com.ics.admin.domain.MeetingUto; +import com.baomidou.mybatisplus.extension.service.IService; +import java.util.List; + +/** + * 用户与机构关联Service接口 + * + * @author ics + * @date 2024-09-18 + */ +public interface IMeetingUtoService { + String OK = "okay"; + /** + * 查询用户与机构关联 + * + * @param id 用户与机构关联ID + * @return 用户与机构关联 + */ + MeetingUto selectMeetingUtoById(Long id); + + /** + * 查询用户与机构关联列表 + * + * @param meetingUto 用户与机构关联 + * @return 用户与机构关联集合 + */ + List selectMeetingUtoList(MeetingUto meetingUto); + + /** + * 用户登录 + * @param meetingUto + * @return + */ + MeetingUto login(MeetingUto meetingUto); + + /** + * 新增用户与机构关联 + * + * @param meetingUto 用户与机构关联 + * @return 结果 + */ + String insertMeetingUto(MeetingUto meetingUto); + + /** + * 修改用户与机构关联 + * + * @param meetingUto 用户与机构关联 + * @return 结果 + */ + String updateMeetingUto(MeetingUto meetingUto); + + /** + * 批量删除用户与机构关联 + * + * @param ids 需要删除的数据ID + * @return 结果 + */ + int deleteMeetingUtoByIds(String ids); + + /** + * 删除用户与机构关联信息 + * + * @param id 用户与机构关联ID + * @return 结果 + */ + int deleteMeetingUtoById(Long id); +} diff --git a/shoot-hand/ics-admin/src/main/java/com/ics/admin/service/IMeetingWaiterService.java b/shoot-hand/ics-admin/src/main/java/com/ics/admin/service/IMeetingWaiterService.java new file mode 100644 index 0000000..954390f --- /dev/null +++ b/shoot-hand/ics-admin/src/main/java/com/ics/admin/service/IMeetingWaiterService.java @@ -0,0 +1,32 @@ +package com.ics.admin.service; + +import com.ics.admin.vo.MeetingWaiterVo; + +import java.util.List; + +/** + * 会议室预约记录与会务人员关联Service接口 + * + * @author ics + * @date 2024-09-18 + */ +public interface IMeetingWaiterService { + + /** + * 查询会议室预约记录与会务人员关联列表 + * + * @param rid 会议室预约记录id + * @return 会议室预约记录的会务人员集合 + */ + List selectMeetingWaiterList(Long rid); + + /** + * 更新或者新增 预约记录的 会务人员 + * @param currentUserID + * @param rid + * @param voiceWaiter + * @param serveWaiter + * @return + */ + int saveOrUpdateMeetingWaiter(Long currentUserID, Long rid, String voiceWaiter, String serveWaiter); +} diff --git a/shoot-hand/ics-admin/src/main/java/com/ics/admin/service/impl/MeetingReservationServiceImpl.java b/shoot-hand/ics-admin/src/main/java/com/ics/admin/service/impl/MeetingReservationServiceImpl.java new file mode 100644 index 0000000..a1155aa --- /dev/null +++ b/shoot-hand/ics-admin/src/main/java/com/ics/admin/service/impl/MeetingReservationServiceImpl.java @@ -0,0 +1,449 @@ +package com.ics.admin.service.impl; + +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.ics.admin.domain.MeetingReservation; +import com.ics.admin.domain.MeetingServe; +import com.ics.admin.domain.RepairAttach; +import com.ics.admin.domain.RepairRemind; +import com.ics.admin.mapper.IcsCustomerStaffMapper; +import com.ics.admin.mapper.MeetingReservationMapper; +import com.ics.admin.mapper.MeetingRoomMapper; +import com.ics.admin.mapper.MeetingServeMapper; +import com.ics.admin.mapper.MeetingWaiterMapper; +import com.ics.admin.mapper.RepairAttachMapper; +import com.ics.admin.mapper.RepairRemindMapper; +import com.ics.admin.service.IIcsCustomerStaffService; +import com.ics.admin.service.IMeetingReservationService; +import com.ics.admin.service.IMeetingServeService; +import com.ics.admin.service.IMeetingWaiterService; +import com.ics.admin.utils.MeetingRemindContent; +import com.ics.admin.utils.MrOperate; +import com.ics.admin.vo.MeetingRecordVo; +import com.ics.admin.vo.MeetingRoomVo; +import com.ics.common.core.domain.IcsCustomerStaff; +import com.ics.common.utils.DateUtils; +import com.ics.common.utils.StringUtils; +import com.ics.system.domain.DictData; +import com.ics.system.domain.Sn; +import com.ics.system.service.IDictDataService; +import com.ics.system.service.ISnService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Isolation; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +/** + * 会议室预约记录Service业务层处理 + * + * @author ics + * @date 2024-09-18 + */ +@Service +public class MeetingReservationServiceImpl implements IMeetingReservationService { + + @Autowired + private MeetingReservationMapper meetingReservationMapper; + + @Autowired + private MeetingRoomMapper meetingRoomMapper; + + @Autowired + private IMeetingWaiterService meetingWaiterService; + + @Autowired + private MeetingWaiterMapper meetingWaiterMapper; + + @Autowired + private IMeetingServeService meetingServeService; + + @Autowired + private MeetingServeMapper meetingServeMapper; + + @Autowired + private IDictDataService dictDataService; + + @Autowired + private ISnService snService; + + @Autowired + private IIcsCustomerStaffService customerStaffService; + + @Autowired + private IcsCustomerStaffMapper customerStaffMapper; + + @Autowired + private RepairRemindMapper repairRemindMapper; + + @Autowired + private RepairAttachMapper repairAttachMapper; + + @Autowired + private MeetingRemindContent meetingRemindContent; + + /** + * 获取字典数据 + */ + public JSONObject getConstData() { + JSONObject data = new JSONObject(); + JSONArray floors = getConstData("mm_floor"); + JSONArray types = getConstData("mm_type"); + JSONArray devices = getConstData("mm_device"); + JSONArray services = getConstData("mm_service"); + List personNum = meetingRoomMapper.getCapacityNum(); + data.put("floors", floors); + data.put("types", types); + data.put("devices", devices); + data.put("services", services); + data.put("personNum", personNum); + return data; + } + + private JSONArray getConstData(String type) { + JSONArray datas = new JSONArray(); + List list = dictDataService.selectDictDataByType(type); + if (list == null) return datas; + for (int i = 0; i < list.size(); i++) { + JSONObject jsonObject = new JSONObject(); + DictData dictData = list.get(i); + jsonObject.put(dictData.getDictLabel(), dictData.getDictValue()); + datas.add(jsonObject); + } + return datas; + } + + @Transactional(rollbackFor = Exception.class, isolation = Isolation.SERIALIZABLE) + @Override + public String insertMeetingReservation(Long currentUserId, MeetingReservation meetingReservation, MeetingServe[] meetingServes) { + List ids = meetingReservationMapper.checkBooking(meetingReservation.getRoomId(), null, meetingReservation.getStart(), meetingReservation.getEnd()); + if (ids.size() > 0) return "会议室已被占用,预约失败"; + Date now = new Date(); + meetingReservation.setSn(snService.generate(Sn.Type.REPAIR)); + meetingReservation.setStatus(5); + meetingReservation.setDeleteFlag(0); + meetingReservation.setCreateTime(now); + meetingReservation.setCreateBy(currentUserId.toString()); + meetingReservationMapper.insertMeetingReservation(meetingReservation); + Long rid = meetingReservation.getId(); + List list = new ArrayList<>(); + if (meetingServes != null) { + for (MeetingServe meetingServe : meetingServes) { + meetingServe.setRid(rid); + meetingServe.setDeleteFlag(0); + meetingServe.setCreateTime(now); + meetingServe.setCreateBy(currentUserId.toString()); + list.add(meetingServe); + } + } + //提醒--start + List rList = processRemind(meetingReservation, currentUserId, null, 5, null, null); + for (RepairRemind repairRemind : rList) { + repairRemindMapper.insertRepairRemind(repairRemind); + } + //提醒--end + meetingServeService.saveOrUpdateMeetingServe(rid, list); + return IMeetingReservationService.OK; + } + + @Transactional(rollbackFor = Exception.class, isolation = Isolation.SERIALIZABLE) + @Override + public String operateMeetingReservation(Long currentUserId, Long id, MrOperate operate, String content) { + MeetingReservation meetingReservation = meetingReservationMapper.selectMeetingReservationById(id); + if (meetingReservation == null) return "未找到预约记录"; + if (meetingReservation.getStatus() != 5) return "预约记录不能" + operate.getValue(); + if (MrOperate.CANCEL.equals(operate) && !meetingReservation.getCreateBy().equals(currentUserId.toString())) + return "不能取消非本人的预约记录"; + Date now = new Date(); + meetingReservation.setStatus(operate.getStatus()); + meetingReservation.setUpdateBy(currentUserId.toString()); + meetingReservation.setUpdateTime(now); + JSONArray operates; + if (StringUtils.isNotBlank(meetingReservation.getOperate())) { + operates = JSONArray.parseArray(meetingReservation.getOperate()); + } else { + operates = new JSONArray(); + } + JSONObject one = new JSONObject(); + one.put("userid", currentUserId.toString()); + one.put("time", DateUtils.getTime()); + one.put("operate", operate.getValue() + "预约"); + one.put("type", operate.getStatus()); + one.put("content", content == null ? "" : content); + operates.add(one); + meetingReservation.setOperate(operates.toJSONString()); + meetingReservationMapper.updateMeetingReservation(meetingReservation); + //提醒--start + List rList = processRemind(meetingReservation, currentUserId, content, operate.getStatus(), null, null); + for (RepairRemind repairRemind : rList) { + repairRemindMapper.insertRepairRemind(repairRemind); + } + //提醒--end + return IMeetingReservationService.OK; + } + + /** + * 查询会议室预约记录 + * + * @param id 会议室预约记录ID + * @return 会议室预约记录 + */ + @Override + public MeetingReservation selectMeetingReservationById(Long id) { + return meetingReservationMapper.selectMeetingReservationById(id); + } + + @Transactional(rollbackFor = Exception.class, isolation = Isolation.SERIALIZABLE) + @Override + public String updateMeetingReservation(Long currentUserId, MeetingReservation meetingReservation, MeetingServe[] meetingServes) { + List rList = null; + if (meetingReservation.getStatus() == 1 || meetingReservation.getStatus() == 3 || meetingReservation.getStatus() == 4) { + meetingReservation.setStatus(5); + if (!meetingReservation.getCreateBy().equals(currentUserId.toString())) return "当前用户无权修改预约记录"; + JSONArray operates; + if (StringUtils.isNotBlank(meetingReservation.getOperate())) { + operates = JSONArray.parseArray(meetingReservation.getOperate()); + } else { + operates = new JSONArray(); + } + JSONObject one = new JSONObject(); + one.put("userid", currentUserId.toString()); + one.put("time", DateUtils.getTime()); + one.put("operate", "重新提交预约"); + one.put("type", 5); + one.put("content", ""); + operates.add(one); + meetingReservation.setOperate(operates.toJSONString()); + //提醒--start + rList = processRemind(meetingReservation, currentUserId, null, 5, null, null); + //提醒--end + } else if (meetingReservation.getStatus() >= 9) { + return "预约记录不能修改"; + } else { + IcsCustomerStaff customerStaff = customerStaffService.selectIcsCustomerStaffById(currentUserId); + if (customerStaff.getRoomRole() == null || customerStaff.getRoomRole() != 5) return "权限不足!";//管理员权限验证 + //提醒--start + rList = processRemind(meetingReservation, currentUserId, null, 0, null, null); + //提醒--end + } + List ids = meetingReservationMapper.checkBooking(meetingReservation.getRoomId(), meetingReservation.getId(), meetingReservation.getStart(), meetingReservation.getEnd()); + if (ids.size() > 0) return "会议室已被占用,预约失败"; + Date now = new Date(); + meetingReservation.setUpdateTime(now); + meetingReservation.setUpdateBy(currentUserId.toString()); + meetingReservationMapper.updateMeetingReservation(meetingReservation); + List list = new ArrayList<>(); + if (meetingServes != null) { + for (MeetingServe meetingServe : meetingServes) { + meetingServe.setRid(meetingReservation.getId()); + meetingServe.setDeleteFlag(0); + meetingServe.setCreateTime(now); + meetingServe.setCreateBy(currentUserId.toString()); + list.add(meetingServe); + } + } + meetingServeService.saveOrUpdateMeetingServe(meetingReservation.getId(), list); + //提醒--start + for (RepairRemind repairRemind : rList) { + repairRemindMapper.insertRepairRemind(repairRemind); + } + //提醒--end + return IMeetingReservationService.OK; + } + + /** + * 生成会议预约提醒 + * + * @param meetingReservation 会议预约记录 + * @param currentUserId 当前用户id + * @param content 驳回等原因 + * @param status 状态 -1 提醒会务人员 ,0 更新--提醒预约创建人 ,1 取消,3驳回,5提交待审核,7审核通过,9即将开始 + * @param voiceWaiter 音控组人员id,格式1,2,3,4 + * @param serveWaiter 会务组人员id,格式1,2,3,4 + * @return + */ + private List processRemind(MeetingReservation meetingReservation, Long currentUserId, String content, Integer status, String voiceWaiter, String serveWaiter) { + MeetingRoomVo meetingRoom = meetingRoomMapper.selectMeetingRoomById(meetingReservation.getRoomId()); + String remindContent = meetingReservation.getTitle() + "/" + + DateUtils.parseDateToStr("yyyy-MM-dd HH:mm", meetingReservation.getStart()) + + " ~ " + DateUtils.parseDateToStr("HH:mm", meetingReservation.getEnd()) + + "/" + meetingRoom.getRoomNum(); + Date now = new Date(); + List list = new ArrayList<>(); + IcsCustomerStaff p = new IcsCustomerStaff(); + p.setRoomRole(5); + List admins = customerStaffMapper.selectIcsCustomerStaffList(p);//获取所有会议管理员 + boolean isAdmin = false;//是否管理员创建的预约 + for (IcsCustomerStaff staff : admins) { + if (staff.getId().toString().equals(meetingReservation.getCreateBy())) { + isAdmin = true; + break; + } + } + if (status == -1) {//提醒会务人员 + if (StringUtils.isNotBlank(voiceWaiter)) { + String[] voices = voiceWaiter.split(","); + for (int i = 0; i < voices.length; i++) { + list.add( + new RepairRemind(1, meetingReservation.getId(), Long.valueOf(voices[i]), + String.format(meetingRemindContent.getSu1(), remindContent), currentUserId, now, "1") + ); + } + } + if (StringUtils.isNotBlank(serveWaiter)) { + String[] serves = serveWaiter.split(","); + for (int i = 0; i < serves.length; i++) { + list.add( + new RepairRemind(1, meetingReservation.getId(), Long.valueOf(serves[i]), + String.format(meetingRemindContent.getSu1(), remindContent), currentUserId, now, "1") + ); + } + } + } + if (status == 0) {//更新 提醒预约创建人 + //不是管理员创建的预约,并且不是当前用户创建的预约 + if (!isAdmin && !currentUserId.toString().equals(meetingReservation.getCreateBy())) { + list.add( + new RepairRemind(1, meetingReservation.getId(), Long.valueOf(meetingReservation.getCreateBy()), + String.format(meetingRemindContent.getCu2(), remindContent), currentUserId, now, "1") + ); + } + } + if (status == 1) {//取消 + for (IcsCustomerStaff staff : admins) { + list.add( + new RepairRemind(1, meetingReservation.getId(), staff.getId(), + String.format(meetingRemindContent.getMu2(), remindContent, content), currentUserId, now, "1") + ); + } + } + if (status == 3) {//驳回 + list.add( + new RepairRemind(1, meetingReservation.getId(), Long.valueOf(meetingReservation.getCreateBy()), + String.format(meetingRemindContent.getCu1(), remindContent, content), currentUserId, now, "1") + ); + } + if (status == 5) { //提交待审核 + if (!isAdmin) { //不是管理员创建的预约 + for (IcsCustomerStaff staff : admins) { + list.add( + new RepairRemind(1, meetingReservation.getId(), staff.getId(), + String.format(meetingRemindContent.getMu1(), remindContent), currentUserId, now, "1") + ); + } + } + } + if (status == 7) {//审核通过 + if (!isAdmin) { //不是管理员创建的预约 + list.add( + new RepairRemind(1, meetingReservation.getId(), Long.valueOf(meetingReservation.getCreateBy()), + String.format(meetingRemindContent.getCu3(), remindContent), currentUserId, now, "1") + ); + } + } + if (status == 9) {//即将开始 + list.add( + new RepairRemind(1, meetingReservation.getId(), Long.valueOf(meetingReservation.getCreateBy()), + String.format(meetingRemindContent.getCu4(), remindContent), currentUserId, now, "1") + ); + } + return list; + } + + @Transactional(rollbackFor = Exception.class, isolation = Isolation.SERIALIZABLE) + @Override + public String beforehand(Long currentUserId, MeetingReservation meetingReservation) { + List ids = meetingReservationMapper.checkBooking(meetingReservation.getRoomId(), null, meetingReservation.getStart(), meetingReservation.getEnd()); + if (ids.size() > 0) return "会议室已被占用,预约失败"; + Date now = new Date(); + meetingReservation.setSn(snService.generate(Sn.Type.REPAIR)); + meetingReservation.setStatus(4); + meetingReservation.setDeleteFlag(0); + meetingReservation.setCreateTime(now); + meetingReservation.setCreateBy(currentUserId.toString()); + meetingReservationMapper.insertMeetingReservation(meetingReservation); + return IMeetingReservationService.OK; + } + + @Transactional(rollbackFor = Exception.class) + @Override + public int addWaiter(Long currentUserId, Long rid, String voiceWaiter, String serveWaiter) { + MeetingReservation meetingReservation = meetingReservationMapper.selectMeetingReservationById(rid); + List rList = processRemind(meetingReservation, currentUserId, null, -1, voiceWaiter, serveWaiter); + for (RepairRemind repairRemind : rList) { + repairRemindMapper.insertRepairRemind(repairRemind); + } + return meetingWaiterService.saveOrUpdateMeetingWaiter(currentUserId, rid, voiceWaiter, serveWaiter); + } + + + @Transactional(rollbackFor = Exception.class) + @Override + public void getSoonMeetingReservation() { + List list = meetingReservationMapper.getSoonMeetingReservation(); + for (MeetingReservation meetingReservation : list) { + List rList = processRemind(meetingReservation, -1L, null, 9, null, null); + for (RepairRemind repairRemind : rList) { + repairRemindMapper.insertRepairRemind(repairRemind); + } + } + } + + @Override + public int changeMeetingReservation() { + int a = meetingReservationMapper.goMeetingReservation(); + int b = meetingReservationMapper.endMeetingReservation(); + return a + b; + } + + /** + * 删除会议室预约记录信息 + * + * @param id 会议室预约记录ID + * @return 结果 + */ + @Transactional(rollbackFor = Exception.class) + @Override + public int deleteMeetingReservationById(Long id) { + repairRemindMapper.deleteRemind(id, 1);//删除提醒 + meetingServeMapper.deleteByRid(id);//删除服务 + meetingWaiterMapper.deleteByRid(id);//删除服务员 + return meetingReservationMapper.deleteMeetingReservationById(id); + } + + + + @Override + public List selectMeetingReservationList(MeetingRecordVo meetingRecordVo) { + List list = meetingReservationMapper.selectMeetingReservationList(meetingRecordVo); + for (MeetingRecordVo mr : list) { + List attaches = repairAttachMapper.selectRepairAttachList(mr.getRoomId(), 1); + JSONArray array = new JSONArray(); + for (RepairAttach repairAttach : attaches) { + JSONObject attach = new JSONObject(); + attach.put("id", repairAttach.getId()); + attach.put("url", repairAttach.getUrl()); + array.add(attach); + } + mr.setImgs(array); + } + return list; + } + + /** + * 删除会议室预约记录对象 + * + * @param ids 需要删除的数据ID + * @return 结果 + */ + @Override + public int deleteMeetingReservationByIds(String ids) { + String[] idsArray = StrUtil.split(ids, ","); + return meetingReservationMapper.deleteMeetingReservationByIds(idsArray); + } + +} diff --git a/shoot-hand/ics-admin/src/main/java/com/ics/admin/service/impl/MeetingRoomServiceImpl.java b/shoot-hand/ics-admin/src/main/java/com/ics/admin/service/impl/MeetingRoomServiceImpl.java new file mode 100644 index 0000000..8a94406 --- /dev/null +++ b/shoot-hand/ics-admin/src/main/java/com/ics/admin/service/impl/MeetingRoomServiceImpl.java @@ -0,0 +1,118 @@ +package com.ics.admin.service.impl; + +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.ics.admin.domain.MeetingRoom; +import com.ics.admin.domain.RepairAttach; +import com.ics.admin.mapper.MeetingRoomMapper; +import com.ics.admin.mapper.RepairAttachMapper; +import com.ics.admin.service.IMeetingRoomService; +import com.ics.admin.vo.MeetingRoomVo; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * 会议室Service业务层处理 + * + * @author ics + * @date 2024-09-18 + */ +@Service +public class MeetingRoomServiceImpl implements IMeetingRoomService { + + @Autowired + private MeetingRoomMapper meetingRoomMapper; + + @Autowired + private RepairAttachMapper repairAttachMapper; + + /** + * 查询会议室 + * + * @param id 会议室ID + * @return 会议室 + */ + @Override + public MeetingRoomVo selectMeetingRoomById(Long id) { + MeetingRoomVo meetingRoomVo = meetingRoomMapper.selectMeetingRoomById(id); + List list = repairAttachMapper.selectRepairAttachList(meetingRoomVo.getId(), 1); + JSONArray attacths = new JSONArray(); + for (RepairAttach repairAttach : list) { + JSONObject attach = new JSONObject(); + attach.put("id", repairAttach.getId()); + attach.put("url", repairAttach.getUrl()); + attacths.add(attach); + } + meetingRoomVo.setImgs(attacths); + return meetingRoomVo; + } + + /** + * 查询会议室列表 + * + * @param meetingRoom 会议室 + * @return 会议室 + */ + @Override + public List selectMeetingRoomList(MeetingRoom meetingRoom) { + return meetingRoomMapper.selectMeetingRoomList(meetingRoom); + } + + /** + * 新增会议室 + * + */ + @Transactional(rollbackFor = Exception.class) + @Override + public int insertMeetingRoom(MeetingRoom meetingRoom, String[] files) { + int r = meetingRoomMapper.insertMeetingRoom(meetingRoom); + if (files != null && files.length > 0) { + repairAttachMapper.updateRepairAttachs(meetingRoom.getId(), 1, files);//更新附件 + } + return r; + } + + /** + * 修改会议室 + * + * @param meetingRoom 会议室 + * @return 结果 + */ + @Transactional(rollbackFor = Exception.class) + @Override + public int updateMeetingRoom(MeetingRoom meetingRoom, String[] files) { + if (files != null && files.length > 0) { + repairAttachMapper.updateRepairAttachs(meetingRoom.getId(), 1, files);//更新附件 + } + return meetingRoomMapper.updateMeetingRoom(meetingRoom); + } + + /** + * 删除会议室对象 + * + * @param ids 需要删除的数据ID + * @return 结果 + */ + @Override + public int deleteMeetingRoomByIds(String ids) { + String[] idsArray = StrUtil.split(ids,","); + return meetingRoomMapper.deleteMeetingRoomByIds(idsArray); + } + + /** + * 删除会议室信息 + * + * @param id 会议室ID + * @return 结果 + */ + @Override + public int deleteMeetingRoomById(Long id) { + return meetingRoomMapper.deleteMeetingRoomById(id); + } +} diff --git a/shoot-hand/ics-admin/src/main/java/com/ics/admin/service/impl/MeetingServeServiceImpl.java b/shoot-hand/ics-admin/src/main/java/com/ics/admin/service/impl/MeetingServeServiceImpl.java new file mode 100644 index 0000000..b864b29 --- /dev/null +++ b/shoot-hand/ics-admin/src/main/java/com/ics/admin/service/impl/MeetingServeServiceImpl.java @@ -0,0 +1,35 @@ +package com.ics.admin.service.impl; + +import com.ics.admin.domain.MeetingServe; +import com.ics.admin.mapper.MeetingServeMapper; +import com.ics.admin.service.IMeetingServeService; +import com.ics.admin.vo.MeetingServeVo; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; + +/** + * 会议室预约的会务服务Service业务层处理 + * + * @author ics + * @date 2024-09-18 + */ +@Service +public class MeetingServeServiceImpl implements IMeetingServeService { + @Autowired + private MeetingServeMapper meetingServeMapper; + + @Override + public List selectMeetingServeList(Long rid) { + return meetingServeMapper.selectMeetingServeList(rid); + } + + @Transactional(rollbackFor = Exception.class) + @Override + public int saveOrUpdateMeetingServe(Long rid, List list) { + meetingServeMapper.deleteByRid(rid); + return meetingServeMapper.batchInsert(list); + } +} diff --git a/shoot-hand/ics-admin/src/main/java/com/ics/admin/service/impl/MeetingUtoServiceImpl.java b/shoot-hand/ics-admin/src/main/java/com/ics/admin/service/impl/MeetingUtoServiceImpl.java new file mode 100644 index 0000000..723612a --- /dev/null +++ b/shoot-hand/ics-admin/src/main/java/com/ics/admin/service/impl/MeetingUtoServiceImpl.java @@ -0,0 +1,106 @@ +package com.ics.admin.service.impl; + +import cn.hutool.core.util.StrUtil; +import com.ics.admin.domain.MeetingUto; +import com.ics.admin.mapper.MeetingUtoMapper; +import com.ics.admin.service.IMeetingUtoService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 用户与机构关联Service业务层处理 + * + * @author ics + * @date 2024-09-18 + */ +@Service +public class MeetingUtoServiceImpl implements IMeetingUtoService { + @Autowired + private MeetingUtoMapper meetingUtoMapper; + + /** + * 查询用户与机构关联 + * + * @param id 用户与机构关联ID + * @return 用户与机构关联 + */ + @Override + public MeetingUto selectMeetingUtoById(Long id) { + return meetingUtoMapper.selectMeetingUtoById(id); + } + + /** + * 查询用户与机构关联列表 + * + * @param meetingUto 用户与机构关联 + * @return 用户与机构关联 + */ + @Override + public List selectMeetingUtoList(MeetingUto meetingUto) { + return meetingUtoMapper.selectMeetingUtoList(meetingUto); + } + + @Override + public MeetingUto login(MeetingUto meetingUto) { + List list = meetingUtoMapper.login(meetingUto); + if (list.size() > 0) return list.get(0); + return null; + } + + /** + * 新增用户与机构关联 + * + * @param meetingUto 用户与机构关联 + * @return 结果 + */ + @Override + public String insertMeetingUto(MeetingUto meetingUto) { + List loginNames = meetingUtoMapper.checkLoginName(meetingUto); + if (loginNames.size() > 0) return "登录名重复"; + List orgNames = meetingUtoMapper.checkOrgId(meetingUto); + if (orgNames.size() > 0) return "已存在相同机构id,但机构名称不一致"; + meetingUtoMapper.insertMeetingUto(meetingUto); + return IMeetingUtoService.OK; + } + + /** + * 修改用户与机构关联 + * + * @param meetingUto 用户与机构关联 + * @return 结果 + */ + @Override + public String updateMeetingUto(MeetingUto meetingUto) { + List loginNames = meetingUtoMapper.checkLoginName(meetingUto); + if (loginNames.size() > 0) return "登录名重复"; + List orgNames = meetingUtoMapper.checkOrgId(meetingUto); + if (orgNames.size() > 0) return "已存在相同机构id,但机构名称不一致"; + meetingUtoMapper.updateMeetingUto(meetingUto); + return IMeetingUtoService.OK; + } + + /** + * 删除用户与机构关联对象 + * + * @param ids 需要删除的数据ID + * @return 结果 + */ + @Override + public int deleteMeetingUtoByIds(String ids) { + String[] idsArray = StrUtil.split(ids, ","); + return meetingUtoMapper.deleteMeetingUtoByIds(idsArray); + } + + /** + * 删除用户与机构关联信息 + * + * @param id 用户与机构关联ID + * @return 结果 + */ + @Override + public int deleteMeetingUtoById(Long id) { + return meetingUtoMapper.deleteMeetingUtoById(id); + } +} diff --git a/shoot-hand/ics-admin/src/main/java/com/ics/admin/service/impl/MeetingWaiterServiceImpl.java b/shoot-hand/ics-admin/src/main/java/com/ics/admin/service/impl/MeetingWaiterServiceImpl.java new file mode 100644 index 0000000..8fc9b7f --- /dev/null +++ b/shoot-hand/ics-admin/src/main/java/com/ics/admin/service/impl/MeetingWaiterServiceImpl.java @@ -0,0 +1,54 @@ +package com.ics.admin.service.impl; + +import com.ics.admin.domain.MeetingWaiter; +import com.ics.admin.mapper.MeetingWaiterMapper; +import com.ics.admin.service.IMeetingWaiterService; +import com.ics.admin.vo.MeetingWaiterVo; +import com.ics.common.utils.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +/** + * 会议室预约记录与会务人员关联Service业务层处理 + * + * @author ics + * @date 2024-09-18 + */ +@Service +public class MeetingWaiterServiceImpl implements IMeetingWaiterService { + + @Autowired + private MeetingWaiterMapper meetingWaiterMapper; + + + @Override + public List selectMeetingWaiterList(Long rid) { + return meetingWaiterMapper.selectMeetingWaiterList(rid); + } + + @Transactional(rollbackFor = Exception.class) + @Override + public int saveOrUpdateMeetingWaiter(Long currentUserID, Long rid, String voiceWaiter, String serveWaiter) { + List list=new ArrayList<>(); + Date now=new Date(); + if (StringUtils.isNotBlank(voiceWaiter)) { + String[] voices = voiceWaiter.split(","); + for (int i = 0; i < voices.length; i++) { + list.add(new MeetingWaiter(rid, "1", Long.valueOf(voices[i]), now, currentUserID)); + } + } + if(StringUtils.isNotBlank(serveWaiter)){ + String[] serves = serveWaiter.split(","); + for (int i = 0; i < serves.length; i++) { + list.add(new MeetingWaiter(rid, "3", Long.valueOf(serves[i]), now, currentUserID)); + } + } + meetingWaiterMapper.deleteByRid(rid); + return meetingWaiterMapper.batchInsert(list); + } +} diff --git a/shoot-hand/ics-admin/src/main/java/com/ics/admin/utils/MeetingRemindContent.java b/shoot-hand/ics-admin/src/main/java/com/ics/admin/utils/MeetingRemindContent.java new file mode 100644 index 0000000..47af99f --- /dev/null +++ b/shoot-hand/ics-admin/src/main/java/com/ics/admin/utils/MeetingRemindContent.java @@ -0,0 +1,27 @@ +package com.ics.admin.utils; + +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.context.annotation.PropertySource; +import org.springframework.stereotype.Component; + +/** + * created at 2024-9-21 16:21 + * + * @author lujiang + * @version 1.0.0 + * @since 1.0.0 + */ +@Component +@PropertySource(value = {"classpath:repairRemind.properties"}, encoding = "UTF-8") +@ConfigurationProperties(prefix = "mr.remind") +@Data +public class MeetingRemindContent { + private String cu1; + private String cu2; + private String cu3; + private String cu4; + private String mu1; + private String mu2; + private String su1; +} diff --git a/shoot-hand/ics-admin/src/main/java/com/ics/admin/utils/MeetingReservationDTO.java b/shoot-hand/ics-admin/src/main/java/com/ics/admin/utils/MeetingReservationDTO.java new file mode 100644 index 0000000..f2aaa99 --- /dev/null +++ b/shoot-hand/ics-admin/src/main/java/com/ics/admin/utils/MeetingReservationDTO.java @@ -0,0 +1,30 @@ +package com.ics.admin.utils; + +import com.ics.admin.domain.MeetingServe; +import com.ics.admin.vo.MeetingReservationVo; +import lombok.Data; + +import java.io.Serializable; + +/** + * created at 2024-9-20 14:16 + * + * @author lujiang + * @version 1.0.0 + * @since 1.0.0 + */ +@Data +public class MeetingReservationDTO implements Serializable { + private static final long serialVersionUID = -202409201417L; + //预约表单内容 + private MeetingReservationVo mr; + //预约时所选择的服务 + private MeetingServe[] serve; + //预约id + private Long id; + //预约操作 + private MrOperate operate; + //驳回、取消 原因 + private String content; + +} diff --git a/shoot-hand/ics-admin/src/main/java/com/ics/admin/utils/MrOperate.java b/shoot-hand/ics-admin/src/main/java/com/ics/admin/utils/MrOperate.java new file mode 100644 index 0000000..f11f1c3 --- /dev/null +++ b/shoot-hand/ics-admin/src/main/java/com/ics/admin/utils/MrOperate.java @@ -0,0 +1,30 @@ +package com.ics.admin.utils; + +import com.baomidou.mybatisplus.annotation.IEnum; + +/** + * 会议室预约记录操作状态 + */ +public enum MrOperate implements IEnum { + + CANCEL("取消", 1), + REJECTED("驳回", 3), + PASS("审核通过", 7); + + private String value; + + private int status; + + MrOperate(String value, int status) { + this.value = value; + this.status = status; + } + + public String getValue() { + return value; + } + + public int getStatus() { + return status; + } +} diff --git a/shoot-hand/ics-admin/src/main/java/com/ics/admin/vo/MeetingRecordVo.java b/shoot-hand/ics-admin/src/main/java/com/ics/admin/vo/MeetingRecordVo.java new file mode 100644 index 0000000..d507b13 --- /dev/null +++ b/shoot-hand/ics-admin/src/main/java/com/ics/admin/vo/MeetingRecordVo.java @@ -0,0 +1,167 @@ +package com.ics.admin.vo; + +import com.alibaba.fastjson.JSONArray; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.annotation.JsonRawValue; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + +/** + * created at 2024-9-22 16:34 + * + * @author lujiang + * @version 1.0.0 + * @since 1.0.0 + */ +@Data +public class MeetingRecordVo implements Serializable { + private static final long serialVersionUID = -202409221634L; + /**1.普通用户, 3.会议服务人员 ,5.会议管理员*/ + private Integer role; + /** 后台传入当前用户 */ + private Long userId; + /** + * 日期查询;格式 2024-09-22 + */ + private String filterDate; + + private Long id; + + /** 预约号 */ + private String sn; + + /** 会议室id */ + private Long roomId; + + /** 预约-开始时间 */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date start; + + /** 预约-结束时间 */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date end; + + /** 预约时间格式:0 任意时间,1上午,2下午,3晚上 4 全天*/ + private Integer timeFormat; + + /** 会议名称 */ + private String title; + + /** 参与人数 */ + private Long personNum; + + /** 参会领导 */ + private String leader; + + /** 预约人姓名 */ + private String bookingUserName; + + /** 预约人联系电话 */ + private String bookingUserPhone; + + /** 预约用户单位id */ + private Long userOrgId; + + /** 预约用户单位名称 */ + private String userOrg; + + /** 预约状态,1 取消 3 驳回 4 占用 5 待审核 7 审核通过,待开始 9 进行中 11已结束 */ + private Integer status; + + /** 操作记录,json 格式 */ + @JsonRawValue + private String operate; + + /** 备注 */ + private String remark; + + /** 扩展1 */ + private String ext1; + + /** 扩展2 */ + private String ext2; + + /** 扩展3 */ + private String ext3; + + /** + * 所属楼层值 + */ + private String floorId; + + /** + * 所属楼层名称 + */ + private String floor; + + /** + * 会议室名称 + */ + private String name; + + /** + * 会议室形式值 + */ + private String typeId; + + /** + * 会议室形式 + */ + private String typeName; + + /** + * 设备 格式: #设备1 #设备2 #设备3 + */ + private String device; + + /** + * 房间号 + */ + private String roomNum; + + /** + * 会议室面积 + */ + private String area; + + /** + * 容纳人数 + */ + private Long capacityNum; + + /** + * 会议描述 + */ + private String content; + + /** + * 是否启用 0 启用 1禁用 + */ + private Integer enable; + + /** + * 扩展1 + */ + private String roomExt1; + + /** + * 扩展2 + */ + private String roomExt2; + + /** + * 扩展3 + */ + private String roomExt3; + + /** + * 备注 + */ + private String roomRemark; + + + private JSONArray imgs; + +} diff --git a/shoot-hand/ics-admin/src/main/java/com/ics/admin/vo/MeetingReservationVo.java b/shoot-hand/ics-admin/src/main/java/com/ics/admin/vo/MeetingReservationVo.java new file mode 100644 index 0000000..d9a4557 --- /dev/null +++ b/shoot-hand/ics-admin/src/main/java/com/ics/admin/vo/MeetingReservationVo.java @@ -0,0 +1,83 @@ +package com.ics.admin.vo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + +/** + * created at 2024-9-20 15:23 + * + * @author lujiang + * @version 1.0.0 + * @since 1.0.0 + */ +@Data +public class MeetingReservationVo implements Serializable { + + private static final long serialVersionUID = -202409201524L; + + private Long id; + + /** 预约号 */ + private String sn; + + /** 会议室id */ + private Long roomId; + + /** 预约-开始时间 */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date start; + + /** 预约-结束时间 */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date end; + + /** + * 预约日期 + */ + private String mrdate; + + /** 预约时间格式:0 任意时间,1上午,2下午,3晚上 4 全天*/ + private Integer timeFormat; + + /** 会议名称 */ + private String title; + + /** 参与人数 */ + private Long personNum; + + /** 参会领导 */ + private String leader; + + /** 预约人姓名 */ + private String bookingUserName; + + /** 预约人联系电话 */ + private String bookingUserPhone; + + /** 预约用户单位id */ + private Long userOrgId; + + /** 预约用户单位名称 */ + private String userOrg; + + /** 预约状态,1 取消 3 驳回 4 占用 5 待审核 7 审核通过,待开始 9 进行中 11已结束 */ + private Integer status; + + /** 操作记录,json 格式 */ + private String operate; + + /** 备注 */ + private String remark; + + /** 扩展1 */ + private String ext1; + + /** 扩展2 */ + private String ext2; + + /** 扩展3 */ + private String ext3; +} diff --git a/shoot-hand/ics-admin/src/main/java/com/ics/admin/vo/MeetingRoomVo.java b/shoot-hand/ics-admin/src/main/java/com/ics/admin/vo/MeetingRoomVo.java new file mode 100644 index 0000000..88d6d5f --- /dev/null +++ b/shoot-hand/ics-admin/src/main/java/com/ics/admin/vo/MeetingRoomVo.java @@ -0,0 +1,99 @@ +package com.ics.admin.vo; + +import com.alibaba.fastjson.JSONArray; +import lombok.Data; + +import java.io.Serializable; + +/** + * 会议室对象 + * + * @author ics + * @date 2024-09-18 + */ +@Data +public class MeetingRoomVo implements Serializable { + private static final long serialVersionUID = 202409201024L; + + private Long id; + /** + * 所属楼层值 + */ + private String floorId; + + /** + * 所属楼层名称 + */ + private String floor; + + /** + * 名称 + */ + private String name; + + /** + * 会议室形式值 + */ + private String typeId; + + /** + * 会议室形式 + */ + private String typeName; + + /** + * 设备 格式: #设备1 #设备2 #设备3 + */ + private String device; + + /** + * 房间号 + */ + private String roomNum; + + /** + * 会议室面积 + */ + private String area; + + /** + * 容纳人数 + */ + private Long capacityNum; + + /** + * 会议描述 + */ + private String content; + + /** + * 是否启用 0 启用 1禁用 + */ + private Integer enable; + + /** 会议室状态 0可预约 1不可预约 */ + private Integer status; + + /** + * 扩展1 + */ + private String ext1; + + /** + * 扩展2 + */ + private String ext2; + + /** + * 扩展3 + */ + private String ext3; + + /** + * 备注 + */ + private String remark; + + + private JSONArray imgs; +} \ No newline at end of file diff --git a/shoot-hand/ics-admin/src/main/java/com/ics/admin/vo/MeetingServeVo.java b/shoot-hand/ics-admin/src/main/java/com/ics/admin/vo/MeetingServeVo.java new file mode 100644 index 0000000..34efc43 --- /dev/null +++ b/shoot-hand/ics-admin/src/main/java/com/ics/admin/vo/MeetingServeVo.java @@ -0,0 +1,39 @@ +package com.ics.admin.vo; + +import lombok.Data; + +import java.io.Serializable; + +/** + * created at 2024-9-19 9:30 + * + * @author lujiang + * @version 1.0.0 + * @since 1.0.0 + */ +@Data +public class MeetingServeVo implements Serializable { + private static final long serialVersionUID = -202409300931L; + + private Long id; + + /** + * 会议预约id + */ + private Long rid; + + /** + * 服务名称 + */ + private String name; + + /** + * 服务对应值 + */ + private String value; + + /** + * 服务备注 + */ + private String remark; +} diff --git a/shoot-hand/ics-admin/src/main/java/com/ics/admin/vo/MeetingWaiterVo.java b/shoot-hand/ics-admin/src/main/java/com/ics/admin/vo/MeetingWaiterVo.java new file mode 100644 index 0000000..8c15af4 --- /dev/null +++ b/shoot-hand/ics-admin/src/main/java/com/ics/admin/vo/MeetingWaiterVo.java @@ -0,0 +1,37 @@ +package com.ics.admin.vo; + +import lombok.Data; + +import java.io.Serializable; + +/** + * created at 2024-9-18 16:31 + * + * @author lujiang + * @version 1.0.0 + * @since 1.0.0 + */ +@Data +public class MeetingWaiterVo implements Serializable { + private static final long serialVersionUID = -202409181632L; + + private Long id; + + private Long rid; + + /** 会务人员类型(1 音控组 3会议服务组) */ + private String type; + + /** 会务人员id */ + private Long userId; + + /** + * 会务人员姓名 + */ + private String username; + + /** + * 会务人员电话 + */ + private String phone; +} diff --git a/shoot-hand/ics-admin/src/main/resources/mapper/admin/IcsCustomerStaffMapper.xml b/shoot-hand/ics-admin/src/main/resources/mapper/admin/IcsCustomerStaffMapper.xml index 08fceda..639e1c2 100644 --- a/shoot-hand/ics-admin/src/main/resources/mapper/admin/IcsCustomerStaffMapper.xml +++ b/shoot-hand/ics-admin/src/main/resources/mapper/admin/IcsCustomerStaffMapper.xml @@ -22,6 +22,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + @@ -39,7 +41,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - SELECT id, username, mobile, create_by, create_time, update_by,name,photo,address,email,degree,urgent, update_time, delete_flag, ics_customer_id, openid, gzh_openid, avatar, gender, status, park_id,card_no, visit_time, + SELECT id, username, mobile, create_by, create_time, update_by,name,photo,address,email,degree,urgent, update_time, delete_flag, ics_customer_id, openid, gzh_openid, room_role, room_role_type, avatar, gender, status, park_id,card_no, visit_time, leave_time,visit_content,to_name,to_phone,to_customer,to_customer_id,data_type,park_id,tenant_id FROM ics_customer_staff @@ -59,6 +61,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" AND icc.park_id = #{parkId} AND cs.tenant_id = #{tenantId} AND cs.data_type = #{dataType} + AND cs.room_role = #{roomRole} + AND cs.room_role_type = #{roomRoleType} @@ -88,6 +92,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ics_customer_id, openid, gzh_openid, + room_role, + room_role_type, avatar, gender, status, @@ -121,6 +127,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" #{icsCustomerId}, #{openid}, #{gzhOpenid}, + #{roomRole}, + #{roomRoleType}, #{avatar}, #{gender}, #{status}, @@ -157,6 +165,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ics_customer_id = #{icsCustomerId}, openid = #{openid}, gzh_openid=#{gzhOpenid}, + room_role = #{roomRole}, + room_role_type = #{roomRoleType}, avatar = #{avatar}, gender = #{gender}, status = #{status}, diff --git a/shoot-hand/ics-admin/src/main/resources/mapper/admin/MeetingReservationMapper.xml b/shoot-hand/ics-admin/src/main/resources/mapper/admin/MeetingReservationMapper.xml new file mode 100644 index 0000000..03e2461 --- /dev/null +++ b/shoot-hand/ics-admin/src/main/resources/mapper/admin/MeetingReservationMapper.xml @@ -0,0 +1,200 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + SELECT id, sn, room_id, start, `end`, time_format, title, person_num, leader, booking_user_name, booking_user_phone, user_org_id, user_org, status, operate, remark, ext1, ext2, ext3, delete_flag, create_by, create_time, update_by, update_time, tenant_id, park_id FROM ics_meeting_reservation + + + + + + + + + + + + + + + + + + + + + + INSERT INTO ics_meeting_reservation + + sn, + room_id, + start, + end, + time_format, + title, + person_num, + leader, + booking_user_name, + booking_user_phone, + user_org_id, + user_org, + status, + operate, + remark, + ext1, + ext2, + ext3, + delete_flag, + create_by, + create_time, + tenant_id, + park_id, + + + #{sn}, + #{roomId}, + #{start}, + #{end}, + #{timeFormat}, + #{title}, + #{personNum}, + #{leader}, + #{bookingUserName}, + #{bookingUserPhone}, + #{userOrgId}, + #{userOrg}, + #{status}, + #{operate}, + #{remark}, + #{ext1}, + #{ext2}, + #{ext3}, + #{deleteFlag}, + #{createBy}, + #{createTime}, + #{tenantId}, + #{parkId}, + + + + + UPDATE ics_meeting_reservation + + sn = #{sn}, + room_id = #{roomId}, + start = #{start}, + end = #{end}, + time_format = #{timeFormat}, + title = #{title}, + person_num = #{personNum}, + leader = #{leader}, + booking_user_name = #{bookingUserName}, + booking_user_phone = #{bookingUserPhone}, + user_org_id = #{userOrgId}, + user_org = #{userOrg}, + status = #{status}, + operate = #{operate}, + remark = #{remark}, + ext1 = #{ext1}, + ext2 = #{ext2}, + ext3 = #{ext3}, + delete_flag = #{deleteFlag}, + update_by = #{updateBy}, + update_time = #{updateTime}, + tenant_id = #{tenantId}, + park_id = #{parkId}, + + WHERE id = #{id} + + + + DELETE FROM ics_meeting_reservation WHERE id = #{id} + + + + DELETE FROM ics_meeting_reservation where id in + + #{id} + + + + \ No newline at end of file diff --git a/shoot-hand/ics-admin/src/main/resources/mapper/admin/MeetingRoomMapper.xml b/shoot-hand/ics-admin/src/main/resources/mapper/admin/MeetingRoomMapper.xml new file mode 100644 index 0000000..80ae815 --- /dev/null +++ b/shoot-hand/ics-admin/src/main/resources/mapper/admin/MeetingRoomMapper.xml @@ -0,0 +1,146 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + SELECT id, floor_id, floor, name, type_id, type_name, device, room_num, area, capacity_num, content, enable, ext1, ext2, ext3, remark, delete_flag, create_by, create_time, update_by, update_time, tenant_id, park_id FROM ics_meeting_room + + + + + + + + + + + INSERT INTO ics_meeting_room + + floor_id, + floor, + name, + type_id, + type_name, + device, + room_num, + area, + capacity_num, + content, + enable, + ext1, + ext2, + ext3, + remark, + delete_flag, + create_by, + create_time, + tenant_id, + park_id, + + + #{floorId}, + #{floor}, + #{name}, + #{typeId}, + #{typeName}, + #{device}, + #{roomNum}, + #{area}, + #{capacityNum}, + #{content}, + #{enable}, + #{ext1}, + #{ext2}, + #{ext3}, + #{remark}, + #{deleteFlag}, + #{createBy}, + #{createTime}, + #{tenantId}, + #{parkId}, + + + + + UPDATE ics_meeting_room + + floor_id = #{floorId}, + floor = #{floor}, + name = #{name}, + type_id = #{typeId}, + type_name = #{typeName}, + device = #{device}, + room_num = #{roomNum}, + area = #{area}, + capacity_num = #{capacityNum}, + content = #{content}, + enable = #{enable}, + ext1 = #{ext1}, + ext2 = #{ext2}, + ext3 = #{ext3}, + remark = #{remark}, + delete_flag = #{deleteFlag}, + update_by = #{updateBy}, + update_time = #{updateTime}, + tenant_id = #{tenantId}, + park_id = #{parkId}, + + WHERE id = #{id} + + + + DELETE FROM ics_meeting_room WHERE id = #{id} + + + + DELETE FROM ics_meeting_room where id in + + #{id} + + + + \ No newline at end of file diff --git a/shoot-hand/ics-admin/src/main/resources/mapper/admin/MeetingServeMapper.xml b/shoot-hand/ics-admin/src/main/resources/mapper/admin/MeetingServeMapper.xml new file mode 100644 index 0000000..0a4ee71 --- /dev/null +++ b/shoot-hand/ics-admin/src/main/resources/mapper/admin/MeetingServeMapper.xml @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + INSERT INTO ics_meeting_serve(rid, name, value, remark, delete_flag, create_by, create_time) + VALUES + + (#{item.rid}, #{item.name},#{item.value},#{item.remark},#{item.deleteFlag},#{item.createBy},#{item.createTime}) + + + + + + + + + DELETE FROM ics_meeting_serve WHERE rid = #{rid} + + + \ No newline at end of file diff --git a/shoot-hand/ics-admin/src/main/resources/mapper/admin/MeetingUtoMapper.xml b/shoot-hand/ics-admin/src/main/resources/mapper/admin/MeetingUtoMapper.xml new file mode 100644 index 0000000..862b26c --- /dev/null +++ b/shoot-hand/ics-admin/src/main/resources/mapper/admin/MeetingUtoMapper.xml @@ -0,0 +1,128 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + SELECT id, org_id, org_name, user_name, login_name, password, remark, ext1, ext2, ext3, delete_flag, create_by, create_time, update_by, update_time, tenant_id, park_id FROM ics_meeting_uto + + + + + + + + + + + + + INSERT INTO ics_meeting_uto + + org_id, + org_name, + user_name, + login_name, + password, + remark, + ext1, + ext2, + ext3, + delete_flag, + create_by, + create_time, + tenant_id, + park_id, + + + #{orgId}, + #{orgName}, + #{userName}, + #{loginName}, + #{password}, + #{remark}, + #{ext1}, + #{ext2}, + #{ext3}, + #{deleteFlag}, + #{createBy}, + #{createTime}, + #{tenantId}, + #{parkId}, + + + + + UPDATE ics_meeting_uto + + org_id = #{orgId}, + org_name = #{orgName}, + user_name = #{userName}, + login_name = #{loginName}, + password = #{password}, + remark = #{remark}, + ext1 = #{ext1}, + ext2 = #{ext2}, + ext3 = #{ext3}, + delete_flag = #{deleteFlag}, + update_by = #{updateBy}, + update_time = #{updateTime}, + tenant_id = #{tenantId}, + park_id = #{parkId}, + + WHERE id = #{id} + + + + DELETE FROM ics_meeting_uto WHERE id = #{id} + + + + DELETE FROM ics_meeting_uto where id in + + #{id} + + + + \ No newline at end of file diff --git a/shoot-hand/ics-admin/src/main/resources/mapper/admin/MeetingWaiterMapper.xml b/shoot-hand/ics-admin/src/main/resources/mapper/admin/MeetingWaiterMapper.xml new file mode 100644 index 0000000..7b74a1f --- /dev/null +++ b/shoot-hand/ics-admin/src/main/resources/mapper/admin/MeetingWaiterMapper.xml @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + + INSERT INTO ics_meeting_waiter(rid, type, user_id, delete_flag, create_by, create_time) + VALUES + + (#{item.rid}, #{item.type},#{item.userId},#{item.deleteFlag},#{item.createBy},#{item.createTime}) + + + + + + + + + DELETE FROM ics_meeting_waiter WHERE rid = #{rid} + + + \ No newline at end of file diff --git a/shoot-hand/ics-admin/src/main/resources/mapper/admin/RepairRemindMapper.xml b/shoot-hand/ics-admin/src/main/resources/mapper/admin/RepairRemindMapper.xml index 9b03d91..3d5cc4c 100644 --- a/shoot-hand/ics-admin/src/main/resources/mapper/admin/RepairRemindMapper.xml +++ b/shoot-hand/ics-admin/src/main/resources/mapper/admin/RepairRemindMapper.xml @@ -129,6 +129,12 @@ + + + +