From d719e5b4a7b0ef6d16d1d9150759d24893dd508b Mon Sep 17 00:00:00 2001
From: Joshi <3040996759@qq.com>
Date: Tue, 19 Aug 2025 17:24:45 +0800
Subject: [PATCH 1/4] =?UTF-8?q?refactor(domain):=20=E8=AE=A9=20WmsStockIoV?=
=?UTF-8?q?o=20=E7=BB=A7=E6=89=BF=20BaseEntity-=20=E5=9C=A8=20WmsStockIoVo?=
=?UTF-8?q?=20=E7=B1=BB=E4=B8=AD=E6=B7=BB=E5=8A=A0=E5=AF=B9=20BaseEntity?=
=?UTF-8?q?=20=E7=9A=84=E7=BB=A7=E6=89=BF=20-=20=E8=BF=99=E4=B8=AA?=
=?UTF-8?q?=E6=94=B9=E5=8A=A8=E5=8F=AF=E8=83=BD=E4=B8=BA=E4=BA=86=E8=AE=A9?=
=?UTF-8?q?=20WmsStockIoVo=20=E8=83=BD=E5=A4=9F=E4=BD=BF=E7=94=A8=20BaseEn?=
=?UTF-8?q?tity=20=E4=B8=AD=E7=9A=84=E9=80=9A=E7=94=A8=E6=96=B9=E6=B3=95?=
=?UTF-8?q?=E5=92=8C=E5=B1=9E=E6=80=A7?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
klp-wms/src/main/java/com/klp/domain/vo/WmsStockIoVo.java | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/klp-wms/src/main/java/com/klp/domain/vo/WmsStockIoVo.java b/klp-wms/src/main/java/com/klp/domain/vo/WmsStockIoVo.java
index 7e74e3ec..0ce81e64 100644
--- a/klp-wms/src/main/java/com/klp/domain/vo/WmsStockIoVo.java
+++ b/klp-wms/src/main/java/com/klp/domain/vo/WmsStockIoVo.java
@@ -4,6 +4,7 @@ import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import com.klp.common.annotation.ExcelDictFormat;
import com.klp.common.convert.ExcelDictConvert;
+import com.klp.common.core.domain.BaseEntity;
import lombok.Data;
@@ -15,7 +16,7 @@ import lombok.Data;
*/
@Data
@ExcelIgnoreUnannotated
-public class WmsStockIoVo {
+public class WmsStockIoVo extends BaseEntity {
private static final long serialVersionUID = 1L;
From c24dc4ee14b59141f248ad1461b31937beb07acc Mon Sep 17 00:00:00 2001
From: hdka <823267011@qq.com>
Date: Wed, 20 Aug 2025 14:41:17 +0800
Subject: [PATCH 2/4] 1
---
klp-ui/src/permission.js | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/klp-ui/src/permission.js b/klp-ui/src/permission.js
index 609d2159..fbd242ce 100644
--- a/klp-ui/src/permission.js
+++ b/klp-ui/src/permission.js
@@ -44,7 +44,12 @@ router.beforeEach((to, from, next) => {
if (whiteList.indexOf(to.path) !== -1) {
// 在免登录白名单,直接进入
next()
- } else {
+ }
+ else if (to.path.startsWith('/l2-api')) {
+ next()
+ }
+
+ else {
next(`/login?redirect=${to.fullPath}`) // 否则全部重定向到登录页
NProgress.done()
}
From dcea36210249aaa4c85a4a36153ebda9e774ccd0 Mon Sep 17 00:00:00 2001
From: Joshi <3040996759@qq.com>
Date: Thu, 21 Aug 2025 10:10:41 +0800
Subject: [PATCH 3/4] =?UTF-8?q?feat(mes):=20=E6=B7=BB=E5=8A=A0=E7=89=B9?=
=?UTF-8?q?=E7=A7=8D=E8=AE=BE=E5=A4=87=E7=AE=A1=E7=90=86=E5=8A=9F=E8=83=BD?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
- 新增特种设备管理相关的数据库表结构
- 实现特种设备管理的 API 接口
- 开发特种设备管理的前端页面,包括列表查询、详情查看、新增、修改和删除功能
---
.../resources/db/migration/V3__newSql.sql | 31 ++
klp-ui/src/api/mes/dv/specialEquipment.js | 44 ++
.../dv/specialEquipment/specialEquipment.vue | 477 ++++++++++++++++++
3 files changed, 552 insertions(+)
create mode 100644 klp-ui/src/api/mes/dv/specialEquipment.js
create mode 100644 klp-ui/src/views/mes/dv/specialEquipment/specialEquipment.vue
diff --git a/klp-admin/src/main/resources/db/migration/V3__newSql.sql b/klp-admin/src/main/resources/db/migration/V3__newSql.sql
index e69de29b..e2e17ec7 100644
--- a/klp-admin/src/main/resources/db/migration/V3__newSql.sql
+++ b/klp-admin/src/main/resources/db/migration/V3__newSql.sql
@@ -0,0 +1,31 @@
+-- auto-generated definition
+CREATE TABLE dv_special_equipment
+(
+ equipment_id BIGINT NOT NULL COMMENT '设备ID'
+ PRIMARY KEY,
+ equipment_code VARCHAR(64) NOT NULL COMMENT '设备编码',
+ equipment_name VARCHAR(255) NOT NULL COMMENT '设备名称(如:锅炉、压力容器、压力管道、电梯、起重机械等)',
+ specification_model VARCHAR(255) NULL COMMENT '规格型号',
+ manufacturer VARCHAR(255) NULL COMMENT '制造单位',
+ production_date DATE NULL COMMENT '制造日期',
+ installation_date DATE NULL COMMENT '安装日期',
+ use_start_date DATE NULL COMMENT '投入使用日期',
+ registration_no VARCHAR(64) NULL COMMENT '特种设备注册编号',
+ safety_manager VARCHAR(64) NULL COMMENT '安全负责人',
+ attachment TEXT NULL COMMENT '附件路径(多个附件用逗号分隔)',
+ inspection_cycle INT NOT NULL COMMENT '检验周期(月)',
+ last_inspection_time DATETIME NULL COMMENT '上次检验时间',
+ next_inspection_time DATETIME NULL COMMENT '下次检验时间',
+ current_status VARCHAR(32) NULL COMMENT '当前状态(在用、停用、报废等)',
+ remark VARCHAR(500) DEFAULT '' NULL COMMENT '备注',
+ del_flag tinyint(1) default 0 not null comment '删除标志(0=正常,1=已删除)',
+ create_by VARCHAR(64) DEFAULT '' NULL COMMENT '创建者',
+ create_time DATETIME NULL COMMENT '创建时间',
+ update_by VARCHAR(64) DEFAULT '' NULL COMMENT '更新者',
+ update_time DATETIME NULL COMMENT '更新时间',
+ INDEX idx_equipment_code (equipment_code),
+ INDEX idx_equipment_type (equipment_name),
+ INDEX idx_next_inspection (next_inspection_time),
+ INDEX idx_safety_manager (safety_manager)
+)
+ COMMENT '特种设备表(包含锅炉、压力管道、电梯等特种设备信息)' CHARSET = utf8mb4;
diff --git a/klp-ui/src/api/mes/dv/specialEquipment.js b/klp-ui/src/api/mes/dv/specialEquipment.js
new file mode 100644
index 00000000..7dec9d45
--- /dev/null
+++ b/klp-ui/src/api/mes/dv/specialEquipment.js
@@ -0,0 +1,44 @@
+import request from '@/utils/request'
+
+// 查询特种设备(包含锅炉、压力管道、电梯等特种设备信息)列表
+export function listSpecialEquipment(query) {
+ return request({
+ url: '/mes/specialEquipment/list',
+ method: 'get',
+ params: query
+ })
+}
+
+// 查询特种设备(包含锅炉、压力管道、电梯等特种设备信息)详细
+export function getSpecialEquipment(equipmentId) {
+ return request({
+ url: '/mes/specialEquipment/' + equipmentId,
+ method: 'get'
+ })
+}
+
+// 新增特种设备(包含锅炉、压力管道、电梯等特种设备信息)
+export function addSpecialEquipment(data) {
+ return request({
+ url: '/mes/specialEquipment',
+ method: 'post',
+ data: data
+ })
+}
+
+// 修改特种设备(包含锅炉、压力管道、电梯等特种设备信息)
+export function updateSpecialEquipment(data) {
+ return request({
+ url: '/mes/specialEquipment',
+ method: 'put',
+ data: data
+ })
+}
+
+// 删除特种设备(包含锅炉、压力管道、电梯等特种设备信息)
+export function delSpecialEquipment(equipmentId) {
+ return request({
+ url: '/mes/specialEquipment/' + equipmentId,
+ method: 'delete'
+ })
+}
diff --git a/klp-ui/src/views/mes/dv/specialEquipment/specialEquipment.vue b/klp-ui/src/views/mes/dv/specialEquipment/specialEquipment.vue
new file mode 100644
index 00000000..64d22944
--- /dev/null
+++ b/klp-ui/src/views/mes/dv/specialEquipment/specialEquipment.vue
@@ -0,0 +1,477 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 搜索
+ 重置
+
+
+
+
+
+ 新增
+
+
+ 修改
+
+
+ 删除
+
+
+ 导出
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ parseTime(scope.row.productionDate, '{y}-{m}-{d}') }}
+
+
+
+
+ {{ parseTime(scope.row.installationDate, '{y}-{m}-{d}') }}
+
+
+
+
+ {{ parseTime(scope.row.useStartDate, '{y}-{m}-{d}') }}
+
+
+
+
+
+
+
+
+ {{ parseTime(scope.row.lastInspectionTime, '{y}-{m}-{d}') }}
+
+
+
+
+ {{ parseTime(scope.row.nextInspectionTime, '{y}-{m}-{d}') }}
+
+
+
+
+
+
+
+
+
+
+ 修改
+ 删除
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{dict.label}}
+
+
+
+
+
+
+
+
+
+
+
+
From 2bcc11f81c5ea95a3c75eee45a8868ffaeb7fadc Mon Sep 17 00:00:00 2001
From: JR <3573153686@qq.com>
Date: Thu, 21 Aug 2025 11:08:50 +0800
Subject: [PATCH 4/4] =?UTF-8?q?feat(mes):=20=E6=B7=BB=E5=8A=A0=E7=89=B9?=
=?UTF-8?q?=E7=A7=8D=E8=AE=BE=E5=A4=87=E7=AE=A1=E7=90=86=E5=8A=9F=E8=83=BD?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
- 新增特种设备管理相关的数据模型、控制器、服务接口和实现类
- 开发了特种设备的查询、添加、修改和删除功能
- 优化了用户界面,调整了部分字段的显示和输入方式
---
.../DvSpecialEquipmentController.java | 99 +++++++++++++
.../klp/mes/dv/domain/DvSpecialEquipment.java | 94 +++++++++++++
.../dv/domain/bo/DvSpecialEquipmentBo.java | 113 +++++++++++++++
.../dv/domain/vo/DvSpecialEquipmentVo.java | 130 ++++++++++++++++++
.../dv/mapper/DvSpecialEquipmentMapper.java | 15 ++
.../service/IDvSpecialEquipmentService.java | 48 +++++++
.../impl/DvSpecialEquipmentServiceImpl.java | 122 ++++++++++++++++
.../mapper/dv/DvSpecialEquipmentMapper.xml | 32 +++++
.../dv/specialEquipment/specialEquipment.vue | 72 +++++-----
9 files changed, 689 insertions(+), 36 deletions(-)
create mode 100644 klp-mes/src/main/java/com/klp/mes/dv/controller/DvSpecialEquipmentController.java
create mode 100644 klp-mes/src/main/java/com/klp/mes/dv/domain/DvSpecialEquipment.java
create mode 100644 klp-mes/src/main/java/com/klp/mes/dv/domain/bo/DvSpecialEquipmentBo.java
create mode 100644 klp-mes/src/main/java/com/klp/mes/dv/domain/vo/DvSpecialEquipmentVo.java
create mode 100644 klp-mes/src/main/java/com/klp/mes/dv/mapper/DvSpecialEquipmentMapper.java
create mode 100644 klp-mes/src/main/java/com/klp/mes/dv/service/IDvSpecialEquipmentService.java
create mode 100644 klp-mes/src/main/java/com/klp/mes/dv/service/impl/DvSpecialEquipmentServiceImpl.java
create mode 100644 klp-mes/src/main/resources/mapper/dv/DvSpecialEquipmentMapper.xml
diff --git a/klp-mes/src/main/java/com/klp/mes/dv/controller/DvSpecialEquipmentController.java b/klp-mes/src/main/java/com/klp/mes/dv/controller/DvSpecialEquipmentController.java
new file mode 100644
index 00000000..1c869413
--- /dev/null
+++ b/klp-mes/src/main/java/com/klp/mes/dv/controller/DvSpecialEquipmentController.java
@@ -0,0 +1,99 @@
+package com.klp.mes.dv.controller;
+
+import java.util.List;
+import java.util.Arrays;
+
+import lombok.RequiredArgsConstructor;
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.constraints.*;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.validation.annotation.Validated;
+import com.klp.common.annotation.RepeatSubmit;
+import com.klp.common.annotation.Log;
+import com.klp.common.core.controller.BaseController;
+import com.klp.common.core.domain.PageQuery;
+import com.klp.common.core.domain.R;
+import com.klp.common.core.validate.AddGroup;
+import com.klp.common.core.validate.EditGroup;
+import com.klp.common.enums.BusinessType;
+import com.klp.common.utils.poi.ExcelUtil;
+import com.klp.mes.dv.domain.vo.DvSpecialEquipmentVo;
+import com.klp.mes.dv.domain.bo.DvSpecialEquipmentBo;
+import com.klp.mes.dv.service.IDvSpecialEquipmentService;
+import com.klp.common.core.page.TableDataInfo;
+
+/**
+ * 特种设备(包含锅炉、压力管道、电梯等特种设备信息)
+ *
+ * @author klp
+ * @date 2025-08-21
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/mes/specialEquipment")
+public class DvSpecialEquipmentController extends BaseController {
+
+ private final IDvSpecialEquipmentService iDvSpecialEquipmentService;
+
+ /**
+ * 查询特种设备(包含锅炉、压力管道、电梯等特种设备信息)列表
+ */
+ @GetMapping("/list")
+ public TableDataInfo list(DvSpecialEquipmentBo bo, PageQuery pageQuery) {
+ return iDvSpecialEquipmentService.queryPageList(bo, pageQuery);
+ }
+
+ /**
+ * 导出特种设备(包含锅炉、压力管道、电梯等特种设备信息)列表
+ */
+ @Log(title = "特种设备(包含锅炉、压力管道、电梯等特种设备信息)", businessType = BusinessType.EXPORT)
+ @PostMapping("/export")
+ public void export(DvSpecialEquipmentBo bo, HttpServletResponse response) {
+ List list = iDvSpecialEquipmentService.queryList(bo);
+ ExcelUtil.exportExcel(list, "特种设备(包含锅炉、压力管道、电梯等特种设备信息)", DvSpecialEquipmentVo.class, response);
+ }
+
+ /**
+ * 获取特种设备(包含锅炉、压力管道、电梯等特种设备信息)详细信息
+ *
+ * @param equipmentId 主键
+ */
+ @GetMapping("/{equipmentId}")
+ public R getInfo(@NotNull(message = "主键不能为空")
+ @PathVariable Long equipmentId) {
+ return R.ok(iDvSpecialEquipmentService.queryById(equipmentId));
+ }
+
+ /**
+ * 新增特种设备(包含锅炉、压力管道、电梯等特种设备信息)
+ */
+ @Log(title = "特种设备(包含锅炉、压力管道、电梯等特种设备信息)", businessType = BusinessType.INSERT)
+ @RepeatSubmit()
+ @PostMapping()
+ public R add(@Validated(AddGroup.class) @RequestBody DvSpecialEquipmentBo bo) {
+ return toAjax(iDvSpecialEquipmentService.insertByBo(bo));
+ }
+
+ /**
+ * 修改特种设备(包含锅炉、压力管道、电梯等特种设备信息)
+ */
+ @Log(title = "特种设备(包含锅炉、压力管道、电梯等特种设备信息)", businessType = BusinessType.UPDATE)
+ @RepeatSubmit()
+ @PutMapping()
+ public R edit(@Validated(EditGroup.class) @RequestBody DvSpecialEquipmentBo bo) {
+ return toAjax(iDvSpecialEquipmentService.updateByBo(bo));
+ }
+
+ /**
+ * 删除特种设备(包含锅炉、压力管道、电梯等特种设备信息)
+ *
+ * @param equipmentIds 主键串
+ */
+ @Log(title = "特种设备(包含锅炉、压力管道、电梯等特种设备信息)", businessType = BusinessType.DELETE)
+ @DeleteMapping("/{equipmentIds}")
+ public R remove(@NotEmpty(message = "主键不能为空")
+ @PathVariable Long[] equipmentIds) {
+ return toAjax(iDvSpecialEquipmentService.deleteWithValidByIds(Arrays.asList(equipmentIds), true));
+ }
+}
diff --git a/klp-mes/src/main/java/com/klp/mes/dv/domain/DvSpecialEquipment.java b/klp-mes/src/main/java/com/klp/mes/dv/domain/DvSpecialEquipment.java
new file mode 100644
index 00000000..c2d8b3f2
--- /dev/null
+++ b/klp-mes/src/main/java/com/klp/mes/dv/domain/DvSpecialEquipment.java
@@ -0,0 +1,94 @@
+package com.klp.mes.dv.domain;
+
+import com.baomidou.mybatisplus.annotation.*;
+import com.klp.common.core.domain.BaseEntity;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.util.Date;
+
+/**
+ * 特种设备(包含锅炉、压力管道、电梯等特种设备信息)对象 dv_special_equipment
+ *
+ * @author klp
+ * @date 2025-08-21
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("dv_special_equipment")
+public class DvSpecialEquipment extends BaseEntity {
+
+ private static final long serialVersionUID=1L;
+
+ /**
+ * 设备ID
+ */
+ @TableId(value = "equipment_id")
+ private Long equipmentId;
+ /**
+ * 设备编码
+ */
+ private String equipmentCode;
+ /**
+ * 设备名称(如:锅炉、压力容器、压力管道、电梯、起重机械等)
+ */
+ private String equipmentName;
+ /**
+ * 规格型号
+ */
+ private String specificationModel;
+ /**
+ * 制造单位
+ */
+ private String manufacturer;
+ /**
+ * 制造日期
+ */
+ private Date productionDate;
+ /**
+ * 安装日期
+ */
+ private Date installationDate;
+ /**
+ * 投入使用日期
+ */
+ private Date useStartDate;
+ /**
+ * 特种设备注册编号
+ */
+ private String registrationNo;
+ /**
+ * 安全负责人
+ */
+ private String safetyManager;
+ /**
+ * 附件路径(多个附件用逗号分隔)
+ */
+ private String attachment;
+ /**
+ * 检验周期(月)
+ */
+ private Long inspectionCycle;
+ /**
+ * 上次检验时间
+ */
+ private Date lastInspectionTime;
+ /**
+ * 下次检验时间
+ */
+ private Date nextInspectionTime;
+ /**
+ * 当前状态(在用、停用、报废等)
+ */
+ private String currentStatus;
+ /**
+ * 备注
+ */
+ private String remark;
+ /**
+ * 删除标志(0=正常,1=已删除)
+ */
+ @TableLogic
+ private Integer delFlag;
+
+}
diff --git a/klp-mes/src/main/java/com/klp/mes/dv/domain/bo/DvSpecialEquipmentBo.java b/klp-mes/src/main/java/com/klp/mes/dv/domain/bo/DvSpecialEquipmentBo.java
new file mode 100644
index 00000000..dbdebaf2
--- /dev/null
+++ b/klp-mes/src/main/java/com/klp/mes/dv/domain/bo/DvSpecialEquipmentBo.java
@@ -0,0 +1,113 @@
+package com.klp.mes.dv.domain.bo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.klp.common.core.domain.BaseEntity;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.util.Date;
+import org.springframework.format.annotation.DateTimeFormat;
+
+/**
+ * 特种设备(包含锅炉、压力管道、电梯等特种设备信息)业务对象 dv_special_equipment
+ *
+ * @author klp
+ * @date 2025-08-21
+ */
+
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class DvSpecialEquipmentBo extends BaseEntity {
+
+ /**
+ * 设备ID
+ */
+ private Long equipmentId;
+
+ /**
+ * 设备编码
+ */
+ private String equipmentCode;
+
+ /**
+ * 设备名称(如:锅炉、压力容器、压力管道、电梯、起重机械等)
+ */
+ private String equipmentName;
+
+ /**
+ * 规格型号
+ */
+ private String specificationModel;
+
+ /**
+ * 制造单位
+ */
+ private String manufacturer;
+
+ /**
+ * 制造日期
+ */
+ @DateTimeFormat(pattern = "yyyy-MM-dd")
+ @JsonFormat(pattern = "yyyy-MM-dd")
+ private Date productionDate;
+
+ /**
+ * 安装日期
+ */
+ @DateTimeFormat(pattern = "yyyy-MM-dd")
+ @JsonFormat(pattern = "yyyy-MM-dd")
+ private Date installationDate;
+
+ /**
+ * 投入使用日期
+ */
+ @DateTimeFormat(pattern = "yyyy-MM-dd")
+ @JsonFormat(pattern = "yyyy-MM-dd")
+ private Date useStartDate;
+
+ /**
+ * 特种设备注册编号
+ */
+ private String registrationNo;
+
+ /**
+ * 安全负责人
+ */
+ private String safetyManager;
+
+ /**
+ * 附件路径(多个附件用逗号分隔)
+ */
+ private String attachment;
+
+ /**
+ * 检验周期(月)
+ */
+ private Long inspectionCycle;
+
+ /**
+ * 上次检验时间
+ */
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private Date lastInspectionTime;
+
+ /**
+ * 下次检验时间
+ */
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private Date nextInspectionTime;
+
+ /**
+ * 当前状态(在用、停用、报废等)
+ */
+ private String currentStatus;
+
+ /**
+ * 备注
+ */
+ private String remark;
+
+
+}
diff --git a/klp-mes/src/main/java/com/klp/mes/dv/domain/vo/DvSpecialEquipmentVo.java b/klp-mes/src/main/java/com/klp/mes/dv/domain/vo/DvSpecialEquipmentVo.java
new file mode 100644
index 00000000..741c1354
--- /dev/null
+++ b/klp-mes/src/main/java/com/klp/mes/dv/domain/vo/DvSpecialEquipmentVo.java
@@ -0,0 +1,130 @@
+package com.klp.mes.dv.domain.vo;
+
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.klp.common.annotation.ExcelDictFormat;
+import com.klp.common.convert.ExcelDictConvert;
+import lombok.Data;
+
+
+/**
+ * 特种设备(包含锅炉、压力管道、电梯等特种设备信息)视图对象 dv_special_equipment
+ *
+ * @author klp
+ * @date 2025-08-21
+ */
+@Data
+@ExcelIgnoreUnannotated
+public class DvSpecialEquipmentVo {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 设备ID
+ */
+ @ExcelProperty(value = "设备ID")
+ private Long equipmentId;
+
+ /**
+ * 设备编码
+ */
+ @ExcelProperty(value = "设备编码")
+ private String equipmentCode;
+
+ /**
+ * 设备名称(如:锅炉、压力容器、压力管道、电梯、起重机械等)
+ */
+ @ExcelProperty(value = "设备名称", converter = ExcelDictConvert.class)
+ @ExcelDictFormat(readConverterExp = "如=:锅炉、压力容器、压力管道、电梯、起重机械等")
+ private String equipmentName;
+
+ /**
+ * 规格型号
+ */
+ @ExcelProperty(value = "规格型号")
+ private String specificationModel;
+
+ /**
+ * 制造单位
+ */
+ @ExcelProperty(value = "制造单位")
+ private String manufacturer;
+
+ /**
+ * 制造日期
+ */
+ @ExcelProperty(value = "制造日期")
+ @JsonFormat(pattern = "yyyy-MM-dd")
+ private Date productionDate;
+
+ /**
+ * 安装日期
+ */
+ @ExcelProperty(value = "安装日期")
+ @JsonFormat(pattern = "yyyy-MM-dd")
+ private Date installationDate;
+
+ /**
+ * 投入使用日期
+ */
+ @ExcelProperty(value = "投入使用日期")
+ @JsonFormat(pattern = "yyyy-MM-dd")
+ private Date useStartDate;
+
+ /**
+ * 特种设备注册编号
+ */
+ @ExcelProperty(value = "特种设备注册编号")
+ private String registrationNo;
+
+ /**
+ * 安全负责人
+ */
+ @ExcelProperty(value = "安全负责人")
+ private String safetyManager;
+
+ /**
+ * 附件路径(多个附件用逗号分隔)
+ */
+ @ExcelProperty(value = "附件路径", converter = ExcelDictConvert.class)
+ @ExcelDictFormat(readConverterExp = "多=个附件用逗号分隔")
+ private String attachment;
+
+ /**
+ * 检验周期(月)
+ */
+ @ExcelProperty(value = "检验周期", converter = ExcelDictConvert.class)
+ @ExcelDictFormat(readConverterExp = "月=")
+ private Long inspectionCycle;
+
+ /**
+ * 上次检验时间
+ */
+ @ExcelProperty(value = "上次检验时间")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private Date lastInspectionTime;
+
+ /**
+ * 下次检验时间
+ */
+ @ExcelProperty(value = "下次检验时间")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private Date nextInspectionTime;
+
+ /**
+ * 当前状态(在用、停用、报废等)
+ */
+ @ExcelProperty(value = "当前状态", converter = ExcelDictConvert.class)
+ @ExcelDictFormat(readConverterExp = "在=用、停用、报废等")
+ private String currentStatus;
+
+ /**
+ * 备注
+ */
+ @ExcelProperty(value = "备注")
+ private String remark;
+
+
+}
diff --git a/klp-mes/src/main/java/com/klp/mes/dv/mapper/DvSpecialEquipmentMapper.java b/klp-mes/src/main/java/com/klp/mes/dv/mapper/DvSpecialEquipmentMapper.java
new file mode 100644
index 00000000..7cad98ee
--- /dev/null
+++ b/klp-mes/src/main/java/com/klp/mes/dv/mapper/DvSpecialEquipmentMapper.java
@@ -0,0 +1,15 @@
+package com.klp.mes.dv.mapper;
+
+import com.klp.mes.dv.domain.DvSpecialEquipment;
+import com.klp.mes.dv.domain.vo.DvSpecialEquipmentVo;
+import com.klp.common.core.mapper.BaseMapperPlus;
+
+/**
+ * 特种设备(包含锅炉、压力管道、电梯等特种设备信息)Mapper接口
+ *
+ * @author klp
+ * @date 2025-08-21
+ */
+public interface DvSpecialEquipmentMapper extends BaseMapperPlus {
+
+}
diff --git a/klp-mes/src/main/java/com/klp/mes/dv/service/IDvSpecialEquipmentService.java b/klp-mes/src/main/java/com/klp/mes/dv/service/IDvSpecialEquipmentService.java
new file mode 100644
index 00000000..fac70ac7
--- /dev/null
+++ b/klp-mes/src/main/java/com/klp/mes/dv/service/IDvSpecialEquipmentService.java
@@ -0,0 +1,48 @@
+package com.klp.mes.dv.service;
+
+import com.klp.mes.dv.domain.vo.DvSpecialEquipmentVo;
+import com.klp.mes.dv.domain.bo.DvSpecialEquipmentBo;
+import com.klp.common.core.page.TableDataInfo;
+import com.klp.common.core.domain.PageQuery;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 特种设备(包含锅炉、压力管道、电梯等特种设备信息)Service接口
+ *
+ * @author klp
+ * @date 2025-08-21
+ */
+public interface IDvSpecialEquipmentService {
+
+ /**
+ * 查询特种设备(包含锅炉、压力管道、电梯等特种设备信息)
+ */
+ DvSpecialEquipmentVo queryById(Long equipmentId);
+
+ /**
+ * 查询特种设备(包含锅炉、压力管道、电梯等特种设备信息)列表
+ */
+ TableDataInfo queryPageList(DvSpecialEquipmentBo bo, PageQuery pageQuery);
+
+ /**
+ * 查询特种设备(包含锅炉、压力管道、电梯等特种设备信息)列表
+ */
+ List queryList(DvSpecialEquipmentBo bo);
+
+ /**
+ * 新增特种设备(包含锅炉、压力管道、电梯等特种设备信息)
+ */
+ Boolean insertByBo(DvSpecialEquipmentBo bo);
+
+ /**
+ * 修改特种设备(包含锅炉、压力管道、电梯等特种设备信息)
+ */
+ Boolean updateByBo(DvSpecialEquipmentBo bo);
+
+ /**
+ * 校验并批量删除特种设备(包含锅炉、压力管道、电梯等特种设备信息)信息
+ */
+ Boolean deleteWithValidByIds(Collection ids, Boolean isValid);
+}
diff --git a/klp-mes/src/main/java/com/klp/mes/dv/service/impl/DvSpecialEquipmentServiceImpl.java b/klp-mes/src/main/java/com/klp/mes/dv/service/impl/DvSpecialEquipmentServiceImpl.java
new file mode 100644
index 00000000..3a7b7105
--- /dev/null
+++ b/klp-mes/src/main/java/com/klp/mes/dv/service/impl/DvSpecialEquipmentServiceImpl.java
@@ -0,0 +1,122 @@
+package com.klp.mes.dv.service.impl;
+
+import cn.hutool.core.bean.BeanUtil;
+import com.klp.common.core.page.TableDataInfo;
+import com.klp.common.core.domain.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 com.klp.common.utils.StringUtils;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+import com.klp.mes.dv.domain.bo.DvSpecialEquipmentBo;
+import com.klp.mes.dv.domain.vo.DvSpecialEquipmentVo;
+import com.klp.mes.dv.domain.DvSpecialEquipment;
+import com.klp.mes.dv.mapper.DvSpecialEquipmentMapper;
+import com.klp.mes.dv.service.IDvSpecialEquipmentService;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Collection;
+
+/**
+ * 特种设备(包含锅炉、压力管道、电梯等特种设备信息)Service业务层处理
+ *
+ * @author klp
+ * @date 2025-08-21
+ */
+@RequiredArgsConstructor
+@Service
+public class DvSpecialEquipmentServiceImpl implements IDvSpecialEquipmentService {
+
+ private final DvSpecialEquipmentMapper baseMapper;
+
+ /**
+ * 查询特种设备(包含锅炉、压力管道、电梯等特种设备信息)
+ */
+ @Override
+ public DvSpecialEquipmentVo queryById(Long equipmentId){
+ return baseMapper.selectVoById(equipmentId);
+ }
+
+ /**
+ * 查询特种设备(包含锅炉、压力管道、电梯等特种设备信息)列表
+ */
+ @Override
+ public TableDataInfo queryPageList(DvSpecialEquipmentBo bo, PageQuery pageQuery) {
+ LambdaQueryWrapper lqw = buildQueryWrapper(bo);
+ Page result = baseMapper.selectVoPage(pageQuery.build(), lqw);
+ return TableDataInfo.build(result);
+ }
+
+ /**
+ * 查询特种设备(包含锅炉、压力管道、电梯等特种设备信息)列表
+ */
+ @Override
+ public List queryList(DvSpecialEquipmentBo bo) {
+ LambdaQueryWrapper lqw = buildQueryWrapper(bo);
+ return baseMapper.selectVoList(lqw);
+ }
+
+ private LambdaQueryWrapper buildQueryWrapper(DvSpecialEquipmentBo bo) {
+ Map params = bo.getParams();
+ LambdaQueryWrapper lqw = Wrappers.lambdaQuery();
+ lqw.eq(StringUtils.isNotBlank(bo.getEquipmentCode()), DvSpecialEquipment::getEquipmentCode, bo.getEquipmentCode());
+ lqw.like(StringUtils.isNotBlank(bo.getEquipmentName()), DvSpecialEquipment::getEquipmentName, bo.getEquipmentName());
+ lqw.eq(StringUtils.isNotBlank(bo.getSpecificationModel()), DvSpecialEquipment::getSpecificationModel, bo.getSpecificationModel());
+ lqw.eq(StringUtils.isNotBlank(bo.getManufacturer()), DvSpecialEquipment::getManufacturer, bo.getManufacturer());
+ lqw.eq(bo.getProductionDate() != null, DvSpecialEquipment::getProductionDate, bo.getProductionDate());
+ lqw.eq(bo.getInstallationDate() != null, DvSpecialEquipment::getInstallationDate, bo.getInstallationDate());
+ lqw.eq(bo.getUseStartDate() != null, DvSpecialEquipment::getUseStartDate, bo.getUseStartDate());
+ lqw.eq(StringUtils.isNotBlank(bo.getRegistrationNo()), DvSpecialEquipment::getRegistrationNo, bo.getRegistrationNo());
+ lqw.eq(StringUtils.isNotBlank(bo.getSafetyManager()), DvSpecialEquipment::getSafetyManager, bo.getSafetyManager());
+ lqw.eq(StringUtils.isNotBlank(bo.getAttachment()), DvSpecialEquipment::getAttachment, bo.getAttachment());
+ lqw.eq(bo.getInspectionCycle() != null, DvSpecialEquipment::getInspectionCycle, bo.getInspectionCycle());
+ lqw.eq(bo.getLastInspectionTime() != null, DvSpecialEquipment::getLastInspectionTime, bo.getLastInspectionTime());
+ lqw.eq(bo.getNextInspectionTime() != null, DvSpecialEquipment::getNextInspectionTime, bo.getNextInspectionTime());
+ lqw.eq(StringUtils.isNotBlank(bo.getCurrentStatus()), DvSpecialEquipment::getCurrentStatus, bo.getCurrentStatus());
+ return lqw;
+ }
+
+ /**
+ * 新增特种设备(包含锅炉、压力管道、电梯等特种设备信息)
+ */
+ @Override
+ public Boolean insertByBo(DvSpecialEquipmentBo bo) {
+ DvSpecialEquipment add = BeanUtil.toBean(bo, DvSpecialEquipment.class);
+ validEntityBeforeSave(add);
+ boolean flag = baseMapper.insert(add) > 0;
+ if (flag) {
+ bo.setEquipmentId(add.getEquipmentId());
+ }
+ return flag;
+ }
+
+ /**
+ * 修改特种设备(包含锅炉、压力管道、电梯等特种设备信息)
+ */
+ @Override
+ public Boolean updateByBo(DvSpecialEquipmentBo bo) {
+ DvSpecialEquipment update = BeanUtil.toBean(bo, DvSpecialEquipment.class);
+ validEntityBeforeSave(update);
+ return baseMapper.updateById(update) > 0;
+ }
+
+ /**
+ * 保存前的数据校验
+ */
+ private void validEntityBeforeSave(DvSpecialEquipment entity){
+ //TODO 做一些数据校验,如唯一约束
+ }
+
+ /**
+ * 批量删除特种设备(包含锅炉、压力管道、电梯等特种设备信息)
+ */
+ @Override
+ public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) {
+ if(isValid){
+ //TODO 做一些业务上的校验,判断是否需要校验
+ }
+ return baseMapper.deleteBatchIds(ids) > 0;
+ }
+}
diff --git a/klp-mes/src/main/resources/mapper/dv/DvSpecialEquipmentMapper.xml b/klp-mes/src/main/resources/mapper/dv/DvSpecialEquipmentMapper.xml
new file mode 100644
index 00000000..d608582e
--- /dev/null
+++ b/klp-mes/src/main/resources/mapper/dv/DvSpecialEquipmentMapper.xml
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/klp-ui/src/views/mes/dv/specialEquipment/specialEquipment.vue b/klp-ui/src/views/mes/dv/specialEquipment/specialEquipment.vue
index 64d22944..3ce74935 100644
--- a/klp-ui/src/views/mes/dv/specialEquipment/specialEquipment.vue
+++ b/klp-ui/src/views/mes/dv/specialEquipment/specialEquipment.vue
@@ -25,15 +25,15 @@
@keyup.enter.native="handleQuery"
/>
-
+
+
-
+
+
-
+
+
{{ parseTime(scope.row.useStartDate, '{y}-{m}-{d}') }}
-
+
-
+
-
+
{{ parseTime(scope.row.lastInspectionTime, '{y}-{m}-{d}') }}
-
+
@@ -200,7 +200,7 @@
/>
-
+
@@ -217,40 +217,37 @@
-
+
-
+
-
-
-
-
-
-
-
+
+
+
+
-
+
+
+
+
{
+ this.$modal.confirm('是否确认删除特种设备编号为"' + equipmentIds + '"的数据项?').then(() => {
this.loading = true;
return delSpecialEquipment(equipmentIds);
}).then(() => {