From 19c43417c04580d4025a6ebeb9f09d56e3cf6c4b Mon Sep 17 00:00:00 2001 From: lujiang Date: Tue, 24 Sep 2024 22:01:00 +0800 Subject: [PATCH 01/11] =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E8=AF=B7=E6=B1=82?= =?UTF-8?q?=E6=96=B9=E5=BC=8F=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../MeetingReservationController.java | 24 ++++++++++++------- 1 file changed, 15 insertions(+), 9 deletions(-) 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 index 506c391..d9c9791 100644 --- 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 @@ -89,6 +89,12 @@ public class MeetingReservationController extends BaseController { * mrdate:预约日期,格式:2024-09-23 * timeFormat:预约时间格式:0 任意时间(管理员),1上午,2下午,3晚上 4 全天。 * 值为0时,读取startTime和endTime为预约会议时间范围;其他值读取mrdate,再拼接时间为预约会议时间范围。 + * + * * floor 所属楼层名称,精确查询 + * * name 会议室名称,模糊查询 + * * typeName 会议室形式,精确查询 + * * device 会议室设备,模糊查询 + * * capacityNum 容纳人数,精确查询 */ @RequiresPermissions(value = {"mr:manage:operator", "member:center:view"}, logical = Logical.OR) @PostMapping("getAllRoom") @@ -124,7 +130,7 @@ public class MeetingReservationController extends BaseController { * 无参,返回所有部门id及名称,已去重。 * */ @RequiresPermissions(value = {"mr:manage:operator", "member:center:view"}, logical = Logical.OR) - @PostMapping("getOrg") + @RequestMapping("getOrg") public R getOrg() { return R.ok().put("data", meetingUtoService.getOrg()); } @@ -139,7 +145,7 @@ public class MeetingReservationController extends BaseController { * personNum 会议室容纳人数,已去重。 */ @RequiresPermissions(value = {"mr:manage:operator", "member:center:view"}, logical = Logical.OR) - @PostMapping("getConstData") + @RequestMapping("getConstData") public R getConstData() { JSONObject jsonObject = meetingReservationService.getConstData(); return R.ok().put("data", jsonObject); @@ -176,10 +182,10 @@ public class MeetingReservationController extends BaseController { /* 预定时间的转换 */ 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 全天 + if (timeFormat == 1) time = start ? " 08:00:00" : " 12:00:00";//1 上午 + if (timeFormat == 2) time = start ? " 12:00:01" : " 18:00:00";//2 下午 + if (timeFormat == 3) time = start ? " 18:00:01" : " 23:59:59";//3 晚上 + if (timeFormat == 4) time = start ? " 08:00:00" : " 23:59:59";//4 全天 try { return DateUtils.dateTime(DateUtils.YYYY_MM_DD_HH_MM_SS, date + time); } catch (Exception e) { @@ -285,7 +291,7 @@ public class MeetingReservationController extends BaseController { * serveWaiter:会务服务组 */ @RequiresPermissions(value = {"mr:manage:operator", "member:center:view"}, logical = Logical.OR) - @PostMapping("getWaiter") + @RequestMapping("getWaiter") public R getWaiter() { IcsCustomerStaff p = new IcsCustomerStaff(); p.setRoomRole(3); @@ -333,7 +339,7 @@ public class MeetingReservationController extends BaseController { * 参数:id,预约记录id。物理删除(包括所有关联数据),不可恢复 */ @RequiresPermissions(value = {"mr:manage:operator", "member:center:view"}, logical = Logical.OR) - @RequestMapping("delete") + @PostMapping("delete") public R delete(@RequestBody Map param) { Long id = param.get("id"); return toAjax(meetingReservationService.deleteMeetingReservationById(id)); @@ -350,7 +356,7 @@ public class MeetingReservationController extends BaseController { * waiters,分配的会务人员 */ @RequiresPermissions(value = {"mr:manage:operator", "member:center:view"}, logical = Logical.OR) - @RequestMapping("getInfo") + @PostMapping("getInfo") public R get(@RequestBody Map param) { Long id = param.get("id"); MeetingReservation meetingReservation = meetingReservationService.selectMeetingReservationById(id); From d76ad5e7ac9d8d0788fd959081c1d19e7875938d Mon Sep 17 00:00:00 2001 From: lujiang Date: Wed, 25 Sep 2024 10:26:59 +0800 Subject: [PATCH 02/11] =?UTF-8?q?=E5=8F=82=E6=95=B0=E8=B0=83=E6=95=B4?= =?UTF-8?q?=EF=BC=8C=E6=9F=A5=E8=AF=A2=E6=9D=A1=E4=BB=B6=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../MeetingReservationController.java | 2 +- .../controller/MeetingRoomController.java | 23 +++++++++++-------- .../controller/MeetingUtoController.java | 5 ++-- .../com/ics/admin/utils/MeetingRoomDTO.java | 23 +++++++++++++++++++ .../java/com/ics/admin/vo/MeetingRoomVo.java | 3 +++ .../mapper/admin/MeetingReservationMapper.xml | 7 +++--- 6 files changed, 48 insertions(+), 15 deletions(-) create mode 100644 shoot-hand/ics-admin/src/main/java/com/ics/admin/utils/MeetingRoomDTO.java 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 index d9c9791..9173b1b 100644 --- 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 @@ -93,7 +93,7 @@ public class MeetingReservationController extends BaseController { * * floor 所属楼层名称,精确查询 * * name 会议室名称,模糊查询 * * typeName 会议室形式,精确查询 - * * device 会议室设备,模糊查询 + * * devices 多个会议室设备,模糊查询,逻辑与关系 * * capacityNum 容纳人数,精确查询 */ @RequiresPermissions(value = {"mr:manage:operator", "member:center:view"}, logical = Logical.OR) 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 index 6e25c0b..3d2df57 100644 --- 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 @@ -4,6 +4,7 @@ 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.utils.MeetingRoomDTO; import com.ics.admin.vo.MeetingRoomVo; import com.ics.common.core.controller.BaseController; import com.ics.common.core.domain.R; @@ -13,6 +14,7 @@ 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.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; @@ -108,26 +110,29 @@ public class MeetingRoomController extends BaseController { /** * 新增会议室 - * @param files 附件id + * files 附件id */ @RequiresPermissions("admin:room:add") @PostMapping("save") - public R addSave(MeetingRoom meetingRoom, String[] files) { + public R addSave(@RequestBody MeetingRoomDTO meetingRoomDTO) { Long userId = getLoginStaffId(); - meetingRoom.setDeleteFlag(0); - meetingRoom.setCreateBy(userId.toString()); - meetingRoom.setCreateTime(new Date()); - return toAjax(meetingRoomService.insertMeetingRoom(meetingRoom,files)); + meetingRoomDTO.getRoom().setDeleteFlag(0); + meetingRoomDTO.getRoom().setCreateBy(userId.toString()); + meetingRoomDTO.getRoom().setCreateTime(new Date()); + return toAjax(meetingRoomService.insertMeetingRoom(meetingRoomDTO.getRoom(), meetingRoomDTO.getFiles())); } /** * 修改会议室 - * @param files 附件id + * files 附件id */ @RequiresPermissions("admin:room:edit") @PostMapping("update") - public R editSave(MeetingRoom meetingRoom, String[] files) { - return toAjax(meetingRoomService.updateMeetingRoom(meetingRoom, files)); + public R editSave(@RequestBody MeetingRoomDTO meetingRoomDTO) { + Long userId = getLoginStaffId(); + meetingRoomDTO.getRoom().setUpdateBy(userId.toString()); + meetingRoomDTO.getRoom().setUpdateTime(new Date()); + return toAjax(meetingRoomService.updateMeetingRoom(meetingRoomDTO.getRoom(), meetingRoomDTO.getFiles())); } /** 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 index e373733..f62aa65 100644 --- 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 @@ -6,6 +6,7 @@ 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.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import org.wf.jwtp.annotation.RequiresPermissions; @@ -55,7 +56,7 @@ public class MeetingUtoController extends BaseController { */ @RequiresPermissions(value = {"mr:manage:operator"}) @PostMapping("save") - public R addSave(MeetingUto meetingUto) { + public R addSave(@RequestBody MeetingUto meetingUto) { Long userId = getLoginStaffId(); meetingUto.setDeleteFlag(0); meetingUto.setCreateBy(userId.toString()); @@ -75,7 +76,7 @@ public class MeetingUtoController extends BaseController { */ @RequiresPermissions(value = {"mr:manage:operator"}) @PostMapping("update") - public R editSave(MeetingUto meetingUto) { + public R editSave(@RequestBody MeetingUto meetingUto) { Long userId = getLoginStaffId(); meetingUto.setUpdateBy(userId.toString()); meetingUto.setUpdateTime(new Date()); diff --git a/shoot-hand/ics-admin/src/main/java/com/ics/admin/utils/MeetingRoomDTO.java b/shoot-hand/ics-admin/src/main/java/com/ics/admin/utils/MeetingRoomDTO.java new file mode 100644 index 0000000..610666c --- /dev/null +++ b/shoot-hand/ics-admin/src/main/java/com/ics/admin/utils/MeetingRoomDTO.java @@ -0,0 +1,23 @@ +package com.ics.admin.utils; + +import com.ics.admin.domain.MeetingRoom; +import lombok.Data; + +import java.io.Serializable; + +/** + * created at 2024-9-25 9:21 + * + * @author lujiang + * @version 1.0.0 + * @since 1.0.0 + */ +@Data +public class MeetingRoomDTO implements Serializable { + + private static final long serialVersionUID = -202409220922L; + + private MeetingRoom room; + + private String[] files; +} 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 index 18a098c..f61e9bf 100644 --- 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 @@ -66,6 +66,9 @@ public class MeetingRoomVo implements Serializable { */ private String device; + @JsonProperty(access = JsonProperty.Access.WRITE_ONLY) + private String[] devices; + /** * 房间号 */ 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 index 43bf9e1..6a78f69 100644 --- a/shoot-hand/ics-admin/src/main/resources/mapper/admin/MeetingReservationMapper.xml +++ b/shoot-hand/ics-admin/src/main/resources/mapper/admin/MeetingReservationMapper.xml @@ -53,7 +53,9 @@ AND room.floor = #{floor} AND room.name LIKE CONCAT('%', #{name}, '%') AND room.type_name = #{typeName} - AND room.device LIKE CONCAT('%', #{device}, '%') + + AND device LIKE CONCAT('%', #{dev}, '%') + AND room.capacity_num = #{capacityNum} order by room_num @@ -88,11 +90,10 @@ AND floor = #{floor} AND name LIKE CONCAT('%', #{name}, '%') AND type_name = #{typeName} - AND device LIKE CONCAT('%', #{device}, '%') + AND room.device LIKE CONCAT('%', #{device}, '%') AND capacity_num = #{capacityNum} AND status = #{status} AND start LIKE CONCAT(#{filterDate}, '%') - order by start desc,status From 18d769dede171b7e801f6cc4e742f5aa138f552a Mon Sep 17 00:00:00 2001 From: lujiang Date: Thu, 26 Sep 2024 22:06:22 +0800 Subject: [PATCH 03/11] =?UTF-8?q?=E4=BC=9A=E8=AE=AE=E5=AE=A4=E5=8D=A0?= =?UTF-8?q?=E7=94=A8=E9=80=BB=E8=BE=91=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../MeetingReservationController.java | 18 ++++++------- .../impl/MeetingReservationServiceImpl.java | 14 ++++++++-- .../impl/RepairRemindPushServiceImpl.java | 26 ++++++++++++++----- .../src/main/resources/application-dev.yml | 3 ++- .../src/main/resources/application-prod.yml | 3 ++- .../src/main/resources/application-server.yml | 3 ++- 6 files changed, 46 insertions(+), 21 deletions(-) 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 index 9173b1b..91a83cd 100644 --- 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 @@ -162,12 +162,12 @@ public class MeetingReservationController extends BaseController { public R booking(@RequestBody MeetingReservationDTO meetingReservationDTO) { MeetingReservation meetingReservation = new MeetingReservation(); BeanUtils.copyBeanProp(meetingReservation, meetingReservationDTO.getMr()); - if (meetingReservation.getTimeFormat() > 0) {//非任意时间 + 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); + meetingReservation.getParams().put("startTime",start); + meetingReservation.getParams().put("endTime",end);//根据上、下午、晚上,确定具体时间 } if (meetingReservation.getEnd().getTime() <= meetingReservation.getStart().getTime()) return R.error("预约时间无效"); Long userId = getLoginStaffId(); @@ -182,10 +182,10 @@ public class MeetingReservationController extends BaseController { /* 预定时间的转换 */ private Date convert(String date, Integer timeFormat, boolean start) { String time = ""; - if (timeFormat == 1) time = start ? " 08:00:00" : " 12:00:00";//1 上午 - if (timeFormat == 2) time = start ? " 12:00:01" : " 18:00:00";//2 下午 - if (timeFormat == 3) time = start ? " 18:00:01" : " 23:59:59";//3 晚上 - if (timeFormat == 4) time = start ? " 08:00:00" : " 23:59:59";//4 全天 + 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) { @@ -232,8 +232,8 @@ public class MeetingReservationController extends BaseController { 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); + meetingReservation.getParams().put("startTime",start); + meetingReservation.getParams().put("endTime",end);//根据上、下午、晚上,确定具体时间 } if (meetingReservation.getStart() == null || meetingReservation.getEnd() == null) return R.error("预约时间解析错误");//防止用户端置空预约记录时间 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 index e94bc21..69f960d 100644 --- 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 @@ -130,7 +130,12 @@ public class MeetingReservationServiceImpl implements IMeetingReservationService @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()); + List ids = meetingReservationMapper.checkBooking( + meetingReservation.getRoomId(), + null, + meetingReservation.getTimeFormat() > 0 ? (Date) meetingReservation.getParams().get("startTime") : meetingReservation.getStart(), + meetingReservation.getTimeFormat() > 0 ? (Date) meetingReservation.getParams().get("endTime") : meetingReservation.getEnd() + ); if (ids.size() > 0) return "会议室已被占用,预约失败"; Date now = new Date(); meetingReservation.setSn(snService.generate(Sn.Type.REPAIR)); @@ -240,7 +245,12 @@ public class MeetingReservationServiceImpl implements IMeetingReservationService rList = processRemind(meetingReservation, currentUserId, null, 0, null, null); //提醒--end } - List ids = meetingReservationMapper.checkBooking(meetingReservation.getRoomId(), meetingReservation.getId(), meetingReservation.getStart(), meetingReservation.getEnd()); + List ids = meetingReservationMapper.checkBooking( + meetingReservation.getRoomId(), + meetingReservation.getId(), + meetingReservation.getTimeFormat() > 0 ? (Date) meetingReservation.getParams().get("startTime") : meetingReservation.getStart(), + meetingReservation.getTimeFormat() > 0 ? (Date) meetingReservation.getParams().get("endTime") : meetingReservation.getEnd() + ); if (ids.size() > 0) return "会议室已被占用,预约失败"; Date now = new Date(); meetingReservation.setUpdateTime(now); diff --git a/shoot-hand/ics-web/src/main/java/com/ics/service/impl/RepairRemindPushServiceImpl.java b/shoot-hand/ics-web/src/main/java/com/ics/service/impl/RepairRemindPushServiceImpl.java index 6145d97..ceb2745 100644 --- a/shoot-hand/ics-web/src/main/java/com/ics/service/impl/RepairRemindPushServiceImpl.java +++ b/shoot-hand/ics-web/src/main/java/com/ics/service/impl/RepairRemindPushServiceImpl.java @@ -46,8 +46,12 @@ public class RepairRemindPushServiceImpl implements RepairRemindPushService { @Autowired private RedisTemplate redisTemplate; - @Value("${webchatGZH.templateId}") - private String templateId; + @Value("${webchatGZH.templateRP}") + private String templateRP; + + + @Value("${webchatGZH.templateMR}") + private String templateMR; @Value("${webchatGZH.appid}") private String appid; @@ -95,23 +99,31 @@ public class RepairRemindPushServiceImpl implements RepairRemindPushService { Map param = new HashMap<>(); param.put("touser", openid); - param.put("template_id", templateId); - param.put("touser", openid); + if (repairRemind.getTypeId() == 0) param.put("template_id", templateRP);//工单模板 + if (repairRemind.getTypeId() == 1) param.put("template_id", templateMR);//会议预约模板 JSONObject miniprogram = new JSONObject(); miniprogram.put("appid", WX_SMALL_APP_ID); miniprogram.put("pagepath", WX_SMALL_APP_PAGE); param.put("miniprogram", miniprogram); - JSONObject dataTime = new JSONObject(); dataTime.put("value", time); JSONObject msg = new JSONObject(); msg.put("value", content); JSONObject data = new JSONObject(); - data.put("time38", dataTime); - data.put("thing37", msg); + //工单模板填充数据 + if (repairRemind.getTypeId() == 0) { + data.put("time38", dataTime); + data.put("thing37", msg); + + } + //会议预约模板填充数据 + if (repairRemind.getTypeId() == 1) { + data.put("time", dataTime); + data.put("thing", msg); + } param.put("data", data); JSONObject result = send(url, JSON.toJSONString(param)); //System.out.println(result.toString()); diff --git a/shoot-hand/ics-web/src/main/resources/application-dev.yml b/shoot-hand/ics-web/src/main/resources/application-dev.yml index a2769c9..353db41 100644 --- a/shoot-hand/ics-web/src/main/resources/application-dev.yml +++ b/shoot-hand/ics-web/src/main/resources/application-dev.yml @@ -147,4 +147,5 @@ webchatGZH: #微信公众号用户绑定及模板消息推送相关配置 appid: wxf164eab7ad1d9075 secret: 199fc64445882192ae798816d949be0d access: https://company.haxy.com.cn:4443/shoot-hand #pc后端访问地址 - templateId: 3VU7ZY8RgiR9hcPysc34y-S2PxKQU2JrIT8v_mhkuic #模板消息模板id + templateRP: 8zU-6KI4gz0NJeTeAjPbzu9eEBlWe18gGa3PW6h7MbM #工单模板消息模板id + templateMR: bxOb3RO8pFGUhYnTaJBoDvTeapmZnczlBOk5zTjiu0U #会议室预约模板消息id diff --git a/shoot-hand/ics-web/src/main/resources/application-prod.yml b/shoot-hand/ics-web/src/main/resources/application-prod.yml index 74c7c34..fb75e64 100644 --- a/shoot-hand/ics-web/src/main/resources/application-prod.yml +++ b/shoot-hand/ics-web/src/main/resources/application-prod.yml @@ -137,4 +137,5 @@ webchatGZH: #微信公众号用户绑定及模板消息推送相关配置 appid: wxf164eab7ad1d9075 secret: 199fc64445882192ae798816d949be0d access: https://company.haxy.com.cn:4443/shoot-hand #pc后端访问地址 - templateId: 3VU7ZY8RgiR9hcPysc34y-S2PxKQU2JrIT8v_mhkuic #模板消息模板id \ No newline at end of file + templateRP: 8zU-6KI4gz0NJeTeAjPbzu9eEBlWe18gGa3PW6h7MbM #工单模板消息模板id + templateMR: bxOb3RO8pFGUhYnTaJBoDvTeapmZnczlBOk5zTjiu0U #会议室预约模板消息id \ No newline at end of file diff --git a/shoot-hand/ics-web/src/main/resources/application-server.yml b/shoot-hand/ics-web/src/main/resources/application-server.yml index a13d5df..30f083f 100644 --- a/shoot-hand/ics-web/src/main/resources/application-server.yml +++ b/shoot-hand/ics-web/src/main/resources/application-server.yml @@ -137,4 +137,5 @@ webchatGZH: #微信公众号用户绑定及模板消息推送相关配置 appid: wx88c3ba1d01b33b8b secret: db375b6db9c7b87b1daa48375b45731e access: https://baoxiu.jsgdha.com/shoot-hand #pc后端访问地址 - templateId: 4jgtzPfyX546n5ZDPHbN69YSSFf8NSOQUDJuPb6bYwA #模板消息模板id \ No newline at end of file + templateRP: 4jgtzPfyX546n5ZDPHbN69YSSFf8NSOQUDJuPb6bYwA #工单模板消息模板id + templateMR: XXX #会议室预约模板消息id \ No newline at end of file From ea70c8947ddf475bbfce2ca53d86e22d05e0ab93 Mon Sep 17 00:00:00 2001 From: lujiang Date: Fri, 27 Sep 2024 00:19:41 +0800 Subject: [PATCH 04/11] =?UTF-8?q?=E4=BC=9A=E8=AE=AE=E9=A2=84=E7=BA=A6?= =?UTF-8?q?=E6=8E=A8=E9=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ics/admin/service/impl/MeetingReservationServiceImpl.java | 4 ++-- .../com/ics/service/impl/RepairRemindPushServiceImpl.java | 4 +++- shoot-hand/ics-web/src/main/resources/application-dev.yml | 2 +- shoot-hand/ics-web/src/main/resources/application-prod.yml | 2 +- 4 files changed, 7 insertions(+), 5 deletions(-) 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 index 69f960d..3198caf 100644 --- 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 @@ -161,7 +161,7 @@ public class MeetingReservationServiceImpl implements IMeetingReservationService repairRemindMapper.insertRepairRemind(repairRemind); } //提醒--end - meetingServeService.saveOrUpdateMeetingServe(rid, list); + if (list.size() > 0) meetingServeService.saveOrUpdateMeetingServe(rid, list); return IMeetingReservationService.OK; } @@ -266,7 +266,7 @@ public class MeetingReservationServiceImpl implements IMeetingReservationService list.add(meetingServe); } } - meetingServeService.saveOrUpdateMeetingServe(meetingReservation.getId(), list); + if (list.size() > 0) meetingServeService.saveOrUpdateMeetingServe(meetingReservation.getId(), list); //提醒--start for (RepairRemind repairRemind : rList) { repairRemindMapper.insertRepairRemind(repairRemind); diff --git a/shoot-hand/ics-web/src/main/java/com/ics/service/impl/RepairRemindPushServiceImpl.java b/shoot-hand/ics-web/src/main/java/com/ics/service/impl/RepairRemindPushServiceImpl.java index ceb2745..4a86450 100644 --- a/shoot-hand/ics-web/src/main/java/com/ics/service/impl/RepairRemindPushServiceImpl.java +++ b/shoot-hand/ics-web/src/main/java/com/ics/service/impl/RepairRemindPushServiceImpl.java @@ -126,7 +126,9 @@ public class RepairRemindPushServiceImpl implements RepairRemindPushService { } param.put("data", data); JSONObject result = send(url, JSON.toJSONString(param)); - //System.out.println(result.toString()); +// System.out.println("==========ttt1=========="); +// System.out.println(result.toString()); +// System.out.println("==========ttt2=========="); if (result == null || result.getInteger("errcode") == null || result.getInteger("errcode") != 0) { failed.add(repairRemind.getId()); } else { diff --git a/shoot-hand/ics-web/src/main/resources/application-dev.yml b/shoot-hand/ics-web/src/main/resources/application-dev.yml index 353db41..20b854d 100644 --- a/shoot-hand/ics-web/src/main/resources/application-dev.yml +++ b/shoot-hand/ics-web/src/main/resources/application-dev.yml @@ -148,4 +148,4 @@ webchatGZH: #微信公众号用户绑定及模板消息推送相关配置 secret: 199fc64445882192ae798816d949be0d access: https://company.haxy.com.cn:4443/shoot-hand #pc后端访问地址 templateRP: 8zU-6KI4gz0NJeTeAjPbzu9eEBlWe18gGa3PW6h7MbM #工单模板消息模板id - templateMR: bxOb3RO8pFGUhYnTaJBoDvTeapmZnczlBOk5zTjiu0U #会议室预约模板消息id + templateMR: QxM3pMorFhL8Wljouzw3ckLXW8AXCTL3dbOnLumH90I #会议室预约模板消息id diff --git a/shoot-hand/ics-web/src/main/resources/application-prod.yml b/shoot-hand/ics-web/src/main/resources/application-prod.yml index fb75e64..7ba5b0a 100644 --- a/shoot-hand/ics-web/src/main/resources/application-prod.yml +++ b/shoot-hand/ics-web/src/main/resources/application-prod.yml @@ -138,4 +138,4 @@ webchatGZH: #微信公众号用户绑定及模板消息推送相关配置 secret: 199fc64445882192ae798816d949be0d access: https://company.haxy.com.cn:4443/shoot-hand #pc后端访问地址 templateRP: 8zU-6KI4gz0NJeTeAjPbzu9eEBlWe18gGa3PW6h7MbM #工单模板消息模板id - templateMR: bxOb3RO8pFGUhYnTaJBoDvTeapmZnczlBOk5zTjiu0U #会议室预约模板消息id \ No newline at end of file + templateMR: QxM3pMorFhL8Wljouzw3ckLXW8AXCTL3dbOnLumH90I #会议室预约模板消息id \ No newline at end of file From 1cd545d974e58c8cc01433d793207de9e59fd4ae Mon Sep 17 00:00:00 2001 From: lujiang Date: Fri, 27 Sep 2024 01:03:32 +0800 Subject: [PATCH 05/11] =?UTF-8?q?=E5=8F=82=E6=95=B0=E6=A0=A1=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ics/admin/controller/MeetingReservationController.java | 5 +++++ 1 file changed, 5 insertions(+) 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 index 91a83cd..62c517c 100644 --- 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 @@ -163,6 +163,9 @@ public class MeetingReservationController extends BaseController { MeetingReservation meetingReservation = new MeetingReservation(); BeanUtils.copyBeanProp(meetingReservation, meetingReservationDTO.getMr()); if (meetingReservation.getTimeFormat() > 0) { + String bookingDate = DateUtils.dateTime(meetingReservation.getStart()); + if (!bookingDate.equals(meetingReservationDTO.getMr().getMrdate())) + return R.error("预约日期与会议时间不符!"); 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("预约时间解析错误"); @@ -230,6 +233,8 @@ public class MeetingReservationController extends BaseController { BeanUtils.copyBeanProp(meetingReservation, meetingReservationDTO.getMr()); meetingReservation.setStatus(status);//防止用户端修改预约记录状态 if (meetingReservation.getTimeFormat() > 0) {//非任意时间 + if (!DateUtils.dateTime(meetingReservation.getStart()).equals(meetingReservationDTO.getMr().getMrdate())) + return R.error("预约日期与会议时间不符!"); Date start = convert(meetingReservationDTO.getMr().getMrdate(), meetingReservation.getTimeFormat(), true); Date end = convert(meetingReservationDTO.getMr().getMrdate(), meetingReservation.getTimeFormat(), false); meetingReservation.getParams().put("startTime",start); From d47e85026cdcede2e628557917ba57ca0f25ba36 Mon Sep 17 00:00:00 2001 From: lujiang Date: Sun, 29 Sep 2024 13:21:54 +0800 Subject: [PATCH 06/11] =?UTF-8?q?=E9=A2=84=E7=BA=A6=E5=8D=A0=E7=94=A8?= =?UTF-8?q?=E5=8F=8A=E5=8F=96=E6=B6=88=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/MeetingReservationController.java | 15 +++++---------- .../impl/MeetingReservationServiceImpl.java | 7 ++++++- 2 files changed, 11 insertions(+), 11 deletions(-) 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 index 62c517c..4455c08 100644 --- 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 @@ -268,18 +268,13 @@ public class MeetingReservationController extends BaseController { @PostMapping("beforehand") public R beforehand(@RequestBody MeetingReservationDTO meetingReservationDTO) { Long userId = getLoginStaffId(); + IcsCustomerStaff staff = customerStaffService.selectIcsCustomerStaffById(userId); + if (staff.getRoomRole() != 5L) return R.error("权限不足!"); 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.setStart(meetingReservationDTO.getMr().getStart()); + meetingReservation.setEnd(meetingReservationDTO.getMr().getEnd()); + meetingReservation.setTimeFormat(0); meetingReservation.setTitle("占用"); String result = meetingReservationService.beforehand(userId, meetingReservation); if (IMeetingReservationService.OK.equals(result)) { 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 index 3198caf..847ebf2 100644 --- 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 @@ -170,7 +170,12 @@ public class MeetingReservationServiceImpl implements IMeetingReservationService 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.getStatus() < 5 || meetingReservation.getStatus() > 7)) { + return "预约记录不能" + operate.getValue(); + } + if (!MrOperate.CANCEL.equals(operate) && meetingReservation.getStatus() != 5) { + return "预约记录不能" + operate.getValue(); + } if (MrOperate.CANCEL.equals(operate) && !meetingReservation.getCreateBy().equals(currentUserId.toString())) return "不能取消非本人的预约记录"; Date now = new Date(); From dcad6d46431c4898e124c626ec72106bb552199d Mon Sep 17 00:00:00 2001 From: lujiang Date: Mon, 30 Sep 2024 23:38:35 +0800 Subject: [PATCH 07/11] =?UTF-8?q?=E4=BC=9A=E8=AE=AE=E5=AE=A4=E9=A2=84?= =?UTF-8?q?=E7=BA=A6=E7=BB=9F=E8=AE=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/MeetingStatsController.java | 104 +++++++++++ .../ics/admin/mapper/MeetingStatsMapper.java | 78 ++++++++ .../admin/service/IMeetingStatsService.java | 43 +++++ .../impl/IMeetingStatsServiceImpl.java | 166 ++++++++++++++++++ .../main/java/com/ics/admin/vo/MRStatsVo.java | 50 ++++++ .../mapper/admin/MeetingStatsMapper.xml | 106 +++++++++++ shoot-hand/ics/2024/会议预约.eddx | Bin 10330 -> 10930 bytes shoot-hand/ics/2024/会议预约.png | Bin 78203 -> 81814 bytes 8 files changed, 547 insertions(+) create mode 100644 shoot-hand/ics-admin/src/main/java/com/ics/admin/controller/MeetingStatsController.java create mode 100644 shoot-hand/ics-admin/src/main/java/com/ics/admin/mapper/MeetingStatsMapper.java create mode 100644 shoot-hand/ics-admin/src/main/java/com/ics/admin/service/IMeetingStatsService.java create mode 100644 shoot-hand/ics-admin/src/main/java/com/ics/admin/service/impl/IMeetingStatsServiceImpl.java create mode 100644 shoot-hand/ics-admin/src/main/java/com/ics/admin/vo/MRStatsVo.java create mode 100644 shoot-hand/ics-admin/src/main/resources/mapper/admin/MeetingStatsMapper.xml diff --git a/shoot-hand/ics-admin/src/main/java/com/ics/admin/controller/MeetingStatsController.java b/shoot-hand/ics-admin/src/main/java/com/ics/admin/controller/MeetingStatsController.java new file mode 100644 index 0000000..d9286d9 --- /dev/null +++ b/shoot-hand/ics-admin/src/main/java/com/ics/admin/controller/MeetingStatsController.java @@ -0,0 +1,104 @@ +package com.ics.admin.controller; + +import com.ics.admin.service.IMeetingStatsService; +import com.ics.common.core.domain.R; +import com.ics.common.utils.DateUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import org.wf.jwtp.annotation.RequiresPermissions; + +import java.util.Date; + +/** + * 会议室预约统计接口 + * created at 2024-9-29 16:15 + * + * @author lujiang + * @version 1.0.0 + * @since 1.0.0 + */ +@RestController +@RequestMapping({"/admin/ms"}) +public class MeetingStatsController { + + @Autowired + private IMeetingStatsService meetingStatsService; + + /** + * 会议室统计 第一行 + * + * @param day 格式:2024-09-30 + * @return + * alreadyBooking, 已预约会议室数量 + * noBooking,未预约会议室数量 + * going,开会中会议室数量 + * free,空闲中会议室数量 + */ + @RequiresPermissions(value = {"mr:manage:operator"}) + @RequestMapping("roomStats") + public R roomStats(String day) { + return R.ok().put("data", meetingStatsService.roomStats(day)); + } + + /** + * 日历 第二行左 + * + * @param month 月份,格式:2024-09 + */ + @RequiresPermissions(value = {"mr:manage:operator"}) + @RequestMapping("calendar") + public R calendar(String month) { + return R.ok().put("data", meetingStatsService.calendar(month)); + } + + /** + * 会议状态 第二行右上 + * + * @return + * wait, 待开始会议数量 + * going,进行中会议数量 + * closed,已结束会议数量 + */ + @RequiresPermissions(value = {"mr:manage:operator"}) + @RequestMapping("meetingStats") + public R meetingStats() { + return R.ok().put("data", meetingStatsService.meetingStats()); + } + + /** + * 会议待办 第二行右下 + */ + @RequiresPermissions(value = {"mr:manage:operator"}) + @RequestMapping("meetingAudit") + public R meetingAudit() { + return R.ok().put("data", meetingStatsService.meetingAudit()); + } + + /** + * 图表统计数据 + * + * @param startDate 统计数据开始时间,日期格式示例:2024-08-23 + * @param endDate 统计数据结束时间,日期格式示例:2024-09-23 + * @return + * roomRank,会议室使用排名 + * serve,服务情况 + * roomType,会议室形式统计 + * orgMeeting,部门开会情况--top10 + * everyDay,开会情况--按天--top20 + */ + @RequiresPermissions(value = {"mr:manage:operator"}) + @RequestMapping("chartStats") + public R chartStats(String startDate, String endDate) { + Date start, end; + try { + start = DateUtils.dateTime(DateUtils.YYYY_MM_DD_HH_MM_SS, startDate + " 00:00:00"); + end = DateUtils.dateTime(DateUtils.YYYY_MM_DD_HH_MM_SS, endDate + " 23:59:59"); + } catch (Exception e) { + return R.error("参数错误"); + } + return R.ok().put("data", meetingStatsService.chartStats(start, end)); + } + + +} diff --git a/shoot-hand/ics-admin/src/main/java/com/ics/admin/mapper/MeetingStatsMapper.java b/shoot-hand/ics-admin/src/main/java/com/ics/admin/mapper/MeetingStatsMapper.java new file mode 100644 index 0000000..34c016b --- /dev/null +++ b/shoot-hand/ics-admin/src/main/java/com/ics/admin/mapper/MeetingStatsMapper.java @@ -0,0 +1,78 @@ +package com.ics.admin.mapper; + +import com.ics.admin.vo.MRStatsVo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.Date; +import java.util.List; + +@Mapper +public interface MeetingStatsMapper { + + /** + * 会议室统计 第一行 + * @param day 格式:2024-09-30 + * @return + */ + List roomStats(@Param("day") String day); + + /** + * 日历 第二行左 + */ + List calendar(@Param("month") String month); + + /** + * 会议状态 第二行右上 + */ + List meetingStats(); + + /** + * 会议待办 第二行右下 + */ + List meetingAudit(); + + /** + * 会议室使用排名 + * + * @param start 开始时间范围 + * @param end 结束时间范围 + * @return + */ + List roomRankStats(@Param("start") Date start, @Param("end") Date end); + + /** + * 服务情况 + * + * @param start 开始时间范围 + * @param end 结束时间范围 + * @return + */ + List serveStats(@Param("start") Date start, @Param("end") Date end); + + /** + * 会议室形式统计 + * + * @param start 开始时间范围 + * @param end 结束时间范围 + * @return + */ + List roomTypeStats(@Param("start") Date start, @Param("end") Date end); + + /** + * 部门开会情况 top10 + * + * @param start 开始时间范围 + * @param end 结束时间范围 + * @return + */ + List orgMeetingStats(@Param("start") Date start, @Param("end") Date end); + /** + * 开会情况 top20 + * + * @param start 开始时间范围 + * @param end 结束时间范围 + * @return + */ + List everyDayStats(@Param("start") Date start, @Param("end") Date end); +} diff --git a/shoot-hand/ics-admin/src/main/java/com/ics/admin/service/IMeetingStatsService.java b/shoot-hand/ics-admin/src/main/java/com/ics/admin/service/IMeetingStatsService.java new file mode 100644 index 0000000..4fe50c7 --- /dev/null +++ b/shoot-hand/ics-admin/src/main/java/com/ics/admin/service/IMeetingStatsService.java @@ -0,0 +1,43 @@ +package com.ics.admin.service; + +import com.alibaba.fastjson.JSONObject; + +import java.util.Date; +import java.util.List; +import java.util.Map; + +public interface IMeetingStatsService { + + /** + * 会议室统计 第一行 + * @param day 格式:2024-09-30 + * @return + */ + Map roomStats(String day); + + /** + * 日历 第二行左 + * @param month 月份,格式:2024-09 + */ + Map> calendar(String month); + + /** + * 会议状态 第二行右上 + */ + Map meetingStats(); + + /** + * 会议待办 第二行右下 + */ + List> meetingAudit(); + /** + * 图表统计 + * + * @param start 开始时间范围 + * @param end 结束时间范围 + * @return + */ + Map chartStats(Date start, Date end); + + +} diff --git a/shoot-hand/ics-admin/src/main/java/com/ics/admin/service/impl/IMeetingStatsServiceImpl.java b/shoot-hand/ics-admin/src/main/java/com/ics/admin/service/impl/IMeetingStatsServiceImpl.java new file mode 100644 index 0000000..889a9d1 --- /dev/null +++ b/shoot-hand/ics-admin/src/main/java/com/ics/admin/service/impl/IMeetingStatsServiceImpl.java @@ -0,0 +1,166 @@ +package com.ics.admin.service.impl; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.ics.admin.mapper.MeetingStatsMapper; +import com.ics.admin.service.IMeetingStatsService; +import com.ics.admin.vo.MRStatsVo; +import com.ics.common.utils.DateUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.Calendar; +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * created at 2024-9-29 16:32 + * + * @author lujiang + * @version 1.0.0 + * @since 1.0.0 + */ +@Service +public class IMeetingStatsServiceImpl implements IMeetingStatsService { + @Autowired + private MeetingStatsMapper meetingStatsMapper; + + @Override + public Map roomStats(String day) { + Map map = new HashMap<>(); + List list = meetingStatsMapper.roomStats(day); + if (list.size() > 0) { + MRStatsVo mrStatsVo = list.get(0); + map.put("alreadyBooking", mrStatsVo.getBooking()); + map.put("noBooking", mrStatsVo.getZs() - mrStatsVo.getBooking()); + map.put("going", mrStatsVo.getGoing()); + map.put("free", mrStatsVo.getZs() - mrStatsVo.getGoing()); + } + return map; + } + + @Override + public Map> calendar(String month) { + Map> map = new HashMap<>(); + Date date = DateUtils.dateTime(DateUtils.YYYY_MM_DD, month + "-01"); + Calendar calendar = Calendar.getInstance(); + calendar.setTime(date); + int lastDay = calendar.getActualMaximum(Calendar.DAY_OF_MONTH); + for (int i = 0; i < lastDay; i++) { + if (i > 0) calendar.add(Calendar.DATE, 1); + String key = DateUtils.dateTime(calendar.getTime()); + map.put(key, new ArrayList<>()); + } + List datas = meetingStatsMapper.calendar(month); + for (MRStatsVo mrStatsVo : datas) { + String key = mrStatsVo.getName(); + JSONObject one = new JSONObject(); + one.put("id", mrStatsVo.getId()); + one.put("sn", mrStatsVo.getSn()); + one.put("title", mrStatsVo.getTitle()); + one.put("time", mrStatsVo.getTime()); + one.put("org", mrStatsVo.getOrg()); + map.get(key).add(one); + } + return map; + } + + @Override + public Map meetingStats() { + Map map = new HashMap<>(); + List list = meetingStatsMapper.meetingStats(); + if (list.size() > 0) { + MRStatsVo mrStatsVo = list.get(0); + map.put("wait", mrStatsVo.getWait()); + map.put("going", mrStatsVo.getGoing()); + map.put("closed", mrStatsVo.getClosed()); + } + return map; + } + + @Override + public List> meetingAudit() { + List> list = new ArrayList<>(); + List datas = meetingStatsMapper.meetingAudit(); + for (MRStatsVo mrStatsVo : datas) { + Map map = new HashMap<>(); + map.put("id", mrStatsVo.getId()); + map.put("title", mrStatsVo.getTitle()); + map.put("time", mrStatsVo.getTime()); + map.put("org", mrStatsVo.getOrg()); + list.add(map); + } + return list; + } + + @Override + public Map chartStats(Date start, Date end) { + Map map = new HashMap<>(); + if (true) { //会议室使用排名 + Map roomRank = new HashMap<>(); + List y = new ArrayList<>(); + List zs = new ArrayList<>(); + List list = meetingStatsMapper.roomRankStats(start, end); + for (MRStatsVo mrStatsVo : list) { + y.add(mrStatsVo.getName()); + zs.add(mrStatsVo.getValue()); + } + roomRank.put("y", y); + roomRank.put("total", zs); + map.put("roomRank", roomRank); + } + if (true) {//服务情况 + List> serve = new ArrayList<>(); + List list = meetingStatsMapper.serveStats(start, end); + for (MRStatsVo mrStatsVo : list) { + serve.add(getMap(mrStatsVo.getName(), mrStatsVo.getValue())); + } + map.put("serve", serve); + } + if (true) {//会议室形式统计 + List> roomType = new ArrayList<>(); + List list = meetingStatsMapper.roomTypeStats(start, end); + for (MRStatsVo mrStatsVo : list) { + roomType.add(getMap(mrStatsVo.getName(), mrStatsVo.getValue())); + } + map.put("roomType", roomType); + } + if (true) {//部门开会情况 + Map orgMeeting = new HashMap<>(); + List x = new ArrayList<>(); + List total = new ArrayList<>(); + List list = meetingStatsMapper.orgMeetingStats(start, end); + for (MRStatsVo mrStatsVo : list) { + x.add(mrStatsVo.getName()); + total.add(mrStatsVo.getValue()); + } + orgMeeting.put("x", x); + orgMeeting.put("total", total); + map.put("orgMeeting", orgMeeting); + } + if (true) {//开会情况--按天--top20 + Map everyDay = new HashMap<>(); + List x = new ArrayList<>(); + List total = new ArrayList<>(); + List list = meetingStatsMapper.everyDayStats(start, end); + for (MRStatsVo mrStatsVo : list) { + x.add(mrStatsVo.getName()); + total.add(mrStatsVo.getValue()); + } + everyDay.put("x", x); + everyDay.put("total", total); + map.put("everyDay", everyDay); + } + return map; + } + + private Map getMap(String name, Object value) { + Map map = new HashMap<>(); + map.put("name", name); + map.put("value", value); + return map; + } +} diff --git a/shoot-hand/ics-admin/src/main/java/com/ics/admin/vo/MRStatsVo.java b/shoot-hand/ics-admin/src/main/java/com/ics/admin/vo/MRStatsVo.java new file mode 100644 index 0000000..3a944fd --- /dev/null +++ b/shoot-hand/ics-admin/src/main/java/com/ics/admin/vo/MRStatsVo.java @@ -0,0 +1,50 @@ +package com.ics.admin.vo; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + +/** + * created at 2024-9-29 17:11 + * + * @author lujiang + * @version 1.0.0 + * @since 1.0.0 + */ +@Data +public class MRStatsVo implements Serializable { + private static final long serialVersionUID = -202409291712L; + + private String name; + + private Long value; + + @JsonIgnore + private Date start; + + @JsonIgnore + private Date end; + + //总数 + private Integer zs; + //预约数 + private Integer booking; + //进行中会议数量 + private Integer going; + + //待开始会议数量 + private Integer wait; + + //已结束会议数量 + private Integer closed; + + //---会议待办 + private Long id; + private String sn; + private String title; + private String time; + private String org; + +} diff --git a/shoot-hand/ics-admin/src/main/resources/mapper/admin/MeetingStatsMapper.xml b/shoot-hand/ics-admin/src/main/resources/mapper/admin/MeetingStatsMapper.xml new file mode 100644 index 0000000..85f63cf --- /dev/null +++ b/shoot-hand/ics-admin/src/main/resources/mapper/admin/MeetingStatsMapper.xml @@ -0,0 +1,106 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/shoot-hand/ics/2024/会议预约.eddx b/shoot-hand/ics/2024/会议预约.eddx index faae4b2576b2e3cc09b51f0c0d3f1988570761c4..dec88a7bc2b3497026f3db74840a02a94dd6d0ee 100644 GIT binary patch literal 10930 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 literal 10330 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 Kxk*O9kNgX1(T9Nm literal 78203 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 IynoI8FHwvrw*UYD From 18b4216a50a2a6bb5f29149abcc4ac8f1bb2ba89 Mon Sep 17 00:00:00 2001 From: lujiang Date: Thu, 3 Oct 2024 12:28:27 +0800 Subject: [PATCH 08/11] =?UTF-8?q?=E4=BC=9A=E8=AE=AE=E5=AE=A4=E9=A2=84?= =?UTF-8?q?=E7=BA=A6=E9=99=90=E5=88=B6=E8=BF=87=E5=8E=BB=E7=9A=84=E6=97=B6?= =?UTF-8?q?=E9=97=B4=E4=B8=8D=E8=83=BD=E9=A2=84=E7=BA=A6=EF=BC=8C=E4=BC=9A?= =?UTF-8?q?=E8=AE=AE=E5=AE=A4=E7=AD=9B=E9=80=89=E4=BA=BA=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/controller/MeetingReservationController.java | 4 ++++ .../mapper/admin/MeetingReservationMapper.xml | 10 ++++++---- 2 files changed, 10 insertions(+), 4 deletions(-) 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 index 4455c08..02c2ab4 100644 --- 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 @@ -173,6 +173,7 @@ public class MeetingReservationController extends BaseController { meetingReservation.getParams().put("endTime",end);//根据上、下午、晚上,确定具体时间 } if (meetingReservation.getEnd().getTime() <= meetingReservation.getStart().getTime()) return R.error("预约时间无效"); + if (meetingReservation.getStart().getTime() <= new Date().getTime()) return R.error("已逝去的时间不能被预约"); Long userId = getLoginStaffId(); String result = meetingReservationService.insertMeetingReservation(userId, meetingReservation, meetingReservationDTO.getServe()); if (IMeetingReservationService.OK.equals(result)) { @@ -243,6 +244,7 @@ public class MeetingReservationController extends BaseController { if (meetingReservation.getStart() == null || meetingReservation.getEnd() == null) return R.error("预约时间解析错误");//防止用户端置空预约记录时间 if (meetingReservation.getEnd().getTime() <= meetingReservation.getStart().getTime()) return R.error("预约时间无效"); + if (meetingReservation.getStart().getTime() <= new Date().getTime()) return R.error("已逝去的时间不能被预约"); String result = meetingReservationService.updateMeetingReservation(userId, meetingReservation, meetingReservationDTO.getServe()); if (IMeetingReservationService.OK.equals(result)) { return R.ok("操作成功"); @@ -276,6 +278,8 @@ public class MeetingReservationController extends BaseController { meetingReservation.setEnd(meetingReservationDTO.getMr().getEnd()); meetingReservation.setTimeFormat(0); meetingReservation.setTitle("占用"); + if (meetingReservation.getEnd().getTime() <= meetingReservation.getStart().getTime()) return R.error("预约时间无效"); + if (meetingReservation.getStart().getTime() <= new Date().getTime()) return R.error("已逝去的时间不能被预约"); String result = meetingReservationService.beforehand(userId, meetingReservation); if (IMeetingReservationService.OK.equals(result)) { return R.ok("占用成功"); 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 index 6a78f69..42d66d1 100644 --- a/shoot-hand/ics-admin/src/main/resources/mapper/admin/MeetingReservationMapper.xml +++ b/shoot-hand/ics-admin/src/main/resources/mapper/admin/MeetingReservationMapper.xml @@ -53,10 +53,12 @@ AND room.floor = #{floor} AND room.name LIKE CONCAT('%', #{name}, '%') AND room.type_name = #{typeName} - + + AND device LIKE CONCAT('%', #{dev}, '%') - - AND room.capacity_num = #{capacityNum} + + + AND room.capacity_num <= #{capacityNum} order by room_num @@ -91,7 +93,7 @@ AND name LIKE CONCAT('%', #{name}, '%') AND type_name = #{typeName} AND room.device LIKE CONCAT('%', #{device}, '%') - AND capacity_num = #{capacityNum} + AND capacity_num <= #{capacityNum} AND status = #{status} AND start LIKE CONCAT(#{filterDate}, '%') order by start desc,status From c75189fd0e5d70415493588e4d5ae4812e864476 Mon Sep 17 00:00:00 2001 From: lujiang Date: Fri, 4 Oct 2024 11:05:47 +0800 Subject: [PATCH 09/11] =?UTF-8?q?=E4=BC=9A=E8=AE=AE=E5=AE=A4=E7=AD=9B?= =?UTF-8?q?=E9=80=89=E5=AE=B9=E7=BA=B3=E4=BA=BA=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/MeetingReservationController.java | 3 ++- .../main/java/com/ics/admin/vo/MeetingRoomVo.java | 13 +++++++++++++ .../mapper/admin/MeetingReservationMapper.xml | 2 +- 3 files changed, 16 insertions(+), 2 deletions(-) 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 index 02c2ab4..6e0c20b 100644 --- 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 @@ -94,7 +94,8 @@ public class MeetingReservationController extends BaseController { * * name 会议室名称,模糊查询 * * typeName 会议室形式,精确查询 * * devices 多个会议室设备,模糊查询,逻辑与关系 - * * capacityNum 容纳人数,精确查询 + * * min 容纳人数,下限(包含) + * * max 容纳人数,上限(包含) */ @RequiresPermissions(value = {"mr:manage:operator", "member:center:view"}, logical = Logical.OR) @PostMapping("getAllRoom") 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 index f61e9bf..eb60fab 100644 --- 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 @@ -27,6 +27,7 @@ public class MeetingRoomVo implements Serializable { @JsonProperty(access = JsonProperty.Access.WRITE_ONLY) @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date endTime; + /** 预约日期 */ @JsonProperty(access = JsonProperty.Access.WRITE_ONLY) private String mrdate; @@ -35,6 +36,18 @@ public class MeetingRoomVo implements Serializable { @JsonProperty(access = JsonProperty.Access.WRITE_ONLY) private Integer timeFormat; + /** + * 容纳人数 下限 + */ + @JsonProperty(access = JsonProperty.Access.WRITE_ONLY) + private Integer min; + + /** + * 容纳人数 上限 + */ + @JsonProperty(access = JsonProperty.Access.WRITE_ONLY) + private Integer max; + private Long id; /** * 所属楼层值 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 index 42d66d1..e3ce6f7 100644 --- a/shoot-hand/ics-admin/src/main/resources/mapper/admin/MeetingReservationMapper.xml +++ b/shoot-hand/ics-admin/src/main/resources/mapper/admin/MeetingReservationMapper.xml @@ -58,7 +58,7 @@ AND device LIKE CONCAT('%', #{dev}, '%') - AND room.capacity_num <= #{capacityNum} + and room.capacity_num >= #{min} AND room.capacity_num <= #{max} order by room_num From 5bf98bb248c057a4178fce83106d5edc132b9976 Mon Sep 17 00:00:00 2001 From: lujiang Date: Fri, 4 Oct 2024 16:39:08 +0800 Subject: [PATCH 10/11] =?UTF-8?q?=E4=BC=9A=E8=AE=AE=E5=AE=A4=E7=AD=9B?= =?UTF-8?q?=E9=80=89=E5=AE=B9=E7=BA=B3=E4=BA=BA=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/ics/admin/domain/MeetingRoom.java | 15 +++++++++++++++ .../resources/mapper/admin/MeetingRoomMapper.xml | 2 +- 2 files changed, 16 insertions(+), 1 deletion(-) 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 index a9d04c4..e3b48ef 100644 --- 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 @@ -2,6 +2,7 @@ package com.ics.admin.domain; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonProperty; import com.ics.common.core.domain.BaseEntity; import lombok.Data; @@ -75,6 +76,20 @@ public class MeetingRoom extends BaseEntity { @TableField(exist = false) private Integer status; + /** + * 容纳人数 下限 + */ + @JsonProperty(access = JsonProperty.Access.WRITE_ONLY) + @TableField(exist = false) + private Integer min; + + /** + * 容纳人数 上限 + */ + @JsonProperty(access = JsonProperty.Access.WRITE_ONLY) + @TableField(exist = false) + private Integer max; + /** * 扩展1 */ 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 index 80ae815..0e0f8c6 100644 --- a/shoot-hand/ics-admin/src/main/resources/mapper/admin/MeetingRoomMapper.xml +++ b/shoot-hand/ics-admin/src/main/resources/mapper/admin/MeetingRoomMapper.xml @@ -42,7 +42,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" AND name LIKE CONCAT('%', #{name}, '%') AND type_name = #{typeName} AND device LIKE CONCAT('%', #{device}, '%') - AND capacity_num = #{capacityNum} + and capacity_num >= #{min} AND capacity_num <= #{max} order by id From 148f5cd7edb3eea8503bc1e81bd01c044ec84e87 Mon Sep 17 00:00:00 2001 From: lujiang Date: Fri, 4 Oct 2024 17:49:54 +0800 Subject: [PATCH 11/11] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E7=BB=9F=E8=AE=A1?= =?UTF-8?q?=E8=AF=AD=E5=8F=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/resources/mapper/admin/MeetingStatsMapper.xml | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/shoot-hand/ics-admin/src/main/resources/mapper/admin/MeetingStatsMapper.xml b/shoot-hand/ics-admin/src/main/resources/mapper/admin/MeetingStatsMapper.xml index 85f63cf..fe663c8 100644 --- a/shoot-hand/ics-admin/src/main/resources/mapper/admin/MeetingStatsMapper.xml +++ b/shoot-hand/ics-admin/src/main/resources/mapper/admin/MeetingStatsMapper.xml @@ -65,10 +65,11 @@