From cb940a66c4ff4041115db5a966725ba8c2ca3ecd Mon Sep 17 00:00:00 2001 From: "zangch@mesnac.com" Date: Thu, 9 Oct 2025 14:35:24 +0800 Subject: [PATCH] =?UTF-8?q?feat(dms):=20=E6=96=B0=E5=A2=9E=E8=AE=BE?= =?UTF-8?q?=E5=A4=87=E6=95=88=E7=8E=87=E6=8A=A5=E8=A1=A8=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增设备效率报表实体类及数据库映射 - 实现设备效率报表的增删改查接口 - 提供设备效率报表的分页查询和导出功能 - 添加设备效率报表的前端控制器和业务逻辑 - 配置设备效率报表的MyBatis映射文件 - 完成设备效率报表的数据验证和转换逻辑 --- .../DmsReportDeviceEfficiencyController.java | 117 +++++++++++ .../dms/domain/DmsReportDeviceEfficiency.java | 141 +++++++++++++ .../bo/DmsReportDeviceEfficiencyBo.java | 164 ++++++++++++++++ .../vo/DmsReportDeviceEfficiencyVo.java | 185 ++++++++++++++++++ .../DmsReportDeviceEfficiencyMapper.java | 15 ++ .../IDmsReportDeviceEfficiencyService.java | 69 +++++++ .../DmsReportDeviceEfficiencyServiceImpl.java | 153 +++++++++++++++ .../dms/DmsReportDeviceEfficiencyMapper.xml | 7 + 8 files changed, 851 insertions(+) create mode 100644 ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/controller/DmsReportDeviceEfficiencyController.java create mode 100644 ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/DmsReportDeviceEfficiency.java create mode 100644 ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/bo/DmsReportDeviceEfficiencyBo.java create mode 100644 ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/vo/DmsReportDeviceEfficiencyVo.java create mode 100644 ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/mapper/DmsReportDeviceEfficiencyMapper.java create mode 100644 ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/IDmsReportDeviceEfficiencyService.java create mode 100644 ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsReportDeviceEfficiencyServiceImpl.java create mode 100644 ruoyi-modules/hwmom-dms/src/main/resources/mapper/dms/DmsReportDeviceEfficiencyMapper.xml diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/controller/DmsReportDeviceEfficiencyController.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/controller/DmsReportDeviceEfficiencyController.java new file mode 100644 index 00000000..3a5f05a7 --- /dev/null +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/controller/DmsReportDeviceEfficiencyController.java @@ -0,0 +1,117 @@ +package org.dromara.dms.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.dms.domain.vo.DmsReportDeviceEfficiencyVo; +import org.dromara.dms.domain.bo.DmsReportDeviceEfficiencyBo; +import org.dromara.dms.service.IDmsReportDeviceEfficiencyService; +import org.dromara.common.mybatis.core.page.TableDataInfo; + +/** + * 设备效率报 + * 前端访问路由地址为:/dms/dmsReportDeviceEfficiency + * + * @author zch + * @date 2025-10-09 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/dmsReportDeviceEfficiency") +public class DmsReportDeviceEfficiencyController extends BaseController { + + private final IDmsReportDeviceEfficiencyService dmsReportDeviceEfficiencyService; + + /** + * 查询设备效率报列表 + */ + @SaCheckPermission("dms:dmsReportDeviceEfficiency:list") + @GetMapping("/list") + public TableDataInfo list(DmsReportDeviceEfficiencyBo bo, PageQuery pageQuery) { + return dmsReportDeviceEfficiencyService.queryPageList(bo, pageQuery); + } + + /** + * 导出设备效率报列表 + */ + @SaCheckPermission("dms:dmsReportDeviceEfficiency:export") + @Log(title = "设备效率报", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(DmsReportDeviceEfficiencyBo bo, HttpServletResponse response) { + List list = dmsReportDeviceEfficiencyService.queryList(bo); + ExcelUtil.exportExcel(list, "设备效率报", DmsReportDeviceEfficiencyVo.class, response); + } + + /** + * 获取设备效率报详细信息 + * + * @param reportId 主键 + */ + @SaCheckPermission("dms:dmsReportDeviceEfficiency:query") + @GetMapping("/{reportId}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable Long reportId) { + return R.ok(dmsReportDeviceEfficiencyService.queryById(reportId)); + } + + /** + * 新增设备效率报 + */ + @SaCheckPermission("dms:dmsReportDeviceEfficiency:add") + @Log(title = "设备效率报", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody DmsReportDeviceEfficiencyBo bo) { + return toAjax(dmsReportDeviceEfficiencyService.insertByBo(bo)); + } + + /** + * 修改设备效率报 + */ + @SaCheckPermission("dms:dmsReportDeviceEfficiency:edit") + @Log(title = "设备效率报", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody DmsReportDeviceEfficiencyBo bo) { + return toAjax(dmsReportDeviceEfficiencyService.updateByBo(bo)); + } + + /** + * 删除设备效率报 + * + * @param reportIds 主键串 + */ + @SaCheckPermission("dms:dmsReportDeviceEfficiency:remove") + @Log(title = "设备效率报", businessType = BusinessType.DELETE) + @DeleteMapping("/{reportIds}") + public R remove(@NotEmpty(message = "主键不能为空") + @PathVariable Long[] reportIds) { + return toAjax(dmsReportDeviceEfficiencyService.deleteWithValidByIds(List.of(reportIds), true)); + } + + + /** + * 下拉框查询设备效率报列表 + */ + + @GetMapping("/getDmsReportDeviceEfficiencyList") + public R> getDmsReportDeviceEfficiencyList(DmsReportDeviceEfficiencyBo bo) { + List list = dmsReportDeviceEfficiencyService.queryList(bo); + return R.ok(list); + } +} diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/DmsReportDeviceEfficiency.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/DmsReportDeviceEfficiency.java new file mode 100644 index 00000000..9ea84660 --- /dev/null +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/DmsReportDeviceEfficiency.java @@ -0,0 +1,141 @@ +package org.dromara.dms.domain; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.dromara.common.tenant.core.TenantEntity; + +import java.io.Serial; +import java.util.Date; + +/** + * 设备效率报对象 dms_report_device_efficiency + * + * @author zch + * @date 2025-10-09 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("dms_report_device_efficiency") +public class DmsReportDeviceEfficiency extends TenantEntity { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键标识 + */ + private Long reportId; + + /** + * 统计日期 + */ + private Date statDate; + + /** + * 车间ID,关联prod_base_workshop_info.workshop_id + */ + private Long workshopId; + + /** + * 班组ID,关联base_class_team_info.class_team_id + */ + private Long classTeamId; + + /** + * 班次ID,关联base_shift_info.shift_id + */ + private Long shiftId; + + /** + * 设备ID,关联prod_base_machine_info.machine_id + */ + private Long machineId; + + /** + * 车间名称(存储过程写入,查询免关联) + */ + private String workshopName; + + /** + * 班组名称(存储过程写入,查询免关联) + */ + private String classTeamName; + + /** + * 班次名称(存储过程写入,查询免关联) + */ + private String shiftName; + + /** + * 设备名称(存储过程写入,查询免关联) + */ + private String machineName; + + /** + * 产量(件) + */ + private Long outputQty; + + /** + * 工序标准机时(小时/件) + */ + private Long processStdMachineHours; + + /** + * 调试时间(小时) + */ + private Long debugHours; + + /** + * 运行时长(小时) + */ + private Long runHours; + + /** + * 待机时长(小时) + */ + private Long standbyHours; + + /** + * 故障时长(小时) + */ + private Long faultHours; + + /** + * 关机时长(小时) + */ + private Long shutdownHours; + + /** + * 产出机时(小时)= 产量 × 工序标准机时 + */ + private Long outputMachineHours; + + /** + * 合计时长(小时)= 运行时长 + 待机时长 + 故障时长 + */ + private Long totalHours; + + /** + * 开机率 = (运行时长 + 调试时间) / 合计时长 + */ + private Long uptimeRate; + + /** + * 综合效率 = 产出机时 / (运行+待机+故障+关机+调试) + */ + private Long overallEfficiency; + + /** + * 运行效率 = 产出机时 / 运行时长 + */ + private Long runtimeEfficiency; + + /** + * 备注 + */ + private String remark; + + +} diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/bo/DmsReportDeviceEfficiencyBo.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/bo/DmsReportDeviceEfficiencyBo.java new file mode 100644 index 00000000..f5841b87 --- /dev/null +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/bo/DmsReportDeviceEfficiencyBo.java @@ -0,0 +1,164 @@ +package org.dromara.dms.domain.bo; + +import org.dromara.dms.domain.DmsReportDeviceEfficiency; +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; + +/** + * 设备效率报业务对象 dms_report_device_efficiency + * + * @author zch + * @date 2025-10-09 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@AutoMapper(target = DmsReportDeviceEfficiency.class, reverseConvertGenerate = false) +public class DmsReportDeviceEfficiencyBo extends BaseEntity { + + /** + * 主键标识 + */ + @NotNull(message = "主键标识不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long reportId; + + /** + * 统计日期 + */ + @NotNull(message = "统计日期不能为空", groups = { AddGroup.class, EditGroup.class }) + private Date statDate; + + /** + * 车间ID,关联prod_base_workshop_info.workshop_id + */ + @NotNull(message = "车间ID,关联prod_base_workshop_info.workshop_id不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long workshopId; + + /** + * 班组ID,关联base_class_team_info.class_team_id + */ + @NotNull(message = "班组ID,关联base_class_team_info.class_team_id不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long classTeamId; + + /** + * 班次ID,关联base_shift_info.shift_id + */ + @NotNull(message = "班次ID,关联base_shift_info.shift_id不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long shiftId; + + /** + * 设备ID,关联prod_base_machine_info.machine_id + */ + @NotNull(message = "设备ID,关联prod_base_machine_info.machine_id不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long machineId; + + /** + * 车间名称(存储过程写入,查询免关联) + */ + @NotBlank(message = "车间名称(存储过程写入,查询免关联)不能为空", groups = { AddGroup.class, EditGroup.class }) + private String workshopName; + + /** + * 班组名称(存储过程写入,查询免关联) + */ + @NotBlank(message = "班组名称(存储过程写入,查询免关联)不能为空", groups = { AddGroup.class, EditGroup.class }) + private String classTeamName; + + /** + * 班次名称(存储过程写入,查询免关联) + */ + @NotBlank(message = "班次名称(存储过程写入,查询免关联)不能为空", groups = { AddGroup.class, EditGroup.class }) + private String shiftName; + + /** + * 设备名称(存储过程写入,查询免关联) + */ + @NotBlank(message = "设备名称(存储过程写入,查询免关联)不能为空", groups = { AddGroup.class, EditGroup.class }) + private String machineName; + + /** + * 产量(件) + */ + @NotNull(message = "产量(件)不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long outputQty; + + /** + * 工序标准机时(小时/件) + */ + @NotNull(message = "工序标准机时(小时/件)不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long processStdMachineHours; + + /** + * 调试时间(小时) + */ + @NotNull(message = "调试时间(小时)不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long debugHours; + + /** + * 运行时长(小时) + */ + @NotNull(message = "运行时长(小时)不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long runHours; + + /** + * 待机时长(小时) + */ + @NotNull(message = "待机时长(小时)不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long standbyHours; + + /** + * 故障时长(小时) + */ + @NotNull(message = "故障时长(小时)不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long faultHours; + + /** + * 关机时长(小时) + */ + @NotNull(message = "关机时长(小时)不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long shutdownHours; + + /** + * 产出机时(小时)= 产量 × 工序标准机时 + */ + @NotNull(message = "产出机时(小时)= 产量 × 工序标准机时不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long outputMachineHours; + + /** + * 合计时长(小时)= 运行时长 + 待机时长 + 故障时长 + */ + @NotNull(message = "合计时长(小时)= 运行时长 + 待机时长 + 故障时长不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long totalHours; + + /** + * 开机率 = (运行时长 + 调试时间) / 合计时长 + */ + @NotNull(message = "开机率 = (运行时长 + 调试时间) / 合计时长不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long uptimeRate; + + /** + * 综合效率 = 产出机时 / (运行+待机+故障+关机+调试) + */ + @NotNull(message = "综合效率 = 产出机时 / (运行+待机+故障+关机+调试)不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long overallEfficiency; + + /** + * 运行效率 = 产出机时 / 运行时长 + */ + @NotNull(message = "运行效率 = 产出机时 / 运行时长不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long runtimeEfficiency; + + /** + * 备注 + */ + @NotBlank(message = "备注不能为空", groups = { AddGroup.class, EditGroup.class }) + private String remark; + + +} diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/vo/DmsReportDeviceEfficiencyVo.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/vo/DmsReportDeviceEfficiencyVo.java new file mode 100644 index 00000000..da6706aa --- /dev/null +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/vo/DmsReportDeviceEfficiencyVo.java @@ -0,0 +1,185 @@ +package org.dromara.dms.domain.vo; + +import java.util.Date; +import com.fasterxml.jackson.annotation.JsonFormat; +import org.dromara.dms.domain.DmsReportDeviceEfficiency; +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; + + + +/** + * 设备效率报视图对象 dms_report_device_efficiency + * + * @author zch + * @date 2025-10-09 + */ +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = DmsReportDeviceEfficiency.class) +public class DmsReportDeviceEfficiencyVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键标识 + */ + @ExcelProperty(value = "主键标识") + private Long reportId; + + /** + * 统计日期 + */ + @ExcelProperty(value = "统计日期") + private Date statDate; + + /** + * 车间ID,关联prod_base_workshop_info.workshop_id + */ + @ExcelProperty(value = "车间ID,关联prod_base_workshop_info.workshop_id") + private Long workshopId; + + /** + * 班组ID,关联base_class_team_info.class_team_id + */ + @ExcelProperty(value = "班组ID,关联base_class_team_info.class_team_id") + private Long classTeamId; + + /** + * 班次ID,关联base_shift_info.shift_id + */ + @ExcelProperty(value = "班次ID,关联base_shift_info.shift_id") + private Long shiftId; + + /** + * 设备ID,关联prod_base_machine_info.machine_id + */ + @ExcelProperty(value = "设备ID,关联prod_base_machine_info.machine_id") + private Long machineId; + + /** + * 车间名称(存储过程写入,查询免关联) + */ + @ExcelProperty(value = "车间名称", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "存=储过程写入,查询免关联") + private String workshopName; + + /** + * 班组名称(存储过程写入,查询免关联) + */ + @ExcelProperty(value = "班组名称", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "存=储过程写入,查询免关联") + private String classTeamName; + + /** + * 班次名称(存储过程写入,查询免关联) + */ + @ExcelProperty(value = "班次名称", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "存=储过程写入,查询免关联") + private String shiftName; + + /** + * 设备名称(存储过程写入,查询免关联) + */ + @ExcelProperty(value = "设备名称", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "存=储过程写入,查询免关联") + private String machineName; + + /** + * 产量(件) + */ + @ExcelProperty(value = "产量", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "件=") + private Long outputQty; + + /** + * 工序标准机时(小时/件) + */ + @ExcelProperty(value = "工序标准机时", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "小=时/件") + private Long processStdMachineHours; + + /** + * 调试时间(小时) + */ + @ExcelProperty(value = "调试时间", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "小=时") + private Long debugHours; + + /** + * 运行时长(小时) + */ + @ExcelProperty(value = "运行时长", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "小=时") + private Long runHours; + + /** + * 待机时长(小时) + */ + @ExcelProperty(value = "待机时长", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "小=时") + private Long standbyHours; + + /** + * 故障时长(小时) + */ + @ExcelProperty(value = "故障时长", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "小=时") + private Long faultHours; + + /** + * 关机时长(小时) + */ + @ExcelProperty(value = "关机时长", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "小=时") + private Long shutdownHours; + + /** + * 产出机时(小时)= 产量 × 工序标准机时 + */ + @ExcelProperty(value = "产出机时", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "小=时") + private Long outputMachineHours; + + /** + * 合计时长(小时)= 运行时长 + 待机时长 + 故障时长 + */ + @ExcelProperty(value = "合计时长", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "小=时") + private Long totalHours; + + /** + * 开机率 = (运行时长 + 调试时间) / 合计时长 + */ + @ExcelProperty(value = "开机率 = (运行时长 + 调试时间) / 合计时长") + private Long uptimeRate; + + /** + * 综合效率 = 产出机时 / (运行+待机+故障+关机+调试) + */ + @ExcelProperty(value = "综合效率 = 产出机时 / (运行+待机+故障+关机+调试)") + private Long overallEfficiency; + + /** + * 运行效率 = 产出机时 / 运行时长 + */ + @ExcelProperty(value = "运行效率 = 产出机时 / 运行时长") + private Long runtimeEfficiency; + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + +} diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/mapper/DmsReportDeviceEfficiencyMapper.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/mapper/DmsReportDeviceEfficiencyMapper.java new file mode 100644 index 00000000..d9cbf9b4 --- /dev/null +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/mapper/DmsReportDeviceEfficiencyMapper.java @@ -0,0 +1,15 @@ +package org.dromara.dms.mapper; + +import org.dromara.dms.domain.DmsReportDeviceEfficiency; +import org.dromara.dms.domain.vo.DmsReportDeviceEfficiencyVo; +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; + +/** + * 设备效率报Mapper接口 + * + * @author zch + * @date 2025-10-09 + */ +public interface DmsReportDeviceEfficiencyMapper extends BaseMapperPlus { + +} diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/IDmsReportDeviceEfficiencyService.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/IDmsReportDeviceEfficiencyService.java new file mode 100644 index 00000000..d07c2b55 --- /dev/null +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/IDmsReportDeviceEfficiencyService.java @@ -0,0 +1,69 @@ +package org.dromara.dms.service; + +import org.dromara.dms.domain.DmsReportDeviceEfficiency; +import org.dromara.dms.domain.vo.DmsReportDeviceEfficiencyVo; +import org.dromara.dms.domain.bo.DmsReportDeviceEfficiencyBo; +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 zch + * @date 2025-10-09 + */ +public interface IDmsReportDeviceEfficiencyService { + + /** + * 查询设备效率报 + * + * @param reportId 主键 + * @return 设备效率报 + */ + DmsReportDeviceEfficiencyVo queryById(Long reportId); + + /** + * 分页查询设备效率报列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 设备效率报分页列表 + */ + TableDataInfo queryPageList(DmsReportDeviceEfficiencyBo bo, PageQuery pageQuery); + + /** + * 查询符合条件的设备效率报列表 + * + * @param bo 查询条件 + * @return 设备效率报列表 + */ + List queryList(DmsReportDeviceEfficiencyBo bo); + + /** + * 新增设备效率报 + * + * @param bo 设备效率报 + * @return 是否新增成功 + */ + Boolean insertByBo(DmsReportDeviceEfficiencyBo bo); + + /** + * 修改设备效率报 + * + * @param bo 设备效率报 + * @return 是否修改成功 + */ + Boolean updateByBo(DmsReportDeviceEfficiencyBo bo); + + /** + * 校验并批量删除设备效率报信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); +} diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsReportDeviceEfficiencyServiceImpl.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsReportDeviceEfficiencyServiceImpl.java new file mode 100644 index 00000000..b2c95674 --- /dev/null +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsReportDeviceEfficiencyServiceImpl.java @@ -0,0 +1,153 @@ +package org.dromara.dms.service.impl; + +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.github.yulichang.toolkit.JoinWrappers; +import com.github.yulichang.wrapper.MPJLambdaWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.dromara.dms.domain.bo.DmsReportDeviceEfficiencyBo; +import org.dromara.dms.domain.vo.DmsReportDeviceEfficiencyVo; +import org.dromara.dms.domain.DmsReportDeviceEfficiency; +import org.dromara.dms.mapper.DmsReportDeviceEfficiencyMapper; +import org.dromara.dms.service.IDmsReportDeviceEfficiencyService; + +import java.util.List; +import java.util.Map; +import java.util.Collection; + +/** + * 设备效率报Service业务层处理 + * + * @author zch + * @date 2025-10-09 + */ +@RequiredArgsConstructor +@Service +public class DmsReportDeviceEfficiencyServiceImpl implements IDmsReportDeviceEfficiencyService { + + private final DmsReportDeviceEfficiencyMapper baseMapper; + + /** + * 查询设备效率报 + * + * @param reportId 主键 + * @return 设备效率报 + */ + @Override + public DmsReportDeviceEfficiencyVo queryById(Long reportId){ + return baseMapper.selectVoById(reportId); + } + + /** + * 分页查询设备效率报列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 设备效率报分页列表 + */ + @Override + public TableDataInfo queryPageList(DmsReportDeviceEfficiencyBo bo, PageQuery pageQuery) { + MPJLambdaWrapper lqw = buildQueryWrapper(bo); + Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + return TableDataInfo.build(result); + } + + /** + * 查询符合条件的设备效率报列表 + * + * @param bo 查询条件 + * @return 设备效率报列表 + */ + @Override + public List queryList(DmsReportDeviceEfficiencyBo bo) { + MPJLambdaWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private MPJLambdaWrapper buildQueryWrapper(DmsReportDeviceEfficiencyBo bo) { + Map params = bo.getParams(); + MPJLambdaWrapper lqw = JoinWrappers.lambda(DmsReportDeviceEfficiency.class) + .selectAll(DmsReportDeviceEfficiency.class) + .eq(bo.getReportId() != null, DmsReportDeviceEfficiency::getReportId, bo.getReportId()) + .eq(bo.getStatDate() != null, DmsReportDeviceEfficiency::getStatDate, bo.getStatDate()) + .eq(bo.getWorkshopId() != null, DmsReportDeviceEfficiency::getWorkshopId, bo.getWorkshopId()) + .eq(bo.getClassTeamId() != null, DmsReportDeviceEfficiency::getClassTeamId, bo.getClassTeamId()) + .eq(bo.getShiftId() != null, DmsReportDeviceEfficiency::getShiftId, bo.getShiftId()) + .eq(bo.getMachineId() != null, DmsReportDeviceEfficiency::getMachineId, bo.getMachineId()) + .like(StringUtils.isNotBlank(bo.getWorkshopName()), DmsReportDeviceEfficiency::getWorkshopName, bo.getWorkshopName()) + .like(StringUtils.isNotBlank(bo.getClassTeamName()), DmsReportDeviceEfficiency::getClassTeamName, bo.getClassTeamName()) + .like(StringUtils.isNotBlank(bo.getShiftName()), DmsReportDeviceEfficiency::getShiftName, bo.getShiftName()) + .like(StringUtils.isNotBlank(bo.getMachineName()), DmsReportDeviceEfficiency::getMachineName, bo.getMachineName()) + .eq(bo.getOutputQty() != null, DmsReportDeviceEfficiency::getOutputQty, bo.getOutputQty()) + .eq(bo.getProcessStdMachineHours() != null, DmsReportDeviceEfficiency::getProcessStdMachineHours, bo.getProcessStdMachineHours()) + .eq(bo.getDebugHours() != null, DmsReportDeviceEfficiency::getDebugHours, bo.getDebugHours()) + .eq(bo.getRunHours() != null, DmsReportDeviceEfficiency::getRunHours, bo.getRunHours()) + .eq(bo.getStandbyHours() != null, DmsReportDeviceEfficiency::getStandbyHours, bo.getStandbyHours()) + .eq(bo.getFaultHours() != null, DmsReportDeviceEfficiency::getFaultHours, bo.getFaultHours()) + .eq(bo.getShutdownHours() != null, DmsReportDeviceEfficiency::getShutdownHours, bo.getShutdownHours()) + .eq(bo.getOutputMachineHours() != null, DmsReportDeviceEfficiency::getOutputMachineHours, bo.getOutputMachineHours()) + .eq(bo.getTotalHours() != null, DmsReportDeviceEfficiency::getTotalHours, bo.getTotalHours()) + .eq(bo.getUptimeRate() != null, DmsReportDeviceEfficiency::getUptimeRate, bo.getUptimeRate()) + .eq(bo.getOverallEfficiency() != null, DmsReportDeviceEfficiency::getOverallEfficiency, bo.getOverallEfficiency()) + .eq(bo.getRuntimeEfficiency() != null, DmsReportDeviceEfficiency::getRuntimeEfficiency, bo.getRuntimeEfficiency()) + .orderByDesc(DmsReportDeviceEfficiency::getCreateTime); + return lqw; + } + + /** + * 新增设备效率报 + * + * @param bo 设备效率报 + * @return 是否新增成功 + */ + @Override + public Boolean insertByBo(DmsReportDeviceEfficiencyBo bo) { + DmsReportDeviceEfficiency add = MapstructUtils.convert(bo, DmsReportDeviceEfficiency.class); + validEntityBeforeSave(add); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setReportId(add.getReportId()); + } + return flag; + } + + /** + * 修改设备效率报 + * + * @param bo 设备效率报 + * @return 是否修改成功 + */ + @Override + public Boolean updateByBo(DmsReportDeviceEfficiencyBo bo) { + DmsReportDeviceEfficiency update = MapstructUtils.convert(bo, DmsReportDeviceEfficiency.class); + validEntityBeforeSave(update); + return baseMapper.updateById(update) > 0; + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(DmsReportDeviceEfficiency entity){ + //TODO 做一些数据校验,如唯一约束 + } + + /** + * 校验并批量删除设备效率报信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + @Override + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + if(isValid){ + //TODO 做一些业务上的校验,判断是否需要校验 + } + return baseMapper.deleteByIds(ids) > 0; + } +} diff --git a/ruoyi-modules/hwmom-dms/src/main/resources/mapper/dms/DmsReportDeviceEfficiencyMapper.xml b/ruoyi-modules/hwmom-dms/src/main/resources/mapper/dms/DmsReportDeviceEfficiencyMapper.xml new file mode 100644 index 00000000..5058874d --- /dev/null +++ b/ruoyi-modules/hwmom-dms/src/main/resources/mapper/dms/DmsReportDeviceEfficiencyMapper.xml @@ -0,0 +1,7 @@ + + + + +