feat(flow): 添加设备维保功能模块

- 创建维修计划主对象 EqpMaintenancePlan 及其 BO、VO、Mapper、Service 和 Controller
- 实现维修计划明细对象 EqpMaintenancePlanDetail 的完整 CRUD 操作功能
- 开发维修计划-异常记录关联对象 EqpMaintenancePlanAbnormal 的业务逻辑
- 集成分页查询、导出、新增、修改、删除等标准业务操作接口
- 配置 MyBatis-Plus 映射文件和数据校验规则
- 实现 Excel 导入导出功能和数据字典转换处理
This commit is contained in:
2026-06-23 11:26:42 +08:00
parent a8435a3716
commit 41557c606b
24 changed files with 1690 additions and 0 deletions

View File

@@ -0,0 +1,92 @@
package com.klp.flow.domain;
import com.baomidou.mybatisplus.annotation.*;
import com.klp.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
/**
* 维修计划主对象 eqp_maintenance_plan
*
* @author klp
* @date 2026-06-23
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("eqp_maintenance_plan")
public class EqpMaintenancePlan extends BaseEntity {
private static final long serialVersionUID=1L;
/**
* 计划ID
*/
@TableId(value = "plan_id")
private Long planId;
/**
* 计划编号
*/
private String planNo;
/**
* 计划名称
*/
private String planName;
/**
* 维修类型1=定期保养 2=安全整改 3=专项检修 4=故障维修
*/
private Long repairType;
/**
* 优先级1=普通 2=重要
*/
private Long priorityLevel;
/**
* 计划执行状态1=待维修2=维修中3=已完成4=已取消
*/
private Long planStatus;
/**
* 审批状态0=草稿 1=待审批 2=已审批 3=已驳回
*/
private Long approvalStatus;
/**
* 计划开始时间
*/
private Date plannedStartTime;
/**
* 计划结束时间
*/
private Date plannedEndTime;
/**
* 负责部门
*/
private String dutyDept;
/**
* 计划负责人
*/
private String planOwner;
/**
* 预算金额(元)
*/
private BigDecimal budgetAmount;
/**
* 计划说明
*/
private String planDescription;
/**
* 实际完成时间
*/
private Date actualCompleteTime;
/**
* 备注
*/
private String remark;
/**
* 删除标识 0正常 2删除
*/
@TableLogic
private Long delFlag;
}

View File

@@ -0,0 +1,45 @@
package com.klp.flow.domain;
import com.baomidou.mybatisplus.annotation.*;
import com.klp.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* 维修计划-异常记录关联对象 eqp_maintenance_plan_abnormal
*
* @author klp
* @date 2026-06-23
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("eqp_maintenance_plan_abnormal")
public class EqpMaintenancePlanAbnormal extends BaseEntity {
private static final long serialVersionUID=1L;
/**
* 关联ID
*/
@TableId(value = "rel_id")
private Long relId;
/**
* 维修计划ID
*/
private Long planId;
/**
* 巡检记录IDeqp_equipment_inspection_record.record_idrun_status=2 异常记录)
*/
private Long recordId;
/**
* 备注
*/
private String remark;
/**
* 删除标识 0正常 2删除
*/
@TableLogic
private Long delFlag;
}

View File

@@ -0,0 +1,96 @@
package com.klp.flow.domain;
import com.baomidou.mybatisplus.annotation.*;
import com.klp.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
/**
* 维修计划明细对象 eqp_maintenance_plan_detail
*
* @author klp
* @date 2026-06-23
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("eqp_maintenance_plan_detail")
public class EqpMaintenancePlanDetail extends BaseEntity {
private static final long serialVersionUID=1L;
/**
* 明细ID
*/
@TableId(value = "detail_id")
private Long detailId;
/**
* 维修计划ID
*/
private Long planId;
/**
* 巡检记录ID来源异常工单
*/
private Long recordId;
/**
* 设备ID用户手动选择关联 eqp_equipment_management.equipment_id
*/
private Long equipmentId;
/**
* 产线名称
*/
private String productionLine;
/**
* 设备部件名称
*/
private String componentName;
/**
* 单条维修项计划执行日期
*/
private Date itemPlanDate;
/**
* 明细类型0=保养 1=维修
*/
private Long maintenanceCategory;
/**
* 明细完成状态0=未开始 1=进行中 2=已完成
*/
private Long detailStatus;
/**
* 维修内容描述
*/
private String repairContent;
/**
* 维修负责人
*/
private String repairUser;
/**
* 完成时间(打勾时记录)
*/
private Date completeTime;
/**
* 实际支出金额(元)
*/
private BigDecimal actualCost;
/**
* 完成进度百分比(0-100)
*/
private Long progressRate;
/**
* 目标厂家
*/
private String targetManufacturer;
/**
* 备注
*/
private String remark;
/**
* 删除标识 0正常 2删除
*/
@TableLogic
private Long delFlag;
}

