1、会议室预约记录排序; 待审核、待开始: 日期正序,时间正序,会议编号正序;其他:日期倒序,时间正序,会议编号正序。

2、会议开始前提醒 2小时更改为提前1小时。
3、向音控人员和服务人员 发送会议开始前提醒,会议取消提醒
This commit is contained in:
lujiang 2025-05-27 20:16:27 +08:00
parent aca1e9452d
commit 951c0fec06
8 changed files with 57 additions and 31 deletions

View File

@ -434,6 +434,7 @@ public class MeetingReservationController extends BaseController {
* capacityNum容纳人数精确查询
* status预约状态精确查询
* filterDate预约日期查询以预约开始时间为准查询指定日期的所有预约
* startDate,endDate 日期范围筛选成对出现
* sort,排序 create 以创建时间倒序排列start 以预约会议开始时间倒序排列默认
*
*/
@ -443,6 +444,13 @@ public class MeetingReservationController extends BaseController {
startPage();
Long userId = getLoginStaffId();
meetingRecordVo.setUserId(userId);
if (StringUtils.isNotBlank(meetingRecordVo.getStartDate()) && StringUtils.isNotBlank(meetingRecordVo.getEndDate()) && meetingRecordVo.getStartDate().length() == 10 && meetingRecordVo.getEndDate().length() == 10) {
meetingRecordVo.setStartDate(meetingRecordVo.getStartDate() + " 00:00:00");
meetingRecordVo.setEndDate(meetingRecordVo.getEndDate() + " 23:59:59");
} else {
meetingRecordVo.setStartDate(null);
meetingRecordVo.setEndDate(null);
}
return result(meetingReservationService.selectMeetingReservationList(meetingRecordVo));
}

View File

@ -1,6 +1,5 @@
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;
@ -104,20 +103,20 @@ public class IMeetingStatsServiceImpl implements IMeetingStatsService {
List<String> y = new ArrayList<>();
List<Long> zs = new ArrayList<>();
List<MRStatsVo> list = meetingStatsMapper.roomRankStats(start, end);
System.out.println("会议室使用排名原始数据: " + list.size() + "");
// System.out.println("会议室使用排名原始数据: " + list.size() + "");
for (MRStatsVo mrStatsVo : list) {
System.out.println("会议室: " + mrStatsVo.getName() +
", 楼层: " + mrStatsVo.getFloor() +
", 房间号: " + mrStatsVo.getRoomNum() +
", 使用次数: " + mrStatsVo.getValue());
// System.out.println("会议室: " + mrStatsVo.getName() +
// ", 楼层: " + mrStatsVo.getFloor() +
// ", 房间号: " + mrStatsVo.getRoomNum() +
// ", 使用次数: " + mrStatsVo.getValue());
y.add(mrStatsVo.getName());
zs.add(mrStatsVo.getValue());
}
roomRank.put("y", y);
roomRank.put("total", zs);
map.put("roomRank", roomRank);
System.out.println("处理后的会议室使用排名数据: y=" + y + ", total=" + zs);
// System.out.println("处理后的会议室使用排名数据: y=" + y + ", total=" + zs);
}
if (true) {//服务情况
List<Map<String, Object>> serve = new ArrayList<>();

View File

@ -22,6 +22,7 @@ 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.admin.vo.MeetingWaiterVo;
import com.ics.common.core.domain.IcsCustomerStaff;
import com.ics.common.utils.DateUtils;
import com.ics.common.utils.StringUtils;
@ -358,6 +359,15 @@ public class MeetingReservationServiceImpl implements IMeetingReservationService
String.format(meetingRemindContent.getMu2(), remindContent, content), currentUserId, now, "1")
);
}
//会议取消服务人员音控会务服务都有--start
List<MeetingWaiterVo> waiters = meetingWaiterService.selectMeetingWaiterList(meetingReservation.getId());
for (MeetingWaiterVo meetingWaiterVo : waiters) {
list.add(
new RepairRemind(1, meetingReservation.getId(), meetingWaiterVo.getUserId(),
String.format(meetingRemindContent.getMu2(), remindContent, content), currentUserId, now, "1")
);
}
//会议取消服务人员音控会务服务都有--end
}
if (status == 3) {//驳回
list.add(
@ -388,6 +398,15 @@ public class MeetingReservationServiceImpl implements IMeetingReservationService
new RepairRemind(1, meetingReservation.getId(), Long.valueOf(meetingReservation.getCreateBy()),
String.format(meetingRemindContent.getCu4(), remindContent), currentUserId, now, "1")
);
//会议开始前提醒服务人员音控会务服务都有--start
List<MeetingWaiterVo> waiters = meetingWaiterService.selectMeetingWaiterList(meetingReservation.getId());
for (MeetingWaiterVo meetingWaiterVo : waiters) {
list.add(
new RepairRemind(1, meetingReservation.getId(), meetingWaiterVo.getUserId(),
String.format(meetingRemindContent.getCu4(), remindContent), currentUserId, now, "1")
);
}
//会议开始前提醒服务人员音控会务服务都有--end
}
return list;
}

