diff --git a/.cursor/cursorrules-frontend.md b/.cursor/cursorrules-frontend.md
index 14c8639d..16f524be 100644
--- a/.cursor/cursorrules-frontend.md
+++ b/.cursor/cursorrules-frontend.md
@@ -1,386 +1,105 @@
-# Cursor Rules - Web 前端开发规范
+# Vue 3 + TypeScript 前端开发规范
-## 适用范围
+## 技术栈规范
+- Vue 3.5.13
+- TypeScript 5.8.3
+- Element Plus UI
+- Art Design Pro UI 设计规范
-- **项目目录**: `web/` (基于 Vue 3 + TypeScript + Element Plus)
-- **开发环境**: Node.js 20.15.x+, npm 10.7.x+
-- **前端访问**: http://localhost (默认 80 端口)
+## 表格组件开发规范
----
+### 1. 表格行双击查看功能(强制性)
-# Web 前端开发规范 (web/)
+#### 实现要求
+- **✅ 必须实现**: 所有数据表格必须支持行双击查看详情功能
+- **🎯 目标**: 提升用户体验,快速查看数据详情
-## 1. 技术栈规范
-
-### 核心技术
-
-- **框架**: Vue 3.5.13 + TypeScript 5.8.3
-- **UI 组件库**: Element Plus 2.9.8
-- **构建工具**: Vite 6.3.2
-- **状态管理**: Pinia 3.0.2
-- **路由管理**: Vue Router 4.5.0
-- **HTTP 客户端**: Axios 1.8.4
-- **代码风格**: ESLint 9.21.0 + Prettier 3.5.2
-- **样式预处理**: SCSS (Sass 1.87.0)
-- **原子化 CSS**: UnoCSS 66.0.0
-- **Node.js**: 20.15.x+ (推荐 20.15.0)
-- **npm**: 10.7.x+
-
-### 环境要求
-
-- **开发环境**: 支持本地环境或阿里云测试环境
-- **数据库**: MySQL/Redis 支持本机安装或使用阿里云环境
-- **前端访问**: http://localhost (默认 80 端口)
-- **后端服务**: http://localhost:8080
-
-## 🔴 前端模块管理规范(强制性,2025-01-23新增)
-
-### 📦 前端模块文件夹规范
-
-**⚠️ 基于后端模块工程统一规划,前端必须建立对应的模块文件夹结构!**
-
-#### 🏗️ 模块命名和位置规范
-
-**界面文件夹位置**: `web/src/views/{模块简称}/`
-**API文件夹位置**: `web/src/api/{模块简称}/`
-
-**已规划模块列表**:
-- ✅ `hq` - 后勤管理模块 (已完成)
-- ✅ `rs` - 人事管理模块
-- ✅ `cw` - 财务管理模块
-- ✅ `aqbw` - 安全保卫管理模块
-- ✅ `zsjy` - 招生就业管理模块
-- ✅ `xg` - 学工管理模块
-
-#### 📁 标准目录结构
-
-**界面文件夹结构** (web/src/views/{模块简称}/):
-```
-web/src/views/{模块简称}/
-├── README.md # 模块说明文档
-├── {功能模块1}/ # 按功能模块细分
-│ ├── index.vue # 列表页面
-│ ├── add.vue # 新增页面
-│ ├── edit.vue # 编辑页面
-│ └── detail.vue # 详情页面
-├── {功能模块2}/
-│ └── ...
-└── components/ # 模块内公共组件
- └── ...
-```
-
-**API文件夹结构** (web/src/api/{模块简称}/):
-```
-web/src/api/{模块简称}/
-├── index.ts # API入口文件
-├── README.md # API接口说明文档
-├── types.ts # 类型定义文件
-├── {功能模块1}/ # 按功能模块细分
-│ └── index.ts # 功能模块API接口
-├── {功能模块2}/
-│ └── index.ts
-└── ...
-```
-
-#### 🎯 文件命名规范
-
-**Vue组件文件**:
-- 页面组件: PascalCase (如: `UserList.vue`)
-- 组件文件: kebab-case (如: `user-form.vue`)
-
-**TypeScript文件**:
-- API文件: kebab-case (如: `user-api.ts`)
-- 类型文件: kebab-case (如: `user-types.ts`)
-
-**路由命名**:
-- 路由路径: kebab-case (如: `/rs/employee-list`)
-- 路由名称: camelCase (如: `rsEmployeeList`)
-
-#### 🔐 权限命名规范
-
-**前端权限指令格式**: `v-hasPermi="'{模块简称}:{功能}:{操作}'"`
-
-**示例**:
+#### 标准实现方式
```vue
-
-新增员工
+
+
+
+
-
-查看预算
-
-
-编辑
+
+
+
+
```
-#### 📋 路由配置规范
-
-**路由路径格式**: `/{模块简称}/{功能模块}`
-
-**router配置示例**:
+#### 标准事件处理
```typescript
-// router/modules/rs.ts - 人事管理模块路由
-export default {
- path: '/rs',
- name: 'Rs',
- component: () => import('@/layout/index.vue'),
- redirect: '/rs/employee',
- meta: {
- title: '人事管理',
- icon: 'peoples',
- rank: 3
- },
- children: [
- {
- path: '/rs/employee',
- name: 'RsEmployee',
- component: () => import('@/views/rs/employee/index.vue'),
- meta: {
- title: '员工管理',
- keepAlive: true
- }
- },
- {
- path: '/rs/department',
- name: 'RsDepartment',
- component: () => import('@/views/rs/department/index.vue'),
- meta: {
- title: '部门管理',
- keepAlive: true
- }
- }
- ]
-}
+/** 查看按钮操作 */
+const handleView = async (row: any) => {
+ // 1. 复制数据到查看表单
+ Object.assign(viewForm, row);
+
+ // 2. 处理特殊字段(如图片列表等)
+ if (row.images) {
+ viewImageList.value = row.images.split(',').filter((img: string) => img.trim() !== '');
+ }
+
+ // 3. 显示对话框
+ viewDialog.visible = true;
+ viewDialog.title = '查看详情';
+};
```
-#### 🚨 前端模块开发检查清单
+#### 最佳实践建议
+1. 查看对话框宽度建议 800px-1000px,根据内容自适应
+2. 详情展示采用只读表单形式,提供良好的数据展示结构
+3. 对于图片、文件等特殊字段,需要合适的预览组件
+4. 长文本内容建议使用滚动容器限制高度
+5. 必要时可以在详情页面添加相关操作按钮
-**创建新模块前必须检查**:
-- [ ] 模块文件夹是否按规范命名?(`web/src/views/{简称}/`)
-- [ ] API文件夹是否对应创建?(`web/src/api/{简称}/`)
-- [ ] 是否创建了模块说明文档?(README.md)
-- [ ] 路由配置是否符合规范?
-- [ ] 权限指令是否使用正确的编码格式?
-- [ ] 是否遵循前端开发规范和UI设计标准?
-- [ ] 组件和文件命名是否符合规范?
-- [ ] API接口类型定义是否与后端VO保持一致?
+### 2. 表格长文本显示规范(强制性)
-#### 💡 模块开发最佳实践
-
-**1. 组件复用**:
-- 模块内公共组件放在`components/`目录
-- 跨模块公共组件放在`@/components/`目录
-- 使用组合式API提高代码复用性
-
-**2. 状态管理**:
-- 模块相关状态使用Pinia store管理
-- Store文件命名:`@/stores/{模块简称}.ts`
-- 避免不同模块间的状态耦合
-
-**3. 样式管理**:
-- 使用SCSS变量和mixin提高样式复用
-- 遵循Art Design Pro UI设计规范
-- 统一使用轮廓式按钮设计
-
-**4. 类型安全**:
-- 所有API接口必须定义TypeScript类型
-- 类型定义与后端VO对象保持一致
-- 使用泛型提高类型复用性
-
-#### 📝 注意事项
-
-**模块间解耦**:
-- 避免模块间直接依赖,通过事件总线或状态管理通信
-- API接口按模块严格分离
-- 路由按模块独立配置,避免交叉引用
-
-**性能优化**:
-- 页面组件使用懒加载
-- 合理使用keep-alive缓存页面状态
-- 图片资源优化和懒加载
-
-**用户体验**:
-- 统一的加载状态和错误处理
-- 合理的页面过渡动画
-- 响应式设计支持多设备访问
-
-## 2. Art Design Pro UI 规范
-
-### 设计理念
-
-基于 Art Design Pro 的设计语言,追求现代化、精致、用户友好的界面体验。注重细节、动效和用户交互的流畅性。
-
-### 颜色系统 🎨
-
-#### 主色调 (Primary Colors) - 2025 年最新版本
-
-```css
-/* 亮色主题 */
-:root {
- --art-primary: 93, 135, 255; /* 主品牌色 - 亮蓝色 #5d87ff */
- --art-secondary: 73, 190, 255; /* 辅助色 - 天蓝色 #49beff */
- --art-success: 0, 167, 58; /* 成功色 - 绿色 #00a73a */
- --art-warning: 142, 91, 0; /* 警告色 - 橙色 #8e5b00 */
- --art-error: 250, 137, 107; /* 错误色 - 红色 #fa896b */
- --art-info: 0, 75, 178; /* 信息色 - 蓝色 #004bb2 */
- --art-danger: 255, 77, 79; /* 危险色 - 红色 #ff4d4f */
-}
-
-/* 暗色主题 */
-html.dark {
- --art-primary: 93, 135, 255; /* 主品牌色 - 亮蓝色 #5d87ff */
- --art-secondary: 73, 190, 255; /* 辅助色 - 天蓝色 #49beff */
- --art-success: 19, 222, 185; /* 成功色 - 绿色 #13deb9 */
- --art-warning: 255, 174, 31; /* 警告色 - 橙色 #ffae1f */
- --art-error: 250, 137, 107; /* 错误色 - 红色 #fa896b */
- --art-info: 83, 155, 255; /* 信息色 - 蓝色 #539bff */
- --art-danger: 255, 77, 79; /* 危险色 - 红色 #ff4d4f */
-}
-```
-
-#### 背景色系统
-
-```css
-/* 浅色主题 */
-:root {
- --art-bg-color: #fafbfc; /* 页面底色 */
- --art-main-bg-color: #ffffff; /* 主要内容背景 */
- --art-bg-primary: 236, 242, 255; /* 主色背景 */
- --art-bg-secondary: 232, 247, 255; /* 辅助背景 */
- --art-bg-success: 230, 255, 250; /* 成功背景 */
- --art-bg-warning: 254, 245, 229; /* 警告背景 */
- --art-bg-error: 253, 237, 232; /* 错误背景 */
-}
-
-/* 暗色主题 */
-html.dark {
- --art-bg-color: #070707; /* 页面底色 */
- --art-main-bg-color: #161618; /* 主要内容背景 */
-}
-```
-
-#### 灰色系统
-
-```css
-:root {
- --art-gray-100: #f9f9f9; /* 浅灰 */
- --art-gray-200: #f1f1f4; /* 较浅灰 */
- --art-gray-300: #dbdfe9; /* 中浅灰 */
- --art-gray-400: #c4cada; /* 中灰 */
- --art-gray-500: #99a1b7; /* 中深灰 */
- --art-gray-600: #78829d; /* 深灰 */
- --art-gray-700: #4b5675; /* 较深灰 */
- --art-gray-800: #252f4a; /* 很深灰 */
- --art-gray-900: #071437; /* 最深灰 */
-}
-```
-
-### 轮廓式按钮设计系统 🔘
-
-#### 🎨 设计理念
-
-全面采用轮廓式(Outline)按钮设计,提供更加优雅、现代和一致的用户界面体验。
-
-#### 核心规范
-
-- **Primary 按钮**: 轮廓式主色设计,主色边框和文字,5%透明度主色背景
-- **Success 按钮**: 轮廓式成功色设计,成功色边框和文字,5%透明度成功色背景
-- **Warning 按钮**: 轮廓式警告色设计,警告色边框和文字,5%透明度警告色背景
-- **Danger 按钮**: 轮廓式危险色设计,危险色边框和文字,5%透明度危险色背景
-- **Info 按钮**: 轮廓式信息色设计,信息色边框和文字,5%透明度信息色背景
-- **Default 按钮**: 白色背景,灰色边框,灰色文字
-
-#### 交互效果
-
-- **悬浮状态**: 上移 1px + 背景透明度变为 10% + 边框透明度变为 80% + 彩色阴影
-- **点击状态**: 98%缩放 + 0.1s 快速过渡 + 背景透明度变为 15%
-- **禁用状态**: 50%透明度,禁用所有交互和变换
-
-### 🔘 列表页面按钮使用规范(2025 年最新标准)
-
-#### 工具栏按钮规范
+#### 实现要求
+- **✅ 必须实现**: 所有表格中的长文本字段必须限制显示行数
+- **🎯 目标**: 保持表格整洁美观,同时提供完整内容的查看方式
+#### 标准实现方式
```vue
-
-
-
-
-
- 新增
-
-
-
- 修改
-
-
- 删除
-
-
- 导出
-
-
-
-```
-
-#### 操作列按钮规范
-
-```vue
-
-
+
+
-
-
-
-
-
-
-
+ {{ scope.row.description }}
```
-#### 按钮使用规范总结
-
-| 位置 | 按钮类型 | 样式规范 | 示例 |
-| -------------------- | ---------------- | ---------------------- | -------------------------------------------------------------- |
-| 工具栏第一个新增按钮 | 新增 | `type="primary" plain` | `新增` |
-| 工具栏其他按钮 | 修改/删除/导出等 | 无 type(默认) | `修改` |
-| 表格操作列 | 所有操作按钮 | `link type="primary"` | `` |
-| 弹窗底部 | 确认按钮 | `type="primary"` | `确定` |
-| 弹窗底部 | 取消按钮 | 无 type(默认) | `取消` |
-
-### 圆角系统
-
+#### 标准样式定义
```css
-:root {
- --border-radius-xs: 4px; /* 超小元素 (checkbox等) */
- --border-radius-sm: 6px; /* 小元素 (下拉选项、关闭按钮等) */
- --border-radius-md: 8px; /* 表单控件 (input、select、button等) */
- --border-radius-lg: 12px; /* 容器组件 (card、table、dialog等) */
- --border-radius-xl: 12px;
- --border-radius-2xl: 16px;
- --border-radius-full: 50%;
+/* 长文本单元格样式 */
+.description-cell {
+ display: -webkit-box;
+ -webkit-box-orient: vertical;
+ -webkit-line-clamp: 3; /* 显示3行 */
+ overflow: hidden;
+ text-overflow: ellipsis;
+ line-height: 1.5;
+ max-height: 4.5em; /* 3行 * 1.5行高 */
+ text-align: left;
+ padding: 0 10px;
}
```
-### 间距系统
+#### 最佳实践建议
+1. 统一使用3行显示限制,超出显示省略号
+2. 使用左对齐方式,提高长文本可读性
+3. 设置合适的行高和内边距
+4. 配合表格行双击查看功能,在详情弹窗中显示完整内容
+5. 必要时可以添加鼠标悬停提示(el-tooltip)显示完整内容
-```css
-:root {
- --space-xs: 4px;
- --space-sm: 8px;
- --space-md: 12px;
- --space-lg: 16px;
- --space-xl: 20px;
- --space-2xl: 24px;
- --space-3xl: 32px;
- --space-4xl: 48px;
- --space-5xl: 64px;
-}
-```
-
-## 3. 组件开发规范
-
-### Vue 组件结构标准
+### 3. 组件开发标准和页面模板
```vue
@@ -425,8 +144,6 @@ onMounted(() => {
```
-### 页面开发规范
-
#### 列表页面标准模板
```vue
@@ -604,9 +321,7 @@ const resetForm = () => {
```
-## 4. API 开发规范
-
-### API 接口定义标准
+### 3. API接口定义和状态管理
```typescript
// api/[module]/index.ts
@@ -816,7 +531,89 @@ const moduleRouter: RouteRecordRaw = {
export default moduleRouter;
```
-## 7. 项目架构规范
+## 7. 搜索表单布局规范(强制性)
+
+### 7.1 设计目标
+
+1. **一致性**:所有列表页面的检索栏保持统一外观和交互。
+2. **响应式**:在 1920/1440/1280 等常用分辨率下均能保持整洁布局。
+3. **易维护**:通过统一的栅格 + 样式类,后续页面可快速复用。
+
+### 7.2 栅格布局
+
+1. 采用 Element Plus `el-row` / `el-col` 栅格系统。
+2. **每行固定 4 个检索元素**,每项 `:span="6"`(24 ÷ 4)。
+3. 若检索项不足 4 个,也应保持占位对齐,避免按钮漂移。
+
+```vue
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 搜索
+ 重置
+
+
+
+
+```
+
+### 7.3 按钮固定右侧
+
+1. 统一在搜索表单尾部添加按钮行。
+2. 使用 `.search-btn-container` 类,将按钮通过 Flex **右对齐**。
+
+```scss
+/* 搜索按钮容器样式(全局复用,可写在组件 scoped 内部)*/
+.search-btn-container {
+ display: flex;
+ justify-content: flex-end;
+ margin-top: 10px;
+
+ .el-form-item {
+ margin-bottom: 0 !important; // 清除默认 margin
+ }
+}
+```
+
+### 7.4 应用示例
+
+所有新页面或改造页面 **必须** 遵循以上规范。例如:
+
+* `hq/pm/repairOrder/index.vue`
+* `hq/pm/repairCategory/index.vue`
+* `hq/hallAudit/index.vue`
+* `hq/hallInfo/index.vue`
+* `hq/hallReservation/index.vue`
+
+### 7.5 代码检查要点
+
+1. 检查是否存在 `:inline="true"`,如有应移除。
+2. 确认每行 4 列,使用 `span=6`。
+3. 搜索/重置按钮是否放置在 `.search-btn-container` 内。
+4. scoped 样式内是否包含上述 `.search-btn-container` 定义。
+
+遵循此规范,可显著提升列表页检索区域的统一性与用户体验。
+
+## 8. 项目架构规范
### 目录结构
@@ -853,7 +650,7 @@ web/src/
- **工具文件**: camelCase,如 `formatUtils.ts`
- **类型文件**: PascalCase,如 `UserTypes.ts`
-## 8. 样式开发规范
+## 9. 样式开发规范
### SCSS 变量使用
@@ -890,7 +687,7 @@ web/src/
```
-## 9. 性能优化规范
+## 10. 性能优化规范
### 组件懒加载
@@ -911,7 +708,7 @@ const AsyncComponent = defineAsyncComponent(() => import('@/components/HeavyComp
```
-## 10. 开发最佳实践
+## 11. 开发最佳实践
### 代码规范
@@ -952,7 +749,7 @@ interface UserForm {
const user = data as UserForm;
```
-## 11. 测试规范
+## 12. 测试规范
### 单元测试
@@ -970,7 +767,7 @@ describe('UserForm', () => {
});
```
-## 12. 构建与部署
+## 13. 构建与部署
### 环境配置
diff --git a/backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/controller/HqHallReservationController.java b/backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/controller/HqHallReservationController.java
index f77a8021..4686469e 100644
--- a/backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/controller/HqHallReservationController.java
+++ b/backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/controller/HqHallReservationController.java
@@ -20,6 +20,8 @@ import org.dromara.common.excel.utils.ExcelUtil;
import org.dromara.hq.domain.vo.HqHallReservationVo;
import org.dromara.hq.domain.bo.HqHallReservationBo;
import org.dromara.hq.domain.bo.HqHallReservationAuditBo;
+import org.dromara.hq.domain.bo.HqHallTimeCheckBo;
+import org.dromara.hq.domain.vo.HqHallTimeCheckVo;
import org.dromara.hq.service.IHqHallReservationService;
import org.dromara.common.mybatis.core.page.TableDataInfo;
@@ -112,4 +114,14 @@ public class HqHallReservationController extends BaseController {
public R audit(@RequestBody HqHallReservationAuditBo auditBo) {
return toAjax(hqHallReservationService.auditByIds(auditBo));
}
+
+ /**
+ * 检查报告厅时间冲突
+ */
+ @SaCheckPermission("hq:hallReservation:query")
+ @PostMapping("/checkTimeConflict")
+ public R checkTimeConflict(@Validated @RequestBody HqHallTimeCheckBo timeCheckBo) {
+ HqHallTimeCheckVo result = hqHallReservationService.checkTimeConflict(timeCheckBo);
+ return R.ok(result);
+ }
}
diff --git a/backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/controller/PmRepairAttachmentController.java b/backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/controller/HqPmRepairAttachmentController.java
similarity index 81%
rename from backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/controller/PmRepairAttachmentController.java
rename to backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/controller/HqPmRepairAttachmentController.java
index bad2181f..3ab4a4fb 100644
--- a/backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/controller/PmRepairAttachmentController.java
+++ b/backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/controller/HqPmRepairAttachmentController.java
@@ -15,9 +15,9 @@ import org.dromara.common.log.enums.BusinessType;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.web.core.BaseController;
-import org.dromara.hq.domain.bo.PmRepairAttachmentBo;
-import org.dromara.hq.domain.vo.PmRepairAttachmentVo;
-import org.dromara.hq.service.IPmRepairAttachmentService;
+import org.dromara.hq.domain.bo.HqPmRepairAttachmentBo;
+import org.dromara.hq.domain.vo.HqPmRepairAttachmentVo;
+import org.dromara.hq.service.IHqPmRepairAttachmentService;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
@@ -35,16 +35,16 @@ import java.util.List;
@RequiredArgsConstructor
@RestController
@RequestMapping("/hq/pm/attachment")
-public class PmRepairAttachmentController extends BaseController {
+public class HqPmRepairAttachmentController extends BaseController {
- private final IPmRepairAttachmentService attachmentService;
+ private final IHqPmRepairAttachmentService attachmentService;
/**
* 查询报修附件列表
*/
// @SaCheckPermission("pm:attachment:list")
@GetMapping("/list")
- public TableDataInfo list(PmRepairAttachmentBo bo, PageQuery pageQuery) {
+ public TableDataInfo list(HqPmRepairAttachmentBo bo, PageQuery pageQuery) {
return attachmentService.queryPageList(bo, pageQuery);
}
@@ -53,8 +53,8 @@ public class PmRepairAttachmentController extends BaseController {
*/
// @SaCheckPermission("pm:attachment:list")
@GetMapping("/order/{orderId}")
- public R> getByOrderId(@PathVariable("orderId") Long orderId) {
- List list = attachmentService.queryByOrderId(orderId);
+ public R> getByOrderId(@PathVariable("orderId") Long orderId) {
+ List list = attachmentService.queryByOrderId(orderId);
return R.ok(list);
}
@@ -63,7 +63,7 @@ public class PmRepairAttachmentController extends BaseController {
*/
// @SaCheckPermission("pm:attachment:query")
@GetMapping("/{id}")
- public R getInfo(@NotNull(message = "主键不能为空") @PathVariable Long id) {
+ public R getInfo(@NotNull(message = "主键不能为空") @PathVariable Long id) {
return R.ok(attachmentService.queryById(id));
}
@@ -74,7 +74,7 @@ public class PmRepairAttachmentController extends BaseController {
@Log(title = "报修附件", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping
- public R add(@Validated(AddGroup.class) @RequestBody PmRepairAttachmentBo bo) {
+ public R add(@Validated(AddGroup.class) @RequestBody HqPmRepairAttachmentBo bo) {
return toAjax(attachmentService.insertByBo(bo));
}
@@ -85,7 +85,7 @@ public class PmRepairAttachmentController extends BaseController {
@Log(title = "报修附件", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping
- public R edit(@Validated(EditGroup.class) @RequestBody PmRepairAttachmentBo bo) {
+ public R edit(@Validated(EditGroup.class) @RequestBody HqPmRepairAttachmentBo bo) {
return toAjax(attachmentService.updateByBo(bo));
}
@@ -106,7 +106,7 @@ public class PmRepairAttachmentController extends BaseController {
// @SaCheckPermission("pm:attachment:upload")
@Log(title = "上传报修附件", businessType = BusinessType.INSERT)
@PostMapping("/upload")
- public R uploadFile(
+ public R uploadFile(
@RequestParam("orderId") Long orderId,
@RequestParam(value = "uploadStage", defaultValue = "1") String uploadStage,
@RequestParam("file") MultipartFile file,
@@ -117,7 +117,7 @@ public class PmRepairAttachmentController extends BaseController {
}
try {
- PmRepairAttachmentVo result = attachmentService.uploadFile(orderId, uploadStage, file, description);
+ HqPmRepairAttachmentVo result = attachmentService.uploadFile(orderId, uploadStage, file, description);
return R.ok(result);
} catch (Exception e) {
return R.fail("上传失败: " + e.getMessage());
@@ -130,7 +130,7 @@ public class PmRepairAttachmentController extends BaseController {
// @SaCheckPermission("pm:attachment:upload")
@Log(title = "批量上传报修附件", businessType = BusinessType.INSERT)
@PostMapping("/upload/batch")
- public R> uploadFiles(
+ public R> uploadFiles(
@RequestParam("orderId") Long orderId,
@RequestParam(value = "uploadStage", defaultValue = "1") String uploadStage,
@RequestParam("files") MultipartFile[] files,
@@ -141,7 +141,7 @@ public class PmRepairAttachmentController extends BaseController {
}
try {
- List results = attachmentService.uploadFiles(orderId, uploadStage, files,
+ List results = attachmentService.uploadFiles(orderId, uploadStage, files,
descriptions);
return R.ok(results);
} catch (Exception e) {
@@ -165,7 +165,7 @@ public class PmRepairAttachmentController extends BaseController {
// @SaCheckPermission("pm:attachment:download")
@GetMapping("/download/{id}")
public void downloadFile(@PathVariable("id") Long id, HttpServletResponse response) {
- PmRepairAttachmentVo attachment = attachmentService.queryById(id);
+ HqPmRepairAttachmentVo attachment = attachmentService.queryById(id);
if (attachment == null) {
return;
}
diff --git a/backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/controller/PmRepairCategoryController.java b/backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/controller/HqPmRepairCategoryController.java
similarity index 77%
rename from backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/controller/PmRepairCategoryController.java
rename to backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/controller/HqPmRepairCategoryController.java
index 103f5378..c6410d38 100644
--- a/backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/controller/PmRepairCategoryController.java
+++ b/backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/controller/HqPmRepairCategoryController.java
@@ -17,9 +17,9 @@ import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import org.dromara.common.log.enums.BusinessType;
import org.dromara.common.excel.utils.ExcelUtil;
-import org.dromara.hq.domain.vo.PmRepairCategoryVo;
-import org.dromara.hq.domain.bo.PmRepairCategoryBo;
-import org.dromara.hq.service.IPmRepairCategoryService;
+import org.dromara.hq.domain.vo.HqPmRepairCategoryVo;
+import org.dromara.hq.domain.bo.HqPmRepairCategoryBo;
+import org.dromara.hq.service.IHqPmRepairCategoryService;
import org.dromara.common.mybatis.core.page.TableDataInfo;
/**
@@ -32,16 +32,16 @@ import org.dromara.common.mybatis.core.page.TableDataInfo;
@RequiredArgsConstructor
@RestController
@RequestMapping("/hq/pm/repairCategory")
-public class PmRepairCategoryController extends BaseController {
+public class HqPmRepairCategoryController extends BaseController {
- private final IPmRepairCategoryService repairCategoryService;
+ private final IHqPmRepairCategoryService repairCategoryService;
/**
* 查询维修类型列表
*/
@SaCheckPermission("pm:category:list")
@GetMapping("/list")
- public TableDataInfo list(PmRepairCategoryBo bo, PageQuery pageQuery) {
+ public TableDataInfo list(HqPmRepairCategoryBo bo, PageQuery pageQuery) {
return repairCategoryService.queryPageList(bo, pageQuery);
}
@@ -51,9 +51,9 @@ public class PmRepairCategoryController extends BaseController {
@SaCheckPermission("pm:category:export")
@Log(title = "维修类型", businessType = BusinessType.EXPORT)
@PostMapping("/export")
- public void export(PmRepairCategoryBo bo, HttpServletResponse response) {
- List list = repairCategoryService.queryList(bo);
- ExcelUtil.exportExcel(list, "维修类型", PmRepairCategoryVo.class, response);
+ public void export(HqPmRepairCategoryBo bo, HttpServletResponse response) {
+ List list = repairCategoryService.queryList(bo);
+ ExcelUtil.exportExcel(list, "维修类型", HqPmRepairCategoryVo.class, response);
}
/**
@@ -61,7 +61,7 @@ public class PmRepairCategoryController extends BaseController {
*/
@SaCheckPermission("pm:category:query")
@GetMapping("/{id}")
- public R getInfo(@NotNull(message = "主键不能为空") @PathVariable Long id) {
+ public R getInfo(@NotNull(message = "主键不能为空") @PathVariable Long id) {
return R.ok(repairCategoryService.queryById(id));
}
@@ -72,7 +72,7 @@ public class PmRepairCategoryController extends BaseController {
@Log(title = "维修类型", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
- public R add(@Validated(AddGroup.class) @RequestBody PmRepairCategoryBo bo) {
+ public R add(@Validated(AddGroup.class) @RequestBody HqPmRepairCategoryBo bo) {
return toAjax(repairCategoryService.insertByBo(bo));
}
@@ -83,7 +83,7 @@ public class PmRepairCategoryController extends BaseController {
@Log(title = "维修类型", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
- public R edit(@Validated(EditGroup.class) @RequestBody PmRepairCategoryBo bo) {
+ public R edit(@Validated(EditGroup.class) @RequestBody HqPmRepairCategoryBo bo) {
return toAjax(repairCategoryService.updateByBo(bo));
}
@@ -102,7 +102,7 @@ public class PmRepairCategoryController extends BaseController {
*/
@SaCheckPermission("pm:category:tree")
@GetMapping("/tree")
- public R> tree() {
+ public R> tree() {
return R.ok(repairCategoryService.queryTree());
}
@@ -112,7 +112,7 @@ public class PmRepairCategoryController extends BaseController {
@SaCheckPermission("pm:category:options")
@GetMapping("/options")
public R>> options() {
- List list = repairCategoryService.queryTree();
+ List list = repairCategoryService.queryTree();
List> options = buildCategoryOptions(list);
return R.ok(options);
}
@@ -120,9 +120,9 @@ public class PmRepairCategoryController extends BaseController {
/**
* 构建维修类型下拉选项
*/
- private List> buildCategoryOptions(List list) {
+ private List> buildCategoryOptions(List list) {
List> result = new java.util.ArrayList<>();
- for (PmRepairCategoryVo item : list) {
+ for (HqPmRepairCategoryVo item : list) {
java.util.Map option = new java.util.HashMap<>();
option.put("value", item.getId());
option.put("label", item.getCategoryName());
diff --git a/backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/controller/PmRepairOrderController.java b/backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/controller/HqPmRepairOrderController.java
similarity index 89%
rename from backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/controller/PmRepairOrderController.java
rename to backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/controller/HqPmRepairOrderController.java
index efb88379..cbdc27a8 100644
--- a/backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/controller/PmRepairOrderController.java
+++ b/backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/controller/HqPmRepairOrderController.java
@@ -17,11 +17,11 @@ import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import org.dromara.common.log.enums.BusinessType;
import org.dromara.common.excel.utils.ExcelUtil;
-import org.dromara.hq.domain.vo.PmRepairOrderVo;
-import org.dromara.hq.domain.bo.PmRepairOrderBo;
-import org.dromara.hq.domain.vo.PmRepairAttachmentVo;
-import org.dromara.hq.service.IPmRepairOrderService;
-import org.dromara.hq.service.IPmRepairAttachmentService;
+import org.dromara.hq.domain.vo.HqPmRepairOrderVo;
+import org.dromara.hq.domain.bo.HqPmRepairOrderBo;
+import org.dromara.hq.domain.vo.HqPmRepairAttachmentVo;
+import org.dromara.hq.service.IHqPmRepairOrderService;
+import org.dromara.hq.service.IHqPmRepairAttachmentService;
import org.dromara.common.mybatis.core.page.TableDataInfo;
/**
@@ -34,18 +34,18 @@ import org.dromara.common.mybatis.core.page.TableDataInfo;
@RequiredArgsConstructor
@RestController
@RequestMapping("/hq/pm/repairOrder")
-public class PmRepairOrderController extends BaseController {
+public class HqPmRepairOrderController extends BaseController {
- private final IPmRepairOrderService repairOrderService;
- private final IPmRepairAttachmentService attachmentService;
+ private final IHqPmRepairOrderService repairOrderService;
+ private final IHqPmRepairAttachmentService attachmentService;
/**
* 查询报修工单列表
*/
@SaCheckPermission("pm:repairOrder:list")
@GetMapping("/list")
- public TableDataInfo list(PmRepairOrderBo bo, PageQuery pageQuery) {
- TableDataInfo result = repairOrderService.queryPageList(bo, pageQuery);
+ public TableDataInfo list(HqPmRepairOrderBo bo, PageQuery pageQuery) {
+ TableDataInfo result = repairOrderService.queryPageList(bo, pageQuery);
return result;
}
@@ -55,9 +55,9 @@ public class PmRepairOrderController extends BaseController {
@SaCheckPermission("pm:repairOrder:export")
@Log(title = "报修工单", businessType = BusinessType.EXPORT)
@PostMapping("/export")
- public void export(PmRepairOrderBo bo, HttpServletResponse response) {
- List list = repairOrderService.queryList(bo);
- ExcelUtil.exportExcel(list, "报修工单", PmRepairOrderVo.class, response);
+ public void export(HqPmRepairOrderBo bo, HttpServletResponse response) {
+ List list = repairOrderService.queryList(bo);
+ ExcelUtil.exportExcel(list, "报修工单", HqPmRepairOrderVo.class, response);
}
/**
@@ -65,7 +65,7 @@ public class PmRepairOrderController extends BaseController {
*/
@SaCheckPermission("pm:repairOrder:query")
@GetMapping("/{id}")
- public R getInfo(@NotNull(message = "主键不能为空") @PathVariable Long id) {
+ public R getInfo(@NotNull(message = "主键不能为空") @PathVariable Long id) {
return R.ok(repairOrderService.queryById(id));
}
@@ -76,7 +76,7 @@ public class PmRepairOrderController extends BaseController {
@Log(title = "报修工单", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
- public R add(@Validated(AddGroup.class) @RequestBody PmRepairOrderBo bo) {
+ public R add(@Validated(AddGroup.class) @RequestBody HqPmRepairOrderBo bo) {
boolean success = repairOrderService.insertByBo(bo);
if (success) {
// 返回创建的工单ID,供前端上传附件使用
@@ -93,7 +93,7 @@ public class PmRepairOrderController extends BaseController {
@Log(title = "报修工单", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
- public R edit(@Validated(EditGroup.class) @RequestBody PmRepairOrderBo bo) {
+ public R edit(@Validated(EditGroup.class) @RequestBody HqPmRepairOrderBo bo) {
return toAjax(repairOrderService.updateByBo(bo));
}
@@ -323,9 +323,9 @@ public class PmRepairOrderController extends BaseController {
*/
@SaCheckPermission("pm:repairOrder:query")
@GetMapping("/{orderId}/attachments")
- public R> getRepairAttachments(
+ public R> getRepairAttachments(
@NotNull(message = "工单ID不能为空") @PathVariable Long orderId) {
- List attachments = attachmentService.queryByOrderId(orderId);
+ List attachments = attachmentService.queryByOrderId(orderId);
return R.ok(attachments);
}
diff --git a/backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/domain/PmRepairAttachment.java b/backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/domain/HqPmRepairAttachment.java
similarity index 89%
rename from backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/domain/PmRepairAttachment.java
rename to backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/domain/HqPmRepairAttachment.java
index 7477645c..d13e98cd 100644
--- a/backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/domain/PmRepairAttachment.java
+++ b/backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/domain/HqPmRepairAttachment.java
@@ -10,15 +10,15 @@ import com.fasterxml.jackson.annotation.JsonFormat;
import java.io.Serial;
/**
- * 报修附件对象 pm_repair_attachment
+ * 报修附件对象 hq_pm_repair_attachment
*
* @author Cursor AI
* @date 2025-01-23
*/
@Data
@EqualsAndHashCode(callSuper = true)
-@TableName("pm_repair_attachment")
-public class PmRepairAttachment extends TenantEntity {
+@TableName("hq_pm_repair_attachment")
+public class HqPmRepairAttachment extends TenantEntity {
@Serial
private static final long serialVersionUID = 1L;
@@ -30,7 +30,7 @@ public class PmRepairAttachment extends TenantEntity {
private Long id;
/**
- * 报修工单ID,关联pm_repair_order.id
+ * 报修工单ID,关联hq_pm_repair_order.id
*/
private Long orderId;
diff --git a/backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/domain/PmRepairCategory.java b/backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/domain/HqPmRepairCategory.java
similarity index 93%
rename from backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/domain/PmRepairCategory.java
rename to backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/domain/HqPmRepairCategory.java
index ee9b0f87..6cacfd66 100644
--- a/backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/domain/PmRepairCategory.java
+++ b/backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/domain/HqPmRepairCategory.java
@@ -11,15 +11,15 @@ import com.fasterxml.jackson.annotation.JsonFormat;
import java.io.Serial;
/**
- * 维修类型对象 pm_repair_category
+ * 维修类型对象 hq_pm_repair_category
*
* @author Cursor AI
* @date 2025-01-23
*/
@Data
@EqualsAndHashCode(callSuper = true)
-@TableName("pm_repair_category")
-public class PmRepairCategory extends TenantEntity {
+@TableName("hq_pm_repair_category")
+public class HqPmRepairCategory extends TenantEntity {
@Serial
private static final long serialVersionUID = 1L;
diff --git a/backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/domain/PmRepairOrder.java b/backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/domain/HqPmRepairOrder.java
similarity index 94%
rename from backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/domain/PmRepairOrder.java
rename to backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/domain/HqPmRepairOrder.java
index c621b227..0a8ebc15 100644
--- a/backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/domain/PmRepairOrder.java
+++ b/backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/domain/HqPmRepairOrder.java
@@ -11,15 +11,15 @@ import com.fasterxml.jackson.annotation.JsonFormat;
import java.io.Serial;
/**
- * 报修工单对象 pm_repair_order
+ * 报修工单对象 hq_pm_repair_order
*
* @author Cursor AI
* @date 2025-01-23
*/
@Data
@EqualsAndHashCode(callSuper = true)
-@TableName("pm_repair_order")
-public class PmRepairOrder extends TenantEntity {
+@TableName("hq_pm_repair_order")
+public class HqPmRepairOrder extends TenantEntity {
@Serial
private static final long serialVersionUID = 1L;
@@ -51,7 +51,7 @@ public class PmRepairOrder extends TenantEntity {
private String repairLocation;
/**
- * 维修类型ID,关联pm_repair_category.id
+ * 维修类型ID,关联hq_pm_repair_category.id
*/
private Long categoryId;
diff --git a/backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/domain/PmRepairProgress.java b/backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/domain/HqPmRepairProgress.java
similarity index 93%
rename from backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/domain/PmRepairProgress.java
rename to backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/domain/HqPmRepairProgress.java
index 090f7101..286191ee 100644
--- a/backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/domain/PmRepairProgress.java
+++ b/backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/domain/HqPmRepairProgress.java
@@ -18,8 +18,8 @@ import java.io.Serial;
*/
@Data
@EqualsAndHashCode(callSuper = true)
-@TableName("pm_repair_progress")
-public class PmRepairProgress extends TenantEntity {
+@TableName("hq_pm_repair_progress")
+public class HqPmRepairProgress extends TenantEntity {
@Serial
private static final long serialVersionUID = 1L;
@@ -31,7 +31,7 @@ public class PmRepairProgress extends TenantEntity {
private Long id;
/**
- * 报修工单ID,关联pm_repair_order.id
+ * 报修工单ID,关联hq_pm_repair_order.id
*/
private Long orderId;
diff --git a/backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/domain/PmServiceEvaluation.java b/backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/domain/HqPmServiceEvaluation.java
similarity index 93%
rename from backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/domain/PmServiceEvaluation.java
rename to backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/domain/HqPmServiceEvaluation.java
index c312ee56..b91c0ee3 100644
--- a/backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/domain/PmServiceEvaluation.java
+++ b/backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/domain/HqPmServiceEvaluation.java
@@ -11,15 +11,15 @@ import com.fasterxml.jackson.annotation.JsonFormat;
import java.io.Serial;
/**
- * 服务评价对象 pm_service_evaluation
+ * 服务评价对象 hq_pm_service_evaluation
*
* @author Cursor AI
* @date 2025-01-23
*/
@Data
@EqualsAndHashCode(callSuper = true)
-@TableName("pm_service_evaluation")
-public class PmServiceEvaluation extends TenantEntity {
+@TableName("hq_pm_service_evaluation")
+public class HqPmServiceEvaluation extends TenantEntity {
@Serial
private static final long serialVersionUID = 1L;
@@ -31,7 +31,7 @@ public class PmServiceEvaluation extends TenantEntity {
private Long id;
/**
- * 报修工单ID,关联pm_repair_order.id
+ * 报修工单ID,关联hq_pm_repair_order.id
*/
private Long orderId;
diff --git a/backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/domain/bo/HqHallTimeCheckBo.java b/backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/domain/bo/HqHallTimeCheckBo.java
new file mode 100644
index 00000000..227a9da9
--- /dev/null
+++ b/backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/domain/bo/HqHallTimeCheckBo.java
@@ -0,0 +1,41 @@
+package org.dromara.hq.domain.bo;
+
+import lombok.Data;
+import jakarta.validation.constraints.NotNull;
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+
+/**
+ * 报告厅时间冲突检查业务对象
+ *
+ * @author wuzilong
+ * @date 2025-01-09
+ */
+@Data
+public class HqHallTimeCheckBo {
+
+ /**
+ * 报告厅ID
+ */
+ @NotNull(message = "报告厅ID不能为空")
+ private Long hallId;
+
+ /**
+ * 开始时间
+ */
+ @NotNull(message = "开始时间不能为空")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private Date startTime;
+
+ /**
+ * 结束时间
+ */
+ @NotNull(message = "结束时间不能为空")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private Date endTime;
+
+ /**
+ * 排除的预约ID(编辑时排除自己)
+ */
+ private Long excludeId;
+}
diff --git a/backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/domain/bo/PmRepairAttachmentBo.java b/backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/domain/bo/HqPmRepairAttachmentBo.java
similarity index 91%
rename from backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/domain/bo/PmRepairAttachmentBo.java
rename to backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/domain/bo/HqPmRepairAttachmentBo.java
index 444c291b..6e694b80 100644
--- a/backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/domain/bo/PmRepairAttachmentBo.java
+++ b/backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/domain/bo/HqPmRepairAttachmentBo.java
@@ -9,20 +9,20 @@ import lombok.EqualsAndHashCode;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import org.dromara.common.mybatis.core.domain.BaseEntity;
-import org.dromara.hq.domain.PmRepairAttachment;
+import org.dromara.hq.domain.HqPmRepairAttachment;
import java.util.Date;
/**
- * 报修附件业务对象 pm_repair_attachment
+ * 报修附件业务对象 hq_pm_repair_attachment
*
* @author Cursor AI
* @date 2025-01-26
*/
@Data
@EqualsAndHashCode(callSuper = true)
-@AutoMapper(target = PmRepairAttachment.class, reverseConvertGenerate = false)
-public class PmRepairAttachmentBo extends BaseEntity {
+@AutoMapper(target = HqPmRepairAttachment.class, reverseConvertGenerate = false)
+public class HqPmRepairAttachmentBo extends BaseEntity {
/**
* 主键ID
diff --git a/backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/domain/bo/PmRepairCategoryBo.java b/backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/domain/bo/HqPmRepairCategoryBo.java
similarity index 92%
rename from backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/domain/bo/PmRepairCategoryBo.java
rename to backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/domain/bo/HqPmRepairCategoryBo.java
index 9bd214ed..cbe38718 100644
--- a/backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/domain/bo/PmRepairCategoryBo.java
+++ b/backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/domain/bo/HqPmRepairCategoryBo.java
@@ -1,6 +1,6 @@
package org.dromara.hq.domain.bo;
-import org.dromara.hq.domain.PmRepairCategory;
+import org.dromara.hq.domain.HqPmRepairCategory;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
@@ -14,15 +14,15 @@ import java.util.List;
import com.fasterxml.jackson.annotation.JsonFormat;
/**
- * 维修类型业务对象 pm_repair_category
+ * 维修类型业务对象 hq_pm_repair_category
*
* @author Cursor AI
* @date 2025-01-23
*/
@Data
@EqualsAndHashCode(callSuper = true)
-@AutoMapper(target = PmRepairCategory.class, reverseConvertGenerate = false)
-public class PmRepairCategoryBo extends BaseEntity {
+@AutoMapper(target = HqPmRepairCategory.class, reverseConvertGenerate = false)
+public class HqPmRepairCategoryBo extends BaseEntity {
/**
* 主键ID
diff --git a/backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/domain/bo/PmRepairOrderBo.java b/backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/domain/bo/HqPmRepairOrderBo.java
similarity index 94%
rename from backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/domain/bo/PmRepairOrderBo.java
rename to backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/domain/bo/HqPmRepairOrderBo.java
index bcb7f069..69d6208b 100644
--- a/backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/domain/bo/PmRepairOrderBo.java
+++ b/backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/domain/bo/HqPmRepairOrderBo.java
@@ -1,6 +1,6 @@
package org.dromara.hq.domain.bo;
-import org.dromara.hq.domain.PmRepairOrder;
+import org.dromara.hq.domain.HqPmRepairOrder;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
@@ -14,15 +14,15 @@ import java.util.List;
import com.fasterxml.jackson.annotation.JsonFormat;
/**
- * 报修工单业务对象 pm_repair_order
+ * 报修工单业务对象 hq_pm_repair_order
*
* @author Cursor AI
* @date 2025-01-23
*/
@Data
@EqualsAndHashCode(callSuper = true)
-@AutoMapper(target = PmRepairOrder.class, reverseConvertGenerate = false)
-public class PmRepairOrderBo extends BaseEntity {
+@AutoMapper(target = HqPmRepairOrder.class, reverseConvertGenerate = false)
+public class HqPmRepairOrderBo extends BaseEntity {
/**
* 主键ID
diff --git a/backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/domain/bo/HqPmRepairProgressBo.java b/backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/domain/bo/HqPmRepairProgressBo.java
new file mode 100644
index 00000000..aa1729fb
--- /dev/null
+++ b/backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/domain/bo/HqPmRepairProgressBo.java
@@ -0,0 +1,124 @@
+package org.dromara.hq.domain.bo;
+
+import org.dromara.hq.domain.HqPmRepairProgress;
+import org.dromara.common.mybatis.core.domain.BaseEntity;
+import org.dromara.common.core.validate.AddGroup;
+import org.dromara.common.core.validate.EditGroup;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import jakarta.validation.constraints.*;
+
+import java.util.Date;
+import java.math.BigDecimal;
+
+/**
+ * 维修进度记录业务对象 hq_pm_repair_progress
+ *
+ * @author Cursor AI
+ * @date 2025-01-23
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@AutoMapper(target = HqPmRepairProgress.class, reverseConvertGenerate = false)
+public class HqPmRepairProgressBo extends BaseEntity {
+
+ /**
+ * 主键ID
+ */
+ @NotNull(message = "主键ID不能为空", groups = { EditGroup.class })
+ private Long id;
+
+ /**
+ * 报修工单ID,关联hq_pm_repair_order.id
+ */
+ @NotNull(message = "报修工单ID不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Long orderId;
+
+ /**
+ * 进度类型:1-工单分派,2-接收确认,3-到达现场,4-开始维修,5-进度更新,6-完成维修,7-用户评价,8-工单归档,9-其他
+ */
+ @NotBlank(message = "进度类型不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String progressType;
+
+ /**
+ * 进度状态描述
+ */
+ @NotBlank(message = "进度状态描述不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String progressStatus;
+
+ /**
+ * 进度详细描述
+ */
+ private String progressDetail;
+
+ /**
+ * 操作人ID,关联sys_user.id
+ */
+ @NotNull(message = "操作人ID不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Long operatorId;
+
+ /**
+ * 操作人姓名
+ */
+ @NotBlank(message = "操作人姓名不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String operatorName;
+
+ /**
+ * 操作人角色:user-用户,admin-管理员,worker-维修员
+ */
+ @NotBlank(message = "操作人角色不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String operatorRole;
+
+ /**
+ * 操作位置信息
+ */
+ private String locationInfo;
+
+ /**
+ * GPS纬度
+ */
+ private BigDecimal gpsLatitude;
+
+ /**
+ * GPS经度
+ */
+ private BigDecimal gpsLongitude;
+
+ /**
+ * 操作时间
+ */
+ @NotNull(message = "操作时间不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Date operationTime;
+
+ /**
+ * 预计耗时(分钟)
+ */
+ private Integer estimatedDuration;
+
+ /**
+ * 关联附件ID列表(逗号分隔)
+ */
+ private String attachmentIds;
+
+ /**
+ * 下一步计划
+ */
+ private String nextStep;
+
+ /**
+ * 遇到的问题
+ */
+ private String issuesEncountered;
+
+ /**
+ * 需要的材料
+ */
+ private String materialsNeeded;
+
+ /**
+ * 备注信息
+ */
+ private String remark;
+
+}
diff --git a/backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/domain/bo/HqPmServiceEvaluationBo.java b/backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/domain/bo/HqPmServiceEvaluationBo.java
new file mode 100644
index 00000000..a362eac7
--- /dev/null
+++ b/backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/domain/bo/HqPmServiceEvaluationBo.java
@@ -0,0 +1,160 @@
+package org.dromara.hq.domain.bo;
+
+import org.dromara.hq.domain.HqPmServiceEvaluation;
+import org.dromara.common.mybatis.core.domain.BaseEntity;
+import org.dromara.common.core.validate.AddGroup;
+import org.dromara.common.core.validate.EditGroup;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import jakarta.validation.constraints.*;
+
+import java.util.Date;
+import java.math.BigDecimal;
+
+/**
+ * 服务评价业务对象 hq_pm_service_evaluation
+ *
+ * @author Cursor AI
+ * @date 2025-01-23
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@AutoMapper(target = HqPmServiceEvaluation.class, reverseConvertGenerate = false)
+public class HqPmServiceEvaluationBo extends BaseEntity {
+
+ /**
+ * 主键ID
+ */
+ @NotNull(message = "主键ID不能为空", groups = { EditGroup.class })
+ private Long id;
+
+ /**
+ * 报修工单ID,关联hq_pm_repair_order.id
+ */
+ @NotNull(message = "报修工单ID不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Long orderId;
+
+ /**
+ * 评价人ID,关联sys_user.id
+ */
+ @NotNull(message = "评价人ID不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Long evaluatorId;
+
+ /**
+ * 评价人姓名
+ */
+ @NotBlank(message = "评价人姓名不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String evaluatorName;
+
+ /**
+ * 被评价维修员ID,关联sys_user.id
+ */
+ @NotNull(message = "被评价维修员ID不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Long evaluatedWorkerId;
+
+ /**
+ * 被评价维修员姓名
+ */
+ @NotBlank(message = "被评价维修员姓名不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String evaluatedWorkerName;
+
+ /**
+ * 综合评价得分(1.0-5.0)
+ */
+ @NotNull(message = "综合评价得分不能为空", groups = { AddGroup.class, EditGroup.class })
+ @DecimalMin(value = "1.0", message = "综合评价得分不能小于1.0")
+ @DecimalMax(value = "5.0", message = "综合评价得分不能大于5.0")
+ private BigDecimal overallScore;
+
+ /**
+ * 维修质量得分(1.0-5.0)
+ */
+ @DecimalMin(value = "1.0", message = "维修质量得分不能小于1.0")
+ @DecimalMax(value = "5.0", message = "维修质量得分不能大于5.0")
+ private BigDecimal qualityScore;
+
+ /**
+ * 服务态度得分(1.0-5.0)
+ */
+ @DecimalMin(value = "1.0", message = "服务态度得分不能小于1.0")
+ @DecimalMax(value = "5.0", message = "服务态度得分不能大于5.0")
+ private BigDecimal attitudeScore;
+
+ /**
+ * 响应速度得分(1.0-5.0)
+ */
+ @DecimalMin(value = "1.0", message = "响应速度得分不能小于1.0")
+ @DecimalMax(value = "5.0", message = "响应速度得分不能大于5.0")
+ private BigDecimal responseSpeedScore;
+
+ /**
+ * 沟通效果得分(1.0-5.0)
+ */
+ @DecimalMin(value = "1.0", message = "沟通效果得分不能小于1.0")
+ @DecimalMax(value = "5.0", message = "沟通效果得分不能大于5.0")
+ private BigDecimal communicationScore;
+
+ /**
+ * 文字评价内容
+ */
+ private String evaluationContent;
+
+ /**
+ * 满意度等级:1-非常满意,2-满意,3-一般,4-不满意,5-非常不满意
+ */
+ @NotBlank(message = "满意度等级不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String satisfactionLevel;
+
+ /**
+ * 是否匿名评价(0-实名,1-匿名)
+ */
+ private Integer isAnonymous;
+
+ /**
+ * 是否公开显示(0-不公开,1-公开)
+ */
+ private Integer isPublic;
+
+ /**
+ * 评价时间
+ */
+ @NotNull(message = "评价时间不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Date evaluationTime;
+
+ /**
+ * 服务开始时间
+ */
+ private Date serviceStartTime;
+
+ /**
+ * 服务结束时间
+ */
+ private Date serviceEndTime;
+
+ /**
+ * 服务时长(分钟)
+ */
+ private Integer serviceDuration;
+
+ /**
+ * 正面标签(逗号分隔)
+ */
+ private String positiveTags;
+
+ /**
+ * 负面标签(逗号分隔)
+ */
+ private String negativeTags;
+
+ /**
+ * 改进建议
+ */
+ private String improvementSuggestions;
+
+ /**
+ * 备注信息
+ */
+ private String remark;
+
+}
diff --git a/backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/domain/vo/HqHallReservationVo.java b/backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/domain/vo/HqHallReservationVo.java
index 71d7dcf0..7b97c971 100644
--- a/backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/domain/vo/HqHallReservationVo.java
+++ b/backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/domain/vo/HqHallReservationVo.java
@@ -113,4 +113,29 @@ public class HqHallReservationVo implements Serializable {
@ExcelProperty(value = "审核备注")
private String auditRemark;
+ // ========== 基础字段(强制性,所有VO类必须包含) ==========
+
+ /**
+ * 创建者
+ */
+ private Long createBy;
+
+ /**
+ * 创建时间
+ */
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @ExcelProperty(value = "创建时间")
+ private Date createTime;
+
+ /**
+ * 更新者
+ */
+ private Long updateBy;
+
+ /**
+ * 更新时间
+ */
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private Date updateTime;
+
}
diff --git a/backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/domain/vo/HqHallTimeCheckVo.java b/backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/domain/vo/HqHallTimeCheckVo.java
new file mode 100644
index 00000000..4b89ec99
--- /dev/null
+++ b/backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/domain/vo/HqHallTimeCheckVo.java
@@ -0,0 +1,57 @@
+package org.dromara.hq.domain.vo;
+
+import lombok.Data;
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * 报告厅时间冲突检查结果视图对象
+ *
+ * @author wuzilong
+ * @date 2025-01-09
+ */
+@Data
+public class HqHallTimeCheckVo implements Serializable {
+
+ @Serial
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 是否存在时间冲突
+ */
+ private Boolean hasConflict;
+
+ /**
+ * 冲突的预约记录列表
+ */
+ private List conflictList;
+
+ /**
+ * 冲突描述信息
+ */
+ private String conflictMessage;
+
+ public HqHallTimeCheckVo() {
+ }
+
+ public HqHallTimeCheckVo(Boolean hasConflict, List conflictList, String conflictMessage) {
+ this.hasConflict = hasConflict;
+ this.conflictList = conflictList;
+ this.conflictMessage = conflictMessage;
+ }
+
+ /**
+ * 创建无冲突结果
+ */
+ public static HqHallTimeCheckVo noConflict() {
+ return new HqHallTimeCheckVo(false, List.of(), "无时间冲突");
+ }
+
+ /**
+ * 创建有冲突结果
+ */
+ public static HqHallTimeCheckVo hasConflict(List conflictList, String message) {
+ return new HqHallTimeCheckVo(true, conflictList, message);
+ }
+}
diff --git a/backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/domain/vo/PmRepairAttachmentVo.java b/backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/domain/vo/HqPmRepairAttachmentVo.java
similarity index 92%
rename from backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/domain/vo/PmRepairAttachmentVo.java
rename to backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/domain/vo/HqPmRepairAttachmentVo.java
index efe7316e..9a8faa9c 100644
--- a/backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/domain/vo/PmRepairAttachmentVo.java
+++ b/backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/domain/vo/HqPmRepairAttachmentVo.java
@@ -5,22 +5,22 @@ import cn.idev.excel.annotation.ExcelProperty;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
-import org.dromara.hq.domain.PmRepairAttachment;
+import org.dromara.hq.domain.HqPmRepairAttachment;
import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
/**
- * 报修附件视图对象 pm_repair_attachment
+ * 报修附件视图对象 hq_pm_repair_attachment
*
* @author Cursor AI
* @date 2025-01-26
*/
@Data
@ExcelIgnoreUnannotated
-@AutoMapper(target = PmRepairAttachment.class)
-public class PmRepairAttachmentVo implements Serializable {
+@AutoMapper(target = HqPmRepairAttachment.class)
+public class HqPmRepairAttachmentVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
diff --git a/backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/domain/vo/PmRepairCategoryVo.java b/backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/domain/vo/HqPmRepairCategoryVo.java
similarity index 92%
rename from backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/domain/vo/PmRepairCategoryVo.java
rename to backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/domain/vo/HqPmRepairCategoryVo.java
index be0abd13..ddf74f9b 100644
--- a/backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/domain/vo/PmRepairCategoryVo.java
+++ b/backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/domain/vo/HqPmRepairCategoryVo.java
@@ -4,7 +4,7 @@ import java.util.Date;
import java.math.BigDecimal;
import java.util.List;
import com.fasterxml.jackson.annotation.JsonFormat;
-import org.dromara.hq.domain.PmRepairCategory;
+import org.dromara.hq.domain.HqPmRepairCategory;
import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
import cn.idev.excel.annotation.ExcelProperty;
import org.dromara.common.excel.annotation.ExcelDictFormat;
@@ -16,15 +16,15 @@ import java.io.Serial;
import java.io.Serializable;
/**
- * 维修类型视图对象 pm_repair_category
+ * 维修类型视图对象 hq_pm_repair_category
*
* @author Cursor AI
* @date 2025-01-23
*/
@Data
@ExcelIgnoreUnannotated
-@AutoMapper(target = PmRepairCategory.class)
-public class PmRepairCategoryVo implements Serializable {
+@AutoMapper(target = HqPmRepairCategory.class)
+public class HqPmRepairCategoryVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
@@ -156,6 +156,6 @@ public class PmRepairCategoryVo implements Serializable {
/**
* 子分类列表(用于树形结构)
*/
- private List children;
+ private List children;
}
diff --git a/backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/domain/vo/PmRepairOrderVo.java b/backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/domain/vo/HqPmRepairOrderVo.java
similarity index 96%
rename from backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/domain/vo/PmRepairOrderVo.java
rename to backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/domain/vo/HqPmRepairOrderVo.java
index 65f971f7..d8aee82e 100644
--- a/backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/domain/vo/PmRepairOrderVo.java
+++ b/backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/domain/vo/HqPmRepairOrderVo.java
@@ -3,7 +3,7 @@ package org.dromara.hq.domain.vo;
import java.util.Date;
import java.math.BigDecimal;
import com.fasterxml.jackson.annotation.JsonFormat;
-import org.dromara.hq.domain.PmRepairOrder;
+import org.dromara.hq.domain.HqPmRepairOrder;
import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
import cn.idev.excel.annotation.ExcelProperty;
import org.dromara.common.excel.annotation.ExcelDictFormat;
@@ -15,15 +15,15 @@ import java.io.Serial;
import java.io.Serializable;
/**
- * 报修工单视图对象 pm_repair_order
+ * 报修工单视图对象 hq_pm_repair_order
*
* @author Cursor AI
* @date 2025-01-23
*/
@Data
@ExcelIgnoreUnannotated
-@AutoMapper(target = PmRepairOrder.class)
-public class PmRepairOrderVo implements Serializable {
+@AutoMapper(target = HqPmRepairOrder.class)
+public class HqPmRepairOrderVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
diff --git a/backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/domain/vo/HqPmRepairProgressVo.java b/backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/domain/vo/HqPmRepairProgressVo.java
new file mode 100644
index 00000000..98270f1a
--- /dev/null
+++ b/backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/domain/vo/HqPmRepairProgressVo.java
@@ -0,0 +1,171 @@
+package org.dromara.hq.domain.vo;
+
+import java.util.Date;
+import java.math.BigDecimal;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.dromara.hq.domain.HqPmRepairProgress;
+import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
+import cn.idev.excel.annotation.ExcelProperty;
+import org.dromara.common.excel.annotation.ExcelDictFormat;
+import org.dromara.common.excel.convert.ExcelDictConvert;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+
+/**
+ * 维修进度记录视图对象 hq_pm_repair_progress
+ *
+ * @author Cursor AI
+ * @date 2025-01-23
+ */
+@Data
+@ExcelIgnoreUnannotated
+@AutoMapper(target = HqPmRepairProgress.class)
+public class HqPmRepairProgressVo implements Serializable {
+
+ @Serial
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键ID
+ */
+ @ExcelProperty(value = "主键ID")
+ private Long id;
+
+ /**
+ * 报修工单ID,关联hq_pm_repair_order.id
+ */
+ @ExcelProperty(value = "报修工单ID")
+ private Long orderId;
+
+ /**
+ * 进度类型:1-工单分派,2-接收确认,3-到达现场,4-开始维修,5-进度更新,6-完成维修,7-用户评价,8-工单归档,9-其他
+ */
+ @ExcelProperty(value = "进度类型", converter = ExcelDictConvert.class)
+ @ExcelDictFormat(dictType = "pm_progress_type")
+ private String progressType;
+
+ /**
+ * 进度状态描述
+ */
+ @ExcelProperty(value = "进度状态描述")
+ private String progressStatus;
+
+ /**
+ * 进度详细描述
+ */
+ @ExcelProperty(value = "进度详细描述")
+ private String progressDetail;
+
+ /**
+ * 操作人ID,关联sys_user.id
+ */
+ @ExcelProperty(value = "操作人ID")
+ private Long operatorId;
+
+ /**
+ * 操作人姓名
+ */
+ @ExcelProperty(value = "操作人姓名")
+ private String operatorName;
+
+ /**
+ * 操作人角色:user-用户,admin-管理员,worker-维修员
+ */
+ @ExcelProperty(value = "操作人角色", converter = ExcelDictConvert.class)
+ @ExcelDictFormat(dictType = "pm_operator_role")
+ private String operatorRole;
+
+ /**
+ * 操作位置信息
+ */
+ @ExcelProperty(value = "操作位置信息")
+ private String locationInfo;
+
+ /**
+ * GPS纬度
+ */
+ @ExcelProperty(value = "GPS纬度")
+ private BigDecimal gpsLatitude;
+
+ /**
+ * GPS经度
+ */
+ @ExcelProperty(value = "GPS经度")
+ private BigDecimal gpsLongitude;
+
+ /**
+ * 操作时间
+ */
+ @ExcelProperty(value = "操作时间")
+ private Date operationTime;
+
+ /**
+ * 预计耗时(分钟)
+ */
+ @ExcelProperty(value = "预计耗时(分钟)")
+ private Integer estimatedDuration;
+
+ /**
+ * 关联附件ID列表(逗号分隔)
+ */
+ @ExcelProperty(value = "关联附件ID列表")
+ private String attachmentIds;
+
+ /**
+ * 下一步计划
+ */
+ @ExcelProperty(value = "下一步计划")
+ private String nextStep;
+
+ /**
+ * 遇到的问题
+ */
+ @ExcelProperty(value = "遇到的问题")
+ private String issuesEncountered;
+
+ /**
+ * 需要的材料
+ */
+ @ExcelProperty(value = "需要的材料")
+ private String materialsNeeded;
+
+ /**
+ * 备注信息
+ */
+ @ExcelProperty(value = "备注信息")
+ private String remark;
+
+ /**
+ * 租户ID
+ */
+ private String tenantId;
+
+ /**
+ * 创建部门
+ */
+ private Long createDept;
+
+ /**
+ * 创建者
+ */
+ private Long createBy;
+
+ /**
+ * 创建时间
+ */
+ private Date createTime;
+
+ /**
+ * 更新者
+ */
+ private Long updateBy;
+
+ /**
+ * 更新时间
+ */
+ private Date updateTime;
+
+}
diff --git a/backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/domain/vo/HqPmServiceEvaluationVo.java b/backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/domain/vo/HqPmServiceEvaluationVo.java
new file mode 100644
index 00000000..628e8027
--- /dev/null
+++ b/backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/domain/vo/HqPmServiceEvaluationVo.java
@@ -0,0 +1,207 @@
+package org.dromara.hq.domain.vo;
+
+import java.util.Date;
+import java.math.BigDecimal;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.dromara.hq.domain.HqPmServiceEvaluation;
+import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
+import cn.idev.excel.annotation.ExcelProperty;
+import org.dromara.common.excel.annotation.ExcelDictFormat;
+import org.dromara.common.excel.convert.ExcelDictConvert;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+
+/**
+ * 服务评价视图对象 hq_pm_service_evaluation
+ *
+ * @author Cursor AI
+ * @date 2025-01-23
+ */
+@Data
+@ExcelIgnoreUnannotated
+@AutoMapper(target = HqPmServiceEvaluation.class)
+public class HqPmServiceEvaluationVo implements Serializable {
+
+ @Serial
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键ID
+ */
+ @ExcelProperty(value = "主键ID")
+ private Long id;
+
+ /**
+ * 报修工单ID,关联hq_pm_repair_order.id
+ */
+ @ExcelProperty(value = "报修工单ID")
+ private Long orderId;
+
+ /**
+ * 评价人ID,关联sys_user.id
+ */
+ @ExcelProperty(value = "评价人ID")
+ private Long evaluatorId;
+
+ /**
+ * 评价人姓名
+ */
+ @ExcelProperty(value = "评价人姓名")
+ private String evaluatorName;
+
+ /**
+ * 被评价维修员ID,关联sys_user.id
+ */
+ @ExcelProperty(value = "维修员ID")
+ private Long evaluatedWorkerId;
+
+ /**
+ * 被评价维修员姓名
+ */
+ @ExcelProperty(value = "维修员姓名")
+ private String evaluatedWorkerName;
+
+ /**
+ * 综合评价得分(1.0-5.0)
+ */
+ @ExcelProperty(value = "综合评价得分")
+ private BigDecimal overallScore;
+
+ /**
+ * 维修质量得分(1.0-5.0)
+ */
+ @ExcelProperty(value = "维修质量得分")
+ private BigDecimal qualityScore;
+
+ /**
+ * 服务态度得分(1.0-5.0)
+ */
+ @ExcelProperty(value = "服务态度得分")
+ private BigDecimal attitudeScore;
+
+ /**
+ * 响应速度得分(1.0-5.0)
+ */
+ @ExcelProperty(value = "响应速度得分")
+ private BigDecimal responseSpeedScore;
+
+ /**
+ * 沟通效果得分(1.0-5.0)
+ */
+ @ExcelProperty(value = "沟通效果得分")
+ private BigDecimal communicationScore;
+
+ /**
+ * 文字评价内容
+ */
+ @ExcelProperty(value = "文字评价内容")
+ private String evaluationContent;
+
+ /**
+ * 满意度等级:1-非常满意,2-满意,3-一般,4-不满意,5-非常不满意
+ */
+ @ExcelProperty(value = "满意度等级", converter = ExcelDictConvert.class)
+ @ExcelDictFormat(dictType = "pm_satisfaction_level")
+ private String satisfactionLevel;
+
+ /**
+ * 是否匿名评价(0-实名,1-匿名)
+ */
+ @ExcelProperty(value = "是否匿名评价", converter = ExcelDictConvert.class)
+ @ExcelDictFormat(dictType = "sys_yes_no")
+ private Integer isAnonymous;
+
+ /**
+ * 是否公开显示(0-不公开,1-公开)
+ */
+ @ExcelProperty(value = "是否公开显示", converter = ExcelDictConvert.class)
+ @ExcelDictFormat(dictType = "sys_yes_no")
+ private Integer isPublic;
+
+ /**
+ * 评价时间
+ */
+ @ExcelProperty(value = "评价时间")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private Date evaluationTime;
+
+ /**
+ * 服务开始时间
+ */
+ @ExcelProperty(value = "服务开始时间")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private Date serviceStartTime;
+
+ /**
+ * 服务结束时间
+ */
+ @ExcelProperty(value = "服务结束时间")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private Date serviceEndTime;
+
+ /**
+ * 服务时长(分钟)
+ */
+ @ExcelProperty(value = "服务时长(分钟)")
+ private Integer serviceDuration;
+
+ /**
+ * 正面标签(逗号分隔)
+ */
+ @ExcelProperty(value = "正面标签")
+ private String positiveTags;
+
+ /**
+ * 负面标签(逗号分隔)
+ */
+ @ExcelProperty(value = "负面标签")
+ private String negativeTags;
+
+ /**
+ * 改进建议
+ */
+ @ExcelProperty(value = "改进建议")
+ private String improvementSuggestions;
+
+ /**
+ * 备注信息
+ */
+ @ExcelProperty(value = "备注信息")
+ private String remark;
+
+ /**
+ * 租户ID
+ */
+ private String tenantId;
+
+ /**
+ * 创建部门
+ */
+ private Long createDept;
+
+ /**
+ * 创建者
+ */
+ private Long createBy;
+
+ /**
+ * 创建时间
+ */
+ @ExcelProperty(value = "创建时间")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private Date createTime;
+
+ /**
+ * 更新者
+ */
+ private Long updateBy;
+
+ /**
+ * 更新时间
+ */
+ private Date updateTime;
+
+}
diff --git a/backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/mapper/HqPmRepairAttachmentMapper.java b/backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/mapper/HqPmRepairAttachmentMapper.java
new file mode 100644
index 00000000..2e4fbb4e
--- /dev/null
+++ b/backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/mapper/HqPmRepairAttachmentMapper.java
@@ -0,0 +1,15 @@
+package org.dromara.hq.mapper;
+
+import org.dromara.hq.domain.HqPmRepairAttachment;
+import org.dromara.hq.domain.vo.HqPmRepairAttachmentVo;
+import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
+
+/**
+ * 报修附件Mapper接口
+ *
+ * @author Cursor AI
+ * @date 2025-01-26
+ */
+public interface HqPmRepairAttachmentMapper extends BaseMapperPlus {
+
+}
diff --git a/backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/mapper/HqPmRepairCategoryMapper.java b/backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/mapper/HqPmRepairCategoryMapper.java
new file mode 100644
index 00000000..f9db9c64
--- /dev/null
+++ b/backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/mapper/HqPmRepairCategoryMapper.java
@@ -0,0 +1,15 @@
+package org.dromara.hq.mapper;
+
+import org.dromara.hq.domain.HqPmRepairCategory;
+import org.dromara.hq.domain.vo.HqPmRepairCategoryVo;
+import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
+
+/**
+ * 维修类型Mapper接口
+ *
+ * @author Cursor AI
+ * @date 2025-01-23
+ */
+public interface HqPmRepairCategoryMapper extends BaseMapperPlus {
+
+}
diff --git a/backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/mapper/PmRepairOrderMapper.java b/backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/mapper/HqPmRepairOrderMapper.java
similarity index 67%
rename from backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/mapper/PmRepairOrderMapper.java
rename to backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/mapper/HqPmRepairOrderMapper.java
index e8a1ebda..43dab35a 100644
--- a/backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/mapper/PmRepairOrderMapper.java
+++ b/backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/mapper/HqPmRepairOrderMapper.java
@@ -1,7 +1,7 @@
package org.dromara.hq.mapper;
-import org.dromara.hq.domain.PmRepairOrder;
-import org.dromara.hq.domain.vo.PmRepairOrderVo;
+import org.dromara.hq.domain.HqPmRepairOrder;
+import org.dromara.hq.domain.vo.HqPmRepairOrderVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
import java.util.List;
@@ -13,7 +13,7 @@ import java.util.Map;
* @author Cursor AI
* @date 2025-01-23
*/
-public interface PmRepairOrderMapper extends BaseMapperPlus {
+public interface HqPmRepairOrderMapper extends BaseMapperPlus {
/**
* 查询拥有"维修人员"角色的用户列表
diff --git a/backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/mapper/PmRepairProgressMapper.java b/backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/mapper/HqPmRepairProgressMapper.java
similarity index 54%
rename from backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/mapper/PmRepairProgressMapper.java
rename to backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/mapper/HqPmRepairProgressMapper.java
index 2ca1ea0f..f748b9bb 100644
--- a/backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/mapper/PmRepairProgressMapper.java
+++ b/backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/mapper/HqPmRepairProgressMapper.java
@@ -1,6 +1,6 @@
package org.dromara.hq.mapper;
-import org.dromara.hq.domain.PmRepairProgress;
+import org.dromara.hq.domain.HqPmRepairProgress;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
/**
@@ -9,6 +9,6 @@ import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
* @author Cursor AI
* @date 2025-01-26
*/
-public interface PmRepairProgressMapper extends BaseMapperPlus {
+public interface HqPmRepairProgressMapper extends BaseMapperPlus {
}
diff --git a/backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/mapper/PmServiceEvaluationMapper.java b/backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/mapper/HqPmServiceEvaluationMapper.java
similarity index 51%
rename from backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/mapper/PmServiceEvaluationMapper.java
rename to backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/mapper/HqPmServiceEvaluationMapper.java
index 4605784e..eea0f441 100644
--- a/backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/mapper/PmServiceEvaluationMapper.java
+++ b/backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/mapper/HqPmServiceEvaluationMapper.java
@@ -1,6 +1,6 @@
package org.dromara.hq.mapper;
-import org.dromara.hq.domain.PmServiceEvaluation;
+import org.dromara.hq.domain.HqPmServiceEvaluation;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
/**
@@ -9,6 +9,6 @@ import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
* @author Cursor AI
* @date 2025-01-26
*/
-public interface PmServiceEvaluationMapper extends BaseMapperPlus {
+public interface HqPmServiceEvaluationMapper extends BaseMapperPlus {
}
diff --git a/backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/mapper/PmRepairAttachmentMapper.java b/backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/mapper/PmRepairAttachmentMapper.java
deleted file mode 100644
index cae5b6d9..00000000
--- a/backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/mapper/PmRepairAttachmentMapper.java
+++ /dev/null
@@ -1,15 +0,0 @@
-package org.dromara.hq.mapper;
-
-import org.dromara.hq.domain.PmRepairAttachment;
-import org.dromara.hq.domain.vo.PmRepairAttachmentVo;
-import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
-
-/**
- * 报修附件Mapper接口
- *
- * @author Cursor AI
- * @date 2025-01-26
- */
-public interface PmRepairAttachmentMapper extends BaseMapperPlus {
-
-}
diff --git a/backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/mapper/PmRepairCategoryMapper.java b/backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/mapper/PmRepairCategoryMapper.java
deleted file mode 100644
index adab271a..00000000
--- a/backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/mapper/PmRepairCategoryMapper.java
+++ /dev/null
@@ -1,15 +0,0 @@
-package org.dromara.hq.mapper;
-
-import org.dromara.hq.domain.PmRepairCategory;
-import org.dromara.hq.domain.vo.PmRepairCategoryVo;
-import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
-
-/**
- * 维修类型Mapper接口
- *
- * @author Cursor AI
- * @date 2025-01-23
- */
-public interface PmRepairCategoryMapper extends BaseMapperPlus {
-
-}
diff --git a/backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/service/IHqHallReservationService.java b/backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/service/IHqHallReservationService.java
index 80a22da2..0d7fd880 100644
--- a/backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/service/IHqHallReservationService.java
+++ b/backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/service/IHqHallReservationService.java
@@ -3,6 +3,8 @@ package org.dromara.hq.service;
import org.dromara.hq.domain.vo.HqHallReservationVo;
import org.dromara.hq.domain.bo.HqHallReservationBo;
import org.dromara.hq.domain.bo.HqHallReservationAuditBo;
+import org.dromara.hq.domain.bo.HqHallTimeCheckBo;
+import org.dromara.hq.domain.vo.HqHallTimeCheckVo;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery;
@@ -74,4 +76,12 @@ public interface IHqHallReservationService {
* @return 是否审核成功
*/
Boolean auditByIds(HqHallReservationAuditBo auditBo);
+
+ /**
+ * 检查报告厅时间冲突
+ *
+ * @param timeCheckBo 时间检查参数
+ * @return 时间冲突检查结果
+ */
+ HqHallTimeCheckVo checkTimeConflict(HqHallTimeCheckBo timeCheckBo);
}
diff --git a/backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/service/IPmRepairAttachmentService.java b/backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/service/IHqPmRepairAttachmentService.java
similarity index 59%
rename from backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/service/IPmRepairAttachmentService.java
rename to backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/service/IHqPmRepairAttachmentService.java
index 0cae449e..3457bb2c 100644
--- a/backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/service/IPmRepairAttachmentService.java
+++ b/backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/service/IHqPmRepairAttachmentService.java
@@ -1,7 +1,7 @@
package org.dromara.hq.service;
-import org.dromara.hq.domain.vo.PmRepairAttachmentVo;
-import org.dromara.hq.domain.bo.PmRepairAttachmentBo;
+import org.dromara.hq.domain.vo.HqPmRepairAttachmentVo;
+import org.dromara.hq.domain.bo.HqPmRepairAttachmentBo;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.springframework.web.multipart.MultipartFile;
@@ -15,37 +15,37 @@ import java.util.List;
* @author Cursor AI
* @date 2025-01-26
*/
-public interface IPmRepairAttachmentService {
+public interface IHqPmRepairAttachmentService {
/**
* 查询报修附件
*/
- PmRepairAttachmentVo queryById(Long id);
+ HqPmRepairAttachmentVo queryById(Long id);
/**
* 查询报修附件列表
*/
- TableDataInfo queryPageList(PmRepairAttachmentBo bo, PageQuery pageQuery);
+ TableDataInfo queryPageList(HqPmRepairAttachmentBo bo, PageQuery pageQuery);
/**
* 查询报修附件列表
*/
- List queryList(PmRepairAttachmentBo bo);
+ List queryList(HqPmRepairAttachmentBo bo);
/**
* 根据工单ID查询附件列表
*/
- List queryByOrderId(Long orderId);
+ List queryByOrderId(Long orderId);
/**
* 新增报修附件
*/
- Boolean insertByBo(PmRepairAttachmentBo bo);
+ Boolean insertByBo(HqPmRepairAttachmentBo bo);
/**
* 修改报修附件
*/
- Boolean updateByBo(PmRepairAttachmentBo bo);
+ Boolean updateByBo(HqPmRepairAttachmentBo bo);
/**
* 校验并批量删除报修附件信息
@@ -55,12 +55,12 @@ public interface IPmRepairAttachmentService {
/**
* 上传附件文件
*/
- PmRepairAttachmentVo uploadFile(Long orderId, String uploadStage, MultipartFile file, String description);
+ HqPmRepairAttachmentVo uploadFile(Long orderId, String uploadStage, MultipartFile file, String description);
/**
* 批量上传附件文件
*/
- List uploadFiles(Long orderId, String uploadStage, MultipartFile[] files,
+ List uploadFiles(Long orderId, String uploadStage, MultipartFile[] files,
List descriptions);
/**
diff --git a/backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/service/IPmRepairCategoryService.java b/backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/service/IHqPmRepairCategoryService.java
similarity index 74%
rename from backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/service/IPmRepairCategoryService.java
rename to backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/service/IHqPmRepairCategoryService.java
index 3b9013ce..4e8cece5 100644
--- a/backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/service/IPmRepairCategoryService.java
+++ b/backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/service/IHqPmRepairCategoryService.java
@@ -1,7 +1,7 @@
package org.dromara.hq.service;
-import org.dromara.hq.domain.vo.PmRepairCategoryVo;
-import org.dromara.hq.domain.bo.PmRepairCategoryBo;
+import org.dromara.hq.domain.vo.HqPmRepairCategoryVo;
+import org.dromara.hq.domain.bo.HqPmRepairCategoryBo;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery;
@@ -14,7 +14,7 @@ import java.util.List;
* @author Cursor AI
* @date 2025-01-23
*/
-public interface IPmRepairCategoryService {
+public interface IHqPmRepairCategoryService {
/**
* 查询维修类型
@@ -22,7 +22,7 @@ public interface IPmRepairCategoryService {
* @param id 主键
* @return 维修类型
*/
- PmRepairCategoryVo queryById(Long id);
+ HqPmRepairCategoryVo queryById(Long id);
/**
* 分页查询维修类型列表
@@ -31,7 +31,7 @@ public interface IPmRepairCategoryService {
* @param pageQuery 分页参数
* @return 维修类型分页列表
*/
- TableDataInfo queryPageList(PmRepairCategoryBo bo, PageQuery pageQuery);
+ TableDataInfo queryPageList(HqPmRepairCategoryBo bo, PageQuery pageQuery);
/**
* 查询符合条件的维修类型列表
@@ -39,7 +39,7 @@ public interface IPmRepairCategoryService {
* @param bo 查询条件
* @return 维修类型列表
*/
- List queryList(PmRepairCategoryBo bo);
+ List queryList(HqPmRepairCategoryBo bo);
/**
* 新增维修类型
@@ -47,7 +47,7 @@ public interface IPmRepairCategoryService {
* @param bo 维修类型
* @return 是否新增成功
*/
- Boolean insertByBo(PmRepairCategoryBo bo);
+ Boolean insertByBo(HqPmRepairCategoryBo bo);
/**
* 修改维修类型
@@ -55,7 +55,7 @@ public interface IPmRepairCategoryService {
* @param bo 维修类型
* @return 是否修改成功
*/
- Boolean updateByBo(PmRepairCategoryBo bo);
+ Boolean updateByBo(HqPmRepairCategoryBo bo);
/**
* 校验并批量删除维修类型信息
@@ -71,7 +71,7 @@ public interface IPmRepairCategoryService {
*
* @return 维修类型树形列表
*/
- List queryTree();
+ List queryTree();
/**
* 更新使用次数
diff --git a/backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/service/IPmRepairOrderService.java b/backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/service/IHqPmRepairOrderService.java
similarity index 89%
rename from backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/service/IPmRepairOrderService.java
rename to backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/service/IHqPmRepairOrderService.java
index a2656408..6847e716 100644
--- a/backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/service/IPmRepairOrderService.java
+++ b/backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/service/IHqPmRepairOrderService.java
@@ -1,7 +1,7 @@
package org.dromara.hq.service;
-import org.dromara.hq.domain.vo.PmRepairOrderVo;
-import org.dromara.hq.domain.bo.PmRepairOrderBo;
+import org.dromara.hq.domain.vo.HqPmRepairOrderVo;
+import org.dromara.hq.domain.bo.HqPmRepairOrderBo;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery;
@@ -14,7 +14,7 @@ import java.util.List;
* @author Cursor AI
* @date 2025-01-23
*/
-public interface IPmRepairOrderService {
+public interface IHqPmRepairOrderService {
/**
* 查询报修工单
@@ -22,7 +22,7 @@ public interface IPmRepairOrderService {
* @param id 主键
* @return 报修工单
*/
- PmRepairOrderVo queryById(Long id);
+ HqPmRepairOrderVo queryById(Long id);
/**
* 分页查询报修工单列表
@@ -31,7 +31,7 @@ public interface IPmRepairOrderService {
* @param pageQuery 分页参数
* @return 报修工单分页列表
*/
- TableDataInfo queryPageList(PmRepairOrderBo bo, PageQuery pageQuery);
+ TableDataInfo queryPageList(HqPmRepairOrderBo bo, PageQuery pageQuery);
/**
* 查询符合条件的报修工单列表
@@ -39,7 +39,7 @@ public interface IPmRepairOrderService {
* @param bo 查询条件
* @return 报修工单列表
*/
- List queryList(PmRepairOrderBo bo);
+ List queryList(HqPmRepairOrderBo bo);
/**
* 新增报修工单
@@ -47,7 +47,7 @@ public interface IPmRepairOrderService {
* @param bo 报修工单
* @return 是否新增成功
*/
- Boolean insertByBo(PmRepairOrderBo bo);
+ Boolean insertByBo(HqPmRepairOrderBo bo);
/**
* 修改报修工单
@@ -55,7 +55,7 @@ public interface IPmRepairOrderService {
* @param bo 报修工单
* @return 是否修改成功
*/
- Boolean updateByBo(PmRepairOrderBo bo);
+ Boolean updateByBo(HqPmRepairOrderBo bo);
/**
* 校验并批量删除报修工单信息
diff --git a/backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/service/IHqPmRepairProgressService.java b/backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/service/IHqPmRepairProgressService.java
new file mode 100644
index 00000000..c18d5802
--- /dev/null
+++ b/backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/service/IHqPmRepairProgressService.java
@@ -0,0 +1,64 @@
+package org.dromara.hq.service;
+
+import org.dromara.hq.domain.vo.HqPmRepairProgressVo;
+import org.dromara.hq.domain.bo.HqPmRepairProgressBo;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.common.mybatis.core.page.PageQuery;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 维修进度记录Service接口
+ *
+ * @author Cursor AI
+ * @date 2025-01-23
+ */
+public interface IHqPmRepairProgressService {
+
+ /**
+ * 查询维修进度记录
+ */
+ HqPmRepairProgressVo queryById(Long id);
+
+ /**
+ * 查询维修进度记录列表
+ */
+ TableDataInfo queryPageList(HqPmRepairProgressBo bo, PageQuery pageQuery);
+
+ /**
+ * 查询维修进度记录列表
+ */
+ List queryList(HqPmRepairProgressBo bo);
+
+ /**
+ * 根据工单ID查询进度记录列表
+ */
+ List queryListByOrderId(Long orderId);
+
+ /**
+ * 新增维修进度记录
+ */
+ Boolean insertByBo(HqPmRepairProgressBo bo);
+
+ /**
+ * 修改维修进度记录
+ */
+ Boolean updateByBo(HqPmRepairProgressBo bo);
+
+ /**
+ * 校验并批量删除维修进度记录信息
+ */
+ Boolean deleteWithValidByIds(Collection ids, Boolean isValid);
+
+ /**
+ * 批量删除维修进度记录信息
+ */
+ Boolean deleteByIds(Collection ids);
+
+ /**
+ * 删除维修进度记录信息
+ */
+ Boolean deleteById(Long id);
+
+}
diff --git a/backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/service/IHqPmServiceEvaluationService.java b/backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/service/IHqPmServiceEvaluationService.java
new file mode 100644
index 00000000..7cbb4b07
--- /dev/null
+++ b/backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/service/IHqPmServiceEvaluationService.java
@@ -0,0 +1,69 @@
+package org.dromara.hq.service;
+
+import org.dromara.hq.domain.vo.HqPmServiceEvaluationVo;
+import org.dromara.hq.domain.bo.HqPmServiceEvaluationBo;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.common.mybatis.core.page.PageQuery;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 服务评价Service接口
+ *
+ * @author Cursor AI
+ * @date 2025-01-23
+ */
+public interface IHqPmServiceEvaluationService {
+
+ /**
+ * 查询服务评价
+ */
+ HqPmServiceEvaluationVo queryById(Long id);
+
+ /**
+ * 查询服务评价列表
+ */
+ TableDataInfo queryPageList(HqPmServiceEvaluationBo bo, PageQuery pageQuery);
+
+ /**
+ * 查询服务评价列表
+ */
+ List queryList(HqPmServiceEvaluationBo bo);
+
+ /**
+ * 根据工单ID查询评价信息
+ */
+ HqPmServiceEvaluationVo queryByOrderId(Long orderId);
+
+ /**
+ * 根据维修员ID查询评价列表
+ */
+ List queryListByWorkerId(Long workerId);
+
+ /**
+ * 新增服务评价
+ */
+ Boolean insertByBo(HqPmServiceEvaluationBo bo);
+
+ /**
+ * 修改服务评价
+ */
+ Boolean updateByBo(HqPmServiceEvaluationBo bo);
+
+ /**
+ * 校验并批量删除服务评价信息
+ */
+ Boolean deleteWithValidByIds(Collection ids, Boolean isValid);
+
+ /**
+ * 批量删除服务评价信息
+ */
+ Boolean deleteByIds(Collection ids);
+
+ /**
+ * 删除服务评价信息
+ */
+ Boolean deleteById(Long id);
+
+}
diff --git a/backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/service/impl/HqHallReservationServiceImpl.java b/backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/service/impl/HqHallReservationServiceImpl.java
index 9ddf29c8..1f0441d1 100644
--- a/backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/service/impl/HqHallReservationServiceImpl.java
+++ b/backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/service/impl/HqHallReservationServiceImpl.java
@@ -12,7 +12,9 @@ import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.dromara.hq.domain.bo.HqHallReservationBo;
import org.dromara.hq.domain.bo.HqHallReservationAuditBo;
+import org.dromara.hq.domain.bo.HqHallTimeCheckBo;
import org.dromara.hq.domain.vo.HqHallReservationVo;
+import org.dromara.hq.domain.vo.HqHallTimeCheckVo;
import org.dromara.hq.domain.HqHallReservation;
import org.dromara.hq.mapper.HqHallReservationMapper;
import org.dromara.hq.service.IHqHallReservationService;
@@ -223,4 +225,49 @@ public class HqHallReservationServiceImpl implements IHqHallReservationService {
return result;
}
+
+ /**
+ * 检查报告厅时间冲突
+ *
+ * @param timeCheckBo 时间检查参数
+ * @return 时间冲突检查结果
+ */
+ @Override
+ public HqHallTimeCheckVo checkTimeConflict(HqHallTimeCheckBo timeCheckBo) {
+ log.info("开始检查报告厅时间冲突,参数:{}", timeCheckBo);
+
+ // 构建查询条件:同一报告厅,时间有重叠,状态为已批准的预约
+ LambdaQueryWrapper lqw = Wrappers.lambdaQuery();
+
+ // 1. 同一报告厅
+ lqw.eq(HqHallReservation::getHallId, timeCheckBo.getHallId());
+
+ // 2. 状态为已批准(状态为'1')
+ lqw.eq(HqHallReservation::getStatus, "1");
+
+ // 3. 如果有排除ID,则排除该记录(用于编辑时排除自己)
+ if (timeCheckBo.getExcludeId() != null) {
+ lqw.ne(HqHallReservation::getId, timeCheckBo.getExcludeId());
+ }
+
+ // 4. 时间重叠判断:
+ // 两个时间段重叠的条件:新开始时间 < 已存在结束时间 AND 新结束时间 > 已存在开始时间
+ // 即:startTime < existingEndTime AND endTime > existingStartTime
+ lqw.and(wrapper -> wrapper
+ .lt(HqHallReservation::getStartTime, timeCheckBo.getEndTime())
+ .gt(HqHallReservation::getEndTime, timeCheckBo.getStartTime()));
+
+ // 查询冲突的预约记录
+ List conflictList = baseMapper.selectVoList(lqw);
+
+ // 构建返回结果
+ if (conflictList.isEmpty()) {
+ log.info("未发现时间冲突");
+ return HqHallTimeCheckVo.noConflict();
+ } else {
+ String conflictMessage = String.format("发现 %d 个时间冲突的已批准预约", conflictList.size());
+ log.info("发现时间冲突,冲突记录数:{}", conflictList.size());
+ return HqHallTimeCheckVo.hasConflict(conflictList, conflictMessage);
+ }
+ }
}
diff --git a/backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/service/impl/PmRepairAttachmentServiceImpl.java b/backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/service/impl/HqPmRepairAttachmentServiceImpl.java
similarity index 68%
rename from backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/service/impl/PmRepairAttachmentServiceImpl.java
rename to backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/service/impl/HqPmRepairAttachmentServiceImpl.java
index 46b0b57c..1a8fb8ee 100644
--- a/backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/service/impl/PmRepairAttachmentServiceImpl.java
+++ b/backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/service/impl/HqPmRepairAttachmentServiceImpl.java
@@ -16,12 +16,12 @@ import org.dromara.common.oss.core.OssClient;
import org.dromara.common.oss.entity.UploadResult;
import org.dromara.common.oss.factory.OssFactory;
import org.dromara.common.satoken.utils.LoginHelper;
-import org.dromara.hq.domain.PmRepairAttachment;
-import org.dromara.hq.domain.bo.PmRepairAttachmentBo;
-import org.dromara.hq.domain.vo.PmRepairAttachmentVo;
-import org.dromara.hq.mapper.PmRepairAttachmentMapper;
-import org.dromara.hq.mapper.PmRepairOrderMapper;
-import org.dromara.hq.service.IPmRepairAttachmentService;
+import org.dromara.hq.domain.HqPmRepairAttachment;
+import org.dromara.hq.domain.bo.HqPmRepairAttachmentBo;
+import org.dromara.hq.domain.vo.HqPmRepairAttachmentVo;
+import org.dromara.hq.mapper.HqPmRepairAttachmentMapper;
+import org.dromara.hq.mapper.HqPmRepairOrderMapper;
+import org.dromara.hq.service.IHqPmRepairAttachmentService;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
@@ -40,16 +40,16 @@ import java.util.List;
@Slf4j
@RequiredArgsConstructor
@Service
-public class PmRepairAttachmentServiceImpl implements IPmRepairAttachmentService {
+public class HqPmRepairAttachmentServiceImpl implements IHqPmRepairAttachmentService {
- private final PmRepairAttachmentMapper baseMapper;
- private final PmRepairOrderMapper repairOrderMapper;
+ private final HqPmRepairAttachmentMapper baseMapper;
+ private final HqPmRepairOrderMapper repairOrderMapper;
/**
* 查询报修附件
*/
@Override
- public PmRepairAttachmentVo queryById(Long id) {
+ public HqPmRepairAttachmentVo queryById(Long id) {
return baseMapper.selectVoById(id);
}
@@ -57,9 +57,9 @@ public class PmRepairAttachmentServiceImpl implements IPmRepairAttachmentService
* 查询报修附件列表
*/
@Override
- public TableDataInfo queryPageList(PmRepairAttachmentBo bo, PageQuery pageQuery) {
- LambdaQueryWrapper lqw = buildQueryWrapper(bo);
- Page result = baseMapper.selectVoPage(pageQuery.build(), lqw);
+ public TableDataInfo queryPageList(HqPmRepairAttachmentBo bo, PageQuery pageQuery) {
+ LambdaQueryWrapper lqw = buildQueryWrapper(bo);
+ Page result = baseMapper.selectVoPage(pageQuery.build(), lqw);
return TableDataInfo.build(result);
}
@@ -67,8 +67,8 @@ public class PmRepairAttachmentServiceImpl implements IPmRepairAttachmentService
* 查询报修附件列表
*/
@Override
- public List queryList(PmRepairAttachmentBo bo) {
- LambdaQueryWrapper lqw = buildQueryWrapper(bo);
+ public List queryList(HqPmRepairAttachmentBo bo) {
+ LambdaQueryWrapper lqw = buildQueryWrapper(bo);
return baseMapper.selectVoList(lqw);
}
@@ -76,22 +76,22 @@ public class PmRepairAttachmentServiceImpl implements IPmRepairAttachmentService
* 根据工单ID查询附件列表
*/
@Override
- public List queryByOrderId(Long orderId) {
- LambdaQueryWrapper lqw = Wrappers.lambdaQuery();
- lqw.eq(PmRepairAttachment::getOrderId, orderId);
- lqw.orderByAsc(PmRepairAttachment::getSortOrder)
- .orderByAsc(PmRepairAttachment::getCreateTime);
+ public List queryByOrderId(Long orderId) {
+ LambdaQueryWrapper lqw = Wrappers.lambdaQuery();
+ lqw.eq(HqPmRepairAttachment::getOrderId, orderId);
+ lqw.orderByAsc(HqPmRepairAttachment::getSortOrder)
+ .orderByAsc(HqPmRepairAttachment::getCreateTime);
return baseMapper.selectVoList(lqw);
}
- private LambdaQueryWrapper buildQueryWrapper(PmRepairAttachmentBo bo) {
- LambdaQueryWrapper lqw = Wrappers.lambdaQuery();
- lqw.eq(bo.getOrderId() != null, PmRepairAttachment::getOrderId, bo.getOrderId());
- lqw.like(StringUtils.isNotBlank(bo.getFileName()), PmRepairAttachment::getFileName, bo.getFileName());
- lqw.eq(StringUtils.isNotBlank(bo.getFileType()), PmRepairAttachment::getFileType, bo.getFileType());
- lqw.eq(StringUtils.isNotBlank(bo.getUploadStage()), PmRepairAttachment::getUploadStage, bo.getUploadStage());
- lqw.eq(bo.getUploaderId() != null, PmRepairAttachment::getUploaderId, bo.getUploaderId());
- lqw.orderByAsc(PmRepairAttachment::getSortOrder).orderByDesc(PmRepairAttachment::getCreateTime);
+ private LambdaQueryWrapper buildQueryWrapper(HqPmRepairAttachmentBo bo) {
+ LambdaQueryWrapper lqw = Wrappers.lambdaQuery();
+ lqw.eq(bo.getOrderId() != null, HqPmRepairAttachment::getOrderId, bo.getOrderId());
+ lqw.like(StringUtils.isNotBlank(bo.getFileName()), HqPmRepairAttachment::getFileName, bo.getFileName());
+ lqw.eq(StringUtils.isNotBlank(bo.getFileType()), HqPmRepairAttachment::getFileType, bo.getFileType());
+ lqw.eq(StringUtils.isNotBlank(bo.getUploadStage()), HqPmRepairAttachment::getUploadStage, bo.getUploadStage());
+ lqw.eq(bo.getUploaderId() != null, HqPmRepairAttachment::getUploaderId, bo.getUploaderId());
+ lqw.orderByAsc(HqPmRepairAttachment::getSortOrder).orderByDesc(HqPmRepairAttachment::getCreateTime);
return lqw;
}
@@ -99,8 +99,8 @@ public class PmRepairAttachmentServiceImpl implements IPmRepairAttachmentService
* 新增报修附件
*/
@Override
- public Boolean insertByBo(PmRepairAttachmentBo bo) {
- PmRepairAttachment add = MapstructUtils.convert(bo, PmRepairAttachment.class);
+ public Boolean insertByBo(HqPmRepairAttachmentBo bo) {
+ HqPmRepairAttachment add = MapstructUtils.convert(bo, HqPmRepairAttachment.class);
validEntityBeforeSave(add);
boolean flag = baseMapper.insert(add) > 0;
if (flag) {
@@ -115,8 +115,8 @@ public class PmRepairAttachmentServiceImpl implements IPmRepairAttachmentService
* 修改报修附件
*/
@Override
- public Boolean updateByBo(PmRepairAttachmentBo bo) {
- PmRepairAttachment update = MapstructUtils.convert(bo, PmRepairAttachment.class);
+ public Boolean updateByBo(HqPmRepairAttachmentBo bo) {
+ HqPmRepairAttachment update = MapstructUtils.convert(bo, HqPmRepairAttachment.class);
validEntityBeforeSave(update);
return baseMapper.updateById(update) > 0;
}
@@ -124,7 +124,7 @@ public class PmRepairAttachmentServiceImpl implements IPmRepairAttachmentService
/**
* 保存前的数据校验
*/
- private void validEntityBeforeSave(PmRepairAttachment entity) {
+ private void validEntityBeforeSave(HqPmRepairAttachment entity) {
// 设置默认值
if (entity.getSortOrder() == null) {
entity.setSortOrder(0);
@@ -147,9 +147,9 @@ public class PmRepairAttachmentServiceImpl implements IPmRepairAttachmentService
@Transactional(rollbackFor = Exception.class)
public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) {
// 先获取要删除的附件信息(在删除前)
- List attachments = new ArrayList<>();
+ List attachments = new ArrayList<>();
for (Long id : ids) {
- PmRepairAttachmentVo attachment = baseMapper.selectVoById(id);
+ HqPmRepairAttachmentVo attachment = baseMapper.selectVoById(id);
if (attachment != null) {
attachments.add(attachment);
}
@@ -157,7 +157,7 @@ public class PmRepairAttachmentServiceImpl implements IPmRepairAttachmentService
if (isValid) {
// 删除OSS文件
- for (PmRepairAttachmentVo attachment : attachments) {
+ for (HqPmRepairAttachmentVo attachment : attachments) {
try {
if (StringUtils.isNotBlank(attachment.getFilePath())) {
OssFactory.instance().delete(attachment.getFilePath());
@@ -176,7 +176,7 @@ public class PmRepairAttachmentServiceImpl implements IPmRepairAttachmentService
if (flag) {
// 更新相关工单的附件数量
attachments.stream()
- .map(PmRepairAttachmentVo::getOrderId)
+ .map(HqPmRepairAttachmentVo::getOrderId)
.distinct()
.forEach(this::updateOrderAttachmentCount);
}
@@ -188,7 +188,7 @@ public class PmRepairAttachmentServiceImpl implements IPmRepairAttachmentService
*/
@Override
@Transactional(rollbackFor = Exception.class)
- public PmRepairAttachmentVo uploadFile(Long orderId, String uploadStage, MultipartFile file, String description) {
+ public HqPmRepairAttachmentVo uploadFile(Long orderId, String uploadStage, MultipartFile file, String description) {
try {
// 文件基本信息
String originalFilename = file.getOriginalFilename();
@@ -200,7 +200,7 @@ public class PmRepairAttachmentServiceImpl implements IPmRepairAttachmentService
UploadResult uploadResult = OssFactory.instance().uploadSuffix(file.getBytes(), fileExtension, contentType);
// 构建附件信息
- PmRepairAttachmentBo bo = new PmRepairAttachmentBo();
+ HqPmRepairAttachmentBo bo = new HqPmRepairAttachmentBo();
bo.setOrderId(orderId);
bo.setFileName(originalFilename);
bo.setFilePath(uploadResult.getUrl());
@@ -231,16 +231,16 @@ public class PmRepairAttachmentServiceImpl implements IPmRepairAttachmentService
*/
@Override
@Transactional(rollbackFor = Exception.class)
- public List uploadFiles(Long orderId, String uploadStage, MultipartFile[] files,
+ public List uploadFiles(Long orderId, String uploadStage, MultipartFile[] files,
List descriptions) {
- List results = new ArrayList<>();
+ List results = new ArrayList<>();
for (int i = 0; i < files.length; i++) {
MultipartFile file = files[i];
String description = (descriptions != null && i < descriptions.size()) ? descriptions.get(i) : null;
try {
- PmRepairAttachmentVo result = uploadFile(orderId, uploadStage, file, description);
+ HqPmRepairAttachmentVo result = uploadFile(orderId, uploadStage, file, description);
results.add(result);
} catch (Exception e) {
log.error("批量上传第{}个文件失败: {}", i + 1, e.getMessage());
@@ -257,7 +257,7 @@ public class PmRepairAttachmentServiceImpl implements IPmRepairAttachmentService
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean deleteAttachment(Long id) {
- PmRepairAttachmentVo attachment = queryById(id);
+ HqPmRepairAttachmentVo attachment = queryById(id);
if (attachment == null) {
return false;
}
@@ -292,14 +292,14 @@ public class PmRepairAttachmentServiceImpl implements IPmRepairAttachmentService
return;
}
- LambdaQueryWrapper lqw = Wrappers.lambdaQuery();
- lqw.eq(PmRepairAttachment::getOrderId, orderId);
+ LambdaQueryWrapper lqw = Wrappers.lambdaQuery();
+ lqw.eq(HqPmRepairAttachment::getOrderId, orderId);
long count = baseMapper.selectCount(lqw);
// 更新工单的附件数量
- LambdaUpdateWrapper updateWrapper = Wrappers.lambdaUpdate();
- updateWrapper.eq(org.dromara.hq.domain.PmRepairOrder::getId, orderId)
- .set(org.dromara.hq.domain.PmRepairOrder::getAttachmentCount, (int) count);
+ LambdaUpdateWrapper updateWrapper = Wrappers.lambdaUpdate();
+ updateWrapper.eq(org.dromara.hq.domain.HqPmRepairOrder::getId, orderId)
+ .set(org.dromara.hq.domain.HqPmRepairOrder::getAttachmentCount, (int) count);
repairOrderMapper.update(null, updateWrapper);
}
diff --git a/backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/service/impl/PmRepairCategoryServiceImpl.java b/backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/service/impl/HqPmRepairCategoryServiceImpl.java
similarity index 61%
rename from backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/service/impl/PmRepairCategoryServiceImpl.java
rename to backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/service/impl/HqPmRepairCategoryServiceImpl.java
index aca3efbc..a7ef0251 100644
--- a/backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/service/impl/PmRepairCategoryServiceImpl.java
+++ b/backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/service/impl/HqPmRepairCategoryServiceImpl.java
@@ -11,11 +11,11 @@ import cn.hutool.core.collection.CollUtil;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
-import org.dromara.hq.domain.bo.PmRepairCategoryBo;
-import org.dromara.hq.domain.vo.PmRepairCategoryVo;
-import org.dromara.hq.domain.PmRepairCategory;
-import org.dromara.hq.mapper.PmRepairCategoryMapper;
-import org.dromara.hq.service.IPmRepairCategoryService;
+import org.dromara.hq.domain.bo.HqPmRepairCategoryBo;
+import org.dromara.hq.domain.vo.HqPmRepairCategoryVo;
+import org.dromara.hq.domain.HqPmRepairCategory;
+import org.dromara.hq.mapper.HqPmRepairCategoryMapper;
+import org.dromara.hq.service.IHqPmRepairCategoryService;
import org.dromara.common.core.exception.ServiceException;
import java.util.List;
@@ -32,9 +32,9 @@ import java.util.stream.Collectors;
@Slf4j
@RequiredArgsConstructor
@Service
-public class PmRepairCategoryServiceImpl implements IPmRepairCategoryService {
+public class HqPmRepairCategoryServiceImpl implements IHqPmRepairCategoryService {
- private final PmRepairCategoryMapper baseMapper;
+ private final HqPmRepairCategoryMapper baseMapper;
/**
* 查询维修类型
@@ -43,7 +43,7 @@ public class PmRepairCategoryServiceImpl implements IPmRepairCategoryService {
* @return 维修类型
*/
@Override
- public PmRepairCategoryVo queryById(Long id) {
+ public HqPmRepairCategoryVo queryById(Long id) {
return baseMapper.selectVoById(id);
}
@@ -55,9 +55,9 @@ public class PmRepairCategoryServiceImpl implements IPmRepairCategoryService {
* @return 维修类型分页列表
*/
@Override
- public TableDataInfo queryPageList(PmRepairCategoryBo bo, PageQuery pageQuery) {
- LambdaQueryWrapper lqw = buildQueryWrapper(bo);
- Page result = baseMapper.selectVoPage(pageQuery.build(), lqw);
+ public TableDataInfo queryPageList(HqPmRepairCategoryBo bo, PageQuery pageQuery) {
+ LambdaQueryWrapper lqw = buildQueryWrapper(bo);
+ Page result = baseMapper.selectVoPage(pageQuery.build(), lqw);
return TableDataInfo.build(result);
}
@@ -68,26 +68,28 @@ public class PmRepairCategoryServiceImpl implements IPmRepairCategoryService {
* @return 维修类型列表
*/
@Override
- public List queryList(PmRepairCategoryBo bo) {
- LambdaQueryWrapper lqw = buildQueryWrapper(bo);
+ public List queryList(HqPmRepairCategoryBo bo) {
+ LambdaQueryWrapper lqw = buildQueryWrapper(bo);
return baseMapper.selectVoList(lqw);
}
- private LambdaQueryWrapper buildQueryWrapper(PmRepairCategoryBo bo) {
- LambdaQueryWrapper lqw = Wrappers.lambdaQuery();
- lqw.orderByAsc(PmRepairCategory::getSortOrder).orderByAsc(PmRepairCategory::getId);
- lqw.like(StringUtils.isNotBlank(bo.getCategoryName()), PmRepairCategory::getCategoryName, bo.getCategoryName());
- lqw.eq(StringUtils.isNotBlank(bo.getCategoryCode()), PmRepairCategory::getCategoryCode, bo.getCategoryCode());
- lqw.like(StringUtils.isNotBlank(bo.getCategoryDescription()), PmRepairCategory::getCategoryDescription,
+ private LambdaQueryWrapper buildQueryWrapper(HqPmRepairCategoryBo bo) {
+ LambdaQueryWrapper lqw = Wrappers.lambdaQuery();
+ lqw.orderByAsc(HqPmRepairCategory::getSortOrder).orderByAsc(HqPmRepairCategory::getId);
+ lqw.like(StringUtils.isNotBlank(bo.getCategoryName()), HqPmRepairCategory::getCategoryName,
+ bo.getCategoryName());
+ lqw.like(StringUtils.isNotBlank(bo.getCategoryCode()), HqPmRepairCategory::getCategoryCode,
+ bo.getCategoryCode());
+ lqw.like(StringUtils.isNotBlank(bo.getCategoryDescription()), HqPmRepairCategory::getCategoryDescription,
bo.getCategoryDescription());
- lqw.eq(bo.getParentId() != null, PmRepairCategory::getParentId, bo.getParentId());
- lqw.eq(bo.getLevelDepth() != null, PmRepairCategory::getLevelDepth, bo.getLevelDepth());
- lqw.eq(StringUtils.isNotBlank(bo.getSkillLevel()), PmRepairCategory::getSkillLevel, bo.getSkillLevel());
- lqw.eq(StringUtils.isNotBlank(bo.getStatus()), PmRepairCategory::getStatus, bo.getStatus());
+ lqw.eq(bo.getParentId() != null, HqPmRepairCategory::getParentId, bo.getParentId());
+ lqw.eq(bo.getLevelDepth() != null, HqPmRepairCategory::getLevelDepth, bo.getLevelDepth());
+ lqw.eq(StringUtils.isNotBlank(bo.getSkillLevel()), HqPmRepairCategory::getSkillLevel, bo.getSkillLevel());
+ lqw.eq(StringUtils.isNotBlank(bo.getStatus()), HqPmRepairCategory::getStatus, bo.getStatus());
// IN查询条件
- lqw.in(CollUtil.isNotEmpty(bo.getStatusIn()), PmRepairCategory::getStatus, bo.getStatusIn());
- lqw.in(CollUtil.isNotEmpty(bo.getParentIdIn()), PmRepairCategory::getParentId, bo.getParentIdIn());
+ lqw.in(CollUtil.isNotEmpty(bo.getStatusIn()), HqPmRepairCategory::getStatus, bo.getStatusIn());
+ lqw.in(CollUtil.isNotEmpty(bo.getParentIdIn()), HqPmRepairCategory::getParentId, bo.getParentIdIn());
return lqw;
}
@@ -99,8 +101,8 @@ public class PmRepairCategoryServiceImpl implements IPmRepairCategoryService {
* @return 是否新增成功
*/
@Override
- public Boolean insertByBo(PmRepairCategoryBo bo) {
- PmRepairCategory add = MapstructUtils.convert(bo, PmRepairCategory.class);
+ public Boolean insertByBo(HqPmRepairCategoryBo bo) {
+ HqPmRepairCategory add = MapstructUtils.convert(bo, HqPmRepairCategory.class);
validEntityBeforeSave(add);
// 设置层级信息
@@ -140,12 +142,12 @@ public class PmRepairCategoryServiceImpl implements IPmRepairCategoryService {
* @return 是否修改成功
*/
@Override
- public Boolean updateByBo(PmRepairCategoryBo bo) {
- PmRepairCategory update = MapstructUtils.convert(bo, PmRepairCategory.class);
+ public Boolean updateByBo(HqPmRepairCategoryBo bo) {
+ HqPmRepairCategory update = MapstructUtils.convert(bo, HqPmRepairCategory.class);
validEntityBeforeSave(update);
// 如果修改了父级,需要重新计算层级信息
- PmRepairCategory oldEntity = baseMapper.selectById(update.getId());
+ HqPmRepairCategory oldEntity = baseMapper.selectById(update.getId());
if (oldEntity != null && !oldEntity.getParentId().equals(update.getParentId())) {
buildHierarchyInfo(update);
// 更新新旧父级的子类数量
@@ -159,13 +161,13 @@ public class PmRepairCategoryServiceImpl implements IPmRepairCategoryService {
/**
* 保存前的数据校验
*/
- private void validEntityBeforeSave(PmRepairCategory entity) {
+ private void validEntityBeforeSave(HqPmRepairCategory entity) {
// 校验类型编码唯一性
if (StringUtils.isNotBlank(entity.getCategoryCode())) {
- LambdaQueryWrapper lqw = Wrappers.lambdaQuery();
- lqw.eq(PmRepairCategory::getCategoryCode, entity.getCategoryCode());
+ LambdaQueryWrapper lqw = Wrappers.lambdaQuery();
+ lqw.eq(HqPmRepairCategory::getCategoryCode, entity.getCategoryCode());
if (entity.getId() != null) {
- lqw.ne(PmRepairCategory::getId, entity.getId());
+ lqw.ne(HqPmRepairCategory::getId, entity.getId());
}
boolean exists = baseMapper.exists(lqw);
if (exists) {
@@ -182,13 +184,13 @@ public class PmRepairCategoryServiceImpl implements IPmRepairCategoryService {
/**
* 构建层级信息
*/
- private void buildHierarchyInfo(PmRepairCategory entity) {
+ private void buildHierarchyInfo(HqPmRepairCategory entity) {
if (entity.getParentId() == null || entity.getParentId() == 0L) {
entity.setParentId(0L);
entity.setLevelDepth(1);
entity.setAncestorIds("0");
} else {
- PmRepairCategory parent = baseMapper.selectById(entity.getParentId());
+ HqPmRepairCategory parent = baseMapper.selectById(entity.getParentId());
if (parent != null) {
entity.setLevelDepth(parent.getLevelDepth() + 1);
entity.setAncestorIds(parent.getAncestorIds() + "," + parent.getId());
@@ -204,11 +206,11 @@ public class PmRepairCategoryServiceImpl implements IPmRepairCategoryService {
return;
}
- LambdaQueryWrapper lqw = Wrappers.lambdaQuery();
- lqw.eq(PmRepairCategory::getParentId, parentId);
+ LambdaQueryWrapper lqw = Wrappers.lambdaQuery();
+ lqw.eq(HqPmRepairCategory::getParentId, parentId);
long count = baseMapper.selectCount(lqw);
- PmRepairCategory parent = new PmRepairCategory();
+ HqPmRepairCategory parent = new HqPmRepairCategory();
parent.setId(parentId);
parent.setChildrenCount((int) count);
baseMapper.updateById(parent);
@@ -226,7 +228,7 @@ public class PmRepairCategoryServiceImpl implements IPmRepairCategoryService {
if (isValid) {
// 校验是否有子类
for (Long id : ids) {
- PmRepairCategory category = baseMapper.selectById(id);
+ HqPmRepairCategory category = baseMapper.selectById(id);
if (category != null && category.getChildrenCount() > 0) {
throw new ServiceException("存在子类型,不允许删除:" + category.getCategoryName());
}
@@ -234,10 +236,10 @@ public class PmRepairCategoryServiceImpl implements IPmRepairCategoryService {
}
// 删除后更新父级的子类数量
- List categories = baseMapper.selectBatchIds(ids);
+ List categories = baseMapper.selectBatchIds(ids);
boolean flag = baseMapper.deleteByIds(ids) > 0;
if (flag) {
- for (PmRepairCategory category : categories) {
+ for (HqPmRepairCategory category : categories) {
updateParentChildrenCount(category.getParentId());
}
}
@@ -250,11 +252,11 @@ public class PmRepairCategoryServiceImpl implements IPmRepairCategoryService {
* @return 维修类型树形列表
*/
@Override
- public List queryTree() {
- LambdaQueryWrapper lqw = Wrappers.lambdaQuery();
- lqw.eq(PmRepairCategory::getStatus, "1");
- lqw.orderByAsc(PmRepairCategory::getSortOrder).orderByAsc(PmRepairCategory::getId);
- List allList = baseMapper.selectVoList(lqw);
+ public List queryTree() {
+ LambdaQueryWrapper lqw = Wrappers.lambdaQuery();
+ lqw.eq(HqPmRepairCategory::getStatus, "1");
+ lqw.orderByAsc(HqPmRepairCategory::getSortOrder).orderByAsc(HqPmRepairCategory::getId);
+ List allList = baseMapper.selectVoList(lqw);
return buildTree(allList, 0L);
}
@@ -262,11 +264,11 @@ public class PmRepairCategoryServiceImpl implements IPmRepairCategoryService {
/**
* 构建树形结构
*/
- private List buildTree(List allList, Long parentId) {
+ private List buildTree(List allList, Long parentId) {
return allList.stream()
.filter(item -> parentId.equals(item.getParentId()))
.map(item -> {
- List children = buildTree(allList, item.getId());
+ List children = buildTree(allList, item.getId());
item.setChildren(children);
return item;
})
@@ -281,12 +283,12 @@ public class PmRepairCategoryServiceImpl implements IPmRepairCategoryService {
*/
@Override
public Boolean updateUsageCount(Long categoryId) {
- PmRepairCategory category = baseMapper.selectById(categoryId);
+ HqPmRepairCategory category = baseMapper.selectById(categoryId);
if (category == null) {
return false;
}
- PmRepairCategory update = new PmRepairCategory();
+ HqPmRepairCategory update = new HqPmRepairCategory();
update.setId(categoryId);
update.setUsageCount(category.getUsageCount() + 1);
update.setLastUsedTime(new Date());
diff --git a/backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/service/impl/PmRepairOrderServiceImpl.java b/backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/service/impl/HqPmRepairOrderServiceImpl.java
similarity index 82%
rename from backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/service/impl/PmRepairOrderServiceImpl.java
rename to backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/service/impl/HqPmRepairOrderServiceImpl.java
index c1db8e73..1e9ec67f 100644
--- a/backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/service/impl/PmRepairOrderServiceImpl.java
+++ b/backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/service/impl/HqPmRepairOrderServiceImpl.java
@@ -12,16 +12,16 @@ import cn.hutool.core.date.DateUtil;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
-import org.dromara.hq.domain.bo.PmRepairOrderBo;
-import org.dromara.hq.domain.vo.PmRepairOrderVo;
-import org.dromara.hq.domain.PmRepairOrder;
-import org.dromara.hq.domain.PmRepairProgress;
-import org.dromara.hq.domain.PmServiceEvaluation;
-import org.dromara.hq.mapper.PmRepairOrderMapper;
-import org.dromara.hq.mapper.PmRepairProgressMapper;
-import org.dromara.hq.mapper.PmServiceEvaluationMapper;
-import org.dromara.hq.service.IPmRepairOrderService;
-import org.dromara.hq.service.IPmRepairCategoryService;
+import org.dromara.hq.domain.bo.HqPmRepairOrderBo;
+import org.dromara.hq.domain.vo.HqPmRepairOrderVo;
+import org.dromara.hq.domain.HqPmRepairOrder;
+import org.dromara.hq.domain.HqPmRepairProgress;
+import org.dromara.hq.domain.HqPmServiceEvaluation;
+import org.dromara.hq.mapper.HqPmRepairOrderMapper;
+import org.dromara.hq.mapper.HqPmRepairProgressMapper;
+import org.dromara.hq.mapper.HqPmServiceEvaluationMapper;
+import org.dromara.hq.service.IHqPmRepairOrderService;
+import org.dromara.hq.service.IHqPmRepairCategoryService;
import org.dromara.common.satoken.utils.LoginHelper;
import org.dromara.common.core.exception.ServiceException;
import org.dromara.common.core.service.UserService;
@@ -39,13 +39,13 @@ import java.util.Date;
@Slf4j
@RequiredArgsConstructor
@Service
-public class PmRepairOrderServiceImpl implements IPmRepairOrderService {
+public class HqPmRepairOrderServiceImpl implements IHqPmRepairOrderService {
- private final PmRepairOrderMapper baseMapper;
- private final PmRepairProgressMapper repairProgressMapper;
- private final IPmRepairCategoryService repairCategoryService;
+ private final HqPmRepairOrderMapper baseMapper;
+ private final HqPmRepairProgressMapper repairProgressMapper;
+ private final IHqPmRepairCategoryService repairCategoryService;
private final UserService userService;
- private final PmServiceEvaluationMapper serviceEvaluationMapper;
+ private final HqPmServiceEvaluationMapper serviceEvaluationMapper;
/**
* 查询报修工单
@@ -54,8 +54,8 @@ public class PmRepairOrderServiceImpl implements IPmRepairOrderService {
* @return 报修工单
*/
@Override
- public PmRepairOrderVo queryById(Long id) {
- PmRepairOrderVo orderVo = baseMapper.selectVoById(id);
+ public HqPmRepairOrderVo queryById(Long id) {
+ HqPmRepairOrderVo orderVo = baseMapper.selectVoById(id);
if (orderVo == null) {
return null;
}
@@ -74,7 +74,7 @@ public class PmRepairOrderServiceImpl implements IPmRepairOrderService {
* @param orderVo 工单数据
* @return 是否有权限
*/
- private boolean hasDataPermission(PmRepairOrderVo orderVo) {
+ private boolean hasDataPermission(HqPmRepairOrderVo orderVo) {
try {
// 获取当前登录用户信息
var loginUser = LoginHelper.getLoginUser();
@@ -119,9 +119,9 @@ public class PmRepairOrderServiceImpl implements IPmRepairOrderService {
* @return 报修工单分页列表
*/
@Override
- public TableDataInfo queryPageList(PmRepairOrderBo bo, PageQuery pageQuery) {
- LambdaQueryWrapper lqw = buildQueryWrapper(bo);
- Page result = baseMapper.selectVoPage(pageQuery.build(), lqw);
+ public TableDataInfo queryPageList(HqPmRepairOrderBo bo, PageQuery pageQuery) {
+ LambdaQueryWrapper lqw = buildQueryWrapper(bo);
+ Page result = baseMapper.selectVoPage(pageQuery.build(), lqw);
return TableDataInfo.build(result);
}
@@ -132,33 +132,34 @@ public class PmRepairOrderServiceImpl implements IPmRepairOrderService {
* @return 报修工单列表
*/
@Override
- public List queryList(PmRepairOrderBo bo) {
- LambdaQueryWrapper lqw = buildQueryWrapper(bo);
+ public List queryList(HqPmRepairOrderBo bo) {
+ LambdaQueryWrapper lqw = buildQueryWrapper(bo);
return baseMapper.selectVoList(lqw);
}
- private LambdaQueryWrapper buildQueryWrapper(PmRepairOrderBo bo) {
- LambdaQueryWrapper lqw = Wrappers.lambdaQuery();
- lqw.orderByDesc(PmRepairOrder::getCreateTime);
- lqw.eq(StringUtils.isNotBlank(bo.getOrderNo()), PmRepairOrder::getOrderNo, bo.getOrderNo());
- lqw.like(StringUtils.isNotBlank(bo.getTitle()), PmRepairOrder::getTitle, bo.getTitle());
- lqw.like(StringUtils.isNotBlank(bo.getDescription()), PmRepairOrder::getDescription, bo.getDescription());
- lqw.like(StringUtils.isNotBlank(bo.getRepairLocation()), PmRepairOrder::getRepairLocation,
+ private LambdaQueryWrapper buildQueryWrapper(HqPmRepairOrderBo bo) {
+ LambdaQueryWrapper lqw = Wrappers.lambdaQuery();
+ lqw.orderByDesc(HqPmRepairOrder::getCreateTime);
+ lqw.eq(StringUtils.isNotBlank(bo.getOrderNo()), HqPmRepairOrder::getOrderNo, bo.getOrderNo());
+ lqw.like(StringUtils.isNotBlank(bo.getTitle()), HqPmRepairOrder::getTitle, bo.getTitle());
+ lqw.like(StringUtils.isNotBlank(bo.getDescription()), HqPmRepairOrder::getDescription, bo.getDescription());
+ lqw.like(StringUtils.isNotBlank(bo.getRepairLocation()), HqPmRepairOrder::getRepairLocation,
bo.getRepairLocation());
- lqw.eq(bo.getCategoryId() != null, PmRepairOrder::getCategoryId, bo.getCategoryId());
- lqw.eq(bo.getPriorityLevel() != null, PmRepairOrder::getPriorityLevel, bo.getPriorityLevel());
- lqw.eq(bo.getReporterId() != null, PmRepairOrder::getReporterId, bo.getReporterId());
- lqw.like(StringUtils.isNotBlank(bo.getReporterName()), PmRepairOrder::getReporterName, bo.getReporterName());
- lqw.like(StringUtils.isNotBlank(bo.getReporterPhone()), PmRepairOrder::getReporterPhone, bo.getReporterPhone());
- lqw.eq(StringUtils.isNotBlank(bo.getOrderStatus()), PmRepairOrder::getOrderStatus, bo.getOrderStatus());
- lqw.eq(bo.getAssigneeId() != null, PmRepairOrder::getAssigneeId, bo.getAssigneeId());
- lqw.like(StringUtils.isNotBlank(bo.getAssigneeName()), PmRepairOrder::getAssigneeName, bo.getAssigneeName());
+ lqw.eq(bo.getCategoryId() != null, HqPmRepairOrder::getCategoryId, bo.getCategoryId());
+ lqw.eq(bo.getPriorityLevel() != null, HqPmRepairOrder::getPriorityLevel, bo.getPriorityLevel());
+ lqw.eq(bo.getReporterId() != null, HqPmRepairOrder::getReporterId, bo.getReporterId());
+ lqw.like(StringUtils.isNotBlank(bo.getReporterName()), HqPmRepairOrder::getReporterName, bo.getReporterName());
+ lqw.like(StringUtils.isNotBlank(bo.getReporterPhone()), HqPmRepairOrder::getReporterPhone,
+ bo.getReporterPhone());
+ lqw.eq(StringUtils.isNotBlank(bo.getOrderStatus()), HqPmRepairOrder::getOrderStatus, bo.getOrderStatus());
+ lqw.eq(bo.getAssigneeId() != null, HqPmRepairOrder::getAssigneeId, bo.getAssigneeId());
+ lqw.like(StringUtils.isNotBlank(bo.getAssigneeName()), HqPmRepairOrder::getAssigneeName, bo.getAssigneeName());
// IN查询条件
- lqw.in(CollUtil.isNotEmpty(bo.getOrderStatusIn()), PmRepairOrder::getOrderStatus, bo.getOrderStatusIn());
- lqw.in(CollUtil.isNotEmpty(bo.getCategoryIdIn()), PmRepairOrder::getCategoryId, bo.getCategoryIdIn());
- lqw.in(CollUtil.isNotEmpty(bo.getReporterIdIn()), PmRepairOrder::getReporterId, bo.getReporterIdIn());
- lqw.in(CollUtil.isNotEmpty(bo.getAssigneeIdIn()), PmRepairOrder::getAssigneeId, bo.getAssigneeIdIn());
+ lqw.in(CollUtil.isNotEmpty(bo.getOrderStatusIn()), HqPmRepairOrder::getOrderStatus, bo.getOrderStatusIn());
+ lqw.in(CollUtil.isNotEmpty(bo.getCategoryIdIn()), HqPmRepairOrder::getCategoryId, bo.getCategoryIdIn());
+ lqw.in(CollUtil.isNotEmpty(bo.getReporterIdIn()), HqPmRepairOrder::getReporterId, bo.getReporterIdIn());
+ lqw.in(CollUtil.isNotEmpty(bo.getAssigneeIdIn()), HqPmRepairOrder::getAssigneeId, bo.getAssigneeIdIn());
// 添加数据权限控制
addDataPermissionFilter(lqw);
@@ -171,14 +172,14 @@ public class PmRepairOrderServiceImpl implements IPmRepairOrderService {
*
* @param lqw 查询条件构造器
*/
- private void addDataPermissionFilter(LambdaQueryWrapper lqw) {
+ private void addDataPermissionFilter(LambdaQueryWrapper lqw) {
try {
// 获取当前登录用户信息
var loginUser = LoginHelper.getLoginUser();
if (loginUser == null) {
// 未登录用户不能查看任何数据
log.warn("未登录用户尝试访问报修订单数据");
- lqw.eq(PmRepairOrder::getId, 0L);
+ lqw.eq(HqPmRepairOrder::getId, 0L);
return;
}
@@ -210,16 +211,16 @@ public class PmRepairOrderServiceImpl implements IPmRepairOrderService {
if (rolePermissions != null && rolePermissions.contains("maintenance_worker")) {
log.debug("当前用户[{}]为维修人员,只能查看自己创建或分配给自己的报修单", currentUserId);
lqw.and(wrapper -> wrapper
- .eq(PmRepairOrder::getReporterId, currentUserId) // 自己创建的报修单
+ .eq(HqPmRepairOrder::getReporterId, currentUserId) // 自己创建的报修单
.or()
- .eq(PmRepairOrder::getAssigneeId, currentUserId) // 分配给自己的报修单
+ .eq(HqPmRepairOrder::getAssigneeId, currentUserId) // 分配给自己的报修单
);
return;
}
// 其他用户:只能看见自己创建的报修单
log.debug("当前用户[{}]为普通用户,只能查看自己创建的报修单", currentUserId);
- lqw.eq(PmRepairOrder::getReporterId, currentUserId);
+ lqw.eq(HqPmRepairOrder::getReporterId, currentUserId);
} catch (Exception e) {
log.error("数据权限过滤异常: {}", e.getMessage(), e);
@@ -228,14 +229,14 @@ public class PmRepairOrderServiceImpl implements IPmRepairOrderService {
Long currentUserId = LoginHelper.getUserId();
if (currentUserId != null) {
log.warn("权限过滤异常,回退到只查看自己创建的报修单,用户ID: {}", currentUserId);
- lqw.eq(PmRepairOrder::getReporterId, currentUserId);
+ lqw.eq(HqPmRepairOrder::getReporterId, currentUserId);
} else {
log.error("无法获取当前用户ID,拒绝所有数据访问");
- lqw.eq(PmRepairOrder::getId, 0L);
+ lqw.eq(HqPmRepairOrder::getId, 0L);
}
} catch (Exception ex) {
log.error("权限过滤回退逻辑也失败了: {}", ex.getMessage(), ex);
- lqw.eq(PmRepairOrder::getId, 0L);
+ lqw.eq(HqPmRepairOrder::getId, 0L);
}
}
}
@@ -247,8 +248,8 @@ public class PmRepairOrderServiceImpl implements IPmRepairOrderService {
* @return 是否新增成功
*/
@Override
- public Boolean insertByBo(PmRepairOrderBo bo) {
- PmRepairOrder add = MapstructUtils.convert(bo, PmRepairOrder.class);
+ public Boolean insertByBo(HqPmRepairOrderBo bo) {
+ HqPmRepairOrder add = MapstructUtils.convert(bo, HqPmRepairOrder.class);
validEntityBeforeSave(add);
// 生成工单编号
@@ -289,7 +290,7 @@ public class PmRepairOrderServiceImpl implements IPmRepairOrderService {
*
* @param order 报修工单
*/
- private void fillReporterInfo(PmRepairOrder order) {
+ private void fillReporterInfo(HqPmRepairOrder order) {
try {
// 获取当前登录用户信息
Long userId = LoginHelper.getUserId();
@@ -335,8 +336,8 @@ public class PmRepairOrderServiceImpl implements IPmRepairOrderService {
* @return 是否修改成功
*/
@Override
- public Boolean updateByBo(PmRepairOrderBo bo) {
- PmRepairOrder update = MapstructUtils.convert(bo, PmRepairOrder.class);
+ public Boolean updateByBo(HqPmRepairOrderBo bo) {
+ HqPmRepairOrder update = MapstructUtils.convert(bo, HqPmRepairOrder.class);
validEntityBeforeSave(update);
return baseMapper.updateById(update) > 0;
}
@@ -344,13 +345,13 @@ public class PmRepairOrderServiceImpl implements IPmRepairOrderService {
/**
* 保存前的数据校验
*/
- private void validEntityBeforeSave(PmRepairOrder entity) {
+ private void validEntityBeforeSave(HqPmRepairOrder entity) {
// 校验工单编号唯一性
if (StringUtils.isNotBlank(entity.getOrderNo())) {
- LambdaQueryWrapper lqw = Wrappers.lambdaQuery();
- lqw.eq(PmRepairOrder::getOrderNo, entity.getOrderNo());
+ LambdaQueryWrapper lqw = Wrappers.lambdaQuery();
+ lqw.eq(HqPmRepairOrder::getOrderNo, entity.getOrderNo());
if (entity.getId() != null) {
- lqw.ne(PmRepairOrder::getId, entity.getId());
+ lqw.ne(HqPmRepairOrder::getId, entity.getId());
}
boolean exists = baseMapper.exists(lqw);
if (exists) {
@@ -371,7 +372,7 @@ public class PmRepairOrderServiceImpl implements IPmRepairOrderService {
if (isValid) {
// 校验是否可以删除
for (Long id : ids) {
- PmRepairOrder order = baseMapper.selectById(id);
+ HqPmRepairOrder order = baseMapper.selectById(id);
if (order != null && !"1".equals(order.getOrderStatus()) && !"9".equals(order.getOrderStatus())) {
throw new ServiceException("只能删除待分派或已取消状态的工单");
}
@@ -390,13 +391,13 @@ public class PmRepairOrderServiceImpl implements IPmRepairOrderService {
*/
@Override
public Boolean assignOrder(Long orderId, Long assigneeId, String assignRemark) {
- PmRepairOrder order = baseMapper.selectById(orderId);
+ HqPmRepairOrder order = baseMapper.selectById(orderId);
if (order == null) {
throw new ServiceException("工单不存在");
}
// 数据权限验证
- PmRepairOrderVo orderVo = MapstructUtils.convert(order, PmRepairOrderVo.class);
+ HqPmRepairOrderVo orderVo = MapstructUtils.convert(order, HqPmRepairOrderVo.class);
if (!hasDataPermission(orderVo)) {
throw new ServiceException("无权限操作该工单");
}
@@ -427,7 +428,7 @@ public class PmRepairOrderServiceImpl implements IPmRepairOrderService {
}
// 更新工单信息
- PmRepairOrder update = new PmRepairOrder();
+ HqPmRepairOrder update = new HqPmRepairOrder();
update.setId(orderId);
update.setAssigneeId(assigneeId);
update.setAssigneeName(assigneeName); // 设置维修员姓名
@@ -453,13 +454,13 @@ public class PmRepairOrderServiceImpl implements IPmRepairOrderService {
*/
@Override
public Boolean startRepair(Long orderId) {
- PmRepairOrder order = baseMapper.selectById(orderId);
+ HqPmRepairOrder order = baseMapper.selectById(orderId);
if (order == null) {
throw new ServiceException("工单不存在");
}
// 数据权限验证
- PmRepairOrderVo orderVo = MapstructUtils.convert(order, PmRepairOrderVo.class);
+ HqPmRepairOrderVo orderVo = MapstructUtils.convert(order, HqPmRepairOrderVo.class);
if (!hasDataPermission(orderVo)) {
throw new ServiceException("无权限操作该工单");
}
@@ -468,7 +469,7 @@ public class PmRepairOrderServiceImpl implements IPmRepairOrderService {
throw new ServiceException("只能开始已分派状态的工单");
}
- PmRepairOrder update = new PmRepairOrder();
+ HqPmRepairOrder update = new HqPmRepairOrder();
update.setId(orderId);
update.setStartTime(new Date());
update.setOrderStatus("3"); // 进行中
@@ -486,13 +487,13 @@ public class PmRepairOrderServiceImpl implements IPmRepairOrderService {
*/
@Override
public Boolean finishRepair(Long orderId, String repairResult, String usedMaterials) {
- PmRepairOrder order = baseMapper.selectById(orderId);
+ HqPmRepairOrder order = baseMapper.selectById(orderId);
if (order == null) {
throw new ServiceException("工单不存在");
}
// 数据权限验证
- PmRepairOrderVo orderVo = MapstructUtils.convert(order, PmRepairOrderVo.class);
+ HqPmRepairOrderVo orderVo = MapstructUtils.convert(order, HqPmRepairOrderVo.class);
if (!hasDataPermission(orderVo)) {
throw new ServiceException("无权限操作该工单");
}
@@ -510,7 +511,7 @@ public class PmRepairOrderServiceImpl implements IPmRepairOrderService {
totalDuration = (int) (diff / 60000); // 转换为分钟
}
- PmRepairOrder update = new PmRepairOrder();
+ HqPmRepairOrder update = new HqPmRepairOrder();
update.setId(orderId);
update.setFinishTime(finishTime);
update.setTotalDuration(totalDuration);
@@ -530,13 +531,13 @@ public class PmRepairOrderServiceImpl implements IPmRepairOrderService {
*/
@Override
public Boolean cancelOrder(Long orderId, String cancelReason) {
- PmRepairOrder order = baseMapper.selectById(orderId);
+ HqPmRepairOrder order = baseMapper.selectById(orderId);
if (order == null) {
throw new ServiceException("工单不存在");
}
// 数据权限验证
- PmRepairOrderVo orderVo = MapstructUtils.convert(order, PmRepairOrderVo.class);
+ HqPmRepairOrderVo orderVo = MapstructUtils.convert(order, HqPmRepairOrderVo.class);
if (!hasDataPermission(orderVo)) {
throw new ServiceException("无权限操作该工单");
}
@@ -546,7 +547,7 @@ public class PmRepairOrderServiceImpl implements IPmRepairOrderService {
throw new ServiceException("已完成、已评价或已归档的工单不能取消");
}
- PmRepairOrder update = new PmRepairOrder();
+ HqPmRepairOrder update = new HqPmRepairOrder();
update.setId(orderId);
update.setCancelReason(cancelReason);
update.setOrderStatus("9"); // 已取消
@@ -565,12 +566,12 @@ public class PmRepairOrderServiceImpl implements IPmRepairOrderService {
String prefix = "RO" + dateStr;
// 查询当天最大序号
- LambdaQueryWrapper lqw = Wrappers.lambdaQuery();
- lqw.likeRight(PmRepairOrder::getOrderNo, prefix);
- lqw.orderByDesc(PmRepairOrder::getOrderNo);
+ LambdaQueryWrapper lqw = Wrappers.lambdaQuery();
+ lqw.likeRight(HqPmRepairOrder::getOrderNo, prefix);
+ lqw.orderByDesc(HqPmRepairOrder::getOrderNo);
lqw.last("LIMIT 1");
- PmRepairOrder lastOrder = baseMapper.selectOne(lqw);
+ HqPmRepairOrder lastOrder = baseMapper.selectOne(lqw);
int sequence = 1;
if (lastOrder != null && StringUtils.isNotBlank(lastOrder.getOrderNo())) {
@@ -611,13 +612,13 @@ public class PmRepairOrderServiceImpl implements IPmRepairOrderService {
@Override
public Boolean updateProgress(Long orderId, java.util.Map progressData) {
// 1. 验证工单是否存在
- PmRepairOrder order = baseMapper.selectById(orderId);
+ HqPmRepairOrder order = baseMapper.selectById(orderId);
if (order == null) {
throw new ServiceException("工单不存在");
}
// 2. 数据权限验证
- PmRepairOrderVo orderVo = MapstructUtils.convert(order, PmRepairOrderVo.class);
+ HqPmRepairOrderVo orderVo = MapstructUtils.convert(order, HqPmRepairOrderVo.class);
if (!hasDataPermission(orderVo)) {
throw new ServiceException("无权限操作该工单");
}
@@ -635,7 +636,7 @@ public class PmRepairOrderServiceImpl implements IPmRepairOrderService {
String currentUserName = loginUser.getUsername();
// 5. 创建进度记录
- PmRepairProgress progress = new PmRepairProgress();
+ HqPmRepairProgress progress = new HqPmRepairProgress();
progress.setOrderId(orderId);
progress.setProgressType(String.valueOf(progressData.get("progressType")));
progress.setProgressStatus(String.valueOf(progressData.get("progressStatus")));
@@ -675,7 +676,7 @@ public class PmRepairOrderServiceImpl implements IPmRepairOrderService {
boolean statusUpdated = false;
if ("2".equals(order.getOrderStatus())) {
// 如果是首次更新进度(从已分派状态),自动将状态改为进行中
- PmRepairOrder statusUpdate = new PmRepairOrder();
+ HqPmRepairOrder statusUpdate = new HqPmRepairOrder();
statusUpdate.setId(orderId);
statusUpdate.setStartTime(new Date());
statusUpdate.setOrderStatus("3"); // 进行中
@@ -707,27 +708,27 @@ public class PmRepairOrderServiceImpl implements IPmRepairOrderService {
@Override
public List> getRepairProgress(Long orderId) {
// 1. 验证工单是否存在
- PmRepairOrder order = baseMapper.selectById(orderId);
+ HqPmRepairOrder order = baseMapper.selectById(orderId);
if (order == null) {
throw new ServiceException("工单不存在");
}
// 2. 数据权限验证
- PmRepairOrderVo orderVo = MapstructUtils.convert(order, PmRepairOrderVo.class);
+ HqPmRepairOrderVo orderVo = MapstructUtils.convert(order, HqPmRepairOrderVo.class);
if (!hasDataPermission(orderVo)) {
throw new ServiceException("无权限查看该工单进度");
}
// 3. 查询进度记录
- LambdaQueryWrapper lqw = Wrappers.lambdaQuery();
- lqw.eq(PmRepairProgress::getOrderId, orderId);
- lqw.orderByAsc(PmRepairProgress::getOperationTime); // 按时间正序排列
+ LambdaQueryWrapper lqw = Wrappers.lambdaQuery();
+ lqw.eq(HqPmRepairProgress::getOrderId, orderId);
+ lqw.orderByAsc(HqPmRepairProgress::getOperationTime); // 按时间正序排列
- List progressList = repairProgressMapper.selectList(lqw);
+ List progressList = repairProgressMapper.selectList(lqw);
// 4. 转换为Map格式返回
List> result = new java.util.ArrayList<>();
- for (PmRepairProgress progress : progressList) {
+ for (HqPmRepairProgress progress : progressList) {
java.util.Map map = new java.util.HashMap<>();
map.put("id", progress.getId());
map.put("orderId", progress.getOrderId());
@@ -758,12 +759,12 @@ public class PmRepairOrderServiceImpl implements IPmRepairOrderService {
private void updateProgressCount(Long orderId) {
try {
// 查询该工单的进度记录总数
- LambdaQueryWrapper countLqw = Wrappers.lambdaQuery();
- countLqw.eq(PmRepairProgress::getOrderId, orderId);
+ LambdaQueryWrapper countLqw = Wrappers.lambdaQuery();
+ countLqw.eq(HqPmRepairProgress::getOrderId, orderId);
long progressCount = repairProgressMapper.selectCount(countLqw);
// 更新工单的进度计数
- PmRepairOrder update = new PmRepairOrder();
+ HqPmRepairOrder update = new HqPmRepairOrder();
update.setId(orderId);
update.setProgressCount((int) progressCount);
baseMapper.updateById(update);
@@ -815,13 +816,13 @@ public class PmRepairOrderServiceImpl implements IPmRepairOrderService {
@Override
public Boolean completeOrder(Long orderId, String repairResult, String usedMaterials, String followSuggestions) {
// 1. 验证工单是否存在
- PmRepairOrder order = baseMapper.selectById(orderId);
+ HqPmRepairOrder order = baseMapper.selectById(orderId);
if (order == null) {
throw new ServiceException("工单不存在");
}
// 2. 数据权限验证
- PmRepairOrderVo orderVo = MapstructUtils.convert(order, PmRepairOrderVo.class);
+ HqPmRepairOrderVo orderVo = MapstructUtils.convert(order, HqPmRepairOrderVo.class);
if (!hasDataPermission(orderVo)) {
throw new ServiceException("无权限操作该工单");
}
@@ -841,7 +842,7 @@ public class PmRepairOrderServiceImpl implements IPmRepairOrderService {
}
// 5. 更新工单状态和完成信息
- PmRepairOrder update = new PmRepairOrder();
+ HqPmRepairOrder update = new HqPmRepairOrder();
update.setId(orderId);
update.setFinishTime(finishTime);
update.setTotalDuration(totalDuration);
@@ -858,7 +859,7 @@ public class PmRepairOrderServiceImpl implements IPmRepairOrderService {
// 6. 添加完成进度记录
try {
var loginUser = LoginHelper.getLoginUser();
- PmRepairProgress completionProgress = new PmRepairProgress();
+ HqPmRepairProgress completionProgress = new HqPmRepairProgress();
completionProgress.setOrderId(orderId);
completionProgress.setProgressType("6"); // 完成维修
completionProgress.setProgressStatus("维修已完成");
@@ -902,13 +903,13 @@ public class PmRepairOrderServiceImpl implements IPmRepairOrderService {
Long orderId = Long.valueOf(evaluationData.get("orderId").toString());
// 2. 验证工单是否存在
- PmRepairOrder order = baseMapper.selectById(orderId);
+ HqPmRepairOrder order = baseMapper.selectById(orderId);
if (order == null) {
throw new ServiceException("工单不存在");
}
// 3. 数据权限验证
- PmRepairOrderVo orderVo = MapstructUtils.convert(order, PmRepairOrderVo.class);
+ HqPmRepairOrderVo orderVo = MapstructUtils.convert(order, HqPmRepairOrderVo.class);
if (!hasDataPermission(orderVo)) {
throw new ServiceException("无权限评价该工单");
}
@@ -919,8 +920,8 @@ public class PmRepairOrderServiceImpl implements IPmRepairOrderService {
}
// 5. 验证是否已经评价过
- LambdaQueryWrapper checkLqw = Wrappers.lambdaQuery();
- checkLqw.eq(PmServiceEvaluation::getOrderId, orderId);
+ LambdaQueryWrapper checkLqw = Wrappers.lambdaQuery();
+ checkLqw.eq(HqPmServiceEvaluation::getOrderId, orderId);
boolean hasEvaluated = serviceEvaluationMapper.exists(checkLqw);
if (hasEvaluated) {
throw new ServiceException("该工单已经评价过,不能重复评价");
@@ -933,7 +934,7 @@ public class PmRepairOrderServiceImpl implements IPmRepairOrderService {
// 7. 创建服务评价记录
Date evaluationTime = new Date();
- PmServiceEvaluation evaluation = new PmServiceEvaluation();
+ HqPmServiceEvaluation evaluation = new HqPmServiceEvaluation();
evaluation.setOrderId(orderId);
evaluation.setEvaluatorId(currentUserId);
evaluation.setEvaluatorName(currentUserName);
@@ -989,7 +990,7 @@ public class PmRepairOrderServiceImpl implements IPmRepairOrderService {
}
// 9. 更新工单状态为"已评价",并设置评价得分和评价时间
- PmRepairOrder updateOrder = new PmRepairOrder();
+ HqPmRepairOrder updateOrder = new HqPmRepairOrder();
updateOrder.setId(orderId);
updateOrder.setOrderStatus("5"); // 已评价
updateOrder.setEvaluationScore(evaluation.getOverallScore());
@@ -1002,7 +1003,7 @@ public class PmRepairOrderServiceImpl implements IPmRepairOrderService {
// 10. 添加评价进度记录
try {
- PmRepairProgress evaluationProgress = new PmRepairProgress();
+ HqPmRepairProgress evaluationProgress = new HqPmRepairProgress();
evaluationProgress.setOrderId(orderId);
evaluationProgress.setProgressType("7"); // 用户评价
evaluationProgress.setProgressStatus("用户已评价");
@@ -1043,24 +1044,24 @@ public class PmRepairOrderServiceImpl implements IPmRepairOrderService {
public java.util.Map getServiceEvaluation(Long orderId) {
try {
// 1. 验证工单是否存在
- PmRepairOrder order = baseMapper.selectById(orderId);
+ HqPmRepairOrder order = baseMapper.selectById(orderId);
if (order == null) {
throw new ServiceException("工单不存在");
}
// 2. 数据权限验证
- PmRepairOrderVo orderVo = MapstructUtils.convert(order, PmRepairOrderVo.class);
+ HqPmRepairOrderVo orderVo = MapstructUtils.convert(order, HqPmRepairOrderVo.class);
if (!hasDataPermission(orderVo)) {
throw new ServiceException("无权限查看该工单的评价");
}
// 3. 查询评价记录
- LambdaQueryWrapper lqw = Wrappers.lambdaQuery();
- lqw.eq(PmServiceEvaluation::getOrderId, orderId);
- lqw.orderByDesc(PmServiceEvaluation::getCreateTime);
+ LambdaQueryWrapper lqw = Wrappers.lambdaQuery();
+ lqw.eq(HqPmServiceEvaluation::getOrderId, orderId);
+ lqw.orderByDesc(HqPmServiceEvaluation::getCreateTime);
lqw.last("LIMIT 1");
- PmServiceEvaluation evaluation = serviceEvaluationMapper.selectOne(lqw);
+ HqPmServiceEvaluation evaluation = serviceEvaluationMapper.selectOne(lqw);
if (evaluation == null) {
throw new ServiceException("该工单还没有评价记录");
}
diff --git a/backend/ruoyi-modules/ruoyi-hq/src/main/resources/mapper/PmRepairAttachmentMapper.xml b/backend/ruoyi-modules/ruoyi-hq/src/main/resources/mapper/HqPmRepairAttachmentMapper.xml
similarity index 86%
rename from backend/ruoyi-modules/ruoyi-hq/src/main/resources/mapper/PmRepairAttachmentMapper.xml
rename to backend/ruoyi-modules/ruoyi-hq/src/main/resources/mapper/HqPmRepairAttachmentMapper.xml
index 99fbb56d..39650dda 100644
--- a/backend/ruoyi-modules/ruoyi-hq/src/main/resources/mapper/PmRepairAttachmentMapper.xml
+++ b/backend/ruoyi-modules/ruoyi-hq/src/main/resources/mapper/HqPmRepairAttachmentMapper.xml
@@ -2,9 +2,9 @@
-
+
-
+
@@ -30,8 +30,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
-
- select id, order_id, file_name, file_path, file_size, file_type, file_extension, file_mime_type, upload_stage, uploader_id, uploader_name, thumbnail_path, duration, resolution, description, sort_order, tenant_id, create_dept, create_by, create_time, update_by, update_time, deleted from pm_repair_attachment
+
+ select id, order_id, file_name, file_path, file_size, file_type, file_extension, file_mime_type, upload_stage, uploader_id, uploader_name, thumbnail_path, duration, resolution, description, sort_order, tenant_id, create_dept, create_by, create_time, update_by, update_time, deleted from hq_pm_repair_attachment
diff --git a/backend/ruoyi-modules/ruoyi-hq/src/main/resources/mapper/PmRepairCategoryMapper.xml b/backend/ruoyi-modules/ruoyi-hq/src/main/resources/mapper/HqPmRepairCategoryMapper.xml
similarity index 70%
rename from backend/ruoyi-modules/ruoyi-hq/src/main/resources/mapper/PmRepairCategoryMapper.xml
rename to backend/ruoyi-modules/ruoyi-hq/src/main/resources/mapper/HqPmRepairCategoryMapper.xml
index d9f0dcf4..fae9d603 100644
--- a/backend/ruoyi-modules/ruoyi-hq/src/main/resources/mapper/PmRepairCategoryMapper.xml
+++ b/backend/ruoyi-modules/ruoyi-hq/src/main/resources/mapper/HqPmRepairCategoryMapper.xml
@@ -2,6 +2,6 @@
-
+
diff --git a/backend/ruoyi-modules/ruoyi-hq/src/main/resources/mapper/PmRepairOrderMapper.xml b/backend/ruoyi-modules/ruoyi-hq/src/main/resources/mapper/HqPmRepairOrderMapper.xml
similarity index 93%
rename from backend/ruoyi-modules/ruoyi-hq/src/main/resources/mapper/PmRepairOrderMapper.xml
rename to backend/ruoyi-modules/ruoyi-hq/src/main/resources/mapper/HqPmRepairOrderMapper.xml
index 67bec4ce..68c48d55 100644
--- a/backend/ruoyi-modules/ruoyi-hq/src/main/resources/mapper/PmRepairOrderMapper.xml
+++ b/backend/ruoyi-modules/ruoyi-hq/src/main/resources/mapper/HqPmRepairOrderMapper.xml
@@ -2,7 +2,7 @@
-
+
@@ -112,17 +149,13 @@
:hide-after="100"
effect="dark"
>
-
+
-
+
@@ -180,9 +213,9 @@
{{ viewForm.hallName }}
-
+
-
+
@@ -190,6 +223,10 @@
+
@@ -265,8 +302,7 @@
申请人:
- {{ record.applicantName }}
- ({{ record.applicantPhone || '手机号暂无' }})
+ {{ record.applicantName }}({{ record.applicantPhone || '手机号暂无' }})
预约时间:
@@ -278,6 +314,46 @@
预约用途:
{{ record.reservationPurpose }}
+
+
审核建议:
+
+
+ 正在检查时间冲突...
+
+
+ 冲突检查失败,请手动核实
+
+
+ 发现时间冲突,建议拒绝
+
+
冲突详情:
+
+ -
+ 本次批次
+ 已审批
+ {{ conflict.applicantName }} ({{ parseTime(conflict.startTime, '{h}:{i}') }}-{{
+ parseTime(conflict.endTime, '{h}:{i}')
+ }})
+
+
+
+
+
+ 无时间冲突,可以批准
+
+
+ 未检查时间冲突
+
+ 立即检查
+
+
+
+
@@ -294,6 +370,22 @@
{{ auditForm.status === '1' ? '批准' : '拒绝' }}
+
+
+
+
冲突检查统计:
+
+ 总计:{{ selectedRecords.length }} 个预约
+ 无冲突:{{ getNoConflictCount() }} 个
+ 有冲突:{{ getConflictCount() }} 个
+ 未检查:{{ getUncheckCount() }} 个
+
+
+
+ 建议先处理时间冲突的预约,或选择拒绝有冲突的申请
+
+
+