From 84282c0bed4337bdeb0c8bc3e240c593398fbef4 Mon Sep 17 00:00:00 2001
From: 杜洪波 <1074825718@qq.com>
Date: 星期一, 29 九月 2025 18:12:35 +0800
Subject: [PATCH] 会议看板代码提交
---
src/main/java/com/product/administration/service/ConferenceManagerService.java | 150 +++++++++++++++++++++++++++++++++++++++++++++----
1 files changed, 137 insertions(+), 13 deletions(-)
diff --git a/src/main/java/com/product/administration/service/ConferenceManagerService.java b/src/main/java/com/product/administration/service/ConferenceManagerService.java
index 0474f56..ccae2fc 100644
--- a/src/main/java/com/product/administration/service/ConferenceManagerService.java
+++ b/src/main/java/com/product/administration/service/ConferenceManagerService.java
@@ -36,6 +36,9 @@
import java.text.Format;
import java.text.ParseException;
import java.text.SimpleDateFormat;
+import java.time.DayOfWeek;
+import java.time.LocalDate;
+import java.time.format.DateTimeFormatter;
import java.util.*;
/**
@@ -211,11 +214,138 @@
public boolean delConferenceApply(FieldSetEntity fse) throws BaseException {
return baseDao.delete(fse.getTableName(), fse.getUUID().split(","));
}
+
+ @Override
+ @Transactional
+ public DataTableEntity getKanBanData(FieldSetEntity fse) {
+ String queryStartDate = fse.getString("query_start_date");
+ String queryEndDate = fse.getString("query_end_date");
+ StringBuilder sbSql = new StringBuilder();
+ sbSql.append("SELECT \n");
+ sbSql.append(" A.meeting_room AS meeting_room_uuid, \n");
+ sbSql.append(" start_time, \n");
+ sbSql.append(" end_time, \n");
+ sbSql.append(" DATE(start_time) as start_date, \n");
+ sbSql.append(" DATE(end_time) as end_date, \n");
+ sbSql.append(" TIME(start_time) as start_time_part, \n");
+ sbSql.append(" TIME(end_time) as end_time_part, \n");
+ sbSql.append(" HOUR(start_time) as start_hour, \n");
+ sbSql.append(" HOUR(end_time) as end_hour, \n");
+ sbSql.append(" DATEDIFF(end_time, start_time) AS diff_day, \n");
+ sbSql.append(" (SELECT room_name FROM product_oa_conference_room_config WHERE uuid = A.meeting_room) as meeting_room \n");
+ sbSql.append("FROM product_oa_conference_apply A \n");
+ sbSql.append("WHERE (end_time >= ? AND start_time <= ?)");
+
+ DataTableEntity dtRecord = baseDao.listTable(sbSql.toString(), new Object[] {queryStartDate, queryEndDate + " 23:59:59"});
+ DataTableEntity dtRoom = baseDao.listTable(CmnConst.PRODUCT_OA_CONFERENCE_ROOM_CONFIG, "");
+
+ // 鍒濆鍖栦細璁璁板綍
+ Map<String, FieldSetEntity> roomRecord = new HashMap<>();
+ for (int i = 0; i < dtRoom.getRows(); i++) {
+ FieldSetEntity fseRoom = dtRoom.getFieldSetEntity(i);
+ FieldSetEntity fseRoomMeeting = new FieldSetEntity(CmnConst.PRODUCT_OA_CONFERENCE_APPLY);
+ fseRoomMeeting.setValue("room_name", fseRoom.getString("room_name"));
+ fseRoomMeeting.setValue("room_uuid", fseRoom.getString("uuid"));
+ roomRecord.put(fseRoom.getString("room_name"), fseRoomMeeting);
+ }
+
+ DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
+ LocalDate queryStart = LocalDate.parse(queryStartDate, formatter);
+ LocalDate queryEnd = LocalDate.parse(queryEndDate, formatter);
+
+ // 澶勭悊浼氳璁板綍
+ for (int i = 0; i < dtRecord.getRows(); i++) {
+ FieldSetEntity record = dtRecord.getFieldSetEntity(i);
+ String meetingRoom = record.getString("meeting_room");
+ if (!roomRecord.containsKey(meetingRoom)) continue;
+
+ FieldSetEntity roomMeeting = roomRecord.get(meetingRoom);
+
+ String startDateStr = record.getString("start_date");
+ String endDateStr = record.getString("end_date");
+ String startTime = record.getString("start_time_part");
+ String endTime = record.getString("end_time_part");
+ int startHour = record.getInteger("start_hour");
+ int endHour = record.getInteger("end_hour");
+ int diffDay = record.getInteger("diff_day");
+
+ LocalDate startDate = LocalDate.parse(startDateStr, formatter);
+ LocalDate endDate = LocalDate.parse(endDateStr, formatter);
+
+ if (diffDay > 0) {
+ // 璺ㄥぉ浼氳 - 澶勭悊姣忎竴澶�
+ LocalDate currentDate = startDate.isBefore(queryStart) ? queryStart : startDate;
+ LocalDate lastDate = endDate.isAfter(queryEnd) ? queryEnd : endDate;
+
+ while (!currentDate.isAfter(lastDate)) {
+ DayOfWeek dayOfWeek = currentDate.getDayOfWeek();
+ boolean isFirstDay = currentDate.equals(startDate);
+ boolean isLastDay = currentDate.equals(endDate);
+
+ if (isFirstDay) {
+ // 寮�濮嬫棩
+ if (startHour < 12) {
+ // 涓婂崍寮�濮嬶紝鎷嗗垎鎴愪笂鍗堟鍜屼笅鍗堝叏澶�
+ addTimeSlot(roomMeeting, dayOfWeek + "_AM", startTime + "-12:00:00");
+ addTimeSlot(roomMeeting, dayOfWeek + "_PM", "12:00:00-00:00:00");
+ } else {
+ // 涓嬪崍寮�濮嬶紝鍙湁涓嬪崍娈�
+ addTimeSlot(roomMeeting, dayOfWeek + "_PM", startTime + "-00:00:00");
+ }
+ } else if (isLastDay) {
+ // 缁撴潫鏃�
+ // 涓婂崍鍏ㄥぉ
+ addTimeSlot(roomMeeting, dayOfWeek + "_AM", "00:00:00-12:00:00");
+ if (endHour >= 12) {
+ // 缁撴潫鍦ㄤ笅鍗堬紝鎷嗗垎鎴愪笂鍗堝叏澶╁拰涓嬪崍娈�
+ addTimeSlot(roomMeeting, dayOfWeek + "_PM", "12:00:00-" + endTime);
+ }
+ } else {
+ // 涓棿鏃� - 鍏ㄥぉ
+ addTimeSlot(roomMeeting, dayOfWeek + "_AM", "00:00:00-12:00:00");
+ addTimeSlot(roomMeeting, dayOfWeek + "_PM", "12:00:00-00:00:00");
+ }
+
+ currentDate = currentDate.plusDays(1);
+ }
+ } else {
+ // 鍗曞ぉ浼氳
+ LocalDate date = LocalDate.parse(startDateStr, formatter);
+ DayOfWeek dayOfWeek = date.getDayOfWeek();
+
+ if (startHour < 12 && endHour > 12) {
+ // 璺ㄤ笂涓嬪崍鐨勪細璁紝鎷嗗垎鎴愪笂鍗堟鍜屼笅鍗堟
+ addTimeSlot(roomMeeting, dayOfWeek + "_AM", startTime + "-12:00:00");
+ addTimeSlot(roomMeeting, dayOfWeek + "_PM", "12:00:00-" + endTime);
+ } else if (startHour < 12) {
+ // 绾笂鍗堜細璁�
+ addTimeSlot(roomMeeting, dayOfWeek + "_AM", startTime + "-" + endTime);
+ } else {
+ // 绾笅鍗堜細璁�
+ addTimeSlot(roomMeeting, dayOfWeek + "_PM", startTime + "-" + endTime);
+ }
+ }
+ }
+
+ DataTableEntity dtKanBan = new DataTableEntity();
+ for (FieldSetEntity fseKanban : roomRecord.values()) {
+ dtKanBan.addFieldSetEntity(fseKanban);
+ }
+ return dtKanBan;
+ }
+
+ private void addTimeSlot(FieldSetEntity roomMeeting, String field, String timeSlot) {
+ String existing = roomMeeting.getString(field);
+ if (StringUtils.isEmpty(existing)) {
+ roomMeeting.setValue(field, timeSlot);
+ } else {
+ roomMeeting.setValue(field, existing + "," + timeSlot);
+ }
+ }
@Override
@Transactional
- public List getKbData(FieldSetEntity fse) throws BaseException {
-
+ public List getkbData(FieldSetEntity fse) throws BaseException {
List<Object>param=new ArrayList<>();
String meeting_date= fse.getString("meeting_date");
String meeting_date_end= fse.getString("meeting_date_end");
@@ -232,11 +362,8 @@
}else {
replace_meeting_resource=replace_meeting_resource+"y.meeting_resource like '%"+split[i]+"%'";
}
-
}
-
}
-
StringBuilder bs=new StringBuilder();
bs.append(" SELECT DISTINCT g.room_name,g.uuid as meet_room_uuid,DATE_FORMAT(y.start_time, \"%d-%m-%Y %H:%i\") start_time_format,DATE_FORMAT(y.end_time, \"%d-%m-%Y %H:%i\") end_time_format,y.* ");
bs.append(" FROM product_oa_conference_room_config g");
@@ -329,8 +456,8 @@
@Override
public List getMeetingDetails(FieldSetEntity fse) throws BaseException {
String meeting_room = fse.getString("meeting_room");
- String meeting_date = fse.getString("meeting_date");
- String meeting_date_end = fse.getString("meeting_date_end");
+ String meeting_start_date = fse.getString("meeting_start_date");
+ String meeting_end_date = fse.getString("meeting_end_date");
String meeting_resource = fse.getString("meeting_resource");
String replace_meeting_resource="";
if(!StringUtils.isEmpty(meeting_resource)){
@@ -342,16 +469,13 @@
}else {
replace_meeting_resource=replace_meeting_resource+"T1.meeting_resource like '%"+split[i]+"%'";
}
-
}
-
}
-
- if(!StringUtils.isEmpty(meeting_room)&&!StringUtils.isEmpty(meeting_date)&&!StringUtils.isEmpty(meeting_date_end)){
+ if(!StringUtils.isEmpty(meeting_room)&&!StringUtils.isEmpty(meeting_start_date)&&!StringUtils.isEmpty(meeting_end_date)){
List<Object>param=new ArrayList<>();
param.add(meeting_room);
- param.add(meeting_date);
- param.add(meeting_date_end);
+ param.add(meeting_start_date);
+ param.add(meeting_end_date);
StringBuilder sb=new StringBuilder();
sb.append(" SELECT b.uuid,DATE_FORMAT(b.start_time, \"%Y-%m-%d\") start_time,b.start_time start_time1,b.end_time,b.meeting_topic,b.status,b.record_man as record_man_uuid, ");
sb.append(" (select user_name from product_sys_users where user_id=b.record_man) as record_man,");
--
Gitblit v1.9.2