View File

@ -97,13 +97,13 @@
<!-- 分页列表 -->
<select id="selectMeetingReservationList" parameterType="com.ics.admin.vo.MeetingRecordVo" resultType="com.ics.admin.vo.MeetingRecordVo">
SELECT mr.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, mr.remark, mr.ext1, mr.ext2, mr.ext3, mr.create_time createTime,mr.update_time updateTime,
floor_id, floor, name, type_id, type_name, device, room_num, area, capacity_num, content, enable, room.ext1 roomExt1, room.ext2 roomExt2, room.ext3 roomExt3, room.remark roomRemark
floor_id, floor, name, type_id, type_name, device, room_num, area, capacity_num, content, enable, room.ext1 roomExt1, room.ext2 roomExt2, room.ext3 roomExt3, room.remark roomRemark
from ics_meeting_reservation mr inner join ics_meeting_room room on mr.room_id=room.id
<if test="role == 3">
inner join ics_meeting_waiter wa on mr.id=wa.rid
inner join ics_meeting_waiter wa on mr.id=wa.rid
</if>
where
mr.delete_flag=0 and room.delete_flag=0
mr.delete_flag=0 and room.delete_flag=0
<if test="role == 3">
and wa.delete_flag=0 and wa.user_id=#{userId}
</if>
@ -119,23 +119,23 @@
<if test="device != null and device != ''"> AND room.device LIKE CONCAT('%', #{device}, '%')</if>
<if test="capacityNum != null"> AND capacity_num &lt;= #{capacityNum}</if>
<if test="status != null"> AND status = #{status}</if>
<if test="startDate != null and startDate != '' and endDate != null and endDate != ''">
AND (start &gt;= CONCAT(#{startDate}, ' 00:00:00') AND start &lt;= CONCAT(#{endDate}, ' 23:59:59'))
</if>
<if test="filterDate != null and filterDate != '' and (startDate == null or startDate == '')">
AND start LIKE CONCAT(#{filterDate}, '%')
</if>
<if test="filterDate != null and filterDate != ''"> AND start LIKE CONCAT(#{filterDate}, '%')</if>
<if test="ext1 != null and ext1 != ''"> AND mr.ext1 is null</if>
<if test="startDate != null and startDate != '' and endDate != null and endDate != ''">
AND start between #{startDate} AND #{endDate}
</if>
<choose>
<when test="sort != null and sort == 'create'"> order by mr.create_time desc,status</when>
<otherwise>
/* 按距离当前日期的接近程度排序,最接近的在前面 */
order by ABS(DATEDIFF(DATE(start), CURDATE())),
/* 按时间段早晚排序,最早的排在前面 */
TIME(start) ASC,
/* 按会议室编号排序 */
room_num + 0 ASC,
status
<choose>
<!-- 待开始、待审核按照日期正序排列,其他为倒序;时间都为正序,会议室编号都为正序,状态都为正序 -->
<when test="status == 5 or status == 7">
order by start asc,room_num asc,status
</when>
<otherwise>
order by date(start) desc,time(start) ASC,room_num asc,status
</otherwise>
</choose>
</otherwise>
</choose>
</select>
@ -156,11 +156,11 @@
</if>
</select>
<!-- 即将开始的会议预约,开始时间小于2小时预约,只提醒一次 -->
<!-- 即将开始的会议预约,开始时间小于1小时预约,只提醒一次 -->
<select id="getSoonMeetingReservation" resultMap="MeetingReservationResult">
<include refid="selectMeetingReservationVo"/>
<![CDATA[
WHERE delete_flag = 0 and status=7 and TIMESTAMPDIFF(MINUTE,now(),start) <= 120 and TIMESTAMPDIFF(MINUTE,now(),start) >= 115
WHERE delete_flag = 0 and status=7 and TIMESTAMPDIFF(MINUTE,now(),start) <= 60 and TIMESTAMPDIFF(MINUTE,now(),start) >= 55
]]>
</select>
<!-- 审核通过的会议预约变成进行中 -->

View File

@ -69,7 +69,7 @@
(select ms.value value,mr.id id
from ics_meeting_serve ms,ics_meeting_reservation mr where ms.rid=mr.id and ms.delete_flag=0 and mr.delete_flag=0 and mr.status>7 and mr.start between #{start} and #{end}
) zj on type.dict_value=zj.value
where type.dict_type='mm_service' and type.status=0 group by type.dict_label, type.dict_sort order by type.dict_sort
where type.dict_type='mm_service' and type.status=0 group by type.dict_label order by type.dict_sort
]]>
</select>
@ -82,7 +82,7 @@
and mr.status>7 and mr.start between #{start} and #{end}) jl
on type.dict_value=jl.typeid
where type.dict_type='mm_type' and type.status=0
group by type.dict_label, type.dict_sort order by type.dict_sort
group by type.dict_label order by type.dict_sort
]]>
</select>

View File

@ -25,7 +25,7 @@ public class MyParkLineHandler implements TenantLineHandler {
"ics_apply_settle_file", "ics_apply_move_in_file", "ics_activity","ics_customer_staff","ics_customer","tb_customer_ticket","tb_reservation","tb_reservation_person",
"tb_room_content","tb_room_item","tb_room_item_by_room","tb_room_serve_by_room","tb_room_serve","tb_equipment","tb_staff_customer",
"tb_room_equipment","tb_room_record","tb_room_serve","tb_showroom","tb_showroom_record","tb_ticket","tb_user_equipment","tb_visitor_person",
"ics_repair","ics_repair_remind","ics_repair_address_floor","ics_meeting_reservation","ics_meeting_room"
"ics_repair","ics_repair_remind","ics_repair_address_floor","ics_meeting_reservation","ics_meeting_room","ics_meeting_waiter"
};
/**

View File

@ -25,7 +25,7 @@ public class MyTenantLineHandler implements TenantLineHandler {
"ics_apply_settle_file", "ics_apply_move_in_file", "ics_activity","ics_customer_staff","ics_customer","tb_customer_ticket","tb_reservation","tb_reservation_person",
"tb_room_content","tb_room_item","tb_room_item_by_room","tb_room_serve_by_room","tb_room_serve","tb_equipment","tb_staff_customer",
"tb_room_equipment","tb_room_record","tb_room_serve","tb_showroom","tb_showroom_record","tb_ticket","tb_user_equipment","tb_visitor_person",
"ics_repair","ics_repair_remind","ics_repair_address_floor","ics_meeting_reservation","ics_meeting_room"
"ics_repair","ics_repair_remind","ics_repair_address_floor","ics_meeting_reservation","ics_meeting_room","ics_meeting_waiter"
};
/**

View File

@ -20,7 +20,7 @@ spring:
# url: jdbc:mysql://192.168.0.50:3306/dbd-meeting?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
# username: root
# password: boyuekeji2023
url: jdbc:mysql://222.184.49.22:3306/shoot-hand?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
url: jdbc:mysql://222.184.49.22:3306/shoot-hand-prod?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
username: root
password: boyue1!Z
# 从库数据源