From 3e0f519c396ac8a72e7bbd426e4f38fa6cc403dc Mon Sep 17 00:00:00 2001
From: zhuguifei <zhuguifei@zhuguifeideiMac.local>
Date: 星期五, 14 三月 2025 16:50:34 +0800
Subject: [PATCH] 点检模块

---
 eims-ui/apps/web-antd/src/views/eims/insp-st/insp-st-drawer.vue                                          |    8 
 eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/controller/EimsMaintStController.java          |   48 
 eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/impl/EimsMaintOrderServiceImpl.java    |    2 
 eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/job/MaintPlanToOrderJob.java                   |    1 
 eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/EimsMaintOrder.java                     |    8 
 eims-ui/apps/web-antd/src/api/eims/insp-st/index.ts                                                      |   62 
 eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/bo/EimsInspectPlanBo.java               |  123 +
 eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/mapper/EimsMaintStMapper.java                  |   20 
 eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/impl/EimsInspectRecordServiceImpl.java |  255 +++
 eims/ruoyi-modules/lb-eims/src/main/resources/mapper/eims/EimsInspectRecordMapper.xml                    |   20 
 eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/EimsInspectSt.java                      |   36 
 eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/controller/EimsInspectRecordController.java    |  106 +
 eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/controller/EimsInspectStController.java        |  105 +
 eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/vo/EimsMaintPlanVo.java                 |    3 
 eims-ui/apps/web-antd/src/api/eims/insp-plan/index.ts                                                    |   63 
 eims-ui/apps/web-antd/src/views/eims/insp-plan/index.vue                                                 |  302 +++
 eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/EimsMaintSt.java                        |    8 
 eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/impl/EimsInspectPlanServiceImpl.java   |  200 ++
 eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/IEimsInspectRecordService.java         |   77 
 eims-ui/apps/web-antd/src/api/eims/maint-st/index.ts                                                     |   62 
 eims-ui/apps/web-antd/src/api/eims/maint-st/model.d.ts                                                   |   44 
 eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/vo/EimsMaintOrderVo.java                |    5 
 eims-ui/apps/web-antd/src/views/eims/insp-st/index.vue                                                   |   80 
 eims-ui/apps/web-antd/src/views/eims/maint-plan/index.vue                                                |    4 
 eims-ui/apps/web-antd/src/views/eims/maint-order/data.tsx                                                |   15 
 eims-ui/apps/web-antd/src/api/eims/insp-record/model.d.ts                                                |   97 +
 eims-ui/apps/web-antd/src/views/eims/maint-st/data.tsx                                                   |   17 
 eims-ui/apps/web-antd/src/api/eims/insp-plan/model.d.ts                                                  |   92 +
 eims-ui/apps/web-antd/src/constants/dict/index.ts                                                        |   12 
 eims-ui/apps/web-antd/src/views/eims/insp-record/data.tsx                                                |  298 +++
 eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/impl/EimsMaintStServiceImpl.java       |   80 
 eims-ui/apps/web-antd/src/views/eims/maint-order/index.vue                                               |   10 
 eims-ui/apps/web-antd/src/views/eims/maint-order/maint-order-drawer.vue                                  |   14 
 eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/controller/EimsMaintOrderController.java       |   14 
 eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/EimsInspectRecord.java                  |  130 +
 eims-ui/packages/@core/base/shared/src/constants/dict-enum.ts                                            |    5 
 eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/vo/EimsInspectRecordVo.java             |  175 ++
 eims-ui/apps/web-antd/src/views/eims/maint-plan/data.tsx                                                 |    5 
 eims-ui/apps/web-antd/src/views/eims/insp-record/insp-record-drawer.vue                                  |  167 ++
 eims-ui/apps/web-antd/src/views/eims/maint-st/maint-st-drawer.vue                                        |    6 
 eims/ruoyi-modules/lb-eims/src/main/resources/mapper/eims/EimsMaintStMapper.xml                          |   13 
 eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/bo/EimsMaintOrderBo.java                |   10 
 eims-ui/apps/web-antd/src/api/eims/insp-record/index.ts                                                  |   61 
 eims-ui/apps/web-antd/src/api/eims/insp-st/model.d.ts                                                    |   44 
 eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/IEimsInspectPlanService.java           |   78 
 eims-ui/apps/web-antd/src/views/eims/maint-st/index.vue                                                  |   70 
 eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/controller/EimsInspectPlanController.java      |  106 +
 eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/EimsInspectPlan.java                    |  112 +
 eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/vo/EimsMaintStVo.java                   |   14 
 eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/mapper/EimsInspectPlanMapper.java              |   19 
 eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/mapper/EimsInspectStMapper.java                |   22 
 eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/impl/EimsInspectStServiceImpl.java     |  204 ++
 eims/ruoyi-modules/lb-eims/src/main/resources/mapper/eims/EimsInspectPlanMapper.xml                      |   19 
 eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/bo/EimsInspectRecordBo.java             |  135 +
 eims-ui/apps/web-antd/src/views/eims/insp-st/data.tsx                                                    |   55 
 eims-ui/apps/web-antd/src/views/eims/insp-plan/insp-plan-drawer.vue                                      |  152 +
 eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/bo/EimsMaintStBo.java                   |   13 
 eims/ruoyi-modules/lb-eims/src/main/resources/mapper/eims/EimsInspectStMapper.xml                        |   14 
 eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/IEimsMaintStService.java               |   16 
 eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/vo/EimsInspectPlanVo.java               |  158 +
 eims/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/constant/DictConstants.java    |    2 
 eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/vo/EimsInspectStVo.java                 |  124 +
 /dev/null                                                                                                |    7 
 eims-ui/apps/web-antd/src/api/eims/maint-order/model.d.ts                                                |    5 
 eims-ui/apps/web-antd/src/views/eims/insp-record/index.vue                                               |  131 
 eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/mapper/EimsInspectRecordMapper.java            |   20 
 eims-ui/apps/web-antd/src/views/eims/insp-plan/data.tsx                                                  |  290 +++
 eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/IEimsInspectStService.java             |   68 
 eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/bo/EimsInspectStBo.java                 |   83 +
 69 files changed, 4,554 insertions(+), 270 deletions(-)

diff --git a/eims-ui/apps/web-antd/src/api/eims/insp-plan/index.ts b/eims-ui/apps/web-antd/src/api/eims/insp-plan/index.ts
new file mode 100644
index 0000000..792501d
--- /dev/null
+++ b/eims-ui/apps/web-antd/src/api/eims/insp-plan/index.ts
@@ -0,0 +1,63 @@
+import type { InspectPlanVO } from './model';
+
+import type { ID, IDS } from '#/api/common';
+
+import { commonExport } from '#/api/helper';
+import { requestClient } from '#/api/request';
+
+enum Api {
+  inspectPlanExport = '/eims/inspectPlan/export',
+  inspectPlanList = '/eims/inspectPlan/list',
+  root = '/eims/inspectPlan'
+}
+
+/**
+ * 鏌ヨ鐐规璁″垝鍒楄〃
+ * @param query
+ * @returns {*}
+ */
+
+export function listInspPlan(params?: any) {
+  return requestClient.get<InspectPlanVO[]>(Api.inspectPlanList, { params });
+}
+
+
+
+/**
+ * 鏌ヨ鐐规璁″垝璇︾粏
+ * @param inspectPlanId
+ */
+export function getInspPlan(inspectPlanId: ID) {
+  return requestClient.get<InspectPlanVO>(`${Api.root}/${inspectPlanId}`);
+}
+
+/**
+ * 鏂板鐐规璁″垝
+ * @param data
+ */
+export function addInspPlan(data: any) {
+  return requestClient.postWithMsg<void>(Api.root, data);
+}
+
+/**
+ * 淇敼鐐规璁″垝
+ * @param data
+ */
+export function updateInspPlan(data: any) {
+  return requestClient.putWithMsg<void>(Api.root, data);
+}
+
+/**
+ * 鍒犻櫎鐐规璁″垝
+ * @param inspectPlanId
+ */
+export function delInspPlan(inspectPlanId: IDS) {
+  return requestClient.deleteWithMsg<void>(`${Api.root}/${inspectPlanId}`);
+}
+/**
+ * 瀵煎嚭
+ * @param
+ */
+export function inspPlanExport(data: any) {
+  return commonExport(Api.inspectPlanExport, data);
+}
diff --git a/eims-ui/apps/web-antd/src/api/eims/insp-plan/model.d.ts b/eims-ui/apps/web-antd/src/api/eims/insp-plan/model.d.ts
new file mode 100644
index 0000000..88a4d09
--- /dev/null
+++ b/eims-ui/apps/web-antd/src/api/eims/insp-plan/model.d.ts
@@ -0,0 +1,92 @@
+export interface InspectPlanVO {
+  /**
+   *
+   */
+  id: number | string;
+
+  /**
+   * 璁惧id
+
+   */
+  equId: number | string;
+  /**
+   * 璁惧鍚嶇О
+
+   */
+  equName: string;
+  /**
+   * 璧勪骇缂栧彿
+
+   */
+  assteNo: string;
+
+  /**
+   * 鐐规绫诲瀷锛堝瓧鍏革級
+   */
+  inspType: string;
+
+  /**
+   * 鐐规椤瑰悕绉�
+   */
+  inspName: string;
+
+  /**
+   * 鐐规椤圭紪鍙�
+   */
+  inspNo: number;
+
+  /**
+   * 鐐规璇存槑
+   */
+  inspDesc: string;
+
+  /**
+   * 鐐规鍛ㄦ湡
+   */
+  inspCycle: number;
+
+  /**
+   * 鐐规鍛ㄦ湡鍗曚綅锛堝瓧鍏革級
+   */
+  inspCycleUnit: string;
+
+  /**
+   * 鐐规瑙勫垯锛堝瓧鍏革級淇濆吇鏃堕棿璁$畻锛�1-鎸夊懆鏈�  2-鎸変笂娆′繚鍏绘椂闂�
+   */
+  inspRule: string;
+
+  /**
+   * 鐐规浜�
+   */
+  inspUser: number;
+
+  /**
+   * 鐐规閮ㄩ棬
+   */
+  inspDept: number;
+
+  /**
+   * 鐘舵�侊紙瀛楀吀锛� 0-鍚敤  1-绂佺敤
+   */
+  status: string;
+
+  /**
+   * 棣栨鎵ц鏃堕棿
+   */
+  inspFirstTime: string;
+
+  /**
+   * 涓婃鎵ц鏃堕棿
+   */
+  inspLastTime: string;
+
+  /**
+   * 涓嬫鎵ц鏃堕棿
+   */
+  inspNextTime: string;
+
+  /**
+   * 澶囨敞
+   */
+  remark: string;
+}
diff --git a/eims-ui/apps/web-antd/src/api/eims/insp-record/index.ts b/eims-ui/apps/web-antd/src/api/eims/insp-record/index.ts
new file mode 100644
index 0000000..09faab4
--- /dev/null
+++ b/eims-ui/apps/web-antd/src/api/eims/insp-record/index.ts
@@ -0,0 +1,61 @@
+import type { InspectRecordVO } from './model';
+
+import type { ID, IDS } from '#/api/common';
+
+import { commonExport } from '#/api/helper';
+import { requestClient } from '#/api/request';
+
+enum Api {
+  inspRecordExport = '/eims/inspRecord/export',
+  inspRecordList = '/eims/inspRecord/list',
+  root = '/eims/inspRecord'
+}
+
+/**
+ * 鏌ヨ鐐规璁板綍鍒楄〃
+ * @param query
+ * @returns {*}
+ */
+
+export function listInspRecord(params?: any) {
+  return requestClient.get<InspectRecordVO[]>(Api.inspRecordList, { params });
+}
+
+/**
+ * 鏌ヨ鐐规璁板綍璇︾粏
+ * @param inspRecordId
+ */
+export function getInspRecord(inspRecordId: ID) {
+  return requestClient.get<InspectRecordVO>(`${Api.root}/${inspRecordId}`);
+}
+
+/**
+ * 鏂板鐐规璁板綍
+ * @param data
+ */
+export function addInspRecord(data: any) {
+  return requestClient.postWithMsg<void>(Api.root, data);
+}
+
+/**
+ * 淇敼鐐规璁板綍
+ * @param data
+ */
+export function updateInspRecord(data: any) {
+  return requestClient.putWithMsg<void>(Api.root, data);
+}
+
+/**
+ * 鍒犻櫎鐐规璁板綍
+ * @param inspRecordId
+ */
+export function delInspRecord(inspRecordId: IDS) {
+  return requestClient.deleteWithMsg<void>(`${Api.root}/${inspRecordId}`);
+}
+/**
+ * 瀵煎嚭
+ * @param
+ */
+export function inspRecordExport(data: any) {
+  return commonExport(Api.inspRecordExport, data);
+}
diff --git a/eims-ui/apps/web-antd/src/api/eims/insp-record/model.d.ts b/eims-ui/apps/web-antd/src/api/eims/insp-record/model.d.ts
new file mode 100644
index 0000000..688c76f
--- /dev/null
+++ b/eims-ui/apps/web-antd/src/api/eims/insp-record/model.d.ts
@@ -0,0 +1,97 @@
+export interface InspectRecordVO {
+  /**
+   * id
+   */
+  id: string | number;
+
+  /**
+   * 璁惧di
+   */
+  equId: string | number;
+  /**
+   * 璁惧鍚嶇О
+
+   */
+  equName: string;
+  /**
+   * 璧勪骇缂栧彿
+
+   */
+  assteNo: string;
+
+  /**
+   * 鐐规鍚嶇О
+   */
+  inspName: string;
+
+  /**
+   * 鐐规鎻忚堪
+   */
+  inspDesc: string;
+
+  /**
+   * 鐘舵��
+   */
+  status: string;
+
+  /**
+   * 鐐规缂栫爜
+   */
+  inspCode: string;
+
+  /**
+   * 鍊艰褰曟柟寮忥紙瀛楀吀锛�
+   */
+  recordMode: string;
+
+  /**
+   * 鍙傝�冨��
+   */
+  referenceValue: string;
+
+  /**
+   * 涓婇檺
+   */
+  upperLimit: string;
+
+  /**
+   * 涓嬮檺
+   */
+  lowLimit: string;
+
+  /**
+   * 妫�鏌ュ��
+   */
+  checkValue: string;
+
+  /**
+   * 鐐规缁撴灉锛堝瓧鍏革級
+   */
+  inspResult: string;
+
+  /**
+   * 鐐规鏃堕棿
+   */
+  inspTime: string;
+
+  /**
+   * 璁″垝鐐规鏃ユ湡
+   */
+  planTime: string;
+
+  /**
+   * 楠岃瘉浜�
+   */
+  verifyUser: number;
+
+  /**
+   * 璁″垝id
+   */
+  planId: string | number;
+
+  /**
+   * 澶囨敞
+   */
+  remark: string;
+
+}
diff --git a/eims-ui/apps/web-antd/src/api/eims/insp-st/index.ts b/eims-ui/apps/web-antd/src/api/eims/insp-st/index.ts
new file mode 100644
index 0000000..226a01f
--- /dev/null
+++ b/eims-ui/apps/web-antd/src/api/eims/insp-st/index.ts
@@ -0,0 +1,62 @@
+import type { InspectStVO } from './model';
+
+import type { ID, IDS } from '#/api/common';
+
+import { commonExport } from '#/api/helper';
+import { requestClient } from '#/api/request';
+
+enum Api {
+  inspectStExport = '/eims/inspectSt/export',
+  inspectStList = '/eims/inspectSt/list',
+  root = '/eims/inspectSt'
+}
+
+/**
+ * 鏌ヨ鐐规姹囨�诲垪琛�
+ * @param query
+ * @returns {*}
+ */
+
+export function listInspectSt(params?: any) {
+  return requestClient.get<InspectStVO[]>(Api.inspectStList, { params });
+}
+
+
+/**
+ * 鏌ヨ鐐规姹囨�昏缁�
+ * @param inspectStId
+ */
+export function getInspectSt(inspectStId: ID) {
+  return requestClient.get<InspectStVO>(`${Api.root}/${inspectStId}`);
+}
+
+/**
+ * 鏂板鐐规姹囨��
+ * @param data
+ */
+export function addInspectSt(data: any) {
+  return requestClient.postWithMsg<void>(Api.root, data);
+}
+
+/**
+ * 淇敼鐐规姹囨��
+ * @param data
+ */
+export function updateInspectSt(data: any) {
+  return requestClient.putWithMsg<void>(Api.root, data);
+}
+
+/**
+ * 鍒犻櫎鐐规姹囨��
+ * @param inspectStId
+ */
+export function delInspectSt(inspectStId: IDS) {
+  return requestClient.deleteWithMsg<void>(`${Api.root}/${inspectStId}`);
+}
+/**
+ * 瀵煎嚭
+ * @param
+ */
+export function inspectStExport(data: any) {
+  return commonExport(Api.inspectStExport, data);
+}
diff --git a/eims-ui/apps/web-antd/src/api/eims/insp-st/model.d.ts b/eims-ui/apps/web-antd/src/api/eims/insp-st/model.d.ts
new file mode 100644
index 0000000..96d6d65
--- /dev/null
+++ b/eims-ui/apps/web-antd/src/api/eims/insp-st/model.d.ts
@@ -0,0 +1,44 @@
+export interface InspectStVO {
+  /**
+   *
+   */
+  id: number | string;
+
+  /**
+   *
+   */
+  title: string;
+
+  /**
+   *
+   */
+  equId: number | string;
+  status: string;
+
+  /**
+   *
+   */
+  planTime: string;
+
+  /**
+   * 淇濆吇浜�
+   */
+  maintUser: number;
+
+  /**
+   * 楠岃瘉浜�
+   */
+  verifyUser: number;
+  verifyTime: string;
+
+  /**
+   * 鐗硅浜嬮」
+   */
+  specialNote: string;
+
+  /**
+   * 澶囨敞
+   */
+  remark: string;
+}
+
diff --git a/eims-ui/apps/web-antd/src/api/eims/maint-order-st/index.ts b/eims-ui/apps/web-antd/src/api/eims/maint-order-st/index.ts
deleted file mode 100644
index 0866850..0000000
--- a/eims-ui/apps/web-antd/src/api/eims/maint-order-st/index.ts
+++ /dev/null
@@ -1,62 +0,0 @@
-import type { MaintOrderStVO } from './model';
-
-import type { ID, IDS } from '#/api/common';
-
-import { commonExport } from '#/api/helper';
-import { requestClient } from '#/api/request';
-
-enum Api {
-  maintOrderrStExport = '/eims/maintOrderSt/export',
-  maintOrderrStList = '/eims/maintOrderSt/list',
-  root = '/eims/maintOrderSt'
-}
-
-/**
- * 鏌ヨ淇濆吇宸ュ崟鍒楄〃
- * @param query
- * @returns {*}
- */
-
-export function listMaintOrderSt(params?: any) {
-  return requestClient.get<MaintOrderStVO[]>(Api.maintOrderrStList, { params });
-}
-
-
-/**
- * 鏌ヨ淇濆吇宸ュ崟璇︾粏
- * @param maintOrderrStId
- */
-export function getMaintOrderSt(maintOrderrStId: ID) {
-  return requestClient.get<MaintOrderStVO>(`${Api.root}/${maintOrderrStId}`);
-}
-
-/**
- * 鏂板淇濆吇宸ュ崟
- * @param data
- */
-export function addMaintOrderSt(data: any) {
-  return requestClient.postWithMsg<void>(Api.root, data);
-}
-
-/**
- * 淇敼淇濆吇宸ュ崟
- * @param data
- */
-export function updateMaintOrderSt(data: any) {
-  return requestClient.putWithMsg<void>(Api.root, data);
-}
-
-/**
- * 鍒犻櫎淇濆吇宸ュ崟
- * @param maintOrderrStId
- */
-export function delMaintOrderSt(maintOrderrStId: IDS) {
-  return requestClient.deleteWithMsg<void>(`${Api.root}/${maintOrderrStId}`);
-}
-/**
- * 瀵煎嚭
- * @param
- */
-export function maintOrderrStExport(data: any) {
-  return commonExport(Api.maintOrderrStExport, data);
-}
diff --git a/eims-ui/apps/web-antd/src/api/eims/maint-order-st/model.d.ts b/eims-ui/apps/web-antd/src/api/eims/maint-order-st/model.d.ts
deleted file mode 100644
index c5a7ea3..0000000
--- a/eims-ui/apps/web-antd/src/api/eims/maint-order-st/model.d.ts
+++ /dev/null
@@ -1,85 +0,0 @@
-export interface MaintOrderStVO {
-  /**
-   *
-   */
-  id: number | string;
-
-  /**
-   *
-   */
-  title: string;
-
-  /**
-   *
-   */
-  equId: number | string;
-  status: string;
-
-  /**
-   *
-   */
-  planTime: string;
-
-  /**
-   * 淇濆吇浜�
-   */
-  maintUser: number;
-
-  /**
-   * 楠岃瘉浜�
-   */
-  verifyUser: number;
-  verifyTime: string;
-
-  /**
-   * 鐗硅浜嬮」
-   */
-  specialNote: string;
-
-  /**
-   * 澶囨敞
-   */
-  remark: string;
-}
-
-export interface MaintOrderStForm extends BaseEntity {
-  /**
-   *
-   */
-  id?: number | string;
-
-  /**
-   *
-   */
-  title?: string;
-
-  /**
-   *
-   */
-  equId?: number | string;
-
-  /**
-   *
-   */
-  planTime?: string;
-
-  /**
-   * 淇濆吇浜�
-   */
-  maintUser?: number;
-
-  /**
-   * 楠岃瘉浜�
-   */
-  verifyUser?: number;
-
-  /**
-   * 鐗硅浜嬮」
-   */
-  specialNote?: string;
-
-  /**
-   * 澶囨敞
-   */
-  remark?: string;
-}
diff --git a/eims-ui/apps/web-antd/src/api/eims/maint-order/model.d.ts b/eims-ui/apps/web-antd/src/api/eims/maint-order/model.d.ts
index 8605bb8..ffb06e7 100644
--- a/eims-ui/apps/web-antd/src/api/eims/maint-order/model.d.ts
+++ b/eims-ui/apps/web-antd/src/api/eims/maint-order/model.d.ts
@@ -15,6 +15,11 @@
   maintType: string;
 
   /**
+   * 宸ヤ綔鎻忚堪
+   */
+  maintDesc: string;
+
+  /**
    * 璁″垝琛ㄥ啑浣�-淇濆吇鍛ㄦ湡
    */
   maintCycle: number;
diff --git a/eims-ui/apps/web-antd/src/api/eims/maint-st/index.ts b/eims-ui/apps/web-antd/src/api/eims/maint-st/index.ts
new file mode 100644
index 0000000..8123367
--- /dev/null
+++ b/eims-ui/apps/web-antd/src/api/eims/maint-st/index.ts
@@ -0,0 +1,62 @@
+import type { MaintStVO } from './model';
+
+import type { ID, IDS } from '#/api/common';
+
+import { commonExport } from '#/api/helper';
+import { requestClient } from '#/api/request';
+
+enum Api {
+  maintStExport = '/eims/maintSt/export',
+  maintStList = '/eims/maintSt/list',
+  root = '/eims/maintSt'
+}
+
+/**
+ * 鏌ヨ淇濆吇姹囨�诲垪琛�
+ * @param query
+ * @returns {*}
+ */
+
+export function listMaintSt(params?: any) {
+  return requestClient.get<MaintStVO[]>(Api.maintStList, { params });
+}
+
+
+/**
+ * 鏌ヨ淇濆吇姹囨�昏缁�
+ * @param maintStId
+ */
+export function getMaintSt(maintStId: ID) {
+  return requestClient.get<MaintStVO>(`${Api.root}/${maintStId}`);
+}
+
+/**
+ * 鏂板淇濆吇姹囨��
+ * @param data
+ */
+export function addMaintSt(data: any) {
+  return requestClient.postWithMsg<void>(Api.root, data);
+}
+
+/**
+ * 淇敼淇濆吇姹囨��
+ * @param data
+ */
+export function updateMaintSt(data: any) {
+  return requestClient.putWithMsg<void>(Api.root, data);
+}
+
+/**
+ * 鍒犻櫎淇濆吇姹囨��
+ * @param maintStId
+ */
+export function delMaintSt(maintStId: IDS) {
+  return requestClient.deleteWithMsg<void>(`${Api.root}/${maintStId}`);
+}
+/**
+ * 瀵煎嚭
+ * @param
+ */
+export function maintStExport(data: any) {
+  return commonExport(Api.maintStExport, data);
+}
diff --git a/eims-ui/apps/web-antd/src/api/eims/maint-st/model.d.ts b/eims-ui/apps/web-antd/src/api/eims/maint-st/model.d.ts
new file mode 100644
index 0000000..92e3994
--- /dev/null
+++ b/eims-ui/apps/web-antd/src/api/eims/maint-st/model.d.ts
@@ -0,0 +1,44 @@
+export interface MaintStVO {
+  /**
+   *
+   */
+  id: number | string;
+
+  /**
+   *
+   */
+  title: string;
+
+  /**
+   *
+   */
+  equId: number | string;
+  status: string;
+
+  /**
+   *
+   */
+  planTime: string;
+
+  /**
+   * 淇濆吇浜�
+   */
+  maintUser: number;
+
+  /**
+   * 楠岃瘉浜�
+   */
+  verifyUser: number;
+  verifyTime: string;
+
+  /**
+   * 鐗硅浜嬮」
+   */
+  specialNote: string;
+
+  /**
+   * 澶囨敞
+   */
+  remark: string;
+}
+
diff --git a/eims-ui/apps/web-antd/src/constants/dict/index.ts b/eims-ui/apps/web-antd/src/constants/dict/index.ts
index b86cfa4..de2c03f 100644
--- a/eims-ui/apps/web-antd/src/constants/dict/index.ts
+++ b/eims-ui/apps/web-antd/src/constants/dict/index.ts
@@ -49,3 +49,15 @@
   DAIYANZHENG = '2', // 寰呴獙璇�
   WANCHENG = '3' // 瀹屾垚
 }