View File

@@ -0,0 +1,41 @@
package com.klp.flow.domain.bo;
import com.klp.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import javax.validation.constraints.*;
/**
* 维修计划-异常记录关联业务对象 eqp_maintenance_plan_abnormal
*
* @author klp
* @date 2026-06-23
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class EqpMaintenancePlanAbnormalBo extends BaseEntity {
/**
* 关联ID
*/
private Long relId;
/**
* 维修计划ID
*/
private Long planId;
/**
* 巡检记录IDeqp_equipment_inspection_record.record_idrun_status=2 异常记录)
*/
private Long recordId;
/**
* 备注
*/
private String remark;
}

View File

@@ -0,0 +1,99 @@
package com.klp.flow.domain.bo;
import com.klp.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import javax.validation.constraints.*;
import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
/**
* 维修计划主业务对象 eqp_maintenance_plan
*
* @author klp
* @date 2026-06-23
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class EqpMaintenancePlanBo extends BaseEntity {
/**
* 计划ID
*/
private Long planId;
/**
* 计划编号
*/
private String planNo;
/**
* 计划名称
*/
private String planName;
/**
* 维修类型1=定期保养 2=安全整改 3=专项检修 4=故障维修
*/
private Long repairType;
/**
* 优先级1=普通 2=重要
*/
private Long priorityLevel;
/**
* 计划执行状态1=待维修2=维修中3=已完成4=已取消
*/
private Long planStatus;
/**
* 审批状态0=草稿 1=待审批 2=已审批 3=已驳回
*/
private Long approvalStatus;
/**
* 计划开始时间
*/
private Date plannedStartTime;
/**
* 计划结束时间
*/
private Date plannedEndTime;
/**
* 负责部门
*/
private String dutyDept;
/**
* 计划负责人
*/
private String planOwner;
/**
* 预算金额(元)
*/
private BigDecimal budgetAmount;
/**
* 计划说明
*/
private String planDescription;
/**
* 实际完成时间
*/
private Date actualCompleteTime;
/**
* 备注
*/
private String remark;
}

View File

@@ -0,0 +1,104 @@
package com.klp.flow.domain.bo;
import com.klp.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import javax.validation.constraints.*;
import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
/**
* 维修计划明细业务对象 eqp_maintenance_plan_detail
*
* @author klp
* @date 2026-06-23
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class EqpMaintenancePlanDetailBo extends BaseEntity {
/**
* 明细ID
*/
private Long detailId;
/**
* 维修计划ID
*/
private Long planId;
/**
* 巡检记录ID来源异常工单
*/
private Long recordId;
/**
* 设备ID用户手动选择关联 eqp_equipment_management.equipment_id
*/
private Long equipmentId;
/**
* 产线名称
*/
private String productionLine;
/**
* 设备部件名称
*/
private String componentName;
/**
* 单条维修项计划执行日期
*/
private Date itemPlanDate;
/**
* 明细类型0=保养 1=维修
*/
private Long maintenanceCategory;
/**
* 明细完成状态0=未开始 1=进行中 2=已完成
*/
private Long detailStatus;
/**
* 维修内容描述
*/
private String repairContent;
/**
* 维修负责人
*/
private String repairUser;
/**
* 完成时间(打勾时记录)
*/
private Date completeTime;
/**
* 实际支出金额(元)
*/
private BigDecimal actualCost;
/**
* 完成进度百分比(0-100)
*/
private Long progressRate;
/**
* 目标厂家
*/
private String targetManufacturer;
/**
* 备注
*/
private String remark;
}

View File

@@ -0,0 +1,48 @@
package com.klp.flow.domain.vo;
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;
/**
* 维修计划-异常记录关联视图对象 eqp_maintenance_plan_abnormal
*
* @author klp
* @date 2026-06-23
*/
@Data
@ExcelIgnoreUnannotated
public class EqpMaintenancePlanAbnormalVo {
private static final long serialVersionUID = 1L;
/**
* 关联ID
*/
@ExcelProperty(value = "关联ID")
private Long relId;
/**
* 维修计划ID
*/
@ExcelProperty(value = "维修计划ID")
private Long planId;
/**
* 巡检记录IDeqp_equipment_inspection_record.record_idrun_status=2 异常记录)
*/
@ExcelProperty(value = "巡检记录ID", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "e=qp_equipment_inspection_record.record_idrun_status=2,异=常记录")
private Long recordId;
/**
* 备注
*/
@ExcelProperty(value = "备注")
private String remark;
}

View File

