From b6620309bc57d4497722bee0fa0cfc900cf369c6 Mon Sep 17 00:00:00 2001 From: gjh <1421wake> Date: Fri, 21 Feb 2025 15:53:59 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B7=A5=E5=8D=95=E5=BB=B6=E6=9C=9F=E5=AE=A1?= =?UTF-8?q?=E6=A0=B8=E5=9F=BA=E7=A1=80=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/WorkOrderDelayController.java | 105 +++++++++++ .../platform/domain/WorkOrderDelay.java | 146 +++++++++++++++ .../platform/domain/bo/WorkOrderDelayBo.java | 160 ++++++++++++++++ .../platform/domain/bo/WorkOrderInfoBo.java | 17 +- .../platform/domain/vo/WorkOrderDelayVo.java | 175 ++++++++++++++++++ .../platform/mapper/WorkOrderDelayMapper.java | 15 ++ .../service/IWorkOrderDelayService.java | 68 +++++++ .../impl/WorkOrderDelayServiceImpl.java | 149 +++++++++++++++ 8 files changed, 826 insertions(+), 9 deletions(-) create mode 100644 ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/controller/WorkOrderDelayController.java create mode 100644 ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/domain/WorkOrderDelay.java create mode 100644 ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/domain/bo/WorkOrderDelayBo.java create mode 100644 ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/domain/vo/WorkOrderDelayVo.java create mode 100644 ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/mapper/WorkOrderDelayMapper.java create mode 100644 ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/service/IWorkOrderDelayService.java create mode 100644 ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/service/impl/WorkOrderDelayServiceImpl.java diff --git a/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/controller/WorkOrderDelayController.java b/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/controller/WorkOrderDelayController.java new file mode 100644 index 0000000..9644c08 --- /dev/null +++ b/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/controller/WorkOrderDelayController.java @@ -0,0 +1,105 @@ +package org.dromara.platform.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.platform.domain.vo.WorkOrderDelayVo; +import org.dromara.platform.domain.bo.WorkOrderDelayBo; +import org.dromara.platform.service.IWorkOrderDelayService; +import org.dromara.common.mybatis.core.page.TableDataInfo; + +/** + * 工单延期审核 + * + * @author gejunhao + * @date 2025-02-21 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/platform/workOrderDelay") +public class WorkOrderDelayController extends BaseController { + + private final IWorkOrderDelayService workOrderDelayService; + + /** + * 查询工单延期审核列表 + */ + @SaCheckPermission("platform:workOrderDelay:list") + @GetMapping("/list") + public TableDataInfo list(WorkOrderDelayBo bo, PageQuery pageQuery) { + return workOrderDelayService.queryPageList(bo, pageQuery); + } + + /** + * 导出工单延期审核列表 + */ + @SaCheckPermission("platform:workOrderDelay:export") + @Log(title = "工单延期审核", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(WorkOrderDelayBo bo, HttpServletResponse response) { + List list = workOrderDelayService.queryList(bo); + ExcelUtil.exportExcel(list, "工单延期审核", WorkOrderDelayVo.class, response); + } + + /** + * 获取工单延期审核详细信息 + * + * @param id 主键 + */ + @SaCheckPermission("platform:workOrderDelay:query") + @GetMapping("/{id}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable Long id) { + return R.ok(workOrderDelayService.queryById(id)); + } + + /** + * 新增工单延期审核 + */ + @SaCheckPermission("platform:workOrderDelay:add") + @Log(title = "工单延期审核", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody WorkOrderDelayBo bo) { + return toAjax(workOrderDelayService.insertByBo(bo)); + } + + /** + * 修改工单延期审核 + */ + @SaCheckPermission("platform:workOrderDelay:edit") + @Log(title = "工单延期审核", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody WorkOrderDelayBo bo) { + return toAjax(workOrderDelayService.updateByBo(bo)); + } + + /** + * 删除工单延期审核 + * + * @param ids 主键串 + */ + @SaCheckPermission("platform:workOrderDelay:remove") + @Log(title = "工单延期审核", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public R remove(@NotEmpty(message = "主键不能为空") + @PathVariable Long[] ids) { + return toAjax(workOrderDelayService.deleteWithValidByIds(List.of(ids), true)); + } +} diff --git a/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/domain/WorkOrderDelay.java b/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/domain/WorkOrderDelay.java new file mode 100644 index 0000000..1f2bfaa --- /dev/null +++ b/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/domain/WorkOrderDelay.java @@ -0,0 +1,146 @@ +package org.dromara.platform.domain; + +import org.dromara.common.tenant.core.TenantEntity; +import com.baomidou.mybatisplus.annotation.*; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.dromara.common.translation.annotation.Translation; +import java.util.Date; +import com.fasterxml.jackson.annotation.JsonFormat; +import org.dromara.common.translation.constant.TransConstant; + +import java.io.Serial; + +/** + * 工单延期审核对象 work_order_delay + * + * @author gejunhao + * @date 2025-02-21 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("work_order_delay") +public class WorkOrderDelay extends TenantEntity { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 工单延期记录的唯一标识符 + */ + @TableId(value = "id") + private Long id; + + /** + * 所属项目的名称 + */ + private String projectName; + + /** + * 所属合同的名称或编号 + */ + private String contractName; + + /** + * 延期的原因说明 + */ + private String delayReason; + + /** + * 原定的预计结束时间(延期前的时间) + */ + private Date beforeDelayTime; + + /** + * 新的预计结束时间(延期后的时间) + */ + private Date afterDelayTime; + + /** + * 处理结果 + */ + private String handleResult; + + /** + * 报修人员 + */ + private String repairer; + + /** + * 报修人员ID + */ + private String repairerId; + + /** + * 报修时间 + */ + private Date repairerTime; + + /** + * 是否事故 (0: 否, 1: 是) + */ + private Long isAccident; + + /** + * 响应级别 (0: 常规, 1: 紧急, 2: 特急) + */ + private Long responseLevel; + + /** + * 响应时限 + */ + private Long responseTime; + + /** + * 故障大类 + */ + private String faultCategory; + + /** + * 故障小类 (0: 电源故障, 1: 光缆故障, 2: 设备故障, 3: 监控故障, 4: 抓拍方向偏移, 5: 树枝遮挡, 6: 无图像, 7: 图像模糊) + */ + private Long faultSubcategory; + + /** + * 所属机构 + */ + private String institution; + + /** + * 故障地点 + */ + private String faultLocation; + + /** + * 故障描述 + */ + private String faultDescription; + + /** + * 故障图片 + */ + private String faultImage; + + /** + * 待处理人 + */ + private String handler; + + /** + * 待处理人ID + */ + private String handlerId; + + /** + * 当前状态 + */ + private Long status; + + /** + * 删除标志(0代表存在 2代表删除) + */ + @TableLogic + private String delFlag; + + +} diff --git a/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/domain/bo/WorkOrderDelayBo.java b/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/domain/bo/WorkOrderDelayBo.java new file mode 100644 index 0000000..7ee3b15 --- /dev/null +++ b/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/domain/bo/WorkOrderDelayBo.java @@ -0,0 +1,160 @@ +package org.dromara.platform.domain.bo; + +import org.dromara.platform.domain.WorkOrderDelay; +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 org.dromara.common.translation.annotation.Translation; +import java.util.Date; +import com.fasterxml.jackson.annotation.JsonFormat; +import org.dromara.common.translation.constant.TransConstant; + +/** + * 工单延期审核业务对象 work_order_delay + * + * @author gejunhao + * @date 2025-02-21 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@AutoMapper(target = WorkOrderDelay.class, reverseConvertGenerate = false) +public class WorkOrderDelayBo extends BaseEntity { + + /** + * 工单延期记录的唯一标识符 + */ + @NotNull(message = "工单延期记录的唯一标识符不能为空", groups = { EditGroup.class }) + private Long id; + + /** + * 所属项目的名称 + */ + @NotBlank(message = "所属项目的名称不能为空", groups = { AddGroup.class, EditGroup.class }) + private String projectName; + + /** + * 所属合同的名称或编号 + */ + @NotBlank(message = "所属合同的名称或编号不能为空", groups = { AddGroup.class, EditGroup.class }) + private String contractName; + + /** + * 延期的原因说明 + */ + @NotBlank(message = "延期的原因说明不能为空", groups = { AddGroup.class, EditGroup.class }) + private String delayReason; + + /** + * 原定的预计结束时间(延期前的时间) + */ + @NotNull(message = "原定的预计结束时间(延期前的时间)不能为空", groups = { AddGroup.class, EditGroup.class }) + private Date beforeDelayTime; + + /** + * 新的预计结束时间(延期后的时间) + */ + @NotNull(message = "新的预计结束时间(延期后的时间)不能为空", groups = { AddGroup.class, EditGroup.class }) + private Date afterDelayTime; + + /** + * 处理结果 + */ + @NotBlank(message = "处理结果不能为空", groups = { AddGroup.class, EditGroup.class }) + private String handleResult; + + /** + * 报修人员 + */ + @NotBlank(message = "报修人员不能为空", groups = { AddGroup.class, EditGroup.class }) + private String repairer; + + /** + * 报修人员ID + */ + @NotBlank(message = "报修人员ID不能为空", groups = { AddGroup.class, EditGroup.class }) + private String repairerId; + + /** + * 报修时间 + */ + @NotNull(message = "报修时间不能为空", groups = { AddGroup.class, EditGroup.class }) + private Date repairerTime; + + /** + * 是否事故 (0: 否, 1: 是) + */ + @NotNull(message = "是否事故 (0: 否, 1: 是)不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long isAccident; + + /** + * 响应级别 (0: 常规, 1: 紧急, 2: 特急) + */ + @NotNull(message = "响应级别 (0: 常规, 1: 紧急, 2: 特急)不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long responseLevel; + + /** + * 响应时限 + */ + @NotNull(message = "响应时限不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long responseTime; + + /** + * 故障大类 + */ + @NotBlank(message = "故障大类不能为空", groups = { AddGroup.class, EditGroup.class }) + private String faultCategory; + + /** + * 故障小类 (0: 电源故障, 1: 光缆故障, 2: 设备故障, 3: 监控故障, 4: 抓拍方向偏移, 5: 树枝遮挡, 6: 无图像, 7: 图像模糊) + */ + @NotNull(message = "故障小类 (0: 电源故障, 1: 光缆故障, 2: 设备故障, 3: 监控故障, 4: 抓拍方向偏移, 5: 树枝遮挡, 6: 无图像, 7: 图像模糊)不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long faultSubcategory; + + /** + * 所属机构 + */ + @NotBlank(message = "所属机构不能为空", groups = { AddGroup.class, EditGroup.class }) + private String institution; + + /** + * 故障地点 + */ + @NotBlank(message = "故障地点不能为空", groups = { AddGroup.class, EditGroup.class }) + private String faultLocation; + + /** + * 故障描述 + */ + @NotBlank(message = "故障描述不能为空", groups = { AddGroup.class, EditGroup.class }) + private String faultDescription; + + /** + * 故障图片 + */ + @NotBlank(message = "故障图片不能为空", groups = { AddGroup.class, EditGroup.class }) + private String faultImage; + + /** + * 待处理人 + */ + @NotBlank(message = "待处理人不能为空", groups = { AddGroup.class, EditGroup.class }) + private String handler; + + /** + * 待处理人ID + */ + @NotBlank(message = "待处理人ID不能为空", groups = { AddGroup.class, EditGroup.class }) + private String handlerId; + + /** + * 当前状态 + */ + @NotNull(message = "当前状态不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long status; + + +} diff --git a/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/domain/bo/WorkOrderInfoBo.java b/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/domain/bo/WorkOrderInfoBo.java index 58473cb..4e04533 100644 --- a/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/domain/bo/WorkOrderInfoBo.java +++ b/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/domain/bo/WorkOrderInfoBo.java @@ -2,16 +2,15 @@ package org.dromara.platform.domain.bo; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; -import org.dromara.platform.domain.WorkOrderInfo; -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 jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; import lombok.Data; import lombok.EqualsAndHashCode; -import jakarta.validation.constraints.*; -import org.dromara.common.translation.annotation.Translation; -import org.dromara.common.translation.constant.TransConstant; +import org.dromara.common.core.validate.AddGroup; +import org.dromara.common.core.validate.EditGroup; +import org.dromara.common.mybatis.core.domain.BaseEntity; +import org.dromara.platform.domain.WorkOrderInfo; /** * 工单信息业务对象 work_order_info @@ -100,7 +99,7 @@ public class WorkOrderInfoBo extends BaseEntity { /** * 故障图片 */ - @NotBlank(message = "故障图片不能为空", groups = { AddGroup.class, EditGroup.class }) + //@NotBlank(message = "故障图片不能为空", groups = { AddGroup.class, EditGroup.class }) private String faultImage; /** @@ -136,7 +135,7 @@ public class WorkOrderInfoBo extends BaseEntity { /** * 当前状态 */ - @NotNull(message = "当前状态不能为空", groups = { AddGroup.class, EditGroup.class }) + //@NotNull(message = "当前状态不能为空", groups = { AddGroup.class, EditGroup.class }) private Long status; /** diff --git a/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/domain/vo/WorkOrderDelayVo.java b/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/domain/vo/WorkOrderDelayVo.java new file mode 100644 index 0000000..34dd683 --- /dev/null +++ b/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/domain/vo/WorkOrderDelayVo.java @@ -0,0 +1,175 @@ +package org.dromara.platform.domain.vo; + +import org.dromara.common.translation.annotation.Translation; +import java.util.Date; +import com.fasterxml.jackson.annotation.JsonFormat; +import org.dromara.common.translation.constant.TransConstant; +import org.dromara.platform.domain.WorkOrderDelay; +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; + + + +/** + * 工单延期审核视图对象 work_order_delay + * + * @author gejunhao + * @date 2025-02-21 + */ +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = WorkOrderDelay.class) +public class WorkOrderDelayVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 工单延期记录的唯一标识符 + */ + @ExcelProperty(value = "工单延期记录的唯一标识符") + private Long id; + + /** + * 所属项目的名称 + */ + @ExcelProperty(value = "所属项目的名称") + private String projectName; + + /** + * 所属合同的名称或编号 + */ + @ExcelProperty(value = "所属合同的名称或编号") + private String contractName; + + /** + * 延期的原因说明 + */ + @ExcelProperty(value = "延期的原因说明") + private String delayReason; + + /** + * 原定的预计结束时间(延期前的时间) + */ + @ExcelProperty(value = "原定的预计结束时间", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "延=期前的时间") + private Date beforeDelayTime; + + /** + * 新的预计结束时间(延期后的时间) + */ + @ExcelProperty(value = "新的预计结束时间", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "延=期后的时间") + private Date afterDelayTime; + + /** + * 处理结果 + */ + @ExcelProperty(value = "处理结果") + private String handleResult; + + /** + * 报修人员 + */ + @ExcelProperty(value = "报修人员") + private String repairer; + + /** + * 报修人员ID + */ + @ExcelProperty(value = "报修人员ID") + private String repairerId; + + /** + * 报修时间 + */ + @ExcelProperty(value = "报修时间") + private Date repairerTime; + + /** + * 是否事故 (0: 否, 1: 是) + */ + @ExcelProperty(value = "是否事故 (0: 否, 1: 是)") + private Long isAccident; + + /** + * 响应级别 (0: 常规, 1: 紧急, 2: 特急) + */ + @ExcelProperty(value = "响应级别 (0: 常规, 1: 紧急, 2: 特急)") + private Long responseLevel; + + /** + * 响应时限 + */ + @ExcelProperty(value = "响应时限") + private Long responseTime; + + /** + * 故障大类 + */ + @ExcelProperty(value = "故障大类") + private String faultCategory; + + /** + * 故障小类 (0: 电源故障, 1: 光缆故障, 2: 设备故障, 3: 监控故障, 4: 抓拍方向偏移, 5: 树枝遮挡, 6: 无图像, 7: 图像模糊) + */ + @ExcelProperty(value = "故障小类 (0: 电源故障, 1: 光缆故障, 2: 设备故障, 3: 监控故障, 4: 抓拍方向偏移, 5: 树枝遮挡, 6: 无图像, 7: 图像模糊)") + private Long faultSubcategory; + + /** + * 所属机构 + */ + @ExcelProperty(value = "所属机构") + private String institution; + + /** + * 故障地点 + */ + @ExcelProperty(value = "故障地点") + private String faultLocation; + + /** + * 故障描述 + */ + @ExcelProperty(value = "故障描述") + private String faultDescription; + + /** + * 故障图片 + */ + @ExcelProperty(value = "故障图片") + private String faultImage; + + /** + * 故障图片Url + */ + @Translation(type = TransConstant.OSS_ID_TO_URL, mapper = "faultImage") + private String faultImageUrl; + /** + * 待处理人 + */ + @ExcelProperty(value = "待处理人") + private String handler; + + /** + * 待处理人ID + */ + @ExcelProperty(value = "待处理人ID") + private String handlerId; + + /** + * 当前状态 + */ + @ExcelProperty(value = "当前状态") + private Long status; + + +} diff --git a/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/mapper/WorkOrderDelayMapper.java b/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/mapper/WorkOrderDelayMapper.java new file mode 100644 index 0000000..63651a6 --- /dev/null +++ b/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/mapper/WorkOrderDelayMapper.java @@ -0,0 +1,15 @@ +package org.dromara.platform.mapper; + +import org.dromara.platform.domain.WorkOrderDelay; +import org.dromara.platform.domain.vo.WorkOrderDelayVo; +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; + +/** + * 工单延期审核Mapper接口 + * + * @author gejunhao + * @date 2025-02-21 + */ +public interface WorkOrderDelayMapper extends BaseMapperPlus { + +} diff --git a/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/service/IWorkOrderDelayService.java b/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/service/IWorkOrderDelayService.java new file mode 100644 index 0000000..195c65a --- /dev/null +++ b/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/service/IWorkOrderDelayService.java @@ -0,0 +1,68 @@ +package org.dromara.platform.service; + +import org.dromara.platform.domain.vo.WorkOrderDelayVo; +import org.dromara.platform.domain.bo.WorkOrderDelayBo; +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 gejunhao + * @date 2025-02-21 + */ +public interface IWorkOrderDelayService { + + /** + * 查询工单延期审核 + * + * @param id 主键 + * @return 工单延期审核 + */ + WorkOrderDelayVo queryById(Long id); + + /** + * 分页查询工单延期审核列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 工单延期审核分页列表 + */ + TableDataInfo queryPageList(WorkOrderDelayBo bo, PageQuery pageQuery); + + /** + * 查询符合条件的工单延期审核列表 + * + * @param bo 查询条件 + * @return 工单延期审核列表 + */ + List queryList(WorkOrderDelayBo bo); + + /** + * 新增工单延期审核 + * + * @param bo 工单延期审核 + * @return 是否新增成功 + */ + Boolean insertByBo(WorkOrderDelayBo bo); + + /** + * 修改工单延期审核 + * + * @param bo 工单延期审核 + * @return 是否修改成功 + */ + Boolean updateByBo(WorkOrderDelayBo bo); + + /** + * 校验并批量删除工单延期审核信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); +} diff --git a/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/service/impl/WorkOrderDelayServiceImpl.java b/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/service/impl/WorkOrderDelayServiceImpl.java new file mode 100644 index 0000000..f2f2e08 --- /dev/null +++ b/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/service/impl/WorkOrderDelayServiceImpl.java @@ -0,0 +1,149 @@ +package org.dromara.platform.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.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.dromara.platform.domain.bo.WorkOrderDelayBo; +import org.dromara.platform.domain.vo.WorkOrderDelayVo; +import org.dromara.platform.domain.WorkOrderDelay; +import org.dromara.platform.mapper.WorkOrderDelayMapper; +import org.dromara.platform.service.IWorkOrderDelayService; + +import java.util.List; +import java.util.Map; +import java.util.Collection; + +/** + * 工单延期审核Service业务层处理 + * + * @author gejunhao + * @date 2025-02-21 + */ +@RequiredArgsConstructor +@Service +public class WorkOrderDelayServiceImpl implements IWorkOrderDelayService { + + private final WorkOrderDelayMapper baseMapper; + + /** + * 查询工单延期审核 + * + * @param id 主键 + * @return 工单延期审核 + */ + @Override + public WorkOrderDelayVo queryById(Long id){ + return baseMapper.selectVoById(id); + } + + /** + * 分页查询工单延期审核列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 工单延期审核分页列表 + */ + @Override + public TableDataInfo queryPageList(WorkOrderDelayBo bo, PageQuery pageQuery) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + return TableDataInfo.build(result); + } + + /** + * 查询符合条件的工单延期审核列表 + * + * @param bo 查询条件 + * @return 工单延期审核列表 + */ + @Override + public List queryList(WorkOrderDelayBo bo) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private LambdaQueryWrapper buildQueryWrapper(WorkOrderDelayBo bo) { + Map params = bo.getParams(); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.like(StringUtils.isNotBlank(bo.getProjectName()), WorkOrderDelay::getProjectName, bo.getProjectName()); + lqw.like(StringUtils.isNotBlank(bo.getContractName()), WorkOrderDelay::getContractName, bo.getContractName()); + lqw.eq(StringUtils.isNotBlank(bo.getDelayReason()), WorkOrderDelay::getDelayReason, bo.getDelayReason()); + lqw.eq(bo.getBeforeDelayTime() != null, WorkOrderDelay::getBeforeDelayTime, bo.getBeforeDelayTime()); + lqw.eq(bo.getAfterDelayTime() != null, WorkOrderDelay::getAfterDelayTime, bo.getAfterDelayTime()); + lqw.eq(StringUtils.isNotBlank(bo.getHandleResult()), WorkOrderDelay::getHandleResult, bo.getHandleResult()); + lqw.eq(StringUtils.isNotBlank(bo.getRepairer()), WorkOrderDelay::getRepairer, bo.getRepairer()); + lqw.eq(StringUtils.isNotBlank(bo.getRepairerId()), WorkOrderDelay::getRepairerId, bo.getRepairerId()); + lqw.eq(bo.getRepairerTime() != null, WorkOrderDelay::getRepairerTime, bo.getRepairerTime()); + lqw.eq(bo.getIsAccident() != null, WorkOrderDelay::getIsAccident, bo.getIsAccident()); + lqw.eq(bo.getResponseLevel() != null, WorkOrderDelay::getResponseLevel, bo.getResponseLevel()); + lqw.eq(bo.getResponseTime() != null, WorkOrderDelay::getResponseTime, bo.getResponseTime()); + lqw.eq(StringUtils.isNotBlank(bo.getFaultCategory()), WorkOrderDelay::getFaultCategory, bo.getFaultCategory()); + lqw.eq(bo.getFaultSubcategory() != null, WorkOrderDelay::getFaultSubcategory, bo.getFaultSubcategory()); + lqw.eq(StringUtils.isNotBlank(bo.getInstitution()), WorkOrderDelay::getInstitution, bo.getInstitution()); + lqw.eq(StringUtils.isNotBlank(bo.getFaultLocation()), WorkOrderDelay::getFaultLocation, bo.getFaultLocation()); + lqw.eq(StringUtils.isNotBlank(bo.getFaultDescription()), WorkOrderDelay::getFaultDescription, bo.getFaultDescription()); + lqw.eq(StringUtils.isNotBlank(bo.getFaultImage()), WorkOrderDelay::getFaultImage, bo.getFaultImage()); + lqw.eq(StringUtils.isNotBlank(bo.getHandler()), WorkOrderDelay::getHandler, bo.getHandler()); + lqw.eq(StringUtils.isNotBlank(bo.getHandlerId()), WorkOrderDelay::getHandlerId, bo.getHandlerId()); + lqw.eq(bo.getStatus() != null, WorkOrderDelay::getStatus, bo.getStatus()); + return lqw; + } + + /** + * 新增工单延期审核 + * + * @param bo 工单延期审核 + * @return 是否新增成功 + */ + @Override + public Boolean insertByBo(WorkOrderDelayBo bo) { + WorkOrderDelay add = MapstructUtils.convert(bo, WorkOrderDelay.class); + validEntityBeforeSave(add); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setId(add.getId()); + } + return flag; + } + + /** + * 修改工单延期审核 + * + * @param bo 工单延期审核 + * @return 是否修改成功 + */ + @Override + public Boolean updateByBo(WorkOrderDelayBo bo) { + WorkOrderDelay update = MapstructUtils.convert(bo, WorkOrderDelay.class); + validEntityBeforeSave(update); + return baseMapper.updateById(update) > 0; + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(WorkOrderDelay entity){ + //TODO 做一些数据校验,如唯一约束 + } + + /** + * 校验并批量删除工单延期审核信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + @Override + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + if(isValid){ + //TODO 做一些业务上的校验,判断是否需要校验 + } + return baseMapper.deleteByIds(ids) > 0; + } +}