+
+
+/**
+ * 淇濆吇宸ュ崟鐘舵��
+ */
+export enum EIMS_INSPECT_STATUS {
+  YIDIANJIAN = '1', // 宸茬偣妫�
+  WEIDIANJIAN = '0', // 鏈偣妫�
+  DAIYANZHENG = '2', // 寰呴獙璇�
+  WANCHENG = '3' // 瀹屾垚
+}
+
diff --git a/eims-ui/apps/web-antd/src/views/eims/insp-plan/data.tsx b/eims-ui/apps/web-antd/src/views/eims/insp-plan/data.tsx
new file mode 100644
index 0000000..1b14461
--- /dev/null
+++ b/eims-ui/apps/web-antd/src/views/eims/insp-plan/data.tsx
@@ -0,0 +1,290 @@
+import type { VxeGridProps } from '#/adapter/vxe-table';
+
+import { DictEnum } from '@vben/constants';
+import { getPopupContainer } from '@vben/utils';
+
+import { type FormSchemaGetter } from '#/adapter/form';
+import { getDictOptions } from '#/utils/dict';
+import { renderDict } from '#/utils/render';
+
+export const querySchema: FormSchemaGetter = () => [
+  {
+    component: 'Input',
+    fieldName: 'equName',
+    label: '璁惧鍚嶇О'
+  },
+  {
+    component: 'Input',
+    fieldName: 'assetNo',
+    label: '璧勪骇缂栧彿'
+  },
+  {
+    component: 'Select',
+    componentProps: {
+      options: getDictOptions(DictEnum.EIMS_INSPECT_TYPE)
+    },
+    fieldName: 'inspType',
+    label: '鐐规绫诲瀷'
+  },
+  {
+    component: 'TreeSelect',
+    // 鍦╠rawer閲屾洿鏂� 杩欓噷涓嶉渶瑕侀粯璁ょ殑componentProps
+    defaultValue: undefined,
+    fieldName: 'inspDept',
+    label: '鐐规閮ㄩ棬',
+
+  },
+  {
+    component: 'Select',
+    componentProps: {
+      allowClear: true,
+      showSearch: true,
+      getPopupContainer
+    },
+    fieldName: 'inspUser',
+    label: '鐐规浜�',
+  },
+  {
+    component: 'Select',
+    componentProps: {
+      options: getDictOptions(DictEnum.SYS_NORMAL_DISABLE)
+    },
+    fieldName: 'status',
+    label: '鐘舵��'
+  },
+];
+
+export const columns: VxeGridProps['columns'] = [
+  { type: 'checkbox', width: 60, fixed: 'left' },
+  {
+    title: '璁惧鍚嶇О',
+    field: 'equName',
+    minWidth: 200,
+    fixed: 'left'
+  },
+  {
+    title: '璧勪骇缂栧彿',
+    field: 'assetNo',
+    minWidth: 160
+  },
+  {
+    title: '鐘舵��',
+    field: 'status',
+    minWidth: 80,
+    slots: {
+      default: ({ row }) => {
+        return renderDict(row.status, DictEnum.SYS_NORMAL_DISABLE);
+      }
+    }
+  },
+  {
+    title: '鐐规椤�',
+    field: 'inspName',
+    minWidth: 200
+  },
+  {
+    title: '鐐规绫诲瀷',
+    field: 'inspType',
+    minWidth: 120,
+    slots: {
+      default: ({ row }) => {
+        return renderDict(row.inspType, DictEnum.EIMS_INSPECT_TYPE);
+      }
+    }
+  },
+  {
+    title: '鐐规浜�',
+    field: 'inspUserName',
+    minWidth: 100
+  },
+  {
+    title: '寰幆鍛ㄦ湡',
+    field: 'inspCycleUnitName',
+    minWidth: 80
+  },
+  {
+    title: '鏃堕棿璁$畻瑙勫垯',
+    field: 'inspRule',
+    minWidth: 140,
+    slots: {
+      default: ({ row }) => {
+        return renderDict(row.inspRule, DictEnum.MAINT_TIME_RULE);
+      }
+    }
+  },
+  {
+    title: '棣栨鎵ц鏃堕棿',
+    field: 'inspFirstTime',
+    minWidth: 160
+  },
+  {
+    title: '涓婃鎵ц鏃堕棿',
+    field: 'inspLastTime',
+    minWidth: 160
+  },
+  {
+    title: '涓嬫鎵ц鏃堕棿',
+    field: 'inspNextTime',
+    minWidth: 160
+  },
+  {
+    title: '鍒涘缓鏃堕棿',
+    field: 'createTime',
+    minWidth: 200
+  },
+  {
+    field: 'action',
+    fixed: 'right',
+    slots: { default: 'action' },
+    title: '鎿嶄綔',
+    width: 200
+  }
+];
+
+export const drawerSchema: FormSchemaGetter = () => [
+  {
+    component: 'Input',
+    dependencies: {
+      show: () => false,
+      triggerFields: ['']
+    },
+    fieldName: 'id'
+  },
+  {
+    component: 'Input',
+    fieldName: 'equId',
+    label: '璁惧id',
+    dependencies: {
+      show: () => false,
+      triggerFields: ['']
+    }
+  },
+  {
+    component: 'Input',
+    fieldName: 'equName',
+    label: '璁惧鍚嶇О'
+  },
+  {
+    component: 'Input',
+    fieldName: 'inspName',
+    label: '鐐规椤�'
+  },
+  {
+    component: 'RadioGroup',
+    componentProps: {
+      buttonStyle: 'solid',
+      options: getDictOptions(DictEnum.EIMS_INSPECT_TYPE),
+      optionType: 'button'
+    },
+    fieldName: 'inspType',
+    defaultValue: '1',
+    label: '鐐规绫诲瀷'
+  },
+  {
+    component: 'Input',
+    fieldName: 'inspDesc',
+    label: '鐐规璇存槑'
+  },
+  {
+    component: 'InputNumber',
+    fieldName: 'inspCycle',
+    label: '鐐规鍛ㄦ湡',
+    formItemClass: 'col-span-1',
+    componentProps: {
+      min: 1
+    }
+  },
+  {
+    component: 'Select',
+    componentProps: {
+      getPopupContainer,
+      options: getDictOptions(DictEnum.MAINT_CYCLE_UNIT)
+    },
+    fieldName: 'inspCycleUnit',
+    formItemClass: 'col-span-1 w-[80px]',
+    labelWidth: 0,
+    label: ''
+  },
+
+  {
+    component: 'Select',
+    componentProps: {
+      getPopupContainer,
+      options: getDictOptions(DictEnum.MAINT_TIME_RULE)
+    },
+    fieldName: 'inspRule',
+    label: '鐐规瑙勫垯 '
+  },
+  {
+    component: 'Input',
+    fieldName: 'inspUser',
+    label: '鐢ㄦ埛id',
+    dependencies: {
+      show: () => false,
+      triggerFields: ['']
+    }
+  },
+  {
+    component: 'Input',
+    fieldName: 'inspUserName',
+    label: '鐐规浜�'
+  },
+  {
+    component: 'Input',
+    fieldName: 'inspDept',
+    label: '閮ㄩ棬id',
+    dependencies: {
+      show: () => false,
+      triggerFields: ['']
+    }
+  },
+  {
+    component: 'RadioGroup',
+    componentProps: {
+      buttonStyle: 'solid',
+      options: getDictOptions(DictEnum.SYS_NORMAL_DISABLE),
+      optionType: 'button'
+    },
+    fieldName: 'status',
+    defaultValue: '0',
+    label: '鐘舵��'
+  },
+  {
+    component: 'DatePicker',
+    componentProps: {
+      format: 'YYYY-MM-DD',
+      showTime: false,
+      valueFormat: 'YYYY-MM-DD',
+      getPopupContainer
+    },
+    fieldName: 'inspFirstTime',
+    label: '棣栨淇濆吇鏃堕棿'
+  },
+  {
+    component: 'DatePicker',
+    componentProps: {
+      format: 'YYYY-MM-DD',
+      showTime: false,
+      valueFormat: 'YYYY-MM-DD',
+      getPopupContainer
+    },
+    fieldName: 'inspLastTime',
+    label: '涓婃淇濆吇鏃堕棿'
+  },
+  {
+    component: 'DatePicker',
+    componentProps: {
+      format: 'YYYY-MM-DD',
+      showTime: false,
+      valueFormat: 'YYYY-MM-DD',
+      getPopupContainer
+    },
+    fieldName: 'inspNextTime',
+    label: '涓嬫淇濆吇鏃堕棿',
+  },
+  {
+    component: 'Textarea',
+    fieldName: 'remark',
+    label: '澶囨敞'
+  }
+];
diff --git a/eims-ui/apps/web-antd/src/views/eims/insp-plan/index.vue b/eims-ui/apps/web-antd/src/views/eims/insp-plan/index.vue
new file mode 100644
index 0000000..3b1b351
--- /dev/null
+++ b/eims-ui/apps/web-antd/src/views/eims/insp-plan/index.vue
@@ -0,0 +1,302 @@
+<script setup lang="ts">
+import type { Recordable } from '@vben/types';
+
+import { onMounted, ref } from 'vue';
+
+import { Page, useVbenDrawer, type VbenFormProps } from '@vben/common-ui';
+import { $t } from '@vben/locales';
+import { addFullName, getPopupContainer, getVxePopupContainer } from '@vben/utils';
+
+import { Dropdown, Menu, MenuItem, Modal, Popconfirm, Space } from 'ant-design-vue';
+
+import { useVbenVxeGrid, vxeCheckboxChecked, type VxeGridProps, vxeSortEvent } from '#/adapter/vxe-table';
+import { delInspPlan, inspPlanExport, listInspPlan } from '#/api/eims/insp-plan';
+import { generateCode } from '#/api/eims/utils';
+import { getDeptTree, userList } from '#/api/system/user';
+import { EIMS_INSPECT_STATUS } from '#/constants/dict';
+import { commonDownloadExcel } from '#/utils/file/download';
+import inspRecordDrawer from '#/views/eims/insp-record/insp-record-drawer.vue';
+
+import { columns, querySchema } from './data';
+import inspPlanDrawer from './insp-plan-drawer.vue';
+
+defineExpose({
+  tableSelect
+});
+
+const formOptions: VbenFormProps = {
+  commonConfig: {
+    labelWidth: 80,
+    componentProps: {
+      allowClear: true
+    }
+  },
+  collapsed: true,
+  schema: querySchema(),
+  wrapperClass: 'grid-cols-1 md:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4',
+  // 鏃ユ湡閫夋嫨鏍煎紡鍖�
+  fieldMappingTime: [['planTime', ['params[beginPlanTime]', 'params[endPlanTime]'], ['YYYY-MM-DD 00:00:00', 'YYYY-MM-DD 23:59:59']]]
+};
+
+const gridOptions: VxeGridProps = {
+  checkboxConfig: {
+    // 楂樹寒
+    highlight: true,
+    // 缈婚〉鏃朵繚鐣欓�変腑鐘舵��
+    reserve: true
+    // 鐐瑰嚮琛岄�変腑
+    // trigger: 'row'
+  },
+  columns,
+  height: 'auto',
+  keepSource: true,
+  pagerConfig: {},
+  proxyConfig: {
+    ajax: {
+      query: async ({ page }, formValues = {}) => {
+        return await listInspPlan({
+          pageNum: page.currentPage,
+          pageSize: page.pageSize,
+          ...formValues
+        });
+      }
+    }
+  },
+  rowConfig: {
+    isHover: true,
+    keyField: 'id'
+  },
+  sortConfig: {
+    // 杩滅▼鎺掑簭
+    remote: true,
+    // 鏀寔澶氬瓧娈垫帓搴� 榛樿鍏抽棴
+    multiple: true
+  },
+  id: 'insp-plan-index'
+};
+const equId = ref<string>();
+const [BasicTable, tableApi] = useVbenVxeGrid({
+  formOptions,
+  gridOptions,
+  gridEvents: {
+    sortChange: (sortParams) => vxeSortEvent(tableApi, sortParams),
+    cellClick: (e: any) => {
+      const { row } = e;
+      equId.value = row.equId;
+    }
+  }
+});
+
+const [InspPlanDrawer, inspPlanDrawerApi] = useVbenDrawer({
+  connectedComponent: inspPlanDrawer
+});
+
+const [InspRecordDrawer, inspRecordDrawerApi] = useVbenDrawer({
+  connectedComponent: inspRecordDrawer
+});
+
+function handleAdd() {
+  inspPlanDrawerApi.setData({});
+  inspPlanDrawerApi.open();
+}
+
+async function handleEdit(record: Recordable<any>) {
+  inspPlanDrawerApi.setData({ id: record.id });
+  inspPlanDrawerApi.open();
+}
+
+async function handleDelete(row: Recordable<any>) {
+  await delInspPlan(row.id);
+  await tableApi.query();
+}
+
+function handleMultiDelete() {
+  const rows = tableApi.grid.getCheckboxRecords();
+  const ids = rows.map((row: any) => row.id);
+  Modal.confirm({
+    title: '鎻愮ず',
+    okType: 'danger',
+    content: `纭鍒犻櫎閫変腑鐨�${ids.length}鏉¤褰曞悧锛焋,
+    onOk: async () => {
+      await delInspPlan(ids);
+      await tableApi.query();
+    }
+  });
+}
+
+function handleDownloadExcel() {
+  commonDownloadExcel(inspPlanExport, '鐐规璁″垝璁板綍', tableApi.formApi.form.values, {
+    fieldMappingTime: formOptions.fieldMappingTime
+  });
+}
+
+/**
+ * 鐢熸垚鐐规璁板綍
+ * @param record
+ */
+async function handleAddOrder(record: Recordable<any>) {
+  /**
+   * 鐢熸垚鐐规璁板綍code
+   */
+  const code = await generateCode('DJSD');
+  if (!code) {
+    Modal.error({
+      content: '鐢熸垚鐐规璁板綍澶辫触锛岃閲嶈瘯锛�',
+      title: '鎻愮ず'
+    });
+    return false;
+  }
+  const planInsp = {
+    equId: record.equId,
+    planId: record.id,
+    equName: record.equName,
+    inspUser: record.inspUser,
+    inspUserName: record.inspUserName,
+    inspDept: record.inspDept,
+    inspDeptName: record.inspDeptName,
+    inspType: record.inspType,
+    planTime: record.inspNextTime,
+    status: EIMS_INSPECT_STATUS.WEIDIANJIAN,
+    inspCode: code,
+    inspName: record.inspName
+  };
+
+  inspRecordDrawerApi.setData({ planInsp });
+  inspRecordDrawerApi.open();
+  // await addMaintOrder(order.value);
+}
+/**
+ * 鍒濆鍖栭儴闂ㄩ�夋嫨
+ */
+async function setupDeptSelect() {
+  // updateSchema
+  const deptTree = await getDeptTree();
+  // 閫変腑鍚庢樉绀哄湪杈撳叆妗嗙殑鍊� 鍗崇埗鑺傜偣 / 瀛愯妭鐐�
+  addFullName(deptTree, 'label', ' / ');
+  tableApi.formApi.updateSchema([
+    {
+      componentProps: (formModel) => ({
+        class: 'w-full',
+        fieldNames: {
+          key: 'id',
+          value: 'id',
+          children: 'children'
+        },
+        getPopupContainer,
+        async onSelect(deptId: number | string) {
+          /** 鏍规嵁閮ㄩ棬ID鍔犺浇鐢ㄦ埛 */
+          await setupUserOptions(deptId);
+          /** 鍙樺寲鍚庨渶瑕侀噸鏂伴�夋嫨鐢ㄦ埛 */
+          formModel.inspUser = undefined;
+        },
+        placeholder: '璇烽�夋嫨',
+        showSearch: true,
+        treeData: deptTree,
+        treeDefaultExpandAll: true,
+        treeLine: { showLeafIcon: false },
+        // 绛涢�夌殑瀛楁
+        treeNodeFilterProp: 'label',
+        // 閫変腑鍚庢樉绀哄湪杈撳叆妗嗙殑鍊�
+        treeNodeLabelProp: 'fullName'
+      }),
+      fieldName: 'inspDept'
+    }
+  ]);
+}
+
+/**
+ * 鐢ㄦ埛鐨勫姞杞�
+ */
+async function setupUserOptions(deptId: any) {
+  const params = { deptId };
+  const userPageResult = await userList({
+    pageNum: 1,
+    pageSize: 500,
+    ...params
+  });
+  const options = userPageResult.rows.map((item) => ({
+    label: item.nickName || item.userName,
+    value: item.userId
+  }));
+  // 绛涢��
+  const filterOption = (input: string, option: any) => {
+    return option.label.toLowerCase().includes(input.toLowerCase());
+  };
+
+  const placeholder = options.length > 0 ? '璇烽�夋嫨' : '璇ラ儴闂ㄤ笅鏆傛棤鐢ㄦ埛';
+  tableApi.formApi.updateSchema([
+    {
+      componentProps: { options, placeholder, filterOption },
+      fieldName: 'inspUser'
+    }
+  ]);
+}
+
+onMounted(async () => {
+  await setupDeptSelect();
+});
+
+// 閫変腑鏁版嵁
+function tableSelect() {
+  return tableApi.grid.getCheckboxRecords();
+}
+</script>
+
+<template>
+  <Page :auto-content-height="true">
+    <div class="flex h-full gap-[8px] flex-col">
+      <BasicTable table-title="鐐规璁″垝鍒楄〃">
+        <template #toolbar-tools>
+          <Space>
+            <a-button v-access:code="['eims:inspectPlan:export']" @click="handleDownloadExcel">
+              {{ $t('pages.common.export') }}
+            </a-button>
+            <a-button
+              :disabled="!vxeCheckboxChecked(tableApi)"
+              danger
+              type="primary"
+              v-access:code="['eims:inspectPlan:remove']"
+              @click="handleMultiDelete"
+            >
+              {{ $t('pages.common.delete') }}
+            </a-button>
+            <a-button type="primary" v-access:code="['eims:inspectPlan:add']" @click="handleAdd">
+              {{ $t('pages.common.add') }}
+            </a-button>
+          </Space>
+        </template>
+
+        <template #equName="{ row }">
+          <Space>
+            <span>{{ row.equName }}</span>
+          </Space>
+        </template>
+
+        <template #action="{ row }">
+          <Space>
+            <ghost-button class="btn-success" v-access:code="['eims:inspectPlan:edit']" @click.stop="handleAddOrder(row)"> 鐢熸垚鐐规 </ghost-button>
+            <ghost-button v-access:code="['eims:inspectPlan:edit']" @click.stop="handleEdit(row)">
+              {{ $t('pages.common.edit') }}
+            </ghost-button>
+          </Space>
+          <Dropdown :get-popup-container="getVxePopupContainer" placement="bottomRight">
+            <template #overlay>
+              <Menu>
+                <Popconfirm :get-popup-container="getVxePopupContainer" placement="left" title="纭鍒犻櫎锛�" @confirm="handleDelete(row)">
+                  <MenuItem key="1" @click.stop="">
+                    {{ $t('pages.common.delete') }}
+                  </MenuItem>
+                </Popconfirm>
+              </Menu>
+            </template>
+            <a-button size="small" type="link" v-access:code="['eims:inspectPlan:remove']">
+              {{ $t('pages.common.more') }}
+            </a-button>
+          </Dropdown>
+        </template>
+      </BasicTable>
+    </div>
+    <InspPlanDrawer @reload="tableApi.query()" />
+    <InspRecordDrawer @reload="tableApi.query()" />
+  </Page>
+</template>
diff --git a/eims-ui/apps/web-antd/src/views/eims/insp-plan/insp-plan-drawer.vue b/eims-ui/apps/web-antd/src/views/eims/insp-plan/insp-plan-drawer.vue
new file mode 100644
index 0000000..a0ad465
--- /dev/null
+++ b/eims-ui/apps/web-antd/src/views/eims/insp-plan/insp-plan-drawer.vue
@@ -0,0 +1,152 @@
+<script setup lang="ts">
+import { computed, ref } from 'vue';
+
+import { useVbenDrawer, useVbenModal } from '@vben/common-ui';
+import { $t } from '@vben/locales';
+import { addFullName, cloneDeep, getPopupContainer } from '@vben/utils';
+
+import { InputSearch } from 'ant-design-vue';
+
+import { useVbenForm } from '#/adapter/form';
+import { addInspPlan, getInspPlan, updateInspPlan } from '#/api/eims/insp-plan';
+import equModal from '#/views/eims/components/equ-modal.vue';
+import userModal from '#/views/eims/components/user-modal.vue';
+
+import { drawerSchema } from './data';
+
+const emit = defineEmits<{ reload: [] }>();
+
+const isUpdate = ref(false);
+const title = computed(() => {
+  return isUpdate.value ? $t('pages.common.edit') : $t('pages.common.add');
+});
+
+const [BasicForm, formApi] = useVbenForm({
+  commonConfig: {
+    formItemClass: 'col-span-2',
+    componentProps: {
+      class: 'w-full'
+    },
+    labelWidth: 120
+  },
+  layout: 'horizontal',
+  schema: drawerSchema(),
+  showDefaultActions: false,
+  wrapperClass: 'grid-cols-2'
+});
+
+const [BasicDrawer, drawerApi] = useVbenDrawer({
+  onCancel: handleCancel,
+  onConfirm: handleConfirm,
+  async onOpenChange(isOpen) {
+    if (!isOpen) {
+      return null;
+    }
+    drawerApi.drawerLoading(true);
+    const { id } = drawerApi.getData() as { id?: number | string };
+    isUpdate.value = !!id;
+
+    formApi.updateSchema([
+      {
+        dependencies: {
+          show: () => isUpdate.value,
+          triggerFields: ['']
+        },
+        fieldName: 'inspFirstTime'
+      },
+      {
+        dependencies: {
+          show: () => isUpdate.value,
+          triggerFields: ['']
+        },
+        fieldName: 'inspLastTime'
+      }
+    ]);
+    // 鏇存柊 && 璧嬪��
+    if (isUpdate.value && id) {
+      const record = await getInspPlan(id);
+      await formApi.setValues(record);
+    }
+
+    drawerApi.drawerLoading(false);
+  }
+});
+
+async function handleConfirm() {
+  try {
+    drawerApi.drawerLoading(true);
+    const { valid } = await formApi.validate();
+    if (!valid) {
+      return;
+    }
+    const data = cloneDeep(await formApi.getValues());
+    await (isUpdate.value ? updateInspPlan(data) : addInspPlan(data));
+    emit('reload');
+    await handleCancel();
+  } catch (error) {
+    console.error(error);
+  } finally {
+    drawerApi.drawerLoading(false);
+  }
+}
+
+async function handleCancel() {
+  drawerApi.close();
+  await formApi.resetForm();
+}
+
+// equ modal
+const [EquModal, equModalApi] = useVbenModal({
+  connectedComponent: equModal,
+  draggable: true,
+  title: '閫夋嫨璁惧'
+});
+
+function handleEquModal() {
+  equModalApi.setData({});
+  equModalApi.open();
+}
+
+// user modal
+const [UserModal, userModalApi] = useVbenModal({
+  connectedComponent: userModal,
+  draggable: true,
+  title: '閫夋嫨鐐规浜�'
+});
+
+function handleUserModal() {
+  userModalApi.setData({});
+  userModalApi.open();
+}
+
+/**
+ * 鏇存柊閫夋嫨鐨勮澶�
+ * @param equ
+ */
+async function updateEqu(equ: any) {
+  await formApi.setValues({ 'equId': equ.equId, 'equName': equ.equName });
+}
+
+/**
+ * 鏇存柊閫夋嫨鐨勭敤鎴�
+ * @param user
+ */
+async function updateUser(user: any) {
+  await formApi.setValues({ 'inspUserName': user.nickName, 'inspUser': user.userId, 'inspDept': user.deptId });
+}
+</script>
+
+<template>
+  <BasicDrawer :close-on-click-modal="false" :title="title" class="w-[600px]">
+    <BasicForm>
+      <template #equName="slotProps">
+        <InputSearch :enter-button="true" placeholder="璇烽�夋嫨" @search="handleEquModal" v-bind="slotProps" />
+      </template>
+      <template #inspUserName="slotProps">
+        <InputSearch :enter-button="true" placeholder="璇烽�夋嫨" @search="handleUserModal" v-bind="slotProps" />
+      </template>
+    </BasicForm>
+    <EquModal class="w-[1200px]" @update-equ="updateEqu" />
+    <UserModal class="w-[1200px]" @select-user="updateUser" />
+  </BasicDrawer>
+</template>
diff --git a/eims-ui/apps/web-antd/src/views/eims/insp-record/data.tsx b/eims-ui/apps/web-antd/src/views/eims/insp-record/data.tsx
new file mode 100644
index 0000000..44fef5b
--- /dev/null
+++ b/eims-ui/apps/web-antd/src/views/eims/insp-record/data.tsx
@@ -0,0 +1,298 @@
+import type { VxeGridProps } from '#/adapter/vxe-table';
+
+import { DictEnum } from '@vben/constants';
+import { getPopupContainer } from '@vben/utils';
+
+import { type FormSchemaGetter } from '#/adapter/form';
+import { getDictOptions } from '#/utils/dict';
+import { renderDict } from '#/utils/render';
+
+export const querySchema: FormSchemaGetter = () => [
+  {
+    component: 'Input',
+    fieldName: 'equName',
+    label: '璁惧鍚嶇О'
+  },
+  {
+    component: 'Input',
+    fieldName: 'assetNo',
+    label: '璧勪骇缂栧彿'
+  },
+  {
+    component: 'Input',
+    fieldName: 'inspName',
+    label: '鐐规椤�'
+  },
+  {
+    component: 'Select',
+    componentProps: {
+      options: getDictOptions(DictEnum.EIMS_INSPECT_STATUS)
+    },
+    fieldName: 'status',
+    label: '鐘舵��'
+  },
+  {
+    component: 'Select',
+    componentProps: {
+      options: getDictOptions(DictEnum.EIMS_INSPECT_RESULT)
+    },
+    fieldName: 'maintType',
+    label: '鐐规缁撴灉'
+  },
+  {
+    component: 'TreeSelect',
+    // 鍦╠rawer閲屾洿鏂� 杩欓噷涓嶉渶瑕侀粯璁ょ殑componentProps
+    defaultValue: undefined,
+    fieldName: 'inspDept',
+    label: '鐐规閮ㄩ棬'
+  },
+  {
+    component: 'Select',
+    componentProps: {
+      allowClear: true,
+      showSearch: true,
+      getPopupContainer
+    },
+    fieldName: 'inspUser',
+    label: '鐐规浜�'
+  }
+];
+
+export const columns: VxeGridProps['columns'] = [
+  { type: 'checkbox', width: 60, fixed: 'left' },
+  {
+    title: '鐐规缂栧彿',
+    field: 'inspCode',
+    minWidth: 200,
+    fixed: 'left'
+  },
+
+  {
+    title: '鐘舵��',
+    field: 'status',
+    minWidth: 80,
+    slots: {
+      default: ({ row }) => {
+        return renderDict(row.status, DictEnum.EIMS_INSPECT_STATUS);
+      }
+    }
+  },
+  {
+    title: '璁惧鍚嶇О',
+    field: 'equName',
+    minWidth: 200
+  },
+  {
+    title: '璧勪骇缂栧彿',
+    field: 'assetNo',
+    minWidth: 160
+  },
+  {
+    title: '鐐规椤�',
+    field: 'inspName',
+    minWidth: 160
+  },
+  {
+    title: '鐐规缁撴灉',
+    field: 'inspResult',
+    minWidth: 80,
+    slots: {
+      default: ({ row }) => {
+        if (!row.inspResult) return '';
+        return renderDict(row.inspResult, DictEnum.EIMS_INSPECT_RESULT);
+      }
+    }
+  },
+  {
+    title: '鐐规绫诲瀷',
+    field: 'inspType',
+    minWidth: 120,
+    slots: {
+      default: ({ row }) => {
+        return renderDict(row.inspType, DictEnum.EIMS_INSPECT_TYPE);
+      }
+    }
+  },
+  {
+    title: '鐐规浜�',
+    field: 'inspUserName',
+    minWidth: 100
+  },
+  {
+    title: '璁″垝鐐规鏃堕棿',
+    field: 'planTime',
+    minWidth: 160
+  },
+  {
+    title: '鐐规鏃堕棿',
+    field: 'inspTime',
+    minWidth: 200
+  },
+  {
+    title: '鐐规鎻忚堪',
+    field: 'inspDesc',
+    minWidth: 200
+  },
+  {
+    title: '楠岃瘉浜�',
+    field: 'verifyUserName',
+    minWidth: 160
+  },
+  {
+    title: '鍒涘缓鏃堕棿',
+    field: 'createTime',
+    minWidth: 200
+  },
+  {
+    field: 'action',
+    fixed: 'right',
+    slots: { default: 'action' },
+    title: '鎿嶄綔',
+    width: 200
+  }
+];
+
+export const drawerSchema: FormSchemaGetter = () => [
+  {
+    component: 'Input',
+    dependencies: {
+      show: () => false,
+      triggerFields: ['']
+    },
+    fieldName: 'id'
+  },
+  {
+    component: 'Input',
+    dependencies: {
+      show: () => false,
+      triggerFields: ['']
+    },
+    fieldName: 'planId'
+  },
+  {
+    component: 'Input',
+    fieldName: 'equId',
+    label: '璁惧id',
+    dependencies: {
+      show: () => false,
+      triggerFields: ['']
+    }
+  },
+
+  {
+    component: 'Input',
+    fieldName: 'inspCode',
+    label: '鐐规缂栧彿'
+  },
+  {
+    component: 'Input',
+    fieldName: 'inspName',
+    label: '鐐规椤�'
+  },
+  {
+    component: 'Input',
+    fieldName: 'equName',
+    label: '璁惧鍚嶇О'
+  },
+  {
+    component: 'RadioGroup',
+    componentProps: {
+      buttonStyle: 'solid',
+      options: getDictOptions(DictEnum.EIMS_INSPECT_TYPE),
+      optionType: 'button'
+    },
+    fieldName: 'inspType',
+    defaultValue: '1',
+    label: '鐐规绫诲瀷'
+  },
+  {
+    component: 'Input',
+    fieldName: 'inspUser',
+    label: '鐐规浜篿d',
+    dependencies: {
+      show: () => false,
+      triggerFields: ['']
+    }
+  },
+  {
+    component: 'Input',
+    fieldName: 'inspUserName',
+    label: '鐐规浜�'
+  },
+  {
+    component: 'Input',
+    fieldName: 'inspDept',
+    label: '閮ㄩ棬id',
+    dependencies: {
+      show: () => false,
+      triggerFields: ['']
+    }
+  },
+  {
+    component: 'RadioGroup',
+    componentProps: {
+      buttonStyle: 'solid',
+      options: getDictOptions(DictEnum.EIMS_INSPECT_STATUS),
+      optionType: 'button'
+    },
+    fieldName: 'status',
+    defaultValue: '0',
+    label: '鐘舵��'
+  },
+  {
+    component: 'DatePicker',
+    componentProps: {
+      format: 'YYYY-MM-DD',
+      showTime: false,
+      valueFormat: 'YYYY-MM-DD',
+      getPopupContainer
+    },
+    fieldName: 'planTime',
+    label: '璁″垝鐐规鏃ユ湡'
+  },
+  {
+    component: 'DatePicker',
+    componentProps: {
+      format: 'YYYY-MM-DD HH:mm:ss',
+      showTime: true,
+      valueFormat: 'YYYY-MM-DD HH:mm:ss',
+      getPopupContainer
+    },
+    fieldName: 'inspTime',
+    label: '鐐规鏃堕棿'
+  },
+  {
+    component: 'Textarea',
+    fieldName: 'inspDesc',
+    label: '鐐规鎻忚堪'
+  },
+  {
+    component: 'RadioGroup',
+    componentProps: {
+      buttonStyle: 'solid',
+      options: getDictOptions(DictEnum.EIMS_INSPECT_RESULT),
+      optionType: 'button'
+    },
+    fieldName: 'inspResult',
+    label: '鐐规缁撴灉'
+  },
+  {
+    component: 'Input',
+    fieldName: 'verifyUser',
+    label: '楠岃瘉浜篿d',
+    dependencies: {
+      show: () => false,
+      triggerFields: ['']
+    }
+  },
+  {
+    component: 'Input',
+    fieldName: 'verifyUserName',
+    label: '楠岃瘉浜�'
+  },
+  {
+    component: 'Textarea',
+    fieldName: 'remark',
+    label: '澶囨敞'
+  }
+];
diff --git a/eims-ui/apps/web-antd/src/views/eims/maint-order-st/index.vue b/eims-ui/apps/web-antd/src/views/eims/insp-record/index.vue
similarity index 61%
copy from eims-ui/apps/web-antd/src/views/eims/maint-order-st/index.vue
copy to eims-ui/apps/web-antd/src/views/eims/insp-record/index.vue
index 716379d..6f7549b 100644
--- a/eims-ui/apps/web-antd/src/views/eims/maint-order-st/index.vue
+++ b/eims-ui/apps/web-antd/src/views/eims/insp-record/index.vue
@@ -1,23 +1,21 @@
 <script setup lang="ts">
+import type { Recordable } from '@vben/types';
+
 import { onMounted, ref } from 'vue';
 
 import { Page, useVbenDrawer, type VbenFormProps } from '@vben/common-ui';
+import { $t } from '@vben/locales';
 import { addFullName, getPopupContainer, getVxePopupContainer } from '@vben/utils';
 
-import { Popconfirm, Space } from 'ant-design-vue';
+import { Modal, Popconfirm, Space } from 'ant-design-vue';
 
-import { useVbenVxeGrid, type VxeGridProps, vxeSortEvent } from '#/adapter/vxe-table';
-import { listMaintOrderGroupDetail } from '#/api/eims/maint-order';
-import { delMaintOrderSt, listMaintOrderSt } from '#/api/eims/maint-order-st';
+import { useVbenVxeGrid, vxeCheckboxChecked, type VxeGridProps, vxeSortEvent } from '#/adapter/vxe-table';
+import { delInspRecord, inspRecordExport, listInspRecord } from '#/api/eims/insp-record';
 import { getDeptTree, userList } from '#/api/system/user';
-import BasisSubTable from '#/views/eims/components/basis-sub-table.vue';
-import { columns as orderCol } from '#/views/eims/maint-order/data';
+import { commonDownloadExcel } from '#/utils/file/download';
 
 import { columns, querySchema } from './data';
-import maintOrderStDrawer from './maint-order-st-drawer.vue';
-import type { Recordable } from '@vben/types';
-import { MAINT_ORDER_STATUS } from '#/constants/dict';
-import { $t } from '@vben/locales';
+import inspRecordDrawer from './insp-record-drawer.vue';
 
 defineExpose({
   tableSelect
@@ -32,9 +30,7 @@
   },
   collapsed: true,
   schema: querySchema(),
-  wrapperClass: 'grid-cols-1 md:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4',
-  // 鏃ユ湡閫夋嫨鏍煎紡鍖�
-  fieldMappingTime: [['planTime', ['params[beginPlanTime]', 'params[endPlanTime]'], ['YYYY-MM-DD 00:00:00', 'YYYY-MM-DD 23:59:59']]]
+  wrapperClass: 'grid-cols-1 md:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4'
 };
 
 const gridOptions: VxeGridProps = {
@@ -53,7 +49,7 @@
   proxyConfig: {
     ajax: {
       query: async ({ page }, formValues = {}) => {
-        return await listMaintOrderSt({
+        return await listInspRecord({
           pageNum: page.currentPage,
           pageSize: page.pageSize,
           ...formValues
@@ -71,7 +67,7 @@
     // 鏀寔澶氬瓧娈垫帓搴� 榛樿鍏抽棴
     multiple: true
   },
-  id: 'maint-order-group-index'
+  id: 'insp-record-index'
 };
 const orderId = ref<string>();
 const [BasicTable, tableApi] = useVbenVxeGrid({
@@ -81,10 +77,49 @@
     sortChange: (sortParams) => vxeSortEvent(tableApi, sortParams),
     cellClick: (e: any) => {
       const { row } = e;
-      orderId.value = `${row.equId}_${row.planTime}`;
+      orderId.value = row.id;
     }
   }
 });
+
+const [InspRecordDrawer, inspRecordDrawerApi] = useVbenDrawer({
+  connectedComponent: inspRecordDrawer
+});
+
+function handleAdd() {
+  inspRecordDrawerApi.setData({});
+  inspRecordDrawerApi.open();
+}
+
+async function handleEdit(record: Recordable<any>) {
+  inspRecordDrawerApi.setData({ id: record.id });
+  inspRecordDrawerApi.open();
+}
+
+async function handleDelete(row: Recordable<any>) {
+  await delInspRecord(row.id);
+  await tableApi.query();
+}
+
+function handleMultiDelete() {
+  const rows = tableApi.grid.getCheckboxRecords();
+  const ids = rows.map((row: any) => row.id);
+  Modal.confirm({
+    title: '鎻愮ず',
+    okType: 'danger',
+    content: `纭鍒犻櫎閫変腑鐨�${ids.length}鏉¤褰曞悧锛焋,
+    onOk: async () => {
+      await delInspRecord(ids);
+      await tableApi.query();
+    }
+  });
+}
+
+function handleDownloadExcel() {
+  commonDownloadExcel(inspRecordExport, '鐐规璁板綍', tableApi.formApi.form.values, {
+    fieldMappingTime: formOptions.fieldMappingTime
+  });
+}
 
 /**
  * 鍒濆鍖栭儴闂ㄩ�夋嫨
@@ -108,7 +143,7 @@
           /** 鏍规嵁閮ㄩ棬ID鍔犺浇鐢ㄦ埛 */
           await setupUserOptions(deptId);
           /** 鍙樺寲鍚庨渶瑕侀噸鏂伴�夋嫨鐢ㄦ埛 */
-          formModel.maintUser = undefined;
+          formModel.inspUser = undefined;
         },
         placeholder: '璇烽�夋嫨',
         showSearch: true,
@@ -120,7 +155,7 @@
         // 閫変腑鍚庢樉绀哄湪杈撳叆妗嗙殑鍊�
         treeNodeLabelProp: 'fullName'
       }),
-      fieldName: 'maintDept'
+      fieldName: 'inspDept'
     }
   ]);
 }
@@ -148,28 +183,10 @@
   tableApi.formApi.updateSchema([
     {
       componentProps: { options, placeholder, filterOption },
-      fieldName: 'maintUser'
+      fieldName: 'inspUser'
     }
   ]);
 }
-const [MaintOrderStDrawer, maintOrderStDrawerApi] = useVbenDrawer({
-  connectedComponent: maintOrderStDrawer
-});
-
-function handleAdd() {
-  maintOrderStDrawerApi.setData({});
-  maintOrderStDrawerApi.open();
-}
-
-async function handleEdit(record: Recordable<any>) {
-  maintOrderStDrawerApi.setData({ id: record.id });
-  maintOrderStDrawerApi.open();
-}
-async function handleDelete(row: Recordable<any>) {
-  await delMaintOrderSt(row.id);
-  await tableApi.query();
-}
-
 
 onMounted(async () => {
   await setupDeptSelect();
@@ -184,9 +201,25 @@
 <template>
   <Page :auto-content-height="true">
     <div class="flex h-full gap-[8px] flex-col">
-      <BasicTable class="h-3/5" table-title="淇濆吇宸ュ崟鍒楄〃">
+      <BasicTable table-title="鐐规璁板綍鍒楄〃">
         <template #toolbar-tools>
-          <Space />
+          <Space>
+            <a-button v-access:code="['eims:inspectRecord:export']" @click="handleDownloadExcel">
+              {{ $t('pages.common.export') }}
+            </a-button>
+            <a-button
+              :disabled="!vxeCheckboxChecked(tableApi)"
+              danger
+              type="primary"
+              v-access:code="['eims:inspectRecord:remove']"
+              @click="handleMultiDelete"
+            >
+              {{ $t('pages.common.delete') }}
+            </a-button>
+            <!--            <a-button type="primary" v-access:code="['eims:inspectRecord:add']" @click="handleAdd">
+              {{ $t('pages.common.add') }}
+            </a-button>-->
+          </Space>
         </template>
 
         <template #equName="{ row }">
@@ -194,30 +227,22 @@
             <span>{{ row.equName }}</span>
           </Space>
         </template>
+
         <template #action="{ row }">
           <Space>
-            <ghost-button v-access:code="['eims:maintOrderSt:edit']" @click.stop="handleEdit(row)">
+            <ghost-button v-access:code="['eims:inspectRecord:edit']" @click.stop="handleEdit(row)">
               {{ $t('pages.common.edit') }}
             </ghost-button>
-            <Popconfirm :get-popup-container="getVxePopupContainer" placement="left" title="纭鍒犻櫎锛�"
-                        @confirm="handleDelete(row)">
-              <ghost-button danger v-access:code="['eims:maintOrderSt:remove']" @click.stop="">
+            <Popconfirm :get-popup-container="getVxePopupContainer" placement="left" title="纭鍒犻櫎锛�" @confirm="handleDelete(row)">
+              <ghost-button danger v-access:code="['eims:inspectRecord:remove']" @click.stop="">
                 {{ $t('pages.common.delete') }}
               </ghost-button>
             </Popconfirm>
           </Space>
         </template>
-
       </BasicTable>
-      <BasisSubTable
-        :columns="orderCol"
-        :list-api="listMaintOrderGroupDetail"
-        :req-value="orderId"
-        class="h-2/5"
-        req-key="maintCode"
-        title="淇濆吇瀹炴柦椤圭洰"
-      />
+      <!--<BasisSubTable :columns="maintStandCol" :list-api="listMaintStand" :req-value="equId" class="h-1/3" req-key="equId" title="淇濆吇瀹炴柦椤圭洰" />-->
     </div>
-    <MaintOrderStDrawer @reload="tableApi.query()" />
+    <InspRecordDrawer @reload="tableApi.query()" />
   </Page>
 </template>
diff --git a/eims-ui/apps/web-antd/src/views/eims/insp-record/insp-record-drawer.vue b/eims-ui/apps/web-antd/src/views/eims/insp-record/insp-record-drawer.vue
new file mode 100644
index 0000000..ee038e1
--- /dev/null
+++ b/eims-ui/apps/web-antd/src/views/eims/insp-record/insp-record-drawer.vue
@@ -0,0 +1,167 @@
+<script setup lang="ts">
+import { computed, ref } from 'vue';
+
+import { useVbenDrawer, useVbenModal } from '@vben/common-ui';
+import { cloneDeep } from '@vben/utils';
+
+import { InputSearch } from 'ant-design-vue';
+
+import { useVbenForm } from '#/adapter/form';
+import { addInspRecord, getInspRecord, updateInspRecord } from '#/api/eims/insp-record';
+import CodeInput from '#/views/eims/components/code-input.vue';
+import equModal from '#/views/eims/components/equ-modal.vue';
+import userModal from '#/views/eims/components/user-modal.vue';
+
+import { drawerSchema } from './data';
+
+
+const emit = defineEmits<{ reload: [] }>();
+
+const isUpdate = ref(false);
+const title = computed(() => {
+  return isUpdate.value ? '缂栬緫鐐规璁板綍' : '鏂板鐐规璁板綍';
+});
+
+const [BasicForm, formApi] = useVbenForm({
+  commonConfig: {
+    formItemClass: 'col-span-2',
+    componentProps: {
+      class: 'w-full'
+    },
+    labelWidth: 120
+  },
+  schema: drawerSchema(),
+  showDefaultActions: false,
+  wrapperClass: 'grid-cols-2'
+});
+
+const [BasicDrawer, drawerApi] = useVbenDrawer({
+  onCancel: handleCancel,
+  onConfirm: handleConfirm,
+  async onOpenChange(isOpen) {
+    if (!isOpen) {
+      return null;
+    }
+    drawerApi.drawerLoading(true);
+    const { id } = drawerApi.getData() as { id?: number | string };
+    isUpdate.value = !!id;
+    // 浠庣偣妫�璁″垝椤甸潰鐢熸垚鐐规璁板綍
+    const { planInsp } = drawerApi.getData();
+    isUpdate.value = !!id;
+    // 鏂板-浠庣偣妫�璁″垝椤甸潰鐢熸垚鐐规璁板綍
+    if (!isUpdate.value && !id) {
+      await formApi.setValues(planInsp);
+    }
+    formApi.updateSchema([
+      {
+        componentProps: {
+          disabled: isUpdate.value
+        },
+        fieldName: 'inspName'
+      }
+    ]);
+    // 鏇存柊 && 璧嬪��
+    if (isUpdate.value && id) {
+      const record = await getInspRecord(id);
+      await formApi.setValues(record);
+    }
+
+    drawerApi.drawerLoading(false);
+  }
+});
+
+
+async function handleConfirm() {
+  try {
+    drawerApi.drawerLoading(true);
+    const { valid } = await formApi.validate();
+    if (!valid) {
+      return;
+    }
+    const data = cloneDeep(await formApi.getValues());
+    await (isUpdate.value ? updateInspRecord(data) : addInspRecord(data));
+    emit('reload');
+    await handleCancel();
+  } catch (error) {
+    console.error(error);
+  } finally {
+    drawerApi.drawerLoading(false);
+  }
+}
+
+
+
+async function handleCancel() {
+  drawerApi.close();
+  await formApi.resetForm();
+}
+
+// equ modal
+const [EquModal, equModalApi] = useVbenModal({
+  connectedComponent: equModal,
+  draggable: true,
+  title: '閫夋嫨璁惧'
+});
+
+function handleEquModal() {
+  equModalApi.setData({});
+  equModalApi.open();
+}
+
+// user modal
+const [UserModal, userModalApi] = useVbenModal({
+  connectedComponent: userModal,
+  draggable: true,
+  title: '閫夋嫨鐐规浜�'
+});
+
+const userType = ref<number | undefined>(undefined);
+
+function handleUserModal(type: number) {
+  userType.value = type;
+  userModalApi.setData({});
+  userModalApi.open();
+}
+
+/**
+ * 鏇存柊閫夋嫨鐨勮澶�
+ * @param equ
+ */
+async function updateEqu(equ: any) {
+  await formApi.setValues({equId:equ.equId,equName:equ.equName});
+}
+
+/**
+ * 鏇存柊閫夋嫨鐨勭敤鎴�
+ * @param user
+ */
+async function updateUser(user: any) {
+  if (userType.value === 1) {
+    await formApi.setValues({ 'inspUserName': user.nickName, 'inspUser': user.userId, 'inspDept': user.deptId });
+  } else if (userType.value === 2) {
+    await formApi.setValues({ 'verifyUserName': user.nickName, 'verifyUser': user.userId, 'verifyDept': user.deptId });
+  }
+}
+</script>
+
+<template>
+  <BasicDrawer :close-on-click-modal="false" :title="title" class="w-[600px]">
+    <BasicForm>
+      <template #equName="slotProps">
+        <InputSearch :enter-button="true" placeholder="璇烽�夋嫨" @search="handleEquModal" v-bind="slotProps"
+                     :disabled="isUpdate" />
+      </template>
+      <template #inspUserName="slotProps">
+        <InputSearch :enter-button="true" placeholder="璇烽�夋嫨" @search="handleUserModal(1)" v-bind="slotProps" />
+      </template>
+      <template #verifyUserName="slotProps">
+        <InputSearch :enter-button="true" placeholder="璇烽�夋嫨" @search="handleUserModal(2)" v-bind="slotProps" />
+      </template>
+      <template #inspCode="slotProps">
+        <CodeInput v-bind="slotProps" :disabled="isUpdate" prefix="DJSD" />
+      </template>
+    </BasicForm>
+    <EquModal class="w-[1200px]" @update-equ="updateEqu" />
+    <UserModal class="w-[1200px]" @select-user="updateUser" />
+  </BasicDrawer>
+</template>
diff --git a/eims-ui/apps/web-antd/src/views/eims/maint-order-st/data.tsx b/eims-ui/apps/web-antd/src/views/eims/insp-st/data.tsx
similarity index 75%
copy from eims-ui/apps/web-antd/src/views/eims/maint-order-st/data.tsx
copy to eims-ui/apps/web-antd/src/views/eims/insp-st/data.tsx
index 0629b80..e4de7f4 100644
--- a/eims-ui/apps/web-antd/src/views/eims/maint-order-st/data.tsx
+++ b/eims-ui/apps/web-antd/src/views/eims/insp-st/data.tsx
@@ -12,8 +12,13 @@
 export const querySchema: FormSchemaGetter = () => [
   {
     component: 'Input',
-    fieldName: 'equName',
-    label: '璁惧鍚嶇О'
+    fieldName: 'title',
+    label: '鏍囬'
+  },
+  {
+    component: 'Input',
+    fieldName: 'assetNo',
+    label: '璧勪骇缂栧彿'
   },
   {
     component: 'RangePicker',
@@ -23,7 +28,7 @@
   {
     component: 'Select',
     componentProps: {
-      options: getDictOptions(DictEnum.MAINT_ORDER_ST_STATUS)
+      options: getDictOptions(DictEnum.EIMS_INSPECT_STATUS)
     },
     fieldName: 'status',
     label: '鐘舵��'
@@ -33,15 +38,15 @@
 export const columns: VxeGridProps['columns'] = [
   { type: 'checkbox', width: 60, fixed: 'left' },
   {
-    title: '璁惧鍚嶇О',
-    field: 'equName',
+    title: '鏍囬',
+    field: 'title',
     minWidth: 200,
     fixed: 'left'
   },
   {
-    title: '璁″垝淇濆吇鏃ユ湡',
+    title: '淇濆吇骞存湀',
     field: 'planTime',
-    minWidth: 200
+    minWidth: 120
   },
   {
     title: '鐘舵��',
@@ -49,7 +54,7 @@
     minWidth: 80,
     slots: {
       default: ({ row }) => {
-        return renderDict(row.status, DictEnum.MAINT_ORDER_ST_STATUS);
+        return renderDict(row.status, DictEnum.EIMS_INSPECT_STATUS);
       }
     }
   },
@@ -59,47 +64,47 @@
     minWidth: 160
   },
   {
-    title: '宸ュ崟鎬绘暟',
-    field: 'orderCount',
+    title: '鐐规鎬绘暟',
+    field: 'recordCount',
     minWidth: 100
   },
   {
-    title: '寰呬繚鍏�',
-    field: 'dbyCount',
+    title: '鏈偣妫�',
+    field: 'unCheckCount',
     minWidth: 80,
     slots: {
       default: ({ row }) => {
-        return <Tag color="orange">{row.dbyCount}</Tag>;
+        return <Tag color="orange">{row.unCheckCount}</Tag>;
       }
     }
   },
   {
-    title: '淇濆吇涓�',
-    field: 'byCount',
+    title: '宸茬偣妫�',
+    field: 'checkCount',
     minWidth: 80,
     slots: {
       default: ({ row }) => {
-        return <Tag color="blue">{row.byCount}</Tag>;
+        return <Tag color="blue">{row.checkCount}</Tag>;
       }
     }
   },
   {
-    title: '寰呴獙璇�',
-    field: 'dyzCount',
+    title: '姝e父',
+    field: 'normalNum',
     minWidth: 80,
     slots: {
       default: ({ row }) => {
-        return <Tag color="purple">{row.dyzCount}</Tag>;
+        return <Tag color="success">{row.normalNum}</Tag>;
       }
     }
   },
   {
-    title: '瀹屾垚',
-    field: 'wcCount',
+    title: '寮傚父',
+    field: 'abNormalNum',
     minWidth: 80,
     slots: {
       default: ({ row }) => {
-        return <Tag color="success">{row.wcCount}</Tag>;
+        return <Tag color="red">{row.abNormalNum}</Tag>;
       }
     }
   },
@@ -114,8 +119,8 @@
     minWidth: 160
   },
   {
-    title: '绋芥煡鏃堕棿',
-    field: 'verifyTime',
+    title: '鐐规鏃堕棿',
+    field: 'inspTime',
     minWidth: 200
   },
   {
@@ -157,7 +162,7 @@
       getPopupContainer
     },
     fieldName: 'planTime',
-    label: '璁″垝淇濆吇鏃ユ湡'
+    label: '璁″垝鐐规鏃ユ湡'
   },
   {
     component: 'Input',
diff --git a/eims-ui/apps/web-antd/src/views/eims/maint-order-st/index.vue b/eims-ui/apps/web-antd/src/views/eims/insp-st/index.vue
similarity index 70%
copy from eims-ui/apps/web-antd/src/views/eims/maint-order-st/index.vue
copy to eims-ui/apps/web-antd/src/views/eims/insp-st/index.vue
index 716379d..203ec1a 100644
--- a/eims-ui/apps/web-antd/src/views/eims/maint-order-st/index.vue
+++ b/eims-ui/apps/web-antd/src/views/eims/insp-st/index.vue
@@ -4,19 +4,18 @@
 import { Page, useVbenDrawer, type VbenFormProps } from '@vben/common-ui';
 import { addFullName, getPopupContainer, getVxePopupContainer } from '@vben/utils';
 
-import { Popconfirm, Space } from 'ant-design-vue';
+import { Modal, Popconfirm, Space } from 'ant-design-vue';
 
-import { useVbenVxeGrid, type VxeGridProps, vxeSortEvent } from '#/adapter/vxe-table';
-import { listMaintOrderGroupDetail } from '#/api/eims/maint-order';
-import { delMaintOrderSt, listMaintOrderSt } from '#/api/eims/maint-order-st';
+import { useVbenVxeGrid, vxeCheckboxChecked, type VxeGridProps, vxeSortEvent } from '#/adapter/vxe-table';
+import { delMaintOrder, listMaintOrderGroupDetail } from '#/api/eims/maint-order';
+import { delInspectSt, listInspectSt } from '#/api/eims/insp-st';
 import { getDeptTree, userList } from '#/api/system/user';
 import BasisSubTable from '#/views/eims/components/basis-sub-table.vue';
-import { columns as orderCol } from '#/views/eims/maint-order/data';
+import { columns as recordCol } from '#/views/eims/insp-record/data';
 
 import { columns, querySchema } from './data';
-import maintOrderStDrawer from './maint-order-st-drawer.vue';
+import inspStDrawer from './insp-st-drawer.vue';
 import type { Recordable } from '@vben/types';
-import { MAINT_ORDER_STATUS } from '#/constants/dict';
 import { $t } from '@vben/locales';
 
 defineExpose({
@@ -53,7 +52,7 @@
   proxyConfig: {
     ajax: {
       query: async ({ page }, formValues = {}) => {
-        return await listMaintOrderSt({
+        return await listInspectSt({
           pageNum: page.currentPage,
           pageSize: page.pageSize,
           ...formValues
@@ -71,9 +70,9 @@
     // 鏀寔澶氬瓧娈垫帓搴� 榛樿鍏抽棴
     multiple: true
   },
-  id: 'maint-order-group-index'
+  id: 'insp-st-index'
 };
-const orderId = ref<string>();
+const recordId = ref<string>();
 const [BasicTable, tableApi] = useVbenVxeGrid({
   formOptions,
   gridOptions,
@@ -81,7 +80,7 @@
     sortChange: (sortParams) => vxeSortEvent(tableApi, sortParams),
     cellClick: (e: any) => {
       const { row } = e;
-      orderId.value = `${row.equId}_${row.planTime}`;
+      recordId.value = `${row.equId}_${row.planTime}`;
     }
   }
 });
@@ -108,7 +107,7 @@
           /** 鏍规嵁閮ㄩ棬ID鍔犺浇鐢ㄦ埛 */
           await setupUserOptions(deptId);
           /** 鍙樺寲鍚庨渶瑕侀噸鏂伴�夋嫨鐢ㄦ埛 */
-          formModel.maintUser = undefined;
+          formModel.inspUser = undefined;
         },
         placeholder: '璇烽�夋嫨',
         showSearch: true,
@@ -120,7 +119,7 @@
         // 閫変腑鍚庢樉绀哄湪杈撳叆妗嗙殑鍊�
         treeNodeLabelProp: 'fullName'
       }),
-      fieldName: 'maintDept'
+      fieldName: 'inspDept'
     }
   ]);
 }
@@ -148,28 +147,37 @@
   tableApi.formApi.updateSchema([
     {
       componentProps: { options, placeholder, filterOption },
-      fieldName: 'maintUser'
+      fieldName: 'inspUser'
     }
   ]);
 }
-const [MaintOrderStDrawer, maintOrderStDrawerApi] = useVbenDrawer({
-  connectedComponent: maintOrderStDrawer
+const [InspStDrawer, inspStDrawerApi] = useVbenDrawer({
+  connectedComponent: inspStDrawer
 });
 
-function handleAdd() {
-  maintOrderStDrawerApi.setData({});
-  maintOrderStDrawerApi.open();
-}
 
 async function handleEdit(record: Recordable<any>) {
-  maintOrderStDrawerApi.setData({ id: record.id });
-  maintOrderStDrawerApi.open();
+  inspStDrawerApi.setData({ id: record.id });
+  inspStDrawerApi.open();
 }
 async function handleDelete(row: Recordable<any>) {
-  await delMaintOrderSt(row.id);
+  await delInspectSt(row.id);
   await tableApi.query();
 }
 
+function handleMultiDelete() {
+  const rows = tableApi.grid.getCheckboxRecords();
+  const ids = rows.map((row: any) => row.id);
+  Modal.confirm({
+    title: '鎻愮ず',
+    okType: 'danger',
+    content: `纭鍒犻櫎閫変腑鐨�${ids.length}鏉¤褰曞悧锛焋,
+    onOk: async () => {
+      await delInspectSt(ids);
+      await tableApi.query();
+    }
+  });
+}
 
 onMounted(async () => {
   await setupDeptSelect();
@@ -184,9 +192,19 @@
 <template>
   <Page :auto-content-height="true">
     <div class="flex h-full gap-[8px] flex-col">
-      <BasicTable class="h-3/5" table-title="淇濆吇宸ュ崟鍒楄〃">
+      <BasicTable class="h-2/3" table-title="鐐规璁板綍鍒楄〃">
         <template #toolbar-tools>
-          <Space />
+          <Space >
+            <a-button
+              :disabled="!vxeCheckboxChecked(tableApi)"
+              danger
+              type="primary"
+              v-access:code="['eims:inspectSt:remove']"
+              @click="handleMultiDelete"
+            >
+              {{ $t('pages.common.delete') }}
+            </a-button>
+          </Space>
         </template>
 
         <template #equName="{ row }">
@@ -196,12 +214,12 @@
         </template>
         <template #action="{ row }">
           <Space>
-            <ghost-button v-access:code="['eims:maintOrderSt:edit']" @click.stop="handleEdit(row)">
+            <ghost-button v-access:code="['eims:inspectSt:edit']" @click.stop="handleEdit(row)">
               {{ $t('pages.common.edit') }}
             </ghost-button>
             <Popconfirm :get-popup-container="getVxePopupContainer" placement="left" title="纭鍒犻櫎锛�"
                         @confirm="handleDelete(row)">
-              <ghost-button danger v-access:code="['eims:maintOrderSt:remove']" @click.stop="">
+              <ghost-button danger v-access:code="['eims:inspectSt:remove']" @click.stop="">
                 {{ $t('pages.common.delete') }}
               </ghost-button>
             </Popconfirm>
@@ -210,14 +228,14 @@
 
       </BasicTable>
       <BasisSubTable
-        :columns="orderCol"
+        :columns="recordCol"
         :list-api="listMaintOrderGroupDetail"
-        :req-value="orderId"
-        class="h-2/5"
+        :req-value="recordId"
+        class="h-1/3"
         req-key="maintCode"
         title="淇濆吇瀹炴柦椤圭洰"
       />
     </div>
-    <MaintOrderStDrawer @reload="tableApi.query()" />
+    <InspStDrawer @reload="tableApi.query()" />
   </Page>
 </template>
diff --git a/eims-ui/apps/web-antd/src/views/eims/maint-order-st/maint-order-st-drawer.vue b/eims-ui/apps/web-antd/src/views/eims/insp-st/insp-st-drawer.vue
similarity index 89%
copy from eims-ui/apps/web-antd/src/views/eims/maint-order-st/maint-order-st-drawer.vue
copy to eims-ui/apps/web-antd/src/views/eims/insp-st/insp-st-drawer.vue
index 414ec0f..14d4412 100644
--- a/eims-ui/apps/web-antd/src/views/eims/maint-order-st/maint-order-st-drawer.vue
+++ b/eims-ui/apps/web-antd/src/views/eims/insp-st/insp-st-drawer.vue
@@ -7,7 +7,7 @@
 import { InputSearch } from 'ant-design-vue';
 
 import { useVbenForm } from '#/adapter/form';
-import { getMaintOrderSt, updateMaintOrderSt } from '#/api/eims/maint-order-st';
+import { getInspectSt, updateInspectSt } from '#/api/eims/insp-st';
 import userModal from '#/views/eims/components/user-modal.vue';
 
 import { drawerSchema } from './data';
@@ -16,7 +16,7 @@
 
 const isUpdate = ref(false);
 const title = computed(() => {
-  return isUpdate.value ? '淇濆吇宸ュ崟姹囨�荤ń鏌�' : '淇濆吇宸ュ崟姹囨��';
+  return isUpdate.value ? '鐐规璁板綍姹囨�荤ń鏌�' : '鐐规璁板綍姹囨��';
 });
 
 const [BasicForm, formApi] = useVbenForm({
@@ -44,7 +44,7 @@
     isUpdate.value = !!id;
     // 鏇存柊 && 璧嬪��
     if (isUpdate.value && id) {
-      const record = await getMaintOrderSt(id);
+      const record = await getInspectSt(id);
       await formApi.setValues(record);
     }
 
@@ -61,7 +61,7 @@
     }
     const data = cloneDeep(await formApi.getValues());
     // await (isUpdate.value ? updateMaintOrderSt(data) : addMaintOrderSt(data));
-    await (isUpdate.value ? updateMaintOrderSt(data) : updateMaintOrderSt(data));
+    await (isUpdate.value ? updateInspectSt(data) : updateInspectSt(data));
     emit('reload');
     await handleCancel();
   } catch (error) {
diff --git a/eims-ui/apps/web-antd/src/views/eims/maint-order/data.tsx b/eims-ui/apps/web-antd/src/views/eims/maint-order/data.tsx
index d3bc2b5..724a93a 100644
--- a/eims-ui/apps/web-antd/src/views/eims/maint-order/data.tsx
+++ b/eims-ui/apps/web-antd/src/views/eims/maint-order/data.tsx
@@ -126,6 +126,11 @@
     minWidth: 160
   },
   {
+    title: '宸ヤ綔鎻忚堪',
+    field: 'maintDesc',
+    minWidth: 200
+  },
+  {
     title: '楠岃瘉浜�',
     field: 'verifyUserName',
     minWidth: 160
@@ -174,6 +179,11 @@
     component: 'Input',
     fieldName: 'maintCode',
     label: '淇濆吇鍗曞彿'
+  },
+  {
+    component: 'Input',
+    fieldName: 'maintName',
+    label: '淇濆吇椤�'
   },
   {
     component: 'Input',
@@ -289,6 +299,11 @@
     label: '缁撴潫鏃堕棿'
   },
   {
+    component: 'Textarea',
+    fieldName: 'maintDesc',
+    label: '宸ヤ綔鎻忚堪'
+  },
+  {
     component: 'Input',
     fieldName: 'verifyUser',
     label: '楠岃瘉浜篿d',
diff --git a/eims-ui/apps/web-antd/src/views/eims/maint-order/index.vue b/eims-ui/apps/web-antd/src/views/eims/maint-order/index.vue
index b588a79..2f1b154 100644
--- a/eims-ui/apps/web-antd/src/views/eims/maint-order/index.vue
+++ b/eims-ui/apps/web-antd/src/views/eims/maint-order/index.vue
@@ -191,8 +191,6 @@
   ]);
 }
 
-
-
 onMounted(async () => {
   await setupDeptSelect();
 });
@@ -257,9 +255,9 @@
             >
               {{ $t('pages.common.delete') }}
             </a-button>
-            <a-button type="primary" v-access:code="['eims:maintOrder:add']" @click="handleAdd">
+            <!--            <a-button type="primary" v-access:code="['eims:maintOrder:add']" @click="handleAdd">
               {{ $t('pages.common.add') }}
-            </a-button>
+            </a-button>-->
           </Space>
         </template>
 
@@ -298,8 +296,7 @@
             <ghost-button v-access:code="['eims:maintOrder:edit']" @click.stop="handleEdit(row)">
               {{ $t('pages.common.edit') }}
             </ghost-button>
-            <Popconfirm :get-popup-container="getVxePopupContainer" placement="left" title="纭鍒犻櫎锛�"
-                        @confirm="handleDelete(row)">
+            <Popconfirm :get-popup-container="getVxePopupContainer" placement="left" title="纭鍒犻櫎锛�" @confirm="handleDelete(row)">
               <ghost-button danger v-access:code="['eims:maintOrder:remove']" @click.stop="">
                 {{ $t('pages.common.delete') }}
               </ghost-button>
@@ -308,7 +305,6 @@
         </template>
       </BasicTable>
       <!--<BasisSubTable :columns="maintStandCol" :list-api="listMaintStand" :req-value="equId" class="h-1/3" req-key="equId" title="淇濆吇瀹炴柦椤圭洰" />-->
-
     </div>
     <MaintOrderDrawer @reload="tableApi.query()" />
   </Page>
diff --git a/eims-ui/apps/web-antd/src/views/eims/maint-order/maint-order-drawer.vue b/eims-ui/apps/web-antd/src/views/eims/maint-order/maint-order-drawer.vue
index 992a2e3..86164a4 100644
--- a/eims-ui/apps/web-antd/src/views/eims/maint-order/maint-order-drawer.vue
+++ b/eims-ui/apps/web-antd/src/views/eims/maint-order/maint-order-drawer.vue
@@ -54,6 +54,14 @@
     }
     // 閲嶇疆
     baoyangCol(false);
+    formApi.updateSchema([
+      {
+        componentProps: {
+          disabled: isUpdate.value
+        },
+        fieldName: 'maintName'
+      }
+    ]);
 
     // 鏇存柊 && 璧嬪��
     if (isUpdate.value && id) {
@@ -121,6 +129,12 @@
         disabled: show
       },
       fieldName: 'status'
+    },
+    {
+      componentProps: {
+        disabled: show
+      },
+      fieldName: 'maintName'
     }
   ]);
 }
diff --git a/eims-ui/apps/web-antd/src/views/eims/maint-plan/data.tsx b/eims-ui/apps/web-antd/src/views/eims/maint-plan/data.tsx
index dcf9cfa..4e6a0f9 100644
--- a/eims-ui/apps/web-antd/src/views/eims/maint-plan/data.tsx
+++ b/eims-ui/apps/web-antd/src/views/eims/maint-plan/data.tsx
@@ -136,6 +136,11 @@
     minWidth: 160
   },
   {
+    title: '鍒涘缓鏃堕棿',
+    field: 'createTime',
+    minWidth: 200
+  },
+  {
     field: 'action',
     fixed: 'right',
     slots: { default: 'action' },
diff --git a/eims-ui/apps/web-antd/src/views/eims/maint-plan/index.vue b/eims-ui/apps/web-antd/src/views/eims/maint-plan/index.vue
index 2927a97..2ddc20e 100644
--- a/eims-ui/apps/web-antd/src/views/eims/maint-plan/index.vue
+++ b/eims-ui/apps/web-antd/src/views/eims/maint-plan/index.vue
@@ -15,7 +15,6 @@
 import { getDeptTree, userList } from '#/api/system/user';
 import { MAINT_ORDER_STATUS } from '#/constants/dict';
 import { commonDownloadExcel } from '#/utils/file/download';
-import BasisSubTable from '#/views/eims/components/basis-sub-table.vue';
 import maintOrderDrawer from '#/views/eims/maint-order/maint-order-drawer.vue';
 
 import { columns, querySchema } from './data';
@@ -157,7 +156,8 @@
     maintType: record.maintType,
     planTime: record.maintNextTime,
     status: MAINT_ORDER_STATUS.DAIBAOYANG,
-    maintCode: code
+    maintCode: code,
+    maintName: record.maintName
   };
 
   maintOrderDrawerApi.setData({ planOrder });
diff --git a/eims-ui/apps/web-antd/src/views/eims/maint-order-st/data.tsx b/eims-ui/apps/web-antd/src/views/eims/maint-st/data.tsx
similarity index 94%
rename from eims-ui/apps/web-antd/src/views/eims/maint-order-st/data.tsx
rename to eims-ui/apps/web-antd/src/views/eims/maint-st/data.tsx
index 0629b80..973651d 100644
--- a/eims-ui/apps/web-antd/src/views/eims/maint-order-st/data.tsx
+++ b/eims-ui/apps/web-antd/src/views/eims/maint-st/data.tsx
@@ -12,8 +12,13 @@
 export const querySchema: FormSchemaGetter = () => [
   {
     component: 'Input',
-    fieldName: 'equName',
-    label: '璁惧鍚嶇О'
+    fieldName: 'title',
+    label: '鏍囬'
+  },
+  {
+    component: 'Input',
+    fieldName: 'assetno',
+    label: '璧勪骇缂栧彿'
   },
   {
     component: 'RangePicker',
@@ -33,15 +38,15 @@
 export const columns: VxeGridProps['columns'] = [
   { type: 'checkbox', width: 60, fixed: 'left' },
   {
-    title: '璁惧鍚嶇О',
-    field: 'equName',
+    title: '鏍囬',
+    field: 'title',
     minWidth: 200,
     fixed: 'left'
   },
   {
-    title: '璁″垝淇濆吇鏃ユ湡',
+    title: '淇濆吇骞存湀',
     field: 'planTime',
-    minWidth: 200
+    minWidth: 120
   },
   {
     title: '鐘舵��',
diff --git a/eims-ui/apps/web-antd/src/views/eims/maint-order-st/index.vue b/eims-ui/apps/web-antd/src/views/eims/maint-st/index.vue
similarity index 75%
rename from eims-ui/apps/web-antd/src/views/eims/maint-order-st/index.vue
rename to eims-ui/apps/web-antd/src/views/eims/maint-st/index.vue
index 716379d..a90f696 100644
--- a/eims-ui/apps/web-antd/src/views/eims/maint-order-st/index.vue
+++ b/eims-ui/apps/web-antd/src/views/eims/maint-st/index.vue
@@ -1,23 +1,23 @@
 <script setup lang="ts">
+import type { Recordable } from '@vben/types';
+
 import { onMounted, ref } from 'vue';
 
 import { Page, useVbenDrawer, type VbenFormProps } from '@vben/common-ui';
+import { $t } from '@vben/locales';
 import { addFullName, getPopupContainer, getVxePopupContainer } from '@vben/utils';
 
-import { Popconfirm, Space } from 'ant-design-vue';
+import { Modal, Popconfirm, Space } from 'ant-design-vue';
 
-import { useVbenVxeGrid, type VxeGridProps, vxeSortEvent } from '#/adapter/vxe-table';
+import { useVbenVxeGrid, vxeCheckboxChecked, type VxeGridProps, vxeSortEvent } from '#/adapter/vxe-table';
 import { listMaintOrderGroupDetail } from '#/api/eims/maint-order';
-import { delMaintOrderSt, listMaintOrderSt } from '#/api/eims/maint-order-st';
+import { delMaintSt, listMaintSt } from '#/api/eims/maint-st';
 import { getDeptTree, userList } from '#/api/system/user';
 import BasisSubTable from '#/views/eims/components/basis-sub-table.vue';
 import { columns as orderCol } from '#/views/eims/maint-order/data';
 
 import { columns, querySchema } from './data';
-import maintOrderStDrawer from './maint-order-st-drawer.vue';
-import type { Recordable } from '@vben/types';
-import { MAINT_ORDER_STATUS } from '#/constants/dict';
-import { $t } from '@vben/locales';
+import maintStDrawer from './maint-st-drawer.vue';
 
 defineExpose({
   tableSelect
@@ -53,7 +53,7 @@
   proxyConfig: {
     ajax: {
       query: async ({ page }, formValues = {}) => {
-        return await listMaintOrderSt({
+        return await listMaintSt({
           pageNum: page.currentPage,
           pageSize: page.pageSize,
           ...formValues
@@ -152,24 +152,32 @@
     }
   ]);
 }
-const [MaintOrderStDrawer, maintOrderStDrawerApi] = useVbenDrawer({
-  connectedComponent: maintOrderStDrawer
+const [MaintStDrawer, maintStDrawerApi] = useVbenDrawer({
+  connectedComponent: maintStDrawer
 });
 
-function handleAdd() {
-  maintOrderStDrawerApi.setData({});
-  maintOrderStDrawerApi.open();
-}
-
 async function handleEdit(record: Recordable<any>) {
-  maintOrderStDrawerApi.setData({ id: record.id });
-  maintOrderStDrawerApi.open();
+  maintStDrawerApi.setData({ id: record.id });
+  maintStDrawerApi.open();
 }
 async function handleDelete(row: Recordable<any>) {
-  await delMaintOrderSt(row.id);
+  await delMaintSt(row.id);
   await tableApi.query();
 }
 
+function handleMultiDelete() {
+  const rows = tableApi.grid.getCheckboxRecords();
+  const ids = rows.map((row: any) => row.id);
+  Modal.confirm({
+    title: '鎻愮ず',
+    okType: 'danger',
+    content: `纭鍒犻櫎閫変腑鐨�${ids.length}鏉¤褰曞悧锛焋,
+    onOk: async () => {
+      await delMaintSt(ids);
+      await tableApi.query();
+    }
+  });
+}
 
 onMounted(async () => {
   await setupDeptSelect();
@@ -184,9 +192,19 @@
 <template>
   <Page :auto-content-height="true">
     <div class="flex h-full gap-[8px] flex-col">
-      <BasicTable class="h-3/5" table-title="淇濆吇宸ュ崟鍒楄〃">
+      <BasicTable class="h-2/3" table-title="淇濆吇宸ュ崟鍒楄〃">
         <template #toolbar-tools>
-          <Space />
+          <Space>
+            <a-button
+              :disabled="!vxeCheckboxChecked(tableApi)"
+              danger
+              type="primary"
+              v-access:code="['eims:maintSt:remove']"
+              @click="handleMultiDelete"
+            >
+              {{ $t('pages.common.delete') }}
+            </a-button>
+          </Space>
         </template>
 
         <template #equName="{ row }">
@@ -196,28 +214,26 @@
         </template>
         <template #action="{ row }">
           <Space>
-            <ghost-button v-access:code="['eims:maintOrderSt:edit']" @click.stop="handleEdit(row)">
+            <ghost-button v-access:code="['eims:maintSt:edit']" @click.stop="handleEdit(row)">
               {{ $t('pages.common.edit') }}
             </ghost-button>
-            <Popconfirm :get-popup-container="getVxePopupContainer" placement="left" title="纭鍒犻櫎锛�"
-                        @confirm="handleDelete(row)">
-              <ghost-button danger v-access:code="['eims:maintOrderSt:remove']" @click.stop="">
+            <Popconfirm :get-popup-container="getVxePopupContainer" placement="left" title="纭鍒犻櫎锛�" @confirm="handleDelete(row)">
+              <ghost-button danger v-access:code="['eims:maintSt:remove']" @click.stop="">
                 {{ $t('pages.common.delete') }}
               </ghost-button>
             </Popconfirm>
           </Space>
         </template>
-
       </BasicTable>
       <BasisSubTable
         :columns="orderCol"
         :list-api="listMaintOrderGroupDetail"
         :req-value="orderId"
-        class="h-2/5"
+        class="h-1/3"
         req-key="maintCode"
         title="淇濆吇瀹炴柦椤圭洰"
       />
     </div>
-    <MaintOrderStDrawer @reload="tableApi.query()" />
+    <MaintStDrawer @reload="tableApi.query()" />
   </Page>
 </template>
diff --git a/eims-ui/apps/web-antd/src/views/eims/maint-order-st/maint-order-st-drawer.vue b/eims-ui/apps/web-antd/src/views/eims/maint-st/maint-st-drawer.vue
similarity index 92%
rename from eims-ui/apps/web-antd/src/views/eims/maint-order-st/maint-order-st-drawer.vue
rename to eims-ui/apps/web-antd/src/views/eims/maint-st/maint-st-drawer.vue
index 414ec0f..f9f73a3 100644
--- a/eims-ui/apps/web-antd/src/views/eims/maint-order-st/maint-order-st-drawer.vue
+++ b/eims-ui/apps/web-antd/src/views/eims/maint-st/maint-st-drawer.vue
@@ -5,9 +5,9 @@
 import { cloneDeep } from '@vben/utils';
 
 import { InputSearch } from 'ant-design-vue';
+import { getMaintSt, updateMaintSt } from '#/api/eims/maint-st';
 
 import { useVbenForm } from '#/adapter/form';
-import { getMaintOrderSt, updateMaintOrderSt } from '#/api/eims/maint-order-st';
 import userModal from '#/views/eims/components/user-modal.vue';
 
 import { drawerSchema } from './data';
@@ -44,7 +44,7 @@
     isUpdate.value = !!id;
     // 鏇存柊 && 璧嬪��
     if (isUpdate.value && id) {
-      const record = await getMaintOrderSt(id);
+      const record = await getMaintSt(id);
       await formApi.setValues(record);
     }
 
@@ -61,7 +61,7 @@
     }
     const data = cloneDeep(await formApi.getValues());
     // await (isUpdate.value ? updateMaintOrderSt(data) : addMaintOrderSt(data));
-    await (isUpdate.value ? updateMaintOrderSt(data) : updateMaintOrderSt(data));
+    await (isUpdate.value ? updateMaintSt(data) : updateMaintSt(data));
     emit('reload');
     await handleCancel();
   } catch (error) {
diff --git a/eims-ui/packages/@core/base/shared/src/constants/dict-enum.ts b/eims-ui/packages/@core/base/shared/src/constants/dict-enum.ts
index cc14eac..3052f3d 100644
--- a/eims-ui/packages/@core/base/shared/src/constants/dict-enum.ts
+++ b/eims-ui/packages/@core/base/shared/src/constants/dict-enum.ts
@@ -1,16 +1,19 @@
 export enum DictEnum {
   EIMS_EQU_UNIT = 'eims_equ_unit', // 璁惧鐩樼偣鐘舵��
   EIMS_FIXTURE_STATUS = 'eims_fixture_status', // 宸ュ叿锛堟不鍏凤級鐘舵��
+  EIMS_INSPECT_TYPE = 'eims_inspect_type', // 鐐规绫诲瀷
   EIMS_INVENTORY_DETAIL_STATU = 'inventory_detail_statu', // 璁惧鐩樼偣鐘舵��
   EIMS_INVENTORY_STATU = 'inventory_statu', // 璁惧鐩樼偣鐘舵��
   EIMS_MAINT_TYPE = 'eims_maint_type', // 淇濆吇绫诲瀷
+  EIMS_INSPECT_RESULT = 'eims_inspect_result', // 鐐规缁撴灉
   EIMS_ORDITM_STATUS = 'eims_orditm_status', // 淇濆吇宸ュ崟鏄庣粏瀹屾垚鐘舵��
   EQU_IMPORT_STATU = 'equ_import_status', // 璁惧瀵煎叆鐘舵��
   FIXTURE_BORROW_RECORD_STATUS = 'fixture_borrow_record_status', // 宸ュ叿锛堟不鍏凤級鍊熺敤璁板綍鐘舵��
   FIXTURE_BORROW_STATUS = 'fixture_borrow_status', // 宸ュ叿锛堟不鍏凤級鍊熺敤鐘舵��
   MAINT_CYCLE_UNIT = 'maint_cycle_unit', // 淇濆吇鍛ㄦ湡鍗曚綅
-  MAINT_ORDER_STATUS = 'maint_order_status', // 淇濆吇宸ュ崟鐘舵��
   MAINT_ORDER_ST_STATUS = 'maint_order_st_status', // 淇濆吇宸ュ崟姹囨�荤ń鏌ョ姸鎬�
+  MAINT_ORDER_STATUS = 'maint_order_status', // 淇濆吇宸ュ崟鐘舵��
+  EIMS_INSPECT_STATUS = 'eims_inspect_status', // 鐐规鐘舵��
   MAINT_TIME_RULE = 'maint_time_rule', // 淇濆吇瑙勫垯
   REPAIR_FAULT_TYPE = 'repair_fault_type', // 鎶ヤ慨鐘舵��
   REPAIR_RECORD_HANDLE = 'repair_record_handle', // 缁翠慨璁板綍鎿嶄綔
diff --git a/eims/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/constant/DictConstants.java b/eims/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/constant/DictConstants.java
index f4e85ac..847160d 100644
--- a/eims/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/constant/DictConstants.java
+++ b/eims/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/constant/DictConstants.java
@@ -150,4 +150,6 @@
         String N = "0";// 鏈畬鎴�
         String Y = "1"; // 宸插畬鎴�
     }
+
+
 }
diff --git a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/controller/EimsInspectPlanController.java b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/controller/EimsInspectPlanController.java
new file mode 100644
index 0000000..a528722
--- /dev/null
+++ b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/controller/EimsInspectPlanController.java
@@ -0,0 +1,106 @@
+package org.dromara.eims.controller;
+
+import java.util.List;
+
+import lombok.RequiredArgsConstructor;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.validation.constraints.*;
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.validation.annotation.Validated;
+import org.dromara.common.idempotent.annotation.RepeatSubmit;
+import org.dromara.common.log.annotation.Log;
+import org.dromara.common.web.core.BaseController;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import org.dromara.common.core.domain.R;
+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.eims.domain.vo.EimsInspectPlanVo;
+import org.dromara.eims.domain.bo.EimsInspectPlanBo;
+import org.dromara.eims.service.IEimsInspectPlanService;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+
+/**
+ * 鐐规璁″垝
+ *
+ * @author zhuguifei
+ * @date 2025-03-12
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/eims/inspectPlan")
+public class EimsInspectPlanController extends BaseController {
+
+    private final IEimsInspectPlanService eimsInspectPlanService;
+
+    /**
+     * 鏌ヨ鐐规璁″垝鍒楄〃
+     */
+    @SaCheckPermission("eims:inspectPlan:list")
+    @GetMapping("/list")
+    public TableDataInfo<EimsInspectPlanVo> list(EimsInspectPlanBo bo, PageQuery pageQuery) {
+       // return eimsInspectPlanService.queryPageList(bo, pageQuery);
+        return eimsInspectPlanService.queryPageListCustom(bo, pageQuery);
+    }
+
+    /**
+     * 瀵煎嚭鐐规璁″垝鍒楄〃
+     */
+    @SaCheckPermission("eims:inspectPlan:export")
+    @Log(title = "鐐规璁″垝", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(EimsInspectPlanBo bo, HttpServletResponse response) {
+        List<EimsInspectPlanVo> list = eimsInspectPlanService.queryList(bo);
+        ExcelUtil.exportExcel(list, "鐐规璁″垝", EimsInspectPlanVo.class, response);
+    }
+
+    /**
+     * 鑾峰彇鐐规璁″垝璇︾粏淇℃伅
+     *
+     * @param id 涓婚敭
+     */
+    @SaCheckPermission("eims:inspectPlan:query")
+    @GetMapping("/{id}")
+    public R<EimsInspectPlanVo> getInfo(@NotNull(message = "涓婚敭涓嶈兘涓虹┖")
+                                     @PathVariable Long id) {
+        return R.ok(eimsInspectPlanService.queryById(id));
+    }
+
+    /**
+     * 鏂板鐐规璁″垝
+     */
+    @SaCheckPermission("eims:inspectPlan:add")
+    @Log(title = "鐐规璁″垝", businessType = BusinessType.INSERT)
+    @RepeatSubmit()
+    @PostMapping()
+    public R<Void> add(@Validated(AddGroup.class) @RequestBody EimsInspectPlanBo bo) {
+        return toAjax(eimsInspectPlanService.insertByBo(bo));
+    }
+
+    /**
+     * 淇敼鐐规璁″垝
+     */
+    @SaCheckPermission("eims:inspectPlan:edit")
+    @Log(title = "鐐规璁″垝", businessType = BusinessType.UPDATE)
+    @RepeatSubmit()
+    @PutMapping()
+    public R<Void> edit(@Validated(EditGroup.class) @RequestBody EimsInspectPlanBo bo) {
+        return toAjax(eimsInspectPlanService.updateByBo(bo));
+    }
+
+    /**
+     * 鍒犻櫎鐐规璁″垝
+     *
+     * @param ids 涓婚敭涓�
+     */
+    @SaCheckPermission("eims:inspectPlan:remove")
+    @Log(title = "鐐规璁″垝", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public R<Void> remove(@NotEmpty(message = "涓婚敭涓嶈兘涓虹┖")
+                          @PathVariable Long[] ids) {
+        return toAjax(eimsInspectPlanService.deleteWithValidByIds(List.of(ids), true));
+    }
+}
diff --git a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/controller/EimsInspectRecordController.java b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/controller/EimsInspectRecordController.java
new file mode 100644
index 0000000..6a65c62
--- /dev/null
+++ b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/controller/EimsInspectRecordController.java
@@ -0,0 +1,106 @@
+package org.dromara.eims.controller;
+
+import java.util.List;
+
+import lombok.RequiredArgsConstructor;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.validation.constraints.*;
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.validation.annotation.Validated;
+import org.dromara.common.idempotent.annotation.RepeatSubmit;
+import org.dromara.common.log.annotation.Log;
+import org.dromara.common.web.core.BaseController;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import org.dromara.common.core.domain.R;
+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.eims.domain.vo.EimsInspectRecordVo;
+import org.dromara.eims.domain.bo.EimsInspectRecordBo;
+import org.dromara.eims.service.IEimsInspectRecordService;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+
+/**
+ * 鐐规璁板綍
+ *
+ * @author zhuguifei
+ * @date 2025-03-13
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/eims/inspRecord")
+public class EimsInspectRecordController extends BaseController {
+
+    private final IEimsInspectRecordService eimsInspectRecordService;
+
+    /**
+     * 鏌ヨ鐐规璁板綍鍒楄〃
+     */
+    @SaCheckPermission("eims:inspectRecord:list")
+    @GetMapping("/list")
+    public TableDataInfo<EimsInspectRecordVo> list(EimsInspectRecordBo bo, PageQuery pageQuery) {
+       // return eimsInspectRecordService.queryPageList(bo, pageQuery);
+        return eimsInspectRecordService.queryPageListCustom(bo, pageQuery);
+    }
+
+    /**
+     * 瀵煎嚭鐐规璁板綍鍒楄〃
+     */
+    @SaCheckPermission("eims:inspectRecord:export")
+    @Log(title = "鐐规璁板綍", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(EimsInspectRecordBo bo, HttpServletResponse response) {
+        List<EimsInspectRecordVo> list = eimsInspectRecordService.queryList(bo);
+        ExcelUtil.exportExcel(list, "鐐规璁板綍", EimsInspectRecordVo.class, response);
+    }
+
+    /**
+     * 鑾峰彇鐐规璁板綍璇︾粏淇℃伅
+     *
+     * @param id 涓婚敭
+     */
+    @SaCheckPermission("eims:inspectRecord:query")
+    @GetMapping("/{id}")
+    public R<EimsInspectRecordVo> getInfo(@NotNull(message = "涓婚敭涓嶈兘涓虹┖")
+                                     @PathVariable Long id) {
+        return R.ok(eimsInspectRecordService.queryById(id));
+    }
+
+    /**
+     * 鏂板鐐规璁板綍
+     */
+    @SaCheckPermission("eims:inspectRecord:add")
+    @Log(title = "鐐规璁板綍", businessType = BusinessType.INSERT)
+    @RepeatSubmit()
+    @PostMapping()
+    public R<Void> add(@Validated(AddGroup.class) @RequestBody EimsInspectRecordBo bo) {
+        return toAjax(eimsInspectRecordService.insertByBo(bo));
+    }
+
+    /**
+     * 淇敼鐐规璁板綍
+     */
+    @SaCheckPermission("eims:inspectRecord:edit")
+    @Log(title = "鐐规璁板綍", businessType = BusinessType.UPDATE)
+    @RepeatSubmit()
+    @PutMapping()
+    public R<Void> edit(@Validated(EditGroup.class) @RequestBody EimsInspectRecordBo bo) {
+        return toAjax(eimsInspectRecordService.updateByBo(bo));
+    }
+
+    /**
+     * 鍒犻櫎鐐规璁板綍
+     *
+     * @param ids 涓婚敭涓�
+     */
+    @SaCheckPermission("eims:inspectRecord:remove")
+    @Log(title = "鐐规璁板綍", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public R<Void> remove(@NotEmpty(message = "涓婚敭涓嶈兘涓虹┖")
+                          @PathVariable Long[] ids) {
+        return toAjax(eimsInspectRecordService.deleteWithValidByIds(List.of(ids), true));
+    }
+}
diff --git a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/controller/EimsInspectStController.java b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/controller/EimsInspectStController.java
new file mode 100644
index 0000000..166d4d4
--- /dev/null
+++ b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/controller/EimsInspectStController.java
@@ -0,0 +1,105 @@
+package org.dromara.eims.controller;
+
+import java.util.List;
+
+import lombok.RequiredArgsConstructor;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.validation.constraints.*;
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.validation.annotation.Validated;
+import org.dromara.common.idempotent.annotation.RepeatSubmit;
+import org.dromara.common.log.annotation.Log;
+import org.dromara.common.web.core.BaseController;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import org.dromara.common.core.domain.R;
+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.eims.domain.vo.EimsInspectStVo;
+import org.dromara.eims.domain.bo.EimsInspectStBo;
+import org.dromara.eims.service.IEimsInspectStService;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+
+/**
+ * 鐐规姹囨��
+ *
+ * @author zhuguifei
+ * @date 2025-03-14
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/eims/inspectSt")
+public class EimsInspectStController extends BaseController {
+
+    private final IEimsInspectStService eimsInspectStService;
+
+    /**
+     * 鏌ヨ鐐规姹囨�诲垪琛�
+     */
+    @SaCheckPermission("eims:inspectSt:list")
+    @GetMapping("/list")
+    public TableDataInfo<EimsInspectStVo> list(EimsInspectStBo bo, PageQuery pageQuery) {
+        return eimsInspectStService.queryPageList(bo, pageQuery);
+    }
+
+    /**
+     * 瀵煎嚭鐐规姹囨�诲垪琛�
+     */
+    @SaCheckPermission("eims:inspectSt:export")
+    @Log(title = "鐐规姹囨��", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(EimsInspectStBo bo, HttpServletResponse response) {
+        List<EimsInspectStVo> list = eimsInspectStService.queryList(bo);
+        ExcelUtil.exportExcel(list, "鐐规姹囨��", EimsInspectStVo.class, response);
+    }
+
+    /**
+     * 鑾峰彇鐐规姹囨�昏缁嗕俊鎭�
+     *
+     * @param id 涓婚敭
+     */
+    @SaCheckPermission("eims:inspectSt:query")
+    @GetMapping("/{id}")
+    public R<EimsInspectStVo> getInfo(@NotNull(message = "涓婚敭涓嶈兘涓虹┖")
+                                     @PathVariable Long id) {
+        return R.ok(eimsInspectStService.queryById(id));
+    }
+
+    /**
+     * 鏂板鐐规姹囨��
+     */
+    @SaCheckPermission("eims:inspectSt:add")
+    @Log(title = "鐐规姹囨��", businessType = BusinessType.INSERT)
+    @RepeatSubmit()
+    @PostMapping()
+    public R<Void> add(@Validated(AddGroup.class) @RequestBody EimsInspectStBo bo) {
+        return toAjax(eimsInspectStService.insertByBo(bo));
+    }
+
+    /**
+     * 淇敼鐐规姹囨��
+     */
+    @SaCheckPermission("eims:inspectSt:edit")
+    @Log(title = "鐐规姹囨��", businessType = BusinessType.UPDATE)
+    @RepeatSubmit()
+    @PutMapping()
+    public R<Void> edit(@Validated(EditGroup.class) @RequestBody EimsInspectStBo bo) {
+        return toAjax(eimsInspectStService.updateByBo(bo));
+    }
+
+    /**
+     * 鍒犻櫎鐐规姹囨��
+     *
+     * @param ids 涓婚敭涓�
+     */
+    @SaCheckPermission("eims:inspectSt:remove")
+    @Log(title = "鐐规姹囨��", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public R<Void> remove(@NotEmpty(message = "涓婚敭涓嶈兘涓虹┖")
+                          @PathVariable Long[] ids) {
+        return toAjax(eimsInspectStService.deleteWithValidByIds(List.of(ids), true));
+    }
+}
diff --git a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/controller/EimsMaintOrderController.java b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/controller/EimsMaintOrderController.java
index 4eeba76..b633ce4 100644
--- a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/controller/EimsMaintOrderController.java
+++ b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/controller/EimsMaintOrderController.java
@@ -1,6 +1,10 @@
 package org.dromara.eims.controller;
 
+import java.time.LocalDate;
+import java.time.ZoneId;
+import java.time.temporal.TemporalAdjusters;
 import java.util.List;
+import java.util.Map;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import lombok.RequiredArgsConstructor;
@@ -54,7 +58,6 @@
     @SaCheckPermission("eims:maintOrder:list")
     @GetMapping("/groupList")
     public TableDataInfo<MaintOrdeGroupVo> group(EimsMaintOrderBo bo, PageQuery pageQuery) {
-//        return eimsMaintOrderService.queryPageList(bo, pageQuery);
         return eimsMaintOrderService.queryPageGroupList(bo, pageQuery);
     }
 
@@ -68,9 +71,14 @@
         }
         String[] split = maintCode.split("_");
         bo.setEquId(Long.valueOf(split[0]));
-        bo.setPlanTime(DateUtils.parseDate(split[1]));
         bo.setMaintCode(null);
-//        return eimsMaintOrderService.queryPageList(bo, pageQuery);
+        LocalDate planTime = DateUtils.parseDate(split[1]).toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
+        LocalDate startOfMonth = planTime.with(TemporalAdjusters.firstDayOfMonth());
+        LocalDate endOfMonth = planTime.with(TemporalAdjusters.lastDayOfMonth());
+        Map<String, Object> params = bo.getParams();
+        params.put("beginPlanTime",startOfMonth);
+        params.put("endPlanTime",endOfMonth);
+
         return eimsMaintOrderService.queryPageListCustom(bo, pageQuery);
     }
 
diff --git a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/controller/EimsMaintOrderStController.java b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/controller/EimsMaintStController.java
similarity index 62%
rename from eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/controller/EimsMaintOrderStController.java
rename to eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/controller/EimsMaintStController.java
index 02e2735..89cb75b 100644
--- a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/controller/EimsMaintOrderStController.java
+++ b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/controller/EimsMaintStController.java
@@ -6,6 +6,8 @@
 import jakarta.servlet.http.HttpServletResponse;
 import jakarta.validation.constraints.*;
 import cn.dev33.satoken.annotation.SaCheckPermission;
+import org.dromara.eims.domain.bo.EimsMaintStBo;
+import org.dromara.eims.domain.vo.EimsMaintStVo;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.validation.annotation.Validated;
 import org.dromara.common.idempotent.annotation.RepeatSubmit;
@@ -17,9 +19,7 @@
 import org.dromara.common.core.validate.EditGroup;
 import org.dromara.common.log.enums.BusinessType;
 import org.dromara.common.excel.utils.ExcelUtil;
-import org.dromara.eims.domain.vo.EimsMaintOrderStVo;
-import org.dromara.eims.domain.bo.EimsMaintOrderStBo;
-import org.dromara.eims.service.IEimsMaintOrderStService;
+import org.dromara.eims.service.IEimsMaintStService;
 import org.dromara.common.mybatis.core.page.TableDataInfo;
 
 /**
@@ -31,29 +31,29 @@
 @Validated
 @RequiredArgsConstructor
 @RestController
-@RequestMapping("/eims/maintOrderSt")
-public class EimsMaintOrderStController extends BaseController {
+@RequestMapping("/eims/maintSt")
+public class EimsMaintStController extends BaseController {
 
-    private final IEimsMaintOrderStService eimsMaintOrderStService;
+    private final IEimsMaintStService eimsMaintStService;
 
     /**
      * 鏌ヨ淇濆吇宸ュ崟姹囨�诲垪琛�
      */
-    @SaCheckPermission("eims:maintOrderSt:list")
+    @SaCheckPermission("eims:maintSt:list")
     @GetMapping("/list")
-    public TableDataInfo<EimsMaintOrderStVo> list(EimsMaintOrderStBo bo, PageQuery pageQuery) {
-        return eimsMaintOrderStService.queryPageList(bo, pageQuery);
+    public TableDataInfo<EimsMaintStVo> list(EimsMaintStBo bo, PageQuery pageQuery) {
+        return eimsMaintStService.queryPageList(bo, pageQuery);
     }
 
     /**
      * 瀵煎嚭淇濆吇宸ュ崟姹囨�诲垪琛�
      */
-    @SaCheckPermission("eims:maintOrderSt:export")
+    @SaCheckPermission("eims:maintSt:export")
     @Log(title = "淇濆吇宸ュ崟姹囨��", businessType = BusinessType.EXPORT)
     @PostMapping("/export")
-    public void export(EimsMaintOrderStBo bo, HttpServletResponse response) {
-        List<EimsMaintOrderStVo> list = eimsMaintOrderStService.queryList(bo);
-        ExcelUtil.exportExcel(list, "淇濆吇宸ュ崟姹囨��", EimsMaintOrderStVo.class, response);
+    public void export(EimsMaintStBo bo, HttpServletResponse response) {
+        List<EimsMaintStVo> list = eimsMaintStService.queryList(bo);
+        ExcelUtil.exportExcel(list, "淇濆吇宸ュ崟姹囨��", EimsMaintStVo.class, response);
     }
 
     /**
@@ -61,33 +61,33 @@
      *
      * @param id 涓婚敭
      */
-    @SaCheckPermission("eims:maintOrderSt:query")
+    @SaCheckPermission("eims:maintSt:query")
     @GetMapping("/{id}")
-    public R<EimsMaintOrderStVo> getInfo(@NotNull(message = "涓婚敭涓嶈兘涓虹┖")
+    public R<EimsMaintStVo> getInfo(@NotNull(message = "涓婚敭涓嶈兘涓虹┖")
                                      @PathVariable Long id) {
-        return R.ok(eimsMaintOrderStService.queryById(id));
+        return R.ok(eimsMaintStService.queryById(id));
     }
 
     /**
      * 鏂板淇濆吇宸ュ崟姹囨��
      */
-    @SaCheckPermission("eims:maintOrderSt:add")
+    @SaCheckPermission("eims:maintSt:add")
     @Log(title = "淇濆吇宸ュ崟姹囨��", businessType = BusinessType.INSERT)
     @RepeatSubmit()
     @PostMapping()
-    public R<Void> add(@Validated(AddGroup.class) @RequestBody EimsMaintOrderStBo bo) {
-        return toAjax(eimsMaintOrderStService.insertByBo(bo));
+    public R<Void> add(@Validated(AddGroup.class) @RequestBody EimsMaintStBo bo) {
+        return toAjax(eimsMaintStService.insertByBo(bo));
     }
 
     /**
      * 淇敼淇濆吇宸ュ崟姹囨��
      */
-    @SaCheckPermission("eims:maintOrderSt:edit")
+    @SaCheckPermission("eims:maintSt:edit")
     @Log(title = "淇濆吇宸ュ崟姹囨��", businessType = BusinessType.UPDATE)
     @RepeatSubmit()
     @PutMapping()
-    public R<Void> edit(@Validated(EditGroup.class) @RequestBody EimsMaintOrderStBo bo) {
-        return toAjax(eimsMaintOrderStService.updateByBo(bo));
+    public R<Void> edit(@Validated(EditGroup.class) @RequestBody EimsMaintStBo bo) {
+        return toAjax(eimsMaintStService.updateByBo(bo));
     }
 
     /**
@@ -95,12 +95,12 @@
      *
      * @param ids 涓婚敭涓�
      */
-    @SaCheckPermission("eims:maintOrderSt:remove")
+    @SaCheckPermission("eims:maintSt:remove")
     @Log(title = "淇濆吇宸ュ崟姹囨��", businessType = BusinessType.DELETE)
     @DeleteMapping("/{ids}")
     public R<Void> remove(@NotEmpty(message = "涓婚敭涓嶈兘涓虹┖")
                           @PathVariable Long[] ids) {
 
-        return eimsMaintOrderStService.deleteWithValidByIds(List.of(ids), true);
+        return eimsMaintStService.deleteWithValidByIds(List.of(ids), true);
     }
 }
diff --git a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/EimsInspectPlan.java b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/EimsInspectPlan.java
new file mode 100644
index 0000000..f5331b5
--- /dev/null
+++ b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/EimsInspectPlan.java
@@ -0,0 +1,112 @@
+package org.dromara.eims.domain;
+
+import org.dromara.common.mybatis.core.domain.BaseEntity;
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+
+import java.io.Serial;
+
+/**
+ * 鐐规璁″垝瀵硅薄 eims_inspect_plan
+ *
+ * @author zhuguifei
+ * @date 2025-03-12
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("eims_inspect_plan")
+public class EimsInspectPlan extends BaseEntity {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     *
+     */
+    @TableId(value = "id")
+    private Long id;
+
+    /**
+     * 璁惧id
+
+     */
+    private Long equId;
+
+    /**
+     * 鐐规绫诲瀷锛堝瓧鍏革級
+     */
+    private String inspType;
+
+    /**
+     * 鐐规椤瑰悕绉�
+     */
+    private String inspName;
+
+    /**
+     * 鐐规椤圭紪鍙�
+     */
+    private Long inspNo;
+
+    /**
+     * 鐐规璇存槑
+     */
+    private String inspDesc;
+
+    /**
+     * 鐐规鍛ㄦ湡
+     */
+    private Long inspCycle;
+
+    /**
+     * 鐐规鍛ㄦ湡鍗曚綅锛堝瓧鍏革級
+     */
+    private String inspCycleUnit;
+
+    /**
+     * 鐐规瑙勫垯锛堝瓧鍏革級淇濆吇鏃堕棿璁$畻锛�1-鎸夊懆鏈�  2-鎸変笂娆′繚鍏绘椂闂�
+     */
+    private String inspRule;
+
+    /**
+     * 鐐规浜�
+     */
+    private Long inspUser;
+
+    /**
+     * 鐐规閮ㄩ棬
+     */
+    private Long inspDept;
+
+    /**
+     * 鐘舵�侊紙瀛楀吀锛� 0-鍚敤  1-绂佺敤
+     */
+    private String status;
+
+    /**
+     * 棣栨鎵ц鏃堕棿
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date inspFirstTime;
+
+    /**
+     * 涓婃鎵ц鏃堕棿
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date inspLastTime;
+
+    /**
+     * 涓嬫鎵ц鏃堕棿
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date inspNextTime;
+
+    /**
+     * 澶囨敞
+     */
+    private String remark;
+
+
+}
diff --git a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/EimsInspectRecord.java b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/EimsInspectRecord.java
new file mode 100644
index 0000000..7d6d77d
--- /dev/null
+++ b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/EimsInspectRecord.java
@@ -0,0 +1,130 @@
+package org.dromara.eims.domain;
+
+import org.dromara.common.mybatis.core.domain.BaseEntity;
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+
+import java.io.Serial;
+
+/**
+ * 鐐规璁板綍瀵硅薄 eims_inspect_record
+ *
+ * @author zhuguifei
+ * @date 2025-03-13
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("eims_inspect_record")
+public class EimsInspectRecord extends BaseEntity {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * id
+     */
+    @TableId(value = "id")
+    private Long id;
+
+    /**
+     * 璁惧di
+     */
+    private Long equId;
+
+    /**
+     * 鐐规鍚嶇О
+     */
+    private String inspName;
+
+    /**
+     * 鐐规鎻忚堪
+     */
+    private String inspDesc;
+
+    /**
+     * 鐘舵��
+     */
+    private String status;
+
+    /**
+     * 鐐规缂栫爜
+     */
+    private String inspCode;
+
+    /**
+     * 鐐规浜�
+     */
+    private Long inspUser;
+
+    /**
+     * 鐐规閮ㄩ棬
+     */
+    private Long inspDept;
+
+    /**
+     * 鍊艰褰曟柟寮忥紙瀛楀吀锛�
+     */
+    private String recordMode;
+
+    /**
+     * 鍙傝�冨��
+     */
+    private String referenceValue;
+
+    /**
+     * 涓婇檺
+     */
+    private String upperLimit;
+
+    /**
+     * 涓嬮檺
+     */
+    private String lowLimit;
+
+    /**
+     * 妫�鏌ュ��
+     */
+    private String checkValue;
+
+    /**
+     * 鐐规缁撴灉锛堝瓧鍏革級
+     */
+    private String inspResult;
+
+    /**
+     * 鐐规绫诲瀷锛堝瓧鍏革級
+     */
+    private String inspType;
+
+
+    /**
+     * 鐐规鏃堕棿
+     */
+    private Date inspTime;
+
+    /**
+     * 璁″垝鐐规鏃ユ湡
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date planTime;
+
+    /**
+     * 楠岃瘉浜�
+     */
+    private Long verifyUser;
+
+    /**
+     * 璁″垝id
+     */
+    private Long planId;
+
+    /**
+     * 澶囨敞
+     */
+    private String remark;
+
+
+}
diff --git a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/EimsMaintOrderSt.java b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/EimsInspectSt.java
similarity index 71%
copy from eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/EimsMaintOrderSt.java
copy to eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/EimsInspectSt.java
index 051fadd..a0a0c3b 100644
--- a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/EimsMaintOrderSt.java
+++ b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/EimsInspectSt.java
@@ -10,15 +10,15 @@
 import java.io.Serial;
 
 /**
- * 淇濆吇宸ュ崟姹囨�诲璞� eims_maint_order_st
+ * 鐐规姹囨�诲璞� eims_inspect_st
  *
  * @author zhuguifei
- * @date 2025-03-12
+ * @date 2025-03-14
  */
 @Data
 @EqualsAndHashCode(callSuper = true)
-@TableName("eims_maint_order_st")
-public class EimsMaintOrderSt extends BaseEntity {
+@TableName("eims_inspect_st")
+public class EimsInspectSt extends BaseEntity {
 
     @Serial
     private static final long serialVersionUID = 1L;
@@ -30,35 +30,38 @@
     private Long id;
 
     /**
-     *
+     * 鏍囬
      */
     private String title;
 
     /**
-     *
+     * 璁惧id
      */
-    private String equId;
+    private Long equId;
 
     /**
-     *
+     * 璁″垝鏃堕棿
      */
-    @JsonFormat(pattern = "yyyy-MM-dd")
     private Date planTime;
 
-    @JsonFormat(pattern = "yyyy-MM-dd")
-    private Date verifyTime;
-
+    /**
+     * 鐘舵��
+     */
     private String status;
 
     /**
-     * 淇濆吇浜�
+     * 鐐规浜�
      */
-    private Long maintUser;
-
+    private Long inspUser;
     /**
-     * 楠岃瘉浜�
+     * 绋芥煡浜�
      */
     private Long verifyUser;
+
+    /**
+     * 绋芥煡鏃ユ湡
+     */
+    private Date verifyTime;
 
     /**
      * 鐗硅浜嬮」
@@ -71,4 +74,5 @@
     private String remark;
 
 
+
 }
diff --git a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/EimsMaintOrder.java b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/EimsMaintOrder.java
index 6811b22..af7cf77 100644
--- a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/EimsMaintOrder.java
+++ b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/EimsMaintOrder.java
@@ -75,6 +75,14 @@
     private String maintCode;
 
     /**
+     * 淇濆吇椤�
+     */
+    private String maintName;
+    /**
+     * 宸ヤ綔鎻忚堪
+     */
+    private String maintDesc;
+    /**
      *
      */
     private String status;
diff --git a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/EimsMaintOrderSt.java b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/EimsMaintSt.java
similarity index 86%
rename from eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/EimsMaintOrderSt.java
rename to eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/EimsMaintSt.java
index 051fadd..b513f27 100644
--- a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/EimsMaintOrderSt.java
+++ b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/EimsMaintSt.java
@@ -10,15 +10,15 @@
 import java.io.Serial;
 
 /**
- * 淇濆吇宸ュ崟姹囨�诲璞� eims_maint_order_st
+ * 淇濆吇宸ュ崟姹囨�诲璞� eims_maint_st
  *
  * @author zhuguifei
  * @date 2025-03-12
  */
 @Data
 @EqualsAndHashCode(callSuper = true)
-@TableName("eims_maint_order_st")
-public class EimsMaintOrderSt extends BaseEntity {
+@TableName("eims_maint_st")
+public class EimsMaintSt extends BaseEntity {
 
     @Serial
     private static final long serialVersionUID = 1L;
@@ -37,7 +37,7 @@
     /**
      *
      */
-    private String equId;
+    private Long equId;
 
     /**
      *
diff --git a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/bo/EimsInspectPlanBo.java b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/bo/EimsInspectPlanBo.java
new file mode 100644
index 0000000..68be155
--- /dev/null
+++ b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/bo/EimsInspectPlanBo.java
@@ -0,0 +1,123 @@
+package org.dromara.eims.domain.bo;
+
+import org.dromara.eims.domain.EimsInspectPlan;
+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 com.fasterxml.jackson.annotation.JsonFormat;
+
+/**
+ * 鐐规璁″垝涓氬姟瀵硅薄 eims_inspect_plan
+ *
+ * @author zhuguifei
+ * @date 2025-03-12
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@AutoMapper(target = EimsInspectPlan.class, reverseConvertGenerate = false)
+public class EimsInspectPlanBo extends BaseEntity {
+
+    /**
+     *
+     */
+    @NotNull(message = "涓嶈兘涓虹┖", groups = { EditGroup.class })
+    private Long id;
+
+    /**
+     * 璁惧id
+
+     */
+    @NotNull(message = "璁惧id 涓嶈兘涓虹┖", groups = { AddGroup.class, EditGroup.class })
+    private Long equId;
+
+    /**
+     * 鐐规绫诲瀷锛堝瓧鍏革級
+     */
+    private String inspType;
+
+    /**
+     * 鐐规椤瑰悕绉�
+     */
+    @NotBlank(message = "鐐规椤瑰悕绉颁笉鑳戒负绌�", groups = { AddGroup.class, EditGroup.class })
+    private String inspName;
+
+    /**
+     * 鐐规椤圭紪鍙�
+     */
+    private Long inspNo;
+
+    /**
+     * 鐐规璇存槑
+     */
+    private String inspDesc;
+
+    /**
+     * 鐐规鍛ㄦ湡
+     */
+    @NotNull(message = "鐐规鍛ㄦ湡涓嶈兘涓虹┖", groups = { AddGroup.class, EditGroup.class })
+    private Long inspCycle;
+
+    /**
+     * 鐐规鍛ㄦ湡鍗曚綅锛堝瓧鍏革級
+     */
+    @NotBlank(message = "鐐规鍛ㄦ湡鍗曚綅锛堝瓧鍏革級涓嶈兘涓虹┖", groups = { AddGroup.class, EditGroup.class })
+    private String inspCycleUnit;
+
+    /**
+     * 鐐规瑙勫垯锛堝瓧鍏革級淇濆吇鏃堕棿璁$畻锛�1-鎸夊懆鏈�  2-鎸変笂娆′繚鍏绘椂闂�
+     */
+    private String inspRule;
+
+    /**
+     * 鐐规浜�
+     */
+    @NotNull(message = "鐐规浜轰笉鑳戒负绌�", groups = { AddGroup.class, EditGroup.class })
+    private Long inspUser;
+
+    /**
+     * 鐐规閮ㄩ棬
+     */
+    private Long inspDept;
+
+    /**
+     * 鐘舵�侊紙瀛楀吀锛� 0-鍚敤  1-绂佺敤
+     */
+    @NotBlank(message = "鐘舵�侊紙瀛楀吀锛� 0-鍚敤  1-绂佺敤涓嶈兘涓虹┖", groups = { AddGroup.class, EditGroup.class })
+    private String status;
+
+    /**
+     * 棣栨鎵ц鏃堕棿
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date inspFirstTime;
+
+    /**
+     * 涓婃鎵ц鏃堕棿
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date inspLastTime;
+
+    /**
+     * 涓嬫鎵ц鏃堕棿
+     */
+    @NotNull(message = "涓嬫鎵ц鏃堕棿涓嶈兘涓虹┖", groups = { AddGroup.class, EditGroup.class })
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date inspNextTime;
+
+    /**
+     * 澶囨敞
+     */
+    private String remark;
+
+
+    // 澶氳〃鏌ヨ瀛楁
+    private String equName;
+    private String assetNo;
+
+
+}
diff --git a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/bo/EimsInspectRecordBo.java b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/bo/EimsInspectRecordBo.java
new file mode 100644
index 0000000..c570126
--- /dev/null
+++ b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/bo/EimsInspectRecordBo.java
@@ -0,0 +1,135 @@
+package org.dromara.eims.domain.bo;
+
+import org.dromara.eims.domain.EimsInspectRecord;
+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 com.fasterxml.jackson.annotation.JsonFormat;
+
+/**
+ * 鐐规璁板綍涓氬姟瀵硅薄 eims_inspect_record
+ *
+ * @author zhuguifei
+ * @date 2025-03-13
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@AutoMapper(target = EimsInspectRecord.class, reverseConvertGenerate = false)
+public class EimsInspectRecordBo extends BaseEntity {
+
+    /**
+     * id
+     */
+    @NotNull(message = "id涓嶈兘涓虹┖", groups = { EditGroup.class })
+    private Long id;
+
+    /**
+     * 璁惧di
+     */
+    @NotNull(message = "璁惧di涓嶈兘涓虹┖", groups = { AddGroup.class, EditGroup.class })
+    private Long equId;
+
+    private String equName;
+    private String assetNo;
+
+    /**
+     * 鐐规鍚嶇О
+     */
+    @NotBlank(message = "鐐规鍚嶇О涓嶈兘涓虹┖", groups = { AddGroup.class, EditGroup.class })
+    private String inspName;
+
+    /**
+     * 鐐规鎻忚堪
+     */
+    private String inspDesc;
+
+    /**
+     * 鐐规绫诲瀷
+     */
+    private String inspType;
+
+    /**
+     * 鐐规浜�
+     */
+    private Long inspUser;
+
+    /**
+     * 鐐规閮ㄩ棬
+     */
+    private Long inspDept;
+
+    /**
+     * 鐘舵��
+     */
+    @NotBlank(message = "鐘舵�佷笉鑳戒负绌�", groups = { AddGroup.class, EditGroup.class })
+    private String status;
+
+    /**
+     * 鐐规缂栫爜
+     */
+    @NotBlank(message = "鐐规缂栫爜涓嶈兘涓虹┖", groups = { AddGroup.class, EditGroup.class })
+    private String inspCode;
+
+    /**
+     * 鍊艰褰曟柟寮忥紙瀛楀吀锛�
+     */
+    private String recordMode;
+
+    /**
+     * 鍙傝�冨��
+     */
+    private String referenceValue;
+
+    /**
+     * 涓婇檺
+     */
+    private String upperLimit;
+
+    /**
+     * 涓嬮檺
+     */
+    private String lowLimit;
+
+    /**
+     * 妫�鏌ュ��
+     */
+    private String checkValue;
+
+    /**
+     * 鐐规缁撴灉锛堝瓧鍏革級
+     */
+    private String inspResult;
+
+    /**
+     * 鐐规鏃堕棿
+     */
+    private Date inspTime;
+
+    /**
+     * 璁″垝鐐规鏃ユ湡
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date planTime;
+
+    /**
+     * 楠岃瘉浜�
+     */
+    private Long verifyUser;
+
+    /**
+     * 璁″垝id
+     */
+    private Long planId;
+
+    /**
+     * 澶囨敞
+     */
+    private String remark;
+
+
+}
diff --git a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/bo/EimsInspectStBo.java b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/bo/EimsInspectStBo.java
new file mode 100644
index 0000000..13daeb7
--- /dev/null
+++ b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/bo/EimsInspectStBo.java
@@ -0,0 +1,83 @@
+package org.dromara.eims.domain.bo;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import org.dromara.eims.domain.EimsInspectSt;
+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 com.fasterxml.jackson.annotation.JsonFormat;
+
+/**
+ * 鐐规姹囨�讳笟鍔″璞� eims_inspect_st
+ *
+ * @author zhuguifei
+ * @date 2025-03-14
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@AutoMapper(target = EimsInspectSt.class, reverseConvertGenerate = false)
+public class EimsInspectStBo extends BaseEntity {
+
+    /**
+     *
+     */
+    @NotNull(message = "涓嶈兘涓虹┖", groups = { EditGroup.class })
+    private Long id;
+
+    /**
+     * 鏍囬
+     */
+    @NotBlank(message = "鏍囬涓嶈兘涓虹┖", groups = { AddGroup.class, EditGroup.class })
+    private String title;
+
+    /**
+     * 璁惧id
+     */
+    @NotNull(message = "璁惧id涓嶈兘涓虹┖", groups = { AddGroup.class, EditGroup.class })
+    private Long equId;
+    private String equName;
+    private String assetNo;
+
+    /**
+     * 璁″垝鏃堕棿
+     */
+    @NotNull(message = "璁″垝鏃堕棿涓嶈兘涓虹┖", groups = { AddGroup.class, EditGroup.class })
+    private Date planTime;
+
+    /**
+     * 鐘舵��
+     */
+    private String status;
+    /**
+     * 鐐规浜�
+     */
+    private Long inspUser;
+    /**
+     * 绋芥煡浜�
+     */
+    private Long verifyUser;
+
+    /**
+     * 绋芥煡鏃ユ湡
+     */
+    private Date verifyTime;
+
+    /**
+     * 鐗硅浜嬮」
+     */
+    private String specialNote;
+
+    /**
+     * 澶囨敞
+     */
+    private String remark;
+
+
+
+
+}
diff --git a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/bo/EimsMaintOrderBo.java b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/bo/EimsMaintOrderBo.java
index e90b9dd..958995c 100644
--- a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/bo/EimsMaintOrderBo.java
+++ b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/bo/EimsMaintOrderBo.java
@@ -78,6 +78,16 @@
     private String maintCode;
 
     /**
+     * 淇濆吇椤�
+     */
+    private String maintName;
+
+    /**
+     * 宸ヤ綔鎻忚堪
+     */
+    private String maintDesc;
+
+    /**
      *
      */
     @NotBlank(message = "鐘舵�佷笉鑳戒负绌�", groups = { AddGroup.class, EditGroup.class })
diff --git a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/bo/EimsMaintOrderStBo.java b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/bo/EimsMaintStBo.java
similarity index 82%
rename from eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/bo/EimsMaintOrderStBo.java
rename to eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/bo/EimsMaintStBo.java
index 132d076..ce64691 100644
--- a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/bo/EimsMaintOrderStBo.java
+++ b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/bo/EimsMaintStBo.java
@@ -1,6 +1,6 @@
 package org.dromara.eims.domain.bo;
 
-import org.dromara.eims.domain.EimsMaintOrderSt;
+import org.dromara.eims.domain.EimsMaintSt;
 import org.dromara.common.mybatis.core.domain.BaseEntity;
 import org.dromara.common.core.validate.AddGroup;
 import org.dromara.common.core.validate.EditGroup;
@@ -12,15 +12,15 @@
 import com.fasterxml.jackson.annotation.JsonFormat;
 
 /**
- * 淇濆吇宸ュ崟姹囨�讳笟鍔″璞� eims_maint_order_st
+ * 淇濆吇宸ュ崟姹囨�讳笟鍔″璞� eims_maint_st
  *
  * @author zhuguifei
  * @date 2025-03-12
  */
 @Data
 @EqualsAndHashCode(callSuper = true)
-@AutoMapper(target = EimsMaintOrderSt.class, reverseConvertGenerate = false)
-public class EimsMaintOrderStBo extends BaseEntity {
+@AutoMapper(target = EimsMaintSt.class, reverseConvertGenerate = false)
+public class EimsMaintStBo extends BaseEntity {
 
     /**
      *
@@ -38,8 +38,9 @@
      *
      */
     @NotBlank(message = "涓嶈兘涓虹┖", groups = { AddGroup.class, EditGroup.class })
-    private String equId;
-
+    private Long equId;
+    private String equName;
+    private String assetNo;
     /**
      *
      */
diff --git a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/vo/EimsInspectPlanVo.java b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/vo/EimsInspectPlanVo.java
new file mode 100644
index 0000000..2416133
--- /dev/null
+++ b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/vo/EimsInspectPlanVo.java
@@ -0,0 +1,158 @@
+package org.dromara.eims.domain.vo;
+
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.dromara.common.mybatis.core.domain.BaseEntity;
+import org.dromara.common.translation.annotation.Translation;
+import org.dromara.common.translation.constant.TransConstant;
+import org.dromara.eims.domain.EimsInspectPlan;
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.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;
+import java.util.Date;
+
+
+
+/**
+ * 鐐规璁″垝瑙嗗浘瀵硅薄 eims_inspect_plan
+ *
+ * @author zhuguifei
+ * @date 2025-03-12
+ */
+@Data
+@ExcelIgnoreUnannotated
+@AutoMapper(target = EimsInspectPlan.class)
+public class EimsInspectPlanVo extends BaseEntity implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     *
+     */
+    @ExcelProperty(value = "")
+    private Long id;
+
+    /**
+     * 璁惧id
+
+     */
+    @ExcelProperty(value = "璁惧id")
+    private Long equId;
+
+    @Translation(type = TransConstant.EQU_ID_TO_NAME, mapper = "equId")
+    private String equName;
+
+
+    private String assetNo;
+
+    /**
+     * 鐐规绫诲瀷锛堝瓧鍏革級
+     */
+    @ExcelProperty(value = "鐐规绫诲瀷", converter = ExcelDictConvert.class)
+    @ExcelDictFormat(readConverterExp = "瀛�=鍏�")
+    private String inspType;
+
+    /**
+     * 鐐规椤瑰悕绉�
+     */
+    @ExcelProperty(value = "鐐规椤瑰悕绉�")
+    private String inspName;
+
+    /**
+     * 鐐规椤圭紪鍙�
+     */
+    @ExcelProperty(value = "鐐规椤圭紪鍙�")
+    private Long inspNo;
+
+    /**
+     * 鐐规璇存槑
+     */
+    @ExcelProperty(value = "鐐规璇存槑")
+    private String inspDesc;
+
+    /**
+     * 鐐规鍛ㄦ湡
+     */
+    @ExcelProperty(value = "鐐规鍛ㄦ湡")
+    private Long inspCycle;
+
+    /**
+     * 鐐规鍛ㄦ湡鍗曚綅锛堝瓧鍏革級
+     */
+    @ExcelProperty(value = "鐐规鍛ㄦ湡鍗曚綅", converter = ExcelDictConvert.class)
+    @ExcelDictFormat(readConverterExp = "瀛�=鍏�")
+    private String inspCycleUnit;
+
+    /**
+     * 鐐规瑙勫垯锛堝瓧鍏革級淇濆吇鏃堕棿璁$畻锛�1-鎸夊懆鏈�  2-鎸変笂娆′繚鍏绘椂闂�
+     */
+    @ExcelProperty(value = "鐐规瑙勫垯", converter = ExcelDictConvert.class)
+    @ExcelDictFormat(readConverterExp = "瀛�=鍏�")
+    private String inspRule;
+
+    /**
+     * 鐐规浜�
+     */
+    @ExcelProperty(value = "鐐规浜�")
+    private Long inspUser;
+
+
+    @Translation(type = TransConstant.USER_ID_TO_NICKNAME, mapper = "inspUser")
+    private String inspUserName;
+
+    /**
+     * 鐐规閮ㄩ棬
+     */
+    @ExcelProperty(value = "鐐规閮ㄩ棬")
+    private Long inspDept;
+    @Translation(type = TransConstant.DEPT_ID_TO_NAME, mapper = "inspDept")
+    private String inspDeptName;
+
+    /**
+     * 鐘舵�侊紙瀛楀吀锛� 0-鍚敤  1-绂佺敤
+     */
+    @ExcelProperty(value = "鐘舵��", converter = ExcelDictConvert.class)
+    @ExcelDictFormat(readConverterExp = "瀛�=鍏�")
+    private String status;
+
+    /**
+     * 棣栨鎵ц鏃堕棿
+     */
+    @ExcelProperty(value = "棣栨鎵ц鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date inspFirstTime;
+
+    /**
+     * 涓婃鎵ц鏃堕棿
+     */
+    @ExcelProperty(value = "涓婃鎵ц鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date inspLastTime;
+
+    /**
+     * 涓嬫鎵ц鏃堕棿
+     */
+    @ExcelProperty(value = "涓嬫鎵ц鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date inspNextTime;
+
+    /**
+     * 澶囨敞
+     */
+    @ExcelProperty(value = "澶囨敞")
+    private String remark;
+
+    /**
+     * 寰幆鍛ㄦ湡
+     */
+    private String inspCycleUnitName;
+
+
+}
diff --git a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/vo/EimsInspectRecordVo.java b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/vo/EimsInspectRecordVo.java
new file mode 100644
index 0000000..a88f9d8
--- /dev/null
+++ b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/vo/EimsInspectRecordVo.java
@@ -0,0 +1,175 @@
+package org.dromara.eims.domain.vo;
+
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.dromara.common.mybatis.core.domain.BaseEntity;
+import org.dromara.common.translation.annotation.Translation;
+import org.dromara.common.translation.constant.TransConstant;
+import org.dromara.eims.domain.EimsInspectRecord;
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.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;
+import java.util.Date;
+
+
+
+/**
+ * 鐐规璁板綍瑙嗗浘瀵硅薄 eims_inspect_record
+ *
+ * @author zhuguifei
+ * @date 2025-03-13
+ */
+@Data
+@ExcelIgnoreUnannotated
+@AutoMapper(target = EimsInspectRecord.class)
+public class EimsInspectRecordVo extends BaseEntity implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * id
+     */
+    @ExcelProperty(value = "id")
+    private Long id;
+
+    /**
+     * 璁惧di
+     */
+    @ExcelProperty(value = "璁惧di")
+    private Long equId;
+
+
+    @Translation(type = TransConstant.EQU_ID_TO_NAME, mapper = "equId")
+    private String equName;
+
+    private String assetNo;
+
+    /**
+     * 鐐规鍚嶇О
+     */
+    @ExcelProperty(value = "鐐规鍚嶇О")
+    private String inspName;
+
+    /**
+     * 鐐规浜�
+     */
+    private Long inspUser;
+
+
+    @Translation(type = TransConstant.USER_ID_TO_NICKNAME, mapper = "inspUser")
+    private String inspUserName;
+
+    /**
+     * 鐐规閮ㄩ棬
+     */
+    private Long inspDept;
+    @Translation(type = TransConstant.DEPT_ID_TO_NAME, mapper = "inspDept")
+    private String inspDeptName;
+
+    /**
+     * 鐐规鎻忚堪
+     */
+    @ExcelProperty(value = "鐐规鎻忚堪")
+    private String inspDesc;
+
+    /**
+     * 鐘舵��
+     */
+    @ExcelProperty(value = "鐘舵��", converter = ExcelDictConvert.class)
+    @ExcelDictFormat(dictType = "eims_inspect_status")
+    private String status;
+
+    /**
+     * 鐐规缂栫爜
+     */
+    @ExcelProperty(value = "鐐规缂栫爜")
+    private String inspCode;
+
+    /**
+     * 鍊艰褰曟柟寮忥紙瀛楀吀锛�
+     */
+    @ExcelProperty(value = "鍊艰褰曟柟寮�", converter = ExcelDictConvert.class)
+    @ExcelDictFormat(readConverterExp = "瀛�=鍏�")
+    private String recordMode;
+
+    /**
+     * 鍙傝�冨��
+     */
+    @ExcelProperty(value = "鍙傝�冨��")
+    private String referenceValue;
+
+    /**
+     * 涓婇檺
+     */
+    @ExcelProperty(value = "涓婇檺")
+    private String upperLimit;
+
+    /**
+     * 涓嬮檺
+     */
+    @ExcelProperty(value = "涓嬮檺")
+    private String lowLimit;
+
+    /**
+     * 妫�鏌ュ��
+     */
+    @ExcelProperty(value = "妫�鏌ュ��")
+    private String checkValue;
+
+    /**
+     * 鐐规缁撴灉锛堝瓧鍏革級
+     */
+    @ExcelProperty(value = "鐐规缁撴灉", converter = ExcelDictConvert.class)
+    @ExcelDictFormat(dictType = "eims_inspect_result")
+    private String inspResult;
+
+    /**
+     * 鐐规绫诲瀷锛堝瓧鍏革級
+     */
+    @ExcelDictFormat(dictType = "eims_inspect_type")
+    private String inspType;
+
+
+    /**
+     * 鐐规鏃堕棿
+     */
+    @ExcelProperty(value = "鐐规鏃堕棿")
+    private Date inspTime;
+
+    /**
+     * 璁″垝鐐规鏃ユ湡
+     */
+    @ExcelProperty(value = "璁″垝鐐规鏃ユ湡")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date planTime;
+
+    /**
+     * 楠岃瘉浜�
+     */
+    @ExcelProperty(value = "楠岃瘉浜�")
+    private Long verifyUser;
+
+    @Translation(type = TransConstant.USER_ID_TO_NICKNAME, mapper = "verifyUser")
+    private String verifyUserName;
+
+    /**
+     * 璁″垝id
+     */
+    @ExcelProperty(value = "璁″垝id")
+    private Long planId;
+
+    /**
+     * 澶囨敞
+     */
+    @ExcelProperty(value = "澶囨敞")
+    private String remark;
+
+
+}
diff --git a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/vo/EimsInspectStVo.java b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/vo/EimsInspectStVo.java
new file mode 100644
index 0000000..0997212
--- /dev/null
+++ b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/vo/EimsInspectStVo.java
@@ -0,0 +1,124 @@
+package org.dromara.eims.domain.vo;
+
+import java.util.Date;
+
+import org.dromara.common.translation.annotation.Translation;
+import org.dromara.common.translation.constant.TransConstant;
+import org.dromara.eims.domain.EimsInspectSt;
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.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;
+
+
+/**
+ * 鐐规姹囨�昏鍥惧璞� eims_inspect_st
+ *
+ * @author zhuguifei
+ * @date 2025-03-14
+ */
+@Data
+@ExcelIgnoreUnannotated
+@AutoMapper(target = EimsInspectSt.class)
+public class EimsInspectStVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     *
+     */
+    @ExcelProperty(value = "")
+    private Long id;
+
+    /**
+     * 鏍囬
+     */
+    @ExcelProperty(value = "鏍囬")
+    private String title;
+
+    /**
+     * 璁惧id
+     */
+    @ExcelProperty(value = "璁惧id")
+    private Long equId;
+    private String equName;
+    private String assetNo;
+
+    /**
+     * 璁″垝鏃堕棿
+     */
+    @ExcelProperty(value = "璁″垝鏃堕棿")
+    private Date planTime;
+
+    /**
+     * 鐘舵��
+     */
+    @ExcelProperty(value = "鐘舵��", converter = ExcelDictConvert.class)
+    @ExcelDictFormat(dictType = "eims_inspect_status")
+    private String status;
+
+    /**
+     * 鐐规浜�
+     */
+    @ExcelProperty(value = "鐐规浜�")
+    private Long inspUser;
+    @Translation(type = TransConstant.USER_ID_TO_NICKNAME, mapper = "inspUser")
+    private String inspUserName;
+
+    /**
+     * 绋芥煡浜�
+     */
+    @ExcelProperty(value = "绋芥煡浜�")
+    private Long verifyUser;
+    @Translation(type = TransConstant.USER_ID_TO_NICKNAME, mapper = "verifyUser")
+    private String verifyUserName;
+
+    /**
+     * 绋芥煡鏃ユ湡
+     */
+    @ExcelProperty(value = "绋芥煡鏃ユ湡")
+    private Date verifyTime;
+
+    /**
+     * 鐗硅浜嬮」
+     */
+    @ExcelProperty(value = "鐗硅浜嬮」")
+    private String specialNote;
+
+    /**
+     * 澶囨敞
+     */
+    @ExcelProperty(value = "澶囨敞")
+    private String remark;
+
+    /**
+     * 璁板綍鎬绘暟
+     */
+    private Integer recordCount;
+    /**
+     * 宸茬偣妫�璁板綍
+     */
+    private Integer checkCount;
+    /**
+     * 鏈偣妫�璁板綍
+     */
+    private Integer unCheckCount;
+    /**
+     * 缁撴灉-姝e父鏁�
+     */
+    private Integer normalNum;
+    /**
+     * 缁撴灉-寮傚父鏁�
+     */
+    private Integer abNormalNum;
+
+
+
+
+}
diff --git a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/vo/EimsMaintOrderVo.java b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/vo/EimsMaintOrderVo.java
index 784370d..4ba8284 100644
--- a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/vo/EimsMaintOrderVo.java
+++ b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/vo/EimsMaintOrderVo.java
@@ -127,6 +127,11 @@
     private Date planTime;
 
     /**
+     * 宸ヤ綔鎻忚堪
+     */
+    private String maintDesc;
+
+    /**
      * 淇濆吇寮�濮嬫椂闂�
      */
     @ExcelProperty(value = "淇濆吇寮�濮嬫椂闂�")
diff --git a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/vo/EimsMaintPlanVo.java b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/vo/EimsMaintPlanVo.java
index 3df1153..2f58c13 100644
--- a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/vo/EimsMaintPlanVo.java
+++ b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/vo/EimsMaintPlanVo.java
@@ -2,6 +2,7 @@
 
 import java.util.Date;
 import com.fasterxml.jackson.annotation.JsonFormat;
+import org.dromara.common.mybatis.core.domain.BaseEntity;
 import org.dromara.common.translation.annotation.Translation;
 import org.dromara.common.translation.constant.TransConstant;
 import org.dromara.eims.domain.EimsMaintPlan;
@@ -25,7 +26,7 @@
 @Data
 @ExcelIgnoreUnannotated
 @AutoMapper(target = EimsMaintPlan.class)
-public class EimsMaintPlanVo implements Serializable {
+public class EimsMaintPlanVo extends BaseEntity implements Serializable {
 
     @Serial
     private static final long serialVersionUID = 1L;
diff --git a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/vo/EimsMaintOrderStVo.java b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/vo/EimsMaintStVo.java
similarity index 83%
rename from eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/vo/EimsMaintOrderStVo.java
rename to eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/vo/EimsMaintStVo.java
index 69e1a4c..130b421 100644
--- a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/vo/EimsMaintOrderStVo.java
+++ b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/vo/EimsMaintStVo.java
@@ -3,31 +3,29 @@
 import java.util.Date;
 
 import com.fasterxml.jackson.annotation.JsonFormat;
+import org.dromara.common.mybatis.core.domain.BaseEntity;
 import org.dromara.common.translation.annotation.Translation;
 import org.dromara.common.translation.constant.TransConstant;
-import org.dromara.eims.domain.EimsMaintOrderSt;
+import org.dromara.eims.domain.EimsMaintSt;
 import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
 import com.alibaba.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;
-import java.util.Date;
 
 
 /**
- * 淇濆吇宸ュ崟姹囨�昏鍥惧璞� eims_maint_order_st
+ * 淇濆吇宸ュ崟姹囨�昏鍥惧璞� eims_maint_st
  *
  * @author zhuguifei
  * @date 2025-03-12
  */
 @Data
 @ExcelIgnoreUnannotated
-@AutoMapper(target = EimsMaintOrderSt.class)
-public class EimsMaintOrderStVo implements Serializable {
+@AutoMapper(target = EimsMaintSt.class)
+public class EimsMaintStVo extends BaseEntity implements Serializable {
 
     @Serial
     private static final long serialVersionUID = 1L;
@@ -59,7 +57,7 @@
      *
      */
     @ExcelProperty(value = "")
-    @JsonFormat(pattern = "yyyy-MM-dd")
+    @JsonFormat(pattern = "yyyy-MM")
     private Date planTime;
     /**
      *绋芥煡鏃ユ湡
diff --git a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/job/MaintPlanToOrderJob.java b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/job/MaintPlanToOrderJob.java
index cb01ba0..2e2b6af 100644
--- a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/job/MaintPlanToOrderJob.java
+++ b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/job/MaintPlanToOrderJob.java
@@ -99,6 +99,7 @@
             order.setStatus(DictConstants.MAINT_ORDER_STATUS_DETAIL.DAIBAOYANG);
             order.setPlanTime(oldNext);
             order.setPlanId(planVo.getId());
+            order.setMaintName(planVo.getMaintName());
             order.setMaintCode(codeService.generateCode("BYZD"));
             EimsMaintPlan plan = MapstructUtils.convert(planVo, EimsMaintPlan.class);
             assert plan != null;
diff --git a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/mapper/EimsInspectPlanMapper.java b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/mapper/EimsInspectPlanMapper.java
new file mode 100644
index 0000000..5845888
--- /dev/null
+++ b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/mapper/EimsInspectPlanMapper.java
@@ -0,0 +1,19 @@
+package org.dromara.eims.mapper;
+
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
+import com.baomidou.mybatisplus.core.toolkit.Constants;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.apache.ibatis.annotations.Param;
+import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
+import org.dromara.eims.domain.EimsInspectPlan;
+import org.dromara.eims.domain.vo.EimsInspectPlanVo;
+
+/**
+ * 鐐规璁″垝Mapper鎺ュ彛
+ *
+ * @author zhuguifei
+ * @date 2025-03-12
+ */
+public interface EimsInspectPlanMapper extends BaseMapperPlus<EimsInspectPlan, EimsInspectPlanVo> {
+    Page<EimsInspectPlanVo> selectInspPlanList(@Param("page") Page<EimsInspectPlanVo> page, @Param(Constants.WRAPPER) Wrapper<EimsInspectPlan> queryWrapper);
+}
diff --git a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/mapper/EimsInspectRecordMapper.java b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/mapper/EimsInspectRecordMapper.java
new file mode 100644
index 0000000..15ea2d5
--- /dev/null
+++ b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/mapper/EimsInspectRecordMapper.java
@@ -0,0 +1,20 @@
+package org.dromara.eims.mapper;
+
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
+import com.baomidou.mybatisplus.core.toolkit.Constants;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.apache.ibatis.annotations.Param;
+import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
+import org.dromara.eims.domain.EimsInspectRecord;
+import org.dromara.eims.domain.vo.EimsInspectRecordVo;
+
+/**
+ * 鐐规璁板綍Mapper鎺ュ彛
+ *
+ * @author zhuguifei
+ * @date 2025-03-13
+ */
+public interface EimsInspectRecordMapper extends BaseMapperPlus<EimsInspectRecord, EimsInspectRecordVo> {
+    Page<EimsInspectRecordVo> selectInspRecordList(@Param("page") Page<EimsInspectRecordVo> page, @Param(Constants.WRAPPER) Wrapper<EimsInspectRecord> queryWrapper);
+
+}
diff --git a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/mapper/EimsInspectStMapper.java b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/mapper/EimsInspectStMapper.java
new file mode 100644
index 0000000..e82f58e
--- /dev/null
+++ b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/mapper/EimsInspectStMapper.java
@@ -0,0 +1,22 @@
+package org.dromara.eims.mapper;
+
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
+import com.baomidou.mybatisplus.core.toolkit.Constants;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.apache.ibatis.annotations.Param;
+import org.dromara.eims.domain.EimsInspectSt;
+import org.dromara.eims.domain.EimsMaintSt;
+import org.dromara.eims.domain.vo.EimsInspectStVo;
+import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
+import org.dromara.eims.domain.vo.EimsMaintStVo;
+
+/**
+ * 鐐规姹囨�籑apper鎺ュ彛
+ *
+ * @author zhuguifei
+ * @date 2025-03-14
+ */
+public interface EimsInspectStMapper extends BaseMapperPlus<EimsInspectSt, EimsInspectStVo> {
+    Page<EimsInspectStVo> selectInspStList(@Param("page") Page<EimsInspectStVo> page, @Param(Constants.WRAPPER) Wrapper<EimsInspectSt> queryWrapper);
+
+}
diff --git a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/mapper/EimsMaintOrderStMapper.java b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/mapper/EimsMaintOrderStMapper.java
deleted file mode 100644
index 0ea0b0f..0000000
--- a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/mapper/EimsMaintOrderStMapper.java
+++ /dev/null
@@ -1,15 +0,0 @@
-package org.dromara.eims.mapper;
-
-import org.dromara.eims.domain.EimsMaintOrderSt;
-import org.dromara.eims.domain.vo.EimsMaintOrderStVo;
-import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
-
-/**
- * 淇濆吇宸ュ崟姹囨�籑apper鎺ュ彛
- *
- * @author zhuguifei
- * @date 2025-03-12
- */
-public interface EimsMaintOrderStMapper extends BaseMapperPlus<EimsMaintOrderSt, EimsMaintOrderStVo> {
-
-}
diff --git a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/mapper/EimsMaintStMapper.java b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/mapper/EimsMaintStMapper.java
new file mode 100644
index 0000000..ce34b03
--- /dev/null
+++ b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/mapper/EimsMaintStMapper.java
@@ -0,0 +1,20 @@
+package org.dromara.eims.mapper;
+
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
+import com.baomidou.mybatisplus.core.toolkit.Constants;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.apache.ibatis.annotations.Param;
+import org.dromara.eims.domain.EimsMaintSt;
+import org.dromara.eims.domain.vo.EimsMaintStVo;
+import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
+
+/**
+ * 淇濆吇宸ュ崟姹囨�籑apper鎺ュ彛
+ *
+ * @author zhuguifei
+ * @date 2025-03-12
+ */
+public interface EimsMaintStMapper extends BaseMapperPlus<EimsMaintSt, EimsMaintStVo> {
+
+    Page<EimsMaintStVo> selectMaintStList(@Param("page") Page<EimsMaintStVo> page, @Param(Constants.WRAPPER) Wrapper<EimsMaintSt> queryWrapper);
+}
diff --git a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/IEimsInspectPlanService.java b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/IEimsInspectPlanService.java
new file mode 100644
index 0000000..9334744
--- /dev/null
+++ b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/IEimsInspectPlanService.java
@@ -0,0 +1,78 @@
+package org.dromara.eims.service;
+
+import org.dromara.eims.domain.vo.EimsInspectPlanVo;
+import org.dromara.eims.domain.bo.EimsInspectPlanBo;
+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 zhuguifei
+ * @date 2025-03-12
+ */
+public interface IEimsInspectPlanService {
+
+    /**
+     * 鏌ヨ鐐规璁″垝
+     *
+     * @param id 涓婚敭
+     * @return 鐐规璁″垝
+     */
+    EimsInspectPlanVo queryById(Long id);
+
+    /**
+     * 鍒嗛〉鏌ヨ鐐规璁″垝鍒楄〃
+     *
+     * @param bo        鏌ヨ鏉′欢
+     * @param pageQuery 鍒嗛〉鍙傛暟
+     * @return 鐐规璁″垝鍒嗛〉鍒楄〃
+     */
+    TableDataInfo<EimsInspectPlanVo> queryPageList(EimsInspectPlanBo bo, PageQuery pageQuery);
+
+    /**
+     * 鏌ヨ绗﹀悎鏉′欢鐨勭偣妫�璁″垝鍒楄〃
+     *
+     * @param bo 鏌ヨ鏉′欢
+     * @return 鐐规璁″垝鍒楄〃
+     */
+    List<EimsInspectPlanVo> queryList(EimsInspectPlanBo bo);
+
+    /**
+     * 鏂板鐐规璁″垝
+     *
+     * @param bo 鐐规璁″垝
+     * @return 鏄惁鏂板鎴愬姛
+     */
+    Boolean insertByBo(EimsInspectPlanBo bo);
+
+    /**
+     * 淇敼鐐规璁″垝
+     *
+     * @param bo 鐐规璁″垝
+     * @return 鏄惁淇敼鎴愬姛
+     */
+    Boolean updateByBo(EimsInspectPlanBo bo);
+
+    /**
+     * 鏍¢獙骞舵壒閲忓垹闄ょ偣妫�璁″垝淇℃伅
+     *
+     * @param ids     寰呭垹闄ょ殑涓婚敭闆嗗悎
+     * @param isValid 鏄惁杩涜鏈夋晥鎬ф牎楠�
+     * @return 鏄惁鍒犻櫎鎴愬姛
+     */
+    Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
+
+    /**
+     * 鍒嗛〉鏌ヨ鐐规璁″垝鍒楄〃-澶氳〃鏌ヨ
+     *
+     * @param bo        鏌ヨ鏉′欢
+     * @param pageQuery 鍒嗛〉鍙傛暟
+     * @return 鐐规璁″垝鍒嗛〉鍒楄〃
+     */
+    TableDataInfo<EimsInspectPlanVo> queryPageListCustom(EimsInspectPlanBo bo, PageQuery pageQuery);
+
+}
diff --git a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/IEimsInspectRecordService.java b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/IEimsInspectRecordService.java
new file mode 100644
index 0000000..3de61b3
--- /dev/null
+++ b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/IEimsInspectRecordService.java
@@ -0,0 +1,77 @@
+package org.dromara.eims.service;
+
+import org.dromara.eims.domain.vo.EimsInspectRecordVo;
+import org.dromara.eims.domain.bo.EimsInspectRecordBo;
+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 zhuguifei
+ * @date 2025-03-13
+ */
+public interface IEimsInspectRecordService {
+
+    /**
+     * 鏌ヨ鐐规璁板綍
+     *
+     * @param id 涓婚敭
+     * @return 鐐规璁板綍
+     */
+    EimsInspectRecordVo queryById(Long id);
+
+    /**
+     * 鍒嗛〉鏌ヨ鐐规璁板綍鍒楄〃
+     *
+     * @param bo        鏌ヨ鏉′欢
+     * @param pageQuery 鍒嗛〉鍙傛暟
+     * @return 鐐规璁板綍鍒嗛〉鍒楄〃
+     */
+    TableDataInfo<EimsInspectRecordVo> queryPageList(EimsInspectRecordBo bo, PageQuery pageQuery);
+
+    /**
+     * 鏌ヨ绗﹀悎鏉′欢鐨勭偣妫�璁板綍鍒楄〃
+     *
+     * @param bo 鏌ヨ鏉′欢
+     * @return 鐐规璁板綍鍒楄〃
+     */
+    List<EimsInspectRecordVo> queryList(EimsInspectRecordBo bo);
+
+    /**
+     * 鏂板鐐规璁板綍
+     *
+     * @param bo 鐐规璁板綍
+     * @return 鏄惁鏂板鎴愬姛
+     */
+    Boolean insertByBo(EimsInspectRecordBo bo);
+
+    /**
+     * 淇敼鐐规璁板綍
+     *
+     * @param bo 鐐规璁板綍
+     * @return 鏄惁淇敼鎴愬姛
+     */
+    Boolean updateByBo(EimsInspectRecordBo bo);
+
+    /**
+     * 鏍¢獙骞舵壒閲忓垹闄ょ偣妫�璁板綍淇℃伅
+     *
+     * @param ids     寰呭垹闄ょ殑涓婚敭闆嗗悎
+     * @param isValid 鏄惁杩涜鏈夋晥鎬ф牎楠�
+     * @return 鏄惁鍒犻櫎鎴愬姛
+     */
+    Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
+
+    /**
+     * 鍒嗛〉鏌ヨ鐐规璁板綍鍒楄〃-澶氳〃鏌ヨ
+     *
+     * @param bo        鏌ヨ鏉′欢
+     * @param pageQuery 鍒嗛〉鍙傛暟
+     * @return 鐐规璁板綍鍒嗛〉鍒楄〃
+     */
+    TableDataInfo<EimsInspectRecordVo> queryPageListCustom(EimsInspectRecordBo bo, PageQuery pageQuery);
+}
diff --git a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/IEimsInspectStService.java b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/IEimsInspectStService.java
new file mode 100644
index 0000000..3136c47
--- /dev/null
+++ b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/IEimsInspectStService.java
@@ -0,0 +1,68 @@
+package org.dromara.eims.service;
+
+import org.dromara.eims.domain.vo.EimsInspectStVo;
+import org.dromara.eims.domain.bo.EimsInspectStBo;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.common.mybatis.core.page.PageQuery;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 鐐规姹囨�籗ervice鎺ュ彛
+ *
+ * @author zhuguifei
+ * @date 2025-03-14
+ */
+public interface IEimsInspectStService {
+
+    /**
+     * 鏌ヨ鐐规姹囨��
+     *
+     * @param id 涓婚敭
+     * @return 鐐规姹囨��
+     */
+    EimsInspectStVo queryById(Long id);
+
+    /**
+     * 鍒嗛〉鏌ヨ鐐规姹囨�诲垪琛�
+     *
+     * @param bo        鏌ヨ鏉′欢
+     * @param pageQuery 鍒嗛〉鍙傛暟
+     * @return 鐐规姹囨�诲垎椤靛垪琛�
+     */
+    TableDataInfo<EimsInspectStVo> queryPageList(EimsInspectStBo bo, PageQuery pageQuery);
+
+    /**
+     * 鏌ヨ绗﹀悎鏉′欢鐨勭偣妫�姹囨�诲垪琛�
+     *
+     * @param bo 鏌ヨ鏉′欢
+     * @return 鐐规姹囨�诲垪琛�
+     */
+    List<EimsInspectStVo> queryList(EimsInspectStBo bo);
+
+    /**
+     * 鏂板鐐规姹囨��
+     *
+     * @param bo 鐐规姹囨��
+     * @return 鏄惁鏂板鎴愬姛
+     */
+    Boolean insertByBo(EimsInspectStBo bo);
+
+    /**
+     * 淇敼鐐规姹囨��
+     *
+     * @param bo 鐐规姹囨��
+     * @return 鏄惁淇敼鎴愬姛
+     */
+    Boolean updateByBo(EimsInspectStBo bo);
+
+    /**
+     * 鏍¢獙骞舵壒閲忓垹闄ょ偣妫�姹囨�讳俊鎭�
+     *
+     * @param ids     寰呭垹闄ょ殑涓婚敭闆嗗悎
+     * @param isValid 鏄惁杩涜鏈夋晥鎬ф牎楠�
+     * @return 鏄惁鍒犻櫎鎴愬姛
+     */
+    Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
+}
diff --git a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/IEimsMaintOrderStService.java b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/IEimsMaintStService.java
similarity index 74%
rename from eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/IEimsMaintOrderStService.java
rename to eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/IEimsMaintStService.java
index f0bd81f..dd0525f 100644
--- a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/IEimsMaintOrderStService.java
+++ b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/IEimsMaintStService.java
@@ -1,8 +1,8 @@
 package org.dromara.eims.service;
 
 import org.dromara.common.core.domain.R;
-import org.dromara.eims.domain.vo.EimsMaintOrderStVo;
-import org.dromara.eims.domain.bo.EimsMaintOrderStBo;
+import org.dromara.eims.domain.bo.EimsMaintStBo;
+import org.dromara.eims.domain.vo.EimsMaintStVo;
 import org.dromara.common.mybatis.core.page.TableDataInfo;
 import org.dromara.common.mybatis.core.page.PageQuery;
 
@@ -15,7 +15,7 @@
  * @author zhuguifei
  * @date 2025-03-12
  */
-public interface IEimsMaintOrderStService {
+public interface IEimsMaintStService {
 
     /**
      * 鏌ヨ淇濆吇宸ュ崟姹囨��
@@ -23,7 +23,7 @@
      * @param id 涓婚敭
      * @return 淇濆吇宸ュ崟姹囨��
      */
-    EimsMaintOrderStVo queryById(Long id);
+    EimsMaintStVo queryById(Long id);
 
     /**
      * 鍒嗛〉鏌ヨ淇濆吇宸ュ崟姹囨�诲垪琛�
@@ -32,7 +32,7 @@
      * @param pageQuery 鍒嗛〉鍙傛暟
      * @return 淇濆吇宸ュ崟姹囨�诲垎椤靛垪琛�
      */
-    TableDataInfo<EimsMaintOrderStVo> queryPageList(EimsMaintOrderStBo bo, PageQuery pageQuery);
+    TableDataInfo<EimsMaintStVo> queryPageList(EimsMaintStBo bo, PageQuery pageQuery);
 
     /**
      * 鏌ヨ绗﹀悎鏉′欢鐨勪繚鍏诲伐鍗曟眹鎬诲垪琛�
@@ -40,7 +40,7 @@
      * @param bo 鏌ヨ鏉′欢
      * @return 淇濆吇宸ュ崟姹囨�诲垪琛�
      */
-    List<EimsMaintOrderStVo> queryList(EimsMaintOrderStBo bo);
+    List<EimsMaintStVo> queryList(EimsMaintStBo bo);
 
     /**
      * 鏂板淇濆吇宸ュ崟姹囨��
@@ -48,7 +48,7 @@
      * @param bo 淇濆吇宸ュ崟姹囨��
      * @return 鏄惁鏂板鎴愬姛
      */
-    Boolean insertByBo(EimsMaintOrderStBo bo);
+    Boolean insertByBo(EimsMaintStBo bo);
 
     /**
      * 淇敼淇濆吇宸ュ崟姹囨��
@@ -56,7 +56,7 @@
      * @param bo 淇濆吇宸ュ崟姹囨��
      * @return 鏄惁淇敼鎴愬姛
      */
-    Boolean updateByBo(EimsMaintOrderStBo bo);
+    Boolean updateByBo(EimsMaintStBo bo);
 
     /**
      * 鏍¢獙骞舵壒閲忓垹闄や繚鍏诲伐鍗曟眹鎬讳俊鎭�
diff --git a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/impl/EimsInspectPlanServiceImpl.java b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/impl/EimsInspectPlanServiceImpl.java
new file mode 100644
index 0000000..865f6de
--- /dev/null
+++ b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/impl/EimsInspectPlanServiceImpl.java
@@ -0,0 +1,200 @@
+package org.dromara.eims.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import org.dromara.common.core.utils.MapstructUtils;
+import org.dromara.common.core.utils.StringUtils;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import lombok.RequiredArgsConstructor;
+import org.dromara.eims.domain.vo.EimsMaintPlanVo;
+import org.dromara.system.domain.SysDept;
+import org.dromara.system.domain.vo.SysDeptVo;
+import org.dromara.system.mapper.SysDeptMapper;
+import org.springframework.stereotype.Service;
+import org.dromara.eims.domain.bo.EimsInspectPlanBo;
+import org.dromara.eims.domain.vo.EimsInspectPlanVo;
+import org.dromara.eims.domain.EimsInspectPlan;
+import org.dromara.eims.mapper.EimsInspectPlanMapper;
+import org.dromara.eims.service.IEimsInspectPlanService;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.Collection;
+
+/**
+ * 鐐规璁″垝Service涓氬姟灞傚鐞�
+ *
+ * @author zhuguifei
+ * @date 2025-03-12
+ */
+@RequiredArgsConstructor
+@Service
+public class EimsInspectPlanServiceImpl implements IEimsInspectPlanService {
+
+    private final EimsInspectPlanMapper baseMapper;
+    private final SysDeptMapper sysDeptMapper;
+
+
+    /**
+     * 鏌ヨ鐐规璁″垝
+     *
+     * @param id 涓婚敭
+     * @return 鐐规璁″垝
+     */
+    @Override
+    public EimsInspectPlanVo queryById(Long id){
+        return baseMapper.selectVoById(id);
+    }
+
+    /**
+     * 鍒嗛〉鏌ヨ鐐规璁″垝鍒楄〃
+     *
+     * @param bo        鏌ヨ鏉′欢
+     * @param pageQuery 鍒嗛〉鍙傛暟
+     * @return 鐐规璁″垝鍒嗛〉鍒楄〃
+     */
+    @Override
+    public TableDataInfo<EimsInspectPlanVo> queryPageList(EimsInspectPlanBo bo, PageQuery pageQuery) {
+        LambdaQueryWrapper<EimsInspectPlan> lqw = buildQueryWrapper(bo);
+        Page<EimsInspectPlanVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
+        return TableDataInfo.build(result);
+    }
+
+    @Override
+    public TableDataInfo<EimsInspectPlanVo> queryPageListCustom(EimsInspectPlanBo bo, PageQuery pageQuery) {
+        Page<EimsInspectPlanVo> page = baseMapper.selectInspPlanList(pageQuery.build(), buildWrapper(bo));
+        return TableDataInfo.build(page);
+    }
+
+    /**
+     * 鏌ヨ绗﹀悎鏉′欢鐨勭偣妫�璁″垝鍒楄〃
+     *
+     * @param bo 鏌ヨ鏉′欢
+     * @return 鐐规璁″垝鍒楄〃
+     */
+    @Override
+    public List<EimsInspectPlanVo> queryList(EimsInspectPlanBo bo) {
+        LambdaQueryWrapper<EimsInspectPlan> lqw = buildQueryWrapper(bo);
+        return baseMapper.selectVoList(lqw);
+    }
+
+    private LambdaQueryWrapper<EimsInspectPlan> buildQueryWrapper(EimsInspectPlanBo bo) {
+        Map<String, Object> params = bo.getParams();
+        LambdaQueryWrapper<EimsInspectPlan> lqw = Wrappers.lambdaQuery();
+        lqw.eq(bo.getEquId() != null, EimsInspectPlan::getEquId, bo.getEquId());
+        lqw.eq(StringUtils.isNotBlank(bo.getInspType()), EimsInspectPlan::getInspType, bo.getInspType());
+        lqw.like(StringUtils.isNotBlank(bo.getInspName()), EimsInspectPlan::getInspName, bo.getInspName());
+        lqw.eq(bo.getInspNo() != null, EimsInspectPlan::getInspNo, bo.getInspNo());
+        lqw.eq(bo.getInspCycle() != null, EimsInspectPlan::getInspCycle, bo.getInspCycle());
+        lqw.eq(StringUtils.isNotBlank(bo.getInspCycleUnit()), EimsInspectPlan::getInspCycleUnit, bo.getInspCycleUnit());
+        lqw.eq(StringUtils.isNotBlank(bo.getInspRule()), EimsInspectPlan::getInspRule, bo.getInspRule());
+        lqw.eq(bo.getInspUser() != null, EimsInspectPlan::getInspUser, bo.getInspUser());
+        lqw.eq(bo.getInspDept() != null, EimsInspectPlan::getInspDept, bo.getInspDept());
+        lqw.eq(StringUtils.isNotBlank(bo.getStatus()), EimsInspectPlan::getStatus, bo.getStatus());
+        return lqw;
+    }
+    private QueryWrapper<EimsInspectPlan> buildWrapper(EimsInspectPlanBo bo) {
+        Map<String, Object> params = bo.getParams();
+        QueryWrapper<EimsInspectPlan> qw = Wrappers.query();
+        qw.eq(bo.getEquId() != null, "ip.equ_id", bo.getEquId());
+        qw.like(bo.getEquName() != null, "equ.equ_name", bo.getEquName());
+        qw.like(bo.getAssetNo() != null, "equ.asset_no", bo.getAssetNo());
+        qw.eq(StringUtils.isNotBlank(bo.getInspType()), "ip.insp_type", bo.getInspType());
+        qw.eq(StringUtils.isNotBlank(bo.getInspCycleUnit()), "ip.insp_cycle_unit", bo.getInspCycleUnit());
+        qw.eq(StringUtils.isNotBlank(bo.getInspRule()), "ip.insp_rule", bo.getInspRule());
+        qw.eq(bo.getInspUser() != null, "ip.insp_user", bo.getInspUser());
+        qw.in(bo.getInspDept() != null, "ip.insp_dept", getAllDescendantIds(bo.getInspDept()));
+        qw.eq(bo.getStatus() != null, "ip.status", bo.getStatus());
+        qw.between(params.get("beginPlanTime") != null && params.get("endPlanTime") != null,
+            "a.plam_time", params.get("beginPlanTime"), params.get("endPlanTime"));
+        qw.orderByDesc("ip.create_time");
+
+        return qw;
+    }
+
+    /**
+     * 鏍规嵁id锛岃幏鍙栨墍鏈夊悗浠d
+     *
+     * @param rootId
+     * @return
+     */
+    public List<Long> getAllDescendantIds(Long rootId) {
+        List<Long> result = new ArrayList<>();
+        result.add(rootId);
+        collectDescendants(rootId, result);
+        return result;
+    }
+
+    private void collectDescendants(Long currentId, List<Long> collector) {
+        QueryWrapper<SysDept> sysDeptWrapper = new QueryWrapper<>();
+        sysDeptWrapper.lambda().eq(SysDept::getParentId, currentId);
+
+        List<SysDeptVo> children = sysDeptMapper.selectVoList(sysDeptWrapper);
+        if (children != null && !children.isEmpty()) {
+            for (SysDeptVo child : children) {
+                Long childId = child.getDeptId();
+                collector.add(childId);
+                collectDescendants(childId, collector);
+            }
+        }
+    }
+
+
+    /**
+     * 鏂板鐐规璁″垝
+     *
+     * @param bo 鐐规璁″垝
+     * @return 鏄惁鏂板鎴愬姛
+     */
+    @Override
+    public Boolean insertByBo(EimsInspectPlanBo bo) {
+        EimsInspectPlan add = MapstructUtils.convert(bo, EimsInspectPlan.class);
+        validEntityBeforeSave(add);
+        boolean flag = baseMapper.insert(add) > 0;
+        if (flag) {
+            bo.setId(add.getId());
+        }
+        return flag;
+    }
+
+    /**
+     * 淇敼鐐规璁″垝
+     *
+     * @param bo 鐐规璁″垝
+     * @return 鏄惁淇敼鎴愬姛
+     */
+    @Override
+    public Boolean updateByBo(EimsInspectPlanBo bo) {
+        EimsInspectPlan update = MapstructUtils.convert(bo, EimsInspectPlan.class);
+        validEntityBeforeSave(update);
+        return baseMapper.updateById(update) > 0;
+    }
+
+    /**
+     * 淇濆瓨鍓嶇殑鏁版嵁鏍¢獙
+     */
+    private void validEntityBeforeSave(EimsInspectPlan entity){
+        //TODO 鍋氫竴浜涙暟鎹牎楠�,濡傚敮涓�绾︽潫
+    }
+
+    /**
+     * 鏍¢獙骞舵壒閲忓垹闄ょ偣妫�璁″垝淇℃伅
+     *
+     * @param ids     寰呭垹闄ょ殑涓婚敭闆嗗悎
+     * @param isValid 鏄惁杩涜鏈夋晥鎬ф牎楠�
+     * @return 鏄惁鍒犻櫎鎴愬姛
+     */
+    @Override
+    public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
+        if(isValid){
+            //TODO 鍋氫竴浜涗笟鍔′笂鐨勬牎楠�,鍒ゆ柇鏄惁闇�瑕佹牎楠�
+        }
+        return baseMapper.deleteByIds(ids) > 0;
+    }
+
+
+}
diff --git a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/impl/EimsInspectRecordServiceImpl.java b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/impl/EimsInspectRecordServiceImpl.java
new file mode 100644
index 0000000..4901462
--- /dev/null
+++ b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/impl/EimsInspectRecordServiceImpl.java
@@ -0,0 +1,255 @@
+package org.dromara.eims.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import lombok.SneakyThrows;
+import org.dromara.common.core.utils.DateUtils;
+import org.dromara.common.core.utils.MapstructUtils;
+import org.dromara.common.core.utils.StringUtils;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import lombok.RequiredArgsConstructor;
+import org.dromara.eims.domain.EimsInspectPlan;
+import org.dromara.eims.domain.EimsMaintPlan;
+import org.dromara.eims.domain.vo.EimsMaintOrderVo;
+import org.dromara.eims.mapper.EimsInspectPlanMapper;
+import org.dromara.eims.mapper.EimsMaintPlanMapper;
+import org.dromara.system.domain.SysDept;
+import org.dromara.system.domain.vo.SysDeptVo;
+import org.dromara.system.mapper.SysDeptMapper;
+import org.springframework.stereotype.Service;
+import org.dromara.eims.domain.bo.EimsInspectRecordBo;
+import org.dromara.eims.domain.vo.EimsInspectRecordVo;
+import org.dromara.eims.domain.EimsInspectRecord;
+import org.dromara.eims.mapper.EimsInspectRecordMapper;
+import org.dromara.eims.service.IEimsInspectRecordService;
+
+import java.util.*;
+
+/**
+ * 鐐规璁板綍Service涓氬姟灞傚鐞�
+ *
+ * @author zhuguifei
+ * @date 2025-03-13
+ */
+@RequiredArgsConstructor
+@Service
+public class EimsInspectRecordServiceImpl implements IEimsInspectRecordService {
+
+    private final EimsInspectRecordMapper baseMapper;
+    private final SysDeptMapper sysDeptMapper;
+    private final EimsInspectPlanMapper planMapper;
+
+    /**
+     * 鏌ヨ鐐规璁板綍
+     *
+     * @param id 涓婚敭
+     * @return 鐐规璁板綍
+     */
+    @Override
+    public EimsInspectRecordVo queryById(Long id){
+        return baseMapper.selectVoById(id);
+    }
+
+    /**
+     * 鍒嗛〉鏌ヨ鐐规璁板綍鍒楄〃
+     *
+     * @param bo        鏌ヨ鏉′欢
+     * @param pageQuery 鍒嗛〉鍙傛暟
+     * @return 鐐规璁板綍鍒嗛〉鍒楄〃
+     */
+    @Override
+    public TableDataInfo<EimsInspectRecordVo> queryPageList(EimsInspectRecordBo bo, PageQuery pageQuery) {
+        LambdaQueryWrapper<EimsInspectRecord> lqw = buildQueryWrapper(bo);
+        Page<EimsInspectRecordVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
+        return TableDataInfo.build(result);
+    }
+
+    @Override
+    public TableDataInfo<EimsInspectRecordVo> queryPageListCustom(EimsInspectRecordBo bo, PageQuery pageQuery) {
+        Page<EimsInspectRecordVo> page = baseMapper.selectInspRecordList(pageQuery.build(), buildWrapper(bo));
+        return TableDataInfo.build(page);
+    }
+
+    /**
+     * 鏌ヨ绗﹀悎鏉′欢鐨勭偣妫�璁板綍鍒楄〃
+     *
+     * @param bo 鏌ヨ鏉′欢
+     * @return 鐐规璁板綍鍒楄〃
+     */
+    @Override
+    public List<EimsInspectRecordVo> queryList(EimsInspectRecordBo bo) {
+        LambdaQueryWrapper<EimsInspectRecord> lqw = buildQueryWrapper(bo);
+        return baseMapper.selectVoList(lqw);
+    }
+
+    private LambdaQueryWrapper<EimsInspectRecord> buildQueryWrapper(EimsInspectRecordBo bo) {
+        Map<String, Object> params = bo.getParams();
+        LambdaQueryWrapper<EimsInspectRecord> lqw = Wrappers.lambdaQuery();
+        lqw.eq(bo.getEquId() != null, EimsInspectRecord::getEquId, bo.getEquId());
+        lqw.like(StringUtils.isNotBlank(bo.getInspName()), EimsInspectRecord::getInspName, bo.getInspName());
+        lqw.eq(StringUtils.isNotBlank(bo.getStatus()), EimsInspectRecord::getStatus, bo.getStatus());
+        lqw.eq(StringUtils.isNotBlank(bo.getInspCode()), EimsInspectRecord::getInspCode, bo.getInspCode());
+        lqw.eq(StringUtils.isNotBlank(bo.getInspResult()), EimsInspectRecord::getInspResult, bo.getInspResult());
+        lqw.eq(bo.getInspTime() != null, EimsInspectRecord::getInspTime, bo.getInspTime());
+        lqw.eq(bo.getPlanTime() != null, EimsInspectRecord::getPlanTime, bo.getPlanTime());
+        lqw.eq(bo.getVerifyUser() != null, EimsInspectRecord::getVerifyUser, bo.getVerifyUser());
+        return lqw;
+    }
+
+    private QueryWrapper<EimsInspectRecord> buildWrapper(EimsInspectRecordBo bo) {
+        Map<String, Object> params = bo.getParams();
+        QueryWrapper<EimsInspectRecord> qw = Wrappers.query();
+        qw.like(StringUtils.isNotBlank(bo.getInspCode()),"ir.insp_code", bo.getInspCode());
+        qw.like(StringUtils.isNotBlank(bo.getInspName()),"ir.insp_name", bo.getInspName());
+        qw.like(bo.getEquName() != null, "equ.equ_name", bo.getEquName());
+        qw.like(bo.getAssetNo() != null, "equ.asset_no", bo.getAssetNo());
+        qw.like(bo.getEquId() != null, "equ.equ_id", bo.getEquId());
+        qw.eq(StringUtils.isNotBlank(bo.getInspType()), "ir.insp_type", bo.getInspType());
+        qw.eq(bo.getInspUser() != null, "ir.insp_user", bo.getInspUser());
+        qw.in(bo.getInspDept() != null, "ir.insp_dept", getAllDescendantIds(bo.getInspDept()));
+        qw.eq(bo.getStatus() != null, "ir.status", bo.getStatus());
+        qw.eq(bo.getInspResult() != null, "ir.insp_result", bo.getInspResult());
+        qw.eq(bo.getPlanTime()!=null,
+            "ir.plan_time", bo.getPlanTime());
+        qw.orderByDesc("ir.create_time");
+        return qw;
+    }
+
+
+    /**
+     * 鏍规嵁id锛岃幏鍙栨墍鏈夊悗浠d
+     *
+     * @param rootId
+     * @return
+     */
+    public List<Long> getAllDescendantIds(Long rootId) {
+        List<Long> result = new ArrayList<>();
+        result.add(rootId);
+        collectDescendants(rootId, result);
+        return result;
+    }
+
+    private void collectDescendants(Long currentId, List<Long> collector) {
+        QueryWrapper<SysDept> sysDeptWrapper = new QueryWrapper<>();
+        sysDeptWrapper.lambda().eq(SysDept::getParentId, currentId);
+
+        List<SysDeptVo> children = sysDeptMapper.selectVoList(sysDeptWrapper);
+        if (children != null && !children.isEmpty()) {
+            for (SysDeptVo child : children) {
+                Long childId = child.getDeptId();
+                collector.add(childId);
+                collectDescendants(childId, collector);
+            }
+        }
+    }
+
+
+    /**
+     * 鏂板鐐规璁板綍
+     *
+     * @param bo 鐐规璁板綍
+     * @return 鏄惁鏂板鎴愬姛
+     */
+    @Override
+    public Boolean insertByBo(EimsInspectRecordBo bo) {
+        EimsInspectRecord add = MapstructUtils.convert(bo, EimsInspectRecord.class);
+
+        //閫氳繃淇濆吇璁″垝鐢熸垚鐨勬暟鎹渶瑕佹洿鏂颁繚鍏昏鍒�
+        Long planId = bo.getPlanId();
+        if(planId!=null){
+            EimsInspectPlan plan = planMapper.selectById(planId);
+            setInspNextTime(plan);
+            planMapper.updateById(plan);
+        }
+
+
+        validEntityBeforeSave(add);
+        boolean flag = baseMapper.insert(add) > 0;
+        if (flag) {
+            bo.setId(add.getId());
+        }
+        return flag;
+    }
+    /**
+     * 璁$畻鐐规璁″垝涓嬫鎵ц鏃堕棿
+     */
+    @SneakyThrows
+    private void setInspNextTime(EimsInspectPlan bo) {
+        Date oldNext = bo.getInspNextTime();
+        //TODO 涓嬫鐐规鏃堕棿璁$畻瑙勫垯 0-鎸夊浐瀹氬懆鏈�  1-鎸変笂娆′繚鍏绘椂闂�
+        Date newNext = null;
+
+        //涓嬫娆℃墽琛屾椂闂翠负绌烘姏鍑哄紓甯�
+        if (oldNext == null) {
+            throw new Exception("涓嬫鐐规鏃堕棿涓嶈兘涓虹┖!");
+        }
+        //鍛ㄦ湡
+        Long maintCycle = bo.getInspCycle();
+        //鍗曚綅 1-澶� 2-鍛� 3-鏈� 4-瀛� 5-骞�
+        String maintCycleUnit = bo.getInspCycleUnit();
+        switch (maintCycleUnit) {
+            case "1":
+                newNext = DateUtils.addDays(oldNext, maintCycle.intValue());
+                break;
+            case "2":
+                newNext = DateUtils.addWeeks(oldNext, maintCycle.intValue());
+                break;
+            case "3":
+                newNext = DateUtils.addMonths(oldNext, maintCycle.intValue());
+                break;
+            case "4":
+                newNext = DateUtils.addMonths(oldNext, maintCycle.intValue() * 3);
+                break;
+            case "5":
+                newNext = DateUtils.addYears(oldNext, maintCycle.intValue());
+                break;
+
+        }
+        bo.setInspNextTime(newNext);
+        if(bo.getInspFirstTime()==null){
+            bo.setInspFirstTime(oldNext);
+        }
+        bo.setInspLastTime(oldNext);
+
+
+    }
+    /**
+     * 淇敼鐐规璁板綍
+     *
+     * @param bo 鐐规璁板綍
+     * @return 鏄惁淇敼鎴愬姛
+     */
+    @Override
+    public Boolean updateByBo(EimsInspectRecordBo bo) {
+        EimsInspectRecord update = MapstructUtils.convert(bo, EimsInspectRecord.class);
+        validEntityBeforeSave(update);
+        return baseMapper.updateById(update) > 0;
+    }
+
+    /**
+     * 淇濆瓨鍓嶇殑鏁版嵁鏍¢獙
+     */
+    private void validEntityBeforeSave(EimsInspectRecord entity){
+        //TODO 鍋氫竴浜涙暟鎹牎楠�,濡傚敮涓�绾︽潫
+    }
+
+    /**
+     * 鏍¢獙骞舵壒閲忓垹闄ょ偣妫�璁板綍淇℃伅
+     *
+     * @param ids     寰呭垹闄ょ殑涓婚敭闆嗗悎
+     * @param isValid 鏄惁杩涜鏈夋晥鎬ф牎楠�
+     * @return 鏄惁鍒犻櫎鎴愬姛
+     */
+    @Override
+    public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
+        if(isValid){
+            //TODO 鍋氫竴浜涗笟鍔′笂鐨勬牎楠�,鍒ゆ柇鏄惁闇�瑕佹牎楠�
+        }
+        return baseMapper.deleteByIds(ids) > 0;
+    }
+
+
+}
diff --git a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/impl/EimsInspectStServiceImpl.java b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/impl/EimsInspectStServiceImpl.java
new file mode 100644
index 0000000..f938a05
--- /dev/null
+++ b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/impl/EimsInspectStServiceImpl.java
@@ -0,0 +1,204 @@
+package org.dromara.eims.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import org.dromara.common.core.constant.DictConstants;
+import org.dromara.common.core.utils.MapstructUtils;
+import org.dromara.common.core.utils.StringUtils;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import lombok.RequiredArgsConstructor;
+import org.dromara.eims.domain.EimsInspectRecord;
+import org.dromara.eims.domain.vo.EimsInspectRecordVo;
+import org.dromara.eims.mapper.EimsInspectRecordMapper;
+import org.springframework.stereotype.Service;
+import org.dromara.eims.domain.bo.EimsInspectStBo;
+import org.dromara.eims.domain.vo.EimsInspectStVo;
+import org.dromara.eims.domain.EimsInspectSt;
+import org.dromara.eims.mapper.EimsInspectStMapper;
+import org.dromara.eims.service.IEimsInspectStService;
+
+import java.time.LocalDate;
+import java.time.ZoneId;
+import java.time.temporal.TemporalAdjusters;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+import java.util.Collection;
+import java.util.stream.Collectors;
+
+/**
+ * 鐐规姹囨�籗ervice涓氬姟灞傚鐞�
+ *
+ * @author zhuguifei
+ * @date 2025-03-14
+ */
+@RequiredArgsConstructor
+@Service
+public class EimsInspectStServiceImpl implements IEimsInspectStService {
+
+    private final EimsInspectStMapper baseMapper;
+    private final EimsInspectRecordMapper recordMapper;
+
+    /**
+     * 鏌ヨ鐐规姹囨��
+     *
+     * @param id 涓婚敭
+     * @return 鐐规姹囨��
+     */
+    @Override
+    public EimsInspectStVo queryById(Long id){
+        return baseMapper.selectVoById(id);
+    }
+
+    /**
+     * 鍒嗛〉鏌ヨ鐐规姹囨�诲垪琛�
+     *
+     * @param bo        鏌ヨ鏉′欢
+     * @param pageQuery 鍒嗛〉鍙傛暟
+     * @return 鐐规姹囨�诲垎椤靛垪琛�
+     */
+    @Override
+    public TableDataInfo<EimsInspectStVo> queryPageList(EimsInspectStBo bo, PageQuery pageQuery) {
+        QueryWrapper<EimsInspectSt> lqw = buildWrapper(bo);
+        Page<EimsInspectStVo> result = baseMapper.selectInspStList(pageQuery.build(), lqw);
+        // 濉厖鏁版嵁
+        fillStData(result);
+        return TableDataInfo.build(result);
+    }
+
+    private void fillStData(Page<EimsInspectStVo> result) {
+        List<EimsInspectStVo> records = result.getRecords();
+        for (int i = 0; i < records.size(); i++) {
+            EimsInspectStVo stVo = records.get(i);
+
+            //2.缁熻鏁版嵁
+            LambdaQueryWrapper<EimsInspectRecord> recordLqw = Wrappers.lambdaQuery();
+            recordLqw.eq(EimsInspectRecord::getEquId, stVo.getEquId());
+            LocalDate planTime = stVo.getPlanTime().toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
+            LocalDate startOfMonth = planTime.with(TemporalAdjusters.firstDayOfMonth());
+            LocalDate endOfMonth = planTime.with(TemporalAdjusters.lastDayOfMonth());
+            recordLqw.between(EimsInspectRecord::getPlanTime, startOfMonth, endOfMonth);
+            // 鎵ц鏌ヨ
+            List<EimsInspectRecordVo> recordList = recordMapper.selectVoList(recordLqw);
+            // TODO 鏍规嵁瀛楀吀eims_inspect_status
+            Map<String, Long> cMap = recordList.stream()
+                .filter(order -> List.of("0", "1").contains(order.getStatus()))
+                .collect(Collectors.groupingBy(EimsInspectRecordVo::getStatus, Collectors.counting()));
+            // TODO 鏍规嵁瀛楀吀eims_inspect_result
+            Map<String, Long> rMap = recordList.stream()
+                .filter(order ->order.getInspResult()!=null && List.of("1", "2").contains(order.getInspResult()))
+                .collect(Collectors.groupingBy(EimsInspectRecordVo::getStatus, Collectors.counting()));
+
+            stVo.setRecordCount(recordList.size());
+            stVo.setUnCheckCount(cMap.getOrDefault("0", 0L).intValue());
+            stVo.setCheckCount(cMap.getOrDefault("1", 0L).intValue());
+
+            stVo.setNormalNum(rMap.getOrDefault("1", 0L).intValue());
+            stVo.setAbNormalNum(rMap.getOrDefault("2", 0L).intValue());
+
+        }
+
+    }
+
+    /**
+     * 鏌ヨ绗﹀悎鏉′欢鐨勭偣妫�姹囨�诲垪琛�
+     *
+     * @param bo 鏌ヨ鏉′欢
+     * @return 鐐规姹囨�诲垪琛�
+     */
+    @Override
+    public List<EimsInspectStVo> queryList(EimsInspectStBo bo) {
+        LambdaQueryWrapper<EimsInspectSt> lqw = buildQueryWrapper(bo);
+        return baseMapper.selectVoList(lqw);
+    }
+
+    private LambdaQueryWrapper<EimsInspectSt> buildQueryWrapper(EimsInspectStBo bo) {
+        Map<String, Object> params = bo.getParams();
+        LambdaQueryWrapper<EimsInspectSt> lqw = Wrappers.lambdaQuery();
+        lqw.eq(bo.getEquId() != null, EimsInspectSt::getEquId, bo.getEquId());
+        lqw.eq(bo.getPlanTime() != null, EimsInspectSt::getPlanTime, bo.getPlanTime());
+        lqw.eq(StringUtils.isNotBlank(bo.getStatus()), EimsInspectSt::getStatus, bo.getStatus());
+        lqw.eq(bo.getInspUser() != null, EimsInspectSt::getInspUser, bo.getInspUser());
+        lqw.eq(bo.getVerifyUser() != null, EimsInspectSt::getVerifyUser, bo.getVerifyUser());
+        lqw.eq(bo.getVerifyTime() != null, EimsInspectSt::getVerifyTime, bo.getVerifyTime());
+        return lqw;
+    }
+    private QueryWrapper<EimsInspectSt> buildWrapper(EimsInspectStBo bo) {
+        Map<String, Object> params = bo.getParams();
+        QueryWrapper<EimsInspectSt> qw = Wrappers.query();
+        qw.like(StringUtils.isNotBlank(bo.getTitle()), "st.title", bo.getTitle());
+        qw.like(StringUtils.isNotBlank(bo.getEquName()), "equ.equ_name", bo.getEquName());
+        qw.like(StringUtils.isNotBlank(bo.getAssetNo()), "equ.asset_no", bo.getAssetNo());
+        qw.between(params.get("beginPlanTime") != null && params.get("endPlanTime") != null,
+            "st.plan_time", params.get("beginPlanTime"), params.get("endPlanTime"));
+        qw.eq(bo.getInspUser() != null, "st.maint_user", bo.getInspUser());
+        qw.eq(bo.getVerifyUser() != null, "st.verify_user", bo.getVerifyUser());
+        qw.eq(bo.getStatus() != null, "st.status", bo.getStatus());
+        qw.orderByDesc( "st.create_time");
+        return qw;
+    }
+
+    /**
+     * 鏂板鐐规姹囨��
+     *
+     * @param bo 鐐规姹囨��
+     * @return 鏄惁鏂板鎴愬姛
+     */
+    @Override
+    public Boolean insertByBo(EimsInspectStBo bo) {
+        EimsInspectSt add = MapstructUtils.convert(bo, EimsInspectSt.class);
+        validEntityBeforeSave(add);
+        boolean flag = baseMapper.insert(add) > 0;
+        if (flag) {
+            bo.setId(add.getId());
+        }
+        return flag;
+    }
+
+    /**
+     * 淇敼鐐规姹囨��
+     *
+     * @param bo 鐐规姹囨��
+     * @return 鏄惁淇敼鎴愬姛
+     */
+    @Override
+    public Boolean updateByBo(EimsInspectStBo bo) {
+        EimsInspectSt update = MapstructUtils.convert(bo, EimsInspectSt.class);
+
+        if(bo.getVerifyUser()!=null){
+            EimsInspectSt st = baseMapper.selectById(bo.getId());
+            String status = st.getStatus();
+            if(status==null  || status.equals(DictConstants.MAINT_ORDER_ST_STATUS_DETAIL.N)){
+                if(update.getVerifyTime()==null) update.setStatus(DictConstants.MAINT_ORDER_ST_STATUS_DETAIL.Y);
+                if(update.getVerifyTime()==null) update.setVerifyTime(new Date());
+            }
+        }
+        validEntityBeforeSave(update);
+        return baseMapper.updateById(update) > 0;
+    }
+
+    /**
+     * 淇濆瓨鍓嶇殑鏁版嵁鏍¢獙
+     */
+    private void validEntityBeforeSave(EimsInspectSt entity){
+        //TODO 鍋氫竴浜涙暟鎹牎楠�,濡傚敮涓�绾︽潫
+    }
+
+    /**
+     * 鏍¢獙骞舵壒閲忓垹闄ょ偣妫�姹囨�讳俊鎭�
+     *
+     * @param ids     寰呭垹闄ょ殑涓婚敭闆嗗悎
+     * @param isValid 鏄惁杩涜鏈夋晥鎬ф牎楠�
+     * @return 鏄惁鍒犻櫎鎴愬姛
+     */
+    @Override
+    public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
+        if(isValid){
+            //TODO 鍋氫竴浜涗笟鍔′笂鐨勬牎楠�,鍒ゆ柇鏄惁闇�瑕佹牎楠�
+        }
+        return baseMapper.deleteByIds(ids) > 0;
+    }
+}
diff --git a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/impl/EimsMaintOrderServiceImpl.java b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/impl/EimsMaintOrderServiceImpl.java
index 529c96b..4b23e57 100644
--- a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/impl/EimsMaintOrderServiceImpl.java
+++ b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/impl/EimsMaintOrderServiceImpl.java
@@ -112,6 +112,8 @@
         qw.eq(bo.getStatus() != null, "mo.status", bo.getStatus());
         qw.eq(bo.getPlanTime()!=null,
             "mo.plan_time", bo.getPlanTime());
+        qw.between(params.get("beginPlanTime") != null && params.get("endPlanTime") != null,
+            "mo.plan_time", params.get("beginPlanTime"), params.get("endPlanTime"));
         qw.orderByDesc("mo.create_time");
         return qw;
     }
diff --git a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/impl/EimsMaintOrderStServiceImpl.java b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/impl/EimsMaintStServiceImpl.java
similarity index 68%
rename from eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/impl/EimsMaintOrderStServiceImpl.java
rename to eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/impl/EimsMaintStServiceImpl.java
index ea64041..78f55ad 100644
--- a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/impl/EimsMaintOrderStServiceImpl.java
+++ b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/impl/EimsMaintStServiceImpl.java
@@ -1,9 +1,9 @@
 package org.dromara.eims.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import lombok.SneakyThrows;
 import org.dromara.common.core.constant.DictConstants;
 import org.dromara.common.core.domain.R;
-import org.dromara.common.core.domain.model.LoginUser;
 import org.dromara.common.core.utils.MapstructUtils;
 import org.dromara.common.core.utils.StringUtils;
 import org.dromara.common.mybatis.core.page.TableDataInfo;
@@ -12,18 +12,17 @@
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import lombok.RequiredArgsConstructor;
-import org.dromara.common.satoken.utils.LoginHelper;
 import org.dromara.eims.domain.EimsEqu;
 import org.dromara.eims.domain.EimsMaintOrder;
+import org.dromara.eims.domain.EimsMaintSt;
+import org.dromara.eims.domain.bo.EimsMaintStBo;
 import org.dromara.eims.domain.vo.EimsMaintOrderVo;
+import org.dromara.eims.domain.vo.EimsMaintStVo;
 import org.dromara.eims.mapper.EimsEquMapper;
 import org.dromara.eims.mapper.EimsMaintOrderMapper;
 import org.springframework.stereotype.Service;
-import org.dromara.eims.domain.bo.EimsMaintOrderStBo;
-import org.dromara.eims.domain.vo.EimsMaintOrderStVo;
-import org.dromara.eims.domain.EimsMaintOrderSt;
-import org.dromara.eims.mapper.EimsMaintOrderStMapper;
-import org.dromara.eims.service.IEimsMaintOrderStService;
+import org.dromara.eims.mapper.EimsMaintStMapper;
+import org.dromara.eims.service.IEimsMaintStService;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.time.LocalDate;
@@ -44,9 +43,9 @@
  */
 @RequiredArgsConstructor
 @Service
-public class EimsMaintOrderStServiceImpl implements IEimsMaintOrderStService {
+public class EimsMaintStServiceImpl implements IEimsMaintStService {
 
-    private final EimsMaintOrderStMapper baseMapper;
+    private final EimsMaintStMapper baseMapper;
     private final EimsEquMapper equMapper;
     private final EimsMaintOrderMapper orderMapper;
 
@@ -57,7 +56,7 @@
      * @return 淇濆吇宸ュ崟姹囨��
      */
     @Override
-    public EimsMaintOrderStVo queryById(Long id) {
+    public EimsMaintStVo queryById(Long id) {
         return baseMapper.selectVoById(id);
     }
 
@@ -69,18 +68,17 @@
      * @return 淇濆吇宸ュ崟姹囨�诲垎椤靛垪琛�
      */
     @Override
-    public TableDataInfo<EimsMaintOrderStVo> queryPageList(EimsMaintOrderStBo bo, PageQuery pageQuery) {
-        LambdaQueryWrapper<EimsMaintOrderSt> lqw = buildQueryWrapper(bo);
-        Page<EimsMaintOrderStVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
+    public TableDataInfo<EimsMaintStVo> queryPageList(EimsMaintStBo bo, PageQuery pageQuery) {
+        Page<EimsMaintStVo> result = baseMapper.selectMaintStList(pageQuery.build(), buildWrapper(bo));
         // 濉厖鏁版嵁
         fillStData(result);
         return TableDataInfo.build(result);
     }
 
-    private void fillStData(Page<EimsMaintOrderStVo> result) {
-        List<EimsMaintOrderStVo> records = result.getRecords();
+    private void fillStData(Page<EimsMaintStVo> result) {
+        List<EimsMaintStVo> records = result.getRecords();
         for (int i = 0; i < records.size(); i++) {
-            EimsMaintOrderStVo stVo = records.get(i);
+            EimsMaintStVo stVo = records.get(i);
             //1.濉厖璁惧
             EimsEqu eimsEqu = equMapper.selectById(stVo.getEquId());
             stVo.setAssetNo(eimsEqu.getAssetNo());
@@ -88,7 +86,6 @@
             LambdaQueryWrapper<EimsMaintOrder> orderLqw = Wrappers.lambdaQuery();
             orderLqw.eq(EimsMaintOrder::getEquId, stVo.getEquId());
             LocalDate planTime = stVo.getPlanTime().toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
-            ;
             LocalDate startOfMonth = planTime.with(TemporalAdjusters.firstDayOfMonth());
             LocalDate endOfMonth = planTime.with(TemporalAdjusters.lastDayOfMonth());
             orderLqw.between(EimsMaintOrder::getPlanTime, startOfMonth, endOfMonth);
@@ -115,20 +112,35 @@
      * @return 淇濆吇宸ュ崟姹囨�诲垪琛�
      */
     @Override
-    public List<EimsMaintOrderStVo> queryList(EimsMaintOrderStBo bo) {
-        LambdaQueryWrapper<EimsMaintOrderSt> lqw = buildQueryWrapper(bo);
+    public List<EimsMaintStVo> queryList(EimsMaintStBo bo) {
+        LambdaQueryWrapper<EimsMaintSt> lqw = buildQueryWrapper(bo);
         return baseMapper.selectVoList(lqw);
     }
 
-    private LambdaQueryWrapper<EimsMaintOrderSt> buildQueryWrapper(EimsMaintOrderStBo bo) {
+    private LambdaQueryWrapper<EimsMaintSt> buildQueryWrapper(EimsMaintStBo bo) {
         Map<String, Object> params = bo.getParams();
-        LambdaQueryWrapper<EimsMaintOrderSt> lqw = Wrappers.lambdaQuery();
-        lqw.eq(StringUtils.isNotBlank(bo.getTitle()), EimsMaintOrderSt::getTitle, bo.getTitle());
-        lqw.eq(StringUtils.isNotBlank(bo.getEquId()), EimsMaintOrderSt::getEquId, bo.getEquId());
-        lqw.eq(bo.getPlanTime() != null, EimsMaintOrderSt::getPlanTime, bo.getPlanTime());
-        lqw.eq(bo.getMaintUser() != null, EimsMaintOrderSt::getMaintUser, bo.getMaintUser());
-        lqw.eq(bo.getVerifyUser() != null, EimsMaintOrderSt::getVerifyUser, bo.getVerifyUser());
+        LambdaQueryWrapper<EimsMaintSt> lqw = Wrappers.lambdaQuery();
+        lqw.eq(StringUtils.isNotBlank(bo.getTitle()), EimsMaintSt::getTitle, bo.getTitle());
+        lqw.eq(bo.getPlanTime() != null, EimsMaintSt::getPlanTime, bo.getPlanTime());
+        lqw.eq(bo.getMaintUser() != null, EimsMaintSt::getMaintUser, bo.getMaintUser());
+        lqw.eq(bo.getVerifyUser() != null, EimsMaintSt::getVerifyUser, bo.getVerifyUser());
         return lqw;
+    }
+
+
+    private QueryWrapper<EimsMaintSt> buildWrapper(EimsMaintStBo bo) {
+        Map<String, Object> params = bo.getParams();
+        QueryWrapper<EimsMaintSt> qw =  Wrappers.query();
+        qw.like(StringUtils.isNotBlank(bo.getTitle()), "st.title", bo.getTitle());
+        qw.like(StringUtils.isNotBlank(bo.getEquName()), "equ.equ_name", bo.getEquName());
+        qw.like(StringUtils.isNotBlank(bo.getAssetNo()), "equ.asset_no", bo.getAssetNo());
+        qw.between(params.get("beginPlanTime") != null && params.get("endPlanTime") != null,
+            "st.plan_time", params.get("beginPlanTime"), params.get("endPlanTime"));
+        qw.eq(bo.getMaintUser() != null, "st.maint_user", bo.getMaintUser());
+        qw.eq(bo.getVerifyUser() != null, "st.verify_user", bo.getVerifyUser());
+        qw.eq(bo.getStatus() != null, "st.status", bo.getStatus());
+        qw.orderByDesc( "st.create_time");
+        return qw;
     }
 
     /**
@@ -138,8 +150,8 @@
      * @return 鏄惁鏂板鎴愬姛
      */
     @Override
-    public Boolean insertByBo(EimsMaintOrderStBo bo) {
-        EimsMaintOrderSt add = MapstructUtils.convert(bo, EimsMaintOrderSt.class);
+    public Boolean insertByBo(EimsMaintStBo bo) {
+        EimsMaintSt add = MapstructUtils.convert(bo, EimsMaintSt.class);
         validEntityBeforeSave(add);
         boolean flag = baseMapper.insert(add) > 0;
         if (flag) {
@@ -155,12 +167,12 @@
      * @return 鏄惁淇敼鎴愬姛
      */
     @Override
-    public Boolean updateByBo(EimsMaintOrderStBo bo) {
-        EimsMaintOrderSt update = MapstructUtils.convert(bo, EimsMaintOrderSt.class);
+    public Boolean updateByBo(EimsMaintStBo bo) {
+        EimsMaintSt update = MapstructUtils.convert(bo, EimsMaintSt.class);
 
         if(bo.getVerifyUser()!=null){
-            EimsMaintOrderSt eimsMaintOrderSt = baseMapper.selectById(bo.getId());
-            String status = eimsMaintOrderSt.getStatus();
+            EimsMaintSt eimsMaintSt = baseMapper.selectById(bo.getId());
+            String status = eimsMaintSt.getStatus();
             if(status==null  || status.equals(DictConstants.MAINT_ORDER_ST_STATUS_DETAIL.N)){
                 if(update.getVerifyTime()==null) update.setStatus(DictConstants.MAINT_ORDER_ST_STATUS_DETAIL.Y);
                 if(update.getVerifyTime()==null) update.setVerifyTime(new Date());
@@ -174,7 +186,7 @@
     /**
      * 淇濆瓨鍓嶇殑鏁版嵁鏍¢獙
      */
-    private void validEntityBeforeSave(EimsMaintOrderSt entity) {
+    private void validEntityBeforeSave(EimsMaintSt entity) {
         //TODO 鍋氫竴浜涙暟鎹牎楠�,濡傚敮涓�绾︽潫
     }
 
@@ -194,7 +206,7 @@
         }
         AtomicBoolean flag = new AtomicBoolean(false);
         ids.stream().anyMatch(id -> {
-            EimsMaintOrderStVo stVo = baseMapper.selectVoById(id);
+            EimsMaintStVo stVo = baseMapper.selectVoById(id);
             LocalDate planTime = stVo.getPlanTime().toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
             LocalDate startOfMonth = planTime.with(TemporalAdjusters.firstDayOfMonth());
             LocalDate endOfMonth = planTime.with(TemporalAdjusters.lastDayOfMonth());
diff --git a/eims/ruoyi-modules/lb-eims/src/main/resources/mapper/eims/EimsInspectPlanMapper.xml b/eims/ruoyi-modules/lb-eims/src/main/resources/mapper/eims/EimsInspectPlanMapper.xml
new file mode 100644
index 0000000..dda9e29
--- /dev/null
+++ b/eims/ruoyi-modules/lb-eims/src/main/resources/mapper/eims/EimsInspectPlanMapper.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.dromara.eims.mapper.EimsInspectPlanMapper">
+    <resultMap type="org.dromara.eims.domain.vo.EimsInspectPlanVo" id="EimsInspectPlanResult">
+    </resultMap>
+    <select id="selectInspPlanList" resultMap="EimsInspectPlanResult">
+        SELECT ip.*,equ.equ_name equName,equ.equ_code equCode,equ.asset_no assetNo,equ.model_no modelNo,
+               us.nick_name inspUserName,dp.dept_name inspDeptName,
+               CONCAT_WS('', ip.insp_cycle, dd.dict_label) inspCycleUnitName
+        FROM eims_inspect_plan ip
+                 LEFT JOIN eims_equ equ ON ip.equ_id = equ.equ_id
+                 LEFT JOIN sys_user us ON ip.insp_user = us.user_id
+                 LEFT JOIN sys_dept dp ON ip.insp_dept = dp.dept_id
+                 LEFT JOIN sys_dict_data dd on dd.dict_type = 'maint_cycle_unit' and dd.dict_value = ip.insp_cycle_unit
+            ${ew.getCustomSqlSegment}
+    </select>
+</mapper>
diff --git a/eims/ruoyi-modules/lb-eims/src/main/resources/mapper/eims/EimsInspectRecordMapper.xml b/eims/ruoyi-modules/lb-eims/src/main/resources/mapper/eims/EimsInspectRecordMapper.xml
new file mode 100644
index 0000000..db8135f
--- /dev/null
+++ b/eims/ruoyi-modules/lb-eims/src/main/resources/mapper/eims/EimsInspectRecordMapper.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.dromara.eims.mapper.EimsInspectRecordMapper">
+
+    <resultMap type="org.dromara.eims.domain.vo.EimsInspectRecordVo" id="EimsInspRecordVoResult">
+    </resultMap>
+    <select id="selectInspRecordList" resultMap="EimsInspRecordVoResult">
+        SELECT ir.*,equ.equ_name equName,equ.equ_code equCode,equ.asset_no assetNo,equ.model_no modelNo,ir.create_time createTime,
+               us.nick_name inspUserName,dp.dept_name inspDeptName,ue.nick_name verifyUserName
+        FROM eims_inspect_record ir
+                 LEFT JOIN eims_equ equ ON ir.equ_id = equ.equ_id
+                 LEFT JOIN sys_user us ON ir.insp_user = us.user_id
+                 LEFT JOIN sys_user ue ON ir.verify_user = ue.user_id
+                 LEFT JOIN sys_dept dp ON ir.insp_dept = dp.dept_id
+            ${ew.getCustomSqlSegment}
+    </select>
+
+</mapper>
diff --git a/eims/ruoyi-modules/lb-eims/src/main/resources/mapper/eims/EimsInspectStMapper.xml b/eims/ruoyi-modules/lb-eims/src/main/resources/mapper/eims/EimsInspectStMapper.xml
new file mode 100644
index 0000000..d3ccccc
--- /dev/null
+++ b/eims/ruoyi-modules/lb-eims/src/main/resources/mapper/eims/EimsInspectStMapper.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.dromara.eims.mapper.EimsInspectStMapper">
+    <resultMap type="org.dromara.eims.domain.vo.EimsInspectStVo" id="MaintInspStVoResult">
+    </resultMap>
+    <select id="selectInspStList" resultMap="MaintInspStVoResult">
+        SELECT st.*,equ.equ_name equName,equ.asset_no assetNo FROM eims_inspect_st st
+                                             LEFT JOIN eims_equ equ on st.equ_id = equ.equ_id
+            ${ew.getCustomSqlSegment}
+    </select>
+
+</mapper>
diff --git a/eims/ruoyi-modules/lb-eims/src/main/resources/mapper/eims/EimsMaintOrderStMapper.xml b/eims/ruoyi-modules/lb-eims/src/main/resources/mapper/eims/EimsMaintOrderStMapper.xml
deleted file mode 100644
index 892a6b6..0000000
--- a/eims/ruoyi-modules/lb-eims/src/main/resources/mapper/eims/EimsMaintOrderStMapper.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<!DOCTYPE mapper
-PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
-"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="org.dromara.eims.mapper.EimsMaintOrderStMapper">
-
-</mapper>
diff --git a/eims/ruoyi-modules/lb-eims/src/main/resources/mapper/eims/EimsMaintStMapper.xml b/eims/ruoyi-modules/lb-eims/src/main/resources/mapper/eims/EimsMaintStMapper.xml
new file mode 100644
index 0000000..a668837
--- /dev/null
+++ b/eims/ruoyi-modules/lb-eims/src/main/resources/mapper/eims/EimsMaintStMapper.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.dromara.eims.mapper.EimsMaintStMapper">
+    <resultMap type="org.dromara.eims.domain.vo.EimsMaintStVo" id="MaintMaintStVoResult">
+    </resultMap>
+    <select id="selectMaintStList" resultMap="MaintMaintStVoResult">
+        SELECT st.*,equ.equ_name equName,equ.asset_no assetNo FROM eims_maint_st st
+            LEFT JOIN eims_equ equ on st.equ_id = equ.equ_id
+            ${ew.getCustomSqlSegment}
+    </select>
+</mapper>

--
Gitblit v1.9.3