@@ -0,0 +1,125 @@
package com.klp.flow.domain.vo;
import java.math.BigDecimal;
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;
/**
* 维修计划明细视图对象 eqp_maintenance_plan_detail
*
* @author klp
* @date 2026-06-23
*/
@Data
@ExcelIgnoreUnannotated
public class EqpMaintenancePlanDetailVo {
private static final long serialVersionUID = 1L;
/**
* 明细ID
*/
@ExcelProperty(value = "明细ID")
private Long detailId;
/**
* 维修计划ID
*/
@ExcelProperty(value = "维修计划ID")
private Long planId;
/**
* 巡检记录ID来源异常工单
*/
@ExcelProperty(value = "巡检记录ID", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "来=源异常工单")
private Long recordId;
/**
* 设备ID用户手动选择关联 eqp_equipment_management.equipment_id
*/
@ExcelProperty(value = "设备ID", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "用=户手动选择,关联,e=qp_equipment_management.equipment_id")
private Long equipmentId;
/**
* 产线名称
*/
@ExcelProperty(value = "产线名称")
private String productionLine;
/**
* 设备部件名称
*/
@ExcelProperty(value = "设备部件名称")
private String componentName;
/**
* 单条维修项计划执行日期
*/
@ExcelProperty(value = "单条维修项计划执行日期")
private Date itemPlanDate;
/**
* 明细类型0=保养 1=维修
*/
@ExcelProperty(value = "明细类型0=保养 1=维修")
private Long maintenanceCategory;
/**
* 明细完成状态0=未开始 1=进行中 2=已完成
*/
@ExcelProperty(value = "明细完成状态0=未开始 1=进行中 2=已完成")
private Long detailStatus;
/**
* 维修内容描述
*/
@ExcelProperty(value = "维修内容描述")
private String repairContent;
/**
* 维修负责人
*/
@ExcelProperty(value = "维修负责人")
private String repairUser;
/**
* 完成时间(打勾时记录)
*/
@ExcelProperty(value = "完成时间", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "打=勾时记录")
private Date completeTime;
/**
* 实际支出金额(元)
*/
@ExcelProperty(value = "实际支出金额(元)")
private BigDecimal actualCost;
/**
* 完成进度百分比(0-100)
*/
@ExcelProperty(value = "完成进度百分比(0-100)")
private Long progressRate;
/**
* 目标厂家
*/
@ExcelProperty(value = "目标厂家")
private String targetManufacturer;
/**
* 备注
*/
@ExcelProperty(value = "备注")
private String remark;
}

View File

@@ -0,0 +1,116 @@
package com.klp.flow.domain.vo;
import java.math.BigDecimal;
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;
/**
* 维修计划主视图对象 eqp_maintenance_plan
*
* @author klp
* @date 2026-06-23
*/
@Data
@ExcelIgnoreUnannotated
public class EqpMaintenancePlanVo {
private static final long serialVersionUID = 1L;
/**
* 计划ID
*/
@ExcelProperty(value = "计划ID")
private Long planId;
/**
* 计划编号
*/
@ExcelProperty(value = "计划编号")
private String planNo;
/**
* 计划名称
*/
@ExcelProperty(value = "计划名称")
private String planName;
/**
* 维修类型1=定期保养 2=安全整改 3=专项检修 4=故障维修
*/
@ExcelProperty(value = "维修类型1=定期保养 2=安全整改 3=专项检修 4=故障维修")
private Long repairType;
/**
* 优先级1=普通 2=重要
*/
@ExcelProperty(value = "优先级1=普通 2=重要")
private Long priorityLevel;
/**
* 计划执行状态1=待维修2=维修中3=已完成4=已取消
*/
@ExcelProperty(value = "计划执行状态1=待维修2=维修中3=已完成4=已取消")
private Long planStatus;
/**
* 审批状态0=草稿 1=待审批 2=已审批 3=已驳回
*/
@ExcelProperty(value = "审批状态0=草稿 1=待审批 2=已审批 3=已驳回")
private Long approvalStatus;
/**
* 计划开始时间
*/
@ExcelProperty(value = "计划开始时间")
private Date plannedStartTime;
/**
* 计划结束时间
*/
@ExcelProperty(value = "计划结束时间")
private Date plannedEndTime;
/**
* 负责部门
*/
@ExcelProperty(value = "负责部门")
private String dutyDept;
/**
* 计划负责人
*/
@ExcelProperty(value = "计划负责人")
private String planOwner;
/**
* 预算金额(元)
*/
@ExcelProperty(value = "预算金额(元)")
private BigDecimal budgetAmount;
/**
* 计划说明
*/
@ExcelProperty(value = "计划说明")
private String planDescription;
/**
* 实际完成时间
*/
@ExcelProperty(value = "实际完成时间")
private Date actualCompleteTime;
/**
* 备注
*/
@ExcelProperty(value = "备注")
private String remark